diff --git a/debian/changelog b/debian/changelog index 9888e6e7..72d5eeaf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -hedera-web (1.230-deb8) stable; urgency=low +hedera-web (1.231-deb8) stable; urgency=low * Initial Release. diff --git a/debian/files b/debian/files new file mode 100644 index 00000000..2ba7fbf6 --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +hedera-web_1.231-deb8_all.deb misc optional diff --git a/debian/hedera-web.debhelper.log b/debian/hedera-web.debhelper.log new file mode 100644 index 00000000..f976a2d2 --- /dev/null +++ b/debian/hedera-web.debhelper.log @@ -0,0 +1,19 @@ +dh_auto_configure +dh_auto_build +dh_auto_test +dh_prep +dh_auto_install +dh_install +dh_installdocs +dh_installchangelogs +dh_installcron +dh_perl +dh_link +dh_strip_nondeterminism +dh_compress +dh_fixperms +dh_installdeb +dh_gencontrol +dh_md5sums +dh_builddeb +dh_builddeb diff --git a/debian/hedera-web.substvars b/debian/hedera-web.substvars new file mode 100644 index 00000000..978fc8b5 --- /dev/null +++ b/debian/hedera-web.substvars @@ -0,0 +1,2 @@ +misc:Depends= +misc:Pre-Depends= diff --git a/debian/hedera-web/DEBIAN/conffiles b/debian/hedera-web/DEBIAN/conffiles new file mode 100644 index 00000000..74ddab99 --- /dev/null +++ b/debian/hedera-web/DEBIAN/conffiles @@ -0,0 +1,3 @@ +/etc/cron.d/hedera-web +/etc/hedera-web/apache.conf +/etc/hedera-web/config.php diff --git a/debian/hedera-web/DEBIAN/control b/debian/hedera-web/DEBIAN/control new file mode 100644 index 00000000..694b69ab --- /dev/null +++ b/debian/hedera-web/DEBIAN/control @@ -0,0 +1,12 @@ +Package: hedera-web +Version: 1.231-deb8 +Architecture: all +Maintainer: Juan Ferrer Toribio +Installed-Size: 5439 +Depends: apache2, php5-mysql, php-vn-web +Suggests: php-text-captcha, php5-imap, vn-image, tinymce +Section: misc +Priority: optional +Homepage: http://www.verdnatura.es +Description: Verdnatura's web page + Verdnatura's web page. diff --git a/debian/hedera-web/DEBIAN/md5sums b/debian/hedera-web/DEBIAN/md5sums new file mode 100644 index 00000000..1e057e6d --- /dev/null +++ b/debian/hedera-web/DEBIAN/md5sums @@ -0,0 +1,482 @@ +9016f3bf40f1593ac0fbb5723208112b usr/share/doc/hedera-web/Htk.odg +c7c0628416bdb80db8dee0dd9cfc6d65 usr/share/doc/hedera-web/changelog.Debian.gz +cf9a957e8a6c4c92648ceb473f0d71c0 usr/share/doc/hedera-web/copyright +a23fa744fbff94491df1db91127345dd usr/share/hedera-web/forms/account/address-list/address-list.js +e23d86cb18540d51e815a717088dc066 usr/share/hedera-web/forms/account/address-list/style.css +a544c571b4962ba244f76378bed62a07 usr/share/hedera-web/forms/account/address-list/ui.xml +a3596b3db2ae936ac3454c7cdb0d7c7b usr/share/hedera-web/forms/account/address/address.js +f627dfd5c014efc8c031485bd1f557dc usr/share/hedera-web/forms/account/address/style.css +15bb25f56c6610dffb8633a1927331b4 usr/share/hedera-web/forms/account/address/ui.xml +5121a6f34a57b17cae2f3f84f1c99945 usr/share/hedera-web/forms/account/conf/conf.js +240c73e8e763711c08a836e2be507782 usr/share/hedera-web/forms/account/conf/style.css +40ab7f0fa691e3438df0cc24fd38166a usr/share/hedera-web/forms/account/conf/ui.xml +a96570784090cfc026690ec97ed0f99a usr/share/hedera-web/forms/admin/access-log/access-log.js +0074b73b1547409e63cbec4439345d11 usr/share/hedera-web/forms/admin/access-log/style.css +2eb53f46f7ebf769a023f5d45c218f04 usr/share/hedera-web/forms/admin/access-log/ui.xml +e90cdff2090e482962f9b368f847057f usr/share/hedera-web/forms/admin/links/links.js +fde6112d1cbf58541c652d6426ebc440 usr/share/hedera-web/forms/admin/links/style.css +e32d0fa7c53ed43424db3cbc94efdbc2 usr/share/hedera-web/forms/admin/links/ui.xml +1f4cbb10e6008292dd34686f189b92e0 usr/share/hedera-web/forms/admin/photos/photos.js +ac251342821db29cfe1d2a9f7e9f9dc3 usr/share/hedera-web/forms/admin/photos/send-data.php +a12efe27dfbeb6dd9fefcd12d5e684cd usr/share/hedera-web/forms/admin/photos/style.css +6f3b2cfb2f940dd7eb5da583cf94bb51 usr/share/hedera-web/forms/admin/photos/ui.xml +909c7f88792fc669a6cbd7abcbc25838 usr/share/hedera-web/forms/admin/shelves/shelves.js +f27f0666f99f0caa6ac9851b611d0c97 usr/share/hedera-web/forms/admin/shelves/style.css +ed0624d17f524727d8f2b346ebb9faa5 usr/share/hedera-web/forms/admin/shelves/ui.xml +4ee1a16db84aab37215828f8e660dd20 usr/share/hedera-web/forms/admin/users/style.css +012b9d44aa0a5927c036fb17463a7674 usr/share/hedera-web/forms/admin/users/ui.xml +500eb3f311cc2473ad3e65ce76e8e07a usr/share/hedera-web/forms/admin/users/users.js +bfe8678ea7b10f8c9789eff81071acad usr/share/hedera-web/forms/admin/visits/style.css +128f78f1ac46f6512ef7f33bfba70959 usr/share/hedera-web/forms/admin/visits/ui.xml +0da1f3ac8f4aafd5a4f4ed01c5a08082 usr/share/hedera-web/forms/admin/visits/visits.js +1acadd40ffc54b60e5187bcfc87e251b usr/share/hedera-web/forms/agencies/packages/packages.js +53a296c44ebc64fc992c5bd90a309f90 usr/share/hedera-web/forms/agencies/packages/style.css +0097714389f863693a7e9585bb533791 usr/share/hedera-web/forms/agencies/packages/ui.xml +451f47645443bdfc36f254db7dd7e2aa usr/share/hedera-web/forms/agencies/provinces/provinces.js +b1bb9e698fa7da94410c888b24a2962c usr/share/hedera-web/forms/agencies/provinces/style.css +f0fa7f059ecc9e2b3750262a781ef91b usr/share/hedera-web/forms/agencies/provinces/ui.xml +4d1b9099abfd893f566c40779ce48f6b usr/share/hedera-web/forms/cms/about/about.js +ceb9f2a5c32805b7a6ca9dbe01e8d981 usr/share/hedera-web/forms/cms/about/image/2_control.png +932c8d417e108f675b65e29291d26e13 usr/share/hedera-web/forms/cms/about/image/4_control.png +4607c23c4971a646f0a74930076ab131 usr/share/hedera-web/forms/cms/about/image/agencies.png +232a903ae4df359b85f696c87051dda0 usr/share/hedera-web/forms/cms/about/image/auction.png +e50197ebd7eaec37a48c72241aab33b6 usr/share/hedera-web/forms/cms/about/image/commercial.png +b5bf105dc64f398ebef43965045cefff usr/share/hedera-web/forms/cms/about/image/courses.png +c00cb92129e83b547f4e419ae17a1a57 usr/share/hedera-web/forms/cms/about/image/dealer.png +460797ab38af1f695d2f5f9127fb85f8 usr/share/hedera-web/forms/cms/about/image/differentiates_us.png +dcb16eb44169445589052cdd923c86e3 usr/share/hedera-web/forms/cms/about/image/fit.png +1c410d9c69bcb7369050c40dc91d10c8 usr/share/hedera-web/forms/cms/about/image/glass.png +75317a9165ee9e206530609664201750 usr/share/hedera-web/forms/cms/about/image/goods_receive.png +8ddbc58164fadc2fe59eee7dba4e7af3 usr/share/hedera-web/forms/cms/about/image/goods_transport.png +da2324fe422e7b18cc9c7ec01f8e12a0 usr/share/hedera-web/forms/cms/about/image/palletizing.png +fa5aff1340d74f681f7f17bf48632f4f usr/share/hedera-web/forms/cms/about/image/producers.png +530723442e27b80f37bb99d252838449 usr/share/hedera-web/forms/cms/about/image/store.png +f4f72f3fcba055b20847490dbf5e927f usr/share/hedera-web/forms/cms/about/image/summary.png +3394700c6a605e92fa3f35f16d7fd7dc usr/share/hedera-web/forms/cms/about/image/trailer.png +6876809c8f8dc15040d7fbe4ab418bc5 usr/share/hedera-web/forms/cms/about/image/training.png +0ae30e889c25cb3e7e31072a8c4f75f1 usr/share/hedera-web/forms/cms/about/image/web.png +ae8054f9fc932bb8428a98843e162d51 usr/share/hedera-web/forms/cms/about/image/youtube.png +b24ee817ecef020f016488339607ecab usr/share/hedera-web/forms/cms/about/style.css +deefb16b66cff0540c4fb345af5bb28f usr/share/hedera-web/forms/cms/about/ui.xml +fce10663e886d04da880f2ea22b8d87a usr/share/hedera-web/forms/cms/contact/IndieFlower.ttf +04ae068770f2c0e16da033c96c2172c6 usr/share/hedera-web/forms/cms/contact/captcha.php +df7df38665073b51883143068bf35648 usr/share/hedera-web/forms/cms/contact/contact.js +1251b4a00bf6e23679d321c8d580827b usr/share/hedera-web/forms/cms/contact/send-data.php +6535957e88bf9977cb7517fafbec61b7 usr/share/hedera-web/forms/cms/contact/style.css +6d4efd6ad8de2694c715e0e75ab48d7b usr/share/hedera-web/forms/cms/contact/ui.xml +f38982221e168a95da4170f6b7e7e36f usr/share/hedera-web/forms/cms/home/home.js +fc2695c350a93d3519712001a2622722 usr/share/hedera-web/forms/cms/home/style.css +168a48777fca4cb50c911cdc784081ed usr/share/hedera-web/forms/cms/home/ui.xml +6365368204ef099a9f9b6c77a21ca6b3 usr/share/hedera-web/forms/cms/location/location.js +cb133bdc61e9038fb9385a3b2175e860 usr/share/hedera-web/forms/cms/location/style.css +f976b62260b60a8118c3dc7cfb4d608d usr/share/hedera-web/forms/cms/location/ui.xml +3112bd7cdba671676f6a1e1d39859655 usr/share/hedera-web/forms/cms/training/style.css +0130c8f50e0a57408ec69b827281f5e6 usr/share/hedera-web/forms/cms/training/training.js +20f7f2d160e4f82d02c4bc59ba884e78 usr/share/hedera-web/forms/cms/training/ui.xml +732dc175165033e6c45b5ecacae1e386 usr/share/hedera-web/forms/cms/why/style.css +088dc19028df7b0efe92b8d9c8612770 usr/share/hedera-web/forms/cms/why/ui.xml +19dd386e3ae75e0c2103404e3d79a27d usr/share/hedera-web/forms/cms/why/why.js +a4ca2fabb3d09408e328631dfabb2d3c usr/share/hedera-web/forms/ecomerce/basket/basket.js +6d7005dbfbea515f5e3e4bdf60e25523 usr/share/hedera-web/forms/ecomerce/basket/style.css +0e626579588b47a30bca4c160d98e9ce usr/share/hedera-web/forms/ecomerce/basket/ui.xml +8479e69cab0b1259c7ce2e1b2515649a usr/share/hedera-web/forms/ecomerce/catalog/catalog.js +67125eac4393bff75be4f72fef2d7177 usr/share/hedera-web/forms/ecomerce/catalog/mobile.css +df7c58017914ec399f6d1bab9c14a065 usr/share/hedera-web/forms/ecomerce/catalog/style.css +e3ba07432def24184ecb0185772cff09 usr/share/hedera-web/forms/ecomerce/catalog/ui.xml +68bae739659045f2b72b1d8b4cddd7f6 usr/share/hedera-web/forms/ecomerce/checkout/checkout.js +3afa62afebb4236a8dde2ed33c8495d3 usr/share/hedera-web/forms/ecomerce/checkout/style.css +bcac327180dd0b3dec80c8a9090bd8fb usr/share/hedera-web/forms/ecomerce/checkout/ui.xml +db98d7211c838b42a53009bf7fbaecea usr/share/hedera-web/forms/ecomerce/confirm/confirm.js +82160af4a74857107c12ddc30a482105 usr/share/hedera-web/forms/ecomerce/confirm/style.css +b55ac46aad9c1f6117f2c68335582195 usr/share/hedera-web/forms/ecomerce/confirm/ui.xml +eb9778cd03aed4aaa409362ec483de7b usr/share/hedera-web/forms/ecomerce/invoices/download.php +a8f45197a0c916c7fb9e3214e9d6811f usr/share/hedera-web/forms/ecomerce/invoices/get-invoice-path.sql +3031b021b3403e0773cfcad384e34db6 usr/share/hedera-web/forms/ecomerce/invoices/invoices.js +a2e5e2c177cdd9431f6d9d9e9bf67035 usr/share/hedera-web/forms/ecomerce/invoices/style.css +3a002fb9293a3b2b85f654a1e8037e5f usr/share/hedera-web/forms/ecomerce/invoices/ui.xml +d8ec4defab53c591fa0d71348d4e852b usr/share/hedera-web/forms/ecomerce/orders/orders.js +6cf663227b47aaf035b3bb72d0042687 usr/share/hedera-web/forms/ecomerce/orders/style.css +3946ed84eda32446343d853f5cdd9e93 usr/share/hedera-web/forms/ecomerce/orders/ui.xml +6ffc05c3e5ee6a8acdacc528640a1dbf usr/share/hedera-web/forms/ecomerce/ticket/style.css +d32c05583205dff4607dfc7e2bd896d2 usr/share/hedera-web/forms/ecomerce/ticket/ticket.js +24a6914ad105577110498abcc8ff8cdd usr/share/hedera-web/forms/ecomerce/ticket/ui.xml +4d41bb87b78611dd96b5dbf332991e70 usr/share/hedera-web/forms/news/new/new.js +2a5b5418b7706d74c5676e829f5fde96 usr/share/hedera-web/forms/news/new/style.css +72f9508160ab53edcfd19f6953ed34f2 usr/share/hedera-web/forms/news/new/ui.xml +9e54355772b5dbbc151442227c15a579 usr/share/hedera-web/forms/news/news/news.js +d8e69f0c0187b69cbddd974def963a3e usr/share/hedera-web/forms/news/news/style.css +39188f68b7f1ba52aa3825918fcb3f1c usr/share/hedera-web/forms/news/news/ui.xml +da98b2c4c84ed945137d5a605ecba1c0 usr/share/hedera-web/global/analytics.php +5da4f80f5fc6fef8890c86b39401af08 usr/share/hedera-web/global/metatags.php +ce15ad2b7a39cbf5d3d42ebd6853acdc usr/share/hedera-web/global/mobile.css +629a55a7e793da068dc580d184cc0e31 usr/share/hedera-web/global/opensans.ttf +c91187abe71428230e12dfd0399e8319 usr/share/hedera-web/global/report.css +ac3f799d5bbaf5196fab15ab8de8431c usr/share/hedera-web/global/roboto.ttf +344e0c8decf7d6e3d7b185eb053898e7 usr/share/hedera-web/global/style.css +5a98924736b8fab64b664ccb52ea31bf usr/share/hedera-web/image/access-log.svg +f433704056a7adb2615ca8f0f9243b3e usr/share/hedera-web/image/add.svg +1c57bef2217dff2abb818d899672cd0a usr/share/hedera-web/image/basket.svg +65d16f53b0d8523caf35e296cacbe3c3 usr/share/hedera-web/image/blogger.svg +f34bfad367e2803920deaf66d6909f6a usr/share/hedera-web/image/clean.svg +9db9446db220369c526b1ccd3a7fa34b usr/share/hedera-web/image/close.svg +89f991796b1dc2a9073ba71ac941758e usr/share/hedera-web/image/dark/add.svg +1686814cae6a5ad85b9917ecc4b00fa1 usr/share/hedera-web/image/dark/basket.svg +52163d8f69af40024227906c36b07774 usr/share/hedera-web/image/dark/close.svg +8cfbf93d3d7c363888758d610ea7aad2 usr/share/hedera-web/image/dark/connect.svg +78fa6dc05059bde9670bb56379937a5b usr/share/hedera-web/image/dark/delete.svg +a442d9fa939a5c47caa2f67049582cde usr/share/hedera-web/image/dark/go-next.svg +22c052955f54bc97c6b35e768f3a39fc usr/share/hedera-web/image/dark/go-previous.svg +1d03e55fc511e15133bcdee7298ffcf1 usr/share/hedera-web/image/dark/graph.svg +85b53b6b5be1ca15413c12b8d8ccf00b usr/share/hedera-web/image/dark/info.svg +38da07e9c4eba16b48cf671c73363cba usr/share/hedera-web/image/dark/logo.png +66ea1e7b798632421c9acdfffa9e3041 usr/share/hedera-web/image/dark/logo.svg +3a3a91f04f9d270a134e289f2e62bfe5 usr/share/hedera-web/image/dark/menu.svg +e691b22f0e5eeaba53abb5b8582cd5ab usr/share/hedera-web/image/dark/ok.svg +e78ea764620555d529e7bc28fa45e238 usr/share/hedera-web/image/dark/order.svg +ac6af0fd988bf576b904cb605c49571b usr/share/hedera-web/image/dark/pay.svg +fed98c72b68903ca8946bc48b396aee0 usr/share/hedera-web/image/dark/preferences.svg +174725ba54a53d2a1e151e88c13fe356 usr/share/hedera-web/image/dark/print.svg +2b448eb7234412dbb4bc01be69cef2f3 usr/share/hedera-web/image/dark/refresh.svg +6657ba32e1e09621b8c2d477eda626b4 usr/share/hedera-web/image/dark/search.svg +1e2909e80f14423720b1e3ca42845759 usr/share/hedera-web/image/dark/shipping.svg +d95ea63caf945da9418c65a81857fd76 usr/share/hedera-web/image/dark/user-info.svg +8ae0b93b433dbd0cad40806a17416c51 usr/share/hedera-web/image/debian.png +6b2d4f3eb8812fe4aedfc361b24448e3 usr/share/hedera-web/image/delete.svg +9c8c0e08200ee5cb524ecc11d3c43f14 usr/share/hedera-web/image/download.svg +72ec5336cba5e0a3154df6b5006c65dd usr/share/hedera-web/image/edit.svg +fbc1cb0f7bf56c2ae27245a6f1c705ae usr/share/hedera-web/image/empty.png +23280e899ad70afeaada21722acbf5a6 usr/share/hedera-web/image/error.svg +b1162f68113099473f2f7c9644851b33 usr/share/hedera-web/image/facebook.svg +65b97433522619cbe374baa0be20c620 usr/share/hedera-web/image/family/1.svg +eed8cbc246f95ba82f17323382a74abb usr/share/hedera-web/image/family/2.svg +17ce401dbfc0c3d05c90e4547ee274a8 usr/share/hedera-web/image/family/3.svg +0c9208800f8a1a602dd70844797fdf2b usr/share/hedera-web/image/family/4.svg +029e8dc181bd375c27a499bc856214c6 usr/share/hedera-web/image/family/5.svg +95093a8ae4fb98caf82381c7b04a3a1e usr/share/hedera-web/image/family/7.svg +2e6ad192a7e6a2b7e274d1c3bb69028e usr/share/hedera-web/image/favicon.ico +046b960fe9c73aa4c8cab4cca5482c1d usr/share/hedera-web/image/firefox.png +7f2e391de3291fc1ac583fcbe58d078c usr/share/hedera-web/image/git.svg +73133042e67f419117dbc8baebedd065 usr/share/hedera-web/image/go-next.svg +6ae06fbd75b59299063c5a295997d0ad usr/share/hedera-web/image/go-previous.svg +a95b8d24208a541ca192efa547d366a2 usr/share/hedera-web/image/google-plus.svg +ae1cfc6e36ae37d2253fe5bdd6ee8c74 usr/share/hedera-web/image/info.svg +2c7d2ac349358c7d48300032d4af51bd usr/share/hedera-web/image/invisible.png +039b50a3e85f039aa2259098d0d10ddd usr/share/hedera-web/image/loader-black.gif +d0ba08735e55241f3ef40995d4d39578 usr/share/hedera-web/image/loader-white.gif +27e6dffafb8e75ac7a303f6a6f5276b3 usr/share/hedera-web/image/loader.gif +14c4cec24e4ff36255aea52814f0ba5e usr/share/hedera-web/image/logo.svg +519af412f28a4e197b50b0fe6bd9c84d usr/share/hedera-web/image/menu.svg +903ad20c22b28eea771b720d1a06da5b usr/share/hedera-web/image/ok.svg +668f4d059d8b712ae6548c388356c04c usr/share/hedera-web/image/order.svg +284be98fa3701c84b289f703aaa5f5d3 usr/share/hedera-web/image/pay.svg +3489c1c731871e4b536c3bd1dc700a39 usr/share/hedera-web/image/preferences.svg +5f6210f7ffb4d9f574623d5387093128 usr/share/hedera-web/image/print.svg +521f87291b19cd11ea5a40f9eae33534 usr/share/hedera-web/image/refresh.svg +6e41c0943b91c72f3b18b60adfbbb3e6 usr/share/hedera-web/image/search.svg +88fcecfeeef348f8b4e00b49facebdda usr/share/hedera-web/image/shipping.svg +6e41c0943b91c72f3b18b60adfbbb3e6 usr/share/hedera-web/image/show.svg +ea6167966af2008493600023b1deaa15 usr/share/hedera-web/image/star.svg +4fde9fec31df281d1312302bbf19453f usr/share/hedera-web/image/step-cur.svg +821ed3db8aae2e1e7ea4fe46a3e5f984 usr/share/hedera-web/image/step.svg +a3f765bd12322976a565baf39e17506c usr/share/hedera-web/image/store.png +65618f7b2d156fe721516c309f6388b7 usr/share/hedera-web/image/supplant.png +85114f1a6433ebf18fbd484ba864c0e7 usr/share/hedera-web/image/unavailable.svg +1062840f4d1e1aea9c7cac7a4926be18 usr/share/hedera-web/image/update-browser.png +6fcf2107a5932ca5d00211950d52d033 usr/share/hedera-web/image/warning.svg +5596a90809aa6558a651c1827b27f6bf usr/share/hedera-web/image/youtube.svg +11dc471d438553776c7d3422b9a619ae usr/share/hedera-web/index.php +3621fba117aab66cd022bf733b8e07f4 usr/share/hedera-web/js/db/calc-sum.js +4b16d38b635e44ab51ac4a11548f9364 usr/share/hedera-web/js/db/calc.js +e6cd6a806d02538d2bce830fa33eae33 usr/share/hedera-web/js/db/conn.js +10a0dd177582a6e4f8bea9160608d7e0 usr/share/hedera-web/js/db/form.js +811e979276b75eec62bbc2189957e7f0 usr/share/hedera-web/js/db/iterator.js +0c114f4c93dd75fa80273013e8cb7859 usr/share/hedera-web/js/db/main.js +08014e11051dcacf054bb9f0e3c30ef0 usr/share/hedera-web/js/db/main.php +850da97d795bdf37d32376243ab7011d usr/share/hedera-web/js/db/model.js +f04b998bb318aae0043081d53aa34ac6 usr/share/hedera-web/js/db/param.js +4d61342ae31fea3cdf8ff33036071ef2 usr/share/hedera-web/js/db/query.js +1909a574f87f51496c8b1c8f2981c056 usr/share/hedera-web/js/db/result-set.js +c57c6d1432599ade3f99fe20d209dc69 usr/share/hedera-web/js/db/result.js +46f73991b9ca828aeb88166aa86409e7 usr/share/hedera-web/js/hedera/main.php +786e24a22e8330e07fcd55489b3ac541 usr/share/hedera-web/js/hedera/report.css +62ec149808b1b3a8151f2e4db7ab02ce usr/share/hedera-web/js/hedera/report.html +74095b42300a3bf2c7156c21e6a3e94f usr/share/hedera-web/js/hedera/report.js +4b6dc8723c6ec17246369e8824986acc usr/share/hedera-web/js/htk/assistant-bar.js +2fcb4a2227e2cc3bf5e312d8e4cb9fbd usr/share/hedera-web/js/htk/assistant.js +374d3cb7bbd3170e8e32608370f91684 usr/share/hedera-web/js/htk/column.js +7df5c7c0de236513e1d8de71c696f52b usr/share/hedera-web/js/htk/column/button.js +318ce98f7e2d03e3eb6e570dbc5eef3d usr/share/hedera-web/js/htk/column/check.js +3b61e7ca1322a1dd46ac1cb5b8189b31 usr/share/hedera-web/js/htk/column/date.js +06824829046eafd0b59497b80982e3c7 usr/share/hedera-web/js/htk/column/image.js +afc2fc24d72b3125094d4a557376af35 usr/share/hedera-web/js/htk/column/link.js +92b19f8cbcf617704c8a0f3690dc15fa usr/share/hedera-web/js/htk/column/radio.js +a22a0a1c7ff13507843959d23f41890c usr/share/hedera-web/js/htk/column/spin.js +0f37d8a8f44b359a085488e2832e8791 usr/share/hedera-web/js/htk/column/text.js +d5fa69c91869e25e5e1fd20dd30e4901 usr/share/hedera-web/js/htk/field.js +54a29ca6dced2611a4ca7b17f3517a5c usr/share/hedera-web/js/htk/field/button.js +19ac85f62c719ba16cd80e6a92b11d1f usr/share/hedera-web/js/htk/field/calendar.js +6b6567bac40292814042efc10318b343 usr/share/hedera-web/js/htk/field/check.js +064210dae613384aed96792799fcfe13 usr/share/hedera-web/js/htk/field/date-chooser.js +b33d19b55e4aa0f8ff3da50d8bdc4188 usr/share/hedera-web/js/htk/field/entry.js +74546afe2ae12d45a0b9c6f83fb08786 usr/share/hedera-web/js/htk/field/html.js +08b9701791d6d6b9d2cb7d84038d3d61 usr/share/hedera-web/js/htk/field/image.js +482fbc532f879c668b41664d6b570968 usr/share/hedera-web/js/htk/field/label.js +83d14c496f729306b98304ee4a2798e4 usr/share/hedera-web/js/htk/field/radio-group.js +78b81a3dfb9d5410fea16b74c0a64ec0 usr/share/hedera-web/js/htk/field/radio.js +24cd55a3572f9f9fce4004c354b2d760 usr/share/hedera-web/js/htk/field/select.js +17c178f1079f0d02e417537e51625a09 usr/share/hedera-web/js/htk/field/spin.js +1fe2f27a7446cb8de0ce28459acfafe3 usr/share/hedera-web/js/htk/field/table.js +0b6c70f166e3c119b051d724fd641da9 usr/share/hedera-web/js/htk/field/text-area.js +250c6bcf7b825043ab280253deb10c3b usr/share/hedera-web/js/htk/field/text.js +3dd48118b4e42757b7153d33c780db21 usr/share/hedera-web/js/htk/full-image.js +24de392fa5f8462df33d3160c89176e2 usr/share/hedera-web/js/htk/grid.js +40169b8c2f578a66d35fd788179da3ff usr/share/hedera-web/js/htk/htk.js +0bb6a03b481eadc309092b1e4fcad5cb usr/share/hedera-web/js/htk/image-editor.js +ecaa67f10d3a12b05559672fd1cee5c1 usr/share/hedera-web/js/htk/image-editor.xml +b1d9971bd7ddb1d5c61031f237adde94 usr/share/hedera-web/js/htk/main.js +7fd4ac6e0ce5284339bf422ae65dce73 usr/share/hedera-web/js/htk/main.php +c17742afbd01a66bd7938254f6abb1f1 usr/share/hedera-web/js/htk/popup.js +965811d052d8e2a2253ebed4a884a644 usr/share/hedera-web/js/htk/repeater.js +433f94861ba87da8c040373d763407e3 usr/share/hedera-web/js/htk/toast.js +25d25bc66f3fbeecc0fc1b79f6b99176 usr/share/hedera-web/js/htk/widget.js +a2a0e92074cc238ed817ce6665b491b7 usr/share/hedera-web/js/misc/main.php +1f4caae0d5c17c1a9d65f6166fbf0f6d usr/share/hedera-web/js/misc/mootools.js +045d04e17422d99e338da75b9c749b7c usr/share/hedera-web/js/misc/tinymce/license.txt +e26e97a318f82ec144b0818e5a8f8edb usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-cool.gif +e72bf995ceca9230273ed9909c5db9c8 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-cry.gif +d59171236e6b0b96091eeda1f7b57ce3 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-embarassed.gif +c12d9db6a14ad0b52f66f1e2cf2a38e7 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif +59930208822fe755f651a67ef4b70530 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-frown.gif +ec0477c8a206ff250782e40f9bae4b4c usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-innocent.gif +4ae8945f3960751b5d294f18242e144d usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-kiss.gif +c37f405db4e13cbebf24e745534687bf usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-laughing.gif +11c14bd1496afd0e21df115d25b68e96 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-money-mouth.gif +bb828cb46b377d1589927a02f8fd1762 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-sealed.gif +2968a664098d9580079c66d628dad1a8 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-smile.gif +2e136ebd637bf3e6c9fc6bdc20cbe73e usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-surprised.gif +5ec3bb4781c8e43a51d3a1a948b98fc0 usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-tongue-out.gif +3c0c011d16b1a2331385ed97e160a42a usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-undecided.gif +897275ac7d07032b4d93fb83a0d2a41b usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-wink.gif +19bb8ebfe3c2f5ef3ffb9aa4a027900d usr/share/hedera-web/js/misc/tinymce/plugins/emoticons/img/smiley-yell.gif +375a02f296a02a8c1bc1026345c18dd2 usr/share/hedera-web/js/misc/tinymce/plugins/visualblocks/css/visualblocks.css +e438b17739e7dea20da625c54590c83d usr/share/hedera-web/js/misc/tinymce/skins/lightgray/content.inline.min.css +3fa0e763ae7456564829fa3e439c46f1 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/content.min.css +6f2ff03edaa59c1a94be0874d08971ee usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce-small.eot +d021d3e6b1bb2b4c39069ea63adba403 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce-small.json +7f65dde79eb89e98aa8dbe67fa5febc2 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce-small.svg +daa52e28bfd88f5fb5587f17e51a1325 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce-small.ttf +ebcf371dc5ff2088a4fe411ee8681466 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce-small.woff +248f6caf6179ea6c4035b7eaec7edd6e usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce.eot +b7f9f30c30bd24f8887cd90c0c3f2f96 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce.json +f38d04d3a3cf83c12435370fd77c997d usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce.svg +d2673bd2dd98e5359b733f57ee3c4778 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce.ttf +04e761d506e64836afab5d2550a3b8df usr/share/hedera-web/js/misc/tinymce/skins/lightgray/fonts/tinymce.woff +abd3613571800fdcc891181d5f34f840 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/img/anchor.gif +394bafc3cc4dfb3a0ee48c1f54669539 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/img/loader.gif +f3726450d7457d750a2f4d9441c7ee20 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/img/object.gif +12bf9e19374920de3146a64775f46a5e usr/share/hedera-web/js/misc/tinymce/skins/lightgray/img/trans.gif +09c1ba458c1670a68acbe8004e1c4b14 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/skin.ie7.min.css +ddef4827730dca9bd4f3a4d0deb11449 usr/share/hedera-web/js/misc/tinymce/skins/lightgray/skin.min.css +0673629e6090e7c5d0cecf8144153df8 usr/share/hedera-web/js/misc/tinymce/tinymce.min.js +7a1d6a57d40921d9b2144a4d1f5eed8c usr/share/hedera-web/js/sql/batch.js +c1221fec1672e19591a88866fe29cb07 usr/share/hedera-web/js/sql/delete.js +e0addd33670dea489e4a234075c80f9f usr/share/hedera-web/js/sql/dml.js +32dfccc36728ed4eaf8fe6aa6b006aa4 usr/share/hedera-web/js/sql/expr.js +d5c78e63549dfbce5cef45c24590185f usr/share/hedera-web/js/sql/field.js +25ee3732cc80088d1301440fc7bc2ef7 usr/share/hedera-web/js/sql/filter-item.js +9818ecc07e5f0b9ca9c2fc97eabd6d03 usr/share/hedera-web/js/sql/filter.js +133e224ebcc1e116813110ba0638f52e usr/share/hedera-web/js/sql/function.js +6135749bce50035afc80308948c8ba18 usr/share/hedera-web/js/sql/holder.js +5fcb0e3c24e79fa381ce7c6dad4b8261 usr/share/hedera-web/js/sql/insert.js +2e5595733d0d63c84a48200ae3f65260 usr/share/hedera-web/js/sql/list.js +6b1da9ff7ecf933c3c9ce7a7f397a006 usr/share/hedera-web/js/sql/main.js +c8a81f1ac67bab68ea94f0ff984a9628 usr/share/hedera-web/js/sql/main.php +74707a71cc18b3ca156878201a0b2e96 usr/share/hedera-web/js/sql/multi-stmt.js +ec320938bfd2d9551918e28e64e80d2b usr/share/hedera-web/js/sql/object.js +67590aef2416dc9791974177f6debd48 usr/share/hedera-web/js/sql/operation.js +6055b30b502641b63ee15cbc27d95f2c usr/share/hedera-web/js/sql/search-tags.js +2811670c4ee14a43ae8ccefd1fcc0295 usr/share/hedera-web/js/sql/select.js +d561cd5114d77f0c4f3733e6c0cef029 usr/share/hedera-web/js/sql/stmt.js +d5dc69ea8d8e3c6a76c9210a4741fccf usr/share/hedera-web/js/sql/string.js +a2287aa531c94fbbc50521cb237d9492 usr/share/hedera-web/js/sql/table.js +2bfca205db8fb56e538a469fcf7dceb2 usr/share/hedera-web/js/sql/target.js +3d8a53c2f189c7690db1402557a4ee35 usr/share/hedera-web/js/sql/update.js +6470da1256d716855058fd8eacfc59cf usr/share/hedera-web/js/sql/value.js +e42d43abaeed60d98acb1d77fc061c3e usr/share/hedera-web/js/vn/browser.js +dc4cee051d96c0e0ead458cfd75c6677 usr/share/hedera-web/js/vn/builder.js +5123761e333e6ded900fbc5c284e8a01 usr/share/hedera-web/js/vn/cookie.js +487e8ad76b6620de03d01802aa9d5ef9 usr/share/hedera-web/js/vn/date.js +20dd20e27f7ff2fe2459b3e67fac4ef1 usr/share/hedera-web/js/vn/error.js +fb9e38d171225df141de5c02c1e23c1e usr/share/hedera-web/js/vn/hash-listener.js +3213c82ba20add4c7f493ec96569fc7b usr/share/hedera-web/js/vn/hash-param.js +4f8fed8a0fd2b169c4f4e2885150aa3e usr/share/hedera-web/js/vn/hash.js +ed6469583742689838d5a5d06fb63590 usr/share/hedera-web/js/vn/http-request.js +f3a8b8a77e62220f9ba436dff1f2ad7f usr/share/hedera-web/js/vn/ie.js +9237d117a1401c2fd0a1a7951cdd8269 usr/share/hedera-web/js/vn/locale.js +6f04ee38448f253f3614c44426a18fec usr/share/hedera-web/js/vn/main.js +779cd9a70a04771748f2f6006642c598 usr/share/hedera-web/js/vn/main.php +dd223c04a40617e654ae03a15a257c51 usr/share/hedera-web/js/vn/mutators.js +23b7c87d6640433f8567c45231337f4f usr/share/hedera-web/js/vn/node.js +040d7463db0d9faa7bd7f88e265386d6 usr/share/hedera-web/js/vn/object.js +c0f776e6c3b86eaad9bddb909cd4dd3f usr/share/hedera-web/js/vn/param.js +14b10fba55ad7b6062d2fcd306e105b6 usr/share/hedera-web/js/vn/url.js +be757512d36e677f3526300c0e17edff usr/share/hedera-web/js/vn/value.js +5b4937500156e45318ae16814b0305bd usr/share/hedera-web/locale/ca/forms/account/address-list.json +5abc10bd97cb6caf12e56b58a4d05881 usr/share/hedera-web/locale/ca/forms/account/address.json +e19d39a70f6a95e4b9fad91a1c309563 usr/share/hedera-web/locale/ca/forms/account/conf.json +144bc43e65c431c39a07ba4473f745b2 usr/share/hedera-web/locale/ca/forms/admin/access-log.json +2d9a21b9f25efb172aee151c0bb5e977 usr/share/hedera-web/locale/ca/forms/admin/links.json +81d3d9090a802a39ce4515d4f70b25d8 usr/share/hedera-web/locale/ca/forms/admin/photos.json +cc5227262fc2bc90fdfe8533fb1977e5 usr/share/hedera-web/locale/ca/forms/admin/shelves.json +402d668690694cd62d81a032fd24d45a usr/share/hedera-web/locale/ca/forms/admin/users.json +2565ca6fe1054fe7de9e4623b3943dab usr/share/hedera-web/locale/ca/forms/admin/visits.json +d5f96ba467b58a48f59ec0725b073789 usr/share/hedera-web/locale/ca/forms/agencies/packages.json +f1b297a04e6e8fb1d09cee33a533e684 usr/share/hedera-web/locale/ca/forms/agencies/provinces.json +c9624a94cad083ab2d71301483bfcc2d usr/share/hedera-web/locale/ca/forms/cms/about.json +7d5e73c633ee607b205063c5cd5f219f usr/share/hedera-web/locale/ca/forms/cms/contact.json +19a5a33adcdefc27acd9730e7e5b0070 usr/share/hedera-web/locale/ca/forms/cms/home.json +d3f712ed87addced4f0a4eda780e7721 usr/share/hedera-web/locale/ca/forms/cms/location.json +8a80554c91d9fca8acb82f023de02f11 usr/share/hedera-web/locale/ca/forms/cms/training.json +900c2dbb181fcc19814bf93b2e7f8c7e usr/share/hedera-web/locale/ca/forms/cms/why.json +539b2fe10bf9fa46b53c09e231dcfd8a usr/share/hedera-web/locale/ca/forms/ecomerce/basket.json +5d9e365efa4aca63b8fb60b4090dfe7e usr/share/hedera-web/locale/ca/forms/ecomerce/catalog.json +74a0d063d86d58503df9d7c5082cc8c8 usr/share/hedera-web/locale/ca/forms/ecomerce/checkout.json +0d1e03623b575c5dd480dabf6b6b7b2c usr/share/hedera-web/locale/ca/forms/ecomerce/confirm.json +d1daa7948d610c3575d83a1cc1c4eaee usr/share/hedera-web/locale/ca/forms/ecomerce/invoices.json +27ca9c397090861b03f87f5edb1528e1 usr/share/hedera-web/locale/ca/forms/ecomerce/orders.json +3ec280e3a1444dd893d1bc05e8d91449 usr/share/hedera-web/locale/ca/forms/ecomerce/ticket.json +1ed0798e05eec101f07f1d4cac752eb8 usr/share/hedera-web/locale/ca/forms/news/new.json +5a2fb80b1c266cbe9bafd8c9b1dcd17f usr/share/hedera-web/locale/ca/forms/news/news.json +4c4654d00eefb696198d7fd6d8286348 usr/share/hedera-web/locale/ca/js/db.js +132c5d4c38bc580862e14122e08bf62f usr/share/hedera-web/locale/ca/js/htk.js +c2515a52304ee735d07f152a4861e11c usr/share/hedera-web/locale/ca/js/vn.js +686ab7166e4daf3913b0492d7d171ada usr/share/hedera-web/locale/ca/pages/login.json +496f5d1c60e5fadea8ad37024e0b4c81 usr/share/hedera-web/locale/ca/pages/tpv.json +b84a9a030b03120ebd4451236e649e73 usr/share/hedera-web/locale/ca/pages/update-browser.json +6a0e80c4f4e87fad9fe0ece79014342f usr/share/hedera-web/locale/ca/pages/version-menu.json +cd8d7f43b9737895da424df060d7b2e5 usr/share/hedera-web/locale/ca/pages/web.json +e9d2cb38583f0fc0e371e37d3e09d698 usr/share/hedera-web/locale/ca/rest/query.json +5f35ec46d79daa46823c578ee9c79ea1 usr/share/hedera-web/locale/es/forms/account/address-list.json +1cb66d51af601f4495de500d19c05c86 usr/share/hedera-web/locale/es/forms/account/address.json +2b7e3b4b02d16eac26adf0be11fe3ff3 usr/share/hedera-web/locale/es/forms/account/conf.json +b848cdfaa8ddaea079f876eba1786633 usr/share/hedera-web/locale/es/forms/admin/access-log.json +28ae9d57c724f9e4f7c7d5ada9913299 usr/share/hedera-web/locale/es/forms/admin/links.json +98ef85006a2bab4f1f5c4308cbafa258 usr/share/hedera-web/locale/es/forms/admin/photos.json +cc5227262fc2bc90fdfe8533fb1977e5 usr/share/hedera-web/locale/es/forms/admin/shelves.json +7292f95f63f5d71035479d0067132b62 usr/share/hedera-web/locale/es/forms/admin/users.json +0b3e07e71b43c402fbb4d3e2fb13294b usr/share/hedera-web/locale/es/forms/admin/visits.json +8bade347c5ccb776e74e2ee3146b5469 usr/share/hedera-web/locale/es/forms/agencies/packages.json +dde1d54b29c18f651a0955d3698d9a3e usr/share/hedera-web/locale/es/forms/agencies/provinces.json +f54b8bfab719781de40d26be1f15eff1 usr/share/hedera-web/locale/es/forms/cms/about.json +54e3bb52597c5ba9f56d8b8e44876757 usr/share/hedera-web/locale/es/forms/cms/contact.json +823cd3b63869ccd3e20d0af4214e151b usr/share/hedera-web/locale/es/forms/cms/home.json +d3f712ed87addced4f0a4eda780e7721 usr/share/hedera-web/locale/es/forms/cms/location.json +8a80554c91d9fca8acb82f023de02f11 usr/share/hedera-web/locale/es/forms/cms/training.json +61c7446681768c3abe7e2717ee8e1c44 usr/share/hedera-web/locale/es/forms/cms/why.json +a0e47b592a7569a48be74dde300e3f59 usr/share/hedera-web/locale/es/forms/ecomerce/basket.json +b7ac4c19321b1e32a87c3e86b48818dd usr/share/hedera-web/locale/es/forms/ecomerce/catalog.json +0fc1e03b368d54385d67129dbe2103e8 usr/share/hedera-web/locale/es/forms/ecomerce/checkout.json +d574e4ffbc8b2c10c2ad624aa343073d usr/share/hedera-web/locale/es/forms/ecomerce/confirm.json +d80013a61b39eabf58052bfb8e33315b usr/share/hedera-web/locale/es/forms/ecomerce/invoices.json +a2ac84e9e918769d29cf7d9fc0836ba3 usr/share/hedera-web/locale/es/forms/ecomerce/orders.json +d43df49c45e417d85ad959cf051965e5 usr/share/hedera-web/locale/es/forms/ecomerce/ticket.json +84381988df96520e5fa93bdc7532d9e9 usr/share/hedera-web/locale/es/forms/news/new.json +f2c8b5f373a6162928fabd97b98b903e usr/share/hedera-web/locale/es/forms/news/news.json +d884def5e10494cd6d6d5de19a532d1f usr/share/hedera-web/locale/es/js/db.js +34a2ba5fc9473047d7b940e7093df6b6 usr/share/hedera-web/locale/es/js/htk.js +d7df2b0d549d3a95a2593eab5fc81717 usr/share/hedera-web/locale/es/js/vn.js +8c8ecf36f930e852b71816dc72de85a3 usr/share/hedera-web/locale/es/pages/login.json +33153cbbe9876c9889d65f0451c26f43 usr/share/hedera-web/locale/es/pages/tpv.json +b5ebe89a4009f7fc194fe5560da6dbd5 usr/share/hedera-web/locale/es/pages/update-browser.json +a8a30c511e60ee272902107abd7c4216 usr/share/hedera-web/locale/es/pages/version-menu.json +4caebd9eb5ed83ec29a491a2c95e65ca usr/share/hedera-web/locale/es/pages/web.json +629cf43aeaea17830c0a2325d8cff6b8 usr/share/hedera-web/locale/es/rest/query.json +e8c1c9a87d8854768192c9c3604332fa usr/share/hedera-web/locale/fr/forms/account/address-list.json +f72113e257382cdac93e8a7619a34ec9 usr/share/hedera-web/locale/fr/forms/account/address.json +06a10438ff0314a254e3213c2a1ef827 usr/share/hedera-web/locale/fr/forms/account/conf.json +839b1e3b2c631130871a91b340b93f87 usr/share/hedera-web/locale/fr/forms/admin/access-log.json +4a4c16b0b4187fe5d1e352c10bf9ff14 usr/share/hedera-web/locale/fr/forms/admin/links.json +8038401247b9e0fb328abcaa4e7961c2 usr/share/hedera-web/locale/fr/forms/admin/photos.json +cc5227262fc2bc90fdfe8533fb1977e5 usr/share/hedera-web/locale/fr/forms/admin/shelves.json +49ce25ef24cc9d48694b44e8c831bffc usr/share/hedera-web/locale/fr/forms/admin/users.json +fecf197a622a235b00a35a6bb40a49f3 usr/share/hedera-web/locale/fr/forms/admin/visits.json +f0492b9789a37bfd46ce32b3c4caddea usr/share/hedera-web/locale/fr/forms/agencies/packages.json +1bd1d994d44ba40eb56e4abe91df83bd usr/share/hedera-web/locale/fr/forms/agencies/provinces.json +12117d0cfbe85e8580c8945010ce748b usr/share/hedera-web/locale/fr/forms/cms/about.json +065557906305dda325e88c7f432f138c usr/share/hedera-web/locale/fr/forms/cms/contact.json +f84fe550c7a4becc06e7c8d96b5bfebc usr/share/hedera-web/locale/fr/forms/cms/home.json +23518a44c2916939e809914a403ce7bd usr/share/hedera-web/locale/fr/forms/cms/location.json +8a80554c91d9fca8acb82f023de02f11 usr/share/hedera-web/locale/fr/forms/cms/training.json +312715d62d1cefe41883304473e441c2 usr/share/hedera-web/locale/fr/forms/cms/why.json +cad0918b30430f216e83f145239ce068 usr/share/hedera-web/locale/fr/forms/ecomerce/basket.json +459bd0a03b8b2173c2385d27139db896 usr/share/hedera-web/locale/fr/forms/ecomerce/catalog.json +6cfe3abae9e40d11bb8cd087891f3eba usr/share/hedera-web/locale/fr/forms/ecomerce/checkout.json +fea79ff2566adea2fa846e054f243f71 usr/share/hedera-web/locale/fr/forms/ecomerce/confirm.json +522cb2d2fd8463b96d51bcd77d399936 usr/share/hedera-web/locale/fr/forms/ecomerce/invoices.json +621a3d7c0825ba53ae7fde47b0859db4 usr/share/hedera-web/locale/fr/forms/ecomerce/orders.json +3a488a3c66c8e248287ce67152edd181 usr/share/hedera-web/locale/fr/forms/ecomerce/ticket.json +4dc55be898fd6880541f6ef3477bf073 usr/share/hedera-web/locale/fr/forms/news/new.json +1605669b9da04a8d432900b123bd41bd usr/share/hedera-web/locale/fr/forms/news/news.json +bc403b9d5c545a086208edb055fdd73f usr/share/hedera-web/locale/fr/js/db.js +a55964100b1b47f8bee417df02cd3079 usr/share/hedera-web/locale/fr/js/htk.js +132f4af8b8278f3e7a0a5a58449ffcb7 usr/share/hedera-web/locale/fr/js/vn.js +dbbf213596dda7e2075de3c14272a101 usr/share/hedera-web/locale/fr/pages/login.json +2107fb2d4c2463a8ad4637ba37904cf2 usr/share/hedera-web/locale/fr/pages/tpv.json +ae49195ba37522108ecc3ef3a0d8473b usr/share/hedera-web/locale/fr/pages/update-browser.json +c84e53764b4222bb9eb136ade0851ab5 usr/share/hedera-web/locale/fr/pages/version-menu.json +7e572998d11127780628df91ac1ba27d usr/share/hedera-web/locale/fr/pages/web.json +629cf43aeaea17830c0a2325d8cff6b8 usr/share/hedera-web/locale/fr/rest/query.json +693c00c7b772a509743c7e7301fafce5 usr/share/hedera-web/log.php +427fcd851eaf9b9ee754d6d645a2e5d9 usr/share/hedera-web/pages/login/head.php +caed0d20d197b2cc1c1e4c4f89f778e5 usr/share/hedera-web/pages/login/html.php +505b6c7c67c80937f02c60d132b93f7c usr/share/hedera-web/pages/login/login.js +b3bd8e048d52cb605fdf47995447193d usr/share/hedera-web/pages/login/login.php +a069e9b34d61b4542643b30fee5fa78e usr/share/hedera-web/pages/login/style.css +a76437affda8ce9d69fa043a08dd82ed usr/share/hedera-web/pages/tpv/html.php +01e25c929bfa675081bf4dbc112ff857 usr/share/hedera-web/pages/tpv/style.css +f7ed923499e72cf04c8818c800042703 usr/share/hedera-web/pages/update-browser/html.php +a7a2790cf93f5bdb834e0c773fbb1173 usr/share/hedera-web/pages/update-browser/style.css +de9916b089df8a1403d9abf5f29675a0 usr/share/hedera-web/pages/version-menu/html.php +4c9f95f258446e23c6bbea5315baa416 usr/share/hedera-web/pages/version-menu/new-web.svg +d3e4ed7cbf5f0bbd8522ce4c4327eedf usr/share/hedera-web/pages/version-menu/old-web.svg +b0457e671321de73b0784a17065064ed usr/share/hedera-web/pages/version-menu/style.css +c148b5cbeba003670cdcff7fdd98e974 usr/share/hedera-web/pages/web/head.php +39e0185729490e268121b8999a32a0cb usr/share/hedera-web/pages/web/html.php +bfcdf1cf3ed39bb4f0748ab692387367 usr/share/hedera-web/pages/web/mobile.css +21aaa91383d86c9c36879dff1a122ec0 usr/share/hedera-web/pages/web/module.js +67b7dc765029871b256118586587ebb5 usr/share/hedera-web/pages/web/style.css +faa5692608f89a9b7fb67cbe72ed51d3 usr/share/hedera-web/pages/web/tpv.js +3c0ac46fe8719a2c852043f2219a5a43 usr/share/hedera-web/pages/web/web.js +fb03346cc7791842fb515cff54695993 usr/share/hedera-web/pages/web/web.php +8a1f37b4f83fe560927c0082d424c8d0 usr/share/hedera-web/reports/shelves/report.xml +37eda0425fe099e00279b717b820dae8 usr/share/hedera-web/reports/shelves/shelves.js +aaf3207619e508943ce5f4404c188ee1 usr/share/hedera-web/reports/shelves/style.css +29b536ed112295b85e60534dc262b0f8 usr/share/hedera-web/rest.php +a7a16856c55f8f4abd7800b620fb095d usr/share/hedera-web/rest/image.php +6203ffbf087e96fa697d6b7c98076bf6 usr/share/hedera-web/rest/login.php +b5755c9ce32f02e43016f8b4cf83a699 usr/share/hedera-web/rest/logout.php +1b338a97f40b6935fe78cfba9d53dae2 usr/share/hedera-web/rest/query.php +7986b15f60b69c12d4501c198cd4cf45 usr/share/hedera-web/tpv/imap.php +e3ce4e25df2590d8091526abfbc2cec2 usr/share/hedera-web/tpv/post.php +72986dddc3b967f130863ab1b3a2c95c usr/share/hedera-web/tpv/soap-request.xml +8bc8249348c2c42f7f9fa35bd83c0d11 usr/share/hedera-web/tpv/soap-test.php +e7f240e74b905b57a69d5742ec1b39fa usr/share/hedera-web/tpv/soap.php +6566bbcdd700601b41a0ba900d684046 usr/share/hedera-web/unavailable.html +661edb035143513f107528e43fb51ecc usr/share/hedera-web/visits-sync.php +60f5a768e22fe1d12e704f1874328dad usr/share/php/vn/hedera/hedera.php +6bace7ec6436b9f44dcada4d504f39bd usr/share/php/vn/hedera/init.php +5c8b89461cd5a3f074a6306a92ebf0a2 usr/share/php/vn/hedera/js.php +e8df85e0ee4c4e30061e50aa5bbbd418 usr/share/php/vn/hedera/util.php +e0caac41eb6b8550d21af2784ce75950 usr/share/php/vn/hedera/web.php +da6f7a66e051faa275964dbfad9144bb usr/share/php/vn/rest/encoding.php +cb02cec5cef3837cd46567b8d4a9b5e9 usr/share/php/vn/rest/exception.php +0435f696e696e49f4bc1a171885520ba usr/share/php/vn/rest/message.php +d3a4548d59ec2968276c4e129602daba usr/share/php/vn/rest/module.php +42a1397adbeb28d0e3bcda041f39b561 usr/share/php/vn/rest/reply.php +789436a28eeeb85f11404d70ffb6a50b usr/share/php/vn/rest/rest.php +cb8ee19a8bc9596ed7f2dab424ab5b8b usr/share/php/vn/rest/service.php +6f514664d1f628e885a2b42a01972b62 usr/share/php/vn/tpv/soap-method.php +835c5948fdbcb6bef9e12b0bdf6be8c6 usr/share/php/vn/tpv/soap-reply.xml +ce3c43d77baf65f2b22a1b5c64315692 usr/share/php/vn/tpv/soap-request.dtd +4647e9312bc0cb6535f1a0d56a9249f1 usr/share/php/vn/tpv/soap.wsdl +4b026c4807179efb6e4ff84b63c101df usr/share/php/vn/tpv/tpv.php diff --git a/debian/hedera-web/DEBIAN/postinst b/debian/hedera-web/DEBIAN/postinst new file mode 100755 index 00000000..90237ab0 --- /dev/null +++ b/debian/hedera-web/DEBIAN/postinst @@ -0,0 +1,6 @@ +#!/bin/bash + +a2enconf hedera-web +service apache2 reload +service cron restart + diff --git a/debian/hedera-web/DEBIAN/postrm b/debian/hedera-web/DEBIAN/postrm new file mode 100755 index 00000000..1cf85653 --- /dev/null +++ b/debian/hedera-web/DEBIAN/postrm @@ -0,0 +1,5 @@ +#!/bin/bash + +service apache2 reload +service cron restart + diff --git a/debian/hedera-web/etc/apache2/conf-available/hedera-web.conf b/debian/hedera-web/etc/apache2/conf-available/hedera-web.conf new file mode 120000 index 00000000..67c4e604 --- /dev/null +++ b/debian/hedera-web/etc/apache2/conf-available/hedera-web.conf @@ -0,0 +1 @@ +../../hedera-web/apache.conf \ No newline at end of file diff --git a/debian/hedera-web/etc/cron.d/hedera-web b/debian/hedera-web/etc/cron.d/hedera-web new file mode 100644 index 00000000..2a9461b4 --- /dev/null +++ b/debian/hedera-web/etc/cron.d/hedera-web @@ -0,0 +1,2 @@ +MAILTO=webmaster +*/4 * * * * www-data php5 /usr/share/hedera-web/tpv/imap.php diff --git a/debian/hedera-web/etc/hedera-web/apache.conf b/debian/hedera-web/etc/hedera-web/apache.conf new file mode 100644 index 00000000..9a60aca0 --- /dev/null +++ b/debian/hedera-web/etc/hedera-web/apache.conf @@ -0,0 +1,22 @@ +# Alias /hedera-web /usr/share/hedera-web/ + + + + Options -Indexes -FollowSymLinks + AllowOverride None + + Order Allow,Deny + Allow From All + + + SetOutputFilter DEFLATE + + + + + Header set Access-Control-Allow-Origin "*" + + + + + diff --git a/debian/hedera-web/etc/hedera-web/config.php b/debian/hedera-web/etc/hedera-web/config.php new file mode 100755 index 00000000..b59b22a8 --- /dev/null +++ b/debian/hedera-web/etc/hedera-web/config.php @@ -0,0 +1,24 @@ + [ + 'host' => 'db.verdnatura.es' + ,'schema' => 'hedera-web' + ,'user' => 'hedera-web' + ,'pass' => 'base64pass' +] + +/** + * The default language. + **/ +,'defaultLang' => 'es' + +]; + +?> diff --git a/debian/hedera-web/usr/share/doc/hedera-web/Htk.odg b/debian/hedera-web/usr/share/doc/hedera-web/Htk.odg new file mode 100644 index 00000000..52719292 Binary files /dev/null and b/debian/hedera-web/usr/share/doc/hedera-web/Htk.odg differ diff --git a/debian/hedera-web/usr/share/doc/hedera-web/changelog.Debian.gz b/debian/hedera-web/usr/share/doc/hedera-web/changelog.Debian.gz new file mode 100644 index 00000000..90c8b51f Binary files /dev/null and b/debian/hedera-web/usr/share/doc/hedera-web/changelog.Debian.gz differ diff --git a/debian/hedera-web/usr/share/doc/hedera-web/copyright b/debian/hedera-web/usr/share/doc/hedera-web/copyright new file mode 100644 index 00000000..41420122 --- /dev/null +++ b/debian/hedera-web/usr/share/doc/hedera-web/copyright @@ -0,0 +1,24 @@ +Format: http://dep.debian.net/deps/dep5 +Name: hedera-web +Source: git://www.verdnatura.es/var/git/hedera-web + +Files: * +Copyright: 2011-2015 Juan Ferrer Toribio +License: GPL-3.0+ + +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General Public + License can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/address-list.js b/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/address-list.js new file mode 100644 index 00000000..7e602c3f --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/address-list.js @@ -0,0 +1,42 @@ + +Vn.AddressList = new Class +({ + Extends: Vn.Module + + ,activate: function () + { + this.$('user-model').setInfo ('c', 'customer_view', 'hedera'); + this.$('addresses').setInfo ('a', 'address_view', 'hedera'); + } + + ,onAddAddressClick: function () + { + this.hash.set ({ + 'form': 'account/address', + 'address': 0 + }); + } + + ,onReturnClick: function () + { + window.history.back(); + } + + ,onRemoveAddressClick: function (button, form) + { + if (confirm (_('AreYouSureDeleteAddress'))) + { + form.set ('active', false); + form.refresh (); + } + } + + ,onEditAddressClick: function (button, form) + { + this.hash.set ({ + 'form': 'account/address', + 'address': form.get ('id') + }); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/style.css b/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/style.css new file mode 100644 index 00000000..c3fba906 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/style.css @@ -0,0 +1,33 @@ + +.address-list +{ + padding: 1em; +} +.address-list .box +{ + max-width: 40em; +} +.address-list .form +{ + margin: 0 auto; + max-width: 25em; + padding: 2em; +} +.address +{ + color: #555; + padding: .5em; +} +.address p.consignee +{ + font-weight: bold; +} +.address p +{ + font-size: 1.4em; + margin: 0.2em 0; +} +.address .actions +{ + text-align: right; +} diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/ui.xml b/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/ui.xml new file mode 100755 index 00000000..033c2c0a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/address-list/ui.xml @@ -0,0 +1,76 @@ + + + + + SELECT user_id, default_address + FROM customer_view c + + + + SELECT a.id, a.consignee, p.name province, a.zip_code, a.city, a.name, a.active, c.Pais country + FROM address_view a + LEFT JOIN vn2008.province p ON a.province_id = p.province_id + JOIN vn2008.Paises c ON c.Id = p.Paises_Id + WHERE active != FALSE + + +
+
+
+

Addresses

+
+ + +
+
+
+
+ + + + +
+
+
+ diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/address/address.js b/debian/hedera-web/usr/share/hedera-web/forms/account/address/address.js new file mode 100644 index 00000000..c9ad6d9e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/address/address.js @@ -0,0 +1,35 @@ + +Vn.Address = new Class +({ + Extends: Vn.Module + + ,activate: function () + { + this.$('model').setInfo ('a', 'address_view', 'hedera', ['id'], 'id'); + this.$('model').setDefault ('customer_id', 'a', + new Sql.Func ({schema: 'account', name: 'user_get_id'})); + } + + ,onStatusChange: function (form) + { + if (form.ready && this.$('address').value == 0) + form.insertRow (); + } + + ,onOperationsDone: function () + { + Htk.Toast.showMessage (_('AddressChangedSuccessfully')); + this.onReturnClick (); + } + + ,onAcceptClick: function () + { + this.$('iter').performOperations (); + } + + ,onReturnClick: function () + { + window.history.back(); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/address/style.css b/debian/hedera-web/usr/share/hedera-web/forms/account/address/style.css new file mode 100644 index 00000000..f26a2151 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/address/style.css @@ -0,0 +1,31 @@ + +.address +{ + padding: 1em; +} +.address .box +{ + max-width: 40em; +} +.address .box .body +{ + margin: 0 auto; + max-width: 25em; + padding: 3em; +} +div.form-group +{ + padding: 0.4em; +} +.address label +{ + display: block; + margin-bottom: 0.5em; +} +.address input, +.address select +{ + margin: 0; + width: 100%; +} + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/address/ui.xml b/debian/hedera-web/usr/share/hedera-web/forms/account/address/ui.xml new file mode 100755 index 00000000..89c4076b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/address/ui.xml @@ -0,0 +1,77 @@ + + + + + + + + + SELECT a.id, a.name, a.consignee, a.city, a.zip_code, a.province_id, c.Id country_id + FROM address_view a + LEFT JOIN vn2008.province p ON p.province_id = a.province_id + JOIN vn2008.Paises c ON c.Id = p.Paises_Id + WHERE active != FALSE AND a.id = #address + + + + + + +
+
+
+

AddEditAddress

+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + + SELECT Id, Pais FROM vn2008.Paises + ORDER BY Pais + + +
+
+ + + + SELECT province_id, name FROM vn2008.province + WHERE Paises_Id = #country + ORDER BY name + + + + + +
+
+
+
+
diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/conf/conf.js b/debian/hedera-web/usr/share/hedera-web/forms/account/conf/conf.js new file mode 100644 index 00000000..3f89b752 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/conf/conf.js @@ -0,0 +1,58 @@ + +Vn.Conf = new Class +({ + Extends: Vn.Module + + ,activate: function () + { + this.$('user-model').setInfo ('u', 'user_view', 'hedera'); + this.$('user-model').setInfo ('c', 'customer_view', 'hedera'); + this.$('addresses').setInfo ('a', 'address_view', 'hedera'); + } + + ,onPasswordChange: function () + { + var newPassword = this.$('new-password').value; + var repeatedPassword = this.$('repeat-password').value; + + if (newPassword != '' && repeatedPassword != '') + { + if (newPassword === repeatedPassword) + { + var batch = new Sql.Batch (); + batch.addValue ('password', newPassword); + + var query = 'UPDATE user_view SET password = MD5(#password) ' + +'WHERE id = account.user_get_id () LIMIT 1'; + + this.conn.execQuery (query, this.onPasswordUpdate.bind (this), batch); + } + else + Htk.Toast.showError (_('PasswordsDoesntMatch')); + } + } + + ,onPasswordUpdate: function (resultSet) + { + if (!resultSet.fetchResult ()) + return; + + this.relogin (); + Htk.Toast.showMessage (_('PasswordsChanged')); + } + + ,relogin: function () + { + this.conn.open ( + this.$('user-form').get ('name') + ,this.$('new-password').value + ,Vn.Cookie.check ('vn_pass') + ); + } + + ,onAddressesClick: function () + { + this.hash.set ({'form': 'account/address-list'}); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/conf/style.css b/debian/hedera-web/usr/share/hedera-web/forms/account/conf/style.css new file mode 100644 index 00000000..73e95e6e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/conf/style.css @@ -0,0 +1,34 @@ + +.conf +{ + padding: 1em; +} +.conf .box +{ + max-width: 40em; +} +.conf .form +{ + margin: 0 auto; + max-width: 25em; + padding: 2em; +} +.conf .form-group +{ + padding: 0.4em; +} +.conf .form-group label +{ + display: block; + margin-bottom: 0.5em; +} +.conf .form-group input[type=text], +.conf .form-group input[type=password] +{ + margin: 0; + width: 100%; +} +.conf .form-group input[type=password] +{ + margin-bottom: 0.5em; +} diff --git a/debian/hedera-web/usr/share/hedera-web/forms/account/conf/ui.xml b/debian/hedera-web/usr/share/hedera-web/forms/account/conf/ui.xml new file mode 100755 index 00000000..7fd48b11 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/account/conf/ui.xml @@ -0,0 +1,60 @@ + + + + + SELECT id, u.name, email, mail, c.user_id, c.default_address + FROM user_view u + LEFT JOIN customer_view c + ON u.id = c.user_id + + + + SELECT a.id, a.consignee, p.name province, a.zip_code, a.city, a.name, a.active, c.Pais country + FROM address_view a + LEFT JOIN vn2008.province p ON a.province_id = p.province_id + JOIN vn2008.Paises c ON c.Id = p.Paises_Id + WHERE active != FALSE + + +
+
+
+

Configuration

+
+ +
+
+
+
+
+ + +
+
+ + + +
+
+ + +
+
+ + +
+
+
+
+ diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/access-log.js b/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/access-log.js new file mode 100644 index 00000000..108fc6cd --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/access-log.js @@ -0,0 +1,6 @@ + +Vn.AccessLog = new Class +({ + Extends: Vn.Module +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/style.css b/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/style.css new file mode 100644 index 00000000..35a35eb1 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/style.css @@ -0,0 +1,15 @@ +.access-log +{ + padding: 1em; + min-width: 35em; +} +.access-log .box +{ + max-width: 50em; + margin: 0 auto; +} +.access-log .htk-grid tbody tr +{ + height: 3.4em; +} + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/ui.xml b/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/ui.xml new file mode 100755 index 00000000..1dff1256 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/access-log/ui.xml @@ -0,0 +1,81 @@ + + + + + + + + SELECT Id_Cliente, Cliente, Telefono, movil + FROM vn2008.Clientes WHERE Id_Cliente = #user + + + + + + +
+
+
+

AccessLog

+
+ + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+ + + SELECT u.date_time, a.platform, a.browser, a.version, a.javascript, a.cookies + FROM visit_user u + JOIN visit_access c ON u.access_id = c.id + JOIN visit_agent a ON c.agent_id = a.id + WHERE u.user_id = #user + ORDER BY u.date_time DESC + LIMIT 30 + + + + + + + + + + + +
+
+
+
diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/links/links.js b/debian/hedera-web/usr/share/hedera-web/forms/admin/links/links.js new file mode 100644 index 00000000..c5a3ea5a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/links/links.js @@ -0,0 +1,16 @@ + +Vn.Links = new Class +({ + Extends: Vn.Module + + ,activate: function () + { + this.$('column-link').renderer = this.linkRenderer; + } + + ,linkRenderer: function (column, form) + { + column.href = form.get ('link'); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/links/style.css b/debian/hedera-web/usr/share/hedera-web/forms/admin/links/style.css new file mode 100644 index 00000000..962e8734 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/links/style.css @@ -0,0 +1,18 @@ + +.cpanel +{ + padding: 1em; +} +.cpanel .box +{ + max-width: 60em; + min-width: 25em; +} +.cpanel tbody tr +{ + height: 3.5em; +} +.cpanel tbody td img +{ + min-height: 1.6em; +} diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/links/ui.xml b/debian/hedera-web/usr/share/hedera-web/forms/admin/links/ui.xml new file mode 100755 index 00000000..41c8adaf --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/links/ui.xml @@ -0,0 +1,18 @@ + +
+
+
+

ControlPanel

+
+ + + SELECT image, name, description, link FROM link + ORDER BY name + + + + + +
+
+
diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/photos.js b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/photos.js new file mode 100644 index 00000000..8033f604 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/photos.js @@ -0,0 +1,43 @@ + +Vn.Photos = new Class +({ + Extends: Vn.Module + + ,activate: function () + { + this.$('schema').value = 'catalog'; + this.$('photo-size').value = 10 /* MB */ * 1048576; + this.$('photo-id').focus (); + this.$('html-form').action = + '//'+ Vn.Config['image_host'] +'/rest.php?action=image'; + } + + ,onFormSubmit: function () + { + this.$('schema-field').value = this.$('schema').value; + this.$('submit').disabled = true; + this.gui.loaderPush (); + } + + ,onImageUpload: function () + { + this.gui.loaderPop (); + this.$('submit').disabled = false; + + try { + var responseText = this.$('iframe').contentDocument.body.textContent; + var response = eval ('('+ responseText +')'); + + if (response.data) + { + this.$('photo-id').value = ''; + this.$('photo-id').focus (); + Htk.Toast.showMessage (_('ImageUploaded')); + } + else + Htk.Toast.showError (response.error.message +' ('+ response.error.code +')'); + } + catch (e) {} + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/send-data.php b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/send-data.php new file mode 100755 index 00000000..b202eaef --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/send-data.php @@ -0,0 +1,42 @@ +'); + + echo json_encode (TRUE); +} +else + echo json_encode (FALSE); + +unset ($_SESSION['captcha']); + +?> diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/style.css b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/style.css new file mode 100644 index 00000000..1d43878d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/style.css @@ -0,0 +1,44 @@ + +.photos +{ + padding: 1em; +} +.photos .box +{ + max-width: 40em; +} +.photos form +{ + margin: 0 auto; + max-width: 25em; +} +div.form-group +{ + padding: 0.4em; +} +.photos form label +{ + display: block; + margin-bottom: 0.5em; +} +.photos input, +.photos select +{ + margin: 0; + width: 100%; +} +.photos iframe +{ + display: none; +} + +/* Footer */ + +.photos button +{ + display: block; + margin: 0 auto; + padding: 0.6em; + margin-top: 1.5em; +} + diff --git a/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/ui.xml b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/ui.xml new file mode 100755 index 00000000..46e7be67 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/forms/admin/photos/ui.xml @@ -0,0 +1,47 @@ + +
+
+
+

Photos

+
+
+
+
+ + +
+
+ + +
+
+ + + + + SELECT name, `desc` FROM image_schema ORDER BY `desc` + + +
+
+ + + +
+ +
+ '),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'
'+o+'
'+s+"
"+a+"
"},fullscreen:function(e){var t=this,r=document.documentElement,i,o=t.classPrefix,a;if(e!=t._fullscreen)if(n.on(window,"resize",function(){var e;if(t._fullscreen)if(i)t._timer||(t._timer=setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(i=!0)}}),a=t.layoutRect(),t._fullscreen=e,e){t._initial={x:a.x,y:a.y,w:a.w,h:a.h},t._borderBox=t.parseBox("0"),t.getEl("head").style.display="none",a.deltaH-=a.headerH+2,n.addClass(r,o+"fullscreen"),n.addClass(document.body,o+"fullscreen"),t.addClass("fullscreen");var s=n.getWindowSize();t.moveTo(0,0).resizeTo(s.w,s.h)}else t._borderBox=t.parseBox(t.settings.border),t.getEl("head").style.display="",a.deltaH+=a.headerH,n.removeClass(r,o+"fullscreen"),n.removeClass(document.body,o+"fullscreen"),t.removeClass("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.addClass("in")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new r(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()})},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t=e.classPrefix;e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),e._fullscreen&&(n.removeClass(document.documentElement,t+"fullscreen"),n.removeClass(document.body,t+"fullscreen"))},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return i}),r(tt,[et],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){var r,i=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close(),i(!0)}},{type:"button",text:"Cancel",onClick:function(e){e.control.parents()[1].close(),i(!1)}}];break;case t.YES_NO:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close(),i(!0)}}];break;case t.YES_NO_CANCEL:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close()}}];break;default:r=[{type:"button",text:"Ok",subtype:"primary",onClick:function(e){e.control.parents()[1].close(),i(!0)}}]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:r,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){i(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(nt,[et,tt],function(e,t){return function(n){function r(){return o.length?o[o.length-1]:void 0}var i=this,o=[];i.windows=o,i.open=function(t,r){var i;return n.editorManager.activeEditor=n,t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),i=new e(t),o.push(i),i.on("close",function(){for(var e=o.length;e--;)o[e]===i&&o.splice(e,1);n.focus()}),t.data&&i.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),i.features=t||{},i.params=r||{},n.nodeChanged(),i.renderTo().reflow()},i.alert=function(e,r,i){t.alert(e,function(){r?r.call(i||this):n.focus()})},i.confirm=function(e,n,r){t.confirm(e,function(e){n.call(r||this,e)})},i.close=function(){r()&&r().close()},i.getParams=function(){return r()?r().params:null},i.setParams=function(e){r()&&(r().params=e)},i.getWindows=function(){return o}}}),r(rt,[R,B,x,h,g,p],function(e,t,n,r,i,o){return function(a){function s(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(n){}}function l(){var e=a.getDoc().documentMode;return e?e:6}function c(e){return e.isDefaultPrevented()}function u(){function t(e){var t=new i(function(){});o.each(a.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&a.dom.setAttrib(e,"style",e.getAttribute("style"))}),t.observe(a.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),a.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null);var n=a.selection.getRng(),r=n.startContainer.parentNode;o.each(t.takeRecords(),function(e){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}o.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),U.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),a.selection.setRng(n))}})}),t.disconnect(),o.each(a.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")})}var n=a.getDoc(),r="data:text/mce-internal,",i=window.MutationObserver,s;i||(s=!0,i=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMNodeInserted",e),r.removeEventListener("DOMAttrModified",t),r.removeEventListener("DOMSubtreeModified",e,!1)},this.takeRecords=function(){return n}}),a.on("keydown",function(n){var r=n.keyCode==V,i=e.metaKeyPressed(n);if(!c(n)&&(r||n.keyCode==W)){var o=a.selection.getRng(),s=o.startContainer,l=o.startOffset;if(!i&&o.collapsed&&3==s.nodeType&&(r?l0))return;n.preventDefault(),i&&a.selection.getSel().modify("extend",r?"forward":"backward","word"),t(r)}}),a.on("keypress",function(n){c(n)||q.isCollapsed()||!n.charCode||e.metaKeyPressed(n)||(n.preventDefault(),t(!0),a.selection.setContent(String.fromCharCode(n.charCode)))}),a.addCommand("Delete",function(){t()}),a.addCommand("ForwardDelete",function(){t(!0)}),s||(a.on("dragstart",function(e){e.dataTransfer.setData("URL","data:text/mce-internal,"+escape(a.selection.getContent()))}),a.on("drop",function(e){if(!c(e)){var i=e.dataTransfer.getData("URL");if(!i||-1==i.indexOf(r)||!n.caretRangeFromPoint)return;i=unescape(i.substr(r.length)),n.caretRangeFromPoint&&(e.preventDefault(),t(),a.selection.setRng(n.caretRangeFromPoint(e.x,e.y)),a.insertContent(i))}}),a.on("cut",function(e){!c(e)&&e.clipboardData&&(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",a.selection.getContent()),e.clipboardData.setData("text/plain",a.selection.getContent({format:"text"})),t(!0))}))}function d(){function e(e){var t=U.create("body"),n=e.cloneContents();return t.appendChild(n),q.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(a.getBody()),t.compareRanges(n,r)}var i=e(n),o=U.createRng();o.selectNode(a.getBody());var s=e(o);return i===s}a.on("keydown",function(e){var t=e.keyCode,r,i;if(!c(e)&&(t==V||t==W)){if(r=a.selection.isCollapsed(),i=a.getBody(),r&&!U.isEmpty(i))return;if(!r&&!n(a.selection.getRng()))return;e.preventDefault(),a.setContent(""),i.firstChild&&U.isBlock(i.firstChild)?a.selection.setCursorLocation(i.firstChild,0):a.selection.setCursorLocation(i,0),a.nodeChanged()}})}function f(){a.on("keydown",function(t){!c(t)&&65==t.keyCode&&e.metaKeyPressed(t)&&(t.preventDefault(),a.execCommand("SelectAll"))})}function p(){a.settings.content_editable||(U.bind(a.getDoc(),"focusin",function(){q.setRng(q.getRng())}),U.bind(a.getDoc(),"mousedown",function(e){e.target==a.getDoc().documentElement&&(a.getBody().focus(),q.setRng(q.getRng()))}))}function m(){a.on("keydown",function(e){if(!c(e)&&e.keyCode===W&&q.isCollapsed()&&0===q.getRng(!0).startOffset){var t=q.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return U.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(U.remove(n),e.preventDefault())}})}function h(){window.Range.prototype.getClientRects||a.on("mousedown",function(e){if(!c(e)&&"HTML"===e.target.nodeName){var t=a.getBody();t.blur(),setTimeout(function(){t.focus()},0)}})}function g(){a.on("click",function(e){e=e.target,/^(IMG|HR)$/.test(e.nodeName)&&q.getSel().setBaseAndExtent(e,0,e,1),"A"==e.nodeName&&U.hasClass(e,"mce-item-anchor")&&q.select(e),a.nodeChanged()})}function v(){function e(){var e=U.getAttribs(q.getStart().cloneNode(!1));return function(){var t=q.getStart();t!==a.getBody()&&(U.setAttrib(t,"style",null),z(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!q.isCollapsed()&&U.getParent(q.getStart(),U.isBlock)!=U.getParent(q.getEnd(),U.isBlock)}a.on("keypress",function(n){var r;return c(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),a.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),U.bind(a.getDoc(),"cut",function(n){var r;!c(n)&&t()&&(r=e(),setTimeout(function(){r()},0))})}function y(){var e,n;a.on("selectionchange",function(){n&&(clearTimeout(n),n=0),n=window.setTimeout(function(){if(!a.removed){var n=q.getRng();e&&t.compareRanges(n,e)||(a.nodeChanged(),e=n)}},50)})}function b(){document.body.setAttribute("role","application")}function C(){a.on("keydown",function(e){if(!c(e)&&e.keyCode===W&&q.isCollapsed()&&0===q.getRng(!0).startOffset){var t=q.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function x(){l()>7||(s("RespectVisibilityInDesign",!0),a.contentStyles.push(".mceHideBrInPre pre br {display: none}"),U.addClass(a.getBody(),"mceHideBrInPre"),j.addNodeFilter("pre",function(e){for(var t=e.length,r,i,o,a;t--;)for(r=e[t].getAll("br"),i=r.length;i--;)o=r[i],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new n("#text",3),o,!0).value="\n"}),K.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function w(){U.bind(a.getBody(),"mouseup",function(){var e,t=q.getNode();"IMG"==t.nodeName&&((e=U.getStyle(t,"width"))&&(U.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),U.setStyle(t,"width","")),(e=U.getStyle(t,"height"))&&(U.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),U.setStyle(t,"height","")))})}function _(){a.on("keydown",function(t){var n,r,i,o,s;if(!c(t)&&t.keyCode==e.BACKSPACE&&(n=q.getRng(),r=n.startContainer,i=n.startOffset,o=U.getRoot(),s=r,n.collapsed&&0===i)){for(;s&&s.parentNode&&s.parentNode.firstChild==s&&s.parentNode!=o;)s=s.parentNode;"BLOCKQUOTE"===s.tagName&&(a.formatter.toggle("blockquote",null,s),n=U.createRng(),n.setStart(r,0),n.setEnd(r,0),q.setRng(n))}})}function N(){function e(){a._refreshContentEditable(),s("StyleWithCSS",!1),s("enableInlineTableEditing",!1),$.object_resizing||s("enableObjectResizing",!1)}$.readonly||a.on("BeforeExecCommand MouseDown",e)}function E(){function e(){z(U.select("a"),function(e){var t=e.parentNode,n=U.getRoot();if(t.lastChild===e){for(;t&&!U.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}U.add(t,"br",{"data-mce-bogus":1})}})}a.on("SetContent ExecCommand",function(t){("setcontent"==t.type||"mceInsertLink"===t.command)&&e()})}function S(){$.forced_root_block&&a.on("init",function(){s("DefaultParagraphSeparator",$.forced_root_block)})}function k(){a.on("Undo Redo SetContent",function(e){e.initial||a.execCommand("mceRepaint")})}function T(){a.on("keydown",function(e){var t;c(e)||e.keyCode!=W||(t=a.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),a.undoManager.beforeChange(),U.remove(t.item(0)),a.undoManager.add()))})}function R(){var e;l()>=10&&(e="",z("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),a.contentStyles.push(e+"{padding-right: 1px !important}"))}function A(){l()<9&&(j.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),K.addNodeFilter("noscript",function(e){for(var t=e.length,i,o,a;t--;)i=e[t],o=e[t].firstChild,o?o.value=r.decode(o.value):(a=i.attributes.map["data-mce-innertext"],a&&(i.attr("data-mce-innertext",null),o=new n("#text",3),o.value=a,o.raw=!0,i.append(o)))}))}function B(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),U.unbind(r,"mouseup",n),U.unbind(r,"mousemove",t),a=o=0}var r=U.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,U.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(U.bind(r,"mouseup",n),U.bind(r,"mousemove",t),U.getRoot().focus(),a.select())}})}function L(){a.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||q.normalize()},!0)}function D(){a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function M(){a.inline||a.on("keydown",function(){document.activeElement==document.body&&a.getWin().focus()})}function H(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){"HTML"==e.target.nodeName&&(a.getBody().focus(),a.selection.normalize(),a.nodeChanged())}))}function P(){i.mac&&a.on("keydown",function(t){!e.metaKeyPressed(t)||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),a.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","word"))})}function O(){s("AutoUrlDetect",!1)}function I(){a.inline||a.on("focus blur",function(){var e=a.dom.create("br");a.getBody().appendChild(e),e.parentNode.removeChild(e)},!0)}function F(){a.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}var z=o.each,W=e.BACKSPACE,V=e.DELETE,U=a.dom,q=a.selection,$=a.settings,j=a.parser,K=a.serializer,Y=i.gecko,G=i.ie,X=i.webkit;C(),_(),d(),L(),X&&(u(),p(),g(),S(),i.iOS?(y(),M(),H(),F()):f()),G&&i.ie<11&&(m(),b(),x(),w(),T(),R(),A(),B()),i.ie>=11&&(H(),I()),i.ie&&(f(),O()),Y&&(m(),h(),v(),N(),E(),k(),D(),P())}}),r(it,[p],function(e){function t(){return!1}function n(){return!0}var r="__bindings",i=e.makeMap("focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave keydown keypress keyup contextmenu dragstart dragend dragover draggesture dragdrop drop drag"," ");return{fire:function(e,i,o){var a=this,s,l,c,u,d;if(e=e.toLowerCase(),i=i||{},i.type=e,!a.removed||"remove"===e){if(i.target||(i.target=a),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=n},i.stopPropagation=function(){i.isPropagationStopped=n},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=n},i.isDefaultPrevented=t,i.isPropagationStopped=t,i.isImmediatePropagationStopped=t),a[r]&&(s=a[r][e]))for(l=0,c=s.length;c>l&&(s[l]=u=s[l],!i.isImmediatePropagationStopped());l++)if(u.call(a,i)===!1)return i.preventDefault(),i;if(o!==!1&&a.parent)for(d=a.parent();d&&!i.isPropagationStopped();)d.fire(e,i,!1),d=d.parent();return i}},on:function(e,t,n){var o=this,a,s,l,c;if(t===!1&&(t=function(){return!1}),t)for(l=e.toLowerCase().split(" "),c=l.length;c--;)e=l[c],a=o[r],a||(a=o[r]={}),s=a[e],s||(s=a[e]=[],o.bindNative&&i[e]&&o.bindNative(e)),n?s.unshift(t):s.push(t);return o},off:function(e,t){var n=this,o,a=n[r],s,l,c,u;if(a)if(e)for(c=e.toLowerCase().split(" "),o=c.length;o--;){if(e=c[o],s=a[e],!e){for(l in a)a[e].length=0;return n}if(s){if(t)for(u=s.length;u--;)s[u]===t&&s.splice(u,1);else s.length=0;!s.length&&n.unbindNative&&i[e]&&(n.unbindNative(e),delete a[e])}}else{if(n.unbindNative)for(e in a)n.unbindNative(e);n[r]=[]}return n},hasEventListeners:function(e){var t=this[r];return e=e.toLowerCase(),!(!t||!t[e]||0===t[e].length)}}}),r(ot,[p,g],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122};return function(o){var a=this,s={};o.on("keyup keypress keydown",function(e){(e.altKey||e.ctrlKey||e.metaKey)&&n(s,function(n){var r=t.mac?e.metaKey:e.ctrlKey;if(n.ctrl==r&&n.alt==e.altKey&&n.shift==e.shiftKey)return e.keyCode==n.keyCode||e.charCode&&e.charCode==n.charCode?(e.preventDefault(),"keydown"==e.type&&n.func.call(n.scope),!0):void 0})}),a.add=function(t,a,l,c){var u;return u=l,"string"==typeof l?l=function(){o.execCommand(u,!1,null)}:e.isArray(u)&&(l=function(){o.execCommand(u[0],u[1],u[2])}),n(r(t.toLowerCase()),function(e){var t={func:l,scope:c||o,desc:o.translate(a),alt:!1,ctrl:!1,shift:!1};n(r(e,"+"),function(e){switch(e){case"alt":case"ctrl":case"shift":t[e]=!0;break;default:t.charCode=e.charCodeAt(0),t.keyCode=i[e]||e.toUpperCase().charCodeAt(0)}}),s[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t}),!0}}}),r(at,[y,C,x,k,S,L,M,H,P,O,I,F,b,l,nt,w,N,rt,g,p,it,ot],function(e,n,r,i,o,a,s,l,c,u,d,f,p,m,h,g,v,y,b,C,x,w){function _(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|click|contextmenu|drop/.test(t)?e.getDoc():e.getBody()}function N(e,t,r){var i=this,o,a;o=i.documentBaseUrl=r.documentBaseURL,a=r.baseURI,i.settings=t=T({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:o,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:i.convertURL,url_converter_scope:i,ie7_compat:!0},t),n.language=t.language||"en",n.languageLoad=t.language_load,n.baseURL=r.baseURL,i.id=t.id=e,i.isNotDirty=!0,i.plugins={},i.documentBaseURI=new f(t.document_base_url||o,{base_uri:a}),i.baseURI=a,i.contentCSS=[],i.contentStyles=[],i.shortcuts=new w(i),i.execCommands={},i.queryStateCommands={},i.queryValueCommands={},i.loadedCSS={},i.suffix=r.suffix,i.editorManager=r,i.inline=t.inline,r.fire("SetupEditor",i),i.execCallback("setup",i)}var E=e.DOM,S=n.ThemeManager,k=n.PluginManager,T=C.extend,R=C.each,A=C.explode,B=C.inArray,L=C.trim,D=C.resolve,M=m.Event,H=b.gecko,P=b.ie;return N.prototype={render:function(){function e(){E.unbind(window,"ready",e),n.render()}function t(){var e=p.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!S.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",S.load(r.theme,t)}C.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),R(r.external_plugins,function(e,t){k.load(t,e),r.plugins+=" "+t}),R(r.plugins.split(/[ ,]/),function(e){if(e=L(e),e&&!k.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=k.dependencies(e);R(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=k.createUrl(t,e),k.load(e.resource,e)})}else k.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!M.domLoaded)return void E.bind(window,"ready",e);if(n.getElement()&&b.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||E.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(E.insertAfter(E.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},E.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.isNotDirty=!0,a._mceOldSubmit(a)})),n.windowManager=new h(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=E.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),t()}},init:function(){function e(n){var r=k.get(n),i,o;i=k.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=L(n),r&&-1===B(h,n)&&(R(k.dependencies(n),function(t){e(t)}),o=new r(t,i),t.plugins[n]=o,o.init&&(o.init(t,i),h.push(n)))}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,p,m,h=[];if(t.rtl=this.editorManager.i18n.rtl,t.editorManager.add(t),n.aria_label=n.aria_label||E.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=S.get(n.theme),t.theme=new c(t,S.urls[n.theme]),t.theme.init&&t.theme.init(t,S.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""))):t.theme=n.theme),R(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,p=/^[0-9\.]+(|px)$/i,p.test(""+i)&&(i=Math.max(parseInt(i,10),100)),p.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(E.setStyles(l.sizeContainer||l.editorContainer,{wi2dth:i,h2eight:o}),o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&R(A(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();for(t.iframeHTML=n.doctype+"",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+=''),!b.caretAfter&&n.ie7_compat&&(t.iframeHTML+=''),t.iframeHTML+='',m=0;m',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),t.iframeHTML+='
";var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';if(document.domain!=location.hostname&&(u=v),s=E.add(l.iframeContainer,"iframe",{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}}),P)try{t.getDoc()}catch(y){s.src=u=v}t.contentAreaContainer=l.iframeContainer,l.editorContainer&&(E.get(l.editorContainer).style.display=t.orgDisplay),E.get(t.id).style.display="none",E.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,o=n.settings,f=E.get(n.id),p=n.getDoc(),m,h;o.inline||(n.getElement().style.visibility=n.orgVisibility),t||o.content_editable||(p.open(),p.write(n.iframeHTML),p.close()),o.content_editable&&(n.on("remove",function(){var e=this.getBody();E.removeClass(e,"mce-content-body"),E.removeClass(e,"mce-edit-focus"),E.setAttrib(e,"contentEditable",null)}),E.addClass(f,"mce-content-body"),n.contentDocument=p=o.content_document||document,n.contentWindow=o.content_window||window,n.bodyElement=f,o.content_document=o.content_window=null,o.root_name=f.nodeName.toLowerCase()),m=n.getBody(),m.disabled=!0,o.readonly||(n.inline&&"static"==E.getStyle(m,"position",!0)&&(m.style.position="relative"),m.contentEditable=n.getParam("content_editable_state",!0)),m.disabled=!1,n.schema=new g(o),n.dom=new e(p,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:o.force_hex_style_colors,class_filter:o.class_filter,update_styles:!0,root_element:o.content_editable?n.id:null,collect:o.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new v(o,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)i=e[r],a=i.attr(t),s="data-mce-"+t,i.attributes.map[s]||("style"===t?i.attr(s,o.serializeStyle(o.parseStyle(a),i.name)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name)))}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("type","mce-"+(n.attr("type")||"text/javascript"))}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,i,o=n.schema.getNonEmptyElements();t--;)i=e[t],i.isEmpty(o)&&(i.empty().append(new r("br",1)).shortEnded=!0)}),n.serializer=new i(o,n),n.selection=new a(n.dom,n.getWin(),n.serializer,n),n.formatter=new s(n),n.undoManager=new l(n),n.forceBlocks=new u(n),n.enterKey=new c(n),n.editorCommands=new d(n),n.fire("PreInit"),o.browser_spellcheck||o.gecko_spellcheck||(p.body.spellcheck=!1,E.setAttrib(m,"spellcheck","false")),n.fire("PostRender"),n.quirks=y(n),o.directionality&&(m.dir=o.directionality),o.nowrap&&(m.style.whiteSpace="nowrap"),o.protect&&n.on("BeforeSetContent",function(e){R(o.protect,function(t){e.content=e.content.replace(t,function(e){return""})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),o.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,R(n._pendingNativeEvents,function(e){n.dom.bind(_(n,e),e,function(e){n.fire(e.type,e)})}),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.contentStyles.length>0&&(h="",R(n.contentStyles,function(e){h+=e+"\r\n" +}),n.dom.addStyle(h)),R(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),o.auto_focus&&setTimeout(function(){var e=n.editorManager.get(o.auto_focus);e.selection.select(e.getBody(),1),e.selection.collapse(1),e.getBody().focus(),e.getWin().focus()},100),f=p=m=null},focus:function(e){var t,n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n._refreshContentEditable(),i||(b.opera||n.getBody().focus(),n.getWin().focus()),H||i){if(l=n.getBody(),l.setActive)try{l.setActive()}catch(c){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.activeEditor!=n&&((t=n.editorManager.activeEditor)&&t.fire("deactivate",{relatedTarget:n}),n.fire("activate",{relatedTarget:t})),n.editorManager.activeEditor=n},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?D(r):0,n=D(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?R(r.split(r.indexOf("=")>0?/[;,](?![^=;,]*(?:[;,]|$))/:","),function(e){e=e.split("="),i[L(e[0])]=L(e.length>1?e[1]:e)}):i=r,i):r},nodeChanged:function(){var e=this,t=e.selection,n,r,i;!e.initialized||e.settings.disable_nodechange||e.settings.readonly||(i=e.getBody(),n=t.getStart()||i,n=P&&n.ownerDocument!=e.getDoc()?e.getBody():n,"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),r=[],e.dom.getParent(n,function(e){return e===i?!0:void r.push(e)}),e.fire("NodeChange",{element:n,parents:r}))},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addCommand:function(e,t,n){this.execCommands[e]={func:t,scope:n||this}},addQueryStateHandler:function(e,t,n){this.queryStateCommands[e]={func:t,scope:n||this}},addQueryValueHandler:function(e,t,n){this.queryValueCommands[e]={func:t,scope:n||this}},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){var i=this,o=0,a;return/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||r&&r.skip_focus||i.focus(),r=T({},r),r=i.fire("BeforeExecCommand",{command:e,ui:t,value:n}),r.isDefaultPrevented()?!1:(a=i.execCommands[e])&&a.func.call(a.scope,t,n)!==!0?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):(R(i.plugins,function(r){return r.execCommand&&r.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),o=!0,!1):void 0}),o?o:i.theme&&i.theme.execCommand&&i.theme.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):i.editorCommands.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):(i.getDoc().execCommand(e,t,n),void i.fire("ExecCommand",{command:e,ui:t,value:n})))},queryCommandState:function(e){var t=this,n,r;if(!t._isHidden()){if((n=t.queryStateCommands[e])&&(r=n.func.call(n.scope),r!==!0))return r;if(r=t.editorCommands.queryCommandState(e),-1!==r)return r;try{return t.getDoc().queryCommandState(e)}catch(i){}}},queryCommandValue:function(e){var n=this,r,i;if(!n._isHidden()){if((r=n.queryValueCommands[e])&&(i=r.func.call(r.scope),i!==!0))return i;if(i=n.editorCommands.queryCommandValue(e),i!==t)return i;try{return n.getDoc().queryCommandValue(e)}catch(o){}}},show:function(){var e=this;E.show(e.getContainer()),E.hide(e.id),e.load(),e.fire("show")},hide:function(){var e=this,t=e.getDoc();P&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),E.hide(e.getContainer()),E.setStyle(e.id,"display",e.orgDisplay),e.fire("hide")},isHidden:function(){return!E.isHidden(this.id)},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=E.getParent(t.id,"form"))&&R(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&(t.isNotDirty=!0),r},setContent:function(e,t){var n=this,r=n.getBody(),i;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=P&&11>P?"":'
',e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):P||(e='
'),r.innerHTML=e,n.fire("SetContent",t)):("raw"!==t.format&&(e=new o({},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=L(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?r.innerHTML:"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),e.content="text"!=e.format?L(n):n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e){this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},getContainer:function(){var e=this;return e.container||(e.container=E.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return E.get(this.settings.content_element||this.id)},getWin:function(){var e=this,t;return e.contentWindow||(t=E.get(e.id+"_ifr"),t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),R(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||(n.hasVisual?i.addClass(e,o):i.removeClass(e,o)));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&(n.hasVisual?i.addClass(e,o):i.removeClass(e,o))))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;if(!e.removed){e.removed=1,e.save(),e.hasHiddenInput&&E.remove(e.getElement().nextSibling),e.inline||(P&&10>P&&e.getDoc().execCommand("SelectAll",!1,null),E.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null,M.unbind(e.getWin()),M.unbind(e.getDoc()));var t=e.getContainer();M.unbind(e.getBody()),M.unbind(t),e.fire("remove"),e.editorManager.remove(e),E.remove(t),e.destroy()}},bindNative:function(e){var t=this;t.settings.readonly||(t.initialized?t.dom.bind(_(t,e),e,function(n){t.fire(e,n)}):t._pendingNativeEvents?t._pendingNativeEvents.push(e):t._pendingNativeEvents=[e])},unbindNative:function(e){var t=this;t.initialized&&t.dom.unbind(e)},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e&&H&&(M.unbind(t.getDoc()),M.unbind(t.getWin()),M.unbind(t.getBody())),e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),E.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},_refreshContentEditable:function(){var e=this,t,n;e._isHidden()&&(t=e.getBody(),n=t.parentNode,n.removeChild(t),n.appendChild(t),t.focus())},_isHidden:function(){var e;return H?(e=this.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}},T(N.prototype,x),N}),r(st,[],function(){var e={};return{rtl:!1,add:function(t,n){for(var r in n)e[r]=n[r];this.rtl=this.rtl||"rtl"===e._dir},translate:function(t){if("undefined"==typeof t)return t;if("string"!=typeof t&&t.raw)return t.raw;if(t.push){var n=t.slice(1);t=(e[t[0]]||t[0]).replace(/\{([^\}]+)\}/g,function(e,t){return n[t]})}return e[t]||t},data:e}}),r(lt,[y,g],function(e,t){function n(e){function a(){try{return document.activeElement}catch(e){return document.body}}function s(e){return e&&e.startContainer?{startContainer:e.startContainer,startOffset:e.startOffset,endContainer:e.endContainer,endOffset:e.endOffset}:e}function l(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function c(e){return!!o.getParent(e,n.isEditorUIElement)}function u(e,t){for(var n=t.getBody();e;){if(e==n)return!0;e=e.parentNode}}function d(n){var d=n.editor;d.on("init",function(){(d.inline||t.ie)&&(d.on("nodechange keyup",function(){var e=document.activeElement;e&&e.id==d.id+"_ifr"&&(e=d.getBody()),u(e,d)&&(d.lastRng=d.selection.getRng())}),t.webkit&&!r&&(r=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(d.lastRng=n)}},o.bind(document,"selectionchange",r)))}),d.on("setcontent",function(){d.lastRng=null}),d.on("mousedown",function(){d.selection.lastFocusBookmark=null}),d.on("focusin",function(){var t=e.focusedEditor;d.selection.lastFocusBookmark&&(d.selection.setRng(l(d,d.selection.lastFocusBookmark)),d.selection.lastFocusBookmark=null),t!=d&&(t&&t.fire("blur",{focusedEditor:d}),e.activeEditor=d,e.focusedEditor=d,d.fire("focus",{blurredEditor:t}),d.focus(!0)),d.lastRng=null}),d.on("focusout",function(){window.setTimeout(function(){var t=e.focusedEditor;c(a())||t!=d||(d.fire("blur",{focusedEditor:null}),e.focusedEditor=null,d.selection&&(d.selection.lastFocusBookmark=null))},0)}),i||(i=function(t){var n=e.activeEditor;n&&t.target.ownerDocument==document&&(n.selection&&(n.selection.lastFocusBookmark=s(n.lastRng)),c(t.target)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},o.bind(document,"focusin",i))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(o.unbind(document,"selectionchange",r),o.unbind(document,"focusin",i),r=i=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var r,i,o=e.DOM;return n.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},n}),r(ct,[at,y,F,g,p,it,st,lt],function(e,t,n,r,i,o,a,s){var l=t.DOM,c=i.explode,u=i.each,d=i.extend,f=0,p,m={majorVersion:"4",minorVersion:"0.21",releaseDate:"2014-04-01",editors:[],i18n:a,activeEditor:null,setup:function(){var e=this,t,r,i="",o;if(r=document.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(r)||(r+="/"),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else for(var a=document.getElementsByTagName("script"),l=0;l0&&u(c(h),function(n){l.get(n)?(m=new e(n,t,s),p.push(m),m.render()):u(document.forms,function(e){u(e.elements,function(e){e.name===n&&(n="mce_editor_"+f++,l.setAttrib(e,"id",n),r(n,t))})})});break;case"textareas":case"specific_textareas":u(l.select("textarea"),function(e){t.editor_deselector&&o(e,t.editor_deselector)||(!t.editor_selector||o(e,t.editor_selector))&&r(n(e),t)})}t.oninit&&(h=g=0,u(p,function(e){g++,e.initialized?h++:e.on("init",function(){h++,h==g&&i(t,"oninit")}),h==g&&i(t,"oninit")}))}var s=this,p=[],m;s.settings=t,l.bind(window,"ready",a)},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),t.activeEditor=e,t.fire("AddEditor",{editor:e}),p||(p=function(){t.fire("BeforeUnload")},l.bind(window,"beforeunload",p)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i,o;{if(e){if("string"==typeof e)return e=e.selector||e,void u(l.select(e),function(e){t.remove(r[e.id])});if(i=e,!r[i.id])return null;for(delete r[i.id],n=0;n=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){u(this.editors,function(e){e.save()})},addI18n:function(e,t){a.add(e,t)},translate:function(e){return a.translate(e)}};return d(m,o),m.setup(),window.tinymce=window.tinyMCE=m,m}),r(ut,[ct,p],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(t,n){e(n,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(dt,[],function(){return{send:function(e){function t(){!e.async||4==n.readyState||r++>1e4?(e.success&&1e4>r&&200==n.status?e.success.call(e.success_scope,""+n.responseText,n,e):e.error&&e.error.call(e.error_scope,r>1e4?"TIMED_OUT":"GENERAL",n,e),n=null):setTimeout(t,10)}var n,r=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async===!1?!1:!0,e.data=e.data||"",n=new XMLHttpRequest){if(n.overrideMimeType&&n.overrideMimeType(e.content_type),n.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.content_type&&n.setRequestHeader("Content-Type",e.content_type),n.setRequestHeader("X-Requested-With","XMLHttpRequest"),n.send(e.data),!e.async)return t();setTimeout(t,10)}}}}),r(ft,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(pt,[ft,dt,p],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(mt,[y],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(ht,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(gt,[y,l,b,C,p,g],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(vt,[z,p],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.addClass(this.settings.containerClass,"body")},applyClasses:function(e){var t=this,n=t.settings,r,i,o;r=e.items().filter(":visible"),i=n.firstControlClass,o=n.lastControlClass,r.each(function(e){e.removeClass(i).removeClass(o),n.controlClass&&e.addClass(n.controlClass)}),r.eq(0).addClass(i),r.eq(-1).addClass(o)},renderHtml:function(e){var t=this,n=t.settings,r,i="";return r=e.items(),r.eq(0).addClass(n.firstControlClass),r.eq(-1).addClass(n.lastControlClass),r.each(function(e){n.controlClass&&e.addClass(n.controlClass),i+=e.renderHtml()}),i},recalc:function(){},postRender:function(){}})}),r(yt,[vt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'
'+this._super(e)}})}),r(bt,[q,J],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},text:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().lastChild.innerHTML=t.encode(e)),t):t._value},renderHtml:function(){var e=this,t=e.classPrefix;return'"},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Ct,[q,bt],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.toggleClass("tooltip-n","bc-tc"==i),r.toggleClass("tooltip-nw","bc-tl"==i),r.toggleClass("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},active:function(e){var t=this,n;return e!==n&&(t.aria("pressed",e),t.toggleClass("active",e)),t._super(e)},disabled:function(e){var t=this,n;return e!==n&&(t.aria("disabled",e),t.toggleClass("disabled",e)),t._super(e)},postRender:function(){var e=this,t=e.settings;e._rendered=!0,e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(xt,[Ct],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t.on("click mousedown",function(e){e.preventDefault()}),t._super(e),n=e.size,e.subtype&&t.addClass(e.subtype),n&&t.addClass("btn-"+n)},icon:function(e){var t=this,n=t.classPrefix;if("undefined"==typeof e)return t.settings.icon;if(t.settings.icon=e,e=e?n+"ico "+n+"i-"+t.settings.icon:"",t._rendered){var r=t.getEl().firstChild,i=r.getElementsByTagName("i")[0];e?(i&&i==r.firstChild||(i=document.createElement("i"),r.insertBefore(i,r.firstChild)),i.className=e):i&&r.removeChild(i),t.text(t._text)}return t},repaint:function(){var e=this.getEl().firstChild.style;e.width=e.height="100%",this._super()},text:function(e){var t=this;if(t._rendered){var n=t.getEl().lastChild.lastChild;n&&(n.data=t.translate(e))}return t._super(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon,i;return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",r=e.settings.icon?n+"ico "+n+"i-"+r:"",'
"}})}),r(wt,[K],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.addClass("btn-group"),e.preRender(),t.preRender(e),'
'+(e.settings.html||"")+t.renderHtml(e)+"
"}})}),r(_t,[Ct],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){var t=this;return"undefined"!=typeof e?(e?t.addClass("checked"):t.removeClass("checked"),t._checked=e,t.aria("checked",e),t):t._checked},value:function(e){return this.checked(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
'+e.encode(e._text)+"
"}})}),r(Nt,[xt,Z],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()}})}),r(Et,[Nt,y],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.addClass("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",i=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"";return'
'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(St,[Ct,$,U],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("combobox"),t.subinput=!0,t.ariaTarget="inp",e=t.settings,e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){for(var r=n.target,i=t.getEl();r&&r!=i;)r.id&&-1!=r.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),r=r.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){return e.preventDefault(),t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),e.placeholder&&(t.addClass("placeholder"),t.on("focusin",function(){t._hasOnChange||(n.on(t.getEl("inp"),"change",function(){t.fire("change")}),t._hasOnChange=!0),t.hasClass("placeholder")&&(t.getEl("inp").value="",t.removeClass("placeholder"))}),t.on("focusout",function(){0===t.value().length&&(t.getEl("inp").value=e.placeholder,t.addClass("placeholder"))}))},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t.removeClass("placeholder"),t._rendered&&(t.getEl("inp").value=e),t):t._rendered?(e=t.getEl("inp").value,e!=t.settings.placeholder?e:""):t._value},disabled:function(e){var t=this;return t._rendered&&"undefined"!=typeof e&&(t.getEl("inp").disabled=e),t._super(e)},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),r=e.getEl("open"),i=e.layoutRect(),o,a;o=r?i.w-n.getSize(r).width-10:i.w-10;var s=document;return s.all&&(!s.documentMode||s.documentMode<=8)&&(a=e.layoutRect().h-2+"px"),n.css(t.firstChild,{width:o,lineHeight:a}),e._super(),e},postRender:function(){var e=this;return n.on(this.getEl("inp"),"change",function(){e.fire("change")}),e._super()},remove:function(){n.off(this.getEl("inp")),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=n.value||n.placeholder||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e._text,(o||a)&&(s='
",e.addClass("has-open")),'
"+s+"
"}})}),r(kt,[Ct],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.addClass("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.data()[n],index:n})})},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},data:function(e){var t=this;return"undefined"!=typeof e?(t._data=e,t.update(),t):t._data},update:function(){this.innerHtml(this._getPathHtml())},postRender:function(){var e=this;e._super(),e.data(e.settings.data)},renderHtml:function(){var e=this;return'
'+e._getPathHtml()+"
"},_getPathHtml:function(){var e=this,t=e._data||[],n,r,i="",o=e.classPrefix;for(n=0,r=t.length;r>n;n++)i+=(n>0?'":"")+'
'+t[n].name+"
";return i||(i='
\xa0
'),i}})}),r(Tt,[kt,ct],function(e,t){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var n=this,r=t.activeEditor;return n.on("select",function(t){var n=[],i,o=r.getBody();for(r.focus(),i=r.selection.getStart();i&&i!=o;)e(i)||n.push(i),i=i.parentNode;r.selection.select(n[n.length-1-t.index]),r.nodeChanged()}),r.on("nodeChange",function(t){for(var i=[],o=t.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=r.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});i.push({name:s.name})}n.data(i)}),n._super()}})}),r(Rt,[K],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.addClass("formitem"),t.preRender(e),'
'+(e.settings.title?'
'+e.settings.title+"
":"")+'
'+(e.settings.html||"")+t.renderHtml(e)+"
" +}})}),r(At,[K,Rt],function(e,t){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,n=e.items();n.each(function(n){var r,i=n.settings.label;i&&(r=new t({layout:"flex",autoResize:"overflow",defaults:{flex:1},items:[{type:"label",id:n._id+"-l",text:i,flex:0,forId:n._id,disabled:n.disabled()}]}),r.type="formitem",n.aria("labelledby",n._id+"-l"),"undefined"==typeof n.settings.flex&&(n.settings.flex=1),e.replace(n,r),r.add(n))})},recalcLabels:function(){var e=this,t=0,n=[],r,i;if(e.settings.labelGapCalc!==!1)for(e.items().filter("formitem").each(function(e){var r=e.items()[0],i=r.getEl().clientWidth;t=i>t?i:t,n.push(r)}),i=e.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=t+i},visible:function(e){var t=this._super(e);return e===!0&&this._rendered&&this.recalcLabels(),t},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.recalcLabels(),e.fromJSON(e.settings.data)}})}),r(Bt,[At],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'
'+(e.settings.title?''+e.settings.title+"":"")+'
'+(e.settings.html||"")+t.renderHtml(e)+"
"}})}),r(Lt,[St],function(e){return e.extend({init:function(e){var t=this,n=tinymce.activeEditor,r;e.spellcheck=!1,r=n.settings.file_browser_callback,r&&(e.icon="browse",e.onaction=function(){r(t.getEl("inp").id,t.getEl("inp").value,e.filetype,window)}),t._super(e)}})}),r(Dt,[yt],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox();e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Mt,[yt],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,p,m,h,g,v=[],y,b,C,x,w,_,N,E,S,k,T,R,A,B,L,D,M,H,P,O,I,F,z=Math.max,W=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e._paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,("row-reversed"==f||"column-reverse"==f)&&(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",N="h",E="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",P="left",M="w",L="x",D="innerW",H="minW",O="right",I="deltaW",F="contentW"):(S="x",N="w",E="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",P="top",M="h",L="y",D="innerH",H="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],_=u=0,t=0,n=r.length;n>t;t++)p=r[t],m=p.layoutRect(),h=p.settings,g=h.flex,d-=n-1>t?c:0,g>0&&(u+=g,m[k]&&v.push(p),m.flex=g),d-=m[E],y=o[P]+m[H]+o[O],y>_&&(_=y);if(x={},x[E]=0>d?i[E]-d+i[A]:i[R]-d+i[A],x[H]=_+i[I],x[B]=i[R]-d,x[F]=_,x.minW=W(x.minW,i.maxW),x.minH=W(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)p=v[t],m=p.layoutRect(),b=m[k],y=m[E]+m.flex*C,y>b?(d-=m[k]-m[E],u-=m.flex,m.flex=0,m.maxFlexSize=b):m.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[L]=o[P],t=0,n=r.length;n>t;t++)p=r[t],m=p.layoutRect(),y=m.maxFlexSize||m[E],"center"===s?x[L]=Math.round(i[D]/2-m[M]/2):"stretch"===s?(x[M]=z(m[H]||0,i[D]-o[P]-o[O]),x[L]=o[P]):"end"===s&&(x[L]=i[D]-m[M]-o.top),m.flex>0&&(y+=m.flex*C),x[N]=y,x[S]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var V=e.parent();V&&(V._lastRect=null,V.recalc())}}})}),r(Ht,[vt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})}})}),r(Pt,[q,Ct,Z,p,ct,g],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this,n=this.settings.format;n&&t.parent().on("show",function(){t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))})},onclick:function(){this.settings.format&&d(this.settings.format)}}}}function o(){return e.undoManager?e.undoManager.hasUndo():!1}function a(){return e.undoManager?e.undoManager.hasRedo():!1}function l(){var t=this;t.disabled(!o()),e.on("Undo Redo AddUndo TypingUndo",function(){t.disabled(!o())})}function c(){var t=this;t.disabled(!a()),e.on("Undo Redo AddUndo TypingUndo",function(){t.disabled(!a())})}function u(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function d(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var f;f=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})},onclick:function(){d(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],hr:["Insert horizontal rule","InsertHorizontalRule"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})}})}),e.addButton("undo",{tooltip:"Undo",onPostRender:l,cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:c,cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",shortcut:"Ctrl+N",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Ctrl+Z",onPostRender:l,cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Ctrl+Y",onPostRender:c,cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:u,cmd:"mceToggleVisualAid"}),s({cut:["Cut","Cut","Ctrl+X"],copy:["Copy","Copy","Ctrl+C"],paste:["Paste","Paste","Ctrl+V"],selectall:["Select all","SelectAll","Ctrl+A"],bold:["Bold","Bold","Ctrl+B"],italic:["Italic","Italic","Ctrl+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:f}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Address=address;Pre=pre;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:d,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){n.push({text:e,value:e})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:f})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(Ot,[yt],function(e){return e.extend({recalc:function(e){var t=e.settings,n,r,i,o,a,s,l,c,u,d,f,p,m,h,g,v,y,b,C,x,w,_,N=[],E=[],S,k,T,R;for(t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e._paddingBox,C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]),d=0;r>d;d++)N.push(0);for(f=0;n>f;f++)E.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,N[d]=S>N[d]?S:N[d],E[f]=k>E[f]?k:E[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=N[d]+(d>0?y:0),T-=(d>0?y:0)+N[d];for(R=o.innerH-g.top-g.bottom,_=0,f=0;n>f;f++)_+=E[f]+(f>0?b:0),R-=(f>0?b:0)+E[f];if(w+=g.left+g.right,_+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=_+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var A;A="start"==t.packV?0:R>0?Math.floor(R/n):0;var B=0,L=t.flexWidths;if(L)for(d=0;dd;d++)N[d]+=L?L[d]*D:D;for(m=g.top,f=0;n>f;f++){for(p=g.left,s=E[f]+A,d=0;r>d&&(u=i[f*r+d],u);d++)h=u.settings,c=u.layoutRect(),a=Math.max(N[d],c.startMinWidth),c.x=p,c.y=m,v=h.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=p+a/2-c.w/2:"right"==v?c.x=p+a-c.w:"stretch"==v&&(c.w=a),v=h.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=m+s/2-c.h/2:"bottom"==v?c.y=m+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),p+=a+y,u.recalc&&u.recalc();m+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var M=e.parent();M&&(M._lastRect=null,M.recalc())}}})}),r(It,[Ct],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("iframe"),e.canFocus=!1,''},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,r=this.getEl().contentWindow.document.body;return r?(r.innerHTML=e,t&&t()):setTimeout(function(){n.html(e)},0),this}})}),r(Ft,[Ct,U],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("widget"),t.addClass("label"),t.canFocus=!1,e.multiline&&t.addClass("autoscroll"),e.strong&&t.addClass("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.addClass("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},text:function(e){var t=this;return t._rendered&&e&&this.innerHtml(t.encode(e)),t._super(e)},renderHtml:function(){var e=this,t=e.settings.forId;return'"}})}),r(zt,[K],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.addClass("toolbar")},postRender:function(){var e=this;return e.items().addClass("toolbar-item"),e._super()}})}),r(Wt,[zt],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(Vt,[xt,$,Wt],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),t.addClass("menubtn"),e.fixedWidth&&t.addClass("fixed-width"),t.aria("haspopup",!0),t.hasPopup=!0},showMenu:function(){var e=this,n=e.settings,r;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.toggleClass("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon?r+"ico "+r+"i-"+e.settings.icon:"";return e.aria("role",e.parent()instanceof n?"menuitem":"button"),'
'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},text:function(e){var t=this,n,r;if(t._rendered)for(r=t.getEl("open").getElementsByTagName("span"),n=0;n0&&(o=n[0].text,t._value=n[0].value),e.menu=n}e.text=e.text||o||n[0].text,t._super(e),t.addClass("listbox"),t.on("select",function(n){var r=n.control;a&&(n.lastControl=a),e.multiple?r.active(!r.active()):t.value(n.control.settings.value),a=r})},value:function(e){function t(e,n){e.items().each(function(e){r=e.value()===n,r&&(i=i||e.text()),e.active(r),e.menu&&t(e.menu,n)})}var n=this,r,i,o,a;if("undefined"!=typeof e){if(n.menu)t(n.menu,e);else for(o=n.settings.menu,a=0;a'+("-"!==o?'\xa0":"")+("-"!==o?''+o+"":"")+(l?'
'+l+"
":"")+(r.menu?'
':"")+"
"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var r=e.getEl("text");r&&r.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),e.parent().hideAll()))}),e._super(),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r($t,[Z,qt,p],function(e,t,n){var r=e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,e.itemDefaults)for(var r=e.items,i=r.length;i--;)r[i]=n.extend({},e.itemDefaults,r[i]);t._super(e),t.addClass("menu")},repaint:function(){return this.toggleClass("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.selectable?(e._hasIcons=!0,!1):void 0}),e._super()}});return r}),r(jt,[_t],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(Kt,[Ct,Y],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.addClass("resizehandle"),"both"==e.settings.direction&&e.addClass("resizehandle-both"),e.canFocus=!1,'
'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(Yt,[Ct],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("spacer"),e.canFocus=!1,'
'}})}),r(Gt,[Vt,U],function(e,t){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,n=e.getEl(),r=e.layoutRect(),i,o;return e._super(),i=n.firstChild,o=n.lastChild,t.css(i,{width:r.w-t.getSize(o).width,height:r.h-2}),t.css(o,{height:r.h-2}),e},activeMenu:function(e){var n=this;t.toggleClass(n.getEl().lastChild,n.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"";return'
'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void t.call(this,e);n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(Xt,[Ht],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"}})}),r(Jt,[X,U],function(e,t){return e.extend({lastIdx:0,Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t.removeClass(n,this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t.addClass(n,this.classPrefix+"active"),e!=this.lastIdx&&(this.items()[this.lastIdx].hide(),this.lastIdx=e),this.items()[e].show().fire("showtab"),this.reflow()},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='"}),'
'+n+'
'+t.renderHtml(e)+"
"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,n,r,i;r=t.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(t,n){r=Math.max(r,t.layoutRect().minW),i=Math.max(i,t.layoutRect().minH),e.settings.activeTab!=n&&t.hide()}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=t.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,n=e._super(),n.deltaH+=o,n.innerH=n.h-n.deltaH,n}})}),r(Qt,[Ct,U],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t._value=e.value||"",t.addClass("textbox"),e.multiline?t.addClass("multiline"):t.on("keydown",function(e){13==e.keyCode&&t.parents().reverse().each(function(t){return e.preventDefault(),t.hasEventListeners("submit")&&t.toJSON?(t.fire("submit",{data:t.toJSON()}),!1):void 0})})},disabled:function(e){var t=this;return t._rendered&&"undefined"!=typeof e&&(t.getEl().disabled=e),t._super(e)},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().value=e),t):t._rendered?t.getEl().value:t._value},repaint:function(){var e=this,t,n,r,i=0,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e._borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.encode(e._value,!1),i="";return"spellcheck"in n&&(i+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(i+=' maxlength="'+n.maxLength+'"'),n.size&&(i+=' size="'+n.size+'"'),n.subtype&&(i+=' type="'+n.subtype+'"'),e.disabled()&&(i+=' disabled="disabled"'),n.multiline?'":'"},postRender:function(){var e=this;return t.on(e.getEl(),"change",function(t){e.fire("change",t)}),e._super()},remove:function(){t.off(this.getEl()),this._super()}})}),r(Zt,[U,q],function(e,t){return function(n,r){var i=this,o,a=t.classPrefix;i.show=function(t){return i.hide(),o=!0,window.setTimeout(function(){o&&n.appendChild(e.createFragment('
'))},t||0),i},i.hide=function(){var e=n.lastChild;return e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,i}}}),a([l,c,u,d,f,p,m,h,g,v,y,b,C,x,w,_,N,E,S,k,T,R,A,B,L,D,M,H,P,O,I,F,z,W,V,U,q,$,j,K,Y,G,X,J,Q,Z,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,dt,ft,pt,mt,ht,gt,vt,yt,bt,Ct,xt,wt,_t,Nt,Et,St,kt,Tt,Rt,At,Bt,Lt,Dt,Mt,Ht,Pt,Ot,It,Ft,zt,Wt,Vt,Ut,qt,$t,jt,Kt,Yt,Gt,Xt,Jt,Qt,Zt])}(this);tinymce.PluginManager.add("advlist",function(t){function e(t,e){var n=[];return tinymce.each(e.split(/[ ,]/),function(t){n.push({text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"==t?"":t})}),n}function n(e,n){var o,l=t.dom,a=t.selection;o=l.getParent(a.getNode(),"ol,ul"),o&&o.nodeName==e&&n!==!1||t.execCommand("UL"==e?"InsertUnorderedList":"InsertOrderedList"),n=n===!1?i[e]:n,i[e]=n,o=l.getParent(a.getNode(),"ol,ul"),o&&(l.setStyle(o,"listStyleType",n),o.removeAttribute("data-mce-style")),t.focus()}function o(e){var n=t.dom.getStyle(t.dom.getParent(t.selection.getNode(),"ol,ul"),"listStyleType")||"";e.control.items().each(function(t){t.active(t.settings.data===n)})}var l,a,i={};l=e("OL",t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),a=e("UL",t.getParam("advlist_bullet_styles","default,circle,disc,square")),t.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:l,onshow:o,onselect:function(t){n("OL",t.control.settings.data)},onclick:function(){n("OL",!1)}}),t.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:a,onshow:o,onselect:function(t){n("UL",t.control.settings.data)},onclick:function(){n("UL",!1)}})});tinymce.PluginManager.add("anchor",function(n){function e(){var e=n.selection.getNode();n.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:e.name||e.id},onsubmit:function(e){n.execCommand("mceInsertContent",!1,n.dom.createHTML("a",{id:e.data.name}))}})}n.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:e,stateSelector:"a:not([href])"}),n.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:e})});tinymce.PluginManager.add("autolink",function(t){function e(t){o(t,-1,"(",!0)}function n(t){o(t,0,"",!0)}function i(t){o(t,-1,"",!1)}function o(t,e,n){var i,o,r,s,d,a,f,l,c;if(i=t.selection.getRng(!0).cloneRange(),i.startOffset<5){if(l=i.endContainer.previousSibling,!l){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;l=i.endContainer.firstChild.nextSibling}if(c=l.length,i.setStart(l,c),i.setEnd(l,c),i.endOffset<5)return;o=i.endOffset,s=l}else{if(s=i.endContainer,3!=s.nodeType&&s.firstChild){for(;3!=s.nodeType&&s.firstChild;)s=s.firstChild;3==s.nodeType&&(i.setStart(s,0),i.setEnd(s,s.nodeValue.length))}o=1==i.endOffset?2:i.endOffset-1-e}r=o;do i.setStart(s,o>=2?o-2:0),i.setEnd(s,o>=1?o-1:0),o-=1;while(" "!=i.toString()&&""!==i.toString()&&160!=i.toString().charCodeAt(0)&&o-2>=0&&i.toString()!=n);if(i.toString()==n||160==i.toString().charCodeAt(0)?(i.setStart(s,o),i.setEnd(s,r),o+=1):0===i.startOffset?(i.setStart(s,0),i.setEnd(s,r)):(i.setStart(s,o),i.setEnd(s,r)),a=i.toString(),"."==a.charAt(a.length-1)&&i.setEnd(s,r-1),a=i.toString(),f=a.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i),f&&("www."==f[1]?f[1]="http://www.":/@$/.test(f[1])&&!/^mailto:/.test(f[1])&&(f[1]="mailto:"+f[1]),d=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,f[1]+f[2]),t.selection.moveToBookmark(d),t.nodeChanged(),tinymce.Env.webkit)){t.selection.collapse(!1);var g=Math.min(s.length,r+1);i.setStart(s,g),i.setEnd(s,g),t.selection.setRng(i)}}var r;return t.on("keydown",function(e){return 13==e.keyCode?i(t):void 0}),tinymce.Env.ie?void t.on("focus",function(){if(!r){r=!0;try{t.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(t.on("keypress",function(n){return 41==n.which?e(t):void 0}),void t.on("keyup",function(e){return 32==e.keyCode?n(t):void 0}))});tinymce.PluginManager.add("autoresize",function(e){function t(){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}function i(n){var s,r,g,u,l,m,h,d,f=tinymce.DOM;if(r=e.getDoc()){if(g=r.body,u=r.documentElement,l=o.autoresize_min_height,!g||n&&"setcontent"===n.type&&n.initial||t())return void(g&&u&&(g.style.overflowY="auto",u.style.overflowY="auto"));h=e.dom.getStyle(g,"margin-top",!0),d=e.dom.getStyle(g,"margin-bottom",!0),m=g.offsetHeight+parseInt(h,10)+parseInt(d,10),(isNaN(m)||0>=m)&&(m=tinymce.Env.ie?g.scrollHeight:tinymce.Env.webkit&&0===g.clientHeight?0:g.offsetHeight),m>o.autoresize_min_height&&(l=m),o.autoresize_max_height&&m>o.autoresize_max_height?(l=o.autoresize_max_height,g.style.overflowY="auto",u.style.overflowY="auto"):(g.style.overflowY="hidden",u.style.overflowY="hidden",g.scrollTop=0),l!==a&&(s=l-a,f.setStyle(f.get(e.id+"_ifr"),"height",l+"px"),a=l,tinymce.isWebKit&&0>s&&i(n))}}function n(e,t,o){setTimeout(function(){i({}),e--?n(e,t,o):o&&o()},t)}var o=e.settings,a=0;e.settings.inline||(o.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),o.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){var t=e.getParam("autoresize_overflow_padding",1);e.dom.setStyles(e.getBody(),{paddingBottom:e.getParam("autoresize_bottom_margin",50),paddingLeft:t,paddingRight:t})}),e.on("nodechange setcontent keyup FullscreenStateChanged",i),e.getParam("autoresize_on_init",!0)&&e.on("init",function(){n(20,100,function(){n(5,1e3)})}),e.addCommand("mceAutoResize",i))});tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(l.getItem(d+"time"),10)||0;return(new Date).getTime()-e>v.autosave_retention?(a(!1),!1):!0}function a(t){l.removeItem(d+"draft"),l.removeItem(d+"time"),t!==!1&&e.fire("RemoveDraft")}function r(){!c()&&e.isDirty()&&(l.setItem(d+"draft",e.getContent({format:"raw",no_events:!0})),l.setItem(d+"time",(new Date).getTime()),e.fire("StoreDraft"))}function o(){n()&&(e.setContent(l.getItem(d+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function i(){m||(setInterval(function(){e.removed||r()},v.autosave_interval),m=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),i()}function u(){e.undoManager.beforeChange(),o(),a(),e.undoManager.add()}function f(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e}function c(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+"[^>]*>(( | |[ ]|]*>)+?|)|
$","i").test(t)}var d,m,v=e.settings,l=tinymce.util.LocalStorage;d=v.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",d=d.replace(/\{path\}/g,document.location.pathname),d=d.replace(/\{query\}/g,document.location.search),d=d.replace(/\{id\}/g,e.id),v.autosave_interval=t(v.autosave_interval,"30s"),v.autosave_retention=t(v.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:u,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:u,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&c()&&o()}),e.on("saveContent",function(){a()})),window.onbeforeunload=f,this.hasDraft=n,this.storeDraft=r,this.restoreDraft=o,this.removeDraft=a,this.isEmpty=c});!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(o){var e=this,t=o.getParam("bbcode_dialect","punbb").toLowerCase();o.on("beforeSetContent",function(o){o.content=e["_"+t+"_bbcode2html"](o.content)}),o.on("postProcess",function(o){o.set&&(o.content=e["_"+t+"_bbcode2html"](o.content)),o.get&&(o.content=e["_"+t+"_html2bbcode"](o.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/(.*?)<\/font>/gi,"$1"),e(//gi,"[img]$1[/img]"),e(/(.*?)<\/span>/gi,"[code]$1[/code]"),e(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/(.*?)<\/span>/gi,"[u]$1[/u]"),e(//gi,"[u]"),e(/]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/
/gi,"\n"),e(//gi,"\n"),e(/
/gi,"\n"),e(/

/gi,""),e(/<\/p>/gi,"\n"),e(/ |\u00a0/gi," "),e(/"/gi,'"'),e(/</gi,"<"),e(/>/gi,">"),e(/&/gi,"&"),o},_punbb_bbcode2html:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/\n/gi,"
"),e(/\[b\]/gi,""),e(/\[\/b\]/gi,""),e(/\[i\]/gi,""),e(/\[\/i\]/gi,""),e(/\[u\]/gi,""),e(/\[\/u\]/gi,""),e(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),e(/\[url\](.*?)\[\/url\]/gi,'$1'),e(/\[img\](.*?)\[\/img\]/gi,''),e(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),e(/\[code\](.*?)\[\/code\]/gi,'$1 '),e(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),o}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}();tinymce.PluginManager.add("charmap",function(e){function a(){function a(e){for(;e;){if("TD"==e.nodeName)return e;e=e.parentNode}}var i,r,o,n;i='';var l=25;for(o=0;10>o;o++){for(i+="",r=0;l>r;r++){var s=t[o*l+r];i+='"}i+=""}i+="";var c={type:"container",html:i,onclick:function(a){var t=a.target;/^(TD|DIV)$/.test(t.nodeName)&&(e.execCommand("mceInsertContent",!1,tinymce.trim(t.innerText||t.textContent)),a.ctrlKey||n.close())},onmouseover:function(e){var t=a(e.target);t&&n.find("#preview").text(t.firstChild.firstChild.data)}};n=e.windowManager.open({title:"Special character",spacing:10,padding:10,items:[c,{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:100,minHeight:80}],buttons:[{text:"Close",onclick:function(){n.close()}}]})}var t=[["160","no-break space"],["38","ampersand"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"],["173","soft hyphen"]];e.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:a}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:a,context:"insert"})});tinymce.PluginManager.add("code",function(e){function o(){e.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),value:e.getContent({source_view:!0}),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(o){e.focus(),e.undoManager.transact(function(){e.setContent(o.data.code)}),e.selection.setCursorLocation(),e.nodeChanged()}})}e.addCommand("mceCodeEditor",o),e.addButton("code",{icon:"code",tooltip:"Source code",onclick:o}),e.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:o})});tinymce.PluginManager.add("contextmenu",function(e){var n,t=e.settings.contextmenu_never_use_native;e.on("contextmenu",function(i){var o;if(!i.ctrlKey||t){if(i.preventDefault(),o=e.settings.contextmenu||"link image inserttable | cell row column deletetable",n)n.show();else{var c=[];tinymce.each(o.split(/[ ,]/),function(n){var t=e.menuItems[n];"|"==n&&(t={text:n}),t&&(t.shortcut="",c.push(t))});for(var a=0;a'}),t+=""}),t+=""}var i=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];t.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:a,onclick:function(e){var a=t.dom.getParent(e.target,"a");a&&(t.insertContent(''+a.getAttribute('),this.hide())}},tooltip:"Emoticons"})});tinymce.PluginManager.add("fullpage",function(e){function t(){var t=n();e.windowManager.open({title:"Document properties",data:t,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(e){l(tinymce.extend(t,e.data))}})}function n(){function t(e,t){var n=e.attr(t);return n||""}var n,l,a=i(),r={};return r.fontface=e.getParam("fullpage_default_fontface",""),r.fontsize=e.getParam("fullpage_default_fontsize",""),n=a.firstChild,7==n.type&&(r.xml_pi=!0,l=/encoding="([^"]+)"/.exec(n.value),l&&(r.docencoding=l[1])),n=a.getAll("#doctype")[0],n&&(r.doctype=""),n=a.getAll("title")[0],n&&n.firstChild&&(r.title=n.firstChild.value),s(a.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?r[n.toLowerCase()]=e.attr("content"):"Content-Type"==l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")),t&&(r.docencoding=t[1]))}),n=a.getAll("html")[0],n&&(r.langcode=t(n,"lang")||t(n,"xml:lang")),r.stylesheets=[],tinymce.each(a.getAll("link"),function(e){"stylesheet"==e.attr("rel")&&r.stylesheets.push(e.attr("href"))}),n=a.getAll("body")[0],n&&(r.langdir=t(n,"dir"),r.style=t(n,"style"),r.visited_color=t(n,"vlink"),r.link_color=t(n,"link"),r.active_color=t(n,"alink")),r}function l(t){function n(e,t,n){e.attr(t,n?n:void 0)}function l(e){r.firstChild?r.insert(e,r.firstChild):r.append(e)}var a,r,o,c,u,f=e.dom;a=i(),r=a.getAll("head")[0],r||(c=a.getAll("html")[0],r=new m("head",1),c.firstChild?c.insert(r,c.firstChild,!0):c.append(r)),c=a.firstChild,t.xml_pi?(u='version="1.0"',t.docencoding&&(u+=' encoding="'+t.docencoding+'"'),7!=c.type&&(c=new m("xml",7),a.insert(c,a.firstChild,!0)),c.value=u):c&&7==c.type&&c.remove(),c=a.getAll("#doctype")[0],t.doctype?(c||(c=new m("#doctype",10),t.xml_pi?a.insert(c,a.firstChild):l(c)),c.value=t.doctype.substring(9,t.doctype.length-1)):c&&c.remove(),c=null,s(a.getAll("meta"),function(e){"Content-Type"==e.attr("http-equiv")&&(c=e)}),t.docencoding?(c||(c=new m("meta",1),c.attr("http-equiv","Content-Type"),c.shortEnded=!0,l(c)),c.attr("content","text/html; charset="+t.docencoding)):c.remove(),c=a.getAll("title")[0],t.title?(c?c.empty():(c=new m("title",1),l(c)),c.append(new m("#text",3)).value=t.title):c&&c.remove(),s("keywords,description,author,copyright,robots".split(","),function(e){var n,i,r=a.getAll("meta"),o=t[e];for(n=0;n"))}function i(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(d)}function a(t){function n(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})}var l,a,o,m,u=t.content,f="",g=e.dom;if(!t.selection&&!("raw"==t.format&&d||t.source_view&&e.getParam("fullpage_hide_in_source_view"))){u=u.replace(/<(\/?)BODY/gi,"<$1body"),l=u.indexOf("",l),d=n(u.substring(0,l+1)),a=u.indexOf("\n"),o=i(),s(o.getAll("style"),function(e){e.firstChild&&(f+=e.firstChild.value)}),m=o.getAll("body")[0],m&&g.setAttribs(e.getBody(),{style:m.attr("style")||"",dir:m.attr("dir")||"",vLink:m.attr("vlink")||"",link:m.attr("link")||"",aLink:m.attr("alink")||""}),g.remove("fullpage_styles");var y=e.getDoc().getElementsByTagName("head")[0];f&&(g.add(y,"style",{id:"fullpage_styles"},f),m=g.get("fullpage_styles"),m.styleSheet&&(m.styleSheet.cssText=f));var h={};tinymce.each(y.getElementsByTagName("link"),function(e){"stylesheet"==e.rel&&e.getAttribute("data-mce-fullpage")&&(h[e.href]=e)}),tinymce.each(o.getAll("link"),function(e){var t=e.attr("href");h[t]||"stylesheet"!=e.attr("rel")||g.add(y,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete h[t]}),tinymce.each(h,function(e){e.parentNode.removeChild(e)})}}function r(){var t,n="",l="";return e.getParam("fullpage_default_xml_pi")&&(n+='\n'),n+=e.getParam("fullpage_default_doctype",""),n+="\n\n\n",(t=e.getParam("fullpage_default_title"))&&(n+=""+t+"\n"),(t=e.getParam("fullpage_default_encoding"))&&(n+='\n'),(t=e.getParam("fullpage_default_font_family"))&&(l+="font-family: "+t+";"),(t=e.getParam("fullpage_default_font_size"))&&(l+="font-size: "+t+";"),(t=e.getParam("fullpage_default_text_color"))&&(l+="color: "+t+";"),n+="\n\n"}function o(t){t.selection||t.source_view&&e.getParam("fullpage_hide_in_source_view")||(t.content=tinymce.trim(d)+"\n"+tinymce.trim(t.content)+"\n"+tinymce.trim(c))}var d,c,s=tinymce.each,m=tinymce.html.Node;e.addCommand("mceFullPageProperties",t),e.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),e.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),e.on("BeforeSetContent",a),e.on("GetContent",o)});tinymce.PluginManager.add("fullscreen",function(e){function t(){var e,t,n=window,i=document,l=i.body;return l.offsetWidth&&(e=l.offsetWidth,t=l.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function n(){function n(){d.setStyle(a,"height",t().h-(h.clientHeight-a.clientHeight))}var u,h,a,f,m=document.body,g=document.documentElement;s=!s,h=e.getContainer(),u=h.style,a=e.getContentAreaContainer().firstChild,f=a.style,s?(i=f.width,l=f.height,f.width=f.height="100%",c=u.width,o=u.height,u.width=u.height="",d.addClass(m,"mce-fullscreen"),d.addClass(g,"mce-fullscreen"),d.addClass(h,"mce-fullscreen"),d.bind(window,"resize",n),n(),r=n):(f.width=i,f.height=l,c&&(u.width=c),o&&(u.height=o),d.removeClass(m,"mce-fullscreen"),d.removeClass(g,"mce-fullscreen"),d.removeClass(h,"mce-fullscreen"),d.unbind(window,"resize",r)),e.fire("FullscreenStateChanged",{state:s})}var i,l,r,c,o,s=!1,d=tinymce.DOM;return e.settings.inline?void 0:(e.on("init",function(){e.addShortcut("Ctrl+Alt+F","",n)}),e.on("remove",function(){r&&d.unbind(window,"resize",r)}),e.addCommand("mceFullScreen",n),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Alt+F",selectable:!0,onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Alt+F",onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return s}})});tinymce.PluginManager.add("hr",function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"


")}),n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});tinymce.PluginManager.add("image",function(e){function t(e,t){function i(e,i){n.parentNode&&n.parentNode.removeChild(n),t({width:e,height:i})}var n=document.createElement("img");n.onload=function(){i(n.clientWidth,n.clientHeight)},n.onerror=function(){i()};var a=n.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left=0,a.width=a.height="auto",document.body.appendChild(n),n.src=e}function i(t){return tinymce.each(t,function(t){t.textStyle=function(){return e.formatter.getCssText({inline:"img",classes:[t.value]})}}),t}function n(t){return function(){var i=e.settings.image_list;"string"==typeof i?tinymce.util.XHR.send({url:i,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(i)}}function a(n){function a(t,i,n){var a,l=[];return tinymce.each(e.settings[t]||n,function(e){var t={text:e.text||e.title,value:e.value};l.push(t),(f[i]===e.value||!a&&e.selected)&&(a=t)}),a&&!f[i]&&(f[i]=a.value,a.selected=!0),l}function l(){var t=[{text:"None",value:""}];return tinymce.each(n,function(i){t.push({text:i.text||i.title,value:e.convertURL(i.value||i.url,"src"),menu:i.menu})}),t}function o(){var e,t,i,n;e=u.find("#width")[0],t=u.find("#height")[0],i=e.value(),n=t.value(),u.find("#constrain")[0].checked()&&g&&h&&i&&n&&(g!=i?(n=Math.round(i/g*n),t.value(n)):(i=Math.round(n/h*i),e.value(i))),g=i,h=n}function s(){function t(t){function i(){t.onload=t.onerror=null,e.selection.select(t),e.nodeChanged()}t.onload=function(){f.width||f.height||y.setAttribs(t,{width:t.clientWidth,height:t.clientHeight}),i()},t.onerror=i}d(),o(),f=tinymce.extend(f,u.toJSON()),f.alt||(f.alt=""),""===f.width&&(f.width=null),""===f.height&&(f.height=null),""===f.style&&(f.style=null),f={src:f.src,alt:f.alt,width:f.width,height:f.height,style:f.style,"class":f["class"]},f["class"]||delete f["class"],e.undoManager.transact(function(){return f.src?(v?y.setAttribs(v,f):(f.id="__mcenew",e.focus(),e.selection.setContent(y.createHTML("img",f)),v=y.get("__mcenew"),y.setAttrib(v,"id",null)),void t(v)):void(v&&(y.remove(v),e.focus(),e.nodeChanged()))})}function r(e){return e&&(e=e.replace(/px$/,"")),e}function c(){m&&m.value(e.convertURL(this.value(),"src")),t(this.value(),function(e){e.width&&e.height&&(g=e.width,h=e.height,u.find("#width").value(g),u.find("#height").value(h))})}function d(){function t(e){return e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e}if(e.settings.image_advtab){var i=u.toJSON(),n=y.parseStyle(i.style);delete n.margin,n["margin-top"]=n["margin-bottom"]=t(i.vspace),n["margin-left"]=n["margin-right"]=t(i.hspace),n["border-width"]=t(i.border),u.find("#style").value(y.serializeStyle(y.parseStyle(y.serializeStyle(n))))}}var u,g,h,m,p,f={},y=e.dom,v=e.selection.getNode();g=y.getAttrib(v,"width"),h=y.getAttrib(v,"height"),"IMG"!=v.nodeName||v.getAttribute("data-mce-object")||v.getAttribute("data-mce-placeholder")?v=null:f={src:y.getAttrib(v,"src"),alt:y.getAttrib(v,"alt"),"class":y.getAttrib(v,"class"),width:g,height:h},n&&(m={type:"listbox",label:"Image list",values:l(),value:f.src&&e.convertURL(f.src,"src"),onselect:function(e){var t=u.find("#alt");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),u.find("#src").value(e.control.value())},onPostRender:function(){m=this}}),e.settings.image_class_list&&(p={name:"class",type:"listbox",label:"Class",values:i(a("image_class_list","class"))});var b=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:c},m];e.settings.image_description!==!1&&b.push({name:"alt",type:"textbox",label:"Image description"}),e.settings.image_dimensions!==!1&&b.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:o,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:o,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),b.push(p),e.settings.image_advtab?(v&&(f.hspace=r(v.style.marginLeft||v.style.marginRight),f.vspace=r(v.style.marginTop||v.style.marginBottom),f.border=r(v.style.borderWidth),f.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(v,"style")))),u=e.windowManager.open({title:"Insert/edit image",data:f,bodyType:"tabpanel",body:[{title:"General",type:"form",items:b},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox"},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:d},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:s})):u=e.windowManager.open({title:"Insert/edit image",data:f,body:b,onSubmit:s})}e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:n(a),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),e.addMenuItem("image",{icon:"image",text:"Insert image",onclick:n(a),context:"insert",prependToContext:!0})});tinymce.PluginManager.add("importcss",function(t){function e(t){return"string"==typeof t?function(e){return-1!==e.indexOf(t)}:t instanceof RegExp?function(e){return t.test(e)}:t}function n(e,n){function i(t,e){var o,l=t.href;if((e||c[l])&&(!n||n(l))){s(t.imports,function(t){i(t,!0)});try{o=t.cssRules||t.rules}catch(a){}s(o,function(t){t.styleSheet?i(t.styleSheet,!0):t.selectorText&&s(t.selectorText.split(","),function(t){r.push(tinymce.trim(t))})})}}var r=[],c={};s(t.contentCSS,function(t){c[t]=!0});try{s(e.styleSheets,function(t){i(t)})}catch(o){}return r}function i(e){var n,i=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(i){var r=i[1],s=i[2].substr(1).split(".").join(" "),c=tinymce.makeMap("a,img");return i[1]?(n={title:e},t.schema.getTextBlockElements()[r]?n.block=r:t.schema.getBlockElements()[r]||c[r.toLowerCase()]?n.selector=r:n.inline=r):i[2]&&(n={inline:"span",title:e.substr(1),classes:s}),t.settings.importcss_merge_classes!==!1?n.classes=s:n.attributes={"class":s},n}}var r=this,s=tinymce.each;t.on("renderFormatsMenu",function(c){var o=t.settings,l={},a=o.importcss_selector_converter||i,m=e(o.importcss_selector_filter);t.settings.importcss_append||c.control.items().remove();var f=[];tinymce.each(o.importcss_groups,function(t){t=tinymce.extend({},t),t.filter=e(t.filter),f.push(t)}),s(n(t.getDoc(),e(o.importcss_file_filter)),function(e){if(-1===e.indexOf(".mce-")&&!l[e]&&(!m||m(e))){var n,i=a.call(r,e);if(i){var s=i.name||tinymce.DOM.uniqueId();if(f)for(var o=0;o'+n+"";var i=e.dom.getParent(e.selection.getStart(),"time");if(i)return void e.dom.setOuterHTML(i,n)}e.insertContent(n)}var n,r,i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),d="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),c="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),m="January February March April May June July August September October November December".split(" "),u=[];e.addCommand("mceInsertDate",function(){a(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){a(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){a(n||r)},menu:u}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(e){r||(r=e),u.push({text:t(e),onclick:function(){n=e,a(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:u,context:"insert"})});!function(e){e.on("AddEditor",function(e){e.editor.settings.inline_styles=!1}),e.PluginManager.add("legacyoutput",function(t){t.on("init",function(){var i="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",n=e.explode(t.settings.font_size_style_values),l=t.schema;t.formatter.register({alignleft:{selector:i,attributes:{align:"left"}},aligncenter:{selector:i,attributes:{align:"center"}},alignright:{selector:i,attributes:{align:"right"}},alignjustify:{selector:i,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return e.inArray(n,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){l.addValidElements(e+"[*]")}),l.getElementRule("font")||l.addValidElements("font[face|size|color|style]"),e.each(i.split(","),function(e){var t=l.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})})}(tinymce);tinymce.PluginManager.add("link",function(t){function e(e){return function(){var n=t.settings.link_list;"string"==typeof n?tinymce.util.XHR.send({url:n,success:function(t){e(tinymce.util.JSON.parse(t))}}):e(n)}}function n(e){function n(t){var e=d.find("#text");(!e.value()||t.lastControl&&e.value()==t.lastControl.text())&&e.value(t.control.text()),d.find("#href").value(t.control.value())}function l(){var n=[{text:"None",value:""}];return tinymce.each(e,function(e){n.push({text:e.text||e.title,value:t.convertURL(e.value||e.url,"href"),menu:e.menu})}),n}function i(e){return tinymce.each(e,function(e){e.textStyle=function(){return t.formatter.getCssText({inline:"a",classes:[e.value]})}}),e}function a(e,n,l){var i,a=[];return tinymce.each(t.settings[e]||l,function(t){var e={text:t.text||t.title,value:t.value};a.push(e),(b[n]===t.value||!i&&t.selected)&&(i=e)}),i&&!b[n]&&(b[n]=i.value,i.selected=!0),a}function r(e){var l=[];return tinymce.each(t.dom.select("a:not([href])"),function(t){var n=t.name||t.id;n&&l.push({text:n,value:"#"+n,selected:-1!=e.indexOf("#"+n)})}),l.length?(l.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:l,onselect:n}):void 0}function o(){h&&h.value(t.convertURL(this.value(),"href")),!f&&0===b.text.length&&x&&this.parent().parent().find("#text")[0].value(this.value())}function s(t){var e=k.getContent();if(/]+>[^<]+<\/a>$/.test(e)||-1==e.indexOf("href=")))return!1;if(t){var n,l=t.childNodes;if(0===l.length)return!1;for(n=l.length-1;n>=0;n--)if(3!=l[n].nodeType)return!1}return!0}var u,c,f,d,x,v,h,g,m,p,y,b={},k=t.selection,w=t.dom;u=k.getNode(),c=w.getParent(u,"a[href]"),x=s(),b.text=f=c?c.innerText||c.textContent:k.getContent({format:"text"}),b.href=c?w.getAttrib(c,"href"):"",b.target=c?w.getAttrib(c,"target"):t.settings.default_link_target||null,b.rel=c?w.getAttrib(c,"rel"):null,b["class"]=c?w.getAttrib(c,"class"):null,b.title=c?w.getAttrib(c,"title"):"",x&&(v={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){b.text=this.value()}}),e&&(h={type:"listbox",label:"Link list",values:l(),onselect:n,value:t.convertURL(b.href,"href"),onPostRender:function(){h=this}}),t.settings.target_list!==!1&&(m={name:"target",type:"listbox",label:"Target",values:a("target_list","target",[{text:"None",value:""},{text:"New window",value:"_blank"}])}),t.settings.rel_list&&(g={name:"rel",type:"listbox",label:"Rel",values:a("rel_list","rel",[{text:"None",value:""}])}),t.settings.link_class_list&&(p={name:"class",type:"listbox",label:"Class",values:i(a("link_class_list","class"))}),t.settings.link_title!==!1&&(y={name:"title",type:"textbox",label:"Title",value:b.title}),d=t.windowManager.open({title:"Insert link",data:b,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:o,onkeyup:o},v,y,r(b.href),h,g,m,p],onSubmit:function(e){function n(e,n){var l=t.selection.getRng();window.setTimeout(function(){t.windowManager.confirm(e,function(e){t.selection.setRng(l),n(e)})},0)}function l(){var e={href:i,target:b.target?b.target:null,rel:b.rel?b.rel:null,"class":b["class"]?b["class"]:null,title:b.title?b.title:null};c?(t.focus(),x&&b.text!=f&&("innerText"in c?c.innerText=b.text:c.textContent=b.text),w.setAttribs(c,e),k.select(c),t.undoManager.add()):x?t.insertContent(w.createHTML("a",e,w.encode(b.text))):t.execCommand("mceInsertLink",!1,e)}var i;return b=tinymce.extend(b,e.data),(i=b.href)?i.indexOf("@")>0&&-1==i.indexOf("//")&&-1==i.indexOf("mailto:")?void n("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(t){t&&(i="mailto:"+i),l()}):/^\s*www\./i.test(i)?void n("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){t&&(i="http://"+i),l()}):void l():void t.execCommand("unlink")}})}t.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Ctrl+K",onclick:e(n),stateSelector:"a[href]"}),t.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"}),t.addShortcut("Ctrl+K","",e(n)),this.showDialog=n,t.addMenuItem("link",{icon:"link",text:"Insert link",shortcut:"Ctrl+K",onclick:e(n),stateSelector:"a[href]",context:"insert",prependToContext:!0})});tinymce.PluginManager.add("lists",function(e){function t(e){return e&&/^(OL|UL)$/.test(e.nodeName)}function n(e){return e.parentNode.firstChild==e}function r(e){return e.parentNode.lastChild==e}function o(t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]}function i(e){return e&&"SPAN"===e.nodeName&&"bookmark"===e.getAttribute("data-mce-type")}var a=this;e.on("init",function(){function d(e){function t(t){var r,o,i;o=e[t?"startContainer":"endContainer"],i=e[t?"startOffset":"endOffset"],1==o.nodeType&&(r=b.create("span",{"data-mce-type":"bookmark"}),o.hasChildNodes()?(i=Math.min(i,o.childNodes.length-1),t?o.insertBefore(r,o.childNodes[i]):b.insertAfter(r,o.childNodes[i])):o.appendChild(r),o=r,i=0),n[t?"startContainer":"endContainer"]=o,n[t?"startOffset":"endOffset"]=i}var n={};return t(!0),e.collapsed||t(),n}function s(e){function t(t){function n(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t==e)return n;(1!=t.nodeType||"bookmark"!=t.getAttribute("data-mce-type"))&&n++,t=t.nextSibling}return-1}var r,o,i;r=i=e[t?"startContainer":"endContainer"],o=e[t?"startOffset":"endOffset"],r&&(1==r.nodeType&&(o=n(r),r=r.parentNode,b.remove(i)),e[t?"startContainer":"endContainer"]=r,e[t?"startOffset":"endOffset"]=o)}t(!0),t();var n=b.createRng();n.setStart(e.startContainer,e.startOffset),e.endContainer&&n.setEnd(e.endContainer,e.endOffset),L.setRng(n)}function f(t,n){var r,o,i,a=b.createFragment(),d=e.schema.getBlockElements();if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),n&&(o=b.create(n),o.tagName===e.settings.forced_root_block&&b.setAttribs(o,e.settings.forced_root_block_attrs),a.appendChild(o)),t)for(;r=t.firstChild;){var s=r.nodeName;i||"SPAN"==s&&"bookmark"==r.getAttribute("data-mce-type")||(i=!0),d[s]?(a.appendChild(r),o=null):n?(o||(o=b.create(n),a.appendChild(o)),o.appendChild(r)):a.appendChild(r)}return e.settings.forced_root_block?i||tinymce.Env.ie&&!(tinymce.Env.ie>10)||o.appendChild(b.create("br",{"data-mce-bogus":"1"})):a.appendChild(b.create("br")),a}function l(){return tinymce.grep(L.getSelectedBlocks(),function(e){return"LI"==e.nodeName})}function c(e,t,n){var r,o,i=b.select('span[data-mce-type="bookmark"]',e);n=n||f(t),r=b.createRng(),r.setStartAfter(t),r.setEndAfter(e),o=r.extractContents(),b.isEmpty(o)||b.insertAfter(o,e),b.insertAfter(n,e),b.isEmpty(t.parentNode)&&(tinymce.each(i,function(e){t.parentNode.parentNode.insertBefore(e,t.parentNode)}),b.remove(t.parentNode)),b.remove(t)}function p(e){var n,r;if(n=e.nextSibling,n&&t(n)&&n.nodeName==e.nodeName){for(;r=n.firstChild;)e.appendChild(r);b.remove(n)}if(n=e.previousSibling,n&&t(n)&&n.nodeName==e.nodeName){for(;r=n.firstChild;)e.insertBefore(r,e.firstChild);b.remove(n)}}function u(e){tinymce.each(tinymce.grep(b.select("ol,ul",e)),function(e){var n,r=e.parentNode;"LI"==r.nodeName&&r.firstChild==e&&(n=r.previousSibling,n&&"LI"==n.nodeName&&(n.appendChild(e),b.isEmpty(r)&&b.remove(r))),t(r)&&(n=r.previousSibling,n&&"LI"==n.nodeName&&n.appendChild(e))})}function m(e){function o(e){b.isEmpty(e)&&b.remove(e)}var i,a=e.parentNode,d=a.parentNode;return n(e)&&r(e)?("LI"==d.nodeName?(b.insertAfter(e,d),o(d),b.remove(a)):t(d)?b.remove(a,!0):(d.insertBefore(f(e),a),b.remove(a)),!0):n(e)?("LI"==d.nodeName?(b.insertAfter(e,d),e.appendChild(a),o(d)):t(d)?d.insertBefore(e,a):(d.insertBefore(f(e),a),b.remove(e)),!0):r(e)?("LI"==d.nodeName?b.insertAfter(e,d):t(d)?b.insertAfter(e,a):(b.insertAfter(f(e),a),b.remove(e)),!0):("LI"==d.nodeName?(a=d,i=f(e,"LI")):i=t(d)?f(e,"LI"):f(e),c(a,e,i),u(a.parentNode),!0)}function h(e){function n(n,r){var o;if(t(n)){for(;o=e.lastChild.firstChild;)r.appendChild(o);b.remove(n)}}var r,o;return r=e.previousSibling,r&&t(r)?(r.appendChild(e),!0):r&&"LI"==r.nodeName&&t(r.lastChild)?(r.lastChild.appendChild(e),n(e.lastChild,r.lastChild),!0):(r=e.nextSibling,r&&t(r)?(r.insertBefore(e,r.firstChild),!0):r&&"LI"==r.nodeName&&t(e.lastChild)?!1:(r=e.previousSibling,r&&"LI"==r.nodeName?(o=b.create(e.parentNode.nodeName),r.appendChild(o),o.appendChild(e),n(e.lastChild,o),!0):!1))}function v(){var t=l();if(t.length){for(var n=d(L.getRng(!0)),r=0;r0))return n;for(var o=new tinymce.dom.TreeWalker(e.startContainer);n=o[t?"next":"prev"]();)if(3==n.nodeType&&n.data.length>0)return n}function r(e,n){var r,o,i=e.parentNode;for(t(n.lastChild)&&(o=n.lastChild),r=n.lastChild,r&&"BR"==r.nodeName&&e.hasChildNodes()&&b.remove(r);r=e.firstChild;)n.appendChild(r);o&&n.appendChild(o),b.remove(e),b.isEmpty(i)&&b.remove(i)}if(L.isCollapsed()){var o=b.getParent(L.getStart(),"LI");if(o){var i=L.getRng(!0),a=b.getParent(n(i,e),"LI");if(a&&a!=o){var f=d(i);return e?r(a,o):r(o,a),s(f),!0}if(!a&&!e&&N(o.parentNode.nodeName))return!0}}},e.addCommand("Indent",function(){return v()?void 0:!0}),e.addCommand("Outdent",function(){return C()?void 0:!0}),e.addCommand("InsertUnorderedList",function(){y("UL")}),e.addCommand("InsertOrderedList",function(){y("OL")}),e.on("keydown",function(t){9==t.keyCode&&e.dom.getParent(e.selection.getStart(),"LI")&&(t.preventDefault(),t.shiftKey?C():v())})}),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var t=this;e.on("nodechange",function(){var r=e.dom.getParent(e.selection.getNode(),"LI,UL,OL");t.disabled(r&&("LI"!=r.nodeName||n(r)))})}}),e.on("keydown",function(e){e.keyCode==tinymce.util.VK.BACKSPACE?a.backspaceDelete()&&e.preventDefault():e.keyCode==tinymce.util.VK.DELETE&&a.backspaceDelete(!0)&&e.preventDefault()})});tinymce.PluginManager.add("media",function(e,t){function i(e){return-1!=e.indexOf(".mp3")?"audio/mpeg":-1!=e.indexOf(".wav")?"audio/wav":-1!=e.indexOf(".mp4")?"video/mp4":-1!=e.indexOf(".webm")?"video/webm":-1!=e.indexOf(".ogg")?"video/ogg":-1!=e.indexOf(".swf")?"application/x-shockwave-flash":""}function r(t){var i=e.settings.media_scripts;if(i)for(var r=0;r':"application/x-shockwave-flash"==o.source1mime?(a+='',o.poster&&(a+=''),a+=""):-1!=o.source1mime.indexOf("audio")?e.settings.audio_template_callback?a=e.settings.audio_template_callback(o):a+='":"script"==o.type?a+='':a=e.settings.video_template_callback?e.settings.video_template_callback(o):'"}return a}function s(e){var t={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(e,i){if(t.source1||"param"!=e||(t.source1=i.map.movie),("iframe"==e||"object"==e||"embed"==e||"video"==e||"audio"==e)&&(t.type||(t.type=e),t=tinymce.extend(i.map,t)),"script"==e){var o=r(i.map.src);if(!o)return;t={type:"script",source1:i.map.src,width:o.width,height:o.height}}"source"==e&&(t.source1?t.source2||(t.source2=i.map.src):t.source1=i.map.src),"img"!=e||t.poster||(t.poster=i.map.src)}}).parse(e),t.source1=t.source1||t.src||t.data,t.source2=t.source2||"",t.poster=t.poster||"",t}function n(t){return t.getAttribute("data-mce-object")?s(e.serializer.serialize(t,{selection:!0})):{}}function m(e,t,i){function r(e,t){var i,r,o,a;for(i in t)if(o=""+t[i],e.map[i])for(r=e.length;r--;)a=e[r],a.name==i&&(o?(e.map[i]=o,a.value=o):(delete e.map[i],e.splice(r,1)));else o&&(e.push({name:i,value:o}),e.map[i]=o)}var o,a=new tinymce.html.Writer,c=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(e,s,n){switch(e){case"video":case"object":case"embed":case"img":case"iframe":r(s,{width:t.width,height:t.height})}if(i)switch(e){case"video":r(s,{poster:t.poster,src:""}),t.source2&&r(s,{src:""});break;case"iframe":r(s,{src:t.source1});break;case"source":if(c++,2>=c&&(r(s,{src:t["source"+c],type:t["source"+c+"mime"]}),!t["source"+c]))return;break;case"img":if(!t.poster)return;o=!0}a.start(e,s,n)},end:function(e){if("video"==e&&i)for(var s=1;2>=s;s++)if(t["source"+s]){var n=[];n.map={},s>c&&(r(n,{src:t["source"+s],type:t["source"+s+"mime"]}),a.start("source",n,!0))}if(t.poster&&"object"==e&&i&&!o){var m=[];m.map={},r(m,{src:t.poster,width:t.width,height:t.height}),a.start("img",m,!0)}a.end(e)}},new tinymce.html.Schema({})).parse(e),a.getContent()}var d=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"'}];e.on("ResolveName",function(e){var t;1==e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),e.on("preInit",function(){var t=e.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("]*>","gi")}),e.schema.addValidElements("object[id|style|width|height|classid|codebase|*],embed[id|style|width|height|type|src|*],video[*],audio[*]");var i=e.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){i[e]={}}),e.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(t,i){for(var o,a,c,s,n,m,d,u,l=t.length;l--;)if(a=t[l],"script"!=a.name||(u=r(a.attr("src")))){for(c=new tinymce.html.Node("img",1),c.shortEnded=!0,u&&(u.width&&a.attr("width",u.width.toString()),u.height&&a.attr("height",u.height.toString())),m=a.attributes,o=m.length;o--;)s=m[o].name,n=m[o].value,"width"!==s&&"height"!==s&&"style"!==s&&(("data"==s||"src"==s)&&(n=e.convertURL(n,s)),c.attr("data-mce-p-"+s,n));d=a.firstChild&&a.firstChild.value,d&&(c.attr("data-mce-html",escape(d)),c.firstChild=null),c.attr({width:a.attr("width")||"300",height:a.attr("height")||("audio"==i?"30":"150"),style:a.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":i,"class":"mce-object mce-object-"+i}),a.replace(c)}}),e.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var i,r,o,a,c,s,n,m=e.length;m--;){for(i=e[m],n=i.attr(t),r=new tinymce.html.Node(n,1),"audio"!=n&&"script"!=n&&r.attr({width:i.attr("width"),height:i.attr("height")}),r.attr({style:i.attr("style")}),a=i.attributes,o=a.length;o--;){var d=a[o].name;0===d.indexOf("data-mce-p-")&&r.attr(d.substr(11),a[o].value)}"script"==n&&r.attr("type","text/javascript"),c=i.attr("data-mce-html"),c&&(s=new tinymce.html.Node("#text",3),s.raw=!0,s.value=unescape(c),r.append(s)),i.replace(r)}})}),e.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");("audio"==t||"script"==t)&&e.preventDefault()}),e.on("objectResized",function(e){var t,i=e.target;i.getAttribute("data-mce-object")&&(t=i.getAttribute("data-mce-html"),t&&(t=unescape(t),i.setAttribute("data-mce-html",escape(m(t,{width:e.width,height:e.height})))))}),e.addButton("media",{tooltip:"Insert/edit video",onclick:o,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),e.addMenuItem("media",{icon:"media",text:"Insert video",onclick:o,context:"insert",prependToContext:!0})});tinymce.PluginManager.add("nonbreaking",function(n){var e=n.getParam("nonbreaking_force_tab");if(n.addCommand("mceNonBreaking",function(){n.insertContent(n.plugins.visualchars&&n.plugins.visualchars.state?' ':" "),n.dom.setAttrib(n.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),n.addButton("nonbreaking",{title:"Insert nonbreaking space",cmd:"mceNonBreaking"}),n.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),e){var a=+e>1?+e:3;n.on("keydown",function(e){if(9==e.keyCode){if(e.shiftKey)return;e.preventDefault();for(var t=0;a>t;t++)n.execCommand("mceNonBreaking")}})}});tinymce.PluginManager.add("noneditable",function(e){function t(e){var t;if(1===e.nodeType){if(t=e.getAttribute(u),t&&"inherit"!==t)return t;if(t=e.contentEditable,"inherit"!==t)return t}return null}function n(e){for(var n;e;){if(n=t(e))return"false"===n?e:null;e=e.parentNode}}function r(){function r(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function a(e){var t;if(e)for(t=new f(e,e),e=t.current();e;e=t.next())if(3===e.nodeType)return e}function i(n,r){var a,i;return"false"===t(n)&&u.isBlock(n)?void s.select(n):(i=u.createRng(),"true"===t(n)&&(n.firstChild||n.appendChild(e.getDoc().createTextNode(" ")),n=n.firstChild,r=!0),a=u.create("span",{id:g,"data-mce-bogus":!0},m),r?n.parentNode.insertBefore(a,n):u.insertAfter(a,n),i.setStart(a.firstChild,1),i.collapse(!0),s.setRng(i),a)}function o(e){var t,n,i,o;if(e)t=s.getRng(!0),t.setStartBefore(e),t.setEndBefore(e),n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0),s.setRng(t);else for(i=r(s.getStart());(e=u.get(g))&&e!==o;)i!==e&&(n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0)),o=e}function l(){function e(e,n){var r,a,i,o,l;if(r=d.startContainer,a=d.startOffset,3==r.nodeType){if(l=r.nodeValue.length,a>0&&l>a||(n?a==l:0===a))return}else{if(!(a0?a-1:a;r=r.childNodes[u],r.hasChildNodes()&&(r=r.firstChild)}for(i=new f(r,e);o=i[n?"prev":"next"]();){if(3===o.nodeType&&o.nodeValue.length>0)return;if("true"===t(o))return o}return e}var r,a,l,d,u;o(),l=s.isCollapsed(),r=n(s.getStart()),a=n(s.getEnd()),(r||a)&&(d=s.getRng(!0),l?(r=r||a,(u=e(r,!0))?i(u,!0):(u=e(r,!1))?i(u,!1):s.select(r)):(d=s.getRng(!0),r&&d.setStartBefore(r),a&&d.setEndAfter(a),s.setRng(d)))}function d(a){function i(e,t){for(;e=e[t?"previousSibling":"nextSibling"];)if(3!==e.nodeType||e.nodeValue.length>0)return e}function d(e,t){s.select(e),s.collapse(t)}function g(a){function i(e){for(var t=d;t;){if(t===e)return;t=t.parentNode}u.remove(e),l()}function o(){var r,o,l=e.schema.getNonEmptyElements();for(o=new tinymce.dom.TreeWalker(d,e.getBody());(r=a?o.prev():o.next())&&!l[r.nodeName.toLowerCase()]&&!(3===r.nodeType&&tinymce.trim(r.nodeValue).length>0);)if("false"===t(r))return i(r),!0;return n(r)?!0:!1}var f,d,c,g;if(s.isCollapsed()){if(f=s.getRng(!0),d=f.startContainer,c=f.startOffset,d=r(d)||d,g=n(d))return i(g),!1;if(3==d.nodeType&&(a?c>0:ch||h>124)&&h!=c.DELETE&&h!=c.BACKSPACE){if((tinymce.isMac?a.metaKey:a.ctrlKey)&&(67==h||88==h||86==h))return;if(a.preventDefault(),h==c.LEFT||h==c.RIGHT){var y=h==c.LEFT;if(e.dom.isBlock(m)){var T=y?m.previousSibling:m.nextSibling,C=new f(T,T),b=y?C.prev():C.next();d(b,!y)}else d(m,y)}}else if(h==c.LEFT||h==c.RIGHT||h==c.BACKSPACE||h==c.DELETE){if(p=r(v)){if(h==c.LEFT||h==c.BACKSPACE)if(m=i(p,!0),m&&"false"===t(m)){if(a.preventDefault(),h!=c.LEFT)return void u.remove(m);d(m,!0)}else o(p);if(h==c.RIGHT||h==c.DELETE)if(m=i(p),m&&"false"===t(m)){if(a.preventDefault(),h!=c.RIGHT)return void u.remove(m);d(m,!1)}else o(p)}if((h==c.BACKSPACE||h==c.DELETE)&&!g(h==c.BACKSPACE))return a.preventDefault(),!1}}var u=e.dom,s=e.selection,g="mce_noneditablecaret",m="";e.on("mousedown",function(n){var r=e.selection.getNode();"false"===t(r)&&r==n.target&&l()}),e.on("mouseup keyup",l),e.on("keydown",d)}function a(t){var n=l.length,r=t.content,a=tinymce.trim(o);if("raw"!=t.format){for(;n--;)r=r.replace(l[n],function(t){var n=arguments,i=n[n.length-2];return i>0&&'"'==r.charAt(i-1)?t:''+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+""});t.content=r}}var i,o,l,f=tinymce.dom.TreeWalker,d="contenteditable",u="data-mce-"+d,c=tinymce.util.VK;i=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",o=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ",l=e.getParam("noneditable_regexp"),l&&!l.length&&(l=[l]),e.on("PreInit",function(){r(),l&&e.on("BeforeSetContent",a),e.parser.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=e[r],t=" "+n.attr("class")+" ",-1!==t.indexOf(i)?n.attr(u,"true"):-1!==t.indexOf(o)&&n.attr(u,"false")}),e.serializer.addAttributeFilter(u,function(e){for(var t,n=e.length;n--;)t=e[n],l&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):(t.attr(d,null),t.attr(u,null))}),e.parser.addAttributeFilter(d,function(e){for(var t,n=e.length;n--;)t=e[n],t.attr(u,t.attr(d)),t.attr(d,null)})}),e.on("drop",function(e){n(e.target)&&e.preventDefault()})});tinymce.PluginManager.add("pagebreak",function(e){var a="mce-pagebreak",t=e.getParam("pagebreak_separator",""),n=new RegExp(t.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),r='';e.addCommand("mcePageBreak",function(){e.insertContent(e.settings.pagebreak_split_block?"

"+r+"

":r)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(t){"IMG"==t.target.nodeName&&e.dom.hasClass(t.target,a)&&(t.name="pagebreak")}),e.on("click",function(t){t=t.target,"IMG"===t.nodeName&&e.dom.hasClass(t,a)&&e.selection.select(t)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(n,r)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(a){for(var n,r,c=a.length;c--;)if(n=a[c],r=n.attr("class"),r&&-1!==r.indexOf("mce-pagebreak")){var o=n.parent;if(e.schema.getBlockElements()[o.name]&&e.settings.pagebreak_split_block){o.type=3,o.value=t,o.raw=!0,n.remove();continue}n.type=3,n.value=t,n.raw=!0}})})});!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i"),t&&/^(PRE|DIV)$/.test(t.nodeName)||!o?e=n.filter(e,[[/\n/g,"
"]]):(e=n.filter(e,[[/\n\n/g,"

"+a],[/^(.*<\/p>)(

)$/,a+"$1"],[/\n/g,"
"]]),-1!=e.indexOf("

")&&(e=a+e)),i(e)}function a(){var t=r.dom,n=r.getBody(),i=r.dom.getViewPort(r.getWin()),o=i.y,a=20,s;if(v=r.selection.getRng(),r.inline&&(s=r.selection.getScrollContainer(),s&&(o=s.scrollTop)),v.getClientRects){var l=v.getClientRects();if(l.length)a=o+(l[0].top-t.getPos(n).y);else{a=o;var c=v.startContainer;c&&(3==c.nodeType&&c.parentNode!=n&&(c=c.parentNode),1==c.nodeType&&(a=t.getPos(c,s||n).y))}}g=t.add(r.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"1",style:"position: absolute; top: "+a+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},b),(e.ie||e.gecko)&&t.setStyle(g,"left","rtl"==t.getStyle(n,"direction",!0)?65535:-65535),t.bind(g,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),g.focus(),r.selection.select(g,!0)}function s(){if(g){for(var e;e=r.dom.get("mcepastebin");)r.dom.remove(e),r.dom.unbind(e);v&&r.selection.setRng(v)}C=!1,g=v=null}function l(){var e=b,t,n;for(t=r.dom.select("div[id=mcepastebin]"),n=t.length;n--;){var i=t[n].innerHTML;e==b&&(e=""),i.length>e.length&&(e=i)}return e}function c(e){var t={};if(e&&e.types){var n=e.getData("Text");n&&n.length>0&&(t["text/plain"]=n);for(var r=0;r')},t.readAsDataURL(e.getAsFile()),!0}}if(!(!r.settings.paste_data_images||"text/html"in t||"text/plain"in t)&&e.clipboardData){var o=e.clipboardData.items;if(o)for(var a=0;a0}function m(){r.on("keydown",function(n){if(!n.isDefaultPrevented()&&(t.metaKeyPressed(n)&&86==n.keyCode||n.shiftKey&&45==n.keyCode)){if(C=n.shiftKey&&86==n.keyCode,n.stopImmediatePropagation(),y=(new Date).getTime(),e.ie&&C)return n.preventDefault(),void r.fire("paste",{ieFake:!0});s(),a()}}),r.on("paste",function(t){var c=d(t),f=(new Date).getTime()-y<1e3,m="text"==h.pasteFormat||C;return t.isDefaultPrevented()?void s():u(t,c)?void s():(f||t.preventDefault(),!e.ie||f&&!t.ieFake||(a(),r.dom.bind(g,"paste",function(e){e.stopPropagation()}),r.getDoc().execCommand("Paste",!1,null),c["text/html"]=l()),void setTimeout(function(){var e=l();return g&&g.firstChild&&"mcepastebin"===g.firstChild.id&&(m=!0),s(),!m&&f&&e&&e!=b&&(c["text/html"]=e),e!=b&&f||(e=c["text/html"]||c["text/plain"]||b,e!=b)?(!p(c,"text/html")&&p(c,"text/plain")&&(m=!0),void(m?o(c["text/plain"]||n.innerText(e)):i(e))):void(f||r.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."))},0))}),r.on("dragstart",function(e){if(e.dataTransfer.types)try{e.dataTransfer.setData("mce-internal",r.selection.getContent())}catch(t){}}),r.on("drop",function(e){var t=f(e);if(t&&!e.isDefaultPrevented()){var n=c(e.dataTransfer),a=n["mce-internal"]||n["text/html"]||n["text/plain"];a&&(e.preventDefault(),r.undoManager.transact(function(){n["mce-internal"]&&r.execCommand("Delete"),r.selection.setRng(t),n["text/html"]?i(a):o(a)}))}})}var h=this,g,v,y=0,b="%MCEPASTEBIN%",C;h.pasteHtml=i,h.pasteText=o,r.on("preInit",function(){m(),r.parser.addNodeFilter("img",function(t){if(!r.settings.paste_data_images)for(var n=t.length;n--;){var i=t[n].attributes.map.src;i&&0===i.indexOf("data:image")&&(t[n].attr("data-mce-object")||i===e.transparentSrc||t[n].remove())}})}),r.on("PreProcess",function(){r.dom.remove(r.dom.get("mcepastebin"))})}}),r(h,[c,d,u,g,v,l],function(e,t,n,r,i,o){function a(e){return/l?n&&(n=n.parent.parent):(r=n,n=null)),n&&n.name==a?n.append(e):(r=r||n,n=new i(a,1),s>1&&n.attr("start",""+s),e.wrap(n)),e.name="li",t.value="";var c=t.next;c&&3==c.type&&(c.value=c.value.replace(/^\u00a0+/,"")),l>o&&r&&r.lastChild.append(n),o=l}for(var n,r,o=1,a=e.getAll("p"),s=0;s/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/([\s\u00a0]*)<\/span>/gi,function(e,t){return t.length>0?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var h=l.paste_word_valid_elements;h||(h="@[style],-strong/b,-em/i,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-table[width],-tr,-td[colspan|rowspan|width],-th,-thead,-tfoot,-tbody,-a[href|name],sub,sup,strike,br");var g=new n({valid_elements:h}),v=new t({},g);v.addAttributeFilter("style",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("style",u(n,n.attr("style"))),"span"!=n.name||n.attributes.length||n.unwrap()}),v.addNodeFilter("a",function(e){for(var t=e.length,n,r,i;t--;)n=e[t],r=n.attr("href"),i=n.attr("name"),r&&0===r.indexOf("file://")&&(r=r.split("#")[1],r&&(r="#"+r)),r||i?n.attr({href:r,name:i}):n.unwrap()});var y=v.parse(f);d(y),c.content=new r({},g).serialize(y)}})}return s.isWordContent=a,s}),r(y,[p,c,h,l],function(e,t,n,r){return function(i){function o(e){i.on("BeforePastePreProcess",function(t){t.content=e(t.content)})}function a(e){return e=r.filter(e,[/^[\s\S]*|[\s\S]*$/g,[/\u00a0<\/span>/g,"\xa0"],/
$/i])}function s(e){if(!n.isWordContent(e))return e;var o=[];t.each(i.schema.getBlockElements(),function(e,t){o.push(t)});var a=new RegExp("(?:
 [\\s\\r\\n]+|
)*(<\\/?("+o.join("|")+")[^>]*>)(?:
 [\\s\\r\\n]+|
)*","g");return e=r.filter(e,[[a,"$1"]]),e=r.filter(e,[[/

/g,"

"],[/
/g," "],[/

/g,"
"]])}function l(e){if(n.isWordContent(e))return e;var t=i.getParam("paste_webkit_styles","color font-size font-family background-color").split(/[, ]/);if(i.settings.paste_remove_styles_if_webkit===!1&&(t="all"),"all"!=t){var r=i.dom,o=i.selection.getNode();e=e.replace(/ style=\"([^\"]+)\"/gi,function(e,n){var i=r.parseStyle(n,"span"),a={};if("none"===t)return"";for(var s=0;s0&&e.preventDefault()}),e.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:o,active:"text"==a.clipboard.pasteFormat}),e.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:s.pasteFormat,onclick:o})})}),a([l,f,h,y,b])}(this);tinymce.PluginManager.add("preview",function(e){var t=e.settings;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'',buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var i,n=this.getEl("body").firstChild.contentWindow.document,a="";e.settings.document_base_url!=e.documentBaseUrl&&(a+=''),tinymce.each(e.contentCSS,function(t){a+=''});var r=t.body_id||"tinymce";-1!=r.indexOf("=")&&(r=e.getParam("body_id","","hash"),r=r[e.id]||r);var d=t.body_class||"";-1!=d.indexOf("=")&&(d=e.getParam("body_class","","hash"),d=d[e.id]||"");var o=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";i=""+a+'"+e.getContent()+"",n.open(),n.write(i),n.close()}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})});tinymce.PluginManager.add("print",function(t){t.addCommand("mcePrint",function(){t.getWin().print()}),t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addShortcut("Ctrl+P","","mcePrint"),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Ctrl+P",context:"file"})});tinymce.PluginManager.add("save",function(e){function a(){var a;return a=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty()?(tinymce.triggerSave(),e.getParam("save_onsavecallback")?void(e.execCallback("save_onsavecallback",e)&&(e.startContent=tinymce.trim(e.getContent({format:"raw"})),e.nodeChanged())):void(a?(e.isNotDirty=!0,(!a.onsubmit||a.onsubmit())&&("function"==typeof a.submit?a.submit():e.windowManager.alert("Error: Form submit field collision.")),e.nodeChanged()):e.windowManager.alert("Error: No form element found."))):void 0}function n(){var a=tinymce.trim(e.startContent);return e.getParam("save_oncancelcallback")?void e.execCallback("save_oncancelcallback",e):(e.setContent(a),e.undoManager.clear(),void e.nodeChanged())}function t(){var a=this;e.on("nodeChange",function(){a.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",a),e.addCommand("mceCancel",n),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:t}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:t}),e.addShortcut("ctrl+s","","mceSave")});!function(){function e(e,t,n,a,r){function i(e,t){if(t=t||0,!e[0])throw"findAndReplaceDOMText cannot handle zero-length matches";var n=e.index;if(t>0){var a=e[t];if(!a)throw"Invalid capture group";n+=e[0].indexOf(a),e[0]=a}return[n,n+e[0].length,[e[0]]]}function d(e){var t;if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!u[e.nodeName])return"";if(t="",(u[e.nodeName]||m[e.nodeName])&&(t+="\n"),e=e.firstChild)do t+=d(e);while(e=e.nextSibling);return t}function o(e,t,n){var a,r,i,d,o=[],l=0,c=e,s=t.shift(),f=0;e:for(;;){if((u[c.nodeName]||m[c.nodeName])&&l++,3===c.nodeType&&(!r&&c.length+l>=s[1]?(r=c,d=s[1]-l):a&&o.push(c),!a&&c.length+l>s[0]&&(a=c,i=s[0]-l),l+=c.length),a&&r){if(c=n({startNode:a,startNodeIndex:i,endNode:r,endNodeIndex:d,innerNodes:o,match:s[2],matchIndex:f}),l-=r.length-d,a=null,r=null,o=[],s=t.shift(),f++,!s)break}else{if((!h[c.nodeName]||u[c.nodeName])&&c.firstChild){c=c.firstChild;continue}if(c.nextSibling){c=c.nextSibling;continue}}for(;;){if(c.nextSibling){c=c.nextSibling;break}if(c.parentNode===e)break e;c=c.parentNode}}}function l(e){var t;if("function"!=typeof e){var n=e.nodeType?e:f.createElement(e);t=function(e,t){var a=n.cloneNode(!1);return a.setAttribute("data-mce-index",t),e&&a.appendChild(f.createTextNode(e)),a}}else t=e;return function(e){var n,a,r,i=e.startNode,d=e.endNode,o=e.matchIndex;if(i===d){var l=i;r=l.parentNode,e.startNodeIndex>0&&(n=f.createTextNode(l.data.substring(0,e.startNodeIndex)),r.insertBefore(n,l));var c=t(e.match[0],o);return r.insertBefore(c,l),e.endNodeIndexh;++h){var g=e.innerNodes[h],p=t(g.data,o);g.parentNode.replaceChild(p,g),u.push(p)}var x=t(d.data.substring(0,e.endNodeIndex),o);return r=i.parentNode,r.insertBefore(n,i),r.insertBefore(s,i),r.removeChild(i),r=d.parentNode,r.insertBefore(x,d),r.insertBefore(a,d),r.removeChild(d),x}}var c,s,f,u,h,m,g=[],p=0;if(f=t.ownerDocument,u=r.getBlockElements(),h=r.getWhiteSpaceElements(),m=r.getShortEndedElements(),s=d(t)){if(e.global)for(;c=e.exec(s);)g.push(i(c,a));else c=s.match(e),g.push(i(c,a));return g.length&&(p=g.length,o(t,g,l(n))),p}}function t(t){function n(){function e(){r.statusbar.find("#next").disabled(!d(s+1).length),r.statusbar.find("#prev").disabled(!d(s-1).length)}function n(){tinymce.ui.MessageBox.alert("Could not find the specified string.",function(){r.find("#find")[0].focus()})}var a={},r=tinymce.ui.Factory.create({type:"window",layout:"flex",pack:"center",align:"center",onClose:function(){t.focus(),c.done()},onSubmit:function(t){var i,o,l,f;return t.preventDefault(),o=r.find("#case").checked(),f=r.find("#words").checked(),l=r.find("#find").value(),l.length?a.text==l&&a.caseState==o&&a.wholeWord==f?0===d(s+1).length?void n():(c.next(),void e()):(i=c.find(l,o,f),i||n(),r.statusbar.items().slice(1).disabled(0===i),e(),void(a={text:l,caseState:o,wholeWord:f})):(c.done(!1),void r.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",onclick:function(){r.submit()}},{text:"Replace",disabled:!0,onclick:function(){c.replace(r.find("#replace").value())||(r.statusbar.items().slice(1).disabled(!0),s=-1,a={})}},{text:"Replace all",disabled:!0,onclick:function(){c.replace(r.find("#replace").value(),!0,!0),r.statusbar.items().slice(1).disabled(!0),a={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){c.prev(),e()}},{text:"Next",name:"next",disabled:!0,onclick:function(){c.next(),e()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:t.selection.getNode().src},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}}).renderTo().reflow()}function a(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function r(n){var a,r;return r=t.dom.create("span",{"data-mce-bogus":1}),r.className="mce-match-marker",a=t.getBody(),c.done(!1),e(n,a,r,!1,t.schema)}function i(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function d(e){var n,r=[];if(n=tinymce.toArray(t.getBody().getElementsByTagName("span")),n.length)for(var i=0;is&&f[o].setAttribute("data-mce-index",m-1)}return t.undoManager.add(),s=p,n?(g=d(p+1).length>0,c.next()):(g=d(p-1).length>0,c.prev()),!r&&g},c.done=function(e){var n,r,d,o;for(r=tinymce.toArray(t.getBody().getElementsByTagName("span")),n=0;n=d.end?(r=c,a=d.end-s):o&&l.push(c),!o&&c.length+s>d.start&&(o=c,i=d.start-s),s+=c.length),o&&r){if(c=n({startNode:o,startNodeIndex:i,endNode:r,endNodeIndex:a,innerNodes:l,match:d.text,matchIndex:u}),s-=r.length-a,o=null,r=null,l=[],d=t.shift(),u++,!d)break}else{if((!S[c.nodeName]||N[c.nodeName])&&c.firstChild){c=c.firstChild;continue}if(c.nextSibling){c=c.nextSibling;continue}}for(;;){if(c.nextSibling){c=c.nextSibling;break}if(c.parentNode===e)break e;c=c.parentNode}}}function i(e){function t(t,n){var o=w[n];o.stencil||(o.stencil=e(o));var r=o.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",n),t&&r.appendChild(P.doc.createTextNode(t)),r}return function(e){var n,o,r,i=e.startNode,a=e.endNode,l=e.matchIndex,s=P.doc;if(i===a){var c=i;r=c.parentNode,e.startNodeIndex>0&&(n=s.createTextNode(c.data.substring(0,e.startNodeIndex)),r.insertBefore(n,c));var d=t(e.match,l);return r.insertBefore(d,c),e.endNodeIndexm;++m){var g=e.innerNodes[m],h=t(g.data,l);g.parentNode.replaceChild(h,g),f.push(h)}var v=t(a.data.substring(0,e.endNodeIndex),l);return r=i.parentNode,r.insertBefore(n,i),r.insertBefore(u,i),r.removeChild(i),r=a.parentNode,r.insertBefore(v,a),r.insertBefore(o,a),r.removeChild(a),v}}function a(e){var t=e.parentNode;t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function l(t){var n=e.getElementsByTagName("*"),o=[];t="number"==typeof t?""+t:null;for(var r=0;rt&&e(w[t],t)!==!1;t++);return this}function u(t){return w.length&&r(e,w,i(t)),this}function f(e,t){if(C&&e.global)for(;x=e.exec(C);)w.push(n(x,t));return this}function m(e){var t,n=l(e?s(e):null);for(t=n.length;t--;)a(n[t]);return this}function p(e){return w[e.getAttribute("data-mce-index")]}function g(e){return l(s(e))[0]}function h(e,t,n){return w.push({start:e,end:e+t,text:C.substr(e,t),data:n}),this}function v(e){var n=l(s(e)),o=t.dom.createRng();return o.setStartBefore(n[0]),o.setEndAfter(n[n.length-1]),o}function b(e,n){var o=v(e);return o.deleteContents(),n.length>0&&o.insertNode(t.dom.doc.createTextNode(n)),o}function y(){return w.splice(0,w.length),m(),this}var x,w=[],C,P=t.dom,N,S,k;return N=t.schema.getBlockElements(),S=t.schema.getWhiteSpaceElements(),k=t.schema.getShortEndedElements(),C=o(e),{text:C,matches:w,each:d,filter:c,reset:y,matchFromElement:p,elementFromMatch:g,find:f,add:h,wrap:u,unwrap:m,replace:b,rangeFromMatch:v,indexOf:s}}}),o(c,[s,d,u,f,m,p,g],function(e,t,n,o,r,i,a){t.add("spellchecker",function(t,l){function s(){return b.textMatcher||(b.textMatcher=new e(t.getBody(),t)),b.textMatcher}function c(e,t){var o=[];return n.each(t,function(e){o.push({selectable:!0,text:e.name,data:e.value})}),o}function d(e){for(var t in e)return!1;return!0}function u(e){var i=[],a=y[e.text];n.each(a,function(n){i.push({text:n,onclick:function(){var o=s().replace(e,n);o.collapse(!1),t.selection.setRng(o),m()}})}),i.push.apply(i,[{text:"-"},{text:"Ignore",onclick:function(){p(e)}},{text:"Ignore all",onclick:function(){p(e,!0)}},{text:"Finish",onclick:g}]),w=new o({items:i,context:"contextmenu",onautohide:function(e){-1!=e.target.className.indexOf("spellchecker")&&e.preventDefault()},onhide:function(){w.remove(),w=null}}),w.renderTo(document.body);var l=s().elementFromMatch(e),c=r.DOM.getPos(t.getContentAreaContainer()),d=t.dom.getPos(l),u=t.dom.getRoot();"BODY"==u.nodeName?(d.x-=u.ownerDocument.documentElement.scrollLeft||u.scrollLeft,d.y-=u.ownerDocument.documentElement.scrollTop||u.scrollTop):(d.x-=u.scrollLeft,d.y-=u.scrollTop),c.x+=d.x,c.y+=d.y,w.moveTo(c.x,c.y+l.offsetHeight)}function f(){function e(e){return t.setProgressState(!1),d(e)?(t.windowManager.alert("No misspellings found"),void(x=!1)):(y=e,s().filter(function(t){return!!e[t.text]}).wrap(function(){return t.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1})}),void t.fire("SpellcheckStart"))}function n(e,n,o){i.sendRPC({url:new a(l).toAbsolute(C.spellchecker_rpc_url),method:e,params:{lang:C.spellchecker_language||"en",words:n},success:function(e){o(e)},error:function(e,n){e="JSON Parse error."==e?"Non JSON response:"+n.responseText:"Error: "+e,t.windowManager.alert(e),t.setProgressState(!1),g()}})}var o=[],r={};if(x)return void g();g(),x=!0;var c=t.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e]+',"g");s().find(c).each(function(e){var t=e.text;if(!r[t]){if(/^\d+$/.test(t)||1==t.length)return;o.push(t),r[t]=!0}}),t.setProgressState(!0);var u=C.spellchecker_callback||n;u("spellcheck",o,e),t.focus()}function m(){t.dom.select("span.mce-spellchecker-word").length||g()}function p(e,n){t.selection.collapse(),n?s().each(function(t){t.text==e.text&&s().unwrap(t)}):s().unwrap(e),m()}function g(){s().reset(),b.textMatcher=null,x&&(x=!1,t.fire("SpellcheckEnd"))}function h(e){var t=C.spellchecker_language;e.control.items().each(function(e){e.active(e.settings.data===t)})}var v,b=this,y,x,w,C=t.settings,P=C.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";v=c("Language",n.map(P.split(","),function(e){var t=e.split("=");return{name:t[0],value:t[1]}})),t.on("click",function(e){if("mce-spellchecker-word"==e.target.className){e.preventDefault();var n=s().matchFromElement(e.target);t.selection.setRng(s().rangeFromMatch(n)),u(n)}}),t.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:f,selectable:!0,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(x)})}});var N={tooltip:"Spellcheck",onclick:f,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(x)})}};v.length>1&&(N.type="splitbutton",N.menu=v,N.onshow=h,N.onselect=function(e){C.spellchecker_language=e.control.settings.data}),t.addButton("spellchecker",N),t.addCommand("mceSpellCheck",f),t.on("remove",function(){w&&(w.remove(),w=null)}),this.getTextMatcher=s,C.spellchecker_language=C.spellchecker_language||C.language||"en"})}),a([s,c])}(this);tinymce.PluginManager.add("tabfocus",function(e){function n(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function t(n){function t(n){function t(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&t(e.parentNode)}function r(e){return e.tabIndex||"INPUT"==e.nodeName||"TEXTAREA"==e.nodeName}function c(e){return!r(e)&&"-1"!=e.getAttribute("tabindex")&&t(e)}if(u=i.select(":input:enabled,*[tabindex]:not(iframe)"),o(u,function(n,t){return n.id==e.id?(a=t,!1):void 0}),n>0){for(d=a+1;d=0;d--)if(c(u[d]))return u[d];return null}var a,u,c,d;if(!(9!==n.keyCode||n.ctrlKey||n.altKey||n.metaKey)&&(c=r(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==c.length&&(c[1]=c[0],c[0]=":prev"),u=n.shiftKey?":prev"==c[0]?t(-1):i.get(c[0]):":next"==c[1]?t(1):i.get(c[1]))){var y=tinymce.get(u.id||u.name);u.id&&y?y.focus():window.setTimeout(function(){tinymce.Env.webkit||window.focus(),u.focus()},10),n.preventDefault()}}var i=tinymce.DOM,o=tinymce.each,r=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null)}),e.on("keyup",n),tinymce.Env.gecko?e.on("keypress keydown",t):e.on("keydown",t)});!function(e,t){"use strict";function n(e,t){for(var n,o=[],i=0;i "+t+" tr",a);i(n,function(n,r){r+=e,i(I.select("> td, > th",n),function(e,n){var i,a,l,s;if(A[r])for(;A[r][n];)n++;for(l=o(e,"rowspan"),s=o(e,"colspan"),a=r;r+l>a;a++)for(A[a]||(A[a]=[]),i=n;n+s>i;i++)A[a][i]={part:t,real:a==r&&i==n,elm:e,rowspan:l,colspan:s}})}),e+=n.length})}function s(e,t){return e=e.cloneNode(t),e.removeAttribute("id"),e}function c(e,t){var n;return n=A[t],n?n[e]:void 0}function d(e,t,n){e&&(n=parseInt(n,10),1===n?e.removeAttribute(t,1):e.setAttribute(t,n,1))}function u(e){return e&&(I.hasClass(e.elm,"mce-item-selected")||e==M)}function f(){var e=[];return i(a.rows,function(t){i(t.cells,function(n){return I.hasClass(n,"mce-item-selected")||M&&n==M.elm?(e.push(t),!1):void 0})}),e}function m(){var e=I.createRng();e.setStartAfter(a),e.setEndAfter(a),E.setRng(e),I.remove(a)}function p(t){var o,a={};return r.settings.table_clone_elements!==!1&&(a=e.makeMap((r.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)),e.walk(t,function(e){var r;return 3==e.nodeType?(i(I.getParents(e.parentNode,null,t).reverse(),function(e){a[e.nodeName]&&(e=s(e,!1),o?r&&r.appendChild(e):o=r=e,r=e)}),r&&(r.innerHTML=n.ie?" ":'
'),!1):void 0},"childNodes"),t=s(t,!1),d(t,"rowSpan",1),d(t,"colSpan",1),o?t.appendChild(o):n.ie||(t.innerHTML='
'),t}function g(){var e=I.createRng(),t;return i(I.select("tr",a),function(e){0===e.cells.length&&I.remove(e)}),0===I.select("tr",a).length?(e.setStartBefore(a),e.setEndBefore(a),E.setRng(e),void I.remove(a)):(i(I.select("thead,tbody,tfoot",a),function(e){0===e.rows.length&&I.remove(e)}),l(),void(B&&(t=A[Math.min(A.length-1,B.y)],t&&(E.select(t[Math.min(t.length-1,B.x)].elm,!0),E.collapse(!0)))))}function h(e,t,n,o){var i,r,a,l,s;for(i=A[t][e].elm.parentNode,a=1;n>=a;a++)if(i=I.getNext(i,"tr")){for(r=e;r>=0;r--)if(s=A[t+a][r].elm,s.parentNode==i){for(l=1;o>=l;l++)I.insertAfter(p(s),s);break}if(-1==r)for(l=1;o>=l;l++)i.insertBefore(p(i.cells[0]),i.cells[0])}}function b(){i(A,function(e,t){i(e,function(e,n){var i,r,a;if(u(e)&&(e=e.elm,i=o(e,"colspan"),r=o(e,"rowspan"),i>1||r>1)){for(d(e,"rowSpan",1),d(e,"colSpan",1),a=0;i-1>a;a++)I.insertAfter(p(e),e);h(n,t,r-1,i)}})})}function v(t,n,o){var r,a,s,f,m,p,h,v,y,w,x;if(t?(r=T(t),a=r.x,s=r.y,f=a+(n-1),m=s+(o-1)):(B=D=null,i(A,function(e,t){i(e,function(e,n){u(e)&&(B||(B={x:n,y:t}),D={x:n,y:t})})}),B&&(a=B.x,s=B.y,f=D.x,m=D.y)),v=c(a,s),y=c(f,m),v&&y&&v.part==y.part){for(b(),l(),v=c(a,s).elm,d(v,"colSpan",f-a+1),d(v,"rowSpan",m-s+1),h=s;m>=h;h++)for(p=a;f>=p;p++)A[h]&&A[h][p]&&(t=A[h][p].elm,t!=v&&(w=e.grep(t.childNodes),i(w,function(e){v.appendChild(e)}),w.length&&(w=e.grep(v.childNodes),x=0,i(w,function(e){"BR"==e.nodeName&&I.getAttrib(e,"data-mce-bogus")&&x++0&&A[n-1][l]&&(g=A[n-1][l].elm,h=o(g,"rowSpan"),h>1)){d(g,"rowSpan",h+1);continue}}else if(h=o(r,"rowspan"),h>1){d(r,"rowSpan",h+1);continue}m=p(r),d(m,"colSpan",r.colSpan),f.appendChild(m),a=r}f.hasChildNodes()&&(e?c.parentNode.insertBefore(f,c):I.insertAfter(f,c))}}function w(e){var t,n;i(A,function(n){return i(n,function(n,o){return u(n)&&(t=o,e)?!1:void 0}),e?!t:void 0}),i(A,function(i,r){var a,l,s;i[t]&&(a=i[t].elm,a!=n&&(s=o(a,"colspan"),l=o(a,"rowspan"),1==s?e?(a.parentNode.insertBefore(p(a),a),h(t,r,l-1,s)):(I.insertAfter(p(a),a),h(t,r,l-1,s)):d(a,"colSpan",a.colSpan+1),n=a))})}function x(){var t=[];i(A,function(n){i(n,function(n,r){u(n)&&-1===e.inArray(t,r)&&(i(A,function(e){var t=e[r].elm,n;n=o(t,"colSpan"),n>1?d(t,"colSpan",n-1):I.remove(t)}),t.push(r))})}),g()}function C(){function e(e){var t,n,r;t=I.getNext(e,"tr"),i(e.cells,function(e){var t=o(e,"rowSpan");t>1&&(d(e,"rowSpan",t-1),n=T(e),h(n.x,n.y,1,1))}),n=T(e.cells[0]),i(A[n.y],function(e){var t;e=e.elm,e!=r&&(t=o(e,"rowSpan"),1>=t?I.remove(e):d(e,"rowSpan",t-1),r=e)})}var t;t=f(),i(t.reverse(),function(t){e(t)}),g()}function P(){var e=f();return I.remove(e),g(),e}function R(){var e=f();return i(e,function(t,n){e[n]=s(t,!0)}),e}function S(e,t){var n=f(),o=n[t?0:n.length-1],r=o.cells.length;e&&(i(A,function(e){var t;return r=0,i(e,function(e){e.real&&(r+=e.colspan),e.elm.parentNode==o&&(t=1)}),t?!1:void 0}),t||e.reverse(),i(e,function(e){var n,i=e.cells.length,a;for(n=0;i>n;n++)a=e.cells[n],d(a,"colSpan",1),d(a,"rowSpan",1);for(n=i;r>n;n++)e.appendChild(p(e.cells[i-1]));for(n=r;i>n;n++)I.remove(e.cells[n]);t?o.parentNode.insertBefore(e,o):I.insertAfter(e,o)}),I.removeClass(I.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"))}function T(e){var t;return i(A,function(n,o){return i(n,function(n,i){return n.elm==e?(t={x:i,y:o},!1):void 0}),!t}),t}function k(e){B=T(e)}function N(){var e,t;return e=t=0,i(A,function(n,o){i(n,function(n,i){var r,a;u(n)&&(n=A[o][i],i>e&&(e=i),o>t&&(t=o),n.real&&(r=n.colspan-1,a=n.rowspan-1,r&&i+r>e&&(e=i+r),a&&o+a>t&&(t=o+a)))})}),{x:e,y:t}}function _(e){var t,n,o,i,r,a,l,s,c,d;if(D=T(e),B&&D){for(t=Math.min(B.x,D.x),n=Math.min(B.y,D.y),o=Math.max(B.x,D.x),i=Math.max(B.y,D.y),r=o,a=i,d=n;a>=d;d++)e=A[d][t],e.real||t-(e.colspan-1)=c;c++)e=A[n][c],e.real||n-(e.rowspan-1)=d;d++)for(c=t;o>=c;c++)e=A[d][c],e.real&&(l=e.colspan-1,s=e.rowspan-1,l&&c+l>r&&(r=c+l),s&&d+s>a&&(a=d+s));for(I.removeClass(I.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),d=n;a>=d;d++)for(c=t;r>=c;c++)A[d][c]&&I.addClass(A[d][c].elm,"mce-item-selected")}}var A,B,D,M,E=r.selection,I=E.dom;a=a||I.getParent(E.getStart(),"table"),l(),M=I.getParent(E.getStart(),"th,td"),M&&(B=T(M),D=N(),M=c(B.x,B.y)),e.extend(this,{deleteTable:m,split:b,merge:v,insertRow:y,insertCol:w,deleteCols:x,deleteRows:C,cutRows:P,copyRows:R,pasteRows:S,getPos:T,setStartCell:k,setEndCell:_})}}),o(u,[f,d,c],function(e,t,n){function o(e,t){return parseInt(e.getAttribute(t)||1,10)}var i=n.each;return function(n){function r(){function t(t){function r(e,o){var i=e?"previousSibling":"nextSibling",r=n.dom.getParent(o,"tr"),l=r[i];if(l)return h(n,o,l,e),t.preventDefault(),!0;var d=n.dom.getParent(r,"table"),u=r.parentNode,f=u.nodeName.toLowerCase();if("tbody"===f||f===(e?"tfoot":"thead")){var m=a(e,d,u,"tbody");if(null!==m)return s(e,m,o)}return c(e,r,i,d)}function a(e,t,o,i){var r=n.dom.select(">"+i,t),a=r.indexOf(o);if(e&&0===a||!e&&a===r.length-1)return l(e,t);if(-1===a){var s="thead"===o.tagName.toLowerCase()?0:r.length-1;return r[s]}return r[a+(e?-1:1)]}function l(e,t){var o=e?"thead":"tfoot",i=n.dom.select(">"+o,t);return 0!==i.length?i[0]:null}function s(e,o,i){var r=d(o,e);return r&&h(n,i,r,e),t.preventDefault(),!0}function c(e,o,i,a){var l=a[i];if(l)return u(l),!0;var s=n.dom.getParent(a,"td,th");if(s)return r(e,s,t);var c=d(o,!e);return u(c),t.preventDefault(),!1}function d(e,t){var o=e&&e[t?"lastChild":"firstChild"];return o&&"BR"===o.nodeName?n.dom.getParent(o,"td,th"):o}function u(e){n.selection.setCursorLocation(e,0)}function f(){return y==e.UP||y==e.DOWN}function m(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"tr");return null!==n}function p(e){for(var t=0,n=e;n.previousSibling;)n=n.previousSibling,t+=o(n,"colspan");return t}function g(e,t){var n=0,r=0;return i(e.children,function(e,i){return n+=o(e,"colspan"),r=i,n>t?!1:void 0}),r}function h(e,t,o,i){var r=p(n.dom.getParent(t,"td,th")),a=g(o,r),l=o.childNodes[a],s=d(l,i);u(s||l)}function b(e){var t=n.selection.getNode(),o=n.dom.getParent(t,"td,th"),i=n.dom.getParent(e,"td,th");return o&&o!==i&&v(o,i)}function v(e,t){return n.dom.getParent(e,"TABLE")===n.dom.getParent(t,"TABLE")}var y=t.keyCode;if(f()&&m(n)){var w=n.selection.getNode();setTimeout(function(){b(w)&&r(!t.shiftKey&&y===e.UP,w,t)},0)}}n.on("KeyDown",function(e){t(e)})}function a(){function e(e,t){var n=t.ownerDocument,o=n.createRange(),i;return o.setStartBefore(t),o.setEnd(e.endContainer,e.endOffset),i=n.createElement("body"),i.appendChild(o.cloneContents()),0===i.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length}n.on("KeyDown",function(t){var o,i,r=n.dom;(37==t.keyCode||38==t.keyCode)&&(o=n.selection.getRng(),i=r.getParent(o.startContainer,"table"),i&&n.getBody().firstChild==i&&e(o,i)&&(o=r.createRng(),o.setStartBefore(i),o.setEndBefore(i),n.selection.setRng(o),t.preventDefault()))})}function l(){n.on("KeyDown SetContent VisualAid",function(){var e;for(e=n.getBody().lastChild;e;e=e.previousSibling)if(3==e.nodeType){if(e.nodeValue.length>0)break}else if(1==e.nodeType&&!e.getAttribute("data-mce-bogus"))break;e&&"TABLE"==e.nodeName&&(n.settings.forced_root_block?n.dom.add(n.getBody(),n.settings.forced_root_block,n.settings.forced_root_block_attrs,t.ie&&t.ie<11?" ":'
'):n.dom.add(n.getBody(),"br",{"data-mce-bogus":"1"}))}),n.on("PreProcess",function(e){var t=e.node.lastChild;t&&("BR"==t.nodeName||1==t.childNodes.length&&("BR"==t.firstChild.nodeName||"\xa0"==t.firstChild.nodeValue))&&t.previousSibling&&"TABLE"==t.previousSibling.nodeName&&n.dom.remove(t)})}function s(){function e(e,t,n,o){var i=3,r=e.dom.getParent(t.startContainer,"TABLE"),a,l,s;return r&&(a=r.parentNode),l=t.startContainer.nodeType==i&&0===t.startOffset&&0===t.endOffset&&o&&("TR"==n.nodeName||n==a),s=("TD"==n.nodeName||"TH"==n.nodeName)&&!o,l||s}function t(){var t=n.selection.getRng(),o=n.selection.getNode(),i=n.dom.getParent(t.startContainer,"TD,TH");if(e(n,t,o,i)){i||(i=o);for(var r=i.lastChild;r.lastChild;)r=r.lastChild;t.setEnd(r,r.nodeValue.length),n.selection.setRng(t)}}n.on("KeyDown",function(){t()}),n.on("MouseDown",function(e){2!=e.button&&t()})}function c(){n.on("keydown",function(t){if((t.keyCode==e.DELETE||t.keyCode==e.BACKSPACE)&&!t.isDefaultPrevented()){var o=n.dom.getParent(n.selection.getStart(),"table");if(o){for(var i=n.dom.select("td,th",o),r=i.length;r--;)if(!n.dom.hasClass(i[r],"mce-item-selected"))return;t.preventDefault(),n.execCommand("mceTableDelete")}}})}c(),t.webkit&&(r(),s()),t.gecko&&(a(),l()),t.ie>10&&(a(),l())}}),o(m,[s,p,c],function(e,t,n){return function(o){function i(){o.getBody().style.webkitUserSelect="",d&&(o.dom.removeClass(o.dom.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),d=!1)}function r(t){var n,i,r=t.target;if(s&&(l||r!=s)&&("TD"==r.nodeName||"TH"==r.nodeName)){i=a.getParent(r,"table"),i==c&&(l||(l=new e(o,i),l.setStartCell(s),o.getBody().style.webkitUserSelect="none"),l.setEndCell(r),d=!0),n=o.selection.getSel();try{n.removeAllRanges?n.removeAllRanges():n.empty()}catch(u){}t.preventDefault()}}var a=o.dom,l,s,c,d=!0;return o.on("MouseDown",function(e){2!=e.button&&(i(),s=a.getParent(e.target,"td,th"),c=a.getParent(s,"table"))}),o.on("mouseover",r),o.on("remove",function(){a.unbind(o.getDoc(),"mouseover",r)}),o.on("MouseUp",function(){function e(e,o){var r=new t(e,e);do{if(3==e.nodeType&&0!==n.trim(e.nodeValue).length)return void(o?i.setStart(e,0):i.setEnd(e,e.nodeValue.length));if("BR"==e.nodeName)return void(o?i.setStartBefore(e):i.setEndBefore(e))}while(e=o?r.next():r.prev())}var i,r=o.selection,d,u,f,m,p;if(s){if(l&&(o.getBody().style.webkitUserSelect=""),d=a.select("td.mce-item-selected,th.mce-item-selected"),d.length>0){i=a.createRng(),f=d[0],p=d[d.length-1],i.setStartBefore(f),i.setEndAfter(f),e(f,1),u=new t(f,a.getParent(d[0],"table"));do if("TD"==f.nodeName||"TH"==f.nodeName){if(!a.hasClass(f,"mce-item-selected"))break;m=f}while(f=u.next());e(m),r.setRng(i)}o.nodeChanged(),s=l=c=null}}),o.on("KeyUp",function(){i()}),{clear:i}}}),o(g,[s,u,m,c,p,d,h],function(e,t,n,o,i,r,a){function l(o){function i(e){return e?e.replace(/px$/,""):""}function a(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function l(e){s("left center right".split(" "),function(t){o.formatter.remove("align"+t,{},e)})}function c(){var e=o.dom,t,n,c,d;t=e.getParent(o.selection.getStart(),"table"),d={width:i(e.getStyle(t,"width")||e.getAttrib(t,"width")),height:i(e.getStyle(t,"height")||e.getAttrib(t,"height")),cellspacing:t?e.getAttrib(t,"cellspacing"):"",cellpadding:t?e.getAttrib(t,"cellpadding"):"",border:t?e.getAttrib(t,"border"):"",caption:!!e.select("caption",t)[0]},s("left center right".split(" "),function(e){o.formatter.matchNode(t,"align"+e)&&(d.align=e)}),t||(n={label:"Cols",name:"cols"},c={label:"Rows",name:"rows"}),o.windowManager.open({title:"Table properties",items:{type:"form",layout:"grid",columns:2,data:d,defaults:{type:"textbox",maxWidth:50},items:[n,c,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"},{label:"Alignment",minWidth:90,name:"align",type:"listbox",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]},onsubmit:function(){var n=this.toJSON(),i;o.undoManager.transact(function(){t||(t=p(n.cols||1,n.rows||1)),o.dom.setAttribs(t,{cellspacing:n.cellspacing,cellpadding:n.cellpadding,border:n.border}),o.dom.setStyles(t,{width:a(n.width),height:a(n.height)}),i=e.select("caption",t)[0],i&&!n.caption&&e.remove(i),!i&&n.caption&&(i=e.create("caption"),i.innerHTML=r.ie?"\xa0":'
',t.insertBefore(i,t.firstChild)),l(t),n.align&&o.formatter.apply("align"+n.align,{},t),o.focus(),o.addVisual()})}})}function d(e,t){o.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",size:10},{label:"Rows",name:"rows",type:"textbox",size:10}],onsubmit:function(){var n=this.toJSON();o.undoManager.transact(function(){e.merge(t,n.cols,n.rows)})}})}function u(){var e=o.dom,t,n,r=[];r=o.dom.select("td.mce-item-selected,th.mce-item-selected"),t=o.dom.getParent(o.selection.getStart(),"td,th"),!r.length&&t&&r.push(t),t=t||r[0],t&&(n={width:i(e.getStyle(t,"width")||e.getAttrib(t,"width")),height:i(e.getStyle(t,"height")||e.getAttrib(t,"height")),scope:e.getAttrib(t,"scope")},n.type=t.nodeName.toLowerCase(),s("left center right".split(" "),function(e){o.formatter.matchNode(t,"align"+e)&&(n.align=e)}),o.windowManager.open({title:"Cell properties",items:{type:"form",data:n,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]},onsubmit:function(){var t=this.toJSON();o.undoManager.transact(function(){s(r,function(n){o.dom.setAttrib(n,"scope",t.scope),o.dom.setStyles(n,{width:a(t.width),height:a(t.height)}),t.type&&n.nodeName.toLowerCase()!=t.type&&(n=e.rename(n,t.type)),l(n),t.align&&o.formatter.apply("align"+t.align,{},n)}),o.focus()})}}))}function f(){var e=o.dom,t,n,r,c,d=[];t=o.dom.getParent(o.selection.getStart(),"table"),n=o.dom.getParent(o.selection.getStart(),"td,th"),s(t.rows,function(t){s(t.cells,function(o){return e.hasClass(o,"mce-item-selected")||o==n?(d.push(t),!1):void 0})}),r=d[0],r&&(c={height:i(e.getStyle(r,"height")||e.getAttrib(r,"height")),scope:e.getAttrib(r,"scope")},c.type=r.parentNode.nodeName.toLowerCase(),s("left center right".split(" "),function(e){o.formatter.matchNode(r,"align"+e)&&(c.align=e)}),o.windowManager.open({title:"Row properties",items:{type:"form",data:c,columns:2,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"}]},onsubmit:function(){var t=this.toJSON(),n,i,r;o.undoManager.transact(function(){var c=t.type;s(d,function(s){o.dom.setAttrib(s,"scope",t.scope),o.dom.setStyles(s,{height:a(t.height)}),c!=s.parentNode.nodeName.toLowerCase()&&(n=e.getParent(s,"table"),i=s.parentNode,r=e.select(c,n)[0],r||(r=e.create(c),n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r)),r.appendChild(s),i.hasChildNodes()||e.remove(i)),l(s),t.align&&o.formatter.apply("align"+t.align,{},s)}),o.focus()})}}))}function m(e){return function(){o.execCommand(e)}}function p(e,t){var n,i,a;for(a='',n=0;t>n;n++){for(a+="",i=0;e>i;i++)a+="";a+=""}a+="
"+(r.ie?" ":"
")+"
",o.insertContent(a);var l=o.dom.get("__mce");return o.dom.setAttrib(l,"id",null),l}function g(e,t){function n(){e.disabled(!o.dom.getParent(o.selection.getStart(),t)),o.selection.selectorChanged(t,function(t){e.disabled(!t)})}o.initialized?n():o.on("init",n)}function h(){g(this,"table")}function b(){g(this,"td,th")}function v(){var e="";e='';for(var t=0;10>t;t++){e+="";for(var n=0;10>n;n++)e+='";e+=""}return e+="
",e+='

'}function y(e,t,n){var i=n.getEl().getElementsByTagName("table")[0],r=n.parent().rel,a,l,s,c;if(n.isRtl()||"tl-tr"==r){for(l=9;l>=0;l--)for(a=0;10>a;a++)c=i.rows[l].childNodes[a].firstChild,o.dom.toggleClass(c,"mce-active",a>=e&&t>=l),a>=e&&t>=l&&(s=c);e=9-e,i.nextSibling.innerHTML=e+" x "+(t+1)}else{for(l=0;10>l;l++)for(a=0;10>a;a++)c=i.rows[l].childNodes[a].firstChild,o.dom.toggleClass(c,"mce-active",e>=a&&t>=l),e>=a&&t>=l&&(s=c);i.nextSibling.innerHTML=e+1+" x "+(t+1)}return s.parentNode}var w,x,C=this;o.settings.table_grid===!1?o.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:c}):o.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(e){e.aria&&(this.parent().hideAll(),e.stopImmediatePropagation(),c())},onhide:function(){var e=this.menu.items()[0].getEl().getElementsByTagName("a");o.dom.removeClass(e,"mce-active"),o.dom.addClass(e[0],"mce-active")},menu:[{type:"container",html:v(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(e){var t=e.target,n,o;"A"==t.tagName.toUpperCase()&&(n=parseInt(t.getAttribute("data-mce-x"),10),o=parseInt(t.getAttribute("data-mce-y"),10),(n!==this.lastX||o!==this.lastY)&&(y(n,o,e.control),this.lastX=n,this.lastY=o))},onkeydown:function(e){var t=this.lastX,n=this.lastY,o;switch(e.keyCode){case 37:t>0&&(t--,o=!0);break;case 39:o=!0,9>t&&t++;break;case 38:o=!0,n>0&&n--;break;case 40:o=!0,9>n&&n++}o&&(e.preventDefault(),e.stopPropagation(),y(t,n,e.control).focus(),this.lastX=t,this.lastY=n)},onclick:function(e){"A"==e.target.tagName.toUpperCase()&&(e.preventDefault(),e.stopPropagation(),this.parent().cancel(),p(this.lastX+1,this.lastY+1))}}]}),o.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:h,onclick:c}),o.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:h,cmd:"mceTableDelete"}),o.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:m("mceTableCellProps"),onPostRender:b},{text:"Merge cells",onclick:m("mceTableMergeCells"),onPostRender:b},{text:"Split cell",onclick:m("mceTableSplitCells"),onPostRender:b}]}),o.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:m("mceTableInsertRowBefore"),onPostRender:b},{text:"Insert row after",onclick:m("mceTableInsertRowAfter"),onPostRender:b},{text:"Delete row",onclick:m("mceTableDeleteRow"),onPostRender:b},{text:"Row properties",onclick:m("mceTableRowProps"),onPostRender:b},{text:"-"},{text:"Cut row",onclick:m("mceTableCutRow"),onPostRender:b},{text:"Copy row",onclick:m("mceTableCopyRow"),onPostRender:b},{text:"Paste row before",onclick:m("mceTablePasteRowBefore"),onPostRender:b},{text:"Paste row after",onclick:m("mceTablePasteRowAfter"),onPostRender:b}]}),o.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:m("mceTableInsertColBefore"),onPostRender:b},{text:"Insert column after",onclick:m("mceTableInsertColAfter"),onPostRender:b},{text:"Delete column",onclick:m("mceTableDeleteCol"),onPostRender:b}]});var P=[];s("inserttable tableprops deletetable | cell row column".split(" "),function(e){P.push("|"==e?{text:"-"}:o.menuItems[e])}),o.addButton("table",{type:"menubutton",title:"Table",menu:P}),r.isIE||o.on("click",function(e){e=e.target,"TABLE"===e.nodeName&&(o.selection.select(e),o.nodeChanged())}),C.quirks=new t(o),o.on("Init",function(){w=o.windowManager,C.cellSelection=new n(o)}),s({mceTableSplitCells:function(e){e.split()},mceTableMergeCells:function(e){var t,n,i;i=o.dom.getParent(o.selection.getStart(),"th,td"),i&&(t=i.rowSpan,n=i.colSpan),o.dom.select("td.mce-item-selected,th.mce-item-selected").length?e.merge():d(e,i)},mceTableInsertRowBefore:function(e){e.insertRow(!0)},mceTableInsertRowAfter:function(e){e.insertRow()},mceTableInsertColBefore:function(e){e.insertCol(!0)},mceTableInsertColAfter:function(e){e.insertCol()},mceTableDeleteCol:function(e){e.deleteCols()},mceTableDeleteRow:function(e){e.deleteRows()},mceTableCutRow:function(e){x=e.cutRows()},mceTableCopyRow:function(e){x=e.copyRows()},mceTablePasteRowBefore:function(e){e.pasteRows(x,!0)},mceTablePasteRowAfter:function(e){e.pasteRows(x)},mceTableDelete:function(e){e.deleteTable()}},function(t,n){o.addCommand(n,function(){var n=new e(o);n&&(t(n),o.execCommand("mceRepaint"),C.cellSelection.clear())})}),s({mceInsertTable:function(){c()},mceTableRowProps:f,mceTableCellProps:u},function(e,t){o.addCommand(t,function(t,n){e(n)})})}var s=o.each;a.add("table",l)}),a([s,u,m,g])}(this);tinymce.PluginManager.add("template",function(e){function t(t){return function(){var a=e.settings.templates;"string"==typeof a?tinymce.util.XHR.send({url:a,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(a)}}function a(t){function a(t){function a(t){if(-1==t.indexOf("")){var a="";tinymce.each(e.contentCSS,function(t){a+=''}),t=""+a+""+t+""}t=r(t,"template_preview_replace_values");var l=n.find("iframe")[0].getEl().contentWindow.document;l.open(),l.write(t),l.close()}var c=t.control.value();c.url?tinymce.util.XHR.send({url:c.url,success:function(e){l=e,a(l)}}):(l=c.content,a(l)),n.find("#description")[0].text(t.control.value().description)}var n,l,i=[];return t&&0!==t.length?(tinymce.each(t,function(e){i.push({selected:!i.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),n=e.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:i,onselect:a}}]},{type:"label",name:"description",label:"Description",text:" "},{type:"iframe",flex:1,border:1}],onsubmit:function(){c(!1,l)},width:e.getParam("template_popup_width",600),height:e.getParam("template_popup_height",500)}),void n.find("listbox")[0].fire("select")):void e.windowManager.alert("No templates defined")}function n(t,a){function n(e,t){if(e=""+e,e.length0&&(o=p.create("div",null),o.appendChild(s[0].cloneNode(!0))),i(p.select("*",o),function(t){c(t,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))),c(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))),c(t,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(t.innerHTML=m)}),l(o),e.execCommand("mceInsertContent",!1,o.innerHTML),e.addVisual()}var i=tinymce.each;e.addCommand("mceInsertTemplate",c),e.addButton("template",{title:"Insert template",onclick:t(a)}),e.addMenuItem("template",{text:"Insert template",onclick:t(a),context:"insert"}),e.on("PreProcess",function(t){var a=e.dom;i(a.select("div",t.node),function(t){a.hasClass(t,"mceTmpl")&&(i(a.select("*",t),function(t){a.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format"))))}),l(t))})})});tinymce.PluginManager.add("textcolor",function(e){function t(){var t,o,r=[];for(o=e.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Brown","C0C0C0","Silver","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum","FFFFFF","White"],t=0;t',a=o.length-1,c=e.settings.textcolor_rows||5,i=e.settings.textcolor_cols||8,F=0;c>F;F++){for(l+="",n=0;i>n;n++)d=F*i+n,d>a?l+="":(r=o[d],l+='
');l+=""}return l+=""}function r(t){var o,r=this.parent();(o=t.target.getAttribute("data-mce-color"))&&(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),t.target.setAttribute("aria-selected",!0),this.lastId=t.target.id,r.hidePanel(),o="#"+o,r.color(o),e.execCommand(r.settings.selectcmd,!1,o))}function l(){var t=this;t._color&&e.execCommand(t.settings.selectcmd,!1,t._color)}e.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",selectcmd:"ForeColor",panel:{role:"application",ariaRemember:!0,html:o,onclick:r},onclick:l}),e.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",selectcmd:"HiliteColor",panel:{role:"application",ariaRemember:!0,html:o,onclick:r},onclick:l})});tinymce.PluginManager.add("visualblocks",function(e,s){function o(){var s=this;s.active(a),e.on("VisualBlocks",function(){s.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var l,t,a;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var o,c=e.dom;l||(l=c.uniqueId(),o=c.create("link",{id:l,rel:"stylesheet",href:s+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(o)),e.on("PreviewFormats AfterPreviewFormats",function(s){a&&c.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==s.type)}),c.toggleClass(e.getBody(),"mce-visualblocks"),a=e.dom.hasClass(e.getBody(),"mce-visualblocks"),t&&t.active(c.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))});tinymce.PluginManager.add("visualchars",function(e){function a(a){var t,s,i,r,c,d,l=e.getBody(),m=e.selection;if(n=!n,o.state=n,e.fire("VisualChars",{state:n}),a&&(d=m.getBookmark()),n)for(s=[],tinymce.walk(l,function(e){3==e.nodeType&&e.nodeValue&&-1!=e.nodeValue.indexOf(" ")&&s.push(e)},"childNodes"),i=0;i$1
'),c=e.dom.create("div",null,r);t=c.lastChild;)e.dom.insertAfter(t,s[i]);e.dom.remove(s[i])}else for(s=e.dom.select("span.mce-nbsp",l),i=s.length-1;i>=0;i--)e.dom.remove(s[i],1);m.moveToBookmark(d)}function t(){var a=this;e.on("VisualChars",function(e){a.active(e.state)})}var n,o=this;e.addCommand("mceVisualChars",a),e.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:t}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:t,selectable:!0,context:"view",prependToContext:!0}),e.on("beforegetcontent",function(e){n&&"raw"!=e.format&&!e.draft&&(n=!0,a(!1))})});tinymce.PluginManager.add("wordcount",function(e){function t(){e.theme.panel.find("#wordcount").text(["Words: {0}",a.getCount()])}var n,o,a=this;n=e.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),o=e.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),e.on("init",function(){var n=e.theme.panel&&e.theme.panel.find("#statusbar")[0];n&&window.setTimeout(function(){n.insert({type:"label",name:"wordcount",text:["Words: {0}",a.getCount()],classes:"wordcount",disabled:e.settings.readonly},0),e.on("setcontent beforeaddundo",t),e.on("keyup",function(e){32==e.keyCode&&t()})},0)}),a.getCount=function(){var t=e.getContent({format:"raw"}),a=0;if(t){t=t.replace(/\.\.\./g," "),t=t.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," "),t=t.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),t=t.replace(o,"");var r=t.match(n);r&&(a=r.length)}return a}});tinymce.ThemeManager.add("modern",function(e){function t(){function t(t){var i,o=[];if(t)return d(t.split(/[ ,]/),function(t){function n(){var n=e.selection;"bullist"==r&&n.selectorChanged("ul > li",function(e,n){for(var i,o=n.parents.length;o--&&(i=n.parents[o].nodeName,"OL"!=i&&"UL"!=i););t.active(e&&"UL"==i)}),"numlist"==r&&n.selectorChanged("ol > li",function(e,n){for(var i,o=n.parents.length;o--&&(i=n.parents[o].nodeName,"OL"!=i&&"UL"!=i););t.active(e&&"OL"==i)}),t.settings.stateSelector&&n.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&n.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})}var r;"|"==t?i=null:c.has(t)?(t={type:t},u.toolbar_items_size&&(t.size=u.toolbar_items_size),o.push(t),i=null):(i||(i={type:"buttongroup",items:[]},o.push(i)),e.buttons[t]&&(r=t,t=e.buttons[r],"function"==typeof t&&(t=t()),t.type=t.type||"button",u.toolbar_items_size&&(t.size=u.toolbar_items_size),t=c.create(t),i.items.push(t),e.initialized?n():e.on("init",n)))}),n.push({type:"toolbar",layout:"flow",items:o}),!0}var n=[];if(tinymce.isArray(u.toolbar)){if(0===u.toolbar.length)return;tinymce.each(u.toolbar,function(e,t){u["toolbar"+(t+1)]=e}),delete u.toolbar}for(var i=1;10>i&&t(u["toolbar"+i]);i++);return n.length||u.toolbar===!1||t(u.toolbar||f),n.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:n}:void 0}function n(){function t(t){var n;return"|"==t?{text:"|"}:n=e.menuItems[t]}function n(n){var i,o,r,a,s;if(s=tinymce.makeMap((u.removed_menuitems||"").split(/[ ,]/)),u.menu?(o=u.menu[n],a=!0):o=h[n],o){i={text:o.title},r=[],d((o.items||"").split(/[ ,]/),function(e){var n=t(e);n&&!s[e]&&r.push(t(e))}),a||d(e.menuItems,function(e){e.context==n&&("before"==e.separator&&r.push({text:"|"}),e.prependToContext?r.unshift(e):r.push(e),"after"==e.separator&&r.push({text:"|"}))});for(var l=0;l 0) + sql += ', '; + sql += this.field[n].render (batch); + } + + sql += ') VALUES ('; + + for (n = 0; n < this.field.length; n++) + { + if (n > 0) + sql += ', '; + sql += this.expr[n].render(batch); + } + + sql += ')'; + + return sql; + } +}) diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/list.js b/debian/hedera-web/usr/share/hedera-web/js/sql/list.js new file mode 100644 index 00000000..78bc8b20 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/list.js @@ -0,0 +1,66 @@ +/** + * List of Sql.Object + **/ +Sql.List = new Class +({ + Extends: Sql.Object + + ,objects: [] + + ,add: function (object) + { + this.objects.push (object.ref ()); + object.on ('changed', this._onObjectChange, this); + this._onObjectChange (); + } + + ,get: function (i) + { + return objects[i]; + } + + ,getArray: function () + { + return this.objects; + } + + ,remove: function (i) + { + this._unrefObject (this.objects.splice (i, 1)); + this._onObjectChange (); + } + + ,_onObjectChange: function () + { + this.signalEmit ('changed'); + } + + ,isReady: function () + { + var o = this.objects; + + if (o.length == 0) + return false; + + for (var i = 0; i < o.length; i++) + if (!o[i].isReady ()) + return false; + + return true; + } + + ,_unrefObject: function (object) + { + object.disconnect ('changed', this._onObjectChange, this); + object.unref (); + } + + ,_destroy: function () + { + for (var i = 0; i < this.objects.length; i++) + this._unrefObject (this.objects[i]); + + this.parent (); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/main.js b/debian/hedera-web/usr/share/hedera-web/js/sql/main.js new file mode 100644 index 00000000..21358f87 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/main.js @@ -0,0 +1,5 @@ +/** + * The namespace. + **/ +var Sql = {}; + diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/main.php b/debian/hedera-web/usr/share/hedera-web/js/sql/main.php new file mode 100755 index 00000000..03f69755 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/main.php @@ -0,0 +1,31 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/multi-stmt.js b/debian/hedera-web/usr/share/hedera-web/js/sql/multi-stmt.js new file mode 100644 index 00000000..b7878633 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/multi-stmt.js @@ -0,0 +1,46 @@ +/** + * The equivalent of a SQL multi statement. + **/ +Sql.MultiStmt = new Class +({ + Extends: Sql.Stmt + + ,stmts: [] + + ,addStmt: function (stmt) + { + return this.stmts.push (stmt); + } + + ,getStmt: function (stmtIndex) + { + return this.stmts[index]; + } + + ,isReady: function () + { + if (this.stmts.length == 0) + return false; + + for (var i = 0; i < this.stmts.length; i++) + if (!this.stmts[i].isReady ()) + return false; + + return true; + } + + ,render: function (batch) + { + var sql = ''; + + for (var i = 0; i < this.stmts.length; i++) + { + if (i > 0) + sql += ";\n"; + + sql += this.stmts[i].render (batch); + } + + return sql; + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/object.js b/debian/hedera-web/usr/share/hedera-web/js/sql/object.js new file mode 100644 index 00000000..34fbd43d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/object.js @@ -0,0 +1,32 @@ +/** + * Base class for all objects on this library. + **/ +Sql.Object = new Class +({ + Extends: Vn.Object + + /** + * Renders the object as an SQL string. + * + * @param {Sql.Batch} batch The batch used to render the object + * @return {String} The SQL string + **/ + ,render: function (batch) {} + + /** + * Gets if the object is ready to be rendered. + * + * @return {boolean} %true if the object is ready, %false otherwise + **/ + ,isReady: function () + { + return true; + } + + /** + * Through the query looking for containers and adds it to the batch. + * + * @return {Sql.Batch} batch The batch + **/ + ,findHolders: function (batch) {} +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/operation.js b/debian/hedera-web/usr/share/hedera-web/js/sql/operation.js new file mode 100644 index 00000000..10f7dfa6 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/operation.js @@ -0,0 +1,72 @@ +/** + * The equivalent of a SQL operation between exprs. + * + * @param {Array#Sql.Expr} expr Array with the exprs + * @param {Sql..Operation.Type} type The type of the operation + **/ +Sql.Operation = new Class ().extend +({ + Type: + { + EQUAL : 0 + ,LIKE : 1 + ,AND : 2 + ,OR : 3 + } + ,Operators: + [ + '=' + ,'LIKE' + ,'AND' + ,'OR' + ] +}); + +Sql.Operation.implement +({ + Extends: Sql.Expr + ,Tag: 'sql-operation' + ,Properties: + { + type: + { + enumType: Sql.Operation.Type + ,value: -1 + } + } + + ,initialize: function (props) + { + this.parent (props); + this.link ({exprs: new Sql.List ()}, {'changed': this.onListChange}); + } + + ,onListChange: function () + { + this.signalEmit ('changed'); + } + + ,isReady: function () + { + return this.exprs.isReady (); + } + + ,render: function (batch) + { + var sql = '('; + var operator = ' '+ Sql.Operation.Operators[this.type] +' '; + var e = this.exprs.getArray (); + + for (var i = 0; i < e.length; i++) + { + if (i > 0) + sql += operator; + + sql += e[i].render (batch); + } + + sql += ')'; + + return sql; + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/search-tags.js b/debian/hedera-web/usr/share/hedera-web/js/sql/search-tags.js new file mode 100644 index 00000000..27f80b74 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/search-tags.js @@ -0,0 +1,19 @@ +/** + * The equivalent of a SQL value. + **/ +Sql.SearchTags = new Class +({ + Extends: Sql.Value + ,Tag: 'sql-search-tags' + + ,render: function (batch) + { + if (typeof this._value == 'string') + { + var value = this._value.replace (/^| +|$/g, '%'); + return "'" + value.replace (this.regexp, this.replaceFunc) + "'"; + } + else + return this.parent (); + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/select.js b/debian/hedera-web/usr/share/hedera-web/js/sql/select.js new file mode 100644 index 00000000..7d03fc1a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/select.js @@ -0,0 +1,33 @@ +/** + * The equivalent of a SQL select. + **/ +Sql.Select = new Class +({ + Extends: Sql.Stmt + + ,expr: [] + + ,addField: function (fieldName) + { + this.expr.push (new Sql.Field ({name: fieldName})); + } + + ,render: function (batch) + { + var sql = 'SELECT ' + + for (var i = 0; i < this.expr.length; i++) + { + if (i > 0) + sql += ', '; + sql += this.expr[i].render(batch); + } + + sql += ' FROM ' + this.renderTarget (batch); + + if (this.where) + sql += ' WHERE ' + this.where.render (batch); + + return sql; + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/stmt.js b/debian/hedera-web/usr/share/hedera-web/js/sql/stmt.js new file mode 100644 index 00000000..b3c71b7c --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/stmt.js @@ -0,0 +1,43 @@ +/** + * The equivalent of a SQL statement. + **/ +Sql.Stmt = new Class +({ + Extends: Sql.Object + ,Properties: + { + where: + { + type: Sql.Expr + ,value: null + } + } + + ,target: [] + + ,addTarget: function (target) + { + this.target.push (target); + } + + ,renderTarget: function (batch) + { + var sql; + var len = this.target.length; + + if (len > 0) + { + sql = ' '; + + for (var n = 0; n < len; n++) + { + if (n > 0) sql += ', '; + sql += this.target[n].render (batch); + } + } + else + sql += 'DUAL'; + + return sql; + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/string.js b/debian/hedera-web/usr/share/hedera-web/js/sql/string.js new file mode 100644 index 00000000..2a7ac8ce --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/string.js @@ -0,0 +1,40 @@ +/** + * Literal SQL string. + **/ +Sql.String = new Class +({ + Extends: Sql.Stmt + ,Properties: + { + query: + { + type: String + ,value: null + } + } + + ,regexp: /#\w+/g + + ,replaceFunc: function (batch, token) + { + var holder = new Sql.Holder ({id: token.substr (1)}); + return holder.render (batch); + } + + ,render: function (batch) + { + if (!this.query) + return null; + + return this.query.replace (this.regexp, this.replaceFunc.bind (this, batch)); + } + + ,findHolders: function (batch) + { + var ids = this.query.match (this.regexp); + + if (ids) + for (var i = 0; i < ids.length; i++) + batch.add (ids[i].substr (1)); + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/table.js b/debian/hedera-web/usr/share/hedera-web/js/sql/table.js new file mode 100644 index 00000000..a0ec15d4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/table.js @@ -0,0 +1,27 @@ +/** + * + **/ +Sql.Table = new Class +({ + Extends: Sql.Target + ,Properties: + { + name: + { + type: String + ,value: null + }, + schema: + { + type: String + ,value: null + } + } + + ,render: function (batch) + { + var sql = this.schema ? '`' + this.schema + '`.' : ''; + sql += '`' + this.name + '`'; + return sql; + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/target.js b/debian/hedera-web/usr/share/hedera-web/js/sql/target.js new file mode 100644 index 00000000..3a1f793c --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/target.js @@ -0,0 +1,7 @@ +/** + * The equivalent of a SQL target. + **/ +Sql.Target = new Class +({ + Extends: Sql.Object +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/update.js b/debian/hedera-web/usr/share/hedera-web/js/sql/update.js new file mode 100644 index 00000000..31d40dd9 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/update.js @@ -0,0 +1,29 @@ +/** + * The equivalent of a SQL update. + **/ +Sql.Update = new Class +({ + Extends: Sql.Dml + + ,render: function (batch) + { + var sql; + var n; + + sql = 'UPDATE ' + this.renderTarget (batch) + ' SET '; + + for (n = 0; n < this.field.length; n++) + { + if (n > 0) + sql += ', '; + sql += this.field[n].render () + ' = ' + this.expr[n].render(batch); + } + + if (this.where) + sql += ' WHERE ' + this.where.render (batch); + + sql += ' LIMIT 1'; // Only for security. + + return sql; + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/sql/value.js b/debian/hedera-web/usr/share/hedera-web/js/sql/value.js new file mode 100644 index 00000000..60e0d7a3 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/sql/value.js @@ -0,0 +1,109 @@ +/** + * The equivalent of a SQL value. + **/ +Sql.Value = new Class +({ + Extends: Sql.Expr + ,Tag: 'sql-value' + + ,Properties: + { + /** + * The master param. + **/ + param: + { + type: Vn.Param + ,set: function (x) + { + this.link ({_param: x}, {'changed': this.onParamChange}); + this.onParamChange (); + } + ,get: function () + { + return this._param; + } + }, + /** + * The value. + **/ + value: + { + type: String + ,set: function (x) + { + if (Vn.Value.compare (x, this._value)) + return; + + if (x instanceof Date) + x = x.clone (); + + this._value = x; + + if (this._param && !this.paramLock) + { + this.paramLock = true; + this._param.value = x; + this.paramLock = false; + } + + this.signalEmit ('changed'); + } + ,get: function () + { + return this._value; + } + } + } + + ,_value: undefined + ,_param: null + ,regexp: new RegExp ('(\\\\)|\'', 'g') + ,paramLock: false + + ,onParamChange: function () + { + if (this.paramLock || !this._param) + return; + + this.paramLock = true; + this.value = this._param.value; + this.paramLock = false; + } + + ,isReady: function () + { + return this._value !== undefined; + } + + ,replaceFunc: function (token) + { + switch (token) + { + case '\\': return '\\\\'; + case '\'': return '\\\''; + } + + return token; + } + + ,render: function (batch) + { + var v = this._value; + + switch (typeof v) + { + case 'number': + return v; + case 'boolean': + return (v) ? 'TRUE' : 'FALSE'; + case 'string': + return "'" + v.replace (this.regexp, this.replaceFunc) + "'"; + case 'object': + if (v instanceof Date) + return Vn.Date.strftime (v, '\'%Y-%m-%d\''); + default: + return 'NULL'; + } + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/browser.js b/debian/hedera-web/usr/share/hedera-web/js/vn/browser.js new file mode 100644 index 00000000..ca72a259 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/browser.js @@ -0,0 +1,36 @@ + +Vn.Browser = +{ + getPageYOffset: function () + { + return window.pageYOffset; + }, + + getPageXOffset: function () + { + return window.pageXOffset; + }, + + getInnerHeight: function () + { + return window.innerHeight; + }, + + getInnerWidth: function () + { + return window.innerWidth; + }, + + createRadio: function (uid) + { + var radio = document.createElement ('input'); + radio.type = 'radio'; + radio.name = uid; + return radio; + }, + + setInputTypeNumber: function (input) + { + input.type = 'number'; + } +}; diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/builder.js b/debian/hedera-web/usr/share/hedera-web/js/vn/builder.js new file mode 100644 index 00000000..c23f641b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/builder.js @@ -0,0 +1,329 @@ +/** + * Creates a object from a XML specification. + **/ +Vn.Builder = new Class +({ + Extends: Vn.Object + ,objectMap: {} + ,tags: {} + + ,loadXml: function (xmlDoc) + { + if (!xmlDoc) + return false; + + var docElement = xmlDoc.documentElement; + + if (docElement.tagName !== 'vn') + return false; + + this.contexts = []; + var childs = docElement.childNodes; + + if (childs) + for (var i = 0; i < childs.length; i++) + this.loadNode (childs[i], null); + + this.resolveProperties (); + delete this.contexts; + return true; + } + + ,loadXmlFromNode: function (node) + { + this.contexts = []; + var mainNode = this.loadNode (node); + this.resolveProperties (); + delete this.contexts; + return mainNode; + } + + ,add: function (id, object) + { + this.objectMap[id] = object; + } + + ,loadNode: function (node) + { + var customNode; + var htmlNode = null; + var tagName = null; + + if (node.tagName) + tagName = node.tagName.toLowerCase (); + + if (tagName === 't') + { + htmlNode = document.createTextNode (_(node.firstChild.textContent)); + } + else if (!tagName) + { + htmlNode = document.importNode (node, false); + } + else if ((customNode = this.loadCustomNode (node, null))) + { + if (customNode instanceof Htk.Widget) + htmlNode = customNode.getNode (); + } + else + { + htmlNode = document.createElement (tagName); + + var a = node.attributes; + + for (var i = 0; i < a.length; i++) + { + var nodeName = a[i].nodeName; + var nodeValue = a[i].nodeValue; + + if (/^on-\w+/.test (nodeName)) + { + var method = this.getMethod (nodeValue); + htmlNode.addEventListener ( + nodeName.substr (3), method.bind (this.signalData)); + } + else if (nodeName === 'id') + { + this.objectMap[nodeValue] = htmlNode; + } + else + htmlNode.setAttribute (nodeName, + this.translateValue (nodeValue)); + } + + var childs = node.childNodes; + + if (childs) + for (var i = 0; i < childs.length; i++) + { + var htmlChild = this.loadNode (childs[i]); + + if (htmlChild) + htmlNode.appendChild (htmlChild); + } + } + + return htmlNode; + } + + ,loadCustomNode: function (node, parentContext) + { + if (!node.tagName) + return null; + + var tagName = node.tagName.toLowerCase (); + var klass = Vn.customTags[tagName]; + + if (!klass) + return null; + + var customNode = new klass (); + + if (!this.tags[tagName]) + this.tags[tagName] = []; + + this.tags[tagName].push (customNode); + + var context = { + node: node + ,parent: parentContext + ,object: customNode + ,klass: klass + }; + this.contexts.push (context); + + var nodeId = node.getAttribute ('id'); + + if (nodeId) + this.objectMap[nodeId] = customNode; + + var childs = node.childNodes; + + if (childs) + for (var i = 0; i < childs.length; i++) + this.loadCustomNode (childs[i], context); + + return customNode; + } + + ,translateValue: function (value) + { + var chr = value.charAt (0); + + if (chr == '_') + return _(value.substr (1)); + else if (chr == '\\' && value.charAt (1) == '_') + return value.substr (1); + + return value; + } + + ,getMethod: function (value) + { + if (this.signalData) + var methodName = 'this.signalData.'+ value; + else + var methodName = value; + + var method; + + try { + method = eval (methodName); + } + catch (e) + { + method = null; + } + + if (method == null) + console.warn ('Vn.Builder: Function \'%s\' not found', + value); + + return method; + } + + ,replaceFunc: function (token) + { + return token.charAt(1).toUpperCase (); + } + + ,resolveProperties: function () + { + for (var i = 0; i < this.contexts.length; i++) + { + var c = this.contexts[i]; + var a = c.node.attributes; + + for (var j = 0; j < a.length; j++) + this.setAttribute (c, a[j].nodeName, a[j].nodeValue); + + if (c.parent) + { + var parentProperty = c.node.getAttribute ('property'); + + if (!parentProperty) + parentProperty = c.parent.klass.Child; + + if (parentProperty) + this.setProperty (c.parent, parentProperty, c.object); + + if (c.klass.Parent) + this.setProperty (c, c.klass.Parent, c.parent.object); + } + + c.object.loadXml (this, c.node); + } + } + + ,setAttribute: function (c, attribute, value) + { + if (/^on-\w+/.test (attribute)) + { + var method = this.getMethod (value); + + if (method) + c.object.on (attribute.substr (3), method, this.signalData); + } + else if (!/^(id|property)$/.test (attribute)) + { + this.setProperty (c, attribute, value) + } + } + + ,setProperty: function (c, attribute, value) + { + var propName = attribute.replace (/-./g, this.replaceFunc); + var prop = c.klass.Properties[propName]; + + if (!prop) + { + console.warn ('Vn.Builder: Attribute \'%s\' not valid for tag \'%s\'', + attribute, c.node.tagName); + return; + } + if (!value) + return; + + switch (prop.type) + { + case Boolean: + value = (/^(true|1)$/i).test (value); + break; + case Number: + value = 0 + new Number (value); + break; + case String: + value = this.translateValue (value); + break; + case Function: + { + var method = this.getMethod (value); + value = method ? method.bind (this.signalData) : null; + break; + } + default: + if (prop.type instanceof Function) + { + if (typeof value == 'string') + value = this.get (value); + if (!(value instanceof prop.type)) + return; + } + else if (prop.enumType) + value = prop.enumType[value]; + } + + if (value !== undefined) + c.object[propName] = value; + else + console.warn ('Vn.Builder: Empty attribute \'%s\' on tag \'%s\'', + attribute, c.node.tagName); + } + + ,setParent: function (parentBuilder) + { + this.parentBuilder = parentBuilder; + + if (parentBuilder) + this.signalData = parentBuilder.signalData; + } + + ,$: function (objectId) + { + return this.get (objectId); + } + + ,get: function (objectId) + { + var object = this.objectMap[objectId]; + + if (object) + return object; + if (this.parentBuilder) + return this.parentBuilder.get (objectId); + + return null; + } + + ,getObjects: function (tagName) + { + if (this.tags[tagName]) + return this.tags[tagName]; + + return []; + } + + ,_destroy: function () + { + for (var tag in this.tags) + { + var objects = this.tags[tag]; + + for (var i = 0; i < objects.length; i++) + objects[i].unref (); + } + + this.parent (); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/cookie.js b/debian/hedera-web/usr/share/hedera-web/js/vn/cookie.js new file mode 100644 index 00000000..9f971032 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/cookie.js @@ -0,0 +1,71 @@ +/** + * Brownser cookie handler. + **/ +Vn.Cookie = +{ + set: function (key, value, days) + { + var strCookie = key + '=' + value + ';'; + + if (days != undefined) + { + var date = new Date (); + date.setTime (date.getTime () + days * 86400000); + strCookie += 'expires=' + date.toGMTString (); + } + + document.cookie = strCookie; + } + + ,unset: function (key) + { + this.set (key, '', -1); + } + + ,get: function (key) + { + var cookie = new String (document.cookie); + var start = cookie.indexOf (key + '='); + + if (start != -1) + { + var end; + + start += key.length + 1; + end = cookie.indexOf (';', start); + + if (end > 0) + return cookie.substring (start, end); + else + return cookie.substring (start); + } + + return null; + } + + ,getInt: function (key) + { + var value = this.get (key); + + if (value != null) + return parseInt (value); + + return null; + } + + ,getFloat: function (key) + { + var value = Cookie.get (key); + + if (value != null) + return parseFloat (value); + + return null; + } + + ,check: function (key) + { + return this.get (key) != null; + } +}; + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/date.js b/debian/hedera-web/usr/share/hedera-web/js/vn/date.js new file mode 100644 index 00000000..07bf5e64 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/date.js @@ -0,0 +1,122 @@ +/** + * Date handling utilities. + **/ + +Date.prototype.clone = function () +{ + return new Date (this.getTime ()); +} + +Vn.Date = +{ + WDays: + [ + _('Sunday') + ,_('Monday') + ,_('Tuesday') + ,_('Wednesday') + ,_('Thursday') + ,_('Friday') + ,_('Saturday') + ] + ,AbrWDays: + [ + _('Su') + ,_('Mo') + ,_('Tu') + ,_('We') + ,_('Th') + ,_('Fr') + ,_('Sa') + ] + ,Months: + [ + _('January') + ,_('February') + ,_('March') + ,_('April') + ,_('May') + ,_('June') + ,_('July') + ,_('August') + ,_('September') + ,_('October') + ,_('November') + ,_('December') + ] + ,AbrMonths: + [ + _('Jan') + ,_('Feb') + ,_('Mar') + ,_('Apr') + ,_('May') + ,_('Jun') + ,_('Jul') + ,_('Ago') + ,_('Sep') + ,_('Oct') + ,_('Nov') + ,_('Dec') + ] + + ,regexp: new RegExp ('%[a-zA-Z]', 'g') + + ,pad: function (number) + { + if (number < 10) + return '0'+ number.toString (); + + return number.toString (); + } + + ,regexpFunc: function (d, token) + { + switch (token.charAt (1)) + { + // Minutes with 2 digits + case 'M': return this.pad (d.getMinutes ()); + + // Hour with 2 digits in 24 hour format + case 'H': return this.pad (d.getHours ()); + + // Complete time + case 'T': return d.toLocaleTimeString (); + + // Complete week day name + case 'A': return this.WDays[d.getDay ()]; + + // Abreviated week day name + case 'a': return this.AbrWDays[d.getDay ()]; + + // Day of month with 2 digits + case 'd': return this.pad (d.getDate ()); + + // Day of month + case 'e': return d.getDate (); + + // Complete month name + case 'B': return this.Months[d.getMonth ()]; + + // Abreviated month name + case 'b': return this.AbrMonths[d.getMonth ()]; + + // Month number with 2 digits + case 'm': return this.pad (d.getMonth () + 1); + + // Year with 4 digits + case 'Y': return d.getFullYear (); + } + + return token; + } + + ,strftime: function (date, format) + { + if (!date) + return ''; + + return format.replace (this.regexp, this.regexpFunc.bind (this, date)); + } +}; + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/error.js b/debian/hedera-web/usr/share/hedera-web/js/vn/error.js new file mode 100644 index 00000000..9980d59e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/error.js @@ -0,0 +1,17 @@ +/** + * This class stores the database errors. + **/ +Vn.Error = new Class +({ + domain: null + ,code: null + ,message: null + + ,initialize: function (domain, code, message) + { + this.domain = domain; + this.code = code; + this.message = message; + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/hash-listener.js b/debian/hedera-web/usr/share/hedera-web/js/vn/hash-listener.js new file mode 100644 index 00000000..38d4b23f --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/hash-listener.js @@ -0,0 +1,12 @@ +/** + * Class to handle the URL. + **/ +Vn.HashListener = new Class +({ + Extends: Vn.Object + + ,changed: function () + { + this.signalEmit ('changed'); + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/hash-param.js b/debian/hedera-web/usr/share/hedera-web/js/vn/hash-param.js new file mode 100644 index 00000000..e0a7655b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/hash-param.js @@ -0,0 +1,87 @@ + +Vn.HashParam = new Class +({ + Extends: Vn.Object + ,Tag: 'vn-hash-param' + ,Parent: 'param' + ,Properties: + { + param: + { + type: Vn.Param + ,set: function (x) + { + this.link ({_param: x}, {'changed': this._onParamChange}); + this._refreshParam (); + } + ,get: function () + { + return this._param; + } + }, + key: + { + type: String + ,set: function (x) + { + this._key = x; + this._onHashChange (); + } + ,get: function () + { + return this._key; + } + } + } + + ,lock: false + ,value: undefined + ,_key: null + + ,initialize: function (props) + { + this.parent (props); + var listener = Vn.Hash.getListener (); + this.link ({_listener: listener}, {'changed': this._onHashChange}); + this._onHashChange (); + } + + ,_onHashChange: function () + { + if (!this._key || !this._listener) + return; + + var newValue = Vn.Hash.get (this._key); + + if (this.value != newValue) + { + this.value = newValue; + this.signalEmit ('changed'); + this._refreshParam (); + } + } + + ,_refreshParam: function () + { + if (this._param && !this.lock) + { + this.lock = true; + this._param.value = this.value; + this.lock = false; + } + } + + ,_onParamChange: function () + { + if (this.lock) + return; + + var map = {}; + map[this.key] = this._param.value; + + this.lock = true; + Vn.Hash.add (map); + this.lock = false; + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/hash.js b/debian/hedera-web/usr/share/hedera-web/js/vn/hash.js new file mode 100644 index 00000000..3c47d40b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/hash.js @@ -0,0 +1,129 @@ +/** + * Class to handle the URL. + **/ +Vn.Hash = +{ + _hash: null + ,_hashMap: {} + ,_listener: null + + ,initialize: function () + { + this._listener = new Vn.HashListener (); + + this._hashChangedHandler = this._hashChanged.bind (this); + window.addEventListener ('hashchange', this._hashChangedHandler); + this._hashChanged (); + } + + ,destroy: function () + { + window.removeEventListener ('hashchange', this._hashChangedHandler); + } + + ,getListener: function () + { + return this._listener; + } + + /** + * Gets the hash part of the URL. + * + * @param {string} key The variable name + **/ + ,get: function (key) + { + return this._hashMap[key]; + } + + /** + * Sets the hash part of the URL, respecting the current hash variables. + * + * @param {Object} map A key-value map + **/ + ,add: function (map) + { + var newMap = this._hashMap; + + for (var key in map) + newMap[key] = map[key]; + + this.set (newMap); + } + + /** + * Sets the hash part of the URL. + * + * @param {Object} map A key-value map + **/ + ,set: function (map) + { + for (var key in map) + if (map[key] === null || map[key] === undefined) + delete map[key]; + + var newHash = this.make (map); + + if (newHash !== this._hash) + { + this._hashMap = map; + this._hash = newHash; + + this._blockChanged = true; + location.hash = newHash; + this._blockChanged = false; + + this._listener.changed (); + } + } + + /** + * Creates a URL with the given hash data. + * + * @param {Object} map A key-value map + * @param {boolean} add %true to combine with the current map, %false otherwise + * @return {String} The URL + **/ + ,make: function (map, add) + { + var hash = '#!'; + + if (add) + for (var key in this._hashMap) + if (!map[key]) + map[key] = this._hashMap[key]; + + for (var key in map) + { + if (hash.length > 2) + hash += '&'; + + hash += key +'='+ map[key]; + } + + return hash; + } + + ,_hashChanged: function () + { + var newHash = location.hash; + + if (this._blockChanged || newHash === this._hash) + return; + + var newMap = hashMap = {}; + var kvPairs = newHash.substr(2).split ('&'); + + for (var i = 0; i < kvPairs.length; i++) + { + var kvPair = kvPairs[i].split ('=', 2); + + if (kvPair[0]) + newMap[kvPair[0]] = kvPair[1]; + } + + this._hashMap = newMap; + this._hash = newHash; + this._listener.changed (); + } +}; diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/http-request.js b/debian/hedera-web/usr/share/hedera-web/js/vn/http-request.js new file mode 100644 index 00000000..2c47b24a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/http-request.js @@ -0,0 +1,30 @@ +Vn.HttpRequest = new Class +({ + kvPairs: {} + + ,add: function (map) + { + for (var key in map) + this.kvPairs[key] = map[key]; + } + + ,send: function (file, callback) + { + this.request = new XMLHttpRequest (); + this.request.open ('post', file, true); + this.request.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded'); + this.request.onreadystatechange = this.requestStateChanged.bind (this, callback); + this.request.send (Vn.Url.makeUri (this.kvPairs)); + } + + ,requestStateChanged: function (callback) + { + if (this.request.readyState == 4 && callback) + callback (this, this.request.status == 200); + } + + ,getJson: function () + { + return eval ('('+ this.request.responseText +')'); + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/ie.js b/debian/hedera-web/usr/share/hedera-web/js/vn/ie.js new file mode 100644 index 00000000..b6910a3b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/ie.js @@ -0,0 +1,139 @@ + +Vn.Browser = +{ + getPageYOffset: function () + { + if (document.documentElement.scrollTop) + return document.documentElement.scrollTop; + else + return document.body.scrollTop; + }, + + getPageXOffset: function () + { + if (document.documentElement.scrollLeft) + return document.documentElement.scrollLeft; + else + return document.body.scrollLeft; + }, + + getInnerHeight: function () + { + if (document.documentElement.clientHeight) + return document.documentElement.clientHeight; + else + return document.body.clientHeight; + }, + + getInnerWidth: function () + { + if (document.documentElement.clientWidth) + return document.documentElement.clientWidth; + else + return document.body.clientWidth; + }, + + createRadio: function (radioName) + { + var radio; + + try { + radio = document.createElement (''); + } + catch (e) + { + radio = document.createElement ('input'); + radio.type = 'radio'; + radio.name = radioName; + } + + return radio; + }, + + setInputTypeNumber: function (input) + { + input.type = 'text'; + } +}; + +if (!Function.bind) +{ + Function.prototype.bind = function () + { + var bindFunc = this; + var bindThis = arguments[0]; + var bindArgs = arguments; + + var IE_bind = function () + { + var args = new Array (); + + for (var i = 1; i < bindArgs.length; i++) + args.push (bindArgs[i]); + for (var i = 0; i < arguments.length; i++) + args.push (arguments[i]); + + bindFunc.apply (bindThis, args); + } + + return IE_bind; + } +} + +// attachEvent -> addEventListener + +if (window.attachEvent && !window.addEventListener) +{ + function IE_addEventListener (signal, func, capture) + { + var obj = this; + + func.IE_eventHandler = function (event) + { + event.target = event.srcElement; + event.layerY = event.clientY; + event.layerX = event.clientX; + event.pageX = event.offsetX; + event.pageY = event.offsetY; + event.stopPropagation = function () + { + this.cancelBubble = true; + } + + func.call (obj, event); + } + + this.attachEvent ('on' + signal, func.IE_eventHandler); + } + + function IE_removeEventListener (signal, func, capture) + { + this.detachEvent ('on' + signal, func.IE_eventHandler); + } + + window.addEventListener = IE_addEventListener; + window.removeEventListener = IE_removeEventListener; + document.addEventListener = IE_addEventListener; + document.removeEventListener = IE_removeEventListener; + + var IE_createElement = document.createElement; + + document.createElement = function (tagName) + { + var node = IE_createElement (tagName); + node.addEventListener = IE_addEventListener; + node.removeEventListener = IE_removeEventListener; + return node; + } +} + +// ActiveXObject ('Microsoft.XMLHTTP') -> XMLHttpRequest + +if (!window.XMLHttpRequest && window.ActiveXObject) +{ + function XMLHttpRequest () + { + return new ActiveXObject ('Microsoft.XMLHTTP'); + } +} + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/locale.js b/debian/hedera-web/usr/share/hedera-web/js/vn/locale.js new file mode 100644 index 00000000..dd865869 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/locale.js @@ -0,0 +1,60 @@ +/** + * Class to manage the internationalization. + **/ +Vn.Locale = +{ + strings: {} + + ,language: null + + ,load: function (path, callback) + { + if (!this.language) + { + var language = navigator.language.substr (0, 2); + this.language = language ? language : 'es'; + } + + var file = 'locale/'+ this.language +'/'+ path +'.json' + +'?'+ Vn.Cookie.get ('hedera_version'); + + var request = new XMLHttpRequest (); + request.open ('get', file, true); + request.onreadystatechange = this.loadDone.bind (this, request, callback); + request.send (); + } + + ,loadDone: function (request, callback) + { + if (request.readyState != 4) + return; + + var success = false; + + if (request.status == 200) + { + try { + this.add (eval ('('+ request.responseText +')')); + success = true; + } + catch (e) { + console.log ('Locale: %s', e); + } + } + + callback (success); + } + + ,add: function (strings) + { + for (var stringId in strings) + this.strings[stringId] = strings[stringId]; + } +} + +function _(stringId) +{ + var string = Vn.Locale.strings[stringId]; + return (string) ? string : stringId; +} + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/main.js b/debian/hedera-web/usr/share/hedera-web/js/vn/main.js new file mode 100644 index 00000000..c1c323e5 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/main.js @@ -0,0 +1,199 @@ +/** + * The main namespace. + **/ +var Vn = +{ + Config: {} + ,jsIncludes: {} + ,cssIncludes: {} + ,xmlIncludes: {} + ,customTags: {} + ,head: document.getElementsByTagName ('head')[0] + ,isMobileCached: null + + ,getVersion: function () + { + if (this._version === undefined) + { + var re = /[; ]hedera_version=([^\\s;]*)/; + var sMatch = (' '+ document.cookie).match (re); + this._version = (sMatch) ? '?'+ unescape (sMatch[1]) : ''; + } + + return this._version; + } + + /** + * Includes a new CSS stylesheet in the current document, if the stylesheet + * its already included, does nothing. + * + * @param {string} fileName The stylesheet file name + **/ + ,includeCss: function (fileName) + { + var cssData = this.cssIncludes[fileName]; + + if (!cssData) + { + var link = document.createElement ('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = fileName +'?'+ Vn.Cookie.get ('hedera_version'); + this.head.appendChild (link); + + this.cssIncludes[fileName] = + { + included: true + ,link: link + }; + } + else if (!cssData.included) + { + cssData.link.disabled = false; + cssData.included = true; + } + } + + /** + * Excludes a CSS stylesheet from the current document. + * + * @param {string} fileName The stylesheet file name + **/ + ,excludeCss: function (fileName) + { + var cssData = this.cssIncludes[fileName]; + + if (cssData && cssData.included) + { + cssData.link.disabled = true; + cssData.included = false; + } + } + + /** + * Includes a new Javascript in the current document, if the script + * its already included, does nothing. + * + * @param {string} fileName The script file name + * @param {Function} callback The function to call when script is + * downloaded and included + **/ + ,includeJs: function (fileName, callback, skipVersion) + { + var includeData = this.jsIncludes[fileName]; + + if (includeData === undefined) + { + var src = fileName; + + if (!skipVersion) + src = src +'?'+ Vn.Cookie.get ('hedera_version'); + + var script = document.createElement ('script'); + script.type = 'text/javascript'; + script.src = src; + + includeData = { + script: script + ,callbacks: [] + ,loaded: false + }; + + if (callback) + includeData.callbacks.push (callback); + + script.onload = + this.jsLoaded.bind (this, includeData, true); + script.onerror = + this.jsLoaded.bind (this, includeData, false); + script.onreadystatechange = + this.jsStateChanged.bind (this, includeData); + + this.jsIncludes[fileName] = includeData; + + this.head.appendChild (script); + } + else if (callback) + { + if (includeData.loaded) + callback (); + else + includeData.callbacks.push (callback); + } + } + + ,jsStateChanged: function (includeData) + { + console.log ('js: '+ includeData.script.readyState); + + if (includeData.script.readyState == 'complete') + this.jsLoaded (includeData, true); + } + + ,jsLoaded: function (includeData, success) + { + if (includeData.loaded) + return; + + for (var i = 0; i < includeData.callbacks.length; i++) + includeData.callbacks[i] (success); + + includeData.loaded = true; + includeData.callbacks = null; + } + + ,loadXml: function (path, callback) + { + var includeData = this.xmlIncludes[path]; + + if (!includeData) + { + var request = new XMLHttpRequest (); + request.onreadystatechange = + this.onXmlReady.bind (this, request, path, callback); + request.open ('get', path +'?'+ Vn.Cookie.get ('hedera_version'), true); + request.send (); + } + else if (callback) + callback (true); + } + + ,onXmlReady: function (request, path, callback) + { + if (request.readyState != 4) + return; + + if (request.status == 200) + this.xmlIncludes[path] = request.responseXML; + + if (callback) + callback (request.status == 200); + } + + ,getXml: function (path) + { + return this.xmlIncludes[path]; + } + + /** + * Checks if user is using a mobile browser. + * + * return {boolean} %true if is mobile, %false otherwise. + **/ + ,isMobile: function () + { + if (this.isMobileCached === null) + { + var regExp = /(Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone)/i; + this.isMobileCached = navigator.userAgent.match (regExp); + } + + return this.isMobileCached; + } + + ,get: function (id) + { + return document.getElementById (id); + } +}; + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/main.php b/debian/hedera-web/usr/share/hedera-web/js/vn/main.php new file mode 100755 index 00000000..d8198cb3 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/main.php @@ -0,0 +1,32 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/mutators.js b/debian/hedera-web/usr/share/hedera-web/js/vn/mutators.js new file mode 100644 index 00000000..ce2fece3 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/mutators.js @@ -0,0 +1,54 @@ + +Class.Mutators.Tag = function (tagName) +{ + Vn.customTags[tagName] = this; + + if (this.parent) + { + this.implement ({Parent: this.parent.Parent}); + this.implement ({Child: this.parent.Child}); + this.implement ({Properties: {}}); + } + + this.extend ({Tag: tagName}); +}; + +Class.Mutators.Properties = function (props) +{ + var parentProps; + + for (var propName in props) + { + var prop = props[propName]; + + if (!prop.get && !prop.set && prop.writable === undefined) + prop.writable = true; + } + + if (this.parent && (parentProps = this.parent.Properties)) + for (var propName in parentProps) + props[propName] = parentProps[propName]; + + this.extend ({Properties: props}); + Object.defineProperties (this.prototype, props); +}; + +Class.Mutators.Parent = function (propName) +{ + this.extend ({Parent: propName}); +}; + +Class.Mutators.Child = function (propName) +{ + this.extend ({Child: propName}); +}; + +Class.Mutators.Xml = function (path) +{ + if (path) + { + Vn.loadXml (path); + this.extend ({Xml: path}); + } +} + diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/node.js b/debian/hedera-web/usr/share/hedera-web/js/vn/node.js new file mode 100644 index 00000000..f785f474 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/node.js @@ -0,0 +1,68 @@ + +Vn.Node = +{ + removeChilds: function (node) + { + var childs = node.childNodes; + + if (childs) + while (childs.length > 0) + node.removeChild (childs[0]); + } + + ,remove: function (node) + { + if (node.parentNode) + node.parentNode.removeChild (node); + } + + ,setText: function (node, text) + { + Vn.Node.removeChilds (node); + + if (text) + node.appendChild (document.createTextNode (text)); + } + + ,addClass: function (node, className) + { +/* var classes = node.className.split (' '); + + if (classes.split (' ').indexOf (className) == -1) +*/ node.className = className +' '+ node.className; + } + + ,removeClass: function (node, className) + { + var index = 0; + var found = false; + var classes = node.className.split (' '); + + while ((index = classes.indexOf (className, index)) != -1) + { + classes.splice (index, 1); + found = true; + } + + if (found) + node.className = classes.join (' '); + } + + ,hide: function (node) + { + node.style.display = 'none'; + } + + ,show: function (node) + { + var style = window.getComputedStyle (node); + + if (style.display === 'none') + node.style.display = 'initial'; + } +}; + +function $ (id) +{ + return document.getElementById (id); +} diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/object.js b/debian/hedera-web/usr/share/hedera-web/js/vn/object.js new file mode 100644 index 00000000..0927f0ea --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/object.js @@ -0,0 +1,187 @@ +/** + * The main base class. Manages the signal system. + * + * @param signals Map with all connected signal handlers + **/ +Vn.Object = new Class +({ + Tag: 'vn-object' + ,Properties: {} + + ,signals: {} + ,links: {} + ,refCount: 1 + + ,initialize: function (props) + { + for (var prop in props) + this[prop] = props[prop]; + } + + ,ref: function () + { + this.refCount++; + return this; + } + + ,unref: function () + { + this.refCount--; + + if (this.refCount === 0) + this._destroy (); + } + + ,loadXml: function (builder, node) + { + return null; + } + + /** + * Conects a signal with a function. + * + * @param {String} id The signal identifier + * @param {Function} callback The callback + * @param {Object} instance The instance + **/ + ,on: function (id, callback, instance) + { + if (!(callback instanceof Function)) + { + console.warn ('Vn.Object: Invalid callback for signal \'%s\'', id); + return; + } + + if (!this.signals[id]) + this.signals[id] = []; + + this.signals[id].push + ({ + blocked: false + ,callback: callback + ,instance: instance + }); + } + + /** + * Locks/Unlocks a signal emission to the specified object. + * + * @param {String} id The signal identifier + * @param {Function} callback The callback + * @param {Boolean} block %true for lock the signal, %false for unlock + **/ + ,blockSignal: function (id, callback, block, instance) + { + var callbacks = this.signals[id]; + + if (!callbacks) + return; + + for (var i = 0; i < callbacks.length; i++) + if (callbacks[i].callback == callback + && callbacks[i].instance == instance) + callbacks[i].blocked = block; + } + + /** + * Emits a signal in the current object. + * + * @param {String} id The signal identifier + **/ + ,signalEmit: function (id) + { + var callbacks = this.signals[id]; + + if (!callbacks) + return; + + var callbackArgs = []; + callbackArgs.push (this); + + for (var i = 1; i < arguments.length; i++) + callbackArgs.push (arguments[i]); + + for (var i = 0; i < callbacks.length; i++) + if (!callbacks[i].blocked) + callbacks[i].callback.apply (callbacks[i].instance, callbackArgs); + } + + /** + * Disconnects a signal from current object. + * + * @param {String} id The signal identifier + * @param {Function} callback The connected callback + * @param {Object} instance The instance + **/ + ,disconnect: function (id, callback, instance) + { + var callbacks = this.signals[id]; + + if (!callbacks) + return; + + for (var i = 0; i < callbacks.length; i++) + if (callbacks[i].callback == callback + && callbacks[i].instance == instance) + callbacks.splice (i--, 1); + } + + /** + * Disconnects all signals for the given instance. + * + * @param {Object} instance The instance + **/ + ,disconnectByInstance: function (instance) + { + for (var signalId in this.signals) + { + var callbacks = this.signals[signalId]; + + for (var i = 0; i < callbacks.length; i++) + if (callbacks[i].instance == instance) + callbacks.splice (i--, 1); + } + } + + /** + * Destroys the object, this method should only be called before losing + * the last reference to the object. + **/ + ,_destroy: function () + { + var links = this.links; + + for (var key in links) + links[key].disconnectByInstance (this); + + delete this.links; + delete this.signals; + } + + ,link: function (prop, handlers) + { + for (var key in prop) + { + var newObject = prop[key]; + var oldObject = this[key]; + + if (oldObject) + { + oldObject.disconnectByInstance (this); + oldObject.unref (); + } + + this[key] = newObject; + + if (newObject) + { + this.links[key] = newObject.ref (); + + for (var signal in handlers) + newObject.on (signal, handlers[signal], this); + } + else if (oldObject) + delete this.links[key]; + } + } +}); diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/param.js b/debian/hedera-web/usr/share/hedera-web/js/vn/param.js new file mode 100644 index 00000000..a62df1b1 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/param.js @@ -0,0 +1,65 @@ +/** + * Simply a linkable value holder. + **/ +Vn.Param = new Class +({ + Extends: Vn.Object + ,Tag: 'vn-param' + ,Properties: + { + value: + { + type: String + ,set: function (x) + { + if (Vn.Value.compare (x, this._value)) + return; + + if (x instanceof Date) + x = x.clone (); + + this._value = x; + + if (this._master && !this.masterLock) + { + this.masterLock = true; + this._master.value = x; + this.masterLock = false; + } + + this.signalEmit ('changed'); + } + ,get: function () + { + return this._value; + } + }, + master: + { + type: Vn.Param + ,set: function (x) + { + this.link ({_master: x}, {'changed': this._onMasterChange}); + this._onMasterChange (); + } + ,get: function () + { + return this._master; + } + } + } + + ,_value: undefined + ,_master: null + ,masterLock: false + + ,_onMasterChange: function () + { + if (this.masterLock) + return; + + this.masterLock = true; + this.value = this._master.value; + this.masterLock = false; + } +}) diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/url.js b/debian/hedera-web/usr/share/hedera-web/js/vn/url.js new file mode 100644 index 00000000..5371b8bd --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/url.js @@ -0,0 +1,74 @@ +/** + * Class to handle the URL. + **/ +Vn.Url = +{ + /** + * Gets the value of a URL variable. + * + * @param {string} key The variable name + **/ + getQuery: function (key) + { + var regExp = new RegExp ('[\?\&]'+ key +'=([^\&]*)(\&?)', 'i'); + var value = location.search.match (regExp); + + return value ? value[1] : value; + } + + /** + * Sets the value of a URL variable. + * + * @param {string} key The variable name + * @param {string} value The new value + **/ + ,setQuery: function (key, value) + { + var changed = true; + var found = false; + var newPair = key +'='+ value; + var kvPairs = location.search.substr(1).split ('?'); + + for (var i = 0; i < kvPairs.length; i++) + { + var kvPair = kvPairs[i].split ('=', 1); + + if (kvPair[0] == key) + { + if (kvPair[1] != value) + kvPairs.splice (i, 1, newPair); + else + changed = false; + + found = true; + break; + } + } + + if (!found) + kvPairs.push (newPair); + + if (changed) + document.location.hash = '?'+ kvPairs.join ('&'); + } + + ,makeUri: function (map) + { + var post = ''; + + for (var key in map) + { + var value = map[key]; + + if (post.length > 2) + post += '&'; + + if (typeof value == 'boolean') + value = new Number (value); + + post += key +'='+ encodeURIComponent (value); + } + + return post; + } +}; diff --git a/debian/hedera-web/usr/share/hedera-web/js/vn/value.js b/debian/hedera-web/usr/share/hedera-web/js/vn/value.js new file mode 100644 index 00000000..43c67f78 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/js/vn/value.js @@ -0,0 +1,63 @@ + +Vn.Value = +{ + regexpNumber: /%\.([0-9]+)d/g + ,regexpString: /%s/g + + ,compare: function (a, b) + { + if (a === b) + return true; + if (typeof a === typeof b && a instanceof Date) + return a.getTime () === b.getTime (); + + return false; + } + + ,format: function (value, format) + { + if (value === null || value === undefined) + return ''; + + if (format) + switch (typeof value) + { + case 'number': + return format.replace (this.regexpNumber, + this.replaceNumber.bind (null, value)); + case 'string': + return format.replace (this.regexpString, + this.replaceString.bind (null, value)); + case 'object': + if (value instanceof Date) + return Vn.Date.strftime (value, format); + } + + return value; + } + + ,replaceNumber: function (value, token, digits) + { + return new Number (value).toFixed (parseInt (digits)); + } + + ,replaceString: function (value) + { + return value; + } +}; + +function sprintf (formatString) +{ + var args = arguments; + + if (args.length <= 1) + return formatString; + + var i = 1; + return formatString.replace (/%[s|d]/g, function () + { + return args[i++]; + }); +} + diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/address-list.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/address-list.json new file mode 100755 index 00000000..9d1b959e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/address-list.json @@ -0,0 +1,11 @@ +{ + "Addresses": "Direccions" + + ,"Return": "Tornar" + ,"AddAddress": "Afegir adreça" + + ,"SetAsDefault": "Establir com per defecte" + ,"RemoveAddress": "Esborrar direcció" + ,"EditAddress": "Modificar direcció" + ,"AreYouSureDeleteAddress": "Estàs segur de que vols eliminar la direcció?" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/address.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/address.json new file mode 100755 index 00000000..79c204a8 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/address.json @@ -0,0 +1,15 @@ +{ + "AddEditAddress": "Afegir o modificar adreça" + + ,"Name": "Consignatari" + ,"Address": "Direcció" + ,"City": "Ciutat" + ,"ZipCode": "Codi postal" + ,"Country": "País" + ,"Province": "Província" + + ,"Return": "Tornar" + ,"Accept": "Acceptar" + + ,"AddressChangedSuccessfully": "Adreça modificada correctament" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/conf.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/conf.json new file mode 100755 index 00000000..0dfa287d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/account/conf.json @@ -0,0 +1,19 @@ +{ + "Configuration": "Configuració" + + ,"UserNumber": "N d'usuari" + ,"UserName": "Nom d'usuari" + ,"Password": "Contrasenya" + ,"Email": "Correu electrònic" + ,"Billing": "Facturació" + ,"ReceiveInvoicesByEmail": "Rebre factures per correu electrònic" + + ,"NewPassword": "Nova contrasenya" + ,"RepeatPassword": "Repetir contrasenya" + + ,"MustReloginIfChange": "Per canviar el nom d'usuari hauràs de tornar a iniciar sessió" + ,"PasswordsChanged": "Contrasenya modificada!" + ,"PasswordsDoesntMatch": "Les contrasenyes no coincideixen!" + + ,"Addresses": "Adreces" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/access-log.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/access-log.json new file mode 100644 index 00000000..811c8490 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/access-log.json @@ -0,0 +1,15 @@ +{ + "AccessLog": "Registre d'accessos" + + ,"UserNumber:": "N d'usuari:" + ,"User:": "Usuari:" + ,"Phone:": "Telèfon:" + ,"Mobile:": "Mòbil:" + + ,"Access": "Accés" + ,"OS": "SO" + ,"Browser": "Navegador" + ,"Version": "Versió" + ,"Javascript": "Javascript" + ,"Cookies": "Cookies" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/links.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/links.json new file mode 100755 index 00000000..b5e398ab --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/links.json @@ -0,0 +1,6 @@ +{ + "ControlPanel": "Panell de control" + + ,"Module": "Mòdul" + ,"Description": "Descripció" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/photos.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/photos.json new file mode 100755 index 00000000..b7ac94c9 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/photos.json @@ -0,0 +1,12 @@ +{ + "Photos": "Fotos" + + ,"Schema": "Esquema" + ,"ImageName": "Nom de la imatge" + ,"Id": "Id" + ,"ImageFile": "Arxiu d'imatge" + + ,"Upload": "Enviar" + + ,"ImageUploaded": "Imatge pujada correctament" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/shelves.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/shelves.json new file mode 100644 index 00000000..d5f65f95 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/shelves.json @@ -0,0 +1,11 @@ +{ + "Title": "Título" + ,"Store": "Almacén" + ,"Date": "Fecha" + ,"Shelf": "Estantería" + ,"Reign": "Reino" + ,"Family": "Familia" + ,"Name filter": "Filtro por nombre" + ,"Max amount": "Cantidad máxima" + ,"Preview": "Mostrar" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/users.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/users.json new file mode 100755 index 00000000..e43e4bfe --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/users.json @@ -0,0 +1,12 @@ +{ + "UserManagement": "Gestió d'usuaris" + + ,"UserName:": "Nom d'usuari:" + + ,"UserNumber": "N usuari" + ,"UserName": "Nom d'usuari" + ,"Alias": "Alias" + + ,"AccessAsUser": "Suplantar usuari" + ,"AccessLog": "Registre d'accessos" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/visits.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/visits.json new file mode 100755 index 00000000..92ee32b4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/admin/visits.json @@ -0,0 +1,31 @@ +{ + "Visits": "Visites" + ,"VisitsManagement": "Gestió de visites" + + ,"ActiveSessions": "Usuaris conectats" + ,"VisitsQuery": "Consulta de visites" + ,"Refresh": "Actualitzar" + + ,"ActiveSessions:": "Usuaris conectats:" + ,"NewVisitsTotal:": "Noves visites:" + + ,"SessionNumber": "N sessió" + ,"User": "Usuari" + ,"Login": "Hora d'accés" + ,"LastActivity": "Última activitat" + ,"SO": "Sistema Operatiu" + ,"Version": "Versió" + ,"NewVisit": "Nova visita" + + ,"SelectDateInterval": "Selecciona un intèrval de dates" + ,"FromDate:": "Des de el dia:" + ,"ToDate:": "Fins el dia:" + ,"VisitsTotal:": "Total visites:" + + ,"Browser": "Navegador" + ,"MinVersion": "Versió mínima" + ,"MaxVersion": "Versió màxima" + ,"LastVisit": "Última visita" + ,"NewVisits": "Noves visites" + ,"%a, %e %b %Y at %T": "%a, %e %b %Y a las %T" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/agencies/packages.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/agencies/packages.json new file mode 100755 index 00000000..81b0e3cb --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/agencies/packages.json @@ -0,0 +1,9 @@ +{ + "ListByAgency": "Paquets per agència" + + ,"ShowByProvince": "Mostrar desglose per província" + ,"Agency": "Agència" + ,"Exps": "Exps." + ,"Bundles": "Paquets" + ,"Prevision": "Prev." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/agencies/provinces.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/agencies/provinces.json new file mode 100755 index 00000000..16dba728 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/agencies/provinces.json @@ -0,0 +1,10 @@ +{ + "ByProvince": "Desglose per província" + + ,"Return": "Tornar" + + ,"SelectAgency": "Selecciona una agència al llistat de l'esquerra" + ,"Province": "Província" + ,"Expeditions": "Exps." + ,"Left": "Falten" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/about.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/about.json new file mode 100755 index 00000000..8267a217 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/about.json @@ -0,0 +1,47 @@ +{ + "QualityAndVariety": "Qualitat, varietat i servei" + + ,"MaximumFreshness": "Verdnatura t'ofereix un producte amb la màxima frescor garantida, gràcies als seus recepcions diàries de flor i planta procedents d'Holanda, Sud-amèrica, o des del mateix productor." + ,"SquareMeters": "Més de 13.000m d'instal·lacions" + ,"AboutRealms": "Amb flor tallada, verds, artificial i complements" + ,"AboutLocation": "Assentats a València, Madrid, Barcelona, Holanda i França, oferim venda directa a les nostres instal·lacions i repartiment a tot Espanya mitjançant servei propi o agència." + ,"PurchaseThroughWeb": "Compra a través de la nostra web i rep la teva comanda còmodament a la teua floristeria. ¡En menys de 24 hores!" + + ,"WhatMakeUsDifferent": "Que ens fa diferents?" + + ,"DesignVariety": "La varietat en el disseny, la qualitat dels materials utilitzats i el nostre servei de repartiment, et garanteixen un mostrari de gènere dinàmic, sempre fresc i atractiu." + ,"AdaptToYourNeeds": "Verdnatura s'adapta a les necessitats de cada client oferint un ampli ventall de productes, garantit sempre." + ,"TheBestQuality": "La millor qualitat al millor preu. Sense oblidar mai el disseny." + + ,"AtYourService": "Estem al teu servei" + + ,"BuyersAndTraders": "9 compradors especialitzats i els nostres 20 comercials t'assessoraran en tot el que necessitis." + + ,"Training": "Verdnatura formació" + + ,"GoodTraining": "En Verdnatura sabem que una bona formació és imprescindible per al desenvolupament òptim de qualsevol activitat, i com no, també la de florista." + ,"SpecialTrainingPrices": "Perquè el pressupost d'una escola no repercuteixi en la qualitat de la teva formació, col·laborem amb una política de preus especials per a totes aquelles escoles que ho sol·licitin realitzar cursos a les nostres instal·lacions de Verdnatura Silla." + ,"YoutubeChannel": "I no et perdis els vídeos de Canal Verdnatura a Youtube. On trobaràs un munt de consells molt interessants sobre el maneig de la flor." + + ,"HowWeWork": "Com treballem?" + + ,"FirstQualityControl": "1º control de qualitat" + ,"SecondQualityControl": "2º control de qualitat" + ,"ThirdQualityControl": "3º control de qualitat" + ,"FourthQualityControl": "4º control de qualitat" + + ,"AalsmeerAuction": "A les 5: 00h, els nostres responsables de compres adquireixen, en la subhasta d'Aalsmeer i Noaldwijk, el gènere que el productor ha collit el dia anterior." + ,"BeforeAuction": "Després de la seva compra, aquest gènere entra ràpidament en Verdnatura Holland BV, la nostra empresa de Flora Holland, en Aalsmeer." + ,"DirectlyFromProviders": "A més de comprar a través de la subhasta Holandesa, també comprem directament a productors de Colòmbia, Equador, Tailàndia, Malàisia, Àfrica i Austràlia. Aquests productes són supervisats directament pels nostres delegats de compra situats a cada zona. Aquesta mercaderia viatjarà a Amsterdam, sotmesa a un procés de Vaacum i en menys de dues hores des del seu aterratge, estarà a les nostres instal·lacions d'Aalsmeer." + ,"GoodsDischarge": "A les 7: 00h els nostres companys de Aalsmeer comencen a rebre la mercaderia comprada, passant un primer control de qualitat, i donant-la d'alta al nostre estoc. Ja està disponible per als nostres clients a la web." + ,"GoodsTravel": "La mercaderia viatja durant dia i mig a camions amb compartiments estancs a temperatures diferents, de manera que no es trenqui la cadena de fred i viatge en les millors condicions." + ,"GoodsReception": "A la recepció de la mercaderia el responsable de la seva compra revisa l'estat en què arriba, acceptant-la o rebutjant-la segons el cas, es descarrega en fred i ràpidament entra a la nostra càmera." + ,"CustomerOrders": "Els nostres clients poden fer les seves comandes a través del web, per telèfon o venint directament a les nostres instal·lacions. Tenim un equip de comercials especialitzats que t'assessorarà en la teva compra i que t'informarà de les novetats i articles que puguin ser del teu interès, de manera que la teva compra s'ajusti a les teves necessitats i quedis totalment satisfet." + ,"AfterOrder": "Un cop realitzada la comanda, passa al departament de producció. Durant la preparació d'aquest es realitza un nou control de qualitat (el tercer) en què es rebutjarà la mercaderia deficient." + ,"BuyerControl": "Quant es finalitza la preparació, es realitza un nou control (el quart) on un especialista conta i revisa l'estat dels productes. En cas que aquests no compleixin amb els estàndards de qualitat exigits els rebutja i els substitueix per els adequats." + ,"EmbeddedSection": "Seguidament es porta a la secció de encaixat, on la comanda és condicionada per la seva correcta entrega. Cada tipus de lliurament requereix un mètode de encaixat adequat perquè el gènere viatge protegit i arribi al client en perfectes condicions." + ,"AfterEmbedAgency": "Quant el producte ha estat encaixat s'emmagatzema de nou a la cambra fins a la seva sortida per agència o per repartiment propi, rebent el client, en 24h en el cas de l'agència o el mateix dia en el cas del repartiment, còmodament al seu domicili ." + ,"FreshnessGuaranteed": "Aquesta forma de treball garanteix la major frescor per la rapidesa dels processos i pel manteniment de la cadena de fred desde la compra fins a la seva recepció pel nostre client." + + ,"AboutSummary": "75 persones repartides per tothom perquè el nostre client tingui el més ampli catàleg del sector, la flor més fresca, la planta més innovadora, els complements més actuals, i el servei més ràpid possible." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/contact.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/contact.json new file mode 100755 index 00000000..cd909224 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/contact.json @@ -0,0 +1,20 @@ +{ + "IWantCustomer": "Vull ser client!" + + ,"FillFormData": "Ompli el formulari amb les teves dades i en breu ens posarem en contacte amb tu." + ,"OrCallUs": "O si ho prefereixes truca'ns al 963 242 100." + ,"AllFieldsMandatory": "* Tots els camps són obligatoris." + + ,"Name": "Nom" + ,"Surname": "Cognoms" + ,"EMail": "Correu electrònic" + ,"Message": "Missatge" + ,"Address": "Adreça" + ,"PC": "Codi postal" + ,"City": "Ciutat" + ,"Phone": "Telèfon" + ,"Send": "Enviar dades" + + ,"DataSentSuccess": "Les teves dades han estat enviades correctament. En breu ens posarem en contacte amb tu." + ,"ErrorSendingData": "Error en enviar les dades. Si us plau, comprova que has omplert tots els camps i que has introduït el codi antispam correctament." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/home.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/home.json new file mode 100755 index 00000000..eabe79eb --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/home.json @@ -0,0 +1,13 @@ +{ + "Sent": "Enviat" + ,"Author": "Autor" + ,"votes": "vots" + ,"NoAnswerSelected": "No has seleccionat cap resposta" + ,"ThanksForVote": "Gràcies pel teu vot!" + ,"Vote": "Votar" + ,"Total": "Total" + ,"BrownserRecommend": + "Verdnatura recomana utilitzar el navegador web Mozilla Firefox per a obtindre tota la funcionalitat del nostre lloc web." + ,"PressHere": "Clica aquí per descarregar Firefox" +} + diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/location.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/location.json new file mode 100755 index 00000000..2cf84827 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/location.json @@ -0,0 +1,3 @@ +{ + "ShowMap": "Mostrar mapa" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/training.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/training.json new file mode 100755 index 00000000..0967ef42 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/training.json @@ -0,0 +1 @@ +{} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/why.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/why.json new file mode 100755 index 00000000..d958b451 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/cms/why.json @@ -0,0 +1,25 @@ +{ + "AboutCompany": "Per què Verdnatura?" + ,"StorePhoto": "Foto magatzem" + + ,"BecauseOurBigCatalog": "Perquè tenim el catàleg més gran del sector, renovat diariament." + ,"BecauseThisWeb": "Per aquest lloc web, amb stock en temps real sempre a la teua disposició." + ,"BecauseOurShoppingDep": "Per el nostre departament de compres, amb 9 compradors especialitzats." + ,"BecauseOrderIsEasy": "Perquè és molt fàcil realitzar el teu encàrrec mitjançant la web, per telèfon o venint." + ,"BecauseOurPlant": "Per les nostres instal·lacions, vine i visita'ns. T'encantaran." + ,"BecauseOurSalesDep": "Pel nostre departament comercial, amb professionals que sempre ofereixen amb una solució adaptada a les teues necessitats." + ,"BecauseOurWorkShop": "Perquè tenim un taller de confecció per ajudar-te." + ,"BecauseWeHaveWhatYouNeed": "Perquè tenim el que necessites quan ho necessites..." + + ,"AboutDesc": + "Som una empresa dedicada a la venta a l'engrós i distribució d'una amplia gama de complements, verds i flors naturals a frloristeries o altres majoristes." + + ,"AboutService": + "Disposem de servei de repartiment a domicili amb els nostres vehícles per tota la provincia de València i arees limitades de Castelló, Alacant, Murcia, Albacete i Madrid. A la resta de la península enviem mitjançan agències de transport amb servei 24/48 hores (Zeleris, Viaexpress). També realitzaem venda directa a floristes en qualsevol de les nostres instal·lacions." + + ,"AboutDisp": + "La nostra empresa disposa de més de 50 treballadors i diferents sucursals. La principal es troba a València i disposa de més de 8000 m2. També disposem d'un magatzem situat a Mercaflor - Mercavalencia (València) en el qual solament realitzem venda directa." + + ,"AboutOrder": + "Pots realitzar els teus encarrecs i reserves telefonant al +34 607 562 391, per Internet mitjançant el nostre lloc web o bé directament a les nostres instal·lacions." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/basket.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/basket.json new file mode 100755 index 00000000..a9b32469 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/basket.json @@ -0,0 +1,29 @@ +{ + "ShoppingBasket": "Cistella de la compra" + + ,"Delete": "Borrar encàrrec" + ,"GoToCatalog": "Anar al catàleg" + ,"ConfigureOrder": "Configurar encàrrec" + ,"Checkout": "Tramitar encàrrec" + + ,"OrderNumber": "N encàrec" + ,"DateExit": "Data d'eixida" + ,"Warehouse": "Magatzem" + ,"OrderTotal": "Total encàrrec" + + ,"Amount": "Quant" + ,"Pack": "Pack" + ,"Stems": "Tijes" + ,"Avail": "Disp" + ,"Item": "Artícle" + ,"Cat": "Cat" + ,"S1": "Mes" + ,"Color": "Color" + ,"Origin": "Orige" + ,"Price": "Preu" + ,"Disc": "Desc" + ,"Subtotal": "Subtotal" + + ,"OrderItemsUpdated": "La teva comanda porta massa temps obert i ha estat actualitzat, els preus o quantitats dels teus articles poden haver canviat" + ,"RememberReconfiguringImpact": "Recorda que si tornes a configurar la comanda els preus o quantitats dels teus articles podrien canviar" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/catalog.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/catalog.json new file mode 100755 index 00000000..9ff5806a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/catalog.json @@ -0,0 +1,50 @@ +{ + "Catalog": "Catàleg" + ,"SearchResults": "Resultats de cerca" + + ,"SelectFamily": "Selecciona una família" + ,"SelectSubtype": "Selecciona un subtipus en el menú de la dreta" + ,"ArticleNotFound": "Artcle no trobat" + ,"ArticleNotAvailable": "Article no disponible" + + ,"StartOrder": "Començar encàrrec" + ,"ShoppingBasket": "Cistella de la compra" + + ,"StartOrder": "Començar encàrrec" + ,"Basket": "Cistella" + ,"Shopping basket": "Cistella de la compra" + ,"Configure": "Configurar" + ,"Configure shopping basket": "Configurar cistella de la compra" + ,"Date": "Data" + ,"%A, %e of %B": "%A, %e de %B" + ,"Delivery": "Lliurament" + ,"Warehouse": "Magatzem" + ,"Agency": "Agència" + + ,"Realm": "Família" + ,"Subtype": "Subtipus" + ,"Search:": "Cercar:" + ,"GeneralSearch": "Cerca general" + + ,"Amount": "Quant" + ,"Aval": "Disp" + ,"Name": "Nom" + ,"S1": "Mes" + ,"S2": "S2" + ,"Stems": "Tiges" + ,"Cat": "Cat" + ,"Pack": "Pack" + ,"Origin": "Origen" + ,"Price": "Preu" + + ,"from %.2d€": "des de %.2d€" + ,"AddToBasket": "Afegir article" + ,"Add": "Afegir" + ,"Erase": "Esborrar" + ,"Confirm": "Confirmar" + + ,"IndicativePhotos": "* Les fotos són orientatives" + + ,"Added%dOf%s": "Afegits %d de %s" + ,"NoMoreAmountAvailable": "No hi ha més quantitat disponible" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/checkout.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/checkout.json new file mode 100755 index 00000000..991a1816 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/checkout.json @@ -0,0 +1,31 @@ +{ + "ConfigureOrder": "Configurar comanda" + + ,"Cancel": "Cancelar" + ,"Next": "Següent" + + ,"DeliveryOrPickupQuestion": "Vols rebre o recollir la comanda?" + ,"ReceiveThroughtAgency": "Rebre per agència" + ,"ReceiveThroughtRoute": "Repartiment Verdnatura" + ,"PickupInStore": "Recollir en magatzem" + + ,"OrderDateDeliveryQuestion": "Quin dia vols rebre la comanda?" + ,"OrderDatePickupQuestion": "Quin dia vols recollir la comanda?" + ,"AddressQuestion": "On vols rebre la comanda?" + ,"AgencyQuestion": "Per quina agència vols rebre la comanda?" + ,"PickupWarehouseQuestion": "En quin magatzem vols recollir la comanda?" + + ,"ConfirmToAccessCatalog": "Confirma les dades per accedir al catàleg" + ,"Arrival": "Arribada" + ,"Pickup": "Recollida" + ,"%A, %e of %B": "%A, %e de %B" + ,"Agency": "Agència" + ,"Warehouse": "Magatzem" + ,"Confirm": "Confirmar" + + ,"OrderStarted": "Comanda començada" + ,"OrderUpdated": "Comanda actualitzada" + + ,"NoAgeciesAvailableForDate": "No hi ha agències disponibles per a la data i el consignatari seleccionats, modifica la data de recepció de la comanda" + ,"NoWarehousesAvailableForDate": "No hi ha magatzems disponibles per a la data seleccionada, modifica la data de recollida de la comanda" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/confirm.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/confirm.json new file mode 100755 index 00000000..4f0ff42f --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/confirm.json @@ -0,0 +1,25 @@ +{ + "Checkout": "Finalitzar comanda" + + ,"OrderSummary": "Resum de la comanda" + ,"Arrival": "Arribada" + ,"%A, %e of %B": "%A, %e de %B" + ,"Agency": "Agència" + ,"Warehouse": "Magatzem" + + ,"DeliveryAddress": "Adreça d'enviament" + + ,"Import": "Import" + ,"TaxBase": "Base imposable" + ,"VAT": "IVA" + ,"Total": "Total" + + ,"Cancel": "Cancel" + ,"Modify": "Modificar" + ,"Confirm": "Confirmar" + + ,"OrderPlacedSuccessfully": "La teva comanda ha estat realitzat amb èxit" + ,"OrderReserved": "Hem reservat la teva comanda però sembla que hi ha hagut problemes amb el pagament. Contacta amb el teu comercial." + ,"Accept": "D'acord" + ,"PayNow": "Pagar ara" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/invoices.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/invoices.json new file mode 100755 index 00000000..139e621e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/invoices.json @@ -0,0 +1,8 @@ +{ + "Invoices": "Factures" + + ,"Serial": "Sèrie" + ,"Date": "Data" + ,"Import": "Import" + ,"Donwload PDF": "Descarregar PDF" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/orders.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/orders.json new file mode 100755 index 00000000..1732efab --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/orders.json @@ -0,0 +1,36 @@ +{ + "OpenOrders": "Comandes obertes" + + ,"StartOrder": "Començar encàrrec" + ,"ContinueOrder": "Continuar encàrrec" + ,"OrderNumber": "N encàrrec" + ,"DateMake": "Data de creació" + ,"DateExit": "Data d'eixida" + ,"SendMethod": "Forma d'enviament" + + ,"LastOrders": "Últimes comandes" + + ,"PendingBalance:": "Saldo pendent:" + ,"PaymentInfo": "Per realitzar una entrega a compte fes clic al botó de la dreta i fes el pagament a l'empresa corresponent. La quantitat que apareix és el saldo pendent a dia d'avui, no té en compte comandes del futur. Pots realitzar un lliurament a compte de la quantitat que desitgis. Si vols pagar una comanda en concret pots prémer directament el botó de pagament de la comanda." + ,"MakePayment": "Realitzar pagament" + ,"Company": "Empresa" + ,"Pending": "Pendent" + ,"Pay": "Pagar" + ,"Basket": "Cistella" + ,"ShoppingBasket": "Cistella de la compra" + + ,"SeeOrder": "Mostrar detall de l'encàrrec" + ,"TicketNumber": "N ticket" + ,"SentAddress": "Adreça d'enviament" + ,"Consignee": "Consignatari" + ,"Boxes": "Caixes" + ,"TotalWithVAT": "Total amb IVA" + ,"Pending": "Pendent" + ,"PayOrder": "Pagar encàrrec" + + ,"AmountToPay:": "Quantitat a pagar (€):" + ,"AmountError": "La quantitat ha de ser un nombre positiu i inferior o igual a l'import pendent" + ,"PayError": "Error al realitzar el pagament" + + ,"%A, %e of %B": "%A, %e de %B" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/ticket.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/ticket.json new file mode 100755 index 00000000..20681739 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/ecomerce/ticket.json @@ -0,0 +1,30 @@ +{ + "OrderDetail": "Detall de l'encarrec" + + ,"Print": "Imprimir albarà" + + ,"TicketNumber:": "N ticket:" + ,"DateExit:": "Data d'enviament:" + ,"SendMethod:": "Forma d'enviament:" + ,"Notes:": "Notes:" + ,"TicketTotal:": "Total encàrrec:" + ,"(VATIncluded)": "(IVA inclós)" + + ,"PC": "Codi postal" + ,"City": "Ciutat" + ,"Province": "Província" + ,"Address": "Domicili" + ,"Consignee": "Consignatari" + + ,"ItemNumber": "N article" + ,"Amount": "Quant" + ,"Item": "Article" + ,"Category": "Categoria" + ,"S1": "Mes" + ,"Stems": "Tijes" + ,"Color": "Color" + ,"Origin": "Orige" + ,"Price": "Preu" + ,"Disc": "Desc" + ,"Subtotal": "Subtotal" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/news/new.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/news/new.json new file mode 100755 index 00000000..a0cdb622 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/news/new.json @@ -0,0 +1,12 @@ +{ + "AddEditNew": "Afegir o editar notícia" + + ,"Title": "Títol" + ,"NewBody": "Cos" + ,"Tag": "Etiqueta" + + ,"Return": "Tornar" + ,"Accept": "Acceptar" + + ,"NewChangedSuccessfully": "Notícia modificada correctament" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/news/news.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/news/news.json new file mode 100755 index 00000000..00f6b71a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/forms/news/news.json @@ -0,0 +1,12 @@ +{ + "NewsManagement": "Gestió de noticies" + + ,"AddNew": "Afegir noticia" + ,"EditNew": "Edita notícia" + + ,"NewNum": "N notícia" + ,"Date": "Data" + ,"Author": "Autor" + ,"Title": "Títol" + ,"Priority": "Prioritat" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/js/db.js b/debian/hedera-web/usr/share/hedera-web/locale/ca/js/db.js new file mode 100644 index 00000000..1542f2c2 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/js/db.js @@ -0,0 +1,9 @@ +Vn.Locale.add +({ + "ConnError": "Error en la conexió" + ,"InternalError": "S'ha produït un error intern" + ,"BadServerReply": "Resposta del servidor incorrecta" + ,"ModelNotUpdatable": "Aquest model no és actualitzable" + ,"RowNotExists": "El registre no existeix o ha sigut esborrat" + ,"ColNotExists": "La columna no existeix" +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/js/htk.js b/debian/hedera-web/usr/share/hedera-web/locale/ca/js/htk.js new file mode 100644 index 00000000..ac9f9338 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/js/htk.js @@ -0,0 +1,29 @@ +Vn.Locale.add +({ + "True": "Sí" + ,"False": "No" + ,"Null": "Nul" + ,"ChangeDate": "Cambiar Data" + ,"Sort": "Ordenar" + ,"At": "a les" + ,"Of": "de" + ,"OfThe": "del" + ,"Remove": "Esborrar" + ,"Loading": "Carregant" + ,"Loading...": "Carregant..." + ,"ReallyDelete": "Estàs segur que vols esborrar la línia?" + ,"YouMustBeLoggedIn": "Has d'estar registrat com a usuari" + ,"EmptyList": "Llistat buit" + ,"NoData": "Sense dades" + ,"ErrorLoadingData": "Error" + ,"Error": "Error" + ,"Image": "Imatge" + ,"File": "Arxiu" + ,"FileName": "Nom" + ,"UpdateImage": "Afegir o actualitzar Imatge" + ,"UploadFile": "Putjar arxiu" + ,"ImageAdded": "Imatge afegida correctament" + ,"Close": "Tancar" + ,"Previous": "Anterior" + ,"Next": "Següent" +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/js/vn.js b/debian/hedera-web/usr/share/hedera-web/locale/ca/js/vn.js new file mode 100644 index 00000000..ab9776c0 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/js/vn.js @@ -0,0 +1,89 @@ +Vn.Locale.add +({ + "Sunday": "Diumenge" + ,"Monday": "Dilluns" + ,"Tuesday": "Dimarts" + ,"Wednesday": "Dimecres" + ,"Thursday": "Dijous" + ,"Friday": "Divendres" + ,"Saturday": "Dissabte" + + ,"Su": "Dg" + ,"Mo": "Dl" + ,"Tu": "Dt" + ,"We": "Dc" + ,"Th": "Dj" + ,"Fr": "Dv" + ,"Sa": "Ds" + + ,"January": "Gener" + ,"February": "Febrer" + ,"March": "Març" + ,"April": "Abril" + ,"May": "Maig" + ,"June": "Juny" + ,"July": "Juliol" + ,"August": "Agost" + ,"September": "Setembre" + ,"October": "Octubre" + ,"November": "Novembre" + ,"December": "Decembre" + + ,"Jan": "Gen" + ,"Feb": "Febr" + ,"Mar": "Març" + ,"Apr": "Abr" + ,"May": "Maig" + ,"Jun": "Juny" + ,"Jul": "Jul" + ,"Ago": "Ag" + ,"Sep": "Set" + ,"Oct": "Oct" + ,"Nov": "Nov" + ,"Dec": "Des" + + ,"AppName": "Verdnatura" + ,"Beta": "Beta" + ,"User": "Usuari" + ,"Password": "Contrasenya" + ,"Remember": "Recordar" + ,"Enter": "Entrar" + ,"Exit": "Sortir" + ,"ErrorLoadingForm": "Error al carregar formulari" + ,"YoureVisitor": "Solament estàs de visita?" + ,"NewVersionAvailable": "Hi ha una nova actualització, la pàgina recargargará automàticament per descarregar-la" + ,"ChangeLog": "Canvis recents" + ,"CookiesNotification": "En utilitzar aquest lloc web acceptes l'ús de cookies per a la personalització de continguts i anàlisi." + ,"ReturnToOldWebsite": "Web antiga" + ,"TestTheNewWebsite": "Prova la nova web!" + ,"Print": "Imprimir" + + ,"Menu": "Menú" + + ,"Home": "Inici" + ,"Orders": "Encàrrecs" + ,"Basket": "Cistella" + ,"Last orders": "Últims comandes" + ,"Invoices": "Factures" + ,"Catalog": "Catàleg" + ,"About": "Coneix-nos" + ,"About us": "Quant a" + ,"Why": "Per què?" + ,"Location": "Localització" + ,"Administration": "Administració" + ,"Control panel": "Panell de control" + ,"Users": "Usuaris" + ,"Visits": "Visites" + ,"News": "Noticies" + ,"Photos": "Fotos" + ,"Shelves": "Estanterías" + ,"Contact": "Vull ser client" + ,"Training": "Formació" + ,"Agencies": "Agències" + ,"Configuration": "Configuració" + ,"Account": "Compte" + ,"Addresses": "Direccions" + + ,"SessionExpired": "Has estat massa temps inactiu i la sessió ha expirat." + ,"InvalidLogin": "Usuari o contrasenya incorrectes. Recorda que s'hi distingeix entre majúscula i minúscula." +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/login.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/login.json new file mode 100755 index 00000000..02719668 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/login.json @@ -0,0 +1,9 @@ +{ + "User": "Usuari" + ,"Password": "Contrasenya" + ,"NotCloseSession": "No tancar sessió" + ,"IWantToKnowMore": "Vull saber-ne més!" + ,"Enter": "Entrar" + ,"LoginMail": "clientes@verdnatura.es" + ,"LoginPhone": "+34 607 562 391" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/tpv.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/tpv.json new file mode 100755 index 00000000..58ac070e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/tpv.json @@ -0,0 +1,4 @@ +{ + "PaymentComplete": "Pagament acabat, ja pots tornar a la nostra pàgina web." + ,"ReturnToWeb": "Tornar a Verdnatura" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/update-browser.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/update-browser.json new file mode 100755 index 00000000..888067e7 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/update-browser.json @@ -0,0 +1,4 @@ +{ + "UpdateYourBrowser": "Actualitza el teu navegador" + ,"ContinueAnyway": "Continuar igualment" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/version-menu.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/version-menu.json new file mode 100755 index 00000000..3f51080b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/version-menu.json @@ -0,0 +1,8 @@ +{ + "Welcome to Verdnatura, where are you going?": "Benvingut a Verdnatura, On vols anar?" + + ,"New website": "Nova web" + ,"(Fantastic)": "(Fantàstica)" + ,"Old website": "Antiga web" + ,"(Best choose new)": "(Millor triï la nova)" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/web.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/web.json new file mode 100755 index 00000000..42bc0f69 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/pages/web.json @@ -0,0 +1,4 @@ +{ + "Welcome": "Benvingut/da" + ,"Exit": "Eixir" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/ca/rest/query.json b/debian/hedera-web/usr/share/hedera-web/locale/ca/rest/query.json new file mode 100755 index 00000000..3bc546a6 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/ca/rest/query.json @@ -0,0 +1,5 @@ +{ + "InvalidAction": "Acció invàlida" + + ,"EmptyQuery": "Consulta buida" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/address-list.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/address-list.json new file mode 100755 index 00000000..db745085 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/address-list.json @@ -0,0 +1,11 @@ +{ + "Addresses": "Direcciones" + + ,"Return": "Volver" + ,"AddAddress": "Añadir dirección" + + ,"SetAsDefault": "Establecer como predeterminada" + ,"RemoveAddress": "Borrar dirección" + ,"EditAddress": "Modificar dirección" + ,"AreYouSureDeleteAddress": "¿Estás seguro de que quieres borrar la dirección?" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/address.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/address.json new file mode 100755 index 00000000..613fbf17 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/address.json @@ -0,0 +1,15 @@ +{ + "AddEditAddress": "Añadir o modificar dirección" + + ,"Name": "Consignatario" + ,"Address": "Dirección" + ,"City": "Ciudad" + ,"ZipCode": "Código postal" + ,"Country": "País" + ,"Province": "Provincia" + + ,"Return": "Volver" + ,"Accept": "Aceptar" + + ,"AddressChangedSuccessfully": "Dirección modificada correctamente" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/conf.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/conf.json new file mode 100755 index 00000000..073ccd6e --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/account/conf.json @@ -0,0 +1,19 @@ +{ + "Configuration": "Configuración" + + ,"UserNumber": "Nº usuario" + ,"UserName": "Nombre de usuario" + ,"Password": "Contraseña" + ,"Email": "Correo electrónico" + ,"Billing": "Facturación" + ,"ReceiveInvoicesByEmail": "Recibir facturas por correo electrónico" + + ,"NewPassword": "Nueva contraseña" + ,"RepeatPassword": "Repetir contraseña" + + ,"MustReloginIfChange": "Para cambiar tu nombre de usuario deberás volver a iniciar sesión" + ,"PasswordsChanged": "¡Contraseña modificada!" + ,"PasswordsDoesntMatch": "¡Las contraseñas no coinciden!" + + ,"Addresses": "Direcciones" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/access-log.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/access-log.json new file mode 100644 index 00000000..49042a77 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/access-log.json @@ -0,0 +1,15 @@ +{ + "AccessLog": "Registro de accesos" + + ,"UserNumber:": "Nº usuario:" + ,"User:": "Usuario:" + ,"Phone:": "Teléfono:" + ,"Mobile:": "Móvil:" + + ,"Access": "Acceso" + ,"OS": "SO" + ,"Browser": "Navegador" + ,"Version": "Versión" + ,"Javascript": "Javascript" + ,"Cookies": "Cookies" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/links.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/links.json new file mode 100755 index 00000000..6ce5e497 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/links.json @@ -0,0 +1,6 @@ +{ + "ControlPanel": "Panel de control" + + ,"Module": "Módulo" + ,"Description": "Descripción" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/photos.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/photos.json new file mode 100755 index 00000000..fa200179 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/photos.json @@ -0,0 +1,12 @@ +{ + "Photos": "Fotos" + + ,"Schema": "Esquema" + ,"ImageName": "Nombre de la imagen" + ,"Id": "Id" + ,"ImageFile": "Archivo de imagen" + + ,"Upload": "Enviar" + + ,"ImageUploaded": "Imagen subida correctamente" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/shelves.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/shelves.json new file mode 100644 index 00000000..d5f65f95 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/shelves.json @@ -0,0 +1,11 @@ +{ + "Title": "Título" + ,"Store": "Almacén" + ,"Date": "Fecha" + ,"Shelf": "Estantería" + ,"Reign": "Reino" + ,"Family": "Familia" + ,"Name filter": "Filtro por nombre" + ,"Max amount": "Cantidad máxima" + ,"Preview": "Mostrar" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/users.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/users.json new file mode 100755 index 00000000..b7d55eda --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/users.json @@ -0,0 +1,12 @@ +{ + "UserManagement": "Gestión de usuarios" + + ,"UserName:": "Nombre de usuario:" + + ,"UserNumber": "Nº usuario" + ,"UserName": "Nombre de usuario" + ,"Alias": "Alias" + + ,"AccessAsUser": "Suplantar usuario" + ,"AccessLog": "Registro de accesos" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/visits.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/visits.json new file mode 100755 index 00000000..e2cf749b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/admin/visits.json @@ -0,0 +1,31 @@ +{ + "Visits": "Visitas" + ,"VisitsManagement": "Gestión de visitas" + + ,"ActiveSessions": "Usuarios conectados" + ,"VisitsQuery": "Consulta de visitas" + ,"Refresh": "Actualizar" + + ,"ActiveSessions:": "Usuarios conectados:" + ,"NewVisitsTotal:": "Nuevas visitas:" + + ,"SessionNumber": "Nº sesión" + ,"User": "Usuario" + ,"Login": "Hora de acceso" + ,"LastActivity": "Última actividad" + ,"SO": "Sistema Operativo" + ,"Version": "Versión" + ,"NewVisit": "Nueva visita" + + ,"SelectDateInterval": "Selecciona un intérvalo de fechas" + ,"FromDate:": "Desde el día:" + ,"ToDate:": "Hasta el día:" + ,"VisitsTotal:": "Total visitas:" + + ,"Browser": "Navegador" + ,"MinVersion": "Versión mínima" + ,"MaxVersion": "Versión máxima" + ,"LastVisit": "Última visita" + ,"NewVisits": "Nuevas visitas" + ,"%a, %e %b %Y at %T": "%a, %e %b %Y a las %T" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/agencies/packages.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/agencies/packages.json new file mode 100755 index 00000000..bf360ac3 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/agencies/packages.json @@ -0,0 +1,9 @@ +{ + "ListByAgency": "Bultos por agencia" + + ,"ShowByProvince": "Mostrar desglose por provincia" + ,"Agency": "Agencia" + ,"Exps": "Exps." + ,"Bundles": "Bultos" + ,"Prevision": "Prev." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/agencies/provinces.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/agencies/provinces.json new file mode 100755 index 00000000..91fec022 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/agencies/provinces.json @@ -0,0 +1,10 @@ +{ + "ByProvince": "Desglose por provincia" + + ,"Return": "Volver" + + ,"SelectAgency": "Selecciona una agencia" + ,"Province": "Provincia" + ,"Expeditions": "Exps." + ,"Left": "Faltan" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/about.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/about.json new file mode 100755 index 00000000..7517512a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/about.json @@ -0,0 +1,47 @@ +{ + "QualityAndVariety": "Calidad, variedad y servicio" + + ,"MaximumFreshness": "Verdnatura te ofrece un producto con la máxima frescura garantizada, gracias a sus recepciones diarias de flor y planta procedentes de Holanda, Sudamérica, o desde el mismo productor." + ,"SquareMeters": "Más de 13.000m de instalaciones" + ,"AboutRealms": "Con flor cortada, verdes, artificial y complementos" + ,"AboutLocation": "Asentados en Valencia, Madrid, Barcelona, Holanda y Francia, ofrecemos venta directa en nuestras instalaciones y reparto a toda España mediante servicio propio o agencia." + ,"PurchaseThroughWeb": "Compra a través de nuestra web y recibe tu pedido cómodamente en tu floristería. ¡En menos de 24 horas!" + + ,"WhatMakeUsDifferent": "¿Que nos hace diferentes?" + + ,"DesignVariety": "La variedad en el diseño, la calidad de los materiales utilizados y nuestro servicio de reparto, te garantizan un muestrario de género dinámico, siempre fresco y atractivo." + ,"AdaptToYourNeeds": "Verdnatura se adapta a las necesidades de cada cliente ofreciéndote un amplio abanico de productos, garantizado siempre." + ,"TheBestQuality": "La mejor calidad al mejor precio. Sin olvidar nunca el diseño." + + ,"AtYourService": "Estamos a tu servicio" + + ,"BuyersAndTraders": "9 compradores especializados y nuestros 20 comerciales te asesorarán en todo lo que necesites." + + ,"Training": "Verdnatura formación" + + ,"GoodTraining": "En Verdnatura sabemos que una buena formación es imprescindible para el desarrollo óptimo de cualquier actividad, y cómo no, también la de florista." + ,"SpecialTrainingPrices": "Para que el presupuesto de una escuela no repercuta en la calidad de tu formación, colaboramos con una política de precios especiales para todas aquellas escuelas que lo soliciten realizar cursos en nuestras instalaciones de Verdnatura Silla." + ,"YoutubeChannel": "Y no te pierdas los vídeos de Canal Verdnatura en Youtube. Donde encontrarás un montón de consejos muy interesantes sobre el manejo de la flor." + + ,"HowWeWork": "¿Cómo trabajamos?" + + ,"FirstQualityControl": "1º control de calidad" + ,"SecondQualityControl": "2º control de calidad" + ,"ThirdQualityControl": "3º control de calidad" + ,"FourthQualityControl": "4º control de calidad" + + ,"AalsmeerAuction": "A las 5:00h, nuestros responsables de compras adquieren, en la subasta de Aalsmeer y Noaldwijk, el género que el productor ha cosechado el día anterior." + ,"BeforeAuction": "Tras su compra, este género entra rápidamente en Verdnatura Holland BV, nuestra empresa de Flora Holland, en Aalsmeer." + ,"DirectlyFromProviders": "Además de comprar a través de la subasta Holandesa, también compramos directamente a productores de Colombia, Ecuador, Thailandia, Malasia, África y Australia. Estos productos son supervisados directamente por nuestros delegados de compra ubicados en cada zona. Esta mercancía viajará a Amsterdam, sometida a un proceso de Vaacum y en menos de dos horas desde su aterrizaje, estará en nuestras instalaciones de Aalsmeer." + ,"GoodsDischarge": "A las 7:00h nuestros compañeros de Aalsmeer empiezan a recibir la mercancía comprada, pasando un primer control de calidad, y dándola de alta en nuestro stock. Ya está disponible para nuestros clientes en la web." + ,"GoodsTravel": "La mercancía viaja durante día y medio en camiones con compartimentos estancos a temperaturas diferentes, de manera que no se rompa la cadena de frío y viaje en las mejores condiciones." + ,"GoodsReception": "A la recepción de la mercancía el responsable de su compra revisa el estado en el que llega, aceptándola o rechazándola según el caso, se descarga en frío y rápidamente entra en nuestra cámara." + ,"CustomerOrders": "Nuestros clientes pueden hacer sus pedidos a través de la web, por teléfono o viniendo directamente a nuestras instalaciones. Tenemos un equipo de comerciales especializados que te asesorará en tu compra y que te informará de las novedades y artículos que puedan ser de tu interés, de forma que tu compra se ajuste a tus necesidades y quedes totalmente satisfecho." + ,"AfterOrder": "Una vez realizado el pedido, pasa al departamento de producción. Durante la preparación de este se realiza un nuevo control de calidad (el tercero) en el que se desechará la mercancía deficiente." + ,"BuyerControl": "En cuanto se finaliza la preparación, se realiza un nuevo control (el cuarto) donde un especialista cuenta y revisa el estado de los productos. En caso de que estos no cumplan con los estándares de calidad exigidos los rechaza y los sustituye por los adecuados." + ,"EmbeddedSection": "Seguidamente se lleva a la sección de encajado, donde el pedido es acondicionado para su correcta entrega. Cada tipo de entrega requiere un método de encajado adecuado para que el género viaje protegido y llegue al cliente en perfectas condiciones." + ,"AfterEmbedAgency": "En cuanto el producto ha sido encajado se almacena de nuevo en la cámara hasta su salida por agencia o por reparto propio, recibiéndolo el cliente, en 24h en el caso de la agencia o el mismo día en el caso del reparto, cómodamente en su domicilio." + ,"FreshnessGuaranteed": "Esta forma de trabajo garantiza la mayor frescura por la rapidez los procesos y por el mantenimiento de la cadena de frío desde compra hasta su recepción por nuestro cliente." + + ,"AboutSummary": "75 personas repartidas por casi todo el mundo para que nuestro cliente tenga el más amplio catálogo del sector, la flor más fresca, la planta más novedosa, los complementos más actuales, y el servicio más rápido posible." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/contact.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/contact.json new file mode 100755 index 00000000..8cc1ec53 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/contact.json @@ -0,0 +1,20 @@ +{ + "IWantCustomer": "¡Quiero ser cliente!" + + ,"FillFormData": "Rellena el formulario con tus datos y en breve nos pondremos en contacto contigo." + ,"OrCallUs": "O si lo prefieres llámanos al 963 242 100." + ,"AllFieldsMandatory": "* Todos los campos son obligatorios." + + ,"Name": "Nombre" + ,"Surname": "Apellidos" + ,"EMail": "Correo electrónico" + ,"Message": "Mensaje" + ,"Address": "Dirección" + ,"PC": "Código postal" + ,"City": "Ciudad" + ,"Phone": "Teléfono" + ,"Send": "Enviar datos" + + ,"DataSentSuccess": "Tus datos han sido enviados correctamente. En breve nos pondremos en contacto contigo." + ,"ErrorSendingData": "Error al enviar los datos. Por favor, comprueba que has rellenado todos los campos y que has introducido el código anti-spam correctamente." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/home.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/home.json new file mode 100755 index 00000000..d440f483 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/home.json @@ -0,0 +1,13 @@ +{ + "Sent": "Enviado" + ,"Author": "Autor" + ,"votes": "votos" + ,"NoAnswerSelected": "No has seleccionado ninguna respuesta" + ,"ThanksForVote": "¡Gracias por tu voto!" + ,"Vote": "Votar" + ,"Total": "Total" + ,"BrownserRecommend": + "Verdnatura recomienda utilizar el navegador web Mozilla Firefox para obtener toda la funcionalidad de nuestra página web." + ,"PressHere": "Pulsa aquí para descargar Firefox" +} + diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/location.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/location.json new file mode 100755 index 00000000..2cf84827 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/location.json @@ -0,0 +1,3 @@ +{ + "ShowMap": "Mostrar mapa" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/training.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/training.json new file mode 100755 index 00000000..0967ef42 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/training.json @@ -0,0 +1 @@ +{} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/why.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/why.json new file mode 100755 index 00000000..e651302a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/cms/why.json @@ -0,0 +1,25 @@ +{ + "AboutCompany": "¿Por qué Verdnatura?" + ,"StorePhoto": "Foto almacén" + + ,"BecauseOurBigCatalog": "Porque tenemos el catálogo más grande del sector, renovado diariamente." + ,"BecauseThisWeb": "Por esta página web, con stock en tiempo real siempre a tu disposición." + ,"BecauseOurShoppingDep": "Por nuestro departamento de compras con 9 compradores especializados." + ,"BecauseOrderIsEasy": "Porque es muy fácil hacer tu pedido por web, por teléfono o viniendo." + ,"BecauseOurPlant": "Por nuestras instalaciones, ven y visítanos. Te encantarán." + ,"BecauseOurSalesDep": "Por nuestro departamento comercial, con profesionales que siempre encontrarán una solución a tus necesidades." + ,"BecauseOurWorkShop": "Porque tenemos un taller de confección para ayudarte." + ,"BecauseWeHaveWhatYouNeed": "Porque tenemos lo que necesitas cuando lo necesitas..." + + ,"AboutDesc": + "Somos una empresa dedicada a la venta mayorista y distribución de una amplia gama de complementos, verdes y flores naturales a floristerías u otros mayoristas." + + ,"AboutService": + "Disponemos de servicio de reparto a domicilio con nuestros vehículos por toda la provincia de Valencia y áreas limitadas de Castellón, Alicante, Murcia, Albacete y Madrid enviamos al resto de la península mediante agencias de transporte con servicio 24/48 horas (Zeleris, Viaexpress). También realizamos venta directa a floristas en cualquiera de nuestras instalaciones." + + ,"AboutDisp": + "Nuestra empresa dispone de más de 50 trabajadores y varias sucursales. La principal se encuentra situada en Valencia y cuenta con más de 8000 m2. También disponemos de un almacén situado en Mercaflor - Mercavalencia (Valencia) en el que únicamente realizamos venta directa." + + ,"AboutOrder": + "Puedes realizar tus pedidos y reservas por teléfono llamando al 96 324 21 00, por Internet a través de nuestra página web o bien directamente en nuestras instalaciones." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/basket.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/basket.json new file mode 100755 index 00000000..0c89fbc4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/basket.json @@ -0,0 +1,29 @@ +{ + "ShoppingBasket": "Cesta de la compra" + + ,"Delete": "Borrar pedido" + ,"GoToCatalog": "Ir al catálogo" + ,"ConfigureOrder": "Configurar pedido" + ,"Checkout": "Finalizar pedido" + + ,"OrderNumber": "Nº pedido" + ,"DateExit": "Fecha de salida" + ,"Warehouse": "Almacén" + ,"OrderTotal": "Total" + + ,"Amount": "Cantidad" + ,"Pack": "Pack" + ,"Stems": "Tallos" + ,"Avail": "Disp" + ,"Item": "Artículo" + ,"Cat": "Cat" + ,"S1": "Med" + ,"Color": "Color" + ,"Origin": "Origen" + ,"Price": "Precio" + ,"Disc": "Desc" + ,"Subtotal": "Subtotal" + + ,"OrderItemsUpdated": "Tu pedido lleva demasiado tiempo abierto y ha sido actualizado, los precios o cantidades de tus artículos pueden haber cambiado" + ,"RememberReconfiguringImpact": "Recuerda que si vuelves a configurar el pedido los precios o cantidades de tus artículos podrían cambiar" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/catalog.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/catalog.json new file mode 100755 index 00000000..c184c5df --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/catalog.json @@ -0,0 +1,47 @@ +{ + "Catalog": "Catálogo" + ,"SearchResults": "Resultados de búsqueda" + + ,"SelectFamily": "Selecciona una familia" + ,"SelectSubtype": "Selecciona un subtipo en el menú de la derecha" + ,"ArticleNotFound": "Artículo no encontrado" + ,"ArticleNotAvailable": "Artículo no disponible" + + ,"StartOrder": "Empezar pedido" + ,"Basket": "Cesta" + ,"Shopping basket": "Cesta de la compra" + ,"Configure": "Configurar" + ,"Configure shopping basket": "Configurar cesta de la compra" + ,"Date": "Fecha" + ,"%A, %e of %B": "%A, %e de %B" + ,"Delivery": "Entrega" + ,"Warehouse": "Almacén" + ,"Agency": "Agencia" + + ,"Realm": "Familia" + ,"Subtype": "Subtipo" + ,"Search:": "Buscar:" + ,"GeneralSearch": "Búsqueda general" + + ,"Amount": "Cant" + ,"Aval": "Disp" + ,"Name": "Nombre" + ,"S1": "Med" + ,"S2": "S2" + ,"Stems": "Tallos" + ,"Cat": "Cat" + ,"Pack": "Pack" + ,"Origin": "Origen" + ,"Price": "Precio" + + ,"from %.2d€": "desde %.2d€" + ,"AddToBasket": "Añadir artículo" + ,"Add": "Añadir" + ,"Erase": "Borrar" + ,"Confirm": "Confirmar" + + ,"IndicativePhotos": "* Las fotos son orientativas" + + ,"Added%dOf%s": "Añadidos %d de %s" + ,"NoMoreAmountAvailable": "No hay más cantidad disponible" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/checkout.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/checkout.json new file mode 100755 index 00000000..082e3d6b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/checkout.json @@ -0,0 +1,31 @@ +{ + "ConfigureOrder": "Configurar pedido" + + ,"Cancel": "Cancelar" + ,"Next": "Siguiente" + + ,"DeliveryOrPickupQuestion": "¿Quieres recibir o recoger el pedido?" + ,"ReceiveThroughtAgency": "Recibir por agencia" + ,"ReceiveThroughtRoute": "Reparto Verdnatura" + ,"PickupInStore": "Recoger en almacén" + + ,"OrderDateDeliveryQuestion": "¿Qué día quieres recibir el pedido?" + ,"OrderDatePickupQuestion": "¿Qué día quieres recoger el pedido?" + ,"AddressQuestion": "¿Dónde quieres recibir el pedido?" + ,"AgencyQuestion": "¿Por qué agencia quieres recibir el pedido?" + ,"PickupWarehouseQuestion": "¿En qué almacén quieres recoger el pedido?" + + ,"ConfirmToAccessCatalog": "Confirma los datos para acceder al catálogo" + ,"Arrival": "Llegada" + ,"Pickup": "Recogida" + ,"%A, %e of %B": "%A, %e de %B" + ,"Agency": "Agencia" + ,"Warehouse": "Almacén" + ,"Confirm": "Confirmar" + + ,"OrderStarted": "Pedido empezado" + ,"OrderUpdated": "Pedido actualizado" + + ,"NoAgeciesAvailableForDate": "No hay agencias disponibles para la fecha y el consignatario seleccionados, modifica la fecha de recepción del pedido" + ,"NoWarehousesAvailableForDate": "No hay almacenes disponibles para la fecha seleccionada, modifica la fecha de recogida del pedido" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/confirm.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/confirm.json new file mode 100755 index 00000000..5bd7c389 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/confirm.json @@ -0,0 +1,25 @@ +{ + "Checkout": "Finalizar pedido" + + ,"OrderSummary": "Resumen del pedido" + ,"Arrival": "Llegada" + ,"%A, %e of %B": "%A, %e de %B" + ,"Agency": "Agencia" + ,"Warehouse": "Almacén" + + ,"DeliveryAddress": "Dirección de envío" + + ,"Import": "Importe" + ,"TaxBase": "Base imponible" + ,"VAT": "IVA" + ,"Total": "Total" + + ,"Cancel": "Cancelar" + ,"Modify": "Modificar" + ,"Confirm": "Confirmar" + + ,"OrderPlacedSuccessfully": "Tu pedido ha sido realizado con éxito" + ,"OrderReserved": "Hemos reservado tu pedido pero parece que ha habido problemas con el pago. Contacta con tu comercial." + ,"Accept": "Aceptar" + ,"PayNow": "Pagar ahora" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/invoices.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/invoices.json new file mode 100755 index 00000000..059af357 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/invoices.json @@ -0,0 +1,8 @@ +{ + "Invoices": "Facturas" + + ,"Serial": "Serie" + ,"Date": "Fecha" + ,"Import": "Importe" + ,"Download PDF": "Descargar PDF" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/orders.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/orders.json new file mode 100755 index 00000000..cf543ce0 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/orders.json @@ -0,0 +1,36 @@ +{ + "OpenOrders": "Pedidos abiertos" + + ,"StartOrder": "Empezar pedido" + ,"ContinueOrder": "Continuar pedido" + ,"OrderNumber": "Nº pedido" + ,"DateMake": "Fecha de creación" + ,"DateExit": "Fecha de salida" + ,"SendMethod": "Forma de envío" + + ,"LastOrders": "Últimos pedidos" + + ,"PendingBalance:": "Saldo pendiente:" + ,"PaymentInfo": "Para realizar una entrega a cuenta pulsa en el botón de la derecha y haz el pago en la empresa correspondiente. La cantidad que aparece es el saldo pendiente a día de hoy, no tiene en cuenta pedidos del futuro. Puedes realizar una entrega a cuenta de la cantidad que desees." + ,"MakePayment": "Realizar pago" + ,"Company": "Empresa" + ,"Pending": "Pendiente" + ,"Pay": "Pagar" + ,"Basket": "Cesta" + ,"ShoppingBasket": "Cesta de la compra" + + ,"SeeOrder": "Mostrar detalle del pedido" + ,"TicketNumber": "Nº ticket" + ,"SentAddress": "Dirección de envío" + ,"Consignee": "Consignatario" + ,"Boxes": "Bultos" + ,"TotalWithVAT": "Total con IVA" + ,"Pending": "Pendiente" + ,"PayOrder": "Pagar pedido" + + ,"AmountToPay:": "Cantidad a pagar (€):" + ,"AmountError": "La cantidad debe ser un número positivo e inferior o igual al importe pendiente" + ,"PayError": "Error al realizar el pago" + + ,"%A, %e of %B": "%A, %e de %B" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/ticket.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/ticket.json new file mode 100755 index 00000000..f57b72fc --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/ecomerce/ticket.json @@ -0,0 +1,30 @@ +{ + "OrderDetail": "Detalle del pedido" + + ,"Print": "Imprimir albarán" + + ,"TicketNumber:": "Nº ticket:" + ,"DateExit:": "Fecha de envío:" + ,"SendMethod:": "Forma de envío:" + ,"Notes:": "Notas:" + ,"TicketTotal:": "Total pedido:" + ,"(VATIncluded)": "(IVA incluído)" + + ,"PC": "Código postal" + ,"City": "Ciudad" + ,"Province": "Provincia" + ,"Address": "Domicilio" + ,"Consignee": "Consignatario" + + ,"ItemNumber": "Nº artículo" + ,"Amount": "Cant" + ,"Item": "Artículo" + ,"Category": "Categoría" + ,"S1": "Med" + ,"Stems": "Tallos" + ,"Color": "Color" + ,"Origin": "Origen" + ,"Price": "Precio" + ,"Disc": "Desc" + ,"Subtotal": "Subtotal" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/news/new.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/news/new.json new file mode 100755 index 00000000..f55b512b --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/news/new.json @@ -0,0 +1,12 @@ +{ + "AddEditNew": "Añadir o editar noticia" + + ,"Title": "Título" + ,"NewBody": "Cuerpo" + ,"Tag": "Etiqueta" + + ,"Return": "Volver" + ,"Accept": "Aceptar" + + ,"NewChangedSuccessfully": "Noticia modificada correctamente" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/forms/news/news.json b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/news/news.json new file mode 100755 index 00000000..89bb2d28 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/forms/news/news.json @@ -0,0 +1,12 @@ +{ + "NewsManagement": "Gestión de noticias" + + ,"AddNew": "Añadir noticia" + ,"EditNew": "Editar noticia" + + ,"NewNum": "Nº noticia" + ,"Date": "Fecha" + ,"Author": "Autor" + ,"Title": "Título" + ,"Priority": "Prioridad" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/js/db.js b/debian/hedera-web/usr/share/hedera-web/locale/es/js/db.js new file mode 100644 index 00000000..55637078 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/js/db.js @@ -0,0 +1,9 @@ +Vn.Locale.add +({ + "ConnError": "Error en la conexión" + ,"InternalError": "Se ha producido un error interno" + ,"BadServerReply": "Respuesta del servidor incorrecta" + ,"ModelNotUpdatable": "Este modelo no es actualizable" + ,"RowNotExists": "El registro no existe o a sido borrado" + ,"ColNotExists": "La columna no existe" +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/js/htk.js b/debian/hedera-web/usr/share/hedera-web/locale/es/js/htk.js new file mode 100644 index 00000000..fad8c3a5 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/js/htk.js @@ -0,0 +1,29 @@ +Vn.Locale.add +({ + "True": "Si" + ,"False": "No" + ,"Null": "Nulo" + ,"ChangeDate": "Cambiar Fecha" + ,"Sort": "Ordenar" + ,"At": "a las" + ,"Of": "de" + ,"OfThe": "del" + ,"Remove": "Borrar" + ,"Loading": "Cargando" + ,"Loading...": "Cargando..." + ,"ReallyDelete": "¿Estás seguro de que quieres borrar la línea?" + ,"YouMustBeLoggedIn": "Debes estar registrado como usuario" + ,"EmptyList": "Lista vacía" + ,"NoData": "Sin datos" + ,"ErrorLoadingData": "Error" + ,"Error": "Error" + ,"Image": "Imagen" + ,"File": "Archivo" + ,"FileName": "Nombre" + ,"UpdateImage": "Añadir o actualizar imagen" + ,"UploadFile": "Subir archivo" + ,"ImageAdded": "Imagen añadida correctamente" + ,"Close": "Cerrar" + ,"Previous": "Anterior" + ,"Next": "Siguiente" +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/js/vn.js b/debian/hedera-web/usr/share/hedera-web/locale/es/js/vn.js new file mode 100644 index 00000000..717aeff1 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/js/vn.js @@ -0,0 +1,89 @@ +Vn.Locale.add +({ + "Sunday": "Domingo" + ,"Monday": "Lunes" + ,"Tuesday": "Martes" + ,"Wednesday": "Miercoles" + ,"Thursday": "Jueves" + ,"Friday": "Viernes" + ,"Saturday": "Sábado" + + ,"Su": "Do" + ,"Mo": "Lu" + ,"Tu": "Ma" + ,"We": "Mi" + ,"Th": "Ju" + ,"Fr": "Vi" + ,"Sa": "Sa" + + ,"January": "Enero" + ,"February": "Febrero" + ,"March": "Marzo" + ,"April": "Abril" + ,"May": "Mayo" + ,"June": "Junio" + ,"July": "Julio" + ,"August": "Agosto" + ,"September": "Septiembre" + ,"October": "Octubre" + ,"November": "Noviembre" + ,"December": "Diciembre" + + ,"Jan": "Ene" + ,"Feb": "Feb" + ,"Mar": "Mar" + ,"Apr": "Abr" + ,"May": "May" + ,"Jun": "Jun" + ,"Jul": "Jul" + ,"Ago": "Ago" + ,"Sep": "Sep" + ,"Oct": "Oct" + ,"Nov": "Nov" + ,"Dec": "Dic" + + ,"AppName": "Verdnatura" + ,"Beta": "Beta" + ,"User": "Usuario" + ,"Password": "Contraseña" + ,"Remember": "Recordar" + ,"Enter": "Entrar" + ,"Exit": "Salir" + ,"ErrorLoadingForm": "Error al cargar formulario" + ,"YoureVisitor": "¿Solo estás de visita?" + ,"NewVersionAvailable": "Hay una nueva actualización, la página se recargargará automaticamente para descargarla" + ,"ChangeLog": "Cambios recientes" + ,"CookiesNotification": "Al utilizar este sitio web aceptas el uso de cookies para la personalización de contenidos y análisis." + ,"ReturnToOldWebsite": "Web antigua" + ,"TestTheNewWebsite": "¡Prueba la nueva web!" + ,"Print": "Imprimir" + + ,"Menu": "Menú" + + ,"Home": "Inicio" + ,"Orders": "Pedidos" + ,"Basket": "Cesta" + ,"Last orders": "Últimos pedidos" + ,"Invoices": "Facturas" + ,"Catalog": "Catálogo" + ,"About": "Conócenos" + ,"About us": "Sobre nosotros" + ,"Why": "¿Por qué?" + ,"Location": "Localización" + ,"Administration": "Administración" + ,"Control panel": "Panel de control" + ,"Users": "Usuarios" + ,"Visits": "Visitas" + ,"News": "Noticias" + ,"Photos": "Fotos" + ,"Shelves": "Estanterías" + ,"Contact": "Quiero ser cliente" + ,"Training": "Formación" + ,"Agencies": "Agencias" + ,"Configuration": "Configuración" + ,"Account": "Cuenta" + ,"Addresses": "Direcciones" + + ,"SessionExpired": "Has estado demasiado tiempo inactivo y la sesión ha expirado." + ,"InvalidLogin": "Usuario o contraseña incorrectos. Recuerda que se hace distinción entre mayúsculas y minúsculas." +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/pages/login.json b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/login.json new file mode 100755 index 00000000..aee401e2 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/login.json @@ -0,0 +1,9 @@ +{ + "User": "Usuario" + ,"Password": "Contraseña" + ,"NotCloseSession": "No cerrar sesión" + ,"IWantToKnowMore": "¡Quiero saber más!" + ,"Enter": "Entrar" + ,"LoginMail": "clientes@verdnatura.es" + ,"LoginPhone": "+34 963 242 100" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/pages/tpv.json b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/tpv.json new file mode 100755 index 00000000..ec4c2a75 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/tpv.json @@ -0,0 +1,4 @@ +{ + "PaymentComplete": "Pago terminado, ya puedes volver a nuestra página web." + ,"ReturnToWeb": "Volver a Verdnatura" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/pages/update-browser.json b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/update-browser.json new file mode 100755 index 00000000..7e92fd86 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/update-browser.json @@ -0,0 +1,4 @@ +{ + "UpdateYourBrowser": "Actualiza tu navegador" + ,"ContinueAnyway": "Continuar de todos modos" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/pages/version-menu.json b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/version-menu.json new file mode 100755 index 00000000..ed3396a8 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/version-menu.json @@ -0,0 +1,8 @@ +{ + "Welcome to Verdnatura, where are you going?": "Bienvenido a Verdnatura, ¿Dónde quieres ir?" + + ,"New website": "Nueva web" + ,"(Fantastic)": "(Fantástica)" + ,"Old website": "Antigua web" + ,"(Best choose new)": "(Mejor elige la nueva)" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/pages/web.json b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/web.json new file mode 100755 index 00000000..c8651115 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/pages/web.json @@ -0,0 +1,4 @@ +{ + "Welcome": "Bienvenido/a" + ,"Exit": "Salir" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/es/rest/query.json b/debian/hedera-web/usr/share/hedera-web/locale/es/rest/query.json new file mode 100755 index 00000000..445312b5 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/es/rest/query.json @@ -0,0 +1,5 @@ +{ + "InvalidAction": "Acción inválida" + + ,"EmptyQuery": "Consulta vacia" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/address-list.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/address-list.json new file mode 100755 index 00000000..21195c97 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/address-list.json @@ -0,0 +1,11 @@ +{ + "Addresses": "Adresses" + + ,"Return": "Retour" + ,"AddAddress": "Ajouter une adresse" + + ,"SetAsDefault": "Définir par défaut" + ,"RemoveAddress": "Supprimer l'adresse" + ,"EditAddress": "Changement d'adresse" + ,"AreYouSureDeleteAddress": "Êtes-vous sûr de vouloir supprimer l'adresse?" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/address.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/address.json new file mode 100755 index 00000000..5ab93913 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/address.json @@ -0,0 +1,15 @@ +{ + "AddEditAddress": "Ajouter ou modifier l'adresse" + + ,"Name": "Destinataire" + ,"Address": "Adresse De La Rue" + ,"City": "Ville" + ,"ZipCode": "Code postal" + ,"Country": "Pays" + ,"Province": "Province" + + ,"Return": "Reviens" + ,"Accept": "Accepter" + + ,"AddressChangedSuccessfully": "Adresse modifié avec succès" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/conf.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/conf.json new file mode 100755 index 00000000..589191c9 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/account/conf.json @@ -0,0 +1,19 @@ +{ + "Configuration": "Configuration" + + ,"UserNumber": "Numéro utilisateur" + ,"UserName": "Utilisateur" + ,"Password": "Mot de passe" + ,"Email": "Courrier électronique" + ,"Billing": "Facturation" + ,"ReceiveInvoicesByEmail": "Recevoir des factures par e-mail" + + ,"NewPassword": "Nouveau mot de passe" + ,"RepeatPassword": "Répéter le mot de passe" + + ,"MustReloginIfChange": "Pour changer votre nom d'utilisateur que vous devrez vous identifier" + ,"PasswordsChanged": "Mot de passe modifié!" + ,"PasswordsDoesntMatch": "Les mots de passe ne correspondent pas!" + + ,"Addresses": "Adresses" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/access-log.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/access-log.json new file mode 100644 index 00000000..01921439 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/access-log.json @@ -0,0 +1,15 @@ +{ + "AccessLog": "Fiche d'accès" + + ,"UserNumber:": "Numéro utilisateur:" + ,"User:": "Utilisateur:" + ,"Phone:": "Téléphone:" + ,"Mobile:": "Mobile:" + + ,"Access": "Accès" + ,"OS": "OS" + ,"Browser": "Navigateur" + ,"Version": "Version" + ,"Javascript": "Javascript" + ,"Cookies": "Cookies" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/links.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/links.json new file mode 100755 index 00000000..c2f13c02 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/links.json @@ -0,0 +1,6 @@ +{ + "ControlPanel": "Panneau de commande" + + ,"Module": "Module" + ,"Description": "Description" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/photos.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/photos.json new file mode 100755 index 00000000..e0e2b2c6 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/photos.json @@ -0,0 +1,12 @@ +{ + "Photos": "Photos" + + ,"Schema": "Programme" + ,"ImageName": "Nom de l'image" + ,"Id": "Id" + ,"ImageFile": "Fichier image" + + ,"Upload": "Envoyer" + + ,"ImageUploaded": "Uploader correctement" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/shelves.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/shelves.json new file mode 100644 index 00000000..d5f65f95 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/shelves.json @@ -0,0 +1,11 @@ +{ + "Title": "Título" + ,"Store": "Almacén" + ,"Date": "Fecha" + ,"Shelf": "Estantería" + ,"Reign": "Reino" + ,"Family": "Familia" + ,"Name filter": "Filtro por nombre" + ,"Max amount": "Cantidad máxima" + ,"Preview": "Mostrar" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/users.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/users.json new file mode 100755 index 00000000..03148fed --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/users.json @@ -0,0 +1,12 @@ +{ + "UserManagement": "Gestion des utilisateurs" + + ,"UserName:": "Nom d'utilisateur:" + + ,"UserNumber": "No. utilisateurs" + ,"UserName": "Nom d'utilisateur" + ,"Alias": "Alias" + + ,"AccessAsUser": "Identité de l'utilisateur" + ,"AccessLog": "Fiche d'accès" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/visits.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/visits.json new file mode 100755 index 00000000..580ddd89 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/admin/visits.json @@ -0,0 +1,31 @@ +{ + "Visits": "Visitas" + ,"VisitsManagement": "Gestión de visitas" + + ,"ActiveSessions": "Usuarios conectados" + ,"VisitsQuery": "Consulta de visitas" + ,"Refresh": "Actualizar" + + ,"ActiveSessions:": "Usuarios conectados:" + ,"NewVisitsTotal:": "Nuevas visitas:" + + ,"SessionNumber": "Nº sesión" + ,"User": "Usuario" + ,"Login": "Hora de acceso" + ,"LastActivity": "Última actividad" + ,"SO": "Sistema Operativo" + ,"Version": "Versión" + ,"NewVisit": "Nueva visita" + + ,"SelectDateInterval": "Sélectionnez une plage de dates" + ,"FromDate:": "Desde el día:" + ,"ToDate:": "Hasta el día:" + ,"VisitsTotal:": "Total visitas:" + + ,"Browser": "Navegador" + ,"MinVersion": "Versión mínima" + ,"MaxVersion": "Versión máxima" + ,"LastVisit": "Última visita" + ,"NewVisits": "Nuevas visitas" + ,"%a, %e %b %Y at %T": "%a, %e %b %Y a las %T" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/agencies/packages.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/agencies/packages.json new file mode 100755 index 00000000..a566c0a0 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/agencies/packages.json @@ -0,0 +1,9 @@ +{ + "ListByAgency": "Agence de morceaux" + + ,"ShowByProvince": "Afficher la répartition par province" + ,"Agency": "Agence" + ,"Exps": "Expéd." + ,"Bundles": "Bundles" + ,"Prevision": "Prév." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/agencies/provinces.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/agencies/provinces.json new file mode 100755 index 00000000..ea047cc5 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/agencies/provinces.json @@ -0,0 +1,10 @@ +{ + "ByProvince": "Répartition par province" + + ,"Return": "Retour" + + ,"SelectAgency": "Sélectionnez une agence" + ,"Province": "Province" + ,"Expeditions": "Expéd." + ,"Left": "Manquant" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/about.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/about.json new file mode 100755 index 00000000..84677e0d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/about.json @@ -0,0 +1,47 @@ +{ + "QualityAndVariety": "Qualité, variété et le service" + + ,"MaximumFreshness": "Verdnatura offre une garantie de produit maximales de fraîcheur grâce à leurs fleurs quotidiens et plantes de Hollande, Amérique du Sud, ou à partir des mêmes réceptions de producteurs." + ,"SquareMeters": "Sur des installations 13,000m" + ,"AboutRealms": "Avec les fleurs coupées, vert, artificielle et accessoires" + ,"AboutLocation": "Installé à Valence, Madrid, Barcelone, la Hollande et la France, offrir des ventes directes dans nos installations et la distribution dans toute l'Espagne par propre service ou organisme." + ,"PurchaseThroughWeb": "Achetez sur notre site et recevoir votre commande confortablement dans votre fleuriste. En moins de 24 heures!" + + ,"WhatMakeUsDifferent": "Qu'est-ce qui nous rend différents?" + + ,"DesignVariety": "La variété dans la conception, la qualité des matériaux utilisés et de notre prestation de service, fournira une vitrine de genre dynamique, toujours frais et attrayant." + ,"AdaptToYourNeeds": "Verdnatura adapte aux besoins de chaque client en offrant une large gamme de produits, toujours garanti." + ,"TheBestQuality": "La meilleure qualité au meilleur prix. Sans oublier la conception." + + ,"AtYourService": "Nous sommes à votre service" + + ,"BuyersAndTraders": "9 acheteurs commerciaux spécialisés et notre 20 conseillera dans tout ce que vous avez besoin." + + ,"Training": "Formation Verdnatura" + + ,"GoodTraining": "Dans Verdnatura sait qu'une bonne éducation est essentielle pour le développement optimal de toute activité, et bien sûr, aussi le fleuriste." + ,"SpecialTrainingPrices": "Pour le budget d'une école n'a aucun effet sur la qualité de votre formation, travailler avec la politique de tarification spéciale pour toutes les écoles qui le demandent de suivre des cours dans nos installations chaise Verdnatura." + ,"YoutubeChannel": "Et ne manquez pas les vidéos Verdnatura sur Youtube Channel. Où vous trouverez beaucoup de conseils intéressants sur la manipulation de la fleur." + + ,"HowWeWork": "Comment travaillons-nous?" + + ,"FirstQualityControl": "QC 1" + ,"SecondQualityControl": "QC 2" + ,"ThirdQualityControl": "QC 3" + ,"FourthQualityControl": "QC 4" + + ,"AalsmeerAuction": "À 5: 00h, nos directeurs d'achat acquièrent, dans la vente aux enchères d'Aalsmeer et Noaldwijk, le sexe, le producteur a récolté la journée précédente." + ,"BeforeAuction": "Après l'achat, le genre pénètre rapidement Verdnatura Holland BV, notre société Flora Holland à Aalsmeer." + ,"DirectlyFromProviders": "Outre l'achat par l'adjudication à la hollandaise, achète directement auprès des producteurs de la Colombie, l'Equateur, Thaïlande, Malaisie, Afrique et Australie. Ces produits sont directement supervisés par nos délégués achat situés dans chaque zone. Cette marchandise se rendra à Amsterdam, soumis à un processus Vaacum et en moins de deux heures après l'atterrissage, sera dans notre usine de Aalsmeer." + ,"GoodsDischarge": "À 7: 00h notre compagnon Aalsmeer commencer à recevoir les marchandises achetées, ayant un premier contrôle de la qualité, et la création en stock. Maintenant disponible pour nos clients sur le web." + ,"GoodsTravel": "Les marchandises voyagent pendant un jour et un camion demi compartiments étanches à des températures différentes, de sorte que la chaîne du froid est pas cassé voyage dans les meilleures conditions." + ,"GoodsReception": "Dès réception de la marchandise responsable de l'achat Etat examiné qui arrive, d'accepter ou de rejeter le cas échéant, déchargé froid et pénètre rapidement notre caméra." + ,"CustomerOrders": "Nos clients peuvent passer leurs commandes via le Web, par téléphone ou venir directement à nos installations. Nous avons une équipe spécialisée de conseil commercial, vous sur votre achat et vous informons les dernières nouvelles et des articles qui peuvent être d'intérêt, pour que votre achat répond à vos besoins et de rester totalement satisfait." + ,"AfterOrder": "Une fois placé l'ordre, se tourner vers le département de production. Lors de la préparation de ce nouveau contrôle de la qualité (troisième) dans laquelle les pauvres seront rejetés marchandise est faite." + ,"BuyerControl": "Comme la préparation est terminée, un nouveau contrôle (quatrième), où un compte de spécialiste est faite et vérifier l'état des produits. Si elles ne répondent pas aux normes de qualité requises rejets et remplace le droit." + ,"EmbeddedSection": "Prend alors la section embarqué, où l'ordre est approprié pour la livraison appropriée. Chaque type de prestation requiert une méthode appropriée pour les livres de genre protégée embarqués et atteint le client en parfait état." + ,"AfterEmbedAgency": "Une fois que le produit a été installé il est stocké à nouveau dans la chambre jusqu'à ce qu'ils quittent par agence ou propre affaire, recevoir le client dans les 24 heures dans le cas de l'agence ou le même jour pour le casting, confortablement à la maison." + ,"FreshnessGuaranteed": "Cette méthode de travail garantit la fraîcheur par des processus rapides et le maintien de la chaîne du froid, de l'achat à la réception par notre client." + + ,"AboutSummary": "75 personnes réparties sur presque tout le monde pour que notre client a le plus vaste portefeuille de l'industrie, plus cool fleur, plante récentes, les derniers accessoires, et le service le plus rapide possible." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/contact.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/contact.json new file mode 100755 index 00000000..b36e85d1 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/contact.json @@ -0,0 +1,20 @@ +{ + "IWantCustomer": "Je veux être un client!" + + ,"FillFormData": "Remplissez le formulaire avec vos coordonnées et nous prendrons contact avec vous sous peu." + ,"OrCallUs": "Ou si vous préférez nous appeler au 0033 781 533 900." + ,"AllFieldsMandatory": "* Tous les champs sont obligatoires." + + ,"Name": "Nom" + ,"Surname": "Nom" + ,"EMail": "Email" + ,"Message": "Message" + ,"Address": "Adresse" + ,"PC": "Code postal" + ,"City": "Ville" + ,"Phone": "Téléphone" + ,"Send": "Envoyer des données" + + ,"DataSentSuccess": "Vos détails ont été envoyés avec succès. Peu de temps nous vous contacterons." + ,"ErrorSendingData": "Échec de l'envoi de vos données. S'il vous plaît vérifiez que vous avez rempli tous les champs et a mis en place le code anti-spam correctement." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/home.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/home.json new file mode 100755 index 00000000..ccd47e75 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/home.json @@ -0,0 +1,12 @@ +{ + "Sent": "Envoyé" + ,"Author": "Auteur" + ,"votes": "votes" + ,"NoAnswerSelected": "Vous avez pas sélectionné de réponse" + ,"ThanksForVote": "Merci pour votre vote!" + ,"Vote": "Voter" + ,"Total": "Total" + ,"BrownserRecommend": + "Verdnatura recommande d'utiliser le navigateur Web Mozilla Firefox pour obtenir toutes les fonctionnalités de notre site web." + ,"PressHere": "Cliquez ici pour télécharger Firefox" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/location.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/location.json new file mode 100755 index 00000000..9d40117c --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/location.json @@ -0,0 +1,3 @@ +{ + "ShowMap": "Voir la carte" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/training.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/training.json new file mode 100755 index 00000000..0967ef42 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/training.json @@ -0,0 +1 @@ +{} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/why.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/why.json new file mode 100755 index 00000000..56554a31 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/cms/why.json @@ -0,0 +1,25 @@ +{ + "AboutCompany": "Pourquoi Verdnatura?" + ,"StorePhoto": "Magasin de photo" + + ,"BecauseOurBigCatalog": "Parce que nous avons le plus grand catalogue dans le secteur, chaque jour renouvelé." + ,"BecauseThisWeb": "Sur ce site, avec un stock en temps réel toujours à votre disposition." + ,"BecauseOurShoppingDep": "Pour notre département achats 9 acheteurs spécialisés." + ,"BecauseOrderIsEasy": "Parce qu'il est très facile de passer votre commande par Internet, par téléphone ou à venir." + ,"BecauseOurPlant": "Chez nous, venez nous rendre visite. Vous allez adorer." + ,"BecauseOurSalesDep": "Pour nos professionnels de service commercial qui sera toujours de trouver une solution à vos besoins." + ,"BecauseOurWorkShop": "Parce que nous avons un atelier de couture pour aider." + ,"BecauseWeHaveWhatYouNeed": "Parce que nous avons ce que vous avez besoin quand vous en avez besoin ..." + + ,"AboutDesc": + "Nous sommes une société spécialisée dans le commerce de gros et de la distribution d'une large gamme d'accessoires, des verts et des fleurs à des fleuristes ou des autres grossistes." + + ,"AboutService": + "Nous avons un service de livraison à domicile avec nos véhicules dans la province de Valence et des zones limitées de Castellón, Alicante, Murcie, Albacete et Madrid envoyer le reste de la péninsule par les agences de transport avec le service 24/48 heures (Zeleris, Viaexpress). Nous faisons également des ventes directes aux fleuristes dans aucun de nos installations." + + ,"AboutDisp": + "Notre société a plus de 50 employés et plusieurs branches. Le principal est situé à Valence et a plus de 8000 m2. Nous avons aussi un entrepôt situé à Mercaflor - Mercavalencia (Valencia) qui effectuent des ventes directes seulement." + + ,"AboutOrder": + "Vous pouvez faire vos commandes et réservations par téléphone au +33 781 533 900, en ligne grâce à notre site Internet ou directement dans nos installations." +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/basket.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/basket.json new file mode 100755 index 00000000..b8d706fc --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/basket.json @@ -0,0 +1,29 @@ +{ + "ShoppingBasket": "Panier" + + ,"Delete": "Effacer" + ,"GoToCatalog": "Aller au catalogue" + ,"ConfigureOrder": "Définissez l'ordre" + ,"Checkout": "Caisse" + + ,"OrderNumber": "Numéro de commande" + ,"DateExit": "Date de sortie" + ,"Warehouse": "Magasin" + ,"OrderTotal": "Total commande" + + ,"Amount": "Quant" + ,"Pack": "Pack" + ,"Stems": "Tige" + ,"Avail": "Disp" + ,"Item": "Nom" + ,"Cat": "Cat" + ,"S1": "Mes" + ,"Color": "Couleur" + ,"Origin": "Origine" + ,"Price": "* Prix" + ,"Disc": "Desc" + ,"Subtotal": "Sous-total" + + ,"OrderItemsUpdated": "Ouvrez votre commande prend trop de temps et a été mis à jour, les prix ou les quantités de vos articles peuvent avoir changé" + ,"RememberReconfiguringImpact": "Rappelez-vous que si jamais vous commandez des prix fixés ou les quantités de vos articles pourraient changer" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/catalog.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/catalog.json new file mode 100755 index 00000000..b803a502 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/catalog.json @@ -0,0 +1,52 @@ +{ + "Catalog": "Catalogue" + ,"SearchResults": "Résultats de la recherche" + + ,"SelectFamily": "Choisissez une famille" + ,"SelectSubtype": "Sélectionnez le sous-menu sur la droite" + ,"ArticleNotFound": "Article pas trouvé" + ,"ArticleNotAvailable": "Article pas disponible" + + ,"StartOrder": "Acheter" + ,"Basket": "Panier" + ,"Shopping basket": "Mon panier" + ,"Configure": "Configurar" + ,"Configure shopping basket": "Configurez panier" + ,"Date": "Date" + ,"%A, %e of %B": "%A, %e de %B" + ,"Delivery": "Accouchement" + ,"Warehouse": "Entrepôt" + ,"Agency": "Agence" + + ,"StartOrder": "Acheter" + ,"ShoppingBasket": "Mon panier" + + ,"Realm": "Famille" + ,"Subtype": "Sous-genre" + ,"Date:": "Date:" + ,"Warehouse:": "Magasin:" + ,"Search:": "Recherche:" + ,"GeneralSearch": "Recherche générale" + + ,"Amount": "Quant" + ,"Aval": "Disp" + ,"Name": "Nom" + ,"S1": "Mes" + ,"S2": "S2" + ,"Stems": "Tige" + ,"Cat": "Cat" + ,"Pack": "Pack" + ,"Origin": "Origine" + ,"Price": "Prix" + + ,"from %.2d€": "pour %.2d€" + ,"AddToBasket": "Ajouter article" + ,"Add": "Ajouter" + ,"Erase": "Effacer" + ,"Confirm": "Confirmer" + + ,"IndicativePhotos": "* Photos sont indicatifs" + + ,"Added%dOf%s": "Ajouté %d %s" + ,"NoMoreAmountAvailable": "Pas plus de quantité disponible" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/checkout.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/checkout.json new file mode 100755 index 00000000..e0accb8d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/checkout.json @@ -0,0 +1,31 @@ +{ + "ConfigureOrder": "Set pour" + + ,"Cancel": "Annuler" + ,"Next": "Prochaine" + + ,"DeliveryOrPickupQuestion": "Voulez-vous recevoir ou percevoir l'ordre?" + ,"ReceiveThroughtAgency": "Recevez par l'agence" + ,"ReceiveThroughtRoute": "Moulage par Verdnatura" + ,"PickupInStore": "Livraison en magasin" + + ,"OrderDateDeliveryQuestion": "Quel jour vous voulez recevoir l'ordre?" + ,"OrderDatePickupQuestion": "Quel jour vous voulez retirer votre commande?" + ,"AddressQuestion": "Où voulez-vous livré?" + ,"AgencyQuestion": "Pourquoi agence vous souhaitez recevoir l'ordre?" + ,"PickupWarehouseQuestion": "Quel magasin vous voulez retirer votre commande?" + + ,"ConfirmToAccessCatalog": "Confirme les données pour accéder au catalogue" + ,"Arrival": "Arrivée" + ,"Pickup": "Collection" + ,"%A, %e of %B": "%A, %e %B" + ,"Agency": "Agence" + ,"Warehouse": "Entrepôt" + ,"Confirm": "Confirmer" + + ,"OrderStarted": "Ordre a commencé" + ,"OrderUpdated": "Mise à jour Ordre" + + ,"NoAgeciesAvailableForDate": "Aucun agences disponibles pour la date et le destinataire sélectionné, changer la date de réception de l'ordre" + ,"NoWarehousesAvailableForDate": "Pas de magasins disponibles à la date sélectionnée, changer la date de la collecte de l'ordre" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/confirm.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/confirm.json new file mode 100755 index 00000000..11c893d8 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/confirm.json @@ -0,0 +1,25 @@ +{ + "Checkout": "Terminer la commande" + + ,"OrderSummary": "Résumé de la commande" + ,"Arrival": "Arrivée" + ,"%A, %e of %B": "%A %e %B" + ,"Agency": "Agence" + ,"Warehouse": "Entrepôt" + + ,"DeliveryAddress": "Adresse de livraison" + + ,"Import": "Montant" + ,"TaxBase": "Imposable" + ,"VAT": "TVA" + ,"Total": "Total" + + ,"Cancel": "Annuler" + ,"Modify": "Modifier" + ,"Confirm": "Confirmer" + + ,"OrderPlacedSuccessfully": "Votre commande a été complété avec succès" + ,"OrderReserved": "Nous avons réservé votre commande, mais il semble qu'il ya eu des problèmes avec le paiement Contactez vos ventes." + ,"Accept": "OK" + ,"PayNow": "Payer maintenant" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/invoices.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/invoices.json new file mode 100755 index 00000000..62a04a0a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/invoices.json @@ -0,0 +1,8 @@ +{ + "Invoices": "Factures" + + ,"Serial": "Série" + ,"Date": "Date" + ,"Import": "Montant" + ,"Donwload PDF": "Télécharger le PDF" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/orders.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/orders.json new file mode 100755 index 00000000..bcac297a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/orders.json @@ -0,0 +1,36 @@ +{ + "OpenOrders": "Les commandes ouvertes" + + ,"StartOrder": "Acheter" + ,"ContinueOrder": "Continuer la commande" + ,"OrderNumber": "Numéro de commande" + ,"DateMake": "Date de creation" + ,"DateExit": "Date de sortie" + ,"SendMethod": "Typo" + + ,"LastOrders": "Les dernières commandes" + + ,"PendingBalance:": "Balance:" + ,"PaymentInfo": "Pour effectuer un paiement vers le bas, cliquez sur le bouton à droite et effectuer le paiement par la société. Le montant indiqué est le solde aujourd'hui, ne prend pas en compte les commandes futures. Vous pouvez faire un acompte sur le montant que vous voulez. Si vous voulez payer un ordre spécifique, vous pouvez cliquer directement sur le bouton de paiement Ordre." + ,"MakePayment": "Effectuer un paiement" + ,"Company": "Entreprise" + ,"Pending": "Pente" + ,"Pay": "Payer" + ,"Basket": "Panier" + ,"ShoppingBasket": "Panier" + + ,"SeeOrder": "Votre panier" + ,"TicketNumber": "Numéro ticket" + ,"SentAddress": "Adresse de livraison" + ,"Consignee": "Destinataire" + ,"Boxes": "Colis" + ,"TotalWithVAT": "Total avec TVA" + ,"Pending": "En attente" + ,"PayOrder": "Payer la commande" + + ,"AmountToPay:": "Montant à payer (€):" + ,"AmountError": "La quantité doit être un neméro positif et inférieur ou égal à la somme restant à payer" + ,"PayError": "Impossible d'effectuer le paiement" + + ,"%A, %e of %B": "%A, %e %B" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/ticket.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/ticket.json new file mode 100755 index 00000000..94114d44 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/ecomerce/ticket.json @@ -0,0 +1,30 @@ +{ + "OrderDetail": "Détails de la commande" + + ,"Print": "Imprimer bulletin de livraison" + + ,"TicketNumber:": "Num ticket:" + ,"DateExit:": "Date d'envoi:" + ,"SendMethod:": "Mode d'envoi:" + ,"Notes:": "Notes:" + ,"TicketTotal:": "Total:" + ,"(VATIncluded)": "(TVA comprise)" + + ,"PC": "Code postal" + ,"City": "Ville" + ,"Province": "Province" + ,"Address": "Maison" + ,"Consignee": "Destinataire" + + ,"ItemNumber": "Num article" + ,"Amount": "Quant" + ,"Item": "Article" + ,"Category": "catégorie" + ,"S1": "Mes" + ,"Stems": "Tiges" + ,"Color": "Couleur" + ,"Origin": "Origine" + ,"Price": "Prix" + ,"Disc": "Remise" + ,"Subtotal": "Sous-total" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/news/new.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/news/new.json new file mode 100755 index 00000000..0b0c1c84 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/news/new.json @@ -0,0 +1,12 @@ +{ + "AddEditNew": "Ajouter ou editer nouvelles" + + ,"Title": "Titre" + ,"NewBody": "Corps" + ,"Tag": "Tag" + + ,"Return": "Reviens" + ,"Accept": "Accepter" + + ,"NewChangedSuccessfully": "Nouvelles modifié avec succès" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/news/news.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/news/news.json new file mode 100755 index 00000000..acd4ebf4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/forms/news/news.json @@ -0,0 +1,12 @@ +{ + "NewsManagement": "Gestion des nouvelles" + + ,"AddNew": "Ajouter nouvelles" + ,"EditNew": "Modifier nouvelles" + + ,"NewNum": "Nº nouvelles" + ,"Date": "Date" + ,"Author": "Auteur" + ,"Title": "Titre" + ,"Priority": "Priorité" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/js/db.js b/debian/hedera-web/usr/share/hedera-web/locale/fr/js/db.js new file mode 100644 index 00000000..40fd84b5 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/js/db.js @@ -0,0 +1,9 @@ +Vn.Locale.add +({ + "ConnError": "Échec de la connexion" + ,"InternalError": "Il y avait une erreur interne" + ,"BadServerReply": "Réponse du serveur incorrecte" + ,"ModelNotUpdatable": "Ce modèle n'est pas modifiable" + ,"RowNotExists": "Le dossier n'existe pas ou a été supprimée" + ,"ColNotExists": "N'existe pas la colonne" +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/js/htk.js b/debian/hedera-web/usr/share/hedera-web/locale/fr/js/htk.js new file mode 100644 index 00000000..88d614b6 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/js/htk.js @@ -0,0 +1,29 @@ +Vn.Locale.add +({ + "True": "Si" + ,"False": "Aucun" + ,"Null": "Nul" + ,"ChangeDate": "Modification de la date" + ,"Sort": "Ordre" + ,"At": "à" + ,"Of": "de" + ,"OfThe": "de" + ,"Remove": "Effacer" + ,"Loading": "Chargement" + ,"Loading...": "Chargement..." + ,"ReallyDelete": "Voulez-vous vraiment supprimer la ligne?" + ,"YouMustBeLoggedIn": "Vous devez être un utilisateur enregistré" + ,"EmptyList": "Vider la liste" + ,"NoData": "Aucune donnée" + ,"ErrorLoadingData": "Erreur" + ,"Error": "Erreur" + ,"Image": "Image" + ,"File": "Archives" + ,"FileName": "Nom" + ,"UpdateImage": "Ajouter our mettre à jour l'image" + ,"UploadFile": "Télécharger le fichier" + ,"ImageAdded": "Image ajoutée correctement" + ,"Close": "Croche" + ,"Previous": "Précédent" + ,"Next": "Suivant" +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/js/vn.js b/debian/hedera-web/usr/share/hedera-web/locale/fr/js/vn.js new file mode 100644 index 00000000..a51898d1 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/js/vn.js @@ -0,0 +1,89 @@ +Vn.Locale.add +({ + "Sunday": "Dimanche" + ,"Monday": "Lundi" + ,"Tuesday": "Mardi" + ,"Wednesday": "Mercredi" + ,"Thursday": "Jeudi" + ,"Friday": "Vendredi" + ,"Saturday": "Samedi" + + ,"Su": "Do" + ,"Mo": "Lu" + ,"Tu": "Ma" + ,"We": "Me" + ,"Th": "Je" + ,"Fr": "Ve" + ,"Sa": "Sa" + + ,"January": "Janvier" + ,"February": "Février" + ,"March": "Mars" + ,"April": "Avril" + ,"May": "Mai" + ,"June": "Juin" + ,"July": "Juillet" + ,"August": "Août" + ,"September": "Septembre" + ,"October": "Octobre" + ,"November": "Novembre" + ,"December": "Décembre" + + ,"Jan": "Jan" + ,"Feb": "Fév" + ,"Mar": "Mars" + ,"Apr": "Avr" + ,"May": "Mai" + ,"Jun": "Juin" + ,"Jul": "Juil" + ,"Ago": "Août" + ,"Sep": "Sep" + ,"Oct": "Oct" + ,"Nov": "Nov" + ,"Dec": "Déc" + + ,"AppName": "Verdnatura" + ,"Beta": "Beta" + ,"User": "Utilisateur" + ,"Password": "Mot de passe" + ,"Remember": "Rappeler" + ,"Enter": "entrer" + ,"Exit": "Laisser" + ,"ErrorLoadingForm": "Forme erreur de chargement" + ,"YoureVisitor": "¿Solo estás de visita?" + ,"NewVersionAvailable": "Il ya une nouvelle mise à jour, la page sera automatiquement recargargará pour télécharger" + ,"ChangeLog": "Modifications récentes" + ,"CookiesNotification": "En utilisant ce site, vous acceptez l'utilisation de cookies pour personnaliser le contenu et l'analyse." + ,"ReturnToOldWebsite": "Ancien site web" + ,"TestTheNewWebsite": "Testez le nouveau site!" + ,"Print": "Imprimir" + + ,"Menu": "Menu" + + ,"Home": "Accueil" + ,"Orders": "Commandes" + ,"Basket": "Panier" + ,"Last orders": "Dernières commandes" + ,"Invoices": "Facturas" + ,"Catalog": "Catalogue" + ,"About": "Nous" + ,"About us": "A propos de nous" + ,"Why": "Pourquoi?" + ,"Location": "Emplacement" + ,"Administration": "Administration" + ,"Control panel": "Panneau de contrôle" + ,"Users": "Utilisateurs" + ,"Visits": "Visites" + ,"News": "Nouvelles" + ,"Photos": "Photos" + ,"Shelves": "Estanterías" + ,"Contact": "Je veux être client" + ,"Training": "Formation" + ,"Agencies": "Agences" + ,"Configuration": "Configuration" + ,"Account": "Compte" + ,"Addresses": "Adresses" + + ,"SessionExpired": "Il a eu le temps de trop paresseux et votre session a expiré." + ,"InvalidLogin": "Utilisateur ou mot de passe incorrect. N'oubliez pas de distinction entre majuscules et minuscules." +}); diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/login.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/login.json new file mode 100755 index 00000000..1fd9db08 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/login.json @@ -0,0 +1,9 @@ +{ + "User": "Utilisateur" + ,"Password": "Mot de passe" + ,"NotCloseSession": "Garder ma session active" + ,"IWantToKnowMore": "En savoir plus!" + ,"Enter": "Entrer" + ,"LoginMail": "ruben@verdnatura.es" + ,"LoginPhone": "+33 781 533 900" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/tpv.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/tpv.json new file mode 100755 index 00000000..d87f4ce7 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/tpv.json @@ -0,0 +1,4 @@ +{ + "PaymentComplete": "Le paiement terminé, vous pouvez maintenant revenir à notre site." + ,"ReturnToWeb": "Retour au Verdnatura" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/update-browser.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/update-browser.json new file mode 100755 index 00000000..c9e977e0 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/update-browser.json @@ -0,0 +1,4 @@ +{ + "UpdateYourBrowser": "Mettez à jour votre navigateur" + ,"ContinueAnyway": "Continuer" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/version-menu.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/version-menu.json new file mode 100755 index 00000000..6b8f80be --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/version-menu.json @@ -0,0 +1,8 @@ +{ + "Welcome to Verdnatura, where are you going?": "Bienvenue à Verdnatura, où allez-vous?" + + ,"New website": "Nouveau site web" + ,"(Fantastic)": "(Fantastique)" + ,"Old website": "Vieux web" + ,"(Best choose new)": "(Meilleur choisir nouveau)" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/web.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/web.json new file mode 100755 index 00000000..dff01b04 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/pages/web.json @@ -0,0 +1,4 @@ +{ + "Welcome": "Bienvenue" + ,"Exit": "Sortir" +} diff --git a/debian/hedera-web/usr/share/hedera-web/locale/fr/rest/query.json b/debian/hedera-web/usr/share/hedera-web/locale/fr/rest/query.json new file mode 100755 index 00000000..445312b5 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/locale/fr/rest/query.json @@ -0,0 +1,5 @@ +{ + "InvalidAction": "Acción inválida" + + ,"EmptyQuery": "Consulta vacia" +} diff --git a/debian/hedera-web/usr/share/hedera-web/log.php b/debian/hedera-web/usr/share/hedera-web/log.php new file mode 100755 index 00000000..5e5032d6 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/log.php @@ -0,0 +1,20 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/login/head.php b/debian/hedera-web/usr/share/hedera-web/pages/login/head.php new file mode 100755 index 00000000..21855b37 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/login/head.php @@ -0,0 +1,19 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/login/html.php b/debian/hedera-web/usr/share/hedera-web/pages/login/html.php new file mode 100755 index 00000000..6861c554 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/login/html.php @@ -0,0 +1,67 @@ + + + + + + + + + + Login - Verdnatura + + + +
+
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ +
+
+

+

+
+ +
+
+
+
+ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/login/login.js b/debian/hedera-web/usr/share/hedera-web/pages/login/login.js new file mode 100644 index 00000000..42eff70a --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/login/login.js @@ -0,0 +1,30 @@ + +window.addEventListener ('load', + function () { Vn.Login.initialize (); }); + +Vn.Login = +{ + initialize: function () + { + Vn.Hash.initialize (); + + switch (Vn.Hash.get ('error')) + { + case 'badLogin': + alert (_('InvalidLogin')); + break; + case 'sessionExpired': + alert (_('SessionExpired')); + break; + } + + var userEntry = document.getElementById ('user'); + + if (Vn.Cookie.check ('vn_user')) + userEntry.value = Vn.Cookie.get ('vn_user'); + + userEntry.focus (); + userEntry.select (); + } +}; + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/login/login.php b/debian/hedera-web/usr/share/hedera-web/pages/login/login.php new file mode 100755 index 00000000..6792e06c --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/login/login.php @@ -0,0 +1,24 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/login/style.css b/debian/hedera-web/usr/share/hedera-web/pages/login/style.css new file mode 100644 index 00000000..e5f4b1aa --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/login/style.css @@ -0,0 +1,166 @@ +body +{ + position: absolute; + margin: 0; + height: 100%; + width: 100%; + z-index: -2; + background-color: #EEE; +} +body, +label, +button, +input, +textarea, +p, +a +{ + font-size: 1.2em; + font-weight: normal; + color: #333; +/* text-shadow: 0 0.2em 0.2em #AAA; */ +} + +/* Header */ + +#header +{ + z-index: 10; + position: absolute; + background-color: #333; + width: 100%; + height: 3.5em; + +} +#header div +{ + margin-top: 1em; + text-align: center; +} +#header a +{ + color: white; +} + +/* Body */ + +#body +{ + position: absolute; + top: 3.5em; + left: 0; + right: 0; + bottom: 0; +/* background-image: url("background.png"); + background-repeat: repeat; +*/ +} +#column +{ + position: relative; + margin: 0 auto; + overflow: auto; + max-width: 40em; + height: 100%; + background-color: white; + box-shadow: 0 0.2em 0.2em #DDD; +} + +/* Login */ + +#login +{ + position: absolute; + margin-top: -17em; + padding: 1em; + max-width: 45em; + top: 50%; + left: 0; + right: 0; + +} +#logo img +{ + display: block; + margin: 0.5em auto; + min-width: 24em; + width: 75%; +} +#version-code +{ + color: red; + text-align: right; + margin: 0.2em auto; + font-weight: bold; + height: 2em; +} +#form-inputs +{ + margin: 0 auto; + max-width: 16em; +} +div.form-group label +{ + display: block; +} +input +{ + border-radius: 0.1em; + box-shadow: 0 0.1em 0.1em #AAA; + margin: 0.3em; +} +input[type=text], +input[type=password] +{ + margin: 0.5em 0; + margin-bottom: 0.5em; + padding: 0.5em; + width: 100%; + border: 1px solid #AAA; +} +td.entry +{ + text-align: left; +} +input[type=submit] +{ + display: block; + margin: 0 auto; + background-color: #AD4; + border: 1px solid #8B2; + height: 2.4em; + width: 8em; + color: #250; +} +input[type=submit]:hover +{ + background-color: #9C3; +} +#bottom +{ + text-align: center; + padding: 1em; +} + +/* Info */ + +#info +{ + margin-top: 2.5em; + text-align: center; +} +#info p +{ + margin: 0.5em; +} +#links +{ + margin: 0 auto; + margin-top: 2em; + text-align: center; +} +#links img +{ + height: 1.8em; +} + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/tpv/html.php b/debian/hedera-web/usr/share/hedera-web/pages/tpv/html.php new file mode 100755 index 00000000..39c40ef4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/tpv/html.php @@ -0,0 +1,22 @@ + + + + + + + + + Verdnatura + + +
+ Verdnatura +

+ +

+

+ +

+
+ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/tpv/style.css b/debian/hedera-web/usr/share/hedera-web/pages/tpv/style.css new file mode 100644 index 00000000..b317b9d7 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/tpv/style.css @@ -0,0 +1,16 @@ +* +{ + font-family: 'Open Sans'; + font-size: 10pt; +} +div +{ + position: absolute; + width: 48em; + height: 10em; + margin-left: -24em; + margin-top: -5em; + top: 50%; + left: 50%; + text-align: center; +} diff --git a/debian/hedera-web/usr/share/hedera-web/pages/update-browser/html.php b/debian/hedera-web/usr/share/hedera-web/pages/update-browser/html.php new file mode 100755 index 00000000..7f6fcb14 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/update-browser/html.php @@ -0,0 +1,23 @@ + + + + + + + + + Verdnatura + + +
+ + <?=s('UpdateYourBrowser')?> + +
+
+ + + +
+ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/update-browser/style.css b/debian/hedera-web/usr/share/hedera-web/pages/update-browser/style.css new file mode 100644 index 00000000..c2fcdc9c --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/update-browser/style.css @@ -0,0 +1,26 @@ +* +{ + font-family: 'Open Sans'; +} +img +{ + position: absolute; + margin-top: -200px; + margin-left: -200px; + top: 50%; + left: 50%; +} +#continue +{ + position: absolute; + bottom: 0; + left: 0; + right: 0; + margin: 1em; + text-align: center; +} +a +{ + color: #444; + border-width: 0; +} diff --git a/debian/hedera-web/usr/share/hedera-web/pages/version-menu/html.php b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/html.php new file mode 100755 index 00000000..d63868d2 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/html.php @@ -0,0 +1,43 @@ + + + + + + + + + Verdnatura + + + + + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/version-menu/new-web.svg b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/new-web.svg new file mode 100644 index 00000000..0b055e28 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/new-web.svg @@ -0,0 +1,233 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/debian/hedera-web/usr/share/hedera-web/pages/version-menu/old-web.svg b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/old-web.svg new file mode 100644 index 00000000..f0e5f656 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/old-web.svg @@ -0,0 +1,198 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/debian/hedera-web/usr/share/hedera-web/pages/version-menu/style.css b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/style.css new file mode 100644 index 00000000..0aa06615 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/version-menu/style.css @@ -0,0 +1,90 @@ +/* +@media + (min-resolution: 120dpi) and (min-width: 800px), + (max-resolution: 119dpi) and (max-width: 800px) +{ + +} +*/ +@media + (min-resolution: 120dpi) and (orientation: portrait) +{ + * { font-size: 18pt; } +} +@media + (min-resolution: 120dpi) and (orientation: landscape) +{ + * { font-size: 10pt; } +} +@media (orientation: portrait) +{ + #main + { + padding: 0; + } + #main > div + { + display: block; + width: 80%; + padding: 0 10%; + } + #main > div + { + padding-bottom: 2em; + } +} +@media (orientation: landscape) +{ + #main + { + padding: 0; + } + #main > div + { + display: inline-block; + vertical-align: top; + width: 24%; + padding: 0 5%; + } +} + +* +{ + font-family: 'Open Sans'; +} +body +{ + position: absolute; + margin: 0; + padding: 0; + width: 100%; + height: 100%; +} +#main +{ + position: relative; + text-align: center; +} +h1 +{ + font-size: 2.5em; + font-weight: normal; + margin: 1.2em 1em; + padding: 0; +} +img +{ + width: 100%; + margin-bottom: .8em; +} +p +{ + text-align: center; + font-size: 1.6em; + margin: 0; +} +a +{ + color: black; + text-decoration: none; +} diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/head.php b/debian/hedera-web/usr/share/hedera-web/pages/web/head.php new file mode 100755 index 00000000..d4782044 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/head.php @@ -0,0 +1,21 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/html.php b/debian/hedera-web/usr/share/hedera-web/pages/web/html.php new file mode 100755 index 00000000..d702b1b4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/html.php @@ -0,0 +1,57 @@ + + + + + + + + + + Verdnatura + + + +
+
+ +
+
+
+
+
+
+ + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/mobile.css b/debian/hedera-web/usr/share/hedera-web/pages/web/mobile.css new file mode 100644 index 00000000..6b2c72fc --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/mobile.css @@ -0,0 +1,26 @@ + +#menu-button +{ + display: block; +} +#menu-box +{ + display: none; +} +#form-holder +{ + left: 0; +} +ul.submenu +{ + display: block; + position: relative; + border: none; + border-radius: 0; + background-color: white; + box-shadow: none; +} +.htk-toast +{ + margin-left: -11em; +} diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/module.js b/debian/hedera-web/usr/share/hedera-web/pages/web/module.js new file mode 100644 index 00000000..dae182b7 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/module.js @@ -0,0 +1,81 @@ + +Vn.Module = new Class +({ + Extends: Vn.Object + + ,initialize: function (gui, formInfo) + { + this.gui = gui; + this.conn = gui.conn; + this.hash = gui.hash; + this.formInfo = formInfo; + } + + /** + * Gets an object from the builder associated to this form. + * + * @param {string} objectId The object identifier + * @return {Object} The object, or %null if not found + **/ + ,$: function (objectId) + { + if (this.builder) + return this.builder.get (objectId); + + return null; + } + + /** + * Called when the form is opened. + **/ + ,open: function () + { + this.close (); + + this.builder = new Vn.Builder (); + this.builder.signalData = this; + this.builder.loadXml (Vn.getXml ('forms/'+ this.formInfo.path +'/ui.xml')); + this.node = this.builder.get ('form'); + + var models = this.builder.getObjects ('db-model'); + + for (var i = 0; i < models.length; i++) + models[i].conn = this.conn; + + var queries = this.builder.getObjects ('db-query'); + + for (var i = 0; i < queries.length; i++) + queries[i].conn = this.conn; + + this.gui.formHolder.appendChild (this.node); + } + + /** + * Called when the form is activated. + **/ + ,activate: function () {} + + /** + * Called when the form is closed. + **/ + ,close: function () + { + if (this.node) + { + Vn.Node.remove (this.node); + this.node = null; + } + if (this.builder) + { + this.builder.unref (); + this.builder = null; + } + } + + ,_destroy: function () + { + this.close (); + this.parent (); + } +}); + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/style.css b/debian/hedera-web/usr/share/hedera-web/pages/web/style.css new file mode 100644 index 00000000..ca2ad951 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/style.css @@ -0,0 +1,282 @@ + +body +{ + position: absolute; + margin: 0; + height: 100%; + width: 100%; + background-color: #EEE; + +} + +/* Font */ + +#welcome, +#exit span, +#menu-title, +#menu a +{ + font-size: 1.1em; +} + +/* Header */ + +#header, +#exit +{ + height: 4.2em; +} +#header +{ + position: relative; + background-color: #333; + width: 100%; + z-index: 1; +} +#header * +{ + color: white; +} +#header-bar +{ + position: relative; + height: 100%; + overflow: hidden; +} +#logo +{ + width: 16em; + float: left; + padding: 1em; + padding-top: 1.2em; +} +#loader +{ + float: left; + margin-left: 0.4em; + margin-top: 1.4em; + visibility: hidden; +} +#welcome +{ + float: right; + padding: 0 1.5em; +} +#welcome span +{ + font-size: 1em; +} +#welcome, +#exit span +{ + margin-top: 2em; +} +#exit +{ + float: right; + background-color: #FC9900; + width: 4em; + text-align: center; +} +#exit:hover +{ + background-color: #FCA910; +} +#exit span +{ + display: block; +} +#header, +#content +{ + margin: auto; + width: 100%; +} + +/* Body */ + +#body +{ + position: absolute; + top: 4.2em; + bottom: 0; + left: 0; + right: 0; +} +#content +{ + position: relative; + height: 100%; +} + +/* Top bar */ + +#top-bar +{ + height: 3em; + overflow: hidden; + background-color: #CE8; +} + +/* Left panel */ + +#menu-button +{ + display: none; + float: left; + border: none; + background-color: transparent; + padding: 0; + margin: 0; + margin-left: 0.6em; + height: 4.2em; +} +#menu-button img +{ + height: 2em; +} +#background +{ + z-index: 10; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(10, 10, 10, 0.6); + display: none; +} +#menu-box, +#menu > li, +ul.submenu +{ + width: 15em; +} +#menu-box +{ + z-index: 20; + position: absolute; + left: 0; + bottom: 0; + top: 0; + background-color: white; + z-index: 20; + box-shadow: 0 0.2em 0.2em #AAA; +} +#menu-overflow +{ + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 4em; + overflow: auto; +} + +/* Test link */ + +#test-link +{ + display: block; + margin: 1em auto; + max-width: 70%; + background-color: #3f51b5; + color: white; + padding: 0 1em; + line-height: 2em; + border-radius: 0.1em; + text-align: center; +} +#test-link:hover +{ + background-color: #4f61c5; +} + +/* Menu */ + +#menu +{ + list-style-type: none; + padding: 0; + margin: 0; +} +#menu > li +{ + display: block; + float: left; + clear: both; + padding: 0; +} +#menu > li > a +{ + line-height: 2.8em; + width: 70%; + padding: 0 15%; +} +#menu a +{ + float: left; +} +#menu a:hover +{ + background-color: #DDD /* #AC6 */; +} +#menu a.selected +{ + background-color: #EEE; +} +ul.submenu +{ + display: none; + position: fixed; + border: none; + border-radius: 1px; + background-color: white; + box-shadow: 0 0.2em 0.2em #CCC; + z-index: 50; + list-style-type: none; + padding-left: 0; +} +ul.submenu a +{ + width: 60%; + padding: 0.7em 20%; +} + +/* Links */ + +#links +{ + position: absolute; + bottom: 0; + right: 0; + padding: 0.8em; +} +#links a +{ + padding: 0.1em; + display: block; + float: left; + max-width: 2.2em; +} +#links img +{ + height: 1.8em; +} + +/* Form holder */ + +#form-holder +{ + position: absolute; + top: 0em; + bottom: 0; + right: 0; + left: 15em; + overflow: auto; +} +.htk-toast +{ + margin-left: -3em; +} + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/tpv.js b/debian/hedera-web/usr/share/hedera-web/pages/web/tpv.js new file mode 100644 index 00000000..562e6380 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/tpv.js @@ -0,0 +1,124 @@ + +Vn.Tpv = +{ + check: function (conn) + { + var tpvStatus = Vn.Hash.get ('tpv_status'); + + if (tpvStatus) + { + var batch = new Sql.Batch (); + batch.addValue ('transaction', Vn.Hash.get ('tpv_order')); + batch.addValue ('status', tpvStatus); + + var query = 'CALL transaction_end (#transaction, #status)'; + + conn.execQuery (query, null, batch); + } + } + + ,pay: function (conn, amount, company) + { + if (amount > 0) + { + var query = 'CALL transaction_start (#company, #amount)'; + + var batch = new Sql.Batch (); + batch.addValue ('company', company); + batch.addValue ('amount', parseInt (amount * 100)); + + conn.execQuery (query, + this._onTransactionStart.bind (this), batch); + } + else if (!isNaN (amount)) + Htk.Toast.showError (_('AmountError')); + } + + ,_onTransactionStart: function (resultSet) + { + var res = resultSet.fetchResult (); + + if (res && res.next ()) + { + var form = document.createElement ('form'); + form.method = 'post'; + form.action = res.get ('url'); + document.body.appendChild (form); + + var fieldsMap = + { + 'Ds_Merchant_Amount': 'amount' + ,'Ds_Merchant_Order': 'ds_order' + ,'Ds_Merchant_MerchantCode': 'id' + ,'Ds_Merchant_Currency': 'currency' + ,'Ds_Merchant_TransactionType': 'transaction_type' + ,'Ds_Merchant_Terminal': 'terminal' + ,'Ds_Merchant_MerchantURL': 'merchant_url' + ,'Ds_Merchant_MerchantSignature': 'signature' + ,'Ds_Merchant_UrlOK': null + ,'Ds_Merchant_UrlKO': null + }; + + for (var field in fieldsMap) + { + var input = document.createElement ('input'); + input.type = 'hidden'; + input.name = field; + form.appendChild (input); + + if (fieldsMap[field]) + input.value = res.get (fieldsMap[field]); + } + + var transactionId = res.get ('ds_order'); + form['Ds_Merchant_UrlOK'].value = this._makeUrl ('ok', transactionId); + form['Ds_Merchant_UrlKO'].value = this._makeUrl ('ko', transactionId); + + form.submit (); + } + else + Htk.Toast.showWarning (_('PayError')); + } + + ,_makeUrl: function (status, order) + { + var path = location.protocol +'//'+ location.host; + path += location.port ? ':'+ location.port : ''; + path += location.pathname; + path += location.search ? location.search : ''; + path += Vn.Hash.make ({ + 'form': 'ecomerce/orders', + 'tpv_status': status, + 'tpv_order': order + }, true); + + return path; + } +}; + +Vn.BasketChecker = +{ + check: function (conn, callback) + { + conn.execQuery ('CALL basket_check ()', + this._onBasketCheck.bind (this, callback)); + } + + ,_onBasketCheck: function (callback, resultSet) + { + var status = resultSet.fetchValue (); + + if (!status) + return; + + var isOk = status == 'UPDATED' || status == 'OK'; + + if (status == 'UPDATED') + Htk.Toast.showWarning (_('OrderItemsUpdated')); + if (callback) + callback (isOk); + if (!isOk) + Vn.Hash.set ({'form': 'ecomerce/checkout'}); + } +}; + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/web.js b/debian/hedera-web/usr/share/hedera-web/pages/web/web.js new file mode 100644 index 00000000..49d61005 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/web.js @@ -0,0 +1,493 @@ + +window.addEventListener ('load', + function () { Vn.Web.initialize (); }); + +Vn.Web = +{ + forms: {} + ,activeForm: null + ,activeCss: null + ,requestedForm: null + ,menuShown: false + ,menuOptions: {} + ,choosedOption: null + + ,initialize: function () + { + window.onerror = function (message, file, line) + { + var error = new Error (message); + error.fileName = file; + error.lineNumber = line; + + Htk.Toast.showError (_('InternalError')); + this.notifyError (error); + }.bind (this); + + this.loadingCount = 0; + this.loader = $('loader'); + this.formHolder = $('form-holder'); + + Vn.Hash.initialize (); + this.hash = Vn.Hash; + + this.hashParam = new Vn.HashParam ({key: 'form'}); + this.hashParam.on ('changed', this.onFormChange, this); + + $('background').onclick = function () {}; + + $('menu-button').addEventListener ('click', function (event) + { + event.stopPropagation (); + + if (!this.menuShown) + this.showMenu (); + else + this.hideMenu (); + }.bind (this)); + + $('menu-box').addEventListener ('click', function (event) + { + event.stopPropagation (); + }); + + if (!Vn.Cookie.check ('hedera_cookies')) + { + Vn.Cookie.set ('hedera_cookies', true); + Htk.Toast.showWarning (_('CookiesNotification')); + } + + this.conn = new Db.Conn (); + this.conn.on ('error', this.onConnError, this); + this.conn.on ('loading-changed', this.onConnLoading, this); +// this.conn.open (null, null, null, this.connOpened.bind (this)); + + var sql = 'SELECT default_form, image_dir, image_host FROM config;' + +'SELECT production_domain, test_domain FROM config;' + +'SELECT name FROM customer_view;' + +'CALL form_list ();'; + this.conn.execQuery (sql, this.onMainQueryDone.bind (this)); + } + + ,showBackground: function () + { + Vn.Node.show ($('background')); + } + + ,hideBackground: function () + { + Vn.Node.hide ($('background')); + } + + ,showMenu: function () + { + this.showBackground (); + Vn.Node.show ($('menu-box')); + this.menuShown = true; + + this.hideMenuCallback = this.hideMenu.bind (this); + document.addEventListener ('click', this.hideMenuCallback); + } + + ,hideMenu: function () + { + this.hideBackground (); + Vn.Node.hide ($('menu-box')); + $('menu-button').style.display = 'initial'; + this.menuShown = false; + + document.removeEventListener ('click', this.hideMenuCallback); + this.hideMenuCallback = null; + } + + ,onMainQueryDone: function (resultSet) + { + // Retrieving configuration parameters + + var res = resultSet.fetchResult (); + var columns = res.columns; + + if (res.next ()) + for (var i = 0; i < res.columns.length; i++) + Vn.Config[columns[i].name] = res.get (columns[i].name); + + // Retrieving configuration parameters + + var res = resultSet.fetchResult (); + + if (res.next () && res.get ('test_domain')) + { + if (location.host != res.get ('production_domain')) + { + var linkText = 'ReturnToOldWebsite'; + var linkField = 'production_domain'; + } + else + { + var linkText = 'TestTheNewWebsite'; + var linkField = 'test_domain'; + } + + Vn.Node.setText ($('test-link'), _(linkText)); + $('test-link').href = '//'+ res.get (linkField); + } + else + Vn.Node.hide ($('test-link')); + + // Retrieving the user name + + var userName = resultSet.fetchValue (); + + if (userName) + { + var span = $('user-name'); + span.appendChild (document.createTextNode (', '+ userName)); + } + + // Retrieving menu sections + + var res = resultSet.fetchResult (); + var sectionMap = {}; + + if (res) + for (var i = 0; res.next (); i++) + { + var parent = res.get ('parent'); + + if (!sectionMap[parent]) + sectionMap[parent] = []; + + sectionMap[parent].push (i); + } + + this.createMenu (res, sectionMap, null, $('menu')); + + // Loading the default form + + this.onFormChange (); + } + + ,notifyError: function (error) + { + if (error instanceof Error) + { + var httpRequest = new Vn.HttpRequest () + httpRequest.add + ({ + 'file': error.fileName + ,'line': error.lineNumber + ,'message': error.message + ,'stack': error.stack + }); + httpRequest.send ('log.php'); + } + } + + ,errorHandler: function (error) + { + if (error instanceof Vn.Error) + switch (error.domain) + { + case 'Auth': + this.unload (); + location.assign ('?page=login#!error='+ error.code); + break; + case 'Version': + this.newVersion (error); + break; + case 'User': + Htk.Toast.showError (error.message); + break; + default: + console.error (error.message); + Htk.Toast.showError (_('InternalError')); + } + else + { + console.error (error); + Htk.Toast.showError (_('InternalError')); + this.notifyError (error); + } + } + + ,onConnError: function (conn, error) + { + this.errorHandler (error); + } + + ,onConnLoading: function (conn, isLoading) + { + if (isLoading) + this.loaderPush (); + else + this.loaderPop (); + } + + ,loaderPush: function () + { + this.loadingCount++; + + if (this.loadingCount == 1) + this.loader.style.visibility = 'visible'; + } + + ,loaderPop: function () + { + if (this.loadingCount == 0) + return; + + this.loadingCount--; + + if (this.loadingCount == 0) + this.loader.style.visibility = 'hidden'; + } + + ,newVersion: function (error) + { + if (this.newVersionBlock || this.skipVersion) + return; + + this.newVersionBlock = true; + + var reload; + var message = _('NewVersionAvailable') +"\n\n"+ error.message; + + if (error.code == 'criticalVersion') + { + alert (message) + reload = true; + } + else + { + reload = confirm (message); + this.skipVersion = true; + } + + if (reload) + { + this.unload (); + location.reload (); + } + + this.newVersionBlock = false; + } + + ,createMenu: function (res, sectionMap, parent, ul) + { + var sections = sectionMap[parent]; + + for (var i = 0; i < sections.length; i++) + { + res.row = sections[i]; + + var li = document.createElement ('li'); + ul.appendChild (li); + + var a = document.createElement ('a'); + a.href = Vn.Hash.make ({'form': res.get ('path')}); + this.menuOptions[res.get ('path')] = a; + li.appendChild (a); + + var text = document.createTextNode (_(res.get ('description'))); + a.appendChild (text); + + var formId = res.get ('id'); + + if (sectionMap[formId]) + { + var submenu = document.createElement ('ul'); + submenu.className = 'submenu'; + li.appendChild (submenu); + + li.addEventListener ('mouseover', + this.onLiMouseHover.bind (this, submenu, a)); + li.addEventListener ('mouseout', + this.onLiMouseOut.bind (this)); + + this.createMenu (res, sectionMap, formId, submenu); + } + } + } + + ,onLiMouseHover: function (submenu, parent) + { + if (Vn.isMobile ()) + return; + + this.hideSubmenu (); + this.activeSubmenu = submenu; + + var rect = parent.getBoundingClientRect (); + submenu.style.display = 'inline'; + submenu.style.left = rect.right +'px'; + submenu.style.top = rect.top +'px'; + } + + ,onLiMouseOut: function () + { + this.timeout = setTimeout (this.hideSubmenu.bind (this), 160); + } + + ,hideSubmenu: function () + { + var submenu = this.activeSubmenu; + + if (submenu) + { + submenu.style.display = 'none'; + clearTimeout (this.timeout); + this.activeSubmenu = null; + this.timeout = 0; + } + } + + ,onFormChange: function () + { + var formPath = this.hashParam.value; + this.openForm (formPath ? formPath : Vn.Config['default_form'], null); + } + + ,openForm: function (formPath, callback) + { + if (Vn.isMobile ()) + this.hideMenu (); + + this.loaderPush (); + + this.requestedForm = formPath; + + var formInfo = this.forms[formPath]; + var path = 'forms/'+ formPath; + + if (this.activeForm) + { + this.activeForm.close (); + this.activeForm.unref (); + this.activeForm = null; + } + + if (this.activeCss) + { + Vn.excludeCss (this.activeCss +'/style.css'); + + if (Vn.isMobile ()) + Vn.excludeCss (this.activeCss +'/mobile.css'); + } + + this.activeCss = path; + + Vn.includeCss (this.activeCss +'/style.css'); + + if (Vn.isMobile ()) + Vn.includeCss (this.activeCss +'/mobile.css'); + + if (!formInfo) + { + var aux = formPath.split ('/'); + var formName = aux[aux.length - 1]; + + var klass = 'Vn.'+ formName.charAt (0).toUpperCase (); + klass += formName.substr (1).replace (/\w\-\w/g, function (token) + { + return token.charAt (0) + token.charAt (2).toUpperCase (); + }); + + formInfo = { + path: formPath + ,klass: klass + ,localeReady: false + ,jsReady: false + ,uiReady: false + ,error: false + ,ready: false + ,callbacks: [] + }; + + Vn.Locale.load (path, + this.onFormLocaleReady.bind (this, formInfo)); + Vn.includeJs (path +'/'+ formName +'.js', + this.onFormJsReady.bind (this, formInfo)); + Vn.loadXml ('forms/'+ formPath +'/ui.xml', + this.onFormUiReady.bind (this, formInfo)); + + this.forms[formPath] = formInfo; + } + + var newChoosedOption = this.menuOptions[formInfo.path]; + + if (newChoosedOption) + { + if (this.choosedOption) + this.choosedOption.className = null; + + newChoosedOption.className = 'selected'; + this.choosedOption = newChoosedOption; + } + + if (callback) + formInfo.callbacks.push (callback); + if (formInfo.ready) + this.onFormReady (formInfo); + } + + ,onFormLocaleReady: function (formInfo, success) + { + formInfo.localeReady = true; + this.onFormReady (formInfo); + } + + ,onFormJsReady: function (formInfo, success) + { + formInfo.jsReady = true; + formInfo.error = !success; + this.onFormReady (formInfo); + } + + ,onFormUiReady: function (formInfo, success) + { + formInfo.uiReady = true; + formInfo.error = !success; + this.onFormReady (formInfo); + } + + ,onFormReady: function (formInfo) + { + if (!(formInfo.localeReady && formInfo.jsReady && formInfo.uiReady)) + return; + + formInfo.ready = true; + + if (!formInfo.error) + { + if (formInfo.path == this.requestedForm) + try { + var klass = eval (formInfo.klass); + this.activeForm = new klass (this, formInfo); + this.activeForm.open (); + this.activeForm.activate (); + } + catch (e) { + formInfo.error = true; + this.errorHandler (error); + } + } + else + Htk.Toast.showError (_('ErrorLoadingForm')); + + var callbacks = formInfo.callbacks; + formInfo.callbacks = []; + + for (var i = 0; i < callbacks.length; i++) + callbacks[i] (this.activeForm); + + this.loaderPop (); + } + + ,unload: function () + { + this.hashParam.unref (); + this.conn.disconnect ('error', this.onConnError, this); + this.conn.disconnect ('loading-changed', this.onConnLoading, this); + } +}; + diff --git a/debian/hedera-web/usr/share/hedera-web/pages/web/web.php b/debian/hedera-web/usr/share/hedera-web/pages/web/web.php new file mode 100755 index 00000000..d227eb57 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/pages/web/web.php @@ -0,0 +1,11 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/reports/shelves/report.xml b/debian/hedera-web/usr/share/hedera-web/reports/shelves/report.xml new file mode 100755 index 00000000..4874b410 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/reports/shelves/report.xml @@ -0,0 +1,10 @@ + +
+

+ +

+
+ +
+
+
diff --git a/debian/hedera-web/usr/share/hedera-web/reports/shelves/shelves.js b/debian/hedera-web/usr/share/hedera-web/reports/shelves/shelves.js new file mode 100644 index 00000000..5344cde6 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/reports/shelves/shelves.js @@ -0,0 +1,5 @@ + +Vn.ShelvesReport = new Class +({ + Extends: Vn.Report +}); diff --git a/debian/hedera-web/usr/share/hedera-web/reports/shelves/style.css b/debian/hedera-web/usr/share/hedera-web/reports/shelves/style.css new file mode 100644 index 00000000..dc0e7764 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/reports/shelves/style.css @@ -0,0 +1,60 @@ + +h1 +{ + font-weight: normal; + font-size: 15mm; + margin: 0; +} +h1.title +{ + float: left; +} +h1.page-number +{ + float: right; + text-align: right; +} +.shelf +{ + position: relative; + margin: 0 auto; + padding-top: 40mm; +} +.edge, +.tray +{ + position: absolute; + border: 1px solid black; + box-sizing: border-box; +} +.box +{ + position: absolute; + border: 1px solid black; + text-align: center; +} +.box > span +{ + font-size: 70%; + text-align: center; + margin: 5%; + display: inline-block; + line-height: 100%; + vertical-align: middle; +} +.color0 +{ + background-color: #ECC !important; +} +.color1 +{ + background-color: #CEC !important; +} +.color2 +{ + background-color: #CCE !important; +} +.color3 +{ + background-color: #ECE !important; +} diff --git a/debian/hedera-web/usr/share/hedera-web/rest.php b/debian/hedera-web/usr/share/hedera-web/rest.php new file mode 100755 index 00000000..f20207f3 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/rest.php @@ -0,0 +1,113 @@ +getFile () + ,$e->getLine () + ,$e->getMessage () + ,$e->getTraceAsString () + )); + myGlobalErrorHandler (); +} + +set_error_handler ('myErrorHandler', E_ALL); +set_exception_handler ('myExceptionHandler'); + +Rest\Service::init (); + +try { + Web::init (); + + if (!Web::login ()) + throw new Rest\Exception ('Auth', 'sessionExpired', s('SessionExpired')); + + // Checking the client version + + if (isset ($_COOKIE['hedera_version'])) + { + $clientVersion = (float) $_COOKIE['hedera_version']; + + if ($clientVersion < Web::getVersion ()) + { + Web::sysInit (); + + $row = Web::$sysConn->getRow ( + 'SELECT critical, changelog FROM version LIMIT 1'); + + if (!$row || $row['critical']) + throw new Rest\Exception ('Version', 'criticalVersion', $row['changelog']); + else + Rest\Service::addWarning ('Version', 'newVersion', $row['changelog']); + } + } + + // Getting the action + + $action = NULL; + + if (isset ($_REQUEST['action'])) + $action = $_REQUEST['action']; + + if ($action && Vn\Hedera\checkToken ($action)) + { + $actionFile = 'rest/'. $action .'.php'; + + if (file_exists ($actionFile)) + { + Locale::addPath ('rest/'. $action); + require_once ($actionFile); + + $module = new RestMod (Web::$conn); + Rest\Service::setData ($module->run ()); + } + else + throw new Rest\Exception ('Rest', 'invalidAction', s('InvalidAction')); + } +} +catch (Rest\Exception $e) +{ + Rest\Service::setError ($e->getDomain (), $e->getCode (), $e->getMessage ()); +} + +myExitHandler (); + +?> diff --git a/debian/hedera-web/usr/share/hedera-web/rest/image.php b/debian/hedera-web/usr/share/hedera-web/rest/image.php new file mode 100755 index 00000000..dff39c13 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/rest/image.php @@ -0,0 +1,26 @@ +getCode (), $e->getMessage ()); + } + } +} + +?> diff --git a/debian/hedera-web/usr/share/hedera-web/rest/login.php b/debian/hedera-web/usr/share/hedera-web/rest/login.php new file mode 100755 index 00000000..7b6af57c --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/rest/login.php @@ -0,0 +1,11 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/rest/logout.php b/debian/hedera-web/usr/share/hedera-web/rest/logout.php new file mode 100755 index 00000000..b3fb57df --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/rest/logout.php @@ -0,0 +1,14 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/rest/query.php b/debian/hedera-web/usr/share/hedera-web/rest/query.php new file mode 100755 index 00000000..243088d7 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/rest/query.php @@ -0,0 +1,205 @@ +conn; + + try { + $conn->multiQuery ($_REQUEST['sql']); + + do { + $result = $conn->storeResult (); + + if ($result !== FALSE) + { + $tableMap = []; + $columns = $result->fetch_fields (); + + $resultMap = + [ + 'data' => [], + 'columns' => [], + 'tables' => [] + ]; + + for ($i = 0; $i < $result->field_count; $i++) + { + $column = $columns[$i]; + + switch ($column->type) + { + case MYSQLI_TYPE_BIT: + $type = TYPE_BOOLEAN; + break; + case MYSQLI_TYPE_TINY: + case MYSQLI_TYPE_SHORT: + case MYSQLI_TYPE_LONG: + case MYSQLI_TYPE_LONGLONG: + case MYSQLI_TYPE_INT24: + case MYSQLI_TYPE_YEAR: + $type = TYPE_INTEGER; + break; + case MYSQLI_TYPE_FLOAT: + case MYSQLI_TYPE_DOUBLE: + case MYSQLI_TYPE_DECIMAL: + case MYSQLI_TYPE_NEWDECIMAL: + $type = TYPE_DOUBLE; + break; + case MYSQLI_TYPE_DATE: + $type = TYPE_DATE; + break; + case MYSQLI_TYPE_DATETIME: + case MYSQLI_TYPE_TIMESTAMP: + $type = TYPE_DATE_TIME; + break; + default; + $type = TYPE_STRING; + } + + if (!isset ($tableMap[$column->table])) + { + $resultMap['tables'][] = + [ + 'name' => $column->table, + 'orgname' => $column->orgtable, + 'schema' => $column->db, + 'pks' => [] + ]; + $tableIndex = count ($resultMap['tables']) - 1; + $tableMap[$column->table] = $tableIndex; + } + else + $tableIndex = $tableMap[$column->table]; + + if ($column->flags & MYSQLI_PRI_KEY_FLAG) + $resultMap['tables'][$tableIndex]['pks'][] = $i; + + $default = $this->castValue ($column->def, $type); + + $resultMap['columns'][] = + [ + 'type' => $type, + 'flags' => $column->flags, + 'def' => $default, + 'name' => $column->name, + 'orgname' => $column->orgname, + 'table' => $tableIndex + ]; + } + + $columns = $resultMap['columns']; + + while ($row = $result->fetch_row ()) + { + for ($j = 0; $j < $result->field_count; $j++) + $this->castValue ($row[$j], $columns[$j]['type']); + + $resultMap['data'][] = $row; + } + + $results[] = $resultMap; + $result->free (); + } + else + $results[] = TRUE; + } + while ($conn->moreResults () && $conn->nextResult ()); + + // Checks for warnings + + if ($conn->checkWarnings () + && ($result = $conn->query ('SHOW WARNINGS'))) + { + $sql = 'SELECT description, @warn code '. + 'FROM sql_message WHERE code = @warn'; + + while ($row = $result->fetch_assoc ()) + { + if ($row['Code'] == 1265 + && ($warning = $conn->getRow ($sql))) + Rest\Service::addWarning ('User', $warning['code'], $warning['description']); + else + trigger_error ("Db\\Conn: ${row['Code']}: ${row['Message']}", E_USER_WARNING); + } + } + + // Checks for errors + + $conn->checkError (); + } + catch (Db\Exception $e) + { + $row = NULL; + $code = $e->getCode (); + $message = $e->getMessage (); + + switch ($code) + { + case 1644: // ER_SIGNAL_EXCEPTION + { + $sql = 'SELECT description, #code code '. + 'FROM sql_message WHERE code = #code'; + $row = $conn->getRow ($sql, ['code' => $message]); + break; + } + case 1305: // ER_SP_DOES_NOT_EXIST + { + if (strpos ($message, 'EXCEPTION') === FALSE) + break; + + $sql = 'SELECT description, @err code '. + 'FROM sql_message WHERE code = @err'; + $row = $conn->getRow ($sql); + break; + } + } + + if ($row) + throw new Rest\Exception ('User', $row['code'], $row['description']); + else + throw $e; + } + + return $results; + } + + function castValue (&$value, $type) + { + if ($value !== NULL) + switch ($type) + { + case TYPE_BOOLEAN: + $value = (bool) $value; + break; + case TYPE_INTEGER: + $value = (int) $value; + break; + case TYPE_DOUBLE: + $value = (float) $value; + break; + case TYPE_DATE: + case TYPE_DATE_TIME: + $value = mktime + ( + substr ($value, 11 , 2) + ,substr ($value, 14 , 2) + ,substr ($value, 17 , 2) + ,substr ($value, 5 , 2) + ,substr ($value, 8 , 2) + ,substr ($value, 0 , 4) + ); + break; + } + } +} + +?> diff --git a/debian/hedera-web/usr/share/hedera-web/tpv/imap.php b/debian/hedera-web/usr/share/hedera-web/tpv/imap.php new file mode 100755 index 00000000..f945cf3d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/tpv/imap.php @@ -0,0 +1,7 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/tpv/post.php b/debian/hedera-web/usr/share/hedera-web/tpv/post.php new file mode 100755 index 00000000..e5a494b4 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/tpv/post.php @@ -0,0 +1,7 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/tpv/soap-request.xml b/debian/hedera-web/usr/share/hedera-web/tpv/soap-request.xml new file mode 100644 index 00000000..ddd87542 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/tpv/soap-request.xml @@ -0,0 +1 @@ +21/10/201417:561D7241978000000007216329744999001000001563451b97d1aba50aac5efc0915f59a70e24fc94cb3ffe diff --git a/debian/hedera-web/usr/share/hedera-web/tpv/soap-test.php b/debian/hedera-web/usr/share/hedera-web/tpv/soap-test.php new file mode 100644 index 00000000..ccbd3e71 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/tpv/soap-test.php @@ -0,0 +1,61 @@ +__soapCall ('procesaNotificacionSIS', [ + 'XML' => $requestString + ]); + + $xml = new SimpleXMLElement ($result); + + $key = $_POST['key']; + + $start = strpos ($result, ''); + $shaString = substr ($result, $start, $end - $start + 11); + $shaHash = sha1 ($shaString.$key); + + $isValid = $xml->{'Signature'} == $shaHash; +} +else +{ + $key = ''; + $result = ''; + $shaHash = ''; + $isValid = FALSE; +} + +?> + + + + + TPV SOAP Client + + + +
+ + + +
+

Response

+

+

+

+

Signature

+

+ Calculated: +

+

+ Valid: /> +

+ + diff --git a/debian/hedera-web/usr/share/hedera-web/tpv/soap.php b/debian/hedera-web/usr/share/hedera-web/tpv/soap.php new file mode 100755 index 00000000..817a8e1d --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/tpv/soap.php @@ -0,0 +1,7 @@ + diff --git a/debian/hedera-web/usr/share/hedera-web/unavailable.html b/debian/hedera-web/usr/share/hedera-web/unavailable.html new file mode 100755 index 00000000..9ed80f0f --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/unavailable.html @@ -0,0 +1,39 @@ + + + + + + No disponible - Verdnatura + + + +
+

+ Estamos teniendo problemas; por favor, + espera unos minutos e inténtalo de nuevo. +

+ + Intentarlo de nuevo + +
+ + diff --git a/debian/hedera-web/usr/share/hedera-web/visits-sync.php b/debian/hedera-web/usr/share/hedera-web/visits-sync.php new file mode 100755 index 00000000..26baca41 --- /dev/null +++ b/debian/hedera-web/usr/share/hedera-web/visits-sync.php @@ -0,0 +1,66 @@ +connect_error) + exit ($conn->connect_error); + +$result = $conn->query ("SELECT id, agent FROM visit_agent " + ."WHERE version = '0.0' OR platform = 'unknown' OR cookies IS NULL ORDER BY id DESC"); + +$stmt = $conn->prepare ( + 'UPDATE visit_agent SET platform = ?, browser = ?, version = ?, javascript = ?, cookies = ? WHERE id = ?'); + +if ($result && $stmt) +{ + set_time_limit (0); + + $stmt->bind_param('sssiii' + ,$platform + ,$browser + ,$version + ,$javascript + ,$cookies + ,$id + ); + + while ($row = $result->fetch_assoc ()) + { + echo sprintf ("Processing row: %d\n", $row['id']); + + $info = get_browser ($row['agent']); + $platform = $info->platform; + $browser = $info->browser; + $version = $info->version; + $javascript = $info->javascript; + $cookies = $info->cookies; + $id = $row['id']; + $stmt->execute (); + } +} + +if ($stmt) + $stmt->close (); +if ($result) + $result->free (); + +if ($conn->errno) + exit ($conn->error); + +$conn->close (); + +?> diff --git a/debian/hedera-web/usr/share/php/vn/hedera/hedera.php b/debian/hedera-web/usr/share/php/vn/hedera/hedera.php new file mode 100755 index 00000000..ad4d9392 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/hedera/hedera.php @@ -0,0 +1,7 @@ + diff --git a/debian/hedera-web/usr/share/php/vn/hedera/init.php b/debian/hedera-web/usr/share/php/vn/hedera/init.php new file mode 100644 index 00000000..cddca06c --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/hedera/init.php @@ -0,0 +1,17 @@ + diff --git a/debian/hedera-web/usr/share/php/vn/hedera/js.php b/debian/hedera-web/usr/share/php/vn/hedera/js.php new file mode 100755 index 00000000..adcd2fc3 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/hedera/js.php @@ -0,0 +1,46 @@ +'."\n\t"; + } + + static function includeLib ($libName) + { + $args = func_get_args (); + + $localeJs = 'locale/'. $_SESSION['lang'] .'/js/'. $libName .'.js'; + + if (file_exists ($localeJs)) + self::includeFile ($localeJs); + + for ($i = 1; $i < count ($args); $i++) + self::includeFile ('js/'.$libName.'/'.$args[$i].'.js'); + } + + static function includeCss ($fileName) + { + echo ''."\n\t"; + } + + static function isMobile () + { + if (self::$isMobile === NULL) + { + $re = '/(Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone)/i'; + self::$isMobile = preg_match ($re, $_SERVER['HTTP_USER_AGENT']); + } + + return self::$isMobile; + } +} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/hedera/util.php b/debian/hedera-web/usr/share/php/vn/hedera/util.php new file mode 100755 index 00000000..8a738c1f --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/hedera/util.php @@ -0,0 +1,24 @@ + diff --git a/debian/hedera-web/usr/share/php/vn/hedera/web.php b/debian/hedera-web/usr/share/php/vn/hedera/web.php new file mode 100755 index 00000000..9b5b72b2 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/hedera/web.php @@ -0,0 +1,205 @@ +getRow ( + 'CALL visit_register (#, #, #, #, #, #, #, #, #)', + [ + nullIf ($_COOKIE, 'hedera_visit') + ,nullIf ($browser, 'platform') + ,nullIf ($browser, 'browser') + ,nullIf ($browser, 'version') + ,nullIf ($browser, 'javascript') + ,nullIf ($browser, 'cookies') + ,isset ($agent) ? $agent : NULL + ,isset ($ip) && $ip ? $ip : NULL + ,nullIf ($_SERVER, 'HTTP_REFERER') + ] + ); + + if (isset ($row['access'])) + { + setcookie ('hedera_visit', $row['visit'], time () + 31536000); // 1 Year + $_SESSION['access'] = $row['access']; + } + else + $_SESSION['skipVisit'] = TRUE; + } + + /** + * Opens the system database connection. + **/ + static function sysInit () + { + global $conf; + + if (self::$sysConn) + return; + + self::$sysConn = new Conn (); + self::$sysConn->open ( + 'p:'. $conf['db']['host'] + ,$conf['db']['user'] + ,base64_decode ($conf['db']['pass']) + ,$conf['db']['schema'] + ,$conf['db']['port'] + ); + } + + static function isHttps () + { + return isset ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'; + } + + /** + * Obtains the version of the library. + **/ + static function getVersion () + { + return (int) filectime (__FILE__); + } + + static function login () + { + global $conf; + + $wasLoged = Auth::isLogged (); + $useCookies = TRUE; + $success = TRUE; + + if (isset ($_GET['guest'])) + { + $row = self::$sysConn->getRow ( + 'SELECT guest_user, guest_pass FROM config'); + + if ($row) + { + $_POST['user'] = $row['guest_user']; + $_POST['password'] = base64_decode ($row['guest_pass']); + $useCookies = FALSE; + } + } + + try { + Auth::getCredentials (); + + self::$conn = new Conn (); + self::$conn->open ( + $conf['db']['host'] + ,Auth::getUser () + ,Auth::getPassword () + ,$conf['db']['schema'] + ,$conf['db']['port'] + ); + self::$conn->query ('CALL user_session_start (#)', + [session_id ()]); + + Auth::login ($useCookies); + } + catch (\Exception $e) + { + self::$conn = NULL; + $success = FALSE; + } + + // Registering the user access + + if ($success && !$wasLoged) + unset ($_SESSION['visitUser']); + + if (isset ($_SESSION['access']) + && !isset ($_SESSION['visitUser'])) + { + self::sysInit (); + + $_SESSION['visitUser'] = self::$sysConn->getValue ( + 'CALL visit_user_new (#, #, #)', + [ + $_SESSION['access'] + ,nullIf ($_SESSION, 'visitUser') + ,session_id () + ] + ); + + if (!isset ($_SESSION['visitUnknown']) && !$success) + $_SESSION['visitUnknown'] = $_SESSION['visitUser']; + } + + return $success; + } + + static function deinit () + { + if (self::$conn) + self::$conn->query ('CALL user_session_end ()'); + } + + static function logout () + { + $_SESSION['visitUser'] = nullIf ($_SESSION, 'visitUnknown'); + Auth::logout (); + + if (self::$conn) + { + self::$conn->query ( + 'DELETE FROM user_session_view ' + .'WHERE connection_id = CONNECTION_ID()' + ); + + self::$conn->close (); + self::$conn = NULL; + } + } +} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/rest/encoding.php b/debian/hedera-web/usr/share/php/vn/rest/encoding.php new file mode 100755 index 00000000..938e6ba7 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/encoding.php @@ -0,0 +1,13 @@ + diff --git a/debian/hedera-web/usr/share/php/vn/rest/exception.php b/debian/hedera-web/usr/share/php/vn/rest/exception.php new file mode 100755 index 00000000..51bca234 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/exception.php @@ -0,0 +1,30 @@ +domain = $domain; + $this->code = $code; + } + + function getDomain () + { + return $this->domain; + } +} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/rest/message.php b/debian/hedera-web/usr/share/php/vn/rest/message.php new file mode 100755 index 00000000..16c36b9c --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/message.php @@ -0,0 +1,26 @@ +domain = $domain; + $this->code = $code; + $this->message = $message; + } +} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/rest/module.php b/debian/hedera-web/usr/share/php/vn/rest/module.php new file mode 100755 index 00000000..3678a753 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/module.php @@ -0,0 +1,26 @@ +conn = $conn; + } + + abstract function run (); +} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/rest/reply.php b/debian/hedera-web/usr/share/php/vn/rest/reply.php new file mode 100755 index 00000000..9691adfe --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/reply.php @@ -0,0 +1,19 @@ + diff --git a/debian/hedera-web/usr/share/php/vn/rest/rest.php b/debian/hedera-web/usr/share/php/vn/rest/rest.php new file mode 100755 index 00000000..3e6ffd94 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/rest.php @@ -0,0 +1,10 @@ + diff --git a/debian/hedera-web/usr/share/php/vn/rest/service.php b/debian/hedera-web/usr/share/php/vn/rest/service.php new file mode 100755 index 00000000..a51a322d --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/rest/service.php @@ -0,0 +1,52 @@ +data = $data; + } + + static function addWarning ($domain, $code, $message) + { + if (!isset (self::$reply->warnings)) + self::$reply->warnings = []; + + self::$reply->warnings[] = + new Message ($domain, $code, $message); + } + + static function setError ($domain, $code, $message) + { + self::$reply->data = NULL; + self::$reply->error = + new Message ($domain, $code, $message); + } + + static function sendReply () + { + header ('Content-Type: application/json; charset=UTF-8'); + echo json_encode (self::$reply); + } +} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/tpv/soap-method.php b/debian/hedera-web/usr/share/php/vn/tpv/soap-method.php new file mode 100644 index 00000000..967cac8f --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/tpv/soap-method.php @@ -0,0 +1,87 @@ +{'Request'}; + + if (!(isset ($request['Ds_Amount']) + && isset ($request['Ds_Order']) + && isset ($request['Ds_MerchantCode']) + && isset ($request['Ds_Currency']) + && isset ($request['Ds_Response']))) + throw new Exception ('Missing required parameters'); + + // Checks the signature + + $start = strpos ($requestString, ''); + $shaString = substr ($requestString, $start, $end - $start + 10); + + $key = Tpv::$conn->getValue ( + 'SELECT secret_key FROM tpv_merchant WHERE id = #' + ,[$request['Ds_MerchantCode']] + ); + + if (sha1 ($shaString.$key) != $xml->{'Signature'}) + throw new Exception ('Invalid signature'); + + // Confirms the transaction + + Tpv::$conn->query ( + 'CALL transaction_confirm (#, #, #, #, #)', + [ + $request['Ds_Amount'] + ,$request['Ds_Order'] + ,$request['Ds_MerchantCode'] + ,$request['Ds_Currency'] + ,$request['Ds_Response'] + ] + ); + } + catch (Exception $e) + { + $status = 'KO'; + } + + Tpv::deinit (); + + // Generates the response + + $responseString = file_get_contents (__DIR__ .'/soap-reply.xml'); + $xml = new SimpleXMLElement ($responseString); + + $response = $xml->{'Response'}; + $response->{'Ds_Response_Merchant'} = $status; + + $xml->{'Signature'} = sha1 ($response->asXML ().$key); + + return $xml->asXML (); +/* + // Another way to generate the response + + $xmlResponse = + ' + '. $status .' + '; + + $xmlMessage = + ' + '. $xmlResponse .' + '. sha1 ($xmlResponse.$key) .' + '; + + return $xmlMessage; +*/} + +?> diff --git a/debian/hedera-web/usr/share/php/vn/tpv/soap-reply.xml b/debian/hedera-web/usr/share/php/vn/tpv/soap-reply.xml new file mode 100644 index 00000000..c1d454ba --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/tpv/soap-reply.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/debian/hedera-web/usr/share/php/vn/tpv/soap-request.dtd b/debian/hedera-web/usr/share/php/vn/tpv/soap-request.dtd new file mode 100644 index 00000000..eb73a981 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/tpv/soap-request.dtd @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/debian/hedera-web/usr/share/php/vn/tpv/soap.wsdl b/debian/hedera-web/usr/share/php/vn/tpv/soap.wsdl new file mode 100644 index 00000000..bd85821d --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/tpv/soap.wsdl @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/debian/hedera-web/usr/share/php/vn/tpv/tpv.php b/debian/hedera-web/usr/share/php/vn/tpv/tpv.php new file mode 100755 index 00000000..7f29a495 --- /dev/null +++ b/debian/hedera-web/usr/share/php/vn/tpv/tpv.php @@ -0,0 +1,232 @@ +open ( + $conf['db']['host'] + ,$conf['db']['user'] + ,base64_decode ($conf['db']['pass']) + ,$conf['db']['schema'] + ); + } + + /** + * Deinitializes the class. + **/ + static function deinit () + { + self::$conn->close (); + closelog (); + } + + /** + * Gets transaction confirmations from the IMAP mailbox. + **/ + static function getFromMailbox () + { + self::init (); + + $imap = NULL; + + if (self::$conn->isOpen ()) + { + $imapConf = self::$conn->getRow ( + 'SELECT host, user, pass, clean_period, success_folder, error_folder ' + .'FROM tpv_imap_config' + ); + + if ($imapConf) + { + $mailbox = sprintf ('{%s/imap/ssl/novalidate-cert}INBOX', + $imapConf['host']); + + $imap = imap_open ($mailbox + ,$imapConf['user'] + ,base64_decode ($imapConf['pass']) + ); + } + } + + if ($imap) + { + // Fetchs and confirms new transaction mails + + $inbox = imap_search ($imap, 'ALL'); + + if ($inbox) + foreach ($inbox as $msg) + { + // Decodes the mail body + + $params = []; + $body = imap_fetchbody ($imap, $msg, '1'); + $strings = explode (';', $body); + + foreach ($strings as $string) + { + $x = explode (':', $string); + $params[trim ($x[0])] = trim ($x[1]); + } + + // Confirms the transaction + + $success = self::confirm ($params); + + // Moves the processed mail to another folder + + if ($success) + $folder = $imapConf['success_folder']; + else + $folder = $imapConf['error_folder']; + + $folder = sprintf ('INBOX.%s', $folder); + + if (!imap_mail_move ($imap, $msg, $folder)) + error_log ('TPV: IMAP: Can\'t move message to %s: %s' + ,$folder + ,imap_last_error () + ); + } + + if ($inbox && ($count = count ($inbox)) > 0) + error_log ('TPV: %d mails processed.', $count); + + imap_expunge ($imap); + + // Cleans the old mails + + if (rand (1, 20) == 1) + { + $folders = array ( + $imapConf['success_folder'] + ,$imapConf['error_folder'] + ); + + $deleted = 0; + $date = new \DateTime (NULL); + $date->sub (new \DateInterval ($imapConf['clean_period'])); + $filter = sprintf ('BEFORE "%s"', $date->format('D, j M Y')); + + foreach ($folders as $folder) + if (imap_reopen ($imap, $mailbox.'.'.$folder)) + if ($messages = imap_search ($imap, $filter)) + { + foreach ($messages as $message) + imap_delete ($imap, $message); + + imap_expunge ($imap); + $deleted += count ($messages); + } + + error_log ('TPV: Cleaner: %d mails deleted.', $deleted); + } + + imap_close ($imap); + } + else + error_log ('TPV: IMAP: %s', imap_last_error ()); + + self::deinit (); + } + + /** + * Gets transaction confirmation from HTTP POST. + **/ + static function getFromPost () + { + self::init (); + + if (self::$conn->isOpen ()) + self::confirm ($_POST); + + self::deinit (); + } + + /** + * Gets transaction confirmation from SOAP service. + **/ + static function getFromSoap () + { + ini_set ('soap.wsdl_cache_enabled', FALSE); + + $server = new \SoapServer (__DIR__ .'/soap.wsdl'); + $server->addFunction ('procesaNotificacionSIS'); + $server->handle (); + } + + /** + * Tryes to confirm a transaction with the given params. + **/ + static function confirm ($params) + { + if (isset ($params['Ds_Amount']) + && isset ($params['Ds_Order']) + && isset ($params['Ds_MerchantCode']) + && isset ($params['Ds_Currency']) + && isset ($params['Ds_Response']) + && isset ($params['Ds_Signature'])) + { + if (isset ($params['Ds_ErrorCode'])) + $error = $params['Ds_ErrorCode']; + else + $error = NULL; + + try { + return self::$conn->query ( + 'CALL transaction_confirm_with_check (#, #, #, #, #, #, #)', + [ + $params['Ds_Amount'] + ,$params['Ds_Order'] + ,$params['Ds_MerchantCode'] + ,$params['Ds_Currency'] + ,$params['Ds_Response'] + ,$params['Ds_Signature'] + ,$error + ] + ); + } + catch (\Exception $e) + { + error_log ("TPV: DB: %s", $e->getMessage ()); + } + } + + return FALSE; + } + + /** + * Tests the confirmation process. The corresponding record + * must exist in the `tpv_transaction` table. + **/ + static function test ($order) + { + self::init (); + + if (self::$conn->isOpen () && isset ($order)) + self::$conn->query ('CALL transaction_confirm_by_id (#)', [$order]); + + self::deinit (); + } +} + +?> diff --git a/web/forms/admin/shelves/shelves.js b/web/forms/admin/shelves/shelves.js new file mode 100755 index 00000000..d5dc9d9c --- /dev/null +++ b/web/forms/admin/shelves/shelves.js @@ -0,0 +1,307 @@ + +Vn.Shelves = new Class +({ + Extends: Vn.Module + + ,activate: function () + { + this.$('report-title').value = 'Anthuriums'; + this.$('warehouse').value = 44; + this.$('date').value = new Date (); + this.$('shelf').value = 1; + this.$('reign').value = 1; + this.$('family').value = 2; + this.$('filter').value = 'Ant %'; + this.$('max-amount').value = 50; + } + + ,onPreviewClick: function () + { + var report = new Vn.ShelvesReport ({conn: this.conn}); + report.setParams ( + this.$('report-title').value, + this.$('warehouse').value, + this.$('date').value, + this.$('family').value, + this.$('filter').value, + this.$('max-amount').value, + this.$('shelf').value + ); + report.open (); + } +}); + +Vn.ShelvesReport = new Class +({ + Extends: Vn.Report + + ,nItem: -1 + ,nColors: 4 + + ,setParams: function (title, warehouse, date, type, filter, maxAmount, shelf) + { + this.title = title; + this.maxAmount = maxAmount; + + var batch = new Sql.Batch (); + batch.addValue ('shelf', shelf); + batch.addValue ('wh', warehouse); + batch.addValue ('date', date); + batch.addValue ('type', type); + batch.addValue ('filter', filter); + this.batch = batch; + } + + ,open: function () + { + var query = + 'SELECT id, name, width, height, max_height, tray_height, '+ + 'first_tray_elevation, tray_density, vspacing, hspacing '+ + 'FROM vn2008.shelf WHERE id = #shelf; '+ + 'CALL item_organizer (#wh, #date, #type, #filter)'; + + this.conn.execQuery (query, this.onQueryExec.bind (this), this.batch); + } + + ,onQueryExec: function (resultSet) + { + // Fetch query data + + var res = resultSet.fetchResult (); + res.next (); + + var scale = 0.08; + + var shelf = this.shelf = + { + width: res.get ('width') * scale + ,height: res.get ('height') * scale + ,maxHeight: res.get ('max_height') * scale + ,trayHeight: res.get ('tray_height') * scale + ,firstTrayElevation: res.get ('first_tray_elevation') * scale + ,trayDensity: res.get ('tray_density') * scale + ,vspacing: res.get ('vspacing') * scale + ,hspacing: res.get ('hspacing') * scale + }; + + var items = []; + var res = resultSet.fetchResult (); + + while (res.next ()) + items.push ({ + name: res.get ('Article') +' x'+ res.get ('Medida') + ,boxHeight: res.get ('z') * 10 * scale + ,boxWidth: res.get ('x') * 10 * scale + ,amount: res.get ('etiquetas') + }); + + // Intializes the allocator + + alloc = new Vn.Allocator (); + alloc.items = items; + alloc.maxAmount = this.maxAmount; + alloc.shelfFunc = this.drawShelf.bind (this); + alloc.boxFunc = this.drawBox.bind (this); + + alloc.nTrays = Math.ceil ( + (shelf.height - shelf.firstTrayElevation) / + (shelf.trayHeight + shelf.trayDensity) + ); + alloc.trayWidth = shelf.width - shelf.hspacing * 2; + alloc.trayHeight = shelf.trayHeight - shelf.vspacing; + alloc.topTrayHeight = shelf.maxHeight - shelf.vspacing + - shelf.firstTrayElevation - (alloc.nTrays - 1) * shelf.trayHeight; + + // Opens the report + + this.createWindow ('shelves'); + alloc.run (); + } + + ,drawShelf: function (allocator) + { + var shelf = this.shelf; + + var sheet = this.doc.createElement ('div'); + sheet.className = 'sheet'; +/* sheet.style.top = (allocator.currentShelf * 297) +'mm'; +*/ this.doc.body.appendChild (sheet); + + // Draws the title + + var title = this.doc.createElement ('h1'); + title.className = 'title'; + title.appendChild (this.doc.createTextNode (this.title)); + sheet.appendChild (title); + + var pageNumber = this.doc.createElement ('h1'); + pageNumber.className = 'page-number'; + pageNumber.appendChild (this.doc.createTextNode (allocator.currentShelf + 1)); + sheet.appendChild (pageNumber); + + // Draws the shelf + + var shelfDiv = this.shelfDiv = this.doc.createElement ('div'); + shelfDiv.className = 'shelf'; + shelfDiv.style.width = this.shelf.width +'mm'; + shelfDiv.style.height = this.shelf.maxHeight +'mm'; + sheet.appendChild (shelfDiv); + + this.drawEdge ().style.left = 0; + this.drawEdge ().style.right = 0; + + // Draws trays + + var lastTrayY = shelf.firstTrayElevation; + + if (shelf.trayHeight > 0) + while (lastTrayY + shelf.trayDensity < shelf.height) + { + var tray = this.doc.createElement ('div'); + tray.className = 'tray'; + tray.style.width = this.shelf.width +'mm'; + tray.style.height = '1mm'; + tray.style.bottom = lastTrayY +'mm'; + shelfDiv.appendChild (tray); + + lastTrayY += shelf.trayHeight + shelf.trayDensity; + } + } + + ,drawEdge: function (shelfDiv) + { + var edge = this.doc.createElement ('div'); + edge.className = 'edge'; + edge.style.width = '1mm'; + edge.style.height = this.shelf.height +'mm'; + edge.style.bottom = 0; + this.shelfDiv.appendChild (edge); + return edge; + } + + ,drawBox: function (allocator, item, amount) + { + if (item.boxWidth == 0 || item.boxHeight == 0) + return; + + var shelf = this.shelf; + + var x = allocator.trayX + shelf.hspacing; + var y = allocator.trayY + + shelf.firstTrayElevation + shelf.trayDensity + + allocator.currentTray * (shelf.trayHeight + shelf.trayDensity); + + var box = this.doc.createElement ('div'); + box.className = 'box'; + this.shelfDiv.appendChild (box); + + box.style.left = x +'mm'; + box.style.bottom = y +'mm'; + box.style.width = item.boxWidth +'mm'; + box.style.height = item.boxHeight +'mm'; + + if (amount == 0) + this.nItem++; + + var nColor = this.nItem % this.nColors; + Vn.Node.addClass (box, 'color'+ nColor); + + if (amount == 0 || allocator.firstShelfBox) + { + var boxLabel = this.doc.createElement ('span'); + box.appendChild (boxLabel); + + var text = this.doc.createTextNode (item.name); + boxLabel.appendChild (text); + } + } +}); + +Vn.Allocator = new Class +({ + addShelf: function () + { + this.currentShelf++; + this.firstShelfBox = true; + + if (this.shelfFunc) + this.shelfFunc (this); + } + + ,addTray: function () + { + if (this.currentTray <= 0) + { + this.addShelf (); + this.currentTray = this.nTrays - 1; + } + else + this.currentTray--; + + this.trayX = 0; + } + + ,addColumn: function (width) + { + if (this.trayX + this.columnWidth + width > this.trayWidth + || this.currentTray == -1) + this.addTray (); + else + this.trayX += this.columnWidth; + + this.trayY = 0; + this.columnWidth = width; + this.lastBoxWidth = width; + } + + ,addBox: function (item, amount) + { + var trayHeight = this.trayHeight; + + if (this.currentTray == this.nTrays - 1) + trayHeight = this.topTrayHeight; + + if (this.trayY + item.boxHeight > trayHeight + || item.boxWidth > this.lastBoxWidth) + this.addColumn (item.boxWidth); + + if (this.boxFunc) + this.boxFunc (this, item, amount); + + this.trayY += item.boxHeight; + + if (item.boxWidth < this.lastBoxWidth) + this.lastBoxWidth = item.boxWidth; + } + + ,run: function () + { + this.firstShelfBox = false; + this.currentShelf = -1; + this.currentTray = -1; + this.columnWidth = 0; + this.lastBoxWidth = 0; + this.trayX = 0; + this.trayY = 0; + + for (var i = 0; i < this.items.length; i++) + { + var item = this.items[i]; + + for (var amount = 0; amount < item.amount; amount++) + { + if (amount == 0 + && this.maxAmount > 0 + && item.amount > this.maxAmount) + break; + + this.addBox (item, amount); + this.firstShelfBox = false; + } + } + + return this.currentShelf + 1; + } + +}); + diff --git a/web/forms/admin/shelves/style.css b/web/forms/admin/shelves/style.css new file mode 100755 index 00000000..635d0571 --- /dev/null +++ b/web/forms/admin/shelves/style.css @@ -0,0 +1,44 @@ + +.shelves +{ + padding: 1em; +} +.shelves .box +{ + max-width: 40em; + padding: 2em; +} +.shelves .body +{ + max-width: 20em; + margin: auto; + padding: 0; +} +.shelves .form-group +{ + padding: 0.4em; +} +.shelves form label +{ + display: block; + margin-bottom: 0.5em; +} +.shelves input, +.shelves select +{ + margin: 0; + width: 100%; +} + +/* Footer */ + +.shelves .footer +{ + text-align: center; + margin-top: 1.5em; +} +.shelves .footer > button +{ + margin: 0 .2em; +} + diff --git a/web/forms/admin/shelves/ui.xml b/web/forms/admin/shelves/ui.xml new file mode 100755 index 00000000..b3b1879d --- /dev/null +++ b/web/forms/admin/shelves/ui.xml @@ -0,0 +1,70 @@ + +
+

Shelves

+
+
+
+
+
+ + +
+
+ + + + SELECT id, name FROM vn2008.warehouse + WHERE reserve ORDER BY name + + +
+
+ + +
+
+ + + + SELECT id, name FROM vn2008.shelf + + +
+
+ + + + SELECT id, reino FROM vn2008.reinos + WHERE display != FALSE ORDER BY reino + + +
+
+ + + + SELECT tipo_id, Tipo FROM vn2008.Tipos + WHERE reino_id = #reign ORDER BY Tipo + + + + + +
+
+ + +
+
+ + +
+
+ +
+
+
diff --git a/web/js/hedera/main.php b/web/js/hedera/main.php new file mode 100755 index 00000000..d8e3706a --- /dev/null +++ b/web/js/hedera/main.php @@ -0,0 +1,9 @@ + diff --git a/web/js/hedera/report.css b/web/js/hedera/report.css new file mode 100755 index 00000000..9f33ac9d --- /dev/null +++ b/web/js/hedera/report.css @@ -0,0 +1,75 @@ + +@font-face +{ + font-family: 'Open Sans'; + src: url('opensans.ttf') format('truetype'); +} +@media print +{ + body + { + -webkit-print-color-adjust: exact; + } + .sheet + { + width: 100%; + page-break-after: always; + } + .print-button + { + display: none; + } +} +@media screen +{ + body + { + background-color: #EEE; + } + .sheet + { + width: 210mm; + height: 297mm; + background-color: white; + margin: 10mm auto; + box-shadow: 0 1mm 1mm #CCC; + padding: 15mm; + } + .print-button + { + position: fixed; + top: 6mm; + right: 6mm; + border-radius: 2px; + background-color: #009688; + color: white; + padding: 2mm; + z-index: 100; + border: none; + cursor: pointer; + box-shadow: 0 1mm 1mm #AAA; + } + .print-button:hover + { + background-color: #00796B; + } +} +* +{ + font-family: 'Droid Sans', 'Sans'; +} +body +{ + position: relative; + margin: 0; + width: 100%; + z-index: -2; +} +.sheet +{ + position: relative; + overflow: hidden; + box-sizing: padding-box; +/* page-break-after: always;*/ +} + diff --git a/web/js/hedera/report.html b/web/js/hedera/report.html new file mode 100755 index 00000000..951db928 --- /dev/null +++ b/web/js/hedera/report.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Report + + + diff --git a/web/js/hedera/report.js b/web/js/hedera/report.js new file mode 100755 index 00000000..7a331a28 --- /dev/null +++ b/web/js/hedera/report.js @@ -0,0 +1,56 @@ + +Vn.Report = new Class +({ + Extends: Vn.Object + + ,open: function () {} + + ,print: function () + { + this.window.print (); + } + + ,includeCss: function (path) + { + var basePath = location.protocol +'//'+ location.host; + basePath += location.port ? ':'+ location.port : ''; + basePath += location.pathname.substring (0, + location.pathname.lastIndexOf ('/')); + + var link = this.doc.createElement ('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = basePath +'/'+ path + Vn.getVersion (); + + var head = this.doc.getElementsByTagName ('head')[0]; + head.appendChild (link); + } + + ,createWindow: function (reportPath) + { + var reportWindow = window.open (''/*'js/hedera/report.html'*/, '_blank'/*reportPath*/, + 'resizable=yes,height=900,width=900,scrollbars=yes,menubar=true'); + + if (!reportWindow) + { + Htk.Toast.showError ( + _('Can\'t open the report, please unlock popup block and try again')); + return; + } + + this.window = reportWindow; + this.doc = reportWindow.document + + this.includeCss ('js/hedera/report.css'); + this.includeCss ('reports/'+ reportPath +'/style.css'); + + var printButton = this.doc.createElement ('button'); + printButton.className = 'print-button'; + printButton.appendChild (this.doc.createTextNode (_('Print'))); + printButton.addEventListener ('click', this.print.bind (this)); + this.doc.body.appendChild (printButton); + + return reportWindow; + } +}); + diff --git a/web/js/vn/main.js b/web/js/vn/main.js index afb42645..c1c323e5 100755 --- a/web/js/vn/main.js +++ b/web/js/vn/main.js @@ -11,6 +11,18 @@ var Vn = ,head: document.getElementsByTagName ('head')[0] ,isMobileCached: null + ,getVersion: function () + { + if (this._version === undefined) + { + var re = /[; ]hedera_version=([^\\s;]*)/; + var sMatch = (' '+ document.cookie).match (re); + this._version = (sMatch) ? '?'+ unescape (sMatch[1]) : ''; + } + + return this._version; + } + /** * Includes a new CSS stylesheet in the current document, if the stylesheet * its already included, does nothing. diff --git a/web/locale/ca/forms/admin/shelves.json b/web/locale/ca/forms/admin/shelves.json new file mode 100644 index 00000000..d5f65f95 --- /dev/null +++ b/web/locale/ca/forms/admin/shelves.json @@ -0,0 +1,11 @@ +{ + "Title": "Título" + ,"Store": "Almacén" + ,"Date": "Fecha" + ,"Shelf": "Estantería" + ,"Reign": "Reino" + ,"Family": "Familia" + ,"Name filter": "Filtro por nombre" + ,"Max amount": "Cantidad máxima" + ,"Preview": "Mostrar" +} diff --git a/web/locale/ca/js/vn.js b/web/locale/ca/js/vn.js index 801faee8..ab9776c0 100755 --- a/web/locale/ca/js/vn.js +++ b/web/locale/ca/js/vn.js @@ -56,6 +56,7 @@ Vn.Locale.add ,"CookiesNotification": "En utilitzar aquest lloc web acceptes l'ús de cookies per a la personalització de continguts i anàlisi." ,"ReturnToOldWebsite": "Web antiga" ,"TestTheNewWebsite": "Prova la nova web!" + ,"Print": "Imprimir" ,"Menu": "Menú" @@ -75,6 +76,7 @@ Vn.Locale.add ,"Visits": "Visites" ,"News": "Noticies" ,"Photos": "Fotos" + ,"Shelves": "Estanterías" ,"Contact": "Vull ser client" ,"Training": "Formació" ,"Agencies": "Agències" diff --git a/web/locale/es/forms/admin/shelves.json b/web/locale/es/forms/admin/shelves.json new file mode 100644 index 00000000..d5f65f95 --- /dev/null +++ b/web/locale/es/forms/admin/shelves.json @@ -0,0 +1,11 @@ +{ + "Title": "Título" + ,"Store": "Almacén" + ,"Date": "Fecha" + ,"Shelf": "Estantería" + ,"Reign": "Reino" + ,"Family": "Familia" + ,"Name filter": "Filtro por nombre" + ,"Max amount": "Cantidad máxima" + ,"Preview": "Mostrar" +} diff --git a/web/locale/es/js/vn.js b/web/locale/es/js/vn.js index e0a85c0b..717aeff1 100755 --- a/web/locale/es/js/vn.js +++ b/web/locale/es/js/vn.js @@ -56,6 +56,7 @@ Vn.Locale.add ,"CookiesNotification": "Al utilizar este sitio web aceptas el uso de cookies para la personalización de contenidos y análisis." ,"ReturnToOldWebsite": "Web antigua" ,"TestTheNewWebsite": "¡Prueba la nueva web!" + ,"Print": "Imprimir" ,"Menu": "Menú" @@ -75,6 +76,7 @@ Vn.Locale.add ,"Visits": "Visitas" ,"News": "Noticias" ,"Photos": "Fotos" + ,"Shelves": "Estanterías" ,"Contact": "Quiero ser cliente" ,"Training": "Formación" ,"Agencies": "Agencias" diff --git a/web/locale/fr/forms/admin/shelves.json b/web/locale/fr/forms/admin/shelves.json new file mode 100644 index 00000000..d5f65f95 --- /dev/null +++ b/web/locale/fr/forms/admin/shelves.json @@ -0,0 +1,11 @@ +{ + "Title": "Título" + ,"Store": "Almacén" + ,"Date": "Fecha" + ,"Shelf": "Estantería" + ,"Reign": "Reino" + ,"Family": "Familia" + ,"Name filter": "Filtro por nombre" + ,"Max amount": "Cantidad máxima" + ,"Preview": "Mostrar" +} diff --git a/web/locale/fr/js/vn.js b/web/locale/fr/js/vn.js index aa43f38d..a51898d1 100755 --- a/web/locale/fr/js/vn.js +++ b/web/locale/fr/js/vn.js @@ -56,6 +56,7 @@ Vn.Locale.add ,"CookiesNotification": "En utilisant ce site, vous acceptez l'utilisation de cookies pour personnaliser le contenu et l'analyse." ,"ReturnToOldWebsite": "Ancien site web" ,"TestTheNewWebsite": "Testez le nouveau site!" + ,"Print": "Imprimir" ,"Menu": "Menu" @@ -75,6 +76,7 @@ Vn.Locale.add ,"Visits": "Visites" ,"News": "Nouvelles" ,"Photos": "Photos" + ,"Shelves": "Estanterías" ,"Contact": "Je veux être client" ,"Training": "Formation" ,"Agencies": "Agences" diff --git a/web/pages/web/head.php b/web/pages/web/head.php index 2356c610..d4782044 100755 --- a/web/pages/web/head.php +++ b/web/pages/web/head.php @@ -3,7 +3,7 @@ use Vn\Hedera\Js; require_once ('global/metatags.php'); -require_once ('js/htk/main.php'); +require_once ('js/hedera/main.php'); Js::includeFile ('pages/web/web.js'); Js::includeFile ('pages/web/module.js'); diff --git a/web/reports/shelves/report.xml b/web/reports/shelves/report.xml new file mode 100755 index 00000000..4874b410 --- /dev/null +++ b/web/reports/shelves/report.xml @@ -0,0 +1,10 @@ + +
+

+ +

+
+ +
+
+
diff --git a/web/reports/shelves/shelves.js b/web/reports/shelves/shelves.js new file mode 100755 index 00000000..5344cde6 --- /dev/null +++ b/web/reports/shelves/shelves.js @@ -0,0 +1,5 @@ + +Vn.ShelvesReport = new Class +({ + Extends: Vn.Report +}); diff --git a/web/reports/shelves/style.css b/web/reports/shelves/style.css new file mode 100644 index 00000000..dc0e7764 --- /dev/null +++ b/web/reports/shelves/style.css @@ -0,0 +1,60 @@ + +h1 +{ + font-weight: normal; + font-size: 15mm; + margin: 0; +} +h1.title +{ + float: left; +} +h1.page-number +{ + float: right; + text-align: right; +} +.shelf +{ + position: relative; + margin: 0 auto; + padding-top: 40mm; +} +.edge, +.tray +{ + position: absolute; + border: 1px solid black; + box-sizing: border-box; +} +.box +{ + position: absolute; + border: 1px solid black; + text-align: center; +} +.box > span +{ + font-size: 70%; + text-align: center; + margin: 5%; + display: inline-block; + line-height: 100%; + vertical-align: middle; +} +.color0 +{ + background-color: #ECC !important; +} +.color1 +{ + background-color: #CEC !important; +} +.color2 +{ + background-color: #CCE !important; +} +.color3 +{ + background-color: #ECE !important; +}