From 05a58f53e6f448aa57d7fce875cc329aedce6789 Mon Sep 17 00:00:00 2001 From: aFolletete Date: Tue, 12 Apr 2011 18:24:40 +0000 Subject: [PATCH] // 1.5 branche creation --- 404.php | 42 + CHANGELOG | 2406 +++ address.php | 29 + addresses.php | 29 + admin-dev/ajax.php | 601 + admin-dev/ajax_category_list.php | 85 + admin-dev/ajax_lang_packs.php | 50 + admin-dev/ajax_products_list.php | 61 + admin-dev/ajax_send_mail_test.php | 47 + .../_ajax_get_details_listing.php | 54 + .../_ajax_get_thumbnail_listing.php | 37 + .../ajaxfilemanager/_ajax_load_folders.php | 17 + .../ajaxfilemanager/ajax_create_folder.php | 75 + .../ajaxfilemanager/ajax_delete_file.php | 79 + admin-dev/ajaxfilemanager/ajax_download.php | 33 + .../ajaxfilemanager/ajax_editor_reset.php | 118 + admin-dev/ajaxfilemanager/ajax_file_copy.php | 35 + admin-dev/ajaxfilemanager/ajax_file_cut.php | 36 + admin-dev/ajaxfilemanager/ajax_file_paste.php | 140 + .../ajaxfilemanager/ajax_file_upload.php | 90 + .../ajaxfilemanager/ajax_get_file_listing.php | 139 + .../ajax_get_folder_listing.php | 15 + .../ajaxfilemanager/ajax_image_editor.php | 210 + admin-dev/ajaxfilemanager/ajax_image_save.php | 196 + .../ajaxfilemanager/ajax_image_thumbnail.php | 35 + admin-dev/ajaxfilemanager/ajax_image_undo.php | 96 + admin-dev/ajaxfilemanager/ajax_login.php | 67 + admin-dev/ajaxfilemanager/ajax_preview.php | 60 + .../ajaxfilemanager/ajax_save_as_form.php | 59 + admin-dev/ajaxfilemanager/ajax_save_name.php | 81 + admin-dev/ajaxfilemanager/ajax_save_text.php | 90 + .../ajaxfilemanager/ajax_text_editor.php | 168 + admin-dev/ajaxfilemanager/ajaxfilemanager.php | 689 + admin-dev/ajaxfilemanager/debug.html | 0 admin-dev/ajaxfilemanager/inc/class.auth.php | 48 + admin-dev/ajaxfilemanager/inc/class.file.php | 436 + .../ajaxfilemanager/inc/class.history.php | 155 + admin-dev/ajaxfilemanager/inc/class.image.php | 789 + .../ajaxfilemanager/inc/class.manager.php | 373 + .../ajaxfilemanager/inc/class.pagination.php | 584 + .../ajaxfilemanager/inc/class.search.php | 184 + .../ajaxfilemanager/inc/class.session.php | 228 + .../inc/class.sessionaction.php | 93 + .../ajaxfilemanager/inc/class.upload.php | 589 + admin-dev/ajaxfilemanager/inc/config.base.php | 135 + admin-dev/ajaxfilemanager/inc/config.php | 107 + .../ajaxfilemanager/inc/config.tinymce.php | 131 + admin-dev/ajaxfilemanager/inc/data.php | 8 + .../ajaxfilemanager/inc/function.base.php | 1225 ++ .../jscripts/ajaxfilemanager.js | 1845 ++ .../jscripts/ajaxfilemanager_c.js | 564 + .../jscripts/ajaxfileupload.js | 225 + .../jscripts/ajaximageeditor.js | 873 + .../jscripts/ajaximageeditor_c.js | 26 + .../jscripts/ajaxtexteditor.js | 91 + .../jscripts/ajaxtexteditor_c.js | 14 + .../ajaxfilemanager/jscripts/calendar.js | 6 + .../ajaxfilemanager/jscripts/contextmenu.js | 1 + .../jscripts/edit_area/edit_area.css | 352 + .../jscripts/edit_area/edit_area_full.js | 35 + .../jscripts/edit_area/images/close.gif | Bin 0 -> 102 bytes .../jscripts/edit_area/images/fullscreen.gif | Bin 0 -> 198 bytes .../jscripts/edit_area/images/go_to_line.gif | Bin 0 -> 1053 bytes .../jscripts/edit_area/images/help.gif | Bin 0 -> 295 bytes .../jscripts/edit_area/images/highlight.gif | Bin 0 -> 256 bytes .../jscripts/edit_area/images/load.gif | Bin 0 -> 1041 bytes .../jscripts/edit_area/images/move.gif | Bin 0 -> 257 bytes .../jscripts/edit_area/images/newdocument.gif | Bin 0 -> 170 bytes .../jscripts/edit_area/images/opacity.png | Bin 0 -> 147 bytes .../jscripts/edit_area/images/processing.gif | Bin 0 -> 825 bytes .../jscripts/edit_area/images/redo.gif | Bin 0 -> 169 bytes .../edit_area/images/reset_highlight.gif | Bin 0 -> 168 bytes .../jscripts/edit_area/images/save.gif | Bin 0 -> 285 bytes .../jscripts/edit_area/images/save_as.gif | Bin 0 -> 203 bytes .../jscripts/edit_area/images/search.gif | Bin 0 -> 191 bytes .../edit_area/images/smooth_selection.gif | Bin 0 -> 174 bytes .../jscripts/edit_area/images/spacer.gif | Bin 0 -> 43 bytes .../edit_area/images/statusbar_resize.gif | Bin 0 -> 79 bytes .../jscripts/edit_area/images/undo.gif | Bin 0 -> 175 bytes .../jscripts/edit_area/langs/de.js | 45 + .../jscripts/edit_area/langs/dk.js | 45 + .../jscripts/edit_area/langs/en.js | 46 + .../jscripts/edit_area/langs/fr.js | 45 + .../jscripts/edit_area/langs/hr.js | 45 + .../jscripts/edit_area/langs/it.js | 45 + .../jscripts/edit_area/langs/ja.js | 45 + .../jscripts/edit_area/langs/nl.js | 45 + .../jscripts/edit_area/langs/pl.js | 45 + .../jscripts/edit_area/langs/pt.js | 45 + .../jscripts/edit_area/langs/zh_cn.js | 46 + .../jscripts/edit_area/reg_syntax/basic.js | 69 + .../edit_area/reg_syntax/brainfuck.js | 44 + .../jscripts/edit_area/reg_syntax/c.js | 62 + .../jscripts/edit_area/reg_syntax/cpp.js | 65 + .../jscripts/edit_area/reg_syntax/css.js | 84 + .../jscripts/edit_area/reg_syntax/html.js | 50 + .../jscripts/edit_area/reg_syntax/js.js | 60 + .../jscripts/edit_area/reg_syntax/pas.js | 82 + .../jscripts/edit_area/reg_syntax/php.js | 75 + .../jscripts/edit_area/reg_syntax/python.js | 144 + .../jscripts/edit_area/reg_syntax/vb.js | 52 + .../jscripts/edit_area/reg_syntax/xml.js | 56 + .../ajaxfilemanager/jscripts/for_fckeditor.js | 27 + .../ajaxfilemanager/jscripts/for_form.js | 16 + .../jscripts/for_stand_alone.js | 5 + .../ajaxfilemanager/jscripts/for_tinymce.js | 248 + admin-dev/ajaxfilemanager/jscripts/form.js | 807 + .../ajaxfilemanager/jscripts/interface.js | 764 + .../ajaxfilemanager/jscripts/iresizable.js | 527 + admin-dev/ajaxfilemanager/jscripts/iutil.js | 245 + admin-dev/ajaxfilemanager/jscripts/jquery.js | 11 + admin-dev/ajaxfilemanager/jscripts/media.js | 444 + admin-dev/ajaxfilemanager/jscripts/rotate.js | 68 + admin-dev/ajaxfilemanager/jscripts/select.js | 1 + .../ajaxfilemanager/jscripts/thickbox.js | 323 + admin-dev/ajaxfilemanager/langs/en.php | 332 + admin-dev/ajaxfilemanager/langs/zh.php | 332 + admin-dev/ajaxfilemanager/mediaplayer.swf | Bin 0 -> 29708 bytes .../session/gc_counter.ajax.php | 1 + .../ajaxfilemanager/session/gc_log.ajax.php | 2 + .../theme/default/css/ajaximageeditor.css | 211 + .../theme/default/css/ajaxtexteditor.css | 106 + .../theme/default/css/fckeditor.css | 536 + .../theme/default/css/form.css | 537 + .../ajaxfilemanager/theme/default/css/ie6.css | 4 + .../theme/default/css/jqModal.css | 31 + .../theme/default/css/jquery-calendar.css | 166 + .../theme/default/css/login.css | 92 + .../theme/default/css/template.css | 585 + .../theme/default/css/thickbox.css | 159 + .../theme/default/css/tinymce.css | 537 + .../theme/default/images/action/copy.png | Bin 0 -> 677 bytes .../theme/default/images/action/copy_flag.gif | Bin 0 -> 178 bytes .../theme/default/images/action/cut.png | Bin 0 -> 674 bytes .../theme/default/images/action/cut_flag.png | Bin 0 -> 752 bytes .../theme/default/images/action/delete.png | Bin 0 -> 756 bytes .../default/images/action/folder_add.png | Bin 0 -> 617 bytes .../default/images/action/folder_explore.png | Bin 0 -> 673 bytes .../theme/default/images/action/page_add.png | Bin 0 -> 228 bytes .../theme/default/images/action/paste.png | Bin 0 -> 742 bytes .../theme/default/images/action/refresh.png | Bin 0 -> 811 bytes .../theme/default/images/action/tickAll.png | Bin 0 -> 819 bytes .../default/images/action/uncheckAll.png | Bin 0 -> 724 bytes .../theme/default/images/action/unzip.png | Bin 0 -> 429 bytes .../theme/default/images/action/upload.png | Bin 0 -> 751 bytes .../theme/default/images/action/zip.png | Bin 0 -> 428 bytes .../theme/default/images/add.png | Bin 0 -> 241 bytes .../theme/default/images/ajaxLoading.gif | Bin 0 -> 4204 bytes .../theme/default/images/arrow_right.png | Bin 0 -> 349 bytes .../default/images/big_icon/fileAcrobat.png | Bin 0 -> 812 bytes .../default/images/big_icon/fileCode.png | Bin 0 -> 423 bytes .../default/images/big_icon/fileExcel.png | Bin 0 -> 694 bytes .../theme/default/images/big_icon/fileExe.png | Bin 0 -> 355 bytes .../default/images/big_icon/fileFlash.png | Bin 0 -> 796 bytes .../default/images/big_icon/fileMusic.png | Bin 0 -> 412 bytes .../default/images/big_icon/filePicture.png | Bin 0 -> 422 bytes .../images/big_icon/filePowerpoint.png | Bin 0 -> 650 bytes .../theme/default/images/big_icon/fileRTF.png | Bin 0 -> 412 bytes .../default/images/big_icon/fileText.png | Bin 0 -> 602 bytes .../default/images/big_icon/fileUnknown.png | Bin 0 -> 415 bytes .../default/images/big_icon/fileVideo.png | Bin 0 -> 404 bytes .../default/images/big_icon/fileWord.png | Bin 0 -> 729 bytes .../theme/default/images/big_icon/fileXml.png | Bin 0 -> 409 bytes .../theme/default/images/big_icon/fileZip.png | Bin 0 -> 619 bytes .../theme/default/images/big_icon/folder.png | Bin 0 -> 1191 bytes .../default/images/big_icon/folderEmpty.png | Bin 0 -> 984 bytes .../theme/default/images/button.gif | Bin 0 -> 312 bytes .../theme/default/images/close.png | Bin 0 -> 403 bytes .../theme/default/images/copy.png | Bin 0 -> 677 bytes .../theme/default/images/copy_flag.gif | Bin 0 -> 178 bytes .../theme/default/images/cut.png | Bin 0 -> 674 bytes .../theme/default/images/cut_flag.gif | Bin 0 -> 278 bytes .../theme/default/images/date_picker.png | Bin 0 -> 3333 bytes .../theme/default/images/delete.png | Bin 0 -> 756 bytes .../default/images/file_type/fileAcrobat.png | Bin 0 -> 415 bytes .../default/images/file_type/fileCode.png | Bin 0 -> 423 bytes .../default/images/file_type/fileExcel.png | Bin 0 -> 914 bytes .../default/images/file_type/fileExe.png | Bin 0 -> 408 bytes .../default/images/file_type/fileFlash.png | Bin 0 -> 415 bytes .../default/images/file_type/fileMusic.png | Bin 0 -> 658 bytes .../default/images/file_type/filePicture.png | Bin 0 -> 689 bytes .../images/file_type/filePowerpoint.png | Bin 0 -> 883 bytes .../default/images/file_type/fileRTF.png | Bin 0 -> 782 bytes .../default/images/file_type/fileText.png | Bin 0 -> 782 bytes .../default/images/file_type/fileUnknown.png | Bin 0 -> 394 bytes .../default/images/file_type/fileVideo.png | Bin 0 -> 1040 bytes .../default/images/file_type/fileWord.png | Bin 0 -> 865 bytes .../default/images/file_type/fileXml.png | Bin 0 -> 409 bytes .../default/images/file_type/fileZip.png | Bin 0 -> 510 bytes .../theme/default/images/file_type/folder.png | Bin 0 -> 733 bytes .../default/images/file_type/folderEmpty.png | Bin 0 -> 528 bytes .../default/images/file_type/folderParent.png | Bin 0 -> 412 bytes .../theme/default/images/flagYes.png | Bin 0 -> 430 bytes .../theme/default/images/flagno.png | Bin 0 -> 425 bytes .../theme/default/images/folder.png | Bin 0 -> 389 bytes .../theme/default/images/folder_explore.png | Bin 0 -> 410 bytes .../theme/default/images/go_parent.png | Bin 0 -> 461 bytes .../theme/default/images/header.jpg | Bin 0 -> 13778 bytes .../theme/default/images/info.png | Bin 0 -> 821 bytes .../theme/default/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../images/pagination/pagination_left.gif | Bin 0 -> 263 bytes .../images/pagination/pagination_right.gif | Bin 0 -> 124 bytes .../theme/default/images/panel_bg.gif | Bin 0 -> 592 bytes .../theme/default/images/paste.png | Bin 0 -> 742 bytes .../theme/default/images/player.gif | Bin 0 -> 943 bytes .../theme/default/images/refresh.png | Bin 0 -> 585 bytes .../theme/default/images/shadow.gif | Bin 0 -> 5415 bytes .../theme/default/images/standard/add.png | Bin 0 -> 761 bytes .../default/images/standard/ajaxLoading.gif | Bin 0 -> 4204 bytes .../default/images/standard/arrow_right.png | Bin 0 -> 349 bytes .../theme/default/images/standard/button.gif | Bin 0 -> 443 bytes .../theme/default/images/standard/close.png | Bin 0 -> 403 bytes .../default/images/standard/date_picker.png | Bin 0 -> 3333 bytes .../theme/default/images/standard/flagno.png | Bin 0 -> 762 bytes .../theme/default/images/standard/flagyes.png | Bin 0 -> 769 bytes .../theme/default/images/standard/folder.png | Bin 0 -> 460 bytes .../images/standard/folder_explore.png | Bin 0 -> 673 bytes .../default/images/standard/go_parent.png | Bin 0 -> 776 bytes .../theme/default/images/standard/header.jpg | Bin 0 -> 13778 bytes .../theme/default/images/standard/info.png | Bin 0 -> 766 bytes .../images/standard/loadingAnimation.gif | Bin 0 -> 5886 bytes .../default/images/standard/panel_bg.gif | Bin 0 -> 592 bytes .../theme/default/images/standard/player.gif | Bin 0 -> 943 bytes .../theme/default/images/standard/shadow.gif | Bin 0 -> 5415 bytes .../images/standard/transparentpixel.gif | Bin 0 -> 43 bytes .../images/standard/uploadProcessing.gif | Bin 0 -> 847 bytes .../theme/default/images/tickAll.png | Bin 0 -> 819 bytes .../theme/default/images/transparentpixel.gif | Bin 0 -> 43 bytes .../theme/default/images/uncheckAll.png | Bin 0 -> 724 bytes .../theme/default/images/unzip.png | Bin 0 -> 429 bytes .../theme/default/images/uploadProcessing.gif | Bin 0 -> 847 bytes .../theme/default/images/zip.png | Bin 0 -> 428 bytes admin-dev/backup.php | 78 + admin-dev/backups/.htaccess | 2 + admin-dev/backups/index.php | 36 + admin-dev/confirm.php | 59 + admin-dev/displayImage.php | 36 + admin-dev/drawer.php | 57 + admin-dev/footer.inc.php | 48 + admin-dev/functions.php | 389 + admin-dev/get-file-admin.php | 31 + admin-dev/grider.php | 64 + admin-dev/header.inc.php | 173 + admin-dev/import/.htaccess | 2 + admin-dev/import/index.php | 36 + admin-dev/index.php | 142 + admin-dev/init.php | 82 + admin-dev/login.php | 171 + admin-dev/password.php | 116 + admin-dev/pdf.php | 114 + admin-dev/searchcron.php | 36 + admin-dev/tabs/.htaccess | 2 + admin-dev/tabs/AdminAccess.php | 138 + admin-dev/tabs/AdminAddonsCatalog.php | 38 + admin-dev/tabs/AdminAddonsMyAccount.php | 38 + admin-dev/tabs/AdminAddresses.php | 424 + admin-dev/tabs/AdminAliases.php | 106 + admin-dev/tabs/AdminAppearance.php | 36 + admin-dev/tabs/AdminAttachments.php | 134 + admin-dev/tabs/AdminAttributeGenerator.php | 284 + admin-dev/tabs/AdminAttributes.php | 152 + admin-dev/tabs/AdminAttributesGroups.php | 226 + admin-dev/tabs/AdminBackup.php | 261 + admin-dev/tabs/AdminCMS.php | 352 + admin-dev/tabs/AdminCMSCategories.php | 293 + admin-dev/tabs/AdminCMSContent.php | 129 + admin-dev/tabs/AdminCarriers.php | 332 + admin-dev/tabs/AdminCarts.php | 323 + admin-dev/tabs/AdminCatalog.php | 176 + admin-dev/tabs/AdminCategories.php | 365 + admin-dev/tabs/AdminContact.php | 97 + admin-dev/tabs/AdminContacts.php | 114 + admin-dev/tabs/AdminCountries.php | 162 + admin-dev/tabs/AdminCounty.php | 219 + admin-dev/tabs/AdminCurrencies.php | 233 + admin-dev/tabs/AdminCustomerThreads.php | 602 + admin-dev/tabs/AdminCustomers.php | 802 + admin-dev/tabs/AdminDb.php | 150 + admin-dev/tabs/AdminDeliverySlip.php | 104 + admin-dev/tabs/AdminDiscounts.php | 486 + admin-dev/tabs/AdminEmails.php | 108 + admin-dev/tabs/AdminEmployees.php | 229 + admin-dev/tabs/AdminFeatures.php | 202 + admin-dev/tabs/AdminFeaturesValues.php | 118 + admin-dev/tabs/AdminGenerator.php | 196 + admin-dev/tabs/AdminGeolocation.php | 189 + admin-dev/tabs/AdminGroups.php | 335 + admin-dev/tabs/AdminHome.php | 446 + admin-dev/tabs/AdminImageResize.php | 100 + admin-dev/tabs/AdminImages.php | 379 + admin-dev/tabs/AdminImport.php | 1579 ++ admin-dev/tabs/AdminInformation.php | 381 + admin-dev/tabs/AdminInvoices.php | 158 + admin-dev/tabs/AdminLanguages.php | 413 + admin-dev/tabs/AdminLocalization.php | 130 + admin-dev/tabs/AdminLogs.php | 83 + admin-dev/tabs/AdminManufacturers.php | 311 + admin-dev/tabs/AdminMessages.php | 173 + admin-dev/tabs/AdminMeta.php | 198 + admin-dev/tabs/AdminModules.php | 856 + admin-dev/tabs/AdminModulesPositions.php | 385 + admin-dev/tabs/AdminOrderMessage.php | 87 + admin-dev/tabs/AdminOrders.php | 969 + admin-dev/tabs/AdminOrdersStates.php | 204 + admin-dev/tabs/AdminPDF.php | 114 + admin-dev/tabs/AdminPPreferences.php | 95 + admin-dev/tabs/AdminPayment.php | 241 + admin-dev/tabs/AdminPerformance.php | 457 + admin-dev/tabs/AdminPreferences.php | 491 + admin-dev/tabs/AdminProducts.php | 3715 ++++ admin-dev/tabs/AdminProfiles.php | 91 + admin-dev/tabs/AdminQuickAccesses.php | 92 + admin-dev/tabs/AdminRangePrice.php | 110 + admin-dev/tabs/AdminRangeWeight.php | 109 + admin-dev/tabs/AdminReferrers.php | 472 + admin-dev/tabs/AdminReturn.php | 288 + admin-dev/tabs/AdminReturnStates.php | 80 + admin-dev/tabs/AdminScenes.php | 284 + admin-dev/tabs/AdminSearch.php | 288 + admin-dev/tabs/AdminSearchConf.php | 87 + admin-dev/tabs/AdminSearchEngines.php | 75 + admin-dev/tabs/AdminShipping.php | 287 + admin-dev/tabs/AdminSlip.php | 120 + admin-dev/tabs/AdminStates.php | 161 + admin-dev/tabs/AdminStats.php | 35 + admin-dev/tabs/AdminStatsConf.php | 119 + admin-dev/tabs/AdminStatsTab.php | 253 + admin-dev/tabs/AdminStatuses.php | 86 + admin-dev/tabs/AdminStockMvt.php | 199 + admin-dev/tabs/AdminStores.php | 303 + admin-dev/tabs/AdminSubDomains.php | 89 + admin-dev/tabs/AdminSuppliers.php | 224 + admin-dev/tabs/AdminTabs.php | 178 + admin-dev/tabs/AdminTags.php | 139 + admin-dev/tabs/AdminTaxRulesGroup.php | 565 + admin-dev/tabs/AdminTaxes.php | 192 + admin-dev/tabs/AdminThemes.php | 276 + admin-dev/tabs/AdminTools.php | 43 + admin-dev/tabs/AdminTracking.php | 267 + admin-dev/tabs/AdminTranslations.php | 1962 ++ admin-dev/tabs/AdminWebservice.php | 230 + admin-dev/tabs/AdminZones.php | 83 + admin-dev/themes/flashyturtle/admin.css | 61 + admin-dev/themes/flashyturtle/bg-lang.png | Bin 0 -> 767 bytes admin-dev/themes/flashyturtle/bg-quick.png | Bin 0 -> 615 bytes admin-dev/themes/flashyturtle/bg-subtab.png | Bin 0 -> 93 bytes admin-dev/themes/flashyturtle/bg-tab.png | Bin 0 -> 190 bytes admin-dev/themes/flashyturtle/bg-top.png | Bin 0 -> 10222 bytes admin-dev/themes/flashyturtle/button-bg.png | Bin 0 -> 165 bytes .../themes/flashyturtle/center_btn_filter.png | Bin 0 -> 267 bytes admin-dev/themes/flashyturtle/footer-bg.png | Bin 0 -> 872 bytes .../themes/flashyturtle/header_module.png | Bin 0 -> 895 bytes admin-dev/themes/flashyturtle/searchbar.png | Bin 0 -> 1409 bytes .../themes/flashyturtle/searchbutton.png | Bin 0 -> 2504 bytes .../themes/flashyturtle/separator_subnav.png | Bin 0 -> 79 bytes admin-dev/themes/flashyturtle/thead.png | Bin 0 -> 859 bytes admin-dev/themes/oldschool/admin.css | 55 + admin-dev/themes/oldschool/bg-lang.png | Bin 0 -> 910 bytes admin-dev/themes/oldschool/bg-quick.png | Bin 0 -> 1620 bytes admin-dev/themes/oldschool/bg-subtab.png | Bin 0 -> 249 bytes admin-dev/themes/oldschool/bg-tab.png | Bin 0 -> 224 bytes admin-dev/themes/oldschool/button-bg.png | Bin 0 -> 339 bytes admin-dev/themes/oldschool/footer-bg.png | Bin 0 -> 946 bytes admin-dev/themes/oldschool/header_module.png | Bin 0 -> 218 bytes admin-dev/themes/oldschool/news-bg.gif | Bin 0 -> 277 bytes admin-dev/themes/oldschool/searchbar.png | Bin 0 -> 2446 bytes admin-dev/themes/oldschool/searchbutton.gif | Bin 0 -> 1548 bytes .../themes/oldschool/separator_subnav.png | Bin 0 -> 120 bytes admin-dev/themes/oldschool/submenu-bg.gif | Bin 0 -> 52 bytes admin-dev/themes/oldschool/tab_right.gif | Bin 0 -> 2128 bytes admin-dev/themes/oldschool/thead.png | Bin 0 -> 218 bytes admin-dev/themes/origins/admin.css | 59 + admin-dev/themes/origins/bg-lang.png | Bin 0 -> 1715 bytes admin-dev/themes/origins/bg-quick.png | Bin 0 -> 1620 bytes admin-dev/themes/origins/bg-subtab.png | Bin 0 -> 249 bytes admin-dev/themes/origins/bg-tab.png | Bin 0 -> 968 bytes admin-dev/themes/origins/bg-top.png | Bin 0 -> 9503 bytes admin-dev/themes/origins/button-bg.png | Bin 0 -> 339 bytes admin-dev/themes/origins/footer-bg.png | Bin 0 -> 946 bytes admin-dev/themes/origins/header_module.png | Bin 0 -> 218 bytes .../origins/img/t/AdminAddonsCatalog.gif | Bin 0 -> 1461 bytes .../origins/img/t/AdminAddonsMyAccount.gif | Bin 0 -> 1461 bytes .../themes/origins/img/t/AdminCatalog.gif | Bin 0 -> 1697 bytes .../themes/origins/img/t/AdminCustomers.gif | Bin 0 -> 1461 bytes .../themes/origins/img/t/AdminEmployees.gif | Bin 0 -> 1720 bytes .../themes/origins/img/t/AdminModules.gif | Bin 0 -> 1461 bytes .../origins/img/t/AdminModulesPositions.gif | Bin 0 -> 1033 bytes .../themes/origins/img/t/AdminOrders.gif | Bin 0 -> 1449 bytes .../themes/origins/img/t/AdminPayment.gif | Bin 0 -> 1322 bytes .../themes/origins/img/t/AdminPreferences.gif | Bin 0 -> 1465 bytes .../themes/origins/img/t/AdminShipping.gif | Bin 0 -> 1709 bytes admin-dev/themes/origins/img/t/AdminStats.gif | Bin 0 -> 1453 bytes .../themes/origins/img/t/AdminStockMvt.gif | Bin 0 -> 1709 bytes .../themes/origins/img/t/AdminStores.gif | Bin 0 -> 1449 bytes admin-dev/themes/origins/img/t/AdminTools.gif | Bin 0 -> 1658 bytes admin-dev/themes/origins/news-bg.gif | Bin 0 -> 277 bytes admin-dev/themes/origins/searchbar.png | Bin 0 -> 2446 bytes admin-dev/themes/origins/searchbutton.png | Bin 0 -> 930 bytes admin-dev/themes/origins/separator_subnav.png | Bin 0 -> 120 bytes admin-dev/themes/origins/tab_right.gif | Bin 0 -> 2128 bytes admin-dev/themes/origins/thead.png | Bin 0 -> 218 bytes admin-dev/uploadProductFile.php | 61 + attachment.php | 38 + authentication.php | 29 + best-sales.php | 29 + cart.php | 29 + category.php | 29 + changecurrency.php | 39 + classes/.htaccess | 2 + classes/Address.php | 315 + classes/AdminTab.php | 1833 ++ classes/Alias.php | 95 + classes/Attachment.php | 106 + classes/Attribute.php | 201 + classes/AttributeGroup.php | 195 + classes/Backup.php | 249 + classes/Blowfish.php | 478 + classes/CMS.php | 254 + classes/CMSCategory.php | 656 + classes/Cache.php | 80 + classes/CacheFS.php | 175 + classes/Carrier.php | 687 + classes/CarrierModule.php | 33 + classes/Cart.php | 1599 ++ classes/Category.php | 924 + classes/Chart.php | 178 + classes/Combination.php | 159 + classes/Configuration.php | 341 + classes/Connection.php | 172 + classes/ConnectionsSource.php | 112 + classes/Contact.php | 88 + classes/ControllerFactory.php | 53 + classes/Cookie.php | 347 + classes/Country.php | 328 + classes/County.php | 244 + classes/Currency.php | 364 + classes/Customer.php | 659 + classes/CustomerMessage.php | 59 + classes/CustomerThread.php | 82 + classes/Customization.php | 125 + classes/DateRange.php | 67 + classes/Db.php | 328 + classes/Delivery.php | 77 + classes/Discount.php | 502 + classes/Employee.php | 212 + classes/Feature.php | 207 + classes/FeatureValue.php | 175 + classes/FrontController.php | 573 + classes/Group.php | 168 + classes/GroupReduction.php | 108 + classes/Guest.php | 210 + classes/HelpAccess.php | 117 + classes/Hook.php | 220 + classes/Image.php | 301 + classes/ImageType.php | 149 + classes/ImportModule.php | 93 + classes/Language.php | 605 + classes/Link.php | 354 + classes/LocalizationPack.php | 411 + classes/Logger.php | 161 + classes/MCached.php | 171 + classes/Mail.php | 228 + classes/Manufacturer.php | 363 + classes/Message.php | 165 + classes/Meta.php | 184 + classes/Module.php | 932 + classes/ModuleGraph.php | 266 + classes/ModuleGraphEngine.php | 72 + classes/ModuleGrid.php | 185 + classes/ModuleGridEngine.php | 71 + classes/MySQL.php | 283 + classes/ObjectModel.php | 648 + classes/Order.php | 1042 + classes/OrderDetail.php | 218 + classes/OrderDiscount.php | 71 + classes/OrderHistory.php | 199 + classes/OrderMessage.php | 79 + classes/OrderReturn.php | 205 + classes/OrderReturnState.php | 80 + classes/OrderSlip.php | 179 + classes/OrderState.php | 132 + classes/PDF.php | 1008 + classes/Pack.php | 201 + classes/Page.php | 120 + classes/PaymentCC.php | 74 + classes/PaymentModule.php | 478 + classes/Product.php | 3101 +++ classes/ProductDownload.php | 272 + classes/ProductSale.php | 180 + classes/Profile.php | 130 + classes/QuickAccess.php | 82 + classes/RangePrice.php | 69 + classes/RangeWeight.php | 69 + classes/Referrer.php | 315 + classes/Rijndael.php | 50 + classes/Scene.php | 243 + classes/Search.php | 474 + classes/SearchEngine.php | 72 + classes/Shop.php | 52 + classes/SpecificPrice.php | 256 + classes/State.php | 193 + classes/StockMvt.php | 121 + classes/StockMvtReason.php | 71 + classes/Store.php | 123 + classes/SubDomain.php | 56 + classes/Supplier.php | 272 + classes/Tab.php | 234 + classes/Tag.php | 203 + classes/Tax.php | 399 + classes/TaxRule.php | 111 + classes/TaxRulesGroup.php | 166 + classes/Tools.php | 1880 ++ classes/Validate.php | 1051 ++ classes/WebserviceKey.php | 154 + classes/WebserviceRequest.php | 2242 +++ classes/Zone.php | 105 + classes/index.php | 36 + cms.php | 29 + config/.htaccess | 2 + config/autoload.php | 52 + config/config.inc.php | 120 + config/defines.inc.php | 156 + config/index.php | 37 + config/modules_list.xml | 122 + config/smarty.config.inc.php | 209 + contact-form.php | 29 + controllers/AddressController.php | 278 + controllers/AddressesController.php | 62 + controllers/AuthController.php | 386 + controllers/BestSalesController.php | 64 + controllers/CMSController.php | 126 + controllers/CartController.php | 241 + controllers/CategoryController.php | 169 + controllers/CompareController.php | 101 + controllers/ContactController.php | 264 + controllers/DiscountController.php | 59 + controllers/GuestTrackingController.php | 127 + controllers/HistoryController.php | 72 + controllers/IdentityController.php | 129 + controllers/IndexController.php | 48 + controllers/ManufacturerController.php | 101 + controllers/MyAccountController.php | 63 + controllers/NewProductsController.php | 65 + controllers/OrderConfirmationController.php | 94 + controllers/OrderController.php | 268 + controllers/OrderDetailController.php | 167 + controllers/OrderFollowController.php | 106 + controllers/OrderOpcController.php | 451 + controllers/OrderReturnController.php | 99 + controllers/OrderSlipController.php | 60 + controllers/PageNotFoundController.php | 35 + controllers/ParentOrderController.php | 391 + controllers/PasswordController.php | 116 + controllers/PricesDropController.php | 65 + controllers/ProductController.php | 461 + controllers/SearchController.php | 140 + controllers/SitemapController.php | 64 + controllers/StoresController.php | 170 + controllers/SupplierController.php | 101 + css/admin-ie.css | 2 + css/admin.css | 1492 ++ css/csshover.htc.htc | 120 + css/datePicker.css | 142 + css/index.php | 37 + css/install.css | 349 + css/jquery.autocomplete.css | 51 + css/jquery.cluetip.css | 63 + css/jquery.fancybox-1.3.4.css | 374 + css/jquery.jgrowl.css | 127 + css/jqzoom.css | 21 + css/login.css | 146 + css/tabpane.css | 67 + css/thickbox.css | 174 + discount.php | 29 + docs/dev/dbmodel.mwb | Bin 0 -> 127165 bytes docs/licences/cropper.txt | 12 + docs/licences/fpdf.txt | 7 + docs/licences/index.php | 37 + docs/licences/open-software-3.0.txt | 44 + docs/licences/tinymce-smarty-swift.txt | 460 + download/.htaccess | 2 + download/index.php | 13 + footer.php | 29 + get-file.php | 300 + guest-tracking.php | 29 + header.php | 30 + history.php | 29 + identity.php | 29 + images.inc.php | 345 + img/404.gif | Bin 0 -> 1049 bytes img/admin/AdminCatalog.gif | Bin 0 -> 1697 bytes img/admin/AdminCustomers.gif | Bin 0 -> 1461 bytes img/admin/AdminEmployees.gif | Bin 0 -> 1720 bytes img/admin/AdminModules.gif | Bin 0 -> 1461 bytes img/admin/AdminNext.gif | Bin 0 -> 1330 bytes img/admin/AdminOrders.gif | Bin 0 -> 1449 bytes img/admin/AdminPayment.gif | Bin 0 -> 1322 bytes img/admin/AdminPreferences.gif | Bin 0 -> 1465 bytes img/admin/AdminShipping.gif | Bin 0 -> 1709 bytes img/admin/AdminStats.gif | Bin 0 -> 1453 bytes img/admin/AdminTools.gif | Bin 0 -> 1658 bytes img/admin/___info-ca.gif | Bin 0 -> 628 bytes img/admin/access.png | Bin 0 -> 706 bytes img/admin/add-btn.png | Bin 0 -> 174 bytes img/admin/add.gif | Bin 0 -> 598 bytes img/admin/add_2.gif | Bin 0 -> 1197 bytes img/admin/addresses_edit.gif | Bin 0 -> 412 bytes img/admin/affiliation.png | Bin 0 -> 968 bytes img/admin/ajax-loader.gif | Bin 0 -> 673 bytes img/admin/appearance.gif | Bin 0 -> 1025 bytes img/admin/arrow-left.png | Bin 0 -> 608 bytes img/admin/arrow-right.png | Bin 0 -> 576 bytes img/admin/arrow.gif | Bin 0 -> 341 bytes img/admin/arrow2.gif | Bin 0 -> 215 bytes img/admin/arrow_down.png | Bin 0 -> 3235 bytes img/admin/arrow_in.png | Bin 0 -> 547 bytes img/admin/arrow_out.png | Bin 0 -> 594 bytes img/admin/arrow_up.png | Bin 0 -> 3245 bytes img/admin/asterisk.gif | Bin 0 -> 612 bytes img/admin/barcode.gif | Bin 0 -> 552 bytes img/admin/basket_error.png | Bin 0 -> 753 bytes img/admin/bg.png | Bin 0 -> 56884 bytes img/admin/bg_2.png | Bin 0 -> 24942 bytes img/admin/bg_login.gif | Bin 0 -> 7726 bytes img/admin/bg_pslink.png | Bin 0 -> 24905 bytes img/admin/binoculars.png | Bin 0 -> 826 bytes img/admin/blank.gif | Bin 0 -> 807 bytes img/admin/block_bg.jpg | Bin 0 -> 361 bytes img/admin/calendar.png | Bin 0 -> 1011 bytes img/admin/cart.gif | Bin 0 -> 265 bytes img/admin/catalog_xl.png | Bin 0 -> 1419 bytes img/admin/center_btn_filter.png | Bin 0 -> 267 bytes img/admin/charged_ko.gif | Bin 0 -> 1006 bytes img/admin/charged_ok.gif | Bin 0 -> 997 bytes img/admin/close-white.png | Bin 0 -> 3286 bytes img/admin/close.png | Bin 0 -> 612 bytes img/admin/cms.gif | Bin 0 -> 1026 bytes img/admin/cog.gif | Bin 0 -> 280 bytes img/admin/color.png | Bin 0 -> 839 bytes img/admin/colorpicker.png | Bin 0 -> 4689 bytes img/admin/comment.gif | Bin 0 -> 413 bytes img/admin/commercial.gif | Bin 0 -> 1017 bytes img/admin/computer_key.png | Bin 0 -> 740 bytes img/admin/contact.gif | Bin 0 -> 604 bytes img/admin/copy_files.gif | Bin 0 -> 968 bytes img/admin/coupon.gif | Bin 0 -> 248 bytes img/admin/customer_xl.png | Bin 0 -> 1583 bytes img/admin/database_gear.gif | Bin 0 -> 279 bytes img/admin/date.gif | Bin 0 -> 974 bytes img/admin/date.png | Bin 0 -> 622 bytes img/admin/delete.gif | Bin 0 -> 992 bytes img/admin/delivery.gif | Bin 0 -> 583 bytes img/admin/delivery_ko.gif | Bin 0 -> 1001 bytes img/admin/details.gif | Bin 0 -> 954 bytes img/admin/disabled.gif | Bin 0 -> 960 bytes img/admin/dollar.gif | Bin 0 -> 358 bytes img/admin/down-white.gif | Bin 0 -> 75 bytes img/admin/down.gif | Bin 0 -> 63 bytes img/admin/down_d.gif | Bin 0 -> 54 bytes img/admin/download_page.png | Bin 0 -> 470 bytes img/admin/duplicate.gif | Bin 0 -> 1004 bytes img/admin/duplicate.png | Bin 0 -> 590 bytes img/admin/edit.gif | Bin 0 -> 973 bytes img/admin/edit_2.gif | Bin 0 -> 1201 bytes img/admin/email.gif | Bin 0 -> 582 bytes img/admin/email_edit.gif | Bin 0 -> 604 bytes img/admin/employee.gif | Bin 0 -> 586 bytes img/admin/employees_xl.png | Bin 0 -> 1373 bytes img/admin/enabled-2.gif | Bin 0 -> 1427 bytes img/admin/enabled.gif | Bin 0 -> 321 bytes img/admin/error.png | Bin 0 -> 741 bytes img/admin/error2.png | Bin 0 -> 1061 bytes img/admin/exchangesrate.gif | Bin 0 -> 1021 bytes img/admin/export.gif | Bin 0 -> 979 bytes img/admin/female.gif | Bin 0 -> 249 bytes img/admin/female_2.gif | Bin 0 -> 1476 bytes img/admin/folder.gif | Bin 0 -> 387 bytes img/admin/forbbiden.gif | Bin 0 -> 594 bytes img/admin/gold.gif | Bin 0 -> 1030 bytes img/admin/google.gif | Bin 0 -> 378 bytes img/admin/graybar.jpg | Bin 0 -> 719 bytes img/admin/green-gradient.png | Bin 0 -> 193 bytes img/admin/greenlight-gradient.png | Bin 0 -> 189 bytes img/admin/grid.gif | Bin 0 -> 87 bytes img/admin/group.gif | Bin 0 -> 1004 bytes img/admin/help-new.png | Bin 0 -> 2765 bytes img/admin/help.png | Bin 0 -> 733 bytes img/admin/help2.png | Bin 0 -> 2523 bytes img/admin/home.gif | Bin 0 -> 597 bytes img/admin/home.png | Bin 0 -> 370 bytes img/admin/htaccess.gif | Bin 0 -> 985 bytes img/admin/import.gif | Bin 0 -> 981 bytes img/admin/index.php | 36 + img/admin/info.png | Bin 0 -> 1270 bytes img/admin/information.png | Bin 0 -> 725 bytes img/admin/invoice.gif | Bin 0 -> 601 bytes img/admin/less.png | Bin 0 -> 186 bytes img/admin/list-next.gif | Bin 0 -> 53 bytes img/admin/list-next2.gif | Bin 0 -> 61 bytes img/admin/list-prev.gif | Bin 0 -> 53 bytes img/admin/list-prev2.gif | Bin 0 -> 62 bytes img/admin/localization.gif | Bin 0 -> 1067 bytes img/admin/login-bg.jpg | Bin 0 -> 12222 bytes img/admin/lv1.gif | Bin 0 -> 393 bytes img/admin/lv1.png | Bin 0 -> 137 bytes img/admin/lv2_b.gif | Bin 0 -> 81 bytes img/admin/lv2_b.png | Bin 0 -> 128 bytes img/admin/lv2_f.gif | Bin 0 -> 76 bytes img/admin/lv2_f.png | Bin 0 -> 122 bytes img/admin/lv3_b.png | Bin 0 -> 141 bytes img/admin/lv3_f.png | Bin 0 -> 145 bytes img/admin/lv4_b.png | Bin 0 -> 156 bytes img/admin/lv4_f.png | Bin 0 -> 153 bytes img/admin/lv5_b.png | Bin 0 -> 155 bytes img/admin/lv5_f.png | Bin 0 -> 168 bytes img/admin/lvl_0.gif | Bin 0 -> 85 bytes img/admin/lvl_1.gif | Bin 0 -> 97 bytes img/admin/male.gif | Bin 0 -> 360 bytes img/admin/male_2.gif | Bin 0 -> 1479 bytes img/admin/manufacturers.gif | Bin 0 -> 280 bytes img/admin/medal.png | Bin 0 -> 588 bytes img/admin/meta100.png | Bin 0 -> 612 bytes img/admin/metatags.gif | Bin 0 -> 991 bytes img/admin/module_disabled.png | Bin 0 -> 567 bytes img/admin/module_install.png | Bin 0 -> 778 bytes img/admin/module_notinstall.png | Bin 0 -> 556 bytes img/admin/module_warning.png | Bin 0 -> 968 bytes img/admin/money.gif | Bin 0 -> 383 bytes img/admin/money.png | Bin 0 -> 685 bytes img/admin/more.png | Bin 0 -> 203 bytes img/admin/msg-forward.png | Bin 0 -> 1326 bytes img/admin/msg-is-pending.png | Bin 0 -> 1914 bytes img/admin/msg-ok.png | Bin 0 -> 1513 bytes img/admin/msg-pending.png | Bin 0 -> 2197 bytes img/admin/nav-home.gif | Bin 0 -> 597 bytes img/admin/nav-logout.gif | Bin 0 -> 371 bytes img/admin/nav-user.gif | Bin 0 -> 354 bytes img/admin/navigation.png | Bin 0 -> 581 bytes img/admin/news-new.gif | Bin 0 -> 333 bytes img/admin/next-msg.png | Bin 0 -> 2319 bytes img/admin/next.gif | Bin 0 -> 301 bytes img/admin/ok.gif | Bin 0 -> 610 bytes img/admin/ok2.png | Bin 0 -> 1162 bytes img/admin/orange-gradient.png | Bin 0 -> 200 bytes img/admin/page_world.png | Bin 0 -> 903 bytes img/admin/payment.gif | Bin 0 -> 1042 bytes img/admin/pdf.gif | Bin 0 -> 616 bytes img/admin/photo.gif | Bin 0 -> 1053 bytes img/admin/photo_add.gif | Bin 0 -> 1066 bytes img/admin/picture.gif | Bin 0 -> 585 bytes img/admin/pink-gradient.png | Bin 0 -> 185 bytes img/admin/prefs.gif | Bin 0 -> 351 bytes img/admin/prestastore.gif | Bin 0 -> 984 bytes img/admin/previous.gif | Bin 0 -> 302 bytes img/admin/previous.png | Bin 0 -> 1183 bytes img/admin/printer.gif | Bin 0 -> 731 bytes img/admin/products.gif | Bin 0 -> 1005 bytes img/admin/profiles.png | Bin 0 -> 700 bytes img/admin/quick.gif | Bin 0 -> 971 bytes img/admin/return.gif | Bin 0 -> 1062 bytes img/admin/right_btn_filter.png | Bin 0 -> 642 bytes img/admin/robots.gif | Bin 0 -> 965 bytes img/admin/search.gif | Bin 0 -> 615 bytes img/admin/separator_breadcrum.png | Bin 0 -> 260 bytes img/admin/separator_filter.png | Bin 0 -> 76 bytes img/admin/slip.gif | Bin 0 -> 1027 bytes img/admin/stats_xl.png | Bin 0 -> 1476 bytes img/admin/statsettings.gif | Bin 0 -> 1027 bytes img/admin/status_green.gif | Bin 0 -> 1295 bytes img/admin/status_orange.gif | Bin 0 -> 1396 bytes img/admin/status_red.gif | Bin 0 -> 1396 bytes img/admin/subdomain.gif | Bin 0 -> 1071 bytes img/admin/submenu-bg.gif | Bin 0 -> 52 bytes img/admin/submenu-bg.png | Bin 0 -> 144 bytes img/admin/submenu-bg_2.png | Bin 0 -> 144 bytes img/admin/submenu-configuration.gif | Bin 0 -> 280 bytes img/admin/success.png | Bin 0 -> 1032 bytes img/admin/summary.png | Bin 0 -> 471 bytes img/admin/supplier.gif | Bin 0 -> 266 bytes img/admin/suppliers.gif | Bin 0 -> 266 bytes img/admin/tab-categories.gif | Bin 0 -> 570 bytes img/admin/tab-contact.gif | Bin 0 -> 354 bytes img/admin/tab-customers.gif | Bin 0 -> 587 bytes img/admin/tab-groups.gif | Bin 0 -> 1004 bytes img/admin/tab-invoice.gif | Bin 0 -> 997 bytes img/admin/tab-orders.gif | Bin 0 -> 265 bytes img/admin/tab-payment.gif | Bin 0 -> 383 bytes img/admin/tab-plugins.gif | Bin 0 -> 365 bytes img/admin/tab-preferences.gif | Bin 0 -> 589 bytes img/admin/tab-products.gif | Bin 0 -> 359 bytes img/admin/tab-shipping.gif | Bin 0 -> 583 bytes img/admin/tab-stats.gif | Bin 0 -> 606 bytes img/admin/tab-tools.gif | Bin 0 -> 351 bytes img/admin/tab.gif | Bin 0 -> 347 bytes img/admin/thead.png | Bin 0 -> 146 bytes img/admin/themes.gif | Bin 0 -> 997 bytes img/admin/time.gif | Bin 0 -> 618 bytes img/admin/translation.gif | Bin 0 -> 919 bytes img/admin/transparentpixel.gif | Bin 0 -> 43 bytes img/admin/unknow.gif | Bin 0 -> 1227 bytes img/admin/unknown.gif | Bin 0 -> 396 bytes img/admin/up.gif | Bin 0 -> 55 bytes img/admin/up_d.gif | Bin 0 -> 55 bytes img/admin/visitors.gif | Bin 0 -> 1052 bytes img/admin/warn2.png | Bin 0 -> 1061 bytes img/admin/warning.gif | Bin 0 -> 581 bytes img/admin/world.gif | Bin 0 -> 1065 bytes img/c/2-category.jpg | Bin 0 -> 15328 bytes img/c/2-large.jpg | Bin 0 -> 15694 bytes img/c/2-medium.jpg | Bin 0 -> 2560 bytes img/c/2-small.jpg | Bin 0 -> 1380 bytes img/c/2.jpg | Bin 0 -> 21177 bytes img/c/3-category.jpg | Bin 0 -> 16989 bytes img/c/3-large.jpg | Bin 0 -> 10597 bytes img/c/3-medium.jpg | Bin 0 -> 1828 bytes img/c/3-small.jpg | Bin 0 -> 1176 bytes img/c/3.jpg | Bin 0 -> 25492 bytes img/c/4-category.jpg | Bin 0 -> 15013 bytes img/c/4-large.jpg | Bin 0 -> 7716 bytes img/c/4-medium.jpg | Bin 0 -> 1683 bytes img/c/4-small.jpg | Bin 0 -> 1038 bytes img/c/4.jpg | Bin 0 -> 20201 bytes img/c/de-default-category.jpg | Bin 0 -> 5039 bytes img/c/de-default-large.jpg | Bin 0 -> 8343 bytes img/c/de-default-medium.jpg | Bin 0 -> 2010 bytes img/c/de-default-small.jpg | Bin 0 -> 1220 bytes img/c/de.jpg | Bin 0 -> 11205 bytes img/c/en-default-category.jpg | Bin 0 -> 3928 bytes img/c/en-default-large.jpg | Bin 0 -> 6819 bytes img/c/en-default-medium.jpg | Bin 0 -> 1740 bytes img/c/en-default-small.jpg | Bin 0 -> 1047 bytes img/c/en.jpg | Bin 0 -> 10859 bytes img/c/es-default-category.jpg | Bin 0 -> 4121 bytes img/c/es-default-large.jpg | Bin 0 -> 6972 bytes img/c/es-default-medium.jpg | Bin 0 -> 1799 bytes img/c/es-default-small.jpg | Bin 0 -> 1017 bytes img/c/es.jpg | Bin 0 -> 6828 bytes img/c/fr-default-category.jpg | Bin 0 -> 4938 bytes img/c/fr-default-large.jpg | Bin 0 -> 8272 bytes img/c/fr-default-medium.jpg | Bin 0 -> 2223 bytes img/c/fr-default-small.jpg | Bin 0 -> 1252 bytes img/c/fr.jpg | Bin 0 -> 13454 bytes img/c/index.php | 36 + img/c/it-default-category.jpg | Bin 0 -> 6438 bytes img/c/it-default-large.jpg | Bin 0 -> 11828 bytes img/c/it-default-medium.jpg | Bin 0 -> 2607 bytes img/c/it-default-small.jpg | Bin 0 -> 1454 bytes img/c/it.jpg | Bin 0 -> 35628 bytes img/co/index.php | 36 + img/favicon.ico | Bin 0 -> 1150 bytes img/index.php | 36 + img/l/1.jpg | Bin 0 -> 665 bytes img/l/2.jpg | Bin 0 -> 679 bytes img/l/3.jpg | Bin 0 -> 696 bytes img/l/4.jpg | Bin 0 -> 924 bytes img/l/5.jpg | Bin 0 -> 911 bytes img/l/en-default-home.jpg | Bin 0 -> 3026 bytes img/l/en-default-large.jpg | Bin 0 -> 6819 bytes img/l/en-default-large_scene.jpg | Bin 0 -> 4298 bytes img/l/en-default-medium.jpg | Bin 0 -> 1740 bytes img/l/en-default-small.jpg | Bin 0 -> 1056 bytes img/l/en-default-thickbox.jpg | Bin 0 -> 9401 bytes img/l/en.jpg | Bin 0 -> 10859 bytes img/l/index.php | 36 + img/l/none.jpg | Bin 0 -> 443 bytes img/loader.gif | Bin 0 -> 3719 bytes img/loadingAnimation.gif | Bin 0 -> 5886 bytes img/logo.jpg | Bin 0 -> 5022 bytes img/logo_stores.gif | Bin 0 -> 806 bytes img/m/1-large.jpg | Bin 0 -> 4108 bytes img/m/1-medium.jpg | Bin 0 -> 2056 bytes img/m/1-small.jpg | Bin 0 -> 1236 bytes img/m/1.jpg | Bin 0 -> 2680 bytes img/m/2-large.jpg | Bin 0 -> 4222 bytes img/m/2-medium.jpg | Bin 0 -> 1369 bytes img/m/2-small.jpg | Bin 0 -> 1024 bytes img/m/2.jpg | Bin 0 -> 2596 bytes img/m/de-default-large.jpg | Bin 0 -> 8343 bytes img/m/de-default-medium.jpg | Bin 0 -> 2010 bytes img/m/de-default-small.jpg | Bin 0 -> 1220 bytes img/m/de.jpg | Bin 0 -> 11205 bytes img/m/en-default-large.jpg | Bin 0 -> 6819 bytes img/m/en-default-medium.jpg | Bin 0 -> 1740 bytes img/m/en-default-small.jpg | Bin 0 -> 1047 bytes img/m/en.jpg | Bin 0 -> 10859 bytes img/m/es-default-large.jpg | Bin 0 -> 6826 bytes img/m/es-default-medium.jpg | Bin 0 -> 1802 bytes img/m/es-default-small.jpg | Bin 0 -> 1014 bytes img/m/es-default-thickbox.jpg | Bin 0 -> 8219 bytes img/m/es.jpg | Bin 0 -> 6828 bytes img/m/fr-default-large.jpg | Bin 0 -> 8272 bytes img/m/fr-default-medium.jpg | Bin 0 -> 2223 bytes img/m/fr-default-small.jpg | Bin 0 -> 1252 bytes img/m/fr.jpg | Bin 0 -> 13454 bytes img/m/index.php | 36 + img/m/it-default-large.jpg | Bin 0 -> 11828 bytes img/m/it-default-medium.jpg | Bin 0 -> 2607 bytes img/m/it-default-small.jpg | Bin 0 -> 1454 bytes img/m/it.jpg | Bin 0 -> 35628 bytes img/macFFBgHack.png | Bin 0 -> 207 bytes img/os/1.gif | Bin 0 -> 958 bytes img/os/10.gif | Bin 0 -> 1030 bytes img/os/11.gif | Bin 0 -> 608 bytes img/os/2.gif | Bin 0 -> 334 bytes img/os/3.gif | Bin 0 -> 1046 bytes img/os/4.gif | Bin 0 -> 615 bytes img/os/5.gif | Bin 0 -> 980 bytes img/os/6.gif | Bin 0 -> 379 bytes img/os/7.gif | Bin 0 -> 596 bytes img/os/8.gif | Bin 0 -> 387 bytes img/os/9.gif | Bin 0 -> 1071 bytes img/os/index.php | 36 + img/p/1-1-home.jpg | Bin 0 -> 2635 bytes img/p/1-1-large.jpg | Bin 0 -> 7255 bytes img/p/1-1-medium.jpg | Bin 0 -> 1613 bytes img/p/1-1-small.jpg | Bin 0 -> 1020 bytes img/p/1-1-thickbox.jpg | Bin 0 -> 18736 bytes img/p/1-1.jpg | Bin 0 -> 17191 bytes img/p/1-2-home.jpg | Bin 0 -> 2859 bytes img/p/1-2-large.jpg | Bin 0 -> 7287 bytes img/p/1-2-medium.jpg | Bin 0 -> 1733 bytes img/p/1-2-small.jpg | Bin 0 -> 1063 bytes img/p/1-2-thickbox.jpg | Bin 0 -> 19086 bytes img/p/1-2.jpg | Bin 0 -> 17621 bytes img/p/1-3-home.jpg | Bin 0 -> 2922 bytes img/p/1-3-large.jpg | Bin 0 -> 7280 bytes img/p/1-3-medium.jpg | Bin 0 -> 1712 bytes img/p/1-3-small.jpg | Bin 0 -> 1072 bytes img/p/1-3-thickbox.jpg | Bin 0 -> 18490 bytes img/p/1-3.jpg | Bin 0 -> 17009 bytes img/p/1-37-home.jpg | Bin 0 -> 3026 bytes img/p/1-37-large.jpg | Bin 0 -> 8818 bytes img/p/1-37-medium.jpg | Bin 0 -> 1751 bytes img/p/1-37-small.jpg | Bin 0 -> 1091 bytes img/p/1-37-thickbox.jpg | Bin 0 -> 10475 bytes img/p/1-37.jpg | Bin 0 -> 7783 bytes img/p/1-38-home.jpg | Bin 0 -> 3619 bytes img/p/1-38-large.jpg | Bin 0 -> 10060 bytes img/p/1-38-medium.jpg | Bin 0 -> 2130 bytes img/p/1-38-small.jpg | Bin 0 -> 1269 bytes img/p/1-38-thickbox.jpg | Bin 0 -> 11716 bytes img/p/1-38.jpg | Bin 0 -> 9207 bytes img/p/1-39-home.jpg | Bin 0 -> 3349 bytes img/p/1-39-large.jpg | Bin 0 -> 9503 bytes img/p/1-39-medium.jpg | Bin 0 -> 1999 bytes img/p/1-39-small.jpg | Bin 0 -> 1208 bytes img/p/1-39-thickbox.jpg | Bin 0 -> 11099 bytes img/p/1-39.jpg | Bin 0 -> 8425 bytes img/p/1-4-home.jpg | Bin 0 -> 2989 bytes img/p/1-4-large.jpg | Bin 0 -> 7836 bytes img/p/1-4-medium.jpg | Bin 0 -> 1911 bytes img/p/1-4-small.jpg | Bin 0 -> 1145 bytes img/p/1-4-thickbox.jpg | Bin 0 -> 19072 bytes img/p/1-4.jpg | Bin 0 -> 17245 bytes img/p/1-40-home.jpg | Bin 0 -> 3503 bytes img/p/1-40-large.jpg | Bin 0 -> 9863 bytes img/p/1-40-medium.jpg | Bin 0 -> 2105 bytes img/p/1-40-small.jpg | Bin 0 -> 1241 bytes img/p/1-40-thickbox.jpg | Bin 0 -> 11533 bytes img/p/1-40.jpg | Bin 0 -> 8809 bytes img/p/1-41-home.jpg | Bin 0 -> 3608 bytes img/p/1-41-large.jpg | Bin 0 -> 10230 bytes img/p/1-41-medium.jpg | Bin 0 -> 2087 bytes img/p/1-41-small.jpg | Bin 0 -> 1246 bytes img/p/1-41-thickbox.jpg | Bin 0 -> 11816 bytes img/p/1-41.jpg | Bin 0 -> 9163 bytes img/p/1-42-home.jpg | Bin 0 -> 3471 bytes img/p/1-42-large.jpg | Bin 0 -> 9707 bytes img/p/1-42-medium.jpg | Bin 0 -> 2022 bytes img/p/1-42-small.jpg | Bin 0 -> 1224 bytes img/p/1-42-thickbox.jpg | Bin 0 -> 11398 bytes img/p/1-42.jpg | Bin 0 -> 8790 bytes img/p/1-44-home.jpg | Bin 0 -> 3080 bytes img/p/1-44-large.jpg | Bin 0 -> 9088 bytes img/p/1-44-medium.jpg | Bin 0 -> 1798 bytes img/p/1-44-small.jpg | Bin 0 -> 1107 bytes img/p/1-44-thickbox.jpg | Bin 0 -> 10797 bytes img/p/1-44.jpg | Bin 0 -> 8156 bytes img/p/1-45-home.jpg | Bin 0 -> 3624 bytes img/p/1-45-large.jpg | Bin 0 -> 10456 bytes img/p/1-45-medium.jpg | Bin 0 -> 2132 bytes img/p/1-45-small.jpg | Bin 0 -> 1254 bytes img/p/1-45-thickbox.jpg | Bin 0 -> 12172 bytes img/p/1-45.jpg | Bin 0 -> 9490 bytes img/p/2-46-home.jpg | Bin 0 -> 4440 bytes img/p/2-46-large.jpg | Bin 0 -> 6062 bytes img/p/2-46-medium.jpg | Bin 0 -> 2644 bytes img/p/2-46-small.jpg | Bin 0 -> 1487 bytes img/p/2-46-thickbox.jpg | Bin 0 -> 7778 bytes img/p/2-46.jpg | Bin 0 -> 4960 bytes img/p/2-47-home.jpg | Bin 0 -> 4130 bytes img/p/2-47-large.jpg | Bin 0 -> 5675 bytes img/p/2-47-medium.jpg | Bin 0 -> 2486 bytes img/p/2-47-small.jpg | Bin 0 -> 1392 bytes img/p/2-47-thickbox.jpg | Bin 0 -> 7464 bytes img/p/2-47.jpg | Bin 0 -> 4670 bytes img/p/2-48-home.jpg | Bin 0 -> 4141 bytes img/p/2-48-large.jpg | Bin 0 -> 5713 bytes img/p/2-48-medium.jpg | Bin 0 -> 2451 bytes img/p/2-48-small.jpg | Bin 0 -> 1390 bytes img/p/2-48-thickbox.jpg | Bin 0 -> 7431 bytes img/p/2-48.jpg | Bin 0 -> 4639 bytes img/p/2-49-home.jpg | Bin 0 -> 2746 bytes img/p/2-49-large.jpg | Bin 0 -> 3948 bytes img/p/2-49-medium.jpg | Bin 0 -> 1680 bytes img/p/2-49-small.jpg | Bin 0 -> 1041 bytes img/p/2-49-thickbox.jpg | Bin 0 -> 5645 bytes img/p/2-49.jpg | Bin 0 -> 2988 bytes img/p/2-5-home.jpg | Bin 0 -> 2902 bytes img/p/2-5-large.jpg | Bin 0 -> 9149 bytes img/p/2-5-medium.jpg | Bin 0 -> 1790 bytes img/p/2-5-small.jpg | Bin 0 -> 1147 bytes img/p/2-5-thickbox.jpg | Bin 0 -> 29936 bytes img/p/2-5.jpg | Bin 0 -> 43743 bytes img/p/2-6-home.jpg | Bin 0 -> 3925 bytes img/p/2-6-large.jpg | Bin 0 -> 11279 bytes img/p/2-6-medium.jpg | Bin 0 -> 2244 bytes img/p/2-6-small.jpg | Bin 0 -> 1338 bytes img/p/2-6-thickbox.jpg | Bin 0 -> 32409 bytes img/p/2-6.jpg | Bin 0 -> 30658 bytes img/p/2-7-home.jpg | Bin 0 -> 3724 bytes img/p/2-7-large.jpg | Bin 0 -> 10622 bytes img/p/2-7-medium.jpg | Bin 0 -> 2122 bytes img/p/2-7-small.jpg | Bin 0 -> 1307 bytes img/p/2-7-thickbox.jpg | Bin 0 -> 30424 bytes img/p/2-7.jpg | Bin 0 -> 28632 bytes img/p/2-8-home.jpg | Bin 0 -> 3708 bytes img/p/2-8-large.jpg | Bin 0 -> 10625 bytes img/p/2-8-medium.jpg | Bin 0 -> 2104 bytes img/p/2-8-small.jpg | Bin 0 -> 1261 bytes img/p/2-8-thickbox.jpg | Bin 0 -> 31409 bytes img/p/2-8.jpg | Bin 0 -> 29726 bytes img/p/2-9-home.jpg | Bin 0 -> 3620 bytes img/p/2-9-large.jpg | Bin 0 -> 10185 bytes img/p/2-9-medium.jpg | Bin 0 -> 2096 bytes img/p/2-9-small.jpg | Bin 0 -> 1255 bytes img/p/2-9-thickbox.jpg | Bin 0 -> 29282 bytes img/p/2-9.jpg | Bin 0 -> 27197 bytes img/p/5-15-home.jpg | Bin 0 -> 3535 bytes img/p/5-15-large.jpg | Bin 0 -> 11546 bytes img/p/5-15-medium.jpg | Bin 0 -> 2043 bytes img/p/5-15-small.jpg | Bin 0 -> 1222 bytes img/p/5-15-thickbox.jpg | Bin 0 -> 31270 bytes img/p/5-15.jpg | Bin 0 -> 33661 bytes img/p/5-16-home.jpg | Bin 0 -> 2031 bytes img/p/5-16-large.jpg | Bin 0 -> 5343 bytes img/p/5-16-medium.jpg | Bin 0 -> 1253 bytes img/p/5-16-small.jpg | Bin 0 -> 916 bytes img/p/5-16-thickbox.jpg | Bin 0 -> 13142 bytes img/p/5-16.jpg | Bin 0 -> 13867 bytes img/p/5-17-home.jpg | Bin 0 -> 3616 bytes img/p/5-17-large.jpg | Bin 0 -> 12173 bytes img/p/5-17-medium.jpg | Bin 0 -> 1815 bytes img/p/5-17-small.jpg | Bin 0 -> 1085 bytes img/p/5-17-thickbox.jpg | Bin 0 -> 34087 bytes img/p/5-17.jpg | Bin 0 -> 36721 bytes img/p/6-18-home.jpg | Bin 0 -> 3136 bytes img/p/6-18-large.jpg | Bin 0 -> 9889 bytes img/p/6-18-medium.jpg | Bin 0 -> 1764 bytes img/p/6-18-small.jpg | Bin 0 -> 1121 bytes img/p/6-18-thickbox.jpg | Bin 0 -> 27010 bytes img/p/6-18.jpg | Bin 0 -> 29036 bytes img/p/6-19-home.jpg | Bin 0 -> 2476 bytes img/p/6-19-large.jpg | Bin 0 -> 7234 bytes img/p/6-19-medium.jpg | Bin 0 -> 1372 bytes img/p/6-19-small.jpg | Bin 0 -> 932 bytes img/p/6-19-thickbox.jpg | Bin 0 -> 18894 bytes img/p/6-19.jpg | Bin 0 -> 22068 bytes img/p/6-20-home.jpg | Bin 0 -> 3409 bytes img/p/6-20-large.jpg | Bin 0 -> 10580 bytes img/p/6-20-medium.jpg | Bin 0 -> 1823 bytes img/p/6-20-small.jpg | Bin 0 -> 1155 bytes img/p/6-20-thickbox.jpg | Bin 0 -> 27873 bytes img/p/6-20.jpg | Bin 0 -> 30294 bytes img/p/7-24-home.jpg | Bin 0 -> 3322 bytes img/p/7-24-large.jpg | Bin 0 -> 10325 bytes img/p/7-24-medium.jpg | Bin 0 -> 1870 bytes img/p/7-24-small.jpg | Bin 0 -> 1177 bytes img/p/7-24-thickbox.jpg | Bin 0 -> 28642 bytes img/p/7-24.jpg | Bin 0 -> 34942 bytes img/p/7-26-home.jpg | Bin 0 -> 3079 bytes img/p/7-26-large.jpg | Bin 0 -> 9486 bytes img/p/7-26-medium.jpg | Bin 0 -> 1775 bytes img/p/7-26-small.jpg | Bin 0 -> 1147 bytes img/p/7-26-thickbox.jpg | Bin 0 -> 25279 bytes img/p/7-26.jpg | Bin 0 -> 28689 bytes img/p/7-27-home.jpg | Bin 0 -> 3140 bytes img/p/7-27-large.jpg | Bin 0 -> 11199 bytes img/p/7-27-medium.jpg | Bin 0 -> 1751 bytes img/p/7-27-small.jpg | Bin 0 -> 1109 bytes img/p/7-27-thickbox.jpg | Bin 0 -> 34555 bytes img/p/7-27.jpg | Bin 0 -> 59782 bytes img/p/7-29-home.jpg | Bin 0 -> 3699 bytes img/p/7-29-large.jpg | Bin 0 -> 11884 bytes img/p/7-29-medium.jpg | Bin 0 -> 2127 bytes img/p/7-29-small.jpg | Bin 0 -> 1184 bytes img/p/7-29-thickbox.jpg | Bin 0 -> 31419 bytes img/p/7-29.jpg | Bin 0 -> 44471 bytes img/p/7-30-home.jpg | Bin 0 -> 2480 bytes img/p/7-30-large.jpg | Bin 0 -> 5924 bytes img/p/7-30-medium.jpg | Bin 0 -> 1463 bytes img/p/7-30-small.jpg | Bin 0 -> 977 bytes img/p/7-30-thickbox.jpg | Bin 0 -> 16029 bytes img/p/7-30.jpg | Bin 0 -> 17755 bytes img/p/7-32-home.jpg | Bin 0 -> 4131 bytes img/p/7-32-large.jpg | Bin 0 -> 12135 bytes img/p/7-32-medium.jpg | Bin 0 -> 2239 bytes img/p/7-32-small.jpg | Bin 0 -> 1283 bytes img/p/7-32-thickbox.jpg | Bin 0 -> 33248 bytes img/p/7-32.jpg | Bin 0 -> 38998 bytes img/p/8-33-home.jpg | Bin 0 -> 4217 bytes img/p/8-33-large.jpg | Bin 0 -> 15199 bytes img/p/8-33-medium.jpg | Bin 0 -> 2235 bytes img/p/8-33-small.jpg | Bin 0 -> 1290 bytes img/p/8-33-thickbox.jpg | Bin 0 -> 24333 bytes img/p/8-33.jpg | Bin 0 -> 21811 bytes img/p/9-36-home.jpg | Bin 0 -> 4169 bytes img/p/9-36-large.jpg | Bin 0 -> 13183 bytes img/p/9-36-medium.jpg | Bin 0 -> 2388 bytes img/p/9-36-small.jpg | Bin 0 -> 1371 bytes img/p/9-36-thickbox.jpg | Bin 0 -> 28777 bytes img/p/9-36.jpg | Bin 0 -> 27319 bytes img/p/de-default-home.jpg | Bin 0 -> 3528 bytes img/p/de-default-large.jpg | Bin 0 -> 8343 bytes img/p/de-default-medium.jpg | Bin 0 -> 2010 bytes img/p/de-default-small.jpg | Bin 0 -> 1220 bytes img/p/de-default-thickbox.jpg | Bin 0 -> 12500 bytes img/p/de.jpg | Bin 0 -> 11205 bytes img/p/en-default-home.jpg | Bin 0 -> 3026 bytes img/p/en-default-large.jpg | Bin 0 -> 6819 bytes img/p/en-default-medium.jpg | Bin 0 -> 1740 bytes img/p/en-default-small.jpg | Bin 0 -> 1056 bytes img/p/en-default-thickbox.jpg | Bin 0 -> 8219 bytes img/p/en.jpg | Bin 0 -> 10859 bytes img/p/es-default-home.jpg | Bin 0 -> 3155 bytes img/p/es-default-large.jpg | Bin 0 -> 6826 bytes img/p/es-default-medium.jpg | Bin 0 -> 1802 bytes img/p/es-default-small.jpg | Bin 0 -> 1014 bytes img/p/es-default-thickbox.jpg | Bin 0 -> 8105 bytes img/p/es.jpg | Bin 0 -> 6828 bytes img/p/fr-default-home.jpg | Bin 0 -> 3648 bytes img/p/fr-default-large.jpg | Bin 0 -> 8272 bytes img/p/fr-default-medium.jpg | Bin 0 -> 2223 bytes img/p/fr-default-small.jpg | Bin 0 -> 1259 bytes img/p/fr-default-thickbox.jpg | Bin 0 -> 10087 bytes img/p/fr.jpg | Bin 0 -> 13454 bytes img/p/index.php | 36 + img/p/it-default-home.jpg | Bin 0 -> 4601 bytes img/p/it-default-large.jpg | Bin 0 -> 11828 bytes img/p/it-default-medium.jpg | Bin 0 -> 2607 bytes img/p/it-default-small.jpg | Bin 0 -> 1454 bytes img/p/it-default-thickbox.jpg | Bin 0 -> 15175 bytes img/p/it.jpg | Bin 0 -> 35628 bytes img/s/index.php | 36 + img/scenes/1-large_scene.jpg | Bin 0 -> 36207 bytes img/scenes/1.jpg | Bin 0 -> 34152 bytes img/scenes/2-large_scene.jpg | Bin 0 -> 17003 bytes img/scenes/2.jpg | Bin 0 -> 15334 bytes img/scenes/3-large_scene.jpg | Bin 0 -> 18122 bytes img/scenes/3.jpg | Bin 0 -> 16080 bytes img/scenes/de-default-large_scene.jpg | Bin 0 -> 6770 bytes img/scenes/de-default-thumb_scene.jpg | Bin 0 -> 1584 bytes img/scenes/en-default-large_scene.jpg | Bin 0 -> 4298 bytes img/scenes/en-default-thumb_scene.jpg | Bin 0 -> 1119 bytes img/scenes/es-default-large_scene.jpg | Bin 0 -> 4298 bytes img/scenes/es-default-thumb_scene.jpg | Bin 0 -> 1119 bytes img/scenes/fr-default-large_scene.jpg | Bin 0 -> 6215 bytes img/scenes/fr-default-thumb_scene.jpg | Bin 0 -> 1734 bytes img/scenes/index.php | 36 + img/scenes/it-default-large_scene.jpg | Bin 0 -> 8770 bytes img/scenes/it-default-thumb_scene.jpg | Bin 0 -> 1884 bytes img/scenes/thumbs/1-thumb_scene.jpg | Bin 0 -> 6403 bytes img/scenes/thumbs/2-thumb_scene.jpg | Bin 0 -> 3412 bytes img/scenes/thumbs/3-thumb_scene.jpg | Bin 0 -> 3532 bytes img/scenes/thumbs/index.php | 36 + img/st/1-category.jpg | Bin 0 -> 9376 bytes img/st/1-large.jpg | Bin 0 -> 9404 bytes img/st/1-medium.jpg | Bin 0 -> 2674 bytes img/st/1-small.jpg | Bin 0 -> 1344 bytes img/st/1.jpg | Bin 0 -> 8072 bytes img/st/2-category.jpg | Bin 0 -> 9376 bytes img/st/2-large.jpg | Bin 0 -> 9404 bytes img/st/2-medium.jpg | Bin 0 -> 2674 bytes img/st/2-small.jpg | Bin 0 -> 1344 bytes img/st/2.jpg | Bin 0 -> 8072 bytes img/st/3-category.jpg | Bin 0 -> 9376 bytes img/st/3-large.jpg | Bin 0 -> 9404 bytes img/st/3-medium.jpg | Bin 0 -> 2674 bytes img/st/3-small.jpg | Bin 0 -> 1344 bytes img/st/3.jpg | Bin 0 -> 8072 bytes img/st/4-category.jpg | Bin 0 -> 9376 bytes img/st/4-large.jpg | Bin 0 -> 9404 bytes img/st/4-medium.jpg | Bin 0 -> 2674 bytes img/st/4-small.jpg | Bin 0 -> 1344 bytes img/st/4.jpg | Bin 0 -> 8072 bytes img/st/5-category.jpg | Bin 0 -> 9376 bytes img/st/5-large.jpg | Bin 0 -> 9404 bytes img/st/5-medium.jpg | Bin 0 -> 2674 bytes img/st/5-small.jpg | Bin 0 -> 1344 bytes img/st/5.jpg | Bin 0 -> 8072 bytes img/st/index.php | 36 + img/su/1-large.jpg | Bin 0 -> 8179 bytes img/su/1-medium.jpg | Bin 0 -> 3040 bytes img/su/1-small.jpg | Bin 0 -> 1580 bytes img/su/1.jpg | Bin 0 -> 4952 bytes img/su/2-large.jpg | Bin 0 -> 4222 bytes img/su/2-medium.jpg | Bin 0 -> 1369 bytes img/su/2-small.jpg | Bin 0 -> 1024 bytes img/su/2.jpg | Bin 0 -> 2596 bytes img/su/de-default-large.jpg | Bin 0 -> 8343 bytes img/su/de-default-medium.jpg | Bin 0 -> 2010 bytes img/su/de-default-small.jpg | Bin 0 -> 1220 bytes img/su/de.jpg | Bin 0 -> 11205 bytes img/su/en-default-large.jpg | Bin 0 -> 5919 bytes img/su/en-default-medium.jpg | Bin 0 -> 1845 bytes img/su/en-default-small.jpg | Bin 0 -> 968 bytes img/su/en.jpg | Bin 0 -> 10859 bytes img/su/es-default-large.jpg | Bin 0 -> 5919 bytes img/su/es-default-medium.jpg | Bin 0 -> 1845 bytes img/su/es-default-small.jpg | Bin 0 -> 968 bytes img/su/es.jpg | Bin 0 -> 10859 bytes img/su/fr-default-large.jpg | Bin 0 -> 7302 bytes img/su/fr-default-medium.jpg | Bin 0 -> 2290 bytes img/su/fr-default-small.jpg | Bin 0 -> 1185 bytes img/su/fr.jpg | Bin 0 -> 13454 bytes img/su/index.php | 36 + img/su/it-default-large.jpg | Bin 0 -> 11828 bytes img/su/it-default-medium.jpg | Bin 0 -> 2607 bytes img/su/it-default-small.jpg | Bin 0 -> 1454 bytes img/su/it.jpg | Bin 0 -> 35628 bytes img/t/0.gif | Bin 0 -> 597 bytes img/t/AdminAccess.gif | Bin 0 -> 631 bytes img/t/AdminAddonsCatalog.gif | Bin 0 -> 1461 bytes img/t/AdminAddonsMyAccount.gif | Bin 0 -> 1461 bytes img/t/AdminAddresses.gif | Bin 0 -> 604 bytes img/t/AdminAliases.gif | Bin 0 -> 956 bytes img/t/AdminAppearance.gif | Bin 0 -> 1025 bytes img/t/AdminAttachments.gif | Bin 0 -> 1040 bytes img/t/AdminAttributesGroups.gif | Bin 0 -> 612 bytes img/t/AdminBackup.gif | Bin 0 -> 1052 bytes img/t/AdminCMS.gif | Bin 0 -> 1026 bytes img/t/AdminCMSContent.gif | Bin 0 -> 1026 bytes img/t/AdminCarriers.gif | Bin 0 -> 583 bytes img/t/AdminCarts.gif | Bin 0 -> 1000 bytes img/t/AdminCatalog.gif | Bin 0 -> 570 bytes img/t/AdminContact.gif | Bin 0 -> 354 bytes img/t/AdminContacts.gif | Bin 0 -> 604 bytes img/t/AdminCountries.gif | Bin 0 -> 1065 bytes img/t/AdminCounty.gif | Bin 0 -> 1064 bytes img/t/AdminCurrencies.gif | Bin 0 -> 358 bytes img/t/AdminCustomerThreads.gif | Bin 0 -> 587 bytes img/t/AdminCustomers.gif | Bin 0 -> 587 bytes img/t/AdminDb.gif | Bin 0 -> 279 bytes img/t/AdminDeliverySlip.gif | Bin 0 -> 926 bytes img/t/AdminDiscounts.gif | Bin 0 -> 248 bytes img/t/AdminEmails.gif | Bin 0 -> 582 bytes img/t/AdminEmployees.gif | Bin 0 -> 586 bytes img/t/AdminFeatures.gif | Bin 0 -> 998 bytes img/t/AdminGenerator.gif | Bin 0 -> 1022 bytes img/t/AdminGeolocalization.gif | Bin 0 -> 1065 bytes img/t/AdminGeolocation.gif | Bin 0 -> 1064 bytes img/t/AdminGroups.gif | Bin 0 -> 1004 bytes img/t/AdminHome.gif | Bin 0 -> 604 bytes img/t/AdminImages.gif | Bin 0 -> 585 bytes img/t/AdminImport.gif | Bin 0 -> 981 bytes img/t/AdminInformation.gif | Bin 0 -> 617 bytes img/t/AdminInvoices.gif | Bin 0 -> 997 bytes img/t/AdminLanguages.gif | Bin 0 -> 1065 bytes img/t/AdminLocalization.gif | Bin 0 -> 1067 bytes img/t/AdminLogs.gif | Bin 0 -> 1027 bytes img/t/AdminManufacturers.gif | Bin 0 -> 280 bytes img/t/AdminMessages.gif | Bin 0 -> 604 bytes img/t/AdminMeta.gif | Bin 0 -> 991 bytes img/t/AdminModules.gif | Bin 0 -> 365 bytes img/t/AdminModulesPositions.gif | Bin 0 -> 1033 bytes img/t/AdminOrderMessage.gif | Bin 0 -> 1055 bytes img/t/AdminOrders.gif | Bin 0 -> 265 bytes img/t/AdminPDF.gif | Bin 0 -> 616 bytes img/t/AdminPPreferences.gif | Bin 0 -> 265 bytes img/t/AdminPayment.gif | Bin 0 -> 1042 bytes img/t/AdminPerformance.gif | Bin 0 -> 959 bytes img/t/AdminPreferences.gif | Bin 0 -> 991 bytes img/t/AdminProfiles.gif | Bin 0 -> 932 bytes img/t/AdminQuickAccesses.gif | Bin 0 -> 971 bytes img/t/AdminRangePrice.gif | Bin 0 -> 358 bytes img/t/AdminRangeWeight.gif | Bin 0 -> 1062 bytes img/t/AdminReferrers.gif | Bin 0 -> 1036 bytes img/t/AdminReturn.gif | Bin 0 -> 1062 bytes img/t/AdminScenes.gif | Bin 0 -> 1053 bytes img/t/AdminSearch.gif | Bin 0 -> 989 bytes img/t/AdminSearchConf.gif | Bin 0 -> 355 bytes img/t/AdminSearchEngines.gif | Bin 0 -> 1013 bytes img/t/AdminShipping.gif | Bin 0 -> 583 bytes img/t/AdminSlip.gif | Bin 0 -> 1027 bytes img/t/AdminStates.gif | Bin 0 -> 1065 bytes img/t/AdminStats.gif | Bin 0 -> 606 bytes img/t/AdminStatsConf.gif | Bin 0 -> 1027 bytes img/t/AdminStatsModules.gif | Bin 0 -> 997 bytes img/t/AdminStatuses.gif | Bin 0 -> 618 bytes img/t/AdminStockMvt.gif | Bin 0 -> 1709 bytes img/t/AdminStores.gif | Bin 0 -> 1006 bytes img/t/AdminSubDomains.gif | Bin 0 -> 1071 bytes img/t/AdminSuppliers.gif | Bin 0 -> 266 bytes img/t/AdminTabs.gif | Bin 0 -> 347 bytes img/t/AdminTags.gif | Bin 0 -> 981 bytes img/t/AdminTaxRulesGroup.gif | Bin 0 -> 383 bytes img/t/AdminTaxes.gif | Bin 0 -> 383 bytes img/t/AdminThemes.gif | Bin 0 -> 1025 bytes img/t/AdminTools.gif | Bin 0 -> 351 bytes img/t/AdminTracking.gif | Bin 0 -> 898 bytes img/t/AdminTranslations.gif | Bin 0 -> 919 bytes img/t/AdminWebservice.gif | Bin 0 -> 613 bytes img/t/AdminZones.gif | Bin 0 -> 1065 bytes img/t/index.php | 36 + img/tmp/index.php | 36 + img/tmp/order_state_mini_11.gif | Bin 0 -> 608 bytes img/tmp/store_1.jpg | Bin 0 -> 8711 bytes img/tmp/store_2.jpg | Bin 0 -> 8711 bytes img/tmp/store_3.jpg | Bin 0 -> 8711 bytes img/tmp/store_4.jpg | Bin 0 -> 8711 bytes index.php | 29 + init.php | 29 + install-dev/classes/AddConfToFile.php | 91 + install-dev/classes/ConfigurationTest.php | 215 + install-dev/classes/LanguagesManager.php | 105 + install-dev/classes/ToolsInstall.php | 189 + install-dev/controller.js | 1032 + install-dev/img/01-gd100.png | Bin 0 -> 170 bytes install-dev/img/01-pt100.png | Bin 0 -> 158 bytes install-dev/img/01-pt70.png | Bin 0 -> 157 bytes install-dev/img/02-gd100.png | Bin 0 -> 284 bytes install-dev/img/02-pt100.png | Bin 0 -> 248 bytes install-dev/img/02-pt70.png | Bin 0 -> 279 bytes install-dev/img/03-gd100.png | Bin 0 -> 308 bytes install-dev/img/03-pt100.png | Bin 0 -> 270 bytes install-dev/img/03-pt70.png | Bin 0 -> 292 bytes install-dev/img/04-gd100.png | Bin 0 -> 241 bytes install-dev/img/04-pt100.png | Bin 0 -> 211 bytes install-dev/img/04-pt70.png | Bin 0 -> 217 bytes install-dev/img/05-gd100.png | Bin 0 -> 302 bytes install-dev/img/05-pt100.png | Bin 0 -> 259 bytes install-dev/img/05-pt70.png | Bin 0 -> 259 bytes install-dev/img/bad.gif | Bin 0 -> 594 bytes install-dev/img/bg-body.png | Bin 0 -> 143 bytes install-dev/img/bg-ctnr.png | Bin 0 -> 306 bytes install-dev/img/bg-tab.png | Bin 0 -> 190 bytes install-dev/img/bg_help.png | Bin 0 -> 908 bytes install-dev/img/boutonpt-disabled.png | Bin 0 -> 719 bytes install-dev/img/boutonpt-on.png | Bin 0 -> 714 bytes install-dev/img/boutonpt-over.png | Bin 0 -> 701 bytes install-dev/img/bt-dsbl.png | Bin 0 -> 474 bytes install-dev/img/bt-hover.png | Bin 0 -> 752 bytes install-dev/img/bt.png | Bin 0 -> 772 bytes install-dev/img/btn-installeur.png | Bin 0 -> 2330 bytes install-dev/img/bullet.png | Bin 0 -> 1265 bytes install-dev/img/ico_help.gif | Bin 0 -> 1246 bytes install-dev/img/logo.png | Bin 0 -> 15664 bytes install-dev/img/ok.gif | Bin 0 -> 610 bytes install-dev/img/ombrage-bas.png | Bin 0 -> 342 bytes install-dev/img/ombrage-droit.png | Bin 0 -> 243 bytes install-dev/img/phone.png | Bin 0 -> 697 bytes install-dev/img/puce.gif | Bin 0 -> 683 bytes install-dev/img/shadow-left.png | Bin 0 -> 254 bytes install-dev/index.php | 1064 ++ install-dev/langs/de.php | 233 + install-dev/langs/es.php | 271 + install-dev/langs/fr.php | 270 + install-dev/langs/it.php | 269 + install-dev/langs/list.xml | 53 + install-dev/langs/us.php | 85 + install-dev/model.php | 81 + install-dev/module_tools.php | 37 + install-dev/php/add_module_to_hook.php | 58 + install-dev/php/add_new_tab.php | 59 + install-dev/php/admin_stores_tab.php | 21 + install-dev/php/alter_cms_block.php | 40 + install-dev/php/blocknewsletter.php | 33 + install-dev/php/cms_block.php | 33 + install-dev/php/confcleaner.php | 48 + install-dev/php/country_to_timezone.php | 39 + install-dev/php/customizations.php | 44 + install-dev/php/database_structure.php | 47 + install-dev/php/deliverynumber.php | 55 + install-dev/php/editorial_update.php | 73 + install-dev/php/generate_ntree.php | 31 + install-dev/php/generate_tax_rules.php | 87 + install-dev/php/gridextjs_deprecated.php | 35 + install-dev/php/invoicenumber.php | 55 + install-dev/php/module_tools.php | 37 + install-dev/php/move_crossselling.php | 14 + install-dev/php/price_converter.php | 48 + install-dev/php/regenerate_level_depth.php | 42 + install-dev/php/reorderpositions.php | 71 + .../php/setallgroupsonhomecategory.php | 40 + install-dev/php/setdiscountcategory.php | 37 + install-dev/php/setpaymentmodule.php | 54 + install-dev/php/setpaymentmodulegroup.php | 50 + install-dev/php/shop_url.php | 35 + install-dev/php/update_for_13version.php | 16 + install-dev/php/update_image_size_in_db.php | 42 + install-dev/php/update_order_details.php | 39 + .../php/update_products_ecotax_v133.php | 36 + install-dev/php/updatecarrierurl.php | 43 + install-dev/php/updatemodulessql.php | 41 + install-dev/php/updateproductcomments.php | 58 + install-dev/php/utf8.php | 135 + install-dev/preactivation.php | 122 + install-dev/sql/db.sql | 1639 ++ install-dev/sql/db_settings_extends.sql | 1078 ++ install-dev/sql/db_settings_lite.sql | 1028 + install-dev/sql/upgrade/0.9.1.2.sql | 30 + install-dev/sql/upgrade/0.9.1.sql | 9 + install-dev/sql/upgrade/0.9.5.1.sql | 75 + install-dev/sql/upgrade/0.9.5.2.sql | 5 + install-dev/sql/upgrade/0.9.6.1.sql | 51 + install-dev/sql/upgrade/0.9.6.2.sql | 7 + install-dev/sql/upgrade/0.9.7.1.sql | 14 + install-dev/sql/upgrade/0.9.7.2.sql | 21 + install-dev/sql/upgrade/0.9.sql | 39 + install-dev/sql/upgrade/1.0.0.1.sql | 129 + install-dev/sql/upgrade/1.0.0.2.sql | 13 + install-dev/sql/upgrade/1.0.0.3.sql | 441 + install-dev/sql/upgrade/1.0.0.4.sql | 88 + install-dev/sql/upgrade/1.0.0.5.sql | 35 + install-dev/sql/upgrade/1.0.0.6.sql | 11 + install-dev/sql/upgrade/1.0.0.7.sql | 21 + install-dev/sql/upgrade/1.0.0.8.sql | 17 + install-dev/sql/upgrade/1.1.0.1.sql | 629 + install-dev/sql/upgrade/1.1.0.2.sql | 3 + install-dev/sql/upgrade/1.1.0.3.sql | 10 + install-dev/sql/upgrade/1.1.0.4.sql | 28 + install-dev/sql/upgrade/1.1.0.5.sql | 20 + install-dev/sql/upgrade/1.2.0.1.sql | 1078 ++ install-dev/sql/upgrade/1.2.0.2.sql | 610 + install-dev/sql/upgrade/1.2.0.3.sql | 33 + install-dev/sql/upgrade/1.2.0.4.sql | 10 + install-dev/sql/upgrade/1.2.0.5.sql | 17 + install-dev/sql/upgrade/1.2.0.6.sql | 14 + install-dev/sql/upgrade/1.2.0.7.sql | 12 + install-dev/sql/upgrade/1.2.0.8.sql | 10 + install-dev/sql/upgrade/1.2.1.0.sql | 16 + install-dev/sql/upgrade/1.2.2.0.sql | 6 + install-dev/sql/upgrade/1.2.3.0.sql | 3 + install-dev/sql/upgrade/1.2.4.0.sql | 1 + install-dev/sql/upgrade/1.2.5.0.sql | 1 + install-dev/sql/upgrade/1.3.0.1.sql | 92 + install-dev/sql/upgrade/1.3.0.10.sql | 5 + install-dev/sql/upgrade/1.3.0.2.sql | 147 + install-dev/sql/upgrade/1.3.0.3.sql | 15 + install-dev/sql/upgrade/1.3.0.4.sql | 83 + install-dev/sql/upgrade/1.3.0.5.sql | 1 + install-dev/sql/upgrade/1.3.0.6.sql | 1 + install-dev/sql/upgrade/1.3.0.7.sql | 3 + install-dev/sql/upgrade/1.3.0.8.sql | 5 + install-dev/sql/upgrade/1.3.0.9.sql | 1 + install-dev/sql/upgrade/1.3.1.1.sql | 1 + install-dev/sql/upgrade/1.3.2.1.sql | 3 + install-dev/sql/upgrade/1.3.2.2.sql | 27 + install-dev/sql/upgrade/1.3.2.3.sql | 1 + install-dev/sql/upgrade/1.3.3.0.sql | 8 + install-dev/sql/upgrade/1.3.4.0.sql | 1 + install-dev/sql/upgrade/1.3.5.0.sql | 1 + install-dev/sql/upgrade/1.3.6.0.sql | 3 + install-dev/sql/upgrade/1.3.7.0.sql | 1 + install-dev/sql/upgrade/1.4.0.1.sql | 2 + install-dev/sql/upgrade/1.4.0.10.sql | 20 + install-dev/sql/upgrade/1.4.0.11.sql | 36 + install-dev/sql/upgrade/1.4.0.12.sql | 9 + install-dev/sql/upgrade/1.4.0.13.sql | 3 + install-dev/sql/upgrade/1.4.0.14.sql | 24 + install-dev/sql/upgrade/1.4.0.15.sql | 41 + install-dev/sql/upgrade/1.4.0.16.sql | 39 + install-dev/sql/upgrade/1.4.0.17.sql | 22 + install-dev/sql/upgrade/1.4.0.2.sql | 689 + install-dev/sql/upgrade/1.4.0.3.sql | 67 + install-dev/sql/upgrade/1.4.0.4.sql | 21 + install-dev/sql/upgrade/1.4.0.5.sql | 72 + install-dev/sql/upgrade/1.4.0.6.sql | 12 + install-dev/sql/upgrade/1.4.0.7.sql | 10 + install-dev/sql/upgrade/1.4.0.8.sql | 21 + install-dev/sql/upgrade/1.4.0.9.sql | 16 + install-dev/sql/upgrade/1.4.1.0.sql | 22 + install-dev/view.css | 590 + install-dev/xml/checkConfig.php | 78 + install-dev/xml/checkDB.php | 29 + install-dev/xml/checkMail.php | 44 + install-dev/xml/checkShopInfos.php | 269 + install-dev/xml/createDB.php | 213 + install-dev/xml/doUpgrade.php | 293 + install-dev/xml/uploadLogo.php | 116 + js/admin-dnd.js | 168 + js/admin-scene-cropping.js | 177 + js/admin.js | 819 + js/adminImport.js | 111 + js/ajax.js | 131 + js/attributesBack.js | 379 + js/checkLangPack.js | 50 + js/cropper/builder.js | 101 + js/cropper/cropper.css | 143 + js/cropper/cropper.js | 572 + js/cropper/dragdrop.js | 915 + js/cropper/index.php | 11 + js/cropper/loader.js | 90 + js/cropper/prototype.js | 2006 ++ js/cropper/scriptaculous.js | 47 + js/date.js | 467 + js/gg-translate.js | 79 + js/hookLiveEdit.js | 218 + js/index.php | 36 + js/jquery/accordion/accordion.css | 695 + js/jquery/accordion/accordion.ui.js | 402 + js/jquery/ajaxfileupload.js | 53 + js/jquery/datepicker/000000.png | Bin 0 -> 178 bytes js/jquery/datepicker/666666.png | Bin 0 -> 395 bytes js/jquery/datepicker/b81900.png | Bin 0 -> 403 bytes js/jquery/datepicker/datepicker.css | 875 + js/jquery/datepicker/eeeeee.png | Bin 0 -> 201 bytes js/jquery/datepicker/f6a828.png | Bin 0 -> 3762 bytes js/jquery/datepicker/f6f6f6.png | Bin 0 -> 895 bytes js/jquery/datepicker/fdf5ce.png | Bin 0 -> 235 bytes js/jquery/datepicker/ffe45c.png | Bin 0 -> 249 bytes js/jquery/datepicker/ffffff.png | Bin 0 -> 207 bytes js/jquery/datepicker/icons222222.png | Bin 0 -> 10566 bytes js/jquery/datepicker/icons228ef1.png | Bin 0 -> 10653 bytes js/jquery/datepicker/iconsef8c08.png | Bin 0 -> 10636 bytes js/jquery/datepicker/iconsffd27a.png | Bin 0 -> 10662 bytes js/jquery/datepicker/iconsffffff.png | Bin 0 -> 10356 bytes js/jquery/datepicker/index.php | 11 + .../jquery-ui-personalized-1.6rc4.packed.js | 1 + js/jquery/datepicker/ui/i18n/index.php | 11 + .../datepicker/ui/i18n/jquery.ui.i18n.all.js | 909 + .../datepicker/ui/i18n/ui.datepicker-ar.js | 26 + .../datepicker/ui/i18n/ui.datepicker-bg.js | 25 + .../datepicker/ui/i18n/ui.datepicker-ca.js | 25 + .../datepicker/ui/i18n/ui.datepicker-cs.js | 25 + .../datepicker/ui/i18n/ui.datepicker-da.js | 25 + .../datepicker/ui/i18n/ui.datepicker-de.js | 25 + .../datepicker/ui/i18n/ui.datepicker-eo.js | 25 + .../datepicker/ui/i18n/ui.datepicker-es.js | 25 + .../datepicker/ui/i18n/ui.datepicker-fa.js | 25 + .../datepicker/ui/i18n/ui.datepicker-fi.js | 25 + .../datepicker/ui/i18n/ui.datepicker-fr.js | 25 + .../datepicker/ui/i18n/ui.datepicker-he.js | 25 + .../datepicker/ui/i18n/ui.datepicker-hr.js | 25 + .../datepicker/ui/i18n/ui.datepicker-hu.js | 25 + .../datepicker/ui/i18n/ui.datepicker-hy.js | 25 + .../datepicker/ui/i18n/ui.datepicker-id.js | 25 + .../datepicker/ui/i18n/ui.datepicker-is.js | 25 + .../datepicker/ui/i18n/ui.datepicker-it.js | 25 + .../datepicker/ui/i18n/ui.datepicker-ja.js | 26 + .../datepicker/ui/i18n/ui.datepicker-ko.js | 25 + .../datepicker/ui/i18n/ui.datepicker-lt.js | 25 + .../datepicker/ui/i18n/ui.datepicker-lv.js | 25 + .../datepicker/ui/i18n/ui.datepicker-nl.js | 25 + .../datepicker/ui/i18n/ui.datepicker-no.js | 25 + .../datepicker/ui/i18n/ui.datepicker-pl.js | 25 + .../datepicker/ui/i18n/ui.datepicker-pt.js | 25 + .../datepicker/ui/i18n/ui.datepicker-ro.js | 25 + .../datepicker/ui/i18n/ui.datepicker-ru.js | 25 + .../datepicker/ui/i18n/ui.datepicker-sk.js | 25 + .../datepicker/ui/i18n/ui.datepicker-sl.js | 26 + .../datepicker/ui/i18n/ui.datepicker-sq.js | 25 + .../datepicker/ui/i18n/ui.datepicker-sv.js | 25 + .../datepicker/ui/i18n/ui.datepicker-th.js | 25 + .../datepicker/ui/i18n/ui.datepicker-tr.js | 25 + .../datepicker/ui/i18n/ui.datepicker-uk.js | 25 + .../datepicker/ui/i18n/ui.datepicker-zh.js | 25 + js/jquery/datepicker/ui/index.php | 11 + js/jquery/excanvas.min.js | 1 + js/jquery/fancybox/blank.gif | Bin 0 -> 43 bytes js/jquery/fancybox/fancy_close.png | Bin 0 -> 1517 bytes js/jquery/fancybox/fancy_loading.png | Bin 0 -> 10195 bytes js/jquery/fancybox/fancy_nav_left.png | Bin 0 -> 1446 bytes js/jquery/fancybox/fancy_nav_right.png | Bin 0 -> 1454 bytes js/jquery/fancybox/fancy_shadow_e.png | Bin 0 -> 107 bytes js/jquery/fancybox/fancy_shadow_n.png | Bin 0 -> 106 bytes js/jquery/fancybox/fancy_shadow_ne.png | Bin 0 -> 347 bytes js/jquery/fancybox/fancy_shadow_nw.png | Bin 0 -> 324 bytes js/jquery/fancybox/fancy_shadow_s.png | Bin 0 -> 111 bytes js/jquery/fancybox/fancy_shadow_se.png | Bin 0 -> 352 bytes js/jquery/fancybox/fancy_shadow_sw.png | Bin 0 -> 340 bytes js/jquery/fancybox/fancy_shadow_w.png | Bin 0 -> 103 bytes js/jquery/fancybox/fancy_title_left.png | Bin 0 -> 503 bytes js/jquery/fancybox/fancy_title_main.png | Bin 0 -> 96 bytes js/jquery/fancybox/fancy_title_over.png | Bin 0 -> 70 bytes js/jquery/fancybox/fancy_title_right.png | Bin 0 -> 506 bytes js/jquery/fancybox/fancybox-x.png | Bin 0 -> 203 bytes js/jquery/fancybox/fancybox-y.png | Bin 0 -> 176 bytes js/jquery/fancybox/fancybox.png | Bin 0 -> 15287 bytes js/jquery/ifxtransfer.js | 13 + js/jquery/imgareaselect/border-anim-h.gif | Bin 0 -> 219 bytes js/jquery/imgareaselect/border-anim-v.gif | Bin 0 -> 219 bytes js/jquery/imgareaselect/border-h.gif | Bin 0 -> 72 bytes js/jquery/imgareaselect/border-v.gif | Bin 0 -> 72 bytes .../imgareaselect/imgareaselect-animated.css | 41 + .../imgareaselect/imgareaselect-default.css | 41 + .../imgareaselect-deprecated.css | 36 + js/jquery/imgareaselect/index.php | 11 + .../jquery.imgareaselect.pack.js | 1 + js/jquery/index.php | 11 + js/jquery/iutil.prestashop-modifications.js | 26 + js/jquery/jqminmax-compressed.js | 3 + js/jquery/jquery-1.4.4.min.js | 167 + js/jquery/jquery-colorpicker.js | 573 + js/jquery/jquery-typewatch.pack.js | 89 + js/jquery/jquery-ui-1.8.10.custom.min.js | 782 + js/jquery/jquery.autocomplete.js | 758 + js/jquery/jquery.cluetip.js | 42 + js/jquery/jquery.dimensions.js | 12 + js/jquery/jquery.easing.1.3.js | 146 + js/jquery/jquery.fancybox-1.3.4.js | 1156 ++ js/jquery/jquery.flot.min.js | 1 + js/jquery/jquery.hoverIntent.minified.js | 9 + js/jquery/jquery.idTabs.modified.js | 34 + js/jquery/jquery.jgrowl-1.2.1.min.js | 4 + js/jquery/jquery.jqzoom.js | 80 + js/jquery/jquery.pngFix.pack.js | 11 + js/jquery/jquery.scrollTo-1.4.2-min.js | 11 + js/jquery/jquery.serialScroll-1.2.2-min.js | 10 + js/jquery/jquery.tablednd_0_5.js | 308 + js/jquery/thickbox-modified.js | 40 + js/pluginDetect.js | 1 + js/price.js | 224 + js/sendMailTest.js | 80 + js/tabpane.js | 287 + js/tiny_mce/langs/en.js | 1 + js/tiny_mce/langs/es.js | 1 + js/tiny_mce/langs/et.js | 1 + js/tiny_mce/langs/fi.js | 1 + js/tiny_mce/langs/fr.js | 1 + js/tiny_mce/langs/gl.js | 1 + js/tiny_mce/langs/he.js | 1 + js/tiny_mce/langs/hu.js | 1 + js/tiny_mce/langs/id.js | 1 + js/tiny_mce/langs/it.js | 1 + js/tiny_mce/langs/lt.js | 1 + js/tiny_mce/langs/lv.js | 1 + js/tiny_mce/langs/nl.js | 1 + js/tiny_mce/langs/no.js | 1 + js/tiny_mce/langs/pl.js | 1 + js/tiny_mce/langs/pt.js | 1 + js/tiny_mce/langs/ro.js | 1 + js/tiny_mce/langs/ru.js | 1 + js/tiny_mce/license.txt | 504 + js/tiny_mce/plugins/advimage/css/advimage.css | 13 + js/tiny_mce/plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 50 + js/tiny_mce/plugins/advimage/image.htm | 235 + js/tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes js/tiny_mce/plugins/advimage/js/image.js | 445 + js/tiny_mce/plugins/advimage/langs/ar_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/az_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/be_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/bg_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/bn_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/br_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/bs_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ca_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ch_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/cn_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/cs_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/cy_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/da_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/de_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/dv_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/el_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/en_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/es_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/et_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/eu_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/fa_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/fi_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/fr_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/gl_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/gu_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/he_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/hi_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/hr_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/hu_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/hy_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ia_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/id_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/is_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/it_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ja_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ka_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/kl_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/km_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ko_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/lb_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/lt_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/lv_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/mk_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ml_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/mn_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ms_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/my_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/nb_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/nl_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/nn_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/no_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/pl_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ps_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/pt_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ro_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ru_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/sc_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/se_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/si_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/sk_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/sl_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/sq_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/sr_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/sv_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ta_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/te_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/th_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/tn_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/tr_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/tt_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/tw_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/uk_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/ur_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/vi_dlg.js | 1 + .../plugins/advimage/langs/zh-cn_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/zh_dlg.js | 1 + js/tiny_mce/plugins/advimage/langs/zu_dlg.js | 1 + js/tiny_mce/plugins/advlink/css/advlink.css | 8 + js/tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 61 + js/tiny_mce/plugins/advlink/js/advlink.js | 523 + js/tiny_mce/plugins/advlink/langs/ar_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/az_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/be_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/bg_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/bn_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/br_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/bs_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ca_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ch_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/cn_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/cs_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/cy_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/da_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/de_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/dv_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/el_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/en_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/es_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/et_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/eu_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/fa_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/fi_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/fr_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/gl_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/gu_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/he_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/hi_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/hr_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/hu_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/hy_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ia_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/id_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ii_dlg.js | 52 + js/tiny_mce/plugins/advlink/langs/is_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/it_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ja_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ka_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/kl_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/km_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ko_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/lb_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/lt_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/lv_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/mk_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ml_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/mn_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ms_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/my_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/nb_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/nl_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/nn_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/no_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/pl_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ps_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/pt_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ro_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ru_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/sc_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/se_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/si_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/sk_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/sl_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/sq_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/sr_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/sv_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ta_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/te_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/th_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/tn_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/tr_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/tt_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/tw_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/uk_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/ur_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/vi_dlg.js | 1 + .../plugins/advlink/langs/zh-cn_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/zh_dlg.js | 1 + js/tiny_mce/plugins/advlink/langs/zu_dlg.js | 1 + js/tiny_mce/plugins/advlink/link.htm | 338 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 156 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 159 + js/tiny_mce/plugins/fullscreen/fullscreen.htm | 109 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 696 + .../skins/clearlooks2/img/alert.gif | Bin 0 -> 818 bytes .../skins/clearlooks2/img/button.gif | Bin 0 -> 280 bytes .../skins/clearlooks2/img/buttons.gif | Bin 0 -> 1195 bytes .../skins/clearlooks2/img/confirm.gif | Bin 0 -> 915 bytes .../skins/clearlooks2/img/corners.gif | Bin 0 -> 911 bytes .../skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes .../skins/clearlooks2/img/vertical.gif | Bin 0 -> 92 bytes .../inlinepopups/skins/clearlooks2/window.css | 90 + js/tiny_mce/plugins/inlinepopups/template.htm | 387 + js/tiny_mce/plugins/media/css/media.css | 17 + js/tiny_mce/plugins/media/editor_plugin.js | 1 + .../plugins/media/editor_plugin_src.js | 770 + js/tiny_mce/plugins/media/js/embed.js | 73 + js/tiny_mce/plugins/media/js/media.js | 354 + js/tiny_mce/plugins/media/langs/ar_dlg.js | 1 + js/tiny_mce/plugins/media/langs/az_dlg.js | 1 + js/tiny_mce/plugins/media/langs/be_dlg.js | 1 + js/tiny_mce/plugins/media/langs/bg_dlg.js | 1 + js/tiny_mce/plugins/media/langs/bn_dlg.js | 1 + js/tiny_mce/plugins/media/langs/br_dlg.js | 1 + js/tiny_mce/plugins/media/langs/bs_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ca_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ch_dlg.js | 1 + js/tiny_mce/plugins/media/langs/cn_dlg.js | 1 + js/tiny_mce/plugins/media/langs/cs_dlg.js | 1 + js/tiny_mce/plugins/media/langs/cy_dlg.js | 1 + js/tiny_mce/plugins/media/langs/da_dlg.js | 1 + js/tiny_mce/plugins/media/langs/de_dlg.js | 1 + js/tiny_mce/plugins/media/langs/dv_dlg.js | 1 + js/tiny_mce/plugins/media/langs/el_dlg.js | 1 + js/tiny_mce/plugins/media/langs/en_dlg.js | 1 + js/tiny_mce/plugins/media/langs/es_dlg.js | 1 + js/tiny_mce/plugins/media/langs/et_dlg.js | 1 + js/tiny_mce/plugins/media/langs/eu_dlg.js | 1 + js/tiny_mce/plugins/media/langs/fa_dlg.js | 1 + js/tiny_mce/plugins/media/langs/fi_dlg.js | 1 + js/tiny_mce/plugins/media/langs/fr_dlg.js | 1 + js/tiny_mce/plugins/media/langs/gl_dlg.js | 1 + js/tiny_mce/plugins/media/langs/gu_dlg.js | 1 + js/tiny_mce/plugins/media/langs/he_dlg.js | 1 + js/tiny_mce/plugins/media/langs/hi_dlg.js | 1 + js/tiny_mce/plugins/media/langs/hr_dlg.js | 1 + js/tiny_mce/plugins/media/langs/hu_dlg.js | 1 + js/tiny_mce/plugins/media/langs/hy_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ia_dlg.js | 1 + js/tiny_mce/plugins/media/langs/id_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ii_dlg.js | 103 + js/tiny_mce/plugins/media/langs/is_dlg.js | 1 + js/tiny_mce/plugins/media/langs/it_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ja_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ka_dlg.js | 1 + js/tiny_mce/plugins/media/langs/kl_dlg.js | 1 + js/tiny_mce/plugins/media/langs/km_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ko_dlg.js | 1 + js/tiny_mce/plugins/media/langs/lb_dlg.js | 1 + js/tiny_mce/plugins/media/langs/lt_dlg.js | 1 + js/tiny_mce/plugins/media/langs/lv_dlg.js | 1 + js/tiny_mce/plugins/media/langs/mk_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ml_dlg.js | 1 + js/tiny_mce/plugins/media/langs/mn_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ms_dlg.js | 1 + js/tiny_mce/plugins/media/langs/my_dlg.js | 1 + js/tiny_mce/plugins/media/langs/nb_dlg.js | 1 + js/tiny_mce/plugins/media/langs/nl_dlg.js | 1 + js/tiny_mce/plugins/media/langs/nn_dlg.js | 1 + js/tiny_mce/plugins/media/langs/no_dlg.js | 1 + js/tiny_mce/plugins/media/langs/pl_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ps_dlg.js | 1 + js/tiny_mce/plugins/media/langs/pt_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ro_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ru_dlg.js | 1 + js/tiny_mce/plugins/media/langs/sc_dlg.js | 1 + js/tiny_mce/plugins/media/langs/se_dlg.js | 1 + js/tiny_mce/plugins/media/langs/si_dlg.js | 1 + js/tiny_mce/plugins/media/langs/sk_dlg.js | 1 + js/tiny_mce/plugins/media/langs/sl_dlg.js | 1 + js/tiny_mce/plugins/media/langs/sq_dlg.js | 1 + js/tiny_mce/plugins/media/langs/sr_dlg.js | 1 + js/tiny_mce/plugins/media/langs/sv_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ta_dlg.js | 1 + js/tiny_mce/plugins/media/langs/te_dlg.js | 1 + js/tiny_mce/plugins/media/langs/th_dlg.js | 1 + js/tiny_mce/plugins/media/langs/tn_dlg.js | 1 + js/tiny_mce/plugins/media/langs/tr_dlg.js | 1 + js/tiny_mce/plugins/media/langs/tt_dlg.js | 1 + js/tiny_mce/plugins/media/langs/tw_dlg.js | 1 + js/tiny_mce/plugins/media/langs/uk_dlg.js | 1 + js/tiny_mce/plugins/media/langs/ur_dlg.js | 1 + js/tiny_mce/plugins/media/langs/vi_dlg.js | 1 + js/tiny_mce/plugins/media/langs/zh-cn_dlg.js | 1 + js/tiny_mce/plugins/media/langs/zh_dlg.js | 1 + js/tiny_mce/plugins/media/langs/zu_dlg.js | 1 + js/tiny_mce/plugins/media/media.htm | 812 + js/tiny_mce/plugins/media/moxieplayer.swf | Bin 0 -> 33931 bytes .../plugins/pagebreak/editor_plugin.js | 1 + .../plugins/pagebreak/editor_plugin_src.js | 74 + js/tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 930 + js/tiny_mce/plugins/paste/js/pastetext.js | 36 + js/tiny_mce/plugins/paste/js/pasteword.js | 51 + js/tiny_mce/plugins/paste/langs/ar_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/az_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/be_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/bg_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/bn_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/br_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/bs_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ca_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ch_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/cn_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/cs_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/cy_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/da_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/de_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/dv_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/el_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/en_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/es_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/et_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/eu_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/fa_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/fi_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/fr_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/gl_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/gu_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/he_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/hi_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/hr_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/hu_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/hy_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ia_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/id_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ii_dlg.js | 5 + js/tiny_mce/plugins/paste/langs/is_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/it_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ja_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ka_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/kl_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/km_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ko_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/lb_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/lt_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/lv_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/mk_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ml_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/mn_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ms_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/my_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/nb_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/nl_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/nn_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/no_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/pl_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ps_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/pt_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ro_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ru_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/sc_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/se_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/si_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/sk_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/sl_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/sq_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/sr_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/sv_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ta_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/te_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/th_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/tn_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/tr_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/tt_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/tw_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/uk_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/ur_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/vi_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/zh_dlg.js | 1 + js/tiny_mce/plugins/paste/langs/zu_dlg.js | 1 + js/tiny_mce/plugins/paste/pastetext.htm | 27 + js/tiny_mce/plugins/paste/pasteword.htm | 21 + js/tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 53 + js/tiny_mce/plugins/preview/example.html | 28 + js/tiny_mce/plugins/preview/jscripts/embed.js | 73 + js/tiny_mce/plugins/preview/preview.html | 17 + .../plugins/searchreplace/langs/ar_dlg.js | 16 + .../plugins/searchreplace/langs/az_dlg.js | 16 + .../plugins/searchreplace/langs/be_dlg.js | 16 + .../plugins/searchreplace/langs/bg_dlg.js | 16 + .../plugins/searchreplace/langs/bn_dlg.js | 16 + .../plugins/searchreplace/langs/br_dlg.js | 16 + .../plugins/searchreplace/langs/bs_dlg.js | 16 + .../plugins/searchreplace/langs/ca_dlg.js | 16 + .../plugins/searchreplace/langs/ch_dlg.js | 16 + .../plugins/searchreplace/langs/cs_dlg.js | 16 + .../plugins/searchreplace/langs/cy_dlg.js | 16 + .../plugins/searchreplace/langs/da_dlg.js | 16 + .../plugins/searchreplace/langs/de_dlg.js | 16 + .../plugins/searchreplace/langs/dv_dlg.js | 16 + .../plugins/searchreplace/langs/el_dlg.js | 16 + .../plugins/searchreplace/langs/en_dlg.js | 16 + .../plugins/searchreplace/langs/es_dlg.js | 16 + .../plugins/searchreplace/langs/et_dlg.js | 16 + .../plugins/searchreplace/langs/eu_dlg.js | 16 + .../plugins/searchreplace/langs/fa_dlg.js | 16 + .../plugins/searchreplace/langs/fi_dlg.js | 16 + .../plugins/searchreplace/langs/fr_dlg.js | 16 + .../plugins/searchreplace/langs/gl_dlg.js | 16 + .../plugins/searchreplace/langs/gu_dlg.js | 16 + .../plugins/searchreplace/langs/he_dlg.js | 16 + .../plugins/searchreplace/langs/hi_dlg.js | 16 + .../plugins/searchreplace/langs/hr_dlg.js | 16 + .../plugins/searchreplace/langs/hu_dlg.js | 16 + .../plugins/searchreplace/langs/hy_dlg.js | 16 + .../plugins/searchreplace/langs/ia_dlg.js | 16 + .../plugins/searchreplace/langs/id_dlg.js | 16 + .../plugins/searchreplace/langs/ii_dlg.js | 16 + .../plugins/searchreplace/langs/is_dlg.js | 16 + .../plugins/searchreplace/langs/it_dlg.js | 16 + .../plugins/searchreplace/langs/ja_dlg.js | 16 + .../plugins/searchreplace/langs/ka_dlg.js | 16 + .../plugins/searchreplace/langs/kl_dlg.js | 16 + .../plugins/searchreplace/langs/ko_dlg.js | 16 + .../plugins/searchreplace/langs/lb_dlg.js | 16 + .../plugins/searchreplace/langs/lt_dlg.js | 16 + .../plugins/searchreplace/langs/lv_dlg.js | 16 + .../plugins/searchreplace/langs/mk_dlg.js | 16 + .../plugins/searchreplace/langs/ml_dlg.js | 16 + .../plugins/searchreplace/langs/mn_dlg.js | 16 + .../plugins/searchreplace/langs/ms_dlg.js | 16 + .../plugins/searchreplace/langs/nb_dlg.js | 16 + .../plugins/searchreplace/langs/nl_dlg.js | 16 + .../plugins/searchreplace/langs/nn_dlg.js | 16 + .../plugins/searchreplace/langs/no_dlg.js | 16 + .../plugins/searchreplace/langs/pl_dlg.js | 16 + .../plugins/searchreplace/langs/ps_dlg.js | 16 + .../plugins/searchreplace/langs/pt_dlg.js | 16 + .../plugins/searchreplace/langs/ro_dlg.js | 16 + .../plugins/searchreplace/langs/ru_dlg.js | 16 + .../plugins/searchreplace/langs/sc_dlg.js | 16 + .../plugins/searchreplace/langs/se_dlg.js | 16 + .../plugins/searchreplace/langs/si_dlg.js | 16 + .../plugins/searchreplace/langs/sk_dlg.js | 16 + .../plugins/searchreplace/langs/sl_dlg.js | 16 + .../plugins/searchreplace/langs/sq_dlg.js | 16 + .../plugins/searchreplace/langs/sr_dlg.js | 16 + .../plugins/searchreplace/langs/sv_dlg.js | 16 + .../plugins/searchreplace/langs/ta_dlg.js | 16 + .../plugins/searchreplace/langs/te_dlg.js | 16 + .../plugins/searchreplace/langs/th_dlg.js | 16 + .../plugins/searchreplace/langs/tr_dlg.js | 16 + .../plugins/searchreplace/langs/tt_dlg.js | 16 + .../plugins/searchreplace/langs/tw_dlg.js | 16 + .../plugins/searchreplace/langs/uk_dlg.js | 16 + .../plugins/searchreplace/langs/ur_dlg.js | 16 + .../plugins/searchreplace/langs/vi_dlg.js | 16 + .../plugins/searchreplace/langs/zh_dlg.js | 16 + .../plugins/searchreplace/langs/zu_dlg.js | 16 + js/tiny_mce/plugins/style/css/props.css | 13 + js/tiny_mce/plugins/style/editor_plugin.js | 1 + .../plugins/style/editor_plugin_src.js | 55 + js/tiny_mce/plugins/style/js/props.js | 635 + js/tiny_mce/plugins/style/langs/ar_dlg.js | 1 + js/tiny_mce/plugins/style/langs/az_dlg.js | 1 + js/tiny_mce/plugins/style/langs/be_dlg.js | 1 + js/tiny_mce/plugins/style/langs/bg_dlg.js | 1 + js/tiny_mce/plugins/style/langs/bn_dlg.js | 1 + js/tiny_mce/plugins/style/langs/br_dlg.js | 1 + js/tiny_mce/plugins/style/langs/bs_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ca_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ch_dlg.js | 1 + js/tiny_mce/plugins/style/langs/cn_dlg.js | 1 + js/tiny_mce/plugins/style/langs/cs_dlg.js | 1 + js/tiny_mce/plugins/style/langs/cy_dlg.js | 1 + js/tiny_mce/plugins/style/langs/da_dlg.js | 1 + js/tiny_mce/plugins/style/langs/de_dlg.js | 1 + js/tiny_mce/plugins/style/langs/dv_dlg.js | 1 + js/tiny_mce/plugins/style/langs/el_dlg.js | 1 + js/tiny_mce/plugins/style/langs/en_dlg.js | 1 + js/tiny_mce/plugins/style/langs/es_dlg.js | 1 + js/tiny_mce/plugins/style/langs/et_dlg.js | 1 + js/tiny_mce/plugins/style/langs/eu_dlg.js | 1 + js/tiny_mce/plugins/style/langs/fa_dlg.js | 1 + js/tiny_mce/plugins/style/langs/fi_dlg.js | 1 + js/tiny_mce/plugins/style/langs/fr_dlg.js | 1 + js/tiny_mce/plugins/style/langs/gl_dlg.js | 1 + js/tiny_mce/plugins/style/langs/gu_dlg.js | 1 + js/tiny_mce/plugins/style/langs/he_dlg.js | 1 + js/tiny_mce/plugins/style/langs/hi_dlg.js | 1 + js/tiny_mce/plugins/style/langs/hr_dlg.js | 1 + js/tiny_mce/plugins/style/langs/hu_dlg.js | 1 + js/tiny_mce/plugins/style/langs/hy_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ia_dlg.js | 1 + js/tiny_mce/plugins/style/langs/id_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ii_dlg.js | 63 + js/tiny_mce/plugins/style/langs/is_dlg.js | 1 + js/tiny_mce/plugins/style/langs/it_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ja_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ka_dlg.js | 1 + js/tiny_mce/plugins/style/langs/kl_dlg.js | 1 + js/tiny_mce/plugins/style/langs/km_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ko_dlg.js | 1 + js/tiny_mce/plugins/style/langs/lb_dlg.js | 1 + js/tiny_mce/plugins/style/langs/lt_dlg.js | 1 + js/tiny_mce/plugins/style/langs/lv_dlg.js | 1 + js/tiny_mce/plugins/style/langs/mk_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ml_dlg.js | 1 + js/tiny_mce/plugins/style/langs/mn_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ms_dlg.js | 1 + js/tiny_mce/plugins/style/langs/my_dlg.js | 1 + js/tiny_mce/plugins/style/langs/nb_dlg.js | 1 + js/tiny_mce/plugins/style/langs/nl_dlg.js | 1 + js/tiny_mce/plugins/style/langs/nn_dlg.js | 1 + js/tiny_mce/plugins/style/langs/no_dlg.js | 1 + js/tiny_mce/plugins/style/langs/pl_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ps_dlg.js | 1 + js/tiny_mce/plugins/style/langs/pt_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ro_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ru_dlg.js | 1 + js/tiny_mce/plugins/style/langs/sc_dlg.js | 1 + js/tiny_mce/plugins/style/langs/se_dlg.js | 1 + js/tiny_mce/plugins/style/langs/si_dlg.js | 1 + js/tiny_mce/plugins/style/langs/sk_dlg.js | 1 + js/tiny_mce/plugins/style/langs/sl_dlg.js | 1 + js/tiny_mce/plugins/style/langs/sq_dlg.js | 1 + js/tiny_mce/plugins/style/langs/sr_dlg.js | 1 + js/tiny_mce/plugins/style/langs/sv_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ta_dlg.js | 1 + js/tiny_mce/plugins/style/langs/te_dlg.js | 1 + js/tiny_mce/plugins/style/langs/th_dlg.js | 1 + js/tiny_mce/plugins/style/langs/tn_dlg.js | 1 + js/tiny_mce/plugins/style/langs/tr_dlg.js | 1 + js/tiny_mce/plugins/style/langs/tt_dlg.js | 1 + js/tiny_mce/plugins/style/langs/tw_dlg.js | 1 + js/tiny_mce/plugins/style/langs/uk_dlg.js | 1 + js/tiny_mce/plugins/style/langs/ur_dlg.js | 1 + js/tiny_mce/plugins/style/langs/vi_dlg.js | 1 + js/tiny_mce/plugins/style/langs/zh-cn_dlg.js | 1 + js/tiny_mce/plugins/style/langs/zh_dlg.js | 1 + js/tiny_mce/plugins/style/langs/zu_dlg.js | 1 + js/tiny_mce/plugins/style/props.htm | 838 + js/tiny_mce/plugins/table/cell.htm | 178 + js/tiny_mce/plugins/table/css/cell.css | 17 + js/tiny_mce/plugins/table/css/row.css | 25 + js/tiny_mce/plugins/table/css/table.css | 13 + js/tiny_mce/plugins/table/editor_plugin.js | 1 + .../plugins/table/editor_plugin_src.js | 1198 ++ js/tiny_mce/plugins/table/js/cell.js | 284 + js/tiny_mce/plugins/table/js/merge_cells.js | 27 + js/tiny_mce/plugins/table/js/row.js | 232 + js/tiny_mce/plugins/table/js/table.js | 450 + js/tiny_mce/plugins/table/langs/ar_dlg.js | 1 + js/tiny_mce/plugins/table/langs/az_dlg.js | 1 + js/tiny_mce/plugins/table/langs/be_dlg.js | 1 + js/tiny_mce/plugins/table/langs/bg_dlg.js | 1 + js/tiny_mce/plugins/table/langs/bn_dlg.js | 1 + js/tiny_mce/plugins/table/langs/br_dlg.js | 1 + js/tiny_mce/plugins/table/langs/bs_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ca_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ch_dlg.js | 1 + js/tiny_mce/plugins/table/langs/cn_dlg.js | 1 + js/tiny_mce/plugins/table/langs/cs_dlg.js | 1 + js/tiny_mce/plugins/table/langs/cy_dlg.js | 1 + js/tiny_mce/plugins/table/langs/da_dlg.js | 1 + js/tiny_mce/plugins/table/langs/de_dlg.js | 1 + js/tiny_mce/plugins/table/langs/dv_dlg.js | 1 + js/tiny_mce/plugins/table/langs/el_dlg.js | 1 + js/tiny_mce/plugins/table/langs/en_dlg.js | 1 + js/tiny_mce/plugins/table/langs/es_dlg.js | 1 + js/tiny_mce/plugins/table/langs/et_dlg.js | 1 + js/tiny_mce/plugins/table/langs/eu_dlg.js | 1 + js/tiny_mce/plugins/table/langs/fa_dlg.js | 1 + js/tiny_mce/plugins/table/langs/fi_dlg.js | 1 + js/tiny_mce/plugins/table/langs/fr_dlg.js | 1 + js/tiny_mce/plugins/table/langs/gl_dlg.js | 1 + js/tiny_mce/plugins/table/langs/gu_dlg.js | 1 + js/tiny_mce/plugins/table/langs/he_dlg.js | 1 + js/tiny_mce/plugins/table/langs/hi_dlg.js | 1 + js/tiny_mce/plugins/table/langs/hr_dlg.js | 1 + js/tiny_mce/plugins/table/langs/hu_dlg.js | 1 + js/tiny_mce/plugins/table/langs/hy_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ia_dlg.js | 1 + js/tiny_mce/plugins/table/langs/id_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ii_dlg.js | 74 + js/tiny_mce/plugins/table/langs/is_dlg.js | 1 + js/tiny_mce/plugins/table/langs/it_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ja_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ka_dlg.js | 1 + js/tiny_mce/plugins/table/langs/kl_dlg.js | 1 + js/tiny_mce/plugins/table/langs/km_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ko_dlg.js | 1 + js/tiny_mce/plugins/table/langs/lb_dlg.js | 1 + js/tiny_mce/plugins/table/langs/lt_dlg.js | 1 + js/tiny_mce/plugins/table/langs/lv_dlg.js | 1 + js/tiny_mce/plugins/table/langs/mk_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ml_dlg.js | 1 + js/tiny_mce/plugins/table/langs/mn_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ms_dlg.js | 1 + js/tiny_mce/plugins/table/langs/my_dlg.js | 1 + js/tiny_mce/plugins/table/langs/nb_dlg.js | 1 + js/tiny_mce/plugins/table/langs/nl_dlg.js | 1 + js/tiny_mce/plugins/table/langs/nn_dlg.js | 1 + js/tiny_mce/plugins/table/langs/no_dlg.js | 1 + js/tiny_mce/plugins/table/langs/pl_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ps_dlg.js | 1 + js/tiny_mce/plugins/table/langs/pt_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ro_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ru_dlg.js | 1 + js/tiny_mce/plugins/table/langs/sc_dlg.js | 1 + js/tiny_mce/plugins/table/langs/se_dlg.js | 1 + js/tiny_mce/plugins/table/langs/si_dlg.js | 1 + js/tiny_mce/plugins/table/langs/sk_dlg.js | 1 + js/tiny_mce/plugins/table/langs/sl_dlg.js | 1 + js/tiny_mce/plugins/table/langs/sq_dlg.js | 1 + js/tiny_mce/plugins/table/langs/sr_dlg.js | 1 + js/tiny_mce/plugins/table/langs/sv_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ta_dlg.js | 1 + js/tiny_mce/plugins/table/langs/te_dlg.js | 1 + js/tiny_mce/plugins/table/langs/th_dlg.js | 1 + js/tiny_mce/plugins/table/langs/tn_dlg.js | 1 + js/tiny_mce/plugins/table/langs/tr_dlg.js | 1 + js/tiny_mce/plugins/table/langs/tt_dlg.js | 1 + js/tiny_mce/plugins/table/langs/tw_dlg.js | 1 + js/tiny_mce/plugins/table/langs/uk_dlg.js | 1 + js/tiny_mce/plugins/table/langs/ur_dlg.js | 1 + js/tiny_mce/plugins/table/langs/vi_dlg.js | 1 + js/tiny_mce/plugins/table/langs/zh-cn_dlg.js | 1 + js/tiny_mce/plugins/table/langs/zh_dlg.js | 1 + js/tiny_mce/plugins/table/langs/zu_dlg.js | 1 + js/tiny_mce/plugins/table/merge_cells.htm | 32 + js/tiny_mce/plugins/table/row.htm | 157 + js/tiny_mce/plugins/table/table.htm | 188 + js/tiny_mce/plugins/xhtmlxtras/abbr.htm | 142 + js/tiny_mce/plugins/xhtmlxtras/acronym.htm | 142 + js/tiny_mce/plugins/xhtmlxtras/attributes.htm | 149 + js/tiny_mce/plugins/xhtmlxtras/cite.htm | 142 + .../plugins/xhtmlxtras/css/attributes.css | 11 + js/tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 + js/tiny_mce/plugins/xhtmlxtras/del.htm | 162 + .../plugins/xhtmlxtras/editor_plugin.js | 1 + .../plugins/xhtmlxtras/editor_plugin_src.js | 132 + js/tiny_mce/plugins/xhtmlxtras/ins.htm | 162 + js/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 + js/tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 + .../plugins/xhtmlxtras/js/attributes.js | 125 + js/tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 + js/tiny_mce/plugins/xhtmlxtras/js/del.js | 53 + .../plugins/xhtmlxtras/js/element_common.js | 229 + js/tiny_mce/plugins/xhtmlxtras/js/ins.js | 53 + .../plugins/xhtmlxtras/langs/ar_dlg.js | 1 + .../plugins/xhtmlxtras/langs/az_dlg.js | 1 + .../plugins/xhtmlxtras/langs/be_dlg.js | 1 + .../plugins/xhtmlxtras/langs/bg_dlg.js | 1 + .../plugins/xhtmlxtras/langs/bn_dlg.js | 1 + .../plugins/xhtmlxtras/langs/br_dlg.js | 1 + .../plugins/xhtmlxtras/langs/bs_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ca_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ch_dlg.js | 1 + .../plugins/xhtmlxtras/langs/cn_dlg.js | 1 + .../plugins/xhtmlxtras/langs/cs_dlg.js | 1 + .../plugins/xhtmlxtras/langs/cy_dlg.js | 1 + .../plugins/xhtmlxtras/langs/da_dlg.js | 1 + .../plugins/xhtmlxtras/langs/de_dlg.js | 1 + .../plugins/xhtmlxtras/langs/dv_dlg.js | 1 + .../plugins/xhtmlxtras/langs/el_dlg.js | 1 + .../plugins/xhtmlxtras/langs/en_dlg.js | 1 + .../plugins/xhtmlxtras/langs/es_dlg.js | 1 + .../plugins/xhtmlxtras/langs/et_dlg.js | 1 + .../plugins/xhtmlxtras/langs/eu_dlg.js | 1 + .../plugins/xhtmlxtras/langs/fa_dlg.js | 1 + .../plugins/xhtmlxtras/langs/fi_dlg.js | 1 + .../plugins/xhtmlxtras/langs/fr_dlg.js | 1 + .../plugins/xhtmlxtras/langs/gl_dlg.js | 1 + .../plugins/xhtmlxtras/langs/gu_dlg.js | 1 + .../plugins/xhtmlxtras/langs/he_dlg.js | 1 + .../plugins/xhtmlxtras/langs/hi_dlg.js | 1 + .../plugins/xhtmlxtras/langs/hr_dlg.js | 1 + .../plugins/xhtmlxtras/langs/hu_dlg.js | 1 + .../plugins/xhtmlxtras/langs/hy_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ia_dlg.js | 1 + .../plugins/xhtmlxtras/langs/id_dlg.js | 1 + .../plugins/xhtmlxtras/langs/is_dlg.js | 1 + .../plugins/xhtmlxtras/langs/it_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ja_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ka_dlg.js | 1 + .../plugins/xhtmlxtras/langs/kl_dlg.js | 1 + .../plugins/xhtmlxtras/langs/km_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ko_dlg.js | 1 + .../plugins/xhtmlxtras/langs/lb_dlg.js | 1 + .../plugins/xhtmlxtras/langs/lt_dlg.js | 1 + .../plugins/xhtmlxtras/langs/lv_dlg.js | 1 + .../plugins/xhtmlxtras/langs/mk_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ml_dlg.js | 1 + .../plugins/xhtmlxtras/langs/mn_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ms_dlg.js | 1 + .../plugins/xhtmlxtras/langs/my_dlg.js | 1 + .../plugins/xhtmlxtras/langs/nb_dlg.js | 1 + .../plugins/xhtmlxtras/langs/nl_dlg.js | 1 + .../plugins/xhtmlxtras/langs/nn_dlg.js | 1 + .../plugins/xhtmlxtras/langs/no_dlg.js | 1 + .../plugins/xhtmlxtras/langs/pl_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ps_dlg.js | 1 + .../plugins/xhtmlxtras/langs/pt_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ro_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ru_dlg.js | 1 + .../plugins/xhtmlxtras/langs/sc_dlg.js | 1 + .../plugins/xhtmlxtras/langs/se_dlg.js | 1 + .../plugins/xhtmlxtras/langs/si_dlg.js | 1 + .../plugins/xhtmlxtras/langs/sk_dlg.js | 1 + .../plugins/xhtmlxtras/langs/sl_dlg.js | 1 + .../plugins/xhtmlxtras/langs/sq_dlg.js | 1 + .../plugins/xhtmlxtras/langs/sr_dlg.js | 1 + .../plugins/xhtmlxtras/langs/sv_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ta_dlg.js | 1 + .../plugins/xhtmlxtras/langs/te_dlg.js | 1 + .../plugins/xhtmlxtras/langs/th_dlg.js | 1 + .../plugins/xhtmlxtras/langs/tn_dlg.js | 1 + .../plugins/xhtmlxtras/langs/tr_dlg.js | 1 + .../plugins/xhtmlxtras/langs/tt_dlg.js | 1 + .../plugins/xhtmlxtras/langs/tw_dlg.js | 1 + .../plugins/xhtmlxtras/langs/uk_dlg.js | 1 + .../plugins/xhtmlxtras/langs/ur_dlg.js | 1 + .../plugins/xhtmlxtras/langs/vi_dlg.js | 1 + .../plugins/xhtmlxtras/langs/zh-cn_dlg.js | 1 + .../plugins/xhtmlxtras/langs/zh_dlg.js | 1 + .../plugins/xhtmlxtras/langs/zu_dlg.js | 1 + js/tiny_mce/themes/advanced/about.htm | 52 + js/tiny_mce/themes/advanced/anchor.htm | 26 + js/tiny_mce/themes/advanced/charmap.htm | 51 + js/tiny_mce/themes/advanced/color_picker.htm | 74 + .../themes/advanced/editor_template.js | 1 + .../themes/advanced/editor_template_src.js | 1360 ++ js/tiny_mce/themes/advanced/image.htm | 80 + .../themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes js/tiny_mce/themes/advanced/img/flash.gif | Bin 0 -> 241 bytes js/tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11794 bytes js/tiny_mce/themes/advanced/img/iframe.gif | Bin 0 -> 600 bytes js/tiny_mce/themes/advanced/img/pagebreak.gif | Bin 0 -> 325 bytes js/tiny_mce/themes/advanced/img/quicktime.gif | Bin 0 -> 303 bytes js/tiny_mce/themes/advanced/img/realmedia.gif | Bin 0 -> 439 bytes js/tiny_mce/themes/advanced/img/shockwave.gif | Bin 0 -> 387 bytes js/tiny_mce/themes/advanced/img/trans.gif | Bin 0 -> 43 bytes js/tiny_mce/themes/advanced/img/video.gif | Bin 0 -> 597 bytes .../themes/advanced/img/windowsmedia.gif | Bin 0 -> 415 bytes js/tiny_mce/themes/advanced/js/about.js | 73 + js/tiny_mce/themes/advanced/js/anchor.js | 42 + js/tiny_mce/themes/advanced/js/charmap.js | 355 + .../themes/advanced/js/color_picker.js | 329 + js/tiny_mce/themes/advanced/js/image.js | 247 + js/tiny_mce/themes/advanced/js/link.js | 153 + .../themes/advanced/js/source_editor.js | 56 + js/tiny_mce/themes/advanced/langs/en.js | 1 + js/tiny_mce/themes/advanced/langs/en_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/es.js | 1 + js/tiny_mce/themes/advanced/langs/es_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/et.js | 1 + js/tiny_mce/themes/advanced/langs/et_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/fi.js | 1 + js/tiny_mce/themes/advanced/langs/fi_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/fr.js | 1 + js/tiny_mce/themes/advanced/langs/fr_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/gl.js | 1 + js/tiny_mce/themes/advanced/langs/gl_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/he.js | 1 + js/tiny_mce/themes/advanced/langs/he_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/hu.js | 1 + js/tiny_mce/themes/advanced/langs/hu_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/id.js | 1 + js/tiny_mce/themes/advanced/langs/id_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/it.js | 1 + js/tiny_mce/themes/advanced/langs/it_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/lt.js | 1 + js/tiny_mce/themes/advanced/langs/lt_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/lv.js | 1 + js/tiny_mce/themes/advanced/langs/lv_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/nl.js | 1 + js/tiny_mce/themes/advanced/langs/nl_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/no.js | 1 + js/tiny_mce/themes/advanced/langs/no_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/pl.js | 1 + js/tiny_mce/themes/advanced/langs/pl_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/pt.js | 1 + js/tiny_mce/themes/advanced/langs/pt_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/ro.js | 1 + js/tiny_mce/themes/advanced/langs/ro_dlg.js | 1 + js/tiny_mce/themes/advanced/langs/ru.js | 1 + js/tiny_mce/themes/advanced/langs/ru_dlg.js | 1 + js/tiny_mce/themes/advanced/link.htm | 57 + js/tiny_mce/themes/advanced/shortcuts.htm | 47 + .../themes/advanced/skins/cirkuit/content.css | 66 + .../themes/advanced/skins/cirkuit/dialog.css | 117 + .../advanced/skins/cirkuit/img/butt2.png | Bin 0 -> 135 bytes .../advanced/skins/cirkuit/img/button-bg.png | Bin 0 -> 296 bytes .../advanced/skins/cirkuit/img/buttons.png | Bin 0 -> 3274 bytes .../advanced/skins/cirkuit/img/down_arrow.gif | Bin 0 -> 60 bytes .../advanced/skins/cirkuit/img/fade-butt.png | Bin 0 -> 785 bytes .../advanced/skins/cirkuit/img/icons.png | Bin 0 -> 30143 bytes .../advanced/skins/cirkuit/img/items.gif | Bin 0 -> 70 bytes .../advanced/skins/cirkuit/img/menu-arrow.png | Bin 0 -> 209 bytes .../advanced/skins/cirkuit/img/menu-check.png | Bin 0 -> 214 bytes .../advanced/skins/cirkuit/img/progress.gif | Bin 0 -> 1787 bytes .../advanced/skins/cirkuit/img/tabs.gif | Bin 0 -> 1326 bytes .../advanced/skins/cirkuit/img/toolbarbg.png | Bin 0 -> 143 bytes .../themes/advanced/skins/cirkuit/ui.css | 988 + .../themes/advanced/skins/default/content.css | 47 + .../themes/advanced/skins/default/dialog.css | 117 + .../advanced/skins/default/img/buttons.png | Bin 0 -> 3274 bytes .../advanced/skins/default/img/items.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes .../advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes .../advanced/skins/default/img/tabs.gif | Bin 0 -> 1326 bytes .../themes/advanced/skins/default/ui.css | 213 + .../advanced/skins/highcontrast/content.css | 23 + .../advanced/skins/highcontrast/dialog.css | 105 + .../themes/advanced/skins/highcontrast/ui.css | 101 + .../themes/advanced/skins/o2k7/content.css | 46 + .../themes/advanced/skins/o2k7/dialog.css | 117 + .../advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 5859 bytes .../skins/o2k7/img/button_bg_black.png | Bin 0 -> 3736 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 0 -> 5358 bytes js/tiny_mce/themes/advanced/skins/o2k7/ui.css | 216 + .../themes/advanced/skins/o2k7/ui_black.css | 8 + .../themes/advanced/skins/o2k7/ui_silver.css | 5 + js/tiny_mce/themes/advanced/source_editor.htm | 25 + js/tiny_mce/tiny_mce.js | 12834 +++++++++++++ js/tiny_mce/tiny_mce_popup.js | 5 + js/tiny_mce/tiny_mce_src.js | 15752 ++++++++++++++++ js/tiny_mce/utils/editable_selects.js | 70 + js/tiny_mce/utils/form_utils.js | 210 + js/tiny_mce/utils/mctabs.js | 162 + js/tiny_mce/utils/validate.js | 252 + js/tinymce.inc.js | 52 + js/toggle.js | 48 + js/tools.js | 213 + localization/ar.xml | 23 + localization/at.xml | 110 + localization/au.xml | 30 + localization/az.xml | 28 + localization/be.xml | 173 + localization/bg.xml | 140 + localization/bo.xml | 23 + localization/br.xml | 34 + localization/ca.xml | 30 + localization/ch.xml | 35 + localization/cl.xml | 23 + localization/cn.xml | 69 + localization/co.xml | 23 + localization/cy.xml | 142 + localization/cz.xml | 140 + localization/de.xml | 140 + localization/dk.xml | 109 + localization/do.xml | 28 + localization/ec.xml | 23 + localization/ee.xml | 141 + localization/eg.xml | 23 + localization/es.xml | 173 + localization/fi.xml | 171 + localization/fj.xml | 20 + localization/fr.xml | 172 + localization/ge.xml | 23 + localization/gr.xml | 264 + localization/gt.xml | 23 + localization/gy.xml | 24 + localization/hk.xml | 16 + localization/hu.xml | 171 + localization/id.xml | 28 + localization/ie.xml | 108 + localization/il.xml | 24 + localization/in.xml | 67 + localization/ir.xml | 23 + localization/it.xml | 283 + localization/je.xml | 23 + localization/jp.xml | 22 + localization/li.xml | 33 + localization/lt.xml | 171 + localization/lu.xml | 204 + localization/lv.xml | 140 + localization/md.xml | 35 + localization/mt.xml | 107 + localization/mx.xml | 28 + localization/nl.xml | 140 + localization/no.xml | 33 + localization/nz.xml | 20 + localization/pk.xml | 25 + localization/pl.xml | 223 + localization/pt.xml | 171 + localization/py.xml | 28 + localization/ro.xml | 171 + localization/ru.xml | 28 + localization/sa.xml | 16 + localization/se.xml | 33 + localization/sg.xml | 24 + localization/si.xml | 140 + localization/sk.xml | 171 + localization/sv.xml | 23 + localization/th.xml | 21 + localization/tr.xml | 33 + localization/tw.xml | 24 + localization/ua.xml | 23 + localization/uk.xml | 0 localization/us.xml | 280 + localization/uy.xml | 28 + localization/ve.xml | 28 + localization/vn.xml | 28 + mails/de/account.html | 52 + mails/de/account.txt | 20 + mails/de/bankwire.html | 55 + mails/de/bankwire.txt | 23 + mails/de/cheque.html | 55 + mails/de/cheque.txt | 21 + mails/de/contact.html | 34 + mails/de/contact.txt | 11 + mails/de/contact_form.html | 40 + mails/de/contact_form.txt | 12 + mails/de/credit_slip.html | 46 + mails/de/credit_slip.txt | 12 + mails/de/download-product.tpl | 13 + mails/de/download_product.html | 55 + mails/de/download_product.txt | 11 + mails/de/employee_password.html | 40 + mails/de/employee_password.txt | 14 + mails/de/forward_msg.html | 16 + mails/de/forward_msg.txt | 4 + mails/de/guest_to_customer.html | 46 + mails/de/guest_to_customer.txt | 15 + mails/de/in_transit.html | 55 + mails/de/in_transit.txt | 16 + mails/de/index.php | 36 + mails/de/lang.php | 39 + mails/de/log_alert.html | 46 + mails/de/log_alert.txt | 10 + mails/de/newsletter.html | 34 + mails/de/newsletter.txt | 9 + mails/de/order_canceled.html | 49 + mails/de/order_canceled.txt | 14 + mails/de/order_conf.html | 120 + mails/de/order_conf.txt | 43 + mails/de/order_customer_comment.html | 40 + mails/de/order_customer_comment.txt | 8 + mails/de/order_merchant_comment.html | 40 + mails/de/order_merchant_comment.txt | 10 + mails/de/order_return_state.html | 46 + mails/de/order_return_state.txt | 11 + mails/de/outofstock.html | 49 + mails/de/outofstock.txt | 14 + mails/de/password.html | 46 + mails/de/password.txt | 12 + mails/de/password_query.html | 40 + mails/de/password_query.txt | 9 + mails/de/payment.html | 46 + mails/de/payment.txt | 13 + mails/de/payment_error.html | 55 + mails/de/payment_error.txt | 14 + mails/de/preparation.html | 49 + mails/de/preparation.txt | 14 + mails/de/refund.html | 49 + mails/de/refund.txt | 12 + mails/de/reply_msg.html | 16 + mails/de/reply_msg.txt | 4 + mails/de/shipped.html | 49 + mails/de/shipped.txt | 16 + mails/de/test.html | 22 + mails/de/test.txt | 3 + mails/de/voucher.html | 46 + mails/de/voucher.txt | 14 + mails/en/account.html | 53 + mails/en/account.txt | 20 + mails/en/bankwire.html | 61 + mails/en/bankwire.txt | 23 + mails/en/cheque.html | 59 + mails/en/cheque.txt | 21 + mails/en/contact.html | 34 + mails/en/contact.txt | 11 + mails/en/contact_form.html | 36 + mails/en/contact_form.txt | 12 + mails/en/credit_slip.html | 41 + mails/en/credit_slip.txt | 12 + mails/en/download-product.tpl | 13 + mails/en/download_product.html | 54 + mails/en/download_product.txt | 11 + mails/en/employee_password.html | 39 + mails/en/employee_password.txt | 14 + mails/en/forward_msg.html | 20 + mails/en/forward_msg.txt | 4 + mails/en/guest_to_customer.html | 46 + mails/en/guest_to_customer.txt | 16 + mails/en/in_transit.html | 53 + mails/en/in_transit.txt | 16 + mails/en/index.php | 36 + mails/en/lang.php | 31 + mails/en/log_alert.html | 42 + mails/en/log_alert.txt | 11 + mails/en/newsletter.html | 30 + mails/en/newsletter.txt | 9 + mails/en/order_canceled.html | 47 + mails/en/order_canceled.txt | 14 + mails/en/order_conf.html | 136 + mails/en/order_conf.txt | 43 + mails/en/order_customer_comment.html | 38 + mails/en/order_customer_comment.txt | 8 + mails/en/order_merchant_comment.html | 38 + mails/en/order_merchant_comment.txt | 10 + mails/en/order_return_state.html | 42 + mails/en/order_return_state.txt | 11 + mails/en/outofstock.html | 47 + mails/en/outofstock.txt | 14 + mails/en/password.html | 45 + mails/en/password.txt | 12 + mails/en/password_query.html | 38 + mails/en/password_query.txt | 9 + mails/en/payment.html | 42 + mails/en/payment.txt | 13 + mails/en/payment_error.html | 53 + mails/en/payment_error.txt | 14 + mails/en/preparation.html | 47 + mails/en/preparation.txt | 14 + mails/en/refund.html | 47 + mails/en/refund.txt | 12 + mails/en/reply_msg.html | 18 + mails/en/reply_msg.txt | 4 + mails/en/shipped.html | 47 + mails/en/shipped.txt | 16 + mails/en/test.html | 23 + mails/en/test.txt | 3 + mails/en/voucher.html | 42 + mails/en/voucher.txt | 14 + mails/es/account.html | 53 + mails/es/account.txt | 20 + mails/es/bankwire.html | 56 + mails/es/bankwire.txt | 20 + mails/es/cheque.html | 56 + mails/es/cheque.txt | 19 + mails/es/contact.html | 35 + mails/es/contact.txt | 11 + mails/es/contact_form.html | 41 + mails/es/contact_form.txt | 12 + mails/es/credit_slip.html | 47 + mails/es/credit_slip.txt | 12 + mails/es/download-product.tpl | 13 + mails/es/download_product.html | 56 + mails/es/download_product.txt | 13 + mails/es/employee_password.html | 11 + mails/es/employee_password.txt | 13 + mails/es/forward_msg.html | 17 + mails/es/forward_msg.txt | 4 + mails/es/guest_to_customer.html | 47 + mails/es/guest_to_customer.txt | 15 + mails/es/in_transit.html | 56 + mails/es/in_transit.txt | 14 + mails/es/index.php | 37 + mails/es/lang.php | 39 + mails/es/log_alert.html | 47 + mails/es/log_alert.txt | 11 + mails/es/newsletter.html | 35 + mails/es/newsletter.txt | 9 + mails/es/order_canceled.html | 50 + mails/es/order_canceled.txt | 14 + mails/es/order_conf.html | 116 + mails/es/order_conf.txt | 40 + mails/es/order_customer_comment.html | 41 + mails/es/order_customer_comment.txt | 8 + mails/es/order_merchant_comment.html | 11 + mails/es/order_merchant_comment.txt | 0 mails/es/order_return_state.html | 47 + mails/es/order_return_state.txt | 9 + mails/es/outofstock.html | 50 + mails/es/outofstock.txt | 17 + mails/es/password.html | 47 + mails/es/password.txt | 15 + mails/es/password_query.html | 41 + mails/es/password_query.txt | 9 + mails/es/payment.html | 50 + mails/es/payment.txt | 14 + mails/es/payment_error.html | 56 + mails/es/payment_error.txt | 16 + mails/es/preparation.html | 50 + mails/es/preparation.txt | 13 + mails/es/refund.html | 50 + mails/es/refund.txt | 12 + mails/es/reply_msg.html | 17 + mails/es/reply_msg.txt | 4 + mails/es/shipped.html | 50 + mails/es/shipped.txt | 15 + mails/es/test.html | 23 + mails/es/test.txt | 3 + mails/es/voucher.html | 47 + mails/es/voucher.txt | 14 + mails/fr/account.html | 43 + mails/fr/account.txt | 13 + mails/fr/bankwire.html | 61 + mails/fr/bankwire.txt | 22 + mails/fr/cheque.html | 59 + mails/fr/cheque.txt | 21 + mails/fr/contact.html | 34 + mails/fr/contact.txt | 11 + mails/fr/contact_form.html | 36 + mails/fr/contact_form.txt | 12 + mails/fr/credit_slip.html | 42 + mails/fr/credit_slip.txt | 12 + mails/fr/download-product.tpl | 13 + mails/fr/download_product.html | 54 + mails/fr/download_product.txt | 12 + mails/fr/employee_password.html | 39 + mails/fr/employee_password.txt | 15 + mails/fr/forward_msg.html | 20 + mails/fr/forward_msg.txt | 5 + mails/fr/guest_to_customer.html | 42 + mails/fr/guest_to_customer.txt | 13 + mails/fr/in_transit.html | 53 + mails/fr/in_transit.txt | 14 + mails/fr/index.php | 36 + mails/fr/lang.php | 39 + mails/fr/log_alert.html | 42 + mails/fr/log_alert.txt | 11 + mails/fr/newsletter.html | 30 + mails/fr/newsletter.txt | 9 + mails/fr/order_canceled.html | 47 + mails/fr/order_canceled.txt | 12 + mails/fr/order_conf.html | 136 + mails/fr/order_conf.txt | 43 + mails/fr/order_customer_comment.html | 38 + mails/fr/order_customer_comment.txt | 8 + mails/fr/order_merchant_comment.html | 38 + mails/fr/order_merchant_comment.txt | 10 + mails/fr/order_return_state.html | 42 + mails/fr/order_return_state.txt | 7 + mails/fr/outofstock.html | 47 + mails/fr/outofstock.txt | 12 + mails/fr/password.html | 37 + mails/fr/password.txt | 11 + mails/fr/password_query.html | 38 + mails/fr/password_query.txt | 9 + mails/fr/payment.html | 47 + mails/fr/payment.txt | 12 + mails/fr/payment_error.html | 47 + mails/fr/payment_error.txt | 12 + mails/fr/preparation.html | 47 + mails/fr/preparation.txt | 12 + mails/fr/refund.html | 47 + mails/fr/refund.txt | 12 + mails/fr/reply_msg.html | 18 + mails/fr/reply_msg.txt | 0 mails/fr/shipped.html | 47 + mails/fr/shipped.txt | 14 + mails/fr/test.html | 23 + mails/fr/test.txt | 3 + mails/fr/voucher.html | 43 + mails/fr/voucher.txt | 13 + mails/index.php | 36 + mails/it/account.html | 52 + mails/it/account.txt | 20 + mails/it/bankwire.html | 55 + mails/it/bankwire.txt | 23 + mails/it/cheque.html | 55 + mails/it/cheque.txt | 22 + mails/it/contact.html | 34 + mails/it/contact.txt | 11 + mails/it/contact_form.html | 40 + mails/it/contact_form.txt | 12 + mails/it/credit_slip.html | 46 + mails/it/credit_slip.txt | 12 + mails/it/download-product.tpl | 13 + mails/it/download_product.html | 55 + mails/it/download_product.txt | 11 + mails/it/employee_password.html | 40 + mails/it/employee_password.txt | 14 + mails/it/forward_msg.html | 16 + mails/it/forward_msg.txt | 4 + mails/it/guest_to_customer.html | 46 + mails/it/guest_to_customer.txt | 15 + mails/it/in_transit.html | 55 + mails/it/in_transit.txt | 16 + mails/it/index.php | 36 + mails/it/lang.php | 39 + mails/it/log_alert.html | 46 + mails/it/log_alert.txt | 11 + mails/it/newsletter.html | 34 + mails/it/newsletter.txt | 9 + mails/it/order_canceled.html | 49 + mails/it/order_canceled.txt | 14 + mails/it/order_conf.html | 120 + mails/it/order_conf.txt | 43 + mails/it/order_customer_comment.html | 40 + mails/it/order_customer_comment.txt | 8 + mails/it/order_merchant_comment.html | 40 + mails/it/order_merchant_comment.txt | 10 + mails/it/order_return_state.html | 46 + mails/it/order_return_state.txt | 11 + mails/it/outofstock.html | 49 + mails/it/outofstock.txt | 14 + mails/it/password.html | 46 + mails/it/password.txt | 12 + mails/it/password_query.html | 40 + mails/it/password_query.txt | 9 + mails/it/payment.html | 46 + mails/it/payment.txt | 13 + mails/it/payment_error.html | 55 + mails/it/payment_error.txt | 14 + mails/it/preparation.html | 49 + mails/it/preparation.txt | 14 + mails/it/refund.html | 49 + mails/it/refund.txt | 12 + mails/it/reply_msg.html | 16 + mails/it/reply_msg.txt | 4 + mails/it/shipped.html | 49 + mails/it/shipped.txt | 16 + mails/it/test.html | 22 + mails/it/test.txt | 3 + mails/it/voucher.html | 46 + mails/it/voucher.txt | 14 + manufacturer.php | 29 + modules/authorizeaim/authorizeaim.php | 170 + modules/authorizeaim/authorizeaim.tpl | 113 + modules/authorizeaim/cards/ax.gif | Bin 0 -> 560 bytes modules/authorizeaim/cards/discover.gif | Bin 0 -> 504 bytes modules/authorizeaim/cards/mastercard.gif | Bin 0 -> 595 bytes modules/authorizeaim/cards/visa.gif | Bin 0 -> 451 bytes modules/authorizeaim/config.xml | 11 + modules/authorizeaim/cvv.png | Bin 0 -> 8485 bytes modules/authorizeaim/de.php | 39 + modules/authorizeaim/en.php | 4 + modules/authorizeaim/es.php | 39 + modules/authorizeaim/fr.php | 39 + modules/authorizeaim/help.png | Bin 0 -> 911 bytes .../authorizeaim/hookorderconfirmation.tpl | 11 + modules/authorizeaim/it.php | 39 + modules/authorizeaim/logo.gif | Bin 0 -> 79 bytes modules/authorizeaim/logo_authorize.png | Bin 0 -> 6565 bytes modules/authorizeaim/logoa.gif | Bin 0 -> 2047 bytes modules/authorizeaim/secure.png | Bin 0 -> 611 bytes modules/authorizeaim/validation.php | 87 + modules/bankwire/bankwire.jpg | Bin 0 -> 9087 bytes modules/bankwire/bankwire.php | 234 + modules/bankwire/config.xml | 12 + modules/bankwire/de.php | 54 + modules/bankwire/en.php | 4 + modules/bankwire/es.php | 54 + modules/bankwire/fr.php | 54 + modules/bankwire/it.php | 54 + modules/bankwire/logo.gif | Bin 0 -> 1030 bytes modules/bankwire/payment.php | 41 + modules/bankwire/payment.tpl | 32 + modules/bankwire/payment_execution.tpl | 80 + modules/bankwire/payment_return.tpl | 45 + modules/bankwire/validation.php | 52 + modules/birthdaypresent/birthdaypresent.php | 146 + modules/birthdaypresent/comment.gif | Bin 0 -> 413 bytes modules/birthdaypresent/config.xml | 11 + modules/birthdaypresent/cron.php | 40 + modules/birthdaypresent/de.php | 25 + modules/birthdaypresent/en.php | 4 + modules/birthdaypresent/es.php | 28 + modules/birthdaypresent/fr.php | 25 + modules/birthdaypresent/it.php | 28 + modules/birthdaypresent/logo.gif | Bin 0 -> 676 bytes .../birthdaypresent/mails/de/birthday.html | 42 + modules/birthdaypresent/mails/de/birthday.txt | 5 + .../birthdaypresent/mails/en/birthday.html | 38 + modules/birthdaypresent/mails/en/birthday.txt | 7 + .../birthdaypresent/mails/es/birthday.html | 43 + modules/birthdaypresent/mails/es/birthday.txt | 6 + .../birthdaypresent/mails/fr/birthday.html | 38 + modules/birthdaypresent/mails/fr/birthday.txt | 7 + .../birthdaypresent/mails/it/birthday.html | 42 + modules/birthdaypresent/mails/it/birthday.txt | 7 + modules/blockadvertising/advertising.jpg | Bin 0 -> 8363 bytes modules/blockadvertising/blockadvertising.php | 203 + modules/blockadvertising/blockadvertising.tpl | 31 + modules/blockadvertising/config.xml | 11 + modules/blockadvertising/de.php | 16 + modules/blockadvertising/en.php | 4 + modules/blockadvertising/es.php | 16 + modules/blockadvertising/fr.php | 16 + modules/blockadvertising/it.php | 16 + modules/blockadvertising/logo.gif | Bin 0 -> 1052 bytes modules/blockbestsellers/blockbestsellers.php | 126 + modules/blockbestsellers/blockbestsellers.tpl | 47 + modules/blockbestsellers/config.xml | 11 + modules/blockbestsellers/de.php | 17 + modules/blockbestsellers/en.php | 4 + modules/blockbestsellers/es.php | 17 + modules/blockbestsellers/fr.php | 17 + modules/blockbestsellers/img/logo.gif | Bin 0 -> 601 bytes modules/blockbestsellers/it.php | 17 + modules/blockbestsellers/logo.gif | Bin 0 -> 601 bytes modules/blockcart/ajax-cart.js | 613 + modules/blockcart/blockcart-ajax.php | 36 + modules/blockcart/blockcart-json.tpl | 117 + modules/blockcart/blockcart-set-collapse.php | 44 + modules/blockcart/blockcart.php | 193 + modules/blockcart/blockcart.tpl | 149 + modules/blockcart/config.xml | 11 + modules/blockcart/de.php | 32 + modules/blockcart/en.php | 4 + modules/blockcart/es.php | 32 + modules/blockcart/fr.php | 32 + modules/blockcart/img/icon/basket.png | Bin 0 -> 669 bytes modules/blockcart/img/icon/basket_go.png | Bin 0 -> 777 bytes modules/blockcart/img/icon/checkout.png | Bin 0 -> 777 bytes modules/blockcart/img/icon/delete.gif | Bin 0 -> 103 bytes modules/blockcart/it.php | 32 + modules/blockcart/logo.gif | Bin 0 -> 995 bytes modules/blockcategories/blockcategories.php | 244 + modules/blockcategories/blockcategories.tpl | 49 + .../blockcategories/category-tree-branch.tpl | 40 + modules/blockcategories/config.xml | 12 + modules/blockcategories/de.php | 19 + modules/blockcategories/en.php | 4 + modules/blockcategories/es.php | 19 + modules/blockcategories/fr.php | 19 + modules/blockcategories/it.php | 19 + modules/blockcategories/logo.gif | Bin 0 -> 649 bytes modules/blockcms/ajax_blockcms.php | 112 + modules/blockcms/blockcms.js | 144 + modules/blockcms/blockcms.php | 720 + modules/blockcms/blockcms.tpl | 62 + modules/blockcms/config.xml | 12 + modules/blockcms/de.php | 57 + modules/blockcms/es.php | 57 + modules/blockcms/fr.php | 57 + modules/blockcms/it.php | 57 + modules/blockcms/logo.gif | Bin 0 -> 778 bytes modules/blockcurrencies/blockcurrencies.php | 78 + modules/blockcurrencies/blockcurrencies.tpl | 44 + modules/blockcurrencies/config.xml | 11 + modules/blockcurrencies/de.php | 7 + modules/blockcurrencies/en.php | 4 + modules/blockcurrencies/es.php | 7 + modules/blockcurrencies/fr.php | 7 + modules/blockcurrencies/it.php | 7 + modules/blockcurrencies/logo.gif | Bin 0 -> 383 bytes modules/blocklanguages/blocklanguages.php | 73 + modules/blocklanguages/blocklanguages.tpl | 58 + modules/blocklanguages/config.xml | 11 + modules/blocklanguages/de.php | 6 + modules/blocklanguages/en.php | 4 + modules/blocklanguages/es.php | 6 + modules/blocklanguages/fr.php | 6 + modules/blocklanguages/it.php | 6 + modules/blocklanguages/logo.gif | Bin 0 -> 616 bytes modules/blocklayered/blocklayered-ajax.php | 35 + modules/blocklayered/blocklayered.css | 75 + modules/blocklayered/blocklayered.js | 102 + modules/blocklayered/blocklayered.php | 873 + modules/blocklayered/blocklayered.tpl | 92 + modules/blocklayered/config.xml | 11 + modules/blocklayered/de.php | 47 + modules/blocklayered/es.php | 47 + modules/blocklayered/fr.php | 47 + modules/blocklayered/it.php | 47 + modules/blocklayered/logo.gif | Bin 0 -> 280 bytes modules/blocklink/add.png | Bin 0 -> 570 bytes modules/blocklink/blocklink.js | 44 + modules/blocklink/blocklink.php | 386 + modules/blocklink/blocklink.tpl | 42 + modules/blocklink/config.xml | 12 + modules/blocklink/de.php | 41 + modules/blocklink/en.php | 4 + modules/blocklink/es.php | 41 + modules/blocklink/fr.php | 41 + modules/blocklink/it.php | 41 + modules/blocklink/logo.gif | Bin 0 -> 1067 bytes modules/blocklink/prefs.gif | Bin 0 -> 351 bytes .../blockmanufacturer/blockmanufacturer.php | 132 + .../blockmanufacturer/blockmanufacturer.tpl | 58 + modules/blockmanufacturer/config.xml | 11 + modules/blockmanufacturer/de.php | 23 + modules/blockmanufacturer/en.php | 4 + modules/blockmanufacturer/es.php | 23 + modules/blockmanufacturer/fr.php | 23 + modules/blockmanufacturer/it.php | 23 + modules/blockmanufacturer/logo.gif | Bin 0 -> 280 bytes modules/blockmyaccount/blockmyaccount.php | 92 + modules/blockmyaccount/blockmyaccount.tpl | 43 + modules/blockmyaccount/config.xml | 11 + modules/blockmyaccount/de.php | 14 + modules/blockmyaccount/en.php | 4 + modules/blockmyaccount/es.php | 14 + modules/blockmyaccount/fr.php | 14 + modules/blockmyaccount/it.php | 14 + modules/blockmyaccount/logo.gif | Bin 0 -> 600 bytes modules/blocknewproducts/blocknewproducts.php | 120 + modules/blocknewproducts/blocknewproducts.tpl | 51 + modules/blocknewproducts/config.xml | 11 + modules/blocknewproducts/de.php | 21 + modules/blocknewproducts/en.php | 4 + modules/blocknewproducts/es.php | 21 + modules/blocknewproducts/fr.php | 21 + modules/blocknewproducts/it.php | 21 + modules/blocknewproducts/logo.gif | Bin 0 -> 333 bytes modules/blocknewsletter/blocknewsletter.php | 256 + modules/blocknewsletter/blocknewsletter.tpl | 48 + modules/blocknewsletter/config.xml | 12 + modules/blocknewsletter/de.php | 28 + modules/blocknewsletter/en.php | 4 + modules/blocknewsletter/es.php | 28 + modules/blocknewsletter/fr.php | 28 + modules/blocknewsletter/it.php | 28 + modules/blocknewsletter/logo.gif | Bin 0 -> 983 bytes .../mails/de/newsletter_conf.html | 14 + .../mails/de/newsletter_conf.txt | 7 + .../mails/de/newsletter_voucher.html | 40 + .../mails/de/newsletter_voucher.txt | 9 + .../mails/en/newsletter_conf.html | 21 + .../mails/en/newsletter_conf.txt | 7 + .../mails/en/newsletter_voucher.html | 36 + .../mails/en/newsletter_voucher.txt | 9 + .../mails/es/newsletter_conf.html | 15 + .../mails/es/newsletter_conf.txt | 7 + .../mails/es/newsletter_voucher.html | 41 + .../mails/es/newsletter_voucher.txt | 9 + .../mails/fr/newsletter_conf.html | 21 + .../mails/fr/newsletter_conf.txt | 7 + .../mails/fr/newsletter_voucher.html | 36 + .../mails/fr/newsletter_voucher.txt | 9 + .../mails/it/newsletter_conf.html | 10 + .../mails/it/newsletter_conf.txt | 0 .../mails/it/newsletter_voucher.html | 10 + .../mails/it/newsletter_voucher.txt | 0 modules/blockpaymentlogo/blockpaymentlogo.php | 144 + modules/blockpaymentlogo/blockpaymentlogo.tpl | 35 + modules/blockpaymentlogo/config.xml | 11 + modules/blockpaymentlogo/de.php | 13 + modules/blockpaymentlogo/en.php | 4 + modules/blockpaymentlogo/es.php | 13 + modules/blockpaymentlogo/fr.php | 13 + modules/blockpaymentlogo/it.php | 13 + modules/blockpaymentlogo/logo.gif | Bin 0 -> 1063 bytes .../blockpermanentlinks-header.tpl | 36 + .../blockpermanentlinks.php | 84 + .../blockpermanentlinks.tpl | 45 + modules/blockpermanentlinks/config.xml | 11 + modules/blockpermanentlinks/de.php | 12 + modules/blockpermanentlinks/en.php | 4 + modules/blockpermanentlinks/es.php | 12 + modules/blockpermanentlinks/fr.php | 12 + modules/blockpermanentlinks/it.php | 12 + modules/blockpermanentlinks/logo.gif | Bin 0 -> 938 bytes modules/blockrss/blockrss.php | 166 + modules/blockrss/blockrss.tpl | 42 + modules/blockrss/config.xml | 11 + modules/blockrss/de.php | 21 + modules/blockrss/en.php | 4 + modules/blockrss/es.php | 21 + modules/blockrss/fr.php | 21 + modules/blockrss/it.php | 21 + modules/blockrss/logo.gif | Bin 0 -> 1009 bytes modules/blocksearch/blocksearch-top.tpl | 132 + modules/blocksearch/blocksearch.php | 100 + modules/blocksearch/blocksearch.tpl | 132 + modules/blocksearch/config.xml | 11 + modules/blocksearch/de.php | 10 + modules/blocksearch/en.php | 4 + modules/blocksearch/es.php | 10 + modules/blocksearch/fr.php | 10 + modules/blocksearch/it.php | 10 + modules/blocksearch/logo.gif | Bin 0 -> 615 bytes modules/blockspecials/blockspecials.php | 111 + modules/blockspecials/blockspecials.tpl | 58 + modules/blockspecials/config.xml | 12 + modules/blockspecials/de.php | 17 + modules/blockspecials/en.php | 4 + modules/blockspecials/es.php | 17 + modules/blockspecials/fr.php | 17 + modules/blockspecials/it.php | 17 + modules/blockspecials/logo.gif | Bin 0 -> 251 bytes modules/blockstore/blockstore.css | 3 + modules/blockstore/blockstore.php | 124 + modules/blockstore/blockstore.tpl | 37 + modules/blockstore/config.xml | 11 + modules/blockstore/de.php | 16 + modules/blockstore/es.php | 16 + modules/blockstore/fr.php | 16 + modules/blockstore/it.php | 16 + modules/blockstore/logo.gif | Bin 0 -> 280 bytes modules/blockstore/store.jpg | Bin 0 -> 10572 bytes modules/blocksupplier/blocksupplier.php | 139 + modules/blocksupplier/blocksupplier.tpl | 60 + modules/blocksupplier/config.xml | 11 + modules/blocksupplier/de.php | 23 + modules/blocksupplier/en.php | 4 + modules/blocksupplier/es.php | 23 + modules/blocksupplier/fr.php | 23 + modules/blocksupplier/it.php | 23 + modules/blocksupplier/logo.gif | Bin 0 -> 266 bytes modules/blocktags/blocktags.php | 124 + modules/blocktags/blocktags.tpl | 40 + modules/blocktags/config.xml | 11 + modules/blocktags/de.php | 17 + modules/blocktags/en.php | 4 + modules/blocktags/es.php | 17 + modules/blocktags/fr.php | 17 + modules/blocktags/it.php | 17 + modules/blocktags/logo.gif | Bin 0 -> 731 bytes modules/blockuserinfo/blockuserinfo.php | 80 + modules/blockuserinfo/blockuserinfo.tpl | 62 + modules/blockuserinfo/config.xml | 11 + modules/blockuserinfo/de.php | 16 + modules/blockuserinfo/en.php | 4 + modules/blockuserinfo/es.php | 16 + modules/blockuserinfo/fr.php | 16 + modules/blockuserinfo/it.php | 16 + modules/blockuserinfo/logo.gif | Bin 0 -> 600 bytes modules/blockviewed/blockviewed.php | 190 + modules/blockviewed/blockviewed.tpl | 41 + modules/blockviewed/config.xml | 11 + modules/blockviewed/de.php | 16 + modules/blockviewed/en.php | 4 + modules/blockviewed/es.php | 16 + modules/blockviewed/fr.php | 16 + modules/blockviewed/it.php | 16 + modules/blockviewed/logo.gif | Bin 0 -> 954 bytes modules/blockwishlist/WishList.php | 517 + modules/blockwishlist/blockwishlist-ajax.tpl | 50 + modules/blockwishlist/blockwishlist-extra.tpl | 27 + .../blockwishlist/blockwishlist-header.tpl | 29 + modules/blockwishlist/blockwishlist.php | 338 + modules/blockwishlist/blockwishlist.tpl | 66 + modules/blockwishlist/buywishlistproduct.php | 54 + modules/blockwishlist/cart.php | 85 + modules/blockwishlist/config.xml | 11 + modules/blockwishlist/de.php | 81 + modules/blockwishlist/en.php | 4 + modules/blockwishlist/es.php | 81 + modules/blockwishlist/fr.php | 81 + modules/blockwishlist/img/delete.gif | Bin 0 -> 752 bytes modules/blockwishlist/img/icon/delete.png | Bin 0 -> 715 bytes modules/blockwishlist/img/icon/package.png | Bin 0 -> 853 bytes modules/blockwishlist/img/icon/package_go.png | Bin 0 -> 898 bytes modules/blockwishlist/img/star.gif | Bin 0 -> 815 bytes modules/blockwishlist/install.sql | 33 + modules/blockwishlist/it.php | 81 + modules/blockwishlist/js/ajax-wishlist.js | 254 + modules/blockwishlist/logo.gif | Bin 0 -> 853 bytes modules/blockwishlist/mails/de/wishlink.html | 40 + modules/blockwishlist/mails/de/wishlink.txt | 7 + modules/blockwishlist/mails/de/wishlist.html | 40 + modules/blockwishlist/mails/de/wishlist.txt | 8 + modules/blockwishlist/mails/en/wishlink.html | 38 + modules/blockwishlist/mails/en/wishlink.txt | 7 + modules/blockwishlist/mails/en/wishlist.html | 38 + modules/blockwishlist/mails/en/wishlist.txt | 8 + modules/blockwishlist/mails/es/wishlink.html | 11 + modules/blockwishlist/mails/es/wishlink.txt | 1 + modules/blockwishlist/mails/es/wishlist.html | 41 + modules/blockwishlist/mails/es/wishlist.txt | 8 + modules/blockwishlist/mails/fr/wishlink.html | 38 + modules/blockwishlist/mails/fr/wishlink.txt | 7 + modules/blockwishlist/mails/fr/wishlist.html | 38 + modules/blockwishlist/mails/fr/wishlist.txt | 8 + modules/blockwishlist/mails/it/wishlink.html | 40 + modules/blockwishlist/mails/it/wishlink.txt | 7 + modules/blockwishlist/mails/it/wishlist.html | 40 + modules/blockwishlist/mails/it/wishlist.txt | 8 + modules/blockwishlist/managewishlist.php | 115 + modules/blockwishlist/managewishlist.tpl | 127 + modules/blockwishlist/my-account.tpl | 31 + modules/blockwishlist/mywishlist.php | 106 + modules/blockwishlist/mywishlist.tpl | 100 + modules/blockwishlist/sendwishlist.php | 61 + modules/blockwishlist/view.php | 88 + modules/blockwishlist/view.tpl | 96 + modules/cashondelivery/cashondelivery.gif | Bin 0 -> 2391 bytes modules/cashondelivery/cashondelivery.jpg | Bin 0 -> 3009 bytes modules/cashondelivery/cashondelivery.php | 84 + modules/cashondelivery/config.xml | 11 + modules/cashondelivery/confirmation.tpl | 32 + modules/cashondelivery/de.php | 23 + modules/cashondelivery/en.php | 4 + modules/cashondelivery/es.php | 23 + modules/cashondelivery/fr.php | 23 + modules/cashondelivery/it.php | 23 + modules/cashondelivery/logo.gif | Bin 0 -> 425 bytes modules/cashondelivery/payment.tpl | 34 + modules/cashondelivery/validation.php | 64 + modules/cashondelivery/validation.tpl | 58 + modules/cashticket/Disposition.php | 82 + modules/cashticket/PrepaidServices.php | 663 + modules/cashticket/PrepaidServicesAPI.php | 190 + .../cashticket/cashticket-accept-payment.tpl | 43 + .../cashticket/cashticket-confirmation.tpl | 32 + modules/cashticket/cashticket.php | 115 + modules/cashticket/config.xml | 11 + modules/cashticket/de.php | 51 + modules/cashticket/disposition-error.tpl | 37 + modules/cashticket/es.php | 51 + modules/cashticket/fr.php | 51 + modules/cashticket/img/payment-logo.png | Bin 0 -> 14045 bytes modules/cashticket/img/payment-small.png | Bin 0 -> 633 bytes modules/cashticket/img/payment.png | Bin 0 -> 14045 bytes modules/cashticket/it.php | 51 + modules/cashticket/keyring/.htaccess | 1 + modules/cashticket/keyring/paysafecard-CA.pem | 227 + modules/cashticket/logo.gif | Bin 0 -> 952 bytes modules/cashticket/payment.php | 105 + modules/cashticket/payment.tpl | 32 + modules/cashticket/prepaidservices.js | 38 + modules/cashticket/redirect.php | 50 + modules/cheque/cheque.jpg | Bin 0 -> 1837 bytes modules/cheque/cheque.php | 222 + modules/cheque/config.xml | 12 + modules/cheque/de.php | 49 + modules/cheque/en.php | 4 + modules/cheque/es.php | 49 + modules/cheque/fr.php | 49 + modules/cheque/it.php | 49 + modules/cheque/logo.gif | Bin 0 -> 958 bytes modules/cheque/payment.php | 43 + modules/cheque/payment.tpl | 32 + modules/cheque/payment_execution.tpl | 80 + modules/cheque/payment_return.tpl | 43 + modules/cheque/validation.php | 53 + modules/criteo/config.xml | 11 + modules/criteo/criteo.php | 363 + modules/criteo/de.php | 13 + modules/criteo/en.php | 4 + modules/criteo/es.php | 13 + modules/criteo/export_csv.php | 34 + modules/criteo/export_xml.php | 34 + modules/criteo/fr.php | 13 + modules/criteo/it.php | 13 + modules/criteo/logo.gif | Bin 0 -> 176 bytes modules/crossselling/config.xml | 11 + modules/crossselling/crossselling.php | 146 + modules/crossselling/crossselling.tpl | 59 + modules/crossselling/de.php | 16 + modules/crossselling/en.php | 5 + modules/crossselling/es.php | 16 + modules/crossselling/fr.php | 16 + modules/crossselling/it.php | 16 + modules/crossselling/js/crossselling.js | 65 + modules/crossselling/logo.gif | Bin 0 -> 731 bytes modules/dateofdelivery/beforeCarrier.tpl | 65 + modules/dateofdelivery/config.xml | 11 + modules/dateofdelivery/dateofdelivery.php | 511 + modules/dateofdelivery/de.php | 71 + modules/dateofdelivery/es.php | 71 + modules/dateofdelivery/fr.php | 71 + modules/dateofdelivery/img/cross.png | Bin 0 -> 655 bytes modules/dateofdelivery/img/tick.png | Bin 0 -> 537 bytes modules/dateofdelivery/img/time.png | Bin 0 -> 793 bytes modules/dateofdelivery/img/time_add.png | Bin 0 -> 827 bytes modules/dateofdelivery/img/time_delete.png | Bin 0 -> 853 bytes modules/dateofdelivery/it.php | 71 + modules/dateofdelivery/logo.gif | Bin 0 -> 618 bytes modules/dateofdelivery/orderDetail.tpl | 30 + modules/dejala/MyLogUtils.php | 49 + modules/dejala/calendarutils.php | 131 + modules/dejala/config.xml | 12 + modules/dejala/de.php | 187 + modules/dejala/dejala.php | 1320 ++ modules/dejala/dejala_carrier.gif | Bin 0 -> 2004 bytes modules/dejala/dejala_carrier.tpl | 65 + modules/dejala/dejala_carrier_nostock.tpl | 23 + modules/dejala/dejala_contacts.tpl | 46 + modules/dejala/dejala_deliveries.tpl | 74 + modules/dejala/dejala_deliveries_csv.tpl | 4 + modules/dejala/dejala_delivery_options.tpl | 43 + modules/dejala/dejala_footer.tpl | 26 + modules/dejala/dejala_header.tpl | 9 + modules/dejala/dejala_home.tpl | 166 + modules/dejala/dejala_location.tpl | 26 + modules/dejala/dejala_logo.gif | Bin 0 -> 2932 bytes modules/dejala/dejala_menu.tpl | 37 + modules/dejala/dejala_picking_timetable.tpl | 31 + modules/dejala/dejala_processes.tpl | 23 + modules/dejala/dejala_products.tpl | 40 + modules/dejala/dejala_technical_options.tpl | 20 + modules/dejala/dejala_timetable.tpl | 27 + modules/dejala/dejalacarrierutils.php | 101 + modules/dejala/dejalacart.php | 71 + modules/dejala/dejalaconfig.php | 118 + modules/dejala/dejalatest.php | 19 + modules/dejala/dejalautils.php | 506 + modules/dejala/deliveries_csv.php | 67 + modules/dejala/es.php | 187 + modules/dejala/fr.php | 187 + modules/dejala/google.gif | Bin 0 -> 378 bytes modules/dejala/install.sql | 10 + modules/dejala/it.php | 187 + modules/dejala/logo.gif | Bin 0 -> 1072 bytes modules/dejala/picto_0.gif | Bin 0 -> 64 bytes modules/dejala/picto_1.gif | Bin 0 -> 1000 bytes modules/dejala/picto_2.gif | Bin 0 -> 1006 bytes modules/dejala/picto_3.gif | Bin 0 -> 992 bytes modules/dejala/picto_4.gif | Bin 0 -> 1009 bytes modules/dejala/picto_5.gif | Bin 0 -> 1032 bytes modules/dejala/picto_6.gif | Bin 0 -> 973 bytes modules/dejala/picto_7.gif | Bin 0 -> 1041 bytes modules/dejala/picto_8.gif | Bin 0 -> 1042 bytes modules/dejala/submenu-bg.gif | Bin 0 -> 52 bytes modules/dejala/timetable.css | 49 + modules/dejala/timetable.js | 104 + modules/dibs/config.xml | 11 + modules/dibs/de.php | 43 + modules/dibs/dibs.jpg | Bin 0 -> 1931 bytes modules/dibs/dibs.php | 392 + modules/dibs/dibs.tpl | 13 + modules/dibs/es.php | 43 + modules/dibs/fr.php | 43 + modules/dibs/hookorderconfirmation.tpl | 11 + modules/dibs/img/da.jpg | Bin 0 -> 1364 bytes modules/dibs/img/en.jpg | Bin 0 -> 665 bytes modules/dibs/img/no.jpg | Bin 0 -> 11692 bytes modules/dibs/img/sv.jpg | Bin 0 -> 1402 bytes modules/dibs/it.php | 43 + modules/dibs/logo.gif | Bin 0 -> 1654 bytes modules/dibs/logos/dibs_black.jpg | Bin 0 -> 1814 bytes modules/dibs/logos/dibs_blue.jpg | Bin 0 -> 1953 bytes modules/dibs/logos/dibs_green.jpg | Bin 0 -> 1652 bytes modules/dibs/logos/dibs_grey.jpg | Bin 0 -> 1216 bytes modules/dibs/logos/dibs_purple.jpg | Bin 0 -> 1952 bytes modules/dibs/logos/dibs_yellow.jpg | Bin 0 -> 1670 bytes modules/dibs/validation.php | 53 + modules/editorial/EditorialClass.php | 115 + modules/editorial/config.xml | 12 + modules/editorial/de.php | 23 + modules/editorial/editorial.php | 313 + modules/editorial/editorial.tpl | 41 + modules/editorial/editorial.xml | 16 + modules/editorial/en.php | 4 + modules/editorial/es.php | 23 + modules/editorial/fr.php | 23 + modules/editorial/homepage_logo.jpg | Bin 0 -> 21250 bytes modules/editorial/it.php | 23 + modules/editorial/logo.gif | Bin 0 -> 627 bytes modules/ekomi/config.xml | 11 + modules/ekomi/de.php | 14 + modules/ekomi/ekomi.php | 131 + modules/ekomi/es.php | 14 + modules/ekomi/fr.php | 17 + modules/ekomi/it.php | 14 + modules/ekomi/logo.gif | Bin 0 -> 1095 bytes modules/ekomi/mails/de/ekomi.html | 10 + modules/ekomi/mails/de/ekomi.txt | 4 + modules/ekomi/mails/en/ekomi.html | 4 + modules/ekomi/mails/en/ekomi.txt | 4 + modules/ekomi/mails/es/ekomi.html | 11 + modules/ekomi/mails/es/ekomi.txt | 4 + modules/ekomi/mails/fr/ekomi.html | 4 + modules/ekomi/mails/fr/ekomi.txt | 4 + modules/ekomi/mails/it/ekomi.html | 10 + modules/ekomi/mails/it/ekomi.txt | 4 + .../envoimoinscher/AdminEnvoiMoinsCher.gif | Bin 0 -> 604 bytes .../envoimoinscher/AdminEnvoiMoinsCher.php | 314 + modules/envoimoinscher/config.xml | 12 + modules/envoimoinscher/de.php | 117 + modules/envoimoinscher/envoimoinscher.php | 592 + modules/envoimoinscher/es.php | 117 + modules/envoimoinscher/fr.php | 117 + modules/envoimoinscher/install.sql | 84 + modules/envoimoinscher/it.php | 117 + modules/envoimoinscher/logo.gif | Bin 0 -> 604 bytes modules/envoimoinscher/logocarre.png | Bin 0 -> 13384 bytes modules/envoimoinscher/ps_emc.png | Bin 0 -> 11858 bytes modules/envoimoinscher/tracking.php | 109 + modules/fedexcarrier/RateService_v9.wsdl | 4756 +++++ modules/fedexcarrier/carrier.jpg | Bin 0 -> 2785 bytes modules/fedexcarrier/config.xml | 12 + modules/fedexcarrier/de.php | 145 + modules/fedexcarrier/es.php | 145 + modules/fedexcarrier/fedexcarrier.php | 1704 ++ modules/fedexcarrier/fr.php | 145 + modules/fedexcarrier/it.php | 145 + modules/fedexcarrier/logo.gif | Bin 0 -> 552 bytes modules/fedexcarrier/sql-install.php | 89 + modules/fedexcarrier/sql-uninstall.php | 11 + modules/feeder/config.xml | 11 + modules/feeder/de.php | 6 + modules/feeder/en.php | 4 + modules/feeder/es.php | 6 + modules/feeder/feeder.php | 92 + modules/feeder/feederHeader.tpl | 27 + modules/feeder/fr.php | 6 + modules/feeder/it.php | 6 + modules/feeder/logo.gif | Bin 0 -> 1009 bytes modules/feeder/rss.php | 83 + modules/fianetfraud/config.xml | 12 + modules/fianetfraud/cron_reevaluate.php | 31 + modules/fianetfraud/cron_waiting.php | 33 + modules/fianetfraud/de.php | 36 + modules/fianetfraud/es.php | 36 + .../fianet/classes/fianet_key_32bits.php | 274 + .../fianet/classes/fianet_key_64bits.php | 279 + .../fianet/classes/fianet_sender.php | 473 + .../classes/fianet_sender.private.inc.php | 235 + .../fianet/classes/fianet_socket.php | 172 + .../classes/order/fianet_adress_xml.php | 76 + .../classes/order/fianet_appartment_xml.php | 44 + .../order/fianet_billing_adress_xml.php | 13 + .../classes/order/fianet_billing_user_xml.php | 13 + .../order/fianet_delivery_adress_xml.php | 11 + .../order/fianet_delivery_user_xml.php | 11 + .../classes/order/fianet_info_order_xml.php | 50 + .../fianet/classes/order/fianet_order_xml.php | 68 + .../classes/order/fianet_paraobject_xml.php | 23 + .../classes/order/fianet_payment_xml.php | 76 + .../classes/order/fianet_product_list_xml.php | 49 + .../classes/order/fianet_product_xml.php | 59 + .../order/fianet_rnp_info_order_xml.php | 36 + .../classes/order/fianet_rnp_order_xml.php | 142 + .../classes/order/fianet_rnp_wallet_xml.php | 60 + .../classes/order/fianet_transport_xml.php | 42 + .../order/fianet_user_siteconso_xml.php | 29 + .../fianet/classes/order/fianet_user_xml.php | 80 + .../order/fianet_xml_paracallback_builder.php | 44 + modules/fianetfraud/fianet/const/fianet.php | 4 + modules/fianetfraud/fianet/const/url_rnp.php | 6 + modules/fianetfraud/fianet/const/url_sac.php | 10 + modules/fianetfraud/fianet/fianet.php | 49 + modules/fianetfraud/fianet/includes/debug.php | 77 + .../fianetfraud/fianet/includes/general.php | 71 + .../fianetfraud/fianet/includes/xml2array.php | 119 + .../fianet/to_implement/implement.php | 12 + modules/fianetfraud/fianetfraud.php | 623 + modules/fianetfraud/fr.php | 36 + modules/fianetfraud/install.sql | 13 + modules/fianetfraud/it.php | 36 + modules/fianetfraud/logo.gif | Bin 0 -> 230 bytes modules/fianetfraud/logo.jpg | Bin 0 -> 15435 bytes modules/fianetsceau/config.xml | 12 + modules/fianetsceau/de.php | 21 + modules/fianetsceau/es.php | 21 + modules/fianetsceau/fianetsceau.php | 237 + modules/fianetsceau/fr.php | 21 + modules/fianetsceau/it.php | 21 + modules/fianetsceau/logo.gif | Bin 0 -> 994 bytes modules/fianetsceau/logo.jpg | Bin 0 -> 20511 bytes modules/followup/config.xml | 12 + modules/followup/cron.php | 40 + modules/followup/de.php | 44 + modules/followup/en.php | 4 + modules/followup/es.php | 44 + modules/followup/followup.php | 446 + modules/followup/fr.php | 44 + modules/followup/it.php | 44 + modules/followup/logo-2.gif | Bin 0 -> 606 bytes modules/followup/logo.gif | Bin 0 -> 587 bytes modules/followup/mails/de/followup_1.html | 46 + modules/followup/mails/de/followup_1.txt | 11 + modules/followup/mails/de/followup_2.html | 46 + modules/followup/mails/de/followup_2.txt | 10 + modules/followup/mails/de/followup_3.html | 49 + modules/followup/mails/de/followup_3.txt | 9 + modules/followup/mails/de/followup_4.html | 48 + modules/followup/mails/de/followup_4.txt | 11 + modules/followup/mails/en/followup_1.html | 49 + modules/followup/mails/en/followup_1.txt | 13 + modules/followup/mails/en/followup_2.html | 43 + modules/followup/mails/en/followup_2.txt | 9 + modules/followup/mails/en/followup_3.html | 45 + modules/followup/mails/en/followup_3.txt | 9 + modules/followup/mails/en/followup_4.html | 45 + modules/followup/mails/en/followup_4.txt | 11 + modules/followup/mails/es/followup_1.html | 47 + modules/followup/mails/es/followup_1.txt | 0 modules/followup/mails/es/followup_2.html | 47 + modules/followup/mails/es/followup_2.txt | 0 modules/followup/mails/es/followup_3.html | 47 + modules/followup/mails/es/followup_3.txt | 0 modules/followup/mails/es/followup_4.html | 47 + modules/followup/mails/es/followup_4.txt | 0 modules/followup/mails/fr/followup_1.html | 49 + modules/followup/mails/fr/followup_1.txt | 9 + modules/followup/mails/fr/followup_2.html | 43 + modules/followup/mails/fr/followup_2.txt | 9 + modules/followup/mails/fr/followup_3.html | 44 + modules/followup/mails/fr/followup_3.txt | 9 + modules/followup/mails/fr/followup_4.html | 44 + modules/followup/mails/fr/followup_4.txt | 9 + modules/followup/mails/it/followup_1.html | 46 + modules/followup/mails/it/followup_1.txt | 13 + modules/followup/mails/it/followup_2.html | 46 + modules/followup/mails/it/followup_2.txt | 9 + modules/followup/mails/it/followup_3.html | 46 + modules/followup/mails/it/followup_3.txt | 9 + modules/followup/mails/it/followup_4.html | 46 + modules/followup/mails/it/followup_4.txt | 11 + modules/gadsense/adsense_script.gif | Bin 0 -> 2456 bytes modules/gadsense/config.xml | 12 + modules/gadsense/de.php | 13 + modules/gadsense/en.php | 4 + modules/gadsense/es.php | 13 + modules/gadsense/fr.php | 13 + modules/gadsense/gadsense.php | 116 + modules/gadsense/it.php | 13 + modules/gadsense/logo.gif | Bin 0 -> 378 bytes modules/ganalytics/config.xml | 12 + modules/ganalytics/de.php | 49 + modules/ganalytics/en.php | 4 + modules/ganalytics/es.php | 49 + modules/ganalytics/fr.php | 49 + modules/ganalytics/ganalytics.php | 206 + modules/ganalytics/header.tpl | 38 + modules/ganalytics/it.php | 49 + modules/ganalytics/logo.gif | Bin 0 -> 1117 bytes modules/gcheckout/config.xml | 11 + modules/gcheckout/confirm.tpl | 56 + modules/gcheckout/de.php | 42 + modules/gcheckout/en.php | 4 + modules/gcheckout/es.php | 42 + modules/gcheckout/fr.php | 42 + modules/gcheckout/gcheckout.gif | Bin 0 -> 2569 bytes modules/gcheckout/gcheckout.php | 206 + modules/gcheckout/it.php | 42 + modules/gcheckout/library/googlecart.php | 1612 ++ modules/gcheckout/library/googleitem.php | 161 + modules/gcheckout/library/googlelog.php | 96 + .../library/googlemerchantcalculations.php | 115 + modules/gcheckout/library/googlerequest.php | 757 + modules/gcheckout/library/googleresponse.php | 221 + modules/gcheckout/library/googleresult.php | 105 + modules/gcheckout/library/googleshipping.php | 532 + modules/gcheckout/library/googletax.php | 146 + .../library/xml-processing/gc_xmlbuilder.php | 94 + .../library/xml-processing/gc_xmlparser.php | 202 + modules/gcheckout/logo.gif | Bin 0 -> 378 bytes modules/gcheckout/payment.php | 47 + modules/gcheckout/payment.tpl | 32 + modules/gcheckout/payment_return.tpl | 27 + modules/gcheckout/validation.php | 159 + .../graphartichow/artichow/AntiSpam.class.php | 224 + .../graphartichow/artichow/Artichow.cfg.php | 84 + .../graphartichow/artichow/BarPlot.class.php | 364 + .../artichow/Component.class.php | 415 + .../graphartichow/artichow/Graph.class.php | 412 + .../graphartichow/artichow/Image.class.php | 606 + .../graphartichow/artichow/LinePlot.class.php | 585 + .../graphartichow/artichow/MathPlot.class.php | 438 + .../graphartichow/artichow/Pattern.class.php | 96 + modules/graphartichow/artichow/Pie.class.php | 694 + modules/graphartichow/artichow/Plot.class.php | 1463 ++ .../artichow/ScatterPlot.class.php | 300 + modules/graphartichow/artichow/cache/Abel | Bin 0 -> 15596 bytes .../graphartichow/artichow/cache/Abel-time | 2 + modules/graphartichow/artichow/cache/Albert | Bin 0 -> 14816 bytes .../graphartichow/artichow/cache/Albert-time | 2 + .../graphartichow/artichow/cache/Example-006 | Bin 0 -> 13372 bytes .../artichow/cache/Example-006-time | 2 + modules/graphartichow/artichow/common.php | 96 + modules/graphartichow/artichow/font/Tuffy.ttf | Bin 0 -> 19300 bytes .../graphartichow/artichow/font/TuffyBold.ttf | Bin 0 -> 16440 bytes .../artichow/font/TuffyBoldItalic.ttf | Bin 0 -> 18068 bytes .../artichow/font/TuffyItalic.ttf | Bin 0 -> 18904 bytes .../graphartichow/artichow/images/book.png | Bin 0 -> 797 bytes .../graphartichow/artichow/images/error.png | Bin 0 -> 6066 bytes .../images/errors/missing-anti-aliasing.png | Bin 0 -> 7634 bytes .../artichow/images/errors/missing-gd2.png | Bin 0 -> 7448 bytes .../artichow/images/paperclip.png | Bin 0 -> 452 bytes .../graphartichow/artichow/images/star.png | Bin 0 -> 748 bytes .../graphartichow/artichow/inc/Axis.class.php | 768 + .../artichow/inc/Border.class.php | 197 + .../artichow/inc/Color.class.php | 165 + .../artichow/inc/Driver.class.php | 724 + .../graphartichow/artichow/inc/Font.class.php | 262 + .../artichow/inc/Gradient.class.php | 135 + .../graphartichow/artichow/inc/Grid.class.php | 290 + .../artichow/inc/Label.class.php | 587 + .../artichow/inc/Legend.class.php | 709 + .../graphartichow/artichow/inc/Mark.class.php | 489 + .../graphartichow/artichow/inc/Math.class.php | 831 + .../artichow/inc/Shadow.class.php | 405 + .../graphartichow/artichow/inc/Text.class.php | 233 + .../graphartichow/artichow/inc/Tick.class.php | 343 + .../artichow/inc/Tools.class.php | 174 + .../artichow/inc/drivers/gd.class.php | 1335 ++ .../artichow/inc/drivers/ming.class.php | 773 + .../artichow/patterns/BarDepth.php | 84 + .../artichow/patterns/LightLine.php | 49 + modules/graphartichow/config.xml | 11 + modules/graphartichow/de.php | 6 + modules/graphartichow/en.php | 4 + modules/graphartichow/es.php | 6 + modules/graphartichow/fr.php | 6 + modules/graphartichow/graphartichow.php | 369 + modules/graphartichow/it.php | 6 + modules/graphartichow/logo.gif | Bin 0 -> 1042 bytes modules/graphgooglechart/config.xml | 11 + modules/graphgooglechart/de.php | 6 + modules/graphgooglechart/en.php | 4 + modules/graphgooglechart/es.php | 6 + modules/graphgooglechart/fr.php | 6 + modules/graphgooglechart/graphgooglechart.php | 247 + modules/graphgooglechart/it.php | 6 + modules/graphgooglechart/logo.gif | Bin 0 -> 953 bytes modules/graphvisifire/config.xml | 11 + modules/graphvisifire/de.php | 6 + modules/graphvisifire/en.php | 4 + modules/graphvisifire/es.php | 6 + modules/graphvisifire/fr.php | 6 + modules/graphvisifire/graphvisifire.php | 186 + modules/graphvisifire/it.php | 6 + modules/graphvisifire/logo.gif | Bin 0 -> 1012 bytes modules/graphvisifire/visifire/Visifire.js | 353 + modules/graphvisifire/visifire/Visifire.xap | Bin 0 -> 152606 bytes modules/graphxmlswfcharts/config.xml | 11 + modules/graphxmlswfcharts/de.php | 6 + modules/graphxmlswfcharts/en.php | 4 + modules/graphxmlswfcharts/es.php | 6 + modules/graphxmlswfcharts/fr.php | 6 + .../graphxmlswfcharts/graphxmlswfcharts.php | 258 + modules/graphxmlswfcharts/it.php | 6 + modules/graphxmlswfcharts/logo.gif | Bin 0 -> 979 bytes .../xml_swf_charts/AC_RunActiveContent.js | 292 + .../xml_swf_charts/charts.swf | Bin 0 -> 51456 bytes .../xml_swf_charts/charts.txt | 1 + .../xml_swf_charts/charts_library/ar3d.swf | Bin 0 -> 10349 bytes .../xml_swf_charts/charts_library/arno.swf | Bin 0 -> 8119 bytes .../xml_swf_charts/charts_library/ars3.swf | Bin 0 -> 10756 bytes .../xml_swf_charts/charts_library/arst.swf | Bin 0 -> 8444 bytes .../xml_swf_charts/charts_library/brfl.swf | Bin 0 -> 7351 bytes .../xml_swf_charts/charts_library/brno.swf | Bin 0 -> 8660 bytes .../xml_swf_charts/charts_library/brst.swf | Bin 0 -> 8646 bytes .../xml_swf_charts/charts_library/buno.swf | Bin 0 -> 7014 bytes .../xml_swf_charts/charts_library/cl3d.swf | Bin 0 -> 10512 bytes .../xml_swf_charts/charts_library/clfl.swf | Bin 0 -> 7125 bytes .../xml_swf_charts/charts_library/clim.swf | Bin 0 -> 6963 bytes .../xml_swf_charts/charts_library/clno.swf | Bin 0 -> 8394 bytes .../xml_swf_charts/charts_library/clp3.swf | Bin 0 -> 10524 bytes .../xml_swf_charts/charts_library/cls3.swf | Bin 0 -> 10616 bytes .../xml_swf_charts/charts_library/clst.swf | Bin 0 -> 8486 bytes .../xml_swf_charts/charts_library/cnno.swf | Bin 0 -> 7450 bytes .../xml_swf_charts/charts_library/dono.swf | Bin 0 -> 6615 bytes .../xml_swf_charts/charts_library/lnno.swf | Bin 0 -> 9111 bytes .../xml_swf_charts/charts_library/mxno.swf | Bin 0 -> 10229 bytes .../xml_swf_charts/charts_library/pi3d.swf | Bin 0 -> 9222 bytes .../xml_swf_charts/charts_library/piim.swf | Bin 0 -> 5572 bytes .../xml_swf_charts/charts_library/pino.swf | Bin 0 -> 6814 bytes .../xml_swf_charts/charts_library/pono.swf | Bin 0 -> 8529 bytes .../xml_swf_charts/charts_library/scno.swf | Bin 0 -> 8069 bytes modules/gridhtml/config.xml | 11 + modules/gridhtml/de.php | 5 + modules/gridhtml/en.php | 4 + modules/gridhtml/es.php | 5 + modules/gridhtml/fr.php | 5 + modules/gridhtml/gridhtml.php | 185 + modules/gridhtml/it.php | 5 + modules/gridhtml/logo.gif | Bin 0 -> 998 bytes modules/gsitemap/config.xml | 11 + modules/gsitemap/de.php | 24 + modules/gsitemap/en.php | 4 + modules/gsitemap/es.php | 24 + modules/gsitemap/fr.php | 24 + modules/gsitemap/gsitemap.php | 270 + modules/gsitemap/it.php | 24 + modules/gsitemap/logo.gif | Bin 0 -> 378 bytes modules/hipay/1.png | Bin 0 -> 2216 bytes modules/hipay/2.png | Bin 0 -> 2399 bytes modules/hipay/3.png | Bin 0 -> 2530 bytes modules/hipay/config.xml | 12 + modules/hipay/create.jpg | Bin 0 -> 13498 bytes modules/hipay/de.php | 46 + modules/hipay/es.php | 46 + modules/hipay/fr.php | 45 + modules/hipay/help.png | Bin 0 -> 787 bytes modules/hipay/hipay.php | 514 + modules/hipay/hipay.png | Bin 0 -> 2636 bytes modules/hipay/it.php | 46 + modules/hipay/logo.gif | Bin 0 -> 1073 bytes modules/hipay/mapi/mapi_affiliate.php | 229 + modules/hipay/mapi/mapi_comm_xml.php | 122 + modules/hipay/mapi/mapi_defs.php | 86 + modules/hipay/mapi/mapi_exception.php | 126 + modules/hipay/mapi/mapi_installment.php | 208 + modules/hipay/mapi/mapi_item.php | 36 + modules/hipay/mapi/mapi_lockable.php | 23 + modules/hipay/mapi/mapi_multiplepayment.php | 44 + modules/hipay/mapi/mapi_order.php | 370 + modules/hipay/mapi/mapi_package.php | 20 + modules/hipay/mapi/mapi_payment.php | 447 + modules/hipay/mapi/mapi_paymentparams.php | 849 + modules/hipay/mapi/mapi_product.php | 274 + modules/hipay/mapi/mapi_send_xml.php | 82 + modules/hipay/mapi/mapi_simplepayment.php | 20 + modules/hipay/mapi/mapi_tax.php | 168 + modules/hipay/mapi/mapi_utf8.php | 67 + modules/hipay/mapi/mapi_utils.php | 73 + modules/hipay/mapi/mapi_xml.php | 71 + modules/hipay/payment.tpl | 39 + modules/hipay/redirect.php | 41 + modules/hipay/screenshots/accountnumber.png | Bin 0 -> 17281 bytes .../hipay/screenshots/merchantpassword.png | Bin 0 -> 40449 bytes modules/hipay/screenshots/siteid.png | Bin 0 -> 43597 bytes modules/hipay/validation.php | 33 + modules/homefeatured/config.xml | 11 + modules/homefeatured/de.php | 18 + modules/homefeatured/en.php | 4 + modules/homefeatured/es.php | 18 + modules/homefeatured/fr.php | 18 + modules/homefeatured/homefeatured.php | 106 + modules/homefeatured/homefeatured.tpl | 64 + modules/homefeatured/it.php | 18 + modules/homefeatured/logo.gif | Bin 0 -> 597 bytes modules/iadvize/config.xml | 11 + modules/iadvize/de.php | 19 + modules/iadvize/es.php | 19 + modules/iadvize/fr.php | 19 + modules/iadvize/iadvize.php | 158 + modules/iadvize/it.php | 19 + modules/iadvize/logo-iadvize.gif | Bin 0 -> 4771 bytes modules/iadvize/logo.gif | Bin 0 -> 585 bytes modules/iadvize/offer-fr.jpg | Bin 0 -> 23217 bytes modules/importerosc/config.xml | 11 + modules/importerosc/de.php | 13 + modules/importerosc/es.php | 13 + modules/importerosc/fr.php | 13 + modules/importerosc/importerosc.php | 409 + modules/importerosc/it.php | 13 + modules/importerosc/logo.gif | Bin 0 -> 2378 bytes modules/importerosc/passwordhash.php | 254 + modules/index.php | 36 + modules/livezilla/config.xml | 11 + modules/livezilla/de.php | 20 + modules/livezilla/es.php | 20 + modules/livezilla/fr.php | 20 + modules/livezilla/it.php | 20 + modules/livezilla/livezilla.php | 123 + modules/livezilla/livezilla.tpl | 54 + modules/livezilla/logo.gif | Bin 0 -> 1066 bytes modules/livezilla/lz_download.gif | Bin 0 -> 1500 bytes modules/livezilla/lz_package.gif | Bin 0 -> 9189 bytes modules/livezilla/offline.png | Bin 0 -> 6608 bytes modules/loyalty/LoyaltyModule.php | 247 + modules/loyalty/LoyaltyStateModule.php | 93 + modules/loyalty/config.xml | 12 + modules/loyalty/de.php | 99 + modules/loyalty/en.php | 4 + modules/loyalty/es.php | 99 + modules/loyalty/fr.php | 99 + modules/loyalty/it.php | 99 + modules/loyalty/logo.gif | Bin 0 -> 1016 bytes modules/loyalty/loyalty-program.php | 169 + modules/loyalty/loyalty.gif | Bin 0 -> 1016 bytes modules/loyalty/loyalty.php | 673 + modules/loyalty/loyalty.tpl | 204 + modules/loyalty/my-account.tpl | 29 + modules/loyalty/product.tpl | 43 + modules/loyalty/shopping-cart.tpl | 31 + modules/mailalerts/config.xml | 12 + modules/mailalerts/de.php | 41 + modules/mailalerts/en.php | 4 + modules/mailalerts/es.php | 41 + modules/mailalerts/fr.php | 41 + modules/mailalerts/img/delete.gif | Bin 0 -> 358 bytes modules/mailalerts/it.php | 41 + modules/mailalerts/logo.gif | Bin 0 -> 792 bytes modules/mailalerts/mailalerts-ajax_add.php | 67 + modules/mailalerts/mailalerts-ajax_check.php | 44 + modules/mailalerts/mailalerts.php | 540 + modules/mailalerts/mails/de/customer_qty.html | 34 + modules/mailalerts/mails/de/customer_qty.txt | 10 + modules/mailalerts/mails/de/new_order.html | 116 + modules/mailalerts/mails/de/new_order.txt | 41 + .../mails/de/productoutofstock.html | 34 + .../mailalerts/mails/de/productoutofstock.txt | 12 + modules/mailalerts/mails/en/customer_qty.html | 34 + modules/mailalerts/mails/en/customer_qty.txt | 12 + modules/mailalerts/mails/en/new_order.html | 125 + modules/mailalerts/mails/en/new_order.txt | 41 + .../mails/en/productoutofstock.html | 34 + .../mailalerts/mails/en/productoutofstock.txt | 11 + modules/mailalerts/mails/es/customer_qty.html | 35 + modules/mailalerts/mails/es/customer_qty.txt | 12 + modules/mailalerts/mails/es/new_order.html | 118 + modules/mailalerts/mails/es/new_order.txt | 41 + .../mails/es/productoutofstock.html | 35 + .../mailalerts/mails/es/productoutofstock.txt | 10 + modules/mailalerts/mails/fr/customer_qty.html | 34 + modules/mailalerts/mails/fr/customer_qty.txt | 10 + modules/mailalerts/mails/fr/new_order.html | 125 + modules/mailalerts/mails/fr/new_order.txt | 39 + .../mails/fr/productoutofstock.html | 34 + .../mailalerts/mails/fr/productoutofstock.txt | 9 + modules/mailalerts/mails/it/customer_qty.html | 34 + modules/mailalerts/mails/it/customer_qty.txt | 12 + modules/mailalerts/mails/it/new_order.html | 116 + modules/mailalerts/mails/it/new_order.txt | 41 + .../mails/it/productoutofstock.html | 34 + .../mailalerts/mails/it/productoutofstock.txt | 11 + modules/mailalerts/my-account.tpl | 32 + modules/mailalerts/myalerts.php | 65 + modules/mailalerts/myalerts.tpl | 79 + modules/mailalerts/product.tpl | 93 + modules/mondialrelay/AdminMondialRelay.gif | Bin 0 -> 800 bytes modules/mondialrelay/AdminMondialRelay.php | 455 + modules/mondialrelay/MondialRelayClass.php | 106 + modules/mondialrelay/config.xml | 12 + modules/mondialrelay/cron.php | 76 + modules/mondialrelay/de.php | 126 + modules/mondialrelay/en.php | 9 + modules/mondialrelay/es.php | 126 + modules/mondialrelay/fr.php | 128 + modules/mondialrelay/googlemap.php | 111 + modules/mondialrelay/it.php | 126 + .../CreationEtiquettePointRelais_ajax.php | 225 + .../ImpressionEtiquettePointRelais_ajax.php | 43 + modules/mondialrelay/kit_mondialrelay/MR.gif | Bin 0 -> 1756 bytes .../kit_mondialrelay/MR_small.gif | Bin 0 -> 797 bytes .../RechercheDetailPointRelais_ajax.php | 151 + .../RecherchePointRelais_ajax.php | 102 + .../kit_mondialrelay/SuiviExpedition_ajax.php | 6 + .../mondialrelay/kit_mondialrelay/close.gif | Bin 0 -> 246 bytes .../kit_mondialrelay/js/include_MR.js | 72 + .../kit_mondialrelay/js/ressources_MR.js | 616 + .../mondialrelay/kit_mondialrelay/loading.gif | Bin 0 -> 6494 bytes .../mondialrelay/kit_mondialrelay/loupe.gif | Bin 0 -> 1756 bytes .../mondialrelay/kit_mondialrelay/marker.gif | Bin 0 -> 1196 bytes .../kit_mondialrelay/mr_opc_ajax.php | 27 + .../kit_mondialrelay/statCodeError.php | 77 + .../tools/nusoap/lib/class.nusoap_base.php | 995 + .../tools/nusoap/lib/class.soap_fault.php | 89 + .../tools/nusoap/lib/class.soap_parser.php | 642 + .../tools/nusoap/lib/class.soap_server.php | 1126 ++ .../nusoap/lib/class.soap_transport_http.php | 1306 ++ .../tools/nusoap/lib/class.soap_val.php | 106 + .../tools/nusoap/lib/class.soapclient.php | 991 + .../tools/nusoap/lib/class.wsdl.php | 1937 ++ .../tools/nusoap/lib/class.wsdlcache.php | 209 + .../tools/nusoap/lib/class.xmlschema.php | 972 + .../tools/nusoap/lib/nusoap.php | 8148 ++++++++ .../tools/nusoap/lib/nusoapmime.php | 501 + modules/mondialrelay/logo.gif | Bin 0 -> 1035 bytes modules/mondialrelay/mondialrelay.php | 891 + modules/mondialrelay/mondialrelay.tpl | 93 + modules/mondialrelay/mrInstall.sql | 43 + modules/mondialrelay/orderDetail.tpl | 29 + modules/mondialrelay/page_iso.php | 42 + modules/mondialrelay/style.css | 41 + modules/moneybookers/config.xml | 12 + modules/moneybookers/confirmation.tpl | 44 + modules/moneybookers/de.php | 61 + modules/moneybookers/es.php | 61 + modules/moneybookers/fr.php | 61 + modules/moneybookers/it.php | 61 + modules/moneybookers/logo-cc-1.gif | Bin 0 -> 3877 bytes modules/moneybookers/logo-cc-2.gif | Bin 0 -> 3969 bytes modules/moneybookers/logo-mb-1.gif | Bin 0 -> 3987 bytes modules/moneybookers/logo-mb-2.gif | Bin 0 -> 4470 bytes modules/moneybookers/logo-mb-3.gif | Bin 0 -> 5117 bytes modules/moneybookers/logo-mb-4.gif | Bin 0 -> 3874 bytes modules/moneybookers/logo-mb-5.gif | Bin 0 -> 5021 bytes modules/moneybookers/logo-mb-6.gif | Bin 0 -> 4391 bytes modules/moneybookers/logo-mb-7.gif | Bin 0 -> 4428 bytes modules/moneybookers/logo-mb.gif | Bin 0 -> 9588 bytes modules/moneybookers/logo.gif | Bin 0 -> 585 bytes .../moneybookers/logos/international/amex.gif | Bin 0 -> 2462 bytes .../logos/international/diners.gif | Bin 0 -> 2297 bytes .../logos/international/ewallet.gif | Bin 0 -> 2429 bytes .../moneybookers/logos/international/jcb.gif | Bin 0 -> 2084 bytes .../logos/international/maestro.gif | Bin 0 -> 2021 bytes .../logos/international/mastercard.gif | Bin 0 -> 2074 bytes .../moneybookers/logos/international/visa.gif | Bin 0 -> 1544 bytes .../logos/international/visadebit.gif | Bin 0 -> 1484 bytes modules/moneybookers/logos/local/4b.gif | Bin 0 -> 1940 bytes modules/moneybookers/logos/local/cartasi.gif | Bin 0 -> 2406 bytes .../moneybookers/logos/local/cartebleue.gif | Bin 0 -> 2082 bytes modules/moneybookers/logos/local/dankort.gif | Bin 0 -> 1987 bytes modules/moneybookers/logos/local/ec.gif | Bin 0 -> 1347 bytes modules/moneybookers/logos/local/enets.gif | Bin 0 -> 2145 bytes modules/moneybookers/logos/local/epay.gif | Bin 0 -> 1182 bytes modules/moneybookers/logos/local/eps.gif | Bin 0 -> 2010 bytes modules/moneybookers/logos/local/euro6000.gif | Bin 0 -> 2255 bytes modules/moneybookers/logos/local/giropay.gif | Bin 0 -> 1504 bytes modules/moneybookers/logos/local/ideal.gif | Bin 0 -> 2031 bytes .../logos/local/instantbanktransfer.gif | Bin 0 -> 3521 bytes modules/moneybookers/logos/local/laser.gif | Bin 0 -> 1458 bytes modules/moneybookers/logos/local/nordea.gif | Bin 0 -> 1548 bytes modules/moneybookers/logos/local/p24.gif | Bin 0 -> 2249 bytes modules/moneybookers/logos/local/pekao.gif | Bin 0 -> 841 bytes modules/moneybookers/logos/local/poli.gif | Bin 0 -> 1991 bytes modules/moneybookers/logos/local/postepay.gif | Bin 0 -> 3086 bytes modules/moneybookers/logos/local/sofort.gif | Bin 0 -> 2447 bytes modules/moneybookers/logos/local/solo.gif | Bin 0 -> 1495 bytes modules/moneybookers/logos/local/unionpay.gif | Bin 0 -> 2088 bytes .../moneybookers/logos/local/visaelectron.gif | Bin 0 -> 1530 bytes .../moneybookers-currency-error.tpl | 29 + modules/moneybookers/moneybookers.php | 506 + modules/moneybookers/moneybookers.tpl | 160 + modules/moneybookers/prestashop_mb_en.gif | Bin 0 -> 12740 bytes modules/moneybookers/prestashop_mb_fr.gif | Bin 0 -> 31807 bytes modules/moneybookers/validation.php | 83 + modules/newsletter/config.xml | 11 + modules/newsletter/de.php | 32 + modules/newsletter/en.php | 4 + modules/newsletter/es.php | 32 + modules/newsletter/fr.php | 32 + modules/newsletter/it.php | 32 + modules/newsletter/logo.gif | Bin 0 -> 983 bytes modules/newsletter/newsletter.php | 233 + modules/ogone/checkwaitingorder.php | 35 + modules/ogone/config.xml | 11 + modules/ogone/confirmation.php | 48 + modules/ogone/de.php | 43 + modules/ogone/docs/en1.png | Bin 0 -> 29227 bytes modules/ogone/docs/en2.png | Bin 0 -> 16667 bytes modules/ogone/docs/en3.png | Bin 0 -> 11914 bytes modules/ogone/docs/en4.png | Bin 0 -> 73459 bytes modules/ogone/es.php | 43 + modules/ogone/fr.php | 43 + modules/ogone/hookorderconfirmation.tpl | 37 + modules/ogone/it.php | 43 + modules/ogone/logo.gif | Bin 0 -> 1079 bytes modules/ogone/ogone.gif | Bin 0 -> 1843 bytes modules/ogone/ogone.php | 213 + modules/ogone/ogone.tpl | 43 + modules/ogone/validation.php | 105 + modules/ogone/waiting.tpl | 44 + modules/pagesnotfound/comment.gif | Bin 0 -> 413 bytes modules/pagesnotfound/config.xml | 11 + modules/pagesnotfound/de.php | 21 + modules/pagesnotfound/en.php | 4 + modules/pagesnotfound/es.php | 21 + modules/pagesnotfound/fr.php | 21 + modules/pagesnotfound/it.php | 21 + modules/pagesnotfound/logo.gif | Bin 0 -> 898 bytes modules/pagesnotfound/pagesnotfound.php | 166 + modules/paypal/about.php | 37 + modules/paypal/about.tpl | 42 + modules/paypal/api/paypalconnect.php | 93 + modules/paypal/api/paypallib.php | 63 + modules/paypal/column.tpl | 29 + modules/paypal/config.xml | 12 + modules/paypal/confirm.tpl | 61 + modules/paypal/confirmation.tpl | 32 + modules/paypal/de.php | 225 + modules/paypal/error.tpl | 41 + modules/paypal/es.php | 225 + modules/paypal/express/authentication.tpl | 200 + modules/paypal/express/login.tpl | 52 + modules/paypal/express/paypalexpress.php | 104 + modules/paypal/express/shopping_cart.tpl | 27 + modules/paypal/express/submit.php | 379 + modules/paypal/fr.php | 225 + modules/paypal/img/AU_pp_express.gif | Bin 0 -> 3091 bytes modules/paypal/img/AU_pp_integral.gif | Bin 0 -> 5490 bytes modules/paypal/img/CA_pp_express.gif | Bin 0 -> 3091 bytes modules/paypal/img/CA_pp_integral.gif | Bin 0 -> 5253 bytes modules/paypal/img/CN_pp_express.gif | Bin 0 -> 3091 bytes modules/paypal/img/CN_pp_integral.gif | Bin 0 -> 6495 bytes modules/paypal/img/DE_pp_express.gif | Bin 0 -> 2376 bytes modules/paypal/img/DE_pp_integral.gif | Bin 0 -> 4632 bytes modules/paypal/img/ES_pp_express.gif | Bin 0 -> 3047 bytes modules/paypal/img/ES_pp_integral.gif | Bin 0 -> 5311 bytes modules/paypal/img/FR_pp_express.gif | Bin 0 -> 2866 bytes modules/paypal/img/FR_pp_integral.gif | Bin 0 -> 7046 bytes modules/paypal/img/IT_pp_express.gif | Bin 0 -> 3025 bytes modules/paypal/img/IT_pp_integral.gif | Bin 0 -> 7069 bytes modules/paypal/img/JP_pp_express.gif | Bin 0 -> 3091 bytes modules/paypal/img/JP_pp_integral.gif | Bin 0 -> 4563 bytes modules/paypal/img/NL_pp_express.gif | Bin 0 -> 3090 bytes modules/paypal/img/NL_pp_integral.gif | Bin 0 -> 3452 bytes modules/paypal/img/PL_pp_express.gif | Bin 0 -> 3244 bytes modules/paypal/img/PL_pp_integral.gif | Bin 0 -> 3466 bytes modules/paypal/img/PayPal_mark_60x38.gif | Bin 0 -> 956 bytes modules/paypal/img/UK_pp_express.gif | Bin 0 -> 3091 bytes modules/paypal/img/UK_pp_integral.gif | Bin 0 -> 7191 bytes modules/paypal/img/US_pp_express.gif | Bin 0 -> 3091 bytes modules/paypal/img/US_pp_integral.gif | Bin 0 -> 6181 bytes modules/paypal/img/integral_evolution.png | Bin 0 -> 18370 bytes .../img/integral_evolution_vertical.png | Bin 0 -> 24107 bytes modules/paypal/img/vertical_FR_large.png | Bin 0 -> 10725 bytes modules/paypal/img/vertical_US_large.png | Bin 0 -> 11877 bytes modules/paypal/integral_evolution/paypal.tpl | 31 + .../paypal/integral_evolution/redirect.php | 111 + .../paypal/integral_evolution/redirect.tpl | 93 + modules/paypal/ipn.php | 80 + modules/paypal/it.php | 225 + modules/paypal/logo.gif | Bin 0 -> 608 bytes modules/paypal/mails/de/error_reporting.html | 46 + modules/paypal/mails/de/error_reporting.txt | 9 + modules/paypal/mails/en/error_reporting.html | 42 + modules/paypal/mails/en/error_reporting.txt | 9 + modules/paypal/mails/es/error_reporting.html | 47 + modules/paypal/mails/es/error_reporting.txt | 9 + modules/paypal/mails/fr/error_reporting.html | 42 + modules/paypal/mails/fr/error_reporting.txt | 9 + modules/paypal/mails/it/error_reporting.html | 46 + modules/paypal/mails/it/error_reporting.txt | 9 + modules/paypal/payment/payment.tpl | 38 + modules/paypal/payment/paypalpayment.php | 88 + modules/paypal/payment/submit.php | 144 + modules/paypal/paypal.gif | Bin 0 -> 1525 bytes modules/paypal/paypal.php | 1240 ++ modules/paypal/prestashop_paypal.png | Bin 0 -> 5388 bytes modules/paypal/standard/paypal.tpl | 32 + modules/paypal/standard/redirect.php | 89 + modules/paypal/standard/redirect.tpl | 90 + modules/paypal/validation.php | 139 + modules/paysafecard/Disposition.php | 82 + modules/paysafecard/PrepaidServices.php | 663 + modules/paysafecard/PrepaidServicesAPI.php | 190 + modules/paysafecard/config.xml | 11 + modules/paysafecard/de.php | 51 + modules/paysafecard/disposition-error.tpl | 37 + modules/paysafecard/es.php | 51 + modules/paysafecard/fr.php | 51 + modules/paysafecard/img/payment-logo.png | Bin 0 -> 8718 bytes modules/paysafecard/img/payment-small.png | Bin 0 -> 333 bytes modules/paysafecard/img/payment.png | Bin 0 -> 5381 bytes modules/paysafecard/it.php | 51 + modules/paysafecard/keyring/.htaccess | 1 + .../paysafecard/keyring/paysafecard-CA.pem | 227 + modules/paysafecard/logo.gif | Bin 0 -> 940 bytes modules/paysafecard/payment.php | 102 + modules/paysafecard/payment.tpl | 32 + .../paysafecard-accept-payment.tpl | 43 + .../paysafecard/paysafecard-confirmation.tpl | 32 + modules/paysafecard/paysafecard.php | 116 + modules/paysafecard/prepaidservices.js | 38 + modules/paysafecard/redirect.php | 50 + modules/prestafraud/config.xml | 11 + modules/prestafraud/de.php | 62 + modules/prestafraud/es.php | 62 + modules/prestafraud/fr.php | 62 + modules/prestafraud/install.sql | 29 + modules/prestafraud/it.php | 62 + modules/prestafraud/logo.gif | Bin 0 -> 702 bytes modules/prestafraud/prestafraud.php | 592 + modules/productcomments/ProductComment.php | 260 + .../ProductCommentCriterion.php | 214 + modules/productcomments/ProductCriterion.php | 175 + modules/productcomments/config.xml | 11 + modules/productcomments/de.php | 72 + modules/productcomments/en.php | 4 + modules/productcomments/es.php | 72 + modules/productcomments/fr.php | 72 + modules/productcomments/img/accept.png | Bin 0 -> 781 bytes modules/productcomments/img/comment.png | Bin 0 -> 413 bytes .../productcomments/img/comments_delete.png | Bin 0 -> 670 bytes modules/productcomments/img/delete.gif | Bin 0 -> 752 bytes modules/productcomments/img/delete.png | Bin 0 -> 715 bytes modules/productcomments/img/note.png | Bin 0 -> 500 bytes modules/productcomments/img/note_go.png | Bin 0 -> 661 bytes modules/productcomments/img/star.gif | Bin 0 -> 815 bytes modules/productcomments/install.sql | 53 + modules/productcomments/it.php | 72 + .../productcomments/js/jquery.rating.pack.js | 12 + modules/productcomments/js/moderate.js | 77 + .../productcomments/js/productCriterion.js | 41 + .../productcomments/js/products-comparison.js | 46 + modules/productcomments/logo.gif | Bin 0 -> 557 bytes modules/productcomments/productcomments.php | 629 + modules/productcomments/productcomments.tpl | 137 + .../productcommentscriterion.php | 52 + .../productcomments/products-comparison.tpl | 116 + modules/productcomments/tab.tpl | 27 + modules/productscategory/config.xml | 11 + modules/productscategory/de.php | 17 + modules/productscategory/en.php | 4 + modules/productscategory/es.php | 17 + modules/productscategory/fr.php | 17 + modules/productscategory/img/thumbs_left.gif | Bin 0 -> 201 bytes modules/productscategory/img/thumbs_right.gif | Bin 0 -> 197 bytes modules/productscategory/it.php | 17 + modules/productscategory/logo.gif | Bin 0 -> 1071 bytes modules/productscategory/productscategory.css | 51 + modules/productscategory/productscategory.js | 54 + modules/productscategory/productscategory.php | 178 + modules/productscategory/productscategory.tpl | 56 + modules/producttooltip/config.xml | 11 + modules/producttooltip/de.php | 23 + modules/producttooltip/es.php | 23 + modules/producttooltip/fr.php | 23 + modules/producttooltip/it.php | 23 + modules/producttooltip/logo.gif | Bin 0 -> 359 bytes modules/producttooltip/producttooltip.php | 188 + modules/producttooltip/producttooltip.tpl | 36 + modules/producttooltip/sample.gif | Bin 0 -> 30852 bytes .../referralprogram/ReferralProgramModule.php | 186 + modules/referralprogram/authentication.tpl | 35 + modules/referralprogram/config.xml | 13 + modules/referralprogram/de.php | 110 + modules/referralprogram/en.php | 4 + modules/referralprogram/es.php | 110 + modules/referralprogram/fr.php | 110 + modules/referralprogram/it.php | 110 + modules/referralprogram/logo.gif | Bin 0 -> 1051 bytes .../de/referralprogram-congratulations.html | 46 + .../de/referralprogram-congratulations.txt | 8 + .../mails/de/referralprogram-invitation.html | 58 + .../mails/de/referralprogram-invitation.txt | 12 + .../mails/de/referralprogram-voucher.html | 46 + .../mails/de/referralprogram-voucher.txt | 12 + .../en/referralprogram-congratulations.html | 40 + .../en/referralprogram-congratulations.txt | 9 + .../mails/en/referralprogram-invitation.html | 52 + .../mails/en/referralprogram-invitation.txt | 15 + .../mails/en/referralprogram-voucher.html | 42 + .../mails/en/referralprogram-voucher.txt | 12 + .../es/referralprogram-congratulations.html | 47 + .../es/referralprogram-congratulations.txt | 9 + .../mails/es/referralprogram-invitation.html | 59 + .../mails/es/referralprogram-invitation.txt | 15 + .../mails/es/referralprogram-voucher.html | 47 + .../mails/es/referralprogram-voucher.txt | 10 + .../fr/referralprogram-congratulations.html | 40 + .../fr/referralprogram-congratulations.txt | 9 + .../mails/fr/referralprogram-invitation.html | 52 + .../mails/fr/referralprogram-invitation.txt | 15 + .../mails/fr/referralprogram-voucher.html | 43 + .../mails/fr/referralprogram-voucher.txt | 10 + .../it/referralprogram-congratulations.html | 46 + .../it/referralprogram-congratulations.txt | 9 + .../mails/it/referralprogram-invitation.html | 58 + .../mails/it/referralprogram-invitation.txt | 15 + .../mails/it/referralprogram-voucher.html | 46 + .../mails/it/referralprogram-voucher.txt | 12 + modules/referralprogram/my-account.tpl | 29 + .../referralprogram/order-confirmation.tpl | 30 + modules/referralprogram/preview-email.php | 56 + .../referralprogram-program.php | 187 + .../referralprogram-program.tpl | 223 + .../referralprogram/referralprogram-rules.php | 51 + .../referralprogram/referralprogram-rules.tpl | 33 + modules/referralprogram/referralprogram.gif | Bin 0 -> 1051 bytes modules/referralprogram/referralprogram.php | 599 + modules/referralprogram/referralprogram.xml | 13 + modules/referralprogram/shopping-cart.tpl | 35 + modules/reverso/config.xml | 12 + modules/reverso/de.php | 16 + modules/reverso/es.php | 16 + modules/reverso/fr.php | 16 + modules/reverso/it.php | 16 + modules/reverso/js/index.php | 26 + modules/reverso/js/reverso.js | 63 + modules/reverso/logo.gif | Bin 0 -> 1021 bytes modules/reverso/reverso.php | 168 + modules/reverso/reverso.tpl | 39 + modules/reverso/reverso_check.php | 41 + modules/secuvad/classes/PaymentCC.php | 64 + .../secuvad/classes/Secuvad_connection.php | 180 + modules/secuvad/classes/Secuvad_flux.php | 237 + modules/secuvad/config.xml | 12 + modules/secuvad/de.php | 114 + modules/secuvad/en.php | 101 + modules/secuvad/es.php | 114 + modules/secuvad/fr.php | 114 + modules/secuvad/install.sql | 93 + modules/secuvad/it.php | 114 + modules/secuvad/logo.gif | Bin 0 -> 631 bytes modules/secuvad/secuvad.php | 1333 ++ modules/secuvad/secuvad_config.php | 43 + modules/secuvad/secuvad_response.php | 95 + modules/sekeywords/config.xml | 11 + modules/sekeywords/de.php | 24 + modules/sekeywords/en.php | 4 + modules/sekeywords/es.php | 24 + modules/sekeywords/fr.php | 24 + modules/sekeywords/it.php | 24 + modules/sekeywords/logo.gif | Bin 0 -> 1013 bytes modules/sekeywords/sekeywords.php | 196 + modules/sendtoafriend/config.xml | 11 + modules/sendtoafriend/de.php | 21 + modules/sendtoafriend/en.php | 4 + modules/sendtoafriend/es.php | 21 + modules/sendtoafriend/fr.php | 21 + modules/sendtoafriend/it.php | 21 + modules/sendtoafriend/logo.gif | Bin 0 -> 633 bytes .../mails/de/send_to_a_friend.html | 40 + .../mails/de/send_to_a_friend.txt | 13 + .../mails/en/send_to_a_friend.html | 36 + .../mails/en/send_to_a_friend.txt | 13 + .../mails/es/send_to_a_friend.html | 41 + .../mails/es/send_to_a_friend.txt | 13 + .../mails/fr/send_to_a_friend.html | 36 + .../mails/fr/send_to_a_friend.txt | 13 + .../mails/it/send_to_a_friend.html | 40 + .../mails/it/send_to_a_friend.txt | 13 + modules/sendtoafriend/product_page.tpl | 27 + modules/sendtoafriend/sendtoafriend-form.php | 36 + modules/sendtoafriend/sendtoafriend.php | 131 + modules/sendtoafriend/sendtoafriend.png | Bin 0 -> 754 bytes modules/sendtoafriend/sendtoafriend.tpl | 66 + modules/shopimporter/ajax.php | 135 + modules/shopimporter/config.xml | 11 + modules/shopimporter/de.php | 92 + modules/shopimporter/es.php | 92 + modules/shopimporter/fr.php | 92 + modules/shopimporter/img/ajax-loader.gif | Bin 0 -> 1849 bytes modules/shopimporter/img/delete.gif | Bin 0 -> 992 bytes modules/shopimporter/img/error.png | Bin 0 -> 1061 bytes modules/shopimporter/img/file.png | Bin 0 -> 330 bytes modules/shopimporter/img/force.gif | Bin 0 -> 971 bytes modules/shopimporter/img/ok.png | Bin 0 -> 1162 bytes modules/shopimporter/img/skip.png | Bin 0 -> 1508 bytes modules/shopimporter/img/stop.png | Bin 0 -> 1496 bytes modules/shopimporter/img/warn.png | Bin 0 -> 1061 bytes modules/shopimporter/it.php | 92 + modules/shopimporter/logo.gif | Bin 0 -> 379 bytes modules/shopimporter/shopimporter.js | 543 + modules/shopimporter/shopimporter.php | 1254 ++ modules/socolissimo/ajax.php | 19 + modules/socolissimo/config.xml | 12 + modules/socolissimo/de.php | 87 + modules/socolissimo/es.php | 87 + modules/socolissimo/fr.php | 87 + modules/socolissimo/it.php | 87 + modules/socolissimo/logo.gif | Bin 0 -> 1625 bytes modules/socolissimo/redirect.php | 44 + modules/socolissimo/socolissimo.jpg | Bin 0 -> 8040 bytes modules/socolissimo/socolissimo.php | 761 + modules/socolissimo/socolissimo_carrier.tpl | 102 + modules/socolissimo/socolissimo_error.tpl | 37 + modules/socolissimo/validation.php | 204 + modules/statsbestcategories/config.xml | 11 + modules/statsbestcategories/de.php | 14 + modules/statsbestcategories/en.php | 4 + modules/statsbestcategories/es.php | 14 + modules/statsbestcategories/fr.php | 14 + modules/statsbestcategories/it.php | 14 + modules/statsbestcategories/logo.gif | Bin 0 -> 641 bytes .../statsbestcategories.php | 171 + modules/statsbestcustomers/config.xml | 11 + modules/statsbestcustomers/de.php | 23 + modules/statsbestcustomers/en.php | 4 + modules/statsbestcustomers/es.php | 23 + modules/statsbestcustomers/fr.php | 23 + modules/statsbestcustomers/it.php | 23 + modules/statsbestcustomers/logo.gif | Bin 0 -> 992 bytes .../statsbestcustomers/statsbestcustomers.php | 164 + modules/statsbestmanufacturers/config.xml | 11 + modules/statsbestmanufacturers/de.php | 13 + modules/statsbestmanufacturers/en.php | 4 + modules/statsbestmanufacturers/es.php | 13 + modules/statsbestmanufacturers/fr.php | 13 + modules/statsbestmanufacturers/it.php | 13 + modules/statsbestmanufacturers/logo.gif | Bin 0 -> 641 bytes .../statsbestmanufacturers.php | 145 + modules/statsbestproducts/config.xml | 11 + modules/statsbestproducts/de.php | 18 + modules/statsbestproducts/en.php | 4 + modules/statsbestproducts/es.php | 18 + modules/statsbestproducts/fr.php | 18 + modules/statsbestproducts/it.php | 18 + modules/statsbestproducts/logo.gif | Bin 0 -> 641 bytes .../statsbestproducts/statsbestproducts.php | 185 + modules/statsbestsuppliers/config.xml | 11 + modules/statsbestsuppliers/de.php | 13 + modules/statsbestsuppliers/en.php | 4 + modules/statsbestsuppliers/es.php | 13 + modules/statsbestsuppliers/fr.php | 13 + modules/statsbestsuppliers/it.php | 13 + modules/statsbestsuppliers/logo.gif | Bin 0 -> 641 bytes .../statsbestsuppliers/statsbestsuppliers.php | 142 + modules/statsbestvouchers/config.xml | 11 + modules/statsbestvouchers/de.php | 13 + modules/statsbestvouchers/en.php | 4 + modules/statsbestvouchers/es.php | 13 + modules/statsbestvouchers/fr.php | 13 + modules/statsbestvouchers/it.php | 13 + modules/statsbestvouchers/logo.gif | Bin 0 -> 641 bytes .../statsbestvouchers/statsbestvouchers.php | 132 + modules/statscarrier/config.xml | 11 + modules/statscarrier/de.php | 12 + modules/statscarrier/en.php | 4 + modules/statscarrier/es.php | 12 + modules/statscarrier/fr.php | 12 + modules/statscarrier/it.php | 12 + modules/statscarrier/logo.gif | Bin 0 -> 583 bytes modules/statscarrier/statscarrier.php | 110 + modules/statscatalog/application_home.png | Bin 0 -> 685 bytes modules/statscatalog/basket_delete.png | Bin 0 -> 773 bytes modules/statscatalog/config.xml | 11 + modules/statscatalog/de.php | 26 + modules/statscatalog/en.php | 4 + modules/statscatalog/es.php | 26 + modules/statscatalog/fr.php | 26 + modules/statscatalog/it.php | 26 + modules/statscatalog/logo.gif | Bin 0 -> 932 bytes modules/statscatalog/page_edit.png | Bin 0 -> 807 bytes modules/statscatalog/statscatalog.php | 234 + modules/statscheckup/config.xml | 11 + modules/statscheckup/de.php | 30 + modules/statscheckup/es.php | 30 + modules/statscheckup/fr.php | 30 + modules/statscheckup/green.png | Bin 0 -> 776 bytes modules/statscheckup/it.php | 30 + modules/statscheckup/logo.gif | Bin 0 -> 1025 bytes modules/statscheckup/orange.png | Bin 0 -> 770 bytes modules/statscheckup/red.png | Bin 0 -> 767 bytes modules/statscheckup/statscheckup.php | 255 + modules/statsdata/config.xml | 11 + modules/statsdata/de.php | 17 + modules/statsdata/en.php | 4 + modules/statsdata/es.php | 17 + modules/statsdata/fr.php | 17 + modules/statsdata/it.php | 17 + modules/statsdata/logo.gif | Bin 0 -> 1044 bytes modules/statsdata/statsdata.php | 200 + modules/statsequipment/config.xml | 11 + modules/statsequipment/de.php | 15 + modules/statsequipment/en.php | 4 + modules/statsequipment/es.php | 15 + modules/statsequipment/fr.php | 15 + modules/statsequipment/it.php | 15 + modules/statsequipment/logo.gif | Bin 0 -> 1030 bytes modules/statsequipment/statsequipment.php | 175 + modules/statsforecast/config.xml | 11 + modules/statsforecast/de.php | 57 + modules/statsforecast/es.php | 57 + modules/statsforecast/fr.php | 57 + modules/statsforecast/funnel.png | Bin 0 -> 732 bytes modules/statsforecast/it.php | 57 + modules/statsforecast/logo.gif | Bin 0 -> 1028 bytes modules/statsforecast/next.png | Bin 0 -> 395 bytes modules/statsforecast/statsforecast.php | 539 + modules/statsgeolocation/config.php | 110 + modules/statsgeolocation/config.xml | 11 + modules/statsgeolocation/de.php | 18 + modules/statsgeolocation/drawer.php | 90 + modules/statsgeolocation/en.php | 4 + modules/statsgeolocation/es.php | 18 + modules/statsgeolocation/fr.php | 18 + modules/statsgeolocation/img/cross.png | Bin 0 -> 1212 bytes modules/statsgeolocation/img/map.png | Bin 0 -> 66827 bytes modules/statsgeolocation/it.php | 18 + modules/statsgeolocation/logo.gif | Bin 0 -> 1042 bytes modules/statsgeolocation/statsgeolocation.js | 236 + modules/statsgeolocation/statsgeolocation.php | 192 + modules/statslive/config.xml | 11 + modules/statslive/de.php | 22 + modules/statslive/en.php | 4 + modules/statslive/es.php | 22 + modules/statslive/fr.php | 22 + modules/statslive/it.php | 22 + modules/statslive/logo.gif | Bin 0 -> 1009 bytes modules/statslive/statslive.php | 154 + modules/statsnewsletter/config.xml | 11 + modules/statsnewsletter/de.php | 15 + modules/statsnewsletter/en.php | 4 + modules/statsnewsletter/es.php | 15 + modules/statsnewsletter/fr.php | 15 + modules/statsnewsletter/it.php | 15 + modules/statsnewsletter/logo.gif | Bin 0 -> 983 bytes modules/statsnewsletter/statsnewsletter.php | 149 + modules/statsorigin/config.xml | 11 + modules/statsorigin/de.php | 21 + modules/statsorigin/en.php | 4 + modules/statsorigin/es.php | 21 + modules/statsorigin/fr.php | 21 + modules/statsorigin/it.php | 21 + modules/statsorigin/logo.gif | Bin 0 -> 967 bytes modules/statsorigin/statsorigin.php | 147 + modules/statspersonalinfos/config.xml | 11 + modules/statspersonalinfos/de.php | 36 + modules/statspersonalinfos/en.php | 4 + modules/statspersonalinfos/es.php | 36 + modules/statspersonalinfos/fr.php | 36 + modules/statspersonalinfos/it.php | 36 + modules/statspersonalinfos/logo.gif | Bin 0 -> 1031 bytes .../statspersonalinfos/statspersonalinfos.php | 266 + modules/statsproduct/config.xml | 11 + modules/statsproduct/de.php | 39 + modules/statsproduct/en.php | 4 + modules/statsproduct/es.php | 39 + modules/statsproduct/fr.php | 39 + modules/statsproduct/it.php | 39 + modules/statsproduct/logo.gif | Bin 0 -> 1018 bytes modules/statsproduct/statsproduct.php | 404 + modules/statsregistrations/config.xml | 11 + modules/statsregistrations/de.php | 20 + modules/statsregistrations/en.php | 4 + modules/statsregistrations/es.php | 20 + modules/statsregistrations/fr.php | 20 + modules/statsregistrations/it.php | 20 + modules/statsregistrations/logo.gif | Bin 0 -> 992 bytes .../statsregistrations/statsregistrations.php | 157 + modules/statssales/config.xml | 11 + modules/statssales/de.php | 24 + modules/statssales/en.php | 4 + modules/statssales/es.php | 24 + modules/statssales/fr.php | 24 + modules/statssales/it.php | 24 + modules/statssales/logo.gif | Bin 0 -> 936 bytes modules/statssales/statssales.php | 229 + modules/statssearch/config.xml | 11 + modules/statssearch/de.php | 13 + modules/statssearch/en.php | 4 + modules/statssearch/es.php | 13 + modules/statssearch/fr.php | 13 + modules/statssearch/it.php | 13 + modules/statssearch/logo.gif | Bin 0 -> 1013 bytes modules/statssearch/statssearch.php | 146 + modules/statsstock/config.xml | 11 + modules/statsstock/de.php | 19 + modules/statsstock/es.php | 19 + modules/statsstock/fr.php | 19 + modules/statsstock/it.php | 19 + modules/statsstock/logo.gif | Bin 0 -> 1035 bytes modules/statsstock/statsstock.php | 136 + modules/statsvisits/config.xml | 11 + modules/statsvisits/de.php | 20 + modules/statsvisits/en.php | 4 + modules/statsvisits/es.php | 20 + modules/statsvisits/fr.php | 20 + modules/statsvisits/it.php | 20 + modules/statsvisits/logo.gif | Bin 0 -> 1033 bytes modules/statsvisits/statsvisits.php | 161 + modules/themeinstallator/add.png | Bin 0 -> 759 bytes modules/themeinstallator/config.xml | 11 + modules/themeinstallator/de.php | 88 + modules/themeinstallator/delete.png | Bin 0 -> 823 bytes modules/themeinstallator/es.php | 88 + modules/themeinstallator/fr.php | 88 + modules/themeinstallator/it.php | 88 + modules/themeinstallator/logo.gif | Bin 0 -> 963 bytes modules/themeinstallator/script.js | 108 + modules/themeinstallator/themeinstallator.php | 1266 ++ modules/tm4b/classes/Tm4bSms.php | 232 + modules/tm4b/config.xml | 12 + modules/tm4b/cron.php | 47 + modules/tm4b/de.php | 44 + modules/tm4b/en.php | 4 + modules/tm4b/es.php | 44 + modules/tm4b/fr.php | 44 + modules/tm4b/informations.gif | Bin 0 -> 581 bytes modules/tm4b/it.php | 44 + modules/tm4b/logo.gif | Bin 0 -> 241 bytes modules/tm4b/mails/de/sms_new_order.txt | 5 + modules/tm4b/mails/de/sms_out_of_stock.txt | 5 + modules/tm4b/mails/en/sms_new_order.txt | 5 + modules/tm4b/mails/en/sms_out_of_stock.txt | 5 + modules/tm4b/mails/es/sms_new_order.txt | 0 modules/tm4b/mails/es/sms_out_of_stock.txt | 5 + modules/tm4b/mails/fr/sms_new_order.txt | 5 + modules/tm4b/mails/fr/sms_out_of_stock.txt | 5 + modules/tm4b/mails/it/sms_new_order.txt | 5 + modules/tm4b/mails/it/sms_out_of_stock.txt | 5 + modules/tm4b/prefs.gif | Bin 0 -> 351 bytes modules/tm4b/tm4b.php | 383 + modules/trackingfront/account.tpl | 70 + modules/trackingfront/config.xml | 11 + modules/trackingfront/de.php | 51 + modules/trackingfront/en.php | 4 + modules/trackingfront/es.php | 51 + modules/trackingfront/footer.tpl | 28 + modules/trackingfront/fr.php | 51 + modules/trackingfront/header.tpl | 36 + modules/trackingfront/it.php | 51 + modules/trackingfront/login.tpl | 57 + modules/trackingfront/logo.gif | Bin 0 -> 1073 bytes modules/trackingfront/stats.php | 37 + modules/trackingfront/trackingfront.php | 264 + modules/treepodia/add-to-cart.tpl | 57 + modules/treepodia/api/get_data_feed.php | 23 + modules/treepodia/api/ping.php | 3 + modules/treepodia/api/set_account_code.php | 19 + modules/treepodia/config.xml | 11 + modules/treepodia/de.php | 37 + modules/treepodia/es.php | 37 + modules/treepodia/export/export.php | 26 + modules/treepodia/footer.tpl | 64 + modules/treepodia/fr.php | 37 + modules/treepodia/it.php | 37 + modules/treepodia/logo.gif | Bin 0 -> 93 bytes modules/treepodia/logo.png | Bin 0 -> 14731 bytes modules/treepodia/logos/01_1.jpg | Bin 0 -> 11662 bytes modules/treepodia/logos/01_2.jpg | Bin 0 -> 11738 bytes modules/treepodia/logos/01_3.jpg | Bin 0 -> 12213 bytes modules/treepodia/logos/01_4.jpg | Bin 0 -> 11027 bytes modules/treepodia/logos/02_1.jpg | Bin 0 -> 3531 bytes modules/treepodia/logos/02_2.jpg | Bin 0 -> 6446 bytes modules/treepodia/logos/03_1.jpg | Bin 0 -> 5711 bytes modules/treepodia/logos/04_1.jpg | Bin 0 -> 4267 bytes modules/treepodia/logos/04_2.jpg | Bin 0 -> 4310 bytes modules/treepodia/logos/04_3.jpg | Bin 0 -> 4260 bytes modules/treepodia/logos/04_4.jpg | Bin 0 -> 4160 bytes modules/treepodia/logos/04_5.jpg | Bin 0 -> 2879 bytes modules/treepodia/logos/05_1.jpg | Bin 0 -> 6287 bytes modules/treepodia/logos/05_2.jpg | Bin 0 -> 5846 bytes modules/treepodia/logos/05_3.jpg | Bin 0 -> 5786 bytes modules/treepodia/logos/05_4.jpg | Bin 0 -> 5238 bytes modules/treepodia/logos/05_6.jpg | Bin 0 -> 2640 bytes modules/treepodia/logos/06_1.jpg | Bin 0 -> 3464 bytes modules/treepodia/logos/07_1.jpg | Bin 0 -> 2909 bytes modules/treepodia/logos/08_1.jpg | Bin 0 -> 7096 bytes modules/treepodia/logos/09.jpg | Bin 0 -> 6363 bytes modules/treepodia/logos/1-1.png | Bin 0 -> 4483 bytes modules/treepodia/logos/1-2.png | Bin 0 -> 4399 bytes modules/treepodia/logos/1-3.png | Bin 0 -> 4362 bytes modules/treepodia/logos/1-4.png | Bin 0 -> 4440 bytes modules/treepodia/logos/1-5.png | Bin 0 -> 4489 bytes modules/treepodia/logos/1-6.png | Bin 0 -> 4405 bytes modules/treepodia/logos/1-7.png | Bin 0 -> 4493 bytes modules/treepodia/logos/10.jpg | Bin 0 -> 3766 bytes modules/treepodia/logos/11_1.jpg | Bin 0 -> 5540 bytes modules/treepodia/logos/11_2.jpg | Bin 0 -> 5584 bytes modules/treepodia/logos/11_3.jpg | Bin 0 -> 5121 bytes modules/treepodia/logos/11_4.jpg | Bin 0 -> 5323 bytes modules/treepodia/logos/11_5.jpg | Bin 0 -> 3538 bytes modules/treepodia/logos/12_1.jpg | Bin 0 -> 4023 bytes modules/treepodia/logos/12_2.jpg | Bin 0 -> 4158 bytes modules/treepodia/logos/12_3.jpg | Bin 0 -> 4049 bytes modules/treepodia/logos/12_4.jpg | Bin 0 -> 3084 bytes modules/treepodia/logos/12_5.jpg | Bin 0 -> 3779 bytes modules/treepodia/logos/2-1-2.png | Bin 0 -> 3094 bytes modules/treepodia/logos/2-1.png | Bin 0 -> 3227 bytes modules/treepodia/logos/2-2-2.png | Bin 0 -> 3095 bytes modules/treepodia/logos/2-2.png | Bin 0 -> 3245 bytes modules/treepodia/logos/2-3.png | Bin 0 -> 3432 bytes modules/treepodia/logos/2-4.png | Bin 0 -> 3470 bytes modules/treepodia/logos/2-5.png | Bin 0 -> 4969 bytes modules/treepodia/logos/2-6.png | Bin 0 -> 3272 bytes modules/treepodia/logos/3-2.png | Bin 0 -> 3470 bytes modules/treepodia/logos/3-3.png | Bin 0 -> 3311 bytes modules/treepodia/logos/3-7.png | Bin 0 -> 2840 bytes modules/treepodia/logos/4-1.png | Bin 0 -> 5382 bytes modules/treepodia/logos/4-2.png | Bin 0 -> 5360 bytes modules/treepodia/logos/4-3.png | Bin 0 -> 6267 bytes modules/treepodia/logos/4-4.png | Bin 0 -> 6260 bytes modules/treepodia/logos/4-5.png | Bin 0 -> 5448 bytes modules/treepodia/logos/4-6.png | Bin 0 -> 4814 bytes modules/treepodia/logos/4-7.png | Bin 0 -> 5432 bytes modules/treepodia/logos/5-1.png | Bin 0 -> 4387 bytes modules/treepodia/logos/5-2.png | Bin 0 -> 4361 bytes modules/treepodia/logos/5-3.png | Bin 0 -> 4453 bytes modules/treepodia/logos/5-4.png | Bin 0 -> 4334 bytes modules/treepodia/logos/5-6.png | Bin 0 -> 4346 bytes modules/treepodia/logos/5-7.png | Bin 0 -> 4363 bytes modules/treepodia/logos/5-8.png | Bin 0 -> 4263 bytes modules/treepodia/logos/7-1-2.png | Bin 0 -> 10117 bytes modules/treepodia/logos/7-1.png | Bin 0 -> 10176 bytes modules/treepodia/logos/7-2-3.png | Bin 0 -> 10122 bytes modules/treepodia/logos/7-2.png | Bin 0 -> 21332 bytes modules/treepodia/logos/7-4.png | Bin 0 -> 19378 bytes modules/treepodia/logos/7-6.png | Bin 0 -> 19575 bytes modules/treepodia/logos/7-7-1.png | Bin 0 -> 8159 bytes modules/treepodia/logos/8-1.png | Bin 0 -> 3750 bytes modules/treepodia/logos/8-2.png | Bin 0 -> 3980 bytes modules/treepodia/logos/8-3.png | Bin 0 -> 4033 bytes modules/treepodia/logos/8-4.png | Bin 0 -> 4084 bytes modules/treepodia/logos/8-5.png | Bin 0 -> 3320 bytes modules/treepodia/logos/8-6.png | Bin 0 -> 3413 bytes modules/treepodia/logos/8-7.png | Bin 0 -> 3363 bytes modules/treepodia/product.tpl | 27 + modules/treepodia/tracking.tpl | 42 + modules/treepodia/treepodia.js | 42 + modules/treepodia/treepodia.php | 822 + modules/treepodia/video-sitemap.php | 6 + modules/trustedshops/RatingAlert.php | 109 + modules/trustedshops/TrustedShopsSoapApi.php | 71 + modules/trustedshops/WidgetCache.php | 52 + modules/trustedshops/config.xml | 13 + modules/trustedshops/cron.php | 34 + modules/trustedshops/cron_garantee.php | 36 + modules/trustedshops/de.php | 172 + modules/trustedshops/display_products.tpl | 85 + modules/trustedshops/es.php | 173 + modules/trustedshops/fr.php | 175 + modules/trustedshops/img/apply_de.gif | Bin 0 -> 3243 bytes modules/trustedshops/img/apply_en.gif | Bin 0 -> 3178 bytes modules/trustedshops/img/apply_fr.gif | Bin 0 -> 3205 bytes modules/trustedshops/img/siegel.gif | Bin 0 -> 3150 bytes modules/trustedshops/img/ts_logo.jpg | Bin 0 -> 9249 bytes modules/trustedshops/img/ts_rating_en.jpg | Bin 0 -> 11311 bytes modules/trustedshops/img/ts_rating_fr.jpg | Bin 0 -> 28734 bytes modules/trustedshops/it.php | 174 + modules/trustedshops/lib/AbsTrustedShops.php | 151 + modules/trustedshops/lib/RatingAlert.php | 109 + modules/trustedshops/lib/TSBPException.php | 106 + .../trustedshops/lib/TSBuyerProtection.php | 1389 ++ .../trustedshops/lib/TrustedShopsRating.php | 492 + .../trustedshops/lib/TrustedShopsSoapApi.php | 71 + modules/trustedshops/lib/WidgetCache.php | 52 + modules/trustedshops/lib/js/payment.js | 103 + modules/trustedshops/logo.gif | Bin 0 -> 1013 bytes .../trustedshops/mails/de/rating_email.html | 26 + .../trustedshops/mails/de/rating_email.txt | 5 + .../trustedshops/mails/en/rating_email.html | 29 + .../trustedshops/mails/en/rating_email.txt | 3 + .../trustedshops/mails/es/rating_email.html | 26 + .../trustedshops/mails/es/rating_email.txt | 3 + .../trustedshops/mails/fr/rating_email.html | 29 + .../trustedshops/mails/fr/rating_email.txt | 3 + .../trustedshops/mails/it/rating_email.html | 25 + .../trustedshops/mails/it/rating_email.txt | 3 + .../order-confirmation-tsbp-classic.tpl | 51 + modules/trustedshops/order-confirmation.tpl | 27 + modules/trustedshops/seal_of_approval.tpl | 43 + modules/trustedshops/trustedshops.php | 233 + modules/trustedshops/widget.tpl | 38 + modules/twenga/ajax-loader.gif | Bin 0 -> 4176 bytes modules/twenga/bt_500_clicks.gif | Bin 0 -> 9049 bytes modules/twenga/config.xml | 12 + modules/twenga/de.php | 94 + modules/twenga/es.php | 94 + modules/twenga/export.php | 39 + modules/twenga/fr.php | 94 + modules/twenga/infos.html | 1 + modules/twenga/infos_update.php | 27 + modules/twenga/it.php | 94 + modules/twenga/lib/PrestashopStats.php | 128 + modules/twenga/lib/TwengaFields.php | 329 + .../lib/TwengaFieldsGetSubscriptionLink.php | 59 + .../lib/TwengaFieldsGetTrackingScript.php | 88 + .../twenga/lib/TwengaFieldsOrderCancel.php | 32 + modules/twenga/lib/TwengaFieldsOrderExist.php | 33 + .../twenga/lib/TwengaFieldsOrderValidate.php | 47 + .../twenga/lib/TwengaFieldsSiteActivate.php | 33 + modules/twenga/lib/TwengaFieldsSiteExist.php | 43 + modules/twenga/lib/TwengaObj.php | 554 + modules/twenga/logo.gif | Bin 0 -> 1046 bytes modules/twenga/logo_big.jpg | Bin 0 -> 4869 bytes modules/twenga/mails/de/mail.html | 14 + modules/twenga/mails/de/mail.txt | 6 + modules/twenga/mails/en/mail.html | 14 + modules/twenga/mails/en/mail.txt | 6 + modules/twenga/mails/es/mail.html | 14 + modules/twenga/mails/es/mail.txt | 6 + modules/twenga/mails/fr/mail.html | 14 + modules/twenga/mails/fr/mail.txt | 6 + modules/twenga/send_mail.php | 29 + modules/twenga/twenga.php | 1034 + modules/upscarrier/carrier.jpg | Bin 0 -> 5140 bytes modules/upscarrier/config.xml | 12 + modules/upscarrier/de.php | 144 + modules/upscarrier/es.php | 144 + modules/upscarrier/fr.php | 144 + modules/upscarrier/it.php | 144 + modules/upscarrier/logo.gif | Bin 0 -> 1140 bytes modules/upscarrier/sql-install.php | 149 + modules/upscarrier/sql-uninstall.php | 12 + modules/upscarrier/upscarrier.php | 1798 ++ modules/upscarrier/xml-package.tpl | 21 + modules/upscarrier/xml.tpl | 59 + modules/uspscarrier/carrier.jpg | Bin 0 -> 4079 bytes modules/uspscarrier/config.xml | 12 + modules/uspscarrier/de.php | 119 + modules/uspscarrier/es.php | 119 + modules/uspscarrier/fr.php | 119 + modules/uspscarrier/it.php | 119 + modules/uspscarrier/logo.gif | Bin 0 -> 1074 bytes modules/uspscarrier/sql-install.php | 85 + modules/uspscarrier/sql-uninstall.php | 11 + modules/uspscarrier/uspscarrier.php | 1891 ++ modules/uspscarrier/xml-package.tpl | 10 + modules/uspscarrier/xml.tpl | 4 + modules/vatnumber/ajax.php | 31 + modules/vatnumber/config.xml | 11 + modules/vatnumber/de.php | 14 + modules/vatnumber/en.php | 4 + modules/vatnumber/es.php | 14 + modules/vatnumber/fr.php | 14 + modules/vatnumber/it.php | 14 + modules/vatnumber/logo.gif | Bin 0 -> 1025 bytes modules/vatnumber/vatnumber.php | 183 + modules/watermark/config.xml | 12 + modules/watermark/de.php | 29 + modules/watermark/en.php | 4 + modules/watermark/es.php | 29 + modules/watermark/fr.php | 29 + modules/watermark/it.php | 29 + modules/watermark/logo.gif | Bin 0 -> 988 bytes modules/watermark/watermark.gif | Bin 0 -> 2055 bytes modules/watermark/watermark.php | 261 + my-account.php | 29 + new-products.php | 29 + order-confirmation.php | 29 + order-detail.php | 29 + order-follow.php | 29 + order-opc.php | 29 + order-return.php | 29 + order-slip.php | 29 + order.php | 29 + override/classes/_FrontController.php | 342 + override/classes/_Module.php | 44 + override/classes/_MySQL.php | 209 + pagination.php | 29 + password.php | 29 + pdf-invoice.php | 45 + pdf-order-return.php | 45 + pdf-order-slip.php | 47 + prices-drop.php | 29 + product-sort.php | 29 + product.php | 29 + products-comparison.php | 29 + readme_de.txt | 82 + readme_en.txt | 70 + readme_es.txt | 70 + readme_fr.txt | 70 + readme_it.txt | 70 + search.php | 29 + sitemap.php | 29 + sitemap.xml | 0 statistics.php | 58 + stores.php | 29 + supplier.php | 29 + themes/debug.tpl | 90 + themes/index.php | 36 + themes/live_edit.tpl | 53 + themes/prestashop/404.tpl | 46 + themes/prestashop/address.tpl | 205 + themes/prestashop/addresses.tpl | 71 + themes/prestashop/authentication.tpl | 428 + themes/prestashop/best-sales.tpl | 38 + themes/prestashop/breadcrumb.tpl | 32 + .../prestashop/category-cms-tree-branch.tpl | 53 + themes/prestashop/category-tree-branch.tpl | 40 + themes/prestashop/category.tpl | 93 + themes/prestashop/cms.tpl | 73 + themes/prestashop/config.xml | 9 + themes/prestashop/contact-form.tpl | 121 + themes/prestashop/css/addresses.css | 53 + themes/prestashop/css/authentication.css | 50 + themes/prestashop/css/category.css | 5 + themes/prestashop/css/cms.css | 10 + themes/prestashop/css/comparator.css | 122 + themes/prestashop/css/contact-form.css | 8 + themes/prestashop/css/global.css | 1495 ++ themes/prestashop/css/history.css | 45 + themes/prestashop/css/identity.css | 5 + themes/prestashop/css/maintenance.css | 39 + .../blockadvertising/blockadvertising.css | 2 + .../blockbestsellers/blockbestsellers.css | 5 + .../css/modules/blockcart/blockcart.css | 113 + .../blockcategories/blockcategories.css | 47 + .../css/modules/blockcms/blockcms.css | 14 + .../blockcurrencies/blockcurrencies.css | 38 + .../modules/blocklanguages/blocklanguages.css | 17 + .../blockmanufacturer/blockmanufacturer.css | 6 + .../modules/blockmyaccount/blockmyaccount.css | 14 + .../blocknewproducts/blocknewproducts.css | 8 + .../blocknewsletter/blocknewsletter.css | 4 + .../blockpaymentlogo/blockpaymentlogo.css | 4 + .../blockpermanentlinks.css | 24 + .../css/modules/blockrss/blockrss.css | 2 + .../css/modules/blocksearch/blocksearch.css | 24 + .../modules/blockspecials/blockspecials.css | 16 + .../css/modules/blockstore/blockstore.css | 3 + .../modules/blocksupplier/blocksupplier.css | 7 + .../css/modules/blocktags/blocktags.css | 18 + .../modules/blockuserinfo/blockuserinfo.css | 27 + .../css/modules/blockviewed/blockviewed.css | 6 + .../modules/blockwishlist/blockwishlist.css | 16 + .../css/modules/crossselling/crossselling.css | 43 + .../css/modules/editorial/editorial.css | 30 + themes/prestashop/css/my-account.css | 6 + themes/prestashop/css/order-opc.css | 66 + themes/prestashop/css/product.css | 159 + themes/prestashop/css/product_list.css | 73 + themes/prestashop/css/restricted-country.css | 39 + themes/prestashop/css/scenes.css | 134 + themes/prestashop/css/sitemap.css | 20 + themes/prestashop/css/stores.css | 65 + themes/prestashop/discount.tpl | 95 + themes/prestashop/errors.tpl | 39 + themes/prestashop/footer.tpl | 41 + themes/prestashop/guest-tracking.tpl | 85 + themes/prestashop/header.tpl | 90 + themes/prestashop/history.tpl | 92 + themes/prestashop/identity.tpl | 139 + themes/prestashop/img/address_alias_left.gif | Bin 0 -> 928 bytes themes/prestashop/img/address_alias_right.gif | Bin 0 -> 928 bytes themes/prestashop/img/ajax-loader.gif | Bin 0 -> 3208 bytes .../img/arrow_rotate_anticlockwise.png | Bin 0 -> 608 bytes themes/prestashop/img/bg_account.jpg | Bin 0 -> 415 bytes themes/prestashop/img/block_bg.jpg | Bin 0 -> 361 bytes themes/prestashop/img/block_bg_myaccount.jpg | Bin 0 -> 394 bytes .../prestashop/img/block_category_item_bg.jpg | Bin 0 -> 380 bytes themes/prestashop/img/block_exclusive_bg.jpg | Bin 0 -> 375 bytes .../prestashop/img/block_exclusive_footer.jpg | Bin 0 -> 744 bytes themes/prestashop/img/block_footer.gif | Bin 0 -> 261 bytes themes/prestashop/img/block_footer.png | Bin 0 -> 207 bytes .../prestashop/img/block_footer_myaccount.jpg | Bin 0 -> 852 bytes themes/prestashop/img/block_header.gif | Bin 0 -> 1286 bytes themes/prestashop/img/block_header.png | Bin 0 -> 966 bytes .../prestashop/img/block_header_exclusive.gif | Bin 0 -> 1273 bytes .../prestashop/img/block_header_exclusive.png | Bin 0 -> 960 bytes .../img/block_header_exclusive_cart.gif | Bin 0 -> 1431 bytes .../img/block_header_exclusive_cart.png | Bin 0 -> 1134 bytes themes/prestashop/img/block_header_large.gif | Bin 0 -> 1417 bytes themes/prestashop/img/block_header_large.png | Bin 0 -> 777 bytes .../prestashop/img/block_header_myaccount.jpg | Bin 0 -> 1851 bytes .../img/block_myaccount_header_large.gif | Bin 0 -> 2253 bytes themes/prestashop/img/block_search_bg.jpg | Bin 0 -> 1104 bytes themes/prestashop/img/bullet.gif | Bin 0 -> 85 bytes themes/prestashop/img/bullet_alt.jpg | Bin 0 -> 710 bytes themes/prestashop/img/bullet_myaccount.gif | Bin 0 -> 56 bytes themes/prestashop/img/bullet_price.gif | Bin 0 -> 64 bytes .../prestashop/img/button-account-large.gif | Bin 0 -> 1739 bytes themes/prestashop/img/button-account-mini.gif | Bin 0 -> 932 bytes .../prestashop/img/button-account-small.gif | Bin 0 -> 1192 bytes themes/prestashop/img/button-account.gif | Bin 0 -> 1456 bytes themes/prestashop/img/button-large.gif | Bin 0 -> 2737 bytes themes/prestashop/img/button-large.png | Bin 0 -> 1777 bytes .../prestashop/img/button-large_exclusive.gif | Bin 0 -> 2099 bytes themes/prestashop/img/button-medium.gif | Bin 0 -> 2521 bytes themes/prestashop/img/button-medium.png | Bin 0 -> 1733 bytes .../img/button-medium_exclusive.gif | Bin 0 -> 1860 bytes .../img/button-medium_exclusive.png | Bin 0 -> 1144 bytes themes/prestashop/img/button-mini.gif | Bin 0 -> 1877 bytes themes/prestashop/img/button-mini.png | Bin 0 -> 1703 bytes .../prestashop/img/button-mini_exclusive.gif | Bin 0 -> 1248 bytes themes/prestashop/img/button-small.gif | Bin 0 -> 2163 bytes themes/prestashop/img/button-small.png | Bin 0 -> 1727 bytes .../prestashop/img/button-small_exclusive.gif | Bin 0 -> 1507 bytes themes/prestashop/img/flag_new_bg.jpg | Bin 0 -> 359 bytes themes/prestashop/img/footer_account.gif | Bin 0 -> 243 bytes themes/prestashop/img/form-input-bg.gif | Bin 0 -> 93 bytes themes/prestashop/img/form_bg.jpg | Bin 0 -> 512 bytes themes/prestashop/img/header_account.gif | Bin 0 -> 1231 bytes themes/prestashop/img/icon/add.gif | Bin 0 -> 598 bytes themes/prestashop/img/icon/addrbook.gif | Bin 0 -> 632 bytes themes/prestashop/img/icon/available.gif | Bin 0 -> 610 bytes themes/prestashop/img/icon/cancel.gif | Bin 0 -> 614 bytes themes/prestashop/img/icon/cancel_16x18.gif | Bin 0 -> 565 bytes themes/prestashop/img/icon/cart.gif | Bin 0 -> 636 bytes themes/prestashop/img/icon/cible.gif | Bin 0 -> 736 bytes themes/prestashop/img/icon/contact.gif | Bin 0 -> 616 bytes themes/prestashop/img/icon/delete.gif | Bin 0 -> 103 bytes .../prestashop/img/icon/download_product.gif | Bin 0 -> 580 bytes themes/prestashop/img/icon/error.gif | Bin 0 -> 1391 bytes themes/prestashop/img/icon/gift.gif | Bin 0 -> 641 bytes themes/prestashop/img/icon/home.gif | Bin 0 -> 625 bytes themes/prestashop/img/icon/infos.gif | Bin 0 -> 778 bytes themes/prestashop/img/icon/less.gif | Bin 0 -> 58 bytes themes/prestashop/img/icon/magnify.gif | Bin 0 -> 379 bytes themes/prestashop/img/icon/more.gif | Bin 0 -> 58 bytes themes/prestashop/img/icon/my-account.gif | Bin 0 -> 692 bytes themes/prestashop/img/icon/next.gif | Bin 0 -> 83 bytes themes/prestashop/img/icon/no.gif | Bin 0 -> 613 bytes themes/prestashop/img/icon/order.gif | Bin 0 -> 382 bytes themes/prestashop/img/icon/pdf.gif | Bin 0 -> 616 bytes themes/prestashop/img/icon/previous.gif | Bin 0 -> 82 bytes themes/prestashop/img/icon/quantity_down.gif | Bin 0 -> 73 bytes .../prestashop/img/icon/quantity_down_off.gif | Bin 0 -> 73 bytes themes/prestashop/img/icon/quantity_up.gif | Bin 0 -> 73 bytes themes/prestashop/img/icon/recyclable.gif | Bin 0 -> 1065 bytes themes/prestashop/img/icon/return.gif | Bin 0 -> 1062 bytes themes/prestashop/img/icon/search.gif | Bin 0 -> 662 bytes .../img/icon/serial_scroll_left.gif | Bin 0 -> 258 bytes .../img/icon/serial_scroll_right.gif | Bin 0 -> 259 bytes themes/prestashop/img/icon/sitemap.gif | Bin 0 -> 600 bytes themes/prestashop/img/icon/slip.gif | Bin 0 -> 1027 bytes themes/prestashop/img/icon/sort_asc.gif | Bin 0 -> 55 bytes .../prestashop/img/icon/sort_asc_disabled.gif | Bin 0 -> 55 bytes themes/prestashop/img/icon/sort_asc_white.gif | Bin 0 -> 444 bytes themes/prestashop/img/icon/sort_asc_white.png | Bin 0 -> 118 bytes themes/prestashop/img/icon/sort_desc.gif | Bin 0 -> 63 bytes .../img/icon/sort_desc_disabled.gif | Bin 0 -> 54 bytes .../prestashop/img/icon/sort_desc_white.gif | Bin 0 -> 447 bytes .../prestashop/img/icon/sort_desc_white.png | Bin 0 -> 132 bytes themes/prestashop/img/icon/star.gif | Bin 0 -> 369 bytes themes/prestashop/img/icon/unavailable.gif | Bin 0 -> 610 bytes themes/prestashop/img/icon/up.gif | Bin 0 -> 55 bytes themes/prestashop/img/icon/update.gif | Bin 0 -> 568 bytes themes/prestashop/img/icon/userinfo.gif | Bin 0 -> 589 bytes themes/prestashop/img/icon/voucher.gif | Bin 0 -> 592 bytes themes/prestashop/img/icon/yes.gif | Bin 0 -> 622 bytes themes/prestashop/img/jquery/macFFBgHack.png | Bin 0 -> 207 bytes .../img/logo_paiement_mastercard.jpg | Bin 0 -> 1880 bytes .../prestashop/img/logo_paiement_paypal.jpg | Bin 0 -> 2426 bytes themes/prestashop/img/logo_paiement_visa.jpg | Bin 0 -> 1700 bytes themes/prestashop/img/nav-logout.gif | Bin 0 -> 371 bytes themes/prestashop/img/onsale_en.gif | Bin 0 -> 1962 bytes themes/prestashop/img/onsale_es.gif | Bin 0 -> 1688 bytes themes/prestashop/img/onsale_fr.gif | Bin 0 -> 2183 bytes .../prestashop/img/pagination-bg-current.gif | Bin 0 -> 146 bytes .../prestashop/img/pagination-next-border.gif | Bin 0 -> 510 bytes .../prestashop/img/pagination-prev-border.gif | Bin 0 -> 518 bytes .../prestashop/img/pagination-prevnext-bg.gif | Bin 0 -> 147 bytes themes/prestashop/img/pagination_bg.gif | Bin 0 -> 146 bytes themes/prestashop/img/product-buy-bg.gif | Bin 0 -> 184 bytes .../prestashop/img/product-short-desc-bg.gif | Bin 0 -> 332 bytes themes/prestashop/img/rss.gif | Bin 0 -> 209 bytes themes/prestashop/img/sitemap-horizontal.gif | Bin 0 -> 427 bytes themes/prestashop/img/sitemap-horizontal.png | Bin 0 -> 100 bytes themes/prestashop/img/sitemap-last.gif | Bin 0 -> 76 bytes themes/prestashop/img/sitemap-top.gif | Bin 0 -> 393 bytes themes/prestashop/img/sitemap_long.gif | Bin 0 -> 584 bytes themes/prestashop/img/step_current.gif | Bin 0 -> 230 bytes themes/prestashop/img/step_end.gif | Bin 0 -> 190 bytes themes/prestashop/img/step_end_current.gif | Bin 0 -> 196 bytes themes/prestashop/img/step_standard.gif | Bin 0 -> 210 bytes themes/prestashop/img/step_start.gif | Bin 0 -> 95 bytes themes/prestashop/img/tab_bg.jpg | Bin 0 -> 1073 bytes themes/prestashop/img/tab_bg_selected.jpg | Bin 0 -> 1434 bytes .../prestashop/img/tab_bg_selected_short.jpg | Bin 0 -> 8577 bytes themes/prestashop/img/tab_bg_short.jpg | Bin 0 -> 8314 bytes themes/prestashop/img/table_footer.gif | Bin 0 -> 105 bytes themes/prestashop/img/table_header.gif | Bin 0 -> 1262 bytes themes/prestashop/img/thumbs_left.gif | Bin 0 -> 201 bytes themes/prestashop/img/thumbs_right.gif | Bin 0 -> 197 bytes themes/prestashop/img/title_bg.gif | Bin 0 -> 1385 bytes themes/prestashop/img/title_bg.png | Bin 0 -> 574 bytes themes/prestashop/img/title_bg_large.gif | Bin 0 -> 1428 bytes themes/prestashop/index.php | 37 + themes/prestashop/index.tpl | 27 + themes/prestashop/js/cart-summary.js | 392 + themes/prestashop/js/cms.js | 41 + themes/prestashop/js/history.js | 127 + themes/prestashop/js/order-address.js | 121 + themes/prestashop/js/order-opc.js | 674 + themes/prestashop/js/product.js | 521 + themes/prestashop/js/products-comparison.js | 53 + themes/prestashop/js/scenes.js | 92 + themes/prestashop/js/stores.js | 217 + themes/prestashop/js/tools.js | 210 + .../prestashop/js/tools/statesManagement.js | 61 + themes/prestashop/js/tools/treeManagement.js | 57 + themes/prestashop/lang/de.php | 702 + themes/prestashop/lang/en.php | 6 + themes/prestashop/lang/es.php | 702 + themes/prestashop/lang/fr.php | 724 + themes/prestashop/lang/it.php | 702 + themes/prestashop/maintenance.tpl | 51 + themes/prestashop/manufacturer-list.tpl | 85 + themes/prestashop/manufacturer.tpl | 41 + themes/prestashop/my-account.tpl | 51 + themes/prestashop/new-products.tpl | 38 + themes/prestashop/order-address.tpl | 124 + themes/prestashop/order-carrier.tpl | 184 + themes/prestashop/order-confirmation.tpl | 54 + themes/prestashop/order-detail.tpl | 350 + themes/prestashop/order-follow.tpl | 84 + themes/prestashop/order-opc-new-account.tpl | 354 + themes/prestashop/order-opc.tpl | 101 + themes/prestashop/order-payment.tpl | 66 + themes/prestashop/order-return.tpl | 106 + themes/prestashop/order-slip.tpl | 71 + themes/prestashop/order-steps.tpl | 72 + themes/prestashop/pagination.tpl | 102 + themes/prestashop/password.tpl | 54 + themes/prestashop/preview.jpg | Bin 0 -> 12628 bytes themes/prestashop/prices-drop.tpl | 38 + themes/prestashop/product-compare.tpl | 41 + themes/prestashop/product-list.tpl | 63 + themes/prestashop/product-sort.tpl | 56 + themes/prestashop/product.tpl | 541 + themes/prestashop/products-comparison.tpl | 143 + themes/prestashop/restricted-country.tpl | 51 + themes/prestashop/scenes.tpl | 92 + themes/prestashop/search.tpl | 51 + .../prestashop/shopping-cart-product-line.tpl | 80 + themes/prestashop/shopping-cart.tpl | 339 + themes/prestashop/sitemap.tpl | 90 + themes/prestashop/store_infos.tpl | 45 + themes/prestashop/stores.tpl | 97 + themes/prestashop/supplier-list.tpl | 106 + themes/prestashop/supplier.tpl | 41 + tools/.htaccess | 2 + tools/fpdf/font/courier.php | 7 + tools/fpdf/font/helvetica.php | 15 + tools/fpdf/font/helveticab.php | 15 + tools/fpdf/font/helveticabi.php | 15 + tools/fpdf/font/helveticai.php | 15 + tools/fpdf/font/index.php | 11 + tools/fpdf/font/makefont/cp1250.map | 251 + tools/fpdf/font/makefont/cp1251.map | 255 + tools/fpdf/font/makefont/cp1252.map | 251 + tools/fpdf/font/makefont/cp1253.map | 239 + tools/fpdf/font/makefont/cp1254.map | 249 + tools/fpdf/font/makefont/cp1255.map | 233 + tools/fpdf/font/makefont/cp1257.map | 244 + tools/fpdf/font/makefont/cp1258.map | 247 + tools/fpdf/font/makefont/cp874.map | 225 + tools/fpdf/font/makefont/index.php | 11 + tools/fpdf/font/makefont/iso-8859-1.map | 256 + tools/fpdf/font/makefont/iso-8859-11.map | 248 + tools/fpdf/font/makefont/iso-8859-15.map | 256 + tools/fpdf/font/makefont/iso-8859-16.map | 256 + tools/fpdf/font/makefont/iso-8859-2.map | 256 + tools/fpdf/font/makefont/iso-8859-4.map | 256 + tools/fpdf/font/makefont/iso-8859-5.map | 256 + tools/fpdf/font/makefont/iso-8859-7.map | 250 + tools/fpdf/font/makefont/iso-8859-9.map | 256 + tools/fpdf/font/makefont/koi8-r.map | 256 + tools/fpdf/font/makefont/koi8-u.map | 256 + tools/fpdf/font/makefont/makefont.php | 416 + tools/fpdf/font/symbol.php | 15 + tools/fpdf/font/times.php | 15 + tools/fpdf/font/timesb.php | 15 + tools/fpdf/font/timesbi.php | 15 + tools/fpdf/font/timesi.php | 15 + tools/fpdf/font/zapfdingbats.php | 15 + tools/fpdf/fpdf.php | 1729 ++ tools/fpdf/index.php | 11 + tools/geoip/geoip.inc | 556 + tools/geoip/geoipcity.inc | 217 + tools/geoip/geoipregionvars.php | 4191 ++++ tools/index.php | 11 + tools/js_minify/jsmin.php | 291 + tools/minify_html/minify_html.class.php | 220 + tools/pear/PEAR.php | 1396 ++ tools/pear_xml_parser/Parser.php | 351 + tools/pear_xml_parser/Parser/Atom.php | 365 + tools/pear_xml_parser/Parser/AtomElement.php | 261 + tools/pear_xml_parser/Parser/Exception.php | 42 + tools/pear_xml_parser/Parser/RSS09.php | 214 + tools/pear_xml_parser/Parser/RSS09Element.php | 62 + tools/pear_xml_parser/Parser/RSS1.php | 277 + tools/pear_xml_parser/Parser/RSS11.php | 276 + tools/pear_xml_parser/Parser/RSS11Element.php | 151 + tools/pear_xml_parser/Parser/RSS1Element.php | 116 + tools/pear_xml_parser/Parser/RSS2.php | 334 + tools/pear_xml_parser/Parser/RSS2Element.php | 171 + tools/pear_xml_parser/Parser/Type.php | 441 + tools/pear_xml_parser/Parser/index.php | 11 + tools/pear_xml_parser/index.php | 11 + tools/smarty/Smarty.class.php | 822 + tools/smarty/debug.tpl | 133 + tools/smarty/plugins/block.php.php | 27 + tools/smarty/plugins/block.textformat.php | 102 + tools/smarty/plugins/function.counter.php | 78 + tools/smarty/plugins/function.cycle.php | 106 + tools/smarty/plugins/function.fetch.php | 216 + .../plugins/function.html_checkboxes.php | 143 + tools/smarty/plugins/function.html_image.php | 137 + .../smarty/plugins/function.html_options.php | 133 + tools/smarty/plugins/function.html_radios.php | 154 + .../plugins/function.html_select_date.php | 330 + .../plugins/function.html_select_time.php | 194 + tools/smarty/plugins/function.html_table.php | 177 + tools/smarty/plugins/function.mailto.php | 156 + tools/smarty/plugins/function.math.php | 83 + tools/smarty/plugins/modifier.capitalize.php | 37 + tools/smarty/plugins/modifier.date_format.php | 61 + .../plugins/modifier.debug_print_var.php | 87 + tools/smarty/plugins/modifier.escape.php | 91 + .../smarty/plugins/modifier.regex_replace.php | 46 + tools/smarty/plugins/modifier.replace.php | 29 + tools/smarty/plugins/modifier.spacify.php | 37 + tools/smarty/plugins/modifier.truncate.php | 67 + tools/smarty/plugins/modifiercompiler.cat.php | 29 + .../modifiercompiler.count_characters.php | 39 + .../modifiercompiler.count_paragraphs.php | 27 + .../modifiercompiler.count_sentences.php | 27 + .../plugins/modifiercompiler.count_words.php | 31 + .../plugins/modifiercompiler.default.php | 33 + .../plugins/modifiercompiler.indent.php | 32 + .../smarty/plugins/modifiercompiler.lower.php | 31 + .../plugins/modifiercompiler.noprint.php | 24 + .../modifiercompiler.string_format.php | 26 + .../smarty/plugins/modifiercompiler.strip.php | 33 + .../plugins/modifiercompiler.strip_tags.php | 34 + .../smarty/plugins/modifiercompiler.upper.php | 30 + .../plugins/modifiercompiler.wordwrap.php | 35 + .../plugins/outputfilter.trimwhitespace.php | 77 + .../plugins/shared.escape_special_chars.php | 29 + .../smarty/plugins/shared.make_timestamp.php | 43 + .../smarty/plugins/shared.mb_str_replace.php | 38 + .../variablefilter.htmlspecialchars.php | 22 + .../smarty_internal_cacheresource_file.php | 205 + .../smarty_internal_compile_append.php | 50 + .../smarty_internal_compile_assign.php | 64 + .../smarty_internal_compile_block.php | 187 + .../smarty_internal_compile_break.php | 65 + .../smarty_internal_compile_call.php | 108 + .../smarty_internal_compile_capture.php | 81 + .../smarty_internal_compile_config_load.php | 64 + .../smarty_internal_compile_continue.php | 64 + .../smarty_internal_compile_debug.php | 38 + .../smarty_internal_compile_eval.php | 51 + .../smarty_internal_compile_extends.php | 90 + .../smarty_internal_compile_for.php | 147 + .../smarty_internal_compile_foreach.php | 219 + .../smarty_internal_compile_function.php | 134 + .../sysplugins/smarty_internal_compile_if.php | 179 + .../smarty_internal_compile_include.php | 176 + .../smarty_internal_compile_include_php.php | 90 + .../smarty_internal_compile_insert.php | 123 + .../smarty_internal_compile_ldelim.php | 37 + .../smarty_internal_compile_nocache.php | 63 + ..._internal_compile_private_block_plugin.php | 78 + ...ternal_compile_private_function_plugin.php | 58 + ...arty_internal_compile_private_modifier.php | 69 + ..._compile_private_object_block_function.php | 80 + ...ternal_compile_private_object_function.php | 71 + ...ernal_compile_private_print_expression.php | 77 + ...ernal_compile_private_registered_block.php | 95 + ...al_compile_private_registered_function.php | 67 + ...ernal_compile_private_special_variable.php | 99 + .../smarty_internal_compile_rdelim.php | 37 + .../smarty_internal_compile_section.php | 173 + .../smarty_internal_compile_while.php | 82 + .../smarty_internal_compilebase.php | 150 + .../sysplugins/smarty_internal_config.php | 288 + .../smarty_internal_config_file_compiler.php | 106 + .../smarty_internal_configfilelexer.php | 526 + .../smarty_internal_configfileparser.php | 870 + .../sysplugins/smarty_internal_data.php | 479 + .../sysplugins/smarty_internal_debug.php | 170 + .../sysplugins/smarty_internal_filter.php | 89 + .../smarty_internal_filter_handler.php | 67 + .../smarty_internal_function_call_handler.php | 40 + .../smarty_internal_get_include_path.php | 44 + .../smarty_internal_nocache_insert.php | 49 + .../sysplugins/smarty_internal_parsetree.php | 236 + .../sysplugins/smarty_internal_register.php | 156 + .../smarty_internal_resource_eval.php | 89 + .../smarty_internal_resource_extends.php | 176 + .../smarty_internal_resource_file.php | 128 + .../smarty_internal_resource_php.php | 127 + .../smarty_internal_resource_registered.php | 143 + .../smarty_internal_resource_stream.php | 99 + .../smarty_internal_resource_string.php | 133 + ...smarty_internal_smartytemplatecompiler.php | 72 + .../sysplugins/smarty_internal_template.php | 999 + .../smarty_internal_templatecompilerbase.php | 435 + .../smarty_internal_templatelexer.php | 1182 ++ .../smarty_internal_templateparser.php | 2966 +++ .../sysplugins/smarty_internal_utility.php | 300 + .../sysplugins/smarty_internal_wrapper.php | 131 + .../sysplugins/smarty_internal_write_file.php | 56 + tools/smarty/sysplugins/smarty_security.php | 229 + tools/smarty_v2/Config_File.class.php | 389 + tools/smarty_v2/Smarty.class.php | 1968 ++ tools/smarty_v2/Smarty_Compiler.class.php | 2330 +++ tools/smarty_v2/cache/index.php | 11 + tools/smarty_v2/compile/index.php | 11 + tools/smarty_v2/configs/index.php | 11 + tools/smarty_v2/index.php | 11 + .../core.assemble_plugin_filepath.php | 126 + .../core.assign_smarty_interface.php | 43 + .../internals/core.create_dir_structure.php | 79 + .../internals/core.display_debug_console.php | 61 + .../internals/core.get_include_path.php | 44 + .../internals/core.get_microtime.php | 23 + .../internals/core.get_php_resource.php | 80 + tools/smarty_v2/internals/core.is_secure.php | 59 + tools/smarty_v2/internals/core.is_trusted.php | 47 + .../smarty_v2/internals/core.load_plugins.php | 125 + .../internals/core.load_resource_plugin.php | 74 + .../internals/core.process_cached_inserts.php | 71 + .../core.process_compiled_include.php | 37 + .../internals/core.read_cache_file.php | 101 + tools/smarty_v2/internals/core.rm_auto.php | 74 + tools/smarty_v2/internals/core.rmdir.php | 54 + .../internals/core.run_insert_handler.php | 71 + .../internals/core.smarty_include_php.php | 50 + .../internals/core.write_cache_file.php | 96 + .../internals/core.write_compiled_include.php | 91 + .../core.write_compiled_resource.php | 35 + tools/smarty_v2/internals/core.write_file.php | 54 + tools/smarty_v2/internals/index.php | 11 + tools/smarty_v2/plugins/block.textformat.php | 103 + tools/smarty_v2/plugins/compiler.assign.php | 40 + .../plugins/function.assign_debug_info.php | 40 + .../plugins/function.config_load.php | 142 + tools/smarty_v2/plugins/function.counter.php | 80 + tools/smarty_v2/plugins/function.cycle.php | 102 + tools/smarty_v2/plugins/function.debug.php | 35 + tools/smarty_v2/plugins/function.eval.php | 49 + tools/smarty_v2/plugins/function.fetch.php | 221 + .../plugins/function.html_checkboxes.php | 143 + .../smarty_v2/plugins/function.html_image.php | 142 + .../plugins/function.html_options.php | 122 + .../plugins/function.html_radios.php | 156 + .../plugins/function.html_select_date.php | 331 + .../plugins/function.html_select_time.php | 194 + .../smarty_v2/plugins/function.html_table.php | 177 + tools/smarty_v2/plugins/function.mailto.php | 165 + tools/smarty_v2/plugins/function.math.php | 84 + tools/smarty_v2/plugins/function.popup.php | 119 + .../smarty_v2/plugins/function.popup_init.php | 40 + tools/smarty_v2/plugins/index.php | 11 + .../smarty_v2/plugins/modifier.capitalize.php | 43 + tools/smarty_v2/plugins/modifier.cat.php | 33 + .../plugins/modifier.count_characters.php | 32 + .../plugins/modifier.count_paragraphs.php | 29 + .../plugins/modifier.count_sentences.php | 29 + .../plugins/modifier.count_words.php | 33 + .../plugins/modifier.date_format.php | 58 + .../plugins/modifier.debug_print_var.php | 90 + tools/smarty_v2/plugins/modifier.default.php | 32 + tools/smarty_v2/plugins/modifier.escape.php | 93 + tools/smarty_v2/plugins/modifier.indent.php | 28 + tools/smarty_v2/plugins/modifier.lower.php | 26 + tools/smarty_v2/plugins/modifier.nl2br.php | 35 + .../plugins/modifier.regex_replace.php | 48 + tools/smarty_v2/plugins/modifier.replace.php | 30 + tools/smarty_v2/plugins/modifier.spacify.php | 30 + .../plugins/modifier.string_format.php | 29 + tools/smarty_v2/plugins/modifier.strip.php | 33 + .../smarty_v2/plugins/modifier.strip_tags.php | 32 + tools/smarty_v2/plugins/modifier.truncate.php | 51 + tools/smarty_v2/plugins/modifier.upper.php | 26 + tools/smarty_v2/plugins/modifier.wordwrap.php | 29 + .../plugins/outputfilter.trimwhitespace.php | 75 + .../plugins/shared.escape_special_chars.php | 31 + .../plugins/shared.make_timestamp.php | 46 + tools/swift/EasySwift.php | 949 + tools/swift/Swift.php | 489 + tools/swift/Swift/Address.php | 104 + tools/swift/Swift/AddressContainer.php | 8 + tools/swift/Swift/Authenticator.php | 33 + .../swift/Swift/Authenticator/@PopB4Smtp.php | 86 + tools/swift/Swift/Authenticator/CRAMMD5.php | 73 + tools/swift/Swift/Authenticator/LOGIN.php | 49 + tools/swift/Swift/Authenticator/PLAIN.php | 50 + .../PopB4Smtp/Pop3Connection.php | 176 + .../Swift/Authenticator/PopB4Smtp/index.php | 11 + tools/swift/Swift/Authenticator/index.php | 13 + tools/swift/Swift/BadResponseException.php | 22 + tools/swift/Swift/BatchMailer.php | 229 + tools/swift/Swift/Cache.php | 55 + tools/swift/Swift/Cache/Disk.php | 130 + tools/swift/Swift/Cache/JointOutputStream.php | 74 + tools/swift/Swift/Cache/Memory.php | 78 + tools/swift/Swift/Cache/OutputStream.php | 60 + tools/swift/Swift/Cache/index.php | 11 + tools/swift/Swift/CacheFactory.php | 47 + tools/swift/Swift/ClassLoader.php | 38 + tools/swift/Swift/Connection.php | 81 + tools/swift/Swift/Connection/Multi.php | 161 + tools/swift/Swift/Connection/NativeMail.php | 136 + tools/swift/Swift/Connection/Rotator.php | 194 + tools/swift/Swift/Connection/SMTP.php | 452 + tools/swift/Swift/Connection/Sendmail.php | 352 + tools/swift/Swift/Connection/index.php | 11 + tools/swift/Swift/ConnectionBase.php | 102 + tools/swift/Swift/ConnectionException.php | 22 + tools/swift/Swift/Events.php | 41 + .../Swift/Events/BeforeCommandListener.php | 25 + .../swift/Swift/Events/BeforeSendListener.php | 25 + tools/swift/Swift/Events/CommandEvent.php | 74 + tools/swift/Swift/Events/CommandListener.php | 25 + tools/swift/Swift/Events/ConnectEvent.php | 42 + tools/swift/Swift/Events/ConnectListener.php | 25 + tools/swift/Swift/Events/DisconnectEvent.php | 42 + .../swift/Swift/Events/DisconnectListener.php | 25 + tools/swift/Swift/Events/Listener.php | 17 + tools/swift/Swift/Events/ListenerMapper.php | 47 + tools/swift/Swift/Events/ResponseEvent.php | 71 + tools/swift/Swift/Events/ResponseListener.php | 25 + tools/swift/Swift/Events/SendEvent.php | 116 + tools/swift/Swift/Events/SendListener.php | 24 + tools/swift/Swift/Events/index.php | 11 + tools/swift/Swift/Exception.php | 36 + tools/swift/Swift/File.php | 208 + tools/swift/Swift/FileException.php | 22 + tools/swift/Swift/Iterator.php | 44 + tools/swift/Swift/Iterator/Array.php | 111 + tools/swift/Swift/Iterator/MySQLResult.php | 121 + tools/swift/Swift/Iterator/index.php | 11 + tools/swift/Swift/Log.php | 152 + tools/swift/Swift/Log/DefaultLog.php | 58 + tools/swift/Swift/Log/index.php | 11 + tools/swift/Swift/LogContainer.php | 47 + tools/swift/Swift/Message.php | 797 + tools/swift/Swift/Message/Attachment.php | 161 + tools/swift/Swift/Message/EmbeddedFile.php | 77 + tools/swift/Swift/Message/Encoder.php | 455 + tools/swift/Swift/Message/Headers.php | 573 + tools/swift/Swift/Message/Image.php | 55 + tools/swift/Swift/Message/Mime.php | 500 + tools/swift/Swift/Message/MimeException.php | 22 + tools/swift/Swift/Message/Part.php | 134 + tools/swift/Swift/Message/index.php | 11 + tools/swift/Swift/Plugin/AntiFlood.php | 105 + tools/swift/Swift/Plugin/BandwidthMonitor.php | 107 + .../swift/Swift/Plugin/ConnectionRotator.php | 113 + tools/swift/Swift/Plugin/Decorator.php | 259 + .../Swift/Plugin/Decorator/Replacements.php | 77 + tools/swift/Swift/Plugin/Decorator/index.php | 11 + .../Swift/Plugin/EasySwiftResponseTracker.php | 46 + tools/swift/Swift/Plugin/FileEmbedder.php | 428 + tools/swift/Swift/Plugin/MailSend.php | 170 + tools/swift/Swift/Plugin/Throttler.php | 168 + tools/swift/Swift/Plugin/VerboseSending.php | 88 + .../Plugin/VerboseSending/AbstractView.php | 26 + .../Plugin/VerboseSending/DefaultView.php | 50 + .../Swift/Plugin/VerboseSending/index.php | 11 + tools/swift/Swift/Plugin/index.php | 11 + tools/swift/Swift/RecipientList.php | 234 + tools/swift/Swift/index.php | 11 + tools/swift/index.php | 11 + .../taasc/AddressStandardizationSolution.php | 1684 ++ tools/tar/Archive_Tar.php | 1764 ++ translations/de/admin.php | 2986 +++ translations/de/errors.php | 511 + translations/de/fields.php | 514 + translations/de/index.php | 11 + translations/de/pdf.php | 67 + translations/en/admin.php | 2923 +++ translations/en/errors.php | 7 + translations/en/fields.php | 120 + translations/en/index.php | 11 + translations/en/pdf.php | 7 + translations/es/admin.php | 2986 +++ translations/es/errors.php | 511 + translations/es/fields.php | 514 + translations/es/index.php | 11 + translations/es/pdf.php | 67 + translations/export/index.php | 11 + translations/fr/admin.php | 2986 +++ translations/fr/errors.php | 504 + translations/fr/fields.php | 514 + translations/fr/index.php | 11 + translations/fr/pdf.php | 67 + translations/index.php | 11 + translations/it/admin.php | 2986 +++ translations/it/errors.php | 511 + translations/it/fields.php | 514 + translations/it/index.php | 11 + translations/it/pdf.php | 67 + upload/index.php | 11 + webservice/dispatcher.php | 94 + webservice/index.php | 36 + 5317 files changed, 432110 insertions(+) create mode 100644 404.php create mode 100644 CHANGELOG create mode 100644 address.php create mode 100644 addresses.php create mode 100644 admin-dev/ajax.php create mode 100755 admin-dev/ajax_category_list.php create mode 100644 admin-dev/ajax_lang_packs.php create mode 100644 admin-dev/ajax_products_list.php create mode 100644 admin-dev/ajax_send_mail_test.php create mode 100755 admin-dev/ajaxfilemanager/_ajax_get_details_listing.php create mode 100755 admin-dev/ajaxfilemanager/_ajax_get_thumbnail_listing.php create mode 100755 admin-dev/ajaxfilemanager/_ajax_load_folders.php create mode 100755 admin-dev/ajaxfilemanager/ajax_create_folder.php create mode 100755 admin-dev/ajaxfilemanager/ajax_delete_file.php create mode 100755 admin-dev/ajaxfilemanager/ajax_download.php create mode 100755 admin-dev/ajaxfilemanager/ajax_editor_reset.php create mode 100755 admin-dev/ajaxfilemanager/ajax_file_copy.php create mode 100755 admin-dev/ajaxfilemanager/ajax_file_cut.php create mode 100755 admin-dev/ajaxfilemanager/ajax_file_paste.php create mode 100755 admin-dev/ajaxfilemanager/ajax_file_upload.php create mode 100755 admin-dev/ajaxfilemanager/ajax_get_file_listing.php create mode 100755 admin-dev/ajaxfilemanager/ajax_get_folder_listing.php create mode 100755 admin-dev/ajaxfilemanager/ajax_image_editor.php create mode 100755 admin-dev/ajaxfilemanager/ajax_image_save.php create mode 100755 admin-dev/ajaxfilemanager/ajax_image_thumbnail.php create mode 100755 admin-dev/ajaxfilemanager/ajax_image_undo.php create mode 100755 admin-dev/ajaxfilemanager/ajax_login.php create mode 100755 admin-dev/ajaxfilemanager/ajax_preview.php create mode 100755 admin-dev/ajaxfilemanager/ajax_save_as_form.php create mode 100755 admin-dev/ajaxfilemanager/ajax_save_name.php create mode 100755 admin-dev/ajaxfilemanager/ajax_save_text.php create mode 100755 admin-dev/ajaxfilemanager/ajax_text_editor.php create mode 100755 admin-dev/ajaxfilemanager/ajaxfilemanager.php create mode 100755 admin-dev/ajaxfilemanager/debug.html create mode 100755 admin-dev/ajaxfilemanager/inc/class.auth.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.file.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.history.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.image.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.manager.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.pagination.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.search.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.session.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.sessionaction.php create mode 100755 admin-dev/ajaxfilemanager/inc/class.upload.php create mode 100755 admin-dev/ajaxfilemanager/inc/config.base.php create mode 100755 admin-dev/ajaxfilemanager/inc/config.php create mode 100755 admin-dev/ajaxfilemanager/inc/config.tinymce.php create mode 100755 admin-dev/ajaxfilemanager/inc/data.php create mode 100755 admin-dev/ajaxfilemanager/inc/function.base.php create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaxfilemanager.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaxfilemanager_c.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaxfileupload.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaximageeditor.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaximageeditor_c.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaxtexteditor.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/ajaxtexteditor_c.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/calendar.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/contextmenu.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area.css create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area_full.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/close.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/fullscreen.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/go_to_line.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/help.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/highlight.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/load.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/move.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/newdocument.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/opacity.png create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/processing.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/redo.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/reset_highlight.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/save.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/save_as.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/search.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/smooth_selection.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/spacer.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/statusbar_resize.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/images/undo.gif create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/de.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/dk.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/en.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/fr.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/hr.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/it.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/ja.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/nl.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pl.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pt.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/langs/zh_cn.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/basic.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/brainfuck.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/c.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/cpp.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/css.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/html.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/js.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/pas.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/php.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/python.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/vb.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/xml.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/for_fckeditor.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/for_form.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/for_stand_alone.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/for_tinymce.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/form.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/interface.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/iresizable.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/iutil.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/jquery.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/media.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/rotate.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/select.js create mode 100755 admin-dev/ajaxfilemanager/jscripts/thickbox.js create mode 100755 admin-dev/ajaxfilemanager/langs/en.php create mode 100755 admin-dev/ajaxfilemanager/langs/zh.php create mode 100755 admin-dev/ajaxfilemanager/mediaplayer.swf create mode 100755 admin-dev/ajaxfilemanager/session/gc_counter.ajax.php create mode 100755 admin-dev/ajaxfilemanager/session/gc_log.ajax.php create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/ajaximageeditor.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/ajaxtexteditor.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/fckeditor.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/form.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/ie6.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/jqModal.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/jquery-calendar.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/login.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/template.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/thickbox.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/css/tinymce.css create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/copy.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/copy_flag.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/cut.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/cut_flag.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/delete.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/folder_add.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/folder_explore.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/page_add.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/paste.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/refresh.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/tickAll.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/uncheckAll.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/unzip.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/upload.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/action/zip.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/add.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/ajaxLoading.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/arrow_right.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileAcrobat.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileCode.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileExcel.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileExe.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileFlash.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileMusic.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/filePicture.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/filePowerpoint.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileRTF.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileText.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileUnknown.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileVideo.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileWord.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileXml.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/fileZip.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/folder.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/big_icon/folderEmpty.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/button.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/close.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/copy.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/copy_flag.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/cut.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/cut_flag.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/date_picker.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/delete.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileAcrobat.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileCode.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileExcel.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileExe.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileFlash.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileMusic.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/filePicture.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/filePowerpoint.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileRTF.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileText.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileUnknown.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileVideo.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileWord.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileXml.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/fileZip.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/folder.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/folderEmpty.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/file_type/folderParent.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/flagYes.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/flagno.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/folder.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/folder_explore.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/go_parent.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/header.jpg create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/info.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/loadingAnimation.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/pagination/pagination_left.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/pagination/pagination_right.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/panel_bg.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/paste.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/player.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/refresh.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/shadow.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/add.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/ajaxLoading.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/arrow_right.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/button.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/close.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/date_picker.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/flagno.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/flagyes.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/folder.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/folder_explore.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/go_parent.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/header.jpg create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/info.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/loadingAnimation.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/panel_bg.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/player.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/shadow.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/transparentpixel.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/standard/uploadProcessing.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/tickAll.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/transparentpixel.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/uncheckAll.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/unzip.png create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/uploadProcessing.gif create mode 100755 admin-dev/ajaxfilemanager/theme/default/images/zip.png create mode 100644 admin-dev/backup.php create mode 100644 admin-dev/backups/.htaccess create mode 100644 admin-dev/backups/index.php create mode 100644 admin-dev/confirm.php create mode 100644 admin-dev/displayImage.php create mode 100644 admin-dev/drawer.php create mode 100644 admin-dev/footer.inc.php create mode 100644 admin-dev/functions.php create mode 100644 admin-dev/get-file-admin.php create mode 100644 admin-dev/grider.php create mode 100644 admin-dev/header.inc.php create mode 100644 admin-dev/import/.htaccess create mode 100644 admin-dev/import/index.php create mode 100644 admin-dev/index.php create mode 100644 admin-dev/init.php create mode 100644 admin-dev/login.php create mode 100644 admin-dev/password.php create mode 100644 admin-dev/pdf.php create mode 100644 admin-dev/searchcron.php create mode 100755 admin-dev/tabs/.htaccess create mode 100644 admin-dev/tabs/AdminAccess.php create mode 100644 admin-dev/tabs/AdminAddonsCatalog.php create mode 100644 admin-dev/tabs/AdminAddonsMyAccount.php create mode 100644 admin-dev/tabs/AdminAddresses.php create mode 100644 admin-dev/tabs/AdminAliases.php create mode 100644 admin-dev/tabs/AdminAppearance.php create mode 100644 admin-dev/tabs/AdminAttachments.php create mode 100644 admin-dev/tabs/AdminAttributeGenerator.php create mode 100644 admin-dev/tabs/AdminAttributes.php create mode 100644 admin-dev/tabs/AdminAttributesGroups.php create mode 100644 admin-dev/tabs/AdminBackup.php create mode 100644 admin-dev/tabs/AdminCMS.php create mode 100644 admin-dev/tabs/AdminCMSCategories.php create mode 100644 admin-dev/tabs/AdminCMSContent.php create mode 100644 admin-dev/tabs/AdminCarriers.php create mode 100644 admin-dev/tabs/AdminCarts.php create mode 100644 admin-dev/tabs/AdminCatalog.php create mode 100644 admin-dev/tabs/AdminCategories.php create mode 100644 admin-dev/tabs/AdminContact.php create mode 100644 admin-dev/tabs/AdminContacts.php create mode 100644 admin-dev/tabs/AdminCountries.php create mode 100644 admin-dev/tabs/AdminCounty.php create mode 100644 admin-dev/tabs/AdminCurrencies.php create mode 100644 admin-dev/tabs/AdminCustomerThreads.php create mode 100644 admin-dev/tabs/AdminCustomers.php create mode 100644 admin-dev/tabs/AdminDb.php create mode 100644 admin-dev/tabs/AdminDeliverySlip.php create mode 100644 admin-dev/tabs/AdminDiscounts.php create mode 100644 admin-dev/tabs/AdminEmails.php create mode 100644 admin-dev/tabs/AdminEmployees.php create mode 100644 admin-dev/tabs/AdminFeatures.php create mode 100644 admin-dev/tabs/AdminFeaturesValues.php create mode 100644 admin-dev/tabs/AdminGenerator.php create mode 100755 admin-dev/tabs/AdminGeolocation.php create mode 100644 admin-dev/tabs/AdminGroups.php create mode 100644 admin-dev/tabs/AdminHome.php create mode 100644 admin-dev/tabs/AdminImageResize.php create mode 100644 admin-dev/tabs/AdminImages.php create mode 100644 admin-dev/tabs/AdminImport.php create mode 100644 admin-dev/tabs/AdminInformation.php create mode 100644 admin-dev/tabs/AdminInvoices.php create mode 100644 admin-dev/tabs/AdminLanguages.php create mode 100644 admin-dev/tabs/AdminLocalization.php create mode 100644 admin-dev/tabs/AdminLogs.php create mode 100644 admin-dev/tabs/AdminManufacturers.php create mode 100644 admin-dev/tabs/AdminMessages.php create mode 100644 admin-dev/tabs/AdminMeta.php create mode 100644 admin-dev/tabs/AdminModules.php create mode 100644 admin-dev/tabs/AdminModulesPositions.php create mode 100644 admin-dev/tabs/AdminOrderMessage.php create mode 100644 admin-dev/tabs/AdminOrders.php create mode 100644 admin-dev/tabs/AdminOrdersStates.php create mode 100644 admin-dev/tabs/AdminPDF.php create mode 100644 admin-dev/tabs/AdminPPreferences.php create mode 100644 admin-dev/tabs/AdminPayment.php create mode 100644 admin-dev/tabs/AdminPerformance.php create mode 100644 admin-dev/tabs/AdminPreferences.php create mode 100644 admin-dev/tabs/AdminProducts.php create mode 100644 admin-dev/tabs/AdminProfiles.php create mode 100644 admin-dev/tabs/AdminQuickAccesses.php create mode 100644 admin-dev/tabs/AdminRangePrice.php create mode 100644 admin-dev/tabs/AdminRangeWeight.php create mode 100644 admin-dev/tabs/AdminReferrers.php create mode 100644 admin-dev/tabs/AdminReturn.php create mode 100644 admin-dev/tabs/AdminReturnStates.php create mode 100644 admin-dev/tabs/AdminScenes.php create mode 100644 admin-dev/tabs/AdminSearch.php create mode 100644 admin-dev/tabs/AdminSearchConf.php create mode 100644 admin-dev/tabs/AdminSearchEngines.php create mode 100644 admin-dev/tabs/AdminShipping.php create mode 100644 admin-dev/tabs/AdminSlip.php create mode 100644 admin-dev/tabs/AdminStates.php create mode 100644 admin-dev/tabs/AdminStats.php create mode 100644 admin-dev/tabs/AdminStatsConf.php create mode 100644 admin-dev/tabs/AdminStatsTab.php create mode 100644 admin-dev/tabs/AdminStatuses.php create mode 100755 admin-dev/tabs/AdminStockMvt.php create mode 100644 admin-dev/tabs/AdminStores.php create mode 100644 admin-dev/tabs/AdminSubDomains.php create mode 100644 admin-dev/tabs/AdminSuppliers.php create mode 100644 admin-dev/tabs/AdminTabs.php create mode 100644 admin-dev/tabs/AdminTags.php create mode 100755 admin-dev/tabs/AdminTaxRulesGroup.php create mode 100644 admin-dev/tabs/AdminTaxes.php create mode 100644 admin-dev/tabs/AdminThemes.php create mode 100644 admin-dev/tabs/AdminTools.php create mode 100644 admin-dev/tabs/AdminTracking.php create mode 100644 admin-dev/tabs/AdminTranslations.php create mode 100755 admin-dev/tabs/AdminWebservice.php create mode 100644 admin-dev/tabs/AdminZones.php create mode 100644 admin-dev/themes/flashyturtle/admin.css create mode 100644 admin-dev/themes/flashyturtle/bg-lang.png create mode 100644 admin-dev/themes/flashyturtle/bg-quick.png create mode 100644 admin-dev/themes/flashyturtle/bg-subtab.png create mode 100644 admin-dev/themes/flashyturtle/bg-tab.png create mode 100644 admin-dev/themes/flashyturtle/bg-top.png create mode 100644 admin-dev/themes/flashyturtle/button-bg.png create mode 100644 admin-dev/themes/flashyturtle/center_btn_filter.png create mode 100644 admin-dev/themes/flashyturtle/footer-bg.png create mode 100644 admin-dev/themes/flashyturtle/header_module.png create mode 100644 admin-dev/themes/flashyturtle/searchbar.png create mode 100644 admin-dev/themes/flashyturtle/searchbutton.png create mode 100644 admin-dev/themes/flashyturtle/separator_subnav.png create mode 100644 admin-dev/themes/flashyturtle/thead.png create mode 100644 admin-dev/themes/oldschool/admin.css create mode 100644 admin-dev/themes/oldschool/bg-lang.png create mode 100644 admin-dev/themes/oldschool/bg-quick.png create mode 100644 admin-dev/themes/oldschool/bg-subtab.png create mode 100644 admin-dev/themes/oldschool/bg-tab.png create mode 100644 admin-dev/themes/oldschool/button-bg.png create mode 100644 admin-dev/themes/oldschool/footer-bg.png create mode 100644 admin-dev/themes/oldschool/header_module.png create mode 100644 admin-dev/themes/oldschool/news-bg.gif create mode 100644 admin-dev/themes/oldschool/searchbar.png create mode 100644 admin-dev/themes/oldschool/searchbutton.gif create mode 100644 admin-dev/themes/oldschool/separator_subnav.png create mode 100644 admin-dev/themes/oldschool/submenu-bg.gif create mode 100644 admin-dev/themes/oldschool/tab_right.gif create mode 100644 admin-dev/themes/oldschool/thead.png create mode 100644 admin-dev/themes/origins/admin.css create mode 100644 admin-dev/themes/origins/bg-lang.png create mode 100644 admin-dev/themes/origins/bg-quick.png create mode 100644 admin-dev/themes/origins/bg-subtab.png create mode 100644 admin-dev/themes/origins/bg-tab.png create mode 100644 admin-dev/themes/origins/bg-top.png create mode 100644 admin-dev/themes/origins/button-bg.png create mode 100644 admin-dev/themes/origins/footer-bg.png create mode 100644 admin-dev/themes/origins/header_module.png create mode 100644 admin-dev/themes/origins/img/t/AdminAddonsCatalog.gif create mode 100644 admin-dev/themes/origins/img/t/AdminAddonsMyAccount.gif create mode 100644 admin-dev/themes/origins/img/t/AdminCatalog.gif create mode 100644 admin-dev/themes/origins/img/t/AdminCustomers.gif create mode 100644 admin-dev/themes/origins/img/t/AdminEmployees.gif create mode 100644 admin-dev/themes/origins/img/t/AdminModules.gif create mode 100644 admin-dev/themes/origins/img/t/AdminModulesPositions.gif create mode 100644 admin-dev/themes/origins/img/t/AdminOrders.gif create mode 100644 admin-dev/themes/origins/img/t/AdminPayment.gif create mode 100644 admin-dev/themes/origins/img/t/AdminPreferences.gif create mode 100644 admin-dev/themes/origins/img/t/AdminShipping.gif create mode 100644 admin-dev/themes/origins/img/t/AdminStats.gif create mode 100755 admin-dev/themes/origins/img/t/AdminStockMvt.gif create mode 100644 admin-dev/themes/origins/img/t/AdminStores.gif create mode 100644 admin-dev/themes/origins/img/t/AdminTools.gif create mode 100644 admin-dev/themes/origins/news-bg.gif create mode 100644 admin-dev/themes/origins/searchbar.png create mode 100644 admin-dev/themes/origins/searchbutton.png create mode 100644 admin-dev/themes/origins/separator_subnav.png create mode 100644 admin-dev/themes/origins/tab_right.gif create mode 100644 admin-dev/themes/origins/thead.png create mode 100644 admin-dev/uploadProductFile.php create mode 100644 attachment.php create mode 100644 authentication.php create mode 100644 best-sales.php create mode 100644 cart.php create mode 100644 category.php create mode 100644 changecurrency.php create mode 100755 classes/.htaccess create mode 100644 classes/Address.php create mode 100644 classes/AdminTab.php create mode 100644 classes/Alias.php create mode 100644 classes/Attachment.php create mode 100644 classes/Attribute.php create mode 100644 classes/AttributeGroup.php create mode 100644 classes/Backup.php create mode 100644 classes/Blowfish.php create mode 100644 classes/CMS.php create mode 100644 classes/CMSCategory.php create mode 100755 classes/Cache.php create mode 100755 classes/CacheFS.php create mode 100644 classes/Carrier.php create mode 100644 classes/CarrierModule.php create mode 100644 classes/Cart.php create mode 100644 classes/Category.php create mode 100644 classes/Chart.php create mode 100644 classes/Combination.php create mode 100644 classes/Configuration.php create mode 100644 classes/Connection.php create mode 100644 classes/ConnectionsSource.php create mode 100644 classes/Contact.php create mode 100644 classes/ControllerFactory.php create mode 100644 classes/Cookie.php create mode 100644 classes/Country.php create mode 100644 classes/County.php create mode 100644 classes/Currency.php create mode 100644 classes/Customer.php create mode 100644 classes/CustomerMessage.php create mode 100644 classes/CustomerThread.php create mode 100644 classes/Customization.php create mode 100644 classes/DateRange.php create mode 100644 classes/Db.php create mode 100644 classes/Delivery.php create mode 100644 classes/Discount.php create mode 100644 classes/Employee.php create mode 100644 classes/Feature.php create mode 100644 classes/FeatureValue.php create mode 100755 classes/FrontController.php create mode 100644 classes/Group.php create mode 100644 classes/GroupReduction.php create mode 100644 classes/Guest.php create mode 100644 classes/HelpAccess.php create mode 100644 classes/Hook.php create mode 100644 classes/Image.php create mode 100644 classes/ImageType.php create mode 100644 classes/ImportModule.php create mode 100644 classes/Language.php create mode 100644 classes/Link.php create mode 100644 classes/LocalizationPack.php create mode 100644 classes/Logger.php create mode 100755 classes/MCached.php create mode 100644 classes/Mail.php create mode 100644 classes/Manufacturer.php create mode 100644 classes/Message.php create mode 100644 classes/Meta.php create mode 100644 classes/Module.php create mode 100644 classes/ModuleGraph.php create mode 100644 classes/ModuleGraphEngine.php create mode 100644 classes/ModuleGrid.php create mode 100644 classes/ModuleGridEngine.php create mode 100644 classes/MySQL.php create mode 100644 classes/ObjectModel.php create mode 100644 classes/Order.php create mode 100644 classes/OrderDetail.php create mode 100644 classes/OrderDiscount.php create mode 100644 classes/OrderHistory.php create mode 100644 classes/OrderMessage.php create mode 100644 classes/OrderReturn.php create mode 100644 classes/OrderReturnState.php create mode 100644 classes/OrderSlip.php create mode 100644 classes/OrderState.php create mode 100644 classes/PDF.php create mode 100644 classes/Pack.php create mode 100644 classes/Page.php create mode 100644 classes/PaymentCC.php create mode 100644 classes/PaymentModule.php create mode 100644 classes/Product.php create mode 100644 classes/ProductDownload.php create mode 100644 classes/ProductSale.php create mode 100644 classes/Profile.php create mode 100644 classes/QuickAccess.php create mode 100644 classes/RangePrice.php create mode 100644 classes/RangeWeight.php create mode 100644 classes/Referrer.php create mode 100644 classes/Rijndael.php create mode 100644 classes/Scene.php create mode 100644 classes/Search.php create mode 100644 classes/SearchEngine.php create mode 100644 classes/Shop.php create mode 100644 classes/SpecificPrice.php create mode 100644 classes/State.php create mode 100755 classes/StockMvt.php create mode 100755 classes/StockMvtReason.php create mode 100644 classes/Store.php create mode 100644 classes/SubDomain.php create mode 100644 classes/Supplier.php create mode 100644 classes/Tab.php create mode 100644 classes/Tag.php create mode 100644 classes/Tax.php create mode 100644 classes/TaxRule.php create mode 100644 classes/TaxRulesGroup.php create mode 100644 classes/Tools.php create mode 100644 classes/Validate.php create mode 100755 classes/WebserviceKey.php create mode 100644 classes/WebserviceRequest.php create mode 100644 classes/Zone.php create mode 100644 classes/index.php create mode 100644 cms.php create mode 100755 config/.htaccess create mode 100644 config/autoload.php create mode 100644 config/config.inc.php create mode 100755 config/defines.inc.php create mode 100644 config/index.php create mode 100755 config/modules_list.xml create mode 100644 config/smarty.config.inc.php create mode 100644 contact-form.php create mode 100644 controllers/AddressController.php create mode 100644 controllers/AddressesController.php create mode 100644 controllers/AuthController.php create mode 100644 controllers/BestSalesController.php create mode 100644 controllers/CMSController.php create mode 100644 controllers/CartController.php create mode 100644 controllers/CategoryController.php create mode 100644 controllers/CompareController.php create mode 100644 controllers/ContactController.php create mode 100644 controllers/DiscountController.php create mode 100644 controllers/GuestTrackingController.php create mode 100644 controllers/HistoryController.php create mode 100644 controllers/IdentityController.php create mode 100644 controllers/IndexController.php create mode 100644 controllers/ManufacturerController.php create mode 100644 controllers/MyAccountController.php create mode 100644 controllers/NewProductsController.php create mode 100644 controllers/OrderConfirmationController.php create mode 100644 controllers/OrderController.php create mode 100644 controllers/OrderDetailController.php create mode 100644 controllers/OrderFollowController.php create mode 100644 controllers/OrderOpcController.php create mode 100644 controllers/OrderReturnController.php create mode 100644 controllers/OrderSlipController.php create mode 100644 controllers/PageNotFoundController.php create mode 100644 controllers/ParentOrderController.php create mode 100644 controllers/PasswordController.php create mode 100644 controllers/PricesDropController.php create mode 100644 controllers/ProductController.php create mode 100644 controllers/SearchController.php create mode 100644 controllers/SitemapController.php create mode 100644 controllers/StoresController.php create mode 100644 controllers/SupplierController.php create mode 100644 css/admin-ie.css create mode 100644 css/admin.css create mode 100644 css/csshover.htc.htc create mode 100644 css/datePicker.css create mode 100644 css/index.php create mode 100644 css/install.css create mode 100644 css/jquery.autocomplete.css create mode 100644 css/jquery.cluetip.css create mode 100644 css/jquery.fancybox-1.3.4.css create mode 100644 css/jquery.jgrowl.css create mode 100644 css/jqzoom.css create mode 100644 css/login.css create mode 100644 css/tabpane.css create mode 100644 css/thickbox.css create mode 100644 discount.php create mode 100644 docs/dev/dbmodel.mwb create mode 100644 docs/licences/cropper.txt create mode 100644 docs/licences/fpdf.txt create mode 100644 docs/licences/index.php create mode 100644 docs/licences/open-software-3.0.txt create mode 100644 docs/licences/tinymce-smarty-swift.txt create mode 100644 download/.htaccess create mode 100644 download/index.php create mode 100644 footer.php create mode 100644 get-file.php create mode 100644 guest-tracking.php create mode 100644 header.php create mode 100644 history.php create mode 100644 identity.php create mode 100644 images.inc.php create mode 100644 img/404.gif create mode 100644 img/admin/AdminCatalog.gif create mode 100644 img/admin/AdminCustomers.gif create mode 100644 img/admin/AdminEmployees.gif create mode 100644 img/admin/AdminModules.gif create mode 100644 img/admin/AdminNext.gif create mode 100644 img/admin/AdminOrders.gif create mode 100644 img/admin/AdminPayment.gif create mode 100644 img/admin/AdminPreferences.gif create mode 100644 img/admin/AdminShipping.gif create mode 100644 img/admin/AdminStats.gif create mode 100644 img/admin/AdminTools.gif create mode 100644 img/admin/___info-ca.gif create mode 100644 img/admin/access.png create mode 100644 img/admin/add-btn.png create mode 100644 img/admin/add.gif create mode 100644 img/admin/add_2.gif create mode 100644 img/admin/addresses_edit.gif create mode 100644 img/admin/affiliation.png create mode 100644 img/admin/ajax-loader.gif create mode 100644 img/admin/appearance.gif create mode 100644 img/admin/arrow-left.png create mode 100644 img/admin/arrow-right.png create mode 100644 img/admin/arrow.gif create mode 100644 img/admin/arrow2.gif create mode 100644 img/admin/arrow_down.png create mode 100755 img/admin/arrow_in.png create mode 100755 img/admin/arrow_out.png create mode 100644 img/admin/arrow_up.png create mode 100644 img/admin/asterisk.gif create mode 100644 img/admin/barcode.gif create mode 100644 img/admin/basket_error.png create mode 100644 img/admin/bg.png create mode 100644 img/admin/bg_2.png create mode 100644 img/admin/bg_login.gif create mode 100644 img/admin/bg_pslink.png create mode 100644 img/admin/binoculars.png create mode 100644 img/admin/blank.gif create mode 100644 img/admin/block_bg.jpg create mode 100644 img/admin/calendar.png create mode 100644 img/admin/cart.gif create mode 100644 img/admin/catalog_xl.png create mode 100644 img/admin/center_btn_filter.png create mode 100644 img/admin/charged_ko.gif create mode 100644 img/admin/charged_ok.gif create mode 100644 img/admin/close-white.png create mode 100644 img/admin/close.png create mode 100644 img/admin/cms.gif create mode 100644 img/admin/cog.gif create mode 100644 img/admin/color.png create mode 100644 img/admin/colorpicker.png create mode 100644 img/admin/comment.gif create mode 100644 img/admin/commercial.gif create mode 100644 img/admin/computer_key.png create mode 100644 img/admin/contact.gif create mode 100644 img/admin/copy_files.gif create mode 100644 img/admin/coupon.gif create mode 100644 img/admin/customer_xl.png create mode 100644 img/admin/database_gear.gif create mode 100644 img/admin/date.gif create mode 100644 img/admin/date.png create mode 100644 img/admin/delete.gif create mode 100644 img/admin/delivery.gif create mode 100644 img/admin/delivery_ko.gif create mode 100644 img/admin/details.gif create mode 100644 img/admin/disabled.gif create mode 100644 img/admin/dollar.gif create mode 100755 img/admin/down-white.gif create mode 100644 img/admin/down.gif create mode 100644 img/admin/down_d.gif create mode 100644 img/admin/download_page.png create mode 100644 img/admin/duplicate.gif create mode 100644 img/admin/duplicate.png create mode 100644 img/admin/edit.gif create mode 100644 img/admin/edit_2.gif create mode 100644 img/admin/email.gif create mode 100644 img/admin/email_edit.gif create mode 100644 img/admin/employee.gif create mode 100644 img/admin/employees_xl.png create mode 100644 img/admin/enabled-2.gif create mode 100644 img/admin/enabled.gif create mode 100644 img/admin/error.png create mode 100644 img/admin/error2.png create mode 100644 img/admin/exchangesrate.gif create mode 100644 img/admin/export.gif create mode 100644 img/admin/female.gif create mode 100644 img/admin/female_2.gif create mode 100644 img/admin/folder.gif create mode 100644 img/admin/forbbiden.gif create mode 100644 img/admin/gold.gif create mode 100644 img/admin/google.gif create mode 100755 img/admin/graybar.jpg create mode 100755 img/admin/green-gradient.png create mode 100755 img/admin/greenlight-gradient.png create mode 100755 img/admin/grid.gif create mode 100644 img/admin/group.gif create mode 100644 img/admin/help-new.png create mode 100644 img/admin/help.png create mode 100644 img/admin/help2.png create mode 100644 img/admin/home.gif create mode 100644 img/admin/home.png create mode 100644 img/admin/htaccess.gif create mode 100644 img/admin/import.gif create mode 100644 img/admin/index.php create mode 100644 img/admin/info.png create mode 100644 img/admin/information.png create mode 100644 img/admin/invoice.gif create mode 100644 img/admin/less.png create mode 100644 img/admin/list-next.gif create mode 100644 img/admin/list-next2.gif create mode 100644 img/admin/list-prev.gif create mode 100644 img/admin/list-prev2.gif create mode 100644 img/admin/localization.gif create mode 100644 img/admin/login-bg.jpg create mode 100644 img/admin/lv1.gif create mode 100644 img/admin/lv1.png create mode 100644 img/admin/lv2_b.gif create mode 100644 img/admin/lv2_b.png create mode 100644 img/admin/lv2_f.gif create mode 100644 img/admin/lv2_f.png create mode 100644 img/admin/lv3_b.png create mode 100644 img/admin/lv3_f.png create mode 100644 img/admin/lv4_b.png create mode 100644 img/admin/lv4_f.png create mode 100644 img/admin/lv5_b.png create mode 100644 img/admin/lv5_f.png create mode 100755 img/admin/lvl_0.gif create mode 100755 img/admin/lvl_1.gif create mode 100644 img/admin/male.gif create mode 100644 img/admin/male_2.gif create mode 100644 img/admin/manufacturers.gif create mode 100644 img/admin/medal.png create mode 100644 img/admin/meta100.png create mode 100644 img/admin/metatags.gif create mode 100644 img/admin/module_disabled.png create mode 100644 img/admin/module_install.png create mode 100644 img/admin/module_notinstall.png create mode 100644 img/admin/module_warning.png create mode 100644 img/admin/money.gif create mode 100644 img/admin/money.png create mode 100644 img/admin/more.png create mode 100644 img/admin/msg-forward.png create mode 100644 img/admin/msg-is-pending.png create mode 100644 img/admin/msg-ok.png create mode 100644 img/admin/msg-pending.png create mode 100644 img/admin/nav-home.gif create mode 100644 img/admin/nav-logout.gif create mode 100644 img/admin/nav-user.gif create mode 100644 img/admin/navigation.png create mode 100644 img/admin/news-new.gif create mode 100644 img/admin/next-msg.png create mode 100644 img/admin/next.gif create mode 100644 img/admin/ok.gif create mode 100644 img/admin/ok2.png create mode 100755 img/admin/orange-gradient.png create mode 100644 img/admin/page_world.png create mode 100644 img/admin/payment.gif create mode 100644 img/admin/pdf.gif create mode 100644 img/admin/photo.gif create mode 100644 img/admin/photo_add.gif create mode 100644 img/admin/picture.gif create mode 100755 img/admin/pink-gradient.png create mode 100644 img/admin/prefs.gif create mode 100644 img/admin/prestastore.gif create mode 100644 img/admin/previous.gif create mode 100644 img/admin/previous.png create mode 100644 img/admin/printer.gif create mode 100644 img/admin/products.gif create mode 100644 img/admin/profiles.png create mode 100644 img/admin/quick.gif create mode 100644 img/admin/return.gif create mode 100644 img/admin/right_btn_filter.png create mode 100644 img/admin/robots.gif create mode 100644 img/admin/search.gif create mode 100644 img/admin/separator_breadcrum.png create mode 100644 img/admin/separator_filter.png create mode 100644 img/admin/slip.gif create mode 100644 img/admin/stats_xl.png create mode 100644 img/admin/statsettings.gif create mode 100644 img/admin/status_green.gif create mode 100644 img/admin/status_orange.gif create mode 100644 img/admin/status_red.gif create mode 100644 img/admin/subdomain.gif create mode 100644 img/admin/submenu-bg.gif create mode 100644 img/admin/submenu-bg.png create mode 100644 img/admin/submenu-bg_2.png create mode 100644 img/admin/submenu-configuration.gif create mode 100644 img/admin/success.png create mode 100644 img/admin/summary.png create mode 100644 img/admin/supplier.gif create mode 100644 img/admin/suppliers.gif create mode 100644 img/admin/tab-categories.gif create mode 100644 img/admin/tab-contact.gif create mode 100644 img/admin/tab-customers.gif create mode 100644 img/admin/tab-groups.gif create mode 100644 img/admin/tab-invoice.gif create mode 100644 img/admin/tab-orders.gif create mode 100644 img/admin/tab-payment.gif create mode 100644 img/admin/tab-plugins.gif create mode 100644 img/admin/tab-preferences.gif create mode 100644 img/admin/tab-products.gif create mode 100644 img/admin/tab-shipping.gif create mode 100644 img/admin/tab-stats.gif create mode 100644 img/admin/tab-tools.gif create mode 100644 img/admin/tab.gif create mode 100644 img/admin/thead.png create mode 100644 img/admin/themes.gif create mode 100644 img/admin/time.gif create mode 100644 img/admin/translation.gif create mode 100755 img/admin/transparentpixel.gif create mode 100644 img/admin/unknow.gif create mode 100644 img/admin/unknown.gif create mode 100644 img/admin/up.gif create mode 100644 img/admin/up_d.gif create mode 100644 img/admin/visitors.gif create mode 100644 img/admin/warn2.png create mode 100644 img/admin/warning.gif create mode 100644 img/admin/world.gif create mode 100644 img/c/2-category.jpg create mode 100644 img/c/2-large.jpg create mode 100644 img/c/2-medium.jpg create mode 100644 img/c/2-small.jpg create mode 100644 img/c/2.jpg create mode 100644 img/c/3-category.jpg create mode 100644 img/c/3-large.jpg create mode 100644 img/c/3-medium.jpg create mode 100644 img/c/3-small.jpg create mode 100644 img/c/3.jpg create mode 100644 img/c/4-category.jpg create mode 100644 img/c/4-large.jpg create mode 100644 img/c/4-medium.jpg create mode 100644 img/c/4-small.jpg create mode 100644 img/c/4.jpg create mode 100755 img/c/de-default-category.jpg create mode 100755 img/c/de-default-large.jpg create mode 100755 img/c/de-default-medium.jpg create mode 100755 img/c/de-default-small.jpg create mode 100755 img/c/de.jpg create mode 100644 img/c/en-default-category.jpg create mode 100644 img/c/en-default-large.jpg create mode 100644 img/c/en-default-medium.jpg create mode 100644 img/c/en-default-small.jpg create mode 100644 img/c/en.jpg create mode 100644 img/c/es-default-category.jpg create mode 100644 img/c/es-default-large.jpg create mode 100644 img/c/es-default-medium.jpg create mode 100644 img/c/es-default-small.jpg create mode 100644 img/c/es.jpg create mode 100644 img/c/fr-default-category.jpg create mode 100644 img/c/fr-default-large.jpg create mode 100644 img/c/fr-default-medium.jpg create mode 100644 img/c/fr-default-small.jpg create mode 100644 img/c/fr.jpg create mode 100644 img/c/index.php create mode 100755 img/c/it-default-category.jpg create mode 100755 img/c/it-default-large.jpg create mode 100755 img/c/it-default-medium.jpg create mode 100755 img/c/it-default-small.jpg create mode 100755 img/c/it.jpg create mode 100644 img/co/index.php create mode 100644 img/favicon.ico create mode 100644 img/index.php create mode 100644 img/l/1.jpg create mode 100644 img/l/2.jpg create mode 100644 img/l/3.jpg create mode 100644 img/l/4.jpg create mode 100644 img/l/5.jpg create mode 100644 img/l/en-default-home.jpg create mode 100644 img/l/en-default-large.jpg create mode 100644 img/l/en-default-large_scene.jpg create mode 100644 img/l/en-default-medium.jpg create mode 100644 img/l/en-default-small.jpg create mode 100755 img/l/en-default-thickbox.jpg create mode 100644 img/l/en.jpg create mode 100644 img/l/index.php create mode 100644 img/l/none.jpg create mode 100644 img/loader.gif create mode 100644 img/loadingAnimation.gif create mode 100644 img/logo.jpg create mode 100644 img/logo_stores.gif create mode 100644 img/m/1-large.jpg create mode 100644 img/m/1-medium.jpg create mode 100644 img/m/1-small.jpg create mode 100644 img/m/1.jpg create mode 100644 img/m/2-large.jpg create mode 100644 img/m/2-medium.jpg create mode 100644 img/m/2-small.jpg create mode 100644 img/m/2.jpg create mode 100755 img/m/de-default-large.jpg create mode 100755 img/m/de-default-medium.jpg create mode 100755 img/m/de-default-small.jpg create mode 100755 img/m/de.jpg create mode 100644 img/m/en-default-large.jpg create mode 100644 img/m/en-default-medium.jpg create mode 100644 img/m/en-default-small.jpg create mode 100644 img/m/en.jpg create mode 100644 img/m/es-default-large.jpg create mode 100644 img/m/es-default-medium.jpg create mode 100644 img/m/es-default-small.jpg create mode 100644 img/m/es-default-thickbox.jpg create mode 100644 img/m/es.jpg create mode 100644 img/m/fr-default-large.jpg create mode 100644 img/m/fr-default-medium.jpg create mode 100644 img/m/fr-default-small.jpg create mode 100644 img/m/fr.jpg create mode 100644 img/m/index.php create mode 100755 img/m/it-default-large.jpg create mode 100755 img/m/it-default-medium.jpg create mode 100755 img/m/it-default-small.jpg create mode 100755 img/m/it.jpg create mode 100644 img/macFFBgHack.png create mode 100644 img/os/1.gif create mode 100644 img/os/10.gif create mode 100644 img/os/11.gif create mode 100644 img/os/2.gif create mode 100644 img/os/3.gif create mode 100644 img/os/4.gif create mode 100644 img/os/5.gif create mode 100644 img/os/6.gif create mode 100644 img/os/7.gif create mode 100644 img/os/8.gif create mode 100644 img/os/9.gif create mode 100644 img/os/index.php create mode 100644 img/p/1-1-home.jpg create mode 100644 img/p/1-1-large.jpg create mode 100644 img/p/1-1-medium.jpg create mode 100644 img/p/1-1-small.jpg create mode 100644 img/p/1-1-thickbox.jpg create mode 100644 img/p/1-1.jpg create mode 100644 img/p/1-2-home.jpg create mode 100644 img/p/1-2-large.jpg create mode 100644 img/p/1-2-medium.jpg create mode 100644 img/p/1-2-small.jpg create mode 100644 img/p/1-2-thickbox.jpg create mode 100644 img/p/1-2.jpg create mode 100644 img/p/1-3-home.jpg create mode 100644 img/p/1-3-large.jpg create mode 100644 img/p/1-3-medium.jpg create mode 100644 img/p/1-3-small.jpg create mode 100644 img/p/1-3-thickbox.jpg create mode 100644 img/p/1-3.jpg create mode 100644 img/p/1-37-home.jpg create mode 100644 img/p/1-37-large.jpg create mode 100644 img/p/1-37-medium.jpg create mode 100644 img/p/1-37-small.jpg create mode 100644 img/p/1-37-thickbox.jpg create mode 100644 img/p/1-37.jpg create mode 100644 img/p/1-38-home.jpg create mode 100644 img/p/1-38-large.jpg create mode 100644 img/p/1-38-medium.jpg create mode 100644 img/p/1-38-small.jpg create mode 100644 img/p/1-38-thickbox.jpg create mode 100644 img/p/1-38.jpg create mode 100644 img/p/1-39-home.jpg create mode 100644 img/p/1-39-large.jpg create mode 100644 img/p/1-39-medium.jpg create mode 100644 img/p/1-39-small.jpg create mode 100644 img/p/1-39-thickbox.jpg create mode 100644 img/p/1-39.jpg create mode 100644 img/p/1-4-home.jpg create mode 100644 img/p/1-4-large.jpg create mode 100644 img/p/1-4-medium.jpg create mode 100644 img/p/1-4-small.jpg create mode 100644 img/p/1-4-thickbox.jpg create mode 100644 img/p/1-4.jpg create mode 100644 img/p/1-40-home.jpg create mode 100644 img/p/1-40-large.jpg create mode 100644 img/p/1-40-medium.jpg create mode 100644 img/p/1-40-small.jpg create mode 100644 img/p/1-40-thickbox.jpg create mode 100644 img/p/1-40.jpg create mode 100644 img/p/1-41-home.jpg create mode 100644 img/p/1-41-large.jpg create mode 100644 img/p/1-41-medium.jpg create mode 100644 img/p/1-41-small.jpg create mode 100644 img/p/1-41-thickbox.jpg create mode 100644 img/p/1-41.jpg create mode 100644 img/p/1-42-home.jpg create mode 100644 img/p/1-42-large.jpg create mode 100644 img/p/1-42-medium.jpg create mode 100644 img/p/1-42-small.jpg create mode 100644 img/p/1-42-thickbox.jpg create mode 100644 img/p/1-42.jpg create mode 100644 img/p/1-44-home.jpg create mode 100644 img/p/1-44-large.jpg create mode 100644 img/p/1-44-medium.jpg create mode 100644 img/p/1-44-small.jpg create mode 100644 img/p/1-44-thickbox.jpg create mode 100644 img/p/1-44.jpg create mode 100644 img/p/1-45-home.jpg create mode 100644 img/p/1-45-large.jpg create mode 100644 img/p/1-45-medium.jpg create mode 100644 img/p/1-45-small.jpg create mode 100644 img/p/1-45-thickbox.jpg create mode 100644 img/p/1-45.jpg create mode 100644 img/p/2-46-home.jpg create mode 100644 img/p/2-46-large.jpg create mode 100644 img/p/2-46-medium.jpg create mode 100644 img/p/2-46-small.jpg create mode 100644 img/p/2-46-thickbox.jpg create mode 100644 img/p/2-46.jpg create mode 100644 img/p/2-47-home.jpg create mode 100644 img/p/2-47-large.jpg create mode 100644 img/p/2-47-medium.jpg create mode 100644 img/p/2-47-small.jpg create mode 100644 img/p/2-47-thickbox.jpg create mode 100644 img/p/2-47.jpg create mode 100644 img/p/2-48-home.jpg create mode 100644 img/p/2-48-large.jpg create mode 100644 img/p/2-48-medium.jpg create mode 100644 img/p/2-48-small.jpg create mode 100644 img/p/2-48-thickbox.jpg create mode 100644 img/p/2-48.jpg create mode 100644 img/p/2-49-home.jpg create mode 100644 img/p/2-49-large.jpg create mode 100644 img/p/2-49-medium.jpg create mode 100644 img/p/2-49-small.jpg create mode 100644 img/p/2-49-thickbox.jpg create mode 100644 img/p/2-49.jpg create mode 100644 img/p/2-5-home.jpg create mode 100644 img/p/2-5-large.jpg create mode 100644 img/p/2-5-medium.jpg create mode 100644 img/p/2-5-small.jpg create mode 100644 img/p/2-5-thickbox.jpg create mode 100644 img/p/2-5.jpg create mode 100644 img/p/2-6-home.jpg create mode 100644 img/p/2-6-large.jpg create mode 100644 img/p/2-6-medium.jpg create mode 100644 img/p/2-6-small.jpg create mode 100644 img/p/2-6-thickbox.jpg create mode 100644 img/p/2-6.jpg create mode 100644 img/p/2-7-home.jpg create mode 100644 img/p/2-7-large.jpg create mode 100644 img/p/2-7-medium.jpg create mode 100644 img/p/2-7-small.jpg create mode 100644 img/p/2-7-thickbox.jpg create mode 100644 img/p/2-7.jpg create mode 100644 img/p/2-8-home.jpg create mode 100644 img/p/2-8-large.jpg create mode 100644 img/p/2-8-medium.jpg create mode 100644 img/p/2-8-small.jpg create mode 100644 img/p/2-8-thickbox.jpg create mode 100644 img/p/2-8.jpg create mode 100644 img/p/2-9-home.jpg create mode 100644 img/p/2-9-large.jpg create mode 100644 img/p/2-9-medium.jpg create mode 100644 img/p/2-9-small.jpg create mode 100644 img/p/2-9-thickbox.jpg create mode 100644 img/p/2-9.jpg create mode 100644 img/p/5-15-home.jpg create mode 100644 img/p/5-15-large.jpg create mode 100644 img/p/5-15-medium.jpg create mode 100644 img/p/5-15-small.jpg create mode 100644 img/p/5-15-thickbox.jpg create mode 100644 img/p/5-15.jpg create mode 100644 img/p/5-16-home.jpg create mode 100644 img/p/5-16-large.jpg create mode 100644 img/p/5-16-medium.jpg create mode 100644 img/p/5-16-small.jpg create mode 100644 img/p/5-16-thickbox.jpg create mode 100644 img/p/5-16.jpg create mode 100644 img/p/5-17-home.jpg create mode 100644 img/p/5-17-large.jpg create mode 100644 img/p/5-17-medium.jpg create mode 100644 img/p/5-17-small.jpg create mode 100644 img/p/5-17-thickbox.jpg create mode 100644 img/p/5-17.jpg create mode 100644 img/p/6-18-home.jpg create mode 100644 img/p/6-18-large.jpg create mode 100644 img/p/6-18-medium.jpg create mode 100644 img/p/6-18-small.jpg create mode 100644 img/p/6-18-thickbox.jpg create mode 100644 img/p/6-18.jpg create mode 100644 img/p/6-19-home.jpg create mode 100644 img/p/6-19-large.jpg create mode 100644 img/p/6-19-medium.jpg create mode 100644 img/p/6-19-small.jpg create mode 100644 img/p/6-19-thickbox.jpg create mode 100644 img/p/6-19.jpg create mode 100644 img/p/6-20-home.jpg create mode 100644 img/p/6-20-large.jpg create mode 100644 img/p/6-20-medium.jpg create mode 100644 img/p/6-20-small.jpg create mode 100644 img/p/6-20-thickbox.jpg create mode 100644 img/p/6-20.jpg create mode 100644 img/p/7-24-home.jpg create mode 100644 img/p/7-24-large.jpg create mode 100644 img/p/7-24-medium.jpg create mode 100644 img/p/7-24-small.jpg create mode 100644 img/p/7-24-thickbox.jpg create mode 100644 img/p/7-24.jpg create mode 100644 img/p/7-26-home.jpg create mode 100644 img/p/7-26-large.jpg create mode 100644 img/p/7-26-medium.jpg create mode 100644 img/p/7-26-small.jpg create mode 100644 img/p/7-26-thickbox.jpg create mode 100644 img/p/7-26.jpg create mode 100644 img/p/7-27-home.jpg create mode 100644 img/p/7-27-large.jpg create mode 100644 img/p/7-27-medium.jpg create mode 100644 img/p/7-27-small.jpg create mode 100644 img/p/7-27-thickbox.jpg create mode 100644 img/p/7-27.jpg create mode 100644 img/p/7-29-home.jpg create mode 100644 img/p/7-29-large.jpg create mode 100644 img/p/7-29-medium.jpg create mode 100644 img/p/7-29-small.jpg create mode 100644 img/p/7-29-thickbox.jpg create mode 100644 img/p/7-29.jpg create mode 100644 img/p/7-30-home.jpg create mode 100644 img/p/7-30-large.jpg create mode 100644 img/p/7-30-medium.jpg create mode 100644 img/p/7-30-small.jpg create mode 100644 img/p/7-30-thickbox.jpg create mode 100644 img/p/7-30.jpg create mode 100644 img/p/7-32-home.jpg create mode 100644 img/p/7-32-large.jpg create mode 100644 img/p/7-32-medium.jpg create mode 100644 img/p/7-32-small.jpg create mode 100644 img/p/7-32-thickbox.jpg create mode 100644 img/p/7-32.jpg create mode 100644 img/p/8-33-home.jpg create mode 100644 img/p/8-33-large.jpg create mode 100644 img/p/8-33-medium.jpg create mode 100644 img/p/8-33-small.jpg create mode 100644 img/p/8-33-thickbox.jpg create mode 100644 img/p/8-33.jpg create mode 100644 img/p/9-36-home.jpg create mode 100644 img/p/9-36-large.jpg create mode 100644 img/p/9-36-medium.jpg create mode 100644 img/p/9-36-small.jpg create mode 100644 img/p/9-36-thickbox.jpg create mode 100644 img/p/9-36.jpg create mode 100755 img/p/de-default-home.jpg create mode 100755 img/p/de-default-large.jpg create mode 100755 img/p/de-default-medium.jpg create mode 100755 img/p/de-default-small.jpg create mode 100755 img/p/de-default-thickbox.jpg create mode 100755 img/p/de.jpg create mode 100644 img/p/en-default-home.jpg create mode 100644 img/p/en-default-large.jpg create mode 100644 img/p/en-default-medium.jpg create mode 100644 img/p/en-default-small.jpg create mode 100644 img/p/en-default-thickbox.jpg create mode 100644 img/p/en.jpg create mode 100644 img/p/es-default-home.jpg create mode 100644 img/p/es-default-large.jpg create mode 100644 img/p/es-default-medium.jpg create mode 100644 img/p/es-default-small.jpg create mode 100644 img/p/es-default-thickbox.jpg create mode 100644 img/p/es.jpg create mode 100644 img/p/fr-default-home.jpg create mode 100644 img/p/fr-default-large.jpg create mode 100644 img/p/fr-default-medium.jpg create mode 100644 img/p/fr-default-small.jpg create mode 100644 img/p/fr-default-thickbox.jpg create mode 100644 img/p/fr.jpg create mode 100644 img/p/index.php create mode 100755 img/p/it-default-home.jpg create mode 100755 img/p/it-default-large.jpg create mode 100755 img/p/it-default-medium.jpg create mode 100755 img/p/it-default-small.jpg create mode 100755 img/p/it-default-thickbox.jpg create mode 100755 img/p/it.jpg create mode 100644 img/s/index.php create mode 100644 img/scenes/1-large_scene.jpg create mode 100644 img/scenes/1.jpg create mode 100644 img/scenes/2-large_scene.jpg create mode 100644 img/scenes/2.jpg create mode 100644 img/scenes/3-large_scene.jpg create mode 100644 img/scenes/3.jpg create mode 100755 img/scenes/de-default-large_scene.jpg create mode 100755 img/scenes/de-default-thumb_scene.jpg create mode 100644 img/scenes/en-default-large_scene.jpg create mode 100644 img/scenes/en-default-thumb_scene.jpg create mode 100755 img/scenes/es-default-large_scene.jpg create mode 100755 img/scenes/es-default-thumb_scene.jpg create mode 100644 img/scenes/fr-default-large_scene.jpg create mode 100644 img/scenes/fr-default-thumb_scene.jpg create mode 100644 img/scenes/index.php create mode 100755 img/scenes/it-default-large_scene.jpg create mode 100755 img/scenes/it-default-thumb_scene.jpg create mode 100644 img/scenes/thumbs/1-thumb_scene.jpg create mode 100644 img/scenes/thumbs/2-thumb_scene.jpg create mode 100644 img/scenes/thumbs/3-thumb_scene.jpg create mode 100644 img/scenes/thumbs/index.php create mode 100644 img/st/1-category.jpg create mode 100644 img/st/1-large.jpg create mode 100644 img/st/1-medium.jpg create mode 100644 img/st/1-small.jpg create mode 100644 img/st/1.jpg create mode 100644 img/st/2-category.jpg create mode 100644 img/st/2-large.jpg create mode 100644 img/st/2-medium.jpg create mode 100644 img/st/2-small.jpg create mode 100644 img/st/2.jpg create mode 100644 img/st/3-category.jpg create mode 100644 img/st/3-large.jpg create mode 100644 img/st/3-medium.jpg create mode 100644 img/st/3-small.jpg create mode 100644 img/st/3.jpg create mode 100644 img/st/4-category.jpg create mode 100644 img/st/4-large.jpg create mode 100644 img/st/4-medium.jpg create mode 100644 img/st/4-small.jpg create mode 100644 img/st/4.jpg create mode 100644 img/st/5-category.jpg create mode 100644 img/st/5-large.jpg create mode 100644 img/st/5-medium.jpg create mode 100644 img/st/5-small.jpg create mode 100644 img/st/5.jpg create mode 100755 img/st/index.php create mode 100644 img/su/1-large.jpg create mode 100644 img/su/1-medium.jpg create mode 100644 img/su/1-small.jpg create mode 100644 img/su/1.jpg create mode 100644 img/su/2-large.jpg create mode 100644 img/su/2-medium.jpg create mode 100644 img/su/2-small.jpg create mode 100644 img/su/2.jpg create mode 100755 img/su/de-default-large.jpg create mode 100755 img/su/de-default-medium.jpg create mode 100755 img/su/de-default-small.jpg create mode 100755 img/su/de.jpg create mode 100644 img/su/en-default-large.jpg create mode 100644 img/su/en-default-medium.jpg create mode 100644 img/su/en-default-small.jpg create mode 100644 img/su/en.jpg create mode 100755 img/su/es-default-large.jpg create mode 100755 img/su/es-default-medium.jpg create mode 100755 img/su/es-default-small.jpg create mode 100755 img/su/es.jpg create mode 100644 img/su/fr-default-large.jpg create mode 100644 img/su/fr-default-medium.jpg create mode 100644 img/su/fr-default-small.jpg create mode 100644 img/su/fr.jpg create mode 100644 img/su/index.php create mode 100755 img/su/it-default-large.jpg create mode 100755 img/su/it-default-medium.jpg create mode 100755 img/su/it-default-small.jpg create mode 100755 img/su/it.jpg create mode 100644 img/t/0.gif create mode 100644 img/t/AdminAccess.gif create mode 100644 img/t/AdminAddonsCatalog.gif create mode 100644 img/t/AdminAddonsMyAccount.gif create mode 100644 img/t/AdminAddresses.gif create mode 100644 img/t/AdminAliases.gif create mode 100644 img/t/AdminAppearance.gif create mode 100644 img/t/AdminAttachments.gif create mode 100644 img/t/AdminAttributesGroups.gif create mode 100644 img/t/AdminBackup.gif create mode 100644 img/t/AdminCMS.gif create mode 100644 img/t/AdminCMSContent.gif create mode 100644 img/t/AdminCarriers.gif create mode 100644 img/t/AdminCarts.gif create mode 100644 img/t/AdminCatalog.gif create mode 100644 img/t/AdminContact.gif create mode 100644 img/t/AdminContacts.gif create mode 100644 img/t/AdminCountries.gif create mode 100644 img/t/AdminCounty.gif create mode 100644 img/t/AdminCurrencies.gif create mode 100644 img/t/AdminCustomerThreads.gif create mode 100644 img/t/AdminCustomers.gif create mode 100644 img/t/AdminDb.gif create mode 100644 img/t/AdminDeliverySlip.gif create mode 100644 img/t/AdminDiscounts.gif create mode 100644 img/t/AdminEmails.gif create mode 100644 img/t/AdminEmployees.gif create mode 100644 img/t/AdminFeatures.gif create mode 100644 img/t/AdminGenerator.gif create mode 100755 img/t/AdminGeolocalization.gif create mode 100644 img/t/AdminGeolocation.gif create mode 100644 img/t/AdminGroups.gif create mode 100644 img/t/AdminHome.gif create mode 100644 img/t/AdminImages.gif create mode 100644 img/t/AdminImport.gif create mode 100644 img/t/AdminInformation.gif create mode 100644 img/t/AdminInvoices.gif create mode 100644 img/t/AdminLanguages.gif create mode 100644 img/t/AdminLocalization.gif create mode 100755 img/t/AdminLogs.gif create mode 100644 img/t/AdminManufacturers.gif create mode 100644 img/t/AdminMessages.gif create mode 100644 img/t/AdminMeta.gif create mode 100644 img/t/AdminModules.gif create mode 100644 img/t/AdminModulesPositions.gif create mode 100644 img/t/AdminOrderMessage.gif create mode 100644 img/t/AdminOrders.gif create mode 100644 img/t/AdminPDF.gif create mode 100644 img/t/AdminPPreferences.gif create mode 100644 img/t/AdminPayment.gif create mode 100644 img/t/AdminPerformance.gif create mode 100644 img/t/AdminPreferences.gif create mode 100644 img/t/AdminProfiles.gif create mode 100644 img/t/AdminQuickAccesses.gif create mode 100644 img/t/AdminRangePrice.gif create mode 100644 img/t/AdminRangeWeight.gif create mode 100644 img/t/AdminReferrers.gif create mode 100644 img/t/AdminReturn.gif create mode 100644 img/t/AdminScenes.gif create mode 100644 img/t/AdminSearch.gif create mode 100644 img/t/AdminSearchConf.gif create mode 100644 img/t/AdminSearchEngines.gif create mode 100644 img/t/AdminShipping.gif create mode 100644 img/t/AdminSlip.gif create mode 100644 img/t/AdminStates.gif create mode 100644 img/t/AdminStats.gif create mode 100644 img/t/AdminStatsConf.gif create mode 100644 img/t/AdminStatsModules.gif create mode 100644 img/t/AdminStatuses.gif create mode 100755 img/t/AdminStockMvt.gif create mode 100644 img/t/AdminStores.gif create mode 100644 img/t/AdminSubDomains.gif create mode 100644 img/t/AdminSuppliers.gif create mode 100644 img/t/AdminTabs.gif create mode 100644 img/t/AdminTags.gif create mode 100755 img/t/AdminTaxRulesGroup.gif create mode 100644 img/t/AdminTaxes.gif create mode 100644 img/t/AdminThemes.gif create mode 100644 img/t/AdminTools.gif create mode 100644 img/t/AdminTracking.gif create mode 100644 img/t/AdminTranslations.gif create mode 100644 img/t/AdminWebservice.gif create mode 100644 img/t/AdminZones.gif create mode 100644 img/t/index.php create mode 100644 img/tmp/index.php create mode 100644 img/tmp/order_state_mini_11.gif create mode 100644 img/tmp/store_1.jpg create mode 100644 img/tmp/store_2.jpg create mode 100644 img/tmp/store_3.jpg create mode 100644 img/tmp/store_4.jpg create mode 100644 index.php create mode 100644 init.php create mode 100644 install-dev/classes/AddConfToFile.php create mode 100644 install-dev/classes/ConfigurationTest.php create mode 100644 install-dev/classes/LanguagesManager.php create mode 100644 install-dev/classes/ToolsInstall.php create mode 100644 install-dev/controller.js create mode 100644 install-dev/img/01-gd100.png create mode 100644 install-dev/img/01-pt100.png create mode 100644 install-dev/img/01-pt70.png create mode 100644 install-dev/img/02-gd100.png create mode 100644 install-dev/img/02-pt100.png create mode 100644 install-dev/img/02-pt70.png create mode 100644 install-dev/img/03-gd100.png create mode 100644 install-dev/img/03-pt100.png create mode 100644 install-dev/img/03-pt70.png create mode 100644 install-dev/img/04-gd100.png create mode 100644 install-dev/img/04-pt100.png create mode 100644 install-dev/img/04-pt70.png create mode 100644 install-dev/img/05-gd100.png create mode 100644 install-dev/img/05-pt100.png create mode 100644 install-dev/img/05-pt70.png create mode 100644 install-dev/img/bad.gif create mode 100644 install-dev/img/bg-body.png create mode 100644 install-dev/img/bg-ctnr.png create mode 100644 install-dev/img/bg-tab.png create mode 100644 install-dev/img/bg_help.png create mode 100644 install-dev/img/boutonpt-disabled.png create mode 100644 install-dev/img/boutonpt-on.png create mode 100644 install-dev/img/boutonpt-over.png create mode 100644 install-dev/img/bt-dsbl.png create mode 100644 install-dev/img/bt-hover.png create mode 100644 install-dev/img/bt.png create mode 100644 install-dev/img/btn-installeur.png create mode 100644 install-dev/img/bullet.png create mode 100644 install-dev/img/ico_help.gif create mode 100644 install-dev/img/logo.png create mode 100644 install-dev/img/ok.gif create mode 100644 install-dev/img/ombrage-bas.png create mode 100644 install-dev/img/ombrage-droit.png create mode 100644 install-dev/img/phone.png create mode 100644 install-dev/img/puce.gif create mode 100644 install-dev/img/shadow-left.png create mode 100644 install-dev/index.php create mode 100644 install-dev/langs/de.php create mode 100644 install-dev/langs/es.php create mode 100644 install-dev/langs/fr.php create mode 100644 install-dev/langs/it.php create mode 100644 install-dev/langs/list.xml create mode 100644 install-dev/langs/us.php create mode 100644 install-dev/model.php create mode 100644 install-dev/module_tools.php create mode 100644 install-dev/php/add_module_to_hook.php create mode 100644 install-dev/php/add_new_tab.php create mode 100644 install-dev/php/admin_stores_tab.php create mode 100644 install-dev/php/alter_cms_block.php create mode 100644 install-dev/php/blocknewsletter.php create mode 100644 install-dev/php/cms_block.php create mode 100644 install-dev/php/confcleaner.php create mode 100644 install-dev/php/country_to_timezone.php create mode 100644 install-dev/php/customizations.php create mode 100644 install-dev/php/database_structure.php create mode 100644 install-dev/php/deliverynumber.php create mode 100644 install-dev/php/editorial_update.php create mode 100644 install-dev/php/generate_ntree.php create mode 100644 install-dev/php/generate_tax_rules.php create mode 100644 install-dev/php/gridextjs_deprecated.php create mode 100644 install-dev/php/invoicenumber.php create mode 100644 install-dev/php/module_tools.php create mode 100644 install-dev/php/move_crossselling.php create mode 100644 install-dev/php/price_converter.php create mode 100644 install-dev/php/regenerate_level_depth.php create mode 100644 install-dev/php/reorderpositions.php create mode 100755 install-dev/php/setallgroupsonhomecategory.php create mode 100644 install-dev/php/setdiscountcategory.php create mode 100644 install-dev/php/setpaymentmodule.php create mode 100644 install-dev/php/setpaymentmodulegroup.php create mode 100644 install-dev/php/shop_url.php create mode 100644 install-dev/php/update_for_13version.php create mode 100644 install-dev/php/update_image_size_in_db.php create mode 100644 install-dev/php/update_order_details.php create mode 100644 install-dev/php/update_products_ecotax_v133.php create mode 100644 install-dev/php/updatecarrierurl.php create mode 100644 install-dev/php/updatemodulessql.php create mode 100644 install-dev/php/updateproductcomments.php create mode 100644 install-dev/php/utf8.php create mode 100644 install-dev/preactivation.php create mode 100644 install-dev/sql/db.sql create mode 100644 install-dev/sql/db_settings_extends.sql create mode 100644 install-dev/sql/db_settings_lite.sql create mode 100644 install-dev/sql/upgrade/0.9.1.2.sql create mode 100644 install-dev/sql/upgrade/0.9.1.sql create mode 100644 install-dev/sql/upgrade/0.9.5.1.sql create mode 100644 install-dev/sql/upgrade/0.9.5.2.sql create mode 100644 install-dev/sql/upgrade/0.9.6.1.sql create mode 100644 install-dev/sql/upgrade/0.9.6.2.sql create mode 100644 install-dev/sql/upgrade/0.9.7.1.sql create mode 100644 install-dev/sql/upgrade/0.9.7.2.sql create mode 100644 install-dev/sql/upgrade/0.9.sql create mode 100644 install-dev/sql/upgrade/1.0.0.1.sql create mode 100644 install-dev/sql/upgrade/1.0.0.2.sql create mode 100644 install-dev/sql/upgrade/1.0.0.3.sql create mode 100644 install-dev/sql/upgrade/1.0.0.4.sql create mode 100644 install-dev/sql/upgrade/1.0.0.5.sql create mode 100644 install-dev/sql/upgrade/1.0.0.6.sql create mode 100644 install-dev/sql/upgrade/1.0.0.7.sql create mode 100644 install-dev/sql/upgrade/1.0.0.8.sql create mode 100644 install-dev/sql/upgrade/1.1.0.1.sql create mode 100644 install-dev/sql/upgrade/1.1.0.2.sql create mode 100644 install-dev/sql/upgrade/1.1.0.3.sql create mode 100644 install-dev/sql/upgrade/1.1.0.4.sql create mode 100644 install-dev/sql/upgrade/1.1.0.5.sql create mode 100644 install-dev/sql/upgrade/1.2.0.1.sql create mode 100644 install-dev/sql/upgrade/1.2.0.2.sql create mode 100644 install-dev/sql/upgrade/1.2.0.3.sql create mode 100644 install-dev/sql/upgrade/1.2.0.4.sql create mode 100644 install-dev/sql/upgrade/1.2.0.5.sql create mode 100644 install-dev/sql/upgrade/1.2.0.6.sql create mode 100644 install-dev/sql/upgrade/1.2.0.7.sql create mode 100644 install-dev/sql/upgrade/1.2.0.8.sql create mode 100644 install-dev/sql/upgrade/1.2.1.0.sql create mode 100644 install-dev/sql/upgrade/1.2.2.0.sql create mode 100644 install-dev/sql/upgrade/1.2.3.0.sql create mode 100644 install-dev/sql/upgrade/1.2.4.0.sql create mode 100644 install-dev/sql/upgrade/1.2.5.0.sql create mode 100644 install-dev/sql/upgrade/1.3.0.1.sql create mode 100644 install-dev/sql/upgrade/1.3.0.10.sql create mode 100644 install-dev/sql/upgrade/1.3.0.2.sql create mode 100644 install-dev/sql/upgrade/1.3.0.3.sql create mode 100644 install-dev/sql/upgrade/1.3.0.4.sql create mode 100644 install-dev/sql/upgrade/1.3.0.5.sql create mode 100644 install-dev/sql/upgrade/1.3.0.6.sql create mode 100755 install-dev/sql/upgrade/1.3.0.7.sql create mode 100644 install-dev/sql/upgrade/1.3.0.8.sql create mode 100644 install-dev/sql/upgrade/1.3.0.9.sql create mode 100644 install-dev/sql/upgrade/1.3.1.1.sql create mode 100755 install-dev/sql/upgrade/1.3.2.1.sql create mode 100755 install-dev/sql/upgrade/1.3.2.2.sql create mode 100755 install-dev/sql/upgrade/1.3.2.3.sql create mode 100644 install-dev/sql/upgrade/1.3.3.0.sql create mode 100644 install-dev/sql/upgrade/1.3.4.0.sql create mode 100644 install-dev/sql/upgrade/1.3.5.0.sql create mode 100755 install-dev/sql/upgrade/1.3.6.0.sql create mode 100644 install-dev/sql/upgrade/1.3.7.0.sql create mode 100644 install-dev/sql/upgrade/1.4.0.1.sql create mode 100644 install-dev/sql/upgrade/1.4.0.10.sql create mode 100644 install-dev/sql/upgrade/1.4.0.11.sql create mode 100644 install-dev/sql/upgrade/1.4.0.12.sql create mode 100644 install-dev/sql/upgrade/1.4.0.13.sql create mode 100644 install-dev/sql/upgrade/1.4.0.14.sql create mode 100644 install-dev/sql/upgrade/1.4.0.15.sql create mode 100644 install-dev/sql/upgrade/1.4.0.16.sql create mode 100644 install-dev/sql/upgrade/1.4.0.17.sql create mode 100644 install-dev/sql/upgrade/1.4.0.2.sql create mode 100644 install-dev/sql/upgrade/1.4.0.3.sql create mode 100644 install-dev/sql/upgrade/1.4.0.4.sql create mode 100644 install-dev/sql/upgrade/1.4.0.5.sql create mode 100644 install-dev/sql/upgrade/1.4.0.6.sql create mode 100644 install-dev/sql/upgrade/1.4.0.7.sql create mode 100644 install-dev/sql/upgrade/1.4.0.8.sql create mode 100644 install-dev/sql/upgrade/1.4.0.9.sql create mode 100755 install-dev/sql/upgrade/1.4.1.0.sql create mode 100644 install-dev/view.css create mode 100644 install-dev/xml/checkConfig.php create mode 100644 install-dev/xml/checkDB.php create mode 100644 install-dev/xml/checkMail.php create mode 100644 install-dev/xml/checkShopInfos.php create mode 100644 install-dev/xml/createDB.php create mode 100644 install-dev/xml/doUpgrade.php create mode 100644 install-dev/xml/uploadLogo.php create mode 100644 js/admin-dnd.js create mode 100644 js/admin-scene-cropping.js create mode 100644 js/admin.js create mode 100644 js/adminImport.js create mode 100644 js/ajax.js create mode 100644 js/attributesBack.js create mode 100644 js/checkLangPack.js create mode 100644 js/cropper/builder.js create mode 100644 js/cropper/cropper.css create mode 100644 js/cropper/cropper.js create mode 100644 js/cropper/dragdrop.js create mode 100644 js/cropper/index.php create mode 100644 js/cropper/loader.js create mode 100644 js/cropper/prototype.js create mode 100644 js/cropper/scriptaculous.js create mode 100644 js/date.js create mode 100644 js/gg-translate.js create mode 100644 js/hookLiveEdit.js create mode 100644 js/index.php create mode 100644 js/jquery/accordion/accordion.css create mode 100644 js/jquery/accordion/accordion.ui.js create mode 100644 js/jquery/ajaxfileupload.js create mode 100644 js/jquery/datepicker/000000.png create mode 100644 js/jquery/datepicker/666666.png create mode 100644 js/jquery/datepicker/b81900.png create mode 100644 js/jquery/datepicker/datepicker.css create mode 100644 js/jquery/datepicker/eeeeee.png create mode 100644 js/jquery/datepicker/f6a828.png create mode 100644 js/jquery/datepicker/f6f6f6.png create mode 100644 js/jquery/datepicker/fdf5ce.png create mode 100644 js/jquery/datepicker/ffe45c.png create mode 100644 js/jquery/datepicker/ffffff.png create mode 100644 js/jquery/datepicker/icons222222.png create mode 100644 js/jquery/datepicker/icons228ef1.png create mode 100644 js/jquery/datepicker/iconsef8c08.png create mode 100644 js/jquery/datepicker/iconsffd27a.png create mode 100644 js/jquery/datepicker/iconsffffff.png create mode 100644 js/jquery/datepicker/index.php create mode 100644 js/jquery/datepicker/jquery-ui-personalized-1.6rc4.packed.js create mode 100644 js/jquery/datepicker/ui/i18n/index.php create mode 100644 js/jquery/datepicker/ui/i18n/jquery.ui.i18n.all.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-ar.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-bg.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-ca.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-cs.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-da.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-de.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-eo.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-es.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-fa.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-fi.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-fr.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-he.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-hr.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-hu.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-hy.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-id.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-is.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-it.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-ja.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-ko.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-lt.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-lv.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-nl.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-no.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-pl.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-pt.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-ro.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-ru.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-sk.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-sl.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-sq.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-sv.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-th.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-tr.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-uk.js create mode 100644 js/jquery/datepicker/ui/i18n/ui.datepicker-zh.js create mode 100644 js/jquery/datepicker/ui/index.php create mode 100644 js/jquery/excanvas.min.js create mode 100644 js/jquery/fancybox/blank.gif create mode 100644 js/jquery/fancybox/fancy_close.png create mode 100644 js/jquery/fancybox/fancy_loading.png create mode 100644 js/jquery/fancybox/fancy_nav_left.png create mode 100644 js/jquery/fancybox/fancy_nav_right.png create mode 100644 js/jquery/fancybox/fancy_shadow_e.png create mode 100644 js/jquery/fancybox/fancy_shadow_n.png create mode 100644 js/jquery/fancybox/fancy_shadow_ne.png create mode 100644 js/jquery/fancybox/fancy_shadow_nw.png create mode 100644 js/jquery/fancybox/fancy_shadow_s.png create mode 100644 js/jquery/fancybox/fancy_shadow_se.png create mode 100644 js/jquery/fancybox/fancy_shadow_sw.png create mode 100644 js/jquery/fancybox/fancy_shadow_w.png create mode 100644 js/jquery/fancybox/fancy_title_left.png create mode 100644 js/jquery/fancybox/fancy_title_main.png create mode 100644 js/jquery/fancybox/fancy_title_over.png create mode 100644 js/jquery/fancybox/fancy_title_right.png create mode 100644 js/jquery/fancybox/fancybox-x.png create mode 100644 js/jquery/fancybox/fancybox-y.png create mode 100644 js/jquery/fancybox/fancybox.png create mode 100644 js/jquery/ifxtransfer.js create mode 100644 js/jquery/imgareaselect/border-anim-h.gif create mode 100644 js/jquery/imgareaselect/border-anim-v.gif create mode 100644 js/jquery/imgareaselect/border-h.gif create mode 100644 js/jquery/imgareaselect/border-v.gif create mode 100644 js/jquery/imgareaselect/imgareaselect-animated.css create mode 100644 js/jquery/imgareaselect/imgareaselect-default.css create mode 100644 js/jquery/imgareaselect/imgareaselect-deprecated.css create mode 100644 js/jquery/imgareaselect/index.php create mode 100644 js/jquery/imgareaselect/jquery.imgareaselect.pack.js create mode 100644 js/jquery/index.php create mode 100644 js/jquery/iutil.prestashop-modifications.js create mode 100644 js/jquery/jqminmax-compressed.js create mode 100644 js/jquery/jquery-1.4.4.min.js create mode 100644 js/jquery/jquery-colorpicker.js create mode 100644 js/jquery/jquery-typewatch.pack.js create mode 100755 js/jquery/jquery-ui-1.8.10.custom.min.js create mode 100644 js/jquery/jquery.autocomplete.js create mode 100644 js/jquery/jquery.cluetip.js create mode 100644 js/jquery/jquery.dimensions.js create mode 100644 js/jquery/jquery.easing.1.3.js create mode 100644 js/jquery/jquery.fancybox-1.3.4.js create mode 100644 js/jquery/jquery.flot.min.js create mode 100644 js/jquery/jquery.hoverIntent.minified.js create mode 100644 js/jquery/jquery.idTabs.modified.js create mode 100644 js/jquery/jquery.jgrowl-1.2.1.min.js create mode 100644 js/jquery/jquery.jqzoom.js create mode 100644 js/jquery/jquery.pngFix.pack.js create mode 100644 js/jquery/jquery.scrollTo-1.4.2-min.js create mode 100644 js/jquery/jquery.serialScroll-1.2.2-min.js create mode 100644 js/jquery/jquery.tablednd_0_5.js create mode 100644 js/jquery/thickbox-modified.js create mode 100644 js/pluginDetect.js create mode 100644 js/price.js create mode 100644 js/sendMailTest.js create mode 100644 js/tabpane.js create mode 100755 js/tiny_mce/langs/en.js create mode 100755 js/tiny_mce/langs/es.js create mode 100755 js/tiny_mce/langs/et.js create mode 100755 js/tiny_mce/langs/fi.js create mode 100755 js/tiny_mce/langs/fr.js create mode 100755 js/tiny_mce/langs/gl.js create mode 100755 js/tiny_mce/langs/he.js create mode 100755 js/tiny_mce/langs/hu.js create mode 100755 js/tiny_mce/langs/id.js create mode 100755 js/tiny_mce/langs/it.js create mode 100755 js/tiny_mce/langs/lt.js create mode 100755 js/tiny_mce/langs/lv.js create mode 100755 js/tiny_mce/langs/nl.js create mode 100755 js/tiny_mce/langs/no.js create mode 100755 js/tiny_mce/langs/pl.js create mode 100755 js/tiny_mce/langs/pt.js create mode 100755 js/tiny_mce/langs/ro.js create mode 100755 js/tiny_mce/langs/ru.js create mode 100644 js/tiny_mce/license.txt create mode 100644 js/tiny_mce/plugins/advimage/css/advimage.css create mode 100644 js/tiny_mce/plugins/advimage/editor_plugin.js create mode 100644 js/tiny_mce/plugins/advimage/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/advimage/image.htm create mode 100644 js/tiny_mce/plugins/advimage/img/sample.gif create mode 100644 js/tiny_mce/plugins/advimage/js/image.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/el_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/advimage/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/advlink/css/advlink.css create mode 100644 js/tiny_mce/plugins/advlink/editor_plugin.js create mode 100644 js/tiny_mce/plugins/advlink/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/advlink/js/advlink.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/el_dlg.js create mode 100644 js/tiny_mce/plugins/advlink/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ii_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/advlink/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/advlink/link.htm create mode 100644 js/tiny_mce/plugins/contextmenu/editor_plugin.js create mode 100644 js/tiny_mce/plugins/contextmenu/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/fullscreen/editor_plugin.js create mode 100644 js/tiny_mce/plugins/fullscreen/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/fullscreen/fullscreen.htm create mode 100644 js/tiny_mce/plugins/inlinepopups/editor_plugin.js create mode 100644 js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif create mode 100644 js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css create mode 100644 js/tiny_mce/plugins/inlinepopups/template.htm create mode 100644 js/tiny_mce/plugins/media/css/media.css create mode 100644 js/tiny_mce/plugins/media/editor_plugin.js create mode 100644 js/tiny_mce/plugins/media/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/media/js/embed.js create mode 100644 js/tiny_mce/plugins/media/js/media.js create mode 100755 js/tiny_mce/plugins/media/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/el_dlg.js create mode 100644 js/tiny_mce/plugins/media/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ii_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/media/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/media/media.htm create mode 100644 js/tiny_mce/plugins/media/moxieplayer.swf create mode 100644 js/tiny_mce/plugins/pagebreak/editor_plugin.js create mode 100644 js/tiny_mce/plugins/pagebreak/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/paste/editor_plugin.js create mode 100644 js/tiny_mce/plugins/paste/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/paste/js/pastetext.js create mode 100644 js/tiny_mce/plugins/paste/js/pasteword.js create mode 100755 js/tiny_mce/plugins/paste/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/el_dlg.js create mode 100644 js/tiny_mce/plugins/paste/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ii_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/paste/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/paste/pastetext.htm create mode 100644 js/tiny_mce/plugins/paste/pasteword.htm create mode 100644 js/tiny_mce/plugins/preview/editor_plugin.js create mode 100644 js/tiny_mce/plugins/preview/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/preview/example.html create mode 100644 js/tiny_mce/plugins/preview/jscripts/embed.js create mode 100644 js/tiny_mce/plugins/preview/preview.html create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/el_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ii_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/searchreplace/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/style/css/props.css create mode 100644 js/tiny_mce/plugins/style/editor_plugin.js create mode 100644 js/tiny_mce/plugins/style/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/style/js/props.js create mode 100755 js/tiny_mce/plugins/style/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/el_dlg.js create mode 100644 js/tiny_mce/plugins/style/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ii_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/style/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/style/props.htm create mode 100644 js/tiny_mce/plugins/table/cell.htm create mode 100644 js/tiny_mce/plugins/table/css/cell.css create mode 100644 js/tiny_mce/plugins/table/css/row.css create mode 100644 js/tiny_mce/plugins/table/css/table.css create mode 100644 js/tiny_mce/plugins/table/editor_plugin.js create mode 100644 js/tiny_mce/plugins/table/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/table/js/cell.js create mode 100644 js/tiny_mce/plugins/table/js/merge_cells.js create mode 100644 js/tiny_mce/plugins/table/js/row.js create mode 100644 js/tiny_mce/plugins/table/js/table.js create mode 100755 js/tiny_mce/plugins/table/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/el_dlg.js create mode 100644 js/tiny_mce/plugins/table/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ii_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/table/langs/zu_dlg.js create mode 100644 js/tiny_mce/plugins/table/merge_cells.htm create mode 100644 js/tiny_mce/plugins/table/row.htm create mode 100644 js/tiny_mce/plugins/table/table.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/abbr.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/acronym.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/attributes.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/cite.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/css/attributes.css create mode 100644 js/tiny_mce/plugins/xhtmlxtras/css/popup.css create mode 100644 js/tiny_mce/plugins/xhtmlxtras/del.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/ins.htm create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/abbr.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/acronym.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/attributes.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/cite.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/del.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/element_common.js create mode 100644 js/tiny_mce/plugins/xhtmlxtras/js/ins.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/be_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ch_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/cn_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/dv_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/gu_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ia_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/kl_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/km_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/lb_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ml_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/mn_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/my_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/no_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/sc_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/se_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/te_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/tn_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/tt_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/tw_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/ur_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/zh_dlg.js create mode 100755 js/tiny_mce/plugins/xhtmlxtras/langs/zu_dlg.js create mode 100644 js/tiny_mce/themes/advanced/about.htm create mode 100644 js/tiny_mce/themes/advanced/anchor.htm create mode 100644 js/tiny_mce/themes/advanced/charmap.htm create mode 100644 js/tiny_mce/themes/advanced/color_picker.htm create mode 100644 js/tiny_mce/themes/advanced/editor_template.js create mode 100644 js/tiny_mce/themes/advanced/editor_template_src.js create mode 100644 js/tiny_mce/themes/advanced/image.htm create mode 100644 js/tiny_mce/themes/advanced/img/colorpicker.jpg create mode 100644 js/tiny_mce/themes/advanced/img/flash.gif create mode 100644 js/tiny_mce/themes/advanced/img/icons.gif create mode 100644 js/tiny_mce/themes/advanced/img/iframe.gif create mode 100644 js/tiny_mce/themes/advanced/img/pagebreak.gif create mode 100644 js/tiny_mce/themes/advanced/img/quicktime.gif create mode 100644 js/tiny_mce/themes/advanced/img/realmedia.gif create mode 100644 js/tiny_mce/themes/advanced/img/shockwave.gif create mode 100644 js/tiny_mce/themes/advanced/img/trans.gif create mode 100644 js/tiny_mce/themes/advanced/img/video.gif create mode 100644 js/tiny_mce/themes/advanced/img/windowsmedia.gif create mode 100644 js/tiny_mce/themes/advanced/js/about.js create mode 100644 js/tiny_mce/themes/advanced/js/anchor.js create mode 100644 js/tiny_mce/themes/advanced/js/charmap.js create mode 100644 js/tiny_mce/themes/advanced/js/color_picker.js create mode 100644 js/tiny_mce/themes/advanced/js/image.js create mode 100644 js/tiny_mce/themes/advanced/js/link.js create mode 100644 js/tiny_mce/themes/advanced/js/source_editor.js create mode 100755 js/tiny_mce/themes/advanced/langs/en.js create mode 100755 js/tiny_mce/themes/advanced/langs/en_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/es.js create mode 100755 js/tiny_mce/themes/advanced/langs/es_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/et.js create mode 100755 js/tiny_mce/themes/advanced/langs/et_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/fi.js create mode 100755 js/tiny_mce/themes/advanced/langs/fi_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/fr.js create mode 100755 js/tiny_mce/themes/advanced/langs/fr_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/gl.js create mode 100755 js/tiny_mce/themes/advanced/langs/gl_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/he.js create mode 100755 js/tiny_mce/themes/advanced/langs/he_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/hu.js create mode 100755 js/tiny_mce/themes/advanced/langs/hu_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/id.js create mode 100755 js/tiny_mce/themes/advanced/langs/id_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/it.js create mode 100755 js/tiny_mce/themes/advanced/langs/it_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/lt.js create mode 100755 js/tiny_mce/themes/advanced/langs/lt_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/lv.js create mode 100755 js/tiny_mce/themes/advanced/langs/lv_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/nl.js create mode 100755 js/tiny_mce/themes/advanced/langs/nl_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/no.js create mode 100755 js/tiny_mce/themes/advanced/langs/no_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/pl.js create mode 100755 js/tiny_mce/themes/advanced/langs/pl_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/pt.js create mode 100755 js/tiny_mce/themes/advanced/langs/pt_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/ro.js create mode 100755 js/tiny_mce/themes/advanced/langs/ro_dlg.js create mode 100755 js/tiny_mce/themes/advanced/langs/ru.js create mode 100755 js/tiny_mce/themes/advanced/langs/ru_dlg.js create mode 100644 js/tiny_mce/themes/advanced/link.htm create mode 100644 js/tiny_mce/themes/advanced/shortcuts.htm create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/content.css create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/dialog.css create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/butt2.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/button-bg.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/buttons.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/down_arrow.gif create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/fade-butt.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/icons.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/items.gif create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/menu-arrow.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/menu-check.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/progress.gif create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/tabs.gif create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/img/toolbarbg.png create mode 100755 js/tiny_mce/themes/advanced/skins/cirkuit/ui.css create mode 100644 js/tiny_mce/themes/advanced/skins/default/content.css create mode 100644 js/tiny_mce/themes/advanced/skins/default/dialog.css create mode 100644 js/tiny_mce/themes/advanced/skins/default/img/buttons.png create mode 100644 js/tiny_mce/themes/advanced/skins/default/img/items.gif create mode 100644 js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif create mode 100644 js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif create mode 100644 js/tiny_mce/themes/advanced/skins/default/img/progress.gif create mode 100644 js/tiny_mce/themes/advanced/skins/default/img/tabs.gif create mode 100644 js/tiny_mce/themes/advanced/skins/default/ui.css create mode 100644 js/tiny_mce/themes/advanced/skins/highcontrast/content.css create mode 100644 js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css create mode 100644 js/tiny_mce/themes/advanced/skins/highcontrast/ui.css create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/content.css create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/dialog.css create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/ui.css create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css create mode 100644 js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css create mode 100644 js/tiny_mce/themes/advanced/source_editor.htm create mode 100644 js/tiny_mce/tiny_mce.js create mode 100644 js/tiny_mce/tiny_mce_popup.js create mode 100644 js/tiny_mce/tiny_mce_src.js create mode 100644 js/tiny_mce/utils/editable_selects.js create mode 100644 js/tiny_mce/utils/form_utils.js create mode 100644 js/tiny_mce/utils/mctabs.js create mode 100644 js/tiny_mce/utils/validate.js create mode 100644 js/tinymce.inc.js create mode 100644 js/toggle.js create mode 100644 js/tools.js create mode 100644 localization/ar.xml create mode 100644 localization/at.xml create mode 100644 localization/au.xml create mode 100644 localization/az.xml create mode 100644 localization/be.xml create mode 100644 localization/bg.xml create mode 100644 localization/bo.xml create mode 100644 localization/br.xml create mode 100644 localization/ca.xml create mode 100644 localization/ch.xml create mode 100644 localization/cl.xml create mode 100644 localization/cn.xml create mode 100644 localization/co.xml create mode 100644 localization/cy.xml create mode 100644 localization/cz.xml create mode 100644 localization/de.xml create mode 100644 localization/dk.xml create mode 100644 localization/do.xml create mode 100644 localization/ec.xml create mode 100644 localization/ee.xml create mode 100644 localization/eg.xml create mode 100644 localization/es.xml create mode 100644 localization/fi.xml create mode 100644 localization/fj.xml create mode 100644 localization/fr.xml create mode 100644 localization/ge.xml create mode 100644 localization/gr.xml create mode 100644 localization/gt.xml create mode 100644 localization/gy.xml create mode 100644 localization/hk.xml create mode 100644 localization/hu.xml create mode 100644 localization/id.xml create mode 100644 localization/ie.xml create mode 100644 localization/il.xml create mode 100644 localization/in.xml create mode 100644 localization/ir.xml create mode 100644 localization/it.xml create mode 100644 localization/je.xml create mode 100644 localization/jp.xml create mode 100644 localization/li.xml create mode 100644 localization/lt.xml create mode 100644 localization/lu.xml create mode 100644 localization/lv.xml create mode 100644 localization/md.xml create mode 100644 localization/mt.xml create mode 100644 localization/mx.xml create mode 100644 localization/nl.xml create mode 100644 localization/no.xml create mode 100644 localization/nz.xml create mode 100644 localization/pk.xml create mode 100644 localization/pl.xml create mode 100644 localization/pt.xml create mode 100644 localization/py.xml create mode 100644 localization/ro.xml create mode 100644 localization/ru.xml create mode 100644 localization/sa.xml create mode 100644 localization/se.xml create mode 100644 localization/sg.xml create mode 100644 localization/si.xml create mode 100644 localization/sk.xml create mode 100644 localization/sv.xml create mode 100644 localization/th.xml create mode 100644 localization/tr.xml create mode 100644 localization/tw.xml create mode 100644 localization/ua.xml create mode 100644 localization/uk.xml create mode 100644 localization/us.xml create mode 100644 localization/uy.xml create mode 100644 localization/ve.xml create mode 100644 localization/vn.xml create mode 100644 mails/de/account.html create mode 100644 mails/de/account.txt create mode 100644 mails/de/bankwire.html create mode 100644 mails/de/bankwire.txt create mode 100644 mails/de/cheque.html create mode 100644 mails/de/cheque.txt create mode 100644 mails/de/contact.html create mode 100644 mails/de/contact.txt create mode 100644 mails/de/contact_form.html create mode 100644 mails/de/contact_form.txt create mode 100644 mails/de/credit_slip.html create mode 100644 mails/de/credit_slip.txt create mode 100644 mails/de/download-product.tpl create mode 100644 mails/de/download_product.html create mode 100644 mails/de/download_product.txt create mode 100644 mails/de/employee_password.html create mode 100644 mails/de/employee_password.txt create mode 100644 mails/de/forward_msg.html create mode 100644 mails/de/forward_msg.txt create mode 100644 mails/de/guest_to_customer.html create mode 100644 mails/de/guest_to_customer.txt create mode 100644 mails/de/in_transit.html create mode 100644 mails/de/in_transit.txt create mode 100644 mails/de/index.php create mode 100644 mails/de/lang.php create mode 100755 mails/de/log_alert.html create mode 100755 mails/de/log_alert.txt create mode 100644 mails/de/newsletter.html create mode 100644 mails/de/newsletter.txt create mode 100644 mails/de/order_canceled.html create mode 100644 mails/de/order_canceled.txt create mode 100644 mails/de/order_conf.html create mode 100644 mails/de/order_conf.txt create mode 100644 mails/de/order_customer_comment.html create mode 100644 mails/de/order_customer_comment.txt create mode 100644 mails/de/order_merchant_comment.html create mode 100644 mails/de/order_merchant_comment.txt create mode 100644 mails/de/order_return_state.html create mode 100644 mails/de/order_return_state.txt create mode 100644 mails/de/outofstock.html create mode 100644 mails/de/outofstock.txt create mode 100644 mails/de/password.html create mode 100644 mails/de/password.txt create mode 100644 mails/de/password_query.html create mode 100644 mails/de/password_query.txt create mode 100644 mails/de/payment.html create mode 100644 mails/de/payment.txt create mode 100644 mails/de/payment_error.html create mode 100644 mails/de/payment_error.txt create mode 100644 mails/de/preparation.html create mode 100644 mails/de/preparation.txt create mode 100644 mails/de/refund.html create mode 100644 mails/de/refund.txt create mode 100644 mails/de/reply_msg.html create mode 100644 mails/de/reply_msg.txt create mode 100644 mails/de/shipped.html create mode 100644 mails/de/shipped.txt create mode 100644 mails/de/test.html create mode 100644 mails/de/test.txt create mode 100644 mails/de/voucher.html create mode 100644 mails/de/voucher.txt create mode 100644 mails/en/account.html create mode 100644 mails/en/account.txt create mode 100644 mails/en/bankwire.html create mode 100644 mails/en/bankwire.txt create mode 100644 mails/en/cheque.html create mode 100644 mails/en/cheque.txt create mode 100644 mails/en/contact.html create mode 100644 mails/en/contact.txt create mode 100644 mails/en/contact_form.html create mode 100644 mails/en/contact_form.txt create mode 100644 mails/en/credit_slip.html create mode 100644 mails/en/credit_slip.txt create mode 100644 mails/en/download-product.tpl create mode 100644 mails/en/download_product.html create mode 100644 mails/en/download_product.txt create mode 100644 mails/en/employee_password.html create mode 100644 mails/en/employee_password.txt create mode 100644 mails/en/forward_msg.html create mode 100644 mails/en/forward_msg.txt create mode 100644 mails/en/guest_to_customer.html create mode 100644 mails/en/guest_to_customer.txt create mode 100755 mails/en/in_transit.html create mode 100755 mails/en/in_transit.txt create mode 100644 mails/en/index.php create mode 100644 mails/en/lang.php create mode 100755 mails/en/log_alert.html create mode 100755 mails/en/log_alert.txt create mode 100644 mails/en/newsletter.html create mode 100644 mails/en/newsletter.txt create mode 100644 mails/en/order_canceled.html create mode 100644 mails/en/order_canceled.txt create mode 100644 mails/en/order_conf.html create mode 100644 mails/en/order_conf.txt create mode 100644 mails/en/order_customer_comment.html create mode 100644 mails/en/order_customer_comment.txt create mode 100644 mails/en/order_merchant_comment.html create mode 100644 mails/en/order_merchant_comment.txt create mode 100644 mails/en/order_return_state.html create mode 100644 mails/en/order_return_state.txt create mode 100644 mails/en/outofstock.html create mode 100644 mails/en/outofstock.txt create mode 100644 mails/en/password.html create mode 100644 mails/en/password.txt create mode 100644 mails/en/password_query.html create mode 100644 mails/en/password_query.txt create mode 100644 mails/en/payment.html create mode 100644 mails/en/payment.txt create mode 100644 mails/en/payment_error.html create mode 100644 mails/en/payment_error.txt create mode 100644 mails/en/preparation.html create mode 100644 mails/en/preparation.txt create mode 100644 mails/en/refund.html create mode 100644 mails/en/refund.txt create mode 100644 mails/en/reply_msg.html create mode 100644 mails/en/reply_msg.txt create mode 100644 mails/en/shipped.html create mode 100644 mails/en/shipped.txt create mode 100644 mails/en/test.html create mode 100644 mails/en/test.txt create mode 100644 mails/en/voucher.html create mode 100644 mails/en/voucher.txt create mode 100644 mails/es/account.html create mode 100644 mails/es/account.txt create mode 100644 mails/es/bankwire.html create mode 100644 mails/es/bankwire.txt create mode 100644 mails/es/cheque.html create mode 100644 mails/es/cheque.txt create mode 100644 mails/es/contact.html create mode 100644 mails/es/contact.txt create mode 100644 mails/es/contact_form.html create mode 100644 mails/es/contact_form.txt create mode 100644 mails/es/credit_slip.html create mode 100644 mails/es/credit_slip.txt create mode 100644 mails/es/download-product.tpl create mode 100644 mails/es/download_product.html create mode 100644 mails/es/download_product.txt create mode 100644 mails/es/employee_password.html create mode 100644 mails/es/employee_password.txt create mode 100644 mails/es/forward_msg.html create mode 100644 mails/es/forward_msg.txt create mode 100644 mails/es/guest_to_customer.html create mode 100644 mails/es/guest_to_customer.txt create mode 100644 mails/es/in_transit.html create mode 100644 mails/es/in_transit.txt create mode 100644 mails/es/index.php create mode 100644 mails/es/lang.php create mode 100755 mails/es/log_alert.html create mode 100755 mails/es/log_alert.txt create mode 100644 mails/es/newsletter.html create mode 100644 mails/es/newsletter.txt create mode 100644 mails/es/order_canceled.html create mode 100644 mails/es/order_canceled.txt create mode 100644 mails/es/order_conf.html create mode 100644 mails/es/order_conf.txt create mode 100644 mails/es/order_customer_comment.html create mode 100644 mails/es/order_customer_comment.txt create mode 100644 mails/es/order_merchant_comment.html create mode 100644 mails/es/order_merchant_comment.txt create mode 100644 mails/es/order_return_state.html create mode 100644 mails/es/order_return_state.txt create mode 100644 mails/es/outofstock.html create mode 100644 mails/es/outofstock.txt create mode 100644 mails/es/password.html create mode 100644 mails/es/password.txt create mode 100644 mails/es/password_query.html create mode 100644 mails/es/password_query.txt create mode 100644 mails/es/payment.html create mode 100644 mails/es/payment.txt create mode 100644 mails/es/payment_error.html create mode 100644 mails/es/payment_error.txt create mode 100644 mails/es/preparation.html create mode 100644 mails/es/preparation.txt create mode 100644 mails/es/refund.html create mode 100644 mails/es/refund.txt create mode 100644 mails/es/reply_msg.html create mode 100644 mails/es/reply_msg.txt create mode 100644 mails/es/shipped.html create mode 100644 mails/es/shipped.txt create mode 100644 mails/es/test.html create mode 100644 mails/es/test.txt create mode 100644 mails/es/voucher.html create mode 100644 mails/es/voucher.txt create mode 100644 mails/fr/account.html create mode 100644 mails/fr/account.txt create mode 100644 mails/fr/bankwire.html create mode 100644 mails/fr/bankwire.txt create mode 100644 mails/fr/cheque.html create mode 100644 mails/fr/cheque.txt create mode 100644 mails/fr/contact.html create mode 100644 mails/fr/contact.txt create mode 100644 mails/fr/contact_form.html create mode 100644 mails/fr/contact_form.txt create mode 100644 mails/fr/credit_slip.html create mode 100644 mails/fr/credit_slip.txt create mode 100644 mails/fr/download-product.tpl create mode 100644 mails/fr/download_product.html create mode 100644 mails/fr/download_product.txt create mode 100644 mails/fr/employee_password.html create mode 100644 mails/fr/employee_password.txt create mode 100644 mails/fr/forward_msg.html create mode 100644 mails/fr/forward_msg.txt create mode 100644 mails/fr/guest_to_customer.html create mode 100644 mails/fr/guest_to_customer.txt create mode 100755 mails/fr/in_transit.html create mode 100755 mails/fr/in_transit.txt create mode 100644 mails/fr/index.php create mode 100644 mails/fr/lang.php create mode 100755 mails/fr/log_alert.html create mode 100755 mails/fr/log_alert.txt create mode 100644 mails/fr/newsletter.html create mode 100644 mails/fr/newsletter.txt create mode 100644 mails/fr/order_canceled.html create mode 100644 mails/fr/order_canceled.txt create mode 100644 mails/fr/order_conf.html create mode 100644 mails/fr/order_conf.txt create mode 100644 mails/fr/order_customer_comment.html create mode 100644 mails/fr/order_customer_comment.txt create mode 100644 mails/fr/order_merchant_comment.html create mode 100644 mails/fr/order_merchant_comment.txt create mode 100644 mails/fr/order_return_state.html create mode 100644 mails/fr/order_return_state.txt create mode 100644 mails/fr/outofstock.html create mode 100644 mails/fr/outofstock.txt create mode 100644 mails/fr/password.html create mode 100644 mails/fr/password.txt create mode 100644 mails/fr/password_query.html create mode 100644 mails/fr/password_query.txt create mode 100644 mails/fr/payment.html create mode 100644 mails/fr/payment.txt create mode 100644 mails/fr/payment_error.html create mode 100644 mails/fr/payment_error.txt create mode 100644 mails/fr/preparation.html create mode 100644 mails/fr/preparation.txt create mode 100644 mails/fr/refund.html create mode 100644 mails/fr/refund.txt create mode 100644 mails/fr/reply_msg.html create mode 100644 mails/fr/reply_msg.txt create mode 100644 mails/fr/shipped.html create mode 100644 mails/fr/shipped.txt create mode 100644 mails/fr/test.html create mode 100644 mails/fr/test.txt create mode 100644 mails/fr/voucher.html create mode 100644 mails/fr/voucher.txt create mode 100644 mails/index.php create mode 100644 mails/it/account.html create mode 100644 mails/it/account.txt create mode 100644 mails/it/bankwire.html create mode 100644 mails/it/bankwire.txt create mode 100644 mails/it/cheque.html create mode 100644 mails/it/cheque.txt create mode 100644 mails/it/contact.html create mode 100644 mails/it/contact.txt create mode 100644 mails/it/contact_form.html create mode 100644 mails/it/contact_form.txt create mode 100644 mails/it/credit_slip.html create mode 100644 mails/it/credit_slip.txt create mode 100644 mails/it/download-product.tpl create mode 100644 mails/it/download_product.html create mode 100644 mails/it/download_product.txt create mode 100644 mails/it/employee_password.html create mode 100644 mails/it/employee_password.txt create mode 100644 mails/it/forward_msg.html create mode 100644 mails/it/forward_msg.txt create mode 100644 mails/it/guest_to_customer.html create mode 100644 mails/it/guest_to_customer.txt create mode 100644 mails/it/in_transit.html create mode 100644 mails/it/in_transit.txt create mode 100644 mails/it/index.php create mode 100644 mails/it/lang.php create mode 100755 mails/it/log_alert.html create mode 100755 mails/it/log_alert.txt create mode 100644 mails/it/newsletter.html create mode 100644 mails/it/newsletter.txt create mode 100644 mails/it/order_canceled.html create mode 100644 mails/it/order_canceled.txt create mode 100644 mails/it/order_conf.html create mode 100644 mails/it/order_conf.txt create mode 100644 mails/it/order_customer_comment.html create mode 100644 mails/it/order_customer_comment.txt create mode 100644 mails/it/order_merchant_comment.html create mode 100644 mails/it/order_merchant_comment.txt create mode 100644 mails/it/order_return_state.html create mode 100644 mails/it/order_return_state.txt create mode 100644 mails/it/outofstock.html create mode 100644 mails/it/outofstock.txt create mode 100644 mails/it/password.html create mode 100644 mails/it/password.txt create mode 100644 mails/it/password_query.html create mode 100644 mails/it/password_query.txt create mode 100644 mails/it/payment.html create mode 100644 mails/it/payment.txt create mode 100644 mails/it/payment_error.html create mode 100644 mails/it/payment_error.txt create mode 100644 mails/it/preparation.html create mode 100644 mails/it/preparation.txt create mode 100644 mails/it/refund.html create mode 100644 mails/it/refund.txt create mode 100644 mails/it/reply_msg.html create mode 100644 mails/it/reply_msg.txt create mode 100644 mails/it/shipped.html create mode 100644 mails/it/shipped.txt create mode 100644 mails/it/test.html create mode 100644 mails/it/test.txt create mode 100644 mails/it/voucher.html create mode 100644 mails/it/voucher.txt create mode 100644 manufacturer.php create mode 100755 modules/authorizeaim/authorizeaim.php create mode 100755 modules/authorizeaim/authorizeaim.tpl create mode 100755 modules/authorizeaim/cards/ax.gif create mode 100755 modules/authorizeaim/cards/discover.gif create mode 100755 modules/authorizeaim/cards/mastercard.gif create mode 100755 modules/authorizeaim/cards/visa.gif create mode 100755 modules/authorizeaim/config.xml create mode 100644 modules/authorizeaim/cvv.png create mode 100755 modules/authorizeaim/de.php create mode 100644 modules/authorizeaim/en.php create mode 100644 modules/authorizeaim/es.php create mode 100644 modules/authorizeaim/fr.php create mode 100644 modules/authorizeaim/help.png create mode 100755 modules/authorizeaim/hookorderconfirmation.tpl create mode 100755 modules/authorizeaim/it.php create mode 100755 modules/authorizeaim/logo.gif create mode 100755 modules/authorizeaim/logo_authorize.png create mode 100644 modules/authorizeaim/logoa.gif create mode 100755 modules/authorizeaim/secure.png create mode 100755 modules/authorizeaim/validation.php create mode 100644 modules/bankwire/bankwire.jpg create mode 100644 modules/bankwire/bankwire.php create mode 100755 modules/bankwire/config.xml create mode 100644 modules/bankwire/de.php create mode 100644 modules/bankwire/en.php create mode 100644 modules/bankwire/es.php create mode 100644 modules/bankwire/fr.php create mode 100644 modules/bankwire/it.php create mode 100644 modules/bankwire/logo.gif create mode 100644 modules/bankwire/payment.php create mode 100644 modules/bankwire/payment.tpl create mode 100644 modules/bankwire/payment_execution.tpl create mode 100644 modules/bankwire/payment_return.tpl create mode 100644 modules/bankwire/validation.php create mode 100644 modules/birthdaypresent/birthdaypresent.php create mode 100644 modules/birthdaypresent/comment.gif create mode 100755 modules/birthdaypresent/config.xml create mode 100644 modules/birthdaypresent/cron.php create mode 100644 modules/birthdaypresent/de.php create mode 100644 modules/birthdaypresent/en.php create mode 100644 modules/birthdaypresent/es.php create mode 100644 modules/birthdaypresent/fr.php create mode 100644 modules/birthdaypresent/it.php create mode 100644 modules/birthdaypresent/logo.gif create mode 100644 modules/birthdaypresent/mails/de/birthday.html create mode 100644 modules/birthdaypresent/mails/de/birthday.txt create mode 100644 modules/birthdaypresent/mails/en/birthday.html create mode 100644 modules/birthdaypresent/mails/en/birthday.txt create mode 100644 modules/birthdaypresent/mails/es/birthday.html create mode 100644 modules/birthdaypresent/mails/es/birthday.txt create mode 100644 modules/birthdaypresent/mails/fr/birthday.html create mode 100644 modules/birthdaypresent/mails/fr/birthday.txt create mode 100644 modules/birthdaypresent/mails/it/birthday.html create mode 100644 modules/birthdaypresent/mails/it/birthday.txt create mode 100644 modules/blockadvertising/advertising.jpg create mode 100644 modules/blockadvertising/blockadvertising.php create mode 100644 modules/blockadvertising/blockadvertising.tpl create mode 100755 modules/blockadvertising/config.xml create mode 100644 modules/blockadvertising/de.php create mode 100644 modules/blockadvertising/en.php create mode 100644 modules/blockadvertising/es.php create mode 100644 modules/blockadvertising/fr.php create mode 100644 modules/blockadvertising/it.php create mode 100644 modules/blockadvertising/logo.gif create mode 100644 modules/blockbestsellers/blockbestsellers.php create mode 100644 modules/blockbestsellers/blockbestsellers.tpl create mode 100755 modules/blockbestsellers/config.xml create mode 100644 modules/blockbestsellers/de.php create mode 100644 modules/blockbestsellers/en.php create mode 100644 modules/blockbestsellers/es.php create mode 100644 modules/blockbestsellers/fr.php create mode 100644 modules/blockbestsellers/img/logo.gif create mode 100644 modules/blockbestsellers/it.php create mode 100644 modules/blockbestsellers/logo.gif create mode 100644 modules/blockcart/ajax-cart.js create mode 100644 modules/blockcart/blockcart-ajax.php create mode 100644 modules/blockcart/blockcart-json.tpl create mode 100644 modules/blockcart/blockcart-set-collapse.php create mode 100644 modules/blockcart/blockcart.php create mode 100644 modules/blockcart/blockcart.tpl create mode 100755 modules/blockcart/config.xml create mode 100644 modules/blockcart/de.php create mode 100644 modules/blockcart/en.php create mode 100644 modules/blockcart/es.php create mode 100644 modules/blockcart/fr.php create mode 100644 modules/blockcart/img/icon/basket.png create mode 100644 modules/blockcart/img/icon/basket_go.png create mode 100644 modules/blockcart/img/icon/checkout.png create mode 100644 modules/blockcart/img/icon/delete.gif create mode 100644 modules/blockcart/it.php create mode 100644 modules/blockcart/logo.gif create mode 100644 modules/blockcategories/blockcategories.php create mode 100644 modules/blockcategories/blockcategories.tpl create mode 100644 modules/blockcategories/category-tree-branch.tpl create mode 100755 modules/blockcategories/config.xml create mode 100644 modules/blockcategories/de.php create mode 100644 modules/blockcategories/en.php create mode 100644 modules/blockcategories/es.php create mode 100644 modules/blockcategories/fr.php create mode 100644 modules/blockcategories/it.php create mode 100644 modules/blockcategories/logo.gif create mode 100755 modules/blockcms/ajax_blockcms.php create mode 100755 modules/blockcms/blockcms.js create mode 100755 modules/blockcms/blockcms.php create mode 100755 modules/blockcms/blockcms.tpl create mode 100755 modules/blockcms/config.xml create mode 100644 modules/blockcms/de.php create mode 100755 modules/blockcms/es.php create mode 100755 modules/blockcms/fr.php create mode 100644 modules/blockcms/it.php create mode 100755 modules/blockcms/logo.gif create mode 100644 modules/blockcurrencies/blockcurrencies.php create mode 100644 modules/blockcurrencies/blockcurrencies.tpl create mode 100755 modules/blockcurrencies/config.xml create mode 100644 modules/blockcurrencies/de.php create mode 100644 modules/blockcurrencies/en.php create mode 100644 modules/blockcurrencies/es.php create mode 100644 modules/blockcurrencies/fr.php create mode 100644 modules/blockcurrencies/it.php create mode 100644 modules/blockcurrencies/logo.gif create mode 100644 modules/blocklanguages/blocklanguages.php create mode 100644 modules/blocklanguages/blocklanguages.tpl create mode 100755 modules/blocklanguages/config.xml create mode 100644 modules/blocklanguages/de.php create mode 100644 modules/blocklanguages/en.php create mode 100644 modules/blocklanguages/es.php create mode 100644 modules/blocklanguages/fr.php create mode 100644 modules/blocklanguages/it.php create mode 100644 modules/blocklanguages/logo.gif create mode 100644 modules/blocklayered/blocklayered-ajax.php create mode 100644 modules/blocklayered/blocklayered.css create mode 100644 modules/blocklayered/blocklayered.js create mode 100644 modules/blocklayered/blocklayered.php create mode 100644 modules/blocklayered/blocklayered.tpl create mode 100644 modules/blocklayered/config.xml create mode 100644 modules/blocklayered/de.php create mode 100644 modules/blocklayered/es.php create mode 100644 modules/blocklayered/fr.php create mode 100644 modules/blocklayered/it.php create mode 100644 modules/blocklayered/logo.gif create mode 100644 modules/blocklink/add.png create mode 100644 modules/blocklink/blocklink.js create mode 100644 modules/blocklink/blocklink.php create mode 100644 modules/blocklink/blocklink.tpl create mode 100755 modules/blocklink/config.xml create mode 100644 modules/blocklink/de.php create mode 100644 modules/blocklink/en.php create mode 100644 modules/blocklink/es.php create mode 100644 modules/blocklink/fr.php create mode 100644 modules/blocklink/it.php create mode 100644 modules/blocklink/logo.gif create mode 100644 modules/blocklink/prefs.gif create mode 100644 modules/blockmanufacturer/blockmanufacturer.php create mode 100644 modules/blockmanufacturer/blockmanufacturer.tpl create mode 100755 modules/blockmanufacturer/config.xml create mode 100644 modules/blockmanufacturer/de.php create mode 100644 modules/blockmanufacturer/en.php create mode 100644 modules/blockmanufacturer/es.php create mode 100644 modules/blockmanufacturer/fr.php create mode 100644 modules/blockmanufacturer/it.php create mode 100644 modules/blockmanufacturer/logo.gif create mode 100644 modules/blockmyaccount/blockmyaccount.php create mode 100644 modules/blockmyaccount/blockmyaccount.tpl create mode 100755 modules/blockmyaccount/config.xml create mode 100644 modules/blockmyaccount/de.php create mode 100644 modules/blockmyaccount/en.php create mode 100644 modules/blockmyaccount/es.php create mode 100644 modules/blockmyaccount/fr.php create mode 100644 modules/blockmyaccount/it.php create mode 100644 modules/blockmyaccount/logo.gif create mode 100644 modules/blocknewproducts/blocknewproducts.php create mode 100644 modules/blocknewproducts/blocknewproducts.tpl create mode 100755 modules/blocknewproducts/config.xml create mode 100644 modules/blocknewproducts/de.php create mode 100644 modules/blocknewproducts/en.php create mode 100644 modules/blocknewproducts/es.php create mode 100644 modules/blocknewproducts/fr.php create mode 100644 modules/blocknewproducts/it.php create mode 100644 modules/blocknewproducts/logo.gif create mode 100644 modules/blocknewsletter/blocknewsletter.php create mode 100644 modules/blocknewsletter/blocknewsletter.tpl create mode 100755 modules/blocknewsletter/config.xml create mode 100644 modules/blocknewsletter/de.php create mode 100644 modules/blocknewsletter/en.php create mode 100644 modules/blocknewsletter/es.php create mode 100644 modules/blocknewsletter/fr.php create mode 100644 modules/blocknewsletter/it.php create mode 100644 modules/blocknewsletter/logo.gif create mode 100644 modules/blocknewsletter/mails/de/newsletter_conf.html create mode 100644 modules/blocknewsletter/mails/de/newsletter_conf.txt create mode 100644 modules/blocknewsletter/mails/de/newsletter_voucher.html create mode 100644 modules/blocknewsletter/mails/de/newsletter_voucher.txt create mode 100644 modules/blocknewsletter/mails/en/newsletter_conf.html create mode 100644 modules/blocknewsletter/mails/en/newsletter_conf.txt create mode 100644 modules/blocknewsletter/mails/en/newsletter_voucher.html create mode 100644 modules/blocknewsletter/mails/en/newsletter_voucher.txt create mode 100755 modules/blocknewsletter/mails/es/newsletter_conf.html create mode 100755 modules/blocknewsletter/mails/es/newsletter_conf.txt create mode 100755 modules/blocknewsletter/mails/es/newsletter_voucher.html create mode 100755 modules/blocknewsletter/mails/es/newsletter_voucher.txt create mode 100644 modules/blocknewsletter/mails/fr/newsletter_conf.html create mode 100644 modules/blocknewsletter/mails/fr/newsletter_conf.txt create mode 100644 modules/blocknewsletter/mails/fr/newsletter_voucher.html create mode 100644 modules/blocknewsletter/mails/fr/newsletter_voucher.txt create mode 100755 modules/blocknewsletter/mails/it/newsletter_conf.html create mode 100755 modules/blocknewsletter/mails/it/newsletter_conf.txt create mode 100755 modules/blocknewsletter/mails/it/newsletter_voucher.html create mode 100755 modules/blocknewsletter/mails/it/newsletter_voucher.txt create mode 100644 modules/blockpaymentlogo/blockpaymentlogo.php create mode 100644 modules/blockpaymentlogo/blockpaymentlogo.tpl create mode 100755 modules/blockpaymentlogo/config.xml create mode 100644 modules/blockpaymentlogo/de.php create mode 100644 modules/blockpaymentlogo/en.php create mode 100644 modules/blockpaymentlogo/es.php create mode 100644 modules/blockpaymentlogo/fr.php create mode 100644 modules/blockpaymentlogo/it.php create mode 100644 modules/blockpaymentlogo/logo.gif create mode 100644 modules/blockpermanentlinks/blockpermanentlinks-header.tpl create mode 100644 modules/blockpermanentlinks/blockpermanentlinks.php create mode 100644 modules/blockpermanentlinks/blockpermanentlinks.tpl create mode 100755 modules/blockpermanentlinks/config.xml create mode 100644 modules/blockpermanentlinks/de.php create mode 100644 modules/blockpermanentlinks/en.php create mode 100644 modules/blockpermanentlinks/es.php create mode 100644 modules/blockpermanentlinks/fr.php create mode 100644 modules/blockpermanentlinks/it.php create mode 100644 modules/blockpermanentlinks/logo.gif create mode 100644 modules/blockrss/blockrss.php create mode 100644 modules/blockrss/blockrss.tpl create mode 100755 modules/blockrss/config.xml create mode 100644 modules/blockrss/de.php create mode 100644 modules/blockrss/en.php create mode 100644 modules/blockrss/es.php create mode 100644 modules/blockrss/fr.php create mode 100644 modules/blockrss/it.php create mode 100644 modules/blockrss/logo.gif create mode 100644 modules/blocksearch/blocksearch-top.tpl create mode 100644 modules/blocksearch/blocksearch.php create mode 100644 modules/blocksearch/blocksearch.tpl create mode 100755 modules/blocksearch/config.xml create mode 100644 modules/blocksearch/de.php create mode 100644 modules/blocksearch/en.php create mode 100644 modules/blocksearch/es.php create mode 100644 modules/blocksearch/fr.php create mode 100644 modules/blocksearch/it.php create mode 100644 modules/blocksearch/logo.gif create mode 100644 modules/blockspecials/blockspecials.php create mode 100644 modules/blockspecials/blockspecials.tpl create mode 100755 modules/blockspecials/config.xml create mode 100644 modules/blockspecials/de.php create mode 100644 modules/blockspecials/en.php create mode 100644 modules/blockspecials/es.php create mode 100644 modules/blockspecials/fr.php create mode 100644 modules/blockspecials/it.php create mode 100644 modules/blockspecials/logo.gif create mode 100644 modules/blockstore/blockstore.css create mode 100644 modules/blockstore/blockstore.php create mode 100644 modules/blockstore/blockstore.tpl create mode 100755 modules/blockstore/config.xml create mode 100644 modules/blockstore/de.php create mode 100644 modules/blockstore/es.php create mode 100644 modules/blockstore/fr.php create mode 100644 modules/blockstore/it.php create mode 100644 modules/blockstore/logo.gif create mode 100644 modules/blockstore/store.jpg create mode 100644 modules/blocksupplier/blocksupplier.php create mode 100644 modules/blocksupplier/blocksupplier.tpl create mode 100755 modules/blocksupplier/config.xml create mode 100644 modules/blocksupplier/de.php create mode 100644 modules/blocksupplier/en.php create mode 100644 modules/blocksupplier/es.php create mode 100644 modules/blocksupplier/fr.php create mode 100644 modules/blocksupplier/it.php create mode 100644 modules/blocksupplier/logo.gif create mode 100644 modules/blocktags/blocktags.php create mode 100644 modules/blocktags/blocktags.tpl create mode 100755 modules/blocktags/config.xml create mode 100644 modules/blocktags/de.php create mode 100644 modules/blocktags/en.php create mode 100644 modules/blocktags/es.php create mode 100644 modules/blocktags/fr.php create mode 100644 modules/blocktags/it.php create mode 100644 modules/blocktags/logo.gif create mode 100644 modules/blockuserinfo/blockuserinfo.php create mode 100644 modules/blockuserinfo/blockuserinfo.tpl create mode 100755 modules/blockuserinfo/config.xml create mode 100644 modules/blockuserinfo/de.php create mode 100644 modules/blockuserinfo/en.php create mode 100644 modules/blockuserinfo/es.php create mode 100644 modules/blockuserinfo/fr.php create mode 100644 modules/blockuserinfo/it.php create mode 100644 modules/blockuserinfo/logo.gif create mode 100644 modules/blockviewed/blockviewed.php create mode 100644 modules/blockviewed/blockviewed.tpl create mode 100755 modules/blockviewed/config.xml create mode 100644 modules/blockviewed/de.php create mode 100644 modules/blockviewed/en.php create mode 100644 modules/blockviewed/es.php create mode 100644 modules/blockviewed/fr.php create mode 100644 modules/blockviewed/it.php create mode 100644 modules/blockviewed/logo.gif create mode 100644 modules/blockwishlist/WishList.php create mode 100644 modules/blockwishlist/blockwishlist-ajax.tpl create mode 100644 modules/blockwishlist/blockwishlist-extra.tpl create mode 100644 modules/blockwishlist/blockwishlist-header.tpl create mode 100644 modules/blockwishlist/blockwishlist.php create mode 100644 modules/blockwishlist/blockwishlist.tpl create mode 100644 modules/blockwishlist/buywishlistproduct.php create mode 100644 modules/blockwishlist/cart.php create mode 100755 modules/blockwishlist/config.xml create mode 100644 modules/blockwishlist/de.php create mode 100644 modules/blockwishlist/en.php create mode 100644 modules/blockwishlist/es.php create mode 100644 modules/blockwishlist/fr.php create mode 100644 modules/blockwishlist/img/delete.gif create mode 100644 modules/blockwishlist/img/icon/delete.png create mode 100644 modules/blockwishlist/img/icon/package.png create mode 100644 modules/blockwishlist/img/icon/package_go.png create mode 100644 modules/blockwishlist/img/star.gif create mode 100644 modules/blockwishlist/install.sql create mode 100644 modules/blockwishlist/it.php create mode 100644 modules/blockwishlist/js/ajax-wishlist.js create mode 100644 modules/blockwishlist/logo.gif create mode 100644 modules/blockwishlist/mails/de/wishlink.html create mode 100644 modules/blockwishlist/mails/de/wishlink.txt create mode 100644 modules/blockwishlist/mails/de/wishlist.html create mode 100644 modules/blockwishlist/mails/de/wishlist.txt create mode 100644 modules/blockwishlist/mails/en/wishlink.html create mode 100644 modules/blockwishlist/mails/en/wishlink.txt create mode 100644 modules/blockwishlist/mails/en/wishlist.html create mode 100644 modules/blockwishlist/mails/en/wishlist.txt create mode 100755 modules/blockwishlist/mails/es/wishlink.html create mode 100755 modules/blockwishlist/mails/es/wishlink.txt create mode 100644 modules/blockwishlist/mails/es/wishlist.html create mode 100644 modules/blockwishlist/mails/es/wishlist.txt create mode 100644 modules/blockwishlist/mails/fr/wishlink.html create mode 100644 modules/blockwishlist/mails/fr/wishlink.txt create mode 100644 modules/blockwishlist/mails/fr/wishlist.html create mode 100644 modules/blockwishlist/mails/fr/wishlist.txt create mode 100644 modules/blockwishlist/mails/it/wishlink.html create mode 100644 modules/blockwishlist/mails/it/wishlink.txt create mode 100644 modules/blockwishlist/mails/it/wishlist.html create mode 100644 modules/blockwishlist/mails/it/wishlist.txt create mode 100644 modules/blockwishlist/managewishlist.php create mode 100644 modules/blockwishlist/managewishlist.tpl create mode 100644 modules/blockwishlist/my-account.tpl create mode 100644 modules/blockwishlist/mywishlist.php create mode 100644 modules/blockwishlist/mywishlist.tpl create mode 100644 modules/blockwishlist/sendwishlist.php create mode 100644 modules/blockwishlist/view.php create mode 100644 modules/blockwishlist/view.tpl create mode 100644 modules/cashondelivery/cashondelivery.gif create mode 100644 modules/cashondelivery/cashondelivery.jpg create mode 100644 modules/cashondelivery/cashondelivery.php create mode 100755 modules/cashondelivery/config.xml create mode 100644 modules/cashondelivery/confirmation.tpl create mode 100644 modules/cashondelivery/de.php create mode 100644 modules/cashondelivery/en.php create mode 100644 modules/cashondelivery/es.php create mode 100644 modules/cashondelivery/fr.php create mode 100644 modules/cashondelivery/it.php create mode 100644 modules/cashondelivery/logo.gif create mode 100644 modules/cashondelivery/payment.tpl create mode 100644 modules/cashondelivery/validation.php create mode 100644 modules/cashondelivery/validation.tpl create mode 100644 modules/cashticket/Disposition.php create mode 100644 modules/cashticket/PrepaidServices.php create mode 100644 modules/cashticket/PrepaidServicesAPI.php create mode 100644 modules/cashticket/cashticket-accept-payment.tpl create mode 100644 modules/cashticket/cashticket-confirmation.tpl create mode 100644 modules/cashticket/cashticket.php create mode 100755 modules/cashticket/config.xml create mode 100644 modules/cashticket/de.php create mode 100644 modules/cashticket/disposition-error.tpl create mode 100755 modules/cashticket/es.php create mode 100755 modules/cashticket/fr.php create mode 100644 modules/cashticket/img/payment-logo.png create mode 100644 modules/cashticket/img/payment-small.png create mode 100644 modules/cashticket/img/payment.png create mode 100644 modules/cashticket/it.php create mode 100755 modules/cashticket/keyring/.htaccess create mode 100644 modules/cashticket/keyring/paysafecard-CA.pem create mode 100644 modules/cashticket/logo.gif create mode 100644 modules/cashticket/payment.php create mode 100644 modules/cashticket/payment.tpl create mode 100644 modules/cashticket/prepaidservices.js create mode 100644 modules/cashticket/redirect.php create mode 100644 modules/cheque/cheque.jpg create mode 100644 modules/cheque/cheque.php create mode 100755 modules/cheque/config.xml create mode 100644 modules/cheque/de.php create mode 100644 modules/cheque/en.php create mode 100644 modules/cheque/es.php create mode 100644 modules/cheque/fr.php create mode 100644 modules/cheque/it.php create mode 100644 modules/cheque/logo.gif create mode 100644 modules/cheque/payment.php create mode 100644 modules/cheque/payment.tpl create mode 100644 modules/cheque/payment_execution.tpl create mode 100644 modules/cheque/payment_return.tpl create mode 100644 modules/cheque/validation.php create mode 100755 modules/criteo/config.xml create mode 100755 modules/criteo/criteo.php create mode 100644 modules/criteo/de.php create mode 100755 modules/criteo/en.php create mode 100644 modules/criteo/es.php create mode 100755 modules/criteo/export_csv.php create mode 100755 modules/criteo/export_xml.php create mode 100755 modules/criteo/fr.php create mode 100755 modules/criteo/it.php create mode 100755 modules/criteo/logo.gif create mode 100755 modules/crossselling/config.xml create mode 100755 modules/crossselling/crossselling.php create mode 100755 modules/crossselling/crossselling.tpl create mode 100644 modules/crossselling/de.php create mode 100755 modules/crossselling/en.php create mode 100644 modules/crossselling/es.php create mode 100755 modules/crossselling/fr.php create mode 100644 modules/crossselling/it.php create mode 100755 modules/crossselling/js/crossselling.js create mode 100755 modules/crossselling/logo.gif create mode 100644 modules/dateofdelivery/beforeCarrier.tpl create mode 100755 modules/dateofdelivery/config.xml create mode 100644 modules/dateofdelivery/dateofdelivery.php create mode 100644 modules/dateofdelivery/de.php create mode 100644 modules/dateofdelivery/es.php create mode 100644 modules/dateofdelivery/fr.php create mode 100755 modules/dateofdelivery/img/cross.png create mode 100755 modules/dateofdelivery/img/tick.png create mode 100755 modules/dateofdelivery/img/time.png create mode 100755 modules/dateofdelivery/img/time_add.png create mode 100755 modules/dateofdelivery/img/time_delete.png create mode 100644 modules/dateofdelivery/it.php create mode 100644 modules/dateofdelivery/logo.gif create mode 100644 modules/dateofdelivery/orderDetail.tpl create mode 100644 modules/dejala/MyLogUtils.php create mode 100644 modules/dejala/calendarutils.php create mode 100755 modules/dejala/config.xml create mode 100644 modules/dejala/de.php create mode 100644 modules/dejala/dejala.php create mode 100644 modules/dejala/dejala_carrier.gif create mode 100644 modules/dejala/dejala_carrier.tpl create mode 100644 modules/dejala/dejala_carrier_nostock.tpl create mode 100644 modules/dejala/dejala_contacts.tpl create mode 100644 modules/dejala/dejala_deliveries.tpl create mode 100644 modules/dejala/dejala_deliveries_csv.tpl create mode 100644 modules/dejala/dejala_delivery_options.tpl create mode 100644 modules/dejala/dejala_footer.tpl create mode 100644 modules/dejala/dejala_header.tpl create mode 100644 modules/dejala/dejala_home.tpl create mode 100644 modules/dejala/dejala_location.tpl create mode 100644 modules/dejala/dejala_logo.gif create mode 100644 modules/dejala/dejala_menu.tpl create mode 100644 modules/dejala/dejala_picking_timetable.tpl create mode 100644 modules/dejala/dejala_processes.tpl create mode 100644 modules/dejala/dejala_products.tpl create mode 100644 modules/dejala/dejala_technical_options.tpl create mode 100644 modules/dejala/dejala_timetable.tpl create mode 100644 modules/dejala/dejalacarrierutils.php create mode 100644 modules/dejala/dejalacart.php create mode 100644 modules/dejala/dejalaconfig.php create mode 100644 modules/dejala/dejalatest.php create mode 100644 modules/dejala/dejalautils.php create mode 100644 modules/dejala/deliveries_csv.php create mode 100644 modules/dejala/es.php create mode 100644 modules/dejala/fr.php create mode 100644 modules/dejala/google.gif create mode 100644 modules/dejala/install.sql create mode 100644 modules/dejala/it.php create mode 100644 modules/dejala/logo.gif create mode 100644 modules/dejala/picto_0.gif create mode 100644 modules/dejala/picto_1.gif create mode 100644 modules/dejala/picto_2.gif create mode 100644 modules/dejala/picto_3.gif create mode 100644 modules/dejala/picto_4.gif create mode 100644 modules/dejala/picto_5.gif create mode 100644 modules/dejala/picto_6.gif create mode 100644 modules/dejala/picto_7.gif create mode 100644 modules/dejala/picto_8.gif create mode 100644 modules/dejala/submenu-bg.gif create mode 100644 modules/dejala/timetable.css create mode 100644 modules/dejala/timetable.js create mode 100644 modules/dibs/config.xml create mode 100644 modules/dibs/de.php create mode 100644 modules/dibs/dibs.jpg create mode 100644 modules/dibs/dibs.php create mode 100644 modules/dibs/dibs.tpl create mode 100644 modules/dibs/es.php create mode 100644 modules/dibs/fr.php create mode 100644 modules/dibs/hookorderconfirmation.tpl create mode 100644 modules/dibs/img/da.jpg create mode 100644 modules/dibs/img/en.jpg create mode 100644 modules/dibs/img/no.jpg create mode 100644 modules/dibs/img/sv.jpg create mode 100644 modules/dibs/it.php create mode 100644 modules/dibs/logo.gif create mode 100644 modules/dibs/logos/dibs_black.jpg create mode 100644 modules/dibs/logos/dibs_blue.jpg create mode 100644 modules/dibs/logos/dibs_green.jpg create mode 100644 modules/dibs/logos/dibs_grey.jpg create mode 100644 modules/dibs/logos/dibs_purple.jpg create mode 100644 modules/dibs/logos/dibs_yellow.jpg create mode 100644 modules/dibs/validation.php create mode 100755 modules/editorial/EditorialClass.php create mode 100755 modules/editorial/config.xml create mode 100644 modules/editorial/de.php create mode 100644 modules/editorial/editorial.php create mode 100644 modules/editorial/editorial.tpl create mode 100644 modules/editorial/editorial.xml create mode 100644 modules/editorial/en.php create mode 100644 modules/editorial/es.php create mode 100644 modules/editorial/fr.php create mode 100644 modules/editorial/homepage_logo.jpg create mode 100644 modules/editorial/it.php create mode 100644 modules/editorial/logo.gif create mode 100644 modules/ekomi/config.xml create mode 100644 modules/ekomi/de.php create mode 100755 modules/ekomi/ekomi.php create mode 100644 modules/ekomi/es.php create mode 100644 modules/ekomi/fr.php create mode 100644 modules/ekomi/it.php create mode 100755 modules/ekomi/logo.gif create mode 100755 modules/ekomi/mails/de/ekomi.html create mode 100755 modules/ekomi/mails/de/ekomi.txt create mode 100755 modules/ekomi/mails/en/ekomi.html create mode 100755 modules/ekomi/mails/en/ekomi.txt create mode 100755 modules/ekomi/mails/es/ekomi.html create mode 100755 modules/ekomi/mails/es/ekomi.txt create mode 100755 modules/ekomi/mails/fr/ekomi.html create mode 100755 modules/ekomi/mails/fr/ekomi.txt create mode 100755 modules/ekomi/mails/it/ekomi.html create mode 100755 modules/ekomi/mails/it/ekomi.txt create mode 100755 modules/envoimoinscher/AdminEnvoiMoinsCher.gif create mode 100755 modules/envoimoinscher/AdminEnvoiMoinsCher.php create mode 100755 modules/envoimoinscher/config.xml create mode 100644 modules/envoimoinscher/de.php create mode 100755 modules/envoimoinscher/envoimoinscher.php create mode 100644 modules/envoimoinscher/es.php create mode 100755 modules/envoimoinscher/fr.php create mode 100755 modules/envoimoinscher/install.sql create mode 100644 modules/envoimoinscher/it.php create mode 100755 modules/envoimoinscher/logo.gif create mode 100755 modules/envoimoinscher/logocarre.png create mode 100755 modules/envoimoinscher/ps_emc.png create mode 100755 modules/envoimoinscher/tracking.php create mode 100644 modules/fedexcarrier/RateService_v9.wsdl create mode 100644 modules/fedexcarrier/carrier.jpg create mode 100755 modules/fedexcarrier/config.xml create mode 100644 modules/fedexcarrier/de.php create mode 100644 modules/fedexcarrier/es.php create mode 100644 modules/fedexcarrier/fedexcarrier.php create mode 100644 modules/fedexcarrier/fr.php create mode 100644 modules/fedexcarrier/it.php create mode 100644 modules/fedexcarrier/logo.gif create mode 100755 modules/fedexcarrier/sql-install.php create mode 100755 modules/fedexcarrier/sql-uninstall.php create mode 100755 modules/feeder/config.xml create mode 100644 modules/feeder/de.php create mode 100644 modules/feeder/en.php create mode 100644 modules/feeder/es.php create mode 100644 modules/feeder/feeder.php create mode 100644 modules/feeder/feederHeader.tpl create mode 100644 modules/feeder/fr.php create mode 100644 modules/feeder/it.php create mode 100644 modules/feeder/logo.gif create mode 100644 modules/feeder/rss.php create mode 100755 modules/fianetfraud/config.xml create mode 100644 modules/fianetfraud/cron_reevaluate.php create mode 100644 modules/fianetfraud/cron_waiting.php create mode 100644 modules/fianetfraud/de.php create mode 100644 modules/fianetfraud/es.php create mode 100644 modules/fianetfraud/fianet/classes/fianet_key_32bits.php create mode 100644 modules/fianetfraud/fianet/classes/fianet_key_64bits.php create mode 100644 modules/fianetfraud/fianet/classes/fianet_sender.php create mode 100644 modules/fianetfraud/fianet/classes/fianet_sender.private.inc.php create mode 100644 modules/fianetfraud/fianet/classes/fianet_socket.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_adress_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_appartment_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_billing_adress_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_billing_user_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_delivery_adress_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_delivery_user_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_info_order_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_order_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_paraobject_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_payment_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_product_list_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_product_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_rnp_info_order_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_rnp_order_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_rnp_wallet_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_transport_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_user_siteconso_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_user_xml.php create mode 100644 modules/fianetfraud/fianet/classes/order/fianet_xml_paracallback_builder.php create mode 100644 modules/fianetfraud/fianet/const/fianet.php create mode 100644 modules/fianetfraud/fianet/const/url_rnp.php create mode 100644 modules/fianetfraud/fianet/const/url_sac.php create mode 100644 modules/fianetfraud/fianet/fianet.php create mode 100644 modules/fianetfraud/fianet/includes/debug.php create mode 100644 modules/fianetfraud/fianet/includes/general.php create mode 100644 modules/fianetfraud/fianet/includes/xml2array.php create mode 100644 modules/fianetfraud/fianet/to_implement/implement.php create mode 100644 modules/fianetfraud/fianetfraud.php create mode 100644 modules/fianetfraud/fr.php create mode 100644 modules/fianetfraud/install.sql create mode 100644 modules/fianetfraud/it.php create mode 100644 modules/fianetfraud/logo.gif create mode 100644 modules/fianetfraud/logo.jpg create mode 100755 modules/fianetsceau/config.xml create mode 100644 modules/fianetsceau/de.php create mode 100644 modules/fianetsceau/es.php create mode 100644 modules/fianetsceau/fianetsceau.php create mode 100644 modules/fianetsceau/fr.php create mode 100644 modules/fianetsceau/it.php create mode 100644 modules/fianetsceau/logo.gif create mode 100644 modules/fianetsceau/logo.jpg create mode 100755 modules/followup/config.xml create mode 100644 modules/followup/cron.php create mode 100644 modules/followup/de.php create mode 100644 modules/followup/en.php create mode 100644 modules/followup/es.php create mode 100644 modules/followup/followup.php create mode 100644 modules/followup/fr.php create mode 100644 modules/followup/it.php create mode 100644 modules/followup/logo-2.gif create mode 100644 modules/followup/logo.gif create mode 100644 modules/followup/mails/de/followup_1.html create mode 100644 modules/followup/mails/de/followup_1.txt create mode 100644 modules/followup/mails/de/followup_2.html create mode 100644 modules/followup/mails/de/followup_2.txt create mode 100644 modules/followup/mails/de/followup_3.html create mode 100644 modules/followup/mails/de/followup_3.txt create mode 100644 modules/followup/mails/de/followup_4.html create mode 100644 modules/followup/mails/de/followup_4.txt create mode 100644 modules/followup/mails/en/followup_1.html create mode 100644 modules/followup/mails/en/followup_1.txt create mode 100644 modules/followup/mails/en/followup_2.html create mode 100644 modules/followup/mails/en/followup_2.txt create mode 100644 modules/followup/mails/en/followup_3.html create mode 100644 modules/followup/mails/en/followup_3.txt create mode 100644 modules/followup/mails/en/followup_4.html create mode 100644 modules/followup/mails/en/followup_4.txt create mode 100644 modules/followup/mails/es/followup_1.html create mode 100644 modules/followup/mails/es/followup_1.txt create mode 100644 modules/followup/mails/es/followup_2.html create mode 100644 modules/followup/mails/es/followup_2.txt create mode 100644 modules/followup/mails/es/followup_3.html create mode 100644 modules/followup/mails/es/followup_3.txt create mode 100644 modules/followup/mails/es/followup_4.html create mode 100644 modules/followup/mails/es/followup_4.txt create mode 100644 modules/followup/mails/fr/followup_1.html create mode 100644 modules/followup/mails/fr/followup_1.txt create mode 100644 modules/followup/mails/fr/followup_2.html create mode 100644 modules/followup/mails/fr/followup_2.txt create mode 100644 modules/followup/mails/fr/followup_3.html create mode 100644 modules/followup/mails/fr/followup_3.txt create mode 100644 modules/followup/mails/fr/followup_4.html create mode 100644 modules/followup/mails/fr/followup_4.txt create mode 100644 modules/followup/mails/it/followup_1.html create mode 100644 modules/followup/mails/it/followup_1.txt create mode 100644 modules/followup/mails/it/followup_2.html create mode 100644 modules/followup/mails/it/followup_2.txt create mode 100644 modules/followup/mails/it/followup_3.html create mode 100644 modules/followup/mails/it/followup_3.txt create mode 100644 modules/followup/mails/it/followup_4.html create mode 100644 modules/followup/mails/it/followup_4.txt create mode 100644 modules/gadsense/adsense_script.gif create mode 100755 modules/gadsense/config.xml create mode 100644 modules/gadsense/de.php create mode 100644 modules/gadsense/en.php create mode 100644 modules/gadsense/es.php create mode 100644 modules/gadsense/fr.php create mode 100644 modules/gadsense/gadsense.php create mode 100644 modules/gadsense/it.php create mode 100644 modules/gadsense/logo.gif create mode 100755 modules/ganalytics/config.xml create mode 100644 modules/ganalytics/de.php create mode 100644 modules/ganalytics/en.php create mode 100644 modules/ganalytics/es.php create mode 100644 modules/ganalytics/fr.php create mode 100644 modules/ganalytics/ganalytics.php create mode 100644 modules/ganalytics/header.tpl create mode 100644 modules/ganalytics/it.php create mode 100644 modules/ganalytics/logo.gif create mode 100755 modules/gcheckout/config.xml create mode 100644 modules/gcheckout/confirm.tpl create mode 100644 modules/gcheckout/de.php create mode 100644 modules/gcheckout/en.php create mode 100644 modules/gcheckout/es.php create mode 100644 modules/gcheckout/fr.php create mode 100644 modules/gcheckout/gcheckout.gif create mode 100644 modules/gcheckout/gcheckout.php create mode 100644 modules/gcheckout/it.php create mode 100644 modules/gcheckout/library/googlecart.php create mode 100644 modules/gcheckout/library/googleitem.php create mode 100644 modules/gcheckout/library/googlelog.php create mode 100644 modules/gcheckout/library/googlemerchantcalculations.php create mode 100644 modules/gcheckout/library/googlerequest.php create mode 100644 modules/gcheckout/library/googleresponse.php create mode 100644 modules/gcheckout/library/googleresult.php create mode 100644 modules/gcheckout/library/googleshipping.php create mode 100644 modules/gcheckout/library/googletax.php create mode 100644 modules/gcheckout/library/xml-processing/gc_xmlbuilder.php create mode 100644 modules/gcheckout/library/xml-processing/gc_xmlparser.php create mode 100644 modules/gcheckout/logo.gif create mode 100644 modules/gcheckout/payment.php create mode 100644 modules/gcheckout/payment.tpl create mode 100644 modules/gcheckout/payment_return.tpl create mode 100644 modules/gcheckout/validation.php create mode 100644 modules/graphartichow/artichow/AntiSpam.class.php create mode 100644 modules/graphartichow/artichow/Artichow.cfg.php create mode 100644 modules/graphartichow/artichow/BarPlot.class.php create mode 100644 modules/graphartichow/artichow/Component.class.php create mode 100644 modules/graphartichow/artichow/Graph.class.php create mode 100644 modules/graphartichow/artichow/Image.class.php create mode 100644 modules/graphartichow/artichow/LinePlot.class.php create mode 100644 modules/graphartichow/artichow/MathPlot.class.php create mode 100644 modules/graphartichow/artichow/Pattern.class.php create mode 100644 modules/graphartichow/artichow/Pie.class.php create mode 100644 modules/graphartichow/artichow/Plot.class.php create mode 100644 modules/graphartichow/artichow/ScatterPlot.class.php create mode 100644 modules/graphartichow/artichow/cache/Abel create mode 100644 modules/graphartichow/artichow/cache/Abel-time create mode 100644 modules/graphartichow/artichow/cache/Albert create mode 100644 modules/graphartichow/artichow/cache/Albert-time create mode 100644 modules/graphartichow/artichow/cache/Example-006 create mode 100644 modules/graphartichow/artichow/cache/Example-006-time create mode 100644 modules/graphartichow/artichow/common.php create mode 100644 modules/graphartichow/artichow/font/Tuffy.ttf create mode 100644 modules/graphartichow/artichow/font/TuffyBold.ttf create mode 100644 modules/graphartichow/artichow/font/TuffyBoldItalic.ttf create mode 100644 modules/graphartichow/artichow/font/TuffyItalic.ttf create mode 100644 modules/graphartichow/artichow/images/book.png create mode 100644 modules/graphartichow/artichow/images/error.png create mode 100644 modules/graphartichow/artichow/images/errors/missing-anti-aliasing.png create mode 100644 modules/graphartichow/artichow/images/errors/missing-gd2.png create mode 100644 modules/graphartichow/artichow/images/paperclip.png create mode 100644 modules/graphartichow/artichow/images/star.png create mode 100644 modules/graphartichow/artichow/inc/Axis.class.php create mode 100644 modules/graphartichow/artichow/inc/Border.class.php create mode 100644 modules/graphartichow/artichow/inc/Color.class.php create mode 100644 modules/graphartichow/artichow/inc/Driver.class.php create mode 100644 modules/graphartichow/artichow/inc/Font.class.php create mode 100644 modules/graphartichow/artichow/inc/Gradient.class.php create mode 100644 modules/graphartichow/artichow/inc/Grid.class.php create mode 100644 modules/graphartichow/artichow/inc/Label.class.php create mode 100644 modules/graphartichow/artichow/inc/Legend.class.php create mode 100644 modules/graphartichow/artichow/inc/Mark.class.php create mode 100644 modules/graphartichow/artichow/inc/Math.class.php create mode 100644 modules/graphartichow/artichow/inc/Shadow.class.php create mode 100644 modules/graphartichow/artichow/inc/Text.class.php create mode 100644 modules/graphartichow/artichow/inc/Tick.class.php create mode 100644 modules/graphartichow/artichow/inc/Tools.class.php create mode 100644 modules/graphartichow/artichow/inc/drivers/gd.class.php create mode 100644 modules/graphartichow/artichow/inc/drivers/ming.class.php create mode 100644 modules/graphartichow/artichow/patterns/BarDepth.php create mode 100644 modules/graphartichow/artichow/patterns/LightLine.php create mode 100755 modules/graphartichow/config.xml create mode 100644 modules/graphartichow/de.php create mode 100644 modules/graphartichow/en.php create mode 100644 modules/graphartichow/es.php create mode 100644 modules/graphartichow/fr.php create mode 100644 modules/graphartichow/graphartichow.php create mode 100644 modules/graphartichow/it.php create mode 100644 modules/graphartichow/logo.gif create mode 100755 modules/graphgooglechart/config.xml create mode 100644 modules/graphgooglechart/de.php create mode 100644 modules/graphgooglechart/en.php create mode 100644 modules/graphgooglechart/es.php create mode 100644 modules/graphgooglechart/fr.php create mode 100644 modules/graphgooglechart/graphgooglechart.php create mode 100644 modules/graphgooglechart/it.php create mode 100644 modules/graphgooglechart/logo.gif create mode 100755 modules/graphvisifire/config.xml create mode 100644 modules/graphvisifire/de.php create mode 100644 modules/graphvisifire/en.php create mode 100644 modules/graphvisifire/es.php create mode 100644 modules/graphvisifire/fr.php create mode 100644 modules/graphvisifire/graphvisifire.php create mode 100644 modules/graphvisifire/it.php create mode 100644 modules/graphvisifire/logo.gif create mode 100644 modules/graphvisifire/visifire/Visifire.js create mode 100644 modules/graphvisifire/visifire/Visifire.xap create mode 100755 modules/graphxmlswfcharts/config.xml create mode 100644 modules/graphxmlswfcharts/de.php create mode 100644 modules/graphxmlswfcharts/en.php create mode 100644 modules/graphxmlswfcharts/es.php create mode 100644 modules/graphxmlswfcharts/fr.php create mode 100644 modules/graphxmlswfcharts/graphxmlswfcharts.php create mode 100644 modules/graphxmlswfcharts/it.php create mode 100644 modules/graphxmlswfcharts/logo.gif create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/AC_RunActiveContent.js create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts.txt create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/ar3d.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/arno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/ars3.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/arst.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/brfl.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/brno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/brst.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/buno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/cl3d.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/clfl.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/clim.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/clno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/clp3.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/cls3.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/clst.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/cnno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/dono.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/lnno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/mxno.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/pi3d.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/piim.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/pino.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/pono.swf create mode 100644 modules/graphxmlswfcharts/xml_swf_charts/charts_library/scno.swf create mode 100755 modules/gridhtml/config.xml create mode 100644 modules/gridhtml/de.php create mode 100644 modules/gridhtml/en.php create mode 100644 modules/gridhtml/es.php create mode 100644 modules/gridhtml/fr.php create mode 100644 modules/gridhtml/gridhtml.php create mode 100644 modules/gridhtml/it.php create mode 100644 modules/gridhtml/logo.gif create mode 100755 modules/gsitemap/config.xml create mode 100644 modules/gsitemap/de.php create mode 100644 modules/gsitemap/en.php create mode 100644 modules/gsitemap/es.php create mode 100644 modules/gsitemap/fr.php create mode 100644 modules/gsitemap/gsitemap.php create mode 100644 modules/gsitemap/it.php create mode 100644 modules/gsitemap/logo.gif create mode 100644 modules/hipay/1.png create mode 100644 modules/hipay/2.png create mode 100644 modules/hipay/3.png create mode 100755 modules/hipay/config.xml create mode 100644 modules/hipay/create.jpg create mode 100644 modules/hipay/de.php create mode 100644 modules/hipay/es.php create mode 100644 modules/hipay/fr.php create mode 100644 modules/hipay/help.png create mode 100644 modules/hipay/hipay.php create mode 100644 modules/hipay/hipay.png create mode 100644 modules/hipay/it.php create mode 100644 modules/hipay/logo.gif create mode 100644 modules/hipay/mapi/mapi_affiliate.php create mode 100644 modules/hipay/mapi/mapi_comm_xml.php create mode 100644 modules/hipay/mapi/mapi_defs.php create mode 100644 modules/hipay/mapi/mapi_exception.php create mode 100644 modules/hipay/mapi/mapi_installment.php create mode 100644 modules/hipay/mapi/mapi_item.php create mode 100644 modules/hipay/mapi/mapi_lockable.php create mode 100644 modules/hipay/mapi/mapi_multiplepayment.php create mode 100644 modules/hipay/mapi/mapi_order.php create mode 100644 modules/hipay/mapi/mapi_package.php create mode 100644 modules/hipay/mapi/mapi_payment.php create mode 100644 modules/hipay/mapi/mapi_paymentparams.php create mode 100644 modules/hipay/mapi/mapi_product.php create mode 100644 modules/hipay/mapi/mapi_send_xml.php create mode 100644 modules/hipay/mapi/mapi_simplepayment.php create mode 100644 modules/hipay/mapi/mapi_tax.php create mode 100644 modules/hipay/mapi/mapi_utf8.php create mode 100644 modules/hipay/mapi/mapi_utils.php create mode 100644 modules/hipay/mapi/mapi_xml.php create mode 100644 modules/hipay/payment.tpl create mode 100644 modules/hipay/redirect.php create mode 100644 modules/hipay/screenshots/accountnumber.png create mode 100644 modules/hipay/screenshots/merchantpassword.png create mode 100644 modules/hipay/screenshots/siteid.png create mode 100644 modules/hipay/validation.php create mode 100755 modules/homefeatured/config.xml create mode 100644 modules/homefeatured/de.php create mode 100644 modules/homefeatured/en.php create mode 100644 modules/homefeatured/es.php create mode 100644 modules/homefeatured/fr.php create mode 100644 modules/homefeatured/homefeatured.php create mode 100644 modules/homefeatured/homefeatured.tpl create mode 100644 modules/homefeatured/it.php create mode 100644 modules/homefeatured/logo.gif create mode 100755 modules/iadvize/config.xml create mode 100644 modules/iadvize/de.php create mode 100644 modules/iadvize/es.php create mode 100644 modules/iadvize/fr.php create mode 100755 modules/iadvize/iadvize.php create mode 100644 modules/iadvize/it.php create mode 100755 modules/iadvize/logo-iadvize.gif create mode 100755 modules/iadvize/logo.gif create mode 100755 modules/iadvize/offer-fr.jpg create mode 100644 modules/importerosc/config.xml create mode 100644 modules/importerosc/de.php create mode 100644 modules/importerosc/es.php create mode 100644 modules/importerosc/fr.php create mode 100644 modules/importerosc/importerosc.php create mode 100644 modules/importerosc/it.php create mode 100644 modules/importerosc/logo.gif create mode 100755 modules/importerosc/passwordhash.php create mode 100644 modules/index.php create mode 100644 modules/livezilla/config.xml create mode 100644 modules/livezilla/de.php create mode 100644 modules/livezilla/es.php create mode 100644 modules/livezilla/fr.php create mode 100644 modules/livezilla/it.php create mode 100644 modules/livezilla/livezilla.php create mode 100644 modules/livezilla/livezilla.tpl create mode 100644 modules/livezilla/logo.gif create mode 100644 modules/livezilla/lz_download.gif create mode 100644 modules/livezilla/lz_package.gif create mode 100644 modules/livezilla/offline.png create mode 100644 modules/loyalty/LoyaltyModule.php create mode 100644 modules/loyalty/LoyaltyStateModule.php create mode 100755 modules/loyalty/config.xml create mode 100644 modules/loyalty/de.php create mode 100644 modules/loyalty/en.php create mode 100644 modules/loyalty/es.php create mode 100644 modules/loyalty/fr.php create mode 100644 modules/loyalty/it.php create mode 100644 modules/loyalty/logo.gif create mode 100644 modules/loyalty/loyalty-program.php create mode 100644 modules/loyalty/loyalty.gif create mode 100644 modules/loyalty/loyalty.php create mode 100644 modules/loyalty/loyalty.tpl create mode 100644 modules/loyalty/my-account.tpl create mode 100644 modules/loyalty/product.tpl create mode 100644 modules/loyalty/shopping-cart.tpl create mode 100755 modules/mailalerts/config.xml create mode 100644 modules/mailalerts/de.php create mode 100644 modules/mailalerts/en.php create mode 100644 modules/mailalerts/es.php create mode 100644 modules/mailalerts/fr.php create mode 100644 modules/mailalerts/img/delete.gif create mode 100644 modules/mailalerts/it.php create mode 100644 modules/mailalerts/logo.gif create mode 100644 modules/mailalerts/mailalerts-ajax_add.php create mode 100644 modules/mailalerts/mailalerts-ajax_check.php create mode 100644 modules/mailalerts/mailalerts.php create mode 100644 modules/mailalerts/mails/de/customer_qty.html create mode 100644 modules/mailalerts/mails/de/customer_qty.txt create mode 100644 modules/mailalerts/mails/de/new_order.html create mode 100644 modules/mailalerts/mails/de/new_order.txt create mode 100644 modules/mailalerts/mails/de/productoutofstock.html create mode 100644 modules/mailalerts/mails/de/productoutofstock.txt create mode 100644 modules/mailalerts/mails/en/customer_qty.html create mode 100644 modules/mailalerts/mails/en/customer_qty.txt create mode 100644 modules/mailalerts/mails/en/new_order.html create mode 100644 modules/mailalerts/mails/en/new_order.txt create mode 100644 modules/mailalerts/mails/en/productoutofstock.html create mode 100644 modules/mailalerts/mails/en/productoutofstock.txt create mode 100644 modules/mailalerts/mails/es/customer_qty.html create mode 100644 modules/mailalerts/mails/es/customer_qty.txt create mode 100644 modules/mailalerts/mails/es/new_order.html create mode 100644 modules/mailalerts/mails/es/new_order.txt create mode 100644 modules/mailalerts/mails/es/productoutofstock.html create mode 100644 modules/mailalerts/mails/es/productoutofstock.txt create mode 100644 modules/mailalerts/mails/fr/customer_qty.html create mode 100644 modules/mailalerts/mails/fr/customer_qty.txt create mode 100644 modules/mailalerts/mails/fr/new_order.html create mode 100644 modules/mailalerts/mails/fr/new_order.txt create mode 100644 modules/mailalerts/mails/fr/productoutofstock.html create mode 100644 modules/mailalerts/mails/fr/productoutofstock.txt create mode 100644 modules/mailalerts/mails/it/customer_qty.html create mode 100644 modules/mailalerts/mails/it/customer_qty.txt create mode 100644 modules/mailalerts/mails/it/new_order.html create mode 100644 modules/mailalerts/mails/it/new_order.txt create mode 100644 modules/mailalerts/mails/it/productoutofstock.html create mode 100644 modules/mailalerts/mails/it/productoutofstock.txt create mode 100644 modules/mailalerts/my-account.tpl create mode 100644 modules/mailalerts/myalerts.php create mode 100644 modules/mailalerts/myalerts.tpl create mode 100644 modules/mailalerts/product.tpl create mode 100755 modules/mondialrelay/AdminMondialRelay.gif create mode 100755 modules/mondialrelay/AdminMondialRelay.php create mode 100755 modules/mondialrelay/MondialRelayClass.php create mode 100755 modules/mondialrelay/config.xml create mode 100755 modules/mondialrelay/cron.php create mode 100644 modules/mondialrelay/de.php create mode 100755 modules/mondialrelay/en.php create mode 100644 modules/mondialrelay/es.php create mode 100755 modules/mondialrelay/fr.php create mode 100755 modules/mondialrelay/googlemap.php create mode 100644 modules/mondialrelay/it.php create mode 100755 modules/mondialrelay/kit_mondialrelay/CreationEtiquettePointRelais_ajax.php create mode 100755 modules/mondialrelay/kit_mondialrelay/ImpressionEtiquettePointRelais_ajax.php create mode 100755 modules/mondialrelay/kit_mondialrelay/MR.gif create mode 100755 modules/mondialrelay/kit_mondialrelay/MR_small.gif create mode 100755 modules/mondialrelay/kit_mondialrelay/RechercheDetailPointRelais_ajax.php create mode 100755 modules/mondialrelay/kit_mondialrelay/RecherchePointRelais_ajax.php create mode 100755 modules/mondialrelay/kit_mondialrelay/SuiviExpedition_ajax.php create mode 100755 modules/mondialrelay/kit_mondialrelay/close.gif create mode 100755 modules/mondialrelay/kit_mondialrelay/js/include_MR.js create mode 100755 modules/mondialrelay/kit_mondialrelay/js/ressources_MR.js create mode 100755 modules/mondialrelay/kit_mondialrelay/loading.gif create mode 100755 modules/mondialrelay/kit_mondialrelay/loupe.gif create mode 100755 modules/mondialrelay/kit_mondialrelay/marker.gif create mode 100644 modules/mondialrelay/kit_mondialrelay/mr_opc_ajax.php create mode 100644 modules/mondialrelay/kit_mondialrelay/statCodeError.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.nusoap_base.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.soap_fault.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.soap_parser.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.soap_server.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.soap_transport_http.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.soap_val.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.soapclient.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.wsdl.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.wsdlcache.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/class.xmlschema.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/nusoap.php create mode 100755 modules/mondialrelay/kit_mondialrelay/tools/nusoap/lib/nusoapmime.php create mode 100755 modules/mondialrelay/logo.gif create mode 100755 modules/mondialrelay/mondialrelay.php create mode 100755 modules/mondialrelay/mondialrelay.tpl create mode 100755 modules/mondialrelay/mrInstall.sql create mode 100755 modules/mondialrelay/orderDetail.tpl create mode 100755 modules/mondialrelay/page_iso.php create mode 100755 modules/mondialrelay/style.css create mode 100755 modules/moneybookers/config.xml create mode 100644 modules/moneybookers/confirmation.tpl create mode 100644 modules/moneybookers/de.php create mode 100644 modules/moneybookers/es.php create mode 100644 modules/moneybookers/fr.php create mode 100644 modules/moneybookers/it.php create mode 100644 modules/moneybookers/logo-cc-1.gif create mode 100644 modules/moneybookers/logo-cc-2.gif create mode 100644 modules/moneybookers/logo-mb-1.gif create mode 100644 modules/moneybookers/logo-mb-2.gif create mode 100644 modules/moneybookers/logo-mb-3.gif create mode 100644 modules/moneybookers/logo-mb-4.gif create mode 100644 modules/moneybookers/logo-mb-5.gif create mode 100644 modules/moneybookers/logo-mb-6.gif create mode 100644 modules/moneybookers/logo-mb-7.gif create mode 100644 modules/moneybookers/logo-mb.gif create mode 100644 modules/moneybookers/logo.gif create mode 100644 modules/moneybookers/logos/international/amex.gif create mode 100644 modules/moneybookers/logos/international/diners.gif create mode 100644 modules/moneybookers/logos/international/ewallet.gif create mode 100644 modules/moneybookers/logos/international/jcb.gif create mode 100644 modules/moneybookers/logos/international/maestro.gif create mode 100644 modules/moneybookers/logos/international/mastercard.gif create mode 100644 modules/moneybookers/logos/international/visa.gif create mode 100644 modules/moneybookers/logos/international/visadebit.gif create mode 100644 modules/moneybookers/logos/local/4b.gif create mode 100644 modules/moneybookers/logos/local/cartasi.gif create mode 100644 modules/moneybookers/logos/local/cartebleue.gif create mode 100644 modules/moneybookers/logos/local/dankort.gif create mode 100644 modules/moneybookers/logos/local/ec.gif create mode 100644 modules/moneybookers/logos/local/enets.gif create mode 100644 modules/moneybookers/logos/local/epay.gif create mode 100644 modules/moneybookers/logos/local/eps.gif create mode 100644 modules/moneybookers/logos/local/euro6000.gif create mode 100644 modules/moneybookers/logos/local/giropay.gif create mode 100644 modules/moneybookers/logos/local/ideal.gif create mode 100644 modules/moneybookers/logos/local/instantbanktransfer.gif create mode 100644 modules/moneybookers/logos/local/laser.gif create mode 100644 modules/moneybookers/logos/local/nordea.gif create mode 100644 modules/moneybookers/logos/local/p24.gif create mode 100644 modules/moneybookers/logos/local/pekao.gif create mode 100644 modules/moneybookers/logos/local/poli.gif create mode 100644 modules/moneybookers/logos/local/postepay.gif create mode 100644 modules/moneybookers/logos/local/sofort.gif create mode 100644 modules/moneybookers/logos/local/solo.gif create mode 100644 modules/moneybookers/logos/local/unionpay.gif create mode 100644 modules/moneybookers/logos/local/visaelectron.gif create mode 100644 modules/moneybookers/moneybookers-currency-error.tpl create mode 100644 modules/moneybookers/moneybookers.php create mode 100644 modules/moneybookers/moneybookers.tpl create mode 100644 modules/moneybookers/prestashop_mb_en.gif create mode 100644 modules/moneybookers/prestashop_mb_fr.gif create mode 100644 modules/moneybookers/validation.php create mode 100755 modules/newsletter/config.xml create mode 100644 modules/newsletter/de.php create mode 100644 modules/newsletter/en.php create mode 100644 modules/newsletter/es.php create mode 100644 modules/newsletter/fr.php create mode 100644 modules/newsletter/it.php create mode 100644 modules/newsletter/logo.gif create mode 100644 modules/newsletter/newsletter.php create mode 100644 modules/ogone/checkwaitingorder.php create mode 100755 modules/ogone/config.xml create mode 100644 modules/ogone/confirmation.php create mode 100644 modules/ogone/de.php create mode 100644 modules/ogone/docs/en1.png create mode 100644 modules/ogone/docs/en2.png create mode 100644 modules/ogone/docs/en3.png create mode 100644 modules/ogone/docs/en4.png create mode 100644 modules/ogone/es.php create mode 100644 modules/ogone/fr.php create mode 100644 modules/ogone/hookorderconfirmation.tpl create mode 100644 modules/ogone/it.php create mode 100644 modules/ogone/logo.gif create mode 100644 modules/ogone/ogone.gif create mode 100644 modules/ogone/ogone.php create mode 100644 modules/ogone/ogone.tpl create mode 100644 modules/ogone/validation.php create mode 100644 modules/ogone/waiting.tpl create mode 100644 modules/pagesnotfound/comment.gif create mode 100755 modules/pagesnotfound/config.xml create mode 100644 modules/pagesnotfound/de.php create mode 100644 modules/pagesnotfound/en.php create mode 100644 modules/pagesnotfound/es.php create mode 100644 modules/pagesnotfound/fr.php create mode 100644 modules/pagesnotfound/it.php create mode 100644 modules/pagesnotfound/logo.gif create mode 100644 modules/pagesnotfound/pagesnotfound.php create mode 100644 modules/paypal/about.php create mode 100644 modules/paypal/about.tpl create mode 100644 modules/paypal/api/paypalconnect.php create mode 100644 modules/paypal/api/paypallib.php create mode 100644 modules/paypal/column.tpl create mode 100755 modules/paypal/config.xml create mode 100644 modules/paypal/confirm.tpl create mode 100644 modules/paypal/confirmation.tpl create mode 100644 modules/paypal/de.php create mode 100644 modules/paypal/error.tpl create mode 100644 modules/paypal/es.php create mode 100644 modules/paypal/express/authentication.tpl create mode 100644 modules/paypal/express/login.tpl create mode 100644 modules/paypal/express/paypalexpress.php create mode 100644 modules/paypal/express/shopping_cart.tpl create mode 100644 modules/paypal/express/submit.php create mode 100644 modules/paypal/fr.php create mode 100644 modules/paypal/img/AU_pp_express.gif create mode 100644 modules/paypal/img/AU_pp_integral.gif create mode 100644 modules/paypal/img/CA_pp_express.gif create mode 100644 modules/paypal/img/CA_pp_integral.gif create mode 100644 modules/paypal/img/CN_pp_express.gif create mode 100644 modules/paypal/img/CN_pp_integral.gif create mode 100644 modules/paypal/img/DE_pp_express.gif create mode 100644 modules/paypal/img/DE_pp_integral.gif create mode 100644 modules/paypal/img/ES_pp_express.gif create mode 100644 modules/paypal/img/ES_pp_integral.gif create mode 100644 modules/paypal/img/FR_pp_express.gif create mode 100644 modules/paypal/img/FR_pp_integral.gif create mode 100644 modules/paypal/img/IT_pp_express.gif create mode 100644 modules/paypal/img/IT_pp_integral.gif create mode 100644 modules/paypal/img/JP_pp_express.gif create mode 100644 modules/paypal/img/JP_pp_integral.gif create mode 100644 modules/paypal/img/NL_pp_express.gif create mode 100644 modules/paypal/img/NL_pp_integral.gif create mode 100644 modules/paypal/img/PL_pp_express.gif create mode 100644 modules/paypal/img/PL_pp_integral.gif create mode 100644 modules/paypal/img/PayPal_mark_60x38.gif create mode 100644 modules/paypal/img/UK_pp_express.gif create mode 100644 modules/paypal/img/UK_pp_integral.gif create mode 100644 modules/paypal/img/US_pp_express.gif create mode 100644 modules/paypal/img/US_pp_integral.gif create mode 100644 modules/paypal/img/integral_evolution.png create mode 100644 modules/paypal/img/integral_evolution_vertical.png create mode 100644 modules/paypal/img/vertical_FR_large.png create mode 100644 modules/paypal/img/vertical_US_large.png create mode 100644 modules/paypal/integral_evolution/paypal.tpl create mode 100644 modules/paypal/integral_evolution/redirect.php create mode 100644 modules/paypal/integral_evolution/redirect.tpl create mode 100644 modules/paypal/ipn.php create mode 100644 modules/paypal/it.php create mode 100644 modules/paypal/logo.gif create mode 100644 modules/paypal/mails/de/error_reporting.html create mode 100644 modules/paypal/mails/de/error_reporting.txt create mode 100644 modules/paypal/mails/en/error_reporting.html create mode 100644 modules/paypal/mails/en/error_reporting.txt create mode 100644 modules/paypal/mails/es/error_reporting.html create mode 100644 modules/paypal/mails/es/error_reporting.txt create mode 100644 modules/paypal/mails/fr/error_reporting.html create mode 100644 modules/paypal/mails/fr/error_reporting.txt create mode 100644 modules/paypal/mails/it/error_reporting.html create mode 100644 modules/paypal/mails/it/error_reporting.txt create mode 100644 modules/paypal/payment/payment.tpl create mode 100644 modules/paypal/payment/paypalpayment.php create mode 100644 modules/paypal/payment/submit.php create mode 100644 modules/paypal/paypal.gif create mode 100644 modules/paypal/paypal.php create mode 100644 modules/paypal/prestashop_paypal.png create mode 100644 modules/paypal/standard/paypal.tpl create mode 100644 modules/paypal/standard/redirect.php create mode 100644 modules/paypal/standard/redirect.tpl create mode 100644 modules/paypal/validation.php create mode 100644 modules/paysafecard/Disposition.php create mode 100644 modules/paysafecard/PrepaidServices.php create mode 100644 modules/paysafecard/PrepaidServicesAPI.php create mode 100755 modules/paysafecard/config.xml create mode 100644 modules/paysafecard/de.php create mode 100644 modules/paysafecard/disposition-error.tpl create mode 100755 modules/paysafecard/es.php create mode 100755 modules/paysafecard/fr.php create mode 100644 modules/paysafecard/img/payment-logo.png create mode 100644 modules/paysafecard/img/payment-small.png create mode 100644 modules/paysafecard/img/payment.png create mode 100644 modules/paysafecard/it.php create mode 100755 modules/paysafecard/keyring/.htaccess create mode 100755 modules/paysafecard/keyring/paysafecard-CA.pem create mode 100644 modules/paysafecard/logo.gif create mode 100644 modules/paysafecard/payment.php create mode 100644 modules/paysafecard/payment.tpl create mode 100644 modules/paysafecard/paysafecard-accept-payment.tpl create mode 100644 modules/paysafecard/paysafecard-confirmation.tpl create mode 100644 modules/paysafecard/paysafecard.php create mode 100644 modules/paysafecard/prepaidservices.js create mode 100644 modules/paysafecard/redirect.php create mode 100644 modules/prestafraud/config.xml create mode 100644 modules/prestafraud/de.php create mode 100644 modules/prestafraud/es.php create mode 100644 modules/prestafraud/fr.php create mode 100644 modules/prestafraud/install.sql create mode 100755 modules/prestafraud/it.php create mode 100644 modules/prestafraud/logo.gif create mode 100644 modules/prestafraud/prestafraud.php create mode 100644 modules/productcomments/ProductComment.php create mode 100644 modules/productcomments/ProductCommentCriterion.php create mode 100644 modules/productcomments/ProductCriterion.php create mode 100755 modules/productcomments/config.xml create mode 100644 modules/productcomments/de.php create mode 100644 modules/productcomments/en.php create mode 100644 modules/productcomments/es.php create mode 100644 modules/productcomments/fr.php create mode 100644 modules/productcomments/img/accept.png create mode 100644 modules/productcomments/img/comment.png create mode 100644 modules/productcomments/img/comments_delete.png create mode 100644 modules/productcomments/img/delete.gif create mode 100644 modules/productcomments/img/delete.png create mode 100644 modules/productcomments/img/note.png create mode 100644 modules/productcomments/img/note_go.png create mode 100644 modules/productcomments/img/star.gif create mode 100644 modules/productcomments/install.sql create mode 100644 modules/productcomments/it.php create mode 100644 modules/productcomments/js/jquery.rating.pack.js create mode 100644 modules/productcomments/js/moderate.js create mode 100644 modules/productcomments/js/productCriterion.js create mode 100755 modules/productcomments/js/products-comparison.js create mode 100644 modules/productcomments/logo.gif create mode 100644 modules/productcomments/productcomments.php create mode 100644 modules/productcomments/productcomments.tpl create mode 100644 modules/productcomments/productcommentscriterion.php create mode 100755 modules/productcomments/products-comparison.tpl create mode 100644 modules/productcomments/tab.tpl create mode 100755 modules/productscategory/config.xml create mode 100644 modules/productscategory/de.php create mode 100644 modules/productscategory/en.php create mode 100644 modules/productscategory/es.php create mode 100644 modules/productscategory/fr.php create mode 100644 modules/productscategory/img/thumbs_left.gif create mode 100644 modules/productscategory/img/thumbs_right.gif create mode 100644 modules/productscategory/it.php create mode 100644 modules/productscategory/logo.gif create mode 100644 modules/productscategory/productscategory.css create mode 100644 modules/productscategory/productscategory.js create mode 100644 modules/productscategory/productscategory.php create mode 100644 modules/productscategory/productscategory.tpl create mode 100755 modules/producttooltip/config.xml create mode 100644 modules/producttooltip/de.php create mode 100644 modules/producttooltip/es.php create mode 100644 modules/producttooltip/fr.php create mode 100644 modules/producttooltip/it.php create mode 100644 modules/producttooltip/logo.gif create mode 100644 modules/producttooltip/producttooltip.php create mode 100644 modules/producttooltip/producttooltip.tpl create mode 100644 modules/producttooltip/sample.gif create mode 100644 modules/referralprogram/ReferralProgramModule.php create mode 100644 modules/referralprogram/authentication.tpl create mode 100755 modules/referralprogram/config.xml create mode 100644 modules/referralprogram/de.php create mode 100644 modules/referralprogram/en.php create mode 100644 modules/referralprogram/es.php create mode 100644 modules/referralprogram/fr.php create mode 100644 modules/referralprogram/it.php create mode 100644 modules/referralprogram/logo.gif create mode 100644 modules/referralprogram/mails/de/referralprogram-congratulations.html create mode 100644 modules/referralprogram/mails/de/referralprogram-congratulations.txt create mode 100644 modules/referralprogram/mails/de/referralprogram-invitation.html create mode 100644 modules/referralprogram/mails/de/referralprogram-invitation.txt create mode 100644 modules/referralprogram/mails/de/referralprogram-voucher.html create mode 100644 modules/referralprogram/mails/de/referralprogram-voucher.txt create mode 100644 modules/referralprogram/mails/en/referralprogram-congratulations.html create mode 100644 modules/referralprogram/mails/en/referralprogram-congratulations.txt create mode 100644 modules/referralprogram/mails/en/referralprogram-invitation.html create mode 100644 modules/referralprogram/mails/en/referralprogram-invitation.txt create mode 100644 modules/referralprogram/mails/en/referralprogram-voucher.html create mode 100644 modules/referralprogram/mails/en/referralprogram-voucher.txt create mode 100755 modules/referralprogram/mails/es/referralprogram-congratulations.html create mode 100755 modules/referralprogram/mails/es/referralprogram-congratulations.txt create mode 100755 modules/referralprogram/mails/es/referralprogram-invitation.html create mode 100755 modules/referralprogram/mails/es/referralprogram-invitation.txt create mode 100755 modules/referralprogram/mails/es/referralprogram-voucher.html create mode 100755 modules/referralprogram/mails/es/referralprogram-voucher.txt create mode 100644 modules/referralprogram/mails/fr/referralprogram-congratulations.html create mode 100644 modules/referralprogram/mails/fr/referralprogram-congratulations.txt create mode 100644 modules/referralprogram/mails/fr/referralprogram-invitation.html create mode 100644 modules/referralprogram/mails/fr/referralprogram-invitation.txt create mode 100644 modules/referralprogram/mails/fr/referralprogram-voucher.html create mode 100644 modules/referralprogram/mails/fr/referralprogram-voucher.txt create mode 100644 modules/referralprogram/mails/it/referralprogram-congratulations.html create mode 100644 modules/referralprogram/mails/it/referralprogram-congratulations.txt create mode 100644 modules/referralprogram/mails/it/referralprogram-invitation.html create mode 100644 modules/referralprogram/mails/it/referralprogram-invitation.txt create mode 100644 modules/referralprogram/mails/it/referralprogram-voucher.html create mode 100644 modules/referralprogram/mails/it/referralprogram-voucher.txt create mode 100644 modules/referralprogram/my-account.tpl create mode 100644 modules/referralprogram/order-confirmation.tpl create mode 100644 modules/referralprogram/preview-email.php create mode 100644 modules/referralprogram/referralprogram-program.php create mode 100644 modules/referralprogram/referralprogram-program.tpl create mode 100644 modules/referralprogram/referralprogram-rules.php create mode 100644 modules/referralprogram/referralprogram-rules.tpl create mode 100644 modules/referralprogram/referralprogram.gif create mode 100644 modules/referralprogram/referralprogram.php create mode 100644 modules/referralprogram/referralprogram.xml create mode 100644 modules/referralprogram/shopping-cart.tpl create mode 100755 modules/reverso/config.xml create mode 100644 modules/reverso/de.php create mode 100644 modules/reverso/es.php create mode 100644 modules/reverso/fr.php create mode 100644 modules/reverso/it.php create mode 100644 modules/reverso/js/index.php create mode 100644 modules/reverso/js/reverso.js create mode 100644 modules/reverso/logo.gif create mode 100644 modules/reverso/reverso.php create mode 100644 modules/reverso/reverso.tpl create mode 100644 modules/reverso/reverso_check.php create mode 100644 modules/secuvad/classes/PaymentCC.php create mode 100644 modules/secuvad/classes/Secuvad_connection.php create mode 100644 modules/secuvad/classes/Secuvad_flux.php create mode 100755 modules/secuvad/config.xml create mode 100644 modules/secuvad/de.php create mode 100644 modules/secuvad/en.php create mode 100644 modules/secuvad/es.php create mode 100755 modules/secuvad/fr.php create mode 100644 modules/secuvad/install.sql create mode 100644 modules/secuvad/it.php create mode 100644 modules/secuvad/logo.gif create mode 100644 modules/secuvad/secuvad.php create mode 100644 modules/secuvad/secuvad_config.php create mode 100644 modules/secuvad/secuvad_response.php create mode 100755 modules/sekeywords/config.xml create mode 100644 modules/sekeywords/de.php create mode 100644 modules/sekeywords/en.php create mode 100644 modules/sekeywords/es.php create mode 100644 modules/sekeywords/fr.php create mode 100644 modules/sekeywords/it.php create mode 100644 modules/sekeywords/logo.gif create mode 100644 modules/sekeywords/sekeywords.php create mode 100755 modules/sendtoafriend/config.xml create mode 100644 modules/sendtoafriend/de.php create mode 100644 modules/sendtoafriend/en.php create mode 100644 modules/sendtoafriend/es.php create mode 100644 modules/sendtoafriend/fr.php create mode 100644 modules/sendtoafriend/it.php create mode 100644 modules/sendtoafriend/logo.gif create mode 100644 modules/sendtoafriend/mails/de/send_to_a_friend.html create mode 100644 modules/sendtoafriend/mails/de/send_to_a_friend.txt create mode 100644 modules/sendtoafriend/mails/en/send_to_a_friend.html create mode 100644 modules/sendtoafriend/mails/en/send_to_a_friend.txt create mode 100644 modules/sendtoafriend/mails/es/send_to_a_friend.html create mode 100644 modules/sendtoafriend/mails/es/send_to_a_friend.txt create mode 100644 modules/sendtoafriend/mails/fr/send_to_a_friend.html create mode 100644 modules/sendtoafriend/mails/fr/send_to_a_friend.txt create mode 100644 modules/sendtoafriend/mails/it/send_to_a_friend.html create mode 100644 modules/sendtoafriend/mails/it/send_to_a_friend.txt create mode 100644 modules/sendtoafriend/product_page.tpl create mode 100644 modules/sendtoafriend/sendtoafriend-form.php create mode 100644 modules/sendtoafriend/sendtoafriend.php create mode 100644 modules/sendtoafriend/sendtoafriend.png create mode 100644 modules/sendtoafriend/sendtoafriend.tpl create mode 100644 modules/shopimporter/ajax.php create mode 100644 modules/shopimporter/config.xml create mode 100644 modules/shopimporter/de.php create mode 100644 modules/shopimporter/es.php create mode 100644 modules/shopimporter/fr.php create mode 100644 modules/shopimporter/img/ajax-loader.gif create mode 100644 modules/shopimporter/img/delete.gif create mode 100644 modules/shopimporter/img/error.png create mode 100644 modules/shopimporter/img/file.png create mode 100644 modules/shopimporter/img/force.gif create mode 100644 modules/shopimporter/img/ok.png create mode 100644 modules/shopimporter/img/skip.png create mode 100644 modules/shopimporter/img/stop.png create mode 100644 modules/shopimporter/img/warn.png create mode 100644 modules/shopimporter/it.php create mode 100644 modules/shopimporter/logo.gif create mode 100644 modules/shopimporter/shopimporter.js create mode 100644 modules/shopimporter/shopimporter.php create mode 100644 modules/socolissimo/ajax.php create mode 100755 modules/socolissimo/config.xml create mode 100644 modules/socolissimo/de.php create mode 100644 modules/socolissimo/es.php create mode 100644 modules/socolissimo/fr.php create mode 100644 modules/socolissimo/it.php create mode 100644 modules/socolissimo/logo.gif create mode 100644 modules/socolissimo/redirect.php create mode 100644 modules/socolissimo/socolissimo.jpg create mode 100644 modules/socolissimo/socolissimo.php create mode 100644 modules/socolissimo/socolissimo_carrier.tpl create mode 100644 modules/socolissimo/socolissimo_error.tpl create mode 100644 modules/socolissimo/validation.php create mode 100755 modules/statsbestcategories/config.xml create mode 100644 modules/statsbestcategories/de.php create mode 100644 modules/statsbestcategories/en.php create mode 100644 modules/statsbestcategories/es.php create mode 100644 modules/statsbestcategories/fr.php create mode 100644 modules/statsbestcategories/it.php create mode 100644 modules/statsbestcategories/logo.gif create mode 100644 modules/statsbestcategories/statsbestcategories.php create mode 100755 modules/statsbestcustomers/config.xml create mode 100644 modules/statsbestcustomers/de.php create mode 100644 modules/statsbestcustomers/en.php create mode 100644 modules/statsbestcustomers/es.php create mode 100644 modules/statsbestcustomers/fr.php create mode 100644 modules/statsbestcustomers/it.php create mode 100644 modules/statsbestcustomers/logo.gif create mode 100644 modules/statsbestcustomers/statsbestcustomers.php create mode 100755 modules/statsbestmanufacturers/config.xml create mode 100644 modules/statsbestmanufacturers/de.php create mode 100755 modules/statsbestmanufacturers/en.php create mode 100755 modules/statsbestmanufacturers/es.php create mode 100755 modules/statsbestmanufacturers/fr.php create mode 100644 modules/statsbestmanufacturers/it.php create mode 100755 modules/statsbestmanufacturers/logo.gif create mode 100755 modules/statsbestmanufacturers/statsbestmanufacturers.php create mode 100755 modules/statsbestproducts/config.xml create mode 100644 modules/statsbestproducts/de.php create mode 100644 modules/statsbestproducts/en.php create mode 100644 modules/statsbestproducts/es.php create mode 100644 modules/statsbestproducts/fr.php create mode 100644 modules/statsbestproducts/it.php create mode 100644 modules/statsbestproducts/logo.gif create mode 100644 modules/statsbestproducts/statsbestproducts.php create mode 100755 modules/statsbestsuppliers/config.xml create mode 100644 modules/statsbestsuppliers/de.php create mode 100644 modules/statsbestsuppliers/en.php create mode 100644 modules/statsbestsuppliers/es.php create mode 100644 modules/statsbestsuppliers/fr.php create mode 100644 modules/statsbestsuppliers/it.php create mode 100644 modules/statsbestsuppliers/logo.gif create mode 100644 modules/statsbestsuppliers/statsbestsuppliers.php create mode 100755 modules/statsbestvouchers/config.xml create mode 100644 modules/statsbestvouchers/de.php create mode 100644 modules/statsbestvouchers/en.php create mode 100644 modules/statsbestvouchers/es.php create mode 100644 modules/statsbestvouchers/fr.php create mode 100644 modules/statsbestvouchers/it.php create mode 100644 modules/statsbestvouchers/logo.gif create mode 100644 modules/statsbestvouchers/statsbestvouchers.php create mode 100755 modules/statscarrier/config.xml create mode 100644 modules/statscarrier/de.php create mode 100644 modules/statscarrier/en.php create mode 100644 modules/statscarrier/es.php create mode 100644 modules/statscarrier/fr.php create mode 100644 modules/statscarrier/it.php create mode 100644 modules/statscarrier/logo.gif create mode 100644 modules/statscarrier/statscarrier.php create mode 100644 modules/statscatalog/application_home.png create mode 100644 modules/statscatalog/basket_delete.png create mode 100755 modules/statscatalog/config.xml create mode 100644 modules/statscatalog/de.php create mode 100644 modules/statscatalog/en.php create mode 100644 modules/statscatalog/es.php create mode 100644 modules/statscatalog/fr.php create mode 100644 modules/statscatalog/it.php create mode 100644 modules/statscatalog/logo.gif create mode 100644 modules/statscatalog/page_edit.png create mode 100644 modules/statscatalog/statscatalog.php create mode 100755 modules/statscheckup/config.xml create mode 100644 modules/statscheckup/de.php create mode 100644 modules/statscheckup/es.php create mode 100644 modules/statscheckup/fr.php create mode 100644 modules/statscheckup/green.png create mode 100644 modules/statscheckup/it.php create mode 100644 modules/statscheckup/logo.gif create mode 100644 modules/statscheckup/orange.png create mode 100644 modules/statscheckup/red.png create mode 100644 modules/statscheckup/statscheckup.php create mode 100644 modules/statsdata/config.xml create mode 100644 modules/statsdata/de.php create mode 100644 modules/statsdata/en.php create mode 100644 modules/statsdata/es.php create mode 100644 modules/statsdata/fr.php create mode 100644 modules/statsdata/it.php create mode 100644 modules/statsdata/logo.gif create mode 100644 modules/statsdata/statsdata.php create mode 100755 modules/statsequipment/config.xml create mode 100644 modules/statsequipment/de.php create mode 100644 modules/statsequipment/en.php create mode 100644 modules/statsequipment/es.php create mode 100644 modules/statsequipment/fr.php create mode 100644 modules/statsequipment/it.php create mode 100644 modules/statsequipment/logo.gif create mode 100644 modules/statsequipment/statsequipment.php create mode 100755 modules/statsforecast/config.xml create mode 100644 modules/statsforecast/de.php create mode 100644 modules/statsforecast/es.php create mode 100644 modules/statsforecast/fr.php create mode 100644 modules/statsforecast/funnel.png create mode 100644 modules/statsforecast/it.php create mode 100644 modules/statsforecast/logo.gif create mode 100644 modules/statsforecast/next.png create mode 100644 modules/statsforecast/statsforecast.php create mode 100644 modules/statsgeolocation/config.php create mode 100755 modules/statsgeolocation/config.xml create mode 100644 modules/statsgeolocation/de.php create mode 100644 modules/statsgeolocation/drawer.php create mode 100644 modules/statsgeolocation/en.php create mode 100644 modules/statsgeolocation/es.php create mode 100644 modules/statsgeolocation/fr.php create mode 100644 modules/statsgeolocation/img/cross.png create mode 100644 modules/statsgeolocation/img/map.png create mode 100644 modules/statsgeolocation/it.php create mode 100644 modules/statsgeolocation/logo.gif create mode 100644 modules/statsgeolocation/statsgeolocation.js create mode 100644 modules/statsgeolocation/statsgeolocation.php create mode 100755 modules/statslive/config.xml create mode 100644 modules/statslive/de.php create mode 100644 modules/statslive/en.php create mode 100644 modules/statslive/es.php create mode 100644 modules/statslive/fr.php create mode 100644 modules/statslive/it.php create mode 100644 modules/statslive/logo.gif create mode 100644 modules/statslive/statslive.php create mode 100755 modules/statsnewsletter/config.xml create mode 100644 modules/statsnewsletter/de.php create mode 100644 modules/statsnewsletter/en.php create mode 100644 modules/statsnewsletter/es.php create mode 100644 modules/statsnewsletter/fr.php create mode 100644 modules/statsnewsletter/it.php create mode 100644 modules/statsnewsletter/logo.gif create mode 100644 modules/statsnewsletter/statsnewsletter.php create mode 100755 modules/statsorigin/config.xml create mode 100644 modules/statsorigin/de.php create mode 100644 modules/statsorigin/en.php create mode 100644 modules/statsorigin/es.php create mode 100644 modules/statsorigin/fr.php create mode 100644 modules/statsorigin/it.php create mode 100644 modules/statsorigin/logo.gif create mode 100644 modules/statsorigin/statsorigin.php create mode 100755 modules/statspersonalinfos/config.xml create mode 100644 modules/statspersonalinfos/de.php create mode 100644 modules/statspersonalinfos/en.php create mode 100644 modules/statspersonalinfos/es.php create mode 100644 modules/statspersonalinfos/fr.php create mode 100644 modules/statspersonalinfos/it.php create mode 100644 modules/statspersonalinfos/logo.gif create mode 100644 modules/statspersonalinfos/statspersonalinfos.php create mode 100755 modules/statsproduct/config.xml create mode 100644 modules/statsproduct/de.php create mode 100644 modules/statsproduct/en.php create mode 100644 modules/statsproduct/es.php create mode 100644 modules/statsproduct/fr.php create mode 100644 modules/statsproduct/it.php create mode 100644 modules/statsproduct/logo.gif create mode 100644 modules/statsproduct/statsproduct.php create mode 100755 modules/statsregistrations/config.xml create mode 100644 modules/statsregistrations/de.php create mode 100644 modules/statsregistrations/en.php create mode 100644 modules/statsregistrations/es.php create mode 100644 modules/statsregistrations/fr.php create mode 100644 modules/statsregistrations/it.php create mode 100644 modules/statsregistrations/logo.gif create mode 100644 modules/statsregistrations/statsregistrations.php create mode 100755 modules/statssales/config.xml create mode 100644 modules/statssales/de.php create mode 100644 modules/statssales/en.php create mode 100644 modules/statssales/es.php create mode 100644 modules/statssales/fr.php create mode 100644 modules/statssales/it.php create mode 100644 modules/statssales/logo.gif create mode 100644 modules/statssales/statssales.php create mode 100755 modules/statssearch/config.xml create mode 100644 modules/statssearch/de.php create mode 100644 modules/statssearch/en.php create mode 100644 modules/statssearch/es.php create mode 100644 modules/statssearch/fr.php create mode 100644 modules/statssearch/it.php create mode 100644 modules/statssearch/logo.gif create mode 100644 modules/statssearch/statssearch.php create mode 100755 modules/statsstock/config.xml create mode 100644 modules/statsstock/de.php create mode 100644 modules/statsstock/es.php create mode 100644 modules/statsstock/fr.php create mode 100644 modules/statsstock/it.php create mode 100644 modules/statsstock/logo.gif create mode 100644 modules/statsstock/statsstock.php create mode 100755 modules/statsvisits/config.xml create mode 100644 modules/statsvisits/de.php create mode 100644 modules/statsvisits/en.php create mode 100644 modules/statsvisits/es.php create mode 100644 modules/statsvisits/fr.php create mode 100644 modules/statsvisits/it.php create mode 100644 modules/statsvisits/logo.gif create mode 100644 modules/statsvisits/statsvisits.php create mode 100644 modules/themeinstallator/add.png create mode 100755 modules/themeinstallator/config.xml create mode 100644 modules/themeinstallator/de.php create mode 100644 modules/themeinstallator/delete.png create mode 100644 modules/themeinstallator/es.php create mode 100644 modules/themeinstallator/fr.php create mode 100644 modules/themeinstallator/it.php create mode 100644 modules/themeinstallator/logo.gif create mode 100644 modules/themeinstallator/script.js create mode 100644 modules/themeinstallator/themeinstallator.php create mode 100644 modules/tm4b/classes/Tm4bSms.php create mode 100755 modules/tm4b/config.xml create mode 100644 modules/tm4b/cron.php create mode 100644 modules/tm4b/de.php create mode 100644 modules/tm4b/en.php create mode 100644 modules/tm4b/es.php create mode 100644 modules/tm4b/fr.php create mode 100644 modules/tm4b/informations.gif create mode 100644 modules/tm4b/it.php create mode 100644 modules/tm4b/logo.gif create mode 100755 modules/tm4b/mails/de/sms_new_order.txt create mode 100755 modules/tm4b/mails/de/sms_out_of_stock.txt create mode 100644 modules/tm4b/mails/en/sms_new_order.txt create mode 100644 modules/tm4b/mails/en/sms_out_of_stock.txt create mode 100644 modules/tm4b/mails/es/sms_new_order.txt create mode 100644 modules/tm4b/mails/es/sms_out_of_stock.txt create mode 100644 modules/tm4b/mails/fr/sms_new_order.txt create mode 100644 modules/tm4b/mails/fr/sms_out_of_stock.txt create mode 100755 modules/tm4b/mails/it/sms_new_order.txt create mode 100755 modules/tm4b/mails/it/sms_out_of_stock.txt create mode 100644 modules/tm4b/prefs.gif create mode 100644 modules/tm4b/tm4b.php create mode 100644 modules/trackingfront/account.tpl create mode 100755 modules/trackingfront/config.xml create mode 100644 modules/trackingfront/de.php create mode 100644 modules/trackingfront/en.php create mode 100644 modules/trackingfront/es.php create mode 100644 modules/trackingfront/footer.tpl create mode 100644 modules/trackingfront/fr.php create mode 100644 modules/trackingfront/header.tpl create mode 100644 modules/trackingfront/it.php create mode 100644 modules/trackingfront/login.tpl create mode 100644 modules/trackingfront/logo.gif create mode 100644 modules/trackingfront/stats.php create mode 100644 modules/trackingfront/trackingfront.php create mode 100644 modules/treepodia/add-to-cart.tpl create mode 100644 modules/treepodia/api/get_data_feed.php create mode 100644 modules/treepodia/api/ping.php create mode 100644 modules/treepodia/api/set_account_code.php create mode 100755 modules/treepodia/config.xml create mode 100644 modules/treepodia/de.php create mode 100644 modules/treepodia/es.php create mode 100644 modules/treepodia/export/export.php create mode 100644 modules/treepodia/footer.tpl create mode 100644 modules/treepodia/fr.php create mode 100644 modules/treepodia/it.php create mode 100644 modules/treepodia/logo.gif create mode 100644 modules/treepodia/logo.png create mode 100644 modules/treepodia/logos/01_1.jpg create mode 100644 modules/treepodia/logos/01_2.jpg create mode 100644 modules/treepodia/logos/01_3.jpg create mode 100644 modules/treepodia/logos/01_4.jpg create mode 100644 modules/treepodia/logos/02_1.jpg create mode 100644 modules/treepodia/logos/02_2.jpg create mode 100644 modules/treepodia/logos/03_1.jpg create mode 100644 modules/treepodia/logos/04_1.jpg create mode 100644 modules/treepodia/logos/04_2.jpg create mode 100644 modules/treepodia/logos/04_3.jpg create mode 100644 modules/treepodia/logos/04_4.jpg create mode 100644 modules/treepodia/logos/04_5.jpg create mode 100644 modules/treepodia/logos/05_1.jpg create mode 100644 modules/treepodia/logos/05_2.jpg create mode 100644 modules/treepodia/logos/05_3.jpg create mode 100644 modules/treepodia/logos/05_4.jpg create mode 100644 modules/treepodia/logos/05_6.jpg create mode 100644 modules/treepodia/logos/06_1.jpg create mode 100644 modules/treepodia/logos/07_1.jpg create mode 100644 modules/treepodia/logos/08_1.jpg create mode 100644 modules/treepodia/logos/09.jpg create mode 100644 modules/treepodia/logos/1-1.png create mode 100644 modules/treepodia/logos/1-2.png create mode 100644 modules/treepodia/logos/1-3.png create mode 100644 modules/treepodia/logos/1-4.png create mode 100644 modules/treepodia/logos/1-5.png create mode 100644 modules/treepodia/logos/1-6.png create mode 100644 modules/treepodia/logos/1-7.png create mode 100644 modules/treepodia/logos/10.jpg create mode 100644 modules/treepodia/logos/11_1.jpg create mode 100644 modules/treepodia/logos/11_2.jpg create mode 100644 modules/treepodia/logos/11_3.jpg create mode 100644 modules/treepodia/logos/11_4.jpg create mode 100644 modules/treepodia/logos/11_5.jpg create mode 100644 modules/treepodia/logos/12_1.jpg create mode 100644 modules/treepodia/logos/12_2.jpg create mode 100644 modules/treepodia/logos/12_3.jpg create mode 100644 modules/treepodia/logos/12_4.jpg create mode 100644 modules/treepodia/logos/12_5.jpg create mode 100644 modules/treepodia/logos/2-1-2.png create mode 100644 modules/treepodia/logos/2-1.png create mode 100644 modules/treepodia/logos/2-2-2.png create mode 100644 modules/treepodia/logos/2-2.png create mode 100644 modules/treepodia/logos/2-3.png create mode 100644 modules/treepodia/logos/2-4.png create mode 100644 modules/treepodia/logos/2-5.png create mode 100644 modules/treepodia/logos/2-6.png create mode 100644 modules/treepodia/logos/3-2.png create mode 100644 modules/treepodia/logos/3-3.png create mode 100644 modules/treepodia/logos/3-7.png create mode 100644 modules/treepodia/logos/4-1.png create mode 100644 modules/treepodia/logos/4-2.png create mode 100644 modules/treepodia/logos/4-3.png create mode 100644 modules/treepodia/logos/4-4.png create mode 100644 modules/treepodia/logos/4-5.png create mode 100644 modules/treepodia/logos/4-6.png create mode 100644 modules/treepodia/logos/4-7.png create mode 100644 modules/treepodia/logos/5-1.png create mode 100644 modules/treepodia/logos/5-2.png create mode 100644 modules/treepodia/logos/5-3.png create mode 100644 modules/treepodia/logos/5-4.png create mode 100644 modules/treepodia/logos/5-6.png create mode 100644 modules/treepodia/logos/5-7.png create mode 100644 modules/treepodia/logos/5-8.png create mode 100644 modules/treepodia/logos/7-1-2.png create mode 100644 modules/treepodia/logos/7-1.png create mode 100644 modules/treepodia/logos/7-2-3.png create mode 100644 modules/treepodia/logos/7-2.png create mode 100644 modules/treepodia/logos/7-4.png create mode 100644 modules/treepodia/logos/7-6.png create mode 100644 modules/treepodia/logos/7-7-1.png create mode 100644 modules/treepodia/logos/8-1.png create mode 100644 modules/treepodia/logos/8-2.png create mode 100644 modules/treepodia/logos/8-3.png create mode 100644 modules/treepodia/logos/8-4.png create mode 100644 modules/treepodia/logos/8-5.png create mode 100644 modules/treepodia/logos/8-6.png create mode 100644 modules/treepodia/logos/8-7.png create mode 100644 modules/treepodia/product.tpl create mode 100644 modules/treepodia/tracking.tpl create mode 100644 modules/treepodia/treepodia.js create mode 100644 modules/treepodia/treepodia.php create mode 100644 modules/treepodia/video-sitemap.php create mode 100644 modules/trustedshops/RatingAlert.php create mode 100644 modules/trustedshops/TrustedShopsSoapApi.php create mode 100644 modules/trustedshops/WidgetCache.php create mode 100755 modules/trustedshops/config.xml create mode 100644 modules/trustedshops/cron.php create mode 100644 modules/trustedshops/cron_garantee.php create mode 100644 modules/trustedshops/de.php create mode 100644 modules/trustedshops/display_products.tpl create mode 100644 modules/trustedshops/es.php create mode 100644 modules/trustedshops/fr.php create mode 100644 modules/trustedshops/img/apply_de.gif create mode 100644 modules/trustedshops/img/apply_en.gif create mode 100644 modules/trustedshops/img/apply_fr.gif create mode 100755 modules/trustedshops/img/siegel.gif create mode 100644 modules/trustedshops/img/ts_logo.jpg create mode 100644 modules/trustedshops/img/ts_rating_en.jpg create mode 100644 modules/trustedshops/img/ts_rating_fr.jpg create mode 100644 modules/trustedshops/it.php create mode 100644 modules/trustedshops/lib/AbsTrustedShops.php create mode 100644 modules/trustedshops/lib/RatingAlert.php create mode 100644 modules/trustedshops/lib/TSBPException.php create mode 100644 modules/trustedshops/lib/TSBuyerProtection.php create mode 100644 modules/trustedshops/lib/TrustedShopsRating.php create mode 100644 modules/trustedshops/lib/TrustedShopsSoapApi.php create mode 100644 modules/trustedshops/lib/WidgetCache.php create mode 100644 modules/trustedshops/lib/js/payment.js create mode 100644 modules/trustedshops/logo.gif create mode 100644 modules/trustedshops/mails/de/rating_email.html create mode 100644 modules/trustedshops/mails/de/rating_email.txt create mode 100644 modules/trustedshops/mails/en/rating_email.html create mode 100644 modules/trustedshops/mails/en/rating_email.txt create mode 100755 modules/trustedshops/mails/es/rating_email.html create mode 100755 modules/trustedshops/mails/es/rating_email.txt create mode 100644 modules/trustedshops/mails/fr/rating_email.html create mode 100644 modules/trustedshops/mails/fr/rating_email.txt create mode 100644 modules/trustedshops/mails/it/rating_email.html create mode 100644 modules/trustedshops/mails/it/rating_email.txt create mode 100644 modules/trustedshops/order-confirmation-tsbp-classic.tpl create mode 100644 modules/trustedshops/order-confirmation.tpl create mode 100644 modules/trustedshops/seal_of_approval.tpl create mode 100644 modules/trustedshops/trustedshops.php create mode 100644 modules/trustedshops/widget.tpl create mode 100644 modules/twenga/ajax-loader.gif create mode 100644 modules/twenga/bt_500_clicks.gif create mode 100644 modules/twenga/config.xml create mode 100644 modules/twenga/de.php create mode 100644 modules/twenga/es.php create mode 100644 modules/twenga/export.php create mode 100644 modules/twenga/fr.php create mode 100755 modules/twenga/infos.html create mode 100755 modules/twenga/infos_update.php create mode 100644 modules/twenga/it.php create mode 100644 modules/twenga/lib/PrestashopStats.php create mode 100644 modules/twenga/lib/TwengaFields.php create mode 100644 modules/twenga/lib/TwengaFieldsGetSubscriptionLink.php create mode 100644 modules/twenga/lib/TwengaFieldsGetTrackingScript.php create mode 100644 modules/twenga/lib/TwengaFieldsOrderCancel.php create mode 100644 modules/twenga/lib/TwengaFieldsOrderExist.php create mode 100644 modules/twenga/lib/TwengaFieldsOrderValidate.php create mode 100644 modules/twenga/lib/TwengaFieldsSiteActivate.php create mode 100644 modules/twenga/lib/TwengaFieldsSiteExist.php create mode 100644 modules/twenga/lib/TwengaObj.php create mode 100644 modules/twenga/logo.gif create mode 100644 modules/twenga/logo_big.jpg create mode 100755 modules/twenga/mails/de/mail.html create mode 100755 modules/twenga/mails/de/mail.txt create mode 100755 modules/twenga/mails/en/mail.html create mode 100755 modules/twenga/mails/en/mail.txt create mode 100755 modules/twenga/mails/es/mail.html create mode 100755 modules/twenga/mails/es/mail.txt create mode 100755 modules/twenga/mails/fr/mail.html create mode 100755 modules/twenga/mails/fr/mail.txt create mode 100755 modules/twenga/send_mail.php create mode 100644 modules/twenga/twenga.php create mode 100644 modules/upscarrier/carrier.jpg create mode 100755 modules/upscarrier/config.xml create mode 100644 modules/upscarrier/de.php create mode 100644 modules/upscarrier/es.php create mode 100644 modules/upscarrier/fr.php create mode 100644 modules/upscarrier/it.php create mode 100644 modules/upscarrier/logo.gif create mode 100644 modules/upscarrier/sql-install.php create mode 100644 modules/upscarrier/sql-uninstall.php create mode 100644 modules/upscarrier/upscarrier.php create mode 100755 modules/upscarrier/xml-package.tpl create mode 100644 modules/upscarrier/xml.tpl create mode 100644 modules/uspscarrier/carrier.jpg create mode 100755 modules/uspscarrier/config.xml create mode 100644 modules/uspscarrier/de.php create mode 100644 modules/uspscarrier/es.php create mode 100644 modules/uspscarrier/fr.php create mode 100644 modules/uspscarrier/it.php create mode 100644 modules/uspscarrier/logo.gif create mode 100755 modules/uspscarrier/sql-install.php create mode 100755 modules/uspscarrier/sql-uninstall.php create mode 100644 modules/uspscarrier/uspscarrier.php create mode 100644 modules/uspscarrier/xml-package.tpl create mode 100644 modules/uspscarrier/xml.tpl create mode 100644 modules/vatnumber/ajax.php create mode 100755 modules/vatnumber/config.xml create mode 100644 modules/vatnumber/de.php create mode 100644 modules/vatnumber/en.php create mode 100755 modules/vatnumber/es.php create mode 100755 modules/vatnumber/fr.php create mode 100644 modules/vatnumber/it.php create mode 100755 modules/vatnumber/logo.gif create mode 100755 modules/vatnumber/vatnumber.php create mode 100755 modules/watermark/config.xml create mode 100644 modules/watermark/de.php create mode 100644 modules/watermark/en.php create mode 100644 modules/watermark/es.php create mode 100644 modules/watermark/fr.php create mode 100644 modules/watermark/it.php create mode 100644 modules/watermark/logo.gif create mode 100644 modules/watermark/watermark.gif create mode 100644 modules/watermark/watermark.php create mode 100644 my-account.php create mode 100644 new-products.php create mode 100644 order-confirmation.php create mode 100644 order-detail.php create mode 100644 order-follow.php create mode 100755 order-opc.php create mode 100644 order-return.php create mode 100644 order-slip.php create mode 100644 order.php create mode 100755 override/classes/_FrontController.php create mode 100644 override/classes/_Module.php create mode 100644 override/classes/_MySQL.php create mode 100644 pagination.php create mode 100644 password.php create mode 100644 pdf-invoice.php create mode 100644 pdf-order-return.php create mode 100644 pdf-order-slip.php create mode 100644 prices-drop.php create mode 100644 product-sort.php create mode 100644 product.php create mode 100644 products-comparison.php create mode 100644 readme_de.txt create mode 100644 readme_en.txt create mode 100644 readme_es.txt create mode 100644 readme_fr.txt create mode 100644 readme_it.txt create mode 100644 search.php create mode 100644 sitemap.php create mode 100644 sitemap.xml create mode 100644 statistics.php create mode 100644 stores.php create mode 100644 supplier.php create mode 100644 themes/debug.tpl create mode 100644 themes/index.php create mode 100644 themes/live_edit.tpl create mode 100644 themes/prestashop/404.tpl create mode 100644 themes/prestashop/address.tpl create mode 100644 themes/prestashop/addresses.tpl create mode 100644 themes/prestashop/authentication.tpl create mode 100644 themes/prestashop/best-sales.tpl create mode 100644 themes/prestashop/breadcrumb.tpl create mode 100644 themes/prestashop/category-cms-tree-branch.tpl create mode 100644 themes/prestashop/category-tree-branch.tpl create mode 100644 themes/prestashop/category.tpl create mode 100644 themes/prestashop/cms.tpl create mode 100644 themes/prestashop/config.xml create mode 100644 themes/prestashop/contact-form.tpl create mode 100755 themes/prestashop/css/addresses.css create mode 100755 themes/prestashop/css/authentication.css create mode 100755 themes/prestashop/css/category.css create mode 100644 themes/prestashop/css/cms.css create mode 100644 themes/prestashop/css/comparator.css create mode 100755 themes/prestashop/css/contact-form.css create mode 100644 themes/prestashop/css/global.css create mode 100755 themes/prestashop/css/history.css create mode 100755 themes/prestashop/css/identity.css create mode 100644 themes/prestashop/css/maintenance.css create mode 100755 themes/prestashop/css/modules/blockadvertising/blockadvertising.css create mode 100755 themes/prestashop/css/modules/blockbestsellers/blockbestsellers.css create mode 100755 themes/prestashop/css/modules/blockcart/blockcart.css create mode 100755 themes/prestashop/css/modules/blockcategories/blockcategories.css create mode 100755 themes/prestashop/css/modules/blockcms/blockcms.css create mode 100755 themes/prestashop/css/modules/blockcurrencies/blockcurrencies.css create mode 100755 themes/prestashop/css/modules/blocklanguages/blocklanguages.css create mode 100755 themes/prestashop/css/modules/blockmanufacturer/blockmanufacturer.css create mode 100755 themes/prestashop/css/modules/blockmyaccount/blockmyaccount.css create mode 100755 themes/prestashop/css/modules/blocknewproducts/blocknewproducts.css create mode 100755 themes/prestashop/css/modules/blocknewsletter/blocknewsletter.css create mode 100755 themes/prestashop/css/modules/blockpaymentlogo/blockpaymentlogo.css create mode 100755 themes/prestashop/css/modules/blockpermanentlinks/blockpermanentlinks.css create mode 100755 themes/prestashop/css/modules/blockrss/blockrss.css create mode 100755 themes/prestashop/css/modules/blocksearch/blocksearch.css create mode 100755 themes/prestashop/css/modules/blockspecials/blockspecials.css create mode 100644 themes/prestashop/css/modules/blockstore/blockstore.css create mode 100755 themes/prestashop/css/modules/blocksupplier/blocksupplier.css create mode 100755 themes/prestashop/css/modules/blocktags/blocktags.css create mode 100755 themes/prestashop/css/modules/blockuserinfo/blockuserinfo.css create mode 100755 themes/prestashop/css/modules/blockviewed/blockviewed.css create mode 100755 themes/prestashop/css/modules/blockwishlist/blockwishlist.css create mode 100644 themes/prestashop/css/modules/crossselling/crossselling.css create mode 100755 themes/prestashop/css/modules/editorial/editorial.css create mode 100755 themes/prestashop/css/my-account.css create mode 100755 themes/prestashop/css/order-opc.css create mode 100755 themes/prestashop/css/product.css create mode 100755 themes/prestashop/css/product_list.css create mode 100644 themes/prestashop/css/restricted-country.css create mode 100644 themes/prestashop/css/scenes.css create mode 100755 themes/prestashop/css/sitemap.css create mode 100644 themes/prestashop/css/stores.css create mode 100644 themes/prestashop/discount.tpl create mode 100644 themes/prestashop/errors.tpl create mode 100644 themes/prestashop/footer.tpl create mode 100644 themes/prestashop/guest-tracking.tpl create mode 100644 themes/prestashop/header.tpl create mode 100644 themes/prestashop/history.tpl create mode 100644 themes/prestashop/identity.tpl create mode 100644 themes/prestashop/img/address_alias_left.gif create mode 100644 themes/prestashop/img/address_alias_right.gif create mode 100644 themes/prestashop/img/ajax-loader.gif create mode 100644 themes/prestashop/img/arrow_rotate_anticlockwise.png create mode 100644 themes/prestashop/img/bg_account.jpg create mode 100644 themes/prestashop/img/block_bg.jpg create mode 100644 themes/prestashop/img/block_bg_myaccount.jpg create mode 100644 themes/prestashop/img/block_category_item_bg.jpg create mode 100644 themes/prestashop/img/block_exclusive_bg.jpg create mode 100644 themes/prestashop/img/block_exclusive_footer.jpg create mode 100644 themes/prestashop/img/block_footer.gif create mode 100755 themes/prestashop/img/block_footer.png create mode 100644 themes/prestashop/img/block_footer_myaccount.jpg create mode 100644 themes/prestashop/img/block_header.gif create mode 100755 themes/prestashop/img/block_header.png create mode 100644 themes/prestashop/img/block_header_exclusive.gif create mode 100755 themes/prestashop/img/block_header_exclusive.png create mode 100644 themes/prestashop/img/block_header_exclusive_cart.gif create mode 100755 themes/prestashop/img/block_header_exclusive_cart.png create mode 100644 themes/prestashop/img/block_header_large.gif create mode 100755 themes/prestashop/img/block_header_large.png create mode 100644 themes/prestashop/img/block_header_myaccount.jpg create mode 100644 themes/prestashop/img/block_myaccount_header_large.gif create mode 100644 themes/prestashop/img/block_search_bg.jpg create mode 100644 themes/prestashop/img/bullet.gif create mode 100644 themes/prestashop/img/bullet_alt.jpg create mode 100644 themes/prestashop/img/bullet_myaccount.gif create mode 100644 themes/prestashop/img/bullet_price.gif create mode 100644 themes/prestashop/img/button-account-large.gif create mode 100644 themes/prestashop/img/button-account-mini.gif create mode 100644 themes/prestashop/img/button-account-small.gif create mode 100644 themes/prestashop/img/button-account.gif create mode 100644 themes/prestashop/img/button-large.gif create mode 100755 themes/prestashop/img/button-large.png create mode 100644 themes/prestashop/img/button-large_exclusive.gif create mode 100644 themes/prestashop/img/button-medium.gif create mode 100755 themes/prestashop/img/button-medium.png create mode 100644 themes/prestashop/img/button-medium_exclusive.gif create mode 100755 themes/prestashop/img/button-medium_exclusive.png create mode 100644 themes/prestashop/img/button-mini.gif create mode 100755 themes/prestashop/img/button-mini.png create mode 100644 themes/prestashop/img/button-mini_exclusive.gif create mode 100644 themes/prestashop/img/button-small.gif create mode 100755 themes/prestashop/img/button-small.png create mode 100644 themes/prestashop/img/button-small_exclusive.gif create mode 100644 themes/prestashop/img/flag_new_bg.jpg create mode 100644 themes/prestashop/img/footer_account.gif create mode 100644 themes/prestashop/img/form-input-bg.gif create mode 100644 themes/prestashop/img/form_bg.jpg create mode 100644 themes/prestashop/img/header_account.gif create mode 100644 themes/prestashop/img/icon/add.gif create mode 100644 themes/prestashop/img/icon/addrbook.gif create mode 100644 themes/prestashop/img/icon/available.gif create mode 100644 themes/prestashop/img/icon/cancel.gif create mode 100644 themes/prestashop/img/icon/cancel_16x18.gif create mode 100644 themes/prestashop/img/icon/cart.gif create mode 100644 themes/prestashop/img/icon/cible.gif create mode 100644 themes/prestashop/img/icon/contact.gif create mode 100644 themes/prestashop/img/icon/delete.gif create mode 100644 themes/prestashop/img/icon/download_product.gif create mode 100644 themes/prestashop/img/icon/error.gif create mode 100644 themes/prestashop/img/icon/gift.gif create mode 100644 themes/prestashop/img/icon/home.gif create mode 100644 themes/prestashop/img/icon/infos.gif create mode 100644 themes/prestashop/img/icon/less.gif create mode 100644 themes/prestashop/img/icon/magnify.gif create mode 100644 themes/prestashop/img/icon/more.gif create mode 100644 themes/prestashop/img/icon/my-account.gif create mode 100644 themes/prestashop/img/icon/next.gif create mode 100644 themes/prestashop/img/icon/no.gif create mode 100644 themes/prestashop/img/icon/order.gif create mode 100644 themes/prestashop/img/icon/pdf.gif create mode 100644 themes/prestashop/img/icon/previous.gif create mode 100644 themes/prestashop/img/icon/quantity_down.gif create mode 100755 themes/prestashop/img/icon/quantity_down_off.gif create mode 100644 themes/prestashop/img/icon/quantity_up.gif create mode 100644 themes/prestashop/img/icon/recyclable.gif create mode 100644 themes/prestashop/img/icon/return.gif create mode 100644 themes/prestashop/img/icon/search.gif create mode 100644 themes/prestashop/img/icon/serial_scroll_left.gif create mode 100644 themes/prestashop/img/icon/serial_scroll_right.gif create mode 100644 themes/prestashop/img/icon/sitemap.gif create mode 100644 themes/prestashop/img/icon/slip.gif create mode 100644 themes/prestashop/img/icon/sort_asc.gif create mode 100644 themes/prestashop/img/icon/sort_asc_disabled.gif create mode 100644 themes/prestashop/img/icon/sort_asc_white.gif create mode 100755 themes/prestashop/img/icon/sort_asc_white.png create mode 100644 themes/prestashop/img/icon/sort_desc.gif create mode 100644 themes/prestashop/img/icon/sort_desc_disabled.gif create mode 100644 themes/prestashop/img/icon/sort_desc_white.gif create mode 100755 themes/prestashop/img/icon/sort_desc_white.png create mode 100644 themes/prestashop/img/icon/star.gif create mode 100644 themes/prestashop/img/icon/unavailable.gif create mode 100644 themes/prestashop/img/icon/up.gif create mode 100644 themes/prestashop/img/icon/update.gif create mode 100644 themes/prestashop/img/icon/userinfo.gif create mode 100644 themes/prestashop/img/icon/voucher.gif create mode 100644 themes/prestashop/img/icon/yes.gif create mode 100644 themes/prestashop/img/jquery/macFFBgHack.png create mode 100644 themes/prestashop/img/logo_paiement_mastercard.jpg create mode 100644 themes/prestashop/img/logo_paiement_paypal.jpg create mode 100644 themes/prestashop/img/logo_paiement_visa.jpg create mode 100755 themes/prestashop/img/nav-logout.gif create mode 100644 themes/prestashop/img/onsale_en.gif create mode 100644 themes/prestashop/img/onsale_es.gif create mode 100644 themes/prestashop/img/onsale_fr.gif create mode 100644 themes/prestashop/img/pagination-bg-current.gif create mode 100644 themes/prestashop/img/pagination-next-border.gif create mode 100644 themes/prestashop/img/pagination-prev-border.gif create mode 100644 themes/prestashop/img/pagination-prevnext-bg.gif create mode 100644 themes/prestashop/img/pagination_bg.gif create mode 100644 themes/prestashop/img/product-buy-bg.gif create mode 100644 themes/prestashop/img/product-short-desc-bg.gif create mode 100644 themes/prestashop/img/rss.gif create mode 100644 themes/prestashop/img/sitemap-horizontal.gif create mode 100755 themes/prestashop/img/sitemap-horizontal.png create mode 100644 themes/prestashop/img/sitemap-last.gif create mode 100644 themes/prestashop/img/sitemap-top.gif create mode 100644 themes/prestashop/img/sitemap_long.gif create mode 100644 themes/prestashop/img/step_current.gif create mode 100644 themes/prestashop/img/step_end.gif create mode 100644 themes/prestashop/img/step_end_current.gif create mode 100644 themes/prestashop/img/step_standard.gif create mode 100644 themes/prestashop/img/step_start.gif create mode 100644 themes/prestashop/img/tab_bg.jpg create mode 100644 themes/prestashop/img/tab_bg_selected.jpg create mode 100644 themes/prestashop/img/tab_bg_selected_short.jpg create mode 100644 themes/prestashop/img/tab_bg_short.jpg create mode 100644 themes/prestashop/img/table_footer.gif create mode 100644 themes/prestashop/img/table_header.gif create mode 100644 themes/prestashop/img/thumbs_left.gif create mode 100644 themes/prestashop/img/thumbs_right.gif create mode 100644 themes/prestashop/img/title_bg.gif create mode 100755 themes/prestashop/img/title_bg.png create mode 100644 themes/prestashop/img/title_bg_large.gif create mode 100644 themes/prestashop/index.php create mode 100644 themes/prestashop/index.tpl create mode 100644 themes/prestashop/js/cart-summary.js create mode 100644 themes/prestashop/js/cms.js create mode 100644 themes/prestashop/js/history.js create mode 100644 themes/prestashop/js/order-address.js create mode 100755 themes/prestashop/js/order-opc.js create mode 100644 themes/prestashop/js/product.js create mode 100644 themes/prestashop/js/products-comparison.js create mode 100644 themes/prestashop/js/scenes.js create mode 100644 themes/prestashop/js/stores.js create mode 100644 themes/prestashop/js/tools.js create mode 100644 themes/prestashop/js/tools/statesManagement.js create mode 100644 themes/prestashop/js/tools/treeManagement.js create mode 100644 themes/prestashop/lang/de.php create mode 100644 themes/prestashop/lang/en.php create mode 100644 themes/prestashop/lang/es.php create mode 100644 themes/prestashop/lang/fr.php create mode 100755 themes/prestashop/lang/it.php create mode 100644 themes/prestashop/maintenance.tpl create mode 100644 themes/prestashop/manufacturer-list.tpl create mode 100644 themes/prestashop/manufacturer.tpl create mode 100644 themes/prestashop/my-account.tpl create mode 100644 themes/prestashop/new-products.tpl create mode 100644 themes/prestashop/order-address.tpl create mode 100644 themes/prestashop/order-carrier.tpl create mode 100644 themes/prestashop/order-confirmation.tpl create mode 100644 themes/prestashop/order-detail.tpl create mode 100644 themes/prestashop/order-follow.tpl create mode 100644 themes/prestashop/order-opc-new-account.tpl create mode 100755 themes/prestashop/order-opc.tpl create mode 100644 themes/prestashop/order-payment.tpl create mode 100644 themes/prestashop/order-return.tpl create mode 100644 themes/prestashop/order-slip.tpl create mode 100644 themes/prestashop/order-steps.tpl create mode 100644 themes/prestashop/pagination.tpl create mode 100644 themes/prestashop/password.tpl create mode 100644 themes/prestashop/preview.jpg create mode 100644 themes/prestashop/prices-drop.tpl create mode 100644 themes/prestashop/product-compare.tpl create mode 100644 themes/prestashop/product-list.tpl create mode 100644 themes/prestashop/product-sort.tpl create mode 100644 themes/prestashop/product.tpl create mode 100644 themes/prestashop/products-comparison.tpl create mode 100644 themes/prestashop/restricted-country.tpl create mode 100644 themes/prestashop/scenes.tpl create mode 100644 themes/prestashop/search.tpl create mode 100644 themes/prestashop/shopping-cart-product-line.tpl create mode 100644 themes/prestashop/shopping-cart.tpl create mode 100644 themes/prestashop/sitemap.tpl create mode 100644 themes/prestashop/store_infos.tpl create mode 100644 themes/prestashop/stores.tpl create mode 100644 themes/prestashop/supplier-list.tpl create mode 100644 themes/prestashop/supplier.tpl create mode 100755 tools/.htaccess create mode 100644 tools/fpdf/font/courier.php create mode 100644 tools/fpdf/font/helvetica.php create mode 100644 tools/fpdf/font/helveticab.php create mode 100644 tools/fpdf/font/helveticabi.php create mode 100644 tools/fpdf/font/helveticai.php create mode 100644 tools/fpdf/font/index.php create mode 100644 tools/fpdf/font/makefont/cp1250.map create mode 100644 tools/fpdf/font/makefont/cp1251.map create mode 100644 tools/fpdf/font/makefont/cp1252.map create mode 100644 tools/fpdf/font/makefont/cp1253.map create mode 100644 tools/fpdf/font/makefont/cp1254.map create mode 100644 tools/fpdf/font/makefont/cp1255.map create mode 100644 tools/fpdf/font/makefont/cp1257.map create mode 100644 tools/fpdf/font/makefont/cp1258.map create mode 100644 tools/fpdf/font/makefont/cp874.map create mode 100644 tools/fpdf/font/makefont/index.php create mode 100644 tools/fpdf/font/makefont/iso-8859-1.map create mode 100644 tools/fpdf/font/makefont/iso-8859-11.map create mode 100644 tools/fpdf/font/makefont/iso-8859-15.map create mode 100644 tools/fpdf/font/makefont/iso-8859-16.map create mode 100644 tools/fpdf/font/makefont/iso-8859-2.map create mode 100644 tools/fpdf/font/makefont/iso-8859-4.map create mode 100644 tools/fpdf/font/makefont/iso-8859-5.map create mode 100644 tools/fpdf/font/makefont/iso-8859-7.map create mode 100644 tools/fpdf/font/makefont/iso-8859-9.map create mode 100644 tools/fpdf/font/makefont/koi8-r.map create mode 100644 tools/fpdf/font/makefont/koi8-u.map create mode 100644 tools/fpdf/font/makefont/makefont.php create mode 100644 tools/fpdf/font/symbol.php create mode 100644 tools/fpdf/font/times.php create mode 100644 tools/fpdf/font/timesb.php create mode 100644 tools/fpdf/font/timesbi.php create mode 100644 tools/fpdf/font/timesi.php create mode 100644 tools/fpdf/font/zapfdingbats.php create mode 100644 tools/fpdf/fpdf.php create mode 100644 tools/fpdf/index.php create mode 100755 tools/geoip/geoip.inc create mode 100755 tools/geoip/geoipcity.inc create mode 100755 tools/geoip/geoipregionvars.php create mode 100644 tools/index.php create mode 100644 tools/js_minify/jsmin.php create mode 100755 tools/minify_html/minify_html.class.php create mode 100644 tools/pear/PEAR.php create mode 100644 tools/pear_xml_parser/Parser.php create mode 100644 tools/pear_xml_parser/Parser/Atom.php create mode 100644 tools/pear_xml_parser/Parser/AtomElement.php create mode 100644 tools/pear_xml_parser/Parser/Exception.php create mode 100644 tools/pear_xml_parser/Parser/RSS09.php create mode 100644 tools/pear_xml_parser/Parser/RSS09Element.php create mode 100644 tools/pear_xml_parser/Parser/RSS1.php create mode 100644 tools/pear_xml_parser/Parser/RSS11.php create mode 100644 tools/pear_xml_parser/Parser/RSS11Element.php create mode 100644 tools/pear_xml_parser/Parser/RSS1Element.php create mode 100644 tools/pear_xml_parser/Parser/RSS2.php create mode 100644 tools/pear_xml_parser/Parser/RSS2Element.php create mode 100644 tools/pear_xml_parser/Parser/Type.php create mode 100644 tools/pear_xml_parser/Parser/index.php create mode 100644 tools/pear_xml_parser/index.php create mode 100644 tools/smarty/Smarty.class.php create mode 100644 tools/smarty/debug.tpl create mode 100644 tools/smarty/plugins/block.php.php create mode 100644 tools/smarty/plugins/block.textformat.php create mode 100644 tools/smarty/plugins/function.counter.php create mode 100644 tools/smarty/plugins/function.cycle.php create mode 100644 tools/smarty/plugins/function.fetch.php create mode 100644 tools/smarty/plugins/function.html_checkboxes.php create mode 100644 tools/smarty/plugins/function.html_image.php create mode 100644 tools/smarty/plugins/function.html_options.php create mode 100644 tools/smarty/plugins/function.html_radios.php create mode 100644 tools/smarty/plugins/function.html_select_date.php create mode 100644 tools/smarty/plugins/function.html_select_time.php create mode 100644 tools/smarty/plugins/function.html_table.php create mode 100644 tools/smarty/plugins/function.mailto.php create mode 100644 tools/smarty/plugins/function.math.php create mode 100644 tools/smarty/plugins/modifier.capitalize.php create mode 100644 tools/smarty/plugins/modifier.date_format.php create mode 100644 tools/smarty/plugins/modifier.debug_print_var.php create mode 100644 tools/smarty/plugins/modifier.escape.php create mode 100644 tools/smarty/plugins/modifier.regex_replace.php create mode 100644 tools/smarty/plugins/modifier.replace.php create mode 100644 tools/smarty/plugins/modifier.spacify.php create mode 100644 tools/smarty/plugins/modifier.truncate.php create mode 100644 tools/smarty/plugins/modifiercompiler.cat.php create mode 100644 tools/smarty/plugins/modifiercompiler.count_characters.php create mode 100644 tools/smarty/plugins/modifiercompiler.count_paragraphs.php create mode 100644 tools/smarty/plugins/modifiercompiler.count_sentences.php create mode 100644 tools/smarty/plugins/modifiercompiler.count_words.php create mode 100644 tools/smarty/plugins/modifiercompiler.default.php create mode 100644 tools/smarty/plugins/modifiercompiler.indent.php create mode 100644 tools/smarty/plugins/modifiercompiler.lower.php create mode 100644 tools/smarty/plugins/modifiercompiler.noprint.php create mode 100644 tools/smarty/plugins/modifiercompiler.string_format.php create mode 100644 tools/smarty/plugins/modifiercompiler.strip.php create mode 100644 tools/smarty/plugins/modifiercompiler.strip_tags.php create mode 100644 tools/smarty/plugins/modifiercompiler.upper.php create mode 100644 tools/smarty/plugins/modifiercompiler.wordwrap.php create mode 100644 tools/smarty/plugins/outputfilter.trimwhitespace.php create mode 100644 tools/smarty/plugins/shared.escape_special_chars.php create mode 100644 tools/smarty/plugins/shared.make_timestamp.php create mode 100644 tools/smarty/plugins/shared.mb_str_replace.php create mode 100644 tools/smarty/plugins/variablefilter.htmlspecialchars.php create mode 100644 tools/smarty/sysplugins/smarty_internal_cacheresource_file.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_append.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_assign.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_block.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_break.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_call.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_capture.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_config_load.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_continue.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_debug.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_eval.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_extends.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_for.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_foreach.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_function.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_if.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_include.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_include_php.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_insert.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_ldelim.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_nocache.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_block_plugin.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_function_plugin.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_modifier.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_object_block_function.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_object_function.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_print_expression.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_registered_block.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_registered_function.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_private_special_variable.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_rdelim.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_section.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compile_while.php create mode 100644 tools/smarty/sysplugins/smarty_internal_compilebase.php create mode 100644 tools/smarty/sysplugins/smarty_internal_config.php create mode 100644 tools/smarty/sysplugins/smarty_internal_config_file_compiler.php create mode 100644 tools/smarty/sysplugins/smarty_internal_configfilelexer.php create mode 100644 tools/smarty/sysplugins/smarty_internal_configfileparser.php create mode 100644 tools/smarty/sysplugins/smarty_internal_data.php create mode 100644 tools/smarty/sysplugins/smarty_internal_debug.php create mode 100644 tools/smarty/sysplugins/smarty_internal_filter.php create mode 100644 tools/smarty/sysplugins/smarty_internal_filter_handler.php create mode 100644 tools/smarty/sysplugins/smarty_internal_function_call_handler.php create mode 100644 tools/smarty/sysplugins/smarty_internal_get_include_path.php create mode 100644 tools/smarty/sysplugins/smarty_internal_nocache_insert.php create mode 100644 tools/smarty/sysplugins/smarty_internal_parsetree.php create mode 100644 tools/smarty/sysplugins/smarty_internal_register.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_eval.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_extends.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_file.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_php.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_registered.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_stream.php create mode 100644 tools/smarty/sysplugins/smarty_internal_resource_string.php create mode 100644 tools/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php create mode 100644 tools/smarty/sysplugins/smarty_internal_template.php create mode 100644 tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php create mode 100644 tools/smarty/sysplugins/smarty_internal_templatelexer.php create mode 100644 tools/smarty/sysplugins/smarty_internal_templateparser.php create mode 100644 tools/smarty/sysplugins/smarty_internal_utility.php create mode 100644 tools/smarty/sysplugins/smarty_internal_wrapper.php create mode 100644 tools/smarty/sysplugins/smarty_internal_write_file.php create mode 100644 tools/smarty/sysplugins/smarty_security.php create mode 100644 tools/smarty_v2/Config_File.class.php create mode 100644 tools/smarty_v2/Smarty.class.php create mode 100644 tools/smarty_v2/Smarty_Compiler.class.php create mode 100644 tools/smarty_v2/cache/index.php create mode 100644 tools/smarty_v2/compile/index.php create mode 100644 tools/smarty_v2/configs/index.php create mode 100644 tools/smarty_v2/index.php create mode 100644 tools/smarty_v2/internals/core.assemble_plugin_filepath.php create mode 100644 tools/smarty_v2/internals/core.assign_smarty_interface.php create mode 100644 tools/smarty_v2/internals/core.create_dir_structure.php create mode 100644 tools/smarty_v2/internals/core.display_debug_console.php create mode 100644 tools/smarty_v2/internals/core.get_include_path.php create mode 100644 tools/smarty_v2/internals/core.get_microtime.php create mode 100644 tools/smarty_v2/internals/core.get_php_resource.php create mode 100644 tools/smarty_v2/internals/core.is_secure.php create mode 100644 tools/smarty_v2/internals/core.is_trusted.php create mode 100644 tools/smarty_v2/internals/core.load_plugins.php create mode 100644 tools/smarty_v2/internals/core.load_resource_plugin.php create mode 100644 tools/smarty_v2/internals/core.process_cached_inserts.php create mode 100644 tools/smarty_v2/internals/core.process_compiled_include.php create mode 100644 tools/smarty_v2/internals/core.read_cache_file.php create mode 100644 tools/smarty_v2/internals/core.rm_auto.php create mode 100644 tools/smarty_v2/internals/core.rmdir.php create mode 100644 tools/smarty_v2/internals/core.run_insert_handler.php create mode 100644 tools/smarty_v2/internals/core.smarty_include_php.php create mode 100644 tools/smarty_v2/internals/core.write_cache_file.php create mode 100644 tools/smarty_v2/internals/core.write_compiled_include.php create mode 100644 tools/smarty_v2/internals/core.write_compiled_resource.php create mode 100644 tools/smarty_v2/internals/core.write_file.php create mode 100644 tools/smarty_v2/internals/index.php create mode 100644 tools/smarty_v2/plugins/block.textformat.php create mode 100644 tools/smarty_v2/plugins/compiler.assign.php create mode 100644 tools/smarty_v2/plugins/function.assign_debug_info.php create mode 100644 tools/smarty_v2/plugins/function.config_load.php create mode 100644 tools/smarty_v2/plugins/function.counter.php create mode 100644 tools/smarty_v2/plugins/function.cycle.php create mode 100644 tools/smarty_v2/plugins/function.debug.php create mode 100644 tools/smarty_v2/plugins/function.eval.php create mode 100644 tools/smarty_v2/plugins/function.fetch.php create mode 100644 tools/smarty_v2/plugins/function.html_checkboxes.php create mode 100644 tools/smarty_v2/plugins/function.html_image.php create mode 100644 tools/smarty_v2/plugins/function.html_options.php create mode 100644 tools/smarty_v2/plugins/function.html_radios.php create mode 100644 tools/smarty_v2/plugins/function.html_select_date.php create mode 100644 tools/smarty_v2/plugins/function.html_select_time.php create mode 100644 tools/smarty_v2/plugins/function.html_table.php create mode 100644 tools/smarty_v2/plugins/function.mailto.php create mode 100644 tools/smarty_v2/plugins/function.math.php create mode 100644 tools/smarty_v2/plugins/function.popup.php create mode 100644 tools/smarty_v2/plugins/function.popup_init.php create mode 100644 tools/smarty_v2/plugins/index.php create mode 100644 tools/smarty_v2/plugins/modifier.capitalize.php create mode 100644 tools/smarty_v2/plugins/modifier.cat.php create mode 100644 tools/smarty_v2/plugins/modifier.count_characters.php create mode 100644 tools/smarty_v2/plugins/modifier.count_paragraphs.php create mode 100644 tools/smarty_v2/plugins/modifier.count_sentences.php create mode 100644 tools/smarty_v2/plugins/modifier.count_words.php create mode 100644 tools/smarty_v2/plugins/modifier.date_format.php create mode 100644 tools/smarty_v2/plugins/modifier.debug_print_var.php create mode 100644 tools/smarty_v2/plugins/modifier.default.php create mode 100644 tools/smarty_v2/plugins/modifier.escape.php create mode 100644 tools/smarty_v2/plugins/modifier.indent.php create mode 100644 tools/smarty_v2/plugins/modifier.lower.php create mode 100644 tools/smarty_v2/plugins/modifier.nl2br.php create mode 100644 tools/smarty_v2/plugins/modifier.regex_replace.php create mode 100644 tools/smarty_v2/plugins/modifier.replace.php create mode 100644 tools/smarty_v2/plugins/modifier.spacify.php create mode 100644 tools/smarty_v2/plugins/modifier.string_format.php create mode 100644 tools/smarty_v2/plugins/modifier.strip.php create mode 100644 tools/smarty_v2/plugins/modifier.strip_tags.php create mode 100644 tools/smarty_v2/plugins/modifier.truncate.php create mode 100644 tools/smarty_v2/plugins/modifier.upper.php create mode 100644 tools/smarty_v2/plugins/modifier.wordwrap.php create mode 100644 tools/smarty_v2/plugins/outputfilter.trimwhitespace.php create mode 100644 tools/smarty_v2/plugins/shared.escape_special_chars.php create mode 100644 tools/smarty_v2/plugins/shared.make_timestamp.php create mode 100644 tools/swift/EasySwift.php create mode 100644 tools/swift/Swift.php create mode 100644 tools/swift/Swift/Address.php create mode 100644 tools/swift/Swift/AddressContainer.php create mode 100644 tools/swift/Swift/Authenticator.php create mode 100644 tools/swift/Swift/Authenticator/@PopB4Smtp.php create mode 100644 tools/swift/Swift/Authenticator/CRAMMD5.php create mode 100644 tools/swift/Swift/Authenticator/LOGIN.php create mode 100644 tools/swift/Swift/Authenticator/PLAIN.php create mode 100644 tools/swift/Swift/Authenticator/PopB4Smtp/Pop3Connection.php create mode 100644 tools/swift/Swift/Authenticator/PopB4Smtp/index.php create mode 100644 tools/swift/Swift/Authenticator/index.php create mode 100644 tools/swift/Swift/BadResponseException.php create mode 100644 tools/swift/Swift/BatchMailer.php create mode 100644 tools/swift/Swift/Cache.php create mode 100644 tools/swift/Swift/Cache/Disk.php create mode 100644 tools/swift/Swift/Cache/JointOutputStream.php create mode 100644 tools/swift/Swift/Cache/Memory.php create mode 100644 tools/swift/Swift/Cache/OutputStream.php create mode 100644 tools/swift/Swift/Cache/index.php create mode 100644 tools/swift/Swift/CacheFactory.php create mode 100644 tools/swift/Swift/ClassLoader.php create mode 100644 tools/swift/Swift/Connection.php create mode 100644 tools/swift/Swift/Connection/Multi.php create mode 100644 tools/swift/Swift/Connection/NativeMail.php create mode 100644 tools/swift/Swift/Connection/Rotator.php create mode 100644 tools/swift/Swift/Connection/SMTP.php create mode 100644 tools/swift/Swift/Connection/Sendmail.php create mode 100644 tools/swift/Swift/Connection/index.php create mode 100644 tools/swift/Swift/ConnectionBase.php create mode 100644 tools/swift/Swift/ConnectionException.php create mode 100644 tools/swift/Swift/Events.php create mode 100644 tools/swift/Swift/Events/BeforeCommandListener.php create mode 100644 tools/swift/Swift/Events/BeforeSendListener.php create mode 100644 tools/swift/Swift/Events/CommandEvent.php create mode 100644 tools/swift/Swift/Events/CommandListener.php create mode 100644 tools/swift/Swift/Events/ConnectEvent.php create mode 100644 tools/swift/Swift/Events/ConnectListener.php create mode 100644 tools/swift/Swift/Events/DisconnectEvent.php create mode 100644 tools/swift/Swift/Events/DisconnectListener.php create mode 100644 tools/swift/Swift/Events/Listener.php create mode 100644 tools/swift/Swift/Events/ListenerMapper.php create mode 100644 tools/swift/Swift/Events/ResponseEvent.php create mode 100644 tools/swift/Swift/Events/ResponseListener.php create mode 100644 tools/swift/Swift/Events/SendEvent.php create mode 100644 tools/swift/Swift/Events/SendListener.php create mode 100644 tools/swift/Swift/Events/index.php create mode 100644 tools/swift/Swift/Exception.php create mode 100644 tools/swift/Swift/File.php create mode 100644 tools/swift/Swift/FileException.php create mode 100644 tools/swift/Swift/Iterator.php create mode 100644 tools/swift/Swift/Iterator/Array.php create mode 100644 tools/swift/Swift/Iterator/MySQLResult.php create mode 100644 tools/swift/Swift/Iterator/index.php create mode 100644 tools/swift/Swift/Log.php create mode 100644 tools/swift/Swift/Log/DefaultLog.php create mode 100644 tools/swift/Swift/Log/index.php create mode 100644 tools/swift/Swift/LogContainer.php create mode 100644 tools/swift/Swift/Message.php create mode 100644 tools/swift/Swift/Message/Attachment.php create mode 100644 tools/swift/Swift/Message/EmbeddedFile.php create mode 100644 tools/swift/Swift/Message/Encoder.php create mode 100644 tools/swift/Swift/Message/Headers.php create mode 100644 tools/swift/Swift/Message/Image.php create mode 100644 tools/swift/Swift/Message/Mime.php create mode 100644 tools/swift/Swift/Message/MimeException.php create mode 100644 tools/swift/Swift/Message/Part.php create mode 100644 tools/swift/Swift/Message/index.php create mode 100644 tools/swift/Swift/Plugin/AntiFlood.php create mode 100644 tools/swift/Swift/Plugin/BandwidthMonitor.php create mode 100644 tools/swift/Swift/Plugin/ConnectionRotator.php create mode 100644 tools/swift/Swift/Plugin/Decorator.php create mode 100644 tools/swift/Swift/Plugin/Decorator/Replacements.php create mode 100644 tools/swift/Swift/Plugin/Decorator/index.php create mode 100644 tools/swift/Swift/Plugin/EasySwiftResponseTracker.php create mode 100644 tools/swift/Swift/Plugin/FileEmbedder.php create mode 100644 tools/swift/Swift/Plugin/MailSend.php create mode 100644 tools/swift/Swift/Plugin/Throttler.php create mode 100644 tools/swift/Swift/Plugin/VerboseSending.php create mode 100644 tools/swift/Swift/Plugin/VerboseSending/AbstractView.php create mode 100644 tools/swift/Swift/Plugin/VerboseSending/DefaultView.php create mode 100644 tools/swift/Swift/Plugin/VerboseSending/index.php create mode 100644 tools/swift/Swift/Plugin/index.php create mode 100644 tools/swift/Swift/RecipientList.php create mode 100644 tools/swift/Swift/index.php create mode 100644 tools/swift/index.php create mode 100644 tools/taasc/AddressStandardizationSolution.php create mode 100644 tools/tar/Archive_Tar.php create mode 100644 translations/de/admin.php create mode 100644 translations/de/errors.php create mode 100644 translations/de/fields.php create mode 100644 translations/de/index.php create mode 100644 translations/de/pdf.php create mode 100644 translations/en/admin.php create mode 100644 translations/en/errors.php create mode 100644 translations/en/fields.php create mode 100644 translations/en/index.php create mode 100644 translations/en/pdf.php create mode 100644 translations/es/admin.php create mode 100644 translations/es/errors.php create mode 100644 translations/es/fields.php create mode 100644 translations/es/index.php create mode 100644 translations/es/pdf.php create mode 100644 translations/export/index.php create mode 100644 translations/fr/admin.php create mode 100644 translations/fr/errors.php create mode 100644 translations/fr/fields.php create mode 100644 translations/fr/index.php create mode 100644 translations/fr/pdf.php create mode 100644 translations/index.php create mode 100644 translations/it/admin.php create mode 100644 translations/it/errors.php create mode 100644 translations/it/fields.php create mode 100644 translations/it/index.php create mode 100644 translations/it/pdf.php create mode 100644 upload/index.php create mode 100644 webservice/dispatcher.php create mode 100644 webservice/index.php diff --git a/404.php b/404.php new file mode 100644 index 000000000..2048d73a0 --- /dev/null +++ b/404.php @@ -0,0 +1,42 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/* Send the proper status code in HTTP headers */ +header('HTTP/1.1 404 Not Found'); +header('Status: 404 Not Found'); + +if (in_array(substr($_SERVER['REQUEST_URI'], -3), array('png', 'jpg', 'gif'))) +{ + require_once(dirname(__FILE__).'/config/settings.inc.php'); + header('Location: '.__PS_BASE_URI__.'img/404.gif'); + exit; +} +elseif (in_array(substr($_SERVER['REQUEST_URI'], -3), array('.js', 'css'))) + die(''); + +require_once(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('PageNotFoundController')->run(); diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 000000000..f17cc860f --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,2406 @@ +2007-2011 PrestaShop + +NOTICE OF LICENSE + +This source file is subject to the Open Software License (OSL 3.0) +that is bundled with this package in the file LICENSE.txt. +It is also available through the world-wide-web at this URL: +http://opensource.org/licenses/osl-3.0.php +If you did not receive a copy of the license and are unable to +obtain it through the world-wide-web, please send an email +to license@prestashop.com so we can send you a copy immediately. + +DISCLAIMER + +Do not edit or add to this file if you wish to upgrade PrestaShop to newer +versions in the future. If you wish to customize PrestaShop for your +needs please refer to http://www.prestashop.com for more information. + +@author PrestaShop SA +@copyright 2007-2011 PrestaShop SA +@license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +International Registred Trademark & Property of PrestaShop SA + +Release Notes for PrestaShop 1.4 +-------------------------------- +#################################### +# v1.4.0.17 - 5552 (2011-03-16) # +#################################### + + Improved/changed features: + + [*] BO : #8322 Updating natives modules author to PrestaShop + [*] BO : Resolves spaces split in meta keywords + [*] BO : Truncating displayed author name + [*] BO : adding one more empty check cond + + [*] MO : Warnings for preactivations in module section + + Fixed bugs: + + [-] FO : fixed bug #8317 - Carrier selection javascript bug + [-] FO : fixed bug #8318 - view credit slips error + [-] FO : fixed bug #8326 - Errors in mail templates + [-] FO : fixed bug with CSS missing calls + + [-] BO : fixed bug #8321 - Incorrect translations in mails/fr/lang.php + [-] BO : fixed bug #8330 - Always have warning for “URL rewriting + [-] BO : fixed bug #8330 - Always have warning for “URL rewriting + [-] BO : fixed bug #8336 - Missing image + [-] BO : fixed bug #8338 - Product chooser for packs is buggy when product name ends with whitespace + [-] BO : fixed bug #8342 - missing opening table row tag + [-] BO : fixed bug #8344 - span not closed in AdminProducts + + [-] MO : Fix on Twenga translations + [-] MO : Fix on css AdminHome Tab + [-] MO : fixed bug #8323 - Customer Mail Alerts + [-] MO : fixed little bug on Authorize.net module + + [-] WS : Minor bug fixed + [-] WS : Small fix + + [-] TR : english translation error message + + +#################################### +# v1.4.0.16 - 5477 (2011-03-14) # +#################################### + + Added Features: + + [+] BO : Adding module author display and filter + [+] BO : Adding module author searching + [+] BO : Optimization tips integration + [+] BO : Setting natives modules author to Prestashop + + [+] Core : Hooks for category add/upd/del are now including the object information in $params + + Improved/changed features: + + [*] INSTALLER : Preactivation can now be done in two parts + [*] INSTALLER : Preactivation can now manage several partners + [*] INSTALLER : Preactivation help context is now available + [*] INSTALLER : Update preinstallation module system + + [*] FO : SpecificPrices score is now influenced by the date (Thanks Nik Chankov) + [*] FO : improvement of liveEdit - now you can navigate on your font-office staying on LiveEdit mode + + [*] BO : Admin home page is now in tabs/AdminHome + [*] BO : AdminTaxRules help text + [*] BO : Help Access message + [*] BO : Home display improved + [*] BO : Paypal Advise Block + [*] BO : adding help on Theme fieldset + [*] BO : module search autocomplete improvement Now when you select the desired module search form is valid automaticaly + [*] BO : optimization tips can now be activated again + + [*] Core : class AdminGeolocalization is now AdminGeolocation + + [*] MO : Layered navigation module + [*] MO : Layered navigation module + [*] MO : Layered navigation module - missing French translations + [*] MO : Layered navigation module improvements (Cache table is updated automatically if possible, + [*] MO : Layered navigation module was re-done entirely, few features missing but already working well + + [*] WS : 2 new entities managed: StockMvt and StockMvtReason + [*] WS : Add description for a key + [*] WS : Enhance WS Behavior + [*] WS : Move Webservice in classes + [*] WS : Refactoring for release + + [*] TR : add translation + [*] TR : english traduction + [*] TR : english traduction + [*] TR : improved english translations + [*] TR : improved english translations + [*] TR : improved english translations + + Fixed bugs: + + [-] Project : many fixes for 1.3 to 1.4 upgrade + + [-] INSTALLER : ISO Code UK was changed to GB + [-] Installer : Bug Fixed #8198 Upgrade from 1.1.0.5 + [-] Installer : Fixed #8143 - url_rewrite corrected in ps_meta_lang + [-] Installer : fixed bug #8128 - guest-tracking.php doesn’t have friendly URL + [-] Installer : jqminmax removed - incompatibility between jquery + jqminmax + chrome + + [-] FO : Bug Fixed #8154 - EU VAT module & Shipping taxes + [-] FO : Bug Fixed #8200 - Down button on the order page is not disabled for customized product with minimum quantity + [-] FO : Fixed #7859 - pre-order product displayed correctly when stock < 0 + [-] FO : Fixed bug - live edit js added when live edit mode is off + [-] FO : No taxes when using states & county + [-] FO : Price Comparison HTML entities + [-] FO : fixed a quantity bug in blockwishlist when a user add a gift to his cart + [-] FO : fixed bug #7816 - Error reporting on “one page checkout” + [-] FO : fixed bug #8020 - Folder /session permission problem + [-] FO : fixed bug #8052 - unexpected HOME link on the CGV window popup + [-] FO : fixed bug #8053 - Cart errors cause parsererror + [-] FO : fixed bug #8072 - Gift-wrapping Price is not added in cart_summary + [-] FO : fixed bug #8075 - no carriers available on opc page + [-] FO : fixed bug #8082 - Change status of default language + [-] FO : fixed bug #8119 - Another grammar issue: “Please to sign in in order to see payment methods” + [-] FO : fixed bug #8119 - Another grammar issue: “Please to sign in in order to see payment methods” part 2 + [-] FO : fixed bug #8164 - Extra ‘-’ characters in the subcategory names when using Chrome + [-] FO : fixed bug #8169 - Wronng order assignment in header + [-] FO : fixed bug #8194 - Undefined variable tax_cost line 291 + [-] FO : fixed bug #8237 - Undefined variable tax_cost line Filezilla breaks HTTPS + [-] FO : fixed bug #8244 - display not correct if supplier or manufacturer not exist + [-] FO : fixed bug #8245 - redirect inexistant category & product + [-] FO : fixed bug #8250 - User addresses not displayed with “Compress inline JavaScript” + [-] FO : fixed bug #8263 - Invoice footer align + [-] FO : fixed bug #8280 - “Your shopping cart contains # products: message not updated + [-] FO : fixed bug #8290 - setMedia called twice, JS files doubled + [-] FO : fixed bug compared to the map stores.php with CCC activated + [-] FO : fixed bug upload.gif not show when save customized products + [-] FO : fixed bug when you close the mode live edit + [-] FO : fixed bug with “Compress inline JavaScript” + [-] FO : fixed but which display the number of product in stock whatever the number of last quantities chosen in BO + [-] FO : fixed but which display the number of product in stock whatever the number of last quantities chosen in BO, fixed bug in the last commit + [-] FO : fixed notice in Tools::addJs and addCss + [-] FO : getLanguages will now call loadLanguages if self:: is not set + [-] FO : improvement liveEdit + [-] FO :fixed bug #7875 - 1.4 legend icon in optionlist of admintab + [-] FO :fixed bug #7962 - same category and EAN13: bad link + [-] FO :fixed bug #8050 - Don´t order attribute groups by name + [-] FO :fixed bug #8055 - Stats shop search not work + [-] FO :fixed bug #8091 - Typo in french message in fianetfraud module + + [-] BO : Bug Fixed #8158 - Htaccess generation => category block cache cleaned + [-] BO : Bug fixed #7987 : Labels size and weight were changed to be less ambiguous + [-] BO : HelpAccess popup size + [-] BO : Helpaccess cluetip + [-] BO : Little fix for by pass gd library bug + [-] BO : Try to upload a file too large as a product picture = no error message + [-] BO : added a update of the date when a customer is enabled or disabled + [-] BO : fixed a translation bug in customer groups. Changed "fehler" to "Default" + [-] BO : fixed bug #7800 - Delete all combinations + [-] BO : fixed bug #7961 - Chrome and password pages + [-] BO : fixed bug #8010 - svn5232 states not showing in admin-customers-addresses + [-] BO : fixed bug #8087 - BO let you set disabled language as default + [-] BO : fixed bug #8127 - bug on guest tracking + [-] BO : fixed bug #8177 - Not translatable + [-] BO : fixed bug #8258 - Broken link in BO + [-] BO : fixed bug #8288 - Counties tab is missing icon + [-] BO : fixed bug - if vatnumber module don't exist => don't make ajax in AdminAddresses + [-] BO : fixed bug save and preview bad redirect + [-] BO : no more strip_tags on htaccess specific tags + + [-] Classes : fixed bug - bad duplicate check when Tools::addJs() is call with array params + [-] Classes : fixed bug on config xml generation for modules + + [-] MO : Editorial - Text is cutoff + [-] MO : Module UPS, fix on xml file + [-] MO : Moneybookers, plaform variable has been changed + [-] MO : fianetfraud statuses ids fixed + [-] MO : fixed bug #8090 - soCollisimo under Firefox + [-] MO : fixed bug #8107 - Alignment issues productscategory and cross selling + [-] MO : fixed bug #8115 -Grammar error in PayPal payment description + [-] MO : fixed bug #8146 - Block bestsellers + [-] MO : fixed bug #8166 - Admin tab of module EnvoiMoinsCher not translated + [-] MO : fixed css path - crosselling + + [-] PDF : Bug Fixed #7295 - Ecotax + [-] PDF : Undefined index PS_SHOP_DETAILS + + [-] TR : BO Home english + [-] TR : Bug Fixed #8140 - Bad grammar in guest_to_customer mail template + [-] TR : fix minor english translation + [-] TR : fix minor english translation + [-] TR : fix minor english translation + [-] TR : presta-fraud english traduction + + [-] LO : Bug Fixed #7972 - Australian price format + [-] LO : Missing english language + +#################################### +# v1.4.0.15 - 5285 (2011-03-02) # +#################################### + + Added Features: + + [+] Project : added live edit module position + [+] Project : added live edit module position part 2 + + [+] MO : Module Ekomi + + Improved/changed features: + + [*] INSTALLER : Preactivation Module is now generic + [*] INSTALLER : Preactivation Paypal (new theme and field check) + [*] installer : timezone bugfix + + [*] FO : Log.php renamed to Logger.php, modified addLog() prototype to add allowDuplicate arguments + [*] FO : better integration of vat + [*] FO : many improvements on One Page Checkout + + [*] BO : Counties + [*] BO : Ecotax options is now in the tax tab + ecotax without tax + [*] BO : eco-tax + [*] BO : now you can't translate with AdminTranslation if php suhosin configuration does not allow it + [*] BO : you can now define your own default page instead of "index.php" + + [*] Core : Manufacturer and supplier controllers are Object now + + [*] MO : Added an "Enabled filters" zone in the layered navigation + [*] MO : Added real time criterions refresh for the layered navigation block (still in progress) + [*] MO : Added some modifications for the layered navigation block (still in progress) + [*] MO : Fixed small bugs in the layered navigation + [*] MO : Instead of not showing them, empty values for layered navigation are now displayed and disabled (like on Target.com) + [*] MO : Layered navigation module updated + [*] MO : Layered navigation module updated + [*] MO : Layered navigation module updated + [*] MO : You can now filter by attribute and color (+ color picker!) in the layered navigation + [*] MO : You can now filter by feature in the layered navigation + [*] Mo : Hipay - Little fixes + + [*] WS : Added associated product of a category + [*] WS : Category entity now contain children's ids + + Fixed bugs: + + [-] INSTALLER : Bug fixed #7643 - Missing default picture + [-] INSTALLER : Fix on Preactivation + [-] Installer : Fixed sql query malformed + [-] Installer : auto-timezone for installer with special rules for Usa and Russia + [-] Installer : fixed bug #7950 - typo error + [-] Installer : fixed url-rewrite for cms default data + [-] Installer : removed auto select currency + + [-] FO : Bug Fixed #7939 - Discount percentage displayed is incorrect + [-] FO : Bug Fixed #7939 - Group discount and product reduction + [-] FO : Bug Fixed #7958 - Cart Error with more 2 than decimal (eg. 0.001) + [-] FO : Bug Fixed Combination + % discount + tax excluded + [-] FO : Ecotax is not impacted by the discount + [-] FO : Fixed #7712 - now free shipping is displayed on the cart summary and can be deleted + [-] FO : Fixed #7897 is now self::$smarty + [-] FO : Fixed #7901 BestSalesController uses now process instead of preProcess() + [-] FO : Fixed #7989 - when ssl is not activated, getlink will not return ssl domain name + [-] FO : Taxes by country fixed! + [-] FO : fixed bug #7933 - Disable shop for maintenance not work + [-] FO : fixed bug #7935 - same category “-” which drags + [-] FO : fixed bug #7944 //Error on Checkout orders step 2 + [-] FO : fixed bug #7946 //VAT include file + [-] FO : fixed bug #7947 //States not showing BO edit address + [-] FO : fixed bug #7984 - Product compare + + [-] BO : AdminTaxRulesGroup Apply Country Tax Only (not product tax) + [-] BO : Fixed #7722 - when you edit a product image, it's now displayed edit and not add + [-] BO : Fixed #7919 - htaccess generation will ignore meta_rewrite from db if they are not valid + [-] BO : Fixed #7969 - className + [-] BO : Fixed #7970 - now pdf footer allow registration information multiline (set in Preferences contact) + [-] BO : Fixed #7985 added warning message when change default currency + [-] BO : Fixed bug #7655 + [-] BO : Fixed email translation + [-] BO : Fixed warning about missing or unvalid module file translation + [-] BO : Tax label become Tax Rule on the product page + [-] BO : Thanks to aFolletete the AdminTaxRules form is beautifull! + [-] BO : bug fixed #7771 + [-] BO : clear error message for AdminTranslations when suhosin + [-] BO : ecotax id not found if ecotax is desactivated + [-] BO : fixed bug #6448 //No manufacturers in drop down list with creating new product + [-] BO : fixed bug #7949 //BO edit product JS errors + [-] BO : fixed bug #7981 - Edit Product page always displays ‘condition’ as ‘New’ + [-] BO : fixed bug #8023 - Backoffice store locator, state selection issue + [-] BO : some sentences are changed. + + [-] Classes : Incorrect test in dieObject + [-] Classes : fixed bug #7930 - Add a discount voucher : Fatal error / White page + [-] Classes : fixed bug #7994 - Unusefull object instanciation in AdminTab::postprocess() + [-] Classes : fixed bug #7999 - deleted language and cookie don’t go along very well + [-] Classes : fixed bug #7999 part 2 ;) + + [-] Core : bug fixed on FrontController with the geolocation + [-] Core : fixed bug on FrontController with Geoloaction + + [-] MO : allow displaying warning message. + [-] MO : check if a tsID value is set before display the seal of approval. + [-] MO : delete a "console" object in javascript. + [-] MO : fia-net must not be called when the order is free + [-] MO : fixed bug #7934 - tax disable but cart display tax included + [-] MO : fixed bug #7976 - Module USPS + [-] MO : fully compatible 1.3 + [-] MO : use Tools::jsonEncode() rather than json_encode (same for json_decode) + + [-] TR : Add translation according to #7655 + [-] TR : change the method Mail::l(), now don't use htmlentities for output translation (don't working for email subject) + [-] TR : change the subject parameter for each Mail::send() method. + [-] TR : little translations corrections. + [-] TR : use google translate button for Errors, PDF and fields translations. + + +#################################### +# v1.4.0.14 - 5144 (2011-02-23) # +#################################### + + Added Features: + + [+] BO : Add Tools::jsonDecode() method for php5.0.0 version. + [+] BO : A nex error class for inline error + [+] BO : fixed bug delete images on import + + [+] MO : fixed bug shopImport clean database fields before run import + [+] MO : fixed bug shopImport update categories only when all are import + [+] MO : new module Authorize AIM + + Improved/changed features: + + [*] FO : now smarty, cart, link and cookie are static and protected properties in FrontController. + + [*] BO : improve specific price system + [*] BO : you can now define the center of the map + + [*] Classes : adding constant on Cart class for getOrderTotal method + [*] Classes : all private attributes and methods are now protected + [*] Classes : getPriceCalculation return the price without any dependances to others objects + [*] Classes : improvement of findTranslations method on Module class + + [*] Core : code cleaning + + [*] MO : improve blockstore module + + Fixed bugs: + + [-] PROJECT : thickbox.tpl has been removed (not use anymore) + + [-] Installer : change the english title of Leather folio product in english ! + [-] Installer : Fixed #6914 - now _MYSQL_ENGINE is defined in doUpgrade if not exists + [-] Installer : fixed alter table address dni can be null + [-] Installer : fixed bug #7835 + [-] Installer : fixed bug #7848 + [-] Installer : fix update 1.4.0.10 (dni field can be null) + [-] INSTALLER : Preactivation Paypal + + [-] FO : Combination + EcoTax + [-] FO : Fixed #7759 - cleaning code + [-] FO : Fixed #7761 removed not used variable + [-] FO : Fixed #7819 - typo (SLL is now SSL) + [-] FO : fixed bug #7780 - “There is undefined error” in one page checkout + [-] FO : fixed bug #7801 - Merchandie return + [-] FO : fixed bug #7834 + [-] FO : fixed bug on compatibilty of theme with smarty v2 + [-] FO : fixed bug on error feedback on One page checkout + [-] FO : fixed class not exists + [-] FO : fixed log message when cart is not set + [-] FO : now id_currency is correctly used in PaymentModule->ValidateOrder() + [-] FO : when a tpl file is missing for a module, error message now display module name + + [-] BO : Bug fixed #7717 - Quantity field error won't display anymore when editing product (movement stock) + [-] BO : Bug fixed #7723 - Fixing clean function of product metakeywords + [-] BO : Bug fixed #7773 - Delete customer group relation when deleting customer + [-] BO : Bug fixed reduction amount is not updated in order details + [-] BO : Fixed #7846 - correct image for mail and invoice logo + [-] BO : Fixed AdminThemes checks feature in change appearance + [-] BO : Fixed all the typos in the installer tool and made the texts easier to understand + [-] BO : Fixed all the typos in the tab names + [-] BO : fixed bug #5908 - PS rewrite images if edit category! and delete previous + [-] BO : fixed bug #7238 - Automatic filter on list with select type now returns error + [-] BO : fixed bug #7750 - typo: cache_defaut_attribute AdminProducts.php + [-] BO : fixed bug #7804 //Admin Module bad display in IE7 + [-] BO : fixed bug #7809 - Currency symbol not shown in admin/products + [-] BO : Unit price on cart & orders + + [-] Classes : fixed bug #7790 - Small bug in config.xml + [-] Classes : fixed bug #7797 - Cannot update cms pages + [-] Classes : fixed bug #7831 #7830 - two method are in PDF class are on public visibility + [-] Classes : fixed bug #7864 - PaymentModule::getCurrency uses $cookie + + [-] Core : fixed bug #7791 - unnecessary is_writable() check + [-] Core : set_magic_quotes_runtime is deprecated + [-] Core : set_magic_quotes_runtime is deprecated + + [-] MO : Add limited countries for Twenga module (FR, DE, UK, GB) + [-] MO : Check if Json functions are enabled, otherwise a warning occured. + [-] MO : fixed #7815 translation bug when quotes + [-] MO : fixed bug #7849 - Paypal Module - IPN Notifications + [-] MO : fixed bug check language in import + [-] MO : fixed bug on Blockstore + [-] MO : import oscommerce product status + [-] MO : shopImport : now when import product only they are added to home category by default + [-] MO : USPS module is now using RateV4 API + + [-] WS : Added check for POST/PUT multiple + + [-] TR : Bug fixed #7691 - Little translation fix + [-] TR : Change the PS_TRANS_PATTERN for allow empty string (and don't get a wrong sentence) + [-] TR : Fixed french translation + + Deprecated methods: + + [~] Deprecated : added comment + [~] Deprecated : AddressCore::getManufacturerIdByAddress([...]) + [~] Deprecated : CartCore::getNonOrderedCarts([...]) + [~] Deprecated : CartCore::hasProductInCategory([...]) + [~] Deprecated : CMSCategory::CMSCategoryExists() + [~] Deprecated : CMSCategory::getRootCMSCategory() + [~] Deprecated : CMSCategory::searchByNameAndParentCMSCategoryId() + [~] Deprecated : CMSCore::isInBlock([...]) + [~] Deprecated : CMSCore::updateCmsToBlock([...]) + [~] Deprecated : ConfigurationCore::getMultipleInt([...]) + [~] Deprecated : CountryCore::getNeedIdentifcationNumber([...]) + [~] Deprecated : CustomerCore::cantChangeemail([...]) + [~] Deprecated : CustomerCore::getLastCart([...]) + [~] Deprecated : CustomerCore::getNeedDNI([...]) + [~] Deprecated : CustomerCore::getNewsletteremails([...]) + [~] Deprecated : CustomerCore::getTodaysRegistration([...]) + [~] Deprecated : CustomerCore::isMemberOfGroup([...]) + [~] Deprecated : DiscountCore::isParentCategoryProductDiscount([...]) + [~] Deprecated : EmployeeCore::getEmployees([...]) + [~] Deprecated : LinkCore::getCustomLink([...]) + [~] Deprecated : LinkCore::getLanguageLinkAdmin([...]) + [~] Deprecated : ManufacturerCore::getManufacturersWithoutAddress([...]) + [~] Deprecated : OrderCore::getLastMessage([...]) + [~] Deprecated : OrderCore::getMonthlySales([...]) + [~] Deprecated : OrderCore::getWeeklyOrders([...]) + [~] Deprecated : OrderCore::isLogable([...]) + [~] Deprecated : ProductCore::deleteCustomizedDatas([...]) + [~] Deprecated : ProductCore::deleteQuantityDiscounts([...]) + [~] Deprecated : ProductCore::getBasicPrice([...]) + [~] Deprecated : ProductCore::getByReference([...]) + [~] Deprecated : ProductCore::getDefaultCategoryProducts([...]) + [~] Deprecated : TabCore::getClassNameFromID([...]) + [~] Deprecated : TaxCore::getRateByState([...]) + [~] Deprecated : ValidateCore::isDniBool([...]) + [~] Deprecated : ValidateCore::isGenderIsoCode([...]) + [~] Deprecated : ValidateCore::isGenderName([...]) + [~] Deprecated : ValidateCore::isGranularityValue([...]) + [~] Deprecated : ValidateCore::isIcoFile([...]) + [~] Deprecated : ValidateCore::isIconFile([...]) + [~] Deprecated : ValidateCore::isOptId([...]) + [~] Deprecated : ValidateCore::isProtocol([...]) + [~] Deprecated : ValidateCore::isTplFileName([...]) + [~] Deprecated : ValidateCore::isZoneName([...]) + + +#################################### +# v1.4.0.13 - 5003 (2011-02-16) # +#################################### + + Added Features: + + [+] Core : Added useIncludePath and streamContext parameters to Tools::file_get_contents() + + [+] MO : import order from oscommerce + [+] MO : new module "LiveZilla" for live chat + + Improved/changed features: + + [*] FO : Bug fixed #7631 - Attribute List now sorted by group public name + + Fixed bugs: + + [-] PROJECT : Bug fixed #7644 - Function Customer::getConnections is now deprecated + + [-] FO : Bug fixed #7654 - Fix add to cart button when instant search is enabled + [-] FO : Bug fixed #7665 - Template html standard compliant + [-] FO : cookie call in a server-to-server validation script removed + [-] FO : fixed bug #7453 + [-] FO : fixed bug #7635 + [-] FO : fixed bug : taxes are now correctly display in block cart + [-] FO : useless group by clause removed + + [-] BO : Bug fixed #7629 - Fix on htaccess specific configuration + [-] BO : Bug fixed #7640 - Fix on attachment edit + [-] BO : Bug Fixed #7642 - Tax rules group name length + [-] BO : Bug fixed #7647 - Fix on flag "new" order + [-] BO : Bug fixed #7667 - Clicking “Back to product” on the product combinations generator now returns to "4. Combinations" tab + [-] BO : Bug fixed #7695 - Search index flag fixed + [-] BO : cache on product attributes fixed + [-] BO : Can't modify already defined specific prices + [-] BO : EcoTax calculation on the product page form + [-] BO : Fixed #6806 - now order is properly set in Catalog when editing product/changing product position + [-] BO : Fixed #7547 + [-] BO : Fixed #7602, now email password for smtp can contains # + [-] BO : Fixed #7646 importing more than one image via csv now works properly even if space after comma + [-] BO : fixed bug #7661 //AdminImport Fatal error (SpecificPrice -> from is empty) + [-] BO : fixed bug #7721 //Downloadable products display problem + [-] BO : fixed bug : Notice Trying to get property of non-object + [-] BO : fixed bug : Notice Trying to get property of non-object + [-] BO : fixed bug with toggle + [-] BO : Removed additional / in filename + [-] BO : Undefined field id when you duplicate a product + [-] BO : when deleting a language, now delete all default pictures + + [-] Classes : fixed bug #7686 - unused private static property in ProductCore + + [-] CORE : fixed bug #7682 - sizeOf function call instead of sizeof? + + [-] MO : delete a debug output class + [-] MO : delete a notice error + [-] MO : Fixed #7612 id search_query in css theme file replaced by a class + [-] MO : fixed bug #7439 - Paypal module and warning after payment + [-] MO : fixed bug #7591 - Still getting timestamp error on PayPal module + [-] MO : fixed bug #7726 - Moneybookers detail filled with { + [-] MO : fixed bug shop import + [-] MO : fixed bug TECHNICAL ERROR add to cart + [-] MO : Little fix on USPS Module + [-] MO : replace "echo" by "return" function for displaying the admin content. + + [-] TR : Bug fixed #7666 - Little translation fixed + [-] TR : delete a console log + [-] TR : fix a displaying problem with quote. + [-] TR : Fixed #7611 added 'to' in english + [-] TR : Fixed #7611 added 'to' in english, moved es/fr/de translation + [-] TR : related to bug #7529 - change the way to use google translate, for one input at once. + + +#################################### +# v1.4.0.12 - 4900 (2011-02-09) # +#################################### + + Added Features: + + [+] Installer : Now shipping and Security payment pages are deleted in catalog mode. + [+] Installer : set default currency depends on localization + + [+] FO : Don't display some element if catalog mode is setted + + [+] BO : new feature check theme compatibility : now changing theme will check if guest_checkout, one_page_checkout, ccc and store_locator has been validated by the theme designer before changing it. If not, theses functions must be desactivated. + + [+] MO : DIBS module - the introduction text is added + [+] MO : Trusted Shops adding functionality : Buyer protection and seal of approval + [+] MO : Trusted Shops adding functionality : Buyer protection and seal of approval + [+] MO : adding new native module: Criteo + [+] MO : adding the automaticaly generation of config.xml files for modules + + [+] WS : Add entity Employee + + [+] PDF : method PDF::convertSign() is changed for more lisibility. + + Improved/changed features: + + [*] BO : $validateDni is a boolean, but was compared to integer for display error message + [*] BO : Check the IP of the cookie is now optional + [*] BO : Deprecated function add a log message + [*] BO : added warning after the update: you must regenerate your htaccess file + [*] BO : adding screencast at home of backoffice + [*] BO : you can now search for back office features with the "search everywhere" feature + + [*] Core : some variables are now protected instead of private + + [*] MO : Shop Import now support images import + [*] MO : You can now import images from oscommerce + [*] MO : blocksearch module is no longer hooked in header + [*] MO blockpaymentlogo : added empty option for select box + + [*] WS : Improve debug in Webservice + [*] WS : add support for i18n synopsis + + Fixed bugs: + + [-] Project : Fixed bug #7365 on Configuration + + [-] Installer : Fixed bug during install + [-] Installer : Bug Fixed #7526 - temporary table + [-] Installer : change localization values for english + + [-] FO : Bug Fixed #7477 - Total tax line disapear + [-] FO : Bug Fixed #7520 - Tax included text is not visible in blockcart.tpl + [-] FO : Bug Fixed #7545 - Accessories always displayed tax incl + [-] FO : Fixed #7429, #7496 - now getProducts() will call checkAccess, except if you call it with = false in your controller + [-] FO : Fixed #7495 removed extra html tag + [-] FO : Fixed bug #7476 + [-] FO : Fixed bug to get iso_code from country in preProcess() + [-] FO : Price display in cart is not refreshed on quantity discount + [-] FO : When you activate blocksearch on top and on left (or right), autocomplete AND instantsearch works properly (input id changed) + [-] FO : When you activate blocksearch on top and on left (or right), autocomplete AND instantsearch works properly (input id changed) + [-] FO : fixed bug #7418 - Blockcart breaks search results + [-] FO : fixed bug #7492 - Not valid DNI raises two errors instead of one + [-] FO : fixed bug #7550 - Only one ?\226?\128?\152position?\226?\128?\153 was changed to $orderbydefault in product-sort.tpl + [-] FO : fixed bug #7551 - Another code formatting issue + [-] FO : fixed javascript error on product page + [-] FO : if catalog mode is actived and no combination exists, the form #buy_block is hidden. + [-] FO : now Validate::isDni() return true for empty value + + [-] BO / FO : Ecotax - with or without tax + + [-] BO : Added fr translation errors for AdminThemes new function + [-] BO : AdminCarts shipping price displayed Tax Inc. when user is in Tax Exc. group + [-] BO : Bug Fixed #7549 - Preview and new product + [-] BO : Fixed #7508 error on preferences/appearance tab + [-] BO : Fixed #7552 error in config.xml default theme file + [-] BO : Fixed #7557 in admin module tab, items are now displayed in correct language + [-] BO : Fixed an error in AdminThemes + [-] BO : Fixed theme compatible functions when config file is missing or malformatted + [-] BO : controller friendly URL are not set with a default value when you add a new language + [-] BO : fixed bug #7452 - then i editing an existing product tags is missing + [-] BO : fixed bug #7453 + [-] BO : fixed bug #7464 + [-] BO : fixed bug #7472 + [-] BO : fixed bug #7490 //Fail importing image category from CSV + [-] BO : fixed bug #7541 - Bad Conf message when updating a form in the Back-Office + [-] BO : fixed bug #7576 //in sitemap template, store link even if you dont have any shops + [-] BO : fixed bug on back office with noLink parameters + [-] BO : fixed bug on import csv + + [-] MO : Bug fixed #7099 - Upgrade fedex module + [-] MO : Bug fixed #7467 - Shared Wishlist items is now working + [-] MO : Fixed bug #7563 + [-] MO : TrustedShops Spanish + [-] MO : fixed bug #7503 - Typo error in email templates + [-] MO : fixed bug #7525 - [Debug] This page has moved + [-] MO : fixed bug #7535 - paypal logos + [-] MO : set flags for language (needed to choose the link to subscribe) + + [-] TR : Bug fixed #5348 - Little translation fixed in the cart - 2011-02-07 10:37 + [-] TR : Fixed some english translations + [-] TR : New english translations fixed + [-] TR : fixed bug #7486 - Typo error + [-] TR : fixed bug #7518 - Typo error + +#################################### +# v1.4.0.11 - 4774 (2011-02-02) # +#################################### + + Added Features: + + [+] BO : added translation + [+] BO : column match in csv import (SQL) + [+] BO : now you can save column match in csv import ;-) + + [+] MO : Twenga module is now compatible with 1.3alpha version and some indentations has been replaced in well format. + + [+] TR : related to bug #6149 - change the way to copy country translations. Now it used EN language. + + Improved/changed features: + + [*] FO : 300 Ko of memory saved for each page + [*] FO : Bug fixed #7278 - It is now possible to specify the module for cart ajax in cart controller + [*] FO : Bug fixed #7278 - Set new method to enable the possibility to override cart ajax module include + [*] FO : Complicated cache on cart product attributes + [*] FO : Friendly URL behavio(u)r changed when you have a unique active language + [*] FO : One more cache (product specs) and some cleaning + [*] FO : cache added to the product feature, which avoid a few queries when there are products in the cart + [*] FO : one less query when the cart is empty + [*] FO : too much queries for the same things, again and again + [*] FO : translations files inclusion deported to the right place, up to 150 Ko / page saved + + [*] BO : Strict Standard - removed constructor which only calls its parents in classes/ImportModule + [*] BO : Token verification is now ugly, but REALLY secure + [*] BO : added tips on the back office homepage + [*] BO : adding log system + [*] BO : you are not stuck anymore with a bad token in the URL, you can choose to display the page if you trust it + [*] BO : you can now choose how do you want to delete your customers + [*] BO: Change property from private to protected + + [*] WS : Order management optimizations + [*] WS : Support for combinations + [*] WS : Support for overriding object active record method + [*] WS : adding some xlinks and a part of product images support + + Fixed bugs: + + [-] Project : Bug fixed #7111 (1.4) - Hook postUpdateOrderStatus is called only in postUpdateOrderStatus now + + [-] Installer : Bug Fixed #7319 - Tax rules group name 32 => 50 characters + + [-] FO : Bug Fixed #7143 - Tax line vanish + [-] FO : Bug fixed #7332 - Selected sort on product-sort.tpl is now displayed when selected + [-] FO : Bug fixed #7355 - Pagination fix + [-] FO : Cart - Price is not refreshed on quantity discount + shipping is not displayed without tax on summary update (Thank you so much Vincent for your help) + [-] FO : Fixed #7379 better message when try to register with an e-mail already registered + [-] FO : Fixed #7379 postal code / zip code incorrect text when created new account or new address + [-] FO : Fixed #7414 replaced usage of Db->numRow in if statement by is_array() and sizeof() of getAttributesGroups result + [-] FO : Total not updated on cart summary + [-] FO : abusive redirection fixed on product page + [-] FO : fixed bug #6863 - svn4286 gift wrap not listed correctly in the cart + [-] FO : fixed bug #7265 - scenes don?\226?\128?\153t use catalog mode + [-] FO : fixed bug #7277 - User info block doesn?\226?\128?\153t update after logging in on one-page checkout + [-] FO : fixed bug #7347 + [-] FO : fixed bug #7353 + [-] FO : fixed bug #7361 - Reset password customer + [-] FO : fixed bug #7388 - category links dont get translated in SEO links in category block + [-] FO : fixed bug #7410 - Default Orderby and wrong Uppercase in product-sort.tpl + [-] FO : fixed display bug of supplier and manufacturer link when module is not installed + [-] FO : postcode is now allowed empty. It has to be tested in controllers + [-] FO : postcode is now saved when adding/modifiyng an address + [-] FO : preload of links fixed + [-] FO : related to bug #6968 - HTTP_ACCEPT_LANGUAGE server var is a language iso code not a country iso code. + [-] FO : Fix smarty debug with smarty3 #7306 + + [-] BO : Bug Fixed #5755 - Cart displayed tax included in Admin > Customers > Cart + [-] BO : Bug Fixed #7065 - Disable Tax = Tax removed from all the associated tax rules + [-] BO : Bug Fixed #7323 - Unkwnow column priority in field list + [-] BO : Bug Fixed #7384 - Translation now works when need_instance=1 + [-] BO : Bug fixed #5970 - 2 invoices same number + [-] BO : Bug fixed #7263 - Postalcode required flag is now used for back office + [-] BO : Bug fixed #7275 - "unity" became "unit" on "3. Prices" tab + [-] BO : Bug fixed #7276 - Minor code formatting issue + [-] BO : Bug fixed #7282 - Spaces are removed when latitude store are posted + [-] BO : Bug fixed #7302 - Invoice date is now displayed + [-] BO : Bug fixed #7315 - Postalcode required flag is now used for back office (store tab) + [-] BO : Employee class cleaned and fixed (employee status wasn't checked enough, employee count was wrong...) + [-] BO : Fixed #7400 character "~" is now allowed in Urls + [-] BO : Magic Quotes shall... not.. PASS! Even in AdminTranslations! + [-] BO : error message "object cannot be loaded" is not an awful die anymore + [-] BO : fixed bug #7243 + [-] BO : fixed bug #7343 - Tag parsing not robust enough + [-] BO : fixed bug #7358 + [-] BO : fixed bug #7398 + [-] BO : fixed toggle in adminEmail + [-] BO : flying language flag replaced in AdminMeta + [-] BO : related to bug #7294 - Add message concerning the rule sizeLang for a field ("html chars including") + [-] BO : related to bug #7303 - add a suffix for each translation panel id to avoid confused id (as "footer"). + + [-] Classes : fixed bug #7336 - An item in your cart is no longer available, you cannot proceed with your order + + [-] MO : change method to get the post key, Tools::strtolower() function is used on template name and module name @see revision #4652 + [-] MO : change method to get the post key, Tools::strtolower() function is used on template name and module name @see revision #4652 + [-] MO : Bug fixed #7268 (1.4) - ProductToolTip module is now showing the good date + [-] MO : Bug fixed #7296 - Major fix on USPS module + [-] MO : Bug fixed #7373 - UPS Module : Improved shipping cost calcul, edit carrier fixed, compliant carrier configuration tab, alert system configuration + [-] MO : If just one theme is displayed, don't display list of theme. + [-] MO : fixed bug #7257 + [-] MO : fixed bug #7261 - VAT number not use + [-] MO : fixed bug #7285 - hardcoded warning in fianetfraud module + [-] MO : fixed bug #7317 + [-] MO : fixed bug #7329 + [-] MO : fixed bug #7352 - Search Engine Keywords Stats Module + [-] MO : fixed bug and improvement of shopImporter + [-] MO : fixed error translation message in TwengaException class + [-] MO blockwishlist : fixed error message : invalid 1st email display correct message + added 2nd parameter htmlentities=false + [-] MO referralprogram : Fixed translation to match referralprogram.php + [-] MO : Fixed bug #7283 + + [-] WS : Minor WS bugs fixed + + [-] PDF : Bug fixed #7312 - Ecotax * product quantity + + [-] TR : change method to get the translation key, no more class name is used but file name, as AdminTranslation do. + [-] TR : change method to get the translation key, strtolower() function is used on module name + [-] TR : change method to get the translation key, strtolower() function is used on module name + [-] TR : change method to get the translation key, strtolower() function is used on template name + [-] TR : correct a text + [-] TR : related to bug #7301 - change a translation + [-] TR : set "PREFIX_" instead of "ps_" in request translations for country_lang table + [-] TR : some errors where not appropriately formatted + +#################################### +# v1.4.0.10 - 4640 (2011-01-26) # +#################################### + + Improved/changed features: + + [*] Project : adding Catalog mode, for disable easly all shopping features + + [*] Installer : adding catalog mode option in Installer + + [*] FO : New hook Payment Top + [*] FO : a few things related to the cart are now cached (~= 46 less queries when there is a product in the cart) + [*] FO : Can't cumulate group reduction + category group reduction + Function Tools::displayParameterAsDeprecated() + [*] FO : performance improvement on packs + + [*] BO / FO : fixed bug #6707 - improved geolocalization feature with adding of whitelist of IP (e.g. for SEO purpose) + + [*] BO : added test for pagespeed module for apache in AdminInformation (this module can cause prestashop to be unstable) + + [*] BO : htaccess generation and friendly URL activation simplified + [*] BO : Specific price form improvement + [*] BO : you can now fill in your domain name for e-mails (sometimes required by tightly configured mail server) + [*] BO : you can now use Tools::file_get_contents which will switch to curl if allow_url_fopen is disabled + + [*] Core: If SSL is enabled, now you can not access to pages without HTTPS + + [*] MO : add link to Twenga tarifs grid. + [*] MO : shopImporter is now using object to add entity + [*] MO : UPS module upgrade - easier to configure and get it working + [*] MO : UPS Webservices connections method is stronger now + [*] MO : USPS module was updated (almost same options as UPS module) + + Fixed bugs: + + [-] Project : Now the dni check is compatible with more format + [-] Project : Fixed bug #7170 (completed) - Bad translations & typos + [-] Project : Fixed bug #7170 - Fixed a lot of typos everywhere + + [-] Installer : installer now drop every compile and cache files of smarty when installing or updating + [-] Installer : fix bug on checking of version in Installer + + [-] FO : abusive 301 redirect fixed + [-] FO : adding missing check for DNI field + [-] FO : BUG:7114 Modified css blockmanufacturer.css. + [-] FO : Bug fixed #7149 - unnecessary code in blockspecials.tpl + [-] FO : fixed bug #6989 - Advanced parameters… not appear in One page checkout and guest checkout + [-] FO : Fixed bug #7095 - Rewrote $_SERVER['REQUEST_URI'] on IIS 6.0 on homepage + [-] FO : fixed bug #7108 - Other payment method button raise an error when ssl is used + [-] FO : fixed bug #7109 - Carrier default not checked + [-] FO : fixed bug #7112 - Can’t login on OPC + [-] FO : fixed bug #7146 - fixed free order with guest checkout + [-] FO : fixed bug #7147 - fixed bug on order-confirmation with redirection and guest account + [-] FO : Fixed bug #7187 - Deleted layer.js + [-] FO : fixed bug #7193 - Guest checkout / Download link issue + [-] FO : fixed bug #7221 + [-] FO : fixed bug #7224 + [-] FO : fixed bug #7225 + [-] FO : fixed bug #7227 + [-] FO : fixed links in RMA + [-] FO : fixed parkinson click on add to cart + [-] FO : performance improvements + [-] FO : Tools::redirectLink fixed for https + + [-] BO / FO : adding Behviour for no reconnized country on Geolocalization feature + [-] BO / FO : fixed bug #4711 - VAT Problem + + [-] BO : Bug fixed #5699 - When employee had no adding right in catalog, add button is not displayed + [-] BO : Bug Fixed #6874 - Can't refund if there is a customization + [-] BO : Bug Fixed #7205 - During installation if a localization pack is installed, the "localized" data (currency, taxes etc ..) don't have a default name and other i18n field + [-] BO : bug fix on search indexation + [-] BO : currency fixed on back office homepage + [-] BO : Fixed bug #7125 + [-] BO : fixed bug #7131 + [-] BO : Fixed bug #7142 - Errors were not translated on the login page + [-] BO : fixed bug #7144 - Disallow: /prestashop/order-opc.php not in robots.txt + [-] BO : Fixed bug #7194 - The features tab was broken in the product edition page + [-] BO : Fixed bug #7198 - Fixed the link "Back to the category" on "Attachments" tab + [-] BO : fixed bug #7202 + [-] BO : Fixed bug #7204 - States were not showing up when default country was USA + [-] BO : fixed bug #7219 + [-] BO : fixed bug #7222 + [-] BO : priority field in import & adminproduct tab + [-] BO : some javascript script was called twice on adminproducts + [-] BO : you can't disable the default currency anymore + + [-] Core : Rename Memcached class to MCached to fix #7163 bug + + [-] MO : Bug Fixed #5298 - Mass email sending + [-] Mo : Bug fixed #7116 - Bug fixed on Usps and Fedex carrier + [-] MO : Bug fixed #7129 - Block newsletter is now working when url rewriting is enabled + [-] MO : Bug fixed #7139 - Editorial module translations is now working + [-] MO : Bug fixed #7159 - Send To Friend can have two hooks at the same time + [-] MO : Fixed blockcategories turns off force compile #7128 + [-] MO : fixed bug #7115 - Paypal 2.1 module - multiple ‘authorization accepted from Paypal’ order statuses + [-] MO : Fixed bug #7199 - Added 'allow_guests' var in .tpl for productscomments module + [-] MO : fixed bug #7208 - Customer Name Transposed in PayPal + [-] MO : Fixed bug #7214 - "Your name" couldn't be translated in productcomments module + [-] MO : fixed bug #7217 - typo in variable name in fianetfraud module + [-] MO : fixed bug download product redirect + [-] MO : fixed bug on wishlist + [-] MO : fixed bug on wishlist + [-] MO : fixed bugs on shopImporter + [-] MO : fixed bugs on shopImporter and oscommerImport + [-] MO : fixed bugs on shopImporter & import ocs + [-] MO : fixed install bug + [-] MO : TrustedShops Strict Standard (mktime) + + [-] Mails : Fixed bug #7157 - Fixed a typo in the contact mail template + + [-] TR : Bug fixed #7155 - Translation correction + [-] TR : fixed bug #7231 - Translation in Cart + + [-] LO : US - Missing taxes + + Deprecated methods: + + [~] Deprecated : Parameter divisor in getPriceStatic + + +#################################### +# v1.4.0.9 - 4517 (2011-01-19) # +#################################### + + Improved/changed features: + + [*] Project : Added default states for Italy in the localization pack (thanks Jacky75) + [*] Project : Update Smarty from 3.0.5 to 3.0.6 + [*] Project : Vouchers can now be shrunk in orders + + [*] FO : Now in SVN version, if you remove the _ to the FrontController overriden classe, each king of PHP errors die the script, better for developpement environnement + + [*] BO/FO : Quantity discount & discount can be cumulated + + [*] BO : adding phone number in footer for France + [*] BO : Searching translations for modules use now recursive method. This allow to create files in deeper folder (this change the translation file order). + [*] BO : you can now generate a single PDF with all the order slips for a given period + [*] BO : You can now view customer messages even if they didn't finalize an order + + [*] Core : Big performance improvements when products are added to the cart! + + [*] MO: Fixed bug #5647 on mailalert / Mailalert mail does now contain attributes name + [*] MO: Fixed bug #5972 on mailalert + + [*] TR : set a new Translation + + [*] WS : Support for associations + + Fixed bugs: + + [-] Installer : Bug Fixed #6685 - SQL problem if tax are disabled + [-] Installer : fixed a spannish translation on installer + [-] Installer : the updater now handle ajax parse errors + + [-] FO : a bug occured when translations file are empty. + [-] FO : bug #6887 fixed + [-] FO : bug #6909 fixed + [-] FO : Bug fixed #5250 (1.4) - Contact php mail is now working on BlueHost + [-] FO : Bug fixed #5302 (1.4) - Viewed products module is now working even when there is no picture product + [-] FO : Bug fixed #6961 - Invert pictures between products and employees on DashBoard + [-] FO : Bug fixed #6966 - URL Rewriting + [-] FO : Bug fixed #6977 - New Products Request + [-] FO : Bug fixed #6992 - Blockcategories url links have been fixed + [-] FO : Bug fixed #7016 - "Sort by" is now working on "best sales" + [-] FO : Bug Fixed #7031 - Reduction percent in blockspecials + [-] FO : Bug Fixed #7067 - Incorrect ecotax mngt for non-taxed customer + [-] FO : Bug Fixed #7075 - Incorrect taxes when discount amount is used + [-] FO : Bug fixed #7085 (1.4) - HTML Tag are not displayed anymore in href title of short description + [-] FO : Cart summary displays price Tax Inc. with a customer group Tax Exc. + [-] FO : fix bug #5490 + [-] FO : Fixed #7054 + [-] FO : fixed an javascript error on One page checkout + [-] FO : fixed a notice error on One page checkout + [-] FO : Fixed bug #5685 - Minimal amount wasn't using the customer currency + [-] FO : fixed bug #6523 #6657 - adding missing fields on One page checkout + [-] FO : fixed bug #6575 - No way to provide order comment when creating new account through opc + [-] FO : fixed bug #6652 - Possible to skip required field with opc after pussing button “ Modify my address” + [-] FO : fixed bug #6766 - Not all errors are mentioned at account creation or instant checkout + [-] FO : fixed bug #6954 - Firebug reports an error at checkout + [-] FO : fixed bug #6999 - One Page Checkout - Already Registered? Redirect to Authentication + [-] FO : small bugs and optimizations on One page checkout + + [-] BO / FO : Bug Fixed #5775 - Credit slip on a customization = a full order credit slip + [-] BO / FO : Bug Fixed #6898 - unit prices not impacted by specifc prices + [-] BO / FO : Quantity discount now use priorities + [-] BO / FO : unit_price initialisation + + [-] BO : a class is added for simulate a disable input + [-] BO : Bug fixed #5536 (1.4) - Warning is displayed when the limit of suhosin could cause problem on translations tab + [-] BO : Fixed #7029 Bad quantity reinjected on products + [-] BO : Fixed bug #4264 - It was possible to send email by SMTP without a SMTP server specified + [-] BO : Fixed bug #5266 + [-] BO : Fixed bug #5496 - Missing check on php_uname() in "Informations" tab + [-] BO : Fixed bug #5558 - Impossible to read customer messages without orders + [-] BO : Fixed bug #5953 - It was impossible to change an order state if there were no products in the order + [-] BO : fixed bug #6358 + [-] BO : fixed bug #6755 + [-] BO : Fixed bug #6857 - Missing htmlentitiesUTF8 in search results + [-] BO : Fixed bug #6875 - Error while regenerating Stores thumbs + [-] BO : Fixed bug #6940 - Updated PL tax + [-] BO : Fixed bug #6943 - Updated UK tax + [-] BO : fixed bug #6953 - Style problem (block overlaps) - (only IE7) + [-] BO : Fixed bug #7013 - Now using Tools::getValue to add tags + [-] BO : Fixed bug #7033 - Error while adding a new language (image format not recognized, allowed formats are: .gif, .jpg, .png) + [-] BO : fixed bug in import csv + [-] BO : Missing tax rules (US) + [-] BO : Tax on product page should not use state taxes + [-] BO : Modules translations works fine for a theme overriding module, + [-] BO : warning fixed (language tab, caused by a missing directory) + + [-] Classes : Missing taxes during Localization pack import + [-] Classes : Fixed bug #6942 - Notice: Undefined variable: lang during installation + + [-] Core : Fixed bug #4248 - Zones are now deleted properly + [-] Core : Fixed bug #5211 - SQL error related to cart + [-] Core : Fixed bug #5486 - Warning on $category in Link.php class and in the mailalerts module (id <=> id_product) + [-] Core : Fixed bug #6950 - Error with SSL when using CCC + [-] Core : Fixed bug #6964 - PT localization pack was updated + [-] Core : Fixed bug #6982 - Undefined $row in the Customer class + [-] Core: Fixed bug #7083 + + [-] MO : Bug fixed #6816 - Webservice test is now repaired + [-] MO : Erase css in "style" attribut, use a new css class. + [-] MO : fixed a bug on mailalert module + [-] MO : fixed bug #5347 - Google Checkout Currency corversion error + [-] MO : fixed bug #6028 - paypal express and paypal block logo + [-] MO : Fixed bug #6701 - Module products comments wasn't working properly for user who update from < 1.4.0.2 to a new version + [-] MO : Fixed bug #7003 - Deleted some useless vars + [-] MO : Fixed bug #7021 - Bad tag in mailalerts module + [-] MO : Fixed bug #7026 - We don't use anymore the Thickbox in the PayPal module + [-] MO : Fixed bug #7031 (partially) - Deleted unused var in module blockspecials + [-] MO : Fixed product comments bug #7077 + [-] MO : fixed warnings in fia-net modules + [-] MO : Mailalert does now not try to add product to cart when return key is pressed + [-] MO : set a tracker in DIBS + [-] MO : update Google Analytics module + [-] MO : related to bug #6786 - Correct ie7 integration and improved general integration and lisibility + + [-] WS : Clean WebService parameters in classes + + [-] TR : check if _PS_THEME_DIR.'/modules/' exists before scan it + [-] TR : Fixed bug #5266 + [-] TR : Fixed french translation for url rewriting + [-] TR : Order of translate sentence changed (because of last translation tools debug), delete old translation. + [-] TR : related to bug #4787 - Copy translations from a theme to an other work fine and (keys translation are changed according to the theme name), + + +#################################### +# v1.4.0.8 - 4410 (2011-01-12) # +#################################### + + Improved/changed features: + + [*] Installer: Localization packs is now available on release + + [*] FO : All the page URLs are now really multilingual when rewrited, and with a simple iso code instead of "lang-zz" + + [*] BO : Simplified the import upload process + [*] BO : Added a warning relative to ZipArchive + [*] BO : Files already imported are now sorted by upload date desc + [*] BO : Import is now really faster on categories, calling nested tree regeneration only once + [*] BO : improvement of search engine module in back-office + [*] BO : Localization Pack dont add new Currency/Language/State/Tax if already exist + [*] BO : Remote help improvements + [*] BO : remove useless calls of jquery hotkeys + [*] BO : Robots.txt file generation improved + [*] BO : search indexation optimized + [*] BO : you can now add a specific message when deleting an item + [*] BO : you can now specify the canonical url of your shop in the preferences, and it will be used to redirect users to the right domain + + [*] Classes : report to bug #6841 + + [*] Core : Added a flag to Category class to prevent from nested tree regeneration if needed ($category->doNotRegenerateNTree) + [*] Core : Deleted unused defines (_PS_TMP_DIR_, _PS_STEST_DIR_) and renamed _PS_PROD_PIC_DIR_ to _PS_UPLOAD_DIR_ + + [*] MO: Add alert to customer even if he is not logged on mailalert + [*] MO : Fixed bug #6870 - Shop logo is now displayed on PayPal redirection page + [*] MO : Fixed bug #6870 - Two small improvements on PayPal module (W3C validation) + [*] MO : gsitemap now handle homepages in multiple languages + [*] MO : new version of socolissimo for more compatibility with version 1.4 + [*] MO : optimize the image subheading style of the editorial module + [*] MO : pagination for gridhtml + [*] MO : statsbestcustomers improved + [*] MO : stats modules with grids improved + + [*] TR : translation added + [*] TR : translation added + + Fixed bugs: + + [-] Project : Bug Fixed #6864 + + [-] Installer : Allow to use language chosen in localization pack during install + [-] Installer : change the localization pack installer, don't install lang pack if lang is fr, en or es. + [-] Installer : Change some wrong country name related to bug #6149 + [-] Installer : Fixed bug #6235 - Subquery returns more than 1 row on AdminStores + [-] Installer : Fixed bug #6584 - Bad error message if no permissions on img/logo.jpg + [-] Installer : Fixed bug #6859 - Upgrade file for 1.4.0.7 was updating hook's names to the wrong table + [-] Installer : gridextjs is now renamed as deprecated in the updater + [-] Installer : no name hooks named + + [-] FO : Bug Fixed #5406 - Tax inc. displayed when taxes are disabled + [-] FO : Bug Fixed #5582 - Negative tax on free order + [-] FO : Bug Fixed #6665 - Suppliers pagination is ok now, unactive products are not count anymore and suppliers display on Front Office + [-] FO : Bug Fixed #6892 - Qty discount price in percent not correctly displayed + [-] FO : Fixed a fatal error on product page ($this->$smarty) (no $ needed) + [-] FO : Fixed bug #6312 - Small changes in CSS for better compatibility + [-] FO : fixed bug #6745 - Wrong text OPG + [-] FO : Fixed bug #6829 - CSS typo in product.tpl + [-] FO : Fixed bug #6866 - Missing margin-bottom on #buy_block + [-] FO : Fixed bug #6873 - CMS page wasn't using breadcrumb.tpl + [-] FO : Fixed bug #6897 - Deleted useless Back button on authentication page + [-] FO : Fixed bug #6910 - Bullet image size properties are missing + [-] FO : Fixed bug #6919 - Selected country was the wrong one in address edition + [-] FO : Fixed bug #6921 - Missing translation code in authentication.tpl + [-] FO : fixed bug on One Page checkout, when no payment method is available + [-] FO : fixed display quantity discount + [-] FO : removed double slash in the canonical URL of the authentication page + [-] FO : Tax calculation on PDF invoice incorrect + [-] FO : weird 404 page generated by the stat encrypted data fixed + + [-] BO/FO : Bug Fixed #6438 - BO, Invoices & history don't use specific prices + + [-] BO : Bug Fixed #6809 + [-] BO : back office themes appear again in employee tab + [-] BO : Bug #6826 fixed + [-] BO : Bug Fixed #5215 (1.4) - Import product list in different language + [-] BO : Bug Fixed #5523 (1.4) - Combinations generator does not cut off attribute names with quote anymore + [-] BO : Bug Fixed #5616 (1.4) - Supplier reference is displayed in Orders Tab + [-] BO : Bug Fixed #5859 - Move products image positions + [-] BO : Bug Fixed #6086 (1.4) - Back link repaired in Back Office + [-] BO : Bug Fixed #6134 - unit price with quantity discount + [-] BO : Bug Fixed #6602 - TaxRules tab next to the tax tab + [-] BO : Bug Fixed #6617 - Unable to assign tax rule to particular zones + [-] BO : Bug Fixed #6687 (1.4) - Incorrect group on customer creation is now fixed + [-] BO : Bug Fixed #6726 & #6721 - Quantity discount & Specific prices + [-] BO : Bug Fixed #6805 (1.4) - Color now can be saved in order state administration + [-] BO : bug fixed in CSV import tax group name => tax group id + [-] BO : empty translations files are now created when you add a language + [-] BO : Fixed #6811 + [-] BO : Fixed a bug related to ZipArchive, Fatal error while posting a zip file if ZipArchive was missing + [-] BO : Fixed bug #3900 - Delete [E] option in .htaccess + [-] BO : Fixed bug #5478 - After saving a combination, attributes order was modified + [-] BO : Fixed bug #6321 - Error on import + [-] BO : fixed bug #6364 + [-] BO : fixed bug #6774 + [-] BO : fixed bug #6791 //Now when no payment module is installed message appears in place of the tables restriction without a checkbox. + [-] BO : Fixed bug #6867 - Two dates were not formatted correctly (Orders list and Cart detail) + [-] BO : Fixed bug #6908 - Missing translation in editorial module + [-] BO : Fixed bug #6916 - Link to Wikipedia on state tab deleted + [-] BO : Fixed bug #6922 - Create .htaccess doesn't work + [-] BO : fixed bug minimal quantity + [-] BO : Fixed bugs #6762, 6760, 6764, 6765 - Bad relative paths in several admin tabs (not using defines.inc.php) + [-] BO : Fixed bugs #6778, #6780, #6779 - Hardcoded directories in Admin panel tabs + [-] BO : Fixed CH localization (tax rates have increased on 1st January 2011) + [-] BO : Specific prices - HT price is empty by default + [-] BO : Undefine during Cancel product + + [-] Classes : Bug Fixed #6320 - getPricestatic must not modify global cart + [-] Classes : Bug Fixed #6750 - The newer e-mails have been added + [-] Classes : Bug Fixed #6825 - Missing properties (ecotax_tax_rate & group_reduction) in OrderDetails class + + [-] Core : bug fixed #6856 + [-] Core : false is now considered as an empty value in ObjectModel, thus allowing an ID set to false if it is not required (before that, the id had to be set to either null or '') + [-] Core : Fixed bug #5706 - Now using round() instead of intval for image resizing + [-] Core : fixed bug #6113 - template cant find data products + [-] Core : Fixed bug #6269 - Major issue with $outOfStock flag during order processing + [-] Core : Fixed bug #6788 - Exceptions on page with query string specified were not working properly + [-] Core : Fixed bug #6818 - Deleted an unused in the PaymentModule class + [-] Core : Fixed bug #6836 - Added public to validateOrder method (PaymentModule class) + [-] Core : Fixed bug #6840 - Language::getLanguages() wasn't taking in account $active + [-] Core : Fixed bug #6846 - Cannot override Search::sanitize() + [-] Core : Fixed bug #6928 - Missing "custom" field in FeatureValue class + [-] Core : Fixed bug #6931 - Errors in Australian localization pack + [-] Core : fixed bug missing global $isVirtualCart + [-] Core : fixed notice //trying to get property of non-object + [-] Core : Small coding standards modifications + + [-] MO : Bug Fixed #6816 - UPS Module now use fsockopen instead of cURL + [-] MO : default sort column fixed for gridhtml + [-] MO : Fixed #6243 allow shipping to other countries + [-] MO : Fixed #6895 ssl broken on moneybookers module + [-] MO : Fixed bug #5101 - It was impossible to configure a local rss feed (blog for instance) on module blockrss + [-] MO : Fixed bug #5688 - PayPal return values were not uppercased + [-] MO : Fixed bug #6759 - Module crossselling design was broken + [-] MO : Fixed bug #6855 - Cross selling module CSS wasn't displayed properly + [-] MO : fixed bug #6865 - downloadable product gets stock out email when you have 98 in stock + [-] MO : statsbestcustomers is now faster and do not loose any customer when you browse the pages + [-] MO : "visitors online" module can now display the visitors even when the option "pages views for each customer" is disabled + + [-] TR : change a var name for better understanding. + [-] TR : related to bug #6852 - add method to copy all necessaries mails files when import lang pack. + [-] TR : related to bug #6852 - copying necessaries mails when a pack is a added by prestashop.com. + + [-] WS : fix minor image display bug + + +#################################### +# v1.4.0.7 - 4235 (2011-01-05) # +#################################### + + Improved/changed features: + + [*] Installer : Argentinian provinces included + [*] Installer : Add timeout on localization pack download + + [*] FO : fixed bug with "Other payment methods" and OPC feature + [*] FO : Suppliers and manufacturers are displayed only if you have enable it on preference + + [*] BO : Direct link to AdminTaxRulesGroup tab in the product's form + [*] BO : improvement of module search field + [*] BO : modified css backoffice. + [*] BO : Added a confirmation message while saving Features + [*] BO : Improve the lang pack proposed in AdminLanguages tabs. + + [*] MO : A visitor can now specify a referral email, even if he was not invited before + [*] MO : new toolbar in the configuration page of every modules + [*] MO : You can now define a percentage for vouchers of the referral program module + [*] MO : Added loyalty points on the customers page (in the block title) and added a second parameter to LoyaltyModule::getVoucherValue() + [*] MO : Fixed bug #6694 - Typo and HTML fix for the productscomments module + [*] MO : Fixed two bad translations (missing mod='') for the productscomments module + [*] MO : Several improvements on the productcomments module + [*] MO : shopImporter feedback is now more user friendly + + [*] WS : Clean classes and support for associations and i18n + + Fixed bugs: + + [-] Project : resolve Ecotax problem on Prestashop update (<1.3.3 to 1.4) + + [-] Installer : Bug fixed #6424 - SQL Meta Lang Correction (bug on htaccess) + [-] Installer : Bug fixed #6685 - Fixing SQL error upgrade 1.3.2.2 to 1.4.0.6 + [-] Installer : Bug fixed #6685 - Fixing SQL error upgrade 1.3.2.2 to 1.4.0.6 / Last issue solved + [-] Installer : Fixing SQL error : 1.3.3.0, 1.3.4.0, 1.3.5.0 were empty + [-] Installer : Tax Rules translation + [-] Installer : Fixed bug #6426 - "ajax error" during upgrade + + [-] FO - BUG:6668 Modified css classes in specials block. + [-] FO : fixed bug #6646 - Error message wrong/empty value but goes to next step + [-] FO : fixed bug #6646 - Error message wrong/empty value but goes to next step + [-] FO : fixed bug #6653 - Guest checkout problem + [-] FO : fixed bug #6658 + [-] FO : fixed bug #6659 - terms turned off shows wrong text + [-] FO : fixed css on cart summary + [-] FO : Remove unless js files + + [-] BO / FO : change the price value which is set in Database for order details, exclude ecotax for the HT price. + [-] BO / FO : fixed bug #6698 + + [-] BO : Bug fixed #6738 - No more hardcoded directory img/tmp/ in AdminProducts + [-] BO : Fixed bug #6661 - Broken links on dashboard + [-] BO : Fixed bug #6700 - Lot of modifications on the "Features" tab on the product edition + [-] BO : fixed bug #6725 - PHP error in BO + [-] BO : Fixed Bug #6730 - error deleting a tax + [-] BO : Fixed bug #6732 - Tax rate was restricted to 2 decimals + [-] BO : fixed bug #6739 + [-] BO : fixed bug #6754 + [-] BO : related to bug #6664 : + [-] BO : related to bug #6664 : + + [-] Classes : fixed bug #6729 - Paypal: Invalid token due a problem of Cookie class of Prestashop + [-] Classes : Fixed cache errors #6672 + + [-] Core : Fixed bug #6716 - Error "Image format not recognized, allowed formats are: .gif, .jpg, .png" + + [-] MO : added IF NOT EXISTS to the table creation of the newsletter module + [-] MO : DIBS module - logo image is replaced. Was saved in wrong encode. + [-] MO : Fixed a lot of other bugs, typos, and code standard errors in the referral program module + [-] MO : fixed bug #6472 - moneybookers errors + [-] MO : Fixed bug #6663 - Bad voucher value for referral program module + [-] MO : fixed bug #6667 - Error in modules/blockcms/blockcms.php + [-] MO : fixed bug #6675 - Moneybookers module error + [-] MO : Fixed bug #6731 - Class ‘LoyaltyStateModule’ not found in the admin panel + [-] MO : gridextjs has been properly removed and replaced + [-] MO : improve security In DIBS module + [-] MO : Numerous other bugs on the loyalty state module in the admin panel (customers page) + [-] MO : set a better conditionnal expression in DIBS constructor. + [-] MO : shopImporter fixed js bug + + [-] MAIL : Bug fixed #6674 (v1.4) - Mail template order_customer_comment now mention customer name and e-mail + [-] MAIL : fixed bug #6734 - Problem customers accounts and retrieve password + + [-] PDF : PDF won't die if no language is specified in the cookie + + [-] TR : Bug fixed #6660 - English template corrections and AdminTranslations fixed + [-] TR : Bug fixed #6690 - Small translation issue + [-] TR : Bug fixed #6695 - Small translation issue + + [-] WS : fixed authentication bug + + +#################################### +# v1.4.0.6 - 4114 (2010-12-29) # +#################################### + + Improved/changed features: + + [*] Project : refactoring of the dispatcher in order to create unit tests + [*] Project : Update of jQuery SerialScroll & ScrollTo plugins + + [*] FO : Homepage is now W3C valid (fixed several errors on blocksearch) + [*] FO : refactoring of order controllers, with new controller ParentOrderController + + [*] BO : added check if method_exists before call_user_func() 'displayInfoByCart' + [*] BO : change the method to get the language pack according to the prestashop version. + [*] BO : you can now upload ZIPs containing your product pictures instead of uploading them one by one + [*] BO : Timeout on Remote Help + hide error @ + [*] BO : you can now add the language code (e.g., pt-br, en-us) to a language in order to use Google Translate API and other feature with the right language code + + [*] Classes : Optimized version of isVirtualCart() (class Cart.php) + + [*] MO : Added a uninstall warning in the loyalty module + [*] MO : You can now choose to use Google Checkout shipping fees instead of the ones defined in your shop + [*] MO Treepodia : new features + [*] MO : Several improvements on Products Category module (design, code, performances) + [*] MO : Module UPS - The module is now fully configurable + [*] MO : Re-wrote a large part of the Loyalty module + [*] MO : Better management for negative points in the loyalty module + [*] MO : Moved includes from the constructor in the loyalty module (better memory management) + + [*] IN : bypass configuration check if everything's alright + [*] IN : improved error management in the database installation: no need to use firebug anymore! + + [*] TR : Set good link to access of lang pack on prestashop.com according to Prestashop version. + + Fixed bugs: + + [-] FO : accessories description fixed on product page + [-] FO : Add missing UTF-8 charset on escape + [-] FO : Bug : 5265 - stylesheet fixes + [-] FO : Bug fixed - Smarty error on carrier display in orders steps + [-] FO : Change h2 in h1 and h3 in h2 on editorial module for better SEO. + [-] FO : Cookie name is now a hash generated with a string and the shop URL instead of a string and the cookie key, so you shouldn't have any "400 Bad Request" due to oversized cookies anymore + [-] FO : deleted "This shop requires JavaScript to run correctly. Please activate JavaScript in your browser." which appeared in your google description + [-] FO : Fixed #6505 Images is now loaded in SSL + [-] FO : Fixed #6534 + [-] FO : Fixed a warning with $customizationQtyInput on order-follow.php + [-] FO : Fixed bug #5632 - W3C error with blocknewproducts + [-] FO : Fixed bug #6083 - The form buy_block could by empty on product page in some cases + [-] FO : Fixed bug #6164 - Warning with var $total_free_ship + [-] FO : fixed bug #6270 - Paypal v 2.0 - non-secure links in redirect.tpl + [-] FO : Fixed bug #6354 - Free shipping text wasn't working properly with OPC + [-] FO : Fixed bug #6503 - Missing password_query templates for ES language + [-] FO : fixed bug #6524 - States list not showing on opc invoice address + [-] FO : Fixed bug #6544 + [-] FO : fixed bug #6561 - “No carrier is selected” for virtual products in opc + [-] FO : Fixed bug #6572 - Spelling issue "subtract" instead of "substract" + [-] FO : Fixed bug #6573 - Clicking quantity +/- on virtual cart causing "remaining amount" to appear + [-] FO : fixed bug #6574 - Javascript error when creating account on opc with cart block uninstalled + [-] FO : fixed bug #6576 - Customer name is displayed with lastname first after creating new account in opc + [-] FO : fixed bug #6577 - opc has two #email inputs + [-] FO : fixed bug #6595 - no default shipping method on order-opc.php + [-] FO : Fixed bug #6597 - SerialScroll.js was missing on the product page + [-] FO : Fixed bug #6606 and #6626 in Category class and ajax.php + [-] FO : Fixed bug #6608 -

instead of

for guest-tracking.tpl + [-] FO : Fixed bug #6609 + [-] FO : Fixed bug #6634 - Typo error in authentication.tpl + [-] FO : Fixed bug #6640 - Added a button to modifiy its address on Guest checkout + [-] FO : jqzoom destination image link fixed + [-] FO : mail can be sent even if the customer name is not valid: it is removed instead of crashing prestashop + [-] FO : mime type detection improved for downloadable items + [-] FO : no more fatal error when you cannot be geolocated with your IP address + [-] FO : now you can't go to next step if you haven't choose a carrier or accept terms of service on One Page checkout (#6595) + [-] FO : _PS_CACHE_ENABLED_ is not defined during upgrade from 1.3 => 1.4 = maintenance page crash + [-] FO : Put subheading editorial image in P. + [-] FO : Replaced all "Substract" by "Subtract" + [-] FO : search query fixed (tax table alias had been changed) + [-] FO : Shop name is now protected in the mails templates + [-] FO : Small translations fixes + [-] FO : SSL for re-ordering + [-] FO : Tag system on front office is now working (bug in Search SQL Request) + [-] FO : virtual product links are now sent the first time the order is validated and no more hard coded on PS_OS_PAYMENT + + [-] BO : Bug Fixed #6596 + [-] BO : #6583 fixed + [-] BO : css bug fixed + [-] BO : delete the ext-all.css called in the hook hookBackOfficeHeader + [-] BO : Fixed bug #5129 - Categories were reseted if an error occur on the product edition page + [-] BO : Fixed bug #5497 - All default pictures were deleted if box "Delete all before import" was ticked + [-] BO : fixed bug #6535 + [-] BO : Fixed bug #6581 - Text/HTML error on CMS edition page + [-] BO : Fixed bug #6601 + [-] BO : JS error in IE6 & 7 + [-] BO : no more warning when "en" directory does not exists while parsing modules email translations + [-] BO : related to bug #6632, create a new javascript function to display the tinyMCE editor which concerns the button 'edit html' on each html mail template. + [-] BO : related to bug #6632, in the tinyMCE init method, the selector exclude each textareas for txt templates. + [-] BO : tinymce do not entities every utf8 chars anymore + [-] BO : Ugly display in IE + [-] BO : you can now clear the note associated to a customer + + [-] Classes : fixed bug #6466 - Fatal Error and Geolocalization + [-] Classes : fixed bug #6548 - Express checkout twice with the same email address + + [-] Core : Fixed bug #5545 - $orderBy parameter was ignored if uppercased + [-] Core : Fixed bug #5886 - Multibyte error in the blockcart module + [-] Core : Fixed bug #6515 - Warning on Memcached (empty key on deletion) + [-] Core : Fixed bug #6590 - Image format not recognized (JPEG/GIF/PNG...) + + [-] MO : add correct condition to allow 1.3 compatibility. + [-] MO : Deleted Javascript real time update (on FO) for the loyalty module (buggy and useless because we only display the maximum points the customer can win) + [-] MO : Fixed a Smarty v2 bug on loyalty module (missing {literal}) + [-] MO : Fixed bad default translations in the loyalty module + [-] MO : Fixed bad points amount in the loyalty module (floating issue) + [-] MO : Fixed bad total points amount in the loyalty module + [-] MO : Fixed bug #4785 - Google Checkout wasn't transmitting attribute details + [-] MO : Fixed bug #4847 - Product weights were not sent to Google Checkout + [-] MO : Fixed bug #4871 - Loyalty module vouchers start date weren't the right ones + [-] MO : fixed bug #5437 - PaypalAPI module Vs language + [-] MO : Fixed bug #5578 - Module productscategory + [-] MO : Fixed bug #5660 - Loyalty points differents on the product page and on the shopping cart page + [-] MO : Fixed bug #5825 - Better management of confirmation page for Moneybookers payment module + [-] MO : fixed bug #5851 - Paypal module v 2.0 - inconsistent mod= + [-] MO : fixed bug #5894 - Paypal2.0 install error + [-] MO : Fixed bug #5938 - Bad amount of negative loyalty points with loyalty module + [-] MO : fixed bug #6093 - paypal template error + [-] MO : fixed bug #6343 - wrong shipping address passed to Paypal + [-] MO : fixed bug #6361 - reducing length of log messages from Paypal + [-] MO : fixed bug #6558 + [-] MO : fixed bug order total on payment step + [-] MO : Module USPS - The errors messages are more accurate + [-] MO : subdomain no more removed from the url in pagesnotfound + + [-] TR : Bug fixed #6630 AND #6539 - Md5 Key has been changed, french and spanish translations were reuploaded + +#################################### +# v1.4.0.5 - 3979 (2010-12-22) # +#################################### + + Added Features: + + [+] Project : New feature Guest Checkout, on One Page checkout and standart order process + + [+] FO : Added an effect on FancyBox opening/closing + [+] FO : now js compression use JS min in place of JS packer (too much bugs and not the better performances...) + [+] FO : your customers can now renew their orders (in the order detail) + + [+] BO / FO : Rewrited the user's path calculation using nested tree + + [+] BO : added colorpicker for attributes and Order statuses + [+] BO : chart added on the homepage + [+] BO : new dashboard in Back Office + [+] BO : Remote help + [+] BO : simple access to the front office added in the back office header + + [+] Class : added new class Import module + + [+] Core : Added an N-Level Nested Tree for categories + [+] Core : Added a SQL index to improve nested tree walks performances + [+] Core : Added the nested tree implentation! Big performance gain for getting categories tree branches + + [+] Hook : added new hook beforeAuthentication + + [+] MO : Added a first basic version of the Layered navigation feature (you can only filter by sub-category, more to come!) + [+] MO : added new module oscomerce importer + [+] MO : added new module Shop Importer //beta + [+] MO : Dibs join the party !! + [+] MO : New Module (1.4) - Fedex - fedexcarrier/ + [+] MO : New Module (1.4) - USPS - uspscarrier/ + [+] MO : set a valid category module + [+] MO : Twenga module is added + [+] MO : You are now able to choose the minimal amount required to use the loyalty points vouchers + + [+] TR : added translation + [+] TR : added translation + [+] TR : Set the FR DIBS translations + [+] TR : send Translations + + [+] WS : Bug fixed on blank schema for several resources. + [+] WS : fixed bug #6352 + [+] WS : webservice always returns 401 when authentication fail + + Improved/changed features: + + [*] Project : Smarty3 is now available for PHP Version < 5.1.2 + + [*] FO : Added several with/height HTML values for delete.gif + [*] FO : a few changes in confirmation messages (css among others) + [*] FO : a few changes in error management (css, back button, authentication) + [*] FO : Cached customer groups in order to avoid groups SQL subqueries + [*] FO : Class Cart.php (getProducts method) - The cart is now getting dimension parameters (width, height, depth) for each product + [*] FO : Comparison button at the bottom of the product list + [*] FO : Improved memory management for digital files downloads + [*] FO : Improved the way manufacturers product were counted + [*] FO : removed backward compatibility with 1.1 themes + + [*] BO : accords form positions and relevancy for the administrator in the Performance tab + [*] BO : Added module filter on the module page + [*] BO : added new version of tinyMCE + [*] BO : added the number of images, combinations and attachments in the tab name of the product page + [*] BO : Catalog > Product - Dimension parameters are now available for products + [*] BO : (cf comment bug #6266) (1.4) - AdminPDF and AdminPreferences - Font PDF can now be changed in every language without changing the employee language + [*] BO / Core : Some code improvements and code design + [*] BO : homepage links updated + [*] BO : improve the memory usage on AdminPayment page + [*] BO : Initial Qty instead of stock movements for new products + [*] BO : Preferences > Contact - Country and state are now list field + [*] BO : Preferences > Localization - Dimension unit parameter (cm or in) is now available + [*] BO : Significantly optimized helpboxes management, faster display & less code! + [*] BO : Simplified path for cookie creation (init.php) + [*] BO : Small improvements for "old school" theme + [*] BO : Some corrections of code standards + [*] BO : "View my shop" link is now opening into a new window + + [*] Core : Cache & headers on tax rules + [*] Core : Tax Rules + + [*] MO Cashticket : Learn more link + [*] MO Dejala : Removed CarrierHacked + [*] MO Paysafecard : Learn more link + [*] MO : Loyalty module : loyalty points are now changing with attributes on product page + [*] MO : Module UPS - Cache system has been added - 2010-12-20 16:09 + [*] MO : Module UPS - Currency conversion and use of the product dimensions + [*] MO : New text added in the product page for loyalty module if it's a discount product and no points are given for that one + [*] MO : new version for module Dejala is now available + [*] MO : Now you can use singleton in your modules + [*] MO : Ogone module is now compatible Prestashop version 1.2.5 + [*] MO : Small improvements on PayPal module + [*] MO : Title field added on ProductComment module + [*] MO : You can now define a config.xml file in modules dir to improve memory dump on AdminModules page. + + [*] WS : class prepared for using unit tests. + [*] WS : Now supports new resources : deliveries, price_ranges, weight_ranges, stores, languages, order_details, configurations, order_discounts. + [*] WS : refactoring + [*] WS : refactoring + + Fixed bugs: + + [-] All : Bug Fixed #6453 added missing fields to Manufacturer : meta title,meta description.meta keywords,short description... + [-] All : Bug Fixed #6474 "carrier_tax_rate" in the "_orders" table is updated with a tax rate + + [-] Installer : Fix on ntrees + [-] Installer : Missing escape characters in database_structure + [-] Installer : Taxes removed from SQL / Languages & Configuration loaded during checkInfosStep + [-] Installer : Upgrade 1.4.0.5 TaxRulesGroup + [-] Installer : Fixed bug #6477 - Field 'ecotax_tax_rate' doesn’t had a default value + + [-] FO : A product with combinations still displays price TI when taxes are disabled + [-] FO : blockcms module don't display anymore unactive cms categories or cms + [-] FO : Bug fixed #6311 - Width and height tags has been added in product.tpl on the default product picture + [-] FO : Bug fixed #6409 (1.4) - Product customization works fine now + [-] FO : Bug on product page when group reduction : tax excluded fixed + [-] FO : cms are now order by position on sitemap + [-] FO : Corrected bug on product page for reduct price. (When using a price changing in Specific price no changes on reduct price) + [-] FO : Currency changes on product.js are no more bugued. + [-] FO : Currency recompatible with specific price. + [-] FO : Deleted CMS won't let anymore "|" in footer's links. + [-] FO : fixed bug #6098 + [-] FO : Fixed bug #6115 - Added +/- images sizes (width, height) in the cart tpl for better performances + [-] FO : Fixed bug #6146 - Manufacturer page was counting non-active products + [-] FO : Fixed bug #6232 (partially) - FancyBox is now working well with IE 6 + [-] FO : Fixed bug #6332 (error with chars è,é,à,ò,ù,ì in "Send to a friend" module + [-] FO : Fixed bug #6347 - Price was switch from tax incl. to tax excl. while updating qties in cart + [-] FO : fixed bug #6382 - Error on Checkout orders + [-] FO : Fixed bug #6388 - Categories were not sorted on sitemap page + [-] FO : Fixed bug #6396 - Several issues with FancyBox (persistant arrows and loading image error) + [-] FO : Fixed bug #6398 -

were too big on CMS page + [-] FO : fixed bug #6405 - Error when clicking on category block title + [-] FO : Fixed bug #6406 - Several errors with large digital files downloads + [-] FO : Fixed bug #6494 - Error with Minify HTML option (CCC) / Smarty + [-] FO : Fixed bug - Fatal error when you logout and click on a product (Tools::getFullPath) + [-] FO : Fixed bug, the downloadable file icon was displayed in history.tpl for every orders + [-] FO : Fixed design bug for the quantity field in shopping-cart.tpl + [-] FO : Fixed several Smarty warnings (identity.tpl, product-list.tpl) + [-] FO : Fixed several Smarty warnings on order-follow.tpl + [-] FO : Fixed small error on sitemap (Smarty isset added) + [-] FO : Fix Smarty2 issue + [-] FO : 'Price Lowered' is now displayed with attributes. + [-] FO : product comparison JS always loaded + [-] FO : set isset() to check vars existence in tpl. + [-] FO : sitemap.tpl updated for smarty 3 + [-] FO : Small design issue fix for product comparison feature + [-] FO : Specific prices applicated to all currencies are now affected by currency. + [-] FO : The bookmark icon is not display anymore on Chrome because browser does not allow this function + [-] FO : Unit price changing with currency fixed + [-] FO : When "Display unavailable product attributes on product page:" is disabled on Preferences->Products, colors on FO are hidden too. + [-] FO : When tax excl prices displayed, display "tax excl." instead of "tax incl." + + [-] BO : Bug Fixed #6499 Tax import problem + [-] BO : Adding default translations for cms categories when adding a language + [-] BO : AdminCountries unknow column id_tax + [-] BO : AdminTaxRulesGroup, Chrome Show/Hide on states + [-] BO : Bug fixed #6266 (1.4) - Class PDF - Font PDF can now be changed + [-] BO : Bug fixed #6377 - Import Tab (field available) - list is now updating + [-] BO : change the sort method for module to correct a bug occured in php <= 5.2 use a user sort (uasort) + [-] BO : Creating a discount from AdminOrder page won't change anything in table ps_order anymore. + [-] BO : CSS + Missing translations on AdminTaxRulesGroup + [-] BO : Errors not thrown anymore when impossible to connect to Prestashop Addons for example + [-] BO : Fixed #5784 on file binary which not return same result in different environments + [-] BO : Fixed bug #3876 - Added some Tools::strlen() instead of strlen in order to manage special chars + [-] BO : Fixed bug #5418 - Updated default EUR/USD currency rate (1.20 -> 1.32) + [-] BO : Fixed bug #5877 - All help boxes were displayed for downloadable products + [-] BO : Fixed bug #6184 - Thickbox was still in use on checkout page, replaced by FancyBox + [-] BO : Fixed bug #6191 - Design error on "Back to product button" (AdminAttributeGenerator.php) + [-] BO : Fixed bug #6224 - Date picker wasn't working properly for swedish language + [-] BO : Fixed bug #6293 - Cookie was created in password.php page while it was useless + [-] BO : Fixed bug #6365 - Unit price with commas was producing an error + [-] BO : fixed bug #6386 - Admin Dashboard + [-] BO : fixed bug #6410 - Product global information - View product sales + [-] BO : fixed bug #6421 + [-] BO : fixed bug #6434 + [-] BO : fixed bug #6439 + [-] BO : Fixed bug #6442 - Categories were not sorted on product page + [-] BO : fixed bug : don't display invoice icon when there are no invoice to display + [-] BO : fixed bug in Back office when you edit a category + [-] BO : Fixed error warnings with themeinstallator + [-] BO : Localization use only XML files + [-] BO : Notice / Missing permissions on AdminTaxRulesGroup + [-] BO : Now the webservice tab stay on the line... + [-] BO : One check is add : if the file is larger than the upload_max_filesize or post_max_size an error is display. + [-] BO : oops ! I forget to encode the value for the url (see previous log) + [-] BO : Order Slip bug when percentage voucher applicated on the order + [-] BO : overflow hidden on the shop name, for long, long, long, long, long shop name + [-] BO : Put an error when cannot remove temprary file when importing a language + [-] BO : related to #4804, comments added into the file + [-] BO : related to #4804, from pack field, bug occurred when product ref is return with the name. See comment for details + [-] BO : related to #5568 + [-] BO : related to #5568, (AdminCatalog tab using AdminProducts tab) for a product, change the SEO-title when name field is changed. + [-] BO : related to bug #6504 - The weight of an attachment was wrong converted. + [-] BO : Restored iframes + [-] BO : Restored the possibility to change cms and cms categories' positions by clicking on arrows + [-] BO : Restored update in getter for retro compatibility 1.2.5 to earlier version + [-] BO : Specific prices are now more comprehensible when affected to currencies + [-] BO : Static method getCarrierTax + [-] BO : Store Image Management. + [-] BO : Vouchers and Orderslips created from AdminOrders take now discounts on order in count + [-] BO : Vouchers creation bug when percentage reduction. + [-] BO : width back to 960px instead of 1050px and a few tabs moved in order to fit this width + + [-] Classes : fixed bug on cookie with logout method + + [-] Core : Deleted a deprecated method (getAllSubCats() in Category.php & CMSCategory.php) + [-] Core : fixed bug #5985 + [-] Core : Fixed bug #6495 - Error with Smarty PHP filemtime() function call + [-] Core : Fixed bugs #6278, #6300, #6360 - Smarty 3 related errors (function call ‘register_outputfilter’ is unknown or deprecated.) + [-] Core : warning removed in MySQL class which occurred when you call ExecuteS with something else than a SELECT + + [-] MO : cashondelivery not configurable in config.xml + [-] MO : Corrected a warning when there isn't any native module in themeinstallator's xml and improved logo.gif + [-] MO : Created a function to turn a price with a currency format to float in js. Corrected loyalty module bug with products > 1.000 + [-] MO : BlockLanguages - Smarty v2 & v3 + [-] MO : Fixed a bug with theme installer when modules are in the configuration file but not in the archive + [-] MO : Fixed a SQL error while trying to uncheck all category boxes for layered navigation + [-] MO : Fixed blockcms module bug in BO. + [-] MO : Fixed bug #5290 - "Exclude discounted products" feature wasn't working properly + [-] MO : Fixed bug #5374 - Points given in loyalty module weren't taking in account tax exemption + [-] MO : Fixed bug #5976 (partially) - CMS block errors + [-] MO : Fixed bug #6044 - Gsitemap error while using CONCAT() and hardcoded french title for images + [-] MO : Fixed bug #6413 - Loyalty module was producing an error while user clicks on "Log out" + [-] MO : Fixed bug #6459 - SQL syntax error during insertion + [-] MO : Fixed bug #6486 - PayPal module was displaying French links to everyone + [-] MO : Fixed bug #6496 - Deleted useless paypal.tpl file in PayPal module + [-] MO : fixed bug into paypal module, moreover, the delivery address is send to PayPalAPI + [-] MO : Fix issue on blockcategories with smarty2 + [-] MO : from unsigned to signed for the ip address stored by fianetfraud + [-] MO : Module Fedex - Currency conversion correction + [-] MO : Modules translations (and tax bug fix) for UPS, USPS and FEDEX + [-] MO : php errors undefined output fixed + [-] MO : removed a php error in mondial relay + changed id_tax to id_tax_rules_group + [-] MO : ShopImporter Warning: Call-time pass-by-reference has been deprecated + [-] MO : template updated for smarty 3 in module mailalert + [-] MO : Url bug fixed in fianetfraud module. + + [-] TR : Bug fixed #6341 (1.4) - Md5 Key has been changed, french and spanish translations were reuploaded + [-] TR : Bug fixed #6341 (Up from comment) - Md5 Key has been changed, french and spanish translations were reuploaded + [-] TR : In AdminThemes. + [-] TR : installer traduction about License agreement updated. + [-] TR : Translations fixed - Md5 Key has been changed, french and spanish translations were reuploaded + + [-] SQL : fixed bug #6404 - Sql Error on prestashop upgrading process + + [-] WS : Bug fixed on Supplier resource. + [-] WS : Bug fixed & optimization + [-] WS : fixed bug #5703 + [-] WS : fixed bug #6346 : Now webservice works on windows servers + + +#################################### +# v1.4.0.4 - 3747 (2010-12-08) # +#################################### + + Added Features: + + [+] Project : Adding Smarty v2.6.20 as an alternate template engine (see _PS_FORCE_SMARTY_2_ in defines.inc.php) + [+] Project : Adding Smarty v3.0.5 as the default template engine + + [+] FO : Cart and wishlist -> New effect with the product picture! (No more "transfer" effect) + [+] FO : Cross selling module has now its own CSS file + [+] FO : Deleted thickbox, now using FancyBox! + + [+] BO: Possibility to export your data statistics + + [+] MO : New Module - UPS - upscarrier/ + + [+] WS : now acceptable image types are listed is in image xml get view + [+] WS : now the entity image_type is managable via WS + [+] WS : Now the filter sort_list become sort and the filter limit_list become limit, easier to write... + [+] WS : now the webservice system use an nice object to improve evolutions, it is singletonized too; now the webservice is able to able manage images (get the general images for the moment) + [+] WS : now you can put general images via WS + [+] WS : Now you can request the webservice with the HEAD method to avoid useless large requests; Now you can retrieve the webservice version in the request headers, fortunately when auth was valided, for security reason... + [+] WS : Now you can sort by many fields as example : [id_DESC,weight_DESC] + [+] WS : now you can use a simulated method to use post in place of put (useful to post images) + [+] WS : Remove osoletes tests of webservice admin tab + + Improved/changed features: + + [*] Project : All floatval() functions are now replaced by a casting of (float) for optimization. + [*] Project : Upgrading from Smarty v2.6.20 to v3.0.5 + + [*] Installer : new default employee profiles added to the installation + + [*] FO : Added a link to 'Our stores' in sitemap.php + [*] FO : add method to get all informations for make a link in each active language. + [*] FO : add method to get all informations for make a link in each active language. + [*] FO : Categories and pages are aligned to make sitemap.php a shorter page + [*] FO : change the style for button specialsPrice block. + [*] FO : change the style for button specialsPrice block. + [*] FO : Deleted jQuery hotkeys + [*] FO : Fixed bug #6176 and an other bug on order confirmation when you buy a free virtual product + [*] FO : for get links for each language : search active language in sql request. + [*] FO : get the url_rewrite for each language + [*] FO : h2 tags changed to h1 tags for referencement + [*] FO : Improve SQL replication performance + [*] FO : Upgrading from jQuery v1.2.6 to v1.4.4 + + [*] BO : Attachment files maximum size is now setable in AdminPreferences + [*] BO : "Bug" #6180 corrected + [*] BO : Combinations impact prices are now stocked without tax into the database (You still can set it with tax) + [*] BO : Fixed bug #6233 + [*] BO : New module category : Payment security + [*] BO : Override .ico tabs on the themes + [*] BO : Traductions updated + [*] BO : Upgrading from jQuery v1.4.2 to v1.4.4 + [*] BO : When adding a downloadable product, you can now delete it without exiting the product page. + + [*] Classes : Smarty cache setting added to the Back Office + + [*] MO : Blockcms displays now cms ordered by position set in bo. + [*] MO : Module UPS - Template Xml for webservices + [*] MO : Mondial Relay have now an update for v1.3 to v1.4 + + [*] WS : changing filter system : before you wrote id=3 and now filter[id]=3 ; displayFields become display + [*] WS : improve ws + [*] WS : now you can get a blank xml tree an a synopsis for the resources to add + [*] WS : remove the useless "p" namespace, it was making me nervous... + + Fixed bugs: + + [-] Project : add condition for Tools::dateFormat() when using Tools::displayDate() method, otherwise a notice failure occured. + + [-] Installer : Bug fixed #6268 (1.4) - db.sql - id_currency in PREFIX_country was set to default '0' + [-] Installer : missing closure tag php + [-] Installer : Warning fixed (_PS_FORCE_SMARTY_2_ wasn't defined) + + [-] FO : Bug fixed #5940 - $this->$this->cookie + [-] FO : bug product.tpl due to update Smarty + [-] FO : Category title is now clickable to access category.php?id_category=1. Bug #6254 fixed + [-] FO : Contact-form don't return htmlentities in form now. Bug #5278 fixed + [-] FO : Corrected smarty problems when id_product or id_category is not set + [-] FO : correct link for friendly URL. Simplify some process + [-] FO : CSS bug on accessories. + [-] FO : delete back arrow button (called cancel) on color picker box. + [-] FO : display "see all pictures" link (js event) under thumbnail list. + [-] FO : ecotax display fixed + [-] FO : fixed bug #6206 + [-] FO : fixed bug #6211 + [-] FO : fixed bug #6226 + [-] FO : Fixed bug #6258 with the automatic redirection to 'install' directory + [-] FO : fixed bug : price display method on cart summary + [-] FO : fixed bug : the id of default image missing + [-] FO : Fixed idTabs js, deleted @ for jQuery compatibility purposes + [-] FO : Good link for CMSCategory friendly url in Link classes. + [-] FO : Improve code for delete smarty notice + [-] FO : Improve code for delete smarty notice + [-] FO : Javascript price displaying cleaned to work exactly like php method : getPriceStatic. + [-] FO : JS fixed on product page (when no ecotax was defined) + [-] FO : New js calc price on product page debuggued. Bug #6319 fixed + [-] FO : Product ecotax display fixed (was the price display method was set to tax excluded) + [-] FO : Product::id_default_category was used rather than Product::id_category_default + [-] FO : product-list.tpl updated + [-] FO : Product page js repaired. Definitely. + [-] FO : Product price fixed (when an ecotax applies and the product has combinations) + [-] FO : Product price fixed (when a reduction applied and a currency different from the default one was selected) + [-] FO : Product-sort repaired. Bug #6151 fixed + [-] FO : Quantity discount display fixed (when the customer group price display is set to tax excluded) + [-] FO : recurse for cms displaying in sitemap + [-] FO : Removed pagination variables errors. Bug #6156 + [-] FO : Removed Warning from sitemap (smarty update) + [-] FO : Reported addresses updates on AuthController. Bug #6222 fixed + [-] FO : Report optimization on category.php. Bug #6314. + [-] FO : Search minimum length was decreased by one on the FO. Bug #6309 fixed + [-] FO : sitemap.php is not dependant from blockcms module now (display all cms pages anytime) + [-] FO : Smarty cache enabling fixed + [-] FO : Specific prices + default attributes modifications + [-] FO : Removed an invisible image loaded from store.apple.com from default descriptions. + [-] FO : Switch language links + [-] FO : Templates update. + [-] FO : .tpl for order.php updated + [-] FO : updated history.tpl + [-] FO : Updated new sitemap.tpl for smarty update. + [-] FO : Updated product.tpl for smarty update + [-] FO : When Special product was loaded the bloc displayed a product even no product are avaiable. + [-] FO : wrong var was set to get the discount expiration date. + + [-] FO / MO : #6153 Conflict with same name of 2 var in 2 different module. + + [-] BO / FO : bug #6066 allow to set unlimited value for an virtual product. set with 0 value. + + [-] BO : Bug fixed #6126 - AdminProduct - Problem caused by Zoom Size in IE8 is fixed now + [-] BO : Corrected error when modifying an address in BO when everything is alright. Bug #6328 + [-] BO : Ecotax input fixed + [-] BO : Fixed a bug with themeinstallator import when there is only one theme in the archive + [-] BO : fixed bug #6139 + [-] BO : fixed bug #6148 + [-] BO : fixed bug #6169 + [-] BO : fixed bug #6175 + [-] BO : fixed bug #6187 + [-] BO : fixed bug #6192 + [-] BO : fixed bug #6195 + [-] BO : fixed bug #6203 + [-] BO : fixed bug #6211 + [-] BO : fixed bug #6212 + [-] BO : fixed bug #6214 + [-] BO : Fixed Parse error in AdminPorduct.php for downloadable module. Bug #6307 fixed + [-] BO : fixed the import module fieldset display + [-] BO : intval restored on a cast in base 8. + [-] BO : Optimization PDF creation. Bug #6315 fixed + [-] BO : Product cancellation fixed (when using ecotax) + [-] BO : Product reduction clarified + [-] BO : Product taxes by country displays an info message + [-] BO : Restored an intval for a cast in base 8. Bug #6324 fixed + [-] BO : Traduction updated + [-] BO : Translations AdminProduct updated. Bug #6190 fixed + [-] BO : Unit price option is not hidden anymore. + [-] BO : When ecotax, attribute Impacts are not affected anymore + [-] BO : When unexpected "," in tags field, no fatal error. + + [-] Classes : fixed bug in displayWarning() + [-] Classes : Group reduction (concerning categories) cache clearing fixed + [-] Classes : Prices (product & shipping) fixed when taxes were disabled but one of them assigned to the product/shipping + [-] Classes : setlocale() fixed + + [-] MO : Blockcms translations updated + [-] MO : Bug fixed #6185 (1.4) - Module MailAlerts - Module Mailalert has been repaired and now refers to order + [-] MO : crossselling.tpl updated + [-] MO : Integration problem on prepaidServices. Bug #6204 fixed + [-] MO : Mondial Relay cleaned + [-] MO : Mondialrelay try to update only if module is installed + [-] MO : Mondial Relay works again on Chrome. + + [-] WS : correct lang displays + [-] WS : Fixed check for activated keys + [-] WS : Fixed - We now display mysql error in debug mode + [-] WS : samples folder move + + [-] TR : Bug fixed #6216 - Modules BirthdayPresent, Bankwire and Secuvad - Md5 Key has been changed, french and spanish translations were reuploaded + [-] TR : Bug fixed #6246 #6230 - Md5 Key has been changed, french and spanish translations were reuploaded + [-] TR : New Translations fixed (1.4) - Md5 Key has been changed, french and spanish translations were reuploaded + [-] TR : Translations fixed (1.4) - Md5 Key has been changed, french and spanish translations were reuploaded + + [-] SQL : Missing `conversion_rate` in ps_order_slip in database on install + +#################################### +# v1.4.0.3 - 3508 (2010-11-25) # +#################################### + + Added Features: + + [+] Project: Add new feature: Geolocalization + [+] Project: now you can define specific country taxes for a product + + [+] Installer : Added timezone choice in the installer + + [+] FO : Display the current RAM usage in the debug informations :-) Very nice.... + + [+] BO : You can now install language's pack with two clicks on AdminTranslation Page + [+] BO : the currencu conversion rate is now stored in the tables orders and order_slip in order to provide a more accurate calculation of the sales statistics + + [+] MO : new module stats dashboard + + Improved/changed features: + + [*] Project : intval() replaced by (int), optimization. + [*] Project : improve url rewrite for static page + + [*] FO : Special breadcrump for CMS Pages. + [*] FO : Allow to choose if "our store" link is displayed at the end of the block, each block is distinguish. + [*] FO : Add a parameter in both Tools::getPath() and Tools::getFullPath() method to distinguish what type of category is used for getting the path. + [*] FO : removed useless query by changing timezone storage + [*] FO : a bunch of useless SQL queries removed + [*] FO : fixed bug in order confirmation + [*] FO : set the breadcrumb in cms page and in cms categories pages. + + [*] BO : add 'display_store' column in cms_block table + [*] BO : add 'display_store' column in cms_block table + [*] BO : add 'display_store' column in cms_block table + [*] BO : delete the displaying option for block cms in the AdminStore tab. The option is moved on the module block CMS. + [*] BO : For each admin list (products for example), set a max width for a the tmp thumbnail. + [*] BO : You can now add an attachment from the AdminProduct page without going to AdminAttachments. + [*] BO : new stats homepage + [*] BO : choose the tab according to prestashop version + [*] BO : fixed bug css + + [*] Classes : SQL optimization perfomances with adding cache object into ObjectModel + + [*] MO : When creating a carrier with Mondial Relay, Weight range are automatically set to the minimum and maximum authorized by Mondial Relay + [*] MO : Mondial Relay module don't need a google api key to work anymore. Updated to googlemaps JS v3. + [*] MO : new version of socolissimo fixed bug + [*] MO : fixed bug in socolissimo //new version 1.4 + [*] MO : search engine keywords improvements + + [*] WS : added full HTTP header in debug mode inside library of web service + [*] WS : simplify the classes ws parameters synthax + + Fixed bugs: + + [-] Project : Use of deprecated functions + [-] Project : Invoice PDF was never sent by mail + [-] Project : now this plugin works with the Dean Edwards JS Packer + + [-] Installer : alter table cms_block + [-] Installer : Fix buf on upgrade with _RIJNDAEL_KEY_ + [-] Installer : Countries' select is now filled with countries in database replacing hardcoded countries. + [-] Installer : fixed bug CMS upgrade + + [-] FO : fixed bug on authentification + [-] FO : bug #6143 - delete the button home in the bottom of cms pages. + [-] FO : fixed bug in cart summary + [-] FO : delete a condition according with bad getter in CMScontroller, now is more efficient. + [-] FO : fixed bug in adminModule + [-] FO : fixed bug #6130 //now modue don't use jquery plugin accordion but "presta made" accordion + [-] FO : bug #6143 - delete the button home in the bottom of cms pages. [*] FO : set the breadcrumb in cms page and in cms categories pages. + [-] FO : correct a bug in LinkCore::getCMSCategoryLink() method, to test if category is an object, we cast it to an int !! Not really a good way ! + [-] FO : related to bug #6143 - Set $cms_category as an attribut of the controller for get it in different method, it appears that it due to an oversight. + [-] FO : fixed bug in cart summary (voucher) + [-] FO : related to bugs #5871 and #6127 - on FrontControllerCore::pagination() method, $nbProducts is added as a parameter rather than a global var. Each controller which use this method has been upgrade. + [-] FO : fixed bug #5769 + [-] FO : Quantity discount display fixed on the product page (when using combinations) + [-] FO : fixed bug #6096 + [-] FO : fixed bug #5806 + [-] FO : adding time calculation on debug + [-] FO : Translate the store meta data + [-] FO : Bug fixed #6054 - displayCarrier() => assignCarrier() + [-] FO : Hardcoded french translation in order-opc.tpl changed. Bug #6082 fixed + [-] FO : fixed bug on order opc and refresh remaining amount to obtain free shipping + [-] FO : In product.tpl in the color picker block, the cancel button has been deleted. Indeed the button behavior was not according to his name. It displayed all pictures when a user already choosed a color declination. The icon is moved on the side of the button "display all pictures". + [-] FO : removed useless queries by caching manufacturers and suppliers names + [-] FO : removed useless queries by caching group reductions + [-] FO : removed useless queries by caching hook/module association + [-] FO : Optimized SQL requests in Category and CMSCategory + [-] FO : Postcode can be with or without ' ' or '-' when needed + error more explicit when postcode failure. Bug #6039 fixed + [-] FO : When a product is new, it is display everytime product-list is displayed. Bug #5654 fixed + [-] FO : javascript link typos + [-] FO : ASC => asc for google referencement compatibility. Bug #5850 fixed + [-] FO : https not used when SSL is enabled + + [-] BO / FO : Invoices works perfectly with a 100% voucher and a total paid price of 0.00. Bug #5984 fixed + + [-] BO: Fixed monetary local on import #5701 + [-] BO: Fix stock movement duplicate qty #6073 + [-] BO : fixed bug in adminCMS + [-] BO: Fixed vat number on pdf invoice #6108 + [-] BO : Change the value of the name field, if they are no value in a specific language, method set empty value, don't search in $block_cms array (Since value isn't set, a Notice error occured) + [-] BO : report #6129 - Set the end tag on the AdminLocalization::display() method. + [-] BO : AdminTranslations on import lang behaviour, the method ValidateCore::IsLanguageFileName($file_name) used wrong var for the preg_match function. Consequently import a language don't worked. + [-] BO : Js errors on adminProduct. Bug #5640 fixed + [-] BO : product link in customer thread wasn't always good + [-] BO : Php error fixed in AdminGroups. Bug #6087 fixed + [-] BO : You can now configure carriers' price for disabled zones. Bug #6074 fixed + [-] BO : Attribute tab redirections cleaned (with the add of specificprice tab). Bug #6078 fixed + [-] BO : If default attribute group is coloris attribute group, options colors weren't displayed. Now yes. + [-] BO : fixed bug #5793 + [-] BO : fixed bug #5677 + [-] BO : You can't install a module two times by "installing the selection" anymore + [-] BO : Removed js error form AdminProduct on Prices tab + [-] BO: You can now add stock movement on combination creation + [-] BO : Number of messages was always 0 in Customer messages + [-] BO: Improve display of stock movement / fix movements with attributes + [-] BO : fixed bug #5906 : the order was set as "On backorder" when there was one item available for the order + [-] BO : fixed bug quantity display on product page + [-] BO : fixed bug #5262 clean position when update categories + [-] BO : fixed bug no display token invalid in adminCatalog and adminContent + [-] BO : fixed bug #6006 - Track The Order link to new page + [-] BO : Removed js errors from search field in BO. Bug #6032 fixed + [-] BO : FriendlyURL filled automatically by filling meta-title field. Bug #6019 fixed + [-] BO : Permissions set for AdminPerformance. Bug #6022 fixed + [-] BO : fixed bug #6016 + [-] BO : fix mailalert fatal error after adding product image + [-] BO : upload tar module Bug #5919 fixed + [-] BO : customer service email fixed + [-] BO : Validation of dni was false (return negative value to ObjectModel), Bug #5932 fixed + [-] BO: isPicture function works now fine even if functions are disabled like exec + + [-] Classes : Ecotax tax application fixes (does apply the tax regarding the customer location) + [-] Classes : French ecotax fixed (was working only without reduction and with a product tax of 19.6%) + [-] Classes : Ordered product's quantity discount fixed (storage error since the specific price implementation) + [-] Classes : fixed bug when shipping cost are external + [-] Classes : Free shipping voucher display fixed + [-] Classes : Product price fixed (when using customer group reduction) + [-] Classes : fixed bug for external shipping cost + [-] Classes : fixed bug #5990 + [-] Classes : fixed bug #5735 - Deletion of group id=1 should not be allowed + [-] Classes : fixed bug #6079 - Fatal error on pdf invoice + [-] Classes : fixed bug in ObjectModel cache system + [-] Classes : Carrier getDeliveryPriceByPrice() & checkDeliveryPriceByPrice() now convert to default currency + [-] Classes : Bug fixed #5959 Incorrect shipping cost by price + [-] Classes : Cache key in getBy"Range" was incorrect + [-] Classes : fixed bug #6001 - W3C validation of search result page, error in Link.php + [-] Classes : date('Y-m-d H:m:i') became date('Y-m-d H:i:s'), bug #6033 fixed + [-] Classes : fixed bug for external shipping + + [-] MO : Mondial Relay more stable + [-] MO : Mondial relay Bug fixed. + [-] MO : blockcategories configuration does clear its display cache + [-] MO : fixed a little bug into blockcart module + [-] MO : Removed 3 useless DB search in Mondial Relay module. And updated for new modifications on carriers module. + [-] MO : bug #6124 if param $begining and ending are false, method used current date for method Product::getPricesDrop() and Product::getRandomSpecial() + [-] MO : bug #6124 In BlockSpecials::hookRightColumn() delete precedent update (see log) // the problem needed more change in other files + [-] MO : In BlockSpecials::hookRightColumn() method - name var $date_today to $date_now + [-] MO : #6124 In BlockSpecials::hookRightColumn() add dates params into Product::getRandomSpecial() method. + [-] MO : MondialRelay Module work now with adresses containing '"' + [-] MO : fixed bug #5571 - Customer Qty Email on mailalert module + [-] MO : fixed bug #6080 - User info block cart button hardcoded to order.php + [-] MO : fixed bug in socolissimo + [-] MO : fixed bug in blockcart + [-] MO : Mondial Relay Module don't create useless archive directory anymore + [-] MO : Sales & Orders Stats Module fixed + [-] MO : Cashondelivery Module work again on FO. Bug #6025 fixed + [-] MO : fixed bug #6008 - Moneybookers error when no local cards + [-] MO : Updating the updater for merchants who forget to copy their editorial.xml before updating... + [-] MO : Removing parse error from mondial relay + [-] MO : Deleted warning mondial relay + corrected minor bugs (#5465 and #5795) + [-] MO : search engine bots do not create hundreds of connections anymore (may not be stable) + + [-] CSS : fixed bug #6018 - CSS is repeated in themes/prestashop/css/modules/blockcms/blockcms.css + + [-] SQL : Updates bug resolved (PHP:ecotax_tax_application_fix()) + [-] SQL : No more errors while updating + [-] SQL : Only one carrier is installed when installing Prestashop lite. + [-] SQL : ps_meta_lang : PREFIX_meta_lang + [-] SQL : Taxes are now installed in database when complete installation (not lite) + [-] SQL : States' iso code can be numericals + + [-] PDF : Ecotax display fixed + + [-] WS : add ws tables when upgrading + [-] WS : namespace prestashop is now deleted + [-] WS : examples are corrected due to new namespace deletion + [-] WS : now we are able to filter get result with an array of only one value + + Deprecated methods: + + [~] Deprecated : Category:: hideCategoryPosition() + [~] Deprecated : Tools::getTimezones() + [~] Deprecated : Product::getReductionValue() + +#################################### +# v1.4.0.2 - 3261 (2010-11-10) # +#################################### + + Added Features: + + [+] Project : Add VAT support + [+] Project : Add InnoDB support + [+] Project : Added UPC barcodes (US/Canada) management (both on product and combinations) + [+] Project : You can now override classes and front office controllers without any core modification + [+] Project : DisplayAsDeprecated function + + [+] FO : Added file upload in contact form and customer service + [+] FO : Added Shop logo and editorial image dimensions + corrected shop name bug on installer + [+] FO : Added some demo stores for the Store locator + [+] FO : Added the "Store locator" feature! using the latest Google Maps API (V3) + [+] FO : Added verification for zip code depends on country selected. + [+] FO : adding cache system for the getPageLink method + [+] FO : Adding One Page Checkout feature + [+] FO : ajax cart summary + [+] FO : Display units price if enabled + [+] FO : you can now specify an alternative domain or subdomain for your static content + [+] FO : Products comparison + + [+] FO / BO : Adding CCC (Combine Compile and Cache) and other frontend performance features, these feature was started with Olivier Bonningues from Oleacorner, Guillaume David and Mickael Surren from Croissance-Net. This was a frontend development training day with Lucas CHERIFI + [+] FO / BO : new options availables on AdminProduct, you can now show or not the price of product and define if this product is available for order + + [+] BO : Added activation to CMS pages + [+] BO : Added an activation to manufacturers and suppliers + [+] BO : Added an "Online only" flag (for products not sold in store) + [+] BO : Added an option in Preferences -> Products to undisplay the button "add to cart" when the product got attributes so customers must go see the product detail. + [+] BO : Added an option in preferences to choose the "Condition of use" CMS page + [+] BO : Added a WorkFlow to CMS pages + [+] BO : Added cache-control directive to the htaccess generator and some apache module checks + [+] BO : Added category in cms tab, position for cms pages + [+] BO : Added enable row to taxes + [+] BO : Added fields 'Need zip code' and 'Zip code format' + [+] BO : Added possibility to delete a product from his detail page (for a search in catalog) + [+] BO : added shipping external for modules + [+] BO : Added the condition of a product (new, used, refurbished) + [+] BO : Added the theme installer module + [+] BO : Added translation for CMS Tab + [+] BO : Added units price (weight, volume, unity) to configure on products pages + [+] BO : Added utility to implant a different logo for shop, mail and PDF. + [+] BO : Additional shipping cost by product + [+] BO : Add Memcached and FileSystem cache + [+] BO : Add stock movement management + [+] BO : AdminModulesPositions : new checkboxes in order to unhook many modules in one click. + [+] BO : An easy way to define fees by carriers for each zone + [+] BO : Automatic translations possible with Google Translate + [+] BO : Carrier behavior (by price/by weight) is now defined by Carrier + [+] BO : Carrier behavior (by range or by price) is now specific to each Carrier + [+] BO : Change category position in catalog + [+] BO : class added (ModuleCarrier) for shipping external + [+] BO : Disabled product can be previewed in front office + [+] BO : external shipping and range + [+] BO : Fix update script to change category name without number position + [+] BO : international call prefixes are now included in prestashop's countries + [+] BO : It's now possible to edit and translate your mail templates from BackOffice + [+] BO : Localisation, you can now choose between miles and kilometers + [+] BO : Meta-tags => SEO + [+] BO : New back end themes (but you don't know about it) + [+] BO : new buttons 'next' and 'previous' on order detail + [+] BO : new Customer Service included in the back office (an alternative to e-mails) + [+] BO : New module pages ! + [+] BO : new tab in Tools, this page give you many informations about your server configuration + [+] BO : now you can define a minimal quantity on product for command + [+] BO : payment modules can now log payment data in a common table + [+] BO : Predefined message when responding in customer service in now configurable (and bug with special characters in mail subject is fixed) + [+] BO : Upload your own store icon (for Google Maps, store locator) + [+] BO : you can now add a private note on the customer page + [+] BO : You can now add a voucher for a customer's group + [+] BO : You can now add others required fields in objects + [+] BO : you can now choose the background color of your back office + [+] BO : you can now cipher/decipher with Rijndael using mcrypt instead of blowfish (amazingly faster) + [+] BO : you can now export your invoices filtered by statuses + + [+] Classes : Localization pack support added + [+] Classes: Smarty cache support added + [+] Classes : Specific price support added to the PrestaShop 1.4 serie + + [+] MO : add a new module, date of delivery + [+] MO : Added a category restriction on the loyalty voucher's use on loyalty module + [+] MO : Added a pagination to loyalty module + [+] MO : adding a new partner module iAdvize + [+] MO : adding a new partner module: MondialRelay + [+] MO : adding a new partner module: Secuvad + [+] MO : Added possibility to display tax on a distinct line in the cart block + [+] MO : productcomments : A new hook on the product comparison page + [+] MO : added module envoimoinscher + [+] MO : new module socolissimo + [+] MO : Paysafecard + Cashticket + [+] MO : TrustedShops + [+] MO : Treepodia + [+] MO : TrustedShops : Check permissions on the /cache directory + [+] MO : modules css stylesheets and javascripts scripts are now overridable and overriden in the theme + [+] MO : new module Fia-Net SAC (France only) + [+] MO : new module Fia-Net Sceau de confiance (France only) + [+] MO : new module "stock stats" + [+] MO : new payment module "Ogone" (some translations are still missing and it needs a few more tests) + [+] MO : you can now empty 404 pages + + [+] SQL : Added row active to ps_currencies and added many currencies when installation + [+] SQL : Added zip/post Code for each countries and all linked to it + + [+] IN : States of Mexico + + [+] WS : Adding a RESTFul webservice for PrestaShop + + Improved/changed features: + + [*] Project : cookie is no more encrypted every time but in the destructor, at the end. You can still force setcookie by using Cookie::write() + [*] Project : Added {$img_store_dir} and _THEME_STORE_DIR_ and _PS_STORE_IMG_DIR_ + [*] Project : Cleaned some debug code in FrontController.php + [*] Project : Front controllers are now classes + + [*] FO : add an instant search feature for the block search on top, realized with Arnaud Iliadis from Web67 while PrestaShop training + [*] FO : Added a cookie to remember the "number of item per page" for a client + [*] FO : added css for sitemap + [*] FO : Added one hook in order-detail.php and one hook processCarrier in order.php. + [*] FO : added product ID to the contact form + [*] FO : added SQL caches to attachments and packs in order to reduce the number of queries speed up the front office + [*] FO : add new Javascript method for One Page Checkout + [*] FO : Add the "completely rewritten url" feature + [*] FO : Ajax cart summary input update qty + [*] FO : changed filter in adminModules + [*] FO : Confirmation mail sent before password regeneration + [*] FO : Corrected some sentences and listing all orders on the contact form + [*] FO : Creation of a SQL cache for the default attribute of a product, avoiding 1 to 3 queries for each product displayed on the FO + [*] FO : Customization field is now a textarea and handle \n + [*] FO : encrypt cookie only if a change has been made + [*] FO : get the quantity of the default attribute only if the product has attributes... + [*] FO : Improve performances for url rewriting links load + [*] FO : I really like optimizations :] (no less than 60 queries avoided on the cart summary, among other things) + [*] FO : New version of socolissimo 1.4 + [*] FO : Optimizations, optimizations and optimizations (mainly SQL queries dropped) + [*] FO : query for random specials optimized (RAND() is awful) + [*] FO : The cart summary now display available vouchers + [*] FO : Undisplay the button when set in BO. + + [*] FO / BO : improved feature minimal quantity for buy a product + + [*] BO : Added a button to make an attribute combination the default one easier + [*] BO : Added "all" blocks in permission page. + [*] BO : Added enable state for currencies + [*] BO : added multiple translation + [*] BO : added timer to back office tabs + [*] BO : added total sales -tx in statsproduct module + [*] BO : adding new tinyMC 3.3.9 + [*] BO : changed filter module + [*] BO : check if cms folder img exists + [*] BO : Customer page improved + [*] BO : Delete of message as well as threads in customer service + [*] BO : Developers can now specify if a field is required or not in Option fields + [*] BO : Display hook technical name in module positions tab + [*] BO : Display hook technical name in module positions tab + [*] BO : Features fields are now textareas to write more details on products + [*] BO : Fixed a bug with the tab navigation when UI mode is on hover + [*] BO : fixed bug in tinyMCE + [*] BO : .htaccess generation on Lang & Meta CRUD + [*] BO : Icons in navigation path bar + [*] BO : img/admin/delete.gif now different from disabled.gif + [*] BO : Improved unity price system : Unity editable by product + [*] BO : Improve Flashyturtle back office theme and back office login page. + [*] BO : move media server parameters in AdminPerformance tabs + [*] BO : New design for top of the first tab in the product page + [*] BO : new footer + [*] BO : New reduction support added to the import + [*] BO : new skin for errors, warnings and confirmations + [*] BO : now you can edit smarty config into AdminPerformance tab + [*] BO : Numeric ISO code now available for currencies + [*] BO : Optimised the category recurse tab + no limitation to 5 subcategories anymore + ajax_call on AdminProduct page to optimize it at the loading. + [*] BO : optimization (30% less queries on every entity listing, then 50% less queries on the module page and again a few less on the order detail and customer pages) + [*] BO : order details display improvements + [*] BO : Print pdf by statuses (explaination + fixed width) + [*] BO : remove old tinyMCE + [*] BO : Sending a confirmation mail to the customer when he sends a message to the customer service + [*] BO : Thread message merge algorithm has been improved on customer service + [*] BO : Tracking displays out of stock attributes + [*] BO : Transformed the last element of the path_bar in BO to a link (blue) + [*] BO : weights equal to zero are not taken into account anymore in the search indexation + [*] BO : Width switched from 960px to 1050px (only 15% of PS users are still using 1024x768) + [*] BO : You can now add your specifical configuration for your hosting on AdminGenerator + [*] BO : You can now disable the "hover on tabs" feature + [*] BO : You can now edit or delete a product from AdminManufacturer page + [*] BO : you can now export invoices filtered by several status IDs + [*] BO : you can now translate everything in the languages which are disabled + + [*] Classes : added CarrierModule.php + [*] Classes : added hook Paymant CC added + [*] Classes : Distance unit support added to localization pack + [*] Classes : remove ModuleCarrier.php + [*] Classes : Configuration::get Optimization + + [*] MO : add category on many modules + [*] MO : Added possibility to delete the logo frontpage image in editorial module + [*] MO : blockcategories module cached + [*] MO : Blockinfos and Blockvariouslinks replaced by Blockcms module + [*] MO : Display of Promotions / New Products / Best Sellers can be disabled when there are nothing + [*] MO : change category + [*] MO : added socolissimo translations + [*] MO : Cleaned the wishlist module and added mail send when creating a wishlist + [*] MO : update Socolissimo for expeditor inet + [*] MO : Editorial module don't stock in an xml file anymore, in case of updating : the xml file will be imported in database and delete + [*] MO : mailalerts are now deleted from the DB when products linked to this mailalert are removed + [*] MO : New blockCms module. (new blockinfos) who work with new recents modifications of CMS pages. + [*] MO : new options for stats datamining + [*] MO : new PayPal and Moneybookers modules added + [*] MO : New reduction & quantity discount support added to the treepodia module + [*] MO: Some improvements on Product Comments (Allow guests to post, create criterion for all catalog/categories...) + [*] MO : You can now display the price on the crossselling and the productscategory module's block (Feature 26 mantis resolved) + + [*] IN : mcrypt is automatically chosen if available + + [*] SQL : Added two hooks in database. + [*] SQL : Added VAT (taxes) values for many countries + [*] SQL : Updated zones (Us becomes North america, central america and South america, etc...) + [*] SQL : When installing, only default country's tax is enable else disabled. + + [*] WS : add i18n support for webservice + + Fixed bugs : + + [-] Installer : Bug fixed #5325 - SQL error + [-] Installer : fixed sql create table + [-] Installer : Installation fixed (condition field was missing) + [-] Installer : ps_ changed to PREFIX_ + [-] Installer : Fixed a crash issue during install process (additional_shipping_cost had no default value) + + [-] FO : "add to cart" is now protected against bots + [-] FO : ajax "add to cart" now uses a POST request instead of GET + [-] FO : Best error gestion for suppliers (HTML broken before) + [-] FO : bug #5638 is fixed : Incorrect css file name + [-] FO : bug #5871 is fixed - this-> missing + [-] FO : Bug fixed #5208 - HTTPS CGV + [-] FO : Bug fixed #5468 - Phone number in new order email + [-] FO : bug fixed on One page checkout + [-] FO : bug is fixed on Vat number field + [-] FO : css typos (thank you Melinda) + [-] FO : Debug on the displaying "Add to cart" button on search page. + [-] FO : Discounted product retrieval fixed + [-] FO : fixed ajax cart summary when block cart not ajax + [-] FO : fixed ajax cart summary when block cart not ajax for order opc + [-] FO : Fixed and rewritten changecurrency.php (blank page previously), lighter and faster + [-] FO : fixed bug for category page. The images get now their size even if the image is missing. + [-] FO : Fixed bug for page addresses when one of the address goes right instead of clearing left + [-] FO : fixed bug on sitemap + [-] FO : fixed css position for cart summary + [-] FO : Fixed SQL error on sitemap.php + [-] FO : Global iso added for urlrewriting + [-] FO : Missing parameters, new products not displayed + [-] FO : onkeydown -> onkeyup in authentification.tpl Bug #5378 fixed + [-] FO : Phone number advertisement more visible + [-] FO : Product price display fixed (when changing the combination and specific price applied) + [-] FO : Product price fixed (retro-compatibility issue) + [-] FO : Product price fixed (rounding issue) when quantity discount applied + [-] FO : SQL query fixed on prices-drop.php + [-] FO : Updated an error message. + [-] FO : Url rewriting - Added flags [QSA, L] in controllers rules + [-] FO : fixed bug for ajax cart summary + [-] FO : Deleted useless css files (blockinfos and blockvariouslinks modules) Bug #5823 fixed + + [-] BO : active filter is now usable without SQL error. Bug #5666 fixed + [-] BO : Added a complementary security on ajax_category_list call + [-] BO : added RewriteRule for cms catégories + [-] BO : AdminDB now list only PrestaShop prefixed tables #5873 + [-] BO : AdminTab traductions restored + [-] BO : ajax call for categories on product page. + [-] BO : Better anchor management in module tab + [-] BO : Bug #4870 problem to reorder product Fixed + [-] BO : Bug #5965 fixed : When passing an argument id_cart to getPriceStatic , new cart replace global cart. + [-] BO : Bug fix #5199 - Country creation: Wrong parameter count + [-] BO : bug fixed #5346 - Not accounting for alternate theme + [-] BO : Bug fixed #5454 - Bad EN translations on product page + [-] BO : Bug fixed #5798 - Stock movement default + [-] BO : bug fixed #5819 - translation fix for AdminCustomerThreads.php + [-] BO : bug fixed #5840 - Minor issues in new login page + [-] BO : Bug fixed #5844 - page not found csshover.htc + [-] BO : bug fixed #5860 - delete attribute, confirm message say attribute number! + [-] BO : Bug fixed #5868 - Import tools - Default language not selected + [-] BO : bug is fixed on Carrier edition, no zones are selected on form on edition + [-] BO : Category debug. Add a category is possible now (before no) + [-] BO : Customized product price fixed on order detail + [-] BO : Debugued product and Cms staging caused by controllers. + [-] BO : default spanish image updated + [-] BO : default spanish pictures + [-] BO : Delete translations directories when deleting a language + [-] BO : Filters stay after an action like unactive or delete for tabs generated by AdminTab + [-] BO : fix bug on import / export for languages pack + [-] BO : fixed a JS error on adminProduct page + [-] BO : Fixed bug #4370 + [-] BO : fixed bug #5115 - getE("PS_CONDITIONS_on") is null + [-] BO : Fixed bug #5217 - Live feed non https + [-] BO : fixed bug #5255 - can’t enable/disable zone + [-] BO : fixed bug #5862 limited countries checkbox + [-] BO : fixed bug in adminModules + [-] BO : Fixed bug sql for CMS + [-] BO : fixed display warning + [-] BO : fixed sql install + [-] BO : fixed upload picture tinymce + [-] BO : Group reduction fixed (table creation was missing) + [-] BO : hover on tabs configuration fixed + [-] BO : i18n staging + [-] BO : improve specific price feature + [-] BO : Integration bugs #5411 and #5482 fixed + [-] BO : move ajaxfilemanager for tinymce + [-] BO : No more Js errors on AdminProduct page for combinations + [-] BO : No multipart encoding needed for AdminZones + [-] BO : Product final price display fixed on the product page, when using specific prices + [-] BO : Product page default action when the user hit enter is "Save" + [-] BO : Refresh position after deletion + [-] BO : remove ajaxfilemanager for tinymce + [-] BO : removed a useless CSS file (moved to ModuleGrid in fact) + [-] BO : Specific price addition fixed when setting a reduction without using the price overload field + [-] BO : Fixed SQL error when filtering by profiles on AdminEmployees page + [-] BO : The impact on unit price isn't show when no unity is set + trad updated + [-] BO : Thread navigation when clicking on "Answer to the next new message" fixed + [-] BO : unit_price's bugs fixed (attribute update, reduction of a negative number) + compatibility with Specific price class + [-] BO : Validating the CMS form with "enter button" work again + [-] BO : When deleting a customer, vouchers assigned to him are deleted + [-] BO : When no URL for a carrier but a tracking number, the tracking number appear but not the link. + [-] BO : you haven't to scroll down in the module list anymore when you install/uninstall a module + + [-] Classes : bug #58721 is fixed - Fatal error on PDF invoice + [-] Classes : fixed bug on method getNbProducts() method on Cart.php file + [-] Classes : New reduction support fixed concerning voucher application + [-] Classes : Fixed isEmail() method in Validate.php, there was an error when the field was empty (even if not required) + + [-] MO : Blockcategories installation repaired + [-] MO : Blocklink installation repaired + [-] MO : bug is fixed #5788 - “voir” on cross selling graphic + [-] MO : CSS for Blockcms module added. + [-] MO : Debugued the crossselling module to uninstall correctly + [-] MO : fixed bug in Socolissimo + [-] MO : productcomments: Query is empty + [-] MO : fixed bug hooknewOrder + [-] MO : fixed bug in validation.php + [-] MO : fixed bug while uninstall module + [-] MO : fixed bug while uninstall module + [-] MO : new version socolissimo and added translation for EMC + [-] MO : update configuration + [-] MO : trustedshops : If the form is submitted and the SOAP extension not activated, it display an error message + [-] MO : Trustedshops : Wrong email in rating link + [-] MO : EditorialClass include is absolute. + [-] MO : fixed a bug on Secuvad module + [-] MO : fixed Gsitemap module bug caused by CMS update Bug #5787 fixed + [-] MO : Fixed little CSS bug in blockwishlist module + [-] MO : Fixed SQL error when reloading the page after deleting a block + [-] MO : No blocks cms are set when installing the blockcms module normally + [-] MO : Ogone SHA-IN calculation updated + [-] MO : optimizing modules for ccc feature + [-] MO : Paypal installation debuggued (when reseting Paypal SQL error banning the access to AdminModules) + [-] MO : small bug is fixed on Dateofdelivery module + [-] MO : statsdata installation repaired + [-] MO : Updated Gsitemap Module for cms' updates + + [-] SQL : Added PS_CONDITIONS_CMS_ID in the installation utility for uptate + [-] SQL : Blockcms's and editorial's tables are not set anymore when installing Prestashop lite + [-] SQL : database modification for carrier modules + [-] SQL : fixed missing request for upgrade + [-] SQL : Removed useless table zone.`enabled` + [-] SQL : sql prefix are fixed + [-] SQL : Upgrade updated : `unity_price` : `unit_price` + [-] SQL : Fixed SQL on #5942 #5888 #5792 + +#################################### +# v1.4.0.1 - 2403 (2010-06-22) # +#################################### + + Added Features: + + [+] SQL : add the replication SQL + + +Release Notes for PrestaShop 1.3 diff --git a/address.php b/address.php new file mode 100644 index 000000000..16828e486 --- /dev/null +++ b/address.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('AddressController')->run(); \ No newline at end of file diff --git a/addresses.php b/addresses.php new file mode 100644 index 000000000..188b17c99 --- /dev/null +++ b/addresses.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('AddressesController')->run(); diff --git a/admin-dev/ajax.php b/admin-dev/ajax.php new file mode 100644 index 000000000..8b1949ceb --- /dev/null +++ b/admin-dev/ajax.php @@ -0,0 +1,601 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); +include(PS_ADMIN_DIR.'/../config/config.inc.php'); +/* Getting cookie or logout */ +require_once(dirname(__FILE__).'/init.php'); + +require_once(PS_ADMIN_DIR.'/tabs/AdminCounty.php'); + +if (isset($_GET['changeParentUrl'])) + echo ''; +if (isset($_GET['installBoughtModule'])) +{ + if (!class_exists('ZipArchive', false)) + die(displayJavascriptAlert('Host does not handle Zip files')); + $zip = new ZipArchive(); + $file = false; + while ($file === false OR file_exists(_PS_MODULE_DIR_.$file)) + $file = uniqid(); + $file = _PS_MODULE_DIR_.$file.'.zip'; + if (!copy('http://addons.prestashop.com/iframe/getboughtfile.php?id_order_detail='.Tools::getValue('id_order_detail').'&token='.Tools::getValue('token'), $file)) + die(displayJavascriptAlert('Cannot copy file')); + $first6 = fread($fd = fopen($file, 'r'), 6); + if (!strncmp($first6, 'Error:', 6)) + { + fclose($fd); + unlink($file); + die(displayJavascriptAlert(fread($fd, 1024))); + } + fclose($fd); + if ($zip->open($file) !== true OR !$zip->extractTo(_PS_MODULE_DIR_) OR !$zip->close()) + { + unlink($file); + die(displayJavascriptAlert('Cannot unzip file')); + } + unlink($file); + die(displayJavascriptAlert('Module copied to disk')); +} + +function displayJavascriptAlert($s){echo '';} + +if (isset($_GET['ajaxProductManufacturers'])) +{ + $currentIndex = 'index.php?tab=AdminCatalog'; + $manufacturers = Manufacturer::getManufacturers(); + if ($manufacturers) + { + $jsonArray = array(); + foreach ($manufacturers AS $manufacturer) + $jsonArray[] = '{"optionValue": "'.$manufacturer['id_manufacturer'].'", "optionDisplay": "'.htmlspecialchars($manufacturer['name']).'"}'; + die('['.implode(',', $jsonArray).']'); + } +} + +if (isset($_GET['ajaxProductSuppliers'])) +{ + $currentIndex = 'index.php?tab=AdminCatalog'; + $suppliers = Supplier::getSuppliers(); + if ($suppliers) + { + $jsonArray = array(); + foreach ($suppliers AS $supplier) + $jsonArray[] = '{"optionValue": "'.$supplier['id_supplier'].'", "optionDisplay": "'.htmlspecialchars($supplier['name']).'"}'; + die('['.implode(',', $jsonArray).']'); + } +} + +if (isset($_GET['ajaxProductAccessories'])) +{ + $currentIndex = 'index.php?tab=AdminCatalog'; + $jsonArray = array(); + + $products = Db::getInstance()->ExecuteS(' + SELECT p.`id_product`, pl.`name` + FROM `'._DB_PREFIX_.'product` p + NATURAL LEFT JOIN `'._DB_PREFIX_.'product_lang` pl + WHERE pl.`id_lang` = '.(int)(Tools::getValue('id_lang')).' + AND p.`id_product` != '.(int)(Tools::getValue('id_product')).' + AND p.`id_product` NOT IN ( + SELECT a.`id_product_2` + FROM `'._DB_PREFIX_.'accessory` a + WHERE a.`id_product_1` = '.(int)(Tools::getValue('id_product')).') + ORDER BY pl.`name`'); + + foreach ($products AS $accessory) + $jsonArray[] = '{"value: "'.(int)($accessory['id_product']).'-'.addslashes($accessory['name']).'", "text":"'.(int)($accessory['id_product']).' - '.addslashes($accessory['name']).'"}'; + die('['.implode(',', $jsonArray).']'); +} + +if (isset($_GET['ajaxDiscountCustomers'])) +{ + global $cookie; + + $currentIndex = 'index.php?tab=AdminDiscounts'; + $jsonArray = array(); + $filter = Tools::getValue('filter'); + + if (Validate::isBool_Id($filter)) + $filterArray = explode('_', $filter); + + $customers = Db::getInstance()->ExecuteS(' + SELECT `id_customer`, `email`, CONCAT(`lastname`, \' \', `firstname`) as name + FROM `'._DB_PREFIX_.'customer` + WHERE `deleted` = 0 AND is_guest = 0 + AND '.(Validate::isUnsignedInt($filter) ? '`id_customer` = '.(int)($filter) : '(`email` LIKE "%'.pSQL($filter).'%" + '.((Validate::isBool_Id($filter) AND $filterArray[0] == 0) ? 'OR `id_customer` = '.(int)($filterArray[1]) : '').' + '.(Validate::isUnsignedInt($filter) ? '`id_customer` = '.(int)($filter) : '').' + OR CONCAT(`firstname`, \' \', `lastname`) LIKE "%'.pSQL($filter).'%" + OR CONCAT(`lastname`, \' \', `firstname`) LIKE "%'.pSQL($filter).'%")').' + ORDER BY CONCAT(`lastname`, \' \', `firstname`) ASC + LIMIT 50'); + + $groups = Db::getInstance()->ExecuteS(' + SELECT g.`id_group`, gl.`name` + FROM `'._DB_PREFIX_.'group` g + LEFT JOIN `'._DB_PREFIX_.'group_lang` AS gl ON (g.`id_group` = gl.`id_group` AND gl.`id_lang` = '.(int)($cookie->id_lang).') + WHERE '.(Validate::isUnsignedInt($filter) ? 'g.`id_group` = '.(int)($filter) : 'gl.`name` LIKE "%'.pSQL($filter).'%" + '.((Validate::isBool_Id($filter) AND $filterArray[0] == 1) ? 'OR g.`id_group` = '.(int)($filterArray[1]) : '')).' + ORDER BY gl.`name` ASC + LIMIT 50'); + + $json = '{"customers" : '; + foreach ($customers AS $customer) + $jsonArray[] = '{"value":"0_'.(int)($customer['id_customer']).'", "text":"'.addslashes($customer['name']).' ('.addslashes($customer['email']).')"}'; + $json .= '['.implode(',', $jsonArray).'], + "groups" : '; + $jsonArray = array(); + foreach ($groups AS $group) + $jsonArray[] = '{"value":"1_'.(int)($group['id_group']).'", "text":"'.addslashes($group['name']).'"}'; + $json .= '['.implode(',', $jsonArray).']}'; + die($json); +} + +if (Tools::getValue('page') == 'prestastore' AND @fsockopen('addons.prestashop.com', 80, $errno, $errst, 3)) + readfile('http://addons.prestashop.com/adminmodules.php?lang='.Language::getIsoById($cookie->id_lang)); +if (Tools::getValue('page') == 'themes' AND @fsockopen('addons.prestashop.com', 80, $errno, $errst, 3)) + readfile('http://addons.prestashop.com/adminthemes.php?lang='.Language::getIsoById($cookie->id_lang)); + +if ($step = (int)(Tools::getValue('ajaxProductTab'))) +{ + require_once(dirname(__FILE__).'/tabs/AdminCatalog.php'); + $catalog = new AdminCatalog(); + $admin = new AdminProducts(); + + $languages = Language::getLanguages(false); + $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); + $product = new Product((int)(Tools::getValue('id_product'))); + if (!Validate::isLoadedObject($product)) + die (Tools::displayError('Product cannot be loaded')); + + $switchArray = array(3 => 'displayFormPrices', 4 => 'displayFormAttributes', 5 => 'displayFormFeatures', 6 => 'displayFormCustomization', 7 => 'displayFormAttachments'); + $currentIndex = 'index.php?tab=AdminCatalog'; + if (key_exists($step, $switchArray)) + $admin->{$switchArray[$step]}($product, $languages, $defaultLanguage); +} + +if (isset($_GET['getAvailableFields']) and isset($_GET['entity'])) +{ + $currentIndex = 'index.php?tab=AdminImport'; + $jsonArray = array(); + require_once(dirname(__FILE__).'/tabs/AdminImport.php'); + $import = new AdminImport(); + + $languages = Language::getLanguages(false); + $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); + $fields = $import->getAvailableFields(true); + foreach ($fields AS $field) + $jsonArray[] = '{"field":"'.addslashes($field).'"}'; + die('['.implode(',', $jsonArray).']'); +} + +if (array_key_exists('ajaxModulesPositions', $_POST)) +{ + $id_module = (int)(Tools::getValue('id_module')); + $id_hook = (int)(Tools::getValue('id_hook')); + $way = (int)(Tools::getValue('way')); + $positions = Tools::getValue(strval($id_hook)); + $position = (is_array($positions)) ? array_search($id_hook.'_'.$id_module, $positions) : null; + $module = Module::getInstanceById($id_module); + if (Validate::isLoadedObject($module)) + if ($module->updatePosition($id_hook, $way, $position)) + die(true); + else + die('{"hasError" : true, "errors" : "Can not update module position"}'); + else + die('{"hasError" : true, "errors" : "This module can not be loaded"}'); +} + +if (array_key_exists('ajaxCategoriesPositions', $_POST)) +{ + $id_category_to_move = (int)(Tools::getValue('id_category_to_move')); + $id_category_parent = (int)(Tools::getValue('id_category_parent')); + $way = (int)(Tools::getValue('way')); + $positions = Tools::getValue('category'); + if (is_array($positions)) + foreach ($positions AS $key => $value) + { + $pos = explode('_', $value); + if ((isset($pos[1]) AND isset($pos[2])) AND ($pos[1] == $id_category_parent AND $pos[2] == $id_category_to_move)) + { + $position = $key; + break; + } + } + $category = new Category($id_category_to_move); + if (Validate::isLoadedObject($category)) + { + if (isset($position) && $category->updatePosition($way, $position)) + { + Module::hookExec('categoryUpdate'); + die(true); + } + else + die('{"hasError" : true, errors : "Can not update categories position"}'); + } + else + die('{"hasError" : true, "errors" : "This category can not be loaded"}'); + +} + +if (array_key_exists('ajaxCMSCategoriesPositions', $_POST)) +{ + $id_cms_category_to_move = (int)(Tools::getValue('id_cms_category_to_move')); + $id_cms_category_parent = (int)(Tools::getValue('id_cms_category_parent')); + $way = (int)(Tools::getValue('way')); + $positions = Tools::getValue('cms_category'); + if (is_array($positions)) + foreach ($positions AS $key => $value) + { + $pos = explode('_', $value); + if ((isset($pos[1]) AND isset($pos[2])) AND ($pos[1] == $id_cms_category_parent AND $pos[2] == $id_cms_category_to_move)) + { + $position = $key; + break; + } + } + $cms_category = new CMSCategory($id_cms_category_to_move); + if (Validate::isLoadedObject($cms_category)) + { + if (isset($position) && $cms_category->updatePosition($way, $position)) + die(true); + else + die('{"hasError" : true, "errors" : "Can not update cms categories position"}'); + } + else + die('{"hasError" : true, "errors" : "This cms category can not be loaded"}'); +} + +if (array_key_exists('ajaxCMSPositions', $_POST)) +{ + $id_cms = (int)(Tools::getValue('id_cms')); + $id_category = (int)(Tools::getValue('id_cms_category')); + $way = (int)(Tools::getValue('way')); + $positions = Tools::getValue('cms'); + if (is_array($positions)) + foreach ($positions AS $key => $value) + { + $pos = explode('_', $value); + if ((isset($pos[1]) AND isset($pos[2])) AND ($pos[1] == $id_category AND $pos[2] == $id_cms)) + { + $position = $key; + break; + } + } + $cms = new CMS($id_cms); + if (Validate::isLoadedObject($cms)) + { + if (isset($position) && $cms->updatePosition($way, $position)) + die(true); + else + die('{"hasError" : true, "errors" : "Can not update cms position"}'); + } + else + die('{"hasError" : true, "errors" : "This cms can not be loaded"}'); +} + +/* Modify product position in catalog */ +if (array_key_exists('ajaxProductsPositions', $_POST)) +{ + $way = (int)(Tools::getValue('way')); + $id_product = (int)(Tools::getValue('id_product')); + $id_category = (int)(Tools::getValue('id_category')); + $positions = Tools::getValue('product'); + + if (is_array($positions)) + foreach ($positions AS $position => $value) + { + // pos[1] = id_categ, pos[2] = id_product, pos[3]=old position + $pos = explode('_', $value); + + if ((isset($pos[1]) AND isset($pos[2])) AND ($pos[1] == $id_category AND (int)$pos[2] === $id_product)) + { + if ($product = new Product((int)$pos[2])) + if (isset($position) && $product->updatePosition($way, $position)) + echo "ok position $position for product $pos[2]\r\n"; + else + echo '{"hasError" : true, "errors" : "Can not update product '. $id_product . ' to position '.$position.' "}'; + else + echo '{"hasError" : true, "errors" : "This product ('.$id_product.') can t be loaded"}'; + + break; + } + } +} + +if (isset($_GET['ajaxProductPackItems'])) +{ + $jsonArray = array(); + $products = Db::getInstance()->ExecuteS(' + SELECT p.`id_product`, pl.`name` + FROM `'._DB_PREFIX_.'product` p + NATURAL LEFT JOIN `'._DB_PREFIX_.'product_lang` pl + WHERE pl.`id_lang` = '.(int)(Tools::getValue('id_lang')).' + AND p.`id_product` NOT IN (SELECT DISTINCT id_product_pack FROM `'._DB_PREFIX_.'pack`) + AND p.`id_product` != '.(int)(Tools::getValue('id_product'))); + + foreach ($products AS $packItem) + $jsonArray[] = '{"value": "'.(int)($packItem['id_product']).'-'.addslashes($packItem['name']).'", "text":"'.(int)($packItem['id_product']).' - '.addslashes($packItem['name']).'"}'; + die('['.implode(',', $jsonArray).']'); +} + +if (isset($_GET['ajaxStates']) AND isset($_GET['id_country'])) +{ + $states = Db::getInstance()->ExecuteS(' + SELECT s.id_state, s.name + FROM '._DB_PREFIX_.'state s + LEFT JOIN '._DB_PREFIX_.'country c ON (s.`id_country` = c.`id_country`) + WHERE s.id_country = '.(int)(Tools::getValue('id_country')).' AND s.active = 1 AND c.`contains_states` = 1 + ORDER BY s.`name` ASC'); + + if (is_array($states) AND !empty($states)) + { + $list = ''; + if (Tools::getValue('no_empty') != true) + $list = ''."\n"; + + foreach ($states AS $state) + $list .= ''."\n"; + } + else + $list = 'false'; + + die($list); +} + +if (Tools::isSubmit('submitCustomerNote') AND $id_customer = (int)Tools::getValue('id_customer')) +{ + $note = html_entity_decode(Tools::getValue('note')); + if (!empty($note) AND !Validate::isCleanHtml($note)) + die ('error:validation'); + if (!Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'customer SET `note` = "'.pSQL($note, true).'" WHERE id_customer = '.(int)$id_customer.' LIMIT 1')) + die ('error:update'); + die('ok'); +} + +if (Tools::getValue('form_language_id')) +{ + if (!($cookie->employee_form_lang = (int)(Tools::getValue('form_language_id')))) + die ('Error while updating cookie.'); + die ('Form language updated.'); +} + +if (Tools::getValue('submitPublishProduct')) +{ + global $cookie; + + if (Tools::getIsset('id_product')) + { + $id_product = (int)(Tools::getValue('id_product')); + $id_tab_catalog = (int)(Tab::getIdFromClassName('AdminCatalog')); + $token = Tools::getAdminToken('AdminCatalog'.(int)($id_tab_catalog).(int)($cookie->id_employee)); + $bo_product_url = dirname($_SERVER['PHP_SELF']).'/index.php?tab=AdminCatalog&id_product='.$id_product.'&updateproduct&token='.$token; + + if (Tools::getValue('redirect')) + die($bo_product_url); + + $profileAccess = Profile::getProfileAccess((int)($cookie->profile), $id_tab_catalog); + if($profileAccess['edit']) + { + $product = new Product((int)(Tools::getValue('id_product'))); + if (!Validate::isLoadedObject($product)) + die('error: invalid id'); + + $product->active = 1; + + if ($product->save()) + die($bo_product_url); + else + die('error: saving'); + + } else { + die('error: permissions'); + } + } + else + die ('error: parameters'); +} + +if (Tools::getValue('submitPublishCMS')) +{ + global $cookie; + + if (Tools::getIsset('id_cms')) + { + $id_cms = (int)(Tools::getValue('id_cms')); + $id_tab_cms = (int)(Tab::getIdFromClassName('AdminCMSContent')); + $token = Tools::getAdminToken('AdminCMSContent'.(int)($id_tab_cms).(int)($cookie->id_employee)); + $bo_cms_url = dirname($_SERVER['PHP_SELF']).'/index.php?tab=AdminCMSContent&id_cms='.(int)$id_cms.'&updatecms&token='.$token; + + if (Tools::getValue('redirect')) + die($bo_cms_url); + + $profileAccess = Profile::getProfileAccess((int)($cookie->profile), $id_tab_cms); + if($profileAccess['edit']) + { + $cms = new CMS((int)(Tools::getValue('id_cms'))); + if (!Validate::isLoadedObject($cms)) + die('error: invalid id'); + + $cms->active = 1; + + if ($cms->save()) + die($bo_cms_url); + else + die('error: saving'); + + } else { + die('error: permissions'); + } + } + else + die ('error: parameters'); +} + +if (Tools::isSubmit('submitTrackClickOnHelp')) +{ + $label = Tools::getValue('label'); + $version = Tools::getValue('version'); + + if (!empty($label) && !empty($version)) + HelpAccess::trackClick($label, $version); +} + +if (Tools::isSubmit('saveImportMatchs')) +{ + $match = implode('|', Tools::getValue('type_value')); + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'import_match` ( + `id_import_match` , + `name` , + `match`, + `skip` + ) + VALUES ( + NULL , + \''.pSQL(Tools::getValue('newImportMatchs')).'\', + \''.pSQL($match).'\', + \''.pSQL(Tools::getValue('skip')).'\' + )'); + + die('{"id" : "'.Db::getInstance()->Insert_ID().'"}'); +} + +if (Tools::isSubmit('deleteImportMatchs')) +{ + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'import_match` WHERE id_import_match = '.pSQL(Tools::getValue('idImportMatchs'))); +} + +if (Tools::isSubmit('loadImportMatchs')) +{ + $return = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'import_match` WHERE id_import_match = '.pSQL(Tools::getValue('idImportMatchs'))); + die('{"id" : "'.$return[0]['id_import_match'].'", "matchs" : "'.$return[0]['match'].'", "skip" : "'.$return[0]['skip'].'"}'); +} + +if (Tools::isSubmit('toggleScreencast')) +{ + global $cookie; + $cookie->show_screencast = (int)(!(bool)$cookie->show_screencast); +} + +if (Tools::isSubmit('ajaxAddZipCode') OR Tools::isSubmit('ajaxRemoveZipCode')) +{ + $zipcodes = Tools::getValue('zipcodes'); + $id_county = (int)Tools::getValue('id_county'); + + $county = new County($id_county); + if (!Validate::isLoadedObject($county)) + die('error'); + + if (Tools::isSubmit('ajaxAddZipCode')) + { + if ($county->isZipCodeRangePresent($zipcodes)) + die('error:'.Tools::displayError('This Zip Code is already in use.')); + if ($county->addZipCodes($zipcodes)) + die(AdminCounty::renderZipCodeList($county->getZipCodes())); + } + else if (Tools::isSubmit('ajaxRemoveZipCode') AND $county->removeZipCodes($zipcodes)) + die(AdminCounty::renderZipCodeList($county->getZipCodes())); + + die('error'); +} + +if (Tools::isSubmit('helpAccess')) +{ + $item = Tools::getValue('item'); + $isoUser = Tools::getValue('isoUser'); + $country = Tools::getValue('country'); + $version = Tools::getValue('version'); + + if (isset($item) AND isset($isoUser) AND isset($country)) + die(HelpAccess::displayHelp($item, $isoUser, $country, $version)); + die(); +} + +if (Tools::isSubmit('getHookableList')) +{ + $modules_list = explode(',', Tools::getValue('modules_list')); + $hooks_list = explode(',', Tools::getValue('hooks_list')); + $hookableList = array(); + + foreach ($modules_list as $module) + { + $moduleInstance = Module::getInstanceByName($module); + foreach($hooks_list as $hook_name) + { + if (!array_key_exists($hook_name, $hookableList)) + $hookableList[$hook_name] = array(); + if ($moduleInstance->isHookableOn($hook_name)) + array_push($hookableList[$hook_name], $module); + } + + } + die(Tools::jsonEncode($hookableList)); +} + +if (Tools::isSubmit('getHookableModuleList')) +{ + + include('../init.php'); + $hook_name = Tools::getValue('hook'); + $hookableModulesList = array(); + $modules = Db::getInstance()->ExecuteS('SELECT id_module, name FROM `'._DB_PREFIX_.'module` '); + foreach ($modules as $module) + { + if (file_exists(_PS_MODULE_DIR_.$module['name'].'/'.$module['name'].'.php')) + { + include_once(_PS_MODULE_DIR_.$module['name'].'/'.$module['name'].'.php'); + $mod = new $module['name'](); + if ($mod->isHookableOn($hook_name)) + $hookableModulesList[] = array('id' => (int)$mod->id, 'name' => $mod->displayName, 'display' => Module::hookExec($hook_name, array(), (int)$mod->id)); + } + } + die(Tools::jsonEncode($hookableModulesList)); +} + +if (Tools::isSubmit('saveHook')) +{ + $hooks_list = explode(',', Tools::getValue('hooks_list')); + $hookableList = array(); + foreach ($hooks_list as $hook) + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'hook_module` WHERE `id_hook` = (SELECT id_hook FROM `'._DB_PREFIX_.'hook` WHERE `name` = \''.pSQL($hook).'\' LIMIT 0, 1)'); + $hookedModules = explode(',', Tools::getValue($hook)); + $i = 1; + $value = ''; + foreach($hookedModules as $module) + { + $ids = explode('_', $module); + $value .= '('.$ids[1].', (SELECT id_hook FROM `'._DB_PREFIX_.'hook` WHERE `name` = \''.pSQL($hook).'\' LIMIT 0, 1), '.$i.'),'; + $i ++; + } + $value = rtrim($value, ','); + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'hook_module` (`id_module`, `id_hook`, `position`) VALUES '.$value); + + } + die('{"hasError" : false, "errors" : ""}'); +} \ No newline at end of file diff --git a/admin-dev/ajax_category_list.php b/admin-dev/ajax_category_list.php new file mode 100755 index 000000000..50f0e91a5 --- /dev/null +++ b/admin-dev/ajax_category_list.php @@ -0,0 +1,85 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + + define('PS_ADMIN_DIR', getcwd()); + include_once('../config/config.inc.php'); + include_once('tabs/AdminCatalog.php'); + include_once('tabs/AdminProducts.php'); + include_once('init.php'); + + if (Tools::getValue('token') != Tools::getAdminTokenLite('AdminCatalog')) + die(1); + + $catalog = new AdminCatalog(); + $adminProducts = new AdminProducts(); + + global $cookie; + + echo ' + + + + + + + '.$adminProducts->getL('Catalog:').' + +
+ + + + + + + '; + $done = array(); + $index = array(); + + $categoryBox = Tools::getValue('categoryBox'); + if ($categoryBox != '') + { + $categoryBox = @unserialize($categoryBox); + foreach ($categoryBox AS $k => $row) + $index[] = $row; + } + elseif ((int)Tools::getValue('id_product')) + $index = Product::getProductCategories((int)Tools::getValue('id_product')); + $adminProducts->recurseCategoryForInclude((int)(Tools::getValue('id_product')), $index, $categories, $categories[0][1], 1, (int)(Tools::getValue('id_category_default'))); + echo '
'.$adminProducts->getL('ID').''.$adminProducts->getL('Name').'
+

'.$adminProducts->getL('Mark all checkbox(es) of categories in which product is to appear').' *

+
+ '; diff --git a/admin-dev/ajax_lang_packs.php b/admin-dev/ajax_lang_packs.php new file mode 100644 index 000000000..dd3af91e7 --- /dev/null +++ b/admin-dev/ajax_lang_packs.php @@ -0,0 +1,50 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); +include(PS_ADMIN_DIR.'/../config/config.inc.php'); +/* Getting cookie or logout */ +require_once(dirname(__FILE__).'/init.php'); + +if(!isset($_GET['iso_lang']) OR empty($_GET['iso_lang'])) + die('fail:0'); +if(!isset($_GET['ps_version']) OR empty($_GET['ps_version'])) + die('fail:0'); +if(@fsockopen('www.prestashop.com', 80)) +{ + // Get all iso code available + $lang_packs = Tools::file_get_contents('http://www.prestashop.com/download/lang_packs/get_language_pack.php?version='.(string)$_GET['ps_version'].'&iso_lang='.(string)$_GET['iso_lang']); + + if ($lang_packs !== '' && Tools::jsonDecode($lang_packs) !== NULL) + { + echo $lang_packs; + } + else + die('fail:2'); +} +else + die('offline'); diff --git a/admin-dev/ajax_products_list.php b/admin-dev/ajax_products_list.php new file mode 100644 index 000000000..ea2f320a3 --- /dev/null +++ b/admin-dev/ajax_products_list.php @@ -0,0 +1,61 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); +include(PS_ADMIN_DIR.'/../config/config.inc.php'); +/* Getting cookie or logout */ +require_once(dirname(__FILE__).'/init.php'); + +$query = Tools::getValue('q', false); +if (!$query OR $query == '' OR strlen($query) < 1) + die(); + +/* + * In the SQL request the "q" param is used entirely to match result in database. + * In this way if string:"(ref : #ref_pattern#)" is displayed on the return list, + * they are no return values just because string:"(ref : #ref_pattern#)" + * is not write in the name field of the product. + * So the ref pattern will be cut for the search request. + */ +if($pos = strpos($query, ' (ref:')) + $query = substr($query, 0, $pos); + +$excludeIds = Tools::getValue('excludeIds', false); +if ($excludeIds && $excludeIds != 'NaN') + $excludeIds = implode(',', array_map('intval', explode(',', $excludeIds))); +else + $excludeIds = ''; +$items = Db::getInstance()->ExecuteS(' +SELECT p.`id_product`, `reference`, pl.name +FROM `'._DB_PREFIX_.'product` p +LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.id_product = p.id_product) +WHERE (pl.name LIKE \'%'.pSQL($query).'%\' OR p.reference LIKE \'%'.pSQL($query).'%\') AND pl.id_lang = '.(int)($cookie->id_lang). +(!empty($excludeIds) ? ' AND p.id_product NOT IN ('.$excludeIds.') ' : '')); + +if ($items) + foreach ($items AS $item) + echo trim($item['name']).(!empty($item['reference']) ? ' (ref: '.$item['reference'].')' : '').'|'.(int)($item['id_product'])."\n"; diff --git a/admin-dev/ajax_send_mail_test.php b/admin-dev/ajax_send_mail_test.php new file mode 100644 index 000000000..cd3c33079 --- /dev/null +++ b/admin-dev/ajax_send_mail_test.php @@ -0,0 +1,47 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(dirname(__FILE__).'/../config/config.inc.php'); + +/* Getting cookie or logout */ +require_once(dirname(__FILE__).'/init.php'); + +$smtpChecked = (trim($_GET['mailMethod']) == 'smtp'); +$smtpServer = $_GET['smtpSrv']; +$content = $_GET['testMsg']; +$subject = $_GET['testSubject']; +$type = 'text/html'; +$to = $_GET['testEmail']; +$from = Configuration::get('PS_SHOP_EMAIL'); +$smtpLogin = $_GET['smtpLogin']; +$smtpPassword = $_GET['smtpPassword']; +$smtpPort = $_GET['smtpPort']; +$smtpEncryption = $_GET['smtpEnc']; + +$result = Mail::sendMailTest(Tools::htmlentitiesUTF8($smtpChecked), Tools::htmlentitiesUTF8($smtpServer), Tools::htmlentitiesUTF8($content), Tools::htmlentitiesUTF8($subject), Tools::htmlentitiesUTF8($type), Tools::htmlentitiesUTF8($to), Tools::htmlentitiesUTF8($from), Tools::htmlentitiesUTF8($smtpLogin), Tools::htmlentitiesUTF8($smtpPassword), Tools::htmlentitiesUTF8($smtpPort), Tools::htmlentitiesUTF8($smtpEncryption)); +die($result ? 'ok' : 'fail'); + diff --git a/admin-dev/ajaxfilemanager/_ajax_get_details_listing.php b/admin-dev/ajaxfilemanager/_ajax_get_details_listing.php new file mode 100755 index 000000000..8e049eac7 --- /dev/null +++ b/admin-dev/ajaxfilemanager/_ajax_get_details_listing.php @@ -0,0 +1,54 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  
  /> +   
 /> +   >">  
+
\ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/_ajax_get_thumbnail_listing.php b/admin-dev/ajaxfilemanager/_ajax_get_thumbnail_listing.php new file mode 100755 index 000000000..221d10f33 --- /dev/null +++ b/admin-dev/ajaxfilemanager/_ajax_get_thumbnail_listing.php @@ -0,0 +1,37 @@ +
+ +
+
+ '; + echo '' . "\n"; + break; + case 'fileFlash': + case 'fileVideo': + case 'fileMusic': + break; + default: + echo ' '; + } + ?> + +
+
  class="radio" value="" /> + href="" title="" id="a">
+ +
+ +
\ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/_ajax_load_folders.php b/admin-dev/ajaxfilemanager/_ajax_load_folders.php new file mode 100755 index 000000000..6017ac47f --- /dev/null +++ b/admin-dev/ajaxfilemanager/_ajax_load_folders.php @@ -0,0 +1,17 @@ + + \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_create_folder.php b/admin-dev/ajaxfilemanager/ajax_create_folder.php new file mode 100755 index 000000000..ad3d5eea1 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_create_folder.php @@ -0,0 +1,75 @@ +mkdir(addTrailingSlash($_POST['currentFolderPath']) . $_POST['new_folder'], 0775)) + { + include_once(CLASS_MANAGER); + $manager = new manager(addTrailingSlash($_POST['currentFolderPath']) . $_POST['new_folder'], false); + $pathInfo = $manager->getFolderInfo(addTrailingSlash($_POST['currentFolderPath']) . $_POST['new_folder']); + foreach($pathInfo as $k=>$v) + { + switch ($k) + { + + + case "ctime"; + case "mtime": + case "atime": + $v = date(DATE_TIME_FORMAT, $v); + break; + case 'name': + $info .= sprintf(", %s:'%s'", 'short_name', shortenFileName($v)); + break; + case 'cssClass': + $v = 'folderEmpty'; + break; + } + $info .= sprintf(", %s:'%s'", $k, $v); + } + }else + { + $error = ERR_FOLDER_CREATION_FAILED; + } + //$error = "For security reason, folder creation function has been disabled."; + } + echo "error:'" . $error . "'"; + echo $info; + echo "}"; +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_delete_file.php b/admin-dev/ajaxfilemanager/ajax_delete_file.php new file mode 100755 index 000000000..be52c2c99 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_delete_file.php @@ -0,0 +1,79 @@ +delete(addTrailingSlash(backslashToSlash($_GET['delete']))); + }elseif(is_file($_GET['delete']) + && isValidPattern(CONFIG_SYS_INC_FILE_PATTERN, getBaseName($_GET['delete'])) + && !isInvalidPattern(CONFIG_SYS_EXC_FILE_PATTERN, getBaseName($_GET['delete'])) + ) + { + $file->delete(($_GET['delete'])); + } + } + }else + { + if(!isset($_POST['selectedDoc']) || !is_array($_POST['selectedDoc']) || sizeof($_POST['selectedDoc']) < 1) + { + $error = ERR_NOT_FILE_SELECTED; + } + else + { + + include_once(CLASS_FILE); + $file = new file(); + + foreach($_POST['selectedDoc'] as $doc) + { + if(file_exists($doc) && isUnderRoot($doc)) + { + if(is_dir($doc) + && isValidPattern(CONFIG_SYS_INC_DIR_PATTERN, $doc) + && !isInvalidPattern(CONFIG_SYS_EXC_DIR_PATTERN, $doc)) + { + $file->delete(addTrailingSlash(backslashToSlash($doc))); + }elseif(is_file($doc) + && isValidPattern(CONFIG_SYS_INC_FILE_PATTERN, $doc) + && !isInvalidPattern(CONFIG_SYS_EXC_FILE_PATTERN, $doc) + ) + { + $file->delete($doc); + } + } + + + } + } + } + + echo "{error:'" . $error . "'}"; +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_download.php b/admin-dev/ajaxfilemanager/ajax_download.php new file mode 100755 index 000000000..ec054a846 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_download.php @@ -0,0 +1,33 @@ + getMemoryLimit()) + {//larger then the php memory limit, redirect to the file + + header('Location: ' . $path); + exit; + }else + {//open it up and send out with php + downloadFile($path); + + } + }else + { + die(ERR_DOWNLOAD_FILE_NOT_FOUND); + } +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_editor_reset.php b/admin-dev/ajaxfilemanager/ajax_editor_reset.php new file mode 100755 index 000000000..ba210e6a9 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_editor_reset.php @@ -0,0 +1,118 @@ +loadImage($_POST['path']); + + switch($_POST['mode']) + { + case "resize": + if(!$image->resize($_POST['width'], $_POST['height'], (!empty($_POST['constraint'])?true:false))) + { + $error = IMG_SAVE_RESIZE_FAILED; + } + break; + case "crop": + if(!$image->cropToDimensions($_POST['x'], $_POST['y'], (int)($_POST['x']) + (int)($_POST['width']), (int)($_POST['y']) + (int)($_POST['height']))) + { + $error = IMG_SAVE_CROP_FAILED; + } + + break; + case "flip": + if(!$image->flip($_POST['flip_angle'])) + { + $error = IMG_SAVE_FLIP_FAILED; + } + break; + case "rotate": + if(!$image->rotate((int)($_POST['angle']))) + { + $error = IMG_SAVE_ROTATE_FAILED; + } + break; + default: + $error = IMG_SAVE_UNKNOWN_MODE; + } + if(empty($error)) + { + + $sessionNewPath = $session->getSessionDir() . uniqid(md5(time())) . "." . getFileExt($_POST['path']); + if(!@copy($_POST['path'], $sessionNewPath)) + { + $error = IMG_SAVE_BACKUP_FAILED; + }else + { + addSessionHistory($_POST['path'], $sessionNewPath); + if($image->saveImage($_POST['path'])) + { + $imageInfo = $image->getFinalImageInfo(); + $info .= ",width:" . $imageInfo['width'] . "\n"; + $info .= ",height:" . $imageInfo['height'] . "\n"; + $info .= ",size:'" . transformFileSize($imageInfo['size']) . "'\n"; + }else + { + $error = IMG_SAVE_FAILED; + } + } + }else + { + //$image->DestroyImages(); + } + }else + { + $error = IMG_SAVE_UNKNOWN_MODE; + } + } + + echo "error:'" . $error . "'\n"; + if(isset($image) && is_object($image)) + { + $image->DestroyImages(); + } + echo $info; + echo ",history:" . sizeof($_SESSION[$_POST['path']]) . "\n"; + echo "}"; +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_file_copy.php b/admin-dev/ajaxfilemanager/ajax_file_copy.php new file mode 100755 index 000000000..99b19ab64 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_file_copy.php @@ -0,0 +1,35 @@ +setAction($_POST['action_value']); + $sessionAction->setFolder($_POST['currentFolderPath']); + $sessionAction->set($_POST['selectedDoc']); + $info = ',num:' . sizeof($_POST['selectedDoc']); + } + echo "{error:'" . $error . "'\n" . $info . "}"; +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_file_cut.php b/admin-dev/ajaxfilemanager/ajax_file_cut.php new file mode 100755 index 000000000..07a7f5574 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_file_cut.php @@ -0,0 +1,36 @@ +setAction($_POST['action_value']); + $sessionAction->setFolder($_POST['currentFolderPath']); + $sessionAction->set($_POST['selectedDoc']); + $info = ',num:' . sizeof($_POST['selectedDoc']); + } + echo "{error:'" . $error . "'\n" . $info . "}"; +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_file_paste.php b/admin-dev/ajaxfilemanager/ajax_file_paste.php new file mode 100755 index 000000000..787626267 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_file_paste.php @@ -0,0 +1,140 @@ +setSessionAction($sessionAction); + $selectedDocuments = $sessionAction->get(); + + $destFolderPath = addTrailingSlash(backslashToSlash($_GET['current_folder_path'])); + + + if(sizeof($selectedDocuments)) + { + //get all files within the destination folder + $allDocs = array(); + if(($fh = @opendir($_GET['current_folder_path']))) + { + while(($file = readdir($fh)) && $file != '.' && $file != '..') + { + $allDocs[] = getRealPath($destFolderPath . $file); + } + } + closedir($fh); + include_once(CLASS_FILE); + $file = new file(); + //check if all files are allowed to cut or copy + + foreach($selectedDocuments as $doc) + { + if(file_exists($doc) && isUnderRoot($doc) ) + { + + if( array_search(getRealPath($doc), $allDocs) === false || CONFIG_OVERWRITTEN) + { + if(CONFIG_OVERWRITTEN) + { + $file->delete($doc); + } + if($file->copyTo($doc, $_GET['current_folder_path'])) + { + + $finalPath = $destFolderPath . basename($doc); + $objFile = new file($finalPath); + $tem = $objFile->getFileInfo(); + $obj = new manager($finalPath, false); + + $fileType = $obj->getFileType($finalPath, (is_dir($finalPath)?true:false)); + + foreach($fileType as $k=>$v) + { + $tem[$k] = $v; + } + +/* foreach ($folderInfo as $k=>$v) + { + $tem['i_' . $k] = $v; + } + if($folderInfo['type'] == 'folder' && empty($folderInfo['subdir']) && empty($folderInfo['file'])) + { + $tem['cssClass'] = 'folderEmpty'; + }*/ + + $tem['final_path'] = $finalPath; + $tem['path'] = backslashToSlash($finalPath); + $tem['type'] = (is_dir($finalPath)?'folder':'file'); + $tem['size'] = @transformFileSize($tem['size']); + $tem['ctime'] = date(DATE_TIME_FORMAT, $tem['ctime']); + $tem['mtime'] = date(DATE_TIME_FORMAT, $tem['mtime']); + $tem['flag'] = 'noFlag'; + $tem['url'] = getFileUrl($doc); + + $manager = null; + if($sessionAction->getAction() == "cut") + { + $file->delete($doc); + } + $fileMoved[sizeof($fileMoved)] = $tem; + $tem = null; + } + }else + { + $unmovedDocDueToSamePath[] = $doc; + } + + } + } + + $sessionAction->set(array()); + } + if(sizeof($unmovedDocDueToSamePath) == sizeof($selectedDocuments)) + { + $error = ERR_DEST_FOLDER_NOT_ALLOWED; + }elseif(sizeof($unmovedDocDueToSamePath)) + { + foreach($unmovedDocDueToSamePath as $v) + { + $error .= sprintf(ERR_UNABLE_TO_MOVE_TO_SAME_DEST, $v) . "\r\n"; + } + } + } + + echo "{'error':'" . $error . "', 'unmoved_files':" . sizeof($unmovedDocDueToSamePath) . ", 'files':{"; + foreach($fileMoved as $i=>$file) + { + + echo ($i>0?', ':' ') . $i . ": { "; + $j = 0; + foreach($file as $k=>$v) + { + echo ($j++ > 0? ", ":'') . "'" . $k . "':'" . $v . "'"; + + } + echo "} "; + } + echo "} }"; + +?> diff --git a/admin-dev/ajaxfilemanager/ajax_file_upload.php b/admin-dev/ajaxfilemanager/ajax_file_upload.php new file mode 100755 index 000000000..ebe128482 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_file_upload.php @@ -0,0 +1,90 @@ +setInvalidFileExt(explode(",", CONFIG_UPLOAD_INVALID_EXTS)); + if(CONFIG_SYS_VIEW_ONLY || !CONFIG_OPTIONS_UPLOAD) + { + $error = SYS_DISABLED; + } + elseif(empty($_GET['folder']) || !isUnderRoot($_GET['folder'])) + { + $error = ERR_FOLDER_PATH_NOT_ALLOWED; + }else if(!$upload->isFileUploaded('file')) + { + $error = ERR_FILE_NOT_UPLOADED; + }else if(!$upload->moveUploadedFile($_GET['folder'])) + { + $error = ERR_FILE_MOVE_FAILED; + } + elseif(!$upload->isPermittedFileExt(explode(",", CONFIG_UPLOAD_VALID_EXTS))) + { + $error = ERR_FILE_TYPE_NOT_ALLOWED; + }elseif(defined('CONFIG_UPLOAD_MAXSIZE') && CONFIG_UPLOAD_MAXSIZE && $upload->isSizeTooBig(CONFIG_UPLOAD_MAXSIZE)) + { + $error = sprintf(ERROR_FILE_TOO_BID, transformFileSize(CONFIG_UPLOAD_MAXSIZE)); + }else + { + include_once(CLASS_FILE); + $path = $upload->getFilePath(); + $obj = new file($path); + $tem = $obj->getFileInfo(); + if(sizeof($tem)) + { + include_once(CLASS_MANAGER); + + $manager = new manager($upload->getFilePath(), false); + + $fileType = $manager->getFileType($upload->getFileName()); + + foreach($fileType as $k=>$v) + { + $tem[$k] = $v; + } + + $tem['path'] = backslashToSlash($path); + $tem['type'] = "file"; + $tem['size'] = transformFileSize($tem['size']); + $tem['ctime'] = date(DATE_TIME_FORMAT, $tem['ctime']); + $tem['mtime'] = date(DATE_TIME_FORMAT, $tem['mtime']); + $tem['short_name'] = shortenFileName($tem['name']); + $tem['flag'] = 'noFlag'; + $obj->close(); + foreach($tem as $k=>$v) + { + $info .= sprintf(", %s:'%s'", $k, $v); + } + + $info .= sprintf(", url:'%s'", getFileUrl($path)); + $info .= sprintf(", tipedit:'%s'", TIP_DOC_RENAME); + + + }else + { + $error = ERR_FILE_NOT_AVAILABLE; + } + + + } + echo "error:'" . $error . "'"; + echo $info; + echo "}"; + +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_get_file_listing.php b/admin-dev/ajaxfilemanager/ajax_get_file_listing.php new file mode 100755 index 000000000..05f46af93 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_get_file_listing.php @@ -0,0 +1,139 @@ +addSearchKeyword('recursive', @$_GET['search_recursively']); + $search->addSearchKeyword('mtime_from', @$_GET['search_mtime_from']); + $search->addSearchKeyword('mtime_to', @$_GET['search_mtime_to']); + $search->addSearchKeyword('size_from', @$_GET['search_size_from']); + $search->addSearchKeyword('size_to', @$_GET['search_size_to']); + $search->addSearchKeyword('recursive', @$_GET['search_recursively']); + $search->addSearchKeyword('name', @$_GET['search_name']); + $search->doSearch(); + $fileList = $search->getFoundFiles(); + $folderInfo = $search->getRootFolderInfo(); + + }else + { + include_once(CLASS_MANAGER); + include_once(CLASS_SESSION_ACTION); + $sessionAction = new SessionAction(); + include_once(DIR_AJAX_INC . "class.manager.php"); + + $manager = new manager(); + $manager->setSessionAction($sessionAction); + + $fileList = $manager->getFileList(); + $folderInfo = $manager->getFolderInfo(); + + } + $pagination->setUrl(CONFIG_URL_FILEnIMAGE_MANAGER); + + }else + { + include_once(CLASS_PAGINATION); + $pagination = new pagination(false); + } + + + $pagination->setTotal(sizeof($fileList)); + $pagination->setFirstText(PAGINATION_FIRST); + $pagination->setPreviousText(PAGINATION_PREVIOUS); + $pagination->setNextText(PAGINATION_NEXT); + $pagination->setLastText(PAGINATION_LAST); + $pagination->setLimit(!empty($_GET['limit'])?(int)($_GET['limit']):CONFIG_DEFAULT_PAGINATION_LIMIT); + echo $pagination->getPaginationHTML(); + echo "\n"; + if(!empty($_GET['view'])) + { + switch($_GET['view']) + { + case 'detail': + case 'thumbnail': + case 'text': + $view = $_GET['view']; + break; + default: + $view = CONFIG_DEFAULT_VIEW; + } + }else + { + $view = CONFIG_DEFAULT_VIEW; + } + switch($view) + { + case 'text': + //list file name only + include_once(DIR_AJAX_ROOT . '_ajax_get_text_listing.php'); + break; + case 'thumbnail': + //list file with thumbnail + include_once(DIR_AJAX_ROOT . '_ajax_get_thumbnail_listing.php'); + break; + case 'detail': + default: + include_once(DIR_AJAX_ROOT . '_ajax_get_details_listing.php'); + } + + + +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_get_folder_listing.php b/admin-dev/ajaxfilemanager/ajax_get_folder_listing.php new file mode 100755 index 000000000..565703ad9 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_get_folder_listing.php @@ -0,0 +1,15 @@ +$v) + { + + + echo (($count > 1)?', ':''). "'" . $v . "':'" . $k . "'"; + $count++; + } + echo "}"; +?> diff --git a/admin-dev/ajaxfilemanager/ajax_image_editor.php b/admin-dev/ajaxfilemanager/ajax_image_editor.php new file mode 100755 index 000000000..b959bbdc2 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_image_editor.php @@ -0,0 +1,210 @@ +gc(); + $_GET['path'] = empty($_GET['path'])?CONFIG_SYS_ROOT_PATH . "ajax_image_editor_demo.jpg":$_GET['path']; + if(!empty($_GET['path']) && file_exists($_GET['path']) && is_file($_GET['path']) && isUnderRoot($_GET['path'])) + { + $path = $_GET['path']; + }else + { + die(IMG_GEN_IMG_NOT_EXISTS); + } + require_once(CLASS_HISTORY); + $history = new History($path, $session); + if(CONFIG_SYS_DEMO_ENABLE) + { + $sessionImageInfo = $history->getLastestRestorable(); + $originalSessionImageInfo = $history->getOriginalImage(); + if(sizeof($originalSessionImageInfo)) + { + $path = backslashToSlash($session->getSessionDir() . $originalSessionImageInfo['info']['name']); + } + } + require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "inc" . DIRECTORY_SEPARATOR . "class.image.php"); + $image = new Image(); + + $imageInfo = $image->getImageInfo($path); + + ?> + + + + + + + + + + + + + + + + + + +Ajax Image Editor + + + +
+
+ Modes +
+ + +

+ + + + + + + + + + + + + + +

+
+
+
+ +
+

+ + + + + + + + + + + + +

+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + + diff --git a/admin-dev/ajaxfilemanager/ajax_image_save.php b/admin-dev/ajaxfilemanager/ajax_image_save.php new file mode 100755 index 000000000..9c4de2fac --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_image_save.php @@ -0,0 +1,196 @@ +getSessionDir()) == '') + { + $error = SESSION_PERSONAL_DIR_NOT_FOUND; + } + else + { + require_once(CLASS_HISTORY); + $history = new History($_POST['path'], $session); + if(!empty($_POST['mode'])) + { + //get the original image which is the lastest session image if any when the system is in demo + $lastestSessionImageInfo = $history->getLastestRestorable(); + if(sizeof($lastestSessionImageInfo) && CONFIG_SYS_DEMO_ENABLE) + { + $originalSessionImageInfo = $history->getOriginalImage(); + if(sizeof($originalSessionImageInfo)) + { + $originalImage = $sessionDir . $originalSessionImageInfo['info']['name']; + } + } + if(empty($originalImage)) + { + $originalImage = $_POST['path']; + } + + include_once(CLASS_IMAGE); + $image = new Image(); + if($image->loadImage($originalImage)) + { + + switch($_POST['mode']) + { + case "resize": + if(!$image->resize($_POST['width'], $_POST['height'], (!empty($_POST['constraint'])?true:false))) + { + $error = IMG_SAVE_RESIZE_FAILED; + } + break; + case "crop": + if(!$image->crop($_POST['x'], $_POST['y'], $_POST['width'], $_POST['height'])) + { + $error = IMG_SAVE_CROP_FAILED; + } + break; + case "flip": + if(!$image->flip($_POST['flip_angle'])) + { + $error = IMG_SAVE_FLIP_FAILED; + } + break; + case "rotate": + + if(!$image->rotate((int)($_POST['angle']))) + { + $error = IMG_SAVE_ROTATE_FAILED; + } + + break; + default: + $error = IMG_SAVE_UNKNOWN_MODE; + } + + + if(empty($error)) + { + $sessionNewPath = $sessionDir . uniqid(md5(time())) . "." . getFileExt($_POST['path']); + if(!@copy($originalImage, $sessionNewPath)) + {//keep a copy under the session folder + $error = IMG_SAVE_BACKUP_FAILED; + }else + { + + $isSaveAsRequest = (!empty($_POST['new_name']) && !empty($_POST['save_to'])?true:false); + //save the modified image + $sessionImageInfo = array('name'=>basename($sessionNewPath), 'restorable'=>1); + $history->add($sessionImageInfo); + if(CONFIG_SYS_DEMO_ENABLE) + {//demo only + if(isset($originalSessionImageInfo) && sizeof($originalSessionImageInfo)) + { + $imagePath = $sessionDir . $originalSessionImageInfo['info']['name']; + }else + { + $imagePath = $sessionDir . uniqid(md5(time())) . "." . getFileExt($_POST['path']); + } + }else + { + if($isSaveAsRequest) + {//save as request + //check save to folder if exists + $imagePath = addTrailingSlash(backslashToSlash($_POST['save_to'])) . $_POST['new_name'] . "." . getFileExt($_POST['path']); + if(!file_exists($_POST['save_to']) || !is_dir($_POST['save_to'])) + { + $error = IMG_SAVE_AS_FOLDER_NOT_FOUND; + }elseif(file_exists($imagePath)) + { + $error = IMG_SAVE_AS_NEW_IMAGE_EXISTS; + }elseif(!preg_match("/^[a-zA-Z0-9_\- ]+$/", $_POST['new_name'])) + { + $error = IMG_SAVE_AS_ERR_NAME_INVALID; + } + + }else + {//save request + $imagePath = $originalImage; + } + + } + + if($image->saveImage($imagePath)) + { + + if(CONFIG_SYS_DEMO_ENABLE) + { + if(!isset($originalSessionImageInfo) || !sizeof($originalSessionImageInfo)) + {//keep this original image information on session for future reference if demo only + $originalSessionImageInfo = array('name'=>basename($imagePath), 'restorable'=>0, 'is_original'=>1); + $history->add($originalSessionImageInfo); + } + } + $imageInfo = $image->getFinalImageInfo(); + }else + { + $error = IMG_SAVE_FAILED; + + } + if(isset($imageInfo)) + { + $info .= ",width:" . $imageInfo['width'] . ""; + $info .= ",height:" . $imageInfo['height'] . ""; + $info .= ",size:'" . transformFileSize($imageInfo['size']) . "'"; + if($isSaveAsRequest) + { + $info .= ",save_as:'1'"; + }else + { + $info .= ",save_as:'0'"; + } + $info .= ",folder_path:'" . dirname($imagePath) . "'"; + $info .= ",path:'" . backslashToSlash($imagePath) . "'"; + + } + + } + + } + }else + { + $error = IMG_SAVE_IMG_OPEN_FAILED; + } + + }else + { + $error = IMG_SAVE_UNKNOWN_MODE; + } + } + echo "{"; + echo "error:'" . $error . "'"; + if(isset($image) && is_object($image)) + { + $image->DestroyImages(); + } + echo $info; + echo ",history:" . (isset($history) && is_object($history)?($history->getNumRestorable()):0) . ""; + echo "}"; + + +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_image_thumbnail.php b/admin-dev/ajaxfilemanager/ajax_image_thumbnail.php new file mode 100755 index 000000000..ac32a2314 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_image_thumbnail.php @@ -0,0 +1,35 @@ +loadImage($_GET['path'])) + { + if($image->resize(CONFIG_IMG_THUMBNAIL_MAX_X, CONFIG_IMG_THUMBNAIL_MAX_Y, true, true)) + { + $image->showImage(); + }else + { + echo PREVIEW_NOT_PREVIEW . "."; + } + }else + { + echo PREVIEW_NOT_PREVIEW . ".."; + } + + + }else + { + echo PREVIEW_NOT_PREVIEW . "..."; + } + diff --git a/admin-dev/ajaxfilemanager/ajax_image_undo.php b/admin-dev/ajaxfilemanager/ajax_image_undo.php new file mode 100755 index 000000000..ae813a5f8 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_image_undo.php @@ -0,0 +1,96 @@ +getLastestRestorable(); + echo "{"; + $error = ""; + $info = ""; + if(CONFIG_SYS_VIEW_ONLY) + { + $error = SYS_DISABLED; + } + elseif(empty($_POST['file_path'])) + { + $error = IMG_SAVE_EMPTY_PATH; + }elseif(!file_exists($_POST['file_path'])) + { + $error = IMG_SAVE_NOT_EXISTS; + }elseif(!isUnderRoot($_POST['file_path'])) + { + $error = IMG_SAVE_PATH_DISALLOWED; + }else if(!sizeof($lastestSessionImageInfo)) + { + $error = IMG_UNDO_NO_HISTORY_AVAIALBE; + } + else + { + //get the original image which is the lastest session image if any when the system is in demo + $sessionImage = $session->getSessionDir() . $lastestSessionImageInfo['name']; + $originalSessionImageInfo = $history->getOriginalImage(); + if(CONFIG_SYS_DEMO_ENABLE && sizeof($originalSessionImageInfo)) + { + $originalImage = $session->getSessionDir() . $originalSessionImageInfo['info']['name']; + }else + { + $originalImage = $_POST['file_path']; + } + + include_once(CLASS_IMAGE); + $image = new Image(); + if($image->loadImage($sessionImage)) + { + $imageInfo = $image->getOriginalImageInfo(); + if(!@copy($sessionImage, $originalImage)) + { + $error = IMG_UNDO_COPY_FAILED; + }else + { + + //remove the session image + if(@unlink($sessionImage)) + { + $history->restore(); + } + //only one left, remove the session original if demo + + if($history->getNumRestorable() == 0 && CONFIG_SYS_DEMO_ENABLE && sizeof($originalSessionImageInfo)) + { + @unlink($session->getSessionDir() . $originalSessionImageInfo['info']['name']); + $originalImage = $_POST['file_path']; + } + } + $imagePath = $originalImage; + + }else + { + $error = IMG_SAVE_IMG_OPEN_FAILED; + } + if(isset($imageInfo)) + { + $info .= ",width:" . $imageInfo['width'] . "\n"; + $info .= ",height:" . $imageInfo['height'] . "\n"; + $info .= ",size:'" . transformFileSize($imageInfo['size']) . "'\n"; + $info .= ",path:'" . backslashToSlash($imagePath) . "'\n"; + } + + } + + echo "error:'" . $error . "'\n"; + if(isset($image) && is_object($image)) + { + $image->DestroyImages(); + } + echo $info; + echo ",history:" . ($history->getNumRestorable()) . "\n"; + echo "}"; +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_login.php b/admin-dev/ajaxfilemanager/ajax_login.php new file mode 100755 index 000000000..74a09ee84 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_login.php @@ -0,0 +1,67 @@ +login()) + { + header('Location: ' . appendQueryString(CONFIG_URL_HOME, makeQueryString())); + exit; + } + } +}else{ + $_SESSION['ajax_user'] = true; + header('Location: ' . appendQueryString(CONFIG_URL_HOME, makeQueryString())); + exit; +} +?> + + + + + +<?php echo LOGIN_PAGE_TITLE; ?> + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
 
+
+
+
+ + diff --git a/admin-dev/ajaxfilemanager/ajax_preview.php b/admin-dev/ajaxfilemanager/ajax_preview.php new file mode 100755 index 000000000..e233a214f --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_preview.php @@ -0,0 +1,60 @@ +getFileType(basename($_GET['path'])); + if($fileTypes['preview']) + { + switch($fileTypes['fileType']) + { + case "image": + $imageInfo = @getimagesize($_GET['path']); + if(!empty($imageInfo[0]) && !empty($imageInfo[1])) + { + $thumInfo = getThumbWidthHeight($imageInfo[0], $imageInfo[1], 400, 135); + printf("", getFileUrl($_GET['path']), $thumInfo['width'], $thumInfo['height']); + + }else + { + echo PREVIEW_IMAGE_LOAD_FAILED; + } + + break; + case "txt": + if(($fp = @fopen($_GET['path'], 'r'))) + { + echo @fread($fp, @filesize($_GET['path'])); + @fclose($fp); + }else + { + echo PREVIEW_OPEN_FAILED . "."; + } + break; + + case "video": + break; + } + }else + { + echo PREVIEW_NOT_PREVIEW . ".."; + } + + }else + { + echo PREVIEW_NOT_PREVIEW . "..."; + } + +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_save_as_form.php b/admin-dev/ajaxfilemanager/ajax_save_as_form.php new file mode 100755 index 000000000..8ad17406b --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_save_as_form.php @@ -0,0 +1,59 @@ + + + + + +Untitled Document + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
  + + * + +
 
+ + diff --git a/admin-dev/ajaxfilemanager/ajax_save_name.php b/admin-dev/ajaxfilemanager/ajax_save_name.php new file mode 100755 index 000000000..c0435bad9 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_save_name.php @@ -0,0 +1,81 @@ +get(); + if(removeTrailingSlash($sessionAction->getFolder()) == getParentPath($_POST['original_path']) && sizeof($selectedDocuments)) + { + if(($key = array_search(basename($_POST['original_path']), $selectedDocuments)) !== false) + { + $selectedDocuments[$key] = $_POST['name']; + $sessionAction->set($selectedDocuments); + + } + + }elseif(removeTrailingSlash($sessionAction->getFolder()) == removeTrailingSlash($_POST['original_path'])) + { + $sessionAction->setFolder($_POST['original_path']); + } + $path = addTrailingSlash(getParentPath($_POST['original_path'])) . $_POST['name']; + if(is_file($path)) + { + include_once(CLASS_FILE); + $file = new file($path); + $fileInfo = $file->getFileInfo(); + }else + { + include_once(CLASS_MANAGER); + $manager = new manager($path, false); + $fileInfo = $manager->getFolderInfo(); + } + } + + echo "{"; + echo "error:'" . $error . "' "; + foreach ($fileInfo as $k=>$v) + { + echo "," . $k . ":'" . $v . "' "; + } + echo "}"; + + +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_save_text.php b/admin-dev/ajaxfilemanager/ajax_save_text.php new file mode 100755 index 000000000..1d7724c4e --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_save_text.php @@ -0,0 +1,90 @@ + \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/ajax_text_editor.php b/admin-dev/ajaxfilemanager/ajax_text_editor.php new file mode 100755 index 000000000..4624acdee --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajax_text_editor.php @@ -0,0 +1,168 @@ +gc(); + $_GET['path'] = empty($_GET['path'])?CONFIG_SYS_ROOT_PATH . "ajax_image_editor_demo.jpg":$_GET['path']; + if(!empty($_GET['path']) && file_exists($_GET['path']) && is_file($_GET['path']) && isUnderRoot($_GET['path'])) + { + $path = $_GET['path']; + }else + { + die(TXT_FILE_NOT_FOUND); + } + if(file_exists(DIR_AJAX_EDIT_AREA . "reg_syntax" . DIRECTORY_SEPARATOR . getFileExt($path) . ".js")) + { + $syntax = getFileExt($path); + }else + { + switch (getFileExt($path)) + { + case 'htm': + $syntax = 'html'; + break; + default: + $syntax = 'basic'; + } + } + if(array_search(getFileExt($path), getValidTextEditorExts())=== false) + { + die(TXT_DISALLOWED_EXT); + } + ?> + + + + + + + + + + + + + +Ajax Text Editor + + + +
+ +
+
+ + + + diff --git a/admin-dev/ajaxfilemanager/ajaxfilemanager.php b/admin-dev/ajaxfilemanager/ajaxfilemanager.php new file mode 100755 index 000000000..d36980452 --- /dev/null +++ b/admin-dev/ajaxfilemanager/ajaxfilemanager.php @@ -0,0 +1,689 @@ +gc(); + require_once(CLASS_SESSION_ACTION); + $sessionAction = new SessionAction(); + if(CONFIG_LOAD_DOC_LATTER) + { + $fileList = array(); + $folderInfo = array('path'=>getCurrentFolderPath()); + }else + { + require_once(CLASS_MANAGER); + + + $manager = new manager(); + $manager->setSessionAction($sessionAction); + $fileList = $manager->getFileList(); + $folderInfo = $manager->getFolderInfo(); + } + if(CONFIG_SYS_THUMBNAIL_VIEW_ENABLE) + { + $views = array( + 'detail'=>LBL_BTN_VIEW_DETAILS, + 'thumbnail'=>LBL_BTN_VIEW_THUMBNAIL, + ); + }else + { + $views = array( + 'detail'=>LBL_BTN_VIEW_DETAILS, + ); + } + + if(!empty($_GET['view'])) + { + switch($_GET['view']) + { + case 'detail': + case 'thumbnail': + $view = $_GET['view']; + break; + default: + $view = CONFIG_DEFAULT_VIEW; + } + }else + { + $view = CONFIG_DEFAULT_VIEW; + } + +?> + + + + +Ajax File Manager + + + + + + + + + + + + +
+ + +
+ + +
+ + + +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + + +
+
+ +   + +
+    + /> + /> +
+ + + + +

+ + + + + +

+
+ +
+ +
+
+ + +
+
+ + + + + + + + + + + + \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/debug.html b/admin-dev/ajaxfilemanager/debug.html new file mode 100755 index 000000000..e69de29bb diff --git a/admin-dev/ajaxfilemanager/inc/class.auth.php b/admin-dev/ajaxfilemanager/inc/class.auth.php new file mode 100755 index 000000000..1978c13fd --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.auth.php @@ -0,0 +1,48 @@ +__construct(); + } + /** + * check if the user has logged + * + * @return boolean + */ + function isLoggedIn() + { + return (!empty($_SESSION[$this->__loginIndexInSession])?true:false); + } + /** + * validate the username & password + * @return boolean + * + */ + function login() + { + if($_POST['username'] == CONFIG_LOGIN_USERNAME && $_POST['password'] == CONFIG_LOGIN_PASSWORD) + { + $_SESSION[$this->__loginIndexInSession] = true; + return true; + }else + { + return false; + } + } + } +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/class.file.php b/admin-dev/ajaxfilemanager/inc/class.file.php new file mode 100755 index 000000000..85512eb02 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.file.php @@ -0,0 +1,436 @@ +filePath = $path; + if(is_file($this->filePath)) + { + $this->fileStat = @stat($path); + $this->fileInfo['size'] = $this->fileStat[7]; + $this->fileInfo['atime'] = $this->fileStat[8]; + $this->fileInfo['ctime'] = $this->fileStat[10]; + $this->fileInfo['mtime'] = $this->fileStat[9]; + $this->fileInfo['path'] = $path; + $this->fileInfo['name'] = basename($path); + $this->fileInfo['is_writable'] = $this->isWritable(); + $this->fileInfo['is_readable'] = $this->isReadable(); + }elseif(is_dir($this->filePath)) + { + $this->fileStat = @stat($path); + $this->fileInfo['name'] = basename($path); + $this->fileInfo['path'] = $path; + $this->fileInfo['atime'] = $this->fileStat[8]; + $this->fileInfo['ctime'] = $this->fileStat[10]; + $this->fileInfo['mtime'] = $this->fileStat[9]; + $this->fileInfo['is_writable'] = $this->isWritable(); + $this->fileInfo['is_readable'] = $this->isReadable(); + } + }else + { + trigger_error('No such file exists. ' . $path, E_USER_NOTICE); + } + } + + + + } + /** + * contructor + * + * @param string $path + */ + function file($path=null) + { + $this->__construct($path); + } + + + /** + * check if a file or folder writable + * + * @param file path $path + * @return boolean + */ + function isWritable($path=null) + { + $path = (is_null($path)?$this->filePath:$path); + if (DIRECTORY_SEPARATOR == "\\") + { + $path = slashToBackslash($path); + if(is_file($path)) + { + $fp = @fopen($path,'ab'); + if($fp) + { + @fclose($fp); + return true; + } + }elseif(is_dir($path)) + { + $path = addTrailingSlash($path); + $tmp = uniqid(time()); + if (@touch($path . $tmp)) + { + @unlink($path . $tmp); + return true; + } + } + return false; + }else + { + return @is_writable(slashToBackslash($path)); + } + + } + /** + * Returns true if the files is readable. + * + * @return boolean true if the files is readable. + */ + function isReadable($path =null) + { + $path = is_null($path)?$this->filePath:$path; + return @is_readable(slashToBackslash($path)); + } + /** + * change the modified time + * + * @param string $path + * @param string $time + * @return boolean + */ + function setLastModified($path=null, $time) + { + $path = is_null($path)?$this->filePath:$path; + $time = is_null($time)?time():$time; + return @touch(slashToBackslash($path), $time); + } + + /** + * create a new folder + * + * @path the path for the new folder + * @mask + * @dirOwner + * @return boolean + */ + function mkdir($path = null, $mask=null, $dirOwner='') + { + $path = is_null($path)?$this->filePath:$path; + if(!file_exists($path)) + { + $mask = is_null($mask)?$this->mask:$mask; + $status = @mkdir(slashToBackslash($path)); + if ($mask) + { + @chmod(slashToBackslash($path), intval($mask, 8)); + } + if($dirOwner) + { + $this->chown(slashToBackslash($path), $dirOwner); + } + return $status; + } + return true; + + } + /** + * change the own of a file or folder + * + * @param the file path $path + * @param $owner + */ + function chown($path, $owner) + { + if(!empty($owner)) + { + $owners = explode(":", $owner); + if(!empty($owners[0])) + @chown($path, $owners[0]); + if(!empty($owners[1])) + @chgrp($path, $owner[1]); + } + } + + /** + * Copy a file, or recursively copy a folder and its contents + * @author Aidan Lister + * @author Paul Scott + * @version 1.0.1 + * @param string $source Source path + * @param string $dest Destination path + * @return bool Returns TRUE on success, FALSE on failure + */ + function copyTo($source, $dest) + { + $source = removeTrailingSlash(backslashToSlash($source)); + $dest = removeTrailingSlash(backslashToSlash($dest)); + if(!file_exists($dest) || !is_dir($dest)) + { + if(!$this->mkdir($dest)) + { + $this->_debug('Unable to create folder (' . $dest . ")"); + return false; + } + } + // Copy in to your self? + if (getAbsPath($source) == getAbsPath($dest)) + { + $this->_debug('Unable to copy itself. source: ' . getAbsPath($source) . "; dest: " . getAbsPath($dest)); + return false; + } + // Simple copy for a file + if (is_file($source)) + { + $dest = addTrailingSlash($dest) . (basename($source)); + if(file_exists($dest)) + { + return false; + }else { + + return copy($source, $dest); + } + + + }elseif(is_dir($source)) + { + // Loop through the folder + if(file_exists(addTrailingSlash($dest) . basename($source))) + { + return false; + }else + { + if(!file_exists(addTrailingSlash($dest) . basename($source)) || !is_dir(addTrailingSlash($dest) . basename($source))) + { + if(!$this->mkdir(addTrailingSlash($dest) . basename($source))) + { + $this->_debug('Unable to create folder (' . addTrailingSlash($dest) . basename($source) . ")"); + return false; + } + } + $handle = opendir($source); + while(false !== ($readdir = readdir($handle))) + { + if($readdir != '.' && $readdir != '..') + { + $path = addTrailingSlash($source).'/'.$readdir; + $this->copyTo($path, addTrailingSlash($dest) . basename($source)); + } + } + closedir($handle); + return true; + } + + } + return false; + } + /** + * get next available file name + * + * @param string $fileToMove the path of the file will be moved to + * @param string $destFolder the path of destination folder + * @return string + */ + function getNextAvailableFileName($fileToMove, $destFolder) + { + + $folderPath = addslashes(backslashToSlash(getParentPath($fileToMove))); + $destFolder = addslashes(backslashToSlash(getParentPath($destFolder))); + $finalPath = $destFolder . basename($fileToMove); + if(file_exists($fileToMove)) + { + if(is_file()) + { + $fileExt = getFileExt($fileToMove); + $fileBaseName = basename($fileToMove, '.' . $fileExt); + $count = 1; + while(file_exists($destFolder . $fileBaseName . $count . "." . $fileExt)) + { + $count++; + } + $filePath = $destFolder . $fileBaseName . $count . "." . $fileExt; + }elseif(is_dir()) + { + $folderName = basename($fileToMove); + $count = 1; + while(file_exists($destFolder . $folderName . $count)) + { + $count++; + } + $filePath = $destFolder . $fileBaseName . $count; + } + + } + return $finalPath; + } + /** + * get file information + * + * @return array + */ + function getFileInfo() + { + return $this->fileInfo; + } + /** + * close + * + */ + function close() + { + $this->fileInfo = null; + $this->fileStat = null; + } + /** + * delete a file or a folder and all contents within that folder + * + * @param string $path + * @return boolean + */ + function delete($path = null) + { + $path = is_null($path)?$this->filePath:$path; + if(file_exists($path)) + { + if(is_file($path)) + { + return @unlink($path); + }elseif(is_dir($path)) + { + return $this->__recursive_remove_directory($path); + } + + } + return false; + } + /** + * empty a folder + * + * @param string $path + * @return boolean + */ + function emptyFolder($path) + { + $path = is_null($path)?$this->filePath:""; + if(file_exists($path) && is_dir($path)) + { + return $this->__recursive_remove_directory($path, true); + } + return false; + } + + function _debug($info) + { + if($this->debug) + { + echo $info . "
\n"; + }else + { + $this->errors[] = $info; + } + } +/** + * recursive_remove_directory( directory to delete, empty ) + * expects path to directory and optional TRUE / FALSE to empty + * of course PHP has to have the rights to delete the directory + * you specify and all files and folders inside the directory + * + * to use this function to totally remove a directory, write: + * recursive_remove_directory('path/to/directory/to/delete'); + * to use this function to empty a directory, write: + * recursive_remove_directory('path/to/full_directory',TRUE); + * @param string $directory + * @param boolean $empty + * @return boolean + */ + function __recursive_remove_directory($directory, $empty=FALSE) + { + // if the path has a slash at the end we remove it here + if(substr($directory,-1) == '/') + { + $directory = substr($directory,0,-1); + } + + // if the path is not valid or is not a directory ... + if(!file_exists($directory) || !is_dir($directory)) + { + // ... we return false and exit the function + return FALSE; + + // ... if the path is not readable + }elseif(!is_readable($directory)) + { + // ... we return false and exit the function + return FALSE; + + // ... else if the path is readable + }else{ + + // we open the directory + $handle = @opendir($directory); + + // and scan through the items inside + while (FALSE !== ($item = @readdir($handle))) + { + // if the filepointer is not the current directory + // or the parent directory + if($item != '.' && $item != '..') + { + // we build the new path to delete + $path = $directory.'/'.$item; + + // if the new path is a directory + if(is_dir($path)) { + // we call this function with the new path + $this->__recursive_remove_directory($path); + + // if the new path is a file + }else{ + // we remove the file + @unlink($path); + } + } + } + // close the directory + @closedir($handle); + + // if the option to empty is not set to true + if($empty == FALSE) + { + // try to delete the now empty directory + if(!@rmdir($directory)) + { + // return false if not possible + return FALSE; + } + } + // return success + return TRUE; + } + } + } + +?> diff --git a/admin-dev/ajaxfilemanager/inc/class.history.php b/admin-dev/ajaxfilemanager/inc/class.history.php new file mode 100755 index 000000000..f209c2195 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.history.php @@ -0,0 +1,155 @@ +path = $path; + $this->session = &$session; + if(!isset($_SESSION[$this->path])) + { + $_SESSION[$this->path] = array(); + } + + } + /** + * constructor + * + * @param string $path the path to the image + * @param object $session an instance of session class + */ + function History($path, &$session) + { + $this->__construct($path, $session); + } + + /** + * keep tracks of each changes made to an image + * + * @param string $key + * @param string $info array('name', 'restorable', 'is_original') + */ + function add($info) + { + $_SESSION[$this->path][] = $info; + } + /** + * get the lastest changes for restore + * + * @return array array('name', 'restorable', 'is_original') + */ + function getNumRestorable() + { + $output = 0; + if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path])) + { + foreach($_SESSION[$this->path] as $k=>$v) + { + if(!empty($v['restorable']) && empty($v['is_original'])) + { + if(file_exists($this->session->getSessionDir() . $v['name'])) + { + $output++; + }else + { + + } + + } + } + } + return $output; + } + + /** + * get the path of image which keep the lastest changes + * + * @return return empty array when failed + */ + function getLastestRestorable() + { + if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path]) && sizeof($_SESSION[$this->path])) + { + $sessionImages = array_reverse($_SESSION[$this->path], true); + $lastestKey = ''; + foreach($sessionImages as $k=>$v) + { + if($v['restorable'] && empty($v['is_original']) && file_exists($this->session->getSessionDir() . $v['name'])) + { + return $sessionImages[$k]; + } + } + + } + return array(); + + } + /** + * get the original image which is kept in the session folder + * + * @return array + */ + function getOriginalImage() + { + $outputs = array(); + if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path])) + { + $sessionImages = array_reverse($_SESSION[$this->path], true); + foreach($sessionImages as $k=>$v) + { + if(!empty($v['is_original'])) + { + if(file_exists($this->session->getSessionDir() . $v['name'])) + { + return array('info'=>$_SESSION[$this->path][$k], 'key'=>$k); + } + + } + } + } + return $outputs; + + } + /** + * remove the lastest restorable state + * + * @return boolean + */ + function restore() + { + if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path]) && sizeof($_SESSION[$this->path])) + { + $sessionImages = array_reverse($_SESSION[$this->path], true); + $lastestKey = ''; + foreach($sessionImages as $k=>$v) + { + if($v['restorable'] && empty($v['is_original'])) + { + unset($_SESSION[$k]); + return true; + } + } + } + return false; + } + + + + } +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/class.image.php b/admin-dev/ajaxfilemanager/inc/class.image.php new file mode 100755 index 000000000..dfbaf970c --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.image.php @@ -0,0 +1,789 @@ +'', + 'ext'=>'', + 'size'=>'', + 'width'=>'', + 'height'=>'', + 'type'=>'', + 'path'=>'', + ); + var $_imgInfoFinal = array( + 'name'=>'', + 'ext'=>'', + 'size'=>'', + 'width'=>'', + 'height'=>'', + 'type'=>'', + 'path'=>'', + ); + var $_imgQuality = 90; + /** + * constructor + * + * @param boolean $debug + * @return Image + */ + + function __construct($debug = false) + { + $this->enableDebug($debug); + $this->gdInfo = $this->getGDInfo(); + } + function Image($debug = false) + { + $this->__construct($debug); + } + /** + * enable to debug + * + * @param boolean $value + */ + function enableDebug($value) + { + $this->_debug = ($value?true:false); + } + /** + * check if debug enable + * @return boolean + */ + function _isDebugEnable() + { + return $this->_debug; + } + + /** + * append to errors array and shown the each error when the debug turned on + * + * @param string $string + * @return void + * @access private + * @copyright this function originally come from Andy's php + */ + function _debug($value) + { + $this->_errors[] = $value; + if ($this->_debug) + { + echo $value . "
\n"; + } + } + /** + * show erros + * + */ + function showErrors() + { + if(sizeof($this->_errors)) + { + foreach($this->_errors as $error) + { + echo $error . "
\n"; + } + } + } + /** + * Load an image from the file system. + * + * @param string $filename + * @return bool + * @access public + * @copyright this function originally come from Andy's php + */ + function loadImage($filename) + { + $ext = strtolower($this->_getExtension($filename)); + $func = 'imagecreatefrom' . ($ext == 'jpg' ? 'jpeg' : $ext); + if (!$this->_isSupported($filename, $ext, $func, false)) { + return false; + } + if($ext == "gif") + { + // the following part gets the transparency color for a gif file + // this code is from the PHP manual and is written by + // fred at webblake dot net and webmaster at webnetwizard dotco dotuk, thanks! + $fp = @fopen($filename, "rb"); + $result = @fread($fp, 13); + $colorFlag = ord(substr($result,10,1)) >> 7; + $background = ord(substr($result,11)); + if ($colorFlag) { + $tableSizeNeeded = ($background + 1) * 3; + $result = @fread($fp, $tableSizeNeeded); + $this->transparentColorRed = ord(substr($result, $background * 3, 1)); + $this->transparentColorGreen = ord(substr($result, $background * 3 + 1, 1)); + $this->transparentColorBlue = ord(substr($result, $background * 3 + 2, 1)); + } + fclose($fp); + // -- here ends the code related to transparency handling + } + $this->_imgOrig = @$func($filename); + if ($this->_imgOrig == null) { + $this->_debug("The image could not be created from the '$filename' file using the '$func' function."); + return false; + }else + { + $this->imageFile = $filename; + $this->_imgInfoOrig = array( + 'name'=>basename($filename), + 'ext'=>$ext, + 'size'=>filesize($filename), + 'path'=>$filename, + ); + $imgInfo = $this->_getImageInfo($filename); + if(sizeof($imgInfo)) + { + foreach($imgInfo as $k=>$v) + { + $this->_imgInfoOrig[$k] = $v; + $this->_imgInfoFinal[$k] = $v; + } + } + + } + return true; + } + + /** + * Load an image from a string (eg. from a database table) + * + * @param string $string + * @return bool + * @access public + * @copyright this function originally come from Andy's php + */ + function loadImageFromString($string) + { + $this->imageFile = $filename; + $this->_imgOrig = imagecreatefromstring($string); + if (!$this->_imgOrig) { + $this->_debug('The image (supplied as a string) could not be created.'); + return false; + } + return true; + } + + + /** + * Save the modified image + * + * @param string $filename + * @param int $quality + * @param string $forcetype + * @return bool + * @access public + * @copyright this function originally come from Andy's php + */ + function saveImage($filename, $quality = 90, $forcetype = '') + { + if ($this->_imgFinal == null) { + $this->_debug('No changes intend to be made.'); + return false; + } + + $ext = ($forcetype == '') ? $this->_getExtension($filename) : strtolower($forcetype); + $func = 'image' . ($ext == 'jpg' ? 'jpeg' : $ext); + if (!$this->_isSupported($filename, $ext, $func, true)) + { + return false; + } + $saved = false; + switch($ext) + { + case 'gif': + if ($this->gdInfo['Truecolor Support'] && imageistruecolor($this->_imgFinal)) + { + imagetruecolortopalette($this->_imgFinal, false, 255); + } + case 'png': + $saved = $func($this->_imgFinal, $filename); + break; + case 'jpg': + $saved = $func($this->_imgFinal, $filename, $quality); + break; + } + + if ($saved === false) + { + $this->_debug("The image could not be saved to the '$filename' file as the file type '$ext' using the '$func' function."); + return false; + }else + { + $this->_imgInfoFinal['size'] = @filesize($filename); + @chmod($filename, intval($this->chmod, 8)); + } + + return true; + } + /** + * Shows the masked image without any saving + * + * @param string $type + * @param int $quality + * @return bool + * @access public + * @copyright this function originally come from Andy's php + */ + function showImage($type = '', $quality = '') + { + if ($this->_imgFinal == null) { + $this->_debug('There is no cropped image to show.'); + return false; + } + $type = (!empty($type)?$type:$this->_imgInfoOrig['ext']); + $quality = (!empty($quality)?$quality:$this->_imgQuality); + + $type = strtolower($type); + $func = 'image' . ($type == 'jpg' ? 'jpeg' : $type); + $head = 'image/' . ($type == 'jpg' ? 'jpeg' : $type); + + if (!$this->_isSupported('[showing file]', $type, $func, false)) { + return false; + } + + header("Content-type: $head"); + switch($type) + { + case 'gif': + if ($this->gdInfo['Truecolor Support'] && imageistruecolor($this->_imgFinal)) + { + @imagetruecolortopalette($this->_imgFinal, false, 255); + } + case 'png': + $func($this->_imgFinal); + break; + case 'jpg': + $func($this->_imgFinal, '', $quality); + break; + } + return true; + } + + /** + * Used for cropping image + * + * @param int $dst_x + * @param int $dst_y + * @param int $dst_w + * @param int $dst_h + * @return bool + * @access public + * @copyright this function originally come from Andy's php + */ + function crop($dst_x, $dst_y, $dst_w, $dst_h) + { + if ($this->_imgOrig == null) { + $this->_debug('The original image has not been loaded.'); + return false; + } + if (($dst_w <= 0) || ($dst_h <= 0)) { + $this->_debug('The image could not be cropped because the size given is not valid.'); + return false; + } + if (($dst_w > imagesx($this->_imgOrig)) || ($dst_h > imagesy($this->_imgOrig))) { + $this->_debug('The image could not be cropped because the size given is larger than the original image.'); + return false; + } + $this->_createFinalImageHandler($dst_w, $dst_h); + if ($this->gdInfo['Truecolor Support']) + { + if(!@imagecopyresampled($this->_imgFinal, $this->_imgOrig, 0, 0, $dst_x, $dst_y, $dst_w, $dst_h, $dst_w, $dst_h)) + { + $this->_debug('Unable crop the image.'); + return false; + } + } else + { + if(!@imagecopyresized($this->_imgFinal, $this->_imgOrig, 0, 0, $dst_x, $dst_y, $dst_w, $dst_h, $dst_w, $dst_h)) + { + $this->_debug('Unable crop the image.'); + return false; + } + + } + $this->_imgInfoFinal['width'] = $dst_w; + $this->_imgInfoFinal['height'] = $dst_h; + return true; + } + + + /** + * Resize the Image in the X and/or Y direction + * If either is 0 it will be scaled proportionally + * + * @access public + * + * @param mixed $new_x + * @param mixed $new_y + * @param boolean $constraint keep to resize the image proportionally + * @param boolean $unchangeIfsmaller keep the orignial size if the orignial smaller than the new size + * + * + * @return mixed none or PEAR_error + */ + function resize( $new_x, $new_y, $constraint= false, $unchangeIfsmaller=false) + { + if(!$this->_imgOrig) + { + $this->_debug('No image fould.'); + return false; + } + + $new_x = (int)($new_x); + $new_y = (int)($new_y); + if($new_x <=0 || $new_y <= 0) + { + $this->_debug('either of new width or height can be zeor or less.'); + }else + { + + if($constraint) + { + if($new_x < 1 && $new_y < 1) + { + $new_x = $this->_imgInfoOrig['width']; + $new_y = $this->_imgInfoOrig['height']; + }elseif($new_x < 1) + { + $new_x = floor($new_y / $this->_imgInfoOrig['height'] * $this->_imgInfoOrig['width']); + + }elseif($new_y < 1) + { + $new_y = floor($new_x / $this->_imgInfoOrig['width'] * $this->_imgInfoOrig['height']); + }else + { + $scale = min($new_x/$this->_imgInfoOrig['width'], $new_y/$this->_imgInfoOrig['height']) ; + $new_x = floor($scale*$this->_imgInfoOrig['width']); + $new_y = floor($scale*$this->_imgInfoOrig['height']); + } + } + if($unchangeIfsmaller) + { + if($this->_imgInfoOrig['width'] < $new_x && $this->_imgInfoOrig['height'] < $new_y ) + { + $new_x = $this->_imgInfoOrig['width']; + $new_y = $this->_imgInfoOrig['height']; + } + } + + + + if(is_null($this->_imgOrig)) + { + $this->loadImage($filePath); + } + if(sizeof($this->_errors) == 0) + { + return $this->_resize($new_x, $new_y); + } + } + + return false; + + } // End resize + /** + * resize the image and return the thumbnail image details array("width"=>, "height"=>, "name") + * + * @param string $fileName + * @param int $new_x the thumbnail width + * @param int $new_y the thumbnail height + * @param string $mode can be save, view and both + * @return unknown + */ + function _resize( $new_x, $new_y) + { + $this->_createFinalImageHandler($new_x, $new_y); + // hacks fot transparency of png24 files + if ($this->_imgInfoOrig['type'] == 'png') + { + @imagealphablending($this->_imgFinal, false); + if(function_exists('ImageCopyResampled')) + { + @ImageCopyResampled($this->_imgFinal, $this->_imgOrig, 0, 0, 0, 0, $new_x, $new_y, $this->_imgInfoOrig['width'], $this->_imgInfoOrig['height']); + } else { + @ImageCopyResized($this->_imgFinal, $this->_imgOrig, 0, 0, 0, 0, $new_x, $new_y, $this->_imgInfoOrig['width'], $this->_imgInfoOrig['height']); + } + @imagesavealpha($this->_imgFinal, true); + + }else + {//for the rest image + if(function_exists('ImageCopyResampled')) + { + @ImageCopyResampled($this->_imgFinal, $this->_imgOrig, 0, 0, 0, 0, $new_x, $new_y, $this->_imgInfoOrig['width'], $this->_imgInfoOrig['height']); + } else { + @ImageCopyResized($this->_imgFinal, $this->_imgOrig, 0, 0, 0, 0, $new_x, $new_y, $this->_imgInfoOrig['width'], $this->_imgInfoOrig['height']); + } + } + + + $this->_imgInfoFinal['width'] = $new_x; + $this->_imgInfoFinal['height'] = $new_y; + $this->_imgInfoFinal['name'] = basename($this->_imgInfoOrig['name']); + $this->_imgInfoFinal['path'] = $this->_imgInfoOrig['path']; + if($this->_imgFinal) + { + return true; + }else + { + $this->_debug('Unable to resize the image on the fly.'); + return false; + + } + + } + /** + * Get the extension of a file name + * + * @param string $file + * @return string + * @copyright this function originally come from Andy's php + */ + function _getExtension($file) + { + $ext = ''; + if (strrpos($file, '.')) { + $ext = strtolower(substr($file, (strrpos($file, '.') ? strrpos($file, '.') + 1 : strlen($file)), strlen($file))); + } + return $ext; + } + + /** + * Validate whether image reading/writing routines are valid. + * + * @param string $filename + * @param string $extension + * @param string $function + * @param bool $write + * @return bool + * @access private + * @copyright this function originally come from Andy's php + */ + function _isSupported($filename, $extension, $function, $write = false) + { + + $giftype = ($write) ? ' Create Support' : ' Read Support'; + $support = strtoupper($extension) . ($extension == 'gif' ? $giftype : ' Support'); + + if (!isset($this->gdInfo[$support]) || $this->gdInfo[$support] == false) { + $request = ($write) ? 'saving' : 'reading'; + $this->_debug("Support for $request the file type '$extension' cannot be found."); + return false; + } + if (!function_exists($function)) { + $request = ($write) ? 'save' : 'read'; + $this->_debug("The '$function' function required to $request the '$filename' file cannot be found."); + return false; + } + + return true; + } + /** + * flip image horizotally or vertically + * + * @param string $direction + * @return boolean + */ + function flip($direction="horizontal") + { + $this->_createFinalImageHandler($this->_imgInfoOrig['width'], $this->_imgInfoOrig['height']); + if($direction != "vertical") + { + $dst_x = 0; + $dst_y = 0; + $src_x = $this->_imgInfoOrig['width'] -1; + $src_y = 0; + $dst_w = $this->_imgInfoOrig['width']; + $dst_h = $this->_imgInfoOrig['height']; + $src_w = 0 - $this->_imgInfoOrig['width']; + $src_h = $this->_imgInfoOrig['height']; + + }else + { + $dst_x = 0; + $dst_y = 0; + $src_x = 0; + $src_y = $this->_imgInfoOrig['height'] - 1; + $dst_w = $this->_imgInfoOrig['width']; + $dst_h = $this->_imgInfoOrig['height']; + $src_w = $this->_imgInfoOrig['width']; + $src_h = 0 - $this->_imgInfoOrig['height']; + } + if(function_exists('ImageCopyResampled')){ + ImageCopyResampled($this->_imgFinal, $this->_imgOrig, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); + } else { + ImageCopyResized($this->_imgFinal, $this->_imgOrig, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); + } + $this->_imgInfoFinal['width'] = $dst_w; + $this->_imgInfoFinal['height'] = $dst_h; + $this->_imgInfoFinal['name'] = basename($this->imageFile); + $this->_imgInfoFinal['path'] = $this->imageFile; + if($this->_imgFinal) + { + return true; + }else + { + $this->_debug('Unable to resize the image on the fly.'); + return false; + + } + } + /** + * flip vertically + * + * @return boolean + */ + function flipVertical() + { + return $this->flip('vertical'); + } + /** + * flip horizontal + * + * @return string + */ + function flipHorizontal() + { + return $this->flip('horizontal'); + } + + + /** + * get the GD version information + * + * @param bool $versionOnly + * @return array + * @access private + * @copyright this function originally come from Andy's php + */ + function getGDInfo($versionOnly = false) + { + $outputs = array(); + if (function_exists('gd_info')) + { + $outputs = gd_info(); + } else + { + $gd = array( + 'GD Version' => '', + 'GIF Read Support' => false, + 'GIF Create Support' => false, + 'JPG Support' => false, + 'PNG Support' => false, + 'FreeType Support' => false, + 'FreeType Linkage' => '', + 'T1Lib Support' => false, + 'WBMP Support' => false, + 'XBM Support' => false + ); + ob_start(); + phpinfo(); + $buffer = ob_get_contents(); + ob_end_clean(); + foreach (explode("\n", $buffer) as $line) { + $line = array_map('trim', (explode('|', strip_tags(str_replace('', '|', $line))))); + if (isset($gd[$line[0]])) { + if (strtolower($line[1]) == 'enabled') { + $gd[$line[0]] = true; + } else { + $gd[$line[0]] = $line[1]; + } + } + } + $outputs = $gd; + } + + if (isset($outputs['JIS-mapped Japanese Font Support'])) { + unset($outputs['JIS-mapped Japanese Font Support']); + } + if (function_exists('imagecreatefromgd')) { + $outputs['GD Support'] = true; + } + if (function_exists('imagecreatefromgd2')) { + $outputs['GD2 Support'] = true; + } + if (preg_match('/^(bundled|2)/', $outputs['GD Version'])) { + $outputs['Truecolor Support'] = true; + } else { + $outputs['Truecolor Support'] = false; + } + if ($outputs['GD Version'] != '') { + $match = array(); + if (preg_match('/([0-9\.]+)/', $outputs['GD Version'], $match)) { + $foo = explode('.', $match[0]); + $outputs['Version'] = array('major' => isset($foo[0])?$foo[0]:'', 'minor' => isset($foo[1])?$foo[1]:'', 'patch' => isset($foo[2])?$foo:""); + } + } + + return ($versionOnly) ? $outputs['Version'] : $outputs; + } + + /** + * Destroy the resources used by the images. + * + * @param bool $original + * @return void + * @access public + * @copyright this function originally come from Andy's php + */ + function DestroyImages($original = true) + { + if(!is_null($this->_imgFinal)) + { + @imagedestroy($this->_imgFinal); + } + $this->_imgFinal = null; + if ($original && !is_null($this->_imgOrig)) { + @imagedestroy($this->_imgOrig); + $this->_imgOrig = null; + } + } + + function getImageInfo($imagePath) + { + return $this->_getImageInfo($imagePath); + } + /** + * get image information, e.g. width, height, type + * @access public + * @return array + */ + function _getImageInfo($imagePath) + { + $outputs = array(); + $imageInfo = @GetImageSize($imagePath); + if ($imageInfo && is_array($imageInfo)) + { + switch($imageInfo[2]){ + case 1: + $type = 'gif'; + break; + case 2: + $type = 'jpeg'; + break; + case 3: + $type = 'png'; + break; + case 4: + $type = 'swf'; + break; + case 5: + $type = 'psd'; + case 6: + $type = 'bmp'; + case 7: + case 8: + $type = 'tiff'; + default: + $type = ''; + } + $outputs['width'] = $imageInfo[0]; + $outputs['height'] = $imageInfo[1]; + $outputs['type'] = $type; + $outputs['ext'] = $this->_getExtension($imagePath); + } else { + $this->_debug('Unable locate the image or read images information.'); + } + return $outputs; + + } + function rotate($angle, $bgColor=0) + { + $angle = (int)($angle) -360; + while($angle <0) + { + $angle += 360; + } + + + if($this->_imgFinal = imagerotate($this->_imgOrig, $angle)) + { + return true; + }else + { + return false; + } + + + } + /** + * get the original image info + * + * @return array + */ + function getOriginalImageInfo() + { + return $this->_imgInfoOrig; + } + /** + * return the final image info + * + * @return array + */ + function getFinalImageInfo() + { + if($this->_imgInfoFinal['width'] == '') + { + if(is_null($this->_imgFinal)) + { + $this->_imgInfoFinal = $this->_imgInfoOrig; + }else + { + $this->_imgInfoFinal['width'] = @imagesx($this->_imgFinal); + $this->_imgInfoFinal['height'] = @imagesy($this->_imgFinal); + } + } + return $this->_imgInfoFinal; + } + + /** + * create final image handler + * + * @access private + * @param $dst_w width + * @param $dst_h height + * @return boolean + * @copyright original from noname at nivelzero dot ro + */ + function _createFinalImageHandler($dst_w, $dst_h) + { + if(function_exists('ImageCreateTrueColor')) + { + $this->_imgFinal = @ImageCreateTrueColor($dst_w,$dst_h); + } else { + $this->_imgFinal = @ImageCreate($dst_w,$dst_h); + } + if (!is_null($this->transparentColorRed) && !is_null($this->transparentColorGreen) && !is_null($this->transparentColorBlue)) { + + $transparent = @imagecolorallocate($targetImageIdentifier, $this->transparentColorRed, $this->transparentColorGreen, $this->transparentColorBlue); + @imagefilledrectangle($this->_imgFinal, 0, 0, $dst_w, $dst_h, $transparent); + @imagecolortransparent($this->_imgFinal, $transparent); + } + + } + } + +?> diff --git a/admin-dev/ajaxfilemanager/inc/class.manager.php b/admin-dev/ajaxfilemanager/inc/class.manager.php new file mode 100755 index 000000000..01e4d89a9 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.manager.php @@ -0,0 +1,373 @@ +'noFlag', 'cut'=>'cutFlag', 'copy'=>'copyFlag'); + var $forceFolderOnTop = false; //forced to have folder shown on the top of the list + var $currentFolderInfo = array( + 'name'=>'', + 'subdir'=>0, + 'file'=>0, + 'ctime'=>'', + 'mtime'=>'', + 'is_readable'=>'', + 'is_writable'=>'', + 'size'=>0, + 'path'=>'', + 'type'=>'folder', + 'flag'=>'noFlag', + 'friendly_path'=>'', + ); + + var $lastVisitedFolderPathIndex = 'ajax_last_visited_folder'; + var $folderPathIndex = "path"; + var $calculateSubdir = true; + var $fileTypes = array( + array(array("exe", "com"), "fileExe", SEARCH_TYPE_EXE, 0), + array(array("gif", "jpg", "png", "bmp", "tif"), "filePicture", SEARCH_TYPE_IMG, 1), + array(array("zip", "sit", "rar", "gz", "tar"), "fileZip", SEARCH_TYPE_ARCHIVE, 0), + array(array("htm", "html", "php", "jsp", "asp", 'js', 'css'), "fileCode", SEARCH_TYPE_HTML, 1), + array(array("mov", "ram", "rm", "asx", "dcr", "wmv"), "fileVideo", SEARCH_TYPE_VIDEO, 1), + array(array("mpg", "avi", "asf", "mpeg"), "fileVideo", SEARCH_TYPE_MOVIE, 1), + array(array("aif", "aiff", "wav", "mp3", "wma"), "fileMusic", SEARCH_TYPE_MUSIC, 1), + array(array("swf", 'flv'), "fileFlash", SEARCH_TYPE_FLASH, 1), + array(array("ppt"), "filePPT", SEARCH_TYPE_PPT, 0), + array(array("rtf"), "fileRTF", SEARCH_TYPE_DOC, 0), + array(array("doc"), "fileWord", SEARCH_TYPE_WORD, 0), + array(array("pdf"), "fileAcrobat", SEARCH_TYPE_PDF, 0), + array(array("xls", "csv"), "fileExcel", SEARCH_TYPE_EXCEL, 0), + array(array("txt"), "fileText", SEARCH_TYPE_TEXT, 1), + array(array("xml", "xsl", "dtd"), "fileXml", SEARCH_TYPE_XML, 1) + ); + + /** + * constructor + * @path the path to a folder + * @calculateSubdir force to get the subdirectories information + */ + function __construct($path = null, $calculateSubdir=true) + { + + $this->calculateSubdir = $calculateSubdir; + if(defined('CONFIG_SYS_FOLDER_SHOWN_ON_TOP')) + { + $this->forceFolderOnTop = CONFIG_SYS_FOLDER_SHOWN_ON_TOP; + } + if(!is_null($path)) + { + $this->currentFolderPath = $path; + + }elseif(isset($_GET[$this->folderPathIndex]) && file_exists($_GET[$this->folderPathIndex]) && !is_file($_GET[$this->folderPathIndex]) ) + { + $this->currentFolderPath = $_GET[$this->folderPathIndex]; + } + elseif(isset($_SESSION[$this->lastVisitedFolderPathIndex]) && file_exists($_SESSION[$this->lastVisitedFolderPathIndex]) && !is_file($_SESSION[$this->lastVisitedFolderPathIndex])) + { + $this->currentFolderPath = $_SESSION[$this->lastVisitedFolderPathIndex]; + }else + { + $this->currentFolderPath = CONFIG_SYS_DEFAULT_PATH; + } + + $this->currentFolderPath = (isUnderRoot($this->currentFolderPath)?backslashToSlash((addTrailingSlash($this->currentFolderPath))):CONFIG_SYS_DEFAULT_PATH); + + if($this->calculateSubdir) + {// keep track of this folder path in session + $_SESSION[$this->lastVisitedFolderPathIndex] = $this->currentFolderPath; + } + if(is_dir($this->currentFolderPath)) + { + $file = new file($this->currentFolderPath); + $folderInfo = $file->getFileInfo(); + if(sizeof($folderInfo)) + { + $this->currentFolderInfo['name']=basename($this->currentFolderPath); + $this->currentFolderInfo['subdir']=0; + $this->currentFolderInfo['file']=0; + $this->currentFolderInfo['ctime']=$folderInfo['ctime']; + $this->currentFolderInfo['mtime']=$folderInfo['mtime']; + $this->currentFolderInfo['is_readable']=$folderInfo['is_readable']; + $this->currentFolderInfo['is_writable']=$folderInfo['is_writable']; + $this->currentFolderInfo['path'] = $this->currentFolderPath; + $this->currentFolderInfo['friendly_path'] = transformFilePath($this->currentFolderPath); + $this->currentFolderInfo['type'] = "folder"; + $this->currentFolderInfo['cssClass']='folder'; + + //$this->currentFolderInfo['flag'] = $folderInfo['flag']; + } + } + if($calculateSubdir && !file_exists($this->currentFolderPath)) + { + die(ERR_FOLDER_NOT_FOUND . $this->currentFolderPath); + } + + + + } + + function setSessionAction(&$session) + { + $this->sessionAction = $session; + } + /** + * constructor + */ + function manager($path = null, $calculateSubdir=true) + { + $this->__construct($path, $calculateSubdir); + } + /** + * get current folder path + * @return string + */ + function getCurrentFolderPath() + { + return $this->currentFolderPath; + } + /** + * get the list of files and folders under this current fold + * @return array + */ + function getFileList() + { + $outputs = array(); + $files = array(); + $folders = array(); + $tem = array(); + $dirHandler = @opendir($this->currentFolderPath); + if($dirHandler) + { + while(false !== ($file = readdir($dirHandler))) + { + if($file != '.' && $file != '..') + { + $flag = $this->flags['no']; + + if($this->sessionAction->getFolder() == $this->currentFolderPath) + {//check if any flag associated with this folder or file + $folder = addTrailingSlash(backslashToSlash($this->currentFolderPath)); + if(in_array($folder . $file, $this->sessionAction->get())) + { + if($this->sessionAction->getAction() == "copy") + { + $flag = $this->flags['copy']; + }else + { + $flag = $this->flags['cut']; + } + } + } + $path=$this->currentFolderPath.$file; + if(is_dir($path) && isListingDocument($path) ) + { + $this->currentFolderInfo['subdir']++; + if(!$this->calculateSubdir) + { + }else + { + + $folder = $this->getFolderInfo($path); + $folder['flag'] = $flag; + $folders[$file] = $folder; + $outputs[$file] = $folders[$file]; + } + + + }elseif(is_file($path) && isListingDocument($path)) + { + + $obj = new file($path); + $tem = $obj->getFileInfo(); + if(sizeof($tem)) + { + $fileType = $this->getFileType($file); + foreach($fileType as $k=>$v) + { + $tem[$k] = $v; + } + $this->currentFolderInfo['size'] += $tem['size']; + $this->currentFolderInfo['file']++; + $tem['path'] = backslashToSlash($path); + $tem['type'] = "file"; + $tem['flag'] = $flag; + $files[$file] = $tem; + $outputs[$file] = $tem; + $tem = array(); + $obj->close(); + + } + + + } + + } + } + if($this->forceFolderOnTop) + { + uksort($folders, "strnatcasecmp"); + uksort($files, "strnatcasecmp"); + $outputs = array(); + foreach($folders as $v) + { + $outputs[] = $v; + } + foreach ($files as $v) + { + $outputs[] = $v; + } + }else + { + uksort($outputs, "strnatcasecmp"); + } + + @closedir($dirHandler); + }else + { + trigger_error('Unable to locate the folder ' . $this->currentFolderPath, E_NOTICE); + } + return $outputs; + } + + + /** + * get current or the specified dir information + * + * @param string $path + * @return array + */ + function getFolderInfo($path=null) + { + if(is_null($path)) + { + return $this->currentFolderInfo; + }else + { + $obj = new manager($path, false); + $obj->setSessionAction($this->sessionAction); + $obj->getFileList(); + return $obj->getFolderInfo(); + } + + } + + /** + * return the file type of a file. + * + * @param string file name + * @return array + */ + function getFileType($fileName, $checkIfDir = false) + { + + $ext = strtolower($this->_getExtension($fileName, $checkIfDir)); + + foreach ($this->fileTypes as $fileType) + { + if(in_array($ext, $fileType[0])) + { + return array("cssClass" => $fileType[1], "fileType" => $fileType[2], "preview" => $fileType[3], 'test'=>5); + } + } + if(!empty($fileName)) + {//this is folder + if(empty($ext)) + { + if(is_dir($fileName)) + { + + return array("cssClass" => ($checkIfDir && $this->isDirEmpty($fileName)?'folderEmpty':"folder") , "fileType" => "Folder", "preview" => 0, 'test'=>1); + }else + { + return array("cssClass" => "fileUnknown", "fileType" => SEARCH_TYPE_UNKNOWN, "preview" => 0, 'test'=>2); + } + }else + { + return array("cssClass" => "fileUnknown", "fileType" => SEARCH_TYPE_UNKNOWN, "preview" => 0, 'test'=>3, 'ext'=>$ext , 'filename'=>$fileName); + } + + }else + {//this is unknown file + return array("cssClass" => "fileUnknown", "fileType" => SEARCH_TYPE_UNKNOWN, "preview" => 0, 'test'=>4); + } + + + } + + /** + * return the predefined file types + * + * @return arrray + */ + function getFileTypes() + { + return $this->fileTypes; + } + /** + * print out the file types + * + */ + function printFileTypes() + { + foreach($fileTypes as $fileType) + { + if(isset($fileType[0]) && is_array($fileType[0])) + { + foreach($fileType[0] as $type) + { + echo $type. ","; + } + } + } + } + + /** + * Get the extension of a file name + * + * @param string $file + * @return string + * @copyright this function originally come from Andy's php + */ + function _getExtension($file, $checkIfDir = false) + { + if($checkIfDir && file_exists($file) && is_dir($file)) + { + return ''; + }else + { + return @substr(@strrchr($file, "."), 1); + } + + + } + + function isDirEmpty($path) + { + $dirHandler = @opendir($path); + if($dirHandler) + { + while(false !== ($file = readdir($dirHandler))) + { + if($file != '.' && $file != '..') + { + @closedir($dirHandler); + return false; + + } + } + + @closedir($dirHandler); + + } + return true; + } +} +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/class.pagination.php b/admin-dev/ajaxfilemanager/inc/class.pagination.php new file mode 100755 index 000000000..38752d3cd --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.pagination.php @@ -0,0 +1,584 @@ +friendlyUrl = $friendlyUrl; + $this->__resetCurrentPage(); + } + + /** + * set maximum number of items per page + * + * @param integer $value maximum number of items per page + */ + function setLimit($value) + { + $this->itemsPerPage = (int)($value); + } + /** + * get maximum number of items per page + * + * @return integer + */ + function getLimit() + { + return $this->itemsPerPage; + } + + /** + * set the total number of items + * + * @param integer $value the total number of items + */ + function setTotal($value) + { + $this->totalItems = (int)($value); + } + /** + * get the total number of items + * + * @return integer total number of items + */ + function getTotal() + { + return $this->totalItems; + } + /** + * get total pages will be used to display all records + * + */ + function getTotalPages() + { + + $output = floor(($this->totalItems / $this->itemsPerPage )); + if($this->totalItems % $this->itemsPerPage) + { + $output++; + } + return $output; + } + + /** + * Set the index of URL Query String + * + * @param string $value e.g. page + */ + function setPageIndex($value) + { + $this->pageIndex = $value; + $this->__resetCurrentPage(); + } + + + function getPageIndex() + { + return $this->pageIndex; + } + /** + * initiate or reset the current page number + * + */ + function __resetCurrentPage() + { + $this->currentPage = ((isset($_GET[$this->pageIndex]) && (int)($_GET[$this->pageIndex]) > 0)?(int)($_GET[$this->pageIndex]):1); + } + + /** + * set the base url used in the links, default is $PHP_SELF + * + * @param string $value the base url + */ + function setUrl($value="") + { + if(empty($value)) + { + if($this->friendlyUrl) + { + $this->url = "http://" . $_SERVER['HTTP_HOST'] . "/"; + }else + { + $this->url = $_SERVER['PHP_SELF']; + } + }else + { + $this->url = $value; + } + + } + + /** + * get the base url variable + * + * @return string the base url + */ + function getUrl() + { + + if(empty($this->url)) + { + $this->setUrl(); + + } + return $this->url; + } + + /** + * set base url for pagination links after exculed those keys + * identified on excluded query strings + */ + function __setBaseUrl() + { + + if(empty($this->url)) + { + $this->getUrl(); + } + + if($this->friendlyUrl) + { + $this->baseUrl = $this->getUrl(); + }else + { + + $appendingQueryStrings = array(); + $this->excludedQueryStrings[$this->pageIndex] =$this->pageIndex; + foreach($_GET as $k=>$v) + { + if((array_search($k, $this->excludedQueryStrings) === false )) + { + $appendingQueryStrings[$k] = $k . "=" . $v; + } + } + if(sizeof($appendingQueryStrings)) + { + $this->baseUrl = $this->__appendQueryString($this->url, implode("&", $appendingQueryStrings)); + }else + { + $this->baseUrl = $this->getUrl(); + } + + } + + + } + /** + * get base url for pagination links aftr excluded those key + * identified on excluded query strings + * + */ + function __getBaseUrl() + { + + if(empty($this->baseUrl)) + { + + $this->__setBaseUrl(); + } + return $this->baseUrl; + } + + + /** + * get the first item number + * + * @return interger the first item number displayed within current page + */ + function getFirstItem() + { + $output = 0; + $temStartItemNumber = (($this->currentPage - 1) * $this->itemsPerPage + 1); + if($this->totalItems && $temStartItemNumber <= $this->totalItems ) + { + + $output = $temStartItemNumber; + } + return $output; + } + /** + * get the last item number displayed within current page + * + * @return interger the last item number + */ + function getLastItem() + { + $output = 0; + $temEndItemNumber = (($this->currentPage) * $this->itemsPerPage); + if($this->totalItems) + { + if($temEndItemNumber <= $this->totalItems) + { + $output = $temEndItemNumber; + }else + { + $output = $this->totalItems; + } + + } + return $output; + } + /** + * set page groupings limit + * used for previous 1 2 3 4 5 next + * + * @param unknown_type $value + */ + function setGroupLimit($value) + { + $this->groupLimit = (int)($value); + } + /** + * get page grouping limit + * + * @return integer the page grouping limit + */ + function getGroupLimit() + { + return $this->groupLimit; + } + /** + * get the page offset number + * used for Query . e.g SELECT SQL_CALC_FOUND_ROWS * + * FROM mytable LIMIT getPageOffset(), getItemsPerPage() + * + * @return iner + */ + function getPageOffset() + { + return (($this->currentPage - 1) * $this->itemsPerPage); + } + /** + * get the last url if any + * @return string the last url + */ + function getLastUrl() + { + + $url = ""; + $totalPages = $this->getTotalPages(); + if($this->currentPage < $totalPages) + { + $url = $this->__getBaseUrl(); + + if($this->friendlyUrl) + { + $url .= $this->pageIndex . $totalPages . "/"; + }else + { + $url = $this->__appendQueryString($url, $this->pageIndex . "=" . $totalPages); + } + $url = sprintf('%s', + $url, + $this->lastText); + } + return $url; + } + + + + + /** + * get the first url if any + * @return string the first url + */ + + function getFirstUrl() + { + $url = ""; + if($this->currentPage > 1) + { + $url = $this->__getBaseUrl(); + if($this->friendlyUrl) + { + $url .= $this->pageIndex . "1/"; + }else + { + $url = $this->__appendQueryString($url, $this->pageIndex . "=1"); + } + $url = sprintf('%s', + $url, + $this->firstText); + + } + return $url; + } + + /** + * get the previous page url if anywhere + * + * @param array $excludedQueryStrings excluded the value from $_GET + * @return string the previous page url + */ + function getPreviousUrl() + { + $url = ""; + if($this->currentPage > 1 && $this->totalItems > 0 ) + { + $url = $this->__getBaseUrl(); + if($this->friendlyUrl) + { + $url .= $this->pageIndex . ($this->currentPage - 1) . "/"; + }else + { + $url = $this->__appendQueryString($url, $this->pageIndex . "=" . ($this->currentPage -1)); + } + $url = sprintf('%s', + $url, + $this->previousText); + + } + + return $url; + } + /** + * get the next page url if anywhere + * + * @param array $excludedQueryStrings excluded the value from $_GET + * @return string the next page url + */ + function getNextUrl() + { + $url = ""; + if($this->totalItems > ($this->currentPage * $this->itemsPerPage)) + { + $url = $this->__getBaseUrl(); + if($this->friendlyUrl) + { + $url .= $this->pageIndex . ($this->currentPage + 1) . "/"; + }else + { + $url = $this->__appendQueryString($url, $this->pageIndex . "=" . ($this->currentPage + 1)); + } + $url = sprintf('%s', + $url, + $this->nextText); + } + return $url; + + } + + /** + * get the group page links e.g. 1,2,3,4,5 + * return format + * 1 + * 2 + * 3 + */ + function getGroupUrls() + { + $output = ""; + if($this->totalItems > 0) + { + $displayedPages = 0; + $url = $this->__getBaseUrl(); + $totalPages = $this->getTotalPages(); + // find halfway point + $groupLimitHalf = floor($this->groupLimit / 2); + // determine what item/page we start with + $itemStart = $this->currentPage - $groupLimitHalf; + $itemStart = ($itemStart > 0 && $itemStart <= $totalPages)?$itemStart:1; + $itemEnd = $itemStart; + + while($itemEnd < ($itemStart + $this->groupLimit - 1) && $itemEnd < $totalPages) + { + $itemEnd++; + } + + + if($totalPages > ($itemEnd - $itemStart)) + { + for($i = $itemStart; $i > 1 && ($itemEnd - $itemStart + 1) < $this->groupLimit; $i--) + { + $itemStart--; + } + } + + for($item = $itemStart; $item <= $itemEnd; $item++) + { + if($item != $this->currentPage) + {//it is not the active link + if($this->friendlyUrl) + { + $temUrl = $url . $this->pageIndex . $item . "/"; + }else + { + $temUrl = $this->__appendQueryString($url, $this->pageIndex . "=" . $item); + } + $output .= sprintf(' %d ', $temUrl, $item); + }else + {//active link + $output .= sprintf(' %d ', $item); + } + } + } + return $output; + } + /** + * set the text of previous page link + * + * @param string $value + */ + function setPreviousText($value) + { + $this->previousText = $value; + } + /** + * set the text of first page link + * + * @param string $value + */ + function setFirstText($value) + { + $this->firstText = $value; + } + /** + * set the text of next page link + * + * @param string $value + */ + + function setNextText($value) + { + $this->nextText = $value; + } + /** + * set the text of last page link + * + * @param string $value + */ + function setLastText($value) + { + $this->lastText = $value; + } + + /** + * set the excluded query string from $_GET; + * + * @param array the lists of the query string keys + */ + + function setExcludedQueryString($values = array()) + { + $this->excludedQueryStrings = $values; + } + + function getExcludedQueryString() + { + return $this->excludedQueryStrings; + } + + + /** + * add extra query stiring to a url + * @param string $baseUrl + * @param string $extra the query string added to the base url + */ + function __appendQueryString($baseUrl, $extra) + { + $output = trim($baseUrl); + if(strpos($baseUrl, "?") !== false) + { + $output .= "&" . $extra; + }else + { + $output .= "?" . $extra; + } + return $output; + } + /** + * return the html + * + * @param integer $type + */ + function getPaginationHTML($type=1, $cssClass="pagination") + { + $output = ''; + $output .= "

\n"; + switch($type) + { + case "2": + $output .= "" . $this->getFirstItem() . " to " . $this->getLastItem() . " of " . $this->getTotal() . " results. "; + if($previousUrl = $this->getPreviousUrl()) + { + $output .= " " . $previousUrl; + } + + if($nextUrl = $this->getNextUrl()) + { + $output .= " " . $nextUrl; + } + break; + case 1: + //get full summary pagination + default: + $output .= "" . $this->getFirstItem() . "/" . $this->getLastItem() . " (" . $this->getTotal() . ") "; + if($firstUrl = $this->getFirstUrl()) + { + $output .= " " . $firstUrl; + } + if($previousUrl = $this->getPreviousUrl()) + { + $output .= " " . $previousUrl; + } + + if($groupUrls = $this->getGroupUrls()) + { + $output .= " " . $groupUrls; + } + if($nextUrl = $this->getNextUrl()) + { + $output .= " " . $nextUrl; + } + if($lastUrl = $this->getLastUrl()) + { + $output .= " " . $lastUrl; + } + $itemPerPage = ''; + $itemPerPage .= "\n"; + $output .= ""; + $output .= sprintf(PAGINATION_ITEMS_PER_PAGE, $itemPerPage); + $output .= ""; + $output .= " "; + } + + $output .= "

"; + return $output; + } + +} +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/class.search.php b/admin-dev/ajaxfilemanager/inc/class.search.php new file mode 100755 index 000000000..b26241a91 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.search.php @@ -0,0 +1,184 @@ +'', + 'mtime_to'=>'', + 'name'=>'', + 'size_from'=>'', + 'size_to'=>'', + 'recursive'=>'0', + + ); + var $sessionAction = null; + /** + * constructor + * + * @param string $rootFolder + */ + function __construct($rootFolder) + { + $this->rootFolder = $rootFolder; + $this->sessionAction = new SessionAction(); + $objRootFolder = new file($this->rootFolder); + $tem = $objRootFolder->getFileInfo(); + $obj = new manager($this->rootFolder, false); + $obj->setSessionAction($this->sessionAction); + $selectedDocuments = $this->sessionAction->get(); + $fileType = $obj->getFolderInfo($this->rootFolder); + + foreach($fileType as $k=>$v) + { + $tem[$k] = $v; + } + + $tem['path'] = backslashToSlash($this->rootFolder); + $tem['type'] = (is_dir($this->rootFolder)?'folder':'file'); + $tem['size'] = (is_dir($this->rootFolder)?'':transformFileSize(@filesize($this->rootFolder))); + //$tem['ctime'] = date(DATE_TIME_FORMAT, $tem['ctime']); + //$tem['mtime'] = date(DATE_TIME_FORMAT, $tem['mtime']); + $tem['flag'] = (array_search($tem['path'], $selectedDocuments) !== false?($this->sessionAction->getAction() == "copy"?'copyFlag':'cutFlag'):'noFlag'); + $tem['url'] = getFileUrl($this->rootFolder); + $tem['friendly_path'] = transformFilePath($this->rootFolder); + $tem['file'] = 0; + $tem['subdir'] = 0; + $manager = null; + $this->rootFolderInfo = $tem; + $tem = null; + } + + + + /** + * constructor + * + * @param string $rootFolder + */ + function Search($rootFolder) + { + $this->__construct($rootFolder); + } + + /** + * change the search keyword individually + * + * @param string $key + * @param string $value + */ + function addSearchKeyword($key, $value) + { + $this->searchkeywords[$key] = $value; + } + /** + * change the search keywords + * + * @param array $keywords + */ + function addSearchKeywords($keywords) + { + foreach($this->searchkeywords as $k=>$v) + { + if(array_key_exists($k, $keywords) !== false) + { + $this->searchkeywords[$k] = $keywords[$k]; + } + } + } + /** + * get the file according to the search keywords + * + */ + function doSearch($baseFolderPath = null) + { + + $baseFolderPath = addTrailingSlash(backslashToSlash((is_null($baseFolderPath)?$this->rootFolder:$baseFolderPath))); + + $dirHandler = @opendir($baseFolderPath); + if($dirHandler) + { + while(false !== ($file = readdir($dirHandler))) + { + if($file != '.' && $file != '..') + { + $path = $baseFolderPath . $file; + if(is_file($path)) + { + $isValid = true; + + $fileTime = @filemtime($path); + $fileSize = @filesize($path); + if($this->searchkeywords['name'] !== '' && @eregi($this->searchkeywords['name'], $file) === false) + { + $isValid = false; + } + if($this->searchkeywords['mtime_from'] != '' && $fileTime < @strtotime($this->searchkeywords['mtime_from'])) + { + $isValid = false; + } + if($this->searchkeywords['mtime_to'] != '' && $fileTime > @strtotime($this->searchkeywords['mtime_to'])) + { + $isValid = false; + } + if($this->searchkeywords['size_from'] != '' && $fileSize < @strtotime($this->searchkeywords['size_from'])) + { + $isValid = false; + } + if($this->searchkeywords['size_to'] != '' && $fileSize > @strtotime($this->searchkeywords['size_to'])) + { + $isValid = false; + } + if($isValid && isListingDocument($path)) + { + $finalPath = $path; + $objFile = new file($finalPath); + $tem = $objFile->getFileInfo(); + $obj = new manager($finalPath, false); + $obj->setSessionAction($this->sessionAction); + $selectedDocuments = $this->sessionAction->get(); + $fileType = $obj->getFileType($finalPath); + + foreach($fileType as $k=>$v) + { + $tem[$k] = $v; + } + + $tem['path'] = backslashToSlash($finalPath); + $tem['type'] = (is_dir($finalPath)?'folder':'file'); + $tem['size'] = transformFileSize($tem['size']); + $tem['ctime'] = date(DATE_TIME_FORMAT, $tem['ctime']); + $tem['mtime'] = date(DATE_TIME_FORMAT, $tem['mtime']); + $tem['flag'] = (array_search($tem['path'], $selectedDocuments) !== false?($this->sessionAction->getAction() == "copy"?'copyFlag':'cutFlag'):'noFlag'); + $tem['url'] = getFileUrl($tem['path']); + $this->rootFolderInfo['file']++; + $manager = null; + $this->files[] = $tem; + $tem = null; + } + }elseif(is_dir($path) && $this->searchkeywords['recursive']) + { + $this->Search($baseFolderPath); + } + } + } + } + closedir($dirHandler); + } + + function getFoundFiles() + { + return $this->files; + } + + function getRootFolderInfo() + { + + return $this->rootFolderInfo; + } + } +?> diff --git a/admin-dev/ajaxfilemanager/inc/class.session.php b/admin-dev/ajaxfilemanager/inc/class.session.php new file mode 100755 index 000000000..8fcf53c28 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.session.php @@ -0,0 +1,228 @@ +mkdir(CONFIG_SYS_DIR_SESSION_PATH)) + { + die('Unable to create session folder.'); + } + } + if(!$dir->isReadable(CONFIG_SYS_DIR_SESSION_PATH)) + { + die('Permission denied: ' . CONFIG_SYS_DIR_SESSION_PATH . " is not readable."); + } + if(!$dir->isWritable(CONFIG_SYS_DIR_SESSION_PATH)) + { + die('Permission denied: ' . CONFIG_SYS_DIR_SESSION_PATH . " is not writable."); + } + $this->dir = backslashToSlash(addTrailingSlash(CONFIG_SYS_DIR_SESSION_PATH)); + $this->lifeTime = get_cfg_var("session.gc_maxlifetime"); + $this->gcCounterFile = $this->dir . $this->gcCounterFileName; + $this->gcLogFile = $this->dir . $this->gcLogFileName; + $this->sessionDir = backslashToSlash($this->dir.session_id().DIRECTORY_SEPARATOR); +*/ + $this->init(); + } + /** + * constructor + * + */ + function Session() + { + $this->__construct(); + } + /** + * session init + * @return boolean + */ + function init() + { + + + + } + + function gc() + { + //init the counter file + $fp = @fopen($this->gcCounterFile, 'a+'); + if($fp) + { + $count = (int)(fgets($fp, 999999)) + 1; + if($count > $this->gcCounter || rand(0, 23) == date('h')) + { + $this->_gc(); + $count = 0; + } + @ftruncate($fp, 0); + if(!@fputs($fp, $count)) + { + die(SESSION_COUNTER_FILE_WRITE_FAILED); + } + @fclose($fp); + }else + { + die(SESSION_COUNTER_FILE_CREATE_FAILED); + } + } + + + function _gc() + { + //remove expired file from session folder + $dirHandler = @opendir($this->dir); + $output = ''; + $output .= "gc start at " . date('d/M/Y H:i:s') . "\n"; + $fo = new file(); + if($dirHandler) + { + while(false !== ($file = readdir($dirHandler))) + { + if($file != '.' && $file != '..' && $file != $this->gcCounterFileName && $file != $this->gcLogFileName && $file != session_id() ) + { + $path=$this->dir.$file; + $output .= $path ; + //check if this is a expired session file + if(filemtime($path) + $this->lifeTime < time()) + { + if($fo->delete($path)) + { + $output .= ' Deleted at ' . date('d/M/Y H:i:s'); + }else + { + $output .= " Failed at " . date('d/M/Y H:i:s'); + } + } + $output .= "\n"; + + } + } + if($this->debug) + { + $this->_log($output); + } + + @closedir($dirHandler); + + } + if(CONFIG_SYS_DEMO_ENABLE) + { + //remove expired files from uploaded folder + $dirHandler = @opendir(CONFIG_SYS_ROOT_PATH); + $output = ''; + $output .= "gc start at " . date('d/M/Y H:i:s') . "\n"; + $fo = new file(); + if($dirHandler) + { + while(false !== ($file = readdir($dirHandler))) + { + if($file != '.' && $file != '..') + { + $path=CONFIG_SYS_ROOT_PATH.$file; + $output .= $path ; + //check if this is a expired session file + if(filemtime($path) + $this->lifeTime < time()) + { + if($fo->delete($path)) + { + $output .= ' Deleted at ' . date('d/M/Y H:i:s'); + }else + { + $output .= " Failed at " . date('d/M/Y H:i:s'); + } + } + $output .= "\n"; + + } + } + if($this->debug) + { + $this->_log($output); + } + + @closedir($dirHandler); + + } + } + + } + /** + * log action taken by the gc + * + * @param unknown_type $msg + */ + function _log($msg) + { + $msg = "\n" . $msg; + $fp = @fopen($this->gcLogFile, 'w+'); + if($fp) + { + @ftruncate($fp, 0); + !@fputs($fp, $msg); + @fclose($fp); + } + } + + /** + * get the current session directory + * + * @return string return empty if failed + */ + function getSessionDir() + { + if(!file_exists($this->sessionDir) && !is_dir($this->sessionDir)) + { + $dir = new file(); + if(!$dir->mkdir($this->sessionDir)) + { + return ''; + } + }else + { + if(!@is_dir($this->sessionDir)) + { + return ''; + } + } + return $this->sessionDir; + } + + + +} +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/class.sessionaction.php b/admin-dev/ajaxfilemanager/inc/class.sessionaction.php new file mode 100755 index 000000000..486d1df50 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.sessionaction.php @@ -0,0 +1,93 @@ +actionIndex])) + { + $_SESSION[$this->actionIndex] = ''; + } + if(!isset($_SESSION[$this->selectedDocIndex]) || !is_array($_SESSION[$this->selectedDocIndex])) + { + $_SESSION[$this->selectedDocIndex] = array(); + } + if(!isset($_SESSION[$this->fromFolderIndex])) + { + $_SESSION[$this->fromFolderIndex] = ''; + } + } + + function SessionAction() + { + $this->__construct(); + } + /** + * count the number of selected documents + * + */ + function count() + { + return (isset($_SESSION[$this->selectedDocIndex])?sizeof($_SESSION[$this->selectedDocIndex]):0); + } + /** + * assign the selected documents + * + * @param array $selectedDocuments + */ + function set($selectedDocuments) + { + $_SESSION[$this->selectedDocIndex] = $selectedDocuments; + + } + /** + * get the selected documents + * @return array + */ + function get() + { + return (isset($_SESSION[$this->selectedDocIndex])?$_SESSION[$this->selectedDocIndex]:array()); + } + + function setAction($action) + { + $_SESSION[$this->actionIndex] = $action; + } + /** + * get the action + * + * @return unknown + */ + function getAction() + { + return (isset($_SESSION[$this->actionIndex])?$_SESSION[$this->actionIndex]:''); + } + /** + * set the folder + * + * @param string $folder + */ + function setFolder($folder) + { + $_SESSION[$this->fromFolderIndex] = $folder; + } + /** + * get the folder + * + * @return string + */ + function getFolder() + { + return (isset($_SESSION[$this->fromFolderIndex])?$_SESSION[$this->fromFolderIndex]:''); + } + } +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/class.upload.php b/admin-dev/ajaxfilemanager/inc/class.upload.php new file mode 100755 index 000000000..58979c6ad --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/class.upload.php @@ -0,0 +1,589 @@ +'the file uploaded with success', + 1=>'The uploaded file exceeds the upload_max_filesize directive in php.ini', + 2=>'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form', + 3=>'The uploaded file was only partially uploaded', + 4=>'No file was uploaded.', + 6=>'Missing a temporary folder', + 7=>'Failed to write file to disk', + 8=>'File upload stopped by extension', + 999=>'No error code avaiable', + ); + + + function Upload() + { + //doing nothing + } + + function isFileUploaded($indexInPost="file") + { + + $this->errCode = isset($_FILES[$indexInPost]['error'])?$_FILES[$indexInPost]['error']:999; + if((isset($_FILES[$indexInPost]['error']) && $_FILES[$indexInPost] == 0) || + (!empty($_FILES[$indexInPost]['tmp_name']) && $_FILES[$indexInPost]['tmp_name'] != 'none') + ) + { + $this->_value = $_FILES[$indexInPost]; + $this->fileSize = @filesize($this->_value['tmp_name']); + $this->originalFileName = $this->_value['name']; + $this->fileType = $this->_value['type']; + + return true; + }else + { + + array_push($this->errors, 'Unable to upload file'); + return false; + } + } + + function getErrorCodeMsg() + { + return (isset($this->errorCodes[$this->errCode])?$this->errorCodes[$this->errCode]:""); + } + /** + * check if the uploaded file extension is allowed against the validFile Extension + * or against the invalid extension list when the list of valid file extension is not set + * + * @param array $validFileExt + * @return boolean + */ + function isPermittedFileExt($validFileExt = array()) + { + $tem = array(); + + if(sizeof($validFileExt)) + { + foreach($validFileExt as $k=>$v) + { + $tem[$k] = strtolower(trim($v)); + } + } + $validFileExt = $tem; + + if(sizeof($validFileExt) && sizeof($this->invalidFileExt)) + { + foreach($validFileExt as $k=>$ext) + { + if(array_search(strtolower($ext), $this->invalidFileExt) !== false) + { + unset($validFileExt[$k]); + } + } + } + + + + + if(sizeof($validFileExt)) + { + if(array_search(strtolower($this->getFileExt()), $validFileExt) !== false) + { + return true; + } + }elseif(array_search(strtolower($this->getFileExt()), $this->invalidFileExt) === false) + { + return true; + } + + + $this->deleteUploadedFile(); + return false; + + } + /** + * check if the uploaded file size is too big + * + * @param integer $maxSize + */ + function isSizeTooBig($maxSize="") + { + if($this->fileSize > $maxSize) + { + $this->deleteUploadedFile(); + return true; + }else + { + return false; + } + } + /** + * set the invali file extensions + * + * @param array $invalidFileExt + */ + function setInvalidFileExt($invalidFileExt=array()) + { + $tem = array(); + if(sizeof($invalidFileExt)) + { + foreach($invalidFileExt as $k=>$v) + { + $tem[$k]= strtolower(trim($v)); + } + } + + $this->invalidFileExt = $tem; + } + /** + * get file type + * + * @return string + */ + function getFileType() + { + return $this->fileType; + } + /** + * get a file extension + * + * @param string $fileName the path to a file or just the file name + */ + function getFileExt() + { + //return strtolower(substr(strrchr($this->fileName, "."), 1)); + return substr(strrchr($this->originalFileName, "."), 1); + } + /** + * move the uploaded file to a specific location + * + * @param string $dest the path to the directory which the uploaded file will be moved to + * @param string $fileBaseName the base name which the uploaded file will be renamed to + * @param unknown_type $overwrite + * @return unknown + */ + function moveUploadedFile($dest, $fileBaseName = '', $overwrite=false) + { + + //ensure the directory path ending with / + if ($dest != '' && substr($dest, -1) != '/') { + $dest .= '/'; + } + $this->dirPath = $dest; + $fileName = basename($this->_value['name']); + + $dotIndex = strrpos($fileName, '.'); + $this->fileExtension = ''; + if(is_int($dotIndex)) + { + $this->fileExtension = substr($fileName, $dotIndex); + $this->fileBaseName = substr($fileName, 0, $dotIndex); + } + if(!empty($fileBaseName)) + { + $this->fileBaseName = $fileBaseName; + } + $fileName = $this->fileBaseName . $this->fileExtension; + $filePath = $dest . $fileName; + + if(!$overwrite && file_exists($filePath) && is_file($filePath)) + {//rename + + $counter = 0; + while(file_exists($dest.$fileName) && is_file($dest .$fileName)) + { + $counter++; + $fileName = $this->fileBaseName.'_'.$counter.$this->fileExtension; + } + $this->fileBaseName .= "_" . $counter; + + } + if (@move_uploaded_file($this->_value['tmp_name'], $dest . $fileName)) { + @chmod($dest . $fileName, $this->uploadFileMode); + $this->fileName = $fileName; + $this->filePath = $dest . $fileName; + return true; + } else { + return false; + } + } + + + /** + * check if the uploaded is permitted to upload + * + * @param mixed $invalidImageExts invalid image extension + * @param bool $delete force to delete the uploaded file + */ + function isImage($invalidImageExts = array(), $delete = true) + { + if(!is_array($invalidImageExts) && !empty($invalidImageExts)) + { + $invalidImageExts = explode(",", $invalidImageExts); + } + foreach ($invalidImageExts as $k=>$v) + { + $invalidImageExts[$k] = strtolower(trim($v)); + } + foreach ($this->validImageExts as $k=>$v) + { + $ValidImageExts[$k] = strtolower(trim($v)); + } + if(sizeof($invalidImageExts)) + { + foreach ($ValidImageExts as $k=>$v) + { + if(array_search(strtolower($v), $invalidImageExts) !== false) + { + unset($ValidImageExts[$k]); + } + } + } + if(array_search(strtolower($this->getFileExt()), $ValidImageExts)!==false) + { + $this->_get_image_details($this->filePath); + if(!empty($this->fileType)) + { + return true; + } + }else + { + if($delete) + { + $this->deleteUploadedFile(); + } + } + + array($this->errors, "This file is not a image type file."); + return false; + } + + /** + * Resize the Image in the X and/or Y direction + * If either is 0 it will be scaled proportionally + * + * @access public + * + * @param mixed $new_x + * @param mixed $new_y + * @param string $thumb_suffix + * + * @return mixed none or PEAR_error + */ + function resize($filePath, $thumb_suffix="", $new_x = 0, $new_y = 0) + { + + if(empty($filePath)) + { + $filePath = $this->dirPath . $this->fileBaseName . $thumb_suffix . $this->fileExtension; + } + // 0 means keep original size + if ($this->img_x > $this->img_y) + $new_y = (int)($new_y/$this->img_x*$this->img_y); + else if ($this->img_y > $this->img_x) + $new_x = (int)($new_x/$this->img_y*$this->img_x); + // Now do the library specific resizing. + return $this->_resize($filePath,$new_x, $new_y); + } // End resize + + /** + * resize the image and return the thumbnail image details array("width"=>, "height"=>, "name") + * + * @param string $fileName + * @param int $new_x the thumbnail width + * @param int $new_y the thumbnail height + * @return unknown + */ + function _resize($fileName, $new_x, $new_y) { + $functionName = 'ImageCreateFrom' . $this->fileType; + + + if(function_exists($functionName)) + { + $this->imgHandler = $functionName($this->filePath); + }else + { + array_push($this->errors, $functionName . " function is unavailable"); + return false; + } + + if(function_exists('ImageCreateTrueColor')){ + $new_img =ImageCreateTrueColor($new_x,$new_y); + } else { + $new_img =ImageCreate($new_x,$new_y); + } + if(function_exists('ImageCopyResampled')){ + ImageCopyResampled($new_img, $this->imgHandler, 0, 0, 0, 0, $new_x, $new_y, $this->img_x, $this->img_y); + } else { + ImageCopyResized($new_img, $this->imgHandler, 0, 0, 0, 0, $new_x, $new_y, $this->img_x, $this->img_y); + } + if($this->_imageSave($new_img, $fileName, 80)) + { + return array("width"=>$new_x, "height"=>$new_y, "name"=>basename($fileName)); + }else + { + + array_push($this->errors, "Unable to resize the image"); + return false; + } + + } + /** + * save the thumbnail file and destroy the opened image + * + * @param resource $newImageHandler + * @param string $fileName + * @param int $quality + * @return boolean + */ + function _imageSave($newImageHandler, $fileName, $quality = 90) + { + $functionName = 'image' . $this->fileType; + if($functionName($newImageHandler, $fileName, $quality)) + { + imagedestroy($newImageHandler); + return true; + }else + { + imagedestroy($newImageHandler); + array_push($this->errors, "Unable to save the thumbnail file."); + return false; + } + + } + /** + * + * @access public + * @return void + */ + function _get_image_details($image) + { + + //echo $image; + $data = @GetImageSize($image); + #1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order, + # 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC + if (is_array($data)){ + switch($data[2]){ + case 1: + $type = 'gif'; + break; + case 2: + $type = 'jpeg'; + break; + case 3: + $type = 'png'; + break; + case 4: + $type = 'swf'; + break; + case 5: + $type = 'psd'; + case 6: + $type = 'bmp'; + case 7: + case 8: + $type = 'tiff'; + default: + array_push($this->errors, "We do not recognize this image format"); + + } + $this->img_x = $data[0]; + $this->img_y = $data[1]; + $this->fileType = $type; + + return true; + } else { + array_push($this->errors, "Cannot fetch image or images details."); + return null; + } + } + /** + * caculate the thumbnail details from the original image file + * + * @param string $originalImageName + * @param int $originaleImageWidth + * @param int $originalImageHeight + * @param string $thumbnailSuffix + * @param int $thumbnailWidth + * @param int $thumbnailHeight + * @return array array("name"=>"image name", "width"=>"image width", "height"=>"image height") + */ + function getThumbInfo($originalImageName, $originaleImageWidth, $originalImageHeight, $thumbnailSuffix, $thumbnailWidth, $thumbnailHeight) + { + $outputs = array("name"=>"", "width"=>0, "height"=>0); + $thumbnailWidth = (int)($thumbnailWidth); + $thumbnailHeight = (int)($thumbnailHeight); + if(!empty($originalImageName) && !empty($originaleImageWidth) && !empty($originalImageHeight)) + { + $dotIndex = strrpos($originalImageName, '.'); + //begin to get the thumbnail image name + $fileExtension = ''; + $fileBaseName = ''; + if(is_int($dotIndex)) + { + $fileExtension = substr($originalImageName, $dotIndex); + $fileBaseName = substr($originalImageName, 0, $dotIndex); + } + $outputs['name'] = $fileBaseName . $thumbnailSuffix . $fileExtension; + //start to get the thumbnail width & height + if($thumbnailWidth < 1 && $thumbnailHeight < 1) + { + $thumbnailWidth =$originaleImageWidth; + $thumbnailHeight = $originalImageHeight; + }elseif($thumbnailWidth < 1) + { + $thumbnailWidth = floor($thumbnailHeight / $originalImageHeight * $originaleImageWidth); + + }elseif($thumbnailHeight < 1) + { + $thumbnailHeight = floor($thumbnailWidth / $originaleImageWidth * $originalImageHeight); + }else + { + $scale = min($thumbnailWidth/$originaleImageWidth, $thumbnailHeight/$originalImageHeight); + $thumbnailWidth = floor($scale*$originaleImageWidth); + $thumbnailHeight = floor($scale*$originalImageHeight); + } + $outputs['width'] = $thumbnailWidth; + $outputs['height'] = $thumbnailHeight; + } + return $outputs; + + } + + + /** + * get the uploaded file + */ + function deleteUploadedFile() + { + @unlink($this->filePath); + } + /** + * destroy the tmp file + * + */ + function finish() + { + @unlink($this->_value['tmp_name']); + } + + function displayError() + { + if(sizeof($this->errors)) + { + echo "
";
+			print_r($this->errors);
+			echo "
"; + } + } + /** + * get the path which the file uploaded to + * + */ + function getFilePath() + { + return $this->filePath; + } + /** + * return the directory path witch the file uploaded to + * + * @return unknown + */ + function getDirPath() + { + return $this->dirPath; + } + + function getFileBaseName() + { + return $this->fileBaseName; + } + + function getFileName() + { + return $this->fileName; + } + /** + * get image width + * + * @return integer + */ + function getImageWidth() + { + return $this->img_x; + } + /** + * get image height + * + * @return integer + */ + function getImageHeight() + { + return $this->img_y; + } + /** + * get uploaded file size + * + * @return string + */ + function getFileSize() + { + return $this->fileSize; + } + /** + * delete the uploaded image file & associated thumnails + * + * @param string $dirPath + * @param string $originalImageName + * @param string $arrayThumbnailSuffix + */ + function deleteFileAndThumbs($dirPath, $originalImageName, $arrayThumbnailSuffix) + { + //ensure the directory path ending with / + if ($dirPath != '' && substr($dirPath, -1) != '/') { + $dirPath .= '/'; + } + if(!empty($originalImageName) && file_exists($dirPath . $originalImageName) && is_file($dirPath . $originalImageName)) + { + @unlink($dirPath . $originalImageName); + foreach($arrayThumbnailSuffix as $v) + { + $dotIndex = strrpos($originalImageName, '.'); + //begin to get the thumbnail image name + $fileExtension = ''; + $fileBaseName = ''; + if(is_int($dotIndex)) + { + $fileExtension = substr($originalImageName, $dotIndex); + $fileBaseName = substr($originalImageName, 0, $dotIndex); + } + @unlink($dirPath . $fileBaseName . $v . $fileExtension); + } + } + + + } +} +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/config.base.php b/admin-dev/ajaxfilemanager/inc/config.base.php new file mode 100755 index 000000000..28155f21e --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/config.base.php @@ -0,0 +1,135 @@ + false + * by session => true + */ + define('CONFIG_ACCESS_CONTROL_MODE', false); + define("CONFIG_LOGIN_USERNAME", 'sdfgdfgdfgdgfdgsdfsdfg3454dsfb5e'); + define('CONFIG_LOGIN_PASSWORD', 'ASDF@#%JHGSDFGasdkjfh3812764ksdjfbhkjxcf'); + define('CONFIG_LOGIN_PAGE', 'ajax_login.php'); //the url to the login page + + + //SYSTEM MODE CONFIG + /** + * turn it on when you have this system for demo purpose + * that means changes made to each image is not physically applied to it + * and all uploaded files/created folders will be removed automatically + */ + define('CONFIG_SYS_DEMO_ENABLE', false); + define('CONFIG_SYS_VIEW_ONLY', false); //diabled the system, view only + define('CONFIG_SYS_THUMBNAIL_VIEW_ENABLE', true);//REMOVE THE thumbnail view if false + + //User Permissions + define('CONFIG_OPTIONS_DELETE', true); + define('CONFIG_OPTIONS_CUT', true); + define('CONFIG_OPTIONS_COPY', true); + define('CONFIG_OPTIONS_NEWFOLDER', true); + define('CONFIG_OPTIONS_RENAME', true); + define('CONFIG_OPTIONS_UPLOAD', true); // + define('CONFIG_OPTIONS_EDITABLE', true); //disable image editor and text editor + //FILESYSTEM CONFIG + /* + * CONFIG_SYS_DEFAULT_PATH is the default folder where the files would be uploaded to + and it must be a folder under the CONFIG_SYS_ROOT_PATH or the same folder + these two paths accept relative path only, don't use absolute path + */ + //check if folder exist + if (!is_dir('../../img/cms')) + mkdir('../../img/cms'); + + define('CONFIG_SYS_DEFAULT_PATH', '../../img/cms'); //accept relative path only + define('CONFIG_SYS_ROOT_PATH', '../../img/cms'); //accept relative path only + define('CONFIG_SYS_FOLDER_SHOWN_ON_TOP', true); //show your folders on the top of list if true or order by name + define("CONFIG_SYS_DIR_SESSION_PATH", 'session/'); + define("CONFIG_SYS_PATTERN_FORMAT", 'list'); //three options: reg ,csv, list, this option define the parttern format for the following patterns + /** + * reg => regulare expression + * csv => a list of comma separated file/folder name, (exactly match the specified file/folders) + * list => a list of comma spearated vague file/folder name (partially match the specified file/folders) + * + */ + //more details about regular expression please visit http://nz.php.net/manual/en/function.eregi.php + define('CONFIG_SYS_INC_DIR_PATTERN', ''); //force listing of folders with such pattern(s). separated by , if multiple + define('CONFIG_SYS_EXC_DIR_PATTERN', 'CVS'); //will prevent listing of folders with such pattern(s). separated by , if multiple + define('CONFIG_SYS_INC_FILE_PATTERN', ''); //force listing of fiels with such pattern(s). separated by , if multiple + define('CONFIG_SYS_EXC_FILE_PATTERN', ''); //will prevent listing of files with such pattern(s). separated by , if multiple + define('CONFIG_SYS_DELETE_RECURSIVE', 1); //delete all contents within a specific folder if set to be 1 + + //UPLOAD OPTIONS CONFIG + define('CONFIG_UPLOAD_MAXSIZE', 5000 * 1024 ); //by bytes + //define('CONFIG_UPLOAD_MAXSIZE', 2048); //by bytes + //define('CONFIG_UPLOAD_VALID_EXTS', 'txt');// + + define('CONFIG_EDITABLE_VALID_EXTS', 'txt,htm,html,xml,js,css'); //make you include all these extension in CONFIG_UPLOAD_VALID_EXTS if you want all valid + + define('CONFIG_OVERWRITTEN', false); //overwirte when processing paste + define('CONFIG_UPLOAD_VALID_EXTS', 'gif,jpg,png');// // + //define('CONFIG_UPLOAD_VALID_EXTS', 'gif,jpg,png,bmp,tif,zip,sit,rar,gz,tar,htm,html,mov,mpg,avi,asf,mpeg,wmv,aif,aiff,wav,mp3,swf,ppt,rtf,doc,pdf,xls,txt,xml,xsl,dtd');// + define("CONFIG_VIEWABLE_VALID_EXTS", 'gif,jpg,png'); + //define('CONFIG_UPLOAD_VALID_EXTS', 'gif,jpg,png,txt'); // + define('CONFIG_UPLOAD_INVALID_EXTS', ''); + + //Preview + define('CONFIG_IMG_THUMBNAIL_MAX_X', 100); + define('CONFIG_IMG_THUMBNAIL_MAX_Y', 100); + define('CONFIG_THICKBOX_MAX_WIDTH', 700); + define('CONFIG_THICKBOX_MAX_HEIGHT', 430); + + + /** + * CONFIG_URL_PREVIEW_ROOT was replaced by CONFIG_WEBSITE_DOCUMENT_ROOT since v0.8 + * Normally, you don't need to bother with CONFIG_WEBSITE_DOCUMENT_ROOT + * Howerver, some Web Hosts do not have standard php.ini setting + * which you will find the file manager can not locate your files correctly + * if you do have such issue, please change it to fit your system. + * so what should you to do get it + * 1. create a php script file (let's call it document_root.php) + * 2. add the following codes in in + * + * 3. upload document_root.php to you website root folder which will only be reached when you visit http://www.domain-name.com or http://localhost/ at localhost computer + * 4. run it via http://www.domain-name.com/document_root.php or http://localhost/docuent_root.php if localhost computer, the url has to be exactly like that + * 5. the value shown on the screen is CONFIG_WEBSITE_DOCUMENT_ROOT should be + * 6. enjoy it + + + * + */ + + + define('CONFIG_WEBSITE_DOCUMENT_ROOT', ''); + //theme related setting + /* + * options avaialbe for CONFIG_EDITOR_NAME are: + stand_alone + tinymce + fckeditor + */ + //CONFIG_EDITOR_NAME replaced CONFIG_THEME_MODE since @version 0.8 + define('CONFIG_EDITOR_NAME', (CONFIG_QUERY_STRING_ENABLE && !empty($_GET['editor'])?secureFileName($_GET['editor']):'tinymce')); + define('CONFIG_THEME_NAME', (CONFIG_QUERY_STRING_ENABLE && !empty($_GET['theme'])?secureFileName($_GET['theme']):'default')); //change the theme to your custom theme rather than default + define('CONFIG_DEFAULT_VIEW', (CONFIG_SYS_THUMBNAIL_VIEW_ENABLE?'detail':'detail')); //thumnail or detail + define('CONFIG_DEFAULT_PAGINATION_LIMIT', 10); + define('CONFIG_LOAD_DOC_LATTER', false); //all documents will be loaded up after the template has been loaded to the client + + //General Option Declarations + //LANGAUGAE DECLARATIONNS + define('CONFIG_LANG_INDEX', 'language'); //the index in the session + define('CONFIG_LANG_DEFAULT', (CONFIG_QUERY_STRING_ENABLE && !empty($_GET['language']) && file_exists(DIR_LANG . secureFileName($_GET['language']) . '.php')?secureFileName($_GET['language']):'en')); //change it to be your language file base name, such en +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/config.php b/admin-dev/ajaxfilemanager/inc/config.php new file mode 100755 index 000000000..2f30ed245 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/config.php @@ -0,0 +1,107 @@ + + require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "class.auth.php"); + define('CONFIG_QUERY_STRING_ENABLE', true); //Enable passed query string to setting the system configuration + if(!isset($_SESSION)) + { + session_start(); + } + if(!headers_sent()) + { + header('Content-Type: text/html; charset=utf-8'); + } + + /** + * secure file name which retrieve from query string + * + * @param string $input + * @return string + */ + function secureFileName($input) + { + return preg_replace('/[^a-zA-Z0-9\-_]/', '', $input); + } + //Directories Declarations + + define('DIR_AJAX_ROOT', dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR) ; // the path to ajax file manager + define('DIR_AJAX_INC', DIR_AJAX_ROOT . "inc" . DIRECTORY_SEPARATOR); + define('DIR_AJAX_CLASSES', DIR_AJAX_ROOT . "classes" . DIRECTORY_SEPARATOR); + define("DIR_AJAX_LANGS", DIR_AJAX_ROOT . "langs" . DIRECTORY_SEPARATOR); + define('DIR_AJAX_JS', DIR_AJAX_ROOT . 'jscripts' . DIRECTORY_SEPARATOR); + define('DIR_AJAX_EDIT_AREA', DIR_AJAX_JS . 'edit_area' . DIRECTORY_SEPARATOR); + define('DIR_LANG', DIR_AJAX_ROOT . 'langs' . DIRECTORY_SEPARATOR); + + + //Class Declarations + define('CLASS_FILE', DIR_AJAX_INC .'class.file.php'); + define("CLASS_UPLOAD", DIR_AJAX_INC . 'class.upload.php'); + define('CLASS_MANAGER', DIR_AJAX_INC . 'class.manager.php'); + define('CLASS_IMAGE', DIR_AJAX_INC . "class.image.php"); + define('CLASS_HISTORY', DIR_AJAX_INC . "class.history.php"); + define('CLASS_SESSION_ACTION', DIR_AJAX_INC . "class.sessionaction.php"); + define('CLASS_PAGINATION', DIR_AJAX_INC . 'class.pagination.php'); + define('CLASS_SEARCH', DIR_AJAX_INC . "class.search.php"); + //SCRIPT FILES declarations + define('SPT_FUNCTION_BASE', DIR_AJAX_INC . 'function.base.php'); + //include different config base file according to query string "config" + $configBaseFileName = 'config.base.php'; + + if(CONFIG_QUERY_STRING_ENABLE && !empty($_GET['config']) && file_exists(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'config.' . secureFileName($_GET['config']) . ".php") + { + $configBaseFileName = 'config.' . secureFileName($_GET['config']) . ".php"; + } + require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . $configBaseFileName); + + + require_once(DIR_AJAX_LANGS . CONFIG_LANG_DEFAULT . ".php"); + require_once(DIR_AJAX_INC . "function.base.php"); + + require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . "class.session.php"); + $session = new Session(); + $auth = new Auth(); + + if(CONFIG_ACCESS_CONTROL_MODE == 1) + {//access control enabled + if(!$auth->isLoggedIn() && strtolower(basename($_SERVER['PHP_SELF']) != strtolower(basename(CONFIG_LOGIN_PAGE)))) + {// + header('Location: ' . appendQueryString(CONFIG_LOGIN_PAGE, makeQueryString())); + exit; + } + } + addNoCacheHeaders(); + //URL Declartions + define('CONFIG_URL_IMAGE_PREVIEW', 'ajax_image_preview.php'); + define('CONFIG_URL_CREATE_FOLDER', 'ajax_create_folder.php'); + define('CONFIG_URL_DELETE', 'ajax_delete_file.php'); + define('CONFIG_URL_HOME', 'ajaxfilemanager.php'); + define("CONFIG_URL_UPLOAD", 'ajax_file_upload.php'); + define('CONFIG_URL_PREVIEW', 'ajax_preview.php'); + define('CONFIG_URL_SAVE_NAME', 'ajax_save_name.php'); + define('CONFIG_URL_IMAGE_EDITOR', 'ajax_image_editor.php'); + define('CONFIG_URL_IMAGE_SAVE', 'ajax_image_save.php'); + define('CONFIG_URL_IMAGE_RESET', 'ajax_editor_reset.php'); + define('CONFIG_URL_IMAGE_UNDO', 'ajax_image_undo.php'); + define('CONFIG_URL_CUT', 'ajax_file_cut.php'); + define('CONFIG_URL_COPY', 'ajax_file_copy.php'); + define('CONFIG_URL_LOAD_FOLDERS', '_ajax_load_folders.php'); + + define('CONFIG_URL_DOWNLOAD', 'ajax_download.php'); + define('CONFIG_URL_TEXT_EDITOR', 'ajax_text_editor.php'); + define('CONFIG_URL_GET_FOLDER_LIST', 'ajax_get_folder_listing.php'); + define('CONFIG_URL_SAVE_TEXT', 'ajax_save_text.php'); + define('CONFIG_URL_LIST_LISTING', 'ajax_get_file_listing.php'); + define('CONFIG_URL_IMG_THUMBNAIL', 'ajax_image_thumbnail.php'); + define('CONFIG_URL_FILEnIMAGE_MANAGER', 'ajaxfilemanager.php'); + define('CONFIG_URL_FILE_PASTE', 'ajax_file_paste.php'); + + +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/config.tinymce.php b/admin-dev/ajaxfilemanager/inc/config.tinymce.php new file mode 100755 index 000000000..53b1e611c --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/config.tinymce.php @@ -0,0 +1,131 @@ + false + * by session => true + */ + define('CONFIG_ACCESS_CONTROL_MODE', false); + define("CONFIG_LOGIN_USERNAME", 'ajax'); + define('CONFIG_LOGIN_PASSWORD', '123456'); + define('CONFIG_LOGIN_PAGE', 'ajax_login.php'); //the url to the login page + + //SYSTEM MODE CONFIG + /** + * turn it on when you have this system for demo purpose + * that means changes made to each image is not physically applied to it + * and all uploaded files/created folders will be removed automatically + */ + define('CONFIG_SYS_DEMO_ENABLE', false); + define('CONFIG_SYS_VIEW_ONLY', false); //diabled the system, view only + define('CONFIG_SYS_THUMBNAIL_VIEW_ENABLE', true);//REMOVE THE thumbnail view if false + + //User Permissions + define('CONFIG_OPTIONS_DELETE', true); + define('CONFIG_OPTIONS_CUT', true); + define('CONFIG_OPTIONS_COPY', true); + define('CONFIG_OPTIONS_NEWFOLDER', true); + define('CONFIG_OPTIONS_RENAME', true); + define('CONFIG_OPTIONS_UPLOAD', true); // + define('CONFIG_OPTIONS_EDITABLE', true); //disable image editor and text editor + //FILESYSTEM CONFIG + /* + * CONFIG_SYS_DEFAULT_PATH is the default folder where the files would be uploaded to + and it must be a folder under the CONFIG_SYS_ROOT_PATH or the same folder + these two paths accept relative path only, don't use absolute path + */ + + define('CONFIG_SYS_DEFAULT_PATH', '../uploaded/'); //accept relative path only + define('CONFIG_SYS_ROOT_PATH', '../uploaded/'); //accept relative path only + define('CONFIG_SYS_FOLDER_SHOWN_ON_TOP', true); //show your folders on the top of list if true or order by name + define("CONFIG_SYS_DIR_SESSION_PATH", 'session/'); + define("CONFIG_SYS_PATTERN_FORMAT", 'list'); //three options: reg ,csv, list, this option define the parttern format for the following patterns + /** + * reg => regulare expression + * csv => a list of comma separated file/folder name, (exactly match the specified file/folders) + * list => a list of comma spearated vague file/folder name (partially match the specified file/folders) + * + */ + //more details about regular expression please visit http://nz.php.net/manual/en/function.eregi.php + define('CONFIG_SYS_INC_DIR_PATTERN', ''); //force listing of folders with such pattern(s). separated by , if multiple + define('CONFIG_SYS_EXC_DIR_PATTERN', ''); //will prevent listing of folders with such pattern(s). separated by , if multiple + define('CONFIG_SYS_INC_FILE_PATTERN', ''); //force listing of fiels with such pattern(s). separated by , if multiple + define('CONFIG_SYS_EXC_FILE_PATTERN', ''); //will prevent listing of files with such pattern(s). separated by , if multiple + define('CONFIG_SYS_DELETE_RECURSIVE', 1); //delete all contents within a specific folder if set to be 1 + + //UPLOAD OPTIONS CONFIG + define('CONFIG_UPLOAD_MAXSIZE', 5000 * 1024 ); //by bytes + //define('CONFIG_UPLOAD_MAXSIZE', 2048); //by bytes + //define('CONFIG_UPLOAD_VALID_EXTS', 'txt');// + + define('CONFIG_EDITABLE_VALID_EXTS', 'txt,htm,html,xml,js,css'); //make you include all these extension in CONFIG_UPLOAD_VALID_EXTS if you want all valid + + define('CONFIG_OVERWRITTEN', false); //overwirte when processing paste + define('CONFIG_UPLOAD_VALID_EXTS', 'gif,jpg,png,txt'); // + //define('CONFIG_UPLOAD_VALID_EXTS', 'gif,jpg,png,bmp,tif,zip,sit,rar,gz,tar,htm,html,mov,mpg,avi,asf,mpeg,wmv,aif,aiff,wav,mp3,swf,ppt,rtf,doc,pdf,xls,txt,xml,xsl,dtd');// + define("CONFIG_VIEWABLE_VALID_EXTS", 'gif,bmp,txt,jpg,png,tif,html,htm,js,css,xml,xsl,dtd,mp3,wav,wmv,wma,rm,rmvb,mov,swf'); + //define('CONFIG_UPLOAD_VALID_EXTS', 'gif,jpg,png,txt'); // + define('CONFIG_UPLOAD_INVALID_EXTS', ''); + + //Preview + define('CONFIG_IMG_THUMBNAIL_MAX_X', 100); + define('CONFIG_IMG_THUMBNAIL_MAX_Y', 100); + define('CONFIG_THICKBOX_MAX_WIDTH', 700); + define('CONFIG_THICKBOX_MAX_HEIGHT', 430); + + + /** + * CONFIG_URL_PREVIEW_ROOT was replaced by CONFIG_WEBSITE_DOCUMENT_ROOT since v0.8 + * Normally, you don't need to bother with CONFIG_WEBSITE_DOCUMENT_ROOT + * Howerver, some Web Hosts do not have standard php.ini setting + * which you will find the file manager can not locate your files correctly + * if you do have such issue, please change it to fit your system. + * so what should you to do get it + * 1. create a php script file (let's call it document_root.php) + * 2. add the following codes in in + * + * 3. upload document_root.php to you website root folder which will only be reached when you visit http://www.domain-name.com or http://localhost/ at localhost computer + * 4. run it via http://www.domain-name.com/document_root.php or http://localhost/docuent_root.php if localhost computer, the url has to be exactly like that + * 5. the value shown on the screen is CONFIG_WEBSITE_DOCUMENT_ROOT should be + * 6. enjoy it + + + * + */ + + + define('CONFIG_WEBSITE_DOCUMENT_ROOT', ''); + //theme related setting + /* + * options avaialbe for CONFIG_EDITOR_NAME are: + stand_alone + tinymce + fckeditor + */ + //CONFIG_EDITOR_NAME replaced CONFIG_THEME_MODE since @version 0.8 + define('CONFIG_EDITOR_NAME', (CONFIG_QUERY_STRING_ENABLE && !empty($_GET['editor'])?secureFileName($_GET['editor']):'stand_alone')); + define('CONFIG_THEME_NAME', (CONFIG_QUERY_STRING_ENABLE && !empty($_GET['theme'])?secureFileName($_GET['theme']):'default')); //change the theme to your custom theme rather than default + define('CONFIG_DEFAULT_VIEW', (CONFIG_SYS_THUMBNAIL_VIEW_ENABLE?'detail':'detail')); //thumnail or detail + define('CONFIG_DEFAULT_PAGINATION_LIMIT', 10); + define('CONFIG_LOAD_DOC_LATTER', false); //all documents will be loaded up after the template has been loaded to the client + + //General Option Declarations + //LANGAUGAE DECLARATIONNS + define('CONFIG_LANG_INDEX', 'language'); //the index in the session + define('CONFIG_LANG_DEFAULT', (CONFIG_QUERY_STRING_ENABLE && !empty($_GET['language']) && file_exists(DIR_LANG . secureFileName($_GET['language'] . '.php'))?secureFileName($_GET['language']):'en')); //change it to be your language file base name, such en +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/data.php b/admin-dev/ajaxfilemanager/inc/data.php new file mode 100755 index 000000000..e0d9ddd53 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/data.php @@ -0,0 +1,8 @@ +
Array
+(
+    [currentFolderPath] => ../uploaded/
+    [new_folder] => Test
+)
+
+ +22/Sep/2008 13:17:12 \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/inc/function.base.php b/admin-dev/ajaxfilemanager/inc/function.base.php new file mode 100755 index 000000000..777237f38 --- /dev/null +++ b/admin-dev/ajaxfilemanager/inc/function.base.php @@ -0,0 +1,1225 @@ +$v) + { + if(array_search($k, $excls) ===false) + { + $strAppend = "&"; + if($count == 1) + { + $strAppend = "?"; + $count++; + } + $output .= $strAppend . $k . "=" . $v; + } + } + return $output; + } + +/** + * print out an array + * + * @param array $array + */ +function displayArray($array, $comments="") +{ + echo "
";
+	echo $comments;
+	print_r($array);
+	echo $comments;
+	echo "
"; +} + + + + /** + * check if a file extension is permitted + * + * @param string $filePath + * @param array $validExts + * @param array $invalidExts + * @return boolean + */ + function isValidExt($filePath, $validExts, $invalidExts=array()) + { + $tem = array(); + + if(sizeof($validExts)) + { + foreach($validExts as $k=>$v) + { + $tem[$k] = strtolower(trim($v)); + } + } + $validExts = $tem; + $tem = array(); + if(sizeof($invalidExts)) + { + foreach($invalidExts as $k=>$v) + { + $tem[$k] = strtolower(trim($v)); + } + } + $invalidExts = $tem; + if(sizeof($validExts) && sizeof($invalidExts)) + { + foreach($validExts as $k=>$ext) + { + if(array_search($ext, $invalidExts) !== false) + { + unset($validExts[$k]); + } + } + } + if(sizeof($validExts)) + { + if(array_search(strtolower(getFileExt($filePath)), $validExts) !== false) + { + return true; + }else + { + return false; + } + }elseif(array_search(strtolower(getFileExt($filePath)), $invalidExts) === false) + { + return true; + }else + { + return false; + } + } + + + + + +/** + * transform file relative path to absolute path + * @param string $value the path to the file + * @return string + */ +function relToAbs($value) +{ + return backslashToSlash(preg_replace("/(\\\\)/","\\", getRealPath($value))); + +} + + function getRelativeFileUrl($value, $relativeTo) + { + $output = ''; + $wwwroot = removeTrailingSlash(backslashToSlash(getRootPath())); + $urlprefix = ""; + $urlsuffix = ""; + $value = backslashToSlash(getRealPath($value)); + $pos = strpos($value, $wwwroot); + if ($pos !== false && $pos == 0) + { + $output = $urlprefix . substr($value, strlen($wwwroot)) . $urlsuffix; + } + } +/** + * replace slash with backslash + * + * @param string $value the path to the file + * @return string + */ +function slashToBackslash($value) { + return str_replace("/", DIRECTORY_SEPARATOR, $value); +} + +/** + * replace backslash with slash + * + * @param string $value the path to the file + * @return string + */ +function backslashToSlash($value) { + return str_replace(DIRECTORY_SEPARATOR, "/", $value); +} + +/** + * removes the trailing slash + * + * @param string $value + * @return string + */ +function removeTrailingSlash($value) { + if(preg_match('@^.+/$@i', $value)) + { + $value = substr($value, 0, strlen($value)-1); + } + return $value; +} + +/** + * append a trailing slash + * + * @param string $value + * @return string + */ +function addTrailingSlash($value) +{ + if(preg_match('@^.*[^/]{1}$@i', $value)) + { + $value .= '/'; + } + return $value; +} + +/** + * transform a file path to user friendly + * + * @param string $value + * @return string + */ +function transformFilePath($value) { + $rootPath = addTrailingSlash(backslashToSlash(getRealPath(CONFIG_SYS_ROOT_PATH))); + $value = addTrailingSlash(backslashToSlash(getRealPath($value))); + if(!empty($rootPath) && ($i = strpos($value, $rootPath)) !== false) + { + $value = ($i == 0?substr($value, strlen($rootPath)):"/"); + } + $value = prependSlash($value); + return $value; +} +/** + * prepend slash + * + * @param string $value + * @return string + */ +function prependSlash($value) +{ + if (($value && $value[0] != '/') || !$value ) + { + $value = "/" . $value; + } + return $value; +} + + + function writeInfo($data, $die = false) + { + $fp = @fopen(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'data.php', 'w+'); + @fwrite($fp, $data); + @fwrite($fp, "\n\n" . date('d/M/Y H:i:s') ); + @fclose($fp); + if($die) + { + die(); + } + + } + +/** + * no cachable header + */ +function addNoCacheHeaders() { + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); + header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + header("Cache-Control: no-store, no-cache, must-revalidate"); + header("Cache-Control: post-check=0, pre-check=0", false); + header("Pragma: no-cache"); +} + /** + * add extra query stiring to a url + * @param string $baseUrl + * @param string $extra the query string added to the base url + */ + function appendQueryString($baseUrl, $extra) + { + $output = $baseUrl; + if(!empty($extra)) + { + if(strpos($baseUrl, "?") !== false) + { + $output .= "&" . $extra; + }else + { + $output .= "?" . $extra; + } + } + + return $output; + } + /** + * make the query strin from $_GET, but excluding those specified by $excluded + * + * @param array $excluded + * @return string + */ + function makeQueryString($excluded=array()) + { + $output = ''; + $count = 1; + foreach($_GET as $k=>$v) + { + if(array_search($k, $excluded) === false) + { + $output .= ($count>1?'&':'') . ($k . "=" . $v); + $count++; + } + } + return $output; + } + /** + * get parent path from specific path + * + * @param string $value + * @return string + */ + function getParentPath($value) + { + $value = removeTrailingSlash(backslashToSlash($value)); + if(false !== ($index = strrpos($value, "/")) ) + { + return substr($value, 0, $index); + } + + } + + + /** + * check if the file/folder is sit under the root + * + * @param string $value + * @return boolean + */ + function isUnderRoot($value) + { + $roorPath = strtolower(addTrailingSlash(backslashToSlash(getRealPath(CONFIG_SYS_ROOT_PATH)))); + if(file_exists($value) && @strpos(strtolower(addTrailingSlash(backslashToSlash(getRealPath($value)))), $roorPath) === 0 ) + { + return true; + } + return false; + } + /** + * check if a file under the session folder + * + * @param string $value + * @return boolean + */ + function isUnderSession($value) + { + global $session; + $sessionPath = strtolower(addTrailingSlash(backslashToSlash(getRealPath($session->getSessionDir())))); + if(file_exists($value) && @strpos(strtolower(addTrailingSlash(backslashToSlash(getRealPath($value)))), $sessionPath) === 0 ) + { + return true; + } + return false; + } + + + /** + * get thumbnail width and height + * + * @param integer $originaleImageWidth + * @param integer $originalImageHeight + * @param integer $thumbnailWidth + * @param integer $thumbnailHeight + * @return array() + */ + function getThumbWidthHeight( $originaleImageWidth, $originalImageHeight, $thumbnailWidth, $thumbnailHeight) + { + $outputs = array( "width"=>0, "height"=>0); + $thumbnailWidth = (int)($thumbnailWidth); + $thumbnailHeight = (int)($thumbnailHeight); + if(!empty($originaleImageWidth) && !empty($originalImageHeight)) + { + //start to get the thumbnail width & height + if(($thumbnailWidth < 1 && $thumbnailHeight < 1) || ($thumbnailWidth > $originaleImageWidth && $thumbnailHeight > $originalImageHeight )) + { + $thumbnailWidth =$originaleImageWidth; + $thumbnailHeight = $originalImageHeight; + }elseif($thumbnailWidth < 1) + { + $thumbnailWidth = floor($thumbnailHeight / $originalImageHeight * $originaleImageWidth); + + }elseif($thumbnailHeight < 1) + { + $thumbnailHeight = floor($thumbnailWidth / $originaleImageWidth * $originalImageHeight); + }else + { + $scale = min($thumbnailWidth/$originaleImageWidth, $thumbnailHeight/$originalImageHeight); + $thumbnailWidth = floor($scale*$originaleImageWidth); + $thumbnailHeight = floor($scale*$originalImageHeight); + } + $outputs['width'] = $thumbnailWidth; + $outputs['height'] = $thumbnailHeight; + } + return $outputs; + + } +/** + * turn to absolute path from relative path + * + * @param string $value + * @return string + */ +function getAbsPath($value) { + if (substr($value, 0, 1) == "/") + return slashToBackslash(DIR_AJAX_ROOT . $value); + + return slashToBackslash(dirname(__FILE__) . "/" . $value); +} + + /** + * get file/folder base name + * + * @param string $value + * @return string + */ + function getBaseName($value) + { + $value = removeTrailingSlash(backslashToSlash($value)); + + if(false !== ($index = strrpos($value, "/")) ) + { + return substr($value, $index + 1); + }else + { + return $value; + } + } + +function myRealPath($path) { + + if(strpos($path, ':/') !== false) + { + return $path; + } + // check if path begins with "/" ie. is absolute + // if it isnt concat with script path + + if (strpos($path,"/") !== 0 ) { + $base=dirname($_SERVER['SCRIPT_FILENAME']); + $path=$base."/".$path; + } + + // canonicalize + $path=explode('/', $path); + $newpath=array(); + for ($i=0; $i 1048576) + { + return round($size / 1048576, 1) . " MB"; + }elseif ($size > 1024) + { + return round($size / 1024, 1) . " KB"; + }elseif($size == '') + { + return $size; + }else + { + return $size . " b"; + } +} + + /** + * remove beginging slash + * + * @param string $value + * @return string + */ + function removeBeginingSlash($value) + { + $value = backslashToSlash($value); + if(strpos($value, "/") === 0) + { + $value = substr($value, 1); + } + return $value; + } + +/** + * get site root path + * + * @return String. + */ +function getRootPath() { + $output = ""; + if (defined('CONFIG_WEBSITE_DOCUMENT_ROOT') && CONFIG_WEBSITE_DOCUMENT_ROOT) + { + return slashToBackslash(CONFIG_WEBSITE_DOCUMENT_ROOT); + } + if(isset($_SERVER['DOCUMENT_ROOT']) && ($output = relToAbs($_SERVER['DOCUMENT_ROOT'])) != '' ) + { + return $output; + }elseif(isset($_SERVER["SCRIPT_NAME"]) && isset($_SERVER["SCRIPT_FILENAME"]) && ($output = str_replace(backslashToSlash($_SERVER["SCRIPT_NAME"]), "", backslashToSlash($_SERVER["SCRIPT_FILENAME"]))) && is_dir($output)) + { + return slashToBackslash($output); + }elseif(isset($_SERVER["SCRIPT_NAME"]) && isset($_SERVER["PATH_TRANSLATED"]) && ($output = str_replace(backslashToSlash($_SERVER["SCRIPT_NAME"]), "", str_replace("//", "/", backslashToSlash($_SERVER["PATH_TRANSLATED"])))) && is_dir($output)) + { + return $output; + }else + { + return ''; + } + + return null; +} + + + /** + * add beginging slash + * + * @param string $value + * @return string + */ + function addBeginingSlash($value) + { + if(strpos($value, "/") !== 0 && !empty($value)) + { + $value .= "/" . $value; + } + return $value; + } + + + + + + /** + * get a file extension + * + * @param string $fileName the path to a file or just the file name + */ + function getFileExt($filePath) + { + return @substr(@strrchr($filePath, "."), 1); + } + + /** + * reuturn the relative path between two url + * + * @param string $start_dir + * @param string $final_dir + * @return string + */ + function getRelativePath($start_dir, $final_dir){ + // + $firstPathParts = explode(DIRECTORY_SEPARATOR, $start_dir); + $secondPathParts = explode(DIRECTORY_SEPARATOR, $final_dir); + // + $sameCounter = 0; + for($i = 0; $i < min( count($firstPathParts), count($secondPathParts) ); $i++) { + if( strtolower($firstPathParts[$i]) !== strtolower($secondPathParts[$i]) ) { + break; + } + $sameCounter++; + } + if( $sameCounter == 0 ) { + return $final_dir; + } + // + $newPath = ''; + for($i = $sameCounter; $i < count($firstPathParts); $i++) { + if( $i > $sameCounter ) { + $newPath .= DIRECTORY_SEPARATOR; + } + $newPath .= ".."; + } + if( count($newPath) == 0 ) { + $newPath = "."; + } + for($i = $sameCounter; $i < count($secondPathParts); $i++) { + $newPath .= DIRECTORY_SEPARATOR; + $newPath .= $secondPathParts[$i]; + } + // + return $newPath; + } + /** + * get the php server memory limit + * @return integer + * + */ + function getMemoryLimit() + { + $output = @ini_get('memory_limit') or $output = -1 ; + if((int)($output) < 0) + {//unlimited + $output = 999999999999999999; + } + elseif(strpos('g', strtolower($output)) !== false) + { + $output = (int)($output) * 1024 * 1024 * 1024; + }elseif(strpos('k', strtolower($output)) !== false) + { + $output = (int)($output) * 1024 ; + }else + { + $output = (int)($output) * 1024 * 1024; + } + + return $output; + } + /** + * get file content + * + * @param string $path + */ + function getFileContent($path) + { + return @file_get_contents($path); + //return str_replace(array("\r", "\n", '"', "\t"), array("", "\\n", '\"', "\\t"), @file_get_contents($path)); + } + /** + * get the list of folder under a specified folder + * which will be used for drop-down menu + * @param string $path the path of the specified folder + * @param array $outputs + * @param string $indexNumber + * @param string $prefixNumber the prefix before the index number + * @param string $prefixName the prefix before the folder name + * @return array + */ + function getFolderListing($path,$indexNumber=null, $prefixNumber =' ', $prefixName =' - ', $outputs=array()) + { + $path = removeTrailingSlash(backslashToSlash($path)); + if(is_null($indexNumber)) + { + $outputs[IMG_LBL_ROOT_FOLDER] = removeTrailingSlash(backslashToSlash($path)); + } + $fh = @opendir($path); + if($fh) + { + $count = 1; + while($file = @readdir($fh)) + { + $newPath = removeTrailingSlash(backslashToSlash($path . "/" . $file)); + if(isListingDocument($newPath) && $file != '.' && $file != '..' && is_dir($newPath)) + { + if(!empty($indexNumber)) + {//this is not root folder + + $outputs[$prefixNumber . $indexNumber . "." . $count . $prefixName . $file] = $newPath; + getFolderListing($newPath, $prefixNumber . $indexNumber . "." . $count , $prefixNumber, $prefixName, $outputs); + }else + {//this is root folder + + $outputs[$count . $prefixName . $file] = $newPath; + getFolderListing($newPath, $count, $prefixNumber, $prefixName, $outputs); + } + $count++; + } + } + @closedir($fh); + } + return $outputs; + } + + + /** + * get the valid text editor extension + * which is calcualte from the CONFIG_EDITABALE_VALID_EXTS + * exclude those specified in CONFIG_UPLOAD_INVALID_EXTS + * and those are not specified in CONFIG_UPLOAD_VALID_EXTS + * + * @return array + */ + function getValidTextEditorExts() + { + $validEditorExts = explode(',', CONFIG_EDITABLE_VALID_EXTS); + if(CONFIG_UPLOAD_VALID_EXTS) + {//exclude those exts not shown on CONFIG_UPLOAD_VALID_EXTS + $validUploadExts = explode(',', CONFIG_UPLOAD_VALID_EXTS); + foreach($validEditorExts as $k=>$v) + { + if(array_search($v, $validUploadExts) === false) + { + unset($validEditorExts[$k]); + } + } + } + if(CONFIG_UPLOAD_INVALID_EXTS) + {//exlcude those exists in CONFIG_UPLOAD_INVALID_EXTS + $invalidUploadExts = explode(',', CONFIG_UPLOAD_INVALID_EXTS); + foreach($validEditorExts as $k=>$v) + { + if(array_search($v, $invalidUploadExts) !== false) + { + unset($validEditorExts[$k]); + } + } + } + return $validEditorExts; + + } + /** + * check if file name or folder name is valid against a regular expression + * + * @param string $pattern regular expression, separated by , if multiple + * @param string $string + * @return booolean + */ + function isValidPattern( $pattern, $string) + { + if(($pattern)=== '') + { + return true; + } + else if (strpos($pattern,",")!==false) + { + $regExps = explode(',', $pattern); + foreach ($regExps as $regExp => $value) + { + if(eregi($value, $string)) + { + return true; + } + } + } + else if(eregi($pattern, $string)) + { + return true; + } + return false; + + } + + + /** + * check if file name or folder name is invalid against a regular expression + * + * @param string $pattern regular expression, separated by , if multiple + * @param string $string + * @return booolean + */ + function isInvalidPattern( $pattern, $string) + { + if(($pattern)=== '') + { + return false; + } + else if (strpos($pattern,",")!==false) + { + $regExps = explode(',', $pattern); + foreach ($regExps as $regExp => $value) + { + if(eregi($value, $string)) + { + return true; + } + } + } + else if(eregi($pattern, $string)) + { + return true; + } + return false; + + } + + + /** + * cut the file down to fit the list page + * + * @param string $fileName + */ + function shortenFileName($fileName, $maxLeng=17, $indicate = '...') + { + if(strlen($fileName) > $maxLeng) + { + $fileName = substr($fileName, 0, $maxLeng - strlen($indicate)) . $indicate; + } + return $fileName; + + } + if (!function_exists('mime_content_type')) + { + function mime_content_type ( $f ) + { + return trim ( @exec ('file -bi ' . escapeshellarg ( $f ) ) ) ; + } + } + + /** + * check if such document is allowed to shown on the list + * + * @param string $path the path to the document + * @return boolean + */ + function isListingDocument($path) + { + $file = basename($path); + if(CONFIG_SYS_PATTERN_FORMAT == 'list') + {// comma delimited vague file/folder name + + + + + if(is_dir($path)) + { + $includeDir = trimlrm(CONFIG_SYS_INC_DIR_PATTERN); + $excludeDir = trimlrm(CONFIG_SYS_EXC_DIR_PATTERN); + $found_includeDir = strpos($includeDir, $file); + $found_excludeDir = strpos($excludeDir, $file); + if((!CONFIG_SYS_INC_DIR_PATTERN || (!($found_includeDir === FALSE))) && (!CONFIG_SYS_EXC_DIR_PATTERN || (($found_excludeDir === FALSE)))) + { + return true; + }else + { + return false; + } + }elseif(is_file($path)) + { + $includeFile = trimlrm(CONFIG_SYS_INC_FILE_PATTERN); + $excludeFile = trimlrm(CONFIG_SYS_EXC_FILE_PATTERN); + $found_includeFile = strpos($includeFile, $file); + $found_excludeFile = strpos($excludeFile, $file); + if((!CONFIG_SYS_INC_FILE_PATTERN || (!($found_includeFile === FALSE))) && (!CONFIG_SYS_EXC_FILE_PATTERN || (($found_excludeFile === FALSE)))) + { + return true; + }else + { + return false; + } + } + }elseif(CONFIG_SYS_PATTERN_FORMAT == 'csv') + {//comma delimited file/folder name + + if(is_dir($path)) + { + + $includeDir = trimlrm(CONFIG_SYS_INC_DIR_PATTERN); + $excludeDir = trimlrm(CONFIG_SYS_EXC_DIR_PATTERN); + + if(!empty($includeDir) && !empty($excludeDir)) + { + + $validDir = explode(',', $includeDir); + + $invalidDir = explode(",", $excludeDir); + + if(array_search(basename($path), $validDir) !== false && array_search(basename($path), $invalidDir) === false) + { + return true; + }else + { + return false; + } + }elseif(!empty($includeDir)) + { + $validDir = explode(',', $includeDir); + if(array_search(basename($path), $validDir) !== false) + { + return true; + }else + { + return false; + } + + }elseif(!empty($excludeFile)) + { + $invalidDir = explode(",", $excludeDir); + if(array_search(basename($path), $invalidDir) === false) + { + return true; + }else + { + return false; + } + } + return true; + + }elseif(is_file($path)) + { + $includeFile = trimlrm(CONFIG_SYS_INC_FILE_PATTERN); + $excludeFile = trimlrm(CONFIG_SYS_EXC_FILE_PATTERN); + if(!empty($includeFile) && !empty($excludeFile)) + { + $validFile = explode(',', $includeFile); + $invalidFile = explode(',', $excludeFile); + if(array_search(basename($path), $validFile) !== false && array_search(basename($path), $invalidFile) === false) + { + return true; + }else + { + return false; + } + }elseif(!empty($includeFile)) + { + $validFile = explode(',', $includeFile); + if(array_search(basename($path), $validFile) !== false) + { + return true; + }else + { + return false; + } + }elseif(!empty($excludeFile)) + { + $invalidFile = explode(',', $excludeFile); + if(array_search(basename($path), $invalidFile) === false) + { + return true; + }else + { + return false; + } + } + return true; + } + } + else + {//regular expression + if(is_dir($path) ) + { + if(isValidPattern(CONFIG_SYS_INC_DIR_PATTERN, $path) && !isInvalidPattern(CONFIG_SYS_EXC_DIR_PATTERN, $path)) + { + return true; + }else + { + return false; + } + + }elseif(is_file($path)) + { + if(isValidPattern(CONFIG_SYS_INC_FILE_PATTERN, $path) && !isInvalidPattern(CONFIG_SYS_EXC_FILE_PATTERN, $path) ) + { + return true; + }else + { + return false; + } + } + } + return false; + + } + + /** + * force to down the specified file + * + * @param string $path + * + */ + function downloadFile($path, $newFileName=null) + { + if(file_exists($path) && is_file($path)) + { + $mimeContentType = 'application/octet-stream'; + if(function_exists('finfo_open')) + { + if(($fp = @finfo_open($path))) + { + $mimeContentType = @finfo_file($fp, basename($path)); + @finfo_close($fp); + } + + }elseif(($temMimeContentType = @mime_content_type($path)) && !empty($temMimeContentType)) + { + $mimeContentType = $temMimeContentType; + } + + + + + + // START ANDR� SILVA DOWNLOAD CODE + // required for IE, otherwise Content-disposition is ignored + if(ini_get('zlib.output_compression')) + ini_set('zlib.output_compression', 'Off'); + header("Pragma: public"); // required + header("Expires: 0"); + header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + header("Cache-Control: private",false); // required for certain browsers + header("Content-Type: " . $mimeContentType ); + // change, added quotes to allow spaces in filenames, by Rajkumar Singh + header("Content-Disposition: attachment; filename=\"".(is_null($newFileName)?basename($path):$newFileName)."\";" ); + header("Content-Transfer-Encoding: binary"); + header("Content-Length: ".filesize($path)); + + readfile($path); + exit(); + // END ANDR� SILVA DOWNLOAD CODE + } + + } + + /** + * remove all white spaces + * + * @param string $hayStack + * @param string $whiteSpaceChars + * @return string + */ + function trimlrm ($hayStack, $whiteSpaceChars="\t\n\r\0\x0B") + { + return str_replace($whiteSpaceChars, '', trim($hayStack)); + } + + /** + * get the parent path of the specified path + * + * @param string $path + * @return string + */ + function getParentFolderPath($path) + { + $realPath = addTrailingSlash(backslashToSlash(getRealPath($path))); + $parentRealPath = addTrailingSlash(backslashToSlash(dirname($realPath))); + $differentPath = addTrailingSlash(substr($realPath, strlen($parentRealPath))); + $parentPath = substr($path, 0, strlen(addTrailingSlash(backslashToSlash($path))) - strlen($differentPath)); + if(isUnderRoot($parentPath)) + { + return $parentPath; + }else + { + return CONFIG_SYS_DEFAULT_PATH; + } + } + + function getCurrentFolderPath() + { + $folderPathIndex = 'path'; + $lastVisitedFolderPathIndex = 'ajax_last_visited_folder'; + if(isset($_GET[$folderPathIndex]) && file_exists($_GET[$folderPathIndex]) && !is_file($_GET[$folderPathIndex]) ) + { + $currentFolderPath = $_GET[$folderPathIndex]; + } + elseif(isset($_SESSION[$lastVisitedFolderPathIndex]) && file_exists($_SESSION[$lastVisitedFolderPathIndex]) && !is_file($_SESSION[$lastVisitedFolderPathIndex])) + { + $currentFolderPath = $_SESSION[$lastVisitedFolderPathIndex]; + }else + { + $currentFolderPath = CONFIG_SYS_DEFAULT_PATH; + } + + $currentFolderPath = (isUnderRoot($currentFolderPath)?backslashToSlash((addTrailingSlash($currentFolderPath))):CONFIG_SYS_DEFAULT_PATH); + + //keep track of this folder path in session + $_SESSION[$lastVisitedFolderPathIndex] = $currentFolderPath; + + + if(!file_exists($currentFolderPath)) + { + die(ERR_FOLDER_NOT_FOUND . $currentFolderPath); + } + } + + if(!function_exists("imagerotate")) + { + function imagerotate($src_img, $angle, $bicubic=false) + { + // convert degrees to radians + + $angle = (360 - $angle) + 180; + $angle = deg2rad($angle); + + $src_x = imagesx($src_img); + $src_y = imagesy($src_img); + + $center_x = floor($src_x/2); + $center_y = floor($src_y/2); + + $rotate = imagecreatetruecolor($src_x, $src_y); + imagealphablending($rotate, false); + imagesavealpha($rotate, true); + + $cosangle = cos($angle); + $sinangle = sin($angle); + + for ($y = 0; $y < $src_y; $y++) { + for ($x = 0; $x < $src_x; $x++) { + // rotate... + $old_x = (($center_x-$x) * $cosangle + ($center_y-$y) * $sinangle) + + $center_x; + $old_y = (($center_y-$y) * $cosangle - ($center_x-$x) * $sinangle) + + $center_y; + + if ( $old_x >= 0 && $old_x < $src_x + && $old_y >= 0 && $old_y < $src_y ) { + if ($bicubic == true) { + $sY = $old_y + 1; + $siY = $old_y; + $siY2 = $old_y - 1; + $sX = $old_x + 1; + $siX = $old_x; + $siX2 = $old_x - 1; + + $c1 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY2)); + $c2 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY)); + $c3 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY2)); + $c4 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY)); + + $r = ($c1['red'] + $c2['red'] + $c3['red'] + $c4['red'] ) << 14; + $g = ($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) << 6; + $b = ($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue'] ) >> 2; + $a = ($c1['alpha'] + $c2['alpha'] + $c3['alpha'] + $c4['alpha'] ) >> 2; + $color = imagecolorallocatealpha($src_img, $r,$g,$b,$a); + } else { + $color = imagecolorat($src_img, $old_x, $old_y); + } + } else { + // this line sets the background colour + $color = imagecolorallocatealpha($src_img, 255, 255, 255, 127); + } + imagesetpixel($rotate, $x, $y, $color); + } + } + return $rotate; +/* $src_x = @imagesx($src_img); + $src_y = @imagesy($src_img); + if ($angle == 180) + { + $dest_x = $src_x; + $dest_y = $src_y; + } + elseif ($src_x <= $src_y) + { + $dest_x = $src_y; + $dest_y = $src_x; + } + elseif ($src_x >= $src_y) + { + $dest_x = $src_y; + $dest_y = $src_x; + } + if(function_exists('ImageCreateTrueColor')) + { + $rotate = @ImageCreateTrueColor($dst_w,$dst_h); + } else { + $rotate = @ImageCreate($dst_w,$dst_h); + } + @imagealphablending($rotate, false); + + switch ($angle) + { + case 270: + for ($y = 0; $y < ($src_y); $y++) + { + for ($x = 0; $x < ($src_x); $x++) + { + $color = imagecolorat($src_img, $x, $y); + imagesetpixel($rotate, $dest_x - $y - 1, $x, $color); + } + } + break; + case 90: + for ($y = 0; $y < ($src_y); $y++) + { + for ($x = 0; $x < ($src_x); $x++) + { + $color = imagecolorat($src_img, $x, $y); + imagesetpixel($rotate, $y, $dest_y - $x - 1, $color); + } + } + break; + case 180: + for ($y = 0; $y < ($src_y); $y++) + { + for ($x = 0; $x < ($src_x); $x++) + { + $color = imagecolorat($src_img, $x, $y); + imagesetpixel($rotate, $dest_x - $x - 1, $dest_y - $y - 1, $color); + } + } + break; + default: $rotate = $src_img; + }; + return $rotate;*/ + } + } +?> \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/ajaxfilemanager.js b/admin-dev/ajaxfilemanager/jscripts/ajaxfilemanager.js new file mode 100755 index 000000000..05bd03d28 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/ajaxfilemanager.js @@ -0,0 +1,1845 @@ +/* +/* + * author: Logan Cai + * Email: cailongqun [at] yahoo [dot] com [dot] cn + * Website: www.phpletter.com + * Created At: 21/April/2007 + * Modified At: 1/June/2007 +*/ +// Returns true if the passed value is found in the +// array. Returns false if it is not. +Array.prototype.inArray = function (value,caseSensitive) +{ + var i; + for (i=0; i < this.length; i++) + { + // use === to check for Matches. ie., identical (===), + if(caseSensitive){ //performs match even the string is case sensitive + if (this[i].toLowerCase() == value.toLowerCase()) + { + return true; + } + }else + { + if (this[i] == value) + { + return true; + } + } + } + return false; +}; + var dcTime=250; // doubleclick time + var dcDelay=100; // no clicks after doubleclick + var dcAt=0; // time of doubleclick + var savEvent=null; // save Event for handling doClick(). + var savEvtTime=0; // save time of click event. + var savTO=null; // handle of click setTimeOut + var linkElem = null; + + + function hadDoubleClick() + { + var d = new Date(); + var now = d.getTime(); + if ((now - dcAt) < dcDelay) + { + return true; + } + return false; + }; + + +/** +* enable left click to preview certain files +*/ +function enablePreview(elem, num) +{ + + $(elem).each( + function() + { + + $(this).click(function () + { + + //alert('single click'); + var num = getNum(this.id); + var path = files[num].path; + //alert('now: ' + now + '; dcat: ' + dcAt + '; dcDelay: ' + dcDelay); + if (hadDoubleClick()) + { + return false; + }else + { + linkElem = $('#a' + num).get(0); + } + + d = new Date(); + savEvtTime = d.getTime(); + savTO = setTimeout(function() + { + if (savEvtTime - dcAt > 0) + { + //check if this file is previewable + + + var ext = getFileExtension(path); + var supportedExts = supporedPreviewExts.split(","); + var isSupportedExt = false; + for (i in supportedExts) + { + var typeOf = typeof(supportedExts[i]); + //alert(supportedExts[i]); + if(typeOf.toLowerCase() == 'string' && supportedExts[i].toLowerCase() == ext.toLowerCase()) + { + isSupportedExt = true; + break; + } + + } + + if(isSupportedExt) + { + switch(files[num].cssClass) + { + case 'fileVideo': + case 'fileMusic': + case 'fileFlash': + + $('#playGround').html('
 this is mine
'); + + + $('#playGround' + num).html(''); + $('#playGround' + num).media({ width: 255, height: 210, autoplay: true }); + //alert($('#playGround' + num).html()); + showThickBox($('#a' + num).get(0), appendQueryString('#TB_inline', 'height=250' + '&width=256' + '&inlineId=winPlay&modal=true')); + + break; + default: + showThickBox(linkElem, appendQueryString(path, 'KeepThis=true&TB_iframe=true&height=' + thickbox.height + '&width=' + thickbox.width)); + + } + + } + + } + + + return false; + + }, dcTime); + + return false; + + }); + $(this).dblclick(function() + { + var d = new Date(); + dcAt = d.getTime(); + if (savTO != null) { + clearTimeout( savTO ); // Clear pending Click + savTO = null; + + } + + if(typeof(selectFile) != 'undefined') + { + + selectFile(files[num].url); + }else + generateDownloadIframe(appendQueryString(getUrl('download'), 'path=' + files[num].path, ['path'])); { + + } + + } + ); + + } + ); +}; +/** +* add over class to the specific table +*/ +function tableRuler(element) +{ + + var rows = $(element); + + $(rows).each(function(){ + $(this).mouseover(function(){ + $(this).addClass('over'); + }); + $(this).mouseout(function(){ + $(this).removeClass('over'); + }); + }); +}; + + + + + + + +function previewMedia(rowNum) +{ + $('#preview' +rowNum).html(''); + $('#preview' +rowNum).media({ width: 255, height: 210, autoplay: true }); + return false; +}; + +function getFileExtension(filename) +{ + if( filename.length == 0 ) return ""; + var dot = filename.lastIndexOf("."); + if( dot == -1 ) return ""; + var extension = filename.substr(dot + 1,filename.length); + return extension; +}; + +function closeWindow() +{ + if(window.confirm(warningCloseWindow)) + { + window.close(); + } + return false; +}; + +/** +* return the url with query string +*/ +function getUrl(index,limitNeeded , viewNeeded, searchNeeded) +{ + + var queryStr = ''; + var excluded = new Array(); + + if(typeof(limitNeeded) == 'boolean' && limitNeeded) + { + var limit = document.getElementById('limit'); + var typeLimit = typeof(limit); + + if(typeLimit != 'undefined' && limit ) + { + excluded[excluded.length] = 'limit'; + queryStr += (queryStr == ''?'':'&') + 'limit=' + limit.options[limit.selectedIndex].value; + } + + } + if(typeof(viewNeeded) == 'boolean' && viewNeeded) + { + queryStr += (queryStr == ''?'':'&') + 'view=' + getView(); + excluded[excluded.length] = 'view'; + + } + + if(typeof(searchNeeded) == 'boolean' && searchNeeded && searchRequired) + { + var search_recursively = 0; + $('input[@name=search_recursively][@checked]').each( + function() + { + search_recursively = this.value; + } + ); + var searchFolder = document.getElementById('search_folder'); + queryStr += (queryStr == ''?'':'&') + 'search=1&search_name=' + $('#search_name').val() + '&search_recursively=' + search_recursively + '&search_mtime_from=' + $('#search_mtime_from').val() + '&search_mtime_to=' + $('#search_mtime_to').val() + '&search_folder=' + searchFolder.options[searchFolder.selectedIndex].value; + excluded[excluded.length] = 'search'; + excluded[excluded.length] = 'search_recursively'; + excluded[excluded.length] = 'search_mtime_from'; + excluded[excluded.length] = 'search_mtime_to'; + excluded[excluded.length] = 'search_folder'; + excluded[excluded.length] = 'search_name'; + excluded[excluded.length] = 'search'; + + } + + + + return appendQueryString(appendQueryString(urls[index], queryString), queryStr, excluded); +}; +/** +* change view +*/ +function changeView() +{ + + var url = getUrl('view', true, true); + $('#rightCol').empty(); + ajaxStart('#rightCol'); + + $('#rightCol').load(url, + {}, + function(){ + ajaxStop('#rightCol img.ajaxLoadingImg'); + urls.present = getUrl('home', true, true); + initAfterListingLoaded(); + }); +}; + +function goParentFolder() +{ + + searchRequired = false; + var url = appendQueryString(getUrl('view', true, true), 'path=' + parentFolder.path , ['path']); + $('#rightCol').empty(); + ajaxStart('#rightCol'); + + $('#rightCol').load(url, + {}, + function(){ + urls.present = appendQueryString(getUrl('home', true, true), 'path=' + parentFolder.path , ['path']); + ajaxStop('#rightCol img.ajaxLoadingImg'); + initAfterListingLoaded(); + }); + +}; + +/** +* append Query string to the base url +* @param string baseUrl the base url +* @param string the query string +* @param array remove thost url variable from base url if any matches +*/ +function appendQueryString(baseUrl, queryStr, excludedQueryStr) +{ + + if(typeof(excludedQueryStr) == 'object' && excludedQueryStr.length) + { + var isMatched = false; + var urlParts = baseUrl.split("?"); + baseUrl = urlParts[0]; + var count = 1; + if(typeof(urlParts[1]) != 'undefined' && urlParts[1] != '') + {//this is the query string parts + var queryStrParts = urlParts[1].split("&"); + for(var i=0; i < queryStrParts.length; i++) + { + //split into query string variable name & value + var queryStrVariables = queryStrParts[i].split('='); + for(var j=0; j < excludedQueryStr.length; j++) + { + if(queryStrVariables[0] == excludedQueryStr[j]) + { + isMatched = true; + } + } + if(!isMatched) + { + baseUrl += ((count==1?'?':'&') + queryStrVariables[0] + '=' + queryStrVariables[1]); + count++; + } + } + } + + } + if(queryStr != '') + { + return (baseUrl.indexOf('?')> -1?baseUrl + '&' + queryStr:baseUrl + '?' + queryStr); + }else + { + return baseUrl; + } + + + + +}; + + +/** +* initiate when the listing page is loaded +* add main features according to the view +*/ +function initAfterListingLoaded() +{ + + + parsePagination(); + + parseCurrentFolder(); + var view = getView(); + + setDocInfo('root'); + + if(view != '') + { + + switch(view) + { + + + case 'thumbnail': + //enableContextMenu('dl.thumbnailListing, dl.thumbnailListing dt, dl.thumbnailListing dd, dl.thumbnailListing a'); + enableContextMenu('dl.thumbnailListing'); + for(i in files) + { + if(files[i].type== 'folder') + {//this is foder item + + enableFolderBrowsable(i); + }else + {//this is file item + + switch(files[i].cssClass) + { + case 'filePicture': + //$('#a' + i).attr('rel', 'ajaxphotos'); + //retrieveThumbnail(i); + + break; + case 'fileFlash': + break; + case 'fileVideo': + break; + case 'fileMusic': + break; + default: + + + } + enablePreview('#dt' + i, i); + enablePreview('#thumbUrl' + i, i); + enablePreview('#a' + i, i); + + } + enableShowDocInfo( i); + + } + break; + case 'detail': + default: + + enableContextMenu('#fileList tr'); + for(i in files) + { + if(files[i].type== 'folder') + {//this is foder item + enableFolderBrowsable(i); + }else + {//this is file item + switch(files[i].cssClass) + { + case 'filePicture': + $('#row' + i + ' td a').attr('rel', 'ajaxphotos'); + break; + case 'fileFlash': + break; + case 'fileVideo': + break; + case 'fileMusic': + break; + default: + + }; + enablePreview('#row' + i + ' td a', i); + + } + enableShowDocInfo(i); + } + break; + + + } + } + + +}; + +function enableFolderBrowsable(num, debug) +{ + + switch(getView()) + { + case 'thumbnail': + $('#dt'+ num + ' , #dd' + num + ' a').each(function() + + { +/* if(typeof(debug) != 'undefined' && debug) + { + alert(this.tagName + ' ' + files[num].path); + }*/ + doEnableFolderBrowsable(this, num); + } + ); + break; + case 'detail': + default: + $('#row' + num + ' td[a]').each(function() + + { + doEnableFolderBrowsable(this, num ); + } + ); + + } + + + + +}; + +function doEnableFolderBrowsable(elem, num) +{ + $(elem).click(function() + { + { + searchRequired = false; + var typeNum = typeof(num); + if(typeNum.toUpperCase() == 'STRING') + { + var fpath = (num.indexOf(urls.view) >=0?num:files[num].path); + }else + { + var fpath = files[num].path; + } + + + var url = appendQueryString(getUrl('view', true, true), 'path=' + fpath, ['path']); + + + $('#rightCol').empty(); + ajaxStart('#rightCol'); + $('#rightCol').load(url, + {}, + function(){ + urls.present = appendQueryString(getUrl('home', true, true), 'path=' + fpath, ['path']); + ajaxStop('#rightCol img.ajaxLoadingImg'); + initAfterListingLoaded(); + }); + }; + return false; + + } + ); +}; + +/** +* @param mixed destinationSelector where the animation image will be append to +* @param mixed selectorOfAnimation the jquery selector of the animation +*/ +function ajaxStart(destinationSelector, id, selectorOfAnimation) +{ + if(typeof(selectorOfAnimation) == 'undefined') + {//set defaullt animation + selectorOfAnimation = '#ajaxLoading img'; + } + if(typeof(id) != 'undefined') + { + $(selectorOfAnimation).clone().attr('id', id).appendTo(destinationSelector); + + }else + { + $(selectorOfAnimation).clone(true).appendTo(destinationSelector); + + } + + +}; +/** +* remove the ajax animation +* @param mixed selectorOfAnimation the jquery selector of the animation +*/ +function ajaxStop(selectorOfAnimation) +{ + $(selectorOfAnimation).remove(); +}; +/** +* change pagination limit +*/ +function changePaginationLimit(elem) +{ + var url = getUrl('view', true, true, true); + $('#rightCol').empty(); + ajaxStart('#rightCol'); + $('#rightCol').load(url, + {}, + function(){ + urls.present = appendQueryString(getUrl('home', true, true), 'path=' + parentFolder.path , ['path']) + ajaxStop('#rightCol img.ajaxLoadingImg'); + initAfterListingLoaded(); + }); +}; +/** +* get a query string variable value from an url +* @param string index +* @param string url +*/ +function getUrlVarValue(url, index) +{ + + if(url != '' && index != '') + { + var urlParts = url.split("?"); + baseUrl = urlParts[0]; + var count = 1; + if(typeof(urlParts[1]) != 'undefined' && urlParts[1] != '') + {//this is the query string parts + var queryStrParts = urlParts[1].split("&"); + for(var i=0; i < queryStrParts.length; i++) + { + //split into query string variable name & value + var queryStrVariables = queryStrParts[i].split('='); + if(queryStrVariables[0] == index) + { + return queryStrVariables[1]; + } + } + } + } + return ''; + +}; +/** +* parse current folder +*/ +function parseCurrentFolder() +{ + var folders = currentFolder.friendly_path.split('/'); + var str = ''; + var url = getUrl('view', true, true); + + var parentPath = ''; + for(var i = 0; i < folders.length; i++) + { + if(i == 0) + { + parentPath += paths.root; + str += '/' + paths.root_title + '' + + }else + { + if(folders[i] != '') + { + + parentPath += folders[i] + '/'; + str += '/' + folders[i] + ''; + } + } + } + $('#currentFolderPath').empty().append(str); + $('#currentFolderPath a').each( + function() + { + doEnableFolderBrowsable(this, $(this).attr('href')); + } + ); +}; +/** +* enable pagination as ajax function call +*/ +function parsePagination() +{ + $('p.pagination a[@id!=pagination_parent_link]').each(function () + { + $(this).click( + function() + { + + + var page = getUrlVarValue($(this).attr('href'), 'page'); + var url = appendQueryString(getUrl('view', true, true, searchRequired),'page=' + page, ['page']); + $('#rightCol').empty(); + ajaxStart('#rightCol'); + $('#rightCol').load(url, + {}, + function(){ + urls.present = appendQueryString(getUrl('home', true, true, searchRequired),'page=' + page, ['page']); + ajaxStop('#rightCol img.ajaxLoadingImg'); + initAfterListingLoaded(); + }); + return false; + } + + ); + } + ); +}; +/** +* get current view +*/ +function getView() +{ + var view = $('input[@name=view][@checked]').get(0); + if(typeof(view) != 'undefined') + { + return view.value; + }else + { + return ''; + } +}; + +function getNum(elemId) +{ + + if(typeof(elemId) != 'undefined' && elemId != '') + { + var r = elemId.match(/[\d\.]+/g); + if(typeof(r) != 'undefined' && r && typeof(r[0]) != 'undefined') + { + return r[0]; + } + } + + return 0; +}; + +function enableContextMenu(jquerySelectors) +{ + + $(jquerySelectors).contextMenu('contextMenu', + { + bindings: + { + 'menuSelect':function(t) + { + var num = (getNum($(t).attr('id'))); + + selectFile(files[num].url); + }, + 'menuPlay':function(t) + { + var num = (getNum($(t).attr('id'))); + $('#playGround').html('
 this is mine
'); + + + $('#playGround' + num).html(''); + $('#playGround' + num).media({ width: 255, height: 210, autoplay: true }); + //alert($('#playGround' + num).html()); + showThickBox($('#a' + num).get(0), appendQueryString('#TB_inline', 'height=250' + '&width=258' + '&inlineId=winPlay&modal=true')); + + + + }, + 'menuPreview':function(t) + { + var num = (getNum($(t).attr('id'))); + $('#a' + num).click(); + }, + 'menuDownload':function(t) + { + var num = (getNum($(t).attr('id'))); + generateDownloadIframe(appendQueryString(getUrl('download', false, false), 'path=' + files[num].path, ['path'])); + }, + 'menuRename':function(t) + { + var num = (getNum($(t).attr('id'))); + + showThickBox($('#a' + num).get(0), appendQueryString('#TB_inline', 'height=100' + '&width=350' + '&inlineId=winRename&modal=true')); + + $('div#TB_window #renameName').val(files[num].name); + $('div#TB_window #original_path').val(files[num].path); + $('div#TB_window #renameNum').val(num); + }, + 'menuEdit':function(t) + { + var num = (getNum($(t).attr('id'))); + var url = ''; + switch(files[num].cssClass) + { + case 'filePicture': + url = getUrl('image_editor'); + break; + default: + url = getUrl('text_editor'); + + } + var param = "status=yes,menubar=no,resizable=yes,scrollbars=yes,location=no,toolbar=no"; + param += ",height=" + screen.height + ",width=" + screen.width; + if(typeof(window.screenX) != 'undefined') + { + param += ",screenX = 0,screenY=0"; + }else if(typeof(window.screenTop) != 'undefined' ) + { + param += ",left = 0,top=0" ; + } + var newWindow = window.open(url + ((url.lastIndexOf("?") > - 1)?"&":"?") + "path=" + files[num].path,'', param); + newWindow.focus( ); + + + }, + + 'menuCut':function(t) + { + + }, + 'menuCopy':function(t) + { + + }, + 'menuPaste':function(t) + { + + }, + 'menuDelete':function(t) + { + var num = (getNum($(t).attr('id'))); + if(window.confirm(warningDelete)) + { + $.getJSON(appendQueryString(getUrl('delete', false,false), 'delete=' + files[num].path, ['delete']), + function(data) + { + if(typeof(data.error) == 'undefined') + { + alert('Unexpected Error.'); + } + else if(data.error != '') + { + alert(data.error); + }else + {//remove deleted files + switch(getView()) + { + case 'thumbnail': $('#dl' + num ).remove(); + break; + case 'detail': + default: + $('#row' + num).remove(); + + } + files[num] = null; + } + } + ); + + + } + } + }, + onContextMenu:function(events) + { + + return true; + }, + onShowMenu:function(events, menu) + { + + switch(getView()) + { + case 'thumbnail': + var num = getNum(events.target.id); + + break; + case 'detail': + default: + switch(events.target.tagName.toLowerCase()) + { + case 'span': + + if($(events.target).parent().get(0).tagName.toLowerCase() == 'a') + { + + var num = getNum($(events.target).parent().parent().parent().attr('id')); + }else + { + var num = getNum($(events.target).parent().parent().parent().parent().attr('id')); + } + + + + break; + case 'td': + var num = getNum($(events.target).parent().attr('id')); + break; + case 'a': + case 'input': + var num = getNum($(events.target).parent().parent().attr('id')); + break; + } + } + + var menusToRemove = new Array; + if(typeof(selectFile) == 'undefined') + { + menusToRemove[menusToRemove.length] = '#menuSelect'; + } + menusToRemove[menusToRemove.length] = '#menuCut'; + menusToRemove[menusToRemove.length] = '#menuCopy'; + menusToRemove[menusToRemove.length] = '#menuPaste'; + switch(files[num].type) + { + case 'folder': + if(numFiles < 1) + { + menusToRemove[menusToRemove.length] = '#menuPaste'; + } + menusToRemove[menusToRemove.length] = '#menuPreview'; + menusToRemove[menusToRemove.length] = '#menuDownload'; + menusToRemove[menusToRemove.length] = '#menuEdit'; + menusToRemove[menusToRemove.length] = '#menuPlay'; + menusToRemove[menusToRemove.length] = '#menuDownload'; + + break; + default: + var isSupportedExt = false; + if(permits.edit) + { + var ext = getFileExtension(files[num].path); + var supportedExts = supporedPreviewExts.split(","); + + for(var i = 0; i < supportedExts.length; i++) + { + if(typeof(supportedExts[i]) != 'undefined' && typeof(supportedExts[i]).toLowerCase() == 'string' && supportedExts[i].toLowerCase() == ext.toLowerCase()) + { + isSupportedExt = true; + break; + } + } + + } + if(!isSupportedExt || permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuEdit'; + } + + + switch(files[num].cssClass) + { + case 'filePicture': + menusToRemove[menusToRemove.length] = '#menuPlay'; + break; + case 'fileCode': + menusToRemove[menusToRemove.length] = '#menuPlay'; + break; + case 'fileVideo': + case 'fileFlash': + case 'fileMusic': + + menusToRemove[menusToRemove.length] = '#menuPreview'; menusToRemove[menusToRemove.length] = '#menuEdit'; + break; + default: + menusToRemove[menusToRemove.length] = '#menuPreview'; + menusToRemove[menusToRemove.length] = '#menuPlay'; + + + + } + menusToRemove[menusToRemove.length] = '#menuPaste'; + } + if(!permits.edit|| permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuEdit'; + } + if(!permits.del || permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuDelete'; + } + if(!permits.cut || permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuCut'; + } + if(!permits.copy || permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuCopy'; + } + if((!permits.cut && !permits.copy) || permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuPaste'; + } + if(!permits.rename || permits.view_only) + { + menusToRemove[menusToRemove.length] = '#menuRename'; + } + + //alert(menusToRemove.join(',')); + var txt = ''; + for(var t in menu) + { + //txt += t + ': ' + menu[t] + '\n'; + } + $(menu).children().children().children().each( + function() + { + if(menusToRemove.inArray('#' + this.id)) + { + $(this).parent().remove(); + } + //alert(this.id); + + + } + ) + //alert(menusToRemove.join(',')); + //$(menusToRemove.join(','), $(menu).children().children().children()).remove(); + + + return menu; + } + } + ); +}; + + +var fileUploadElemIds = new Array(); //keep track of the file element ids +/** +* add more file type of input file for multiple uploads +*/ +function addMoreFile() +{ + + var newFileUpload = $($('div#TB_window #fileUploadBody tr').get(0)).clone(); + + do + { + var elementId = 'upload' + generateUniqueId(10); + }while(fileUploadElemIds.inArray(elementId)); + + fileUploadElemIds[fileUploadElemIds.length] = elementId; + + $(newFileUpload).appendTo('div#TB_window #fileUploadBody'); + $('input[@type=file]', newFileUpload).attr('id', elementId); + $('span.uploadProcessing', newFileUpload).attr('id', 'ajax' + elementId); + $('input[@type=button]', newFileUpload).click( + function() + { + uploadFile(elementId); + } + ); + $('a', newFileUpload).show().click( + function() + { + cancelFileUpload(elementId); + } + ); + + + $(newFileUpload).show(); + + return false; +}; +/** +* cancel uploading file +* remove hidden upload frame +* remove hidden upload form +*/ +function cancelFileUpload(elementId) +{ + $('div#TB_window #' + elementId).parent().parent().remove(); + + //ensure there is at least one visible upload element + while($('div#TB_window #fileUploadBody tr').length < 2) + { + addMoreFile(); + } + return false; +}; +/** +* upload file +*/ +function uploadFile(elementId) +{ + + var ext = getFileExtension($('#' + elementId).val()); + if(ext == '') + { + alert(noFileSelected ); + return false; + } + var supportedExts = supportedUploadExts.split(","); + var isSupportedExt = false; + + for (i in supportedExts) + { + //alert(typeof(supportedExts[i])); + if(typeof(supportedExts[i]) == 'string') + { + isSupportedExt = true; + break; + } + } + + if(!isSupportedExt) + { + alert(msgInvalidExt); + return false; + } + + $('#ajax' + elementId).hide(); + $('#ajax' + elementId).show(); + $.ajaxFileUpload + ( + { + url:appendQueryString(getUrl('upload', false, false), 'folder=' + currentFolder.path, ['folder']), + secureuri:false, + fileElementId:elementId, + dataType: 'json', + success: function (data, status) + { + + if(typeof(data.error) != 'undefined') + { + if(data.error != '') + { + alert(data.error); + $('#ajax' + elementId).hide(); + }else + { + //remove the file type of input + cancelFileUpload(elementId); + numRows++; + files[numRows] = {}; + + for(var i in data) + { + if(i != 'error') + { + files[numRows][i] = data[i]; + } + } + addDocumentHtml(numRows); + } + } + + }, + error: function (data, status, e) + { + $('#ajax' + elementId).hide(); + alert(e); + } + } + ) + + return false; +}; +/** +* generate unique id +*/ +function generateUniqueId(leng) +{ + var idLength = leng || 32; + var chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ"; + var id = ''; + for(var i = 0; i <= idLength; i++) + { + id += chars.substr( Math.floor(Math.random() * 62), 1 ); + } + + return (id ); + +}; + +/** +* generate a hidden iframe and force to download the specified file +*/ +function generateDownloadIframe(url) +{ + var frameId = 'ajaxDownloadIframe'; + $('#' + frameId).remove(); + if(window.ActiveXObject) { + var io = document.createElement('').css({opacity:0}),e=function(h){if(ie6)if(h.o)h.o.html('

').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i);f(h)},f=function(h){h.f=$(':input:visible:first',h.w)[0];if(h.f)h.f.focus()},F=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m)},m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return!r},hs=function(w,e,y){var s=[];w.each(function(){s.push(this._jqm)});$(e).each(function(){if(this[y])$.extend(this[y],s);else{this[y]=s;$(this).click(function(){for(var i in{jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return false})}})}})(jQuery);*/ + + + +(function($){$.fn.jqm=function(o){var p={overlay:50,overlayClass:'jqmOverlay',closeClass:'jqmClose',trigger:'.jqModal',ajax:F,ajaxText:'',target:F,modal:F,toTop:F,onShow:F,onHide:F,onLoad:F};return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};if(p.trigger)$(this).jqmAddTrigger(p.trigger)})};$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide')};$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow')};$.fn.jqmShow=function(t){return this.each(function(){$.jqm.open(this._jqm,t)})};$.fn.jqmHide=function(t){return this.each(function(){$.jqm.close(this._jqm,t)})};$.jqm={hash:{},open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('

').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);if(c.modal){if(!A[0])L('bind');A.push(s)}else if(c.overlay>0)h.w.jqmAddClose(o);else o=F;h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in{Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'")}}if(c.ajax){var r=c.target||h.w,u=c.ajax,r=(typeof r=='string')?$(r,h.w):$(r),u=(u.substr(0,1)=='@')?$(t).attr(u.substring(1)):u;r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h)})}else if(cc)h.w.jqmAddClose($(cc,h.w));if(c.toTop&&h.o)h.w.before('').insertAfter(h.o);(c.onShow)?c.onShow(h):h.w.show();e(h);return F},close:function(s){var h=H[s];if(!h.a)return F;h.a=F;if(A[0]){A.pop();if(!A[0])L('unbind')}if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove()}return F},params:{}};var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version=="6.0"),F=false,i=$('').css({opacity:0}),e=function(h){if(ie6)if(h.o)h.o.html('

').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i);f(h)},f=function(h){try{$(':input:visible',h.w)[0].focus()}catch(_){}},L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m)},m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return!r},hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function(){if(!this[c]){this[c]=[];$(this).click(function(){for(var i in{jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F})}this[c].push(s)})})}})(jQuery); +//jqModal.js end + +//rotate.js start +jQuery.fn.rotate=function(a,b){var p=this.get(0);if(!b){p.angle=((p.angle==undefined?0:p.angle)+a)%360}else{p.angle=a}if(p.angle>=0){var c=Math.PI*p.angle/180}else{var c=Math.PI*(360+p.angle)/180}var d=Math.cos(c);var e=Math.sin(c);if(document.all&&!window.opera){var f=document.createElement('img');f.src=p.src;f.height=p.height;f.width=p.width;f.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+d+",M12="+(-e)+",M21="+e+",M22="+d+",SizingMethod='auto expand')"}else{var f=document.createElement('canvas');if(!p.oImage){f.oImage=new Image();f.oImage.src=p.src;f.oImage.width=p.width;f.oImage.height=p.height}else{f.oImage=p.oImage}f.style.width=f.width=Math.abs(d*f.oImage.width)+Math.abs(e*f.oImage.height);f.style.height=f.height=Math.abs(d*f.oImage.height)+Math.abs(e*f.oImage.width);var g=f.getContext('2d');g.save();if(c<=Math.PI/2){g.translate(e*f.oImage.height,0)}else if(c<=Math.PI){g.translate(f.width,-d*f.oImage.height)}else if(c<=1.5*Math.PI){g.translate(-d*f.oImage.width,f.height)}else{g.translate(0,-e*f.oImage.width)}g.rotate(c);g.drawImage(f.oImage,0,0,f.oImage.width,f.oImage.height);g.restore()}f.id=p.id;f.angle=p.angle;p.parentNode.replaceChild(f,p)};jQuery.fn.rotateRight=function(a){this.rotate(a==undefined?90:a)};jQuery.fn.rotateLeft=function(a){this.rotate(a==undefined?-90:-a)}; +//rotate.js end +//interface.js start +jQuery.iUtil={getPosition:function(e){var x=0;var y=0;var a=e.style;var b=false;if(jQuery(e).css('display')=='none'){var c=a.visibility;var d=a.position;b=true;a.visibility='hidden';a.display='block';a.position='absolute'}var f=e;while(f){x+=f.offsetLeft+(f.currentStyle&&!jQuery.browser.opera?parseInt(f.currentStyle.borderLeftWidth)||0:0);y+=f.offsetTop+(f.currentStyle&&!jQuery.browser.opera?parseInt(f.currentStyle.borderTopWidth)||0:0);f=f.offsetParent}f=e;while(f&&f.tagName&&f.tagName.toLowerCase()!='body'){x-=f.scrollLeft||0;y-=f.scrollTop||0;f=f.parentNode}if(b==true){a.display='none';a.position=d;a.visibility=c}return{x:x,y:y}},getPositionLite:function(a){var x=0,y=0;while(a){x+=a.offsetLeft||0;y+=a.offsetTop||0;a=a.offsetParent}return{x:x,y:y}},getSize:function(e){var w=jQuery.css(e,'width');var h=jQuery.css(e,'height');var a=0;var b=0;var c=e.style;if(jQuery(e).css('display')!='none'){a=e.offsetWidth;b=e.offsetHeight}else{var d=c.visibility;var f=c.position;c.visibility='hidden';c.display='block';c.position='absolute';a=e.offsetWidth;b=e.offsetHeight;c.display='none';c.position=f;c.visibility=d}return{w:w,h:h,wb:a,hb:b}},getSizeLite:function(a){return{wb:a.offsetWidth||0,hb:a.offsetHeight||0}},getClient:function(e){var h,w,de;if(e){w=e.clientWidth;h=e.clientHeight}else{de=document.documentElement;w=window.innerWidth||self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth;h=window.innerHeight||self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight}return{w:w,h:h}},getScroll:function(e){var t=0,l=0,w=0,h=0,iw=0,ih=0;if(e&&e.nodeName.toLowerCase()!='body'){t=e.scrollTop;l=e.scrollLeft;w=e.scrollWidth;h=e.scrollHeight;iw=0;ih=0}else{if(document.documentElement){t=document.documentElement.scrollTop;l=document.documentElement.scrollLeft;w=document.documentElement.scrollWidth;h=document.documentElement.scrollHeight}else if(document.body){t=document.body.scrollTop;l=document.body.scrollLeft;w=document.body.scrollWidth;h=document.body.scrollHeight}iw=self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;ih=self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}return{t:t,l:l,w:w,h:h,iw:iw,ih:ih}},getMargins:function(e,a){var c=jQuery(e);var t=c.css('marginTop')||'';var r=c.css('marginRight')||'';var b=c.css('marginBottom')||'';var l=c.css('marginLeft')||'';if(a)return{t:parseInt(t)||0,r:parseInt(r)||0,b:parseInt(b)||0,l:parseInt(l)};else return{t:t,r:r,b:b,l:l}},getPadding:function(e,a){var c=jQuery(e);var t=c.css('paddingTop')||'';var r=c.css('paddingRight')||'';var b=c.css('paddingBottom')||'';var l=c.css('paddingLeft')||'';if(a)return{t:parseInt(t)||0,r:parseInt(r)||0,b:parseInt(b)||0,l:parseInt(l)};else return{t:t,r:r,b:b,l:l}},getBorder:function(e,a){var c=jQuery(e);var t=c.css('borderTopWidth')||'';var r=c.css('borderRightWidth')||'';var b=c.css('borderBottomWidth')||'';var l=c.css('borderLeftWidth')||'';if(a)return{t:parseInt(t)||0,r:parseInt(r)||0,b:parseInt(b)||0,l:parseInt(l)||0};else return{t:t,r:r,b:b,l:l}},getPointer:function(a){var x=a.pageX||(a.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft))||0;var y=a.pageY||(a.clientY+(document.documentElement.scrollTop||document.body.scrollTop))||0;return{x:x,y:y}},traverseDOM:function(a,b){b(a);a=a.firstChild;while(a){jQuery.iUtil.traverseDOM(a,b);a=a.nextSibling}},purgeEvents:function(c){jQuery.iUtil.traverseDOM(c,function(a){for(var b in a){if(typeof a[b]==='function'){a[b]=null}}})},centerEl:function(a,b){var c=jQuery.iUtil.getScroll();var d=jQuery.iUtil.getSize(a);if(!b||b=='vertically')jQuery(a).css({top:c.t+((Math.max(c.h,c.ih)-c.t-d.hb)/2)+'px'});if(!b||b=='horizontally')jQuery(a).css({left:c.l+((Math.max(c.w,c.iw)-c.l-d.wb)/2)+'px'})},fixPNG:function(a,b){var c=jQuery('img[@src*="png"]',a||document),png;c.each(function(){png=this.src;this.src=b;this.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+png+"')"})}};[].indexOf||(Array.prototype.indexOf=function(v,n){n=(n==null)?0:n;var m=this.length;for(var i=n;i0&&c>0){e=(Math.round(c/b*10000)/10000)}else{e=null}}}});return e},ResizeConstraint:function(d){var e;this.each(function(){var a=this;if(typeof(d)!='boolean'||!d){a.resizeOptions.ratio=null}else{var b=parseInt(jQuery(a).css('width'))||0;var c=parseInt(jQuery(a).css('height'))||0;if(b>0&&c>0){a.resizeOptions.ratio=(Math.round(c/b*10000)/10000)}else{a.resizeOptions.ratio=null}}})},move:function(e){if(jQuery.iResize.resizeElement==null){return}pointer=jQuery.iUtil.getPointer(e);dx=pointer.x-jQuery.iResize.pointer.x;dy=pointer.y-jQuery.iResize.pointer.y;newSizes={width:jQuery.iResize.sizes.width,height:jQuery.iResize.sizes.height};newPosition={top:jQuery.iResize.position.top,left:jQuery.iResize.position.left};switch(jQuery.iResize.resizeDirection){case'e':newSizes.width=jQuery.iResize.getWidth(dx,1);break;case'se':newSizes.width=jQuery.iResize.getWidth(dx,1);newSizes.height=jQuery.iResize.getHeight(dy,1);break;case'w':newSizes.width=jQuery.iResize.getWidth(dx,-1);newPosition.left=jQuery.iResize.position.left-newSizes.width+jQuery.iResize.sizes.width;break;case'sw':newSizes.width=jQuery.iResize.getWidth(dx,-1);newPosition.left=jQuery.iResize.position.left-newSizes.width+jQuery.iResize.sizes.width;newSizes.height=jQuery.iResize.getHeight(dy,1);break;case'nw':newSizes.height=jQuery.iResize.getHeight(dy,-1);newPosition.top=jQuery.iResize.position.top-newSizes.height+jQuery.iResize.sizes.height;newSizes.width=jQuery.iResize.getWidth(dx,-1);newPosition.left=jQuery.iResize.position.left-newSizes.width+jQuery.iResize.sizes.width;break;case'n':newSizes.height=jQuery.iResize.getHeight(dy,-1);newPosition.top=jQuery.iResize.position.top-newSizes.height+jQuery.iResize.sizes.height;break;case'ne':newSizes.height=jQuery.iResize.getHeight(dy,-1);newPosition.top=jQuery.iResize.position.top-newSizes.height+jQuery.iResize.sizes.height;newSizes.width=jQuery.iResize.getWidth(dx,1);break;case's':newSizes.height=jQuery.iResize.getHeight(dy,1);break}if(jQuery.iResize.resizeElement.resizeOptions.ratio){if(jQuery.iResize.resizeDirection=='n'||jQuery.iResize.resizeDirection=='s')nWidth=newSizes.height*jQuery.iResize.resizeElement.resizeOptions.ratio;else nWidth=newSizes.width;nHeight=jQuery.iResize.getHeightMinMax(nWidth*jQuery.iResize.resizeElement.resizeOptions.ratio);nWidth=nHeight/jQuery.iResize.resizeElement.resizeOptions.ratio;switch(jQuery.iResize.resizeDirection){case'n':case'nw':case'ne':newPosition.top+=newSizes.height-nHeight;break}switch(jQuery.iResize.resizeDirection){case'nw':case'w':case'sw':newPosition.left+=newSizes.width-nWidth;break}newSizes.height=nHeight;newSizes.width=nWidth}if(newPosition.topjQuery.iResize.resizeElement.resizeOptions.maxBottom){newSizes.height=jQuery.iResize.resizeElement.resizeOptions.maxBottom-newPosition.top;if(jQuery.iResize.resizeElement.resizeOptions.ratio){newSizes.width=newSizes.height/jQuery.iResize.resizeElement.resizeOptions.ratio}}if(newPosition.left+newSizes.width>jQuery.iResize.resizeElement.resizeOptions.maxRight){newSizes.width=jQuery.iResize.resizeElement.resizeOptions.maxRight-newPosition.left;if(jQuery.iResize.resizeElement.resizeOptions.ratio){newSizes.height=newSizes.width*jQuery.iResize.resizeElement.resizeOptions.ratio}}var a=false;if(jQuery.iResize.resizeElement.resizeOptions.onResize){a=jQuery.iResize.resizeElement.resizeOptions.onResize.apply(jQuery.iResize.resizeElement,[newSizes,newPosition]);if(a){if(a.sizes){jQuery.extend(newSizes,a.sizes)}if(a.position){jQuery.extend(newPosition,a.position)}}}elS=jQuery.iResize.resizeElement.style;elS.left=newPosition.left+'px';elS.top=newPosition.top+'px';elS.width=newSizes.width+'px';elS.height=newSizes.height+'px';return false},build:function(b){if(!b||!b.handlers||b.handlers.constructor!=Object){return}return this.each(function(){var a=this;a.resizeOptions=b;a.resizeOptions.minWidth=b.minWidth||10;a.resizeOptions.minHeight=b.minHeight||10;a.resizeOptions.maxWidth=b.maxWidth||3000;a.resizeOptions.maxHeight=b.maxHeight||3000;a.resizeOptions.minTop=b.minTop||-1000;a.resizeOptions.minLeft=b.minLeft||-1000;a.resizeOptions.maxRight=b.maxRight||3000;a.resizeOptions.maxBottom=b.maxBottom||3000;elPosition=jQuery(a).css('position');if(!(elPosition=='relative'||elPosition=='absolute')){a.style.position='relative'}directions=/n|ne|e|se|s|sw|w|nw/g;for(i in a.resizeOptions.handlers){if(i.toLowerCase().match(directions)!=null){if(a.resizeOptions.handlers[i].constructor==String){handle=jQuery(a.resizeOptions.handlers[i]);if(handle.size()>0){a.resizeOptions.handlers[i]=handle.get(0)}}if(a.resizeOptions.handlers[i].tagName){a.resizeOptions.handlers[i].resizeElement=a;a.resizeOptions.handlers[i].resizeDirection=i;jQuery(a.resizeOptions.handlers[i]).bind('mousedown',jQuery.iResize.start)}}}if(a.resizeOptions.dragHandle){if(typeof a.resizeOptions.dragHandle==='string'){handleEl=jQuery(a.resizeOptions.dragHandle);if(handleEl.size()>0){handleEl.each(function(){this.dragEl=a});handleEl.bind('mousedown',jQuery.iResize.startDrag)}}else if(a.resizeOptions.dragHandle==true){jQuery(this).bind('mousedown',jQuery.iResize.startDrag)}}})},destroy:function(){return this.each(function(){var a=this;for(i in a.resizeOptions.handlers){a.resizeOptions.handlers[i].resizeElement=null;a.resizeOptions.handlers[i].resizeDirection=null;jQuery(a.resizeOptions.handlers[i]).unbind('mousedown',jQuery.iResize.start)}if(a.resizeOptions.dragHandle){if(typeof a.resizeOptions.dragHandle==='string'){handle=jQuery(a.resizeOptions.dragHandle);if(handle.size()>0){handle.unbind('mousedown',jQuery.iResize.startDrag)}}else if(a.resizeOptions.dragHandle==true){jQuery(this).unbind('mousedown',jQuery.iResize.startDrag)}}a.resizeOptions=null})}};jQuery.fn.extend({Resizable:jQuery.iResize.build,ResizableRatio:jQuery.iResize.ResizeRatio,ResizeConstraint:jQuery.iResize.ResizeConstraint,ResizableDestroy:jQuery.iResize.destroy}); +//interface.js end +//image_editor_general.js start +/*function getModeValue(){var CheckedElem=null;for(var i=0;i35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7(1g 18.6=="I"){18.I=18.I;u 6=q(a,c){7(18==9||!9.3X)v 14 6(a,c);v 9.3X(a,c)};7(1g $!="I")6.1I$=$;u $=6;6.11=6.8r={3X:q(a,c){a=a||P;7(6.16(a))v 14 6(P)[6.11.1G?"1G":"1W"](a);7(1g a=="1s"){u m=/^[^<]*(<(.|\\s)+>)[^>]*$/.1V(a);7(m)a=6.31([m[1]]);B v 14 6(c).1L(a)}v 9.4E(a.15==2b&&a||(a.3C||a.C&&a!=18&&!a.1q&&a[0]!=I&&a[0].1q)&&6.2L(a)||[a])},3C:"1.1.3.1",7W:q(){v 9.C},C:0,1M:q(a){v a==I?6.2L(9):9[a]},1Z:q(a){u b=6(a);b.5q=9;v b},4E:q(a){9.C=0;[].R.O(9,a);v 9},F:q(a,b){v 6.F(9,a,b)},2p:q(a){u b=-1;9.F(q(i){7(9==a)b=i});v b},1b:q(f,d,e){u c=f;7(f.15==33)7(d==I)v 9.C&&6[e||"1b"](9[0],f)||I;B{c={};c[f]=d}v 9.F(q(a){E(u b V c)6.1b(e?9.T:9,b,6.4H(9,c[b],e,a,b))})},1f:q(b,a){v 9.1b(b,a,"2z")},2A:q(e){7(1g e=="1s")v 9.2Y().3e(P.66(e));u t="";6.F(e||9,q(){6.F(9.2S,q(){7(9.1q!=8)t+=9.1q!=1?9.5R:6.11.2A([9])})});v t},8b:q(){u a,1S=19;v 9.F(q(){7(!a)a=6.31(1S,9.2O);u b=a[0].3s(K);9.L.2K(b,9);1v(b.1d)b=b.1d;b.4g(9)})},3e:q(){v 9.2F(19,K,1,q(a){9.4g(a)})},5w:q(){v 9.2F(19,K,-1,q(a){9.2K(a,9.1d)})},5t:q(){v 9.2F(19,N,1,q(a){9.L.2K(a,9)})},5s:q(){v 9.2F(19,N,-1,q(a){9.L.2K(a,9.1X)})},2U:q(){v 9.5q||6([])},1L:q(t){u b=6.3k(9,q(a){v 6.1L(t,a)});v 9.1Z(/[^+>] [^+>]/.17(t)||t.J("..")>-1?6.5g(b):b)},7x:q(e){u d=9.1A(9.1L("*"));d.F(q(){9.1I$1a={};E(u a V 9.$1a)9.1I$1a[a]=6.1c({},9.$1a[a])}).3U();u r=9.1Z(6.3k(9,q(a){v a.3s(e!=I?e:K)}));d.F(q(){u b=9.1I$1a;E(u a V b)E(u c V b[a])6.S.1A(9,a,b[a][c],b[a][c].W);9.1I$1a=H});v r},1i:q(t){v 9.1Z(6.16(t)&&6.2s(9,q(b,a){v t.O(b,[a])})||6.2x(t,9))},4Y:q(t){v 9.1Z(t.15==33&&6.2x(t,9,K)||6.2s(9,q(a){v(t.15==2b||t.3C)?6.2w(a,t)<0:a!=t}))},1A:q(t){v 9.1Z(6.1T(9.1M(),t.15==33?6(t).1M():t.C!=I&&(!t.Q||t.Q=="6Z")?t:[t]))},37:q(a){v a?6.2x(a,9).C>0:N},6R:q(a){v a==I?(9.C?9[0].2v:H):9.1b("2v",a)},3F:q(a){v a==I?(9.C?9[0].27:H):9.2Y().3e(a)},2F:q(f,d,g,e){u c=9.C>1,a;v 9.F(q(){7(!a){a=6.31(f,9.2O);7(g<0)a.6E()}u b=9;7(d&&6.Q(9,"1r")&&6.Q(a[0],"2V"))b=9.3R("1z")[0]||9.4g(P.5h("1z"));6.F(a,q(){e.O(b,[c?9.3s(K):9])})})}};6.1c=6.11.1c=q(){u c=19[0],a=1;7(19.C==1){c=9;a=0}u b;1v((b=19[a++])!=H)E(u i V b)c[i]=b[i];v c};6.1c({6n:q(){7(6.1I$)$=6.1I$;v 6},16:q(a){v!!a&&1g a!="1s"&&!a.Q&&a.15!=2b&&/q/i.17(a+"")},40:q(a){v a.4z&&a.2O&&!a.2O.4y},Q:q(b,a){v b.Q&&b.Q.1D()==a.1D()},F:q(a,b,c){7(a.C==I)E(u i V a)b.O(a[i],c||[i,a[i]]);B E(u i=0,4x=a.C;i<4x;i++)7(b.O(a[i],c||[i,a[i]])===N)1F;v a},4H:q(c,b,d,e,a){7(6.16(b))b=b.3D(c,[e]);u f=/z-?2p|5Y-?8p|1e|5U|8i-?1u/i;v b&&b.15==3y&&d=="2z"&&!f.17(a)?b+"4o":b},12:{1A:q(b,c){6.F(c.2R(/\\s+/),q(i,a){7(!6.12.3w(b.12,a))b.12+=(b.12?" ":"")+a})},1E:q(b,c){b.12=c!=I?6.2s(b.12.2R(/\\s+/),q(a){v!6.12.3w(c,a)}).5M(" "):""},3w:q(t,c){v 6.2w(c,(t.12||t).3v().2R(/\\s+/))>-1}},4m:q(e,o,f){E(u i V o){e.T["2N"+i]=e.T[i];e.T[i]=o[i]}f.O(e,[]);E(u i V o)e.T[i]=e.T["2N"+i]},1f:q(e,p){7(p=="1u"||p=="29"){u b={},3r,3p,d=["83","81","80","7Y"];6.F(d,q(){b["7V"+9]=0;b["7T"+9+"7S"]=0});6.4m(e,b,q(){7(6(e).37(\':4f\')){3r=e.7Q;3p=e.7O}B{e=6(e.3s(K)).1L(":4b").5v("2B").2U().1f({48:"1y",3i:"7L",U:"2h",7K:"0",7I:"0"}).5o(e.L)[0];u a=6.1f(e.L,"3i")||"3n";7(a=="3n")e.L.T.3i="7G";3r=e.7E;3p=e.7D;7(a=="3n")e.L.T.3i="3n";e.L.3q(e)}});v p=="1u"?3r:3p}v 6.2z(e,p)},2z:q(e,a,d){u g;7(a=="1e"&&6.M.1h){g=6.1b(e.T,"1e");v g==""?"1":g}7(a.3t(/3x/i))a=6.1U;7(!d&&e.T[a])g=e.T[a];B 7(P.3f&&P.3f.3Y){7(a.3t(/3x/i))a="3x";a=a.1o(/([A-Z])/g,"-$1").2H();u b=P.3f.3Y(e,H);7(b)g=b.57(a);B 7(a=="U")g="1P";B 6.4m(e,{U:"2h"},q(){u c=P.3f.3Y(9,"");g=c&&c.57(a)||""})}B 7(e.3S){u f=a.1o(/\\-(\\w)/g,q(m,c){v c.1D()});g=e.3S[a]||e.3S[f]}v g},31:q(a,c){u r=[];c=c||P;6.F(a,q(i,b){7(!b)v;7(b.15==3y)b=b.3v();7(1g b=="1s"){u s=6.2C(b).2H(),1x=c.5h("1x"),1N=[];u a=!s.J("<1H")&&[1,"<2y>",""]||!s.J("<7g")&&[1,"<52>",""]||(!s.J("<7c")||!s.J("<1z")||!s.J("<7a")||!s.J("<78"))&&[1,"<1r>",""]||!s.J("<2V")&&[2,"<1r><1z>",""]||(!s.J("<75")||!s.J("<74"))&&[3,"<1r><1z><2V>",""]||!s.J("<73")&&[2,"<1r><4W>",""]||[0,"",""];1x.27=a[1]+b+a[2];1v(a[0]--)1x=1x.1d;7(6.M.1h){7(!s.J("<1r")&&s.J("<1z")<0)1N=1x.1d&&1x.1d.2S;B 7(a[1]=="<1r>"&&s.J("<1z")<0)1N=1x.2S;E(u n=1N.C-1;n>=0;--n)7(6.Q(1N[n],"1z")&&!1N[n].2S.C)1N[n].L.3q(1N[n])}b=6.2L(1x.2S)}7(0===b.C&&(!6.Q(b,"34")&&!6.Q(b,"2y")))v;7(b[0]==I||6.Q(b,"34")||b.71)r.R(b);B r=6.1T(r,b)});v r},1b:q(c,d,a){u e=6.40(c)?{}:6.3H;7(e[d]){7(a!=I)c[e[d]]=a;v c[e[d]]}B 7(a==I&&6.M.1h&&6.Q(c,"34")&&(d=="70"||d=="6Y"))v c.6W(d).5R;B 7(c.4z){7(a!=I)c.6U(d,a);7(6.M.1h&&/4M|2u/.17(d)&&!6.40(c))v c.35(d,2);v c.35(d)}B{7(d=="1e"&&6.M.1h){7(a!=I){c.5U=1;c.1i=(c.1i||"").1o(/4L\\([^)]*\\)/,"")+(39(a).3v()=="6M"?"":"4L(1e="+a*4X+")")}v c.1i?(39(c.1i.3t(/1e=([^)]*)/)[1])/4X).3v():""}d=d.1o(/-([a-z])/6K,q(z,b){v b.1D()});7(a!=I)c[d]=a;v c[d]}},2C:q(t){v t.1o(/^\\s+|\\s+$/g,"")},2L:q(a){u r=[];7(1g a!="6I")E(u i=0,26=a.C;i<26;i++)r.R(a[i]);B r=a.51(0);v r},2w:q(b,a){E(u i=0,26=a.C;i<26;i++)7(a[i]==b)v i;v-1},1T:q(a,b){E(u i=0;b[i];i++)a.R(b[i]);v a},5g:q(a){u r=[],3P=6.1k++;E(u i=0,4G=a.C;i<4G;i++)7(3P!=a[i].1k){a[i].1k=3P;r.R(a[i])}v r},1k:0,2s:q(c,b,d){7(1g b=="1s")b=14 45("a","i","v "+b);u a=[];E(u i=0,30=c.C;i<30;i++)7(!d&&b(c[i],i)||d&&!b(c[i],i))a.R(c[i]);v a},3k:q(c,b){7(1g b=="1s")b=14 45("a","v "+b);u d=[];E(u i=0,30=c.C;i<30;i++){u a=b(c[i],i);7(a!==H&&a!=I){7(a.15!=2b)a=[a];d=d.6v(a)}}v d}});14 q(){u b=6u.6t.2H();6.M={4D:(b.3t(/.+(?:6s|6q|6o|6m)[\\/: ]([\\d.]+)/)||[])[1],20:/5l/.17(b),2a:/2a/.17(b),1h:/1h/.17(b)&&!/2a/.17(b),3j:/3j/.17(b)&&!/(6h|5l)/.17(b)};6.6g=!6.M.1h||P.6f=="6c";6.1U=6.M.1h?"1U":"5x",6.3H={"E":"68","67":"12","3x":6.1U,5x:6.1U,1U:6.1U,27:"27",12:"12",2v:"2v",2r:"2r",2B:"2B",65:"63",2T:"2T",62:"5Z"}};6.F({4v:"a.L",4p:"6.4p(a)",8o:"6.22(a,2,\'1X\')",8n:"6.22(a,2,\'4t\')",8k:"6.4q(a.L.1d,a)",8h:"6.4q(a.1d)"},q(i,n){6.11[i]=q(a){u b=6.3k(9,n);7(a&&1g a=="1s")b=6.2x(a,b);v 9.1Z(b)}});6.F({5o:"3e",8g:"5w",2K:"5t",8f:"5s"},q(i,n){6.11[i]=q(){u a=19;v 9.F(q(){E(u j=0,26=a.C;j<26;j++)6(a[j])[n](9)})}});6.F({5v:q(a){6.1b(9,a,"");9.8d(a)},8c:q(c){6.12.1A(9,c)},88:q(c){6.12.1E(9,c)},87:q(c){6.12[6.12.3w(9,c)?"1E":"1A"](9,c)},1E:q(a){7(!a||6.1i(a,[9]).r.C)9.L.3q(9)},2Y:q(){1v(9.1d)9.3q(9.1d)}},q(i,n){6.11[i]=q(){v 9.F(n,19)}});6.F(["5Q","5P","5O","5N"],q(i,n){6.11[n]=q(a,b){v 9.1i(":"+n+"("+a+")",b)}});6.F(["1u","29"],q(i,n){6.11[n]=q(h){v h==I?(9.C?6.1f(9[0],n):H):9.1f(n,h.15==33?h:h+"4o")}});6.1c({4n:{"":"m[2]==\'*\'||6.Q(a,m[2])","#":"a.35(\'2m\')==m[2]",":":{5P:"im[3]-0",22:"m[3]-0==i",5Q:"m[3]-0==i",2Q:"i==0",2P:"i==r.C-1",5L:"i%2==0",5K:"i%2","2Q-3u":"a.L.3R(\'*\')[0]==a","2P-3u":"6.22(a.L.5J,1,\'4t\')==a","86-3u":"!6.22(a.L.5J,2,\'4t\')",4v:"a.1d",2Y:"!a.1d",5N:"(a.5H||a.85||\'\').J(m[3])>=0",4f:\'"1y"!=a.G&&6.1f(a,"U")!="1P"&&6.1f(a,"48")!="1y"\',1y:\'"1y"==a.G||6.1f(a,"U")=="1P"||6.1f(a,"48")=="1y"\',84:"!a.2r",2r:"a.2r",2B:"a.2B",2T:"a.2T||6.1b(a,\'2T\')",2A:"\'2A\'==a.G",4b:"\'4b\'==a.G",5F:"\'5F\'==a.G",4l:"\'4l\'==a.G",5E:"\'5E\'==a.G",4k:"\'4k\'==a.G",5D:"\'5D\'==a.G",5C:"\'5C\'==a.G",1J:\'"1J"==a.G||6.Q(a,"1J")\',5B:"/5B|2y|82|1J/i.17(a.Q)"},"[":"6.1L(m[2],a).C"},5A:[/^\\[ *(@)([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(\\[)\\s*(.*?(\\[.*?\\])?[^[]*?)\\s*\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,14 3o("^([:.#]*)("+(6.2J=6.M.20&&6.M.4D<"3.0.0"?"\\\\w":"(?:[\\\\w\\7Z-\\7X*1I-]|\\\\\\\\.)")+"+)")],2x:q(a,c,b){u d,1K=[];1v(a&&a!=d){d=a;u f=6.1i(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1K=b?c=f.r:6.1T(1K,f.r)}v 1K},1L:q(t,l){7(1g t!="1s")v[t];7(l&&!l.1q)l=H;l=l||P;7(!t.J("//")){l=l.4h;t=t.2G(2,t.C)}B 7(!t.J("/")&&!l.2O){l=l.4h;t=t.2G(1,t.C);7(t.J("/")>=1)t=t.2G(t.J("/"),t.C)}u b=[l],2j=[],2P;1v(t&&2P!=t){u r=[];2P=t;t=6.2C(t).1o(/^\\/\\//,"");u k=N;u g=14 3o("^[/>]\\\\s*("+6.2J+"+)");u m=g.1V(t);7(m){u o=m[1].1D();E(u i=0;b[i];i++)E(u c=b[i].1d;c;c=c.1X)7(c.1q==1&&(o=="*"||c.Q.1D()==o.1D()))r.R(c);b=r;t=t.1o(g,"");7(t.J(" ")==0)7R;k=K}B{g=/^((\\/?\\.\\.)|([>\\/+~]))\\s*([a-z]*)/i;7((m=g.1V(t))!=H){r=[];u o=m[4],1k=6.1k++;m=m[1];E(u j=0,2e=b.C;j<2e;j++)7(m.J("..")<0){u n=m=="~"||m=="+"?b[j].1X:b[j].1d;E(;n;n=n.1X)7(n.1q==1){7(m=="~"&&n.1k==1k)1F;7(!o||n.Q.1D()==o.1D()){7(m=="~")n.1k=1k;r.R(n)}7(m=="+")1F}}B r.R(b[j].L);b=r;t=6.2C(t.1o(g,""));k=K}}7(t&&!k){7(!t.J(",")){7(l==b[0])b.4e();2j=6.1T(2j,b);r=b=[l];t=" "+t.2G(1,t.C)}B{u h=14 3o("^("+6.2J+"+)(#)("+6.2J+"+)");u m=h.1V(t);7(m){m=[0,m[2],m[3],m[1]]}B{h=14 3o("^([#.]?)("+6.2J+"*)");m=h.1V(t)}m[2]=m[2].1o(/\\\\/g,"");u f=b[b.C-1];7(m[1]=="#"&&f&&f.4d){u p=f.4d(m[2]);7((6.M.1h||6.M.2a)&&p&&1g p.2m=="1s"&&p.2m!=m[2])p=6(\'[@2m="\'+m[2]+\'"]\',f)[0];b=r=p&&(!m[3]||6.Q(p,m[3]))?[p]:[]}B{E(u i=0;b[i];i++){u a=m[1]!=""||m[0]==""?"*":m[2];7(a=="*"&&b[i].Q.2H()=="7P")a="2E";r=6.1T(r,b[i].3R(a))}7(m[1]==".")r=6.4c(r,m[2]);7(m[1]=="#"){u e=[];E(u i=0;r[i];i++)7(r[i].35("2m")==m[2]){e=[r[i]];1F}r=e}b=r}t=t.1o(h,"")}}7(t){u d=6.1i(t,r);b=r=d.r;t=6.2C(d.t)}}7(t)b=[];7(b&&l==b[0])b.4e();2j=6.1T(2j,b);v 2j},4c:q(r,m,a){m=" "+m+" ";u b=[];E(u i=0;r[i];i++){u c=(" "+r[i].12+" ").J(m)>=0;7(!a&&c||a&&!c)b.R(r[i])}v b},1i:q(t,r,h){u d;1v(t&&t!=d){d=t;u p=6.5A,m;E(u i=0;p[i];i++){m=p[i].1V(t);7(m){t=t.7N(m[0].C);m[2]=m[2].1o(/\\\\/g,"");1F}}7(!m)1F;7(m[1]==":"&&m[2]=="4Y")r=6.1i(m[3],r,K).r;B 7(m[1]==".")r=6.4c(r,m[2],h);B 7(m[1]=="@"){u g=[],G=m[3];E(u i=0,2e=r.C;i<2e;i++){u a=r[i],z=a[6.3H[m[2]]||m[2]];7(z==H||/4M|2u/.17(m[2]))z=6.1b(a,m[2])||\'\';7((G==""&&!!z||G=="="&&z==m[5]||G=="!="&&z!=m[5]||G=="^="&&z&&!z.J(m[5])||G=="$="&&z.2G(z.C-m[5].C)==m[5]||(G=="*="||G=="~=")&&z.J(m[5])>=0)^h)g.R(a)}r=g}B 7(m[1]==":"&&m[2]=="22-3u"){u e=6.1k++,g=[],17=/(\\d*)n\\+?(\\d*)/.1V(m[3]=="5L"&&"2n"||m[3]=="5K"&&"2n+1"||!/\\D/.17(m[3])&&"n+"+m[3]||m[3]),2Q=(17[1]||1)-0,d=17[2]-0;E(u i=0,2e=r.C;i<2e;i++){u j=r[i],L=j.L;7(e!=L.1k){u c=1;E(u n=L.1d;n;n=n.1X)7(n.1q==1)n.4a=c++;L.1k=e}u b=N;7(2Q==1){7(d==0||j.4a==d)b=K}B 7((j.4a+d)%2Q==0)b=K;7(b^h)g.R(j)}r=g}B{u f=6.4n[m[1]];7(1g f!="1s")f=6.4n[m[1]][m[2]];49("f = q(a,i){v "+f+"}");r=6.2s(r,f,h)}}v{r:r,t:t}},4p:q(c){u b=[];u a=c.L;1v(a&&a!=P){b.R(a);a=a.L}v b},22:q(a,e,c,b){e=e||1;u d=0;E(;a;a=a[c])7(a.1q==1&&++d==e)1F;v a},4q:q(n,a){u r=[];E(;n;n=n.1X){7(n.1q==1&&(!a||n!=a))r.R(n)}v r}});6.S={1A:q(d,e,c,b){7(6.M.1h&&d.3m!=I)d=18;7(!c.1Q)c.1Q=9.1Q++;7(b!=I){u f=c;c=q(){v f.O(9,19)};c.W=b;c.1Q=f.1Q}7(!d.$1a)d.$1a={};7(!d.$1p)d.$1p=q(){u a;7(1g 6=="I"||6.S.47)v a;a=6.S.1p.O(d,19);v a};u g=d.$1a[e];7(!g){g=d.$1a[e]={};7(d.46)d.46(e,d.$1p,N);B d.7M("5r"+e,d.$1p)}g[c.1Q]=c;7(!9.Y[e])9.Y[e]=[];7(6.2w(d,9.Y[e])==-1)9.Y[e].R(d)},1Q:1,Y:{},1E:q(b,c,a){u d=b.$1a,1Y,2p;7(d){7(c&&c.G){a=c.44;c=c.G}7(!c){E(c V d)9.1E(b,c)}B 7(d[c]){7(a)3l d[c][a.1Q];B E(a V b.$1a[c])3l d[c][a];E(1Y V d[c])1F;7(!1Y){7(b.43)b.43(c,b.$1p,N);B b.7J("5r"+c,b.$1p);1Y=H;3l d[c];1v(9.Y[c]&&((2p=6.2w(b,9.Y[c]))>=0))3l 9.Y[c][2p]}}E(1Y V d)1F;7(!1Y)b.$1p=b.$1a=H}},1t:q(c,b,d){b=6.2L(b||[]);7(!d)6.F(9.Y[c]||[],q(){6.S.1t(c,b,9)});B{u a,1Y,11=6.16(d[c]||H);b.5p(9.42({G:c,1O:d}));7(6.16(d.$1p)&&(a=d.$1p.O(d,b))!==N)9.47=K;7(11&&a!==N&&!6.Q(d,\'a\'))d[c]();9.47=N}},1p:q(b){u a;b=6.S.42(b||18.S||{});u c=9.$1a&&9.$1a[b.G],1S=[].51.3D(19,1);1S.5p(b);E(u j V c){1S[0].44=c[j];1S[0].W=c[j].W;7(c[j].O(9,1S)===N){b.2d();b.2D();a=N}}7(6.M.1h)b.1O=b.2d=b.2D=b.44=b.W=H;v a},42:q(c){u a=c;c=6.1c({},a);c.2d=q(){7(a.2d)v a.2d();a.7H=N};c.2D=q(){7(a.2D)v a.2D();a.7F=K};7(!c.1O&&c.5n)c.1O=c.5n;7(6.M.20&&c.1O.1q==3)c.1O=a.1O.L;7(!c.41&&c.4j)c.41=c.4j==c.1O?c.7C:c.4j;7(c.5k==H&&c.5j!=H){u e=P.4h,b=P.4y;c.5k=c.5j+(e&&e.5i||b.5i);c.7z=c.7y+(e&&e.5f||b.5f)}7(!c.3h&&(c.5e||c.5d))c.3h=c.5e||c.5d;7(!c.5c&&c.5b)c.5c=c.5b;7(!c.3h&&c.1J)c.3h=(c.1J&1?1:(c.1J&2?3:(c.1J&4?2:0)));v c}};6.11.1c({3g:q(c,a,b){v c=="3z"?9.3Z(c,a,b):9.F(q(){6.S.1A(9,c,b||a,b&&a)})},3Z:q(d,b,c){v 9.F(q(){6.S.1A(9,d,q(a){6(9).3U(a);v(c||b).O(9,19)},c&&b)})},3U:q(a,b){v 9.F(q(){6.S.1E(9,a,b)})},1t:q(a,b){v 9.F(q(){6.S.1t(a,b,9)})},1R:q(){u a=19;v 9.5a(q(e){9.4u=0==9.4u?1:0;e.2d();v a[9.4u].O(9,[e])||N})},7w:q(f,g){q 3W(e){u p=e.41;1v(p&&p!=9)2g{p=p.L}25(e){p=9};7(p==9)v N;v(e.G=="3V"?f:g).O(9,[e])}v 9.3V(3W).59(3W)},1G:q(f){7(6.3d)f.O(P,[6]);B 6.2q.R(q(){v f.O(9,[6])});v 9}});6.1c({3d:N,2q:[],1G:q(){7(!6.3d){6.3d=K;7(6.2q){6.F(6.2q,q(){9.O(P)});6.2q=H}7(6.M.3j||6.M.2a)P.43("58",6.1G,N);7(!18.7v.C)6(18).1W(q(){6("#3T").1E()})}}});14 q(){6.F(("7u,7t,1W,7s,7r,3z,5a,7q,"+"7p,7o,7n,3V,59,7m,2y,"+"4k,7l,7k,7j,2c").2R(","),q(i,o){6.11[o]=q(f){v f?9.3g(o,f):9.1t(o)}});7(6.M.3j||6.M.2a)P.46("58",6.1G,N);B 7(6.M.1h){P.7i("<7h"+"7f 2m=3T 7e=K "+"2u=//:><\\/3b>");u a=P.4d("3T");7(a)a.7d=q(){7(9.3a!="1n")v;6.1G()};a=H}B 7(6.M.20)6.3N=3m(q(){7(P.3a=="79"||P.3a=="1n"){3M(6.3N);6.3N=H;6.1G()}},10);6.S.1A(18,"1W",6.1G)};7(6.M.1h)6(18).3Z("3z",q(){u a=6.S.Y;E(u b V a){u c=a[b],i=c.C;7(i&&b!=\'3z\')77 c[i-1]&&6.S.1E(c[i-1],b);1v(--i)}});6.11.1c({76:q(c,b,a){9.1W(c,b,a,1)},1W:q(g,d,c,e){7(6.16(g))v 9.3g("1W",g);c=c||q(){};u f="3K";7(d)7(6.16(d)){c=d;d=H}B{d=6.2E(d);f="50"}u h=9;6.2Z({1C:g,G:f,W:d,2t:e,1n:q(a,b){7(b=="28"||!e&&b=="4V")h.1b("27",a.3c).3J().F(c,[a.3c,b,a]);B c.O(h,[a.3c,b,a])}});v 9},72:q(){v 6.2E(9)},3J:q(){v 9.1L("3b").F(q(){7(9.2u)6.4U(9.2u);B 6.3I(9.2A||9.5H||9.27||"")}).2U()}});6.F("4T,4I,4S,4R,4Q,4P".2R(","),q(i,o){6.11[o]=q(f){v 9.3g(o,f)}});6.1c({1M:q(e,c,a,d,b){7(6.16(c)){a=c;c=H}v 6.2Z({G:"3K",1C:e,W:c,28:a,3G:d,2t:b})},6X:q(d,b,a,c){v 6.1M(d,b,a,c,1)},4U:q(b,a){v 6.1M(b,H,a,"3b")},6V:q(c,b,a){v 6.1M(c,b,a,"4N")},6T:q(d,b,a,c){7(6.16(b)){a=b;b={}}v 6.2Z({G:"50",1C:d,W:b,28:a,3G:c})},6S:q(a){6.36.21=a},6Q:q(a){6.1c(6.36,a)},36:{Y:K,G:"3K",21:0,4O:"6P/x-6O-34-6N",4K:K,38:K,W:H},32:{},2Z:q(s){s=6.1c({},6.36,s);7(s.W){7(s.4K&&1g s.W!="1s")s.W=6.2E(s.W);7(s.G.2H()=="1M"){s.1C+=((s.1C.J("?")>-1)?"&":"?")+s.W;s.W=H}}7(s.Y&&!6.3L++)6.S.1t("4T");u f=N;u h=18.4Z?14 4Z("6L.6J"):14 4J();h.7b(s.G,s.1C,s.38);7(s.W)h.3Q("6H-6G",s.4O);7(s.2t)h.3Q("6F-3O-6D",6.32[s.1C]||"6C, 6B 6A 6z 4r:4r:4r 6y");h.3Q("X-6x-6w","4J");7(s.56)s.56(h);7(s.Y)6.S.1t("4P",[h,s]);u g=q(d){7(h&&(h.3a==4||d=="21")){f=K;7(i){3M(i);i=H}u c;2g{c=6.54(h)&&d!="21"?s.2t&&6.4F(h,s.1C)?"4V":"28":"2c";7(c!="2c"){u b;2g{b=h.3E("53-3O")}25(e){}7(s.2t&&b)6.32[s.1C]=b;u a=6.55(h,s.3G);7(s.28)s.28(a,c);7(s.Y)6.S.1t("4Q",[h,s])}B 6.2X(s,h,c)}25(e){c="2c";6.2X(s,h,c,e)}7(s.Y)6.S.1t("4S",[h,s]);7(s.Y&&!--6.3L)6.S.1t("4I");7(s.1n)s.1n(h,c);7(s.38)h=H}};u i=3m(g,13);7(s.21>0)4C(q(){7(h){h.6r();7(!f)g("21")}},s.21);2g{h.6p(s.W)}25(e){6.2X(s,h,H,e)}7(!s.38)g();v h},2X:q(s,a,b,e){7(s.2c)s.2c(a,b,e);7(s.Y)6.S.1t("4R",[a,s,e])},3L:0,54:q(r){2g{v!r.23&&7A.7B=="4l:"||(r.23>=5u&&r.23<6l)||r.23==5m||6.M.20&&r.23==I}25(e){}v N},4F:q(a,c){2g{u b=a.3E("53-3O");v a.23==5m||b==6.32[c]||6.M.20&&a.23==I}25(e){}v N},55:q(r,b){u c=r.3E("6k-G");u a=!b&&c&&c.J("4B")>=0;a=b=="4B"||a?r.6j:r.3c;7(b=="3b")6.3I(a);7(b=="4N")a=49("("+a+")");7(b=="3F")6("<1x>").3F(a).3J();v a},2E:q(a){u s=[];7(a.15==2b||a.3C)6.F(a,q(){s.R(2l(9.6i)+"="+2l(9.2v))});B E(u j V a)7(a[j]&&a[j].15==2b)6.F(a[j],q(){s.R(2l(j)+"="+2l(9))});B s.R(2l(j)+"="+2l(a[j]));v s.5M("&")},3I:q(a){7(18.4A)18.4A(a);B 7(6.M.20)18.4C(a,0);B 49.3D(18,a)}});6.11.1c({1m:q(b,a){v b?9.1w({1u:"1m",29:"1m",1e:"1m"},b,a):9.1i(":1y").F(q(){9.T.U=9.2i?9.2i:"";7(6.1f(9,"U")=="1P")9.T.U="2h"}).2U()},1j:q(b,a){v b?9.1w({1u:"1j",29:"1j",1e:"1j"},b,a):9.1i(":4f").F(q(){9.2i=9.2i||6.1f(9,"U");7(9.2i=="1P")9.2i="2h";9.T.U="1P"}).2U()},5G:6.11.1R,1R:q(a,b){v 6.16(a)&&6.16(b)?9.5G(a,b):a?9.1w({1u:"1R",29:"1R",1e:"1R"},a,b):9.F(q(){6(9)[6(9).37(":1y")?"1m":"1j"]()})},6e:q(b,a){v 9.1w({1u:"1m"},b,a)},6d:q(b,a){v 9.1w({1u:"1j"},b,a)},6b:q(b,a){v 9.1w({1u:"1R"},b,a)},6a:q(b,a){v 9.1w({1e:"1m"},b,a)},69:q(b,a){v 9.1w({1e:"1j"},b,a)},7U:q(c,a,b){v 9.1w({1e:a},c,b)},1w:q(d,h,f,g){v 9.1l(q(){u c=6(9).37(":1y"),1H=6.5z(h,f,g),5y=9;E(u p V d){7(d[p]=="1j"&&c||d[p]=="1m"&&!c)v 6.16(1H.1n)&&1H.1n.O(9);7(p=="1u"||p=="29"){1H.U=6.1f(9,"U");1H.2f=9.T.2f}}7(1H.2f!=H)9.T.2f="1y";9.2k=6.1c({},d);6.F(d,q(a,b){u e=14 6.2M(5y,1H,a);7(b.15==3y)e.2W(e.1K(),b);B e[b=="1R"?c?"1m":"1j":b](d)})})},1l:q(a,b){7(!b){b=a;a="2M"}v 9.F(q(){7(!9.1l)9.1l={};7(!9.1l[a])9.1l[a]=[];9.1l[a].R(b);7(9.1l[a].C==1)b.O(9)})}});6.1c({5z:q(b,a,c){u d=b&&b.15==64?b:{1n:c||!c&&a||6.16(b)&&b,1B:b,2I:c&&a||a&&a.15!=45&&a||(6.2I.4i?"4i":"4w")};d.1B=(d.1B&&d.1B.15==3y?d.1B:{61:60,89:5u}[d.1B])||8a;d.2N=d.1n;d.1n=q(){6.5I(9,"2M");7(6.16(d.2N))d.2N.O(9)};v d},2I:{4w:q(p,n,b,a){v b+a*p},4i:q(p,n,b,a){v((-5W.5X(p*5W.8e)/2)+0.5)*a+b}},1l:{},5I:q(b,a){a=a||"2M";7(b.1l&&b.1l[a]){b.1l[a].4e();u f=b.1l[a][0];7(f)f.O(b)}},3B:[],2M:q(f,e,g){u z=9;u y=f.T;z.a=q(){7(e.3A)e.3A.O(f,[z.2o]);7(g=="1e")6.1b(y,"1e",z.2o);B{y[g]=8m(z.2o)+"4o";y.U="2h"}};z.5V=q(){v 39(6.1f(f,g))};z.1K=q(){u r=39(6.2z(f,g));v r&&r>-8l?r:z.5V()};z.2W=q(c,b){z.4s=(14 5T()).5S();z.2o=c;z.a();6.3B.R(q(){v z.3A(c,b)});7(6.3B.C==1){u d=3m(q(){u a=6.3B;E(u i=0;ie.1B+z.4s){z.2o=c;z.a();7(f.2k)f.2k[g]=K;u b=K;E(u i V f.2k)7(f.2k[i]!==K)b=N;7(b){7(e.U!=H){y.2f=e.2f;y.U=e.U;7(6.1f(f,"U")=="1P")y.U="2h"}7(e.1j)y.U="1P";7(e.1j||e.1m)E(u p V f.2k)6.1b(y,p,f.24[p])}7(b&&6.16(e.1n))e.1n.O(f);v N}B{u n=t-9.4s;u p=n/e.1B;z.2o=6.2I[e.2I](p,n,a,(c-a),e.1B);z.a()}v K}}})}',62,524,'||||||jQuery|if||this|||||||||||||||||function||||var|return||||||else|length||for|each|type|null|undefined|indexOf|true|parentNode|browser|false|apply|document|nodeName|push|event|style|display|in|data||global|||fn|className||new|constructor|isFunction|test|window|arguments|events|attr|extend|firstChild|opacity|css|typeof|msie|filter|hide|mergeNum|queue|show|complete|replace|handle|nodeType|table|string|trigger|height|while|animate|div|hidden|tbody|add|duration|url|toUpperCase|remove|break|ready|opt|_|button|cur|find|get|tb|target|none|guid|toggle|args|merge|styleFloat|exec|load|nextSibling|ret|pushStack|safari|timeout|nth|status|orig|catch|al|innerHTML|success|width|opera|Array|error|preventDefault|rl|overflow|try|block|oldblock|done|curAnim|encodeURIComponent|id||now|index|readyList|disabled|grep|ifModified|src|value|inArray|multiFilter|select|curCSS|text|checked|trim|stopPropagation|param|domManip|substr|toLowerCase|easing|chars|insertBefore|makeArray|fx|old|ownerDocument|last|first|split|childNodes|selected|end|tr|custom|handleError|empty|ajax|el|clean|lastModified|String|form|getAttribute|ajaxSettings|is|async|parseFloat|readyState|script|responseText|isReady|append|defaultView|bind|which|position|mozilla|map|delete|setInterval|static|RegExp|oWidth|removeChild|oHeight|cloneNode|match|child|toString|has|float|Number|unload|step|timers|jquery|call|getResponseHeader|html|dataType|props|globalEval|evalScripts|GET|active|clearInterval|safariTimer|Modified|num|setRequestHeader|getElementsByTagName|currentStyle|__ie_init|unbind|mouseover|handleHover|init|getComputedStyle|one|isXMLDoc|relatedTarget|fix|removeEventListener|handler|Function|addEventListener|triggered|visibility|eval|nodeIndex|radio|classFilter|getElementById|shift|visible|appendChild|documentElement|swing|fromElement|submit|file|swap|expr|px|parents|sibling|00|startTime|previousSibling|lastToggle|parent|linear|ol|body|tagName|execScript|xml|setTimeout|version|setArray|httpNotModified|fl|prop|ajaxStop|XMLHttpRequest|processData|alpha|href|json|contentType|ajaxSend|ajaxSuccess|ajaxError|ajaxComplete|ajaxStart|getScript|notmodified|colgroup|100|not|ActiveXObject|POST|slice|fieldset|Last|httpSuccess|httpData|beforeSend|getPropertyValue|DOMContentLoaded|mouseout|click|ctrlKey|metaKey|keyCode|charCode|scrollTop|unique|createElement|scrollLeft|clientX|pageX|webkit|304|srcElement|appendTo|unshift|prevObject|on|after|before|200|removeAttr|prepend|cssFloat|self|speed|parse|input|reset|image|password|checkbox|_toggle|textContent|dequeue|lastChild|odd|even|join|contains|gt|lt|eq|nodeValue|getTime|Date|zoom|max|Math|cos|font|maxLength|600|slow|maxlength|readOnly|Object|readonly|createTextNode|class|htmlFor|fadeOut|fadeIn|slideToggle|CSS1Compat|slideUp|slideDown|compatMode|boxModel|compatible|name|responseXML|content|300|ie|noConflict|ra|send|it|abort|rv|userAgent|navigator|concat|With|Requested|GMT|1970|Jan|01|Thu|Since|reverse|If|Type|Content|array|XMLHTTP|ig|Microsoft|NaN|urlencoded|www|application|ajaxSetup|val|ajaxTimeout|post|setAttribute|getJSON|getAttributeNode|getIfModified|method|FORM|action|options|serialize|col|th|td|loadIfModified|do|colg|loaded|tfoot|open|thead|onreadystatechange|defer|ipt|leg|scr|write|keyup|keypress|keydown|change|mousemove|mouseup|mousedown|dblclick|scroll|resize|focus|blur|frames|hover|clone|clientY|pageY|location|protocol|toElement|clientWidth|clientHeight|cancelBubble|relative|returnValue|left|detachEvent|right|absolute|attachEvent|substring|offsetWidth|object|offsetHeight|continue|Width|border|fadeTo|padding|size|uFFFF|Left|u0128|Right|Bottom|textarea|Top|enabled|innerText|only|toggleClass|removeClass|fast|400|wrap|addClass|removeAttribute|PI|insertAfter|prependTo|children|line|splice|siblings|10000|parseInt|prev|next|weight|1px|prototype'.split('|'),0,{})); //jquery.js end + //form.js start +(function($){$.fn.ajaxSubmit=function(o){if(typeof o=='function')o={success:o};o=$.extend({url:this.attr('action')||window.location,type:this.attr('method')||'GET'},o||{});var a=this.formToArray(o.semantic);if(o.beforeSubmit&&o.beforeSubmit(a,this,o)===false)return this;var p={};$.event.trigger('form.submit.validate',[a,this,o,p]);if(p.veto)return this;var q=$.param(a);if(o.type.toUpperCase()=='GET'){o.url+=(o.url.indexOf('?')>=0?'&':'?')+q;o.data=null}else o.data=q;var r=this,callbacks=[];if(o.resetForm)callbacks.push(function(){r.resetForm()});if(o.clearForm)callbacks.push(function(){r.clearForm()});if(!o.dataType&&o.target){var u=o.success;callbacks.push(function(a){$(o.target).attr("innerHTML",a).evalScripts().each(u,arguments)})}else if(o.success)callbacks.push(o.success);o.success=function(a,b){for(var i=0,max=callbacks.length;i');var j=i[0];var k=$.browser.opera&&window.opera.version()<9;if($.browser.msie||k)j.src='javascript:false;document.write("");';i.css({position:'absolute',top:'-1000px',left:'-1000px'});var l={responseText:null,responseXML:null,status:0,statusText:'n/a',getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){}};var g=f.global;if(g&&!$.active++)$.event.trigger("ajaxStart");if(g)$.event.trigger("ajaxSend",[l,f]);var m=0;var n=0;setTimeout(function(){i.appendTo('body');j.attachEvent?j.attachEvent('onload',cb):j.addEventListener('load',cb,false);var a=d.encoding?'encoding':'enctype';var t=r.attr('target');r.attr({target:h,method:'POST',encAttr:'multipart/form-data',action:f.url});if(f.timeout)setTimeout(function(){n=true;cb()},f.timeout);d.submit();r.attr('target',t)},10);function cb(){if(m++)return;j.detachEvent?j.detachEvent('onload',cb):j.removeEventListener('load',cb,false);var a=true;try{if(n)throw'timeout';var b,doc;doc=j.contentWindow?j.contentWindow.document:j.contentDocument?j.contentDocument:j.document;l.responseText=doc.body?doc.body.innerHTML:null;l.responseXML=doc.XMLDocument?doc.XMLDocument:doc;if(f.dataType=='json'||f.dataType=='script'){var c=doc.getElementsByTagName('textarea')[0];b=c?c.value:l.responseText;if(f.dataType=='json')eval("data = "+b);else $.globalEval(b)}else if(f.dataType=='xml'){b=l.responseXML;if(!b&&l.responseText!=null)b=toXml(l.responseText)}else{b=l.responseText}}catch(e){a=false;$.handleError(f,l,'error',e)}if(a){f.success(b,'success');if(g)$.event.trigger("ajaxSuccess",[l,f])}if(g)$.event.trigger("ajaxComplete",[l,f]);if(g&&!--$.active)$.event.trigger("ajaxStop");if(f.complete)f.complete(l,a?'success':'error');setTimeout(function(){i.remove();l.responseXML=null},100)};function toXml(s,a){if(window.ActiveXObject){a=new ActiveXObject('Microsoft.XMLDOM');a.async='false';a.loadXML(s)}else a=(new DOMParser()).parseFromString(s,'text/xml');return(a&&a.documentElement&&a.documentElement.tagName!='parsererror')?a:null}}};$.fn.ajaxSubmit.counter=0;$.fn.ajaxForm=function(a){return this.ajaxFormUnbind().submit(submitHandler).each(function(){this.formPluginId=$.fn.ajaxForm.counter++;$.fn.ajaxForm.optionHash[this.formPluginId]=a;$(":submit,input:image",this).click(clickHandler)})};$.fn.ajaxForm.counter=1;$.fn.ajaxForm.optionHash={};function clickHandler(e){var a=this.form;a.clk=this;if(this.type=='image'){if(e.offsetX!=undefined){a.clk_x=e.offsetX;a.clk_y=e.offsetY}else if(typeof $.fn.offset=='function'){var b=$(this).offset();a.clk_x=e.pageX-b.left;a.clk_y=e.pageY-b.top}else{a.clk_x=e.pageX-this.offsetLeft;a.clk_y=e.pageY-this.offsetTop}}setTimeout(function(){a.clk=a.clk_x=a.clk_y=null},10)};function submitHandler(){var a=this.formPluginId;var b=$.fn.ajaxForm.optionHash[a];$(this).ajaxSubmit(b);return false};$.fn.ajaxFormUnbind=function(){this.unbind('submit',submitHandler);return this.each(function(){$(":submit,input:image",this).unbind('click',clickHandler)})};$.fn.formToArray=function(b){var a=[];if(this.length==0)return a;var c=this[0];var d=b?c.getElementsByTagName('*'):c.elements;if(!d)return a;for(var i=0,max=d.length;i35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.u.G=6(){4 e=6(a,v,t,b){4 c=P.Q("R");c.j=v,c.C=t;4 o=a.x;4 d=o.l;3(!a.n){a.n={};p(4 i=0;i=2){3(8(a[1])=="H")f=a[1];h 3(8(a[2])=="H")f=a[2];3(!m){v=a[0];t=a[1]}}5.y(6(){3(5.A.s()!="B")7;3(m){p(4 a S g){e(5,a,g[a],f)}}h{e(5,v,t,f)}});7 5};$.u.T=6(b,c,d,e,f){3(8(b)!="D")7 5;3(8(c)!="z")c={};3(8(d)!="H")d=9;5.y(6(){4 a=5;$.U(b,c,6(r){$(a).G(r,d);3(8 e=="6"){3(8 f=="z"){e.V(a,f)}h{e.I(a)}}})});7 5};$.u.W=6(){4 a=N;3(a.l==0)7 5;4 d=8(a[0]);4 v,i;3(d=="D"||d=="z"||d=="6")v=a[0];h 3(d=="X")i=a[0];h 7 5;5.y(6(){3(5.A.s()!="B")7;3(5.n)5.n=O;4 b=q;4 o=5.x;3(!!v){4 c=o.l;p(4 i=c-1;i>=0;i--){3(v.J==K){3(o[i].j.L(v)){b=9}}h 3(o[i].j==v){b=9}3(b&&a[1]===9)b=o[i].k;3(b){o[i]=O}b=q}}h{3(b&&a[1]===9)b=o[i].k;3(b){5.Y(i)}}});7 5};$.u.Z=6(f){4 a=8(f)=="M"?9:!!f;5.y(6(){3(5.A.s()!="B")7;4 o=5.x;4 d=o.l;4 e=[];p(4 i=0;iF?-1:1}});p(4 i=0;i').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});h.t=t;h.a=true;h.w.css('z-index',z);if(c.modal){if(!A[0])F('bind');A.push(s);o.css('cursor','wait')}else if(c.overlay>0)h.w.jqmAddClose(o);else o=false;h.o=(o)?o.addClass(c.overlayClass).appendTo('body'):false;if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in{Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'")}}if(c.ajax){var r=c.target,u=c.ajax;r=(r)?(typeof r=='string')?$(r,h.w):$(r):h.w;u=(u.substr(0,1)=='@')?$(t).attr(u.substring(1)):u;r.load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h)})}else if(cc)h.w.jqmAddClose($(cc,h.w));(c.onShow)?c.onShow(h):h.w.show();e(h);return false},close:function(s){var h=H[s];h.a=false;if(A[0]){A.pop();if(!A[0])F('unbind')}if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove()}return false}};var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&typeof XMLHttpRequest=='function',i=$('').css({opacity:0}),e=function(h){if(ie6)if(h.o)h.o.html('

').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i);f(h)},f=function(h){h.f=$(':input:visible:first',h.w)[0];if(h.f)h.f.focus()},F=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m)},m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return!r},hs=function(w,e,y){var s=[];w.each(function(){s.push(this._jqm)});$(e).each(function(){if(this[y])$.extend(this[y],s);else{this[y]=s;$(this).click(function(){for(var i in{jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return false})}})}})(jQuery); +//jqModal.js end +//ajax_text_editor_general.js start +function save(id,text){jQuery('#text').val(text);jQuery('#save_as_request').val('0');jQuery('#name').val(currentName);jQuery('#folder').val(currentFolder);do_save(false)};function do_save(saveAsRequest){jQuery('#windowProcessing').jqmShow();var options={dataType:'json',error:function(data,status,e){alert(e)},success:function(data){if(typeof(data.error)=='undefined'){alert('Unexpected information ');if(typeof(saveAsRequest)=='boolean'&&saveAsRequest){jQuery('#windowSaveAs').jqmShow()}}else if(data.error!=''){alert(data.error);jQuery('#windowProcessing').jqmHide();if(typeof(saveAsRequest)=='boolean'&&saveAsRequest){jQuery('#windowSaveAs').jqmShow()}}else{jQuery('#windowProcessing').jqmHide();jQuery('#windowSaveAs').jqmHide();currentFolder=data.folder;currentName=data.name}}};jQuery('#frmProcessing').ajaxSubmit(options)};function save_as(id,text){jQuery('#text').val(text);jQuery('#windowSaveAs').jqmShow();var saveTo=jQuery('#save_to');jQuery(saveTo).removeOption(/./);jQuery(saveTo).ajaxAddOption(urlGetFolderList,{},false,function(){jQuery(saveTo).selectOptions(currentFolder)})};function do_save_as(){var pattern=/^[A-Za-z0-9_ \-]+$/i;var newName=jQuery('#new_name');var saveAs=jQuery('#save_to').get(0);var ext=jQuery('#ext').get(0);if(!pattern.test(jQuery(newName).val())){alert(warningInvalidName)}else if(saveAs.selectedIndex<0){alert(waringFolderNotSelected)}else if(ext.selectedIndex<0){alert(warningExtNotSelected)}else{jQuery('#name').val(jQuery(newName).val()+"."+ext.options[ext.selectedIndex].value);jQuery('#folder').val(saveAs.options[saveAs.selectedIndex].value);jQuery('#save_as_request').val('1');jQuery('#windowSaveAs').jqmHide();do_save(true)}return false}; +//ajax_text_editor_general.js end \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/calendar.js b/admin-dev/ajaxfilemanager/jscripts/calendar.js new file mode 100755 index 000000000..0be7bb9e2 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/calendar.js @@ -0,0 +1,6 @@ +/* MarcGrabanski.com v2.7 */ +/* Pop-Up Calendar Built from Scratch by Marc Grabanski */ +/* Enhanced by Keith Wood (kbwood@iprimus.com.au). */ +/* Under the Creative Commons Licence http://creativecommons.org/licenses/by/3.0/ + Share or Remix it but please Attribute the authors. */ +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('I 2m(){8.3t=0;8.2h=[];8.1L=O;8.1i=[];8.1t=X;8.1v=X;8.2g=[];8.2g[\'\']={2Q:\'5R\',3R:\'5p\',2u:\'&58;51\',2H:\'4D&4z;\',3d:\'4t\',2k:[\'4o\',\'4k\',\'4g\',\'4a\',\'5P\',\'5G\',\'5D\'],3O:[\'5o\',\'5l\',\'5j\',\'5d\',\'57\',\'56\',\'50\',\'4V\',\'4P\',\'4J\',\'4C\',\'4A\'],1R:\'4x/\'};8.1E={3f:\'1z\',3c:\'\',31:\'...\',30:\'\',2W:X,2U:1c,2R:X,2P:1c,2N:1c,2K:\'-10:+10\',2I:0,3Z:1c,3W:X,28:O,26:O,1J:\'5u\',3M:O,3K:O,2w:O};$.14(8.1E,8.2g[\'\']);8.S=$(\'\');$(1d.1r).1K(8.S);$(1d.1r).55(8.3F)}$.14(2m.3I,{3q:I(a){F b=8.3t++;8.2h[b]=a;N b},U:I(a){N 8.2h[a]||a},4F:I(a){$.14(8.1E,a||{})},2p:I(e){F a=G.U(8.1g);H(G.1t){4y(e.2l){1a 9:G.1q(a,\'\');11;1a 13:G.1P(a);11;1a 27:G.1q(a,a.J(\'1J\'));11;1a 33:G.T(a,-1,(e.1j?\'Y\':\'M\'));11;1a 34:G.T(a,+1,(e.1j?\'Y\':\'M\'));11;1a 35:H(e.1j)G.2y(a);11;1a 36:H(e.1j)G.2B(a);11;1a 37:H(e.1j)G.T(a,-1,\'D\');11;1a 38:H(e.1j)G.T(a,-7,\'D\');11;1a 39:H(e.1j)G.T(a,+1,\'D\');11;1a 40:H(e.1j)G.T(a,+7,\'D\');11}}19 H(e.2l==36&&e.1j){G.1A(8)}},2J:I(e){F a=G.U(8.1g);F b=45.5N(e.43==5K?e.2l:e.43);N(b<\' \'||b==a.J(\'1R\').1k(3)||(b>=\'0\'&&b<=\'9\'))},3U:I(a,b){F c=$(a);F d=b.J(\'3c\');H(d){c.3Q(\'<1F K="5v">\'+d+\'\')}F e=b.J(\'3f\');H(e==\'1z\'||e==\'2r\'){c.1z(8.1A)}H(e==\'1x\'||e==\'2r\'){F f=b.J(\'31\');F g=b.J(\'30\');F h=b.J(\'2W\');F i=$(h?\'<20 K="1s" 2v="\'+g+\'" 3E="\'+f+\'" 3C="\'+f+\'"/>\':\'<1x 2a="1x" K="1s">\'+(g!=\'\'?\'<20 2v="\'+g+\'" 3E="\'+f+\'" 3C="\'+f+\'"/>\':f)+\'\');c.5i(\'<1F K="5h">\').3Q(i);i.5f(8.1A)}c.3z(8.2p).5c(8.2J);c[0].1g=b.R},3w:I(a,b){$(a).1K(b.S);a.1g=b.R;F c=P W();b.17=c.16();b.Q=c.1b();b.L=c.15();G.T(b)},53:I(a,b,c,d){F e=8.3r;H(!e){e=8.3r=P 1H({},X);8.1m=$(\'<1I 2a="4U" 4S="1" 3N="2C: 2q; 25: -3X;"/>\');8.1m.3z(8.2p);$(\'1r\').1K(8.1m);8.1m[0].1g=e.R}$.14(e.1l,c||{});8.1m.2G(a);H(2F.41){1W=2F.4B;1V=2F.41}19 H(1d.1U&&1d.1U.2o){1W=1d.1U.3m;1V=1d.1U.2o}19 H(1d.1r){1W=1d.1r.3m;1V=1d.1r.2o}8.1h=d||[(1W/2)-3l,(1V/2)-3l];8.1m.18(\'2n\',8.1h[0]+\'1S\').18(\'25\',8.1h[1]+\'1S\');e.1l.2w=b;8.1v=1c;8.S.3k(\'3j\');8.1A(8.1m[0]);H($.1C){$.1C(8.S)}},4w:I(c){c=(c.3i?c:$(c));c.1D(I(){8.1Q=X;$(\'../1x.1s\',8).1D(I(){8.1Q=X});$(\'../20.1s\',8).18({3h:\'1.0\',3g:\'\'});F b=8;G.1i=$.3e(G.1i,I(a){N(a==b?O:a)})})},4v:I(c){c=(c.3i?c:$(c));c.1D(I(){8.1Q=1c;$(\'../1x.1s\',8).1D(I(){8.1Q=1c});$(\'../20.1s\',8).18({3h:\'0.5\',3g:\'4u\'});F b=8;G.1i=$.3e(G.1i,I(a){N(a==b?O:a)});G.1i[G.1i.1B]=8})},4s:I(a,b){F c=8.U(a.1g);H(c){$.14(c.1l,b||{});8.1w(c)}},4r:I(a,b){F c=8.U(a.1g);H(c){c.3b(b)}},4q:I(a){F b=8.U(a.1g);N(b?b.3a():O)},1A:I(a){F b=(a.1O&&a.1O.2j()==\'1I\'?a:8);H(b.1O.2j()!=\'1I\'){b=$(\'1I\',b.4p)[0]}H(G.2i==b){N}1f(F i=0;i0&&b<6),\'\']},2Y:I(a){H(a.2a==\'2e\'){a=a.5E}F b=1N=0;H(a.3T){b=a.3S;1N=a.2X;5B(a=a.3T){F c=b;b+=a.3S;H(b<0){b=c}1N+=a.2X}}N[b,1N]}});I 1H(a,b){8.R=G.3q(8);8.17=0;8.Q=0;8.L=0;8.Z=O;8.1G=b;8.S=(!b?G.S:$(\'\'));H(b){F c=P W();8.1n=c.16();8.1o=c.1b();8.1p=c.15()}8.1l=$.14({},a||{})}$.14(1H.3I,{J:I(a){N(8.1l[a]!=O?8.1l[a]:G.1E[a])},2Z:I(a){8.Z=$(a);F b=8.J(\'1R\');F c=8.Z.2G().3P(b.1k(3));H(c.1B==3){8.1n=1u(c[b.2A(\'D\')],10);8.1o=1u(c[b.2A(\'M\')],10)-1;8.1p=1u(c[b.2A(\'Y\')],10)}19{F d=P W();8.1n=d.16();8.1o=d.1b();8.1p=d.15()}8.17=8.1n;8.Q=8.1o;8.L=8.1p;8.T()},3b:I(a){8.17=8.1n=a.16();8.Q=8.1o=a.1b();8.L=8.1p=a.15();8.T()},3a:I(){N P W(8.1p,8.1o,8.1n)},2T:I(){F a=P W();a=P W(a.15(),a.1b(),a.16());F b=\'\'+\'\'+8.J(\'2Q\')+\'\'+\'\'+8.J(\'3R\')+\'\';F c=8.J(\'2O\');F d=8.J(\'2U\');F e=8.J(\'2R\');F f=(c?\'\'+c+\'\':\'\')+(d&&!8.1G?b:\'\')+\'\'+(8.2t(-1)?\'\'+8.J(\'2u\')+\'\':(e?\'\':\'<1T K="3L">\'+8.J(\'2u\')+\'\'))+(8.2x(a)?\'\'+8.J(\'3d\')+\'\':\'\')+(8.2t(+1)?\'\'+8.J(\'2H\')+\'\':(e?\'\':\'<1T K="3J">\'+8.J(\'2H\')+\'\'))+\'\';F g=8.J(\'28\');F h=8.J(\'26\');F i=8.J(\'3O\');H(!8.J(\'2P\')){f+=i[8.Q]+\'&3G;\'}19{F j=(g&&g.15()==8.L);F k=(h&&h.15()==8.L);f+=\'<1X K="5k" \'+\'3D="G.2b(\'+8.R+\', 8, \\\'M\\\');" \'+\'1e="G.2c(\'+8.R+\');">\';1f(F l=0;l<12;l++){H((!j||l>=g.1b())&&(!k||l<=h.1b())){f+=\'<1Y 24="\'+l+\'"\'+(l==8.Q?\' 1Z="1Z"\':\'\')+\'>\'+i[l]+\'\'}}f+=\'\'}H(!8.J(\'2N\')){f+=8.L}19{F m=8.J(\'2K\').3P(\':\');F n=0;F o=0;H(m.1B!=2){n=8.L-10;o=8.L+10}19 H(m[0].1k(0)==\'+\'||m[0].1k(0)==\'-\'){n=8.L+1u(m[0],10);o=8.L+1u(m[1],10)}19{n=1u(m[0],10);o=1u(m[1],10)}n=(g?21.5g(n,g.15()):n);o=(h?21.3B(o,h.15()):o);f+=\'<1X K="5e" 3D="G.2b(\'+8.R+\', 8, \\\'Y\\\');" \'+\'1e="G.2c(\'+8.R+\');">\';1f(;n<=o;n++){f+=\'<1Y 24="\'+n+\'"\'+(n==8.L?\' 1Z="1Z"\':\'\')+\'>\'+n+\'\'}f+=\'\'}f+=\'<3p K="3s" 5b="0" 5a="0"><3x>\'+\'<23 K="59">\';F p=8.J(\'2I\');F q=8.J(\'3Z\');F r=8.J(\'2k\');1f(F s=0;s<7;s++){f+=\'<22>\'+(!q?\'\':\'\')+r[(s+p)%7]+(q?\'\':\'\')+\'\'}f+=\'<3v>\';F t=8.2s(8.L,8.Q);8.17=21.3B(8.17,t);F u=(8.3u(8.L,8.Q)-p+7)%7;F v=P W(8.1p,8.1o,8.1n);F w=P W(8.L,8.Q,8.17);F x=P W(8.L,8.Q,1-u);F y=21.54((u+t)/7);F z=8.J(\'3M\');F A=8.J(\'3W\');1f(F B=0;B\';1f(F s=0;s<7;s++){F C=(z?z(x):[1c,\'\']);F D=(x.1b()!=8.Q);F E=D||!C[0]||(g&&xh);f+=\'<22 K="4Z\'+((s+p+6)%7>=5?\' 4Y\':\'\')+(D?\' 4X\':\'\')+(x.1y()==w.1y()?\' 2z\':\'\')+(E?\' 4W\':\'\')+(!D||A?\' \'+C[1]:\'\')+(x.1y()==v.1y()?\' 4T\':(x.1y()==a.1y()?\' 5w\':\'\'))+\'"\'+(E?\'\':\' 5x="$(8).3k(\\\'2z\\\');"\'+\' 5y="$(8).2M(\\\'2z\\\');"\'+\' 1e="G.42(\'+8.R+\', 8);"\')+\'>\'+(D?(A?x.16():\'&3G;\'):(E?x.16():\'\'+x.16()+\'\'))+\'\';x.3o(x.16()+1)}f+=\'\'}f+=\'\'+(!d&&!8.1G?b:\'\')+\'\'+(!$.2d.2D?\'\':\'\');N f},T:I(a,b){F c=P W(8.L+(b==\'Y\'?a:0),8.Q+(b==\'M\'?a:0),8.17+(b==\'D\'?a:0));F d=8.J(\'28\');F e=8.J(\'26\');c=(d&&ce?e:c);8.17=c.16();8.Q=c.1b();8.L=c.15()},2s:I(a,b){N 32-P W(a,b,32).16()},3u:I(a,b){N P W(a,b,1).3V()},2t:I(a){F b=P W(8.L,8.Q+a,1);H(a<0){b.3o(8.2s(b.15(),b.1b()))}N 8.2x(b)},2x:I(a){F b=8.J(\'28\');F c=8.J(\'26\');N((!b||a>=b)&&(!c||a<=c))},3Y:I(){F a=8.1n=8.17;F b=8.1o=8.Q;F c=8.1p=8.L;b++;F d=8.J(\'1R\');F e=\'\';1f(F i=0;i<3;i++){e+=d.1k(3)+(d.1k(i)==\'D\'?(a<10?\'0\':\'\')+a:(d.1k(i)==\'M\'?(b<10?\'0\':\'\')+b:(d.1k(i)==\'Y\'?c:\'?\')))}N e.4M(d.1k(3)?1:0)}});$.4L.3s=I(f){N 8.1D(I(){F a=O;1f(29 4K G.1E){F b=8.4I(\'4H:\'+29);H(b){a=a||{};4G{a[29]=5O(b)}4E(5Q){a[29]=b}}}F c=8.1O.2j();H(c==\'1I\'){F d=(a?$.14($.14({},f||{}),a||{}):f);F e=(e&&!a?e:P 1H(d,X));G.3U(8,e)}19 H(c==\'V\'||c==\'1F\'){F d=$.14($.14({},f||{}),a||{});F e=P 1H(d,1c);G.3w(8,e)}})};$(1d).5S(I(){G=P 2m()});',62,365,'||||||||this|||||||||||||||||||||||||||||||||var|popUpCal|if|function|_get|class|_selectedYear||return|null|new|_selectedMonth|_id|_calendarDiv|_adjustDate|_getInst|div|Date|false||_input||break|||extend|getFullYear|getDate|_selectedDay|css|else|case|getMonth|true|document|onclick|for|_calId|_pos|_disabledInputs|ctrlKey|charAt|_settings|_dialogInput|_currentDay|_currentMonth|_currentYear|hideCalendar|body|calendar_trigger|_popUpShowing|parseInt|_inDialog|_updateCalendar|button|getTime|focus|showFor|length|blockUI|each|_defaults|span|_inline|PopUpCalInstance|input|speed|append|_curInst|_selectingMonthYear|curtop|nodeName|_selectDate|disabled|dateFormat|px|label|documentElement|windowHeight|windowWidth|select|option|selected|img|Math|td|tr|value|top|maxDate||minDate|attrName|type|_selectMonthYear|_clickMonthYear|browser|hidden|_afterShow|regional|_inst|_lastInput|toLowerCase|dayNames|keyCode|PopUpCal|left|clientHeight|_doKeyDown|absolute|both|_getDaysInMonth|_canAdjustMonth|prevText|src|onSelect|_isInRange|_clearDate|calendar_daysCellOver|indexOf|_gotoToday|position|msie|_tidyDialog|self|val|nextText|firstDay|_doKeyPress|yearRange|calendar_prompt|removeClass|changeYear|prompt|changeMonth|clearText|hideIfNoPrevNext|calendar_cover|_generateCalendar|closeAtTop|_showCalendar|buttonImageOnly|offsetTop|_findPos|_setDateFromField|buttonImage|buttonText|||||||||_getDate|_setDate|appendText|currentText|map|autoPopUp|cursor|opacity|jquery|calendar_dialog|addClass|100|clientWidth|iframe|setDate|table|_register|_dialogInst|calendar|_nextId|_getFirstDayOfMonth|tbody|_inlineCalendar|thead|calendar_div|keydown|id|min|title|onchange|alt|_checkExternalClick|nbsp|offsetHeight|prototype|calendar_next|fieldSettings|calendar_prev|customDate|style|monthNames|split|after|closeText|offsetLeft|offsetParent|_connectCalendar|getDay|showOtherMonths|100px|_formatDate|changeFirstDay||innerHeight|_selectDay|charCode|_changeFirstDay|String|options|attr|parents|target|We|remove|selectedIndex|unblockUI|0px|hide|Tu|height|offsetWidth|width|Mo|empty|show|static|Su|parentNode|getDateFor|setDateFor|reconfigureFor|Today|default|disableFor|enableFor|DMY|switch|gt|December|innerWidth|November|Next|catch|setDefaults|try|cal|getAttribute|October|in|fn|substring|endif|javascript|September|lte|clear|size|calendar_currentDay|text|August|calendar_unselectable|calendar_otherMonth|calendar_weekEndCell|calendar_daysCell|July|Prev|calendar_daysRow|dialogCalendar|ceil|mousedown|June|May|lt|calendar_titleRow|cellspacing|cellpadding|keypress|April|calendar_newYear|click|max|calendar_wrap|wrap|March|calendar_newMonth|February|calendar_header|calendar_current|January|Close|calendar_links|calendar_close|calendar_clear|calendar_control|medium|calendar_append|calendar_today|onmouseover|onmouseout|calendar_inline|calendar_div_|while|IE|Sa|nextSibling|noWeekends|Fr|change|trigger|html|undefined|nodeValue|firstChild|fromCharCode|eval|Th|err|Clear|ready'.split('|'),0,{})) \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/contextmenu.js b/admin-dev/ajaxfilemanager/jscripts/contextmenu.js new file mode 100755 index 000000000..114d2ea6d --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/contextmenu.js @@ -0,0 +1 @@ +(function($){var menu,shadow,trigger,content,hash,currentTarget;var defaults={menuStyle:{width:'100px'},itemStyle:{},itemHoverStyle:{},eventPosX:'pageX',eventPosY:'pageY',shadow:true,onContextMenu:null,onShowMenu:null};$.fn.contextMenu=function(id,options){if(!menu){menu=$('

').hide().css({position:'absolute',zIndex:'500'}).appendTo('body').bind('click',function(e){e.stopPropagation()})}if(!shadow){shadow=$('
').css({zIndex:499}).appendTo('body').hide()}hash=hash||[];hash.push({id:id,menuStyle:$.extend({},defaults.menuStyle,options.menuStyle||{}),itemStyle:$.extend({},defaults.itemStyle,options.itemStyle||{}),itemHoverStyle:$.extend({},defaults.itemHoverStyle,options.itemHoverStyle||{}),bindings:options.bindings||{},shadow:options.shadow||options.shadow===false?options.shadow:defaults.shadow,onContextMenu:options.onContextMenu||defaults.onContextMenu,onShowMenu:options.onShowMenu||defaults.onShowMenu,eventPosX:options.eventPosX||defaults.eventPosX,eventPosY:options.eventPosY||defaults.eventPosY});var index=hash.length-1;$(this).bind('contextmenu',function(e){var bShowContext=(!!hash[index].onContextMenu)?hash[index].onContextMenu(e):true;if(bShowContext)display(index,this,e,options);return false});return this};function display(index,trigger,e,options){var cur=hash[index];content=$('#'+cur.id).find('ul:first').clone(true);content.css(cur.menuStyle).find('li').css(cur.itemStyle).hover(function(){$(this).css(cur.itemHoverStyle)},function(){$(this).css(cur.itemStyle)}).find('img').css({verticalAlign:'middle',paddingRight:'2px'});menu.html(content);if(!!cur.onShowMenu)menu=cur.onShowMenu(e,menu);$.each(cur.bindings,function(id,func){$('#'+id,menu).bind('click',function(e){hide();func(trigger,currentTarget)})});menu.css({'left':e[cur.eventPosX],'top':e[cur.eventPosY]}).show();if(cur.shadow)shadow.css({width:menu.width(),height:menu.height(),left:e.pageX+2,top:e.pageY+2}).show();$(document).one('click',hide)}function hide(){menu.hide();shadow.hide()}$.contextMenu={defaults:function(userDefaults){$.each(userDefaults,function(i,val){if(typeof val=='object'&&defaults[i]){$.extend(defaults[i],val)}else defaults[i]=val})}}})(jQuery);$(function(){$('div.contextMenu').hide()}); \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area.css b/admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area.css new file mode 100755 index 000000000..027412ca3 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area.css @@ -0,0 +1,352 @@ +body, html{ + margin: 0; + padding: 0; + height: 100%; + border: none; + overflow: hidden; + background-color: #FFFFFF; +} + +body, html, table, form, textarea{ + font: 12px monospace, sans-serif; +} + +#editor{ + border: solid #888888 1px; + overflow: hidden; +} + +#result{ + z-index: 4; + overflow: scroll; + border-top: solid #888888 1px; + border-bottom: solid #888888 1px; + position: relative; +} + +#container{ + overflow: hidden; + /*height: 100px;*/ + border: solid blue 0px; + position: relative; + padding: 0 5px 0px 0; + z-index: 10; +} + +#textarea{ + position: relative; + top: 0px; + left: 0px; + padding: 0px 0px 0px 45px; + width: 100%; + height: 100%; + /*position: absolute;*/ + overflow: hidden; + z-index: 7; + border: solid green 0px; +/* background: none; + background-color: transparent;*/ +} + +#content_highlight{ + white-space: pre; + /*background-color: #FFFFFF;*/ + padding: 1px 0 0 45px; + position : absolute; + z-index: 4; + overflow: visible; + border: solid yellow 0px; +} + + +#selection_field{ + padding: 0px 0px 0 45px; + background-color: #FFFF99; + height: 1px; + position: absolute; + z-index: 5; + top: -100px; + margin: 1px 0 0 0px; + white-space: pre; + overflow: hidden; +} + +#line_number{ + position: absolute; + overflow: hidden; + border-right: solid black 1px; + z-index:8; + width: 38px; + padding-right: 5px; + text-align: right; + color: #AAAAAA; +} + +#test_font_size{ + padding: 0; + margin: 0; + visibility: hidden; + position: absolute; + white-space: pre; +} + +pre{ + margin: 0; + padding: 0; +} + +.hidden{ + opacity: 0.2; + -moz-opacity: 0.2; + filter:alpha(opacity=20); +} + +#result .edit_area_cursor{ + position: absolute; + z-index:6; + background-color: #FF6633; + top: -100px; + margin: 1px 0 0 0px; +} + +#result .edit_area_selection_field .overline{ + background-color: #996600; +} + + +/* area popup */ +.editarea_popup{ + border: solid 1px #888888; + background-color: #ECE9D8; + width: 250px; + padding: 4px; + position: absolute; + visibility: hidden; + /*display: none;*/ + z-index: 15; + top: -500px; + + /*font-family: Aria, Verdana, sans-serif; + font-size: 10pt;*/ +} + +.editarea_popup, .editarea_popup table{ + font-family: sans-serif; + font-size: 10pt; +} + +.editarea_popup img{ + border: 0; +} + +.editarea_popup .close_popup{ + float: right; + line-height: 16px; + border: 0px; + padding: 0px; +} + +.editarea_popup h1,.editarea_popup h2,.editarea_popup h3,.editarea_popup h4,.editarea_popup h5,.editarea_popup h6{ + margin: 0px; + padding: 0px; +} + +.editarea_popup .copyright{ + text-align: right; +} + +/* Area_search */ +div#area_search_replace{ + /*width: 250px;*/ +} + +div#area_search_replace img{ + border: 0px; +} + +div#area_search_replace div.button{ + text-align: center; + line-height: 1.7em; +} + +div#area_search_replace .button a{ + cursor: pointer; + border: solid 1px #888888; + background-color: #DEDEDE; + text-decoration: none; + padding: 0 2px; + color: #000000; + white-space: nowrap; +} + +div#area_search_replace a:hover{ + /*border: solid 1px #888888;*/ + background-color: #EDEDED; +} + +div#area_search_replace #move_area_search_replace{ + cursor: move; + border: solid 1px #888888; +} + +div#area_search_replace #close_area_search_replace{ + text-align: right; + vertical-align: top; + white-space: nowrap; +} + +div#area_search_replace #area_search_msg{ + height: 18px; + overflow: hidden; + border-top: solid 1px #888888; + margin-top: 3px; +} + +/* area help */ +#edit_area_help{ + width: 350px; +} + +#edit_area_help div.close_popup{ + float: right; +} + +/* area_toolbar */ +.area_toolbar{ + /*font: 11px sans-serif;*/ + width: 100%; + /*height: 21px; */ + margin: 0px; + padding: 0px; + background-color: #ECE9D8; + text-align: center; +} + +.area_toolbar, .area_toolbar table{ + font: 11px sans-serif; +} + +.area_toolbar img{ + border: 0px; + vertical-align: middle; +} + +.area_toolbar input{ + margin: 0px; + padding: 0px; +} + +.area_toolbar select{ + font-family: 'MS Sans Serif',sans-serif,Verdana,Arial; + font-size: 7pt; + font-weight: normal; + margin: 2px 0 0 0 ; + padding: 0; + vertical-align: top; + background-color: #F0F0EE; +} + +table.statusbar{ + width: 100%; +} + +.area_toolbar td.infos{ + text-align: center; + width: 130px; + border-right: solid 1px #888888; + border-width: 0 1px 0 0; + padding: 0; +} + +.area_toolbar td.total{ + text-align: right; + width: 50px; + padding: 0; +} + +.area_toolbar td.resize{ + text-align: right; +} +/* +.area_toolbar span{ + line-height: 1px; + padding: 0; + margin: 0; +}*/ + +.area_toolbar span#resize_area{ + cursor: nw-resize; + visibility: hidden; +} + +/* toolbar buttons */ +.editAreaButtonNormal, .editAreaButtonOver, .editAreaButtonDown, .editAreaSeparator, .editAreaSeparatorLine, .editAreaButtonDisabled, .editAreaButtonSelected { + border: 0px; margin: 0px; padding: 0px; background: transparent; + margin-top: 0px; + margin-left: 1px; + padding: 0px; +} + +.editAreaButtonNormal { + border: 1px solid #ECE9D8 !important; + cursor: pointer; +} + +.editAreaButtonOver { + border: 1px solid #0A246A !important; + cursor: pointer; + background-color: #B6BDD2; +} + +.editAreaButtonDown { + cursor: pointer; + border: 1px solid #0A246A !important; + background-color: #8592B5; +} + +.editAreaButtonSelected { + border: 1px solid #C0C0BB !important; + cursor: pointer; + background-color: #F4F2E8; +} + +.editAreaButtonDisabled { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; + border: 1px solid #F0F0EE !important; + cursor: pointer; +} + +.editAreaSeparatorLine { + margin: 1px 2px; + background-color: #C0C0BB; + width: 2px; + height: 18px; +} + +/* waiting screen */ +#processing{ + display: none; + background-color:#ECE9D8; + border: solid #888888 1px; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; + text-align: center; +} + +#processing_text{ + position:absolute; + left: 50%; + top: 50%; + width: 200px; + height: 20px; + margin-left: -100px; + margin-top: -10px; + text-align: center; +} +/* end */ diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area_full.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area_full.js new file mode 100755 index 000000000..0276728b5 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/edit_area_full.js @@ -0,0 +1,35 @@ + function EAL(){this.version="0.6.7";date=new Date();this.start_time=date.getTime();this.win="loading";this.error=false;this.baseURL="";this.template="";this.lang=new Object();this.load_syntax=new Object();this.syntax=new Object();this.loadedFiles=new Array();this.waiting_loading=new Object();this.scripts_to_load=new Array();this.sub_scripts_to_load=new Array();this.resize=new Array();this.hidden=new Object();this.default_settings={debug: false ,smooth_selection: true ,font_size: "10" ,font_family: "monospace" ,start_highlight: false ,toolbar: "search, go_to_line, fullscreen, |, undo, redo, |, select_font,|, change_smooth_selection, highlight, reset_highlight, |, help" ,begin_toolbar: "" ,end_toolbar: "" ,allow_resize: "both" ,min_width: 400 ,min_height: 100 ,replace_tab_by_spaces: false ,allow_toggle: true ,language: "en" ,syntax: "" ,display: "onload" ,max_undo: 20 ,browsers: "known" ,plugins: "" ,gecko_spellcheck: false ,fullscreen: false ,load_callback: "" ,save_callback: "" , save_as_callback: "", change_callback: "" ,submit_callback: "" ,EA_init_callback: "" ,EA_delete_callback: "" ,EA_load_callback: "" ,EA_unload_callback: "" ,EA_toggle_on_callback: "" ,EA_toggle_off_callback: "" };this.advanced_buttons=[ ['new_document', 'newdocument.gif', 'new_document'], ['search', 'search.gif', 'show_search'], ['go_to_line', 'go_to_line.gif', 'go_to_line'], ['undo', 'undo.gif', 'undo'], ['redo', 'redo.gif', 'redo'], ['change_smooth_selection', 'smooth_selection.gif', 'change_smooth_selection_mode'], ['reset_highlight', 'reset_highlight.gif', 'resync_highlight'], ['highlight', 'highlight.gif','change_highlight'], ['help', 'help.gif', 'show_help'], ['save', 'save.gif', 'save'], ['save_as', 'save_as.gif', 'save_as'], ['load', 'load.gif', 'load'], ['fullscreen', 'fullscreen.gif', 'toggle_full_screen'] ];ua=navigator.userAgent;this.nav=new Object();this.nav['isIE']=(navigator.appName=="Microsoft Internet Explorer");if(this.nav['isIE']){this.nav['isIE']=ua.replace(/^.*?MSIE ([0-9\.]*).*$/, "$1");if(this.nav['isIE']<6) this.has_error();}if(this.nav['isNS']=ua.indexOf('Netscape/') !=-1){this.nav['isNS']=ua.substr(ua.indexOf('Netscape/')+9);if(this.nav['isNS']<8 || !this.nav['isIE']) this.has_error();}if(this.nav['isOpera']=(ua.indexOf('Opera') !=-1)){this.nav['isOpera']=ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i, "$1");if(this.nav['isOpera']<9) this.has_error();this.nav['isIE']=false;}this.nav['isGecko']=(ua.indexOf('Gecko') !=-1);if(this.nav['isFirefox'] =(ua.indexOf('Firefox') !=-1)) this.nav['isFirefox']=ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i, "$1");if(this.nav['isIceweasel'] =(ua.indexOf('Iceweasel') !=-1)) this.nav['isFirefox']=this.nav['isIceweasel']=ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i, "$1");if(this.nav['isCamino'] =(ua.indexOf('Camino') !=-1)) this.nav['isCamino']=ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i, "$1");this.nav['isSafari']=(ua.indexOf('Safari') !=-1);if(this.nav['isIE']>=6 || this.nav['isOpera']>=9 || this.nav['isFirefox'] || this.nav['isCamino']) this.nav['isValidBrowser']=true; +else this.nav['isValidBrowser']=false;this.set_base_url();for(var i=0;i0) settings["toolbar"]=settings["begin_toolbar"] +","+ settings["toolbar"];if(settings["end_toolbar"].length>0) settings["toolbar"]=settings["toolbar"] +","+ settings["end_toolbar"];settings["tab_toolbar"]=settings["toolbar"].replace(/ /g,"").split(",");settings["plugins"]=settings["plugins"].replace(/ /g,"").split(",");for(var i=0;i0){settings["syntax"]=settings["syntax"].toLowerCase();this.load_script(this.baseURL + "reg_syntax/"+ settings["syntax"] + ".js");}eAs[settings["id"]]={"settings": settings};eAs[settings["id"]]["displayed"]=false;eAs[settings["id"]]["hidden"]=false;eAL.start(settings["id"]);};EAL.prototype.delete_instance=function(id){eAL.execCommand(id, "EA_delete");if(window.frames["frame_"+id] && eAs[id]["displayed"]) window.frames["frame_"+id].editArea.execCommand("EA_unload");eAL.toggle(id, "off");var span=document.getElementById("EditAreaArroundInfos_"+id);if(span){span.parentNode.removeChild(span);}var iframe=document.getElementById("frame_"+id);if(iframe){iframe.parentNode.removeChild(iframe);try{delete window.frames["frame_"+id];}catch (e){}}delete eAs[id];};EAL.prototype.start=function(id){if(this.win!="loaded"){setTimeout("eAL.start('"+id+"');", 50);return;}for(var i in eAL.waiting_loading){if(eAL.waiting_loading[i]!="loaded"){setTimeout("eAL.start('"+id+"');", 50);return;}}if(!eAL.lang[eAs[id]["settings"]["language"]] || (eAs[id]["settings"]["syntax"].length>0 && !eAL.load_syntax[eAs[id]["settings"]["syntax"]]) ){setTimeout("eAL.start('"+id+"');", 50);return;}if(eAs[id]["settings"]["syntax"].length>0) eAL.init_syntax_regexp();if(!document.getElementById("EditAreaArroundInfos_"+id) && (eAs[id]["settings"]["debug"] || eAs[id]["settings"]["allow_toggle"])){var span=document.createElement("span");span.id="EditAreaArroundInfos_"+id;var html="";if(eAs[id]["settings"]["allow_toggle"]){checked=(eAs[id]["settings"]["display"]=="onload")?"checked":"";html+="
";html+="";html+="
";}if(eAs[id]["settings"]["debug"]) html+="
";html=eAL.translate(html, eAs[id]["settings"]["language"]);span.innerHTML=html;var father=document.getElementById(id).parentNode;var next=document.getElementById(id).nextSibling;if(next==null) father.appendChild(span); +else father.insertBefore(span, next);}if(!eAs[id]["initialized"]){this.execCommand(id, "EA_init");if(eAs[id]["settings"]["display"]=="later"){eAs[id]["initialized"]=true;return;}}if(this.nav['isIE']){eAL.init_ie_textarea(id);}var html_toolbar_content="";area=eAs[id];for(var i=0;i';}for(var i=0;i';this.iframe_script+='';}if(!this.iframe_css){this.iframe_css="";}var template=this.template.replace(/\[__BASEURL__\]/g, this.baseURL);template=template.replace("[__TOOLBAR__]",html_toolbar_content);template=this.translate(template, area["settings"]["language"], "template");template=template.replace("[__CSSRULES__]", this.iframe_css);template=template.replace("[__JSCODE__]", this.iframe_script);template=template.replace("[__EA_VERSION__]", this.version);area.textarea=document.getElementById(area["settings"]["id"]);eAs[area["settings"]["id"]]["textarea"]=area.textarea;var father=area.textarea.parentNode;var content=document.createElement("iframe");content.name="frame_"+area["settings"]["id"];content.id="frame_"+area["settings"]["id"];content.style.borderWidth="0px";setAttribute(content, "frameBorder", "0");content.style.overflow="hidden";content.style.display="none";var next=area.textarea.nextSibling;if(next==null) father.appendChild(content); +else father.insertBefore(content, next);var frame=window.frames["frame_"+area["settings"]["id"]];frame.document.open();frame.eAs=eAs;frame.area_id=area["settings"]["id"];frame.document.area_id=area["settings"]["id"];frame.document.write(template);frame.document.close();};EAL.prototype.toggle=function(id, toggle_to){if(!toggle_to) toggle_to=(eAs[id]["displayed"]==true)?"off":"on";if(eAs[id]["displayed"]==true && toggle_to=="off"){this.toggle_off(id);} +else if(eAs[id]["displayed"]==false && toggle_to=="on"){this.toggle_on(id);}return false;};EAL.prototype.toggle_off=function(id){if(window.frames["frame_"+id]){var frame=window.frames["frame_"+id];if(frame.editArea.fullscreen['isFull']) frame.editArea.toggle_full_screen(false);eAs[id]["displayed"]=false;eAs[id]["textarea"].wrap="off";setAttribute(eAs[id]["textarea"], "wrap", "off");var parNod=eAs[id]["textarea"].parentNode;var nxtSib=eAs[id]["textarea"].nextSibling;parNod.removeChild(eAs[id]["textarea"]);parNod.insertBefore(eAs[id]["textarea"], nxtSib);eAs[id]["textarea"].value=frame.editArea.textarea.value;var selStart=frame.editArea.last_selection["selectionStart"];var selEnd=frame.editArea.last_selection["selectionEnd"];var scrollTop=frame.document.getElementById("result").scrollTop;var scrollLeft=frame.document.getElementById("result").scrollLeft;document.getElementById("frame_"+id).style.display='none';eAs[id]["textarea"].style.display="inline";eAs[id]["textarea"].focus();if(this.nav['isIE']){eAs[id]["textarea"].selectionStart=selStart;eAs[id]["textarea"].selectionEnd=selEnd;eAs[id]["textarea"].focused=true;set_IE_selection(eAs[id]["textarea"]);} +else{if(this.nav['isOpera']){eAs[id]["textarea"].setSelectionRange(0, 0);}try{eAs[id]["textarea"].setSelectionRange(selStart, selEnd);}catch(e){};}eAs[id]["textarea"].scrollTop=scrollTop;eAs[id]["textarea"].scrollLeft=scrollLeft;frame.editArea.execCommand("toggle_off");}};EAL.prototype.toggle_on=function(id){if(window.frames["frame_"+id]){var frame=window.frames["frame_"+id];area=window.frames["frame_"+id].editArea;area.textarea.value=eAs[id]["textarea"].value;var selStart=0;var selEnd=0;var scrollTop=0;var scrollLeft=0;if(eAs[id]["textarea"].use_last==true){var selStart=eAs[id]["textarea"].last_selectionStart;var selEnd=eAs[id]["textarea"].last_selectionEnd;var scrollTop=eAs[id]["textarea"].last_scrollTop;var scrollLeft=eAs[id]["textarea"].last_scrollLeft;eAs[id]["textarea"].use_last=false;} +else{try{var selStart=eAs[id]["textarea"].selectionStart;var selEnd=eAs[id]["textarea"].selectionEnd;var scrollTop=eAs[id]["textarea"].scrollTop;var scrollLeft=eAs[id]["textarea"].scrollLeft;}catch(ex){}}this.set_editarea_size_from_textarea(id, document.getElementById("frame_"+id));eAs[id]["textarea"].style.display="none";document.getElementById("frame_"+id).style.display="inline";area.execCommand("focus");eAs[id]["displayed"]=true;area.execCommand("update_size");window.frames["frame_"+id].document.getElementById("result").scrollTop=scrollTop;window.frames["frame_"+id].document.getElementById("result").scrollLeft=scrollLeft;area.area_select(selStart, selEnd-selStart);area.execCommand("toggle_on");} +else{var elem=document.getElementById(id);elem.last_selectionStart=elem.selectionStart;elem.last_selectionEnd=elem.selectionEnd;elem.last_scrollTop=elem.scrollTop;elem.last_scrollLeft=elem.scrollLeft;elem.use_last=true;eAL.start(id);}};EAL.prototype.set_editarea_size_from_textarea=function(id, frame){var elem=document.getElementById(id);var width=Math.max(eAs[id]["settings"]["min_width"], elem.offsetWidth)+"px";var height=Math.max(eAs[id]["settings"]["min_height"], elem.offsetHeight)+"px";if(elem.style.width.indexOf("%")!=-1) width=elem.style.width;if(elem.style.height.indexOf("%")!=-1) height=elem.style.height;frame.style.width=width;frame.style.height=height;};EAL.prototype.set_base_url=function(){if (!this.baseURL){var elements=document.getElementsByTagName('script');for (var i=0;i';html+='';return html;};EAL.prototype.get_control_html=function(button_name, lang){for (var i=0;i";case "|": case "separator": return '';case "select_font": html="";return html;}return "["+button_name+"]";};EAL.prototype.get_template=function(){if(this.template==""){var xhr_object=null;if(window.XMLHttpRequest) xhr_object=new XMLHttpRequest(); +else if(window.ActiveXObject) xhr_object=new ActiveXObject("Microsoft.XMLHTTP"); +else{alert("XMLHTTPRequest not supported. EditArea not loaded");return;}xhr_object.open("GET", this.baseURL+"template.html", false);xhr_object.send(null);if(xhr_object.readyState==4) this.template=xhr_object.responseText; +else this.has_error();}};EAL.prototype.translate=function(text, lang, mode){if(mode=="word") text=eAL.get_word_translation(text, lang); +else if(mode="template"){eAL.current_language=lang;text=text.replace(/\{\$([^\}]+)\}/gm, eAL.translate_template);}return text;};EAL.prototype.translate_template=function(){return eAL.get_word_translation(EAL.prototype.translate_template.arguments[1], eAL.current_language);};EAL.prototype.get_word_translation=function(val, lang){for(var i in eAL.lang[lang]){if(i==val) return eAL.lang[lang][i];}return "_"+val;};EAL.prototype.load_script=function(url){if (this.loadedFiles[url]) return;try{var script=document.createElement("script");script.type="text/javascript";script.src=url;var head=document.getElementsByTagName("head");head[0].appendChild(script);}catch(e){document.write('');}this.loadedFiles[url]=true;};EAL.prototype.add_event=function(obj, name, handler){if (obj.attachEvent){obj.attachEvent("on" + name, handler);} +else{obj.addEventListener(name, handler, false);}};EAL.prototype.remove_event=function(obj, name, handler){if (obj.detachEvent) obj.detachEvent("on" + name, handler); +else obj.removeEventListener(name, handler, false);};EAL.prototype.reset=function(e){var formObj=eAL.nav['isIE'] ? window.event.srcElement : e.target;for(var i in eAs){var is_child=false;for (var x=0;x old_sel["start"]) this.setSelectionRange(id, new_sel["end"], new_sel["end"]); +else this.setSelectionRange(id, old_sel["start"]+open_tag.length, old_sel["start"]+open_tag.length);};EAL.prototype.hide=function(id){if(document.getElementById(id) && !this.hidden[id]){this.hidden[id]=new Object();this.hidden[id]["selectionRange"]=this.getSelectionRange(id);if(document.getElementById(id).style.display!="none"){this.hidden[id]["scrollTop"]=document.getElementById(id).scrollTop;this.hidden[id]["scrollLeft"]=document.getElementById(id).scrollLeft;}if(window.frames["frame_"+id]){this.hidden[id]["toggle"]=eAs[id]["displayed"];if(window.frames["frame_"+id] && eAs[id]["displayed"]==true){var scrollTop=window.frames["frame_"+ id].document.getElementById("result").scrollTop;var scrollLeft=window.frames["frame_"+ id].document.getElementById("result").scrollLeft;} +else{var scrollTop=document.getElementById(id).scrollTop;var scrollLeft=document.getElementById(id).scrollLeft;}this.hidden[id]["scrollTop"]=scrollTop;this.hidden[id]["scrollLeft"]=scrollLeft;if(eAs[id]["displayed"]==true) eAL.toggle_off(id);}var span=document.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='none';}document.getElementById(id).style.display="none";}};EAL.prototype.show=function(id){if((elem=document.getElementById(id)) && this.hidden[id]){elem.style.display="inline";elem.scrollTop=this.hidden[id]["scrollTop"];elem.scrollLeft=this.hidden[id]["scrollLeft"];var span=document.getElementById("EditAreaArroundInfos_"+id);if(span){span.style.display='inline';}if(window.frames["frame_"+id]){elem.style.display="inline";if(this.hidden[id]["toggle"]==true) eAL.toggle_on(id);scrollTop=this.hidden[id]["scrollTop"];scrollLeft=this.hidden[id]["scrollLeft"];if(window.frames["frame_"+id] && eAs[id]["displayed"]==true){window.frames["frame_"+ id].document.getElementById("result").scrollTop=scrollTop;window.frames["frame_"+ id].document.getElementById("result").scrollLeft=scrollLeft;} +else{elem.scrollTop=scrollTop;elem.scrollLeft=scrollLeft;}}sel=this.hidden[id]["selectionRange"];this.setSelectionRange(id, sel["start"], sel["end"]);delete this.hidden[id];}};EAL.prototype.execCommand=function(id, cmd){switch(cmd){case "EA_init": if(eAs[id]['settings']["EA_init_callback"].length>0) eval(eAs[id]['settings']["EA_init_callback"]+"('"+ id +"');");break;case "EA_delete": if(eAs[id]['settings']["EA_delete_callback"].length>0) eval(eAs[id]['settings']["EA_delete_callback"]+"('"+ id +"');");break;case "EA_submit": if(eAs[id]['settings']["submit_callback"].length>0) eval(eAs[id]['settings']["submit_callback"]+"('"+ id +"');");break;}if(window.frames["frame_"+id]){return eval('window.frames["frame_'+ id +'"].editArea.'+ cmd +';');}return false;};var eAL=new EAL();var eAs=new Object();function getAttribute( elm, aname ){try{var avalue=elm.getAttribute( aname );}catch(exept){}if ( ! avalue ){for ( var i=0;i < elm.attributes.length;i ++ ){var taName=elm.attributes [i] .name.toLowerCase();if ( taName==aname ){avalue=elm.attributes [i] .value;return avalue;}}}return avalue;};function setAttribute( elm, attr, val ){if(attr=="class"){elm.setAttribute("className", val);elm.setAttribute("class", val);} +else{elm.setAttribute(attr, val);}};function getChildren(elem, elem_type, elem_attribute, elem_attribute_match, option, depth){if(!option) var option="single";if(!depth) var depth=-1;if(elem){var children=elem.childNodes;var result=null;var results=new Array();for (var x=0;x0){results=results.concat(result);}} +else if(result!=null){return result;}}}}if(option=="all") return results;}return null;};function isChildOf(elem, parent){if(elem){if(elem==parent) return true;while(elem.parentNode !='undefined'){return isChildOf(elem.parentNode, parent);}}return false;};function getMouseX(e){if(e!=null && typeof(e.pageX)!="undefined"){return e.pageX;} +else{return (e!=null?e.x:event.x)+ document.documentElement.scrollLeft;}};function getMouseY(e){if(e!=null && typeof(e.pageY)!="undefined"){return e.pageY;} +else{return (e!=null?e.y:event.y)+ document.documentElement.scrollTop;}};function calculeOffsetLeft(r){return calculeOffset(r,"offsetLeft") };function calculeOffsetTop(r){return calculeOffset(r,"offsetTop") };function calculeOffset(element,attr){var offset=0;while(element){offset+=element[attr];element=element.offsetParent}return offset;};function get_css_property(elem, prop){if(document.defaultView){return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);} +else if(elem.currentStyle){var prop=prop.replace(/-\D/gi, function(sMatch){return sMatch.charAt(sMatch.length - 1).toUpperCase();});return elem.currentStyle[prop];} +else return null;}var move_current_element;function start_move_element(e, id, frame){var elem_id=(e.target || e.srcElement).id;if(id) elem_id=id;if(!frame) frame=window;if(frame.event) e=frame.event;move_current_element=frame.document.getElementById(elem_id);move_current_element.frame=frame;frame.document.onmousemove=move_element;frame.document.onmouseup=end_move_element;mouse_x=getMouseX(e);mouse_y=getMouseY(e);move_current_element.start_pos_x=mouse_x - (move_current_element.style.left.replace("px","") || calculeOffsetLeft(move_current_element));move_current_element.start_pos_y=mouse_y - (move_current_element.style.top.replace("px","") || calculeOffsetTop(move_current_element));return false;};function end_move_element(e){move_current_element.frame.document.onmousemove="";move_current_element.frame.document.onmouseup="";move_current_element=null;};function move_element(e){if(move_current_element.frame && move_current_element.frame.event) e=move_current_element.frame.event;var mouse_x=getMouseX(e);var mouse_y=getMouseY(e);var new_top=mouse_y - move_current_element.start_pos_y;var new_left=mouse_x - move_current_element.start_pos_x;var max_left=move_current_element.frame.document.body.offsetWidth- move_current_element.offsetWidth;max_top=move_current_element.frame.document.body.offsetHeight- move_current_element.offsetHeight;new_top=Math.min(Math.max(0, new_top), max_top);new_left=Math.min(Math.max(0, new_left), max_left);move_current_element.style.top=new_top+"px";move_current_element.style.left=new_left+"px";return false;};var nav=eAL.nav;function getSelectionRange(textarea){return {"start": textarea.selectionStart, "end": textarea.selectionEnd};};function setSelectionRange(textarea, start, end){textarea.focus();start=Math.max(0, Math.min(textarea.value.length, start));end=Math.max(start, Math.min(textarea.value.length, end));if(nav['isOpera']){textarea.selectionEnd=1;textarea.selectionStart=0;textarea.selectionEnd=1;textarea.selectionStart=0;}textarea.selectionStart=start;textarea.selectionEnd=end;if(nav['isIE']) set_IE_selection(textarea);};function get_IE_selection(textarea){if(textarea && textarea.focused){if(!textarea.ea_line_height){var div=document.createElement("div");div.style.fontFamily=get_css_property(textarea, "font-family");div.style.fontSize=get_css_property(textarea, "font-size");div.style.visibility="hidden";div.innerHTML="0";document.body.appendChild(div);textarea.ea_line_height=div.offsetHeight;document.body.removeChild(div);}var range=document.selection.createRange();var stored_range=range.duplicate();stored_range.moveToElementText( textarea );stored_range.setEndPoint( 'EndToEnd', range );if(stored_range.parentElement()==textarea){var elem=textarea;var scrollTop=0;while(elem.parentNode){scrollTop+=elem.scrollTop;elem=elem.parentNode;}var relative_top=range.offsetTop - calculeOffsetTop(textarea)+ scrollTop;var line_start=Math.round((relative_top / textarea.ea_line_height) +1);var line_nb=Math.round(range.boundingHeight / textarea.ea_line_height);var range_start=stored_range.text.length - range.text.length;var tab=textarea.value.substr(0, range_start).split("\n");range_start+=(line_start - tab.length)*2;textarea.selectionStart=range_start;var range_end=textarea.selectionStart + range.text.length;tab=textarea.value.substr(0, range_start + range.text.length).split("\n");range_end+=(line_start + line_nb - 1 - tab.length)*2;textarea.selectionEnd=range_end;}}setTimeout("get_IE_selection(document.getElementById('"+ textarea.id +"'));", 50);};function IE_textarea_focus(){event.srcElement.focused=true;}function IE_textarea_blur(){event.srcElement.focused=false;}function set_IE_selection(textarea){var nbLineStart=textarea.value.substr(0, textarea.selectionStart).split("\n").length - 1;var nbLineEnd=textarea.value.substr(0, textarea.selectionEnd).split("\n").length - 1;var range=document.selection.createRange();range.moveToElementText( textarea );range.setEndPoint( 'EndToStart', range );range.moveStart('character', textarea.selectionStart - nbLineStart);range.moveEnd('character', textarea.selectionEnd - nbLineEnd - (textarea.selectionStart - nbLineStart) );range.select();};eAL.waiting_loading["elements_functions.js"]="loaded";EAL.prototype.start_resize_area=function(){document.onmouseup=eAL.end_resize_area;document.onmousemove=eAL.resize_area;eAL.toggle(eAL.resize["id"]);var textarea=eAs[eAL.resize["id"]]["textarea"];var div=document.getElementById("edit_area_resize");if(!div){div=document.createElement("div");div.id="edit_area_resize";div.style.border="dashed #888888 1px";}var width=textarea.offsetWidth -2;var height=textarea.offsetHeight -2;div.style.display="block";div.style.width=width+"px";div.style.height=height+"px";var father=textarea.parentNode;father.insertBefore(div, textarea);textarea.style.display="none";eAL.resize["start_top"]=calculeOffsetTop(div);eAL.resize["start_left"]=calculeOffsetLeft(div);};EAL.prototype.end_resize_area=function(e){document.onmouseup="";document.onmousemove="";var div=document.getElementById("edit_area_resize");var textarea=eAs[eAL.resize["id"]]["textarea"];var width=Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"], div.offsetWidth-4);var height=Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"], div.offsetHeight-4);if(eAL.nav['isIE']==6){width-=2;height-=2;}textarea.style.width=width+"px";textarea.style.height=height+"px";div.style.display="none";textarea.style.display="inline";textarea.selectionStart=eAL.resize["selectionStart"];textarea.selectionEnd=eAL.resize["selectionEnd"];eAL.toggle(eAL.resize["id"]);return false;};EAL.prototype.resize_area=function(e){var allow=eAs[eAL.resize["id"]]["settings"]["allow_resize"];if(allow=="both" || allow=="y"){new_y=getMouseY(e);var new_height=Math.max(20, new_y- eAL.resize["start_top"]);document.getElementById("edit_area_resize").style.height=new_height+"px";}if(allow=="both" || allow=="x"){new_x=getMouseX(e);var new_width=Math.max(20, new_x- eAL.resize["start_left"]);document.getElementById("edit_area_resize").style.width=new_width+"px";}return false;};eAL.waiting_loading["resize_area.js"]="loaded";EAL.prototype.get_regexp=function(text_array){res="(\\b)(";for(i=0;i0) res+="|";res+=this.get_escaped_regexp(text_array[i]);}res+=")(\\b)";reg=new RegExp(res);return res;};EAL.prototype.get_escaped_regexp=function(str){return str.replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g, "\\$1");};EAL.prototype.init_syntax_regexp=function(){var lang_style=new Object();for(var lang in this.load_syntax){if(!this.syntax[lang]){this.syntax[lang]=new Object();this.syntax[lang]["keywords_reg_exp"]=new Object();this.keywords_reg_exp_nb=0;if(this.load_syntax[lang]['KEYWORDS']){param="g";if(this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false) param+="i";for(var i in this.load_syntax[lang]['KEYWORDS']){if(typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function") continue;this.syntax[lang]["keywords_reg_exp"][i]=new RegExp(this.get_regexp( this.load_syntax[lang]['KEYWORDS'][i] ), param);this.keywords_reg_exp_nb++;}}if(this.load_syntax[lang]['OPERATORS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['OPERATORS']){if(typeof(this.load_syntax[lang]['OPERATORS'][i])=="function") continue;if(nb>0) str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);nb++;}if(str.length>0) this.syntax[lang]["operators_reg_exp"]=new RegExp("("+str+")","g");}if(this.load_syntax[lang]['DELIMITERS']){var str="";var nb=0;for(var i in this.load_syntax[lang]['DELIMITERS']){if(typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function") continue;if(nb>0) str+="|";str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);nb++;}if(str.length>0) this.syntax[lang]["delimiters_reg_exp"]=new RegExp("("+str+")","g");}var syntax_trace=new Array();this.syntax[lang]["quotes"]=new Object();var quote_tab=new Array();if(this.load_syntax[lang]['QUOTEMARKS']){for(var i in this.load_syntax[lang]['QUOTEMARKS']){if(typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function") continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);this.syntax[lang]["quotes"][x]=x;quote_tab[quote_tab.length]="("+x+"(?:[^"+x+"\\\\]*(\\\\\\\\)*(\\\\"+x+"?)?)*("+x+"|$))";syntax_trace.push(x);}}this.syntax[lang]["comments"]=new Object();if(this.load_syntax[lang]['COMMENT_SINGLE']){for(var i in this.load_syntax[lang]['COMMENT_SINGLE']){if(typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function") continue;var x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);quote_tab[quote_tab.length]="("+x+"(.|\\r|\\t)*(\\n|$))";syntax_trace.push(x);this.syntax[lang]["comments"][x]="\n";}}if(this.load_syntax[lang]['COMMENT_MULTI']){for(var i in this.load_syntax[lang]['COMMENT_MULTI']){if(typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function") continue;var start=this.get_escaped_regexp(i);var end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);quote_tab[quote_tab.length]="("+start+"(.|\\n|\\r)*?("+end+"|$))";syntax_trace.push(start);syntax_trace.push(end);this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];}}if(quote_tab.length>0) this.syntax[lang]["comment_or_quote_reg_exp"]=new RegExp("("+quote_tab.join("|")+")","gi");if(syntax_trace.length>0) this.syntax[lang]["syntax_trace_regexp"]=new RegExp("((.|\n)*?)(\\\\*("+ syntax_trace.join("|") +"|$))", "gmi");if(this.load_syntax[lang]['SCRIPT_DELIMITERS']){this.syntax[lang]["script_delimiters"]=new Object();for(var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){if(typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function") continue;this.syntax[lang]["script_delimiters"][i]=this.load_syntax[lang]['SCRIPT_DELIMITERS'];}}this.syntax[lang]["custom_regexp"]=new Object();if(this.load_syntax[lang]['REGEXPS']){for(var i in this.load_syntax[lang]['REGEXPS']){if(typeof(this.load_syntax[lang]['REGEXPS'][i])=="function") continue;var val=this.load_syntax[lang]['REGEXPS'][i];if(!this.syntax[lang]["custom_regexp"][val['execute']]) this.syntax[lang]["custom_regexp"][val['execute']]=new Object();this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp' : new RegExp(val['search'], val['modifiers']) , 'class' : val['class']};}}if(this.load_syntax[lang]['STYLES']){lang_style[lang]=new Object();for(var i in this.load_syntax[lang]['STYLES']){if(typeof(this.load_syntax[lang]['STYLES'][i])=="function") continue;if(typeof(this.load_syntax[lang]['STYLES'][i]) !="string"){for(var j in this.load_syntax[lang]['STYLES'][i]){lang_style[lang][j]=this.load_syntax[lang]['STYLES'][i][j];}} +else{lang_style[lang][i]=this.load_syntax[lang]['STYLES'][i];}}}var style="";for(var i in lang_style[lang]){if(lang_style[lang][i].length>0){style+="."+ lang +" ."+ i.toLowerCase() +" span{"+lang_style[lang][i]+"}\n";style+="."+ lang +" ."+ i.toLowerCase() +"{"+lang_style[lang][i]+"}\n";}}this.syntax[lang]["styles"]=style;}}};eAL.waiting_loading["reg_syntax.js"]="loaded"; +var editAreaLoader= eAL;var editAreas=eAs;EditAreaLoader=EAL;editAreaLoader.iframe_script= ""; +editAreaLoader.template= " EditArea [__CSSRULES__] [__JSCODE__]
[__TOOLBAR__]
 
 
{$position}: {$line_abbr} 0, {$char_abbr} 0 {$total}: {$line_abbr} 0, {$char_abbr} 0 resize
{$processing}
{$search} {$close_popup}
{$replace} {$move_popup}

{$find_next} {$replace} {$replace_all}
{$close_popup}

Editarea [__EA_VERSION__]


{$shortcuts}:

{$tab}: {$add_tab}
{$shift}+{$tab}: {$remove_tab}
{$ctrl}+f: {$search_command}
{$ctrl}+r: {$replace_command}
{$ctrl}+h: {$highlight}
{$ctrl}+g: {$go_to_line}
{$ctrl}+z: {$undo}
{$ctrl}+y: {$redo}
{$ctrl}+e: {$help}
{$ctrl}+q, {$esc}: {$close_popup}
{$accesskey} E: {$toggle}

{$about_notice}
"; +editAreaLoader.iframe_css= ""; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/close.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/close.gif new file mode 100755 index 0000000000000000000000000000000000000000..679ca2aa47644793fc7096142233af6d18cfc9ac GIT binary patch literal 102 zcmZ?wbhEHb6ky2ivBykw!ot@6bd$)Ew*2Dq{%MuzLU-VNrt;$I z{;0?PSAE;|`To-4{r~^~A^8LW000jFEC2ui02BZe000DY@X1N5y*O(ey8oUPG-PQu zh5=L~;SvlX%mSjURO>jy;xC1Q4L8xD48CAu$Z8M;}RUJf0>sOc_ z4h#giNmy{Z(DeG+E>qDAdHB(q-q8pM40A&O(_`XwX{XYr&z?PRr~gK;d)>WX|G+!v(`@O7 z#gQbEOxp+vsv_Jf61NO&~~uOm_QM5vt=)9^-2GdKQc?)(;>#1N8f<|iMC zmfD0;+g#c2!gPCdc7LqAKSnW@pd1qCo=N!3p0wI2Uh9Zk=lo!cD>>j-uGI1o**BAk z+nGfbcNcGeD*Jw7fy$G-la=mZQupAaAFx7wCr5K@**^bL3Q~$qtHmc2WOevhi_fWl z(sfv=`%6)ajg-4YJ5{Q^m(#*3no)Srli%PkY(#z&y{Z+f+pwX9E^Yd+_%OYx&Ar(` z=b4djMwtQYk78Xr3Od-lZnm`j;kQO??xYJWs4$_>f=Uxp*o#UtRAz5wJ9c-WrBlt9O#3t52`azorU%kROg@@ z^zE{v@mJLUhW&Q0+TqtY**eGbY8Q-WL0yJ%2*zQUhhcE~^jDa6JM<&|E(h8!`+6?G zauKFcruQPOmtb}IdR;i-!l|q1zlPIe7`*NuypEwiaDEc5N!oD}u3H$rjgdPTzwMiF zW73U3-MIHR?mx!VBe)-7`Y}8GFP?hv%!?T>JTLH^W@!ct!!mxbeim#%0DiolK>dFZ zzu?Szn}8&d0Ixnlcr-z9tlW0gQOy(ZIijL;LUHC4jE8fT{5fxlGUc6R6Y~{@_~J%= ziZgCiQ%F{M*H(S!QUO0gbU~ZjkzrMe*Qfr{5E{fyU6VLfTYp$-lRvr9@jypuf+~_C zDj$qCCpH(=w|2(Q4(4zKVf!L10!gkpb3pTD`L)o<*}R1hzkBo0vAn*uM>IjYsOYG9 zv0-1Q$7SopSqDij=l!TwL4r~y5zZS4c_*b{JYyhnO!uxVTX;N-(&|NuHN*7jINqW6 zg#4dMC#VB0%WI7CoA*nyGUuv1R~CH1U1>^NB9Y7#b@4?RyG&}ev|@Q}Xsl)1T~msP Gq`d@2%&Q{+ literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/help.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/help.gif new file mode 100755 index 0000000000000000000000000000000000000000..51a1ee42073402ce787b60d151219ef7ce367615 GIT binary patch literal 295 zcmV+?0oeXWNk%w1VH5xq0Mrfu6i>3FyW3udp6K!Ub&;kbTH+f8tqUysbN$lQ^w;v!hW z!pq(wXY{hj_W%F@A^8LW0018VEC2ui02BZe000G~;3tk`X`X1Ru1KI+h83(|W>rq^ zR7RF&f!#zRnN$X{6T;$HBo?`WVllvQOo2)zp>TL49!J8HVVDe#NumhpbS0R9z=Ux~ zAoz}Cx7j!jCJ$n5dR`j(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/load.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/load.gif new file mode 100755 index 0000000000000000000000000000000000000000..461698f56b1e5822f49ed10227b2e57e683c8a03 GIT binary patch literal 1041 zcmdtPjZ>0$007{hgDIQsG-j@L*>tB)b60+}iD?OrA>k>g{a2QP=fy)QrO@924oIV@UURUC)| z_Hh8BRUmo->{0^i0Eit2)L}rq58_9_9yQoI0ru(0?>qtr=0Nh3sMI;iK}AgZ2uL@P zv!?cB{7K50jm$K~=L}H_^$ABuCzq*wkDptnZcdR`%IPfr6%FD zE9uMWOe#-mc0 zdbNSOGybW`IN~b2xCP6L&iUIvl!Pgr0!^ zgyGf}G~(fT2)$k$^Fj=R+dg6)!q7Gz2ta%rhJ%nGAPmD7c3yT#A#%j)UNN`xjj9kk>WZd!xmETTBh{YXI^b{t9!jGiW~Qp#VbtkipU(u58V$>o<`ED_LfQ)yM&!tudZ zO6ZtkL-u2)?nak`4w3~)2OMlB%CquCMW`EC1=ut*Geik9*l2SqO#J~;-aN z((?HJ(%tf+t-`|0-T(jqA^8LW000jFEC2ui02BZe000D6@X1N5y*TTfdRNNeY>8o> z4KQZPc^-wzx@G{}*+AEJzAuCxrm-U+gcqV~fj9y(hozB$v;>w-LA7!<0TB$xmeMs$ Y1>z^>8fd%Q>Wl40uW#=7ygmW|J7pwMu>b%7 literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/opacity.png b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/opacity.png new file mode 100755 index 0000000000000000000000000000000000000000..b4217cb212926ce7abfde5e045380e3f6a5d54b7 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl_jZKS5jZLdL qklCGA#U1zK0aw_X$=hxGiT1+v}x0S96<3ux1VcBu(M-; ztC5}oGb2#H;!hSvE(Q(;9gtxlV;NXH1WtA`ESM2BJDuZdn+*H6+J_#~?s=}wnLTle zLdoPrg>AjBcimgdeCKBYhit0B2@x&{waK4q^pXsNww0L>hh!WVpKG)o&b3NQQ?5mIMo+7=AS21Oo%i<%fwhoMRy< z%r&om<6%ZJd`e=;WCaw%pB9{8VS>4w;Q?{M;sr8%x#87s0xU>|UnwlPY=B}oE5iv6 z7MRN&h%~$hWcYK-tKURekqj4MC=qrd`<&8udehy@~I>Xg(5^P9@hX|Ae U2cj76s&GPp1LpFB=!RPZ0F}Z{aR2}S literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/redo.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/redo.gif new file mode 100755 index 0000000000000000000000000000000000000000..3af90697f0b74d0b6b07b585614a6dc67ff87f1d GIT binary patch literal 169 zcmV;a09OA;Nk%w1VH5xq0K*FaEl-kjqwqa)*O$8QUUsNeit)O{)H!9gj;!cSf8=SD z@4U+CH(H=qeZQ%{>Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/reset_highlight.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/reset_highlight.gif new file mode 100755 index 0000000000000000000000000000000000000000..0fa3cb79734b6ddadaded7a30dbbab4cdf7ee11a GIT binary patch literal 168 zcmV;Z09XG3d^!9RvqL!@E;^*>mjy!E|{0<7#0>aHWEL6BndDU8;y+&e4jmm66%_}QC6xvn4h#bW3={_x jpoxPV4gmok9t#w=ts@#{Ko1AM7r_@1E5*jg#vuSZ^a*OP literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/save_as.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/save_as.gif new file mode 100755 index 0000000000000000000000000000000000000000..d8251b4b9b1b24e2b939c4b7b68cbb5c517f9b8f GIT binary patch literal 203 zcmZ?wbhEHb6krfw*v!xH=F5k+6}Q(Oe>-jK;Y%*7$|1_=dNaD$xAL|z0Na{Wn z-gG#(=SKFVv;VM;(5eDq%`2oNfXq zfBR}Fa;Y+Ku!wSWIX<46!Nb`#(~I%QLodDsEeC{k3V1aV7R>mx!+(YHh8apyclfjq zs!fsK=vsBSZ>J`2OU!Y00WJ|1-fH$%b_UJ{(QrPtJ~qBiF)nVNY13J|#AXW#GFSru D3N=ks literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/search.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/search.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfe76b5d5b06afde765a8f9559c7b2c3fb0d2bf0 GIT binary patch literal 191 zcmV;w06_moNk%w1VH5xq0K*6XAwYSPrOj1uq2J{2d5^L-QjNRF;a`BY`TG5IgsOa& z#YJeCAx49!wa3EN@&Et;A^8LW000jFEC2ui02BZe000DR@X1N5y*TU5Zy?LmfLnqv zlZj@dP!!MS!kB^>3Thj{dMSt5;y`fuDmH}Uz$g$9N~Xo|3t6qtjy*E#3&d$!w&zD+OKB~ULl7eEw((m;2 z^kQ<7@$qtYhNk=Uwg3PCA^8LW000jFEC2ui02BZe000DA@X1N5y*TU5`(_{rgp5Wq zV<-tiQw0DJpz-{)hcHm#IKm8pA~9I(Ca@SvR8S0cm6VSWFgTt^N>UaxG!szEiFzP_ cvz1f8Q5b|bYX=qJK_CnUx@XVt`!Nv!J5VM>-~a#s literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/spacer.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/spacer.gif new file mode 100755 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/statusbar_resize.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/statusbar_resize.gif new file mode 100755 index 0000000000000000000000000000000000000000..af89d803f8f0eeb965d9443473d5be009641cacf GIT binary patch literal 79 zcmZ?wbhEHbX*~6o0ZXGB7YP=m6OaAbAERg(>|jPrv0~%%#ha d_MXKm)lqT2YSDtso)?w9Z@gz^T^C`n1_07v8bkm9 literal 0 HcmV?d00001 diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/images/undo.gif b/admin-dev/ajaxfilemanager/jscripts/edit_area/images/undo.gif new file mode 100755 index 0000000000000000000000000000000000000000..520796d69defa118055d191eec33cc67f7551710 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk", +not_found: "Nicht gefunden.", +occurrence_replaced: "Die Vorkommen wurden ersetzt.", +search_field_empty: "leeres Suchfeld", +restart_search_at_begin: "Ende des zu durchsuchenden Bereiches erreicht. Es wird die Suche von Anfang an fortgesetzt.", //find a shorter translation +move_popup: "Suchfenster bewegen", +font_size: "--Schriftgröße--", +go_to_line: "gehe zu Zeile", +go_to_line_prompt: "gehe zu Zeilennummmer:", +undo: "rückgängig machen", +redo: "wiederherstellen", +change_smooth_selection: "aktiviere/deaktiviere einige Features (weniger Bildschirmnutzung aber mehr CPU-Belastung)", +highlight: "Syntax Highlighting an- und ausschalten", +reset_highlight: "Highlighting zurücksetzen (falls mit Text nicht konform)", +help: "über", +save: "sichern", +load: "öffnen", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Position", +total: "Gesamt", +close_popup: "Popup schließen", +shortcuts: "Shortcuts", +add_tab: "Tab zum Text hinzufügen", +remove_tab: "Tab aus Text entfernen", +about_notice: "Bemerkung: Syntax Highlighting ist nur für kurze Texte", +toggle: "Editor an- und ausschalten", +accesskey: "Accesskey", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "In Bearbeitung...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/dk.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/dk.js new file mode 100755 index 000000000..e82e2c9e6 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/dk.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["dk"]={ +new_document: "nyt tomt dokument", +search_button: "søg og erstat", +search_command: "find næste / åben søgefelt", +search: "søg", +replace: "erstat", +replace_command: "erstat / åben søgefelt", +find_next: "find næste", +replace_all: "erstat alle", +reg_exp: "regular expressions", +match_case: "forskel på store/små bogstaver
", +not_found: "not found.", +occurrence_replaced: "occurences replaced.", +search_field_empty: "Search field empty", +restart_search_at_begin: "End of area reached. Restart at begin.", +move_popup: "flyt søgepopup", +font_size: "--Skriftstørrelse--", +go_to_line: "gå til linie", +go_to_line_prompt: "gå til linienummer:", +undo: "fortryd", +redo: "gentag", +change_smooth_selection: "slå display funktioner til/fra (smartere display men mere CPU krævende)", +highlight: "slå syntax highlight til/fra", +reset_highlight: "nulstil highlight (hvis den er desynkroniseret fra teksten)", +help: "om", +save: "gem", +load: "hent", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Position", +total: "Total", +close_popup: "luk popup", +shortcuts: "Genveje", +add_tab: "tilføj tabulation til tekst", +remove_tab: "fjern tabulation fra tekst", +about_notice: "Husk: syntax highlight funktionen bør kun bruge til små tekster", +toggle: "Slå editor til / fra", +accesskey: "Accesskey", +tab: "Tab", +shift: "Skift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Processing...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/en.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/en.js new file mode 100755 index 000000000..3f84614e3 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/en.js @@ -0,0 +1,46 @@ +editAreaLoader.lang["en"]={ +new_document: "new empty document", +search_button: "search and replace", +search_command: "search next / open search area", +search: "search", +replace: "replace", +replace_command: "replace / open search area", +find_next: "find next", +replace_all: "replace all", +reg_exp: "regular expressions", +match_case: "match case", +not_found: "not found.", +occurrence_replaced: "occurences replaced.", +search_field_empty: "Search field empty", +restart_search_at_begin: "End of area reached. Restart at begin.", +move_popup: "move search popup", +font_size: "--Font size--", +go_to_line: "go to line", +go_to_line_prompt: "go to line number:", +undo: "undo", +redo: "redo", +change_smooth_selection: "enable/disable some display features (smarter display but more CPU charge)", +highlight: "toggle syntax highlight on/off", +reset_highlight: "reset highlight (if desyncronized from text)", +help: "about", +save: "save", +save_as: "save as", +load: "load", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Position", +total: "Total", +close_popup: "close popup", +shortcuts: "Shortcuts", +add_tab: "add tabulation to text", +remove_tab: "remove tabulation to text", +about_notice: "Notice: syntax highlight function is only for small text", +toggle: "Toggle editor", +accesskey: "Accesskey", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Processing...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/fr.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/fr.js new file mode 100755 index 000000000..aa1995a8f --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/fr.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["fr"]={ +new_document: "nouveau document (efface le contenu)", +search_button: "rechercher / remplacer", +search_command: "rechercher suivant / ouvrir la fenêtre de recherche", +search: "rechercher", +replace: "remplacer", +replace_command: "remplacer / ouvrir la fenêtre de recherche", +find_next: "rechercher", +replace_all: "tout remplacer", +reg_exp: "expr. régulière", +match_case: "respecter la casse", +not_found: "pas trouvé.", +occurrence_replaced: "remplacements éffectués.", +search_field_empty: "Le champ de recherche est vide.", +restart_search_at_begin: "Fin du texte atteint, poursuite au début.", +move_popup: "déplacer la fenêtre de recherche", +font_size: "--Taille police--", +go_to_line: "aller à la ligne", +go_to_line_prompt: "aller a la ligne numero:", +undo: "annuler", +redo: "refaire", +change_smooth_selection: "activer/désactiver des fonctions d'affichage (meilleur affichage mais plus de charge processeur)", +highlight: "activer/désactiver la coloration syntaxique", +reset_highlight: "réinitialiser la coloration syntaxique (si désyncronisée du texte)", +help: "à propos", +save: "sauvegarder", +load: "charger", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Position", +total: "Total", +close_popup: "fermer le popup", +shortcuts: "Racourcis clavier", +add_tab: "ajouter une tabulation dans le texte", +remove_tab: "retirer une tabulation dans le texte", +about_notice: "Note: la coloration syntaxique n'est prévue que pour de courts textes.", +toggle: "basculer l'éditeur", +accesskey: "Accesskey", +tab: "Tab", +shift: "Maj", +ctrl: "Ctrl", +esc: "Esc", +processing: "chargement...", +fullscreen: "plein écran" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/hr.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/hr.js new file mode 100755 index 000000000..7ea4df876 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/hr.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["hr"]={ +new_document: "Novi dokument", +search_button: "Traži i izmijeni", +search_command: "Traži dalje / Otvori prozor za traženje", +search: "Traži", +replace: "Izmijeni", +replace_command: "Izmijeni / Otvori prozor za traženje", +find_next: "Traži dalje", +replace_all: "Izmjeni sve", +reg_exp: "Regularni izrazi", +match_case: "Bitna vel. slova", +not_found: "nije naðeno.", +occurrence_replaced: "izmjenjenih.", +search_field_empty: "Prazno polje za traženje!", +restart_search_at_begin: "Došao do kraja. Poèeo od poèetka.", +move_popup: "Pomakni prozor", +font_size: "--Velièina teksta--", +go_to_line: "Odi na redak", +go_to_line_prompt: "Odi na redak:", +undo: "Vrati natrag", +redo: "Napravi ponovo", +change_smooth_selection: "Ukljuèi/iskljuèi neke moguænosti prikaza (pametniji prikaz, ali zagušeniji CPU)", +highlight: "Ukljuèi/iskljuèi bojanje sintakse", +reset_highlight: "Ponovi kolorizaciju (ako je nesinkronizirana s tekstom)", +help: "O edit_area", +save: "Spremi", +load: "Uèitaj", +line_abbr: "Ln", +char_abbr: "Zn", +position: "Pozicija", +total: "Ukupno", +close_popup: "Zatvori prozor", +shortcuts: "Kratice", +add_tab: "Dodaj tabulaciju", +remove_tab: "Makni tabulaciju", +about_notice: "Napomena: koloriziranje sintakse je samo za kratke kodove", +toggle: "Prebaci naèin ureðivanja", +accesskey: "Accesskey", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Procesiram...", +fullscreen: "Cijeli prozor" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/it.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/it.js new file mode 100755 index 000000000..90f0b00e3 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/it.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["it"]={ +new_document: "nuovo documento vuoto", +search_button: "cerca e sostituisci", +search_command: "trova successivo / apri finestra di ricerca", +search: "cerca", +replace: "sostituisci", +replace_command: "sostituisci / apri finestra di ricerca", +find_next: "trova successivo", +replace_all: "sostituisci tutti", +reg_exp: "espressioni regolari", +match_case: "confronta maiuscole/minuscole
", +not_found: "non trovato.", +occurrence_replaced: "occorrenze sostituite.", +search_field_empty: "Campo ricerca vuoto", +restart_search_at_begin: "Fine del testo raggiunta. Ricomincio dall'inizio.", +move_popup: "sposta popup di ricerca", +font_size: "-- Dimensione --", +go_to_line: "vai alla linea", +go_to_line_prompt: "vai alla linea numero:", +undo: "annulla", +redo: "ripeti", +change_smooth_selection: "abilita/disabilita alcune caratteristiche della visualizzazione", +highlight: "abilita/disabilita colorazione della sintassi", +reset_highlight: "aggiorna colorazione (se non sincronizzata)", +help: "informazioni su...", +save: "salva", +load: "carica", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Posizione", +total: "Totale", +close_popup: "chiudi popup", +shortcuts: "Scorciatoie", +add_tab: "aggiungi tabulazione", +remove_tab: "rimuovi tabulazione", +about_notice: "Avviso: la colorazione della sintassi vale solo con testo piccolo", +toggle: "Abilita/disabilita editor", +accesskey: "Accesskey", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "In corso...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/ja.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/ja.js new file mode 100755 index 000000000..2ae0caabb --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/ja.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["ja"]={ +new_document: "新規作成", +search_button: "検索・置換", +search_command: "次を検索 / 検索窓を表示", +search: "検索", +replace: "置換", +replace_command: "置換 / 置換窓を表示", +find_next: "次を検索", +replace_all: "全置換", +reg_exp: "正規表現", +match_case: "大文字小文字の区別", +not_found: "見つかりません。", +occurrence_replaced: "置換しました。", +search_field_empty: "検索対象文字列が空です。", +restart_search_at_begin: "終端に達しました、始めに戻ります", +move_popup: "検索窓を移動", +font_size: "--フォントサイズ--", +go_to_line: "指定行へ移動", +go_to_line_prompt: "指定行へ移動します:", +undo: "元に戻す", +redo: "やり直し", +change_smooth_selection: "スムース表示の切り替え(CPUを使います)", +highlight: "構文強調表示の切り替え", +reset_highlight: "構文強調表示のリセット", +help: "ヘルプを表示", +save: "保存", +load: "読み込み", +line_abbr: "行", +char_abbr: "文字", +position: "位置", +total: "合計", +close_popup: "ポップアップを閉じる", +shortcuts: "ショートカット", +add_tab: "タブを挿入する", +remove_tab: "タブを削除する", +about_notice: "注意:構文強調表示は短いテキストでしか有効に機能しません。", +toggle: "テキストエリアとeditAreaの切り替え", +accesskey: "アクセスキー", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "処理中です...", +fullscreen: "fullscreen" +}; \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/nl.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/nl.js new file mode 100755 index 000000000..b768481d4 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/nl.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["nl"]={ +new_document: "nieuw leeg document", +search_button: "zoek en vervang", +search_command: "zoek volgende / zoekscherm openen", +search: "zoek", +replace: "vervang", +replace_command: "vervang / zoekscherm openen", +find_next: "volgende vinden", +replace_all: "alles vervangen", +reg_exp: "reguliere expressies", +match_case: "hoofdletter gevoelig", +not_found: "niet gevonden.", +occurrence_replaced: "object vervangen.", +search_field_empty: "Zoek veld leeg", +restart_search_at_begin: "Niet meer instanties gevonden, begin opnieuw", +move_popup: "versleep zoek scherm", +font_size: "--Letter grootte--", +go_to_line: "Ga naar regel", +go_to_line_prompt: "Ga naar regel nummer:", +undo: "Ongedaan maken", +redo: "Opnieuw doen", +change_smooth_selection: "zet wat schermopties aan/uit (kan langzamer zijn)", +highlight: "zet syntax highlight aan/uit", +reset_highlight: "reset highlight (indien gedesynchronizeerd)", +help: "informatie", +save: "opslaan", +load: "laden", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Positie", +total: "Totaal", +close_popup: "Popup sluiten", +shortcuts: "Snelkoppelingen", +add_tab: "voeg tabs toe in tekst", +remove_tab: "verwijder tabs uit tekst", +about_notice: "Notitie: syntax highlight functie is alleen voor kleine tekst", +toggle: "geavanceerde bewerkingsopties", +accesskey: "Accessknop", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Verwerken...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pl.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pl.js new file mode 100755 index 000000000..a403dad2f --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pl.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["pl"]={ +new_document: "nowy dokument", +search_button: "znajdź i zamień", +search_command: "znajdź następny", +search: "znajdź", +replace: "zamień", +replace_command: "zamień", +find_next: "następny", +replace_all: "zamień wszystko", +reg_exp: "wyrażenie regularne", +match_case: "uwzględnij wielkość liter
", +not_found: "nie znaleziono.", +occurrence_replaced: "wystąpień zamieniono.", +search_field_empty: "Nie wprowadzono tekstu", +restart_search_at_begin: "Koniec dokumentu. Wyszukiwanie od początku.", +move_popup: "przesuń okienko wyszukiwania", +font_size: "Rozmiar", +go_to_line: "idź do linii", +go_to_line_prompt: "numer linii:", +undo: "cofnij", +redo: "przywróć", +change_smooth_selection: "włącz/wyłącz niektóre opcje wyglądu (zaawansowane opcje wyglądu obciążają procesor)", +highlight: "włącz/wyłącz podświetlanie składni", +reset_highlight: "odśwież podświetlanie składni (jeśli rozsynchronizowało się z tekstem)", +help: "o programie", +save: "zapisz", +load: "otwórz", +line_abbr: "Ln", +char_abbr: "Zn", +position: "Pozycja", +total: "W sumie", +close_popup: "zamknij okienko", +shortcuts: "Skróty klawiaturowe", +add_tab: "dodaj wcięcie do zaznaczonego tekstu", +remove_tab: "usuń wcięcie", +about_notice: "Uwaga: podświetlanie składni nie jest zalecane dla długich tekstów", +toggle: "Włącz/wyłącz edytor", +accesskey: "Alt+", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Przetwarzanie...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pt.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pt.js new file mode 100755 index 000000000..3ffad3374 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/pt.js @@ -0,0 +1,45 @@ +editAreaLoader.lang["pt"]={ +new_document: "Novo documento", +search_button: "Localizar e substituir", +search_command: "Localizar próximo", +search: "Localizar", +replace: "Substituir", +replace_command: "Substituir", +find_next: "Localizar", +replace_all: "Subst. tudo", +reg_exp: "Expressões regulares", +match_case: "Diferenciar maiúsculas e minúsculas", +not_found: "Não encontrado.", +occurrence_replaced: "Ocorrências substituidas", +search_field_empty: "Campo localizar vazio.", +restart_search_at_begin: "Fim das ocorrências. Recomeçar do inicio.", +move_popup: "Mover janela", +font_size: "--Tamanho da fonte--", +go_to_line: "Ir para linha", +go_to_line_prompt: "Ir para a linha:", +undo: "Desfazer", +redo: "Refazer", +change_smooth_selection: "Opções visuais", +highlight: "Cores de sintaxe", +reset_highlight: "Resetar cores (se não sincronizado)", +help: "Sobre", +save: "Salvar", +load: "Carregar", +line_abbr: "Ln", +char_abbr: "Ch", +position: "Posição", +total: "Total", +close_popup: "Fechar", +shortcuts: "Shortcuts", +add_tab: "Adicionar tabulação", +remove_tab: "Remover tabulação", +about_notice: "Atenção: Cores de sintaxe são indicados somente para textos pequenos", +toggle: "Exibir editor", +accesskey: "Accesskey", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Processando...", +fullscreen: "fullscreen" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/zh_cn.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/zh_cn.js new file mode 100755 index 000000000..055eabb47 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/langs/zh_cn.js @@ -0,0 +1,46 @@ +editAreaLoader.lang["zh_cn"]={ +new_document: "½ļ", +search_button: "滻", +search_command: "²/򿪲ҿ", +search: "", +replace: "滻", +replace_command: "滻/򿪲ҿ", +find_next: "һ", +replace_all: "滻ȫ", +reg_exp: "ʽ", +match_case: "Сд", +not_found: "ƥ.", +occurrence_replaced: "滻.", +search_field_empty: "ҹؼΪ", +restart_search_at_begin: "Ѵֿף¿ʼ.", +move_popup: "ƶҴ", +font_size: "--ִС--", +go_to_line: "ָ", +go_to_line_prompt: "ƶָ:", +undo: "һ", +redo: "һ", +change_smooth_selection: "/ֹijЩʾЧ", +highlight: "", +reset_highlight: "", +help: "", +save: "", +save_as: "Ϊ", +load: "", +line_abbr: "", +char_abbr: "ֽ", +position: "λ", +total: "ܹ", +close_popup: "رմ", +shortcuts: "ݼ", +add_tab: "Ӽ", +remove_tab: "ɾ", +about_notice: "ʾ߶ȹֻСĵ", +toggle: "ת༭", +accesskey: "ɷʼ", +tab: "", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "...", +fullscreen: "ȫ" +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/basic.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/basic.js new file mode 100755 index 000000000..8a5849cd4 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/basic.js @@ -0,0 +1,69 @@ +editAreaLoader.load_syntax["basic"] = { + 'COMMENT_SINGLE' : {1 : "'", 2 : 'rem'} + ,'COMMENT_MULTI' : { } + ,'QUOTEMARKS' : {1: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'if','then','for','wend','while', + 'else','elseif','select','case','end select', + 'until','next','step','to','end if', 'call' + ] + ,'keywords' : [ + 'sub', 'end sub', 'function', 'end function', 'exit', + 'exit function', 'dim', 'redim', 'shared', 'const', + 'is', 'absolute', 'access', 'any', 'append', 'as', + 'base', 'beep', 'binary', 'bload', 'bsave', 'chain', + 'chdir', 'circle', 'clear', 'close', 'cls', 'color', + 'com', 'common', 'data', 'date', 'declare', 'def', + 'defdbl', 'defint', 'deflng', 'defsng', 'defstr', + 'double', 'draw', 'environ', 'erase', 'error', 'field', + 'files', 'fn', 'get', 'gosub', 'goto', 'integer', 'key', + 'kill', 'let', 'line', 'list', 'locate', 'lock', 'long', + 'lprint', 'lset', 'mkdir', 'name', 'off', 'on', 'open', + 'option', 'out', 'output', 'paint', 'palette', 'pcopy', + 'poke', 'preset', 'print', 'pset', 'put', 'random', + 'randomize', 'read', 'reset', 'restore', 'resume', + 'return', 'rmdir', 'rset', 'run', 'screen', 'seg', + 'shell', 'single', 'sleep', 'sound', 'static', 'stop', + 'strig', 'string', 'swap', 'system', 'time', 'timer', + 'troff', 'tron', 'type', 'unlock', 'using', 'view', + 'wait', 'width', 'window', 'write' + ] + ,'functions' : [ + 'abs', 'asc', 'atn', 'cdbl', 'chr', 'cint', 'clng', + 'cos', 'csng', 'csrlin', 'cvd', 'cvdmbf', 'cvi', 'cvl', + 'cvs', 'cvsmbf', 'eof', 'erdev', 'erl', 'err', 'exp', + 'fileattr', 'fix', 'fre', 'freefile', 'hex', 'inkey', + 'inp', 'input', 'instr', 'int', 'ioctl', 'lbound', + 'lcase', 'left', 'len', 'loc', 'lof', 'log', 'lpos', + 'ltrim', 'mid', 'mkd', 'mkdmbf', 'mki', 'mkl', 'mks', + 'mksmbf', 'oct', 'peek', 'pen', 'play', 'pmap', 'point', + 'pos', 'right', 'rnd', 'rtrim', 'seek', 'sgn', 'sin', + 'space', 'spc', 'sqr', 'stick', 'str', 'tab', 'tan', + 'ubound', 'ucase', 'val', 'varptr', 'varseg' + ] + ,'operators' : [ + 'and', 'eqv', 'imp', 'mod', 'not', 'or', 'xor' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '!', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #99CC00;' + ,'QUOTESMARKS': 'color: #333399;' + ,'KEYWORDS' : { + 'keywords' : 'color: #3366FF;' + ,'functions' : 'color: #0000FF;' + ,'statements' : 'color: #3366FF;' + ,'operators' : 'color: #FF0000;' + } + ,'OPERATORS' : 'color: #FF0000;' + ,'DELIMITERS' : 'color: #0000FF;' + + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/brainfuck.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/brainfuck.js new file mode 100755 index 000000000..3625f701e --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/brainfuck.js @@ -0,0 +1,44 @@ +editAreaLoader.load_syntax["brainfuck"] = { + 'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {} + ,'QUOTEMARKS' : {} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'OPERATORS' :[ + '+', '-' + ] + ,'DELIMITERS' :[ + '[', ']' + ] + ,'REGEXPS' : { + 'bfispis' : { + 'search' : '()(\\.)()' + ,'class' : 'bfispis' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'bfupis' : { + 'search' : '()(\\,)()' + ,'class' : 'bfupis' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'bfmemory' : { + 'search' : '()([<>])()' + ,'class' : 'bfmemory' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'OPERATORS' : 'color: #88AA00;' + ,'DELIMITERS' : 'color: #00C138;' + ,'REGEXPS' : { + 'bfispis' : 'color: #EE0000;' + ,'bfupis' : 'color: #4455ee;' + ,'bfmemory' : 'color: #DD00DD;' + } + } +}; + diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/c.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/c.js new file mode 100755 index 000000000..d4e577122 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/c.js @@ -0,0 +1,62 @@ +editAreaLoader.load_syntax["c"] = { + 'COMMENT_SINGLE' : {1 : '//'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + 'constants' : [ + 'NULL', 'false', 'stdin', 'stdout', 'stderr', 'true' + ] + ,'types' : [ + 'FILE', 'auto', 'char', 'const', 'double', + 'extern', 'float', 'inline', 'int', 'long', 'register', + 'short', 'signed', 'size_t', 'static', 'struct', + 'time_t', 'typedef', 'union', 'unsigned', 'void', + 'volatile' + ] + ,'statements' : [ + 'do', 'else', 'enum', 'for', 'goto', 'if', 'sizeof', + 'switch', 'while' + ] + ,'keywords' : [ + 'break', 'case', 'continue', 'default', 'delete', + 'return' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + 'precompiler' : { + 'search' : '()(#[^\r\n]*)()' + ,'class' : 'precompiler' + ,'modifiers' : 'g' + ,'execute' : 'before' + } +/* ,'precompilerstring' : { + 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])' + ,'class' : 'precompilerstring' + ,'modifiers' : 'g' + ,'execute' : 'before' + }*/ + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'constants' : 'color: #EE0000;' + ,'types' : 'color: #0000EE;' + ,'statements' : 'color: #60CA00;' + ,'keywords' : 'color: #48BDDF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #0038E1;' + ,'REGEXPS' : { + 'precompiler' : 'color: #009900;' + ,'precompilerstring' : 'color: #994400;' + } + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/cpp.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/cpp.js new file mode 100755 index 000000000..e5e2be061 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/cpp.js @@ -0,0 +1,65 @@ +editAreaLoader.load_syntax["cpp"] = { + 'COMMENT_SINGLE' : {1 : '//'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + 'constants' : [ + 'NULL', 'false', 'std', 'stdin', 'stdout', 'stderr', + 'true' + ] + ,'types' : [ + 'FILE', 'auto', 'char', 'class', 'const', 'double', + 'extern', 'float', 'friend', 'inline', 'int', + 'iterator', 'long', 'map', 'operator', 'queue', + 'register', 'short', 'signed', 'size_t', 'stack', + 'static', 'string', 'struct', 'time_t', 'typedef', + 'union', 'unsigned', 'vector', 'void', 'volatile' + ] + ,'statements' : [ + 'catch', 'do', 'else', 'enum', 'for', 'goto', 'if', + 'sizeof', 'switch', 'this', 'throw', 'try', 'while' + ] + ,'keywords' : [ + 'break', 'case', 'continue', 'default', 'delete', + 'namespace', 'new', 'private', 'protected', 'public', + 'return', 'using' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + 'precompiler' : { + 'search' : '()(#[^\r\n]*)()' + ,'class' : 'precompiler' + ,'modifiers' : 'g' + ,'execute' : 'before' + } +/* ,'precompilerstring' : { + 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])' + ,'class' : 'precompilerstring' + ,'modifiers' : 'g' + ,'execute' : 'before' + }*/ + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'constants' : 'color: #EE0000;' + ,'types' : 'color: #0000EE;' + ,'statements' : 'color: #60CA00;' + ,'keywords' : 'color: #48BDDF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #0038E1;' + ,'REGEXPS' : { + 'precompiler' : 'color: #009900;' + ,'precompilerstring' : 'color: #994400;' + } + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/css.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/css.js new file mode 100755 index 000000000..b8131ccdd --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/css.js @@ -0,0 +1,84 @@ +editAreaLoader.load_syntax["css"] = { + 'COMMENT_SINGLE' : {1 : '@'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : ['"', "'"] + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'attributes' : [ + 'aqua', 'azimuth', 'background-attachment', 'background-color', + 'background-image', 'background-position', 'background-repeat', + 'background', 'border-bottom-color', 'border-bottom-style', + 'border-bottom-width', 'border-left-color', 'border-left-style', + 'border-left-width', 'border-right', 'border-right-color', + 'border-right-style', 'border-right-width', 'border-top-color', + 'border-top-style', 'border-top-width','border-bottom', 'border-collapse', + 'border-left', 'border-width', 'border-color', 'border-spacing', + 'border-style', 'border-top', 'border', 'caption-side', + 'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset', + 'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display', + 'elevation', 'empty-cells', 'float', 'font-family', 'font-size', + 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', + 'font-weight', 'font', 'height', 'letter-spacing', 'line-height', + 'list-style', 'list-style-image', 'list-style-position', 'list-style-type', + 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin', + 'marker-offset', 'marks', 'max-height', 'max-width', 'min-height', + 'min-width', 'opacity', 'orphans', 'outline', 'outline-color', 'outline-style', + 'outline-width', 'overflow', 'padding-bottom', 'padding-left', + 'padding-right', 'padding-top', 'padding', 'page', 'page-break-after', + 'page-break-before', 'page-break-inside', 'pause-after', 'pause-before', + 'pause', 'pitch', 'pitch-range', 'play-during', 'position', 'quotes', + 'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation', + 'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration', + 'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi', + 'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows', + 'width', 'word-spacing', 'z-index', 'bottom', 'left' + ] + ,'values' : [ + 'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid', + 'baseline', 'behind', 'below', 'bidi-override', 'black', 'blue', 'blink', 'block', 'bold', 'bolder', 'both', + 'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic', + 'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive', + 'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double', + 'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded', + 'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia', + 'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher', + 'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline', + 'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana', + 'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low', + 'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace', + 'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize', + 'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline', + 'pointer', 'portrait', 'purple', 'px', + 'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards', + 's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square', + 'static', 'status-bar', 'super', 'sw-resize', + 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent', + 'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url', + 'visible', + 'w-resize', 'wait', 'white', 'wider', + 'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small', + 'yellow', 'yes' + ] + ,'specials' : [ + 'important' + ] + } + ,'OPERATORS' :[ + ':', ';', '!', '.', '#' + ] + ,'DELIMITERS' :[ + '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'attributes' : 'color: #48BDDF;' + ,'values' : 'color: #2B60FF;' + ,'specials' : 'color: #FF0000;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #60CA00;' + + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/html.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/html.js new file mode 100755 index 000000000..cc2a90e6e --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/html.js @@ -0,0 +1,50 @@ +/* +* last update: 2006-08-24 +*/ + +editAreaLoader.load_syntax["html"] = { + 'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {''} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + } + ,'OPERATORS' :[ + ] + ,'DELIMITERS' :[ + ] + ,'REGEXPS' : { + 'doctype' : { + 'search' : '()(]*>)()' + ,'class' : 'doctype' + ,'modifiers' : '' + ,'execute' : 'before' // before or after + } + ,'tags' : { + 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'tags' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'attributes' : { + 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' + ,'class' : 'attributes' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + } + ,'OPERATORS' : 'color: #E775F0;' + ,'DELIMITERS' : '' + ,'REGEXPS' : { + 'attributes': 'color: #B1AC41;' + ,'tags': 'color: #E62253;' + ,'doctype': 'color: #8DCFB5;' + ,'test': 'color: #00FF00;' + } + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/js.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/js.js new file mode 100755 index 000000000..3b4ef5e53 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/js.js @@ -0,0 +1,60 @@ +editAreaLoader.load_syntax["js"] = { + 'COMMENT_SINGLE' : {1 : '//'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + 'statements' : [ + 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do', + 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item', + 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void', + 'while', 'write', 'with' + ] + ,'keywords' : [ + 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false', + 'function', 'import', 'namespace', 'new', 'null', 'package', 'private', + 'protected', 'public', 'super', 'true', 'use', 'var', 'window', 'document', + // the list below must be sorted and checked (if it is a keywords or a function and if it is not present twice + 'Link ', 'outerHeight ', 'Anchor', 'FileUpload', + 'location', 'outerWidth', 'Select', 'Area', 'find', 'Location', 'Packages', 'self', + 'arguments', 'locationbar', 'pageXoffset', 'Form', + 'Math', 'pageYoffset', 'setTimeout', 'assign', 'Frame', 'menubar', 'parent', 'status', + 'blur', 'frames', 'MimeType', 'parseFloat', 'statusbar', 'Boolean', 'Function', 'moveBy', + 'parseInt', 'stop', 'Button', 'getClass', 'moveTo', 'Password', 'String', 'callee', 'Hidden', + 'name', 'personalbar', 'Submit', 'caller', 'history', 'NaN', 'Plugin', 'sun', 'captureEvents', + 'History', 'navigate', 'print', 'taint', 'Checkbox', 'home', 'navigator', 'prompt', 'Text', + 'Image', 'Navigator', 'prototype', 'Textarea', 'clearTimeout', 'Infinity', + 'netscape', 'Radio', 'toolbar', 'close', 'innerHeight', 'Number', 'ref', 'top', 'closed', + 'innerWidth', 'Object', 'RegExp', 'toString', 'confirm', 'isFinite', 'onBlur', 'releaseEvents', + 'unescape', 'constructor', 'isNan', 'onError', 'Reset', 'untaint', 'Date', 'java', 'onFocus', + 'resizeBy', 'unwatch', 'defaultStatus', 'JavaArray', 'onLoad', 'resizeTo', 'valueOf', 'document', + 'JavaClass', 'onUnload', 'routeEvent', 'watch', 'Document', 'JavaObject', 'open', 'scroll', 'window', + 'Element', 'JavaPackage', 'opener', 'scrollbars', 'Window', 'escape', 'length', 'Option', 'scrollBy' + ] + ,'functions' : [ + // common functions for Window object + 'alert', 'Array', 'back', 'blur', 'clearInterval', 'close', 'confirm', 'eval ', 'focus', 'forward', 'home', + 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove', + 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'scrollTo', 'setInterval', 'status', + 'stop' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'statements' : 'color: #60CA00;' + ,'keywords' : 'color: #48BDDF;' + ,'functions' : 'color: #2B60FF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #0038E1;' + + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/pas.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/pas.js new file mode 100755 index 000000000..2038539f5 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/pas.js @@ -0,0 +1,82 @@ +editAreaLoader.load_syntax["pas"] = { + 'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {'{' : '}', '(*':'*)'} + ,'QUOTEMARKS' : {1: '"', 2: "'"} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'constants' : [ + 'Blink', 'Black', 'Blue', 'Green', 'Cyan', 'Red', + 'Magenta', 'Brown', 'LightGray', 'DarkGray', + 'LightBlue', 'LightGreen', 'LightCyan', 'LightRed', + 'LightMagenta', 'Yellow', 'White', 'MaxSIntValue', + 'MaxUIntValue', 'maxint', 'maxLongint', 'maxSmallint', + 'erroraddr', 'errorcode', 'LineEnding' + ] + ,'keywords' : [ + 'in', 'or', 'div', 'mod', 'and', 'shl', 'shr', 'xor', + 'pow', 'is', 'not','Absolute', 'And_then', 'Array', + 'Begin', 'Bindable', 'Case', 'Const', 'Do', 'Downto', + 'Else', 'End', 'Export', 'File', 'For', 'Function', + 'Goto', 'If', 'Import', 'Implementation', 'Inherited', + 'Inline', 'Interface', 'Label', 'Module', 'Nil', + 'Object', 'Of', 'Only', 'Operator', 'Or_else', + 'Otherwise', 'Packed', 'Procedure', 'Program', + 'Protected', 'Qualified', 'Record', 'Repeat', + 'Restricted', 'Set', 'Then', 'To', 'Type', 'Unit', + 'Until', 'Uses', 'Value', 'Var', 'Virtual', 'While', + 'With' + ] + ,'functions' : [ + 'Abs', 'Addr', 'Append', 'Arctan', 'Assert', 'Assign', + 'Assigned', 'BinStr', 'Blockread', 'Blockwrite', + 'Break', 'Chdir', 'Chr', 'Close', 'CompareByte', + 'CompareChar', 'CompareDWord', 'CompareWord', 'Concat', + 'Continue', 'Copy', 'Cos', 'CSeg', 'Dec', 'Delete', + 'Dispose', 'DSeg', 'Eof', 'Eoln', 'Erase', 'Exclude', + 'Exit', 'Exp', 'Filepos', 'Filesize', 'FillByte', + 'Fillchar', 'FillDWord', 'Fillword', 'Flush', 'Frac', + 'Freemem', 'Getdir', 'Getmem', 'GetMemoryManager', + 'Halt', 'HexStr', 'Hi', 'High', 'Inc', 'Include', + 'IndexByte', 'IndexChar', 'IndexDWord', 'IndexWord', + 'Insert', 'IsMemoryManagerSet', 'Int', 'IOresult', + 'Length', 'Ln', 'Lo', 'LongJmp', 'Low', 'Lowercase', + 'Mark', 'Maxavail', 'Memavail', 'Mkdir', 'Move', + 'MoveChar0', 'New', 'Odd', 'OctStr', 'Ofs', 'Ord', + 'Paramcount', 'Paramstr', 'Pi', 'Pos', 'Power', 'Pred', + 'Ptr', 'Random', 'Randomize', 'Read', 'Readln', + 'Real2Double', 'Release', 'Rename', 'Reset', 'Rewrite', + 'Rmdir', 'Round', 'Runerror', 'Seek', 'SeekEof', + 'SeekEoln', 'Seg', 'SetMemoryManager', 'SetJmp', + 'SetLength', 'SetString', 'SetTextBuf', 'Sin', 'SizeOf', + 'Sptr', 'Sqr', 'Sqrt', 'SSeg', 'Str', 'StringOfChar', + 'Succ', 'Swap', 'Trunc', 'Truncate', 'Upcase', 'Val', + 'Write', 'WriteLn' + ] + ,'types' : [ + 'Integer', 'Shortint', 'SmallInt', 'Longint', + 'Longword', 'Int64', 'Byte', 'Word', 'Cardinal', + 'QWord', 'Boolean', 'ByteBool', 'LongBool', 'Char', + 'Real', 'Single', 'Double', 'Extended', 'Comp', + 'String', 'ShortString', 'AnsiString', 'PChar' + ] + } + ,'OPERATORS' :[ + '@', '*', '+', '-', '/', '^', ':=', '<', '=', '>' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'specials' : 'color: #EE0000;' + ,'constants' : 'color: #654321;' + ,'keywords' : 'color: #48BDDF;' + ,'functions' : 'color: #449922;' + ,'types' : 'color: #2B60FF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #60CA00;' + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/php.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/php.js new file mode 100755 index 000000000..535a22bd3 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/php.js @@ -0,0 +1,75 @@ +editAreaLoader.load_syntax["php"] = { + 'COMMENT_SINGLE' : {1 : '//', 2 : '#'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'include', 'require', 'include_once', 'require_once', + 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', + 'endif', 'switch', 'case', 'endswitch', + 'return', 'break', 'continue' + ] + ,'reserved' : [ + '_GET', '_POST', '_SERVER', '_FILES', '_ENV', '_COOKIE', '_REQUEST', + 'null', '__LINE__', '__FILE__', + 'false', '<?php', '?>', '<?', + '<script language', '</script>', + 'true', 'var', 'default', + 'function', 'class', 'new', '&new', 'this', + '__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION', + 'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR', + 'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR', + 'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT', + 'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE', + 'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR', + 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL' + + ] + ,'functions' : [ + 'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined', + 'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions', + 'extension_loaded', 'get_extension_funcs', 'debug_backtrace', + 'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv', + 'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime', + 'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar', + 'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown', + 'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate', + 'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode', + 'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat', + 'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from', + 'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport', + 'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die' + + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '&&', '||' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + // highlight all variables ($...) + 'variables' : { + 'search' : '()(\\$\\w+)()' + ,'class' : 'variables' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #879EFA;' + ,'KEYWORDS' : { + 'reserved' : 'color: #48BDDF;' + ,'functions' : 'color: #0040FD;' + ,'statements' : 'color: #60CA00;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #2B60FF;' + ,'REGEXPS' : { + 'variables' : 'color: #E0BD54;' + } + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/python.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/python.js new file mode 100755 index 000000000..456b27e97 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/python.js @@ -0,0 +1,144 @@ +/** + * Python syntax v 1.1 + * + * v1.1 by Andre Roberge (2006/12/27) + * +**/ +editAreaLoader.load_syntax["python"] = { + 'COMMENT_SINGLE' : {1 : '#'} + ,'COMMENT_MULTI' : {} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + /* + ** Set 1: reserved words + ** http://python.org/doc/current/ref/keywords.html + ** Note: 'as' and 'with' have been added starting with Python 2.5 + */ + 'reserved' : [ + 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', + 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', + 'import', 'is', 'in', 'lambda', 'not', 'or', 'pass', 'print', 'raise', + 'return', 'try', 'while', 'with', 'yield' + //the following are *almost* reserved; we'll treat them as such + , 'False', 'True', 'None' + ] + /* + ** Set 2: builtins + ** http://python.org/doc/current/lib/built-in-funcs.html + */ + ,'builtins' : [ + '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp', + 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', + 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', + 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals', + 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', + 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', + 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', + 'vars', 'xrange', 'zip', + // Built-in constants: http://www.python.org/doc/2.4.1/lib/node35.html + //'False', 'True', 'None' have been included in 'reserved' + 'NotImplemented', 'Ellipsis', + // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html + 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError', + 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError', + 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError', + 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError', + 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', + 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError', + 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning', + 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning', + 'RuntimeWarning', 'FutureWarning', + // we will include the string methods as well + // http://python.org/doc/current/lib/string-methods.html + 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', + 'find', 'index', 'isalnum', 'isaplpha', 'isdigit', 'islower', 'isspace', 'istitle', + 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', + 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', + 'translate', 'upper', 'zfill' + ] + /* + ** Set 3: standard library + ** http://python.org/doc/current/lib/modindex.html + */ + ,'stdlib' : [ + '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm', + 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer', + 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi', + 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop', + 'collections', 'colorsys', 'commands', 'compileall', 'compiler', 'compiler', + 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt', + 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE', + 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm', + 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl', + 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl', + 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob', + 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib', + 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect', + 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap', + 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify', + 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator', + 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes', + 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile', + 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random', + 're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter', + 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve', + 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd', + 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string', + 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev', + 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios', + 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token', + 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2', + 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings', + 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml', + 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib' + + ] + /* + ** Set 4: special methods + ** http://python.org/doc/current/ref/specialnames.html + */ + ,'special' : [ + // Basic customization: http://python.org/doc/current/ref/customization.html + '__new__', '__init__', '__del__', '__repr__', '__str__', + '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__', + '__hash__', '__nonzero__', '__unicode__', '__dict__', + // Attribute access: http://python.org/doc/current/ref/attribute-access.html + '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__', + '__delete__', '__slots__', + // Class creation, callable objects + '__metaclass__', '__call__', + // Container types: http://python.org/doc/current/ref/sequence-types.html + '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__', + '__getslice__', '__setslice__', '__delslice__', + // Numeric types: http://python.org/doc/current/ref/numeric-types.html + '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__', + '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__', + '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__', + '__long__','__lshift__', + '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__', + '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__', + '__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__', + '__sub__','__xor__' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ',' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #660066;' + ,'KEYWORDS' : { + 'reserved' : 'color: #0000FF;' + ,'builtins' : 'color: #009900;' + ,'stdlib' : 'color: #009900;' + ,'special': 'color: #006666;' + } + ,'OPERATORS' : 'color: #993300;' + ,'DELIMITERS' : 'color: #993300;' + + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/vb.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/vb.js new file mode 100755 index 000000000..18cc87cf7 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/vb.js @@ -0,0 +1,52 @@ +editAreaLoader.load_syntax["vb"] = { + 'COMMENT_SINGLE' : {1 : "'"} + ,'COMMENT_MULTI' : { } + ,'QUOTEMARKS' : {1: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'if','then','for','each','while','do','loop', + 'else','elseif','select','case','end select', + 'until','next','step','to','in','end if' + ] + ,'keywords' : [ + 'empty','isempty','nothing','null','isnull','true','false', + 'set','call', + 'sub','end sub','function','end function','exit','exit function', + 'dim','Mod','In','private','public','shared','const' + ] + + ,'functions' : [ + 'CDate','Date','DateAdd','DateDiff','DatePart','DateSerial','DateValue','Day','FormatDateTime', + 'Hour','IsDate','Minute','Month', + 'MonthName','Now','Second','Time','Timer','TimeSerial','TimeValue','Weekday','WeekdayName ','Year', + 'Asc','CBool','CByte','CCur','CDate','CDbl','Chr','CInt','CLng','CSng','CStr','Hex','Oct','FormatCurrency', + 'FormatDateTime','FormatNumber','FormatPercent','Abs','Atn','Cos','Exp','Hex','Int','Fix','Log','Oct', + 'Rnd','Sgn','Sin','Sqr','Tan', + 'Array','Filter','IsArray','Join','LBound','Split','UBound', + 'InStr','InStrRev','LCase','Left','Len','LTrim','RTrim','Trim','Mid','Replace','Right','Space','StrComp', + 'String','StrReverse','UCase', + 'CreateObject','Eval','GetLocale','GetObject','GetRef','InputBox','IsEmpty','IsNull','IsNumeric', + 'IsObject','LoadPicture','MsgBox','RGB','Round','ScriptEngine','ScriptEngineBuildVersion','ScriptEngineMajorVersion', + 'ScriptEngineMinorVersion','SetLocale','TypeName','VarType' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '!', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #99CC00;' + ,'QUOTESMARKS': 'color: #333399;' + ,'KEYWORDS' : { + 'keywords' : 'color: #3366FF;' + ,'functions' : 'color: #0000FF;' + ,'statements' : 'color: #3366FF;' + } + ,'OPERATORS' : 'color: #FF0000;' + ,'DELIMITERS' : 'color: #0000FF;' + + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/xml.js b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/xml.js new file mode 100755 index 000000000..a043dd63a --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/edit_area/reg_syntax/xml.js @@ -0,0 +1,56 @@ +/* +* last update: 2006-08-24 +*/ + +editAreaLoader.load_syntax["xml"] = { + 'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {''} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + } + ,'OPERATORS' :[ + ] + ,'DELIMITERS' :[ + ] + ,'REGEXPS' : { + 'xml' : { + 'search' : '()(<\\?[^>]*?\\?>)()' + ,'class' : 'xml' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + ,'cdatas' : { + 'search' : '()()()' + ,'class' : 'cdata' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + ,'tags' : { + 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'tags' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'attributes' : { + 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' + ,'class' : 'attributes' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + } + ,'OPERATORS' : 'color: #E775F0;' + ,'DELIMITERS' : '' + ,'REGEXPS' : { + 'attributes': 'color: #B1AC41;' + ,'tags': 'color: #E62253;' + ,'xml': 'color: #8DCFB5;' + ,'cdata': 'color: #50B020;' + } + } +}; diff --git a/admin-dev/ajaxfilemanager/jscripts/for_fckeditor.js b/admin-dev/ajaxfilemanager/jscripts/for_fckeditor.js new file mode 100755 index 000000000..7cc7788f6 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/for_fckeditor.js @@ -0,0 +1,27 @@ +//function below added by logan (cailongqun [at] yahoo [dot] com [dot] cn) from www.phpletter.com +function selectFile() +{ + var selectedFileRowNum = $('#selectedFileRowNum').val(); + if(selectedFileRowNum != '' && $('#row' + selectedFileRowNum)) + { + + // insert information now + var url = $('#fileUrl'+selectedFileRowNum).val(); + window.opener.SetUrl( url ) ; + window.close() ; + + }else + { + alert(noFileSelected); + } + + +} + + + +function cancelSelectFile() +{ + // close popup window + window.close() ; +} \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/for_form.js b/admin-dev/ajaxfilemanager/jscripts/for_form.js new file mode 100755 index 000000000..8ac37e108 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/for_form.js @@ -0,0 +1,16 @@ +function selectFile(url) +{ + window.opener.document.getElementById(elementId).value = url; + window.close() ; + + +} + + + +function cancelSelectFile() +{ + // close popup window + window.close() ; +} + diff --git a/admin-dev/ajaxfilemanager/jscripts/for_stand_alone.js b/admin-dev/ajaxfilemanager/jscripts/for_stand_alone.js new file mode 100755 index 000000000..16b2dc8af --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/for_stand_alone.js @@ -0,0 +1,5 @@ +function cancelSelectFile() +{ + // close popup window + window.close(); +} \ No newline at end of file diff --git a/admin-dev/ajaxfilemanager/jscripts/for_tinymce.js b/admin-dev/ajaxfilemanager/jscripts/for_tinymce.js new file mode 100755 index 000000000..bc8cfa6b9 --- /dev/null +++ b/admin-dev/ajaxfilemanager/jscripts/for_tinymce.js @@ -0,0 +1,248 @@ +// Some global instances +var tinymce = null, tinyMCEPopup, tinyMCE; + +tinyMCEPopup = { + init : function() { + var t = this, w = t.getWin(), ti; + + // Find API + tinymce = w.tinymce; + tinyMCE = w.tinyMCE; + t.editor = tinymce.EditorManager.activeEditor; + t.params = t.editor.windowManager.params; + + // Setup local DOM + t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document); + t.dom.loadCSS(t.editor.settings.popup_css); + + // Setup on init listeners + t.listeners = []; + t.onInit = { + add : function(f, s) { + t.listeners.push({func : f, scope : s}); + } + }; + + t.isWindow = !t.getWindowArg('mce_inline'); + t.id = t.getWindowArg('mce_window_id'); + t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window); + }, + + getWin : function() { + return window.dialogArguments || opener || parent || top; + }, + + getWindowArg : function(n, dv) { + var v = this.params[n]; + + return tinymce.is(v) ? v : dv; + }, + + getParam : function(n, dv) { + return this.editor.getParam(n, dv); + }, + + getLang : function(n, dv) { + return this.editor.getLang(n, dv); + }, + + execCommand : function(cmd, ui, val) { + this.restoreSelection(); + return this.editor.execCommand(cmd, ui, val); + }, + + resizeToInnerSize : function() { + var t = this, n, b = document.body, vp = t.dom.getViewPort(window), dw, dh; + + dw = t.getWindowArg('mce_width') - vp.w; + dh = t.getWindowArg('mce_height') - vp.h; + + if (t.isWindow) + window.resizeBy(dw, dh); + else + t.editor.windowManager.resizeBy(dw, dh, t.id); + }, + + executeOnLoad : function(s) { + this.onInit.add(function() { + eval(s); + }); + }, + + storeSelection : function() { + this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple'); + }, + + restoreSelection : function() { + var t = tinyMCEPopup; + + if (!t.isWindow && tinymce.isIE) + t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark); + }, + + requireLangPack : function() { + var u = this.getWindowArg('plugin_url') || this.getWindowArg('theme_url'); + + if (u) + document.write(''); + }, + + pickColor : function(e, element_id) { + this.execCommand('mceColorPicker', true, { + color : document.getElementById(element_id).value, + func : function(c) { + document.getElementById(element_id).value = c; + + if (tinymce.is(document.getElementById(element_id).onchange, 'function')) + document.getElementById(element_id).onchange(); + } + }); + }, + + openBrowser : function(element_id, type, option) { + tinyMCEPopup.restoreSelection(); + this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window); + }, + + close : function() { + var t = this; + + t.dom = t.dom.doc = null; // Cleanup + t.editor.windowManager.close(window, t.id); + }, + + // Internal functions + + _restoreSelection : function() { + var e = window.event.srcElement; + + if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button')) + tinyMCEPopup.restoreSelection(); + }, + +/* _restoreSelection : function() { + var e = window.event.srcElement; + + // If user focus a non text input or textarea + if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text') + tinyMCEPopup.restoreSelection(); + },*/ + + _onDOMLoaded : function() { + var t = this, ti = document.title, bm, h; + + // Translate page + h = document.body.innerHTML; + + // Replace a=x with a="x" in IE + if (tinymce.isIE) + h = h.replace(/ (value|title|alt)=([^\s>]+)/gi, ' $1="$2"'); + + document.body.innerHTML = t.editor.translate(h); + document.title = ti = t.editor.translate(ti); + document.body.style.display = ''; + + // Restore selection in IE when focus is placed on a non textarea or input element of the type text + if (tinymce.isIE) + document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection); + + t.restoreSelection(); + + // Call onInit + tinymce.each(t.listeners, function(o) { + o.func.call(o.scope, t.editor); + }); + + t.resizeToInnerSize(); + + if (t.isWindow) + window.focus(); + else + t.editor.windowManager.setTitle(ti, t.id); + + if (!tinymce.isIE && !t.isWindow) { + tinymce.dom.Event._add(document, 'focus', function() { + t.editor.windowManager.focus(t.id) + }); + } + + // Patch for accessibility + tinymce.each(t.dom.select('select'), function(e) { + e.onkeydown = tinyMCEPopup._accessHandler; + }); + + // Move focus to window + window.focus(); + }, + + _accessHandler : function(e) { + var e = e || window.event; + + if (e.keyCode == 13 || e.keyCode == 32) { + e = e.target || e.srcElement; + + if (e.onchange) + e.onchange(); + + return tinymce.dom.Event.cancel(e); + } + }, + + _wait : function() { + var t = this, ti; + + if (tinymce.isIE && document.location.protocol != 'https:') { + // Fake DOMContentLoaded on IE + document.write(''; + $iso = Db::getInstance()->getValue('SELECT iso_code FROM '._DB_PREFIX_.'lang WHERE `id_lang` = '.(int)($cookie->id_lang)); + if ($iso != 'en') + echo ''; + echo ''; +} + +/** + * Generate a new settings file, only transmitted parameters are updated + * + * @param string $baseUri Base URI + * @param string $theme Theme name (eg. default) + * @param array $arrayDB Parameters in order to connect to database + */ +function rewriteSettingsFile($baseUrls = NULL, $theme = NULL, $arrayDB = NULL) +{ + $defines = array(); + $defines['__PS_BASE_URI__'] = ($baseUrls AND $baseUrls['__PS_BASE_URI__']) ? $baseUrls['__PS_BASE_URI__'] : __PS_BASE_URI__; + $defines['_MEDIA_SERVER_1_'] = ($baseUrls AND isset($baseUrls['_MEDIA_SERVER_1_'])) ? $baseUrls['_MEDIA_SERVER_1_'] : _MEDIA_SERVER_1_; + $defines['_MEDIA_SERVER_2_'] = ($baseUrls AND isset($baseUrls['_MEDIA_SERVER_2_'])) ? $baseUrls['_MEDIA_SERVER_2_'] : _MEDIA_SERVER_2_; + $defines['_MEDIA_SERVER_3_'] = ($baseUrls AND isset($baseUrls['_MEDIA_SERVER_3_'])) ? $baseUrls['_MEDIA_SERVER_3_'] : _MEDIA_SERVER_3_; + $defines['_PS_CACHING_SYSTEM_'] = _PS_CACHING_SYSTEM_; + $defines['_PS_CACHE_ENABLED_'] = _PS_CACHE_ENABLED_; + $defines['_THEME_NAME_'] = $theme ? $theme : _THEME_NAME_; + $defines['_DB_NAME_'] = (($arrayDB AND isset($arrayDB['_DB_NAME_'])) ? $arrayDB['_DB_NAME_'] : _DB_NAME_); + $defines['_MYSQL_ENGINE_'] = _MYSQL_ENGINE_; + $defines['_DB_SERVER_'] = (($arrayDB AND isset($arrayDB['_DB_SERVER_'])) ? $arrayDB['_DB_SERVER_'] : _DB_SERVER_); + $defines['_DB_USER_'] = (($arrayDB AND isset($arrayDB['_DB_USER_'])) ? $arrayDB['_DB_USER_'] : _DB_USER_); + $defines['_DB_PREFIX_'] = (($arrayDB AND isset($arrayDB['_DB_PREFIX_'])) ? $arrayDB['_DB_PREFIX_'] : _DB_PREFIX_); + $defines['_DB_PASSWD_'] = (($arrayDB AND isset($arrayDB['_DB_PASSWD_'])) ? $arrayDB['_DB_PASSWD_'] : _DB_PASSWD_); + $defines['_DB_TYPE_'] = (($arrayDB AND isset($arrayDB['_DB_TYPE_'])) ? $arrayDB['_DB_TYPE_'] : _DB_TYPE_); + $defines['_COOKIE_KEY_'] = addslashes(_COOKIE_KEY_); + $defines['_COOKIE_IV_'] = addslashes(_COOKIE_IV_); + if (defined('_RIJNDAEL_KEY_')) + $defines['_RIJNDAEL_KEY_'] = addslashes(_RIJNDAEL_KEY_); + if (defined('_RIJNDAEL_IV_')) + $defines['_RIJNDAEL_IV_'] = addslashes(_RIJNDAEL_IV_); + $defines['_PS_VERSION_'] = addslashes(_PS_VERSION_); + $content = " $value) + $content .= 'define(\''.$k.'\', \''.addslashes($value).'\');'."\n"; + $content .= "\n?>"; + if ($fd = @fopen(PS_ADMIN_DIR.'/../config/settings.inc.php', 'w')) + { + fwrite($fd, $content); + fclose($fd); + return true; + } + return false; +} + +/** + * Display SQL date in friendly format + * + * @param string $sqlDate Date in SQL format (YYYY-MM-DD HH:mm:ss) + * @param boolean $withTime Display both date and time + * @todo Several formats (french : DD-MM-YYYY) + */ +function displayDate($sqlDate, $withTime = false) +{ + return strftime('%Y-%m-%d'.($withTime ? ' %H:%M:%S' : ''), strtotime($sqlDate)); +} + +/** + * Return path to a product category + * + * @param string $urlBase Start URL + * @param integer $id_category Start category + * @param string $path Current path + * @param string $highlight String to highlight (in XHTML/CSS) + * @param string $type Category type (products/cms) + */ +function getPath($urlBase, $id_category, $path = '', $highlight = '', $categoryType = 'catalog') +{ + global $cookie; + + if ($categoryType == 'catalog') + { + $category = Db::getInstance()->getRow(' + SELECT id_category, level_depth, nleft, nright + FROM '._DB_PREFIX_.'category + WHERE id_category = '.(int)$id_category); + + if (isset($category['id_category'])) + { + $categories = Db::getInstance()->ExecuteS(' + SELECT c.id_category, cl.name, cl.link_rewrite + FROM '._DB_PREFIX_.'category c + LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = c.id_category) + WHERE c.nleft <= '.(int)$category['nleft'].' AND c.nright >= '.(int)$category['nright'].' AND cl.id_lang = '.(int)($cookie->id_lang).' + ORDER BY c.level_depth ASC + LIMIT '.(int)($category['level_depth'] + 1)); + + $fullPath = ''; + $n = 1; + $nCategories = (int)sizeof($categories); + foreach ($categories AS $category) + { + $edit = ' '; + $fullPath .= $edit. + ($n < $nCategories ? '' : ''). + (!empty($highlight) ? str_ireplace($highlight, ''.htmlentities($highlight, ENT_NOQUOTES, 'UTF-8').'', $category['name']) : $category['name']). + ($n < $nCategories ? '' : ''). + (($n++ != $nCategories OR !empty($path)) ? ' > ' : ''); + } + + return $fullPath.$path; + } + } + elseif ($categoryType == 'cms') + { + $category = new CMSCategory($id_category, (int)($cookie->id_lang)); + if (!$category->id) + return $path; + + $name = ($highlight != NULL) ? str_ireplace($highlight, ''.$highlight.'', CMSCategory::hideCMSCategoryPosition($category->name)) : CMSCategory::hideCMSCategoryPosition($category->name); + $edit = ' + Modify '; + if ($category->id == 1) + $edit = ' + Home '; + $path = $edit.' + '.$name.' > '.$path; + if ($category->id == 1) + return substr($path, 0, strlen($path) - 3); + return getPath($urlBase, $category->id_parent, $path, '', 'cms'); + } +} + +function getDirContent($path) +{ + $content = array(); + if (is_dir($path)) + { + $d = dir($path); + while (false !== ($entry = $d->read())) + if ($entry{0} != '.') + $content[] = $entry; + $d->close(); + } + return $content; +} + +function createDir($path, $rights) +{ + if (file_exists($path)) + return true; + return @mkdir($path, $rights); +} + +function checkPSVersion() +{ + libxml_set_streams_context(stream_context_create(array('http' => array('timeout' => 3)))); + if ($feed = @simplexml_load_file('http://www.prestashop.com/xml/version.xml') AND _PS_VERSION_ < $feed->version->num) + return array('name' => $feed->version->name, 'link' => $feed->download->link); + return false; +} + +function translate($string) +{ + global $_LANGADM; + if (!is_array($_LANGADM)) + return str_replace('"', '"', $string); + $key = md5(str_replace('\'', '\\\'', $string)); + $str = (key_exists('index'.$key, $_LANGADM)) ? $_LANGADM['index'.$key] : ((key_exists('index'.$key, $_LANGADM)) ? $_LANGADM['index'.$key] : $string); + return str_replace('"', '"', stripslashes($str)); +} + +function recursiveTab($id_tab) +{ + global $cookie, $tabs; + + $adminTab = Tab::getTab((int)($cookie->id_lang), $id_tab); + $tabs[]= $adminTab; + if ($adminTab['id_parent'] > 0) + recursiveTab($adminTab['id_parent']); +} + +function checkingTab($tab) +{ + global $adminObj, $cookie; + + $tab = trim($tab); + if (!Validate::isTabName($tab)) + return false; + if (!($id_tab = Tab::getIdFromClassName($tab))) + { + if (isset(AdminTab::$tabParenting[$tab])) + Tools::redirectAdmin('?tab='.AdminTab::$tabParenting[$tab].'&token='.Tools::getAdminTokenLite(AdminTab::$tabParenting[$tab])); + echo Tools::displayError('Tab cannot be found.'); + return false; + } + if ($module = Db::getInstance()->getValue('SELECT module FROM '._DB_PREFIX_.'tab WHERE class_name = \''.pSQL($tab).'\'') AND file_exists(_PS_MODULE_DIR_.'/'.$module.'/'.$tab.'.php')) + include_once(_PS_MODULE_DIR_.'/'.$module.'/'.$tab.'.php'); + elseif (file_exists(PS_ADMIN_DIR.'/tabs/'.$tab.'.php')) + include_once(PS_ADMIN_DIR.'/tabs/'.$tab.'.php'); + + if (!class_exists($tab, false) OR !$id_tab) + { + echo Tools::displayError('Tab file cannot be found.'); + return false; + } + $adminObj = new $tab; + if (!$adminObj->viewAccess() AND ($adminObj->table != 'employee' OR $cookie->id_employee != Tools::getValue('id_employee') OR !Tools::isSubmit('updateemployee'))) + { + $adminObj->_errors = array(Tools::displayError('Access denied')); + echo $adminObj->displayErrors(); + return false; + } + return ($id_tab); +} + +function checkTabRights($id_tab) +{ + global $cookie; + static $tabAccesses = NULL; + + if ($tabAccesses === NULL) + $tabAccesses = Profile::getProfileAccesses($cookie->profile); + + if (isset($tabAccesses[(int)($id_tab)]['view'])) + return ($tabAccesses[(int)($id_tab)]['view'] === '1'); + return false; +} + + +/** + * Converts a simpleXML element into an array. Preserves attributes and everything. + * You can choose to get your elements either flattened, or stored in a custom index that + * you define. + * For example, for a given element + * + * if you choose to flatten attributes, you would get: + * $array['field']['name'] = 'someName'; + * $array['field']['type'] = 'someType'; + * If you choose not to flatten, you get: + * $array['field']['@attributes']['name'] = 'someName'; + * _____________________________________ + * Repeating fields are stored in indexed arrays. so for a markup such as: + * + * a + * b + * c + * + * you array would be: + * $array['parent']['child'][0] = 'a'; + * $array['parent']['child'][1] = 'b'; + * ...And so on. + * _____________________________________ + * @param simpleXMLElement $xml the XML to convert + * @param boolean $flattenValues Choose wether to flatten values + * or to set them under a particular index. + * defaults to true; + * @param boolean $flattenAttributes Choose wether to flatten attributes + * or to set them under a particular index. + * Defaults to true; + * @param boolean $flattenChildren Choose wether to flatten children + * or to set them under a particular index. + * Defaults to true; + * @param string $valueKey index for values, in case $flattenValues was set to + * false. Defaults to "@value" + * @param string $attributesKey index for attributes, in case $flattenAttributes was set to + * false. Defaults to "@attributes" + * @param string $childrenKey index for children, in case $flattenChildren was set to + * false. Defaults to "@children" + * @return array the resulting array. + */ +function simpleXMLToArray ($xml, $flattenValues = true, $flattenAttributes = true, $flattenChildren = true, $valueKey = '@value', $attributesKey = '@attributes', $childrenKey = '@children') +{ + $return = array(); + if (!($xml instanceof SimpleXMLElement)) + return $return; + + $name = $xml->getName(); + $_value = trim((string)$xml); + if (strlen($_value) == 0) + $_value = null; + + if ($_value !== null) + { + if (!$flattenValues) + $return[$valueKey] = $_value; + else + $return = $_value; + } + + $children = array(); + $first = true; + foreach($xml->children() as $elementName => $child) + { + $value = simpleXMLToArray($child, $flattenValues, $flattenAttributes, $flattenChildren, $valueKey, $attributesKey, $childrenKey); + if (isset($children[$elementName])) + { + if ($first) + { + $temp = $children[$elementName]; + unset($children[$elementName]); + $children[$elementName][] = $temp; + $first=false; + } + $children[$elementName][] = $value; + } + else + $children[$elementName] = $value; + } + + if (count($children) > 0 ) + { + if (!$flattenChildren) + $return[$childrenKey] = $children; + else + $return = array_merge($return, $children); + } + + $attributes = array(); + foreach($xml->attributes() as $name => $value) + $attributes[$name] = trim($value); + + if (count($attributes) > 0) + { + if (!$flattenAttributes) + $return[$attributesKey] = $attributes; + else + $return = array_merge($return, $attributes); + } + + return $return; +} diff --git a/admin-dev/get-file-admin.php b/admin-dev/get-file-admin.php new file mode 100644 index 000000000..3d179a1ee --- /dev/null +++ b/admin-dev/get-file-admin.php @@ -0,0 +1,31 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); + +include(PS_ADMIN_DIR.'/../get-file.php'); + diff --git a/admin-dev/grider.php b/admin-dev/grider.php new file mode 100644 index 000000000..7dffa2594 --- /dev/null +++ b/admin-dev/grider.php @@ -0,0 +1,64 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(dirname(__FILE__).'/../config/config.inc.php'); +$cookie = new Cookie('psAdmin'); + +$module = Tools::getValue('module'); +$render = Tools::getValue('render'); +$type = Tools::getValue('type'); +$option = Tools::getValue('option'); +$width = (int)(Tools::getValue('width', 600)); +$height = (int)(Tools::getValue('height', 920)); +$start = (int)(Tools::getValue('start', 0)); +$limit = (int)(Tools::getValue('limit', 40)); +$sort = Tools::getValue('sort', 0); // Should be a String. Default value is an Integer because we don't know what can be the name of the column to sort. +$dir = Tools::getValue('dir', 0); // Should be a String : Either ASC or DESC +$id_employee = (int)(Tools::getValue('id_employee')); +$id_lang = (int)(Tools::getValue('id_lang')); + +if ($cookie->id_employee != $id_employee) + die; + +if (!Validate::isModuleName($module)) + die(Tools::displayError()); + +if (!Tools::file_exists_cache($module_path = dirname(__FILE__).'/../modules/'.$module.'/'.$module.'.php')) + die(Tools::displayError()); + +require_once($module_path); + +$grid = new $module(); +$grid->setEmployee($id_employee); +$grid->setLang($id_lang); +if ($option) + $grid->setOption($option); + +$grid->create($render, $type, $width, $height, $start, $limit, $sort, $dir); +$grid->render(); + + diff --git a/admin-dev/header.inc.php b/admin-dev/header.inc.php new file mode 100644 index 000000000..67c783879 --- /dev/null +++ b/admin-dev/header.inc.php @@ -0,0 +1,173 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +// P3P Policies (http://www.w3.org/TR/2002/REC-P3P-20020416/#compact_policies) +header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'); +header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); +header('Pragma: no-cache'); +header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); + +require_once(dirname(__FILE__).'/init.php'); + +echo ' + + + + + + + + + PrestaShop™ - '.translate('Administration panel').' + + + + + + + + + + '.Module::hookExec('backOfficeHeader').' + + + + bo_color)) ? 'style="background:'.Tools::htmlentitiesUTF8($employee->bo_color).'"' : '').'> +
+
+
+ '.Configuration::get('PS_SHOP_NAME').'
+ '.Tools::substr($employee->firstname, 0, 1).'. '.htmlentities($employee->lastname, ENT_COMPAT, 'UTF-8').' + [ '.translate('logout').' ] + - '.translate('View my shop').' + - '.translate('My preferences').' +
+ +
+ + +
+
 
+ '.Module::hookExec('backOfficeTop').' + '.$echoLis; +if ($employee->bo_uimode == 'hover') + echo ' '; +echo ' +
+
' + .(file_exists(PS_ADMIN_DIR.'/../install') ? '
' + .translate('For security reasons, you must also:').' '. + translate('deleted the /install folder'). + '
' : '').' + '; diff --git a/admin-dev/import/.htaccess b/admin-dev/import/.htaccess new file mode 100644 index 000000000..66d49b1bd --- /dev/null +++ b/admin-dev/import/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/admin-dev/import/index.php b/admin-dev/import/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/admin-dev/import/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/admin-dev/index.php b/admin-dev/index.php new file mode 100644 index 000000000..bcb23420e --- /dev/null +++ b/admin-dev/index.php @@ -0,0 +1,142 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('_PS_ADMIN_DIR_', getcwd()); +define('PS_ADMIN_DIR', _PS_ADMIN_DIR_); // Retro-compatibility + +include(PS_ADMIN_DIR.'/../config/config.inc.php'); +include(PS_ADMIN_DIR.'/functions.php'); +include(PS_ADMIN_DIR.'/header.inc.php'); +if (empty($tab) and !sizeof($_POST)) +{ + $tab = 'AdminHome'; + $_POST['tab'] = 'AdminHome'; + $_POST['token'] = Tools::getAdminToken($tab.intval(checkingTab($tab)).intval($cookie->id_employee)); +} + + + if ($id_tab = checkingTab($tab)) + { + $isoUser = Language::getIsoById(intval($cookie->id_lang)); + $tabs = array(); + recursiveTab($id_tab); + $tabs = array_reverse($tabs); + $bread = ''; + $country = new Country((int)Configuration::get('PS_COUNTRY_DEFAULT')); + + foreach ($tabs AS $key => $item) + $bread .= ' + '.((sizeof($tabs) - 1 > $key) + ? '' + : '').' + '.$item['name'].((sizeof($tabs) - 1 > $key) ? '' : ''); + + echo''; + + + echo '
+ + '.translate('Back Office').' + '.$bread.' +
'; + + if (Validate::isLoadedObject($adminObj)) + { + if ($adminObj->checkToken()) + { + /* Filter memorization */ + if (isset($_POST) AND !empty($_POST) AND isset($adminObj->table)) + foreach ($_POST AS $key => $value) + if (is_array($adminObj->table)) + { + foreach ($adminObj->table AS $table) + if (strncmp($key, $table.'Filter_', 7) === 0 OR strncmp($key, 'submitFilter', 12) === 0) + $cookie->$key = !is_array($value) ? $value : serialize($value); + } + elseif (strncmp($key, $adminObj->table.'Filter_', 7) === 0 OR strncmp($key, 'submitFilter', 12) === 0) + $cookie->$key = !is_array($value) ? $value : serialize($value); + + if (isset($_GET) AND !empty($_GET) AND isset($adminObj->table)) + foreach ($_GET AS $key => $value) + if (is_array($adminObj->table)) + { + foreach ($adminObj->table AS $table) + if (strncmp($key, $table.'OrderBy', 7) === 0 OR strncmp($key, $table.'Orderway', 8) === 0) + $cookie->$key = $value; + } + elseif (strncmp($key, $adminObj->table.'OrderBy', 7) === 0 OR strncmp($key, $adminObj->table.'Orderway', 12) === 0) + $cookie->$key = $value; + + $adminObj->displayConf(); + $adminObj->postProcess(); + $adminObj->displayErrors(); + $adminObj->display(); + } + else + { + // If this is an XSS attempt, then we should only display a simple, secure page + ob_clean(); + + // ${1} in the replacement string of the regexp is required, because the token may begin with a number and mix up with it (e.g. $17) + $url = preg_replace('/([&?]token=)[^&]*(&.*)?$/', '${1}'.$adminObj->token.'$2', $_SERVER['REQUEST_URI']); + if (false === strpos($url, '?token=') AND false === strpos($url, '&token=')) + $url .= '&token='.$adminObj->token; + + $message = translate('Invalid security token'); + echo ''.$message.' +
+ + '.$message.' +
'; + echo ' + + + + + + '; + die; + } + } + } + +include(PS_ADMIN_DIR.'/footer.inc.php'); + diff --git a/admin-dev/init.php b/admin-dev/init.php new file mode 100644 index 000000000..0171adbb2 --- /dev/null +++ b/admin-dev/init.php @@ -0,0 +1,82 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +ob_start(); +$timerStart = microtime(true); + +$currentFileName = array_reverse(explode("/", $_SERVER['SCRIPT_NAME'])); +$cookie = new Cookie('psAdmin', substr($_SERVER['SCRIPT_NAME'], strlen(__PS_BASE_URI__), -strlen($currentFileName['0']))); +if (isset($_GET['logout'])) + $cookie->logout(); + +if (!$cookie->isLoggedBack()) +{ + + $destination = substr($_SERVER['REQUEST_URI'], strlen(dirname($_SERVER['SCRIPT_NAME'])) + 1); + Tools::redirectAdmin('login.php'.(empty($destination) || ($destination == 'index.php?logout') ? '' : '?redirect='.$destination)); +} +else +{ + $link = new Link(); + + $currentIndex = $_SERVER['SCRIPT_NAME'].(($tab = Tools::getValue('tab')) ? '?tab='.$tab : ''); + if ($back = Tools::getValue('back')) + $currentIndex .= '&back='.urlencode($back); + + /* Server Params */ + $protocol_link = (Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://'; + $protocol_content = (isset($useSSL) AND $useSSL AND Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://'; + define('_PS_BASE_URL_', Tools::getShopDomain(true)); + define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true)); + + $employee = new Employee((int)$cookie->id_employee); + $cookie->id_lang = (int)$employee->id_lang; + $iso = strtolower(Language::getIsoById($cookie->id_lang ? $cookie->id_lang : Configuration::get('PS_LANG_DEFAULT'))); + include(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php'); + include(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php'); + include(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php'); + + /* attribute id_lang is often needed, so we create a constant for performance reasons */ + define('_USER_ID_LANG_', (int)$cookie->id_lang); + + $path = dirname(__FILE__).'/themes/'; + if (empty($employee->bo_theme) OR !file_exists($path.$employee->bo_theme.'/admin.css')) + { + if (file_exists($path.'oldschool/admin.css')) + $employee->bo_theme = 'oldschool'; + elseif (file_exists($path.'origins/admin.css')) + $employee->bo_theme = 'origins'; + else + foreach (scandir($path) as $theme) + if ($theme[0] != '.' AND file_exists($path.$theme.'/admin.css')) + { + $employee->bo_theme = $theme; + break; + } + $employee->update(); + } +} diff --git a/admin-dev/login.php b/admin-dev/login.php new file mode 100644 index 000000000..251b05860 --- /dev/null +++ b/admin-dev/login.php @@ -0,0 +1,171 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +ob_start(); +define('PS_ADMIN_DIR', getcwd()); + +include(PS_ADMIN_DIR.'/../config/config.inc.php'); +include(PS_ADMIN_DIR.'/functions.php'); + +if ((empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) == 'off') + AND Configuration::get('PS_SSL_ENABLED')) +{ + header('HTTP/1.1 301 Moved Permanently'); + header('Location: '.Tools::getShopDomainSsl(true).$_SERVER['REQUEST_URI']); + exit(); +} + +$errors = array(); + +$cookie = new Cookie('psAdmin', substr($_SERVER['PHP_SELF'], strlen(__PS_BASE_URI__), -10)); +if (!isset($cookie->id_lang)) + $cookie->id_lang = Configuration::get('PS_LANG_DEFAULT'); +$iso = strtolower(Language::getIsoById((int)($cookie->id_lang))); +include(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php'); +include(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php'); + +/* Cookie creation and redirection */ +if (Tools::isSubmit('Submit')) +{ + /* Check fields validity */ + $passwd = trim(Tools::getValue('passwd')); + $email = trim(Tools::getValue('email')); + if (empty($email)) + $errors[] = Tools::displayError('E-mail is empty'); + elseif (!Validate::isEmail($email)) + $errors[] = Tools::displayError('Invalid e-mail address'); + elseif (empty($passwd)) + $errors[] = Tools::displayError('Password is blank'); + elseif (!Validate::isPasswd($passwd)) + $errors[] = Tools::displayError('Invalid password'); + else + { + /* Seeking for employee */ + $employee = new Employee(); + $employee = $employee->getByemail($email, $passwd); + if (!$employee) + { + $errors[] = Tools::displayError('Employee does not exist or password is incorrect.'); + $cookie->logout(); + } + else + { + /* Creating cookie */ + $cookie->id_employee = $employee->id; + $cookie->email = $employee->email; + $cookie->profile = $employee->id_profile; + $cookie->passwd = $employee->passwd; + $cookie->remote_addr = ip2long(Tools::getRemoteAddr()); + $cookie->write(); + /* Redirect to admin panel */ + if (isset($_GET['redirect'])) + $url = strval($_GET['redirect'].(isset($_GET['token']) ? ('&token='.$_GET['token']) : '')); + else + $url = 'index.php'; + if (!Validate::isCleanHtml($url)) + die(Tools::displayError()); + echo ' + + + + + + + '; + exit ; + } + } +} + +echo ' + + + + + PrestaShop™ - '.translate('Administration panel').''; +echo ' + + +
'; + +if ($nbErrors = sizeof($errors)) +{ + echo ' +
+

'.($nbErrors > 1 ? translate('There are') : translate('There is')).' '.$nbErrors.' '.($nbErrors > 1 ? translate('errors') : translate('error')).'

+
    '; + foreach ($errors AS $error) + echo '
  1. '.$error.'
  2. '; + echo ' +
+
+
'; +} + +echo ' +
+

'.Tools::htmlentitiesUTF8(Configuration::get('PS_SHOP_NAME')).'

+
'; + +$randomNb = rand(100, 999); +if(file_exists(PS_ADMIN_DIR.'/../install') OR file_exists(PS_ADMIN_DIR.'/../admin')) +{ + echo ' '.translate('For security reasons, you cannot connect to the Back Office until after you have:').'

+ - '.translate('deleted the /install folder').'
+ - '.translate('renamed the /admin folder (eg. ').'/admin'.$randomNb.')
+
'.translate('Please then access this page by the new url (eg. http://www.domain.tld/admin').$randomNb.')
'; +} +else +{ + echo '
+ +
+
+ +
+ + '; +} +?> + + +
+

© Copyright by PrestaShop. all rights reserved.

+
+ +'; diff --git a/admin-dev/password.php b/admin-dev/password.php new file mode 100644 index 000000000..234f1137a --- /dev/null +++ b/admin-dev/password.php @@ -0,0 +1,116 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); + +include(PS_ADMIN_DIR.'/../config/config.inc.php'); +include(PS_ADMIN_DIR.'/functions.php'); + +$cookie = new Cookie('psAdmin', substr($_SERVER['PHP_SELF'], strlen(__PS_BASE_URI__), -10)); + +$errors = array(); + +$id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); +$iso = strtolower(Language::getIsoById((int)$id_lang)); +include(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php'); + +if (isset($_POST['Submit'])) +{ + $errors = array(); + if (empty($_POST['email'])) + $errors[] = Tools::displayError('E-mail is empty'); + elseif (!Validate::isEmail($_POST['email'])) + $errors[] = Tools::displayError('Invalid e-mail address'); + else + { + $employee = new Employee(); + if (!$employee->getByemail($_POST['email']) OR !$employee) + $errors[] = Tools::displayError('This account does not exist'); + else + { + if ((strtotime($employee->last_passwd_gen.'+'.Configuration::get('PS_PASSWD_TIME_BACK').' minutes') - time()) > 0 ) + $errors[] = Tools::displayError('You can regenerate your password only each').' '.Configuration::get('PS_PASSWD_TIME_BACK').' '.Tools::displayError('minute(s)'); + else + { + $pwd = Tools::passwdGen(); + $employee->passwd = md5(pSQL(_COOKIE_KEY_.$pwd)); + $employee->last_passwd_gen = date('Y-m-d H:i:s', time()); + $result = $employee->update(); + if (!$result) + $errors[] = Tools::displayError('An error occurred during your password change.'); + else + { + Mail::Send((int)$id_lang, 'password', Mail::l('Your new admin password'), array('{email}' => $employee->email, '{lastname}' => $employee->lastname, '{firstname}' => $employee->firstname, '{passwd}' => $pwd), $employee->email, $employee->firstname.' '.$employee->lastname); + $confirmation = 'ok'; + } + } + } + } +} + +echo ' + + + + + + PrestaShop™ - '.translate('Administration panel').' + +
'; + +if (sizeof($errors)) +{ + echo '
+

'.translate('There is 1 error').'

+
    '; + foreach ($errors AS $error) + echo '
  1. '.$error.'
  2. '; + echo '
+
'; +} + +echo ' +
+

'.Configuration::get('PS_SHOP_NAME').'

+ +
'.translate('Forgot your password?').'

'; +if (isset($confirmation)) + echo '
+
'.translate('Your password has been e-mailed to you').'.
+ '; +else + echo ' '.translate('Please, enter your e-mail address').' + '.translate('(the one you wrote during your registration) in order to receive your access codes by e-mail').'.
+ +
+
+
 
+
+ +
+

© Copyright by PrestaShop. all rights reserved.

+
'; \ No newline at end of file diff --git a/admin-dev/pdf.php b/admin-dev/pdf.php new file mode 100644 index 000000000..e5bf99cb5 --- /dev/null +++ b/admin-dev/pdf.php @@ -0,0 +1,114 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); + +include(PS_ADMIN_DIR.'/../config/config.inc.php'); + +/* Header can't be included, so cookie must be created here */ +$cookie = new Cookie('psAdmin'); +if (!$cookie->id_employee) + Tools::redirectAdmin('login.php'); + +$functionArray = array( + 'pdf' => 'generateInvoicePDF', + 'id_order_slip' => 'generateOrderSlipPDF', + 'id_delivery' => 'generateDeliverySlipPDF', + 'invoices' => 'generateInvoicesPDF', + 'invoices2' => 'generateInvoicesPDF2', + 'slips' => 'generateOrderSlipsPDF', + 'deliveryslips' => 'generateDeliverySlipsPDF' +); + +foreach ($functionArray as $var => $function) + if (isset($_GET[$var])) + { + call_user_func($function); + die; + } + +function generateInvoicePDF() +{ + if (!isset($_GET['id_order'])) + die (Tools::displayError('Missing order ID')); + $order = new Order((int)($_GET['id_order'])); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError('Cannot find order in database')); + PDF::invoice($order); +} + +function generateOrderSlipPDF() +{ + $orderSlip = new OrderSlip((int)($_GET['id_order_slip'])); + $order = new Order((int)($orderSlip->id_order)); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError('Cannot find order in database')); + $order->products = OrderSlip::getOrdersSlipProducts($orderSlip->id, $order); + $tmp = NULL; + PDF::invoice($order, 'D', false, $tmp, $orderSlip); +} + +function generateDeliverySlipPDF() +{ + $order = Order::getByDelivery((int)($_GET['id_delivery'])); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError('Cannot find order in database')); + $tmp = NULL; + PDF::invoice($order, 'D', false, $tmp, false, $order->delivery_number); +} + +function generateInvoicesPDF() +{ + $orders = Order::getOrdersIdInvoiceByDate($_GET['date_from'], $_GET['date_to'], NULL, 'invoice'); + if (!is_array($orders)) + die (Tools::displayError('No invoices found')); + PDF::multipleInvoices($orders); +} + +function generateInvoicesPDF2() +{ + $allOrders = array(); + foreach (explode('-', Tools::getValue('id_order_state')) as $id_order_state) + if (is_array($orders = Order::getOrderIdsByStatus((int)$id_order_state))) + $allOrders = array_merge($allOrders, $orders); + PDF::multipleInvoices($allOrders); +} + +function generateOrderSlipsPDF() +{ + $orderSlips = OrderSlip::getSlipsIdByDate($_GET['date_from'], $_GET['date_to']); + if (!count($orderSlips)) + die (Tools::displayError('No order slips found')); + PDF::multipleOrderSlips($orderSlips); +} + +function generateDeliverySlipsPDF() +{ + $slips = unserialize(urldecode($_GET['deliveryslips'])); + if (is_array($slips)) + PDF::multipleDelivery($slips); +} diff --git a/admin-dev/searchcron.php b/admin-dev/searchcron.php new file mode 100644 index 000000000..f7ec6d03f --- /dev/null +++ b/admin-dev/searchcron.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include(dirname(__FILE__).'/../config/config.inc.php'); + +if (substr(_COOKIE_KEY_, 34, 8) != Tools::getValue('token')) + die; + +ini_set('max_execution_time', 7200); +Search::indexation(Tools::getValue('full')); +Tools::redirectAdmin($_SERVER['HTTP_REFERER'].'&conf=4'); + diff --git a/admin-dev/tabs/.htaccess b/admin-dev/tabs/.htaccess new file mode 100755 index 000000000..93169e4eb --- /dev/null +++ b/admin-dev/tabs/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/admin-dev/tabs/AdminAccess.php b/admin-dev/tabs/AdminAccess.php new file mode 100644 index 000000000..2651613bb --- /dev/null +++ b/admin-dev/tabs/AdminAccess.php @@ -0,0 +1,138 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminAccess extends AdminTab +{ + public function postProcess() + { + if (Tools::isSubmit('submitAddaccess') AND $action = Tools::getValue('action') AND $id_tab = (int)(Tools::getValue('id_tab')) AND $id_profile = (int)(Tools::getValue('id_profile')) AND $this->tabAccess['edit'] == 1) + { + if ($id_tab == -1 AND $action == 'all' AND (int)(Tools::getValue('perm')) == 0) + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'access` SET `view` = '.(int)(Tools::getValue('perm')).', `add` = '.(int)(Tools::getValue('perm')).', `edit` = '.(int)(Tools::getValue('perm')).', `delete` = '.(int)(Tools::getValue('perm')).' WHERE `id_profile` = '.(int)($id_profile).' AND `id_tab` != 31'); + elseif ($id_tab == -1 AND $action == 'all') + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'access` SET `view` = '.(int)(Tools::getValue('perm')).', `add` = '.(int)(Tools::getValue('perm')).', `edit` = '.(int)(Tools::getValue('perm')).', `delete` = '.(int)(Tools::getValue('perm')).' WHERE `id_profile` = '.(int)($id_profile)); + elseif ($id_tab == -1) + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'access` SET `'.pSQL($action).'` = '.(int)(Tools::getValue('perm')).' WHERE `id_profile` = '.(int)($id_profile)); + elseif ($action == 'all') + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'access` SET `view` = '.(int)(Tools::getValue('perm')).', `add` = '.(int)(Tools::getValue('perm')).', `edit` = '.(int)(Tools::getValue('perm')).', `delete` = '.(int)(Tools::getValue('perm')).' WHERE `id_tab` = '.(int)($id_tab).' AND `id_profile` = '.(int)($id_profile)); + else + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'access` SET `'.pSQL($action).'` = '.(int)(Tools::getValue('perm')).' WHERE `id_tab` = '.(int)($id_tab).' AND `id_profile` = '.(int)($id_profile)); + } + } + + public function display() + { + $this->displayForm(); + } + + /** + * Get the current profile id + * + * @return the $_GET['profile'] if valid, else 1 (the first profile id) + */ + function getCurrentProfileId() + { + return (isset($_GET['profile']) AND !empty($_GET['profile']) AND is_numeric($_GET['profile'])) ? (int)($_GET['profile']) : 1; + } + + public function displayForm($isMainTab = true) + { + global $cookie, $currentIndex; + parent::displayForm(); + + $currentProfile = (int)($this->getCurrentProfileId()); + $tabs = Tab::getTabs($cookie->id_lang); + $profiles = Profile::getProfiles((int)($cookie->id_lang)); + $accesses = Profile::getProfileAccesses((int)($currentProfile)); + + echo ' + +
+ + + '; + + if ($currentProfile != (int)(_PS_ADMIN_PROFILE_)) + echo ' + + + + + + '; + + if (!sizeof($tabs)) + echo ''; + elseif ($currentProfile == (int)(_PS_ADMIN_PROFILE_)) + echo ''; + else + foreach ($tabs AS $tab) + if (!$tab['id_parent'] OR (int)($tab['id_parent']) == -1) + { + $this->printTabAccess((int)($currentProfile), $tab, $accesses[$tab['id_tab']], false, $tabsize, sizeof($tabs)); + foreach ($tabs AS $child) + if ($child['id_parent'] === $tab['id_tab']) + $this->printTabAccess($currentProfile, $child, $accesses[$child['id_tab']], true, $tabsize, sizeof($tabs)); + } + echo '
+ + '.$this->l('View').'
'.$this->l('Add').'
'.$this->l('Edit').'
'.$this->l('Delete').'
'.$this->l('All').'
'.$this->l('No tab').'
'.$this->l('Administrator permissions can\'t be modified.').'
'; + } + + private function printTabAccess($currentProfile, $tab, $access, $is_child, $tabsize, $tabnumber) + { + $result_accesses = 0; + $perms = array('view', 'add', 'edit', 'delete'); + echo ''.($is_child ? ' » ' : '').$tab['name'].''; + foreach ($perms as $perm) + { + if($this->tabAccess['edit'] == 1) + echo ''; + else + echo ''; + $result_accesses += $access[$perm]; + } + echo ''; + + } +} + + diff --git a/admin-dev/tabs/AdminAddonsCatalog.php b/admin-dev/tabs/AdminAddonsCatalog.php new file mode 100644 index 000000000..9defedc56 --- /dev/null +++ b/admin-dev/tabs/AdminAddonsCatalog.php @@ -0,0 +1,38 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminAddonsCatalog extends AdminTab +{ + public function display() + { + $parentDomain = Tools::getHttpHost(true).substr($_SERVER['REQUEST_URI'], 0, -1 * strlen(basename($_SERVER['REQUEST_URI']))); + echo ' +
 
'; + } +} + + diff --git a/admin-dev/tabs/AdminAddonsMyAccount.php b/admin-dev/tabs/AdminAddonsMyAccount.php new file mode 100644 index 000000000..dc9587e7f --- /dev/null +++ b/admin-dev/tabs/AdminAddonsMyAccount.php @@ -0,0 +1,38 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminAddonsMyAccount extends AdminTab +{ + public function display() + { + $parentDomain = Tools::getHttpHost(true).substr($_SERVER['REQUEST_URI'], 0, -1 * strlen(basename($_SERVER['REQUEST_URI']))); + echo ' +
 
'; + } +} + + diff --git a/admin-dev/tabs/AdminAddresses.php b/admin-dev/tabs/AdminAddresses.php new file mode 100644 index 000000000..c68093228 --- /dev/null +++ b/admin-dev/tabs/AdminAddresses.php @@ -0,0 +1,424 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); +if(Configuration::get('VATNUMBER_MANAGEMENT') AND file_exists(_PS_MODULE_DIR_.'vatnumber/vatnumber.php')) + include_once(_PS_MODULE_DIR_.'vatnumber/vatnumber.php'); + +class AdminAddresses extends AdminTab +{ + /** @var array countries list */ + private $countriesArray = array(); + + public function __construct() + { + global $cookie; + + $this->table = 'address'; + $this->className = 'Address'; + $this->lang = false; + $this->edit = true; + $this->delete = true; + $this->requiredDatabase = true; + $this->addressType = 'customer'; + + if (!Tools::getValue('realedit')) + $this->deleted = true; + $this->_select = 'cl.`name` as country'; + $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON + (cl.`id_country` = a.`id_country` AND cl.`id_lang` = '.(int)($cookie->id_lang).')'; + + $countries = Country::getCountries((int)($cookie->id_lang)); + foreach ($countries AS $country) + $this->countriesArray[$country['id_country']] = $country['name']; + + $this->fieldsDisplay = array( + 'id_address' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'firstname' => array('title' => $this->l('First name'), 'width' => 80, 'filter_key' => 'a!firstname'), + 'lastname' => array('title' => $this->l('Last name'), 'width' => 100, 'filter_key' => 'a!lastname'), + 'address1' => array('title' => $this->l('Address'), 'width' => 200), + 'postcode' => array('title' => $this->l('Postcode/ Zip Code'), 'align' => 'right', 'width' => 50), + 'city' => array('title' => $this->l('City'), 'width' => 150), + 'country' => array('title' => $this->l('Country'), 'width' => 100, 'type' => 'select', 'select' => $this->countriesArray, 'filter_key' => 'cl!id_country')); + + parent::__construct(); + } + + public function postProcess() + { + if (isset($_POST['submitAdd'.$this->table])) + { + // Transform e-mail in id_customer for parent processing + if ($this->addressType == 'customer') + { + if (Validate::isEmail(Tools::getValue('email'))) + { + $customer = new Customer; + $customer = $customer->getByemail(Tools::getValue('email')); + if (Validate::isLoadedObject($customer)) + $_POST['id_customer'] = $customer->id; + else + $this->_errors[] = Tools::displayError('This e-mail address is not registered.'); + } + elseif ($id_customer = Tools::getValue('id_customer')) + { + $customer = new Customer((int)($id_customer)); + if (Validate::isLoadedObject($customer)) + $_POST['id_customer'] = $customer->id; + else + $this->_errors[] = Tools::displayError('Unknown customer'); + } + else + $this->_errors[] = Tools::displayError('Unknown customer'); + if (Country::isNeedDniByCountryId(Tools::getValue('id_country')) AND !Tools::getValue('dni')) + $this->_errors[] = Tools::displayError('Identification number is incorrect or has already been used.'); + } + + // Check manufacturer selected + if ($this->addressType == 'manufacturer') + { + $manufacturer = new Manufacturer((int)(Tools::getValue('id_manufacturer'))); + if (!Validate::isLoadedObject($manufacturer)) + $this->_errors[] = Tools::displayError('Manufacturer selected is not valid.'); + } + + /* If the selected country does not contain states */ + $id_state = (int)(Tools::getValue('id_state')); + if ($id_country = Tools::getValue('id_country') AND $country = new Country((int)($id_country)) AND !(int)($country->contains_states) AND $id_state) + $this->_errors[] = Tools::displayError('You have selected a state for a country that does not contain states.'); + + /* If the selected country contains states, then a state have to be selected */ + if ((int)($country->contains_states) AND !$id_state) + $this->_errors[] = Tools::displayError('An address located in a country containing states must have a state selected.'); + + /* Check zip code */ + if ($country->need_zip_code) + { + $zip_code_format = $country->zip_code_format; + if (($postcode = Tools::getValue('postcode')) AND $zip_code_format) + { + $zip_regexp = '/^'.$zip_code_format.'$/ui'; + $zip_regexp = str_replace(' ', '( |)', $zip_regexp); + $zip_regexp = str_replace('-', '(-|)', $zip_regexp); + $zip_regexp = str_replace('N', '[0-9]', $zip_regexp); + $zip_regexp = str_replace('L', '[a-zA-Z]', $zip_regexp); + $zip_regexp = str_replace('C', $country->iso_code, $zip_regexp); + if (!preg_match($zip_regexp, $postcode)) + $this->_errors[] = Tools::displayError('Your zip/postal code is incorrect.').'
'.Tools::displayError('Must be typed as follows:').' '.str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $zip_code_format))); + } + elseif ($zip_code_format) + $this->_errors[] = Tools::displayError('Postcode required.'); + elseif ($postcode AND !preg_match('/^[0-9a-zA-Z -]{4,9}$/ui', $postcode)) + $this->_errors[] = Tools::displayError('Your zip/postal code is incorrect.'); + } + + + /* If this address come from order's edition and is the same as the other one (invoice or delivery one) + ** we delete its id_address to force the creation of a new one */ + if ((int)(Tools::getValue('id_order'))) + { + $this->_redirect = false; + if (isset($_POST['address_type'])) + $_POST['id_address'] = ''; + } + } + if (!sizeof($this->_errors)) + parent::postProcess(); + + /* Reassignation of the order's new (invoice or delivery) address */ + $address_type = ((int)(Tools::getValue('address_type')) == 2 ? 'invoice' : ((int)(Tools::getValue('address_type')) == 1 ? 'delivery' : '')); + if (isset($_POST['submitAdd'.$this->table]) AND ($id_order = (int)(Tools::getValue('id_order'))) AND !sizeof($this->_errors) AND !empty($address_type)) + { + if(!Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'orders SET `id_address_'.$address_type.'` = '.Db::getInstance()->Insert_ID().' WHERE `id_order` = '.$id_order)) + $this->_errors[] = Tools::displayError('An error occurred while linking this address to its order.'); + else + Tools::redirectAdmin(Tools::getValue('back').'&conf=4'); + } + } + + public function getList($id_lang, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL) + { + parent::getList($id_lang, $orderBy, $orderWay, $start, $limit); + + global $cookie; + + /* Manage default params values */ + if (empty($limit)) + $limit = ((!isset($cookie->{$this->table.'_pagination'})) ? $this->_pagination[0] : $limit = $cookie->{$this->table.'_pagination'}); + + if (!Validate::isTableOrIdentifier($this->table)) + die('filter is corrupted'); + if (empty($orderBy)) + $orderBy = Tools::getValue($this->table.'Orderby', 'id_'.$this->table); + if (empty($orderWay)) + $orderWay = Tools::getValue($this->table.'Orderway', 'ASC'); + $limit = (int)(Tools::getValue('pagination', $limit)); + $cookie->{$this->table.'_pagination'} = $limit; + + /* Check params validity */ + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay) + OR !is_numeric($start) OR !is_numeric($limit) + OR !Validate::isUnsignedId($id_lang)) + die(Tools::displayError('get list params is not valid')); + + /* Determine offset from current page */ + if ((isset($_POST['submitFilter'.$this->table]) OR + isset($_POST['submitFilter'.$this->table.'_x']) OR + isset($_POST['submitFilter'.$this->table.'_y'])) AND + !empty($_POST['submitFilter'.$this->table]) AND + is_numeric($_POST['submitFilter'.$this->table])) + $start = (int)($_POST['submitFilter'.$this->table] - 1) * $limit; + + /* Cache */ + $this->_lang = (int)($id_lang); + $this->_orderBy = $orderBy; + $this->_orderWay = Tools::strtoupper($orderWay); + + /* SQL table : orders, but class name is Order */ + $sqlTable = $this->table == 'order' ? 'orders' : $this->table; + + /* Query in order to get results number */ + $queryTotal = Db::getInstance()->getRow(' + SELECT COUNT(a.`id_'.$this->table.'`) AS total + FROM `'._DB_PREFIX_.$sqlTable.'` a + '.($this->lang ? 'LEFT JOIN `'._DB_PREFIX_.$this->table.'_lang` b ON (b.`id_'.$this->table.'` = a.`id_'.$this->table.'` AND b.`id_lang` = '.(int)($id_lang).')' : '').' + '.(isset($this->_join) ? $this->_join.' ' : '').' + WHERE 1 '.(isset($this->_where) ? $this->_where.' ' : '').(($this->deleted OR $this->table == 'currency') ? 'AND a.`deleted` = 0 ' : '').$this->_filter.' + '.(isset($this->_group) ? $this->_group.' ' : '').' + '.(isset($this->addressType) ? 'AND a.id_'.strval($this->addressType).' != 0' : '')); + $this->_listTotal = (int)($queryTotal['total']); + + /* Query in order to get results with all fields */ + $this->_list = Db::getInstance()->ExecuteS(' + SELECT a.*'.($this->lang ? ', b.*' : '').(isset($this->_select) ? ', '.$this->_select.' ' : '').' + FROM `'._DB_PREFIX_.$sqlTable.'` a + '.($this->lang ? 'LEFT JOIN `'._DB_PREFIX_.$this->table.'_lang` b ON (b.`id_'.$this->table.'` = a.`id_'.$this->table.'` AND b.`id_lang` = '.(int)($id_lang).')' : '').' + '.(isset($this->_join) ? $this->_join.' ' : '').' + WHERE 1 '.(isset($this->_where) ? $this->_where.' ' : '').(($this->deleted OR $this->table == 'currency') ? 'AND a.`deleted` = 0 ' : '').$this->_filter.' + '.(isset($this->_group) ? $this->_group.' ' : '').' + '.(isset($this->addressType) ? 'AND a.id_'.strval($this->addressType).' != 0' : '').' + ORDER BY '.(($orderBy == 'id_'.$this->table) ? 'a.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' + LIMIT '.(int)($start).','.(int)($limit)); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.((int)($obj->id) ? '' : '').' + '.(($id_order = (int)(Tools::getValue('id_order'))) ? '' : '').' + '.(($address_type = (int)(Tools::getValue('address_type'))) ? '' : '').' + '.(Tools::getValue('realedit') ? '' : '').' +
+ '.$this->l('Addresses').''; + switch ($this->addressType) + { + case 'manufacturer': + echo ' +
'; + $manufacturers = Manufacturer::getManufacturers(); + echo ''; + echo '
'; + echo ''; + break; + case 'customer': + default: + if ($obj->id) + { + $customer = new Customer($obj->id_customer); + $tokenCustomer = Tools::getAdminToken('AdminCustomers'.(int)(Tab::getIdFromClassName('AdminCustomers')).(int)($cookie->id_employee)); + echo ' + + + + '; + } + else + { + echo + ' +
+ * +
'; + } + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + break; + } + if ($this->addressType != 'manufacturer') + { + echo ' +
+ + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + + if ((Configuration::get('VATNUMBER_MANAGEMENT') AND file_exists(_PS_MODULE_DIR_.'vatnumber/vatnumber.php')) && VatNumber::isApplicable(Configuration::get('PS_COUNTRY_DEFAULT'))) + echo '
'; + else if(Configuration::get('VATNUMBER_MANAGEMENT')) + echo '
'; + else + echo'
'; + + echo ' +
+ +
+
'; + } + echo ' + +
+ * + '.$this->l('Invalid characters:').' 0-9!<>,;?=+()@#"�{}_$%:  +
+ +
+ * + '.$this->l('Invalid characters:').' 0-9!<>,;?=+()@#"�{}_$%:  +
+ +
+ +

'.$this->l('DNI / NIF / NIE').'

+
+ +
+ * +
+ +
+ +
+ +
+ +
+ +
+ * +
+ +
+ * +
'; + + $id_country_ajax = (int)$this->getFieldValue($obj, 'id_country'); + + echo ' + +
+ +
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} + + diff --git a/admin-dev/tabs/AdminAliases.php b/admin-dev/tabs/AdminAliases.php new file mode 100644 index 000000000..f54ab4516 --- /dev/null +++ b/admin-dev/tabs/AdminAliases.php @@ -0,0 +1,106 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminAliases extends AdminTab +{ + function __construct() + { + $this->table = 'alias'; + $this->className = 'Alias'; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'alias' => array('title' => $this->l('Aliases'), 'width' => 160), + 'search' => array('title' => $this->l('Search'), 'width' => 40), + 'active' => array('title' => $this->l('Status'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false) + ); + parent::__construct(); + } + + public function postProcess() + { + if (isset($_POST['submitAdd'.$this->table])) + { + $search = strval(Tools::getValue('search')); + $string = strval(Tools::getValue('alias')); + $aliases = explode(',', $string); + if (empty($search) OR empty($string)) + $this->_errors[] = $this->l('aliases and result are both required'); + if (!Validate::isValidSearch($search)) + $this->_errors[] = $search.' '.$this->l('is not a valid result'); + foreach ($aliases AS $alias) + if (!Validate::isValidSearch($alias)) + $this->_errors[] = $alias.' '.$this->l('is not a valid alias'); + + if (!sizeof($this->_errors)) + { + Alias::deleteAliases($search); + foreach ($aliases AS $alias) + { + $obj = new Alias(NULL, trim($alias), trim($search)); + $obj->save(); + } + } + } + else + parent::postProcess(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Aliases').' + +
+ * +

'.$this->l('Enter each alias separated by a comma (\',\')').' '.$this->l('(e.g., \'prestshop,preztashop,prestasohp\')').'
+ '.$this->l('Forbidden characters:').' <>;=#{}

+
+ +
+ * +

'.$this->l('Search this word instead.').'

+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} + + diff --git a/admin-dev/tabs/AdminAppearance.php b/admin-dev/tabs/AdminAppearance.php new file mode 100644 index 000000000..1e5522887 --- /dev/null +++ b/admin-dev/tabs/AdminAppearance.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(dirname(__FILE__).'/AdminThemes.php'); + +class AdminAppearance extends AdminThemes // extends AdminThemes only for retro-compatibility +{ + public function display() + { + Tools::redirectAdmin('index.php?tab=AdminThemes&token='.Tools::getAdminTokenLite('AdminThemes')); + } +} \ No newline at end of file diff --git a/admin-dev/tabs/AdminAttachments.php b/admin-dev/tabs/AdminAttachments.php new file mode 100644 index 000000000..01b6008ef --- /dev/null +++ b/admin-dev/tabs/AdminAttachments.php @@ -0,0 +1,134 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminAttachments extends AdminTab +{ + public function __construct() + { + global $cookie; + + $this->table = 'attachment'; + $this->className = 'Attachment'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'id_attachment' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Name')), + 'file' => array('title' => $this->l('File'))); + + parent::__construct(); + } + + public function postProcess() + { + if (Tools::isSubmit('submitAdd'.$this->table)) + { + if ($id = (int)(Tools::getValue('id_attachment')) AND $a = new Attachment($id)) + { + $_POST['file'] = $a->file; + $_POST['mime'] = $a->mime; + } + if (!sizeof($this->_errors)) + { + if (isset($_FILES['file']) AND is_uploaded_file($_FILES['file']['tmp_name'])) + { + if ($_FILES['file']['size'] > (Configuration::get('PS_ATTACHMENT_MAXIMUM_SIZE') * 1024 * 1024)) + $this->_errors[] = $this->l('File too large, maximum size allowed:').' '.(Configuration::get('PS_ATTACHMENT_MAXIMUM_SIZE') * 1024).' '.$this->l('kb').'. '.$this->l('File size you\'re trying to upload is:').number_format(($_FILES['attachment_file']['size']/1024), 2, '.', '').$this->l('kb'); + else + { + do $uniqid = sha1(microtime()); while (file_exists(_PS_DOWNLOAD_DIR_.$uniqid)); + if (!copy($_FILES['file']['tmp_name'], _PS_DOWNLOAD_DIR_.$uniqid)) + $this->_errors[] = $this->l('File copy failed'); + $_POST['file_name'] = $_FILES['file']['name']; + @unlink($_FILES['file']['tmp_name']); + $_POST['file'] = $uniqid; + $_POST['mime'] = $_FILES['file']['type']; + } + } + else if (array_key_exists('attachment_file', $_FILES) && (int)$_FILES['attachment_file']['error'] === 1) + { + $max_upload = (int)(ini_get('upload_max_filesize')); + $max_post = (int)(ini_get('post_max_size')); + $upload_mb = min($max_upload, $max_post); + $this->_errors[] = $this->l('the File').' '.$_FILES['attachment_file']['name'].' '.$this->l('exceeds the size allowed by the server. This limit is set to').' '.$upload_mb.$this->l('Mb').''; + } + else if (!empty($_FILES['file']['tmp_name'])) + $this->_errors[] = $this->l('No file or your file isn\'t uploadable, check your server configuration about the upload maximum size.'); + } + $this->validateRules(); + } + return parent::postProcess(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Attachment').' + +
'; + foreach ($this->_languages as $language) + echo '
+ * +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'cname¤cdescription', 'cname'); + echo '
+
 
+ +
'; + foreach ($this->_languages as $language) + echo '
+ +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'cname¤cdescription', 'cdescription'); + echo '
+
 
+ +
+

+

'.$this->l('Upload file from your computer').'

+
+
 
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} diff --git a/admin-dev/tabs/AdminAttributeGenerator.php b/admin-dev/tabs/AdminAttributeGenerator.php new file mode 100644 index 000000000..545be0e8b --- /dev/null +++ b/admin-dev/tabs/AdminAttributeGenerator.php @@ -0,0 +1,284 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +@ini_set('max_execution_time', 3600); +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminAttributeGenerator extends AdminTab +{ + private $combinations = array(); + private $product; + + private function addAttribute($arr, $price = 0, $weight = 0) + { + foreach ($arr AS $attr) + { + $price += (float)($_POST['price_impact'][(int)($attr)]); + $weight += (float)($_POST['weight_impact'][(int)($attr)]); + } + if ($this->product->id) + { + return (array( + 'id_product' => (int)($this->product->id), + 'price' => (float)($price), + 'weight' => (float)($weight), + 'ecotax' => 0, + 'quantity' => (int)($_POST['quantity']), + 'reference' => pSQL($_POST['reference']), + 'default_on' => 0)); + } + return array(); + } + + static private function createCombinations($list) + { + if (sizeof($list) <= 1) + return sizeof($list) ? array_map(create_function('$v', 'return (array($v));'), $list[0]) : $list; + $res = array(); + $first = array_pop($list); + foreach ($first AS $attribute) + { + $tab = self::createCombinations($list); + foreach ($tab AS $toAdd) + $res[] = is_array($toAdd) ? array_merge($toAdd, array($attribute)) : array($toAdd, $attribute); + } + return $res; + } + + public function postProcess() + { + global $currentIndex; + + $this->product = new Product((int)(Tools::getValue('id_product'))); + if (isset($_POST['generate'])) + { + if (!is_array(Tools::getValue('options'))) + $this->_errors[] = Tools::displayError('Please choose at least 1 attribute.'); + else + { + $tab = array_values($_POST['options']); + if (sizeof($tab) AND Validate::isLoadedObject($this->product)) + { + self::setAttributesImpacts($this->product->id, $tab); + $this->combinations = array_values(self::createCombinations($tab)); + $values = array_values(array_map(array($this, 'addAttribute'), $this->combinations)); + $this->product->deleteProductAttributes(); + $res = $this->product->addProductAttributeMultiple($values); + $this->product->addAttributeCombinationMultiple($res, $this->combinations); + $this->product->updateQuantityProductWithAttributeQuantity(); + } + else + $this->_errors[] = Tools::displayError('Unable to initialize parameters, combination is missing or object cannot be loaded.'); + } + } + elseif (isset($_POST['back'])) + Tools::redirectAdmin($currentIndex.'&id_product='.(int)(Tools::getValue('id_product')).'&id_category='.(int)(Tools::getValue('id_category')).'&addproduct'.'&tabs=3&token='.Tools::getValue('token')); + parent::postProcess(); + } + + static private function displayAndReturnAttributeJs() + { + global $cookie; + + $attributes = Attribute::getAttributes((int)($cookie->id_lang), true); + $attributeJs = array(); + foreach ($attributes AS $k => $attribute) + $attributeJs[$attribute['id_attribute_group']][$attribute['id_attribute']] = $attribute['name']; + echo ' + '; + return $attributeJs; + } + + private function displayGroupSelect($attributeJs, $attributesGroups) + { + echo '
+ +
'; + } + + static private function setAttributesImpacts($id_product, $tab) + { + $attributes = array(); + foreach ($tab AS $group) + foreach ($group AS $attribute) + $attributes[] = '('.(int)($id_product).', '.(int)($attribute).', '.(float)($_POST['price_impact'][(int)($attribute)]).', '.(float)($_POST['weight_impact'][(int)($attribute)]).')'; + return Db::getInstance()->Execute( + 'INSERT INTO `'._DB_PREFIX_.'attribute_impact` (`id_product`, `id_attribute`, `price`, `weight`) + VALUES '.implode(',', $attributes).' + ON DUPLICATE KEY UPDATE `price`=VALUES(price), `weight`=VALUES(weight)' + ); + } + + static private function getAttributesImpacts($id_product) + { + $tab = array(); + $result = Db::getInstance()->ExecuteS( + 'SELECT ai.`id_attribute`, ai.`price`, ai.`weight` + FROM `'._DB_PREFIX_.'attribute_impact` ai + WHERE ai.`id_product` = '.(int)($id_product)); + if (!$result) + return array(); + foreach ($result AS $impact) + { + $tab[$impact['id_attribute']]['price'] = (float)($impact['price']); + $tab[$impact['id_attribute']]['weight'] = (float)($impact['weight']); + } + return $tab; + } + + private function displayGroupeTable($attributeJs, $attributesGroups) + { + global $cookie; + + $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); + $combinationsGroups = $this->product->getAttributesGroups((int)($cookie->id_lang)); + $attributes = array(); + $impacts = self::getAttributesImpacts($this->product->id); + foreach ($combinationsGroups AS &$combination) + { + $target = &$attributes[$combination['id_attribute_group']][$combination['id_attribute']]; + $target = $combination; + if (isset($impacts[$combination['id_attribute']])) + { + $target['price'] = $impacts[$combination['id_attribute']]['price']; + $target['weight'] = $impacts[$combination['id_attribute']]['weight']; + } + } + + foreach ($attributesGroups AS $k => $attributeGroup) + { + $idGroup = $attributeGroup['id_attribute_group']; + if (isset($attributeJs[$idGroup])) + { + echo ' +
+ + + + + + + + + + + '; + if (isset($attributes[$idGroup])) + foreach ($attributes[$idGroup] AS $k => $attribute) + echo ''; + } + } + echo '

* '.$this->l('tax included').'

'; + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + $jsAttributes = self::displayAndReturnAttributeJs(); + $attributesGroups = AttributeGroup::getAttributesGroups((int)($cookie->id_lang)); + $this->product = new Product((int)(Tools::getValue('id_product'))); + if (isset($_POST['generate']) AND !sizeof($this->_errors)) + echo ' +
+ + '.sizeof($this->combinations).' '.$this->l('product(s) successfully created.').' +
'; + echo ' + +
+
'.$this->l('Attributes generator').''. + $this->l('Add or modify attributes for product:').' '.$this->product->name[$cookie->id_lang].' +

+ '; + echo ' +
+
+ +
+ +
+ +
+ +
+
+
+
+ +
+
+
'; + self::displayGroupeTable($jsAttributes, $attributesGroups); + echo ' +
+
+
+ '; + self::displayGroupSelect($jsAttributes, $attributesGroups); + echo ' +
+

+ +
+ +

+
+
+
+
+
'; + } +} + + diff --git a/admin-dev/tabs/AdminAttributes.php b/admin-dev/tabs/AdminAttributes.php new file mode 100644 index 000000000..f3077eb42 --- /dev/null +++ b/admin-dev/tabs/AdminAttributes.php @@ -0,0 +1,152 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminAttributes extends AdminTab +{ + public function __construct() + { + $this->table = 'attribute'; + $this->className = 'Attribute'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + + $this->fieldImageSettings = array('name' => 'texture', 'dir' => 'co'); + + parent::__construct(); + } + + /** + * Display form + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayForm($token = NULL) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $color = ($obj->color ? $obj->color : 0); + $attributes_groups = AttributeGroup::getAttributesGroups($this->_defaultFormLanguage); + $strAttributesGroups = ''; + echo ' + +
+ '.($obj->id ? '' : '').' +
'.$this->l('Attribute').' + +
'; + foreach ($this->_languages as $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name', 'name'); + echo ' +
+
+ +
+ * +
+ +
+ +
+ * +

'.$this->l('HTML colors only (e.g.,').' "lightblue", "#CC6600")

+
+ +
+ +

'.$this->l('Upload color texture from your computer').'
'.$this->l('This will override the HTML color!').'

+
+ +
+

'.(file_exists(_PS_IMG_DIR_.$this->fieldImageSettings['dir'].'/'.$obj->id.'.jpg') + ? ' '.$this->l('delete').'' + : $this->l('None') + ).'

+
+
+
+ +
+
* '.$this->l('Required field').'
+
+
+ '; + } + + /** + * Manage page processing + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function postProcess($token = NULL) + { + global $currentIndex; + if (Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.$_POST['groupid'].'Box'])) + { + $object = new $this->className(); + if ($object->deleteSelection($_POST[$this->table.$_POST['groupid'].'Box'])) + Tools::redirectAdmin($currentIndex.'&conf=2'.'&token='.($token ? $token : $this->token)); + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + else + parent::postProcess(); + } +} + + diff --git a/admin-dev/tabs/AdminAttributesGroups.php b/admin-dev/tabs/AdminAttributesGroups.php new file mode 100644 index 000000000..33dd1fcf1 --- /dev/null +++ b/admin-dev/tabs/AdminAttributesGroups.php @@ -0,0 +1,226 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); +include_once(PS_ADMIN_DIR.'/tabs/AdminAttributes.php'); + +class AdminAttributesGroups extends AdminTab +{ + /** @var object AdminAttributes() instance */ + private $adminAttributes; + + public function __construct() + { + $this->adminAttributes = new AdminAttributes(); + $this->table = 'attribute_group'; + $this->className = 'AttributeGroup'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'name' => array('title' => $this->l('Name'), 'width' => 140), + 'attribute' => array('title' => $this->l('Attributes'), 'width' => 240, 'orderby' => false, 'search' => false)); + + parent::__construct(); + } + + public function display() + { + global $currentIndex; + + if ((isset($_POST['submitAddattribute']) AND sizeof($this->adminAttributes->_errors)) + OR isset($_GET['updateattribute']) OR isset($_GET['addattribute'])) + { + $this->adminAttributes->displayForm($this->token); + echo '

'.$this->l('Back to list').'
'; + } + else + parent::display(); + } + + public function postProcess() + { + global $cookie, $currentIndex; + + $this->adminAttributes->tabAccess = Profile::getProfileAccess($cookie->profile, $this->id); + $this->adminAttributes->postProcess($this->token); + + if(Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.'Box'])) + { + $object = new $this->className(); + if ($object->deleteSelection($_POST[$this->table.'Box'])) + Tools::redirectAdmin($currentIndex.'&conf=2'.'&token='.$this->token); + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + else + parent::postProcess(); + } + + public function displayErrors() + { + $this->adminAttributes->displayErrors(); + parent::displayErrors(); + } + + /* Report to AdminTab::displayList() for more details */ + public function displayList() + { + global $currentIndex, $cookie; + + echo '
'.$this->l('Add attributes group').'
+ '.$this->l('Add attribute').'

+ '.$this->l('Click on the group name to view its attributes. Click again to hide them.').'

'; + if ($this->_list === false) + Tools::displayError('No elements found'); + + $this->displayListHeader(); + echo ''; + + if (!sizeof($this->_list)) + echo ''.$this->l('No elements found').''; + + $irow = 0; + foreach ($this->_list AS $tr) + { + $id = (int)($tr['id_'.$this->table]); + echo ' + + + '.$tr['name'].' + + + '; + + echo ' + + + '.$this->l('Edit').'  + + '.$this->l('Delete').' + + '; + } + + $this->displayListFooter(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Attributes group').' + +
'; + foreach ($this->_languages as $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name¤public_name', 'name'); + echo ' +
+
+ +
'; + foreach ($this->_languages as $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +

'.$this->l('Term or phrase displayed to the customer').'

+
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name¤public_name', 'public_name'); + echo ' +
+
+ +
+ getFieldValue($obj, 'is_color_group') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'is_color_group') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This is a color group').'

+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} + + diff --git a/admin-dev/tabs/AdminBackup.php b/admin-dev/tabs/AdminBackup.php new file mode 100644 index 000000000..9702c71e7 --- /dev/null +++ b/admin-dev/tabs/AdminBackup.php @@ -0,0 +1,261 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminBackup extends AdminTab +{ + + /** @var string The field we are sorting on */ + protected $_sortBy = 'date'; + + public function __construct() + { + $this->table = 'backup'; + $this->className = 'Backup'; + parent::__construct(); + + $this->edit = false; + $this->delete = true; + $this->view = true; + + $this->deleted = false; + + $this->requiredDatabase = false; + + $this->fieldsDisplay = array ( + 'date' => array('title' => $this->l('Date'), 'type' => 'datetime', 'width' => 120, 'align' => 'right'), + 'age' => array('title' => $this->l('Age')), + 'filename' => array('title' => $this->l('File name'), 'width' => 200), + 'filesize' => array('title' => $this->l('File size'))); + $this->optionTitle = $this->l('Backup option'); + $this->_fieldsOptions = array('PS_BACKUP_ALL' => array('title' => $this->l('Backup all tables:'), 'desc' => $this->l('If you disable this option, only the necessary tables will be imported (connections and statistics will not be imported)'), 'cast' => 'intval', 'type' => 'bool')); + + $this->identifier = 'filename'; + } + + /** + * Load class object using identifier in $_GET (if possible) + * otherwise return an empty object + * This method overrides the one in AdminTab because AdminTab assumes the id is a UnsignedInt + * "Backups" Directory in admin directory must be writeable (CHMOD 777) + * @param boolean $opt Return an empty object if load fail + * @return object + */ + protected function loadObject($opt = false) + { + if ($id = Tools::getValue($this->identifier)) + return new $this->className($id); + return new $this->className(); + } + + /** + * Creates a new backup, and then displays the normal menu + */ + public function displayForm($isMainTab = true) + { + if(is_writable(PS_ADMIN_DIR.'/backups/')) + { + if (!($object = $this->loadObject())) + return; + if ($object->add()) + { + echo '
 '.$this->l('Back-up Creation successful').' !
'; + if ($this->tabAccess['view'] === '1') + echo '
'.$this->l('You can now').' '.$this->l('download the back-up file').'.'; + echo '
'; + } + elseif ($object->error) + $this->_errors[] = $object->error; + } + else + $this->_errors[] = $this->l('"Backups" Directory in admin directory must be writeable (CHMOD 755 / 777)'); + $this->displayErrors(); + } + + /** + * Displays the page which allows the backup to be downloaded + */ + public function viewbackup() + { + global $currentIndex; + + if (!($object = $this->loadObject())) + return; + if ($object->id) + { + $url = $object->getBackupURL(); + echo '
 '.$this->l('Beginning download ...').'
'; + echo '
'.$this->l('Back-up file should automatically download.'); + echo '

'.$this->l('If not,').' '.$this->l('please click here!').''; + echo ''; + echo '


'.$this->l('Back to list').'
'; + } + elseif ($object->error) + $this->_errors[] = $object->error; + $this->displayErrors(); + } + + public function displayList() + { + global $currentIndex; + + // Test if the backup dir is writable + if(!is_writable(PS_ADMIN_DIR.'/backups/')) + $this->displayWarning($this->l('"Backups" Directory in admin directory must be writeable (CHMOD 755 / 777)')); + + $this->displayErrors(); + echo '
'.$this->l('Create new back-up').'

'; + parent::displayList(); + } + + public function getList($id_lang, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL) + { + global $cookie; + + if (!Validate::isTableOrIdentifier($this->table)) + die('filter is corrupted'); + if (empty($orderBy)) + $orderBy = Tools::getValue($this->table.'Orderby', $this->_defaultOrderBy); + if (empty($orderWay)) + $orderWay = Tools::getValue($this->table.'Orderway', 'ASC'); + + // Try and obtain getList arguments from $_GET + $orderBy = Tools::getValue($this->table.'Orderby'); + $orderWay = Tools::getValue($this->table.'Orderway'); + + // Validate the orderBy and orderWay fields + switch ($orderBy) + { + case 'filename': + case 'filesize': + case 'date': + case 'age': + break; + default: + $orderBy = 'date'; + } + switch ($orderWay) + { + case 'asc': + case 'desc': + break; + default: + $orderWay = 'desc'; + } + if (empty($limit)) + $limit = ((!isset($cookie->{$this->table.'_pagination'})) ? $this->_pagination[0] : $limit = $cookie->{$this->table.'_pagination'}); + $limit = (int)(Tools::getValue('pagination', $limit)); + $cookie->{$this->table.'_pagination'} = $limit; + + /* Determine offset from current page */ + if (!empty($_POST['submitFilter'.$this->table]) AND is_numeric($_POST['submitFilter'.$this->table])) + $start = (int)($_POST['submitFilter'.$this->table] - 1) * $limit; + $this->_lang = (int)($id_lang); + $this->_orderBy = $orderBy; + $this->_orderWay = strtoupper($orderWay); + $this->_list = array(); + + // Find all the backups + $dh = @opendir(PS_ADMIN_DIR.'/backups/'); + if ($dh === false) + { + $this->_errors[] = Tools::displayError('Unable to open backup directory .').addslashes(PS_ADMIN_DIR.'/backups/').'"'; + return; + } + while (($file = readdir($dh)) !== false) + { + if (preg_match('/^([\d]+-[a-z\d]+)\.sql(\.gz|\.bz2)?$/', $file, $matches) == 0) + continue; + $timestamp = (int)($matches[1]); + $date = date('Y-m-d h:i:s', $timestamp); + $age = time() - $timestamp; + if ($age < 3600) + $age = '< 1 '.$this->l('hour'); + else if ($age < 86400) + { + $age = floor($age / 3600); + $age = $age.' '.(($age == 1) ? $this->l('hour') : $this->l('hours')); + } + else + { + $age = floor($age / 86400); + $age = $age.' '.(($age == 1) ? $this->l('day') : $this->l('days')); + } + $size = filesize(PS_ADMIN_DIR.'/backups/'.$file); + $this->_list[] = array( + 'filename' => $file, + 'age' => $age, + 'date' => $date, + 'filesize' => number_format($size / 1000, 2).' Kb', + 'timestamp' => $timestamp, + 'filesize_sort' => $size, + ); + } + closedir($dh); + $this->_listTotal = count($this->_list); + + // Sort the _list based on the order requirements + switch ($this->_orderBy) + { + case 'filename': + $this->_sortBy = 'filename'; + $sorter = 'str_sort'; + break; + case 'filesize': + $this->_sortBy = 'filesize_sort'; + $sorter = 'int_sort'; + break; + case 'age': + case 'date': + $this->_sortBy = 'timestamp'; + $sorter = 'int_sort'; + break; + } + usort($this->_list, array($this, $sorter)); + $this->_list = array_slice($this->_list, $start, $limit); + } + + public function int_sort($a, $b) + { + if ($this->_orderWay == 'ASC') + return $a[$this->_sortBy] - $b[$this->_sortBy]; + else + return $b[$this->_sortBy] - $a[$this->_sortBy]; + } + + public function str_sort($a, $b) + { + if ($this->_orderWay == 'ASC') + return strcmp ($a[ $this->_sortBy], $b[$this->_sortBy]); + else + return strcmp ($b[ $this->_sortBy], $a[$this->_sortBy]); + } + +} + + diff --git a/admin-dev/tabs/AdminCMS.php b/admin-dev/tabs/AdminCMS.php new file mode 100644 index 000000000..f659f58ab --- /dev/null +++ b/admin-dev/tabs/AdminCMS.php @@ -0,0 +1,352 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminCMS extends AdminTab +{ + private $_category; + + public function __construct() + { + $this->table = 'cms'; + $this->className = 'CMS'; + $this->lang = true; + $this->edit = true; + $this->view = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'id_cms' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'link_rewrite' => array('title' => $this->l('URL'), 'width' => 200), + 'meta_title' => array('title' => $this->l('Title'), 'width' => 300), + 'position' => array('title' => $this->l('Position'), 'width' => 40,'filter_key' => 'position', 'align' => 'center', 'position' => 'position'), + 'active' => array('title' => $this->l('Enabled'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false) + ); + + $this->_category = AdminCMSContent::getCurrentCMSCategory(); + $this->_join = ' + LEFT JOIN `'._DB_PREFIX_.'cms_category` c ON (c.`id_cms_category` = a.`id_cms_category`)'; + $this->_select = 'a.position '; + $this->_filter = 'AND c.id_cms_category = '.(int)($this->_category->id); + + parent::__construct(); + } + + private function _displayDraftWarning($active) + { + return + '
+

+ + + '.$this->l('Your CMS page will be saved as a draft').' + + + +
+

+
'; + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + $obj = $this->loadObject(true); + $iso = Language::getIsoById((int)($cookie->id_lang)); + $divLangName = 'meta_title¤meta_description¤meta_keywords¤ccontent¤link_rewrite'; + + echo ' +
+ '.($obj->id ? '' : '').' + '.$this->_displayDraftWarning($obj->active).' +
'.$this->l('CMS page').''; + + // META TITLE + echo ' +
+ +
+ +
'; + foreach ($this->_languages as $language) + echo '
+ * +
'; + + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, $divLangName, 'meta_title'); + echo '
 
'; + + // META DESCRIPTION + echo ' +
'; + foreach ($this->_languages as $language) + echo '
+ +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, $divLangName, 'meta_description'); + echo '
 
'; + + // META KEYWORDS + echo ' +
'; + foreach ($this->_languages as $language) + echo '
+ +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, $divLangName, 'meta_keywords'); + echo '
 
'; + + // LINK REWRITE + echo ' +
'; + foreach ($this->_languages as $language) + echo ' '; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, $divLangName, 'link_rewrite'); + echo '
 
'; + + // CONTENT + echo ' +
'; + foreach ($this->_languages as $language) + echo '
+ +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, $divLangName, 'ccontent'); + echo '
 
+ +
+ getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + +
'; + + // SUBMIT + echo '
+ +
+
* '.$this->l('Required field').'
+

+ '.$this->_displayDraftWarning($obj->active).' +
'; + // TinyMCE + global $cookie; + $iso = Language::getIsoById((int)($cookie->id_lang)); + $isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en'); + $ad = dirname($_SERVER["PHP_SELF"]); + echo ' + + + '; + } + + public function display($token = NULL) + { + global $currentIndex, $cookie; + + if (($id_cms_category = (int)Tools::getValue('id_cms_category'))) + $currentIndex .= '&id_cms_category='.$id_cms_category; + $this->getList((int)($cookie->id_lang), !$cookie->__get($this->table.'Orderby') ? 'position' : NULL, !$cookie->__get($this->table.'Orderway') ? 'ASC' : NULL); + //$this->getList((int)($cookie->id_lang)); + if (!$id_cms_category) + $id_cms_category = 1; + echo '

'.(!$this->_listTotal ? ($this->l('No pages found')) : ($this->_listTotal.' '.($this->_listTotal > 1 ? $this->l('pages') : $this->l('page')))).' '. + $this->l('in category').' "'.stripslashes(CMSCategory::hideCMSCategoryPosition($this->_category->getName())).'"

'; + echo ' '.$this->l('Add a new page').' +
'; + $this->displayList($token); + echo '
'; + } + + public function displayList($token = NULL) + { + global $currentIndex; + + /* Display list header (filtering, pagination and column names) */ + $this->displayListHeader($token); + if (!sizeof($this->_list)) + echo ''.$this->l('No items found').''; + + /* Show the content of the table */ + $this->displayListContent($token); + + /* Close list table and submit button */ + $this->displayListFooter($token); + } + + function postProcess() + { + global $cookie, $link, $currentIndex; + + if (Tools::isSubmit('viewcms') AND ($id_cms = (int)(Tools::getValue('id_cms'))) AND $cms = new CMS($id_cms, (int)($cookie->id_lang)) AND Validate::isLoadedObject($cms)) + { + $redir = $link->getCMSLink($cms); + if (!$cms->active) + { + $admin_dir = dirname($_SERVER['PHP_SELF']); + $admin_dir = substr($admin_dir, strrpos($admin_dir,'/') + 1); + $redir .= '?adtoken='.Tools::encrypt('PreviewCMS'.$cms->id).'&ad='.$admin_dir; + } + Tools::redirectAdmin($redir); + } + elseif (Tools::isSubmit('deletecms')) + { + if (Tools::getValue('id_cms') == Configuration::get('PS_CONDITIONS_CMS_ID')) + { + Configuration::updateValue('PS_CONDITIONS', 0); + Configuration::updateValue('PS_CONDITIONS_CMS_ID', 0); + } + $cms = new CMS((int)(Tools::getValue('id_cms'))); + $cms->cleanPositions($cms->id_cms_category); + if (!$cms->delete()) + $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' '.$this->table.' ('.mysql_error().')'; + else + Tools::redirectAdmin($currentIndex.'&id_cms_category='.$cms->id_cms_category.'&conf=1&token='.Tools::getAdminTokenLite('AdminCMSContent')); + }/* Delete multiple objects */ + elseif (Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.'Box'])) + { + $cms = new CMS(); + $result = true; + $result = $cms->deleteSelection(Tools::getValue($this->table.'Box')); + if ($result) + { + $cms->cleanPositions((int)(Tools::getValue('id_cms_category'))); + Tools::redirectAdmin($currentIndex.'&conf=2&token='.Tools::getAdminTokenLite('AdminCMSContent').'&id_category='.(int)(Tools::getValue('id_cms_category'))); + } + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + elseif (Tools::isSubmit('submitAddcms') OR Tools::isSubmit('submitAddcmsAndPreview')) + { + parent::validateRules(); + + if (!sizeof($this->_errors)) + { + if (!$id_cms = (int)(Tools::getValue('id_cms'))) + { + $cms = new CMS(); + $this->copyFromPost($cms, 'cms'); + if (!$cms->add()) + $this->_errors[] = Tools::displayError('An error occurred while creating object.').' '.$this->table.' ('.mysql_error().')'; + elseif (Tools::isSubmit('submitAddcmsAndPreview')) + { + $preview_url = $link->getCMSLink($cms, $this->getFieldValue($object, 'link_rewrite', $this->_defaultFormLanguage), (int)($cookie->id_lang)); + if (!$cms->active) + { + $admin_dir = dirname($_SERVER['PHP_SELF']); + $admin_dir = substr($admin_dir, strrpos($admin_dir,'/') + 1); + $token = Tools::encrypt('PreviewCMS'.$cms->id); + + $preview_url .= $object->active ? '' : '&adtoken='.$token.'&ad='.$admin_dir; + } + Tools::redirectAdmin($preview_url); + } + else + Tools::redirectAdmin($currentIndex.'&id_cms_category='.$cms->id_cms_category.'&conf=3&token='.Tools::getAdminTokenLite('AdminCMSContent')); + } + else + { + $cms = new CMS($id_cms); + $this->copyFromPost($cms, 'cms'); + if (!$cms->update()) + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.' ('.mysql_error().')'; + elseif (Tools::isSubmit('submitAddcmsAndPreview')) + { + $preview_url = $link->getCMSLink($cms, $this->getFieldValue($object, 'link_rewrite', $this->_defaultFormLanguage), (int)($cookie->id_lang)); + if (!$cms->active) + { + $admin_dir = dirname($_SERVER['PHP_SELF']); + $admin_dir = substr($admin_dir, strrpos($admin_dir,'/') + 1); + $token = Tools::encrypt('PreviewCMS'.$cms->id); + + $preview_url .= $object->active ? '' : '&adtoken='.$token.'&ad='.$admin_dir; + } + Tools::redirectAdmin($preview_url); + } + else + Tools::redirectAdmin($currentIndex.'&id_cms_category='.$cms->id_cms_category.'&conf=4&token='.Tools::getAdminTokenLite('AdminCMSContent')); + } + } + } + elseif (Tools::getValue('position')) + { + if ($this->tabAccess['edit'] !== '1') + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + elseif (!Validate::isLoadedObject($object = $this->loadObject())) + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + elseif (!$object->updatePosition((int)(Tools::getValue('way')), (int)(Tools::getValue('position')))) + $this->_errors[] = Tools::displayError('Failed to update the position.'); + else + Tools::redirectAdmin($currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=4'.(($id_category = (int)(Tools::getValue('id_cms_category'))) ? ('&id_cms_category='.$id_category) : '').'&token='.Tools::getAdminTokenLite('AdminCMSContent')); + } + /* Change object statuts (active, inactive) */ + elseif (Tools::isSubmit('status') AND Tools::isSubmit($this->identifier)) + { + if ($this->tabAccess['edit'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->toggleStatus()) + Tools::redirectAdmin($currentIndex.'&conf=5'.((int)Tools::getValue('id_cms_category') ? '&id_cms_category='.(int)Tools::getValue('id_cms_category') : '').'&token='.Tools::getValue('token')); + else + $this->_errors[] = Tools::displayError('An error occurred while updating status.'); + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + else + parent::postProcess(true); + } +} + + diff --git a/admin-dev/tabs/AdminCMSCategories.php b/admin-dev/tabs/AdminCMSCategories.php new file mode 100644 index 000000000..627183c4f --- /dev/null +++ b/admin-dev/tabs/AdminCMSCategories.php @@ -0,0 +1,293 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminCMSCategories extends AdminTab +{ + protected $maxImageSize = 300000; + + /** @var object CMSCategory() instance for navigation*/ + private $_CMSCategory; + + public function __construct() + { + global $cookie; + + $this->table = 'cms_category'; + $this->className = 'CMSCategory'; + $this->lang = true; + $this->edit = true; + $this->view = true; + $this->delete = true; + + + $this->fieldsDisplay = array( + 'id_cms_category' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 30), + 'name' => array('title' => $this->l('Name'), 'width' => 100, 'callback' => 'hideCMSCategoryPosition'), + 'description' => array('title' => $this->l('Description'), 'width' => 500, 'maxlength' => 90, 'orderby' => false), + 'position' => array('title' => $this->l('Position'), 'width' => 40,'filter_key' => 'position', 'align' => 'center', 'position' => 'position'), + 'active' => array('title' => $this->l('Displayed'), 'active' => 'status', 'align' => 'center', 'type' => 'bool', 'orderby' => false)); + + $this->_CMSCategory = AdminCMSContent::getCurrentCMSCategory(); + $this->_filter = 'AND `id_parent` = '.(int)($this->_CMSCategory->id); + $this->_select = 'position '; + + parent::__construct(); + } + + public function displayList($token = NULL) + { + global $currentIndex; + /* Display list header (filtering, pagination and column names) */ + $this->displayListHeader($token); + if (!sizeof($this->_list)) + echo ''.$this->l('No items found').''; + + /* Show the content of the table */ + $this->displayListContent($token); + + /* Close list table and submit button */ + $this->displayListFooter($token); + } + + public function display($token = NULL) + { + global $currentIndex, $cookie; + $id_cms_category = (int)(Tools::getValue('id_cms_category', 1)); + + $this->getList((int)($cookie->id_lang), !$cookie->__get($this->table.'Orderby') ? 'position' : NULL, !$cookie->__get($this->table.'Orderway') ? 'ASC' : NULL); + + echo '

'.(!$this->_listTotal ? ($this->l('There are no subcategories')) : ($this->_listTotal.' '.($this->_listTotal > 1 ? $this->l('subcategories') : $this->l('subCMS Category')))).' '.$this->l('in CMS Category').' "'.stripslashes(CMSCategory::hideCMSCategoryPosition($this->_CMSCategory->getName())).'"

'; + echo ' '.$this->l('Add a new sub CMS Category').' +
'; + $this->displayList($token); + echo '
'; + } + + public function postProcess($token = NULL) + { + global $cookie, $currentIndex; + + $this->tabAccess = Profile::getProfileAccess($cookie->profile, $this->id); + + + if (Tools::isSubmit('submitAdd'.$this->table)) + { + + if ($id_cms_category = (int)(Tools::getValue('id_cms_category'))) + { + if (!CMSCategory::checkBeforeMove($id_cms_category, (int)(Tools::getValue('id_parent')))) + { + $this->_errors[] = Tools::displayError('CMS Category cannot be moved here'); + return false; + } + } + } + /* Change object statuts (active, inactive) */ + elseif (isset($_GET['status']) AND Tools::getValue($this->identifier)) + { + if ($this->tabAccess['edit'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->toggleStatus()) + Tools::redirectAdmin($currentIndex.'&conf=5'.((int)$object->id_parent ? '&id_cms_category='.(int)$object->id_parent : '').'&token='.Tools::getValue('token')); + else + $this->_errors[] = Tools::displayError('An error occurred while updating status.'); + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + /* Delete object */ + elseif (isset($_GET['delete'.$this->table])) + { + if ($this->tabAccess['delete'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject()) AND isset($this->fieldImageSettings)) + { + // check if request at least one object with noZeroObject + if (isset($object->noZeroObject) AND sizeof($taxes = call_user_func(array($this->className, $object->noZeroObject))) <= 1) + $this->_errors[] = Tools::displayError('You need at least one object.').' '.$this->table.'
'.Tools::displayError('You cannot delete all of the items.'); + else + { + $this->deleteImage($object->id); + if ($this->deleted) + { + $object->deleted = 1; + if ($object->update()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.Tools::getValue('token')); + } + elseif ($object->delete()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.Tools::getValue('token')); + $this->_errors[] = Tools::displayError('An error occurred during deletion.'); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + elseif (isset($_GET['position'])) + { + if ($this->tabAccess['edit'] !== '1') + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + elseif (!Validate::isLoadedObject($object = new CMSCategory((int)(Tools::getValue($this->identifier, Tools::getValue('id_cms_category_to_move', 1)))))) + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + elseif (!$object->updatePosition((int)(Tools::getValue('way')), (int)(Tools::getValue('position')))) + $this->_errors[] = Tools::displayError('Failed to update the position.'); + else + Tools::redirectAdmin($currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.(($id_category = (int)(Tools::getValue($this->identifier, Tools::getValue('id_cms_category_parent', 1)))) ? ('&'.$this->identifier.'='.$id_category) : '').'&token='.Tools::getAdminTokenLite('AdminCMSContent')); + } + /* Delete multiple objects */ + elseif (Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.'Box'])) + { + $cms_category = new CMSCategory(); + $result = true; + $result = $cms_category->deleteSelection(Tools::getValue($this->table.'Box')); + if ($result) + { + $cms_category->cleanPositions((int)(Tools::getValue('id_cms_category'))); + Tools::redirectAdmin($currentIndex.'&conf=2&token='.Tools::getAdminTokenLite('AdminCMSContent').'&id_category='.(int)(Tools::getValue('id_cms_category'))); + } + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + parent::postProcess(true); + } + + public function displayForm($token=NULL) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $active = $this->getFieldValue($obj, 'active'); + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('CMS Category').' + +
'; + foreach ($this->_languages as $language) + echo ' +
+ id) ? ' onkeyup="copy2friendlyURL();"' : '').' /> * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + echo '

+
+ +
+ + + + +
+ +
+ +
+ +
'; + foreach ($this->_languages as $language) + echo ' +
+ +
'; + echo '

+
+

+ +
'; + foreach ($this->_languages as $language) + echo ' +
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
'; + echo '

+
+ +
'; + foreach ($this->_languages as $language) + echo '
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
'; + echo '

+
+ +
'; + foreach ($this->_languages as $language) + echo ' +
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
'; + echo '

+
+ +
'; + foreach ($this->_languages as $language) + echo '
+ * + '.$this->l('Only letters and the minus (-) character are allowed').'  +
'; + echo '

+
+ +
+ +   +
+
* '.$this->l('Required field').'
+
+
+

'; + } +} diff --git a/admin-dev/tabs/AdminCMSContent.php b/admin-dev/tabs/AdminCMSContent.php new file mode 100644 index 000000000..6188d3d10 --- /dev/null +++ b/admin-dev/tabs/AdminCMSContent.php @@ -0,0 +1,129 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); +include(PS_ADMIN_DIR.'/tabs/AdminCMSCategories.php'); +include(PS_ADMIN_DIR.'/tabs/AdminCMS.php'); + +class AdminCMSContent extends AdminTab +{ + /** @var object adminCMSCategories() instance */ + private $adminCMSCategories; + + /** @var object adminCMS() instance */ + private $adminCMS; + + /** @var object Category() instance for navigation*/ + private static $_category = NULL; + + public function __construct() + { + /* Get current category */ + $id_cms_category = (int)(Tools::getValue('id_cms_category', Tools::getValue('id_cms_category_parent', 1))); + self::$_category = new CMSCategory($id_cms_category); + if (!Validate::isLoadedObject(self::$_category)) + die('Category cannot be loaded'); + + $this->table = array('cms_category', 'cms'); + $this->adminCMSCategories = new adminCMSCategories(); + $this->adminCMS = new adminCMS(); + + parent::__construct(); + } + + /** + * Return current category + * + * @return object + */ + public static function getCurrentCMSCategory() + { + return self::$_category; + } + + public function viewAccess($disable = false) + { + $result = parent::viewAccess($disable); + $this->adminCMSCategories->tabAccess = $this->tabAccess; + $this->adminCMS->tabAccess = $this->tabAccess; + return $result; + } + + public function postProcess() + { + if (Tools::isSubmit('submitDelcms') OR Tools::isSubmit('previewSubmitAddcmsAndPreview') OR Tools::isSubmit('submitAddcms') OR isset($_GET['deletecms']) OR Tools::isSubmit('viewcms') OR (Tools::isSubmit('status') AND Tools::isSubmit('id_cms')) OR (Tools::isSubmit('position') AND !Tools::isSubmit('id_cms_category_to_move'))) + $this->adminCMS->postProcess(); + if(Tools::isSubmit('submitDelcms_category') OR Tools::isSubmit('submitAddcms_categoryAndBackToParent') OR Tools::isSubmit('submitAddcms_category') OR isset($_GET['deletecms_category']) OR (Tools::isSubmit('status') AND Tools::isSubmit('id_cms_category')) OR (Tools::isSubmit('position') AND Tools::isSubmit('id_cms_category_to_move'))) + $this->adminCMSCategories->postProcess(); + + } + + public function displayErrors() + { + parent::displayErrors(); + $this->adminCMS->displayErrors(); + $this->adminCMSCategories->displayErrors(); + } + + public function display() + { + global $currentIndex; + + if (((Tools::isSubmit('submitAddcms_category') OR Tools::isSubmit('submitAddcms_categoryAndStay')) AND sizeof($this->adminCMSCategories->_errors)) OR isset($_GET['updatecms_category']) OR isset($_GET['addcms_category'])) + { + $this->adminCMSCategories->displayForm($this->token); + echo '

'.$this->l('Back to list').'
'; + + } + elseif (((Tools::isSubmit('submitAddcms') OR Tools::isSubmit('submitAddcmsAndStay')) AND sizeof($this->adminCMS->_errors)) OR isset($_GET['updatecms']) OR isset($_GET['addcms'])) + { + $this->adminCMS->displayForm($this->token); + echo '

'.$this->l('Back to list').'
'; + + } + else + { + $id_cms_category = (int)(Tools::getValue('id_cms_category')); + if (!$id_cms_category) + $id_cms_category = 1; + $cms_tabs = array('cms_category', 'cms'); + // Cleaning links + $catBarIndex = $currentIndex; + foreach ($cms_tabs AS $tab) + if (Tools::getValue($tab.'Orderby') && Tools::getValue($tab.'Orderway')) + $catBarIndex = preg_replace('/&'.$tab.'Orderby=([a-z _]*)&'.$tab.'Orderway=([a-z]*)/i', '', $currentIndex); + echo '
'.$this->l('Current category').' :   '.getPath($catBarIndex, $id_cms_category,'','','cms').'
'; + echo '

'.$this->l('Categories').'

'; + $this->adminCMSCategories->display($this->token); + echo '
 
'; + echo '

'.$this->l('Pages in this category').'

'; + $this->adminCMS->display($this->token); + } + + } +} + diff --git a/admin-dev/tabs/AdminCarriers.php b/admin-dev/tabs/AdminCarriers.php new file mode 100644 index 000000000..dc166856e --- /dev/null +++ b/admin-dev/tabs/AdminCarriers.php @@ -0,0 +1,332 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminCarriers extends AdminTab +{ + protected $maxImageSize = 30000; + + public function __construct() + { + global $cookie; + + $this->table = 'carrier'; + $this->className = 'Carrier'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + $this->deleted = true; + $this->fieldImageSettings = array('name' => 'logo', 'dir' => 's'); + + $this->fieldsDisplay = array( + 'id_carrier' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Name'), 'width' => 100), + 'logo' => array('title' => $this->l('Logo'), 'align' => 'center', 'image' => 's', 'orderby' => false, 'search' => false), + 'delay' => array('title' => $this->l('Delay'), 'width' => 300, 'orderby' => false), + 'active' => array('title' => $this->l('Status'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)); + + $this->optionTitle = $this->l('Carrier options'); + $this->_fieldsOptions = array( + 'PS_CARRIER_DEFAULT' => array('title' => $this->l('Default carrier:'), 'desc' => $this->l('The default carrier used in shop'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'id_carrier', 'list' => Carrier::getCarriers((int)(Configuration::get('PS_LANG_DEFAULT')), true , false,false, NULL, ALL_CARRIERS)), + ); + + parent::__construct(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $currentLanguage = (int)($cookie->id_lang); + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Carriers').' + +
+ * + '.$this->l('Allowed characters: letters, spaces and').' ().-  +

'.$this->l('Carrier name displayed during checkout').'
'.$this->l('With a value of 0, the carrier name will be replaced by the shop name').'

+
+ +
+ +

'.$this->l('Upload logo from your computer').' (.gif, .jpg, .jpeg '.$this->l('or').' .png)

+
+ +
'; + foreach ($this->_languages as $language) + echo ' +
+ * +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'delay', 'delay'); + echo ' +

'.$this->l('Time taken for product delivery; displayed during checkout').'

+
+ +
+ +

'.$this->l('URL for the tracking number; type \'@\' where the tracking number will appear').'

+
+ +
+ +
+ +
'; + $carrier_zones = $obj->getZones(); + $zones = Zone::getZones(false); + foreach ($zones AS $zone) + echo ' $obj->id, 'id_zone' => $zone['id_zone'], 'name' => $zone['name'], 'active' => $zone['active']), $carrier_zones))) ? ' checked="checked"' : '').'>
'; + echo '

'.$this->l('The zone in which this carrier is to be used').'

+
+ +
'; + $groups = Group::getGroups((int)($cookie->id_lang)); + if (sizeof($groups)) + { + echo ' + + + + + + '; + $irow = 0; + foreach ($groups as $group) + echo ' + + + + + '; + echo ' +
id) ? 'checked="checked" ' : '').' />'.$this->l('ID').''.$this->l('Group name').'
getValue('SELECT id_group FROM '._DB_PREFIX_.'carrier_group WHERE id_carrier='.(int)($obj->id).' AND id_group='.(int)($group['id_group'])) OR (!isset($obj->id))) ? 'checked="checked" ' : '').'/>'.$group['id_group'].'
+

'.$this->l('Mark all groups you want to give access to this carrier').'

+ '; + } + else + echo '

'.$this->l('No group created').'

'; + echo '
+ +
+ getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Include or exclude carrier from list of carriers on Front Office').'

+
+ +
+ getFieldValue($obj, 'shipping_handling') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'shipping_handling') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Include the shipping & handling costs in carrier price').'

+
+ +
+ getFieldValue($obj, 'shipping_method') == Carrier::SHIPPING_METHOD_DEFAULT ? 'checked="checked" ' : '').'/> +
+ getFieldValue($obj, 'shipping_method') == Carrier::SHIPPING_METHOD_PRICE ? 'checked="checked" ' : '').'/> +
+ getFieldValue($obj, 'shipping_method') == Carrier::SHIPPING_METHOD_WEIGHT ? 'checked="checked" ' : '').'/> +
+
+ +
+ +

'.$this->l('Out-of-range behavior when none is defined (e.g., when a customer\'s cart weight is greater than the highest range limit)').'

+
'; + if($this->getFieldValue($obj, 'is_module')) + { + echo ' +

- '. + $this->l('This carrier is bound to this module ').' => '.$this->getFieldValue($obj, 'external_module_name').'

+ + '; + + if($this->getFieldValue($obj, 'shipping_external')) + { + echo '

- '.$this->l('The shipping costs are calculated outside of your shop').'

+ '; + } + if($this->getFieldValue($obj, 'need_range')) + { + echo '

- '.$this->l('This carrier uses PrestaShop range to calculate shippping costs').'

+ '; + } + + echo '
'; + } + echo ' +
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + + public function beforeDelete($object) + { + return $object->isUsed(); + } + + public function afterDelete($object, $oldId) + { + $object->copyCarrierData((int)($oldId)); + } + + private function changeGroups($id_carrier, $delete = true) + { + if ($delete) + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'carrier_group WHERE id_carrier='.(int)($id_carrier)); + $groups = Db::getInstance()->ExecuteS('SELECT id_group FROM `'._DB_PREFIX_.'group`'); + foreach ($groups as $group) + if (in_array($group['id_group'], $_POST['groupBox'])) + Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'carrier_group (id_group, id_carrier) VALUES('.(int)($group['id_group']).','.(int)($id_carrier).')'); + } + + public function postProcess() + { + global $currentIndex; + + if (Tools::getValue('submitAdd'.$this->table)) + { + /* Checking fields validity */ + $this->validateRules(); + if (!sizeof($this->_errors)) + { + $id = (int)(Tools::getValue('id_'.$this->table)); + + /* Object update */ + if (isset($id) AND !empty($id)) + { + if ($this->tabAccess['edit'] === '1') + { + $object = new $this->className($id); + if (Validate::isLoadedObject($object)) + { + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'carrier_group WHERE id_carrier='.(int)($id)); + $object->deleted = 1; + $object->update(); + $objectNew = new $this->className(); + $this->copyFromPost($objectNew, $this->table); + $result = $objectNew->add(); + if (Validate::isLoadedObject($objectNew)) + { + $this->afterDelete($objectNew, $object->id); + Hook::updateCarrier((int)($object->id), $objectNew); + } + $this->changeGroups($objectNew->id); + if (!$result) + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.''; + elseif ($this->postImage($objectNew->id)) + { + $this->changeZones($objectNew->id); + Tools::redirectAdmin($currentIndex.'&id_'.$this->table.'='.$object->id.'&conf=4'.'&token='.$this->token); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + + /* Object creation */ + else + { + if ($this->tabAccess['add'] === '1') + { + $object = new $this->className(); + $this->copyFromPost($object, $this->table); + if (!$object->add()) + $this->_errors[] = Tools::displayError('An error occurred while creating object.').' '.$this->table.''; + elseif (($_POST['id_'.$this->table] = $object->id /* voluntary */) AND $this->postImage($object->id) AND $this->_redirect) + { + $this->changeZones($object->id); + $this->changeGroups($object->id); + Tools::redirectAdmin($currentIndex.'&id_'.$this->table.'='.$object->id.'&conf=3'.'&token='.$this->token); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + } + } + else + { + if ((Tools::isSubmit('submitDel'.$this->table) && in_array(Configuration::get('PS_CARRIER_DEFAULT'), Tools::getValue('carrierBox'))) + OR (isset($_GET['delete'.$this->table]) AND Tools::getValue('id_carrier') == Configuration::get('PS_CARRIER_DEFAULT'))) + $this->_errors[] = $this->l('Please set another carrier as default before deleting'); + else + parent::postProcess(); + } + } + + + function changeZones($id) + { + $carrier = new $this->className($id); + if (!Validate::isLoadedObject($carrier)) + die (Tools::displayError('Object cannot be loaded')); + $zones = Zone::getZones(true); + foreach ($zones as $zone) + if (sizeof($carrier->getZone($zone['id_zone']))) + { + if (!isset($_POST['zone_'.$zone['id_zone']]) OR !$_POST['zone_'.$zone['id_zone']]) + $carrier->deleteZone($zone['id_zone']); + } + else + if (isset($_POST['zone_'.$zone['id_zone']]) AND $_POST['zone_'.$zone['id_zone']]) + $carrier->addZone($zone['id_zone']); + } + + public function displayListContent($token = NULL) + { + foreach ($this->_list as $key => $list) + if ($list['name'] == '0') + $this->_list[$key]['name'] = Configuration::get('PS_SHOP_NAME'); + parent::displayListContent($token); + } +} + diff --git a/admin-dev/tabs/AdminCarts.php b/admin-dev/tabs/AdminCarts.php new file mode 100644 index 000000000..3d36822ca --- /dev/null +++ b/admin-dev/tabs/AdminCarts.php @@ -0,0 +1,323 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminCarts extends AdminTab +{ + public function __construct() + { + $this->table = 'cart'; + $this->className = 'Cart'; + $this->lang = false; + $this->edit = false; + $this->view = true; + $this->delete = false; + + + $this->_select = 'CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`, a.id_cart as total, ca.name as carrier'; + $this->_join = 'LEFT JOIN '._DB_PREFIX_.'customer c on (c.id_customer = a.id_customer) + LEFT JOIN '._DB_PREFIX_.'currency cu on (cu.id_currency = a.id_currency) + LEFT JOIN '._DB_PREFIX_.'carrier ca on (ca.id_carrier = a.id_carrier) + '; + + $this->fieldsDisplay = array( + 'id_cart' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'customer' => array('title' => $this->l('Customer'), 'width' => 80, 'filter_key' => 'c!lastname'), + 'total' => array('title' => $this->l('Total'), 'callback' => 'getOrderTotalUsingTaxCalculationMethod', 'orderby' => false, 'search' => false, 'width' => 50, 'align' => 'right', 'prefix' => '', 'suffix' => '', 'currency' => true), + 'carrier' => array('title' => $this->l('Carrier'), 'width' => 25, 'align' => 'center', 'callback' => 'replaceZeroByShopName'), + 'date_add' => array('title' => $this->l('Date'), 'width' => 90, 'align' => 'right', 'type' => 'datetime', 'filter_key' => 'a!date_add')); + parent::__construct(); + } + + public function viewDetails() + { + global $currentIndex, $cookie; + + if (!($cart = $this->loadObject(true))) + return; + $customer = new Customer($cart->id_customer); + $customerStats = $customer->getStats(); + $products = $cart->getProducts(); + $customizedDatas = Product::getAllCustomizedDatas((int)($cart->id)); + Product::addCustomizationPrice($products, $customizedDatas); + $summary = $cart->getSummaryDetails(); + $discounts = $cart->getDiscounts(); + + $currency = new Currency($cart->id_currency); + $currentLanguage = new Language((int)($cookie->id_lang)); + + // display cart header + echo '

'.(($customer->id) ? $customer->firstname.' '.$customer->lastname : $this->l('Guest')).' - '.$this->l('Cart #').sprintf('%06d', $cart->id).' '.$this->l('from').' '.$cart->date_upd.'

'; + + /* Display customer information */ + echo ' +
+
+
+ '.$this->l('Customer information').' + '; + if ($customer->id) + echo ' + '.$customer->firstname.' '.$customer->lastname.' ('.$this->l('#').$customer->id.')
+ ('.$customer->email.')

+ '.$this->l('Account registered:').' '.Tools::displayDate($customer->date_add, (int)($cookie->id_lang), true).'
+ '.$this->l('Valid orders placed:').' '.$customerStats['nb_orders'].'
+ '.$this->l('Total paid since registration:').' '.Tools::displayPrice($customerStats['total_orders'], $currency, false, false).'
'; + else + echo $this->l('Guest not registered').''; + echo '
'; + echo ' +
+
'; + + /* Display order information */ + $id_order = (int)(Order::getOrderByCartId($cart->id)); + $order = new Order($id_order); + + if ($order->getTaxCalculationMethod() == PS_TAX_EXC) + { + $total_products = $summary['total_products']; + $total_discount = $summary['total_discounts_tax_exc']; + $total_wrapping = $summary['total_wrapping_tax_exc']; + $total_price = $summary['total_price_without_tax']; + $total_shipping = $summary['total_shipping_tax_exc']; + } else { + $total_products = $summary['total_products_wt']; + $total_discount = $summary['total_discounts']; + $total_wrapping = $summary['total_wrapping']; + $total_price = $summary['total_price']; + $total_shipping = $summary['total_shipping']; + } + + echo ' +
+ '.$this->l('Order information').' + '; + if ($order->id) + echo ' + '.$this->l('Order #').sprintf('%06d', $order->id).' +

+ '.$this->l('Made on:').' '.Tools::displayDate($order->date_add, (int)$cookie->id_lang, true).'



'; + else + echo $this->l('No order created from this cart').''; + echo '
'; + echo ' +
'; + + + // List of products + echo ' +
+
+ '.$this->l('Products').''.$this->l('Cart summary').' +
+ + + + + + + + + '; + $tokenCatalog = Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee)); + foreach ($products as $k => $product) + { + if ($order->getTaxCalculationMethod() == PS_TAX_EXC) + { + $product_price = $product['price']; + $product_total = $product['total']; + } else { + $product_price = $product['price_wt']; + $product_total = $product['total_wt']; + } + + + $image = array(); + if (isset($product['id_product_attribute']) AND (int)($product['id_product_attribute'])) + $image = Db::getInstance()->getRow(' + SELECT id_image + FROM '._DB_PREFIX_.'product_attribute_image + WHERE id_product_attribute = '.(int)($product['id_product_attribute'])); + if (!isset($image['id_image'])) + $image = Db::getInstance()->getRow(' + SELECT id_image + FROM '._DB_PREFIX_.'image + WHERE id_product = '.(int)($product['id_product']).' AND cover = 1'); + $stock = Db::getInstance()->getRow(' + SELECT '.($product['id_product_attribute'] ? 'pa' : 'p').'.quantity + FROM '._DB_PREFIX_.'product p + '.($product['id_product_attribute'] ? 'LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON p.id_product = pa.id_product' : '').' + WHERE p.id_product = '.(int)($product['id_product']).' + '.($product['id_product_attribute'] ? 'AND pa.id_product_attribute = '.(int)($product['id_product_attribute']) : '')); + /* Customization display */ + $this->displayCustomizedDatas($customizedDatas, $product, $currency, $image, $tokenCatalog, $stock); + if ($product['cart_quantity'] > $product['customizationQuantityTotal']) + echo ' + + + + + + + + '; + } + echo ' + + + + '; + + if ($summary['total_discounts'] != 0) + echo ' + + + + '; + if ($summary['total_wrapping'] > 0) + echo ' + + + + '; + if ($cart->getOrderTotal(true, Cart::ONLY_SHIPPING) > 0) + echo ' + + + + '; + echo ' + + + + +
 '.$this->l('Product').''.$this->l('UP').''.$this->l('Qty').''.$this->l('Stock').''.$this->l('Total').'
'.(isset($image['id_image']) ? cacheImage(_PS_IMG_DIR_.'p/'.(int)($product['id_product']).'-'.(int)($image['id_image']).'.jpg', + 'product_mini_'.(int)($product['id_product']).(isset($product['id_product_attribute']) ? '_'.(int)($product['id_product_attribute']) : '').'.jpg', 45, 'jpg') : '--').' + '.$product['name'].'
+ '.($product['reference'] ? $this->l('Ref:').' '.$product['reference'] : '') + .(($product['reference'] AND $product['supplier_reference']) ? ' / '.$product['supplier_reference'] : '') + .'
'.Tools::displayPrice($product_price, $currency, false, false).''.((int)($product['cart_quantity']) - $product['customizationQuantityTotal']).''.(int)($stock['quantity']).''.Tools::displayPrice($product_total, $currency, false, false).'
'.$this->l('Total products:').''.Tools::displayPrice($total_products, $currency, false).'
'.$this->l('Total vouchers:').''.Tools::displayPrice($total_discount, $currency, false).'
'.$this->l('Total gift-wrapping:').''.Tools::displayPrice($total_wrapping, $currency, false).'
'.$this->l('Total shipping:').''.Tools::displayPrice($total_shipping, $currency, false).'
'.$this->l('Total:').''.Tools::displayPrice($total_price, $currency, false).'
'; + + if (sizeof($discounts)) + { + echo ' + + + + + '; + + foreach ($discounts as $discount) + echo ' + + + + '; + echo ' +
'.$this->l('Discounts').''.$this->l('Discount name').''.$this->l('Value').'
'.$discount['name'].'- '.Tools::displayPrice($discount['value_real'], $currency, false).'
'; + } + echo '
'. + $this->l('According to the group of this customer, prices are printed:').' '.($order->getTaxCalculationMethod() == PS_TAX_EXC ? $this->l('tax excluded.') : $this->l('tax included.')).' +
'; + + // Cancel product + echo ' +
+
 
'; + } + + private function displayCustomizedDatas(&$customizedDatas, &$product, &$currency, &$image, $tokenCatalog, &$stock) + { + if (!($order = $this->loadObject(true))) + return; + + if (is_array($customizedDatas) AND isset($customizedDatas[(int)($product['id_product'])][(int)($product['id_product_attribute'])])) + { + echo ' + + '.(isset($image['id_image']) ? cacheImage(_PS_IMG_DIR_.'p/'.(int)($product['id_product']).'-'.(int)($image['id_image']).'.jpg', + 'product_mini_'.(int)($product['id_product']).(isset($product['id_product_attribute']) ? '_'.(int)($product['id_product_attribute']) : '').'.jpg', 45, 'jpg') : '--').' + + '.$product['name'].'
+ '.($product['reference'] ? $this->l('Ref:').' '.$product['reference'] : '') + .(($product['reference'] AND $product['supplier_reference']) ? ' / '.$product['supplier_reference'] : '') + .'
+ '.Tools::displayPrice($product['price_wt'], $currency, false, false).' + '.$product['customizationQuantityTotal'].' + '.(int)($stock['quantity']).' + '.Tools::displayPrice($product['total_customization_wt'], $currency, false, false).' + '; + foreach ($customizedDatas[(int)($product['id_product'])][(int)($product['id_product_attribute'])] AS $customization) + { + echo ' + + '; + foreach ($customization['datas'] AS $type => $datas) + if ($type == _CUSTOMIZE_FILE_) + { + $i = 0; + echo '
    '; + foreach ($datas AS $data) + echo '
  • + +
  • '; + echo '
'; + } + elseif ($type == _CUSTOMIZE_TEXTFIELD_) + { + $i = 0; + echo '
    '; + foreach ($datas AS $data) + echo '
  • '.($data['name'] ? $data['name'] : $this->l('Text #').++$i).$this->l(':').' '.$data['value'].'
  • '; + echo '
'; + } + echo ' + + '.$customization['quantity'].' + + + '; + } + } + } + + public function display() + { + global $cookie; + + if (isset($_GET['view'.$this->table])) + $this->viewDetails(); + else + { + $this->getList((int)($cookie->id_lang), !Tools::getValue($this->table.'Orderby') ? 'date_add' : NULL, !Tools::getValue($this->table.'Orderway') ? 'DESC' : NULL); + $this->displayList(); + } + } +} + diff --git a/admin-dev/tabs/AdminCatalog.php b/admin-dev/tabs/AdminCatalog.php new file mode 100644 index 000000000..bd14a05d6 --- /dev/null +++ b/admin-dev/tabs/AdminCatalog.php @@ -0,0 +1,176 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); +include(PS_ADMIN_DIR.'/tabs/AdminCategories.php'); +include(PS_ADMIN_DIR.'/tabs/AdminProducts.php'); + +class AdminCatalog extends AdminTab +{ + /** @var object AdminCategories() instance */ + private $adminCategories; + + /** @var object AdminProducts() instance */ + private $adminProducts; + + /** @var object AttributeGenerator() instance */ + private $attributeGenerator; + + /** @var object imageResize() instance */ + private $imageResize; + + /** @var object Category() instance for navigation*/ + private static $_category = NULL; + + public function __construct() + { + /* Get current category */ + $id_category = abs((int)(Tools::getValue('id_category'))); + if (!$id_category) $id_category = 1; + self::$_category = new Category($id_category); + if (!Validate::isLoadedObject(self::$_category)) + die('Category cannot be loaded'); + + $this->table = array('category', 'product'); + $this->adminCategories = new AdminCategories(); + $this->adminProducts = new AdminProducts(); + + parent::__construct(); + } + + /** + * Return current category + * + * @return object + */ + public static function getCurrentCategory() + { + return self::$_category; + } + + public function viewAccess($disable = false) + { + $result = parent::viewAccess($disable); + $this->adminCategories->tabAccess = $this->tabAccess; + $this->adminProducts->tabAccess = $this->tabAccess; + return $result; + } + + public function postProcess() + { + if (!Tools::getValue('id_product')) + $this->adminCategories->postProcess(); + elseif (isset($_GET['attributegenerator'])) + { + if (!isset($this->attributeGenerator)) + { + include_once(PS_ADMIN_DIR.'/tabs/AdminAttributeGenerator.php'); + $this->attributeGenerator = new AdminAttributeGenerator(); + } + $this->attributeGenerator->postProcess(); + } + elseif (isset($_GET['imageresize'])) + { + if (!isset($this->imageResize)) + { + include_once(PS_ADMIN_DIR.'/tabs/AdminImageResize.php'); + $this->imageResize = new AdminImageResize(); + } + $this->imageResize->postProcess(); + } + $this->adminProducts->postProcess($this->token); + } + + public function displayErrors() + { + parent::displayErrors(); + $this->adminProducts->displayErrors(); + $this->adminCategories->displayErrors(); + if (Validate::isLoadedObject($this->attributeGenerator)) + $this->attributeGenerator->displayErrors(); + if (Validate::isLoadedObject($this->imageResize)) + $this->imageResize->displayErrors(); + } + + public function display() + { + global $currentIndex; + + if (((Tools::isSubmit('submitAddcategory') OR Tools::isSubmit('submitAddcategoryAndStay')) AND sizeof($this->adminCategories->_errors)) OR isset($_GET['updatecategory']) OR isset($_GET['addcategory'])) + { + $this->adminCategories->displayForm($this->token); + echo '

'.$this->l('Back to list').'
'; + } + elseif (((Tools::isSubmit('submitAddproduct') OR Tools::isSubmit('submitAddproductAndPreview') OR Tools::isSubmit('submitAddproductAndStay') OR Tools::isSubmit('submitSpecificPricePriorities') OR Tools::isSubmit('submitPriceAddition') OR Tools::isSubmit('submitPricesModification')) AND sizeof($this->adminProducts->_errors)) OR Tools::isSubmit('updateproduct') OR Tools::isSubmit('addproduct')) + { + $this->adminProducts->displayForm($this->token); + if (Tools::getValue('id_category') > 1) + echo '

'.$this->l('Back to home').'
'; + else + echo '

'.$this->l('Back to catalog').'
'; + } + elseif (isset($_GET['attributegenerator'])) + { + if (!isset($this->attributeGenerator)) + { + include_once(PS_ADMIN_DIR.'/tabs/AdminAttributeGenerator.php'); + $this->attributeGenerator = new AdminAttributeGenerator(); + } + $this->attributeGenerator->displayForm(); + } + elseif (isset($_GET['imageresize'])) + { + if (!isset($this->imageResize)) + { + include_once(PS_ADMIN_DIR.'/tabs/AdminImageResize.php'); + $this->imageResize = new AdminImageResize(); + } + $this->imageResize->displayForm(); + } + elseif (!isset($_GET['editImage'])) + { + $id_category = (int)(Tools::getValue('id_category')); + if (!$id_category) + $id_category = 1; + $catalog_tabs = array('category', 'product'); + // Cleaning links + $catBarIndex = $currentIndex; + foreach ($catalog_tabs AS $tab) + if (Tools::getValue($tab.'Orderby') && Tools::getValue($tab.'Orderway')) + $catBarIndex = preg_replace('/&'.$tab.'Orderby=([a-z _]*)&'.$tab.'Orderway=([a-z]*)/i', '', $currentIndex); + + echo '
'.$this->l('Current category').' :   '.getPath($catBarIndex, $id_category).'
'; + echo '

'.$this->l('Categories').'

'; + $this->adminCategories->display($this->token); + echo '
 
'; + echo '

'.$this->l('Products in this category').'

'; + $this->adminProducts->display($this->token); + } + } +} + + diff --git a/admin-dev/tabs/AdminCategories.php b/admin-dev/tabs/AdminCategories.php new file mode 100644 index 000000000..55a2e2334 --- /dev/null +++ b/admin-dev/tabs/AdminCategories.php @@ -0,0 +1,365 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminCategories extends AdminTab +{ + protected $maxImageSize = 300000; + + /** @var object Category() instance for navigation*/ + private $_category; + + public function __construct() + { + global $cookie; + + $this->table = 'category'; + $this->className = 'Category'; + $this->lang = true; + $this->edit = true; + $this->view = true; + $this->delete = true; + + $this->fieldImageSettings = array('name' => 'image', 'dir' => 'c'); + + $this->fieldsDisplay = array( + 'id_category' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 30), + 'name' => array('title' => $this->l('Name'), 'width' => 100), + 'description' => array('title' => $this->l('Description'), 'width' => 500, 'maxlength' => 90, 'orderby' => false), + 'position' => array('title' => $this->l('Position'), 'width' => 40,'filter_key' => 'position', 'align' => 'center', 'position' => 'position'), + 'active' => array('title' => $this->l('Displayed'), 'active' => 'status', 'align' => 'center', 'type' => 'bool', 'orderby' => false)); + + $this->_category = AdminCatalog::getCurrentCategory(); + $this->_filter = 'AND `id_parent` = '.(int)($this->_category->id); + $this->_select = 'position '; + + parent::__construct(); + } + + public function displayList($token = NULL) + { + global $currentIndex; + + /* Display list header (filtering, pagination and column names) */ + $this->displayListHeader($token); + if (!sizeof($this->_list)) + echo ''.$this->l('No items found').''; + + /* Show the content of the table */ + $this->displayListContent($token); + + /* Close list table and submit button */ + $this->displayListFooter($token); + } + + public function display($token = NULL) + { + global $currentIndex, $cookie; + + $this->getList((int)($cookie->id_lang), !$cookie->__get($this->table.'Orderby') ? 'position' : NULL, !$cookie->__get($this->table.'Orderway') ? 'ASC' : NULL); + echo '

'.(!$this->_listTotal ? ($this->l('There are no subcategories')) : ($this->_listTotal.' '.($this->_listTotal > 1 ? $this->l('subcategories') : $this->l('subcategory')))).' '.$this->l('in category').' "'.stripslashes($this->_category->getName()).'"

'; + if ($this->tabAccess['add'] === '1') + echo ' '.$this->l('Add a new subcategory').''; + echo '
'; + $this->displayList($token); + echo '
'; + } + + public function postProcess($token = NULL) + { + global $cookie, $currentIndex; + + $this->tabAccess = Profile::getProfileAccess($cookie->profile, $this->id); + + if (Tools::isSubmit('submitAdd'.$this->table)) + { + if ($id_category = (int)(Tools::getValue('id_category'))) + { + if (!Category::checkBeforeMove($id_category, (int)(Tools::getValue('id_parent')))) + { + $this->_errors[] = Tools::displayError('Category cannot be moved here'); + return false; + } + + // Updating customer's group + if ($this->tabAccess['edit'] !== '1') + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + else + { + $object = new $this->className($id_category); + if (Tools::getValue('groupBox') != NULL) + { + if (Validate::isLoadedObject($object)) + $object->updateGroup(Tools::getValue('groupBox')); + else + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You must select at least one group.'); + } + } + } + /* Change object statuts (active, inactive) */ + elseif (isset($_GET['status']) AND Tools::getValue($this->identifier)) + { + if ($this->tabAccess['edit'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->toggleStatus()) + { + $target = ''; + if (($id_category = (int)(Tools::getValue('id_category'))) AND Tools::getValue('id_product')) + $target = '&id_category='.(int)($id_category); + else + { + $referrer = Tools::secureReferrer($_SERVER['HTTP_REFERER']); + if (preg_match('/id_category=(\d+)/', $referrer, $matches)) + $target = '&id_category='.(int)($matches[1]); + } + Module::hookExec('categoryUpdate'); + Tools::redirectAdmin($currentIndex.'&conf=5'.$target.'&token='.Tools::getValue('token')); + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating status.'); + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + /* Delete object */ + elseif (isset($_GET['delete'.$this->table])) + { + if ($this->tabAccess['delete'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject()) AND isset($this->fieldImageSettings)) + { + // check if request at least one object with noZeroObject + if (isset($object->noZeroObject) AND sizeof($taxes = call_user_func(array($this->className, $object->noZeroObject))) <= 1) + $this->_errors[] = Tools::displayError('You need at least one object.').' '.$this->table.'
'.Tools::displayError('You cannot delete all of the items.'); + else + { + $this->deleteImage($object->id); + if ($this->deleted) + { + $object->deleted = 1; + if ($object->update()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.Tools::getValue('token').'&id_category='.(int)($object->id_parent)); + } + elseif ($object->delete()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.Tools::getValue('token').'&id_category='.(int)($object->id_parent)); + $this->_errors[] = Tools::displayError('An error occurred during deletion.'); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + elseif (isset($_GET['position'])) + { + if ($this->tabAccess['edit'] !== '1') + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + elseif (!Validate::isLoadedObject($object = new Category((int)(Tools::getValue($this->identifier, Tools::getValue('id_category_to_move', 1)))))) + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + if (!$object->updatePosition((int)(Tools::getValue('way')), (int)(Tools::getValue('position')))) + $this->_errors[] = Tools::displayError('Failed to update the position.'); + else + Tools::redirectAdmin($currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.(($id_category = (int)(Tools::getValue($this->identifier, Tools::getValue('id_category_parent', 1)))) ? ('&'.$this->identifier.'='.$id_category) : '').'&token='.Tools::getAdminTokenLite('AdminCatalog')); + } + /* Delete multiple objects */ + elseif (Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.'Box'])) + { + $category = new Category(); + $result = true; + $result = $category->deleteSelection(Tools::getValue($this->table.'Box')); + if ($result) + { + $category->cleanPositions((int)(Tools::getValue('id_category'))); + Tools::redirectAdmin($currentIndex.'&conf=2&token='.Tools::getAdminTokenLite('AdminCatalog').'&id_category='.(int)(Tools::getValue('id_category'))); + } + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + parent::postProcess(); + } + + protected function postImage($id) + { + $ret = parent::postImage($id); + if (($id_category = (int)(Tools::getValue('id_category'))) AND isset($_FILES) AND sizeof($_FILES) AND $_FILES['image']['name'] != NULL AND file_exists(_PS_CAT_IMG_DIR_.$id_category.'.jpg')) + { + $imagesTypes = ImageType::getImagesTypes('categories'); + foreach ($imagesTypes AS $k => $imageType) + imageResize(_PS_CAT_IMG_DIR_.$id_category.'.jpg', _PS_CAT_IMG_DIR_.$id_category.'-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height'])); + } + return $ret; + } + + public function displayForm($token = NULL) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $active = $this->getFieldValue($obj, 'active'); + $customer_groups = $obj->getGroups(); + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Category').' + +
'; + foreach ($this->_languages AS $language) + echo ' +
+ id) ? ' onkeyup="copy2friendlyURL();"' : '').' /> * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + echo '

+
+ +
+ + + + +
+ +
+ +
+ +
'; + foreach ($this->_languages AS $language) + echo ' +
+ +
'; + echo '

+
+ +
'; + echo $this->displayImage($obj->id, _PS_IMG_DIR_.'c/'.$obj->id.'.jpg', 350, NULL, Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee))); + echo '
+

'.$this->l('Upload category logo from your computer').'

+
+

+ +
'; + foreach ($this->_languages AS $language) + echo ' +
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
'; + echo '

+
+ +
'; + foreach ($this->_languages AS $language) + echo '
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
'; + echo '

+
+ +
'; + foreach ($this->_languages AS $language) + echo ' +
+ + '.$this->l('Forbidden characters:').' <>;=#{}  +
'; + echo '

+
+ +
'; + foreach ($this->_languages AS $language) + echo '
+ * + '.$this->l('Only letters and the minus (-) character are allowed').'  +
'; + echo '

+
+ +
'; + $groups = Group::getGroups((int)($cookie->id_lang)); + if (sizeof($groups)) + { + echo ' + + + + + + '; + $irow = 0; + foreach ($groups AS $group) + echo ' + + + + + '; + echo ' +
id) ? 'checked="checked" ' : '').' />'.$this->l('ID').''.$this->l('Group name').'
id))) ? 'checked="checked" ' : '').'/>'.$group['id_group'].'
+

'.$this->l('Mark all groups you want to give access to this category').'

+ '; + } else + echo '

'.$this->l('No group created').'

'; + echo ' +
+
+ +   +
+
* '.$this->l('Required field').'
+
+
+

'; + } +} diff --git a/admin-dev/tabs/AdminContact.php b/admin-dev/tabs/AdminContact.php new file mode 100644 index 000000000..c535ff9b3 --- /dev/null +++ b/admin-dev/tabs/AdminContact.php @@ -0,0 +1,97 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); +include_once(PS_ADMIN_DIR.'/tabs/AdminPreferences.php'); + +class AdminContact extends AdminPreferences +{ + public function __construct() + { + $this->className = 'Configuration'; + $this->table = 'configuration'; + + global $cookie; + $countryList = array(); + $countryList[] = array('id' => '0', 'name' => $this->l('Choose your country')); + foreach (Country::getCountries(intval($cookie->id_lang)) AS $country) + $countryList[] = array('id' => $country['id_country'], 'name' => $country['name']); + $stateList = array(); + $stateList[] = array('id' => '0', 'name' => $this->l('Choose your state (if applicable)')); + foreach (State::getStates(intval($cookie->id_lang)) AS $state) + $stateList[] = array('id' => $state['id_state'], 'name' => $state['name']); + + $this->_fieldsShop = array( + 'PS_SHOP_NAME' => array('title' => $this->l('Shop name:'), 'desc' => $this->l('Displayed in e-mails and page titles'), 'validation' => 'isGenericName', 'required' => true, 'size' => 30, 'type' => 'text'), + 'PS_SHOP_EMAIL' => array('title' => $this->l('Shop e-mail:'), 'desc' => $this->l('Displayed in e-mails sent to customers'), 'validation' => 'isEmail', 'required' => true, 'size' => 30, 'type' => 'text'), + 'PS_SHOP_DETAILS' => array('title' => $this->l('Registration:'), 'desc' => $this->l('Shop registration information (e.g., SIRET or RCS)'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'textarea', 'cols' => 30, 'rows' => 5), + 'PS_SHOP_ADDR1' => array('title' => $this->l('Shop address:'), 'validation' => 'isAddress', 'size' => 30, 'type' => 'text'), + 'PS_SHOP_ADDR2' => array('title' => '', 'validation' => 'isAddress', 'size' => 30, 'type' => 'text'), + 'PS_SHOP_CODE' => array('title' => $this->l('Post/Zip code:'), 'validation' => 'isGenericName', 'size' => 6, 'type' => 'text'), + 'PS_SHOP_CITY' => array('title' => $this->l('City:'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'text'), + 'PS_SHOP_COUNTRY_ID' => array('title' => $this->l('Country:'), 'validation' => 'isInt', 'size' => 30, 'type' => 'select', 'list' => $countryList, 'identifier' => 'id', 'cast' => 'intval'), + 'PS_SHOP_STATE_ID' => array('title' => $this->l('State:'), 'validation' => 'isInt', 'size' => 30, 'type' => 'select', 'list' => $stateList, 'identifier' => 'id', 'cast' => 'intval'), + 'PS_SHOP_PHONE' => array('title' => $this->l('Phone:'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'text'), + 'PS_SHOP_FAX' => array('title' => $this->l('Fax:'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'text'), + ); + parent::__construct(); + } + + public function postProcess() + { + if (isset($_POST['PS_SHOP_STATE_ID']) && $_POST['PS_SHOP_STATE_ID'] != '0') + { + $isStateOk = Db::getInstance()->getValue('SELECT `active` FROM `'._DB_PREFIX_.'state` WHERE `id_country` = '.(int)(Tools::getValue('PS_SHOP_COUNTRY_ID')).' AND `id_state` = '.(int)(Tools::getValue('PS_SHOP_STATE_ID'))); + if ($isStateOk != 1) + $this->_errors[] = Tools::displayError('This state is not in this country.'); + } + parent::postProcess(); + } + + protected function _postConfig($fields) + { + global $cookie; + if (!$this->_errors && isset($_POST['PS_SHOP_COUNTRY_ID'])) + { + $country = new Country((int)($_POST['PS_SHOP_COUNTRY_ID']), intval($cookie->id_lang)); + Configuration::updateValue('PS_SHOP_COUNTRY', pSQL($country->name)); + } + if (!$this->_errors && isset($_POST['PS_SHOP_STATE_ID'])) + { + $state = new State((int)($_POST['PS_SHOP_STATE_ID'])); + Configuration::updateValue('PS_SHOP_STATE', pSQL($state->name)); + } + parent::_postConfig($fields); + } + + public function display() + { + $this->_displayForm('shop', $this->_fieldsShop, $this->l('Contact details'), 'width3', 'tab-contact'); + } +} + + diff --git a/admin-dev/tabs/AdminContacts.php b/admin-dev/tabs/AdminContacts.php new file mode 100644 index 000000000..44d6247d4 --- /dev/null +++ b/admin-dev/tabs/AdminContacts.php @@ -0,0 +1,114 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminContacts extends AdminTab +{ + public function __construct() + { + $this->table = 'contact'; + $this->className = 'Contact'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'id_contact' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Title'), 'width' => 130), + 'email' => array('title' => $this->l('E-mail address'), 'width' => 130), + 'description' => array('title' => $this->l('Description'), 'width' => 150)); + + $this->optionTitle = $this->l('Contact options'); + $this->_fieldsOptions = array( + 'PS_CUSTOMER_SERVICE_FILE_UPLOAD' => array('title' => $this->l('Allow file upload'), 'desc' => $this->l('Allow customers to upload file using contact page'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'value', 'list' => array( + '0' => array('value' => 0, 'name' => $this->l('No')), + '1' => array('value' => 1, 'name' => $this->l('Yes')) + )), + 'PS_CUSTOMER_SERVICE_SIGNATURE' => array('title' => $this->l('Pre-defined message'), 'desc' => $this->l('Please fill the message that appears by default when you answer a thread on the customer service page'), 'cast' => 'pSQL', 'type' => 'textareaLang', 'identifier' => 'value', + 'cols' => 40, 'rows' => 8 + )); + + parent::__construct(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Contacts').' + +
'; + foreach ($this->_languages as $language) + echo ' +
+ * +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name¤description', 'name'); + echo '

'.$this->l('Contact name, e.g., Technical Support').'

+
+ +
+ +

'.$this->l('E-mails will be sent to this address').'

+
+ +
+ getFieldValue($obj, 'customer_service') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'customer_service') ? 'checked="checked" ' : '').'/> + +

'.$this->l('The messages will be saved in the Customer Service tab').'

+
 
+ +
'; + foreach ($this->_languages as $language) + echo ' +
+ +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name¤description', 'description'); + echo ' +

'.$this->l('Additional information about this contact').'

+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} + + diff --git a/admin-dev/tabs/AdminCountries.php b/admin-dev/tabs/AdminCountries.php new file mode 100644 index 000000000..e611eed5b --- /dev/null +++ b/admin-dev/tabs/AdminCountries.php @@ -0,0 +1,162 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminCountries extends AdminTab +{ + public function __construct() + { + global $cookie; + + $this->table = 'country'; + $this->className = 'Country'; + $this->lang = true; + $this->edit = true; + $this->deleted = false; + $this->_select = 'z.`name` AS zone'; + $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'zone` z ON (z.`id_zone` = a.`id_zone`)'; + + $this->fieldsDisplay = array( + 'id_country' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Country'), 'width' => 130, 'filter_key' => 'b!name'), + 'iso_code' => array('title' => $this->l('ISO code'), 'width' => 70, 'align' => 'center'), + 'call_prefix' => array('title' => $this->l('Call prefix'), 'width' => 40, 'align' => 'center', 'callback' => 'displayCallPrefix'), + 'zone' => array('title' => $this->l('Zone'), 'width' => 100, 'filter_key' => 'z!name'), + 'a!active' => array('title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false, 'filter_key' => 'a!active')); + + $this->optionTitle = $this->l('Countries options'); + $this->_fieldsOptions = array('PS_COUNTRY_DEFAULT' => array('title' => $this->l('Default country:'), 'desc' => $this->l('The default country used in shop'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'id_country', 'list' => Country::getCountries((int)($cookie->id_lang)))); + parent::__construct(); + } + + public function postProcess() + { + if (isset($_GET['delete'.$this->table]) OR Tools::getValue('submitDel'.$this->table)) + $this->_errors[] = Tools::displayError('You cannot delete a country. If you do not want it available for customers, please disable it.'); + else + return parent::postProcess(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Countries').' + +
'; + + foreach ($this->_languages as $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name', 'name'); + echo '

'.$this->l('Name of country').'

+
+ +
+ * +

'.$this->l('2- or 3-letter ISO code, e.g., FR for France').'. '.$this->l('Official list here').'.

+
+ +
+ * +

'.$this->l('International call prefix, e.g., 33 for France.').'.

+
+ +
+ +
+ +
+ +

'.$this->l('Geographical zone where country is located').'

+
+ +
+ id OR $this->getFieldValue($obj, 'need_zip_code')) ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'need_zip_code') AND $obj->id) ? 'checked="checked" ' : '').'/> + +
+ +
+ * +

'.$this->l('National zip code (L for a letter, N for a number and C for the Iso code), e.g., NNNNN for France. No verification if undefined').'.

+
+ +
+ id OR $this->getFieldValue($obj, 'active')) ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') AND $obj->id) ? 'checked="checked" ' : '').'/> + +

'.$this->l('Enabled or disabled').'

+
+ +
+ id OR $this->getFieldValue($obj, 'contains_states')) ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'contains_states') AND $obj->id) ? 'checked="checked" ' : '').'/> + +
+ +
+ id OR $this->getFieldValue($obj, 'need_identification_number')) ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'need_identification_number') AND $obj->id) ? 'checked="checked" ' : '').'/> + +
+
+ +
+
* '.$this->l('Required field').'
+
+
+ '; + } +} + diff --git a/admin-dev/tabs/AdminCounty.php b/admin-dev/tabs/AdminCounty.php new file mode 100644 index 000000000..e969c3b1d --- /dev/null +++ b/admin-dev/tabs/AdminCounty.php @@ -0,0 +1,219 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminCounty extends AdminTab +{ + public function __construct() + { + global $cookie; + + $this->table = 'county'; + $this->className = 'County'; + $this->edit = true; + $this->delete = true; + $this->_select = 's.`name` AS state'; + $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = a.`id_state`)'; + + $this->fieldsDisplay = array( + 'id_county' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('County'), 'width' => 130, 'filter_key' => 'b!name'), + 'state' => array('title' => $this->l('State'), 'width' => 70, 'filter_key' => 's!name'), + 'a!active' => array('title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false, 'filter_key' => 'a!active')); + + parent::__construct(); + } + + public function renderJS() + { + return + ''; + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + $cur_id_country = 0; + $cur_id_state = 0; + if (isset($obj->id_state)) + { + $cur_state = new State($obj->id_state); + if (Validate::isLoadedObject($cur_state)) + { + $cur_id_country = $cur_state->id_country; + $cur_id_state = $cur_state->id; + } + } + + echo $this->renderJS(). + '
+ '.($obj->id ? '' : '').' +
'.$this->l('Counties').''; + + if (!isset($obj->id)) + echo '
'.$this->l('Save this county then you will be able to associate zipcodes').'

'; + + $countries = Country::getCountries($cookie->id_lang, true, true); + echo ' +
'; + + + echo ' +
+ +
+ '; + + echo + ' +
+ * +
+ +
+ id OR $this->getFieldValue($obj, 'active')) ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') AND $obj->id) ? 'checked="checked" ' : '').'/> + +

'.$this->l('Enabled or disabled').'

+
+
+   + +
'; + + echo '
* '.$this->l('Required field').'
'; + + if (isset($obj->id)) + { + echo ' +
+ '.$this->_renderZipCodeForm().'
+
+ '.AdminCounty::renderZipCodeList($obj->getZipCodes()).' +
'; + } + + echo ' +
+
'; + } + + + protected function _renderZipCodeForm() + { + return ' +
+ Add Zip Codes:
+ Add +
+
'; + } + + + public static function renderZipCodeList($zip_codes) + { + $html = ''; + foreach ($zip_codes AS $zip_code) + { + $full_zip_code = $zip_code['from_zip_code']; + if ($zip_code['to_zip_code'] != 0) + $full_zip_code .= '-'.$zip_code['to_zip_code']; + + $html .= '
'.Tools::htmlentitiesUTF8($full_zip_code).'
'; + } + + return $html; + } +} + diff --git a/admin-dev/tabs/AdminCurrencies.php b/admin-dev/tabs/AdminCurrencies.php new file mode 100644 index 000000000..d868f59fd --- /dev/null +++ b/admin-dev/tabs/AdminCurrencies.php @@ -0,0 +1,233 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../classes/AdminTab.php'); + +class AdminCurrencies extends AdminTab +{ + public function __construct() + { + $this->table = 'currency'; + $this->className = 'Currency'; + $this->lang = false; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'id_currency' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Currency'), 'width' => 100), + 'iso_code' => array('title' => $this->l('ISO code'), 'align' => 'center', 'width' => 35), + 'iso_code_num' => array('title' => $this->l('ISO code num'), 'align' => 'center', 'width' => 35), + 'sign' => array('title' => $this->l('Symbol'), 'width' => 20, 'align' => 'center', 'orderby' => false, 'search' => false), + 'conversion_rate' => array('title' => $this->l('Conversion rate'), 'float' => true, 'align' => 'center', 'width' => 50, 'search' => false), + 'active' => array('title' => $this->l('Enabled'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)); + + $this->optionTitle = $this->l('Currencies options'); + $this->_fieldsOptions = array( + 'PS_CURRENCY_DEFAULT' => array( + 'title' => $this->l('Default currency:'), + 'desc' => $this->l('The default currency used in shop') + .'
'.$this->l('If you change default currency, you will have to manually edit every product price.').'
', + 'cast' => 'intval', + 'type' => 'select', + 'identifier' => 'id_currency', + 'list' => Currency::getCurrencies() + ), + ); + $this->_where = 'AND a.`deleted` = 0'; + + parent::__construct(); + } + + public function postProcess() + { + global $currentIndex; + + if (isset($_GET['delete'.$this->table])) + { + if ($this->tabAccess['delete'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->id == Configuration::get('PS_CURRENCY_DEFAULT')) + $this->_errors[] = $this->l('You can\'t delete the default currency'); + elseif ($object->delete()) + Tools::redirectAdmin($currentIndex.'&conf=1'.'&token='.$this->token); + else + $this->_errors[] = Tools::displayError('An error occurred during deletion.'); + } + else + $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + elseif ((isset($_GET['status'.$this->table]) OR isset($_GET['status'])) AND Tools::getValue($this->identifier)) + { + if ($this->tabAccess['edit'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->active AND $object->id == Configuration::get('PS_CURRENCY_DEFAULT')) + $this->_errors[] = $this->l('You can\'t disable the default currency'); + elseif ($object->toggleStatus()) + Tools::redirectAdmin($currentIndex.'&conf=5'.((($id_category = (int)(Tools::getValue('id_category'))) AND Tools::getValue('id_product')) ? '&id_category='.$id_category : '').'&token='.$this->token); + else + $this->_errors[] = Tools::displayError('An error occurred while updating status.'); + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + elseif (Tools::getValue('submitOptions'.$this->table)) + { + foreach ($this->_fieldsOptions as $key => $field) + { + Configuration::updateValue($key, $field['cast'](Tools::getValue($key))); + if ($key == 'PS_CURRENCY_DEFAULT') + Currency::refreshCurrencies(); + } + Tools::redirectAdmin($currentIndex.'&conf=6'.'&token='.$this->token); + } + elseif (Tools::isSubmit('submitExchangesRates')) + { + if (!$this->_errors[] = Currency::refreshCurrencies()) + Tools::redirectAdmin($currentIndex.'&conf=6'.'&token='.$this->token); + } + else + parent::postProcess(); + } + + public function displayOptionsList() + { + global $currentIndex; + + parent::displayOptionsList(); + echo '

+
+
+ '.$this->l('Currency rates').' + +
+

'.$this->l('Update your currencies exchanges rates with a real-time tool').'

+
+
+ +
+
+
'; + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Currencies').' + +
+ * + '.$this->l('Only letters and the minus character are allowed').'  +

'.$this->l('Will appear on Front Office, e.g., euro, dollar').'...

+
+ +
+ * +   +

'.$this->l('ISO code, e.g., USD for dollar, EUR for euro').'...

+
+ +
+ * +   +

'.$this->l('Numeric ISO code, e.g., 840 for dollar, 978 for euro').'...

+
+ +
+ * +

'.$this->l('Will appear on Front Office, e.g., €, $').'...

+
+ +
+ * +

'.$this->l('Conversion rate from one unit of your shop\'s default currency (for example, 1€) to this currency. For example, if the default currency is euros and this currency is dollars, type \'1.20\'').' 1€ = $1.20

+
+ +
+ +

'.$this->l('Applies to all prices, e.g.,').' $1,240.15

+
+ +
+ getFieldValue($obj, 'decimals') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'decimals') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Display decimals on prices').'

+
+ +
+ getFieldValue($obj, 'blank') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'blank') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Include a blank between sign and price, e.g.,').'
$1,240.15 -> $ 1,240.15

+
+ +
+ getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + +
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} + diff --git a/admin-dev/tabs/AdminCustomerThreads.php b/admin-dev/tabs/AdminCustomerThreads.php new file mode 100644 index 000000000..ed3a52228 --- /dev/null +++ b/admin-dev/tabs/AdminCustomerThreads.php @@ -0,0 +1,602 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminCustomerThreads extends AdminTab +{ + public function __construct() + { + global $cookie; + + $this->table = 'customer_thread'; + $this->lang = false; + $this->className = 'CustomerThread'; + $this->edit = false; + $this->view = true; + $this->delete = true; + + $this->_select = 'CONCAT(c.firstname," ",c.lastname) as customer, cl.name as contact, l.name as language, group_concat(message) as messages, ( + SELECT IFNULL(CONCAT(LEFT(e.firstname, 1),". ",e.lastname), "--") + FROM '._DB_PREFIX_.'customer_message cm2 INNER JOIN '._DB_PREFIX_.'employee e ON e.id_employee = cm2.id_employee + WHERE cm2.id_employee > 0 AND cm2.`id_customer_thread` = a.`id_customer_thread` + ORDER BY cm2.date_add DESC LIMIT 1) as employee'; + $this->_group = 'GROUP BY cm.id_customer_thread'; + $this->_join = ' + LEFT JOIN `'._DB_PREFIX_.'customer` c ON c.`id_customer` = a.`id_customer` + LEFT JOIN `'._DB_PREFIX_.'customer_message` cm ON cm.`id_customer_thread` = a.`id_customer_thread` + LEFT JOIN `'._DB_PREFIX_.'lang` l ON l.`id_lang` = a.`id_lang` + LEFT JOIN `'._DB_PREFIX_.'contact_lang` cl ON (cl.`id_contact` = a.`id_contact` AND cl.`id_lang` = '.(int)$cookie->id_lang.')'; + + $contactArray = array(); + $contacts = Contact::getContacts($cookie->id_lang); + foreach ($contacts AS $contact) + $contactArray[$contact['id_contact']] = $contact['name']; + + $languageArray = array(); + $languages = Language::getLanguages(); + foreach ($languages AS $language) + $languageArray[$language['id_lang']] = $language['name']; + + $statusArray = array( + 'open' => $this->l('Open'), + 'closed' => $this->l('Closed'), + 'pending1' => $this->l('Pending 1'), + 'pending2' => $this->l('Pending 2') + ); + + $imagesArray = array( + 'open' => 'status_green.gif', + 'closed' => 'status_red.gif', + 'pending1' => 'status_orange.gif', + 'pending2' => 'status_orange.gif' + ); + + $this->fieldsDisplay = array( + 'id_customer_thread' => array('title' => $this->l('ID'), 'width' => 25), + 'customer' => array('title' => $this->l('Customer'), 'width' => 100, 'filter_key' => 'customer', 'tmpTableFilter' => true), + 'email' => array('title' => $this->l('E-mail'), 'width' => 100, 'filter_key' => 'a!email'), + 'contact' => array('title' => $this->l('Type'), 'width' => 75, 'type' => 'select', 'select' => $contactArray, 'filter_key' => 'cl!id_contact', 'filter_type' => 'int'), + 'language' => array('title' => $this->l('Language'), 'width' => 60, 'type' => 'select', 'select' => $languageArray, 'filter_key' => 'l!id_lang', 'filter_type' => 'int'), + 'status' => array('title' => $this->l('Status'), 'width' => 50, 'type' => 'select', 'select' => $statusArray, 'icon' => $imagesArray, 'align' => 'center', 'filter_key' => 'a!status', 'filter_type' => 'string'), + 'employee' => array('title' => $this->l('Employee'), 'width' => 100, 'filter_key' => 'employee', 'tmpTableFilter' => true), + 'messages' => array('title' => $this->l('Messages'), 'width' => 50, 'filter_key' => 'messages', 'tmpTableFilter' => true, 'maxlength' => 0), + 'date_upd' => array('title' => $this->l('Last message'), 'width' => 90) + ); + + parent::__construct(); + } + + public function postProcess() + { + global $currentIndex, $cookie; + + if ($id_customer_thread = (int)Tools::getValue('id_customer_thread')) + { + if (($id_contact = (int)Tools::getValue('id_contact'))) + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'customer_thread SET id_contact = '.(int)$id_contact.' WHERE id_customer_thread = '.(int)$id_customer_thread); + if ($id_status = (int)Tools::getValue('setstatus')) + { + $statusArray = array(1 => 'open', 2 => 'closed', 3 => 'pending1', 4 => 'pending2'); + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'customer_thread SET status = "'.$statusArray[$id_status].'" WHERE id_customer_thread = '.(int)$id_customer_thread.' LIMIT 1'); + } + if (isset($_POST['id_employee_forward'])) + { + // Todo: need to avoid doubles + $messages = Db::getInstance()->ExecuteS(' + SELECT ct.*, cm.*, cl.name subject, CONCAT(e.firstname, \' \', e.lastname) employee_name, CONCAT(c.firstname, \' \', c.lastname) customer_name, c.firstname + FROM '._DB_PREFIX_.'customer_thread ct + LEFT JOIN '._DB_PREFIX_.'customer_message cm ON (ct.id_customer_thread = cm.id_customer_thread) + LEFT JOIN '._DB_PREFIX_.'contact_lang cl ON (cl.id_contact = ct.id_contact AND cl.id_lang = '.(int)$cookie->id_lang.') + LEFT OUTER JOIN '._DB_PREFIX_.'employee e ON e.id_employee = cm.id_employee + LEFT OUTER JOIN '._DB_PREFIX_.'customer c ON (c.email = ct.email) + WHERE ct.id_customer_thread = '.(int)Tools::getValue('id_customer_thread').' + ORDER BY cm.date_add DESC'); + $output = ''; + foreach ($messages AS $message) + $output .= $this->displayMsg($message, true, (int)Tools::getValue('id_employee_forward')); + + $cm = new CustomerMessage(); + $cm->id_employee = (int)$cookie->id_employee; + $cm->id_customer_thread = (int)Tools::getValue('id_customer_thread'); + $cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']); + $currentEmployee = new Employee($cookie->id_employee); + if (($id_employee = (int)Tools::getValue('id_employee_forward')) AND ($employee = new Employee($id_employee)) AND Validate::isLoadedObject($employee)) + { + $params = array( + '{messages}' => $output, + '{employee}' => $currentEmployee->firstname.' '.$currentEmployee->lastname, + '{comment}' => stripslashes($_POST['message_forward'])); + Mail::Send((int)($cookie->id_lang), 'forward_msg', Mail::l('Fwd: Customer message'), $params, + $employee->email, $employee->firstname.' '.$employee->lastname, + $currentEmployee->email, $currentEmployee->firstname.' '.$currentEmployee->lastname); + $cm->message = $this->l('Message forwarded to').' '.$employee->firstname.' '.$employee->lastname."\n".$this->l('Comment:').' '.$_POST['message_forward']; + $cm->add(); + } + elseif (($email = Tools::getValue('email')) AND Validate::isEmail($email)) + { + $params = array( + '{messages}' => $output, + '{employee}' => $currentEmployee->firstname.' '.$currentEmployee->lastname, + '{comment}' => stripslashes($_POST['message_forward'])); + Mail::Send((int)($cookie->id_lang), 'forward_msg', Mail::l('Fwd: Customer message'), $params, + $email, NULL, + $currentEmployee->email, $currentEmployee->firstname.' '.$currentEmployee->lastname); + $cm->message = $this->l('Message forwarded to').' '.$email."\n".$this->l('Comment:').' '.$_POST['message_forward']; + $cm->add(); + } + else + echo '
'.Tools::displayError('Email invalid.').'
'; + } + if (Tools::isSubmit('submitReply')) + { + $ct = new CustomerThread($id_customer_thread); + $cm = new CustomerMessage(); + $cm->id_employee = (int)$cookie->id_employee; + $cm->id_customer_thread = $ct->id; + $cm->message = Tools::htmlentitiesutf8(nl2br2(Tools::getValue('reply_message'))); + $cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']); + if (isset($_FILES) AND !empty($_FILES['joinFile']['name']) AND $_FILES['joinFile']['error'] != 0) + $this->_errors[] = Tools::displayError('An error occurred with the file upload.'); + else if ($cm->add()) + { + $fileAttachment = NULL; + if (!empty($_FILES['joinFile']['name'])) + { + $fileAttachment['content'] = file_get_contents($_FILES['joinFile']['tmp_name']); + $fileAttachment['name'] = $_FILES['joinFile']['name']; + $fileAttachment['mime'] = $_FILES['joinFile']['type']; + } + $params = array( + '{reply}' => nl2br2(Tools::getValue('reply_message')), + '{link}' => Tools::getHttpHost(true).__PS_BASE_URI__.'contact-form.php?id_customer_thread='.(int)($ct->id).'&token='.$ct->token); + Mail::Send($ct->id_lang, 'reply_msg', Mail::l('An answer to your message is available'), $params, Tools::getValue('msg_email'), NULL, NULL, NULL, $fileAttachment); + $ct->status = 'closed'; + $ct->update(); + Tools::redirectAdmin($currentIndex.'&id_customer_thread='.(int)$id_customer_thread.'&viewcustomer_thread&token='.Tools::getValue('token')); + } + else + $this->_errors[] = Tools::displayError('An error occurred, your message was not sent. Please contact your system administrator.'); + } + } + + return parent::postProcess(); + } + + public function display() + { + global $cookie; + + if (isset($_GET['filename']) AND file_exists(_PS_UPLOAD_DIR_.$_GET['filename'])) + self::openUploadedFile(); + else if (isset($_GET['view'.$this->table])) + $this->viewcustomer_thread(); + else + { + $this->getList((int)$cookie->id_lang, !Tools::getValue($this->table.'Orderby') ? 'date_upd' : NULL, !Tools::getValue($this->table.'Orderway') ? 'DESC' : NULL); + $this->displayList(); + } + } + + public function displayListHeader($token = NULL) + { + global $currentIndex, $cookie; + + $contacts = Db::getInstance()->ExecuteS(' + SELECT cl.*, COUNT(*) as total, ( + SELECT id_customer_thread + FROM '._DB_PREFIX_.'customer_thread ct2 + WHERE status = "open" AND ct.id_contact = ct2.id_contact + ORDER BY date_upd ASC + LIMIT 1 + ) as id_customer_thread + FROM '._DB_PREFIX_.'customer_thread ct + LEFT JOIN '._DB_PREFIX_.'contact_lang cl ON (cl.id_contact = ct.id_contact AND cl.id_lang = '.$cookie->id_lang.') + WHERE ct.status = "open" + GROUP BY ct.id_contact HAVING COUNT(*) > 0'); + $categories = Db::getInstance()->ExecuteS(' + SELECT cl.* + FROM '._DB_PREFIX_.'contact ct + LEFT JOIN '._DB_PREFIX_.'contact_lang cl ON (cl.id_contact = ct.id_contact AND cl.id_lang = '.$cookie->id_lang.') + WHERE ct.customer_service = 1'); + $dim = count($categories); + + echo '
'; + foreach ($categories as $key => $val) + { + $totalThread = 0; + $id_customer_thread = 0; + foreach ($contacts as $tmp => $tmp2) + if ($val['id_contact'] == $tmp2['id_contact']) + { + $totalThread = $tmp2['total']; + $id_customer_thread = $tmp2['id_customer_thread']; + break; + } + echo '
+

 '.$val['name'].'

'. + ($dim > 6 ? '' : '

'.$val['description'].'

'). + ($totalThread == 0 ? '

'.$this->l('No new message').'

' + : ''.$totalThread.' '.($totalThread > 1 ? $this->l('new messages'): $this->l('new message')).'').' +
'; + } + echo '
'; + + $params = array( + $this->l('Total threads') => $all = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'customer_thread'), + $this->l('Threads pending') => $pending = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'customer_thread WHERE status LIKE "%pending%"'), + $this->l('Total customer messages') => Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'customer_message WHERE id_employee = 0'), + $this->l('Total employee messages') => Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'customer_message WHERE id_employee != 0'), + $this->l('Threads unread') => $unread = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'customer_thread WHERE status = "open"'), + $this->l('Threads closed') => $all - ($unread + $pending)); + + echo '
+

'.$this->l('Customer service').' : '.$this->l('Statistics').'

+ '; + $count = 0; + foreach ($params as $key => $val) + echo ''; + echo '
'.$key.''.$val.'
+

 

'; + parent::displayListHeader($token); + } + + private function openUploadedFile() + { + $filename = $_GET['filename']; + + $extensions = array('.txt' => 'text/plain', '.rtf' => 'application/rtf', '.doc' => 'application/msword', '.docx'=> 'application/msword', + '.pdf' => 'application/pdf', '.zip' => 'multipart/x-zip', '.png' => 'image/png', '.jpeg' => 'image/jpeg', '.gif' => 'image/gif', '.jpg' => 'image/jpeg'); + + $extension = ''; + foreach ($extensions AS $key => $val) + if (substr($filename, -4) == $key OR substr($filename, -5) == $key) + { + $extension = $val; + break; + } + + ob_end_clean(); + header('Content-Type: '.$extension); + header('Content-Disposition:attachment;filename="'.$filename.'"'); + readfile(_PS_UPLOAD_DIR_.$filename); + die; + } + private function displayMsg($message, $email = false, $id_employee = null) + { + global $cookie, $currentIndex; + + $customersToken = Tools::getAdminToken('AdminCustomers'.(int)(Tab::getIdFromClassName('AdminCustomers')).(int)($cookie->id_employee)); + $contacts = Contact::getContacts($cookie->id_lang); + + if (!$email) + { + if (!empty($message['id_product']) AND empty($message['employee_name'])) + $id_order_product = Db::getInstance()->getValue(' + SELECT o.id_order + FROM '._DB_PREFIX_.'orders o + LEFT JOIN '._DB_PREFIX_.'order_detail od ON o.id_order = od.id_order + WHERE o.id_customer = '.(int)$message['id_customer'].' + AND od.product_id = '.(int)$message['id_product'].' + ORDER BY o.date_add DESC'); + + $output = ' +
+ '.( + !empty($message['employee_name']) + ? ''.Configuration::get('PS_SHOP_NAME').' '.Configuration::get('PS_SHOP_NAME').' - '.$message['employee_name'] + : ''.Configuration::get('PS_SHOP_NAME').' '.( + !empty($message['id_customer']) + ? ''.$message['customer_name'].'' + : $message['email'] + ) + ).' +
'.( + (!empty($message['id_customer']) AND empty($message['employee_name'])) + ? ''.$this->l('Customer ID:').' '.(int)($message['id_customer']).' '.$this->l('view').'
' + : '' + ).' + '.$this->l('Sent on:').' '.Tools::displayDate($message['date_add'], (int)($cookie->id_lang), true).'
'.( + empty($message['employee_name']) + ? ''.$this->l('Browser:').' '.strip_tags($message['user_agent']).'
' + : '' + ).( + (!empty($message['file_name']) AND file_exists(_PS_UPLOAD_DIR_.$message['file_name'])) + ? ''.$this->l('File attachment').' '.$this->l('view').'
' + : '' + ).( + (!empty($message['id_order']) AND empty($message['employee_name'])) + ? ''.$this->l('Order #').' '.(int)($message['id_order']).' '.$this->l('view').'
' + : '' + ).( + (!empty($message['id_product']) AND empty($message['employee_name'])) + ? ''.$this->l('Product #').' '.(int)($message['id_product']).' '.$this->l('view').'
' + : '' + ).'
+
+ '.$this->l('Subject:').' + + +
'; + } + else + { + $output = '
+ '.($id_employee ? ''.$this->l('View this thread').'
' : '').' + '.$this->l('Sent by:').' '.(!empty($message['customer_name']) ? $message['customer_name'].' ('.$message['email'].')' : $message['email']) + .((!empty($message['id_customer']) AND empty($message['employee_name'])) ? '
'.$this->l('Customer ID:').' '.(int)($message['id_customer']).'
' : '') + .((!empty($message['id_order']) AND empty($message['employee_name'])) ? '
'.$this->l('Order #').': '.(int)($message['id_order']).'
' : '') + .((!empty($message['id_product']) AND empty($message['employee_name'])) ? '
'.$this->l('Product #').': '.(int)($message['id_product']).'
' : '') + .'
'.$this->l('Subject:').' '.$message['subject']; + } + + $message['message'] = preg_replace('/(https?:\/\/[a-z0-9#%&_=\(\)\.\? \+\-@\/]{6,1000})([\s\n<])/Uui', '\1\2', html_entity_decode($message['message'], ENT_NOQUOTES, 'UTF-8')); + $output .= '

+ '.$this->l('Thread ID:').' '.(int)$message['id_customer_thread'].'
+ '.$this->l('Message ID:').' '.(int)$message['id_customer_message'].'
+ '.$this->l('Message:').'
+ '.$message['message'].' +
'; + + if (!$email) + { + if (empty($message['employee_name'])) + $output .= ' +

+ +

+
'; + } + + return $output; + } + + public function viewcustomer_thread() + { + global $cookie, $currentIndex; + + if (!($thread = $this->loadObject())) + return; + $cookie->{'customer_threadFilter_cl!id_contact'} = $thread->id_contact; + + $employees = Db::getInstance()->ExecuteS(' + SELECT e.id_employee, e.firstname, e.lastname FROM '._DB_PREFIX_.'employee e + WHERE e.active = 1 ORDER BY e.lastname ASC'); + + echo ' +

'.$this->l('Messages').'

+
+

+ '.$this->l('Forward this discussion to an employee:').' + +

+ +

+
+
 
'; + + $messages = Db::getInstance()->ExecuteS(' + SELECT ct.*, cm.*, cl.name subject, CONCAT(e.firstname, \' \', e.lastname) employee_name, CONCAT(c.firstname, \' \', c.lastname) customer_name, c.firstname + FROM '._DB_PREFIX_.'customer_thread ct + LEFT JOIN '._DB_PREFIX_.'customer_message cm ON (ct.id_customer_thread = cm.id_customer_thread) + LEFT JOIN '._DB_PREFIX_.'contact_lang cl ON (cl.id_contact = ct.id_contact AND cl.id_lang = '.(int)$cookie->id_lang.') + LEFT JOIN '._DB_PREFIX_.'employee e ON e.id_employee = cm.id_employee + LEFT JOIN '._DB_PREFIX_.'customer c ON (IFNULL(ct.id_customer, ct.email) = IFNULL(c.id_customer, c.email)) + WHERE ct.id_customer_thread = '.(int)Tools::getValue('id_customer_thread').' + ORDER BY cm.date_add DESC'); + + echo '
'; + + $nextThread = Db::getInstance()->getValue(' + SELECT id_customer_thread FROM '._DB_PREFIX_.'customer_thread ct + WHERE ct.status = "open" AND ct.date_upd > ( + SELECT date_add FROM '._DB_PREFIX_.'customer_message + WHERE (id_employee IS NULL OR id_employee = 0) AND id_customer_thread = '.(int)$thread->id.' + ORDER BY date_add DESC LIMIT 1 + ) + '.($cookie->{'customer_threadFilter_cl!id_contact'} ? 'AND ct.id_contact = '.(int)$cookie->{'customer_threadFilter_cl!id_contact'} : '').' + '.($cookie->{'customer_threadFilter_l!id_lang'} ? 'AND ct.id_lang = '.(int)$cookie->{'customer_threadFilter_l!id_lang'} : ''). + ' ORDER BY ct.date_upd ASC'); + if ($nextThread) + echo $this->displayButton(' + + +
'.$this->l('Answer to the next unanswered message in this category').' > +
'); + else + echo $this->displayButton(' + +
'.$this->l('The other messages in this category have been answered')); + + if ($thread->status != "closed") + echo $this->displayButton(' + + +
'.$this->l('Set this message as handled').' +
'); + + if ($thread->status != "pending1") + echo $this->displayButton(' + + +
'.$this->l('Declare this message').'
'.$this->l('as "pending 1"').'
'.$this->l('(will be answered later)').' +
'); + else + echo $this->displayButton(' + + +
'.$this->l('Click here to disable pending status').' +
'); + + if ($thread->status != "pending2") + echo $this->displayButton(' + + +
'.$this->l('Declare this message').'
'.$this->l('as "pending 2"').'
'.$this->l('(will be answered later)').' +
'); + else + echo $this->displayButton(' + + +
'.$this->l('Click here to disable pending status').' +
'); + + echo '
'; + + if ($thread->id_customer) + { + $customer = new Customer($thread->id_customer); + $products = $customer->getBoughtProducts(); + $orders = Order::getCustomerOrders($customer->id); + + echo '
'; + if ($orders AND sizeof($orders)) + { + $totalOK = 0; + $ordersOK = array(); + $tokenOrders = Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)); + foreach ($orders as $order) + if ($order['valid']) + { + $ordersOK[] = $order; + $totalOK += $order['total_paid_real']; + } + if ($countOK = sizeof($ordersOK)) + { + echo '
+

'.$this->l('Orders').'

+ + + + + + + + + + '; + $irow = 0; + foreach ($ordersOK AS $order) + echo ' + + + + + + + + '; + echo '
'.$this->l('ID').''.$this->l('Date').''.$this->l('Products').''.$this->l('Total paid').''.$this->l('Payment').''.$this->l('State').''.$this->l('Actions').'
'.$order['id_order'].''.Tools::displayDate($order['date_add'], (int)($cookie->id_lang)).''.$order['nb_products'].''.Tools::displayPrice($order['total_paid_real'], new Currency((int)($order['id_currency']))).''.$order['payment'].''.$order['order_state'].'
+

'.$this->l('Validated Orders:').' '.$countOK.' '.$this->l('for').' '.Tools::displayPrice($totalOK, new Currency(1)).'

+
'; + } + } + if ($products AND sizeof($products)) + { + echo '
+

'.$this->l('Products').'

+ + + + + + + + '; + $irow = 0; + $tokenOrders = Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)); + foreach ($products AS $product) + echo ' + + + + + + + '; + echo '
'.$this->l('Date').''.$this->l('ID').''.$this->l('Name').''.$this->l('Quantity').''.$this->l('Actions').'
'.Tools::displayDate($product['date_add'], (int)($cookie->id_lang), true).''.$product['product_id'].''.$product['product_name'].''.$product['product_quantity'].'
'; + } + echo '
'; + } + + echo '
'; + foreach ($messages AS $message) + echo $this->displayMsg($message); + echo '
 
'; + } + + private function displayButton($content) + { + return ' +
+

+ '.$content.' +

+
'; + } +} + diff --git a/admin-dev/tabs/AdminCustomers.php b/admin-dev/tabs/AdminCustomers.php new file mode 100644 index 000000000..33b1ec5f7 --- /dev/null +++ b/admin-dev/tabs/AdminCustomers.php @@ -0,0 +1,802 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminCustomers extends AdminTab +{ + public function __construct() + { + $this->table = 'customer'; + $this->className = 'Customer'; + $this->lang = false; + $this->edit = true; + $this->view = true; + $this->delete = true; + $this->deleted = true; + $this->requiredDatabase = true; + + $this->_select = '(YEAR(CURRENT_DATE)-YEAR(`birthday`)) - (RIGHT(CURRENT_DATE, 5) $this->l('M'), 2 => $this->l('F'), 9 => $this->l('?')); + $this->fieldsDisplay = array( + 'id_customer' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'id_gender' => array('title' => $this->l('Gender'), 'width' => 25, 'align' => 'center', 'icon' => array(1 => 'male.gif', 2 => 'female.gif', 'default' => 'unknown.gif'), 'orderby' => false, 'type' => 'select', 'select' => $genders, 'filter_key' => 'a!id_gender'), + 'lastname' => array('title' => $this->l('Last Name'), 'width' => 80), + 'firstname' => array('title' => $this->l('First name'), 'width' => 60), + 'email' => array('title' => $this->l('E-mail address'), 'width' => 120, 'maxlength' => 19), + 'age' => array('title' => $this->l('Age'), 'width' => 30, 'search' => false), + 'active' => array('title' => $this->l('Enabled'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false), + 'newsletter' => array('title' => $this->l('News.'), 'width' => 25, 'align' => 'center', 'type' => 'bool', 'icon' => array(0 => 'disabled.gif', 1 => 'enabled.gif'), 'orderby' => false), + 'optin' => array('title' => $this->l('Opt.'), 'width' => 25, 'align' => 'center', 'type' => 'bool', 'icon' => array(0 => 'disabled.gif', 1 => 'enabled.gif'), 'orderby' => false), + 'date_add' => array('title' => $this->l('Registration'), 'width' => 30, 'type' => 'date', 'align' => 'right'), + 'connect' => array('title' => $this->l('Connection'), 'width' => 60, 'type' => 'datetime', 'search' => false)); + + $this->optionTitle = $this->l('Customers options'); + $this->_fieldsOptions = array( + 'PS_PASSWD_TIME_FRONT' => array('title' => $this->l('Regenerate password:'), 'desc' => $this->l('Security minimum time to wait to regenerate the password'), 'cast' => 'intval', 'size' => 5, 'type' => 'text', 'suffix' => ' '.$this->l('minutes')) + ); + + parent::__construct(); + } + + public function postProcess() + { + global $currentIndex; + + if (Tools::isSubmit('submitDel'.$this->table) OR Tools::isSubmit('delete'.$this->table)) + { + $deleteForm = ' +
+
'.$this->l('How do you want to delete your customer(s)?').' + '.$this->l('You have two ways to delete a customer, please choose what you want to do.').' +

+ + +

+

+ + +

'; + foreach ($_POST as $key => $value) + if (is_array($value)) + foreach ($value as $val) + $deleteForm .= ''; + else + $deleteForm .= ''; + $deleteForm .= '
+
+
+
 
'; + } + + if (Tools::getValue('submitAdd'.$this->table)) + { + $groupList = Tools::getValue('groupBox'); + + /* Checking fields validity */ + $this->validateRules(); + if (!sizeof($this->_errors)) + { + $id = (int)(Tools::getValue('id_'.$this->table)); + if (isset($id) AND !empty($id)) + { + if ($this->tabAccess['edit'] !== '1') + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + else + { + $object = new $this->className($id); + if (Validate::isLoadedObject($object)) + { + $customer_email = strval(Tools::getValue('email')); + + // check if e-mail already used + if ($customer_email != $object->email) + { + $customer = new Customer(); + $customer->getByEmail($customer_email); + if ($customer->id) + $this->_errors[] = Tools::displayError('An account already exists for this e-mail address:').' '.$customer_email; + } + + if (!is_array($groupList) OR sizeof($groupList) == 0) + $this->_errors[] = Tools::displayError('Customer must be in at least one group.'); + else + if (!in_array(Tools::getValue('id_default_group'), $groupList)) + $this->_errors[] = Tools::displayError('Default customer group must be selected in group box.'); + + // Updating customer's group + if (!sizeof($this->_errors)) + { + $object->cleanGroups(); + if (is_array($groupList) AND sizeof($groupList) > 0) + $object->addGroups($groupList); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while loading object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + } + else + { + if ($this->tabAccess['add'] === '1') + { + $object = new $this->className(); + $this->copyFromPost($object, $this->table); + if (!$object->add()) + $this->_errors[] = Tools::displayError('An error occurred while creating object.').' '.$this->table.' ('.mysql_error().')'; + elseif (($_POST[$this->identifier] = $object->id /* voluntary */) AND $this->postImage($object->id) AND !sizeof($this->_errors) AND $this->_redirect) + { + // Add Associated groups + $group_list = Tools::getValue('groupBox'); + if (is_array($group_list) && sizeof($group_list) > 0) + $object->addGroups($group_list, true); + $parent_id = (int)(Tools::getValue('id_parent', 1)); + // Save and stay on same form + if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=3&update'.$this->table.'&token='.$this->token); + // Save and back to parent + if (Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent')) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$parent_id.'&conf=3&token='.$this->token); + // Default behavior (save and back) + Tools::redirectAdmin($currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=3&token='.$this->token); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + } + } + elseif (Tools::isSubmit('delete'.$this->table) AND $this->tabAccess['delete'] === '1') + { + switch (Tools::getValue('deleteMode')) + { + case 'real': + $this->deleted = false; + Discount::deleteByIdCustomer((int)(Tools::getValue('id_customer'))); + break; + case 'deleted': + $this->deleted = true; + break; + default: + echo $deleteForm; + if (isset($_POST['delete'.$this->table])) + unset($_POST['delete'.$this->table]); + if (isset($_GET['delete'.$this->table])) + unset($_GET['delete'.$this->table]); + break; + } + } + elseif (Tools::isSubmit('submitDel'.$this->table) AND $this->tabAccess['delete'] === '1') + { + switch (Tools::getValue('deleteMode')) + { + case 'real': + $this->deleted = false; + foreach (Tools::getValue('customerBox') as $id_customer) + Discount::deleteByIdCustomer((int)($id_customer)); + break; + case 'deleted': + $this->deleted = true; + break; + default: + echo $deleteForm; + if (isset($_POST['submitDel'.$this->table])) + unset($_POST['submitDel'.$this->table]); + if (isset($_GET['submitDel'.$this->table])) + unset($_GET['submitDel'.$this->table]); + break; + } + } + elseif (Tools::isSubmit('submitGuestToCustomer') AND Tools::getValue('id_customer')) + { + if ($this->tabAccess['edit'] === '1') + { + $customer = new Customer((int)Tools::getValue('id_customer')); + if (!Validate::isLoadedObject($customer)) + $this->_errors[] = Tools::displayError('This customer does not exist.'); + if ($customer->transformToCustomer(Tools::getValue('id_lang', Configuration::get('PS_LANG_DEFAULT')))) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$customer->id.'&conf=3&token='.$this->token); + else + $this->_errors[] = Tools::displayError('An error occurred while updating customer.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + return parent::postProcess(); + } + + public function viewcustomer() + { + global $currentIndex, $cookie, $link; + + $irow = 0; + $configurations = Configuration::getMultiple(array('PS_LANG_DEFAULT', 'PS_CURRENCY_DEFAULT')); + $defaultLanguage = (int)($configurations['PS_LANG_DEFAULT']); + $defaultCurrency = (int)($configurations['PS_CURRENCY_DEFAULT']); + if (!($customer = $this->loadObject())) + return; + $customerStats = $customer->getStats(); + $addresses = $customer->getAddresses($defaultLanguage); + $products = $customer->getBoughtProducts(); + $discounts = Discount::getCustomerDiscounts($defaultLanguage, $customer->id, false, false); + $orders = Order::getCustomerOrders($customer->id); + $carts = Cart::getCustomerCarts($customer->id); + $groups = $customer->getGroups(); + $messages = CustomerThread::getCustomerMessages($customer->id); + $referrers = Referrer::getReferrers($customer->id); + if ($totalCustomer = Db::getInstance()->getValue('SELECT SUM(total_paid_real) FROM '._DB_PREFIX_.'orders WHERE id_customer = '.$customer->id.' AND valid = 1')) + { + Db::getInstance()->getValue('SELECT SQL_CALC_FOUND_ROWS COUNT(*) FROM '._DB_PREFIX_.'orders WHERE valid = 1 GROUP BY id_customer HAVING SUM(total_paid_real) > '.$totalCustomer); + $countBetterCustomers = (int)Db::getInstance()->getValue('SELECT FOUND_ROWS()') + 1; + } + else + $countBetterCustomers = '-'; + + echo ' +
+ '.$customer->firstname.' '.$customer->lastname.' +
+ '.$customer->email.'

+ '.$this->l('ID:').' '.sprintf('%06d', $customer->id).'
+ '.$this->l('Registration date:').' '.Tools::displayDate($customer->date_add, (int)($cookie->id_lang), true).'
+ '.$this->l('Last visit:').' '.($customerStats['last_visit'] ? Tools::displayDate($customerStats['last_visit'], (int)($cookie->id_lang), true) : $this->l('never')).'
+ '.($countBetterCustomers != '-' ? $this->l('Rank: #').' '.(int)$countBetterCustomers.'
' : '').' +
+
+
+ +
+ '.$this->l('Newsletter:').' '.($customer->newsletter ? '' : '').'
+ '.$this->l('Opt-in:').' '.($customer->optin ? '' : '').'
+ '.$this->l('Age:').' '.$customerStats['age'].' '.((!empty($customer->birthday['age'])) ? '('.Tools::displayDate($customer->birthday, (int)($cookie->id_lang)).')' : $this->l('unknown')).'

+ '.$this->l('Last update:').' '.Tools::displayDate($customer->date_upd, (int)($cookie->id_lang), true).'
+ '.$this->l('Status:').' '.($customer->active ? '' : ''); + if ($customer->isGuest()) + echo ' +
+ '.$this->l('This customer is registered as').' '.$this->l('guest').' +
+ +

+ '.$this->l('This feature generates a random password and sends an e-mail to the customer').' +
+
+ '; + echo ' +
+
 
'; + + echo '
'.$this->l('Add a private note').' +

'.$this->l('This note will be displayed to all the employees but not to the customer.').'

+
+
+ + +
+
+
 
+ '; + + + echo '

'.$this->l('Messages').' ('.sizeof($messages).')

'; + if (sizeof($messages)) + { + echo ' + + + + + + '; + foreach ($messages AS $message) + echo ' + + + + '; + echo '
'.$this->l('Status').''.$this->l('Message').''.$this->l('Sent on').'
'.$message['status'].''.substr(strip_tags(html_entity_decode($message['message'], ENT_NOQUOTES, 'UTF-8')), 0, 75).'...'.Tools::displayDate($message['date_add'], (int)($cookie->id_lang), true).'
+
 
'; + } + else + echo $customer->firstname.' '.$customer->lastname.' '.$this->l('has never contacted you.'); + + // display hook specified to this page : AdminCustomers + if (($hook = Module::hookExec('adminCustomers', array('id_customer' => $customer->id))) !== false) + echo '
'.$hook.'
'; + echo '
 
'; + + echo '

'.$this->l('Groups').' ('.sizeof($groups).')

'; + if ($groups AND sizeof($groups)) + { + echo ' + + + + + + '; + $tokenGroups = Tools::getAdminToken('AdminGroups'.(int)(Tab::getIdFromClassName('AdminGroups')).(int)($cookie->id_employee)); + foreach ($groups AS $group) + { + $objGroup = new Group($group); + echo ' + + + + + '; + } + echo ' +
'.$this->l('ID').''.$this->l('Name').''.$this->l('Actions').'
'.$objGroup->id.''.$objGroup->name[$defaultLanguage].'
'; + } + echo '
 
'; + echo '

'.$this->l('Orders').' ('.sizeof($orders).')

'; + if ($orders AND sizeof($orders)) + { + $totalOK = 0; + $ordersOK = array(); + $ordersKO = array(); + $tokenOrders = Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)); + foreach ($orders as $order) + if ($order['valid']) + { + $ordersOK[] = $order; + $totalOK += $order['total_paid_real']; + } + else + $ordersKO[] = $order; + $orderHead = ' + + + + + + + + + + '; + $orderFoot = '
'.$this->l('ID').''.$this->l('Date').''.$this->l('Products').''.$this->l('Total paid').''.$this->l('Payment').''.$this->l('State').''.$this->l('Actions').'
'; + if ($countOK = sizeof($ordersOK)) + { + echo '

'.$this->l('Valid orders:').' '.$countOK.' '.$this->l('for').' '.Tools::displayPrice($totalOK, new Currency($defaultCurrency)).'

'.$orderHead; + foreach ($ordersOK AS $order) + echo ' + '.$order['id_order'].' + '.Tools::displayDate($order['date_add'], (int)($cookie->id_lang)).' + '.$order['nb_products'].' + '.Tools::displayPrice($order['total_paid_real'], new Currency((int)($order['id_currency']))).' + '.$order['payment'].' + '.$order['order_state'].' + + '; + echo $orderFoot.'
'; + } + if ($countKO = sizeof($ordersKO)) + { + echo '

'.$this->l('Invalid orders:').' '.$countKO.'

'.$orderHead; + foreach ($ordersKO AS $order) + echo ' + + '.$order['id_order'].' + '.Tools::displayDate($order['date_add'], (int)($cookie->id_lang)).' + '.$order['nb_products'].' + '.Tools::displayPrice($order['total_paid_real'], new Currency((int)($order['id_currency']))).' + '.$order['payment'].' + '.$order['order_state'].' + + '; + echo $orderFoot.'
 
'; + } + } + else + echo $customer->firstname.' '.$customer->lastname.' '.$this->l('has not placed any orders yet'); + + if ($products AND sizeof($products)) + { + echo '
 
+

'.$this->l('Products').' ('.sizeof($products).')

+ + + + + + + '; + $tokenOrders = Tools::getAdminToken('AdminOrders'.(int)(Tab::getIdFromClassName('AdminOrders')).(int)($cookie->id_employee)); + foreach ($products AS $product) + echo ' + + + + + + '; + echo ' +
'.$this->l('Date').''.$this->l('Name').''.$this->l('Quantity').''.$this->l('Actions').'
'.Tools::displayDate($product['date_add'], (int)($cookie->id_lang), true).''.$product['product_name'].''.$product['product_quantity'].'
'; + } + echo '
 
+

'.$this->l('Addresses').' ('.sizeof($addresses).')

'; + if (sizeof($addresses)) + { + echo ' + + + + + + + + + '; + $tokenAddresses = Tools::getAdminToken('AdminAddresses'.(int)(Tab::getIdFromClassName('AdminAddresses')).(int)($cookie->id_employee)); + foreach ($addresses AS $address) + echo ' + + + + + + + + '; + echo ' +
'.$this->l('Company').''.$this->l('Name').''.$this->l('Address').''.$this->l('Country').''.$this->l('Phone number(s)').''.$this->l('Actions').'
'.($address['company'] ? $address['company'] : '--').''.$address['firstname'].' '.$address['lastname'].''.$address['address1'].($address['address2'] ? ' '.$address['address2'] : '').' '.$address['postcode'].' '.$address['city'].''.$address['country'].''.($address['phone'] ? ($address['phone'].($address['phone_mobile'] ? '
'.$address['phone_mobile'] : '')) : ($address['phone_mobile'] ? '
'.$address['phone_mobile'] : '--')).'
+ + +
'; + } + else + echo $customer->firstname.' '.$customer->lastname.' '.$this->l('has not registered any addresses yet').'.'; + echo '
 
+

'.$this->l('Discounts').' ('.sizeof($discounts).')

'; + if (sizeof($discounts)) + { + echo ' + + + + + + + + + + '; + $tokenDiscounts = Tools::getAdminToken('AdminDiscounts'.(int)(Tab::getIdFromClassName('AdminDiscounts')).(int)($cookie->id_employee)); + foreach ($discounts AS $discount) + { + echo ' + + + + + + + + + '; + } + echo ' +
'.$this->l('ID').''.$this->l('Code').''.$this->l('Type').''.$this->l('Value').''.$this->l('Qty available').''.$this->l('Status').''.$this->l('Actions').'
'.$discount['id_discount'].''.$discount['name'].''.$discount['type'].''.$discount['value'].''.$discount['quantity_for_user'].''.$this->l('Status').' + + +
'; + + } + else + echo $customer->firstname.' '.$customer->lastname.' '.$this->l('has no discount vouchers').'.'; + echo '
 
'; + + echo '
+

'.$this->l('Carts').' ('.sizeof($carts).')

'; + if ($carts AND sizeof($carts)) + { + echo ' + + + + + + + + '; + $tokenCarts = Tools::getAdminToken('AdminCarts'.(int)(Tab::getIdFromClassName('AdminCarts')).(int)($cookie->id_employee)); + foreach ($carts AS $cart) + { + $cartI = new Cart((int)($cart['id_cart'])); + $summary = $cartI->getSummaryDetails(); + $currency = new Currency((int)($cart['id_currency'])); + $carrier = new Carrier((int)($cart['id_carrier'])); + echo ' + + + + + + + '; + } + echo ' +
'.$this->l('ID').''.$this->l('Date').''.$this->l('Total').''.$this->l('Carrier').''.$this->l('Actions').'
'.sprintf('%06d', $cart['id_cart']).''.Tools::displayDate($cart['date_add'], (int)($cookie->id_lang), true).''.Tools::displayPrice($summary['total_price'], $currency).''.$carrier->name.'
'; + } + else + echo $this->l('No cart available').'.'; + echo '
'; + + $interested = Db::getInstance()->ExecuteS('SELECT DISTINCT id_product FROM '._DB_PREFIX_.'cart_product cp INNER JOIN '._DB_PREFIX_.'cart c on c.id_cart = cp.id_cart WHERE c.id_customer = '.(int)$customer->id.' AND cp.id_product NOT IN ( + SELECT product_id FROM '._DB_PREFIX_.'orders o inner join '._DB_PREFIX_.'order_detail od ON o.id_order = od.id_order WHERE o.valid = 1 AND o.id_customer = '.(int)$customer->id.')'); + if (count($interested)) + { + echo '
+

'.$this->l('Products').' ('.count($interested).')

+ '; + foreach ($interested as $p) + { + $product = new Product((int)$p['id_product'], false, $cookie->id_lang); + echo ' + + + + + '; + } + echo '
'.(int)$product->id.''.Tools::htmlentitiesUTF8($product->name).'
'; + } + + echo '
 
'; + + /* Last connections */ + $connections = $customer->getLastConnections(); + if (sizeof($connections)) + { + echo '

'.$this->l('Last connections').'

+ + + + + + + + '; + foreach ($connections as $connection) + echo ' + + + + + + '; + echo '
'.$this->l('Date').''.$this->l('Pages viewed').''.$this->l('Total time').''.$this->l('Origin').''.$this->l('IP Address').'
'.Tools::displayDate($connection['date_add'], (int)($cookie->id_lang), true).''.(int)($connection['pages']).''.$connection['time'].''.($connection['http_referer'] ? preg_replace('/^www./', '', parse_url($connection['http_referer'], PHP_URL_HOST)) : $this->l('Direct link')).''.$connection['ipaddress'].'
 
'; + } + if (sizeof($referrers)) + { + echo '

'.$this->l('Referrers').'

+ + + + + '; + foreach ($referrers as $referrer) + echo ' + + + '; + echo '
'.$this->l('Date').''.$this->l('Name').'
'.Tools::displayDate($referrer['date_add'], (int)($cookie->id_lang), true).''.$referrer['name'].'
 
'; + } + echo ' '.$this->l('Back to customer list').'
'; + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + $birthday = explode('-', $this->getFieldValue($obj, 'birthday')); + $customer_groups = Tools::getValue('groupBox', $obj->getGroups()); + $groups = Group::getGroups($this->_defaultFormLanguage, true); + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Customer').' + +
+ getFieldValue($obj, 'id_gender') == 1 ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'id_gender') == 2 ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'id_gender') == 9 OR !$this->getFieldValue($obj, 'id_gender')) ? 'checked="checked" ' : '').'/> + +
+ +
+ * + '.$this->l('Invalid characters:').' 0-9!<>,;?=+()@#"�{}_$%:  +
+ +
+ * + '.$this->l('Forbidden characters:').' 0-9!<>,;?=+()@#"�{}_$%:  +
+ +
+ '.(!$obj->id ? '*' : '').' +

'.($obj->id ? $this->l('Leave blank if no change') : $this->l('5 characters min., only letters, numbers, or').' -_').'

+
+ +
+ * +
+ '; + $sl_year = ($this->getFieldValue($obj, 'birthday')) ? $birthday[0] : 0; + $years = Tools::dateYears(); + $sl_month = ($this->getFieldValue($obj, 'birthday')) ? $birthday[1] : 0; + $months = Tools::dateMonths(); + $sl_day = ($this->getFieldValue($obj, 'birthday')) ? $birthday[2] : 0; + $days = Tools::dateDays(); + $tab_months = array( + $this->l('January'), + $this->l('February'), + $this->l('March'), + $this->l('April'), + $this->l('May'), + $this->l('June'), + $this->l('July'), + $this->l('August'), + $this->l('September'), + $this->l('October'), + $this->l('November'), + $this->l('December')); + echo ' +
+ + + +
'; + echo ' +
+ getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Allow or disallow this customer to log in').'

+
+ +
+ getFieldValue($obj, 'newsletter') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'newsletter') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Customer will receive your newsletter via e-mail').'

+
+ +
+ getFieldValue($obj, 'optin') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'optin') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Customer will receive your ads via e-mail').'

+
+ +
+ +

'.$this->l('Apply non-cumulative rules (e.g., price, display method, reduction)').'

+
+ +
'; + if (sizeof($groups)) + { + echo ' + + + + + + '; + $irow = 0; + foreach ($groups as $group) + { + echo ' + + + + + '; + } + echo ' +
'.$this->l('ID').''.$this->l('Group name').'
'.''.$group['id_group'].'
+

'.$this->l('Check all the box(es) of groups of which the customer is to be a member').' *

+ '; + } else + echo '

'.$this->l('No group created').'

'; + echo ' +
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + + public function getList($id_lang, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL) + { + global $cookie; + return parent::getList((int)($cookie->id_lang), !Tools::getValue($this->table.'Orderby') ? 'date_add' : NULL, !Tools::getValue($this->table.'Orderway') ? 'DESC' : NULL); + } + + public function beforeDelete($object) + { + return $object->isUsed(); + } +} + + diff --git a/admin-dev/tabs/AdminDb.php b/admin-dev/tabs/AdminDb.php new file mode 100644 index 000000000..a2cf2ee7e --- /dev/null +++ b/admin-dev/tabs/AdminDb.php @@ -0,0 +1,150 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/tabs/AdminPreferences.php'); + +class AdminDb extends AdminPreferences +{ + public function __construct() + { + $this->className = 'Configuration'; + $this->table = 'configuration'; + + $this->_fieldsDatabase = array( + 'db_server' => array('title' => $this->l('Server:'), 'desc' => $this->l('IP or server name; \'localhost\' will work in most cases'), 'size' => 30, 'type' => 'text', 'required' => true), + 'db_name' => array('title' => $this->l('Database:'), 'desc' => $this->l('Database name (e.g., \'prestashop\')'), 'size' => 30, 'type' => 'text', 'required' => true), + 'db_prefix' => array('title' => $this->l('Prefix:'), 'size' => 30, 'type' => 'text'), + 'db_user' => array('title' => $this->l('User:'), 'size' => 30, 'type' => 'text', 'required' => true), + 'db_passwd' => array('title' => $this->l('Password:'), 'size' => 30, 'type' => 'password', 'desc' => $this->l('Leave blank if no change'))); + parent::__construct(); + } + + public function postProcess() + { + global $currentIndex; + + if (isset($_POST['submitDatabase'.$this->table])) + { + if ($this->tabAccess['edit'] === '1') + { + foreach ($this->_fieldsDatabase AS $field => $values) + if (isset($values['required']) AND $values['required']) + if (($value = Tools::getValue($field)) == false AND (string)$value != '0') + $this->_errors[] = Tools::displayError('field').' '.$values['title'].' '.Tools::displayError('is required.'); + + if (!sizeof($this->_errors)) + { + /* Datas are not saved in database but in config/settings.inc.php */ + $settings = array(); + foreach ($_POST as $k => $value) + if ($value) + $settings['_'.Tools::strtoupper($k).'_'] = $value; + rewriteSettingsFile(NULL, NULL, $settings); + Tools::redirectAdmin($currentIndex.'&conf=6'.'&token='.$this->token); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + if (Tools::isSubmit('submitEngine')) + { + if (!isset($_POST['tablesBox']) OR !sizeof($_POST['tablesBox'])) + $this->_errors[] = Tools::displayError('You do not have select tables'); + else + { + $available_engines = $this->_getEngines(); + $tables_status = $this->_getTablesStatus(); + $tables_engine = array(); + + foreach ($tables_status AS $table) + $tables_engine[$table['Name']] = $table['Engine']; + + $engineType = pSQL(Tools::getValue('engineType')); + foreach ($_POST['tablesBox'] AS $table) + { + if ($engineType == $tables_engine[$table]) + $this->_errors[] = $table.' '.$this->l('is already in').' '.$engineType; + else + if (!Db::getInstance()->Execute('ALTER TABLE '.pSQL($table).' ENGINE='.pSQL($engineType))) + $this->_errors[] = $this->l('Can\'t change engine for').' '.$table; + else + echo '
'.$this->l('Confirmation').''.$this->l('Engine change of').' '.$table.' '.$this->l('to').' '.$engineType.'
'; + } + } + } + + } + + public function display() + { + global $currentIndex; + echo $this->displayWarning($this->l('Be VERY CAREFUL with these settings, as changes may cause your PrestaShop online store to malfunction. For all issues, check the config/settings.inc.php file.')).'
'; + $this->_displayForm('database', $this->_fieldsDatabase, $this->l('Database'), 'width2', 'database_gear'); + $engines = $this->_getEngines(); + $irow = 0; + echo '
'.$this->l('MySQL Engine').'
+ '; + $tables_status = $this->_getTablesStatus(); + foreach ($tables_status AS $table) + { + if (!preg_match('/^'._DB_PREFIX_.'.*/Ui', $table['Name'])) + continue; + echo ' + + '; + } + echo '
'.$this->l('Table').''.$this->l('Table Engine').'
'.$table['Name'].''.$table['Engine'].'

+ +
+ + +
+
'; + } + + private function _getEngines() + { + $engines = Db::getInstance()->ExecuteS('SHOW ENGINES'); + $allowed_engines = array(); + foreach ($engines AS $engine) + { + if (in_array($engine['Engine'], array('InnoDB', 'MyISAM')) AND in_array($engine['Support'], array('DEFAULT', 'YES'))) + $allowed_engines[] = $engine['Engine']; + } + return $allowed_engines; + } + + private function _getTablesStatus() + { + return Db::getInstance()->ExecuteS('SHOW TABLE STATUS'); + } +} + + diff --git a/admin-dev/tabs/AdminDeliverySlip.php b/admin-dev/tabs/AdminDeliverySlip.php new file mode 100644 index 000000000..41d3d76c6 --- /dev/null +++ b/admin-dev/tabs/AdminDeliverySlip.php @@ -0,0 +1,104 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminDeliverySlip extends AdminTab +{ + public function __construct() + { + global $cookie; + + $this->table = 'delivery'; + + $this->optionTitle = $this->l('Delivery slips options'); + $this->_fieldsOptions = array( + 'PS_DELIVERY_PREFIX' => array('title' => $this->l('Delivery prefix:'), 'desc' => $this->l('Prefix used for delivery slips'), 'size' => 6, 'type' => 'textLang'), + 'PS_DELIVERY_NUMBER' => array('title' => $this->l('Delivery number:'), 'desc' => $this->l('The next delivery slip will begin with this number, and then increase with each additional slip'), 'size' => 6, 'type' => 'text'), + ); + + parent::__construct(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + $output = ' +

'.$this->l('Print PDF delivery slips').'

+
+ + +
+ * +

'.$this->l('Format: 2007-12-31 (inclusive)').'

+
+ +
+ * +

'.$this->l('Format: 2008-12-31 (inclusive)').'

+
+
+ +
+
* '.$this->l('Required fields').'
+ +
'; + + echo $output; + } + + public function display() + { + $this->displayForm(); + $this->displayOptionsList(); + } + + public function postProcess() + { + global $currentIndex; + + if (Tools::getValue('submitPrint')) + { + if (!Validate::isDate($_POST['date_from'])) + $this->_errors[] = $this->l('Invalid from date'); + if (!Validate::isDate($_POST['date_to'])) + $this->_errors[] = $this->l('Invalid end date'); + if (!sizeof($this->_errors)) + { + $orders = Order::getOrdersIdByDate($_POST['date_from'], $_POST['date_to'], NULL, 'delivery'); + if (sizeof($orders)) + Tools::redirectAdmin('pdf.php?deliveryslips='.urlencode(serialize($orders)).'&token='.$this->token); + else + $this->_errors[] = $this->l('No delivery slip found for this period'); + } + } + else + parent::postProcess(); + } +} + + diff --git a/admin-dev/tabs/AdminDiscounts.php b/admin-dev/tabs/AdminDiscounts.php new file mode 100644 index 000000000..aa7dd0d44 --- /dev/null +++ b/admin-dev/tabs/AdminDiscounts.php @@ -0,0 +1,486 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminDiscounts extends AdminTab +{ + + public function __construct() + { + global $cookie; + + $this->table = 'discount'; + $this->className = 'Discount'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + $this->_select = 'dtl.`name` AS discount_type, + IF(a.id_discount_type = 1, CONCAT(a.value, " %"), + IF(a.id_discount_type = 2, CONCAT(a.value, " ", c.sign), + "--")) as strvalue'; + $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'currency` c ON (c.`id_currency` = a.`id_currency`) + LEFT JOIN `'._DB_PREFIX_.'discount_type` dt ON (dt.`id_discount_type` = a.`id_discount_type`) + LEFT JOIN `'._DB_PREFIX_.'discount_type_lang` dtl ON (dt.`id_discount_type` = dtl.`id_discount_type` AND dtl.`id_lang` = '.(int)($cookie->id_lang).')'; + + $typesArray = array(); + $types = Discount::getDiscountTypes((int)($cookie->id_lang)); + foreach ($types AS $type) + $typesArray[$type['id_discount_type']] = $type['name']; + + $this->fieldsDisplay = array( + 'id_discount' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Code'), 'width' => 85, 'prefix' => '', 'suffix' => '', 'filter_key' => 'a!name'), + 'description' => array('title' => $this->l('Description'), 'width' => 100, 'filter_key' => 'b!description'), + 'discount_type' => array('title' => $this->l('Type'), 'type' => 'select', 'select' => $typesArray, 'filter_key' => 'dt!id_discount_type'), + 'strvalue' => array('title' => $this->l('Value'), 'width' => 50, 'align' => 'right', 'filter_key' => 'a!value'), + 'quantity' => array('title' => $this->l('Qty'), 'width' => 40, 'align' => 'right'), + 'date_to' => array('title' => $this->l('To'), 'width' => 60, 'type' => 'date', 'align' => 'right'), + 'active' => array('title' => $this->l('Status'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)); + + $this->optionTitle = $this->l('Discounts options'); + $this->_fieldsOptions = array( + 'PS_VOUCHERS' => array('title' => $this->l('Enable vouchers:'), 'desc' => $this->l('Allow the use of vouchers in shop'), 'cast' => 'intval', 'type' => 'bool'), + ); + parent::__construct(); + } + + protected function copyFromPost(&$object, $table) + { + parent::copyFromPost($object, $table); + + $object->cumulable = (!isset($_POST['cumulable']) ? false : true); + $object->cumulable_reduction = (!isset($_POST['cumulable_reduction']) ? false : true); + } + + public function postProcess() + { + global $currentIndex, $cookie; + $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; + + if ($discountName = Tools::getValue('name') AND Validate::isDiscountName($discountName) AND Discount::discountExists($discountName, Tools::getValue('id_discount'))) + $this->_errors[] = Tools::displayError('A voucher of this name already exists. Please choose another name.'); + + if (Tools::getValue('submitAdd'.$this->table)) + { + if (Tools::getValue('id_discount_type') == 2 AND Tools::getValue('id_currency') == 0) + $this->_errors[] = Tools::displayError('Please set a currency for this voucher.'); + if (!Validate::isBool_Id(Tools::getValue('id_target'))) + $this->_errors[] = Tools::displayError('Invalid customer or group ID field'); + else + { + $rules = explode('_', Tools::getValue('id_target')); + /* In form, there is one field for two differents fields in object*/ + $_POST[($rules[0] ? 'id_group' : 'id_customer')] = $rules[1]; + } + /* Checking fields validity */ + $this->validateRules(); + if (!sizeof($this->_errors)) + { + $id = (int)(Tools::getValue($this->identifier)); + + /* Object update */ + if (isset($id) AND !empty($id)) + { + if ($this->tabAccess['edit'] === '1') + { + $object = new $this->className($id); + if (Validate::isLoadedObject($object)) + { + /* Specific to objects which must not be deleted */ + if ($this->deleted AND $this->beforeDelete($object)) + { + $object->deleted = 1; + $object->update(); + $objectNew = new $this->className(); + $this->copyFromPost($objectNew, $this->table); + $result = $objectNew->add(); + if (Validate::isLoadedObject($objectNew)) + $this->afterDelete($objectNew, $object->id); + } + else + { + if (($categories = Tools::getValue('categoryBox')) === false OR (!empty($categories) AND !is_array($categories))) + die(Tools::displayError()); + $this->copyFromPost($object, $this->table); + $result = $object->update(true, false, $categories); + } + if (!$result) + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.''; + elseif ($this->postImage($object->id)) + { + if ($back = Tools::getValue('back')) + Tools::redirectAdmin(urldecode($back).'&conf=4'); + if (Tools::getValue('stay_here') == 'on' || Tools::getValue('stay_here') == 'true' || Tools::getValue('stay_here') == '1') + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=4&updatescene&token='.$token); + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=4&token='.$token); + + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + + /* Object creation */ + else + { + if ($this->tabAccess['add'] === '1') + { + $object = new $this->className(); + $this->copyFromPost($object, $this->table); + $categories = Tools::getValue('categoryBox', null); + if (!$object->add(true, false, $categories)) + $this->_errors[] = Tools::displayError('An error occurred while creating object.').' '.$this->table.''; + elseif (($_POST[$this->identifier] = $object->id /* voluntary */) AND $this->postImage($object->id) AND $this->_redirect) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=3&token='.$token); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + } + $this->_errors = array_unique($this->_errors); + } + else + return parent::postProcess(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' + +
+ '.($obj->id ? '' : '').' +
'.$this->l('Vouchers').' + +
+ + * + + '.$this->l('Invalid characters: numbers and').' !<>,;?=+()@#"�{}_$%:  +

'.$this->l('The voucher\'s code, at least 3 characters long, which the customer types in during check-out').'

+
+ +
+ * +
+ + +
'; + foreach ($this->_languages as $language) + echo '
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +

'.$this->l('Will appear in cart next to voucher code').'

+
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'description', 'description'); + echo '
+
+ +
+ + + + + + '; + $done = array(); + $index = array(); + $indexedCategories = isset($_POST['categoryBox']) ? $_POST['categoryBox'] : ($obj->id ? Discount::getCategories($obj->id) : array()); + $categories = Category::getCategories((int)($cookie->id_lang), false); + foreach ($indexedCategories AS $k => $row) + $index[] = $row['id_category']; + $this->recurseCategoryForInclude((int)(Tools::getValue($this->identifier)), $index, $categories, $categories[0][1], 1, $obj->id); + echo ' +
'.$this->l('ID').''.$this->l('Name').'
+

'.$this->l('Mark all checkbox(es) of categories to which the discount is to be applied').' *

+
+
+ +
+ * +

'.$this->l('Total quantity available (mainly for vouchers open to everyone)').'

+
+ +
+ * +

'.$this->l('Number of times a single customer can use this voucher').'

+
+ +
+ * +

'.$this->l('0 if not applicable').'

+
+
+

+ getFieldValue($obj, 'cumulable') == 1) ? ' checked="checked"' : '').' id="cumulable_on" value="1" /> + +

+
+
+

+ getFieldValue($obj, 'cumulable_reduction') == 1) ? ' checked="checked"' : '').' id="cumulable_reduction_on" value="1" /> + +

+
+ +
+ + +
'.$this->l('Filter:').' + +

'; + includeDatepicker(array('date_from', 'date_to'), true); + echo ' + +
+ * +

'.$this->l('Start date/time from which voucher can be used').'
'.$this->l('Format: YYYY-MM-DD HH:MM:SS').'

+
+ +
+ * +

'.$this->l('End date/time at which voucher is no longer valid').'
'.$this->l('Format: YYYY-MM-DD HH:MM:SS').'

+
+ +
+ getFieldValue($obj, 'cart_display') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'cart_display') ? 'checked="checked" ' : '').'/> + +
+
+ +
+ getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Enable or disable voucher').'

+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + /** + * Build a categories tree + * + * @param array $indexedCategories Array with categories where product is indexed (in order to check checkbox) + * @param array $categories Categories to list + * @param array $current Current category + * @param integer $id_category Current category id + */ + public static function recurseCategoryForInclude($id_obj, $indexedCategories, $categories, $current, $id_category = 1, $id_category_default = NULL, $has_suite = array()) + { + global $done; + static $irow; + + if (!isset($done[$current['infos']['id_parent']])) + $done[$current['infos']['id_parent']] = 0; + $done[$current['infos']['id_parent']] += 1; + + $todo = sizeof($categories[$current['infos']['id_parent']]); + $doneC = $done[$current['infos']['id_parent']]; + + $level = $current['infos']['level_depth'] + 1; + + echo ' + + + + + + '.$id_category.' + + '; + for ($i = 2; $i < $level; $i++) + echo ''; + echo '   + + '; + + if ($level > 1) + $has_suite[] = ($todo == $doneC ? 0 : 1); + if (isset($categories[$id_category])) + foreach ($categories[$id_category] AS $key => $row) + if ($key != 'infos') + self::recurseCategoryForInclude($id_obj, $indexedCategories, $categories, $categories[$id_category][$key], $key, $id_category_default, $has_suite); + } +} + + diff --git a/admin-dev/tabs/AdminEmails.php b/admin-dev/tabs/AdminEmails.php new file mode 100644 index 000000000..29ab4307c --- /dev/null +++ b/admin-dev/tabs/AdminEmails.php @@ -0,0 +1,108 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/tabs/AdminPreferences.php'); + +class AdminEmails extends AdminPreferences +{ + public function __construct() + { + global $cookie; + + $this->className = 'Configuration'; + $this->table = 'configuration'; + + foreach (Contact::getContacts((int)$cookie->id_lang) AS $contact) + $arr[] = array('email_message' => $contact['id_contact'], 'name' => $contact['name']); + + $this->_fieldsEmail = array( + 'PS_MAIL_EMAIL_MESSAGE' => array('title' => $this->l('Send e-mail to:'), 'desc' => $this->l('When customers send message from order page'), 'validation' => 'isUnsignedId', 'type' => 'select', 'cast' => 'intval', 'identifier' => 'email_message', 'list' => $arr), + 'PS_MAIL_METHOD' => array('title' => '', 'validation' => 'isGenericName', 'required' => true, 'type' => 'radio', 'choices' => array(1 => $this->l('Use PHP mail() function. Recommended; works in most cases'), 2 => $this->l('Set my own SMTP parameters. For advanced users ONLY')), 'js' => array(1 => 'onclick="$(\'#SMTP_CONTAINER\').slideUp();"', 2 => 'onclick="$(\'#SMTP_CONTAINER\').slideDown();"')), + 'PS_MAIL_TYPE' => array('title' => '', 'validation' => 'isGenericName', 'required' => true, 'type' => 'radio', 'choices' => array(1 => $this->l('Send e-mail as HTML'), 2 => $this->l('Send e-mail as Text'), 3 => $this->l('Both'))), + 'SMTP_CONTAINER' => array('title' => '', 'type' => 'container'), + 'PS_MAIL_DOMAIN' => array('title' => $this->l('Mail domain:'), 'desc' => $this->l('Fully qualified domain name (keep it empty if you do not know)'), 'validation' => 'isUrl', 'size' => 30, 'type' => 'text'), + 'PS_MAIL_SERVER' => array('title' => $this->l('SMTP server:'), 'desc' => $this->l('IP or server name (e.g., smtp.mydomain.com)'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'text'), + 'PS_MAIL_USER' => array('title' => $this->l('SMTP user:'), 'desc' => $this->l('Leave blank if not applicable'), 'validation' => 'isGenericName', 'size' => 30, 'type' => 'text'), + 'PS_MAIL_PASSWD' => array('title' => $this->l('SMTP password:'), 'desc' => $this->l('Leave blank if not applicable'), 'validation' => 'isPasswd', 'size' => 30, 'type' => 'password'), + 'PS_MAIL_SMTP_ENCRYPTION' => array('title' => $this->l('Encryption:'), 'desc' => $this->l('Use an encrypt protocol'), 'type' => 'select', 'cast' => 'strval', 'identifier' => 'mode', 'list' => array(array('mode' => 'off', 'name' => $this->l('None')), array('mode' => 'tls', 'name' => $this->l('TLS')), array('mode' => 'ssl', 'name' => $this->l('SSL')))), + 'PS_MAIL_SMTP_PORT' => array('title' => $this->l('Port:'), 'desc' => $this->l('Number of port to use'), 'validation' => 'isInt', 'size' => 5, 'type' => 'text', 'cast' => 'intval'), + 'SMTP_CONTAINER_END' => array('title' => '', 'type' => 'container_end', 'content' => '')); + + parent::__construct(); + } + + public function postProcess() + { + if (isset($_POST['submitEmail'.$this->table])) + { + if ($this->tabAccess['edit'] === '1') + { + if ($_POST['PS_MAIL_METHOD'] == 2 AND (empty($_POST['PS_MAIL_SERVER']) OR empty($_POST['PS_MAIL_SMTP_PORT']))) + $this->_errors[] = Tools::displayError('You must define a SMTP server and a SMTP port. If you do not know, use the PHP mail() function instead.'); + else + $this->_postConfig($this->_fieldsEmail); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + } + + public function display() { + $this->_displayForm('email', $this->_fieldsEmail, $this->l('E-mail'), 'width2', 'email'); + $this->_displayMailTest(); + } + + private function _displayMailTest() + { + echo ' +
+ '.$this->l('Test your e-mail configuration').' + + +
+ +
+
+ + + + + + +
+ +
+
+
'; + } +} diff --git a/admin-dev/tabs/AdminEmployees.php b/admin-dev/tabs/AdminEmployees.php new file mode 100644 index 000000000..aaeb660e1 --- /dev/null +++ b/admin-dev/tabs/AdminEmployees.php @@ -0,0 +1,229 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminEmployees extends AdminTab +{ + /** @var array profiles list */ + private $profilesArray = array(); + + public function __construct() + { + global $cookie; + + $this->table = 'employee'; + $this->className = 'Employee'; + $this->lang = false; + $this->edit = true; + $this->delete = true; + $this->_select = 'pl.`name` AS profile'; + $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'profile` p ON a.`id_profile` = p.`id_profile` + LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (pl.`id_profile` = p.`id_profile` AND pl.`id_lang` = '.(int)($cookie->id_lang).')'; + + $profiles = Profile::getProfiles((int)($cookie->id_lang)); + if (!$profiles) + $this->_errors[] = Tools::displayError('No profile'); + else + foreach ($profiles AS $profile) + $this->profilesArray[$profile['name']] = $profile['name']; + + $this->fieldsDisplay = array( + 'id_employee' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'lastname' => array('title' => $this->l('Last name'), 'width' => 130), + 'firstname' => array('title' => $this->l('First name'), 'width' => 130), + 'email' => array('title' => $this->l('E-mail address'), 'width' => 180), + 'profile' => array('title' => $this->l('Profile'), 'width' => 90, 'type' => 'select', 'select' => $this->profilesArray, 'filter_key' => 'pl!name'), + 'active' => array('title' => $this->l('Can log in'), 'align' => 'center', 'active' => 'status', 'type' => 'bool')); + + $this->optionTitle = $this->l('Employees options'); + $this->_fieldsOptions = array( + 'PS_PASSWD_TIME_BACK' => array('title' => $this->l('Password regenerate:'), 'desc' => $this->l('Security minimum time to wait to regenerate a new password'), 'cast' => 'intval', 'size' => 5, 'type' => 'text', 'suffix' => ' '.$this->l('minutes')), + 'PS_BO_ALLOW_EMPLOYEE_FORM_LANG' => array('title' => $this->l('Memorize form language:'), 'desc' => $this->l('Allow employees to save their own default form language'), 'cast' => 'intval', 'type' => 'select', 'identifier' => 'value', 'list' => array( + '0' => array('value' => 0, 'name' => $this->l('No')), + '1' => array('value' => 1, 'name' => $this->l('Yes')) + )) + ); + + parent::__construct(); + } + + protected function _childValidation() + { + if (!($obj = $this->loadObject(true))) + return false; + $email = $this->getFieldValue($obj, 'email'); + if (!Validate::isEmail($email)) + $this->_errors[] = Tools::displayError('Invalid e-mail'); + else if (Employee::employeeExists($email) AND !Tools::getValue('id_employee')) + $this->_errors[] = Tools::displayError('An account already exists for this e-mail address:').' '.$email; + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $profiles = Profile::getProfiles((int)($cookie->id_lang)); + + echo ' + + + +
+ '.($obj->id ? '' : '').' + '.((int)$this->tabAccess['view'] ? '' : '').' +
'.$this->l('Employees').' + +
+ * +
+ +
+ * +
+ +
+ * +

'.($obj->id ? $this->l('Leave blank if you do not want to change your password') : $this->l('Min. 8 characters; use only letters, numbers or').' -_').'

+
+ +
+ * +
 
+ +
+ +

'.$this->l('Back office background will be displayed in this color. HTML colors only (e.g.,').' "lightblue", "#CC6600")

+
 
+ +
+ * +
 
+ +
+ * +
'; + if ((int)$this->tabAccess['edit']) + { + echo '
 
+ +
+ getFieldValue($obj, 'bo_uimode') == 'hover' ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'bo_uimode') == 'click' ? 'checked="checked" ' : '').'/> + +
 
+ +
+ getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> + +

'.$this->l('Allow or disallow this employee to log into this Back Office').'

+
+ +
+ * +
'; + } + echo '
 
+
+ +
 
+
* '.$this->l('Required field').'
+
+
'; + } + + public function postProcess() + { + global $cookie; + + if (Tools::isSubmit('deleteemployee') OR Tools::isSubmit('status')) + { + if ($cookie->id_employee == Tools::getValue('id_employee')) + { + $this->_errors[] = Tools::displayError('You cannot disable or delete your own account.'); + return false; + } + + $employee = new Employee(Tools::getValue('id_employee')); + if ($employee->isLastAdmin()) + { + $this->_errors[] = Tools::displayError('You cannot disable or delete the last administrator account.'); + return false; + } + + } + elseif (Tools::isSubmit('submitAddemployee')) + { + if ($cookie->id_employee == Tools::getValue('id_employee') && Tools::getvalue('active') == 0) + { + $this->_errors[] = Tools::displayError('You cannot disable or delete the last administrator account.'); + return false; + } + + $employee = new Employee(Tools::getValue('id_employee')); + if (!(int)$this->tabAccess['edit']) + $_POST['id_profile'] = $_GET['id_profile'] = $employee->id_profile; + + if ($employee->isLastAdmin()) + { + if (Tools::getValue('id_profile') != (int)(_PS_ADMIN_PROFILE_)) + { + $this->_errors[] = Tools::displayError('You should have at least one employee in the administrator group.'); + return false; + } + + if (Tools::getvalue('active') == 0) + { + $this->_errors[] = Tools::displayError('You cannot disable or delete the last administrator account.'); + return false; + } + } + } + + return parent::postProcess(); + } +} + + diff --git a/admin-dev/tabs/AdminFeatures.php b/admin-dev/tabs/AdminFeatures.php new file mode 100644 index 000000000..5c890efeb --- /dev/null +++ b/admin-dev/tabs/AdminFeatures.php @@ -0,0 +1,202 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/tabs/AdminFeaturesValues.php'); + +class AdminFeatures extends AdminTab +{ + public function __construct() + { + $this->adminFeaturesValues = new AdminFeaturesValues(); + $this->table = 'feature'; + $this->className = 'Feature'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'name' => array('title' => $this->l('Name'), 'width' => 128), + 'value' => array('title' => $this->l('Values'), 'width' => 255, 'orderby' => false, 'search' => false)); + + parent::__construct(); + } + + public function display() + { + global $currentIndex; + + if ((isset($_POST['submitAddfeature_value']) AND sizeof($this->adminFeaturesValues->_errors)) + OR isset($_GET['updatefeature_value']) OR isset($_GET['addfeature_value'])) + { + $this->adminFeaturesValues->displayForm($this->token); + echo '

'.$this->l('Back to the features list').'
'; + } + else + parent::display(); + } + + /* Report to AdminTab::displayList() for more details */ + public function displayList() + { + global $currentIndex; + + echo '
+ '.$this->l('Add a new feature').'
+ '.$this->l('Add a new feature value').'

+ '.$this->l('Click on a feature name to view its values and then click again if you want to hide them.').'

'; + + $this->displayListHeader(); + echo ''; + + if (!sizeof($this->_list)) + echo ''.$this->l('No features found.').''; + + $irow = 0; + foreach ($this->_list AS $tr) + { + $id = (int)($tr['id_'.$this->table]); + echo ' + + + '.$tr['name'].' + + + '; + + echo ' + + + '.$this->l('Edit').'  + + '.$this->l('Delete').' + + '; + } + + $this->displayListFooter(); + + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +

'.$this->l('Add a new feature').'

+
+ '.($obj->id ? '' : '').' +
+ '.$this->l('Add a new feature').' + +
'; + foreach ($this->_languages AS $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name', 'name'); + echo ' +
+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + + public function displayErrors() + { + $this->adminFeaturesValues->displayErrors(); + parent::displayErrors(); + } + + public function postProcess() + { + global $cookie, $currentIndex; + $this->adminFeaturesValues->tabAccess = Profile::getProfileAccess($cookie->profile, $this->id); + $this->adminFeaturesValues->postProcess($this->token); + + if(Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.'Box'])) + { + $object = new $this->className(); + if ($object->deleteSelection($_POST[$this->table.'Box'])) + Tools::redirectAdmin($currentIndex.'&conf=2'.'&token='.$this->token); + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + else + parent::postProcess(); + } +} + + diff --git a/admin-dev/tabs/AdminFeaturesValues.php b/admin-dev/tabs/AdminFeaturesValues.php new file mode 100644 index 000000000..a9135ec84 --- /dev/null +++ b/admin-dev/tabs/AdminFeaturesValues.php @@ -0,0 +1,118 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminFeaturesValues extends AdminTab +{ + public function __construct() + { + $this->table = 'feature_value'; + $this->className = 'FeatureValue'; + $this->lang = true; + $this->edit = true; + $this->delete = true; + + parent::__construct(); + } + + /** + * Display form + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo ' +

'.$this->l('Add a new feature value').'

+
+ '.($obj->id ? '' : '').' +
+ '.$this->l('Add a new feature value').' + +
'; + foreach ($this->_languages as $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' <>;=#{}  +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'value', 'value'); + echo ' +
+
+ +
+ * +
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + + /** + * Manage page processing + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function postProcess($token = NULL) + { + global $currentIndex; + + if(Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.$_POST['groupid'].'Box'])) + { + $object = new $this->className(); + if ($object->deleteSelection($_POST[$this->table.$_POST['groupid'].'Box'])) + Tools::redirectAdmin($currentIndex.'&conf=2'.'&token='.($token ? $token : $this->token)); + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + else + parent::postProcess(); + } +} \ No newline at end of file diff --git a/admin-dev/tabs/AdminGenerator.php b/admin-dev/tabs/AdminGenerator.php new file mode 100644 index 000000000..3a334c7fe --- /dev/null +++ b/admin-dev/tabs/AdminGenerator.php @@ -0,0 +1,196 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminGenerator extends AdminTab +{ + public function __construct() + { + $this->_htFile = dirname(__FILE__).'/../../.htaccess'; + $this->_rbFile = dirname(__FILE__).'/../../robots.txt'; + $this->_smFile = dirname(__FILE__).'/../../sitemap.xml'; + $this->_rbData = $this->_getRobotsContent(); + return parent::__construct(); + } + + public function display() + { + global $currentIndex; + + $languages = Language::getLanguages(false); + + // Htaccess + echo ' +
+
'.$this->l('Htaccess file generation').' +

'.$this->l('Warning:').' '.$this->l('this tool can ONLY be used if you are hosted by an Apache web server. Please ask your webhost.').'

+

'.$this->l('This tool will automatically generate a ".htaccess" file that will give you the ability to do URL rewriting and to catch 404 errors.').'

+

'.$this->l('If you do not have "Friendly URL" enabled when generating the ".htaccess" file, this feature won\'t be available.').'

'; + if ($this->_checkConfiguration($this->_htFile)) + echo ' +
 
+ +
+ +

'.$this->l('This will add directives to your .htaccess file which should improve caching and compression.').'

+
+
 
+ +
+ +

'.$this->l('Enable only if your server allows URL rewriting.').'

+
+
 
+ +
+ +

'.$this->l('Add here the specifical directives of your hosting (SetEnv PHP_VER 5, AddType x-mapp-php5 .php...).').'

+
+

'.$this->l('Generate your ".htaccess" file by clicking on the following button:').'

+

+

'.$this->l('This will erase your').' '.$this->l('old').' '.$this->l('.htaccess file!').'

'; + else + echo ' +

'.$this->l('Before being able to use this tool, you need to:').'

+

'.$this->l('- create a').' '. $this->l('.htaccess').' '.$this->l('blank file in directory').' '.__PS_BASE_URI__.' +
'.$this->l('- give it write permissions (CHMOD 666 on Unix system)').'

'; + echo '

'; + + // Robots + echo '

+
+
'.$this->l('Robots file generation').' +

'.$this->l('Warning:').' '.$this->l('Your file robots.txt MUST be in your website\'s root directory and nowhere else.').'

+

'.$this->l('eg: http://www.yoursite.com/robots.txt').'.

+

'.$this->l('This tool will automatically generate a "robots.txt" file that you can configure to deny access to search engines for some pages.').'

'; + if ($this->_checkConfiguration($this->_rbFile)) + echo ' +

'.$this->l('Generate your "robots.txt" file by clicking on the following button:').'

+

+

'.$this->l('This will erase your').' '.$this->l('old').' '.$this->l('robots.txt file!').'

'; + else + echo ' +

'.$this->l('Before being able to use this tool, you need to:').'

+

'.$this->l('- create a').' '. $this->l('robots.txt').' '.$this->l('blank file in dir:').' '.__PS_BASE_URI__.' +
'.$this->l('- give it write permissions (CHMOD 666 on Unix system)').'

'; + echo '

'; + } + + public function _checkConfiguration($file) + { + if (file_exists($file)) + return is_writable($file); + return is_writable(dirname($file)); + } + + function postProcess() + { + global $currentIndex; + + if (Tools::isSubmit('submitHtaccess')) + { + if ($this->tabAccess['edit'] === '1') + { + Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', (int)Tools::getValue('PS_HTACCESS_CACHE_CONTROL')); + Configuration::updateValue('PS_REWRITING_SETTINGS', (int)Tools::getValue('PS_REWRITING_SETTINGS')); + Configuration::updateValue('PS_HTACCESS_SPECIFIC', Tools::getValue('ps_htaccess_specific'), true); + if (Tools::generateHtaccess($this->_htFile, Configuration::get('PS_REWRITING_SETTINGS'), Configuration::get('PS_HTACCESS_CACHE_CONTROL'), Tools::getValue('ps_htaccess_specific'))) + Tools::redirectAdmin($currentIndex.'&conf=4&token='.$this->token); + $this->_errors[] = $this->l('Cannot write into file:').' '.$this->_htFile.'
'.$this->l('Please check write permissions.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + + if (Tools::isSubmit('submitRobots')) + { + if ($this->tabAccess['edit'] === '1') + { + if (!$writeFd = @fopen($this->_rbFile, 'w')) + die ($this->l('Cannot write into file:').' '.$this->_rbFile.'
'.$this->l('Please check write permissions.')); + else + { + // PS Comments + fwrite($writeFd, "# robots.txt automaticaly generated by PrestaShop e-commerce open-source solution\n"); + fwrite($writeFd, "# http://www.prestashop.com - http://www.prestashop.com/forums\n\n"); + fwrite($writeFd, "# This file is to prevent the crawling and indexing of certain parts\n"); + fwrite($writeFd, "# of your site by web crawlers and spiders run by sites like Yahoo!\n"); + fwrite($writeFd, "# and Google. By telling these \"robots\" where not to go on your site,\n"); + fwrite($writeFd, "# you save bandwidth and server resources.\n\n"); + fwrite($writeFd, "# For more information about the robots.txt standard, see:\n"); + fwrite($writeFd, "# http://www.robotstxt.org/wc/robots.html\n\n"); + + // User-Agent + fwrite($writeFd, "User-agent: *\n\n"); + + // Directories + fwrite($writeFd, "# Directories\n"); + foreach ($this->_rbData['Directories'] as $dir) + fwrite($writeFd, 'Disallow: '.__PS_BASE_URI__.$dir."\n"); + fwrite($writeFd, "\n"); + + // Files + fwrite($writeFd, "# Files\n"); + foreach ($this->_rbData['Files'] as $file) + fwrite($writeFd, 'Disallow: '.__PS_BASE_URI__.$file."\n"); + fwrite($writeFd, "\n"); + + // Sitemap + fwrite($writeFd, "# Sitemap\n"); + if (file_exists($this->_smFile)) + if (filesize($this->_smFile)) + fwrite($writeFd, 'Sitemap: '.(Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].__PS_BASE_URI__.'sitemap.xml'."\n"); + fwrite($writeFd, "\n"); + + fclose($writeFd); + Tools::redirectAdmin($currentIndex.'&conf=4&token='.$this->token); + } + } else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + } + + public function _getRobotsContent() + { + $tab = array(); + + $lang_dir = 'lang-'.Language::getIsoById(Configuration::get('PS_LANG_DEFAULT')).'/'; + + // Directories + $tab['Directories'] = array('classes/', 'config/', 'download/', 'mails/', 'modules/', 'translations/', 'tools/', $lang_dir); + + // Files + $tab['Files'] = array('addresses.php', 'address.php', 'authentication.php', 'cart.php', 'discount.php', 'footer.php', + 'get-file.php', 'header.php', 'history.php', 'identity.php', 'images.inc.php', 'init.php', 'my-account.php', 'order.php', 'order-opc.php', + 'order-slip.php', 'order-detail.php', 'order-follow.php', 'order-return.php', 'order-confirmation.php', 'pagination.php', 'password.php', + 'pdf-invoice.php', 'pdf-order-return.php', 'pdf-order-slip.php', 'product-sort.php', 'search.php', 'statistics.php', + '*orderby=','*orderway=','*p=','*tag=','*id_currency=','*search_query=','*id_lang=','*back=','*utm_source=','*utm_medium=','*utm_campaign=','*n='); + + return $tab; + } +} + + diff --git a/admin-dev/tabs/AdminGeolocation.php b/admin-dev/tabs/AdminGeolocation.php new file mode 100755 index 000000000..1ed09e0f8 --- /dev/null +++ b/admin-dev/tabs/AdminGeolocation.php @@ -0,0 +1,189 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminGeolocation extends AdminTab +{ + public function display() + { + global $currentIndex, $cookie; + + echo ' +

'.$this->l('Geolocation').'

+ '; + + if (!$this->_isGeoLiteCityAvailable()) + $this->displayWarning($this->l('In order to use Geolocation, please download').' '.$this->l('this file').' '.$this->l('and decompress it into tools/geoip/ directory')); + + echo ' +
+
+ '.$this->l('Geolocation by IP').' + + +
+ + +

'.$this->l('This option allows you, among other things, to restrict access to your shop for many countries. See below.').'

+
+ +
+ +
+
+
+ '; + $allowedCountries = explode(';', Configuration::get('PS_ALLOWED_COUNTRIES')); + echo ' +
+
+ '.$this->l('Options').' + +
+ '.$this->l('The following features are only available if you enable the Geolocation by IP feature.').' +
+ + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+ + + + + + + + + '; + foreach (Country::getCountries(intval($cookie->id_lang)) AS $country) + echo ' + + + + + '; + echo ' + +
'.$this->l('Name').'
'.Tools::htmlentitiesUTF8($country['name']).'
+
+ +
+ +
+
+
+ +
+
+ '.$this->l('Whitelist of IP addresses').' + +
+ '.$this->l('You can add many IP addresses, these addresses will always be allowed to access your shop (e.g. Google bots IP).').' +
+ + +
+ +
+ +
+ +
+
+
+ '; + } + + public function postProcess() + { + global $currentIndex; + + if (Tools::isSubmit('submitGeolocationConfiguration')) + { + if ($this->_isGeoLiteCityAvailable()) + { + Configuration::updateValue('PS_GEOLOCATION_ENABLED', intval(Tools::getValue('PS_GEOLOCATION_ENABLED'))); + Tools::redirectAdmin($currentIndex.'&token='.Tools::getValue('token').'&conf=4'); + } + else + $this->_errors[] = Tools::displayError('Geolocation database is unavailable.'); + } + + if (Tools::isSubmit('submitGeolocationCountries')) + { + if (!is_array(Tools::getValue('countries')) OR !sizeof(Tools::getValue('countries'))) + $this->_errors[] = Tools::displayError('Country selection is invalid'); + else + { + Configuration::updateValue('PS_GEOLOCATION_BEHAVIOR', (!(int)(Tools::getValue('PS_GEOLOCATION_BEHAVIOR')) ? _PS_GEOLOCATION_NO_CATALOG_ : _PS_GEOLOCATION_NO_ORDER_)); + Configuration::updateValue('PS_GEOLOCATION_NA_BEHAVIOR', (int)Tools::getValue('PS_GEOLOCATION_NA_BEHAVIOR')); + Configuration::updateValue('PS_ALLOWED_COUNTRIES', implode(';', Tools::getValue('countries'))); + Tools::redirectAdmin($currentIndex.'&token='.Tools::getValue('token').'&conf=4'); + } + } + + if (Tools::isSubmit('submitGeolocationWhitelist')) + { + if (!Validate::isCleanHtml(Tools::getValue('PS_GEOLOCATION_WHITELIST'))) + $this->_errors[] = Tools::displayError('Invalid whitelist'); + else + { + Configuration::updateValue('PS_GEOLOCATION_WHITELIST', str_replace("\n", ';', str_replace("\r", '', Tools::getValue('PS_GEOLOCATION_WHITELIST')))); + Tools::redirectAdmin($currentIndex.'&token='.Tools::getValue('token').'&conf=4'); + } + } + + return parent::postProcess(); + } + + private function _isGeoLiteCityAvailable() + { + if (file_exists(_PS_GEOIP_DIR_.'GeoLiteCity.dat')) + return true; + return false; + } +} + diff --git a/admin-dev/tabs/AdminGroups.php b/admin-dev/tabs/AdminGroups.php new file mode 100644 index 000000000..7ec8e063f --- /dev/null +++ b/admin-dev/tabs/AdminGroups.php @@ -0,0 +1,335 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminGroups extends AdminTab +{ + public function __construct() + { + $this->table = 'group'; + $this->className = 'Group'; + $this->lang = true; + $this->edit = true; + $this->view = true; + $this->delete = true; + + $this->_select = ' + (SELECT COUNT(jcg.`id_customer`) + FROM `'._DB_PREFIX_.'customer_group` jcg + LEFT JOIN `'._DB_PREFIX_.'customer` jc ON (jc.`id_customer` = jcg.`id_customer`) + WHERE jc.`deleted` != 1 + AND jcg.`id_group` = a.`id_group`) AS nb + '; + $this->_group = 'GROUP BY a.id_group'; + $this->_listSkipDelete = array(1); + + $this->fieldsDisplay = array( + 'id_group' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Name'), 'width' => 80, 'filter_key' => 'b!name'), + 'reduction' => array('title' => $this->l('Discount'), 'width' => 50, 'align' => 'right'), + 'nb' => array('title' => $this->l('Members'), 'width' => 25, 'align' => 'center'), + 'date_add' => array('title' => $this->l('Creation date'), 'width' => 60, 'type' => 'date', 'align' => 'right')); + + parent::__construct(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + $groupReductions = $obj->id ? GroupReduction::getGroupReductions($obj->id, (int)($cookie->id_lang)) : array(); + $categories = Category::getSimpleCategories((int)($cookie->id_lang)); + + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Group').' + +
'; + foreach ($this->_languages as $language) + echo ' +
+ * + '.$this->l('Invalid characters:').' 0-9!<>,;?=+()@#"�{}_$%:  +
'; + $this->displayFlags($this->_languages, $this->_defaultFormLanguage, 'name', 'name'); + $reduction = htmlentities($this->getFieldValue($obj, 'reduction'), ENT_COMPAT, 'UTF-8'); + echo ' +
+
 
+ +
+ '.$this->l('%').' +

'.$this->l('Will automatically apply this value as a discount on ALL shop\'s products for this group\'s members.').'

+
'; + if ($obj->id) + { + echo ' + +
'; + if ($groupReductions) + { + echo ' + + + + + '; + foreach ($groupReductions AS $groupReduction) + echo ' + + + + + '; + echo '
'.$this->l('Category').''.$this->l('Value').''.$this->l('Action').'
'.Tools::htmlentitiesUTF8($groupReduction['category_name']).''.$this->l('Delete').'
'; + } + else + echo $this->l('No discount'); + echo '
'; + } + echo ' + +
+ +

'.$this->l('How the prices are displayed on order summary for this customer group (tax included or excluded).').'

+
+
 
+
+ +
+
* '.$this->l('Required field').'
+
+

'; + + if ($obj->id) + { + echo ' +
+ +
'.$this->l('New group discount').' + +
+ * +
+ +
+ * +
+
 
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + } + + public function viewgroup() + { + global $cookie; + + $currentIndex = 'index.php?tab=AdminGroups'; + if (!($obj = $this->loadObject(true))) + return; + $group = new Group((int)($obj->id)); + $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); + + echo ' +
+
+ '.strval($obj->name[(int)($cookie->id_lang)]).' +
 
+ '.$this->l('Discount:').' '.(float)($obj->reduction).$this->l('%').' +
+
 
'; + + $customers = $obj->getCustomers(); + $this->fieldsDisplay = (array( + 'ID' => array('title' => $this->l('ID')), + 'sex' => array('title' => $this->l('Sex')), + 'name' => array('title' => $this->l('Name')), + 'e-mail' => array('title' => $this->l('e-mail')), + 'birthdate' => array('title' => $this->l('Birth date')), + 'register_date' => array('title' => $this->l('Registration date')), + 'orders' => array('title' => $this->l('Orders')), + 'status' => array('title' => $this->l('Status')), + 'actions' => array('title' => $this->l('Actions')) + )); + + if (isset($customers) AND !empty($customers) AND $nbCustomers = sizeof($customers)) + { + echo '

'.$this->l('Customer members of this group').' ('.$nbCustomers.')

+ + '; + foreach ($this->fieldsDisplay AS $field) + echo ''.$field['title'].''; + echo ' + '; + $irow = 0; + foreach ($customers AS $k => $customer) + { + $imgGender = $customer['id_gender'] == 1 ? ''.$this->l('Male').'' : ($customer['id_gender'] == 2 ? ''.$this->l('Female').'' : ''); + echo ' + + + + + + + + + + + '; + } + echo '
'.$customer['id_customer'].''.$imgGender.''.stripslashes($customer['lastname']).' '.stripslashes($customer['firstname']).''.stripslashes($customer['email']).' '.$this->l('Write to this customer').''.Tools::displayDate($customer['birthday'], (int)($cookie->id_lang)).''.Tools::displayDate($customer['date_add'], (int)($cookie->id_lang)).''.Order::getCustomerNbOrders($customer['id_customer']).' + + '.$this->l('View orders').' + + '.$this->l('Modify this customer').' + + '.$this->l('Delete this customer').' +
'; + } + else + echo '

'.$this->l('No user in this group.').'

'; + } + + public function postProcess() + { + global $currentIndex; + + $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; + + if (Tools::isSubmit('deleteGroupReduction')) + { + if ($this->tabAccess['delete'] === '1') + { + if (!$id_group_reduction = Tools::getValue('id_group_reduction')) + $this->_errors[] = Tools::displayError('Invalid group reduction ID'); + else + { + $groupReduction = new GroupReduction((int)($id_group_reduction)); + if (!$groupReduction->delete()) + $this->_errors[] = Tools::displayError('An error occurred while deleting the group reduction'); + else + Tools::redirectAdmin($currentIndex.'&update'.$this->table.'&id_group='.(int)(Tools::getValue('id_group')).'&conf=1&token='.$token); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + if (Tools::isSubmit('submitAddGroupReduction')) + { + if ($this->tabAccess['add'] === '1') + { + if (!($obj = $this->loadObject())) + return; + $groupReduction = new GroupReduction(); + if (!$id_category = Tools::getValue('id_category') OR !Validate::isUnsignedId($id_category)) + $this->_errors[] = Tools::displayError('Wrong category ID'); + elseif (!$reduction = Tools::getValue('reduction') OR !Validate::isPrice($reduction)) + $this->_errors[] = Tools::displayError('Invalid reduction (must be a percentage)'); + elseif (GroupReduction::doesExist((int)($obj->id), $id_category)) + $this->_errors[] = Tools::displayError('A reduction already exists for this category.'); + else + { + $groupReduction->id_category = (int)($id_category); + $groupReduction->id_group = (int)($obj->id); + $groupReduction->reduction = (float)($reduction) / 100; + if (!$groupReduction->add()) + $this->_errors[] = Tools::displayError('An error occurred while adding a category group reduction.'); + else + Tools::redirectAdmin($currentIndex.'&update'.$this->table.'&id_group='.(int)(Tools::getValue('id_group')).'&conf=3&token='.$this->token); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + if (Tools::isSubmit('submitAddgroup')) + { + if ($this->tabAccess['add'] === '1') + { + if (Tools::getValue('reduction') > 100 OR Tools::getValue('reduction') < 0) + $this->_errors[] = Tools::displayError('Reduction value is incorrect'); + else + { + $id_group_reductions = Tools::getValue('gr_id_group_reduction'); + $reductions = Tools::getValue('gr_reduction'); + if ($id_group_reductions) + foreach ($id_group_reductions AS $key => $id_group_reduction) + if (!Validate::isUnsignedId($id_group_reductions[$key]) OR !Validate::isPrice($reductions[$key])) + $this->_errors[] = Tools::displayError(); + else + { + $groupReduction = new GroupReduction((int)($id_group_reductions[$key])); + $groupReduction->reduction = $reductions[$key] / 100; + if (!$groupReduction->update()) + $this->errors[] = Tools::displayError('Cannot update group reductions'); + } + if (!sizeof($this->_errors)) + parent::postProcess(); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + elseif (isset($_GET['delete'.$this->table])) + { + if ($this->tabAccess['delete'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->id == 1) + $this->_errors[] = Tools::displayError('You cannot delete default group.'); + else + { + if ($object->delete()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.$token); + $this->_errors[] = Tools::displayError('An error occurred during deletion.'); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + else + parent::postProcess(); + } +} diff --git a/admin-dev/tabs/AdminHome.php b/admin-dev/tabs/AdminHome.php new file mode 100644 index 000000000..9f11b09a8 --- /dev/null +++ b/admin-dev/tabs/AdminHome.php @@ -0,0 +1,446 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminHome extends AdminTab +{ + public function postProcess() + { + } + + private function _displayOptimizationTips() + { + $rewrite = 0; + if (Configuration::get('PS_REWRITING_SETTINGS')) + { + $rewrite = 2; + if (!file_exists(dirname(__FILE__).'/../../.htaccess')) + $rewrite = 1; + else + { + $stat = stat(dirname(__FILE__).'/../../.htaccess'); + if (strtotime(Db::getInstance()->getValue('SELECT date_upd FROM '._DB_PREFIX_.'configuration WHERE name = "PS_REWRITING_SETTINGS"')) > $stat['mtime']) + $rewrite = 0; + } + } + + $htaccessAfterUpdate = 2; + $htaccessOptimized = (Configuration::get('PS_HTACCESS_CACHE_CONTROL') ? 2 : 0); + if (!file_exists(dirname(__FILE__).'/../.htaccess')) + { + if (Configuration::get('PS_HTACCESS_CACHE_CONTROL')) + $htaccessOptimized = 1; + } + else + { + $stat = stat(dirname(__FILE__).'/../.htaccess'); + $dateUpdHtaccess = Db::getInstance()->getValue('SELECT date_upd FROM '._DB_PREFIX_.'configuration WHERE name = "PS_HTACCESS_CACHE_CONTROL"'); + if (Configuration::get('PS_HTACCESS_CACHE_CONTROL') AND strtotime($dateUpdHtaccess) > $stat['mtime']) + $htaccessOptimized = 1; + + $dateUpdate = Configuration::get('PS_LAST_SHOP_UPDATE'); + if ($dateUpdate AND strtotime($dateUpdate) > $stat['mtime']) + $htaccessAfterUpdate = 0; + } + + $smartyOptimized = 0; + if (!Configuration::get('PS_SMARTY_FORCE_COMPILE')) + ++$smartyOptimized; + if (Configuration::get('PS_SMARTY_CACHE')) + ++$smartyOptimized; + + $cccOptimized = Configuration::get('PS_CSS_THEME_CACHE') + + Configuration::get('PS_JS_THEME_CACHE') + + Configuration::get('PS_HTML_THEME_COMPRESSION') + + Configuration::get('PS_JS_HTML_THEME_COMPRESSION'); + if ($cccOptimized == 4) + $cccOptimized = 2; + else + $cccOptimized = 1; + + $shopEnabled = (Configuration::get('PS_SHOP_ENABLE') ? 2 : 1); + + $lights = array( + 0 => array('image'=>'error2.png','color'=>'#fbe8e8'), + 1 => array('image'=>'warn2.png','color'=>'#fffac6'), + 2 => array('image'=>'ok2.png','color'=>'#dffad3')); + + + if ($rewrite + $htaccessOptimized + $smartyOptimized + $cccOptimized + $shopEnabled + $htaccessAfterUpdate != 12) + echo ' +
+
'.$this->l('A good beginning...') + .' + + v':'href="?hideOptimizationTips" > + X + ').'
'; + echo ' + + '; + echo ' +
'; + } + public function display() + { + global $cookie; + + $tab = get_class(); + $protocol = (!empty($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) != 'off')?'https':'http'; + $isoDefault = Language::getIsoById(intval(Configuration::get('PS_LANG_DEFAULT'))); + $isoUser = Language::getIsoById(intval($cookie->id_lang)); + $isoCountry = Country::getIsoById(Configuration::get('PS_COUNTRY_DEFAULT')); + $currency = new Currency((int)(Configuration::get('PS_CURRENCY_DEFAULT'))); + echo '
+

'.$this->l('Dashboard').'

+
+
'; + if (@ini_get('allow_url_fopen') AND $update = checkPSVersion()) + echo '

'.$this->l('New PrestaShop version available').' : '.$this->l('Download').' '.$update['name'].' !

'; + elseif (!@ini_get('allow_url_fopen')) + { + echo '

'.$this->l('Update notification unavailable').'

'; + echo '

 

'; + echo '

'.$this->l('To receive PrestaShop update warnings, you need to activate the allow_url_fopen command in your php.ini config file.').' ['.$this->l('more info').']

'; + echo '

'.$this->l('If you don\'t know how to do that, please contact your host administrator !').'


'; + } + echo '
'; + + if (!isset($cookie->show_screencast)) + $cookie->show_screencast = true; + if ($cookie->show_screencast) + echo' +
+ + +
+ +

'; + + + echo ' +
+ + '; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT SUM(o.`total_paid_real` / o.conversion_rate) as total_sales, COUNT(*) as total_orders + FROM `'._DB_PREFIX_.'orders` o + WHERE o.valid = 1 + AND o.`invoice_date` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\' '); + $result2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(`id_customer`) AS total_registrations + FROM `'._DB_PREFIX_.'customer` c + WHERE c.`date_add` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\''); + $result3 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT SUM(pv.`counter`) AS total_viewed + FROM `'._DB_PREFIX_.'page_viewed` pv + LEFT JOIN `'._DB_PREFIX_.'date_range` dr ON pv.`id_date_range` = dr.`id_date_range` + LEFT JOIN `'._DB_PREFIX_.'page` p ON pv.`id_page` = p.`id_page` + LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type` + WHERE pt.`name` = \'product.php\' + AND dr.`time_start` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\' + AND dr.`time_end` BETWEEN \''.date('Y-m').'-01 00:00:00\' AND \''.date('Y-m').'-31 23:59:59\''); + $results = array_merge($result, array_merge($result2, $result3)); + echo ' +
+
'.$this->l('View more').' '.$this->l('Monthly Statistics').'
+ + + + + + + + + + + + + + + + + +
+ '.$this->l('Sales').' + + '.Tools::displayPrice($results['total_sales'], $currency).' +
+ '.$this->l('Total registrations').' + + '.(int)($results['total_registrations']).' +
+ '.$this->l('Total orders').' + + '.(int)($results['total_orders']).' +
+ '.$this->l('Product pages viewed').' + + '.(int)($results['total_viewed']).' +
+
+ '; + $all = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'customer_thread'); + $unread = (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT COUNT(*) FROM `'._DB_PREFIX_.'customer_thread` WHERE `status` = "open"'); + $pending = (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT COUNT(*) FROM `'._DB_PREFIX_.'customer_thread` WHERE `status` LIKE "%pending%"'); + $close = $all - ($unread + $pending); + echo ' +
+
'.$this->l('View more').' '.$this->l('Customers service').'
+ + + + + + + + + + + + + + + + + +
+ '.$this->l('Thread unread').' + + '.$unread.' +
+ '.$this->l('Thread pending').' + + '.$pending.' +
+ '.$this->l('Thread closed').' + + '.$close.' +
+ '.$this->l('Total thread').' + + '.$all.' +
+
+ +
+
'.$this->l('View more').' '.$this->l('Statistics').' / '.$this->l('Sales of the week').'
+
'; + + define('PS_BASE_URI', __PS_BASE_URI__); + $chart = new Chart(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT total_paid / conversion_rate as total_converted, invoice_date + FROM '._DB_PREFIX_.'orders o + WHERE valid = 1 + AND invoice_date BETWEEN \''.date('Y-m-d', strtotime('-7 DAYS', time())).' 00:00:00\' AND \''.date('Y-m-d H:i:s').'\''); + foreach ($result as $row) + $chart->getCurve(1)->setPoint(strtotime($row['invoice_date']), $row['total_converted']); + $chart->setSize(580, 170); + $chart->setTimeMode(strtotime('-7 DAYS', time()), time(), 'd'); + $chart->getCurve(1)->setLabel($this->l('Sales +Tx').' ('.strtoupper($currency->iso_code).')'); + $chart->display(); + echo '
+
+ + + + + + + + + + + '; + + $orders = Order::getOrdersWithInformations(10); + $i = 0; + foreach ($orders AS $order) + { + $currency = Currency::getCurrency((int)$order['id_currency']); + echo ' + + + + + + + + '; + $i++; + } + + echo ' + +
'.$this->l('ID').''.$this->l('Customer Name').''.$this->l('Status').''.$this->l('Total').''.$this->l('Action').'
'.(int)$order['id_order'].''.Tools::htmlentitiesUTF8($order['firstname']).' '.Tools::htmlentitiesUTF8($order['lastname']).''.Tools::htmlentitiesUTF8($order['state_name']).''.Tools::displayPrice((float)$order['total_paid'], $currency).' + '.$this->l('See').' +
+ +
'; + + echo ' +
'; + + $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); + $content = @file_get_contents('https://www.prestashop.com/partner/preactivation/preactivation-block.php?version=1.0&shop='.urlencode(Configuration::get('PS_SHOP_NAME')).'&protocol='.$protocol.'&url='.urlencode($_SERVER['HTTP_HOST']).'&iso_country='.$isoCountry.'&iso_lang='.Tools::strtolower($isoUser).'&id_lang='.(int)$cookie->id_lang.'&email='.urlencode(Configuration::get('PS_SHOP_EMAIL')).'&security='.md5(Configuration::get('PS_SHOP_EMAIL')._COOKIE_IV_), false, $context); + $content = explode('|', $content); + if ($content[0] == 'OK') + { + echo $content[2]; + $content[1] = explode('#%#', $content[1]); + foreach ($content[1] as $partnerPopUp) + if ($partnerPopUp) + { + $partnerPopUp = explode('%%', $partnerPopUp); + if (!Configuration::get('PS_PREACTIVATION_'.strtoupper($partnerPopUp[0]))) + { + echo $partnerPopUp[1]; + Configuration::updateValue('PS_PREACTIVATION_'.strtoupper($partnerPopUp[0]), 'TRUE'); + } + } + } + + if (Tools::isSubmit('hideOptimizationTips')) + Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 1); + + $this->_displayOptimizationTips(); + + $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); + $content = @file_get_contents('https://www.prestashop.com/partner/prestashop/prestashop-link.php?iso_country='.$isoCountry.'&iso_lang='.Tools::strtolower($isoUser).'&id_lang='.(int)$cookie->id_lang, false, $context); + $content = explode('|', $content); + if ($content[0] == 'OK') + echo $content[1]; + else + echo ' + '; + + if (@fsockopen('www.prestashop.com', 80, $errno, $errst, 3)) + echo ''; + + $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); + $content = @file_get_contents('https://www.prestashop.com/partner/paypal/paypal-tips.php?protocol='.$protocol.'&iso_country='.$isoCountry.'&iso_lang='.Tools::strtolower($isoUser).'&id_lang='.(int)$cookie->id_lang, false, $context); + $content = explode('|', $content); + if ($content[0] == 'OK') + echo $content[1]; + + + echo '
+
'; + + echo Module::hookExec('backOfficeHome'); + } +} + + diff --git a/admin-dev/tabs/AdminImageResize.php b/admin-dev/tabs/AdminImageResize.php new file mode 100644 index 000000000..ef4c99230 --- /dev/null +++ b/admin-dev/tabs/AdminImageResize.php @@ -0,0 +1,100 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminImageResize extends AdminTab +{ + public function postProcess() + { + global $currentIndex, $cookie; + + if (isset($_POST['resize'])) + { + $imagesTypes = ImageType::getImagesTypes('products'); + $sourceFile['tmp_name'] = _PS_IMG_DIR_.'/p/'.Tools::getValue('id_product').'-'.Tools::getValue('id_image').'.jpg'; + foreach ($imagesTypes AS $k => $imageType) + if (!imageCut + ($sourceFile, + _PS_IMG_DIR_.'p/'.Tools::getValue('id_product').'-'.Tools::getValue('id_image').'-'.stripslashes($imageType['name']).'.jpg', + $imageType['width'], + $imageType['height'], + 'jpg', + $_POST[$imageType['id_image_type'].'_x1'], + $_POST[$imageType['id_image_type'].'_y1'])) + $this->_errors = Tools::displayError('An error occurred while copying image.').' '.stripslashes($imageType['name']); + // Save and stay on same form + if (Tools::getValue('saveandstay') == 'on') + Tools::redirectAdmin($currentIndex.'&id_product='.Tools::getValue('id_product').'&id_category='.(int)(Tools::getValue('id_category')).'&addproduct&conf=4&tabs=1&token='.Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee))); + // Default behavior (save and back) + Tools::redirectAdmin($currentIndex.'&id_category='.(int)(Tools::getValue('id_category')).'&conf='.(int)(Tools::getValue('conf')).'&token='.Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee))); + } else + parent::postProcess(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex, $cookie; + parent::displayForm(); + + $imagesTypes = ImageType::getImagesTypes(); + + echo ' + + + + + + +
+ + + + + + +
+ '.$this->l('Image resize').' + '.$this->l('Using your mouse, define which area of the image is to be used for generating each type of thumbnail.').' +

+ + +
+ + +
'; + foreach ($imagesTypes AS $type) + echo ' + + + + '; + echo '
+
'; + } +} \ No newline at end of file diff --git a/admin-dev/tabs/AdminImages.php b/admin-dev/tabs/AdminImages.php new file mode 100644 index 000000000..f52a0fddf --- /dev/null +++ b/admin-dev/tabs/AdminImages.php @@ -0,0 +1,379 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AdminImages extends AdminTab +{ + private $start_time = 0; + private $max_execution_time = 7200; + + public function __construct() + { + $this->table = 'image_type'; + $this->className = 'ImageType'; + $this->lang = false; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'id_image_type' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Name'), 'width' => 140, 'size' => 16), + 'width' => array('title' => $this->l('Width'), 'align' => 'right', 'suffix' => ' px', 'width' => 50, 'size' => 5), + 'height' => array('title' => $this->l('Height'), 'align' => 'right', 'suffix' => ' px', 'width' => 50, 'size' => 5) + ); + + parent::__construct(); + } + + public function displayList() + { + parent::displayList(); + $this->displayRegenerate(); + } + + public function postProcess() + { + global $currentIndex; + if (Tools::getValue('submitRegenerate'.$this->table)) + { + if ($this->tabAccess['edit'] === '1') + { + if ($this->_regenerateThumbnails(Tools::getValue('type'), Tools::getValue('erase'))) + Tools::redirectAdmin($currentIndex.'&conf=9'.'&token='.$this->token); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + else + parent::postProcess(); + } + + protected function _childValidation() + { + if (!Tools::getValue('id_image_type') AND Validate::isImageTypeName($typeName = Tools::getValue('name')) AND ImageType::typeAlreadyExists($typeName)) + $this->_errors[] = Tools::displayError('This name already exists.'); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + + echo $obj->id ? $this->displayWarning($this->l('After modification, do not forget to regenerate thumbnails')) : ''; + + echo ' +
+ '.($obj->id ? '' : '').' +
+ '.$this->l('Images').'
+ +
+ * +

'.$this->l('Letters only (e.g., small, medium, large, extra-large)').'

+
+ +
+ * +

'.$this->l('Maximum image width in pixels').'

+
+ +
+ * +

'.$this->l('Maximum image height in pixels').'

+
+ +
+ getFieldValue($obj, 'products') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'products') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This type will be applied to product images').'

+
+ +
+ getFieldValue($obj, 'categories') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'categories') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This type will be applied to category images').'

+
+ +
+ getFieldValue($obj, 'manufacturers') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'manufacturers') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This type will be applied to manufacturer images').'

+
+ +
+ getFieldValue($obj, 'suppliers') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'suppliers') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This type will be applied to suppliers images').'

+
+ +
+ getFieldValue($obj, 'scenes') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'scenes') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This type will be applied to scenes images').'

+
+ +
+ getFieldValue($obj, 'stores') ? 'checked="checked" ' : '').'/> + + getFieldValue($obj, 'stores') ? 'checked="checked" ' : '').'/> + +

'.$this->l('This type will be applied to stores images').'

+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + + /** + * Display form for thumbnails regeneration + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayRegenerate() + { + global $currentIndex; + + $types = array( + 'categories' => $this->l('Categories'), + 'manufacturers' => $this->l('Manufacturers'), + 'suppliers' => $this->l('Suppliers'), + 'scenes' => $this->l('Scenes'), + 'products' => $this->l('Products'), + 'stores' => $this->l('Stores') + ); + echo ' +

'.$this->l('Regenerate thumbnails').'

+ '.$this->l('Regenerates thumbnails for all existing product images').'.

'; + $this->displayWarning($this->l('Please be patient, as this can take several minutes').'
'.$this->l('Be careful! Manually generated thumbnails will be erased by automatically generated thumbnails.')); + echo ' +
+
+ '.$this->l('Regenerate thumbnails').'
+ +
+ +
'; + + foreach ($types AS $k => $type) + { + $formats = ImageType::getImagesTypes($k); + echo ' + + '; + } + echo ' + + +
+ +

'.$this->l('Uncheck this checkbox only if your server timed out and you need to resume the regeneration.').'

+
+
+
+
+
'; + } + + /** + * Delete resized image then regenerate new one with updated settings + */ + private function _deleteOldImages($dir, $type, $product = false) + { + $toDel = scandir($dir); + foreach ($toDel AS $d) + foreach ($type AS $imageType) + if (preg_match('/^[0-9]+\-'.($product ? '[0-9]+\-' : '').$imageType['name'].'\.jpg$/', $d) OR preg_match('/^([[:lower:]]{2})\-default\-(.*)\.jpg$/', $d)) + if (file_exists($dir.$d)) + unlink($dir.$d); + } + + // Regenerate images + private function _regenerateNewImages($dir, $type, $productsImages = false) + { + $errors = false; + $toRegen = scandir($dir); + if (!$productsImages) + { + foreach ($toRegen AS $image) + if (preg_match('/^[0-9]*\.jpg$/', $image)) + foreach ($type AS $k => $imageType) + { + // Customizable writing dir + $newDir = $dir; + if ($imageType['name'] == 'thumb_scene') + $newDir .= 'thumbs/'; + if (!file_exists($newDir)) + continue; + if (!file_exists($newDir.substr($image, 0, -4).'-'.stripslashes($imageType['name']).'.jpg')) + if (!imageResize($dir.$image, $newDir.substr($image, 0, -4).'-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height']))) + $errors = true; + if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server + return 'timeout'; + } + } + else + { + $productsImages = Image::getAllImages(); + foreach ($productsImages AS $k => $image) + if (file_exists($dir.$image['id_product'].'-'.$image['id_image'].'.jpg')) + foreach ($type AS $k => $imageType) + { + if (!file_exists($dir.$image['id_product'].'-'.$image['id_image'].'-'.stripslashes($imageType['name']).'.jpg')) + if (!imageResize($dir.$image['id_product'].'-'.$image['id_image'].'.jpg', $dir.$image['id_product'].'-'.$image['id_image'].'-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height']))) + $errors = true; + if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server + return 'timeout'; + } + } + return $errors; + } + + // Regenerate no-pictures images + private function _regenerateNoPictureImages($dir, $type, $languages) + { + $errors = false; + foreach ($type AS $k => $imageType) + foreach ($languages AS $language) + { + $file = $dir.$language['iso_code'].'.jpg'; + if (!file_exists($file)) + $file = _PS_PROD_IMG_DIR_.Language::getIsoById((int)(Configuration::get('PS_LANG_DEFAULT'))).'.jpg'; + if (!file_exists($dir.$language['iso_code'].'-default-'.stripslashes($imageType['name']).'.jpg')) + if (!imageResize($file, $dir.$language['iso_code'].'-default-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height']))) + $errors = true; + } + return $errors; + } + + // Hook watermark optimization + private function _regenerateWatermark($dir) + { + $result = Db::getInstance()->ExecuteS(' + SELECT m.`name` FROM `'._DB_PREFIX_.'module` m + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON hm.`id_module` = m.`id_module` + LEFT JOIN `'._DB_PREFIX_.'hook` h ON hm.`id_hook` = h.`id_hook` + WHERE h.`name` = \'watermark\' AND m.`active` = 1'); + + if ($result AND sizeof($result)) + { + $productsImages = Image::getAllImages(); + foreach ($productsImages AS $k => $image) + if (file_exists($dir.$image['id_product'].'-'.$image['id_image'].'.jpg')) + foreach ($result AS $k => $module) + { + if ($moduleInstance = Module::getInstanceByName($module['name']) AND is_callable(array($moduleInstance, 'hookwatermark'))) + call_user_func(array($moduleInstance, 'hookwatermark'), array('id_image' => $image['id_image'], 'id_product' => $image['id_product'])); + if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server + return 'timeout'; + } + } + } + + private function _regenerateThumbnails($type = 'all', $deleteOldImages = false) + { + $this->start_time = time(); + ini_set('max_execution_time', $this->max_execution_time); // ini_set may be disabled, we need the real value + $this->max_execution_time = (int)ini_get('max_execution_time'); + $languages = Language::getLanguages(false); + + $process = + array( + array('type' => 'categories', 'dir' => _PS_CAT_IMG_DIR_), + array('type' => 'manufacturers', 'dir' => _PS_MANU_IMG_DIR_), + array('type' => 'suppliers', 'dir' => _PS_SUPP_IMG_DIR_), + array('type' => 'scenes', 'dir' => _PS_SCENE_IMG_DIR_), + array('type' => 'products', 'dir' => _PS_PROD_IMG_DIR_), + array('type' => 'stores', 'dir' => _PS_STORE_IMG_DIR_) + ); + + // Launching generation process + foreach ($process AS $k => $proc) + { + if ($type != 'all' && $type != $proc['type']) + continue ; + + // Getting format generation + $formats = ImageType::getImagesTypes($proc['type']); + if ($type != 'all') + { + $format = strval(Tools::getValue('format_'.$type)); + if ($format != 'all') + foreach ($formats AS $k => $form) + if ($form['id_image_type'] != $format) + unset($formats[$k]); + } + + if ($deleteOldImages) + $this->_deleteOldImages($proc['dir'], $formats, ($proc['type'] == 'products' ? true : false)); + if (($return = $this->_regenerateNewImages($proc['dir'], $formats, ($proc['type'] == 'products' ? true : false))) === true) + $this->_errors[] = Tools::displayError('Cannot write ').$proc['type'].Tools::displayError(' images. Please check the folder\'s writing permissions.'); + elseif ($return == 'timeout') + $this->_errors[] = Tools::displayError('Only part of the images have been regenerated, server timed out before finishing.'); + else + { + if ($proc['type'] == 'products') + if ($this->_regenerateWatermark($proc['dir']) == 'timeout') + $this->_errors[] = Tools::displayError('Server timed out, the watermark may not have been applied on all your images.'); + if (!count($this->_errors)) + if ($this->_regenerateNoPictureImages($proc['dir'], $formats, $languages)) + $this->_errors[] = Tools::displayError('Cannot write no-picture image to').' ('.$proc['type'].') '.Tools::displayError('images folder. Please check the folder\'s writing permissions.'); + } + } + return (sizeof($this->_errors) > 0 ? false : true); + } +} diff --git a/admin-dev/tabs/AdminImport.php b/admin-dev/tabs/AdminImport.php new file mode 100644 index 000000000..e6993a04f --- /dev/null +++ b/admin-dev/tabs/AdminImport.php @@ -0,0 +1,1579 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(PS_ADMIN_DIR.'/../images.inc.php'); +@ini_set('max_execution_time', 0); +define('MAX_LINE_SIZE', 4096); + +define('UNFRIENDLY_ERROR', false); // Used for validatefields diying without user friendly error or not + +// this value set the number of columns visible on each page +define('MAX_COLUMNS', 6); +// correct Mac error on eof +@ini_set('auto_detect_line_endings', '1'); + +class AdminImport extends AdminTab +{ + public static $column_mask; + + public $entities = array(); + + public $available_fields = array(); + + public static $required_fields = array('name'); + + public static $default_values = array(); + + public $_warnings = array(); + + public static $validators = array( + 'active' => array('AdminImport', 'getBoolean'), + 'tax_rate' => array('AdminImport', 'getPrice'), + 'price_tex' => array('AdminImport', 'getPrice'), // Tax excluded + 'price_tin' => array('AdminImport', 'getPrice'), // Tax included + 'reduction_price' => array('AdminImport', 'getPrice'), + 'reduction_percent' => array('AdminImport', 'getPrice'), + 'wholesale_price' => array('AdminImport', 'getPrice'), + 'ecotax' => array('AdminImport', 'getPrice'), + 'name' => array('AdminImport', 'createMultiLangField'), + 'description' => array('AdminImport', 'createMultiLangField'), + 'description_short' => array('AdminImport', 'createMultiLangField'), + 'meta_title' => array('AdminImport', 'createMultiLangField'), + 'meta_keywords' => array('AdminImport', 'createMultiLangField'), + 'meta_description' => array('AdminImport', 'createMultiLangField'), + 'link_rewrite' => array('AdminImport', 'createMultiLangField'), + 'available_now' => array('AdminImport', 'createMultiLangField'), + 'available_later' => array('AdminImport', 'createMultiLangField'), + 'category' => array('AdminImport', 'split'), + 'online_only' => array('AdminImport', 'getBoolean') + ); + + public function __construct() + { + $this->entities = array_flip(array($this->l('Categories'), $this->l('Products'), $this->l('Combinations'), $this->l('Customers'), $this->l('Addresses'), $this->l('Manufacturers'), $this->l('Suppliers'))); + + switch ((int)(Tools::getValue('entity'))) + { + case $this->entities[$this->l('Combinations')]: + + self::$required_fields = array('id_product', 'options'); + $this->available_fields = array( + 'no' => $this->l('Ignore this column'), + 'id_product' => $this->l('Product ID').'*', + 'options' => $this->l('Options (Group:Value)').'*', + 'reference' => $this->l('Reference'), + 'supplier_reference' => $this->l('Supplier reference'), + 'ean13' => $this->l('EAN13'), + 'upc' => $this->l('UPC'), + 'wholesale_price' => $this->l('Wholesale price'), + 'price' => $this->l('Price'), + 'ecotax' => $this->l('Ecotax'), + 'quantity' => $this->l('Quantity'), + 'weight' => $this->l('Weight'), + 'default_on' => $this->l('Default') + ); + + self::$default_values = array( + 'reference' => '', + 'supplier_reference' => '', + 'ean13' => '', + 'upc' => '', + 'wholesale_price' => 0, + 'price' => 0, + 'ecotax' => 0, + 'quantity' => 0, + 'weight' => 0, + 'default_on' => 0 + ); + + break; + + case $this->entities[$this->l('Categories')]: + + $this->available_fields = array( + 'no' => $this->l('Ignore this column'), + 'id' => $this->l('ID'), + 'active' => $this->l('Active (0/1)'), + 'name' => $this->l('Name *'), + 'parent' => $this->l('Parent category'), + 'description' => $this->l('Description'), + 'meta_title' => $this->l('Meta-title'), + 'meta_keywords' => $this->l('Meta-keywords'), + 'meta_description' => $this->l('Meta-description'), + 'link_rewrite' => $this->l('URL rewritten'), + 'image' => $this->l('Image URL')); + + self::$default_values = array('active' => '1', 'parent' => '1', 'link_rewrite' => ''); + + break; + + case $this->entities[$this->l('Products')]: + + self::$validators['image'] = array('AdminImport', 'split'); + + $this->available_fields = array( + 'no' => $this->l('Ignore this column'), + 'id' => $this->l('ID'), + 'active' => $this->l('Active (0/1)'), + 'name' => $this->l('Name *'), + 'category' => $this->l('Categories (x,y,z...)'), + 'price_tex' => $this->l('Price tax excl.'), + 'price_tin' => $this->l('Price tax incl.'), + 'id_tax_rules_group' => $this->l('Tax rules id'), + 'wholesale_price' => $this->l('Wholesale price'), + 'on_sale' => $this->l('On sale (0/1)'), + 'reduction_price' => $this->l('Discount amount'), + 'reduction_percent' => $this->l('Discount percent'), + 'reduction_from' => $this->l('Discount from (yyyy-mm-dd)'), + 'reduction_to' => $this->l('Discount to (yyyy-mm-dd)'), + 'reference' => $this->l('Reference #'), + 'supplier_reference' => $this->l('Supplier reference #'), + 'supplier' => $this->l('Supplier'), + 'manufacturer' => $this->l('Manufacturer'), + 'ean13' => $this->l('EAN13'), + 'upc' => $this->l('UPC'), + 'ecotax' => $this->l('Ecotax'), + 'weight' => $this->l('Weight'), + 'quantity' => $this->l('Quantity'), + 'description_short' => $this->l('Short description'), + 'description' => $this->l('Description'), + 'tags' => $this->l('Tags (x,y,z...)'), + 'meta_title' => $this->l('Meta-title'), + 'meta_keywords' => $this->l('Meta-keywords'), + 'meta_description' => $this->l('Meta-description'), + 'link_rewrite' => $this->l('URL rewritten'), + 'available_now' => $this->l('Text when in-stock'), + 'available_later' => $this->l('Text if back-order allowed'), + 'image' => $this->l('Image URLs (x,y,z...)'), + 'feature' => $this->l('Feature'), + 'online_only' => $this->l('Only available online')); + + self::$default_values = array( + 'id_category' => array(1), + 'id_category_default' => 1, + 'active' => '1', + 'quantity' => 0, + 'price' => 0, + 'id_tax_rules_group' => 0, + 'description_short' => array((int)(Configuration::get('PS_LANG_DEFAULT')) => ''), + 'link_rewrite' => array((int)(Configuration::get('PS_LANG_DEFAULT')) => ''), + 'online_only' => 0); + + break; + + case $this->entities[$this->l('Customers')]: + + //Overwrite required_fields AS only email is required whereas other entities + self::$required_fields = array('email', 'passwd', 'lastname', 'firstname'); + + $this->available_fields = array( + 'no' => $this->l('Ignore this column'), + 'id' => $this->l('ID'), + 'active' => $this->l('Active (0/1)'), + 'id_gender' => $this->l('Gender ID (Mr = 1, Ms = 2, else 9)'), + 'email' => $this->l('E-mail *'), + 'passwd' => $this->l('Password *'), + 'birthday' => $this->l('Birthday (yyyy-mm-dd)'), + 'lastname' => $this->l('Lastname *'), + 'firstname' => $this->l('Firstname *'), + 'newsletter' => $this->l('Newsletter (0/1)'), + 'optin' => $this->l('Opt in (0/1)')); + + self::$default_values = array('active' => '1'); + + break; + case $this->entities[$this->l('Addresses')]: + + //Overwrite required_fields + self::$required_fields = array('lastname', 'firstname', 'address1', 'postcode', 'country', 'city'); + + $this->available_fields = array( + 'no' => $this->l('Ignore this column'), + 'id' => $this->l('ID'), + 'alias' => $this->l('Alias *'), + 'active' => $this->l('Active (0/1)'), + 'customer_email' => $this->l('Customer e-mail'), + 'manufacturer' => $this->l('Manufacturer'), + 'supplier' => $this->l('Supplier'), + 'company' => $this->l('Company'), + 'lastname' => $this->l('Lastname *'), + 'firstname' => $this->l('Firstname *'), + 'address1' => $this->l('Address 1 *'), + 'address2' => $this->l('Address 2'), + 'postcode' => $this->l('Postcode*/ Zipcode*'), + 'city' => $this->l('City *'), + 'country' => $this->l('Country *'), + 'state' => $this->l('State'), + 'other' => $this->l('Other'), + 'phone' => $this->l('Phone'), + 'phone_mobile' => $this->l('Mobile Phone'), + 'vat_number' => $this->l('VAT number')); + + self::$default_values = array('alias' => 'Alias', 'postcode' => 'X'); + + break; + case $this->entities[$this->l('Manufacturers')]: + case $this->entities[$this->l('Suppliers')]: + + //Overwrite validators AS name is not MultiLangField + self::$validators = array( + 'description' => array('AdminImport', 'createMultiLangField'), + 'description_short' => array('AdminImport', 'createMultiLangField'), + 'meta_title' => array('AdminImport', 'createMultiLangField'), + 'meta_keywords' => array('AdminImport', 'createMultiLangField'), + 'meta_description' => array('AdminImport', 'createMultiLangField')); + + $this->available_fields = array( + 'no' => $this->l('Ignore this column'), + 'id' => $this->l('ID'), + 'active' => $this->l('Active (0/1)'), + 'name' => $this->l('Name *'), + 'description' => $this->l('Description'), + 'short_description' => $this->l('Short description'), + 'meta_title' => $this->l('Meta-title'), + 'meta_keywords' => $this->l('Meta-keywords'), + 'meta_description' => $this->l('Meta-description')); + break; + } + parent::__construct(); + } + + private static function getBoolean($field) + { + return (boolean)$field; + } + + private static function getPrice($field) + { + $field = ((float)(str_replace(',', '.', $field))); + $field = ((float)(str_replace('%', '', $field))); + return $field; + } + + private static function split($field) + { + $separator = ((is_null(Tools::getValue('multiple_value_separator')) OR trim(Tools::getValue('multiple_value_separator')) == '' ) ? ',' : Tools::getValue('multiple_value_separator')); + $tab = explode($separator, $field); + $res = array_map('strval', $tab); + $res = array_map('trim', $tab); + return $tab; + } + + private static function createMultiLangField($field) + { + $languages = Language::getLanguages(false); + $res = array(); + foreach ($languages AS $lang) + $res[$lang['id_lang']] = $field; + return $res; + } + + private function getTypeValuesOptions($nb_c) + { + $i = 0; + $noPreSelect = array('price_tin', 'feature'); + + $options = ''; + foreach ($this->available_fields AS $k => $field) + { + $options .= '
+ +
'; + echo '
+
+ + '.$this->l('Import a language pack manually').' + + +
+
+

+
+
'.$this->l('Export a language').' +

'.$this->l('Export data from one language to a file (language pack).').'
'. + $this->l('Choose the theme from which you want to export translations.').'
+ +     +    + +

+
+

'; + $allLanguages = Language::getLanguages(false); + echo ' +
+
'.$this->l('Copy').' +

'.$this->l('Copies data from one language to another.').'
'. + $this->l('Be careful, as it will replace all existing data for the destination language!').'
'. + $this->l('If necessary').', '.$this->l('first create a new language').'.

+
+

+

'.$this->l('From:').'
+ +     + * +

+

+

'.$this->l('To:').'
+ +     + +

+
+
+ +
+

* '.$this->l('Language files (as indicated at Tools >> Languages >> Edition) must be complete to allow copying of translations').'

+
+
'; + } + } + + public function fileExists($dir, $file, $var) + { + ${$var} = array(); + if (!file_exists($dir)) + if (!mkdir($dir, 0700)) + die('Please create the directory '.$dir); + if (!file_exists($dir.'/'.$file)) + if (!file_put_contents($dir.'/'.$file, "")) + die('Please create a "'.$file.'" file in '.$dir); + if (!is_writable($dir.'/'.$file)) + $this->displayWarning(Tools::displayError('This file must be writable:').' '.$dir.'/'.$file); + include($dir.'/'.$file); + return ${$var}; + } + + public function displayToggleButton($closed = false) + { + $str_output = ' + + + '; + return $str_output; + } + + protected function displaySubmitButtons($name) + { + return ' + + '; + } + + public function displayAutoTranslate() + { + $languageCode = Tools::htmlentitiesUTF8(Language::getLanguageCodeByIso(Tools::getValue('lang'))); + return ' + + + + + '; + } + + public function displayLimitPostWarning($count) + { + $str_output = ''; + if ((ini_get('suhosin.post.max_vars') AND ini_get('suhosin.post.max_vars') < $count) + OR (ini_get('suhosin.request.max_vars') AND ini_get('suhosin.request.max_vars') < $count)) + { + if (ini_get('suhosin.post.max_vars') < $count OR ini_get('suhosin.request.max_vars') < $count) + { + $this->suhosin_limit_exceed = true; + $str_output .= '
'.$this->l('Warning, your hosting provider is using the suhosin patch for PHP, which limit the maximum number of fields to post in a form :').'
' + .''.ini_get('suhosin.post.max_vars').' '.$this->l('for suhosin.post.max_vars.').'
' + .''.ini_get('suhosin.request.max_vars').' '.$this->l('for suhosin.request.max_vars.').'
' + .$this->l('Please ask your hosting provider to increase the suhosin post and request limit to') + .' '.((int)$count + 100).' '.$this->l('at least.').' '.$this->l('or edit the translation file manually.').'
'; + } + } + return $str_output; + } + + public function displayFormFront($lang) + { + global $currentIndex; + $_LANG = $this->fileExists(_PS_THEME_DIR_.'lang', Tools::strtolower($lang).'.php', '_LANG'); + $str_output = ''; + + /* List templates to parse */ + $templates = array_merge(scandir(_PS_THEME_DIR_), scandir(_PS_ALL_THEMES_DIR_)); + $count = 0; + $files = array(); + foreach ($templates AS $template) + if (preg_match('/^(.*).tpl$/', $template) AND (file_exists($tpl = _PS_THEME_DIR_.$template) OR file_exists($tpl = _PS_ALL_THEMES_DIR_.$template))) + { + $template2 = substr(basename($template), 0, -4); + $newLang = array(); + $fd = fopen($tpl, 'r'); + $content = fread($fd, filesize($tpl)); + + /* Search language tags (eg {l s='to translate'}) */ + $regex = '/\{l s=\''._PS_TRANS_PATTERN_.'\'( js=1)?\}/U'; + preg_match_all($regex, $content, $matches); + + /* Get string translation */ + foreach($matches[1] AS $key) + { + if(empty($key)) + { + $this->_errors[] = $this->l('Empty string found, please edit:').'
'._PS_THEME_DIR_.''.$template; + $newLang[$key] = ''; + } + else + { + $key2 = $template2.'_'.md5($key); + $newLang[$key] = (key_exists($key2, $_LANG)) ? html_entity_decode($_LANG[$key2], ENT_COMPAT, 'UTF-8') : ''; + } + } + $files[$template2] = $newLang; + $count += sizeof($newLang); + } + + $str_output .= ' +

'.$this->l('Language').' : '.Tools::strtoupper($lang).' - '.$this->l('Front-Office translations').'

+ '.$this->l('Total expressions').' : '.$count.'. '.$this->l('Click the fieldset title to expand or close the fieldset.').'.

'; + $str_output .= $this->displayLimitPostWarning($count); + if (!$this->suhosin_limit_exceed) + { + $str_output .= ' +
'; + $str_output .= $this->displayToggleButton(sizeof($_LANG) >= $count); + $str_output .= $this->displayAutoTranslate(); + $str_output .= '

'; + foreach ($files AS $k => $newLang) + if (sizeof($newLang)) + { + $countValues = array_count_values($newLang); + $empty = isset($countValues['']) ? $countValues[''] : 0; + $str_output .= ' +
'.$k.' - '.sizeof($newLang).' '.$this->l('expressions').' ('.$empty.') +
+ '; + foreach ($newLang AS $key => $value) + { + $str_output .= ''; + } + $str_output .= ' +
'.stripslashes($key).''; + if (strlen($key) != 0 && strlen($key) < TEXTAREA_SIZED) + $str_output .= '= '; + elseif(strlen($key)) + $str_output .= '= '; + else + $str_output .= ''.implode(', ', $this->_errors).''; + $str_output .= '
+
+

'; + } + $str_output .= '
'; + } + if (!empty($this->_errors)) + $this->displayErrors(); + echo $str_output; + } + + public function displayFormBack($lang) + { + global $currentIndex; + $_LANGADM = $this->fileExists(_PS_TRANSLATIONS_DIR_.$lang, 'admin.php', '_LANGADM'); + $str_output = ''; + /* List templates to parse */ + $count = 0; + $tabs = scandir(PS_ADMIN_DIR.'/tabs'); + $tabs[] = '../../classes/AdminTab.php'; + $files = array(); + foreach ($tabs AS $tab) + if (preg_match('/^(.*)\.php$/', $tab) AND file_exists($tpl = PS_ADMIN_DIR.'/tabs/'.$tab)) + { + $tab = basename(substr($tab, 0, -4)); + $fd = fopen($tpl, 'r'); + $content = fread($fd, filesize($tpl)); + fclose($fd); + $regex = '/this->l\(\''._PS_TRANS_PATTERN_.'\'[\)|\,]/U'; + preg_match_all($regex, $content, $matches); + foreach ($matches[1] AS $key) + $tabsArray[$tab][$key] = stripslashes(key_exists($tab.md5($key), $_LANGADM) ? html_entity_decode($_LANGADM[$tab.md5($key)], ENT_COMPAT, 'UTF-8') : ''); + $count += isset($tabsArray[$tab]) ? sizeof($tabsArray[$tab]) : 0; + } + foreach (array('header.inc', 'footer.inc', 'index', 'login', 'password', 'functions') AS $tab) + { + $tab = PS_ADMIN_DIR.'/'.$tab.'.php'; + $fd = fopen($tab, 'r'); + $content = fread($fd, filesize($tab)); + fclose($fd); + $regex = '/translate\(\''._PS_TRANS_PATTERN_.'\'\)/U'; + preg_match_all($regex, $content, $matches); + foreach ($matches[1] AS $key) + $tabsArray['index'][$key] = stripslashes(key_exists('index'.md5($key), $_LANGADM) ? html_entity_decode($_LANGADM['index'.md5($key)], ENT_COMPAT, 'UTF-8') : ''); + $count += isset($tabsArray['index']) ? sizeof($tabsArray['index']) : 0; + } + + $str_output .= ' +

'.$this->l('Language').' : '.Tools::strtoupper($lang).' - '.$this->l('Back-Office translations').'

+ '.$this->l('Expressions to translate').' : '.$count.'. '.$this->l('Click on the titles to open fieldsets').'.

'; + $str_output .= $this->displayLimitPostWarning($count); + if (!$this->suhosin_limit_exceed) + { + $str_output .= ' +
'; + $str_output .= $this->displayToggleButton(); + $str_output .= $this->displayAutoTranslate(); + $str_output .= '

'; + foreach ($tabsArray AS $k => $newLang) + if (sizeof($newLang)) + { + $countValues = array_count_values($newLang); + $empty = isset($countValues['']) ? $countValues[''] : 0; + $str_output .= ' +
'.$k.' - '.sizeof($newLang).' '.$this->l('expressions').' ('.$empty.') +
+ '; + foreach ($newLang AS $key => $value) + { + $str_output .= ''; + else + $str_output .= ''; + } + $str_output .= ' +
'.stripslashes($key).'= '; + if (strlen($key) < TEXTAREA_SIZED) + $str_output .= '
+
+

'; + } + $str_output .= '
'; + } + echo $str_output; + } + + public function displayFormErrors($lang) + { + global $currentIndex; + $_ERRORS = $this->fileExists(_PS_TRANSLATIONS_DIR_.$lang, 'errors.php', '_ERRORS'); + + $str_output = ''; + + /* List files to parse */ + $stringToTranslate = array(); + $dirToParse = array(PS_ADMIN_DIR.'/../', + PS_ADMIN_DIR.'/../classes/', + PS_ADMIN_DIR.'/../controllers/', + PS_ADMIN_DIR.'/../override/classes/', + PS_ADMIN_DIR.'/../override/controllers/', + PS_ADMIN_DIR.'/', + PS_ADMIN_DIR.'/tabs/'); + if (!file_exists(_PS_MODULE_DIR_)) + die($this->displayWarning(Tools::displayError('Fatal error: Module directory is not here anymore ').'('._PS_MODULE_DIR_.')')); + if (!is_writable(_PS_MODULE_DIR_)) + $this->displayWarning(Tools::displayError('The module directory must be writable')); + if (!$modules = scandir(_PS_MODULE_DIR_)) + $this->displayWarning(Tools::displayError('There are no modules in your copy of PrestaShop. Use the Modules tab to activate them or go to our Website to download additional Modules.')); + else + { + $count = 0; + + foreach ($modules AS $module) + if (is_dir(_PS_MODULE_DIR_.$module) && $module != '.' && $module != '..' && $module != '.svn' ) + $dirToParse[] = _PS_MODULE_DIR_.$module.'/'; + } + foreach ($dirToParse AS $dir) + foreach (scandir($dir) AS $file) + if (preg_match('/.php$/', $file) AND file_exists($fn = $dir.$file) AND $file != 'index.php') + { + if (!filesize($fn)) + continue; + preg_match_all('/Tools::displayError\(\''._PS_TRANS_PATTERN_.'\'(, (true|false))?\)/U', fread(fopen($fn, 'r'), filesize($fn)), $matches); + foreach($matches[1] AS $key) + $stringToTranslate[$key] = (key_exists(md5($key), $_ERRORS)) ? html_entity_decode($_ERRORS[md5($key)], ENT_COMPAT, 'UTF-8') : ''; + } + $irow = 0; + $str_output .= $this->displayAutoTranslate(); + $str_output .= '

'.$this->l('Language').' : '.Tools::strtoupper($lang).' - '.$this->l('Errors translations').'

' + .$this->l('Errors to translate').' : '.sizeof($stringToTranslate).'

'; + $str_output .= $this->displayLimitPostWarning(sizeof($stringToTranslate)); + if (!$this->suhosin_limit_exceed) + { + $str_output .= ' +
+

+ '; + ksort($stringToTranslate); + foreach ($stringToTranslate AS $key => $value) + $str_output .= ''; + $str_output .= '
'.stripslashes($key).'=

'; + } + echo $str_output; + } + + public function displayFormFields($lang) + { + global $currentIndex; + $_FIELDS = $this->fileExists(_PS_TRANSLATIONS_DIR_.$lang, 'fields.php', '_FIELDS'); + + $str_output = ''; + $classArray = array(); + $count = 0; + foreach (scandir(_PS_CLASS_DIR_) AS $classFile) + { + if (!preg_match('/\.php$/', $classFile) OR $classFile == 'index.php') + continue; + include_once(_PS_CLASS_DIR_.$classFile); + $className = substr($classFile, 0, -4); + if (!class_exists($className)) + continue; + if (!is_subclass_of($className, 'ObjectModel')) + continue; + $classArray[$className] = call_user_func(array($className, 'getValidationRules'), $className); + if (isset($classArray[$className]['validate'])) + $count += sizeof($classArray[$className]['validate']); + if (isset($classArray[$className]['validateLang'])) + $count += sizeof($classArray[$className]['validateLang']); + } + + $str_output .= $this->displayAutoTranslate(); + $str_output .= ' +

'.$this->l('Language').' : '.Tools::strtoupper($lang).' - '.$this->l('Fields translations').'

'; + $str_output .= $this->displayLimitPostWarning($count); + if (!$this->suhosin_limit_exceed) + { + $str_output .= $this->l('Fields to translate').' : '.$count.'. '.$this->l('Click on the titles to open fieldsets').'.

+
'; + $str_output .= $this->displayToggleButton(); + $str_output .= '

'; + foreach ($classArray AS $className => $rules) + { + $translated = 0; + $toTranslate = 0; + if (isset($rules['validate'])) + foreach ($rules['validate'] AS $key => $value) + (array_key_exists($className.'_'.md5($key), $_FIELDS)) ? ++$translated : ++$toTranslate; + if (isset($rules['validateLang'])) + foreach ($rules['validateLang'] AS $key => $value) + (array_key_exists($className.'_'.md5($key), $_FIELDS)) ? ++$translated : ++$toTranslate; + $str_output .= ' +
'.$className.' - '.($toTranslate + $translated).' '.$this->l('fields').' ('.$toTranslate.') +
+ '; + if (isset($rules['validate'])) + foreach ($rules['validate'] AS $key => $value) + $str_output .= ''; + if (isset($rules['validateLang'])) + foreach ($rules['validateLang'] AS $key => $value) + $str_output .= ''; + $str_output .= ' +
'.stripslashes($key).'=
'.stripslashes($key).'=
+
+

'; + } + $str_output .= '
'; + } + echo $str_output; + } + + /** + * Get each informations for each mails founded in the folder $dir. + * + * @since 1.4.0.14 + * @param string $dir + * @param string $lang + * @param $string $group_name + */ + public function getMailFiles($dir, $lang, $group_name = 'mail') + { + $arr_return = array(); + + // Very usefull to name input and textarea fields + $arr_return['group_name'] = $group_name; + $arr_return['empty_values'] = 0; + $arr_return['total_filled'] = 0; + $arr_return['directory'] = $dir; +// $arr_return['subject'] = $this->getSubjectMailContent($dir.$lang); + if(file_exists($dir.'en')) + { + // Get all english files to compare with the language to translate + foreach (scandir($dir.'en') AS $email_file) + { + if (strripos($email_file, '.html') > 0 || strripos($email_file, '.txt') > 0) + { + $email_name = substr($email_file, 0, strripos($email_file, '.')); + $type = substr($email_file, strripos($email_file, '.')+1); + if (!isset($arr_return['files'][$email_name])) { + $arr_return['files'][$email_name] = array(); + } + $arr_return['files'][$email_name][$type]['en'] = $this->getMailContent($dir, $email_file, 'en'); + + // check if the file exists in the language to translate + if (file_exists($dir.$lang.'/'.$email_file)) { + $arr_return['files'][$email_name][$type][$lang] = $this->getMailContent($dir, $email_file, $lang); + } else { + $arr_return['files'][$email_name][$type][$lang] = ''; + } + if ($arr_return['files'][$email_name][$type][$lang] == '') { + $arr_return['empty_values']++; + } else { + $arr_return['total_filled']++; + } + } + } + } + return $arr_return; + } + + /** + * Get content of the mail file. + * + * @since 1.4.0.14 + * @param string $dir + * @param string $file + * @param string $lang iso code of a language + */ + protected function getMailContent($dir, $file, $lang) + { + $arr_return = array(); + $content = file_get_contents($dir.$lang.'/'.$file); + + if (Tools::strlen($content) === 0) { + $content = ''; + } + return $content; + } + + /** + * Display mails in html format. + * This was create for factorize the html displaying + * + * @since 1.4.0.14 + * @param array $mails + * @param array $all_subject_mail + * @param Language $obj_lang + * @param string $id_html use for set html id attribute for the block + * @param string $title Set the title for the block + * @param string|boolean $name_for_module is not false define add a name for disntiguish mails module + */ + protected function displayMailContent($mails, $all_subject_mail, $obj_lang, $id_html, $title, $name_for_module = false) + { + $str_return = ''; + $group_name = 'mail'; + if (key_exists('group_name', $mails)) + { + $group_name = $mails['group_name']; + } + $str_return .= ' +
+

'.$title.' - '.$mails['empty_values'].' ' + .sprintf($this->l('missing translation(s) on %s template(s) for %s'), ''.((int)$mails['empty_values']+(int)$mails['total_filled']).'', $obj_lang->name) + .':

+
'; + if (!empty($mails['files'])) + { + foreach ($mails['files'] AS $mail_name => $mail_files) + { + if ((key_exists('html', $mail_files) OR key_exists('txt', $mail_files))) + { + if (key_exists($mail_name, $all_subject_mail)) + { + $subject_mail = $all_subject_mail[$mail_name]; + $str_return .= ' +
+ +
+ '.$subject_mail.'
+ +
+
'; + } else { + $str_return .= ' +
+ '.sprintf($this->l('No Subject was found for %s.'), ''.$mail_name.'').'' + .'
'; + } + if (key_exists('html', $mail_files)) + { + $base_uri = str_replace(_PS_ROOT_DIR_, __PS_BASE_URI__, $mails['directory']); + $base_uri = str_replace('//', '/', $base_uri); + $url_mail = $base_uri.$obj_lang->iso_code.'/'.$mail_name.'.html'; + $str_return .= $this->displayMailBlockHtml($mail_files['html'], $obj_lang->iso_code, $url_mail, $mail_name, $group_name, $name_for_module); + } + if (key_exists('txt', $mail_files)) { + $str_return .= $this->displayMailBlockTxt($mail_files['txt'], $obj_lang->iso_code, $mail_name, $group_name, $name_for_module); + } + } + } + } + else + { + $str_return .= ' +

'.$this->l('There is a problem to get the Mail files.').'
' + .sprintf($this->l('Please ensure that english files exists in %s folder'), ''.$mails['directory'].'en') + .'

'; + } + $str_return .= ' +
+
+
'; + return $str_return; + } + /** + * Just build the html structure for display txt mails + * + * @since 1.4.0.14 + * @param array $content with english and language needed contents + * @param string $lang iso code of the needed language + * @param string $mail_name name of the file to translate (same for txt and html files) + * @param string $group_name group name allow to distinguish each block of mail. + * @param string|boolean $name_for_module is not false define add a name for disntiguish mails module + */ + protected function displayMailBlockTxt($content, $lang, $mail_name, $group_name, $name_for_module = false) + { + return ' +
+ +
+
+
+
'; + } + /** + * Just build the html structure for display html mails. + * + * @since 1.4.0.14 + * @param array $content with english and language needed contents + * @param string $lang iso code of the needed language + * @param string $url for the html page and displaying an outline + * @param string $mail_name name of the file to translate (same for txt and html files) + * @param string $group_name group name allow to distinguish each block of mail. + * @param string|boolean $name_for_module is not false define add a name for disntiguish mails module + */ + protected function displayMailBlockHtml($content, $lang, $url, $mail_name, $group_name, $name_for_module = false) + { + $title = array(); + + // Because TinyMCE don't work correctly with , and tags + if (stripos($content[$lang], '([^<]+)#Ui', $title[$language], $matches); + $title[$language] = empty($matches[1])?'':$matches[1]; + + // The 2 lines below allow to exlude tag from the content. + // This allow to exclude body tag even if attributs are setted. + $content[$language] = substr($content[$language], stripos($content[$language], '')+1); + $content[$language] = substr($content[$language], 0, stripos($content[$language], '')); + } + } + + $str_return = ''; + $str_return .= ' +
+ +
+
'; + $str_return .= ' +
+ '.$this->l('"title" tag:').' '.(isset($title['en']) ? $title['en'] : '').'
+ +
'; + $str_return .= ' + + Edit this mail template +
+ +
+
'; + return $str_return; + } + + /** + * Check in each module if contains mails folder. + * + * @return array of module which has mails + */ + public function getModulesHasMails() + { + $arr_modules = array(); + foreach (scandir(_PS_MODULE_DIR_) AS $module_dir) + { + if ($module_dir[0] != '.' AND file_exists(_PS_MODULE_DIR_.$module_dir.'/mails')) + { + $arr_modules[$module_dir] = _PS_MODULE_DIR_.$module_dir; + } + + } + return $arr_modules; + } + protected function getTinyMCEForMails($iso_lang) + { + return ' + + + '; + } + public function displayFormMails($lang, $noDisplay = false) + { + global $cookie, $currentIndex; + + $core_mails = array(); + $module_mails = array(); + $theme_mails = array(); + $str_output = ''; + + // get all mail subjects, this method parse each files in Prestashop !! + $subject_mail = array(); + $modules_has_mails = $this->getModulesHasMails(); + $arr_files_to_parse = array( + _PS_ROOT_DIR_.'/controllers', + _PS_ROOT_DIR_.'/classes', + PS_ADMIN_DIR.'/tabs', + ); + $arr_files_to_parse = array_merge($arr_files_to_parse, $modules_has_mails); + foreach ($arr_files_to_parse as $path) { + $subject_mail = self::getSubjectMail($path, $subject_mail); + } + + $core_mails = $this->getMailFiles(_PS_MAIL_DIR_, $lang, 'core_mail'); + $core_mails['subject'] = $this->getSubjectMailContent(_PS_MAIL_DIR_.$lang); + foreach ($modules_has_mails AS $module_name=>$module_path) + { + $module_mails[$module_name] = $this->getMailFiles($module_path.'/mails/', $lang, 'module_mail'); + $module_mails[$module_name]['subject'] = $core_mails['subject']; + } + + // Before 1.4.0.14 each theme folder was parsed, + // This page was really to low to load. + // Now just use the current theme. + if(_THEME_NAME_ !== AdminTranslations::DEFAULT_THEME_NAME) + { + if(file_exists(_PS_THEME_DIR_.'mails')) + { + $theme_mails['theme_mail'] = $this->getMailFiles(_PS_THEME_DIR_.'mails/', $lang, 'theme_mail'); + $theme_mails['theme_mail']['subject'] = $this->getSubjectMailContent(_PS_THEME_DIR_.'mails/'.$lang); + } + if (file_exists(_PS_THEME_DIR_.'/modules')) + { + foreach (scandir(_PS_THEME_DIR_.'/modules') AS $module_dir) + { + if ($module_dir[0] != '.' AND file_exists(_PS_THEME_DIR_.'modules/'.$module_dir.'/mails')) + { + $theme_mails[$module_dir] = $this->getMailFiles(_PS_THEME_DIR_.'modules/'.$module_dir.'/mails/', $lang, 'theme_module_mail'); + $theme_mails[$module_dir]['subject'] = $theme_mails['theme_mail']['subject']; + } + } + } + } + + if ($noDisplay) + { + $empty = 0; + $total = 0; + $total += (int)$core_mails['total_filled']; + $empty += (int)$core_mails['empty_values']; + foreach ($module_mails as $mod_infos) + { + $total += (int)$mod_infos['total_filled']; + $empty += (int)$mod_infos['empty_values']; + } + foreach ($theme_mails as $themes_infos) + { + $total += (int)$themes_infos['total_filled']; + $empty += (int)$themes_infos['empty_values']; + } + return array('total' => $total, 'empty' => $empty); + } + + $obj_lang = new Language(Language::getIdByIso($lang)); + + // TinyMCE + $str_output .= $this->getTinyMCEForMails($obj_lang->iso_code); + + $str_output .= ''; + $str_output .= ' +

'.$this->l('Language').' : '.Tools::strtoupper($lang).' - '.$this->l('E-mail template translations').'

' + .$this->l('Click on the titles to open fieldsets').'.

'; + + // display form + $str_output .= ' +
'; + $str_output .= $this->displayToggleButton(); + $str_output .= $this->displaySubmitButtons(Tools::getValue('type')); + $str_output .= '

'; + + // core emails + $str_output .= $this->l('Core e-mails:'); + $str_output .= $this->displayMailContent($core_mails, $subject_mail, $obj_lang, 'core', $this->l('Core e-mails')); + // module mails + $str_output .= $this->l('Modules e-mails:'); + foreach ($module_mails as $module_name => $mails) + { + $str_output .= $this->displayMailContent($mails, $subject_mail, $obj_lang, Tools::strtolower($module_name), sprintf($this->l('E-mails for %s module'), ''.$module_name.''), $module_name); + } + // mail theme and module theme + if (!empty($theme_mails)) + { + $str_output .= $this->l('Themes e-mails:'); + $bool_title = false; + foreach ($theme_mails as $theme_or_module_name => $mails) + { + $title = $theme_or_module_name != 'theme_mail' ? ucfirst(_THEME_NAME_).' '.sprintf($this->l('E-mails for %s module'), ''.$theme_or_module_name.'') : ucfirst(_THEME_NAME_).' '.$this->l('e-mails'); + if ($theme_or_module_name != 'theme_mail' && !$bool_title) { + $bool_title = true; + $str_output .= $this->l('E-mails modules in theme:'); + } + $str_output .= $this->displayMailContent($mails, $subject_mail, $obj_lang, 'theme_'.Tools::strtolower($theme_or_module_name), $title, ($theme_or_module_name != 'theme_mail' ? $theme_or_module_name : false)); + } + } + $str_output .= ' + + '; + $str_output .= $this->displaySubmitButtons(Tools::getValue('type')); + $str_output .= '

'; + $str_output .= '
'; + echo $str_output; + } + + protected function getSubjectMail($directory, $subject_mail) + { + foreach (scandir($directory) AS $filename) + { + if (strripos($filename, '.php') > 0 AND $filename != 'AdminTranslations.php') + { + $content = file_get_contents($directory.'/'.$filename); + $content = str_replace("\n", " ", $content); + if (preg_match_all('/Mail::Send([^;]*);/si', $content, $tab)) + { + for ($i = 0 ; isset($tab[1][$i]) ; $i++) + { + $tab2 = explode(',', $tab[1][$i]); + if (is_array($tab2)) + { + if ($tab2 && isset($tab2[1])) + { + $tab2[1] = trim(str_replace('\'', '', $tab2[1])); + if (preg_match('/Mail::l\(\''._PS_TRANS_PATTERN_.'\'\)/s', $tab2[2], $tab3)) + $tab2[2] = $tab3[1]; + $subject_mail[$tab2[1]] = $tab2[2]; + } + } + } + } + } + if ($filename != '.svn' AND $filename != '.' AND $filename != '..' AND is_dir(($directory.'/'.$filename))) + $subject_mail = self::getSubjectMail($directory.'/'.$filename, $subject_mail); + } + return $subject_mail; + } + + protected function getSubjectMailContent($directory) + { + $subject_mail_content = array(); + + if (Tools::file_exists_cache($directory.'/lang.php')) + { + // we need to include this even if already included + include($directory.'/lang.php'); + foreach($_LANGMAIL as $key => $subject) + { + $subject = str_replace("\n", " ", $subject); + $subject = str_replace("\\'", "\'", $subject); + + $subject_mail_content[$key] = htmlentities($subject,ENT_QUOTES,'UTF-8'); + } + } + else + $this->_errors[] = $this->l('Subject mail translation file not found in').' '.$directory; + return $subject_mail_content; + } + + protected function writeSubjectTranslationFile($sub, $path, $mark = false, $fullmark = false) + { + global $currentIndex; + + if ($fd = @fopen($path, 'w')) + { + //$tab = ($fullmark ? Tools::strtoupper($fullmark) : 'LANG').($mark ? Tools::strtoupper($mark) : ''); + $tab = 'LANGMAIL'; + fwrite($fd, " $value) + { + // Magic Quotes shall... not.. PASS! + if (_PS_MAGIC_QUOTES_GPC_) + $value = stripslashes($value); + fwrite($fd, '$_'.$tab.'[\''.pSQL($key).'\'] = \''.pSQL($value).'\';'."\n"); + } + + fwrite($fd, "\n?>"); + fclose($fd); + + } + else + die($this->l('Cannot write language file for mails subjects, path is:').$path); + } + + /** + * This get files to translate in module directory. + * Recursive method allow to get each files for a module no matter his depth. + * + * @param string $path directory path to scan + * @param array $array_files by reference - array which saved files to parse. + * @param string $module_name module name + * @param string $lang_file full path of translation file + * @param boolean $is_default + */ + protected function recursiveGetModuleFiles($path, &$array_files, $module_name, $lang_file, $is_default = false) + { + $files_module = array(); + $files_module = scandir($path); + $files_for_module = $this->clearModuleFiles($files_module, 'file'); + if (!empty($files_for_module)) + $array_files[] = array( + 'file_name' => $lang_file, + 'dir' => $path, + 'files' => $files_for_module, + 'module' => $module_name, + 'is_default' => $is_default, + 'theme' => ($is_default ? self::DEFAULT_THEME_NAME : _THEME_NAME_ ), + ); + $dir_module = $this->clearModuleFiles($files_module, 'directory', $path); + if(!empty($dir_module)) + { + foreach ($dir_module AS $folder) + { + $this->recursiveGetModuleFiles($path.$folder.'/', $array_files, $module_name, $lang_file, $is_default); + } + } + } + + /** + * This method get translation in each translations file. + * The file depend on $lang param. + * + * @param array $modules list of modules + * @param string $root_dir path where it get each modules + * @param string $lang iso code of choosen language to translate + * @param boolean $is_default set it if modules are located in root/prestashop/modules folder + * This allow to distinguish overrided prestashop theme and original module + */ + protected function getAllModuleFiles(array $modules, $root_dir, $lang, $is_default = false) + { + $array_files = array(); + foreach ($modules AS $module) + { + if ($module{0} != '.' AND is_dir($root_dir.$module)) + { + @include_once($root_dir.$module.'/'.$lang.'.php'); + self::getModuleTranslations($is_default); + $this->recursiveGetModuleFiles($root_dir.$module.'/', $array_files, $module, $root_dir.$module.'/'.$lang.'.php', $is_default); + } + } + return $array_files; + } + public function displayFormModules($lang) + { + global $currentIndex, $_MODULES; + + $array_lang_src = Language::getLanguages(false); + $str_output = ''; + + foreach ($array_lang_src as $language) + { + $this->all_iso_lang[] = $language['iso_code']; + } + + if (!file_exists(_PS_MODULE_DIR_)) + die($this->displayWarning(Tools::displayError('Fatal error: Module directory is not here anymore ').'('._PS_MODULE_DIR_.')')); + if (!is_writable(_PS_MODULE_DIR_)) + $this->displayWarning(Tools::displayError('The module directory must be writable')); + if (!$modules = scandir(_PS_MODULE_DIR_)) + $this->displayWarning(Tools::displayError('There are no modules in your copy of PrestaShop. Use the Modules tab to activate them or go to our Website to download additional Modules.')); + else + { + $arr_find_and_fill = array(); + + $arr_files = $this->getAllModuleFiles($modules, _PS_MODULE_DIR_, $lang, true); + $arr_find_and_fill = array_merge($arr_find_and_fill, $arr_files); + + if(file_exists(_PS_THEME_DIR_.'/modules/')) + { + $modules = scandir(_PS_THEME_DIR_.'/modules/'); + $arr_files = $this->getAllModuleFiles($modules, _PS_THEME_DIR_.'modules/', $lang); + $arr_find_and_fill = array_merge($arr_find_and_fill, $arr_files); + } + foreach ($arr_find_and_fill as $value) + $this->findAndFillTranslations($value['files'], $value['theme'], $value['module'], $value['dir'], $lang); + + $str_output .= ' +

'.$this->l('Language').' : '.Tools::strtoupper($lang).' - '.$this->l('Modules translations').'

+ '.$this->l('Total expressions').' : '.$this->total_expression.'. '.$this->l('Click the fieldset title to expand or close the fieldset.').'.

'; + $str_output .= $this->displayLimitPostWarning($this->total_expression); + if (!$this->suhosin_limit_exceed) + { + $str_output .= ' +
'; + $str_output .= $this->displayToggleButton(); + $str_output .= $this->displayAutoTranslate(); + $str_output .= '

'; + + if (count($this->modules_translations) > 1) + { + $str_output .= '

'.$this->l('List of Themes - Click to access theme translation:').'

'; + $str_output .= ''; + } + + foreach ($this->modules_translations AS $theme_name => $theme) + { + $str_output .= '

>'.$this->l('Theme:').' '.($theme_name === self::DEFAULT_THEME_NAME ? $this->l('default') : $theme_name ).'

'; + foreach ($theme AS $module_name => $module) + { + $str_output .= ''.$this->l('Module:').' '.$module_name.''; + foreach ($module AS $template_name => $newLang) + if (sizeof($newLang)) + { + $countValues = array_count_values($newLang); + $empty = isset($countValues['']) ? $countValues[''] : 0; + $str_output .= ' +
'.($theme_name === 'default' ? $this->l('default') : $theme_name ).' - '.$template_name.' - '.sizeof($newLang).' '.$this->l('expressions').' ('.$empty.') +
+ '; + foreach ($newLang AS $key => $value) + { + $str_output .= ''; + else + $str_output .= ''; + } + $str_output .= ' +
'.stripslashes($key).'= '; + if (strlen($key) < TEXTAREA_SIZED) + $str_output .= '
+
+

'; + } + } + } + $str_output .= '
'; + } + } + echo $str_output; + } + + public function displayFormPDF() + { + global $currentIndex; + + $lang = Tools::strtolower(Tools::getValue('lang')); + $_LANG = array(); + $str_output = ''; + + if (!file_exists(_PS_TRANSLATIONS_DIR_.$lang)) + if (!mkdir(_PS_TRANSLATIONS_DIR_.$lang, 0700)) + die('Please create a "'.$iso.'" directory in '._PS_TRANSLATIONS_DIR_); + if (!file_exists(_PS_TRANSLATIONS_DIR_.$lang.'/pdf.php')) + if (!file_put_contents(_PS_TRANSLATIONS_DIR_.$lang.'/pdf.php', "")) + die('Please create a "'.Tools::strtolower($lang).'.php" file in '.realpath(PS_ADMIN_DIR.'/')); + unset($_LANGPDF); + @include(_PS_TRANSLATIONS_DIR_.$lang.'/pdf.php'); + $files = array(); + $count = 0; + $tab = 'PDF_invoice'; + $pdf = _PS_CLASS_DIR_.'PDF.php'; + $newLang = array(); + $fd = fopen($pdf, 'r'); + $content = fread($fd, filesize($pdf)); + fclose($fd); + $regex = '/self::l\(\''._PS_TRANS_PATTERN_.'\'[\)|\,]/U'; + preg_match_all($regex, $content, $matches); + foreach($matches[1] AS $key) + $tabsArray[$tab][$key] = stripslashes(key_exists($tab.md5(addslashes($key)), $_LANGPDF) ? html_entity_decode($_LANGPDF[$tab.md5(addslashes($key))], ENT_COMPAT, 'UTF-8') : ''); + $count += isset($tabsArray[$tab]) ? sizeof($tabsArray[$tab]) : 0; + $closed = sizeof($_LANGPDF) >= $count; + + $str_output .= $this->displayAutoTranslate(); + $str_output .= '

'.$this->l('Language').' : '.Tools::strtoupper($lang).'

' + .$this->l('Expressions to translate').' : '.$count.'. '.$this->l('Click on the titles to open fieldsets').'.

'; + $str_output .= $this->displayLimitPostWarning($count); + if (!$this->suhosin_limit_exceed) + { + $str_output .= ' +
+ + + + '; + $str_output .= '

'; + foreach ($tabsArray AS $k => $newLang) + if (sizeof($newLang)) + { + $countValues = array_count_values($newLang); + $empty = isset($countValues['']) ? $countValues[''] : 0; + $str_output .= '
'.$k.' - '.sizeof($newLang).' '.$this->l('expressions').' ('.$empty.') +
+ '; + foreach ($newLang AS $key => $value) + { + $str_output .= ' + + + '; + } + $str_output .= '
'.stripslashes($key).' + = +
+
+

'; + } + $str_output .= '
'; + } + echo $str_output; + } + + /** + * Return an array with themes and thumbnails + * + * @return array + */ + static public function getThemesList() + { + $dir = opendir(_PS_ALL_THEMES_DIR_); + while ($folder = readdir($dir)) + if ($folder != '.' AND $folder != '..' AND file_exists(_PS_ALL_THEMES_DIR_.'/'.$folder.'/preview.jpg')) + $themes[$folder]['name'] = $folder; + closedir($dir); + return isset($themes) ? $themes : array(); + } +} diff --git a/admin-dev/tabs/AdminWebservice.php b/admin-dev/tabs/AdminWebservice.php new file mode 100755 index 000000000..a6934f4bb --- /dev/null +++ b/admin-dev/tabs/AdminWebservice.php @@ -0,0 +1,230 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(dirname(__FILE__).'/../../classes/AdminTab.php'); + +class AdminWebservice extends AdminTab +{ + + public function __construct() + { + $this->table = 'webservice_account'; + $this->className = 'WebserviceKey'; + $this->lang = false; + $this->edit = true; + $this->delete = true; + + $this->id_lang_default = Configuration::get('PS_LANG_DEFAULT'); + + $this->fieldsDisplay = array( + 'key' => array('title' => $this->l('Key'), 'align' => 'center', 'width' => 32), + 'active' => array('title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false), + 'description' => array('title' => $this->l('Key description'), 'align' => 'center', 'orderby' => false) + ); + + $this->optionTitle = $this->l('Configuration'); + if (file_exists(_PS_ROOT_DIR_.'/.htaccess')) + $this->_fieldsOptions = array('PS_WEBSERVICE' => array('title' => $this->l('Enable PrestaShop Webservice:'), + 'desc' => $this->l('Before activating the webservice, you must be sure to: '). + '
  1. '.$this->l('be certain URL rewrite is available on this server'). + '
  2. '.$this->l('be certain that the 5 methods GET, POST, PUT, DELETE and HEAD are supported by this server'). + '
', + 'cast' => 'intval', + 'type' => 'bool')); + parent::__construct(); + } + + protected function afterAdd($object) { + WebserviceKey::setPermissionForAccount($object->id, Tools::getValue('resources', array())); + } + + protected function afterUpdate($object) { + WebserviceKey::setPermissionForAccount($object->id, Tools::getValue('resources', array())); + } + + public function displayList() + { + global $cookie, $currentIndex; + $warnings = array(); + if (!file_exists(_PS_ROOT_DIR_.'/.htaccess')) + $warnings[] = $this->l('In order to enable the PrestaShop Webservice, please generate the .htaccess file via the "Generators" tab (in the "Tools" tab).'); + if (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') === false) + $warnings[] = $this->l('To avoid operating problems, please use an Apache server.'); + { + if (function_exists('apache_get_modules')) + { + $apache_modules = apache_get_modules(); + if (!in_array('mod_auth_basic', $apache_modules)) + $warnings[] = $this->l('Please activate the Apache module \'mod_auth_basic\' to allow authentication of PrestaShop webservice.'); + if (!in_array('mod_rewrite', $apache_modules)) + $warnings[] = $this->l('Please activate the Apache module \'mod_rewrite\' to allow using the PrestaShop webservice.'); + } + else + { + $warnings[] = $this->l('We could not check if basic authentication and rewrite extensions are activated. Please manually check if they are activated in order to use the PrestaShop webservice.'); + } + } + if (!extension_loaded('SimpleXML')) + $warnings[] = $this->l('Please activate the PHP extension \'SimpleXML\' to allow testing of PrestaShop webservice.'); + if (!configuration::get('PS_SSL_ENABLED')) + $warnings[] = $this->l('If possible, it is preferable to use SSL (https) for webservice calls, as it avoids the security issues of type "man in the middle".'); + + $this->displayWarning($warnings); + + parent::displayList(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Webservice Accounts').' + +
+ + + * +

'.$this->l('Webservice account key').'

+
+ +
+ +

'.$this->l('Key description').'

+
+ +
+ id OR Tools::getValue('active', $obj->active)) ? 'checked="checked" ' : '').'/> + + active) AND $obj->id) ? 'checked="checked" ' : '').'/> + +
+ +
+

'.$this->l('Set the resource permissions for this key:').'

+ + + + + + + + + + + + + + + + + + + + + + + + '; +$ressources = WebserviceRequest::getResources(); +$permissions = WebserviceKey::getPermissionForAccount($obj->key); +foreach ($ressources as $resourceName => $resource) +echo ' + + + + + + + + + '; +echo ' + +
'.$this->l('Resource').''.$this->l('View (GET)').''.$this->l('Modify (PUT)').''.$this->l('Add (POST)').''.$this->l('Delete (DELETE)').''.$this->l('Fast view (HEAD)').'
'.$resourceName.'
+ +
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } + public function postProcess() + { + if (Tools::getValue('key') && strlen(Tools::getValue('key')) < 32) + $this->_errors[] = Tools::displayError($this->l('Key length must be 32 character long')); + return parent::postProcess(); + } +} diff --git a/admin-dev/tabs/AdminZones.php b/admin-dev/tabs/AdminZones.php new file mode 100644 index 000000000..d3393dd1b --- /dev/null +++ b/admin-dev/tabs/AdminZones.php @@ -0,0 +1,83 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(dirname(__FILE__).'/../../classes/AdminTab.php'); + +class AdminZones extends AdminTab +{ + public function __construct() + { + $this->table = 'zone'; + $this->className = 'Zone'; + $this->lang = false; + $this->edit = true; + $this->delete = true; + + $this->fieldsDisplay = array( + 'id_zone' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), + 'name' => array('title' => $this->l('Zone'), 'width' => 150), + 'active' => array('title' => $this->l('Enabled'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false) + ); + + parent::__construct(); + } + + public function displayForm($isMainTab = true) + { + global $currentIndex; + parent::displayForm(); + + if (!($obj = $this->loadObject(true))) + return; + echo ' +
+ '.($obj->id ? '' : '').' +
'.$this->l('Zones').' + +
+ * + '.$this->l('Allowed characters: letters, spaces and').' (-)  +

'.$this->l('Zone name, e.g., Africa, West Coast, Neighboring Countries').'

+
+ +
+ id OR Tools::getValue('active', $obj->active)) ? 'checked="checked" ' : '').'/> + + active) AND $obj->id) ? 'checked="checked" ' : '').'/> + +

'.$this->l('Allow or disallow shipping to this zone').'

+
+
+ +
+
* '.$this->l('Required field').'
+
+
'; + } +} + + diff --git a/admin-dev/themes/flashyturtle/admin.css b/admin-dev/themes/flashyturtle/admin.css new file mode 100644 index 000000000..292c4e399 --- /dev/null +++ b/admin-dev/themes/flashyturtle/admin.css @@ -0,0 +1,61 @@ +body{background:#EFEFEF url(../../../img/admin/bg.png)} +#top_container{background:url(bg-top.png) repeat-x 0 -60px;margin:0;padding:0} +div#header_infos span{color:#FFF} +#header_infos{float:left;font-size:10px;margin:10px 20px 4px 0;width:360px;height:43px} +div#header_infos a#header_shopname span{display:block;font-size:24px;overflow:hidden;margin-bottom:-8px;height:28px} +div#header_infos a#header_logout span{text-decoration:underline} +div#header_infos a#header_foaccess span{text-decoration:none} +div#header_infos a {color:#FFF;} +#header_search{background:url(searchbar.png) no-repeat;float:right;height:39px;width:356px} +#header_search #bo_query{background:transparent;border:none;color:#FFF;float:left;height:16px;line-height:16px;margin:10px 0 0 30px;outline:0;vertical-align:middle;width:140px} +#header_search #bo_search_type{background:#ECECEC;border:#000;float:left;height:21px;line-height:21px;margin-top:9px;vertical-align:middle;width:90px} +#header_search #bo_search_submit{background:url(searchbutton.png) no-repeat;border:none;color:#FFF;cursor:pointer;float:left;font-size:10px;font-weight:700;height:24px;line-height:24px;margin:7px 0 0 2px;outline:0;padding-bottom:2px;width:79px} +#header_search #bo_search_submit:hover{background-position:0 -25px} +#header_search #bo_search_submit:active{background-position:0 -50px} +#header_quick{background:url(bg-quick.png) no-repeat;float:right;height:39px;margin-right:1px;width:175px} +#header_quick #quick_select{background:#ECECEC;border:#000;height:21px;line-height:21px;margin:8px 0 0 30px;vertical-align:middle;width:140px} +#header_myaccount{background:url(bg-lang.png) no-repeat;display:block;float:right;height:39px;margin-right:1px;width:39px} +.button{background:#83CA38 url(center_btn_filter.png) repeat-x 0px -1px;border:1px solid #364A14;border-left:1px solid #475B25;border-top:1px solid #475B25;color:#FFF;cursor:pointer;padding:0 5px;height:24px} +.button[disabled=disabled]{background:#E2EBEE;color:#000000} +input.button[disabled=disabled]:hover{background-color:#FFF6D3} +.button:hover{background-position:0 -27px} +a.button{padding:3px 15px;color:white;} +.table{border:1px solid #416110;padding:0} +.table th a{text-decoration:underline} +.table a:hover{text-decoration:none} +.table tr th{background:#7AB51D url(thead.png) repeat-x top left;border-bottom:1px solid #416110;color:#FFF;padding:4px 6px} +.table tr td{border-bottom:1px solid #F0EADA;color:#963;font-size:.9em;height:23px;padding:0 4px 0 6px} +.table tr.last td{border-bottom:none} +.alt_row{background-color:#EFEFEF} +.path_bar{background-color:#E2EBEE;border:1px solid #999999;font-family:Trebuchet,Arial,Helvetica,sans-serif;font-size:13px;margin-bottom:20px;padding:5px} +.path_bar a{font-weight:700} +.cat_bar{background-color:#F4E8CD;border:1px solid #999999;font-family:Trebuchet,Arial,Helvetica,sans-serif;font-size:12px;font-weight:700;margin-bottom:20px;padding:5px} +.cat_bar a{font-weight:700} +fieldset{background:#FFF;border:1px solid #8E8E8E;font-size:1.1em;margin:0;padding:1em} +legend{background:#7AB51D url(thead.png) repeat-x top left;border:1px solid #364A14;font-weight:700;margin:0;padding:.2em .5em;text-align:left;color:#FFFFFF} +#menu{float:left;height:35px;line-height:normal;margin:10px 0 0;*margin:7px 0 0;padding:0;width:100%} +#menu li{background:url(bg-tab.png) repeat-x;float:left;height:35px;list-style:none;margin:0 1px 0 0} +#menu li a{color:#FFF;display:block;height:35px;padding:6px 8px 4px 0;} +#menu img{display:inline;padding:0 3px 0 6px;vertical-align:top;width:16px;height:16px} +#menu li.active{background-position:0 -70px} +#menu li.active a{color:#000} +#submenu{clear:both;color:#666;margin:0;height:38px;padding:0} +.withLeftBorder{background:transparent url(separator_subnav.png) no-repeat 0 5px} +#submenu li{display:inline;list-style:none;margin:0;background:transparent url(separator_subnav.png) no-repeat right 0;padding-left:10px;padding-right:10px;margin-top:8px;float:left;height:20px} +#submenu li a{text-decoration:underline} +#menu li{_height:32px;_padding-top:3px} +#menu li a{_display:inline;_padding:6px 6px 4px} +.tab-page {border:1px solid #383838;background:#F6F6F6} +.tab-row .tab.selected {border:1px solid #383838;background:#812143} +.tab-row .tab.selected a{color:black} +.tab-row .tab {border:1px solid #FDFDFD;background:#EFEFEF;height:24px;line-height:24px;vertical-align:middle} +hr {height: 1px;color:#DEDEDE;background-color:#DEDEDE} +#footer {height:40px;background:#DDDDDD url("footer-bg.png") repeat-x scroll left bottom;border:1px solid #383838;font-size:12px;clear:both;font-size:0.9em;color:#666666} +#content {background-color:#FFF;border-left:1px solid #383838;border-right:1px solid #383838} +input[type="text"],input[type="password"],input[type="file"],textarea {border:1px solid #416110} +select {border: 1px solid #416110} +.header_module{background:url(header_module.png);padding-left: 0.5em;padding-top: 0.8em;height:20px;color: #812143;border:solid 1px #CCC;} +a.action_module{color: #488C40;text-decoration: underline;} +a.header_module_toggle{font-weight: bold;color: #812143;display:block;} +a.module_toggle_all{color:#FFF;text-decoration:none;display:inherit;} +.nbr_module{float:right;margin-right:10px;font-style:italic;font-size:12px;color: #812143;} diff --git a/admin-dev/themes/flashyturtle/bg-lang.png b/admin-dev/themes/flashyturtle/bg-lang.png new file mode 100644 index 0000000000000000000000000000000000000000..e099979d22ef912363e697c6714c6599484060e6 GIT binary patch literal 767 zcmV?7AIxTR;V(}8d9Zrj!Mx*&zuh;K@ua1^%l}e@cX_0d}o%rTr zAOkIMg+jr;va)h`I$L!*-H&Fod6%{~hw5}Xt5D;k-f@t?f&%*T077 zow(X$GFhCXj4TFjb92)Vg?NB)N~Q7`4sB>{_h^C3=kr(0X7f|%r)@r;ParW)L=J5j z0=~Ljt{4B=WB(1V-|y?v>GVwisX(JYf-*8}@|dmEs8OSb(9qs~!RNhHDs>AB_d?+s zjmAa4-~Rxj^l?0WV57$`#zsG>j8G$pnT)=;2d=;E^?DywtJSrIz(MA1u~@7DULU?K z%uM{kKS4o~^sz&LzJuKxL*iaM!{_t8gtO1j4QDc$o?*1`*H5~>Ny_DNTcc8PqgJb> zAi_uEy$BkOMk}y(d2Tou9CvVt#4DTy3>AyT-o)ea$M75;LZ^5F?`}ZdABjZX!rAV* z;c)D>*=*HNDD)2OnG^^F_F!b%g^aGkTvv5C9OYmzxQlBW8yowXOy)V9eRWaUx(>QF xI&fB@zlS2~nrCz-^Vg7pW8fG#2JS4v{RRTUd%n7yCpQ29002ovPDHLkV1fanaS{Lk literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/bg-quick.png b/admin-dev/themes/flashyturtle/bg-quick.png new file mode 100644 index 0000000000000000000000000000000000000000..96503c8f8afb1fcbcebdbdd1e6fe248a235d109d GIT binary patch literal 615 zcmV-t0+{`YP)f5LHY-~Sqg$s>JTV}4#7>qEjoq}gwD?Gq;oq6 zR-81_P0SZa$$Wb5O9cA?0{4Yyco1K3x%{}?d(;yVc}C>IiYF`rftLupMBpXx5`mWp zyhKlicd=MhO)N0E3a>#MkH;6Q)#`=5FSE$x3cQoa-F9T0s)!N=U?>MI~JI%$7|sFe7^f&FeuGt^QS)hsGYLFWHnyJ+B0xNp^&6fDOoO; z7wo!ZJzfLX z$%16FSqE;T(YV!V!{uNwIPZ45pP2KKRd@|Z16R+u5{tzom&-YDOQn+YY9O2E`ubwyQht!+1QtdW8Fu#U!io9(G-wG(5~^ zv%WrSYtLCovL3J5b#+YkcRHOO;GVIFWIf(ar}I@WY1`dy*8wiMZqB>eY~C`%B{$D` zflK^*m1_aCg q|NrmI>9ylZpwo=gI(mBd7#L>#^l9emjwuJKXYh3Ob6Mw<&;$S^K^ryz literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/bg-tab.png b/admin-dev/themes/flashyturtle/bg-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..6214b2094456ac9a8173b34ce478886572f18793 GIT binary patch literal 190 zcmV;v073tWP)R{dfY-&j#b$+nWHNSTJ*WEC_Z8go%a71^tDH|E swRP&sj`v3p{07*qoM6N<$f)4~wkN^Mx literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/bg-top.png b/admin-dev/themes/flashyturtle/bg-top.png new file mode 100644 index 0000000000000000000000000000000000000000..75fe354e0e070524f78d2970ab748a2f1aaabca4 GIT binary patch literal 10222 zcmVH9u&NS*uN_j!p=R<42wNPt5;5IkhD zYPV}Q#rv*b{pwd=ef8Bj|K>Np`Nc1Oan4_U`Q@))j&uFR7hjxW;jRp&j7EVN9X6cZl1=UsUqMP?~XI3$czkGMZXBRy>V_LH1yP2@g0xSX{9A_ARUtfrMB5o~alJUj} z0W~=fIO7w|XYUR+l@QZ$&sw0slB zFeOJrN=}FX1yuF=xzDZ}-_3|;X#9hl=aSvb2pSXFOI4yoa2}QxujH3>n=#pETx>G3 zVk{Skg4l?GY_Jz;2H0m%Q5k)JGNETv2^8KX#F)%HlYTPlqN%=mcaTD4P!;3N>Z4Y$ zTCB`xL0GnS=DgBd;s_Ll13@GkNg+fQOTysvsj! zhz^DZ?-GhQkXMRp$v0W_danqJLUVi(eN(0QbU+Oa2wV7Oh}_6lyimX*q8kjEH!Mr= zK(Xn7eIp~3hG{j&OudX}?VdmBtRZe!1KC?R!ovM?jLaLi`Hx?>2i)^Kpq#QAwvx5jjPo_%2=joLo7oL?u z;*_ieI$|m2qa)oiV5wcNCw&gmqX=4O!LtkongD5}HULC659!2|fUAZLNtypfXYk5A zJ$hvDa;12N*@>0`x8BB-%?zB^LE=+zN!7gtaa1SkUu$}NR)}cz&6cS!Y9Xu|D5gaD zmg9hIQ&CCQQ79;1K{yPfIzd;Y=z>Wvhs;MYrHGNu$2Nb*o?xVQ6)UZq-w9;u3yhhfq}oaqcFsTh+0T;Bxd;v* z^jYBC1SJyXbKP4%dpR=9gmQj@jC0+{COPMoKL5?L5*%Aw4uPhW_M{Gb!n8oONDx7r|L=d!yp1PVx_aZ?g-^7$q7&uQ9vo=AGPPtBF6q2|I#haFk zMCTUgB*mXT{fc<0#E&z@gExT_=$>e$s$E)?#^avvJrEha*I8ZlcG~%(CJ| zRrnwdP_QGCO5gK`OQC2 zoWcI;-I1-y;I(HnrRan>{FejfRyj@pk7251Vu7+oV6dgSh_9^MY}Zx{@y2OsH7P_H z?4*;<5v{kC2xM*YPnooIO!r+YEoI1wq^wJiyd)>+6;Q2_2|%zD=ZTCavOBav?FfjM zN1nw5fP&_cN=TTOp-F9$Ac^#oflxB+*ytV|{S3?0Qv6+En8E}msNc;MdKMblJ7LP( zpdsmNlF%TSZwBE$$y_a;P4PJIv-zzSVNFwWirw;1Rl)2QQckDdO=3+R^W>P+Ktu;^ zD?*ux&Q!09$j}X{#IkJMFuNYwt&P80d+A{ITI_l_VXEq+pB|~j0*;pFm6*(kl8b`b zu3A2|)glRs8zQNUUnZy|^pkq1iXwA`rV?r;bV^7Km`kLTvoQ@|$)R#-Nl=25lE|TA zLnjlu-;xaR5p2s&gyw8Y2DHjh2Ft<(guD;55t&fVuSL3qh#mBA|KqY>kmV<17^$Vb za^W=^LyE864csn`5?^hgc9HtaV46fxW#7=SgeydDH(6U%Jdw3z)Y=b?flxr*{8E$L z_B^_Pu_{TnogFH&wviMmQsFM5UUHbLb00cnn1Z8XkONXf=8(m0;=VheSxsDM@^O5N zZfm453m3M~H_8hIuc-s+Li(&uNvM;Z>R^*1Q?FVC$+Ms-*(KK9-;T*hv1zQKOiAP@ zyvlO27rFr*DzGil6R7Rm4U0LZ*YTx{ePr-0^XaFbo*(C&6cn!7DZV_gp0JQ;G!in& zGu0yNr!Pm-%B1D-W>Xt?$1B|M+}Vx$W>x^5M-5;ao4e4B_Ozs5dURgbn^pp%`HEr~ z5BYZYc+o+`i3rfXl}$|E-omZ&6MV+-ZoY3R&dfvA?h{Jfo}a0_C1jF7R{2Gd+=Zd^ zx`-sB>d~W+CbmP+&T{*J;5-tf()kws4KP)&W1vZ-lzACP#+62+O>bV@a)3Eys9U$1 zYcNIMZ{Y*fznIw`~FsqEQ`>%y`lHLz)GQV^4jE>46Lz%Kw8%z;K*G<+CnlK`E zk4L7?R5efR%4EnQUE11@Fy!tsThdf)wk`|MDc$WmZJB1sppZ7)ey%Vn@>Pn!@z^`b8of+X%N!pf?+fAlX?scM_C5wmSFK_kP|7lOza zM1Zy1oTH82mjpzsx&)zFxb#)zW=b*aOD-QzC|}li<-lg%s!#}Gu-cx0!sd-8+O5fv zOt~%fh-p1)-OGkx?_iSms=V0Owo?+8>GtcjR1~3HraQaE6wh*3yBO=d1eeL&#JBE= zRdVN^J(A^06#=5|m9%y@Wgo(drTCOmCD&vjsqF%}qObO0LXSfkQ?ImyMh&Fs_2#7N z-Kt5};18;@2>J`K?Q%jAnI|Za>!D3AOST&wXrAH+a7bjPu6yZff9nTmzF(mPCL$SEA#T6eHTCCeZ@pbV9a|RB!JlhbvlB zR7;X^3j+e8A+NZNbHGnP3~kf2X1F;ZM^*!>6VhL20YNZX_X)X@l)}Tl7UlsN)NgWf z0m`C3J9ym+`{a{Plo#ik_cFTJK959h^(WhAlG}>2U6v(MFXP%AQuE_1v@#`>jYVE0 zJNb7kKpzp~+~1ls=?LE*C2l!pGI>~*@CQ32Q#^Ttpx&5JA}3%S=K@*cw2pXM;Y3}W z@w-pc>p*k+Xwj|vNX<=x5fQVglz!)Y?r6G+q}zZN9HL6hy*4VZ!nb?b!nbd%&Y0+y zRjhDZX1_j-lYO*NvYSCzBlC-{xdX^kZ$tw@bN1FfPtDWy20I9|fP;78O9$cFzmmw4 zQ^od!cI$kupjVn|IB%%ki|iLCbJOHD_~LV z}YK-(;@U1Vf=i%Pfe>KevD|r~=N_c@D+ojn*=-9}f51!?&{VrT|i`MAFlE7rQhW|3gly=KD68+*-B9?+OOfHjw zECzMhlwBiAXDU$aDQrPOK#?Wh_Hp+w80;->=Jfh~7K_;YRY3Kzcj9Y}k<`i2 zGlbsC&=|QqE~^2HyTP#=)X8r5rhYz$loi-<*j<-L)1Qwp%wx;C)iog=slyU?`}Pd5 z?Jn;6SNB(NgxkVGc+=V_7bv$K3g9<=VWDK2_pN$d+#I5JGdeH=jOgc^ok8au=dcXSZwd}I&iKTXQHUmx1zw&zXKX>q@TJYxhaWJ`~d-KP8cf-8hd%STe0V&h>y)m9TUE|Zq*IJS-hM)o_k zgi^1{Ca(4`R)tOq*e^|-Gr)-HUAb6fr_|t&rD*%~E6#p~;6tb-K*%Z=BDr7M()8lbAZfFMi!i_k{2!3ff051X( zI<|+wB3cd}>kWXRjEEdnUHNj1xWsHu?2ECg7>d>ZPLX;e+54vys zY7CQW6#kP2p9b4QY90aGY$-_;zWro$dd=*&pSgko@*x{EdLGi3*NvPMY0ecwSS519*Xh#dR|(35f4(;|<~_?pDbPSYPu zk^c8TuIWyTa*dW~Hh%4*N?`x6qBF{E$Mn83?*?kNH=-g94yCqWTRdzw}bm}N(rYit{PFSbU} zVCj`iKxTj2vqHC085=Dsd%9Jrtpc9$X?KHIbw2D$NSacfJ_OrofR5&^6r=msu7inE z4r7sbw4~Yv9FnXVJW98UWDx*-+;S0BQPckP`W}9g3OQIl3w#M3*GCR?nJLkOnvhUkhY$W$Hxcd=$er6GCUksngWA*ph7fQBe zq)zBgOW*7Z4p4^1pZXSC=xLbvgc4Etl^W6WLx-yX4-;2^Q=j?|484TS}6pH%{TWpE=? zMvqcJV@%=^vD#bBQ*7ZhTgJ5?VJre@3!}67ySbt<3D`YPFIE~sjT0Fus)-mH4xxkP z6*n4TG6^}FIZc&Vwa<6LF7}&v(wBS)FX~4SEbQbKhEa)V?tol3GrFXX>`0JKvFkD` zP1dyCn=R#)NAeWg3cD5D0NyRIv=DjG{OZGA{Msom7O&)kki>2P+o#9{d$MbZi`CsC z!cTtklQnyr@8>?lMjZ3$tuyDj5c|$`(vha)#LP{5>mc&DExFh)$J`EAgq_)LT0eKb zQS0Y^tG`9-m)Ma$_Ztv(fK)#HoT+aqV)V(Llay5O{A@|$(1zb!u>rTVbG1!v*&Y5B zKo)|qe4IW~q;q5` z))aAT_|1v8EdWE_t%W| zHh0UmJMc?Fkchp)6C+&+$97KCd3%ak4Hddjb>EO{C7Yd!5+Z2?Xj)+E5e=CDdxj>P zlq!Q|VFa|=wvt!!7lAeQSV~K4Ep32>{?CpFn-4&`pj;i;RO(8wOi8 zE5)IvM`9hjXQDIBU!t{WkzJ(-t6)Btn$_@6wPCrYD6U=i! zXt-ZJCJlb`>V{U@tvB^;^ocbxCY-3J=m(s2tr8|j*A&a^#Sku*o_rs?`*Ms?2vWMo zPDCPOTXL<{Bitpsu8{-*E=2tJ$3ITJ=i=tZN{aZj$I(iWb>7lxJJ%UzH^q=fQmibj zG0||YJIiLbbFFG&IEj0!i*tQu5HuBD=VnVZKcH9(-HqWSVE)G+XNqW0Je{92()nXI zTT)zK$kb6Y)!KY=Buf4+nY8WbxGf~TfDhSzbHZ;GOj0v*#OGGgcJ9O!bK8%`6#$BcZ*uVK9%o?aFwUM{_YURrCTlA_lu$2{tuVqTKs{X>0O$ zK}j}&=0~~Hh+J=Tzl|EIe>Dm^umpDjg!By$>4SN#nHnQ0#YzbT)72o&7WQI^kIn_;en1_UbtKo*G-@!Z7LDbhs=gDoK=k!K|@ z*Ac)uw#l=oDiO5_1dB4#RI&-`#qzfq($L)vY&}_$w*;)Urld*3A`aUTPqu;KNE6%P zXg0A$9|9)WWFk8?fMkfbYBubPyt`1qX7|r6FK{bTbcZDii$08s&_+s0dTV#d0F7^B zIJ>oO;cP$l)mllcKz)5#!#DoXV~K8ZE38SxXiiSkwB91zbLZMH*TOEg|1U}5h622x znf5qZq-@%Pveg*op`n?#NMy_ASD%AzRaEO@lH5gYW`RMGC-MjvNgK---L3rS4XDiCeK5h^t~B8lc4-8mz>SlAN5*#+j|z;Y4gZc4(L zaBp3-D!XTvE8S*n7D38=#;E-wa(nAsFu-%I#kk7Ies|i9O`FH5AGqq)E4WoNBv1h{ z1^9A+4W7XXj&7vik31{MaazG194Z=U?1l?Xw3`CxuydguC=37O>qiDlptc&JTXH`~ zTI^2bF@NUSFv|g7A+krhzRCtax6O;%i!6G8RdyKZ-3Q*RfIGm8hT(xT(#r4i^jvQ} zU9~|asU2^>&(rZDoH=II}Q{lHp}E={F=Z)bMXndojtWHH7pLU>YY^hoB_ zFhb`kj)wV}6qM+R#&$HLle;s?-6bFnd7^-h05xCKaz;KFI~U2(e{SSts4fM)lfSgiD&_vI^jpTLQ}>iM3%$?ijpQI-pw2LILa3 z13>{SV>o6blr;*y?cIecvO7 z^P?aAXutF8PMmiUGn{#&Sc4Z1tYH$CqS8+7W^19fh*UyD$bf)NBC(1E_|jTgy0mVM zi;KY17-=COY`KCpx$d(iMWOFcn?RV2}eNk3&Yc|-{R6kt3 z9F#6VaG$P0lH|)HNdUPt;UZvDfj0gkZjiOQgs%y>odxplFC|;vcLx-}CbqA5Vv>z? z#sz|}e(1NhHtSUlY{e7>d=|MIgIB}SF|f63_0#=Zdmh{W7c_bSzdw38fc+MRt)!Yc z!}jBY^OG8tQK{=ZqK01VrkLQGwxgl@B#!#6LkY-P{5fOHAdiV`!6e$EmY%lnD#~Ze zk4@IZc7DW(+iT{n8OM+Ik7Z^Kh$7Zrl^!PLmSD(W3sfz7HsO^O?B+Nd+32u6si^M^Ceh8> zF|0b_T$|I8@B28V#i--Vc3Ms^xK+ACJ^BqP0EPXG>+Wn#LNUr%(eFwpfD?9Z^N^`y zRcPN_0j;dPHN2wkX?gQ-sM{oR>kXPW>(JE{?D-Cf(%rV6?RGQ>y(e7Lj{Tz)*2?CA4aW42m_GmzB z^mM6_h2c$_2UePPSD{H|+In9LDOuzP3D<0B*hx6`k`&|nM`$;XVb@pE>CN5&K${sa zmN$My$xQM-CIczu$7_9TkSz-)l&4VNuf+9oK}-q;1<@ZFdw&}QQv8+6QYE)&l1J+B zeJ`-t2BeoaCpgK+1|YIyAS<=z>F0JqwnantlFvxW=tNRl-}J@Pb;gSV(=ACgNG#h3 zqHyP%oL_DwK8T5%-)>SWBU_&(CP`3y8g>hgUg6rJb2`8sjj92gN`dv^yJP)2`CI~= z@VuQiO{;zq0h57N>k$TH6*hG&lynHS@Z}aI_%B&Af6U+Bg-3DG{NBYZdbT}JKr55q zecCNyd0%9=JqR$Q#3LgG*FvEH+A5gbzRLOe!3Q5mBdBK^QqgdREhXpXxr63&=YyAH zI}IDYw@b51Wid^-tu7M0wjI$*T}XVv=WdEftOW8!5a^CKmfI4*%eq~hN6H2wKIh~Z zZ6tMmQW$zbm6^3`*6(;IJBr^3Sb?l$uZU=2no$|u@c7p2;XV!S#ce9czcetCR6M|i zbt}PPHF4f*0PEl*>(ORj&)^5a7pn9lDGQ$>grD!ocNyy$ix)l!lx@VM5E_31dpFPK!VMPyO&Ykn=ZEiLi$oCKqN&T?^IV+43S9n4s<0i1ctx z3`X2mMf^HJH28hglZfHLy6Kf1H!?2X#YL98F?!Q-K1+6++5IjWzOR2pMs(kzNfd9o zFJpkRYmb{l0a`z|7~l?@+1-?kVY8`YGzFJD>feegQn#X@88n}_qNOyjBzC@iJRhDOUqFN4aqHJv|_~cE*qy6n9X^i3N|4rDN``ZRiDP-*FFqs z`CSqxU>>r-4vm-916gdHg>Fu?CD{8duua666@uB9(9S?^KAX6)1}nNYZB)Su#JA7` zvv5l;n509Elzn>3hD_3n9`y?Ql6;Gy&DNL|S!|HPewIQ67(+aUg(-||V-KAPdhMXs zw|Br4E-$0|W>z4a9=5x9LmcVMZPPGn1cVi0gH3KBTDkQSHgWYX1mxPOhb`YUu`z)_ zS5GV;-WztAs|Eh>b^9|cVF`}-kw!HC1`4{>S&TNTZ(S7)ThcGQEXcGO)z_PFIo)X>lE*;^$Z5ZqfEc9`}$dt@)7 znU(~FPWcCYKZM0Q*k|HM!?F)*?2-Oof*>!RE8dCCH+$JsTgtlba9hX{0GMfO@@ZQ# zdDzS|1i@rS?xLI(fvKn0pZ@j_p8wwX?RwDy!m(v z>$?c+-=D{ukL%x_$D5C*u)d41{`Gmh`FINJDXi~FSpV`o-h5pD{5;-#JcadLg!NC) z*w+2<0-7Cu)Zf@{nhh$^Kt#<^LX>|6xMeU)?Yl2Hy_uZKaV#bPhmZU^*sse o&z{GdkEgJ{i?DwCJl=f#7oMjWa;gFHIsgCw07*qoM6N<$f=D^SW&i*H literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/button-bg.png b/admin-dev/themes/flashyturtle/button-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3708ba053c719b774890d2c6caef9964f1ce66cc GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI}!3HGf{@&OHq;fo6978y+=k}}?J;Wfuq8{y_ z!ZlqjAcAW#kJTcs5*MBuyAMvVIdu4J-OhXd&kXH3c{i$ZEL1UTnHCWpC2+blaQ61E zKNjBmuQ_v>;JN9uE6;KZcA7DA9@bjQ`A50)ihJGicU4|8S*j|JAD)noE{MiP{SPx=i{eiu7D-I0$37iG9X+DCtT zZbE$Ay(J;EQY7)%ZDSI<^Dh3C2!=>p31lTmB4s7Wl_OW0z9>sx6i$v-j>l<|#)q;Z zVWik`AMe+YB(ZL)*y?eQFQ=^5^SEQNjICw@HBF)D@2o_9dUF)f|D}s0egVS&jTb!= RiBtdp002ovPDHLkV1fdsYQ+Em literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/footer-bg.png b/admin-dev/themes/flashyturtle/footer-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..227aa8a5ec35ecd98152e2d74ab130023152e159 GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3-ohG7?-F7?>FXd_r8$oH=v$?AdeY&YeGh z{=$U|7cXACbm`LN%a^ZQxpMXD)oa(TUB7<)#*G^{Z{ECh>(=etx9{A!bNB9Dpdq7R zGz5l02o$YJiUxW^+0(@_gd;jxASEdwDd88tdSE0+k7m=7X)_x;fe;878M+eq{TAFP Qo(b}`r>mdKI;Vst09ArV(f|Me literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/header_module.png b/admin-dev/themes/flashyturtle/header_module.png new file mode 100644 index 0000000000000000000000000000000000000000..98a8244875a37f1e59c4d7745db5b210c92de87c GIT binary patch literal 895 zcmV-_1AzRAP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_001{hL_t&t z9b~1|VSi|NlRB0=Fy!PzMl0wf+0|56WTyNdS$*Fb}K*w|O8JV3UQ50RW0Q VRGDKMj5q)Q002ovPDHLkV1iKFp{W1> literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/searchbar.png b/admin-dev/themes/flashyturtle/searchbar.png new file mode 100644 index 0000000000000000000000000000000000000000..dc69699d13f673b5228400519794e3232b980a8e GIT binary patch literal 1409 zcmZ9MeKga19LLualI6}wmlX4`k(*36SHfNUG1Rbb6h&?x66t9hnx`9Aeq$bXj2rS? zT-6Zb8o4O7OjtWI&w1F0A?#k%Hg|N+J@?#yzMt>+oXNi`4n+H3Ec8F#_W?S`42UTa=P#GY=wEDrwqQA?|v_@Te%s6l-W`h&(zAf;1H= zfaCu3Q1^0R;583-_qVlmbuJN{jt+`73N?K$-ynEwY^g`k zKeMUrzjMKXO#Uk*G&FRAB@&5rJiChCWMJ`k$M)CsOSqGh4;m{g7c8=oYu};Kr!)RM zz>!dSUx)zUkdRtj_DFw{+`uJ8Mt<4r=&yrTvrSD-<{h)PF6iv;ZoHeAI2Ruu|DMYw zOuc*e?$(tn<+!YfAaugwbD0$ap^x2k%?Vm9I&Me`Ba>5pk)(c4&M}?(#J^f+EN!y< zjq?l@@<|4QV2_rzcBrgE4}n%AsoS_KqqBn9zw<|UJPVbzwY7`BBvU)P_uXsyM7AA! zw+7yUvtq_d1=&hH1o0VTc6IQ$?R#GKDI*JYP0iSZp1RuFCm*LI^lxHQW+%`8EG^zh z5hBmqJwD2{ROg9QD#hwzWNJm3-l#M&QO34xP5Z;8S!2HsNe4!U6_!kwpH2@*8izJ; z-`=SyX>5$tF3OblcPn&RP3E>3_wD0&w89f#m>+G4S5)1vV7KAIihYiM{Kyfp$tgTO zMJN#H)*T7Nc*+G0Evu6z+^5l>+r{iCl{3JjBeU8c7`UeOi@9af_#{Ds%}~e zjdqU|));-m&u^mQ>JG`bi}v@PzQm6wm($>$AuAUgUY8MGIeN*$_=AHXi_MBKI{mA1 zJJT0Byt*2ZX8E``cwk_ldO;+5VwKmmLb_HTd6P&adfpY{YzZ>^u%+zi1vyRIzmhD+ zEZ}zfWjd2PEMo^XoIM(+@=;7g$2Cvr1kmyWjECZv=dl1OvuHCzfuN((k5EGct+(l^ zuCwav>%A!qLA#b6lgS)b659g6*)7MC@*gSOb`r+Et;VzT-FQ5nx0+zErlw|Letv$0 z)oBBQ6Y=6mL4S+3$+Q;S#s)$_@DIMIkVWtDX6c))nNrG?w%U<0VWPbdgO3URV`0V+=T G#{C0e8N3q! literal 0 HcmV?d00001 diff --git a/admin-dev/themes/flashyturtle/searchbutton.png b/admin-dev/themes/flashyturtle/searchbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..30cc017e2ed558cacb6b36fa9115c6ee8d0a08e7 GIT binary patch literal 2504 zcmXArc{mi@7stoGWJ!e=FH>2@62sVrEFts8WXX~xjQF9Fec#tY#n{HKsgTs$OhaKT z8Ht+gOJmn$Ff=cQMq_P$;*WdpdCqgsx%Ym)=RVKLvbFw4kYAD?000PDT)Av_xY`^J zOJ457d3T3T8vx)#T3j}9h@M(4Uq!l`OMjyNK9??;EqRMW31wRs&{BApnbJD=-)wu_ zdgN+j`)tPA>{n4QHj_KJd(TbZ)MaMcay(ZQ;d&sM&41@=e5M6r=R=gj<^z^z#k$_l z@|}T-Fs2Me>a<@$kncc6sh%eK=U#tb>Ex@zgT3v!DVZu2m~M8sor$h0+VBDE>Id&A z;I-X*PN?5x8%q`iZGj_j#S{42IA;i*JbnEg$_LaAl>`dd62Yn*!6xL&u?q*Y0fX7W z!5nS0L5XMU-?SvYIqmLsSpATvvw`UBx`e%DtAcGaGv*YwV3)6gaAF2v({b=m4dMVb zg58JIp%1eYRMVKGbyVVtpM@irhmcGkeR^Ha5fw50_Z%{@it!b#;3yic7ajB$;{B$t zonuOI8gm!i$Jm1%*-@+aM~V?PFO}(`bPt_0^5}T}Oa8XM+r+=w?ba0+9NDjYPZ}`2 zjzjk&YJeSO4vyqSvf&;_4KTr|?j@nOvz1Xcf=JXkwznUQ2)kPzraTo5OxU^+Gyki* zI*}bj&sVLZRsK_$xXD%1^w{zTD47F1DIh&@(KCKWuLiBI+lap2viGjqnaplP4j)g5 zl#)qmU3=j^lW=Lpds<;s^R|+m!XIE$5q_(t!KsnGtMAO3)-dgRxQqV4=iWWf1d5YV z1~C`M+V9jF7woWHSsMs_#&57t`?~(!NCAxE0R^pckkKLE%`Q%7t0fP`v92|AGBJ}L zIv}&+{-R!|KG5gMAh|38hZ}*Xg3v1+8-%dkZ8g5OD-xgRW__$mXvQ41!<(e;tDm@S zXJ?#pIvQ`bj!goy{@WhWv^e0jCNJu64|G&B#KCe$-y=cm2wm5i8NKo&xHmHx3tdNo&WZO4t!zdf;cwcgo?M>(gEo{-0y?#{=N)h6 zc5#LuIn~qpu*au@Wb9&pIsA#b$OsHt${Gdb|EZwEH;qqQg3HqDD93jdY7gpgT3LFD zA9jrG8LD)%e88nf=CFpgMr6z_UESQTWvUoz`SsOTh5O4Yi8Ut+L$~x9iBcJ@D<+2|TeOkb9zk>9MdQaUS6Y$w|XFCP#G#~6l7)Nee1 zyHIe6Nj-u6ig%;PY5Wjgw!njF<6=dXtQf$Gv>1#Ufs4%)ch+i$zMihZ`&kWZ8zQk3 z>ZK7LwukRECep;te-L=~o#Rj$p?0S9KoGwc4~-2G!j=<2ej}Y*{lG z%0_EEijDk5XK5fJZAwqn1wA_(MgzAN*&E>&AF`e6y( z4G^%Jxgs|N@oc!60i#wm58u)hru7?GjVwN{#=+!dP6Eb^GM7%9Hk`$t zYd`m{5{?|{Np7xnE_E(*7VFU9PUjvsKM?~ZK_D9&joDJ!_L+>3oTh|Q-1Qhe46^sk zj{tkuX_7?U9Aj1OQue?3=j!2Us0>{ghX&rq*L_}@(L-yjiqP6D$!hwUtBossNWsm= z`z+3@lNP8^7&Hyl+*YBncgpJo3_3<9L7}IuwGKZ&@$y-Y4(IX)2<}3CPP67RXFAf4 zPkvx!w6{AvZ${-|SmJx9B2Z44kp&uB)a&vumr@bY`>lX|npW7w=t(o}~y+@Urzgk{efRBcQT0Nd`XL&s~{S9@Sd%E_*=p)`r!g-n`u&^=2>*b$* zpSnN63j-{Z^>hQaH3%-Q(;YPvu5U)wy`{9gnJq)kbI`ltu|djT3=2&R23qYW6C;Y0 zI0nGMdht6DPUv_bRREFDE)J{b)+|zTxAALi5-@=&-5^$Rg!o>Gw^acNqf%jpr_tgFWlW0hZzJIoosC%Yd zM{UI?=F14)h}ae4#EjLjp{IT>dx{sW|CrNcTIxK(ACtwAEF^=C`{+1n-k|HP;>XP8 ze%Bo4*H&*fkI9ZYc=y7bi5EaLSz>B19)q_7&d^*uMaJ-`A$~UdN8PHgiuUVa&Rq1K z=|q_5yn%fdsvnzD(2%-Gl0VtU4WaM5K<1=2Y$-+L1yol>64>5Jo|S3 zD@&}C4S$&wglDFxjTlx-%jVi43%%9ju~z5Cy9c9q^oL6>ct432Lng5g^%F?DGf$)1 z7u~OmpJ4! z=aa^GilWL$mT#}-S){#w<9MoZz6Rd3yt@zKUp&uy&u7pV?+?CAE|d2+X8K%403o*t z?wwpR{MOq(@xiJ05$Y6M-Gh-FXd_r8Sw#rs-ldIV-U%Nx0 zZl_}XE~SRu%8h$en)a$T?^AEtuhDiuv;B~E$6=kWBf8y3^?QyR^qny3KWRMiwCSWX zW|PmEPd#rr?Sj?xi#9Va+s?XTH~Xr?oNJDAuRG1Z;k@9c%fef(i*CCuy5qk1uE&yl zo=fj}0Ua<3Mnhnbguvzh8g4+Rh-acU|?7~RoQR%sT=P= Oj`ei)b6Mw<&;$T!npA24 literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/admin.css b/admin-dev/themes/oldschool/admin.css new file mode 100644 index 000000000..47878050f --- /dev/null +++ b/admin-dev/themes/oldschool/admin.css @@ -0,0 +1,55 @@ +body{background:#EFEFEF} +#top_container{margin:0;padding:0} +#header_infos{float:left;font-size:10px;margin:10px 20px 4px 0;width:380px;height:40px} +#header_infos #header_shopname span{display:block;font-size:24px;height:28px;overflow:hidden;margin-bottom:-8px} +#header_infos #header_logout{text-decoration:underline} +#header_infos #header_foaccess{text-decoration:none} +#header_search{float:right;height:39px;width:356px} +#header_search #bo_query{float:left;height:16px;line-height:16px;margin:8px 2px 0 30px;vertical-align:middle;width:140px} +#header_search #bo_search_type{float:left;height:21px;line-height:21px;margin:8px 2px 0 0;vertical-align:middle;width:90px} +#header_search #bo_search_submit{cursor:pointer;float:left;font-weight:700;margin:7px 0 0 2px;width:79px} +#header_quick{float:right;height:39px;margin-right:1px;width:175px} +#header_quick #quick_select{margin:8px 0 0 20px;vertical-align:middle;width:140px} +#header_myaccount{background:url(bg-lang.png) no-repeat;display:block;float:right;height:16px;margin:8px 1px 0 0;width:16px} +.button{background-color:#FFF6D3;border:1px solid #DFD5AF;border-left:1px solid #FFF6D3;border-top:1px solid #FFF6D3;color:#268CCD;padding:3px} +.button[disabled=disabled]{color:#8C8C8C} +input.button[disabled=disabled]:hover{background-color:#FFF6D3} +.button:hover{background-color:#F0EBD6} +.table{border:1px solid #DFD5C3;padding:0} +.table th a{text-decoration:underline} +.table a:hover{text-decoration:none} +.table tr th{background:#F4E6C9 url(news-bg.gif) repeat-x top left;padding:4px 6px} +.table tr td{border-bottom:1px solid #DEDEDE;color:#963;font-size:.9em;height:23px;padding:0 4px 0 6px} +.table tr.last td{border-bottom:none} +.alt_row{background-color:#EFEFEF} +.path_bar{background-color:#E2EBEE;border:1px solid #999999;font-family:Trebuchet,Arial,Helvetica,sans-serif;font-size:13px;margin-bottom:20px;padding:5px} +.path_bar a{font-weight:700} +.cat_bar{background-color:#F4E8CD;border:1px solid #999999;font-family:Trebuchet,Arial,Helvetica,sans-serif;font-size:12px;font-weight:700;margin-bottom:20px;padding:5px} +.cat_bar a{font-weight:700} +fieldset{background:#FFFFF0;border:1px solid #DFD5C3;font-size:1.1em;margin:0;padding:1em} +legend{background:#FFF6D3;border:1px solid #DFD5C3;font-weight:700;margin:0;padding:.2em .5em;text-align:left} +#menu{float:left;height:30px;line-height:normal;margin:10px 0 0;*margin:7px 0 0;padding:0;width:100%;padding:0 1px} +#menu li{background:url(bg-tab.png) repeat-x 0 -2px;float:left;height:29px;list-style:none;margin:0 1px 0 0;list-style:none;display:block;border:1px solid #999999;-moz-border-radius-topright:6px;-moz-border-radius-topleft:6px;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px} +#menu li a{color:#000;display:block;height:20px;padding:8px 8px 4px 0;font-weight:bold;font-size:0.95em;} +#menu img{display:inline;padding:0 3px 0 6px;vertical-align:top;width:16px;height:16px} +#menu li.active,#menu li:hover{background-position:0 -38px;white-space:nowrap;} +#menu li.active a{color:#000} +#submenu{background:#ECEADE;clear:both;color:#666;margin:0;height:32px;padding:0;border:1px solid #999999} +.withLeftBorder{background:transparent url(separator_subnav.png) no-repeat 0 5px} +#submenu li{display:inline;list-style:none;margin:0;background:transparent url(separator_subnav.png) no-repeat right 0;padding-left:7px;padding-right:7px;margin-top:8px;float:left;height:20px} +#submenu li a{text-decoration:underline} +#menu li{_height:32px;_padding-top:3px} +#menu li a{_display:inline;_padding:6px 5px 4px 0} +.tab-page {border:1px solid #ccc;background:#FFFFF0} +.tab-row .tab.selected {border:1px solid #ccc;background:#FFF6D3;margin:1px -3px -3px 0px;top:-2px} +.tab-row .tab {background:#EFEFEF} +hr {height: 1px;color:#E0D0B1;background-color:#E0D0B1} +#footer {height:40px;background:#ECEADE url(footer-bg.png) repeat-x scroll left bottom;border:1px solid #999999;font-size:12px;clear:both;font-size:0.9em;color:#666666} +#content {background-color:#FFF;border-left:1px solid #999999;border-right:1px solid #999999} +input[type="text"],input[type="password"],input[type="file"],textarea {border:1px solid #E0D0B1} +select {border: 1px solid #E0D0B1} +.header_module{background:url(header_module.png);padding-left: 0.5em;padding-top: 0.8em;height:20px;color: #812143;border:solid 1px #CCC;} +a.action_module{color: #268CCD;text-decoration: underline;} +a.header_module_toggle{font-weight: bold;color: #268CCD;display:block;} +a.module_toggle_all{color: #268CCD;} +.nbr_module{float:right;margin-right:10px;font-style:italic;font-size:12px;color: #268CCD;} \ No newline at end of file diff --git a/admin-dev/themes/oldschool/bg-lang.png b/admin-dev/themes/oldschool/bg-lang.png new file mode 100644 index 0000000000000000000000000000000000000000..5db32699e9922e249df7920a5fdd9f0564eb7c31 GIT binary patch literal 910 zcmV;919AL`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+$tiu~XJ00RC=L_t(IPjypWNRwd{9$`Oi~R(8pr2!UqQjbEc=K ziK(fnErmkys;jH(Y#>c4mCY_MFZ!>nX0n(B z!T-{OAmiiX8@s!^fb2eG@7M?E?d_#~svdmbmR#;zOht<_pSX^B6*=#m4{6e8n8SEL^(qAQG zV_G*RY^qc$KIe zNFFveHlA#1YAP_9Ofx8T&*5;uyjlhAMFn7f{REs0s%P?X9wCa0j6DKUTU#5}-Q8WU z*Xv#AG*~Pavfn+mT5S^FOdI<8?5@YrSPU+1Js2P660+0_Spkrmnwl_VFE$tq8xs=~ zK=!?`umD=E_6trSPkcEcdn6}CXMb4;-|LFN(NXQuKe$7%WBw_@BpN1fNu^Rht}Wos z`_cK;s;a6Kj1wf&$LNT7MMko2wj|fHSXl@^-c`bAK^DPJiqE8=qd#%0yv@zc1Qz-U zf^gC4^qPu_ibD^JeJ&k07*qoM6N<$f)Cf4U;qFB literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/bg-quick.png b/admin-dev/themes/oldschool/bg-quick.png new file mode 100644 index 0000000000000000000000000000000000000000..4acbb75b44b2a4c948a7b943fe8b2318af9f29c0 GIT binary patch literal 1620 zcmaJ>eM}Q)7(Y>g>G+s)6%fsNpd*vE*A`mZaWH79Rz0i*CSlrHdIwZ#uiTyVBhCPu zaY&fDxf;c($nYb?GKD}?e5LvWIL*hUJMr7ikLa)ij zRk#MT-$QWY_=@8*eshv|Df*%*3;G1_XL^{(A`2 zVF>8KKv5+n{rb6~a>7Q&#A$KeU0L?Tfn$cK3_7v^($d^S%c5%4823{EbH ziAG{s5|vCo8H@1{D2Jwv5-!(dGI2}-4nbyfd1A5Ht-IZcF`lt3onCnhEF#k?qCl!q%L zv|IJKf%b5**W9FOx$aTW8=1&5oYdvxn4Bc^;6%w1-SoL6POCS`#iq|iIxUyWB*S%I z?7uGBbHq%Kdpk9@j59U(xPh5=k{Rn|e!k5B;B{FcOGq_$4wUh7Le_;gAF;MYg@_ZW zW!`O9da$CU!5_`cn!BVA!UQK{ik0gV&d&OhlUyIZLs=xX?F;oE+*5w*TdI0dZDmG? zDgvqS4u2Wnrjn$cH2ZW1jGbI-eERg+aF-Mv9UWcbT`=5tVDAk0y*&#)Py-+r@L2CX z^%%82(r+BXSdyM-(36RonfzyR~PQSBwGIUsxL}b zf441ee3y;L84Be7bh>fFosyCgul=?got>Q>EiEm684LO{)SZjNt2#FS+)t1ESlNr; z${h(kJ(p%ba=FOz53BUMj$ID*_o=y+d+ovF3+vOKlpl-8sOmVlTVAm_V*c~u&wp^h zr7kVKeP`LqaPo=u6Y8cTB_-t=#^*f`{dF)uxcKTo{@<5sYHD)9Ku2@w%%Has&HTLj zy1IM$=La8@t}Ys5)sM4}uBhs0VX;_oM-Cm@XS3O485iZvn|fN$U%YrYS6H@tBj>kI z4;%=lD%#ALuxz|5dBY-RwYLjfeQG&D*^dv(Uj*ESN-NSMQ!e7vor0;Bcn<2#*zCD^NQ>?w)aPHsJCCEK|0ik@4ZTw!Z-b XI~MnDAWy6jy5D(4QnJjRxT)wL7Fu^= literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/bg-subtab.png b/admin-dev/themes/oldschool/bg-subtab.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc1b1180b124baa5efc8cbe4107abd12c36a3cd GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^j6kf$!3HE*_k3gr2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?z8@)#y;M1`rPy!NHKF5$ p9>*k-?w5OJ`)Vv*l6(6Hv#DUaw%$~ew?Io7JYD@<);T3K0RVAvR^ zi(`mJaPkbxVztAYx62>+aq)FI&-Z!z6L)YQ***=}8Xx|*ly3W<-gELGgJ9&E&^s~5 R_5dwn@O1TaS?83{1ORNbQUw42 literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/button-bg.png b/admin-dev/themes/oldschool/button-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..bbde5ed577adc5845e8b88c0a1c0f95642821c41 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI}!3HGf{@&OH5-1LGcVbv~PUa<$!;&U>c zv7h@-A}f&3S>O>_%)r2R7=#&*=dVZs3QCr^MwA5SrJ~QNf6c!~W8IcR ztrPDvyZ&ju;9KX@XZt!YUFqCm6Je^P7P{KW=Kao<6?#^zo%z8-myt)U}I|@caU|5Dg z^^rS=fga;5@Q5sCVBk9h!i=ICUJXD&$r9IylHmNblJdl&REB`W%)AmkKi3e2GGjec zJyXxFKM#P4ls#P>LnOkJAEYVp?3A#Ow2-*5a6)h6)W+6ENv@d^5|R@b7_8YDWyCl8 RN&=NLc)I$ztaD0e0ss{$Ok4l} literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/header_module.png b/admin-dev/themes/oldschool/header_module.png new file mode 100644 index 0000000000000000000000000000000000000000..afaaae61d4d983c6dcd2ea2841c06d5378b72ba7 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMq2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?h6dRZUsYuk3v3k z+J&Dx=qP+-b=+gY{X|JH-61CA(a+2U5@C--JeXW;oYfe*Pfj|TbXk55&{PIbS3j3^ HP6(lh;%=G5U_36;{>Cg4+ z()H=i_3F^|?A7$?&h+QXA^8LW00000EC2ui05<>~000ESu*pfQy*O*ZyZ>M)j$~<` z=vS<4>%MR-&vb3yuA=XJ@BhG{kU%UNkI1BQ$!t2G&?93?ty-_xtagj&dcWYXcuX!Q z&gisy&2GEji@1DFuiNkVykpPr`~QG}f`bEvhKGoWii?bmj*pO$hz69EmY0~Bnwy-R zo}ZwX0i&d)rl+W>s;jK6uCK7MvaJubwzs&sy1Tr+2fx6dFX%FDt4&d<=% b($mz{*4NnC+S}aS-rwNi;^XAy(GdVU);y|O literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/searchbar.png b/admin-dev/themes/oldschool/searchbar.png new file mode 100644 index 0000000000000000000000000000000000000000..26b93aeefd2aaa58bf0bff6e41ad2f05ff1b92f1 GIT binary patch literal 2446 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 literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/searchbutton.gif b/admin-dev/themes/oldschool/searchbutton.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2f27ddf9c68c38f662daf49bdea964e6a90ce91 GIT binary patch literal 1548 zcmeH``A^yh0L8x?0;X$5r)5^1$7(HzZtjR>bIBK{^{7~BT@w3dw#$}< z#Rh5JGFFUbs|Q6}EmB8O@f?DRawrNY*E~>>TLtk<*M2wmN9?D*yu4rE%O`nx1-Yd6 zJ}U;&fqmde+h%ar0zNf>kRF5#;PW{UGJywH@W2K_77$tlp=A)VgInec9%H#@u6$p2 zX0~Wfuv2%#g_N{<9uco1XxS^LkoW4gYkR2q5&+A&qHC^n(t+3mz`P`IpP0u4^JGDvX{#GEI@BFx% zv8d_oyxf&jRv%R;65-(}m5H0m-_Sm)44{fZue@@U!dUiUxZ;#s@{1)ZqPIpIQ95wz+6X`nBy$ z>GIO_P~SI}0q9nMJlr2#Q*nu(>V^-mo`7dx<6Zo7aMx$)u3XlYf5&#mjMhQ%#j@eU zklWaq2R)0&91pB%TZ%_y&z>HHmeGj;1PcOCcsmn`tFZrwiB=iG*e^Kt8f-2;k$I{r zffE)>I$Nha5%p zi^p-5{wJ#FN+wyB?DKce=EnFX&`qzm*YduV2w$l7ZS>h$#La$3L*^U3XbgXI&@c6E z4h1HNTf@P)1S%Zi=-iV1z31B+0nn-G^6-UBg#vR{6c~N!oIfyz&7=jua3npbjQUa( zoQS>d4^F;TOvwUXslT$V#MHK~1mi3ax3;mgP{5|6H_V+Po~-c6-jxzIEGZ*O8WQze|^)02@@EFnMHW&*c=)d8CGjBzqPsc RCM literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/tab_right.gif b/admin-dev/themes/oldschool/tab_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..82740efa4f9c48737c02ff9d9466038ddc3e6634 GIT binary patch literal 2128 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 G0suR2Xq&nK literal 0 HcmV?d00001 diff --git a/admin-dev/themes/oldschool/thead.png b/admin-dev/themes/oldschool/thead.png new file mode 100644 index 0000000000000000000000000000000000000000..afaaae61d4d983c6dcd2ea2841c06d5378b72ba7 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMq2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?h6dRZUsYuk3v3k z+J&Dx=qP+-b=+gY{X|JH-61CA(a+2U5@C--JeXW;oYfe*Pfj|TbXk55&{PIbS3j3^ HP6LAR)1|)kH2buyY$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%u1Od5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|80+w{G(j&jGsVi%$jQ~h(b>ew*~QJ!(8bNdz{J?a7%1p!WNBz( zW&+delAm0fo0?Yw)0=|OYl>4ZC@JI?0Bv?jEy^rQO>ryA&s6|>*(wu@TTD%yT-}T; z+;Ex))tiFFEfBqy1~~QV10ACeiddwGh6w>v4~Pj*wm=R%;iu*SQ+p9GSvN1Yj0ffx zbx#+^kcwMxrtkHZE|fU_UT=EFy(=cmwkTfYYn;UqrW@4Sq|n;p^_yKp@vKs#&s{6a z8B4j|K1fnb@oo=zwMMo}lEs(n;KG&7TVr`Pnrt+C_IK@lcd1)TqD;iA_`VT2ohPJ&6fh;q;?spESegWtTIv)6>CN6Yx5p#tI;lKI<#xwzIE1icKdE#y?Qjm zM5^t1y}bJbj*q1|y%E*__bPN9RbuB@w|MbmmSu|Z4{R$oHLP`-k|irI|9@SGR{tx5 zvuqhntGk%Q`Pz3E@0>I1+ljmT*U8Jse0lr+efMKa6nhi%NZq+~X;Nx=`FF?S zd#z52>`Tt-bZui}Vw`;cef^Hjn~Uc^-jTgTNG1O3D%F4|cLlqWN~@}V`EpBD8|I#U z{#nMPt|B${si4}#-2#-PtP=-6T)7gGke8>|!@qJ1ubx=< z%4g4?zgGin#SZ@w*i ze(l;c_qAcgGcNiaQ({`>udrP5-O0yRQw_K+#H`jRd92D}l9iRMmE~cZAFMBKGW9@o zR7Ka~Jxcke?e9&Bci**}ep*!Zd2W9G>-4m=d5qK4*I$;Lk;Jp3OjKJhL+IFbtylM~ z_$6*0J9ex{+Zd7bA!^0;?csHC7CZ~O zDs1f94leL9Xl`zPUsY8#<%3*z|J22f^@}EKUp;j~L$;=mcxI?C!_{SS-n(XJ9aow2 p>$u~k`qeDzpkx}u{VlkGk-@^yy|QWB-7lbO#M9N!Wt~$(69B)~nr;99 literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/bg-quick.png b/admin-dev/themes/origins/bg-quick.png new file mode 100644 index 0000000000000000000000000000000000000000..4acbb75b44b2a4c948a7b943fe8b2318af9f29c0 GIT binary patch literal 1620 zcmaJ>eM}Q)7(Y>g>G+s)6%fsNpd*vE*A`mZaWH79Rz0i*CSlrHdIwZ#uiTyVBhCPu zaY&fDxf;c($nYb?GKD}?e5LvWIL*hUJMr7ikLa)ij zRk#MT-$QWY_=@8*eshv|Df*%*3;G1_XL^{(A`2 zVF>8KKv5+n{rb6~a>7Q&#A$KeU0L?Tfn$cK3_7v^($d^S%c5%4823{EbH ziAG{s5|vCo8H@1{D2Jwv5-!(dGI2}-4nbyfd1A5Ht-IZcF`lt3onCnhEF#k?qCl!q%L zv|IJKf%b5**W9FOx$aTW8=1&5oYdvxn4Bc^;6%w1-SoL6POCS`#iq|iIxUyWB*S%I z?7uGBbHq%Kdpk9@j59U(xPh5=k{Rn|e!k5B;B{FcOGq_$4wUh7Le_;gAF;MYg@_ZW zW!`O9da$CU!5_`cn!BVA!UQK{ik0gV&d&OhlUyIZLs=xX?F;oE+*5w*TdI0dZDmG? zDgvqS4u2Wnrjn$cH2ZW1jGbI-eERg+aF-Mv9UWcbT`=5tVDAk0y*&#)Py-+r@L2CX z^%%82(r+BXSdyM-(36RonfzyR~PQSBwGIUsxL}b zf441ee3y;L84Be7bh>fFosyCgul=?got>Q>EiEm684LO{)SZjNt2#FS+)t1ESlNr; z${h(kJ(p%ba=FOz53BUMj$ID*_o=y+d+ovF3+vOKlpl-8sOmVlTVAm_V*c~u&wp^h zr7kVKeP`LqaPo=u6Y8cTB_-t=#^*f`{dF)uxcKTo{@<5sYHD)9Ku2@w%%Has&HTLj zy1IM$=La8@t}Ys5)sM4}uBhs0VX;_oM-Cm@XS3O485iZvn|fN$U%YrYS6H@tBj>kI z4;%=lD%#ALuxz|5dBY-RwYLjfeQG&D*^dv(Uj*ESN-NSMQ!e7vor0;Bcn<2#*zCD^NQ>?w)aPHsJCCEK|0ik@4ZTw!Z-b XI~MnDAWy6jy5D(4QnJjRxT)wL7Fu^= literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/bg-subtab.png b/admin-dev/themes/origins/bg-subtab.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc1b1180b124baa5efc8cbe4107abd12c36a3cd GIT binary patch literal 249 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 n`Cslo_>b!|KKK#^`U|r{J>|Mz@<{RDe-Q&U>c zv7h@-A}f&3S>O>_%)r2R7=#&*=dVZs3QCr^MwA5SrJ~QNf6c!~W8IcR ztrPDvyZ&ju;9KX@XZt!YUFqCm6Je^P7P{KW=Kao<6?#^zo%z8-myt)U}I|@caU|5Dg z^^rS=fga;5@Q5sCVBk9h!i=ICUJXD&$r9IylHmNblJdl&REB`W%)AmkKi3e2GGjec zJyXxFKM#P4ls#P>LnOkJAEYVp?3A#Ow2-*5a6)h6)W+6ENv@d^5|R@b7_8YDWyCl8 RN&=NLc)I$ztaD0e0ss{$Ok4l} literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/header_module.png b/admin-dev/themes/origins/header_module.png new file mode 100644 index 0000000000000000000000000000000000000000..afaaae61d4d983c6dcd2ea2841c06d5378b72ba7 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMq2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?h6dRZUsYuk3v3k z+J&Dx=qP+-b=+gY{X|JH-61CA(a+2U5@C--JeXW;oYfe*Pfj|TbXk55&{PIbS3j3^ HP6KCu4Vaa6X#ZuJfo?2}ll&YCgZ($$7np|b>p1>NBW$v257M!JGAI=_I zuIiP_8JNc@smACM$7UVG=AXmvmB#KHr)})P5}3!6P-5;AryiYQYwjWuk|$x{!mOan zY~smc?9S{Q!xV%Qmue&kg&dz0$52&wylyQNJ0T* zr*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|Tv zNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-h znc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&` zn+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b( zKe;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A( zn_hEcV^cFzBXcKbH=r3VZWab6#xBN2POh#-mWC!~aJ`;+#U+V($*C}VGlBL(^_t<; zYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf%3ciWSnRy^SD0(2ibxAGCEK5ysE6UGR z0Ee$tCKme*ObPiLqBn({Fw+M*MjwIxnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3 zVE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($KCu4Vaa6X#ZuJfo?2}ll&YCgZ($$7np|b>p1>NBW$v257M!JGAI=_I zuIiP_8JNc@smACM$7UVG=AXmvmB#KHr)})P5}3!6P-5;AryiYQYwjWuk|$x{!mOan zY~smc?9S{Q!xV%Qmue&kg&dz0$52&wylyQNJ0T* zr*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|Tv zNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-h znc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&` zn+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b( zKe;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A( zn_hEcV^cFzBXcKbH=r3VZWab6#xBN2POh#-mWC!~aJ`;+#U+V($*C}VGlBL(^_t<; zYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf%3ciWSnRy^SD0(2ibxAGCEK5ysE6UGR z0Ee$tCKme*ObPiLqBn({Fw+M*MjwIxnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3 zVE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($R<{ZUo?#momtmK!?;hxA^-tAx3=^v6Smso0QD=99tZoxx!l$lBPS zBCE}m(O@C3!{iX46qwH*maAwN%HtHp>Ke=Mk<6}Qz^-M@oLlYdk-#Od%Vg=#Y8%R8 z;ma(m#c1ro>>R@unlEb`!eSG|o!{!>8?TXAt?Qk^rftn);w+qAW9^a5s&38{RjBF` z$L5*DC8NO@n9u2*#;t9`9ABpIpUZCM#S&Gb5Lm$J63Z*4#@IAD-aS^(#!JpQSjjm^ z)ySPWxQK&c5CFyh+!4M33NDEyi9p)MzM>#8IXksPAt^OIGtXA({qFrr3YjUkO5vuy z2EGN(sTr9bRYj@6RemAKRoTgwDN6Qs3N{s16}bhusU?XD6}dTi#a0!zN{K1?NvT#q zHb_`sNdc^+B->WW5hS4iveP-gC{@8!&po2Tt~skz|cV7z)0WF zNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3jrH=2()A53EiFN2 z7#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$AbT4JjNbScCOxdpzyaD(%T z^}rs|OU}>LuShJ=H`FuG&&>t-3#_`hBq$Z(46Le)Ln;eW^@CE2^Gl18Q-R8rVVZ$q zhu9>lAm0fo0?bR>0+w{l+jDcOtCUBu`n<+G&eCYH!?7@Ff??u zFmSbSb9HjIv^2JKGcbXfflaTuv5~o>iIba?vm4M17dHz76Jr-+BPUl^BTGXQGq_&Q zyyB9?yyR4vy_rCJp?ZN9;n8d5T$Gwvl3x^(pPvIu0Rb8LCHch}`2`Bj!KMnniOHFH zAU-I1Aii};Ey^rQO>ryA&s6}2uT>@%`wdJ9`5U4)g`6HM;rzL?XHK6wdE)r7qel)OI(T6JzP)>P@7lRz`?jrHHgDRv zVg0(bYgVsXxnlXUrArnsTDV~Tyt#8`&zd=7`n0K2CQq6;p}()Ur@O1OqrI)QrMaoG zp}wxRrn;)KqP(oMq`0WCAU`iRCp#-MBRwrOB{?ZEAwDiPCORrIB0MZKBseHAz~9f; z$J@)(!`;o*#o5Wx!QRf+#@fo#!raW%#MlU!E%kJDw6!!f)YVi~l$8_}ZD)SlG=QV^hHMg|3wRd!O zbvyC$8nCg+=_vSgXjpgpcLeB4xN358+BGY7n6n${am(m?1X+bJbTCSJirTo@8@s4% z+QKK+D#*XTosm!7go{gn+g9yZ8zYC1c#|wUllP@oMkXFdNmD;2R+hUh_q{9~RE6E2 zzihrA%RLJR_!4_D+8IZ^Bm(5}9!5mb;scz0BtHtP_!=6!V?wQK& z9LuI*$!g)tEUCii6wT_HC~ROa=pCc(87t!&&lZ#=nNVo$lf~hk&K8ttVi(5dm(67t z!s{L<>X*f98_ca?&gzrFmQZBto2cR%E^Fk>R@uk*}`rz#W*+ z=@BWf=fL8X#-7n&5nRN?;Zqle1Gx6p~WYGxKbf-tXS8 zq>!0ns}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKGr(jcIRgqhen_7~nP?4LHS8P>b ztCX0MpOk6^WP^nDl@!2AO0sR096=HaAUmD&i&7O#^$c{A4a^J_%nbDmjZMtW&2GK4GRy>*)Z*l#%z~24{5%DaiHS-1r6smXK$k+i zkXzvE3pY5gSP$$Wz2y8{{ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@TIKQ+g zITff}8KxN+cK9s?JgIrW98(0$8jSz{{r&U%*Uul{zkU7k`P0V_@87+B^ZM1x7tfzP zee(Fx!w2{8-Mw@B*3BE&uU)-z`O?J;=g*xzbNbZD6UUDoJ#zTa!2|pE?cK9`*UlZ= zw{6|BdDF%X>({MavwGFa70Z_`U9x!5!Ugl^&7CuQ*322xr%jzQdD6rQ{e8VX-Cdm> z?QN|s%}tFB^>wv1)m4=h1nAc$w`R`@o}*+(NU2R;bEa6 z!9jrm{(inb-d>&_?ryFw&Q6XF_I9>5)>f7l=4PfQ#zw$wsi&)>t);1EF>tv&&SKd&Be*V&c@2Z%*4pRp!kyoNSZL{fXX6JnaRLbl(>5PC;$?Z>Kvlc9`QM35v4+Od zehxOdA_Gx2Jsu5j4t7=nmP8f-R(1||UOpa1W`+y~W=U;6UN>1rri|swnHUw^l(~#H QY}~{pUcPO+w}X72L;=RfD(b55h%sY5X_ zOUyb1SXH%o4FS$PZN8?NV+j|*R<^N?W9blCI=MP8Tie31bx*N`1S&TNZDqT$GB?hj zRhRGTEwKTf(O0Ih^U-Ee+Y-ba6l(7wKB~DwiOZcH6o{3p8SDxY*z=mCVg!{g0#i zs4(pDL3WJBn7_fCPGXThoQ8Vwr9{FgJ-mC56e6NVX-MrsJV_fKBV5B29vt?zMTYw# zXjE!8L58$G9Z$w_8iUgD{zOWjHcGK5*^BF$d2Sn)LgNs+&nUIz4xpT-jihi$Eko)f zhz5Z)a+zGI(rUGJkOGk-Frt9vih8+LuTbw^$emuHI$&SbbTUKGhxAwry>-QqzN(so)A#gmNi)$R6q67HfZk!OEY8y)8Z~#w{15^ZO;58Fu z=I%}|lmjx}=vyg*c@(VQPDTdec!GA@jZ)@B7A2y3M5ROIa;*x{DiDoMF1P3qhtBD+ z+E7%9IuX@`jT3RTN~Kn#Qd_JxCu76z)FCRRU8%4-912vf(oAyQi4=_`BKU+Z!RQ|6 zq9^6*Z4{2tB-KWe{Sz7Bi;*;$ijhgk7F0tXEJ7r5>)i7ki`I@)#Bx09q{uile!qI+ z1p0{j-{L;TjsBNAgBfSwTyp#)Sthoa49ra@Q=eH(77w0aDu!Z8Bk$;+fBgR2uSb6Q z`KKR$`2M?Zzd8K%S6_bd`DdSga_HlaKK$U|`|rK`&f9Oj`Nr$7z52?_FTHr+h3B7p z_L--j+W+Jek3aV4zP*n;yyu|@AJ~2WeY@_xXXo8_-MQnA+i$z|mYcWVbmI-zUw7>_ zS6{X5$}29v?9#1UF4=tXMHgPMY2*1D&O3K({kpYlMzgC|jbzSQdG=W=&OBpyC_T7* zfKE}%l4K&@-*-9@Te<{~MtZTH#fwe@-CdpGP)B=PFyQyKdOa=8O>S4C(_yz+Eep*i zqoF~M>a-fQN~vJVQdVELp!U@H^XAT(T_dfAW}Py#YDT4Gdd0MIaoN;TQAzQXBB7wL zfY0M{*!fH+t3JYEzJOJi>uI^3&*JY~2{I$AR%b`otX;Prbh9=zjg4@Niwn7%G8Qlw zRAjHU77qfrN&agJ_T@KkS}nJw$`$Dl;lkn0`YwHr~~kT4(P#5pqL}_XB+E+ zz{YO~w2b&VvvN=crXauzf$}0#W!9{ffT9vU8Ulq2!K`dEuqSuy#d({>VCz^x&puJM pta{h3Z3i;zH(IRe>C((X3(6^T`3?r=6s{`Y64(y*Q$C2*@E7e{0;T`} literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/img/t/AdminModules.gif b/admin-dev/themes/origins/img/t/AdminModules.gif new file mode 100644 index 0000000000000000000000000000000000000000..2104e0bed91fad53006e5889705b14bcd36ec799 GIT binary patch literal 1461 zcmZ?wbhEHb6k!lyxN6G~RLB{a&+eDS5s=5OW5?u^#bM#c99Y2Vk;3km%^{`E=$$MU zkS*+&pyeH_>KCu4Vaa6X#ZuJfo?2}ll&YCgZ($$7np|b>p1>NBW$v257M!JGAI=_I zuIiP_8JNc@smACM$7UVG=AXmvmB#KHr)})P5}3!6P-5;AryiYQYwjWuk|$x{!mOan zY~smc?9S{Q!xV%Qmue&kg&dz0$52&wylyQNJ0T* zr*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|Tv zNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-h znc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&` zn+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b( zKe;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A( zn_hEcV^cFzBXcKbH=r3VZWab6#xBN2POh#-mWC!~aJ`;+#U+V($*C}VGlBL(^_t<; zYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf%3ciWSnRy^SD0(2ibxAGCEK5ysE6UGR z0Ee$tCKme*ObPiLqBn({Fw+M*MjwIxnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3 zVE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($^ux>E5YqoIeuy*dU@oaYXZguhPaP#l>@SN!AH{C6$%O|kcE2!T)tluwW zl3(~#|B(4U;S&NPrvye$4~(528aX2{c4k=2tdN-5Au)49qL&B8EC^1VADJ{iI(J%H z-qf`G=^42*QuAh~70k>in4M8LFEe3bMADMT)P=FBi(=B3$0e>0&sY|pu{JJkTTIsC z#OxJG*=rJWRwU)ENX=WFlDjrJdrv~af{fyYStU!eOPA&rtWGanmtMFkqhe)V?&>BUDLj|rej-u)A6#F)0J&!DmxC;c5QFy+tV_8&&1jLCiEX{nQ*vu(&6@L zC%R@G@1J?HcjlSi+2{M`9hf}t;Ns>)~tL4&T^*^u~^( zH+LMnwe#flJtuDOK6!i3sT+Gw-`aQL&hC@<_ME=E@6`RhXKwF5dvE{g2m8+6IdJao z!E^Typ1*(S!h^#XA0EE==*XpqM=m`&`snG^C(o`ueSZDf^Bd2f-+cZ8h;F?AqL;TA zMjlZ7$->OQ5X+zg@;WF_FmOC$*v%p1u_0l4&{DTfF4j}Q>b_GoT$N6ooVq$pB64li zQm?BDO*11nxmZs4%iC3ddZ3ux-h04%^}7kbS~4#!cJ1I=Yxu-l?Cv6zsWMKGErD<_+fmG_m$7wv%G`+&^yl8mBs2rTnC+aA? z?9?QA3zwb^2`-I`T;gASX>d|;?-iCaYgiz_+~{E1QsN=GsoAwtK*q?VA<-d0%0M$` zfx<;c=T=TWi7g5aADXAC`%aQsXy|;5Tbzj_X@>&ip(Yj%J`o84hK7TWPfX_K;b5=^ E03CFPcK`qY literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/img/t/AdminOrders.gif b/admin-dev/themes/origins/img/t/AdminOrders.gif new file mode 100644 index 0000000000000000000000000000000000000000..92067bd9e75dd2a96f95a39a2ccdfedb118771ad GIT binary patch literal 1449 zcmZ?wbhEHb6k!lyxT?qC7|9w~z-b%GqF}&S+T|Nm!08;rX5q)IVaX(=#%S!pZ05yc z;KHn7#pIL8A*02ZSfi_K#28c{P}Jt>8?Rc`8)WJ%?UBr`X3C^v$5h-B=p4hMZOi1D z%5Lt>;-AAFkj-!5DWqt?D5=J1?!yw6tFCU&WF5p}AHnJrAg}Mltf0%}nZh1i#KAxo zQ2fsw;Txdfl30=mq;2dg3KEmEQ%e+*Qqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Y zlp0*+7m{3+ootz+WN)WnQ(;w+TacStlBiITo0C^;Rbi`?n3A8AY6WD2g!Ppaz)DK8 zZIv8B5(*$Yo%4%Q6-@OEbdwFt3>3@^^$d+o%+1Yp6pRcE4fG9+^bL)44b82LjjRj| z6rex}Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M(T(8_%FTW^V-_X+15@d#vkuFe$ZgFK^ zNn(X=Ua>OF1ees}><76{9OHt z!~%UoJp=vRT#&!Os*6j4QW4I;s=7F&vLIDID784hv?w_hs9YJQ85nl>EdnV7y2i@C zC=(bdi8(I$$)&lec_p4Mwn{)5y_C!pD+3b?14Bb|69aQ212YRlLq`h(R|_{+Cud7b zV@o#!6POv;^qLzRIht9zIXgMK0nKo6voJ6*b}=?`a&-EelE=kNwPKDW< z3A7ig*9os)E9aur#FG4?ko^1{SPBTp$S=t+&d4uNa1J(A@J&q4%meX3(F5_VOKMSO zS!#+~QGTuhIDD-#vDj~5O32?3y(#2`nLf}l`k=&tlvrRwz!V5#!jnFb1J69EdB7Y~ z1k4(Y|Ns5{^ZVD&AK$-y{qp(K#}Dt{y?yig)yo&ppFMr@_|d}$_wU`kbNklK8`rO0 zy>j`|#S7=pojr5<)X5Xaj~zX7_|U-v`}ghLvwPRh9ox5U-LiSp#trM&tzENv)yfsi zmn~hgc+tWI^XJW-Gkey|8PlgtoicgS#0mXjScm6wKdgMl@;Y> zr6t8hg$4O}xjETcnHlM6sVT`xi3#y>u`$t6krClxp&`LRfdT%0zCPYwo*wRQt}f0_ zjt=&Awl>yQmKNq_rY6Qlz-+0ftD~)@siCf>s-moDIqQrZU=09%*31L| literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/img/t/AdminPayment.gif b/admin-dev/themes/origins/img/t/AdminPayment.gif new file mode 100644 index 0000000000000000000000000000000000000000..89de86e3c6fca77c6023487cf2e395f045f87bbf GIT binary patch literal 1322 zcmZ?wbhEHb6k!lyI3mlS=g1_Z!RVgIs_(??6v?M!$7JCxU>hK;ZN+96D4bg8>l!WW z6v?A)%cO43lv?Cx?kQm5C1mN#?Gh!VZpmcn%V+5=q;1V*=_O?1&ZBI^=n}^!tHsCw z1B(B-BYXoCToOwXfwYZ%ML}Y6c4~=2Qfhi;o~_dR-TRdkGE;1o!cBb*d<&dYGcrA@ zic*8C{6dnevXd=SlxV%Qmue&kg&dz0$52& zwylyQNJ0T*r*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5 zfdUjL0c|TvNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@Haa zD@m--%_~-hnc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;- zkyxN_sAr&`n+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL z7i9t?B{9b(Ke;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%` zX>93cU;;A(n_hEcBWH7S3sWa&H=r3VZWab6#xBN2POh#-mWC!~aJ`;+#U+V($*C}V zGlBL(^_t+-Yvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf%3ciWSnRy^SD0(2ibxAGC zEK5ysE6UGR0Ee$tCKme*ObPiLqBn({Fw+M*MjwIxnujbty?y4+PGo;y0vRouUffc z`Ld-;7B5=3VE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)( z$;xncUu zjT1B(XDuk;STRGQski8)h=7mqwL?>0m@qUr9xO4CjF6bzDr%^yvDxJK$AX>rKkS$z I!o*+=09qG3D{A4#9GI@^5iO@<$7JBl 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 C49}hb literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/img/t/AdminStockMvt.gif b/admin-dev/themes/origins/img/t/AdminStockMvt.gif new file mode 100755 index 0000000000000000000000000000000000000000..2a85c456cf8fff5023155d8bd8aed23ed6ab7e1c GIT binary patch literal 1709 zcmZ?wbhEHb6k!lyc;?UGk-{F3%Wf0GBCo>~RLJR-#vYYx;GW1Dl&RpK!yZ?z;S$HD zY{cl1%7m(3BGW8j&}?w-Kv8L4UM&uSgW>Kf1H6wMlxuAykaSk&eon9rWy z;^Z8|mfz|msm5sJ%IuTDrl89dmZ|TP#ZlbhDXYaOtIcQ~#9|-8Y8%3$W5*Pbs%+rG zZ0yS6n<^2QA*b)a**qyJxz-@4fHS^KKRnwYvP@Fj7N|@$BugbQTT;P*F}_kgC{@QP zRKh<^);5$Sq)5myk~O|cJ-$@mF-$17RKp{gHLgMHY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C z$yM3OmMKd1b_zBXRu#Dgxv3?I3Kh9IdBs*0wn~X9`AMl(KsHENUr7P1q$Jx`$q^)> z0J76LzbI9~RL?*+*}%*|!OT$4(AdP>++0V&$iUD*-@r)U&`8(N+{)O<%D_MY3Y37h z6{VzE1-ZCE?E>;_l`=|73as??%gf94%8m8%i_-NCEiElUW*8ai0#)c1SLT%@R_Nvx zE5l51Ni9w;$}A|!%+FH*nV6WAUs__T1av9H3%LcpzHo!{iuJ%A(o4?I)vrh_&^OdG z(9g{U`3tPNxFjeQ;S8**i$f|4QuTvUi}Op1l2d`om0_BJVTa!$kV2qqto(~IfsvA! zP;G0~2ExV$P$&N=+=uFAB-e&w-_YfQ9{rvI$+t)9jKYjf0{@vR*uV1}<@%-7-CyyUJd~pBX-8;8$-Mn%A+SMzU zFI~KF{@mF!r%#aDv3%Lm zC5sm=Trhv$+&Qyn&73iP+SDnNCrzBt-`CsI-PPIA-qzaE+|<}mUsqdGT~%38URGLC zTvS+)pO>4Hot2r9o|c-DoRpXl9~T=F9Tgc79u^uB926Mf@8|2|?d9p=?&j*^?BwWR zZ)a;`ZDna;Zf0s?Yy`}fdb&E=TACW_YN{&AN{R~daM-~8?Rc`8)WJ%?UBr`X3C^v$5h-B=p4hMZOi1D z%5Lt>;-AAFkj-!5DWqt?D5=J1?!yw6tFCU&WF5p}AHnJrAg}Mltf0%}nZh1i#KAxo zQ2fsw;Txdfl30=mq;2dg3KEmEQ%e+*Qqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Y zlp0*+7m{3+ootz+WN)WnQ(;w+TacStlBiITo0C^;Rbi`?n3A8AY6WD2g!Ppaz)DK8 zZIv8B5(*$Yo%4%Q6-@OEbdwFt3>3@^^$d+o%+1Yp6pRcE4fG9+^bL)44b82LjjRj| z6rex}Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M(T(8_%FTW^V-_X+15@d#vkuFe$ZgFK^ zNn(X=Ua>OF1ees}><76{9OHt z!~%UoJp=vRT#&!Os*6j4QW4I;s=7F&vLIDID784hv?w_hs9YJQ85nl>EdnV7y2i@C zC=(bdi8(I$$)&lec_p4Mwn{)5y_C!pD+3b?14Bb|69aQ212YRlLq`h(R|_{+Cud7b zV@o#!6POv;^qLzRIht9zIXgMK0nKo6voJ6*b}=?`a&-EelE=kNwPKDW< z3A7ig*9os)E9aur#FG4?ko^1{SPBTp$S=t+&d4uNa1J(A@J&q4%meX3(F5_VOKMSO zS!#+~QGTuhIDD-#vDj~5O32?3y(#2`nLf}l`k=&tlvrRwz!V5#!jnFb1J69EdB7Y~ z1k4(Y|Ns5{^ZVD&AK$-y{qp(K#}Dt{y?yig)yo&ppFMr@_|d}$_wU`kbNklK8`rO0 zy>j`|#S7=pojr5<)X5Xaj~zX7_|U-v`}ghLvwPRh9ox5U-LiSp#trM&tzENv)yfsi zmn~hgc+tWI^XJW-Gkey|8PlgtoicgS#0mXjScm6wKdgMl@;Y> zr6t8hg$4O}xjETcnHlM6sVT`xi3#y>u`$t6krClxp&`LRfdT%0zCPYwo*wRQt}f0_ zjt=&Awl>yQmKNq_rY6Qlz-+0ftD~)@siCf>s-moDIqQrZU=09%*31L| literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/img/t/AdminTools.gif b/admin-dev/themes/origins/img/t/AdminTools.gif new file mode 100644 index 0000000000000000000000000000000000000000..d875d9167928d980b5900cd54ac06a7d7824d063 GIT binary patch literal 1658 zcmZ?wbhEHb6k!lyc;?LDp1`VO%NA3rp=Hf%7sh7f%IuTL<`l*17|Ckj!WxmUZXeEN z?#YvN*62}%%BrmSSsBFZjZpIptp< zreV&Okmsgu#_W|WU>V4&ZN(OnCmWE*o=|EUkjt)R#pV<)7M5mW6U?G!%48S9;T+4R zY{=vi!|f3-!7wy|;(zW4-v9-d#F9iHZDU_ikeHmETB4AYnx2_wtMq>NekFy>6kDZm zQ(pt$0_W6>OpmIf)Zi+=kmRcDWXlvKdpiZ23ag6Tg51=SM1_jnoV;SI3R|Vbl>DSr zDrlU}Ruupl@KL zZ)l`zXl`X}WMyEW00l}w+lo@stb$zJpmqUywn`Z#B?VUc`sL;2dgaD?`9*7iAWdWaj57fJ{tG$}cUkRRX#c;)UD-UthSv zdBu8Q59uZ6=jvA^7U&!58R+Ncg8T(mU0f2Bif{&2)x{x|1*!T$sm1xFMaii^<;pP4 zz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JJiY7#fLwm{}Ma zI$9XGTDZA7Ia^v9Te=yTz|6p=*WB3H+|0zx$jR9aXoicMg@K8&i?NZDtE-Wvp@|t> zuV-FyNn&1dD$L$YpuJGNhIsW_ITxiSmgE}YRmZE0?5 zY^blRt*Nf6tSB!lEh#Q4EXdEx&B@Nn%t%j5O-W8lOo)$*jfswmj0g`44G9hk4Dk2! z_3`%d^l*1`b#Zobbg;LxwXwFcv@ka_H8C~(lh;%=G5U_36;{>Cg4+ z()H=i_3F^|?A7$?&h+QXA^8LW00000EC2ui05<>~000ESu*pfQy*O*ZyZ>M)j$~<` z=vS<4>%MR-&vb3yuA=XJ@BhG{kU%UNkI1BQ$!t2G&?93?ty-_xtagj&dcWYXcuX!Q z&gisy&2GEji@1DFuiNkVykpPr`~QG}f`bEvhKGoWii?bmj*pO$hz69EmY0~Bnwy-R zo}ZwX0i&d)rl+W>s;jK6uCK7MvaJubwzs&sy1Tr+2fx6dFX%FDt4&d<=% b($mz{*4NnC+S}aS-rwNi;^XAy(GdVU);y|O literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/searchbar.png b/admin-dev/themes/origins/searchbar.png new file mode 100644 index 0000000000000000000000000000000000000000..26b93aeefd2aaa58bf0bff6e41ad2f05ff1b92f1 GIT binary patch literal 2446 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 literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/searchbutton.png b/admin-dev/themes/origins/searchbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..31327bf89451c57b37f3cc2838285c5730da83e1 GIT binary patch literal 930 zcmV;T16}-yP)N2bPDNB8 zb~7$DE;UJt{NMlp10P95K~!i%?c2*w6Hycf@L558Y*~O1)0m-!&_YCoR2m=+E}F3L z58!WAK^`s7Lf<@91PY3YPogoO=bOkS(;_`_eHLGubUK?~&b{Z(oYafQ<47bD=#NJc z>FYpG>@K>ZZI%WDy3oguM&SECB9REZWHO1q!TazZwWGH28po9!&i7U<4F+_f51ssh zdx*ti@Px|SUR%cb?h4L!mT|hBwKN#eg+6qmSAW8X7ai)v-sU_$%7qiT!E&=sT%vtBbeP2tdqUUc)=96s!<;JBK#C=KXEw*c>Kdl^U7C5zI4UJj3C z_`bYkQ5w+8;niz79F`X?N&|X1ypw7UZ%Ydnr2)Mh-f<<1H^l{u(tutL@2H%`eqr9C zG@zHmW3$-b5vw z9D9tZsVSt>X?Qlb)y=3|&TYR|CxPNPP_Q%^hzotLo!cV+7wkYjtCl7My0ECkDKxkJ zeu=d&7cDm%h!wru+%`}qTE)`RfKKA&=C;8NyB4*9c)4d=Y#N*zjzuP3S9n~uR(W~@ z@w&ph?6h`7(H+yoD_nU7r-P$YQ{|Q9ON-7RRC#iGzNlHW27C&;TDDS(KLyXCGvJd( zsA2pTO^eQek7%LFyO2%LqB96ro-~SYa%#5d4A@v*<#D6@C8uVK&VXJayf2jrSab$W zc%RGTu;>gN9_NpILrSh4Gr-n3K9w_;76yc)S7>g_{f-xc>RWqm zX*3WQ`q1gxxov%GCRo1wktJ+E7y8)T_CNj-d)?gj51Usjj?Zhf!2kdN07*qoM6N<$ Ef)>@THUIzs literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/separator_subnav.png b/admin-dev/themes/origins/separator_subnav.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2a18ad086ee123a9befdd528beaa7b35df93b7 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ec!3HFkTfSKYq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6-jxzIEGZ*O8WQze|^)02@@EFnMHW&*c=)d8CGjBzqPsc RL^YHHF=I!wA?BVR{-s0=--RJE8<&@gy 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 G0suR2Xq&nK literal 0 HcmV?d00001 diff --git a/admin-dev/themes/origins/thead.png b/admin-dev/themes/origins/thead.png new file mode 100644 index 0000000000000000000000000000000000000000..afaaae61d4d983c6dcd2ea2841c06d5378b72ba7 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMq2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?h6dRZUsYuk3v3k z+J&Dx=qP+-b=+gY{X|JH-61CA(a+2U5@C--JeXW;oYfe*Pfj|TbXk55&{PIbS3j3^ HP6 +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_ADMIN_DIR', getcwd()); + +include(PS_ADMIN_DIR.'/../config/config.inc.php'); + +if (!class_exists('Cookie')) + exit(); + +$cookie = new Cookie('psAdmin', substr($_SERVER['SCRIPT_NAME'], strlen(__PS_BASE_URI__), -10)); +if (!$cookie->isLoggedBack()) + die; + +if (isset($_FILES['virtual_product_file']) AND is_uploaded_file($_FILES['virtual_product_file']['tmp_name']) AND +(isset($_FILES['virtual_product_file']['error']) AND !$_FILES['virtual_product_file']['error']) OR +(!empty($_FILES['virtual_product_file']['tmp_name']) AND $_FILES['virtual_product_file']['tmp_name'] != 'none')) +{ + $filename = $_FILES['virtual_product_file']['name']; + $file = $_FILES['virtual_product_file']['tmp_name']; + $newfilename = ProductDownload::getNewFilename(); + + if (!copy($file, _PS_DOWNLOAD_DIR_.$newfilename)) + { + header('HTTP/1.1 500 Error'); + echo ''; + } + @unlink($file); + + header('HTTP/1.1 200 OK'); + echo ''; +} +else +{ + header('HTTP/1.1 500 Error'); + echo ''; +} \ No newline at end of file diff --git a/attachment.php b/attachment.php new file mode 100644 index 000000000..e0b456151 --- /dev/null +++ b/attachment.php @@ -0,0 +1,38 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +require(dirname(__FILE__).'/init.php'); + +$a = new Attachment((int)(Tools::getValue('id_attachment')), (int)($cookie->id_lang)); + +header('Content-Transfer-Encoding: binary'); +header('Content-Type: '.$a->mime); +header('Content-Length: '.filesize(_PS_DOWNLOAD_DIR_.$a->file)); +header('Content-Disposition: attachment; filename="'.utf8_decode($a->file_name).'"'); +readfile(_PS_DOWNLOAD_DIR_.$a->file); +exit; \ No newline at end of file diff --git a/authentication.php b/authentication.php new file mode 100644 index 000000000..2d7d49039 --- /dev/null +++ b/authentication.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('AuthController')->run(); diff --git a/best-sales.php b/best-sales.php new file mode 100644 index 000000000..685b6b074 --- /dev/null +++ b/best-sales.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require_once(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('BestSalesController')->run(); diff --git a/cart.php b/cart.php new file mode 100644 index 000000000..2a3266376 --- /dev/null +++ b/cart.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require_once(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('CartController')->run(); diff --git a/category.php b/category.php new file mode 100644 index 000000000..6d83441e5 --- /dev/null +++ b/category.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('CategoryController')->run(); diff --git a/changecurrency.php b/changecurrency.php new file mode 100644 index 000000000..16158b5b1 --- /dev/null +++ b/changecurrency.php @@ -0,0 +1,39 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include(dirname(__FILE__).'/config/config.inc.php'); +include(dirname(__FILE__).'/init.php'); + +$currency = new Currency((int)(Tools::getValue('id_currency'))); +if (Validate::isLoadedObject($currency) AND !$currency->deleted) +{ + $cookie->id_currency = (int)($currency->id); + die('1'); +} +else + die('0'); + diff --git a/classes/.htaccess b/classes/.htaccess new file mode 100755 index 000000000..93169e4eb --- /dev/null +++ b/classes/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/classes/Address.php b/classes/Address.php new file mode 100644 index 000000000..44c282a9f --- /dev/null +++ b/classes/Address.php @@ -0,0 +1,315 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AddressCore extends ObjectModel +{ + /** @var integer Customer id which address belongs */ + public $id_customer = NULL; + + /** @var integer Manufacturer id which address belongs */ + public $id_manufacturer = NULL; + + /** @var integer Supplier id which address belongs */ + public $id_supplier = NULL; + + /** @var integer Country id */ + public $id_country; + + /** @var integer State id */ + public $id_state; + + /** @var string Country name */ + public $country; + + /** @var string Alias (eg. Home, Work...) */ + public $alias; + + /** @var string Company (optional) */ + public $company; + + /** @var string Lastname */ + public $lastname; + + /** @var string Firstname */ + public $firstname; + + /** @var string Address first line */ + public $address1; + + /** @var string Address second line (optional) */ + public $address2; + + /** @var string Postal code */ + public $postcode; + + /** @var string City */ + public $city; + + /** @var string Any other useful information */ + public $other; + + /** @var string Phone number */ + public $phone; + + /** @var string Mobile phone number */ + public $phone_mobile; + + /** @var string VAT number */ + public $vat_number; + + /** @var string DNI number */ + public $dni; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + /** @var boolean True if address has been deleted (staying in database as deleted) */ + public $deleted = 0; + + protected static $_idZones = array(); + protected static $_idCountries = array(); + + protected $fieldsRequired = array('id_country', 'alias', 'lastname', 'firstname', 'address1', 'city'); + protected $fieldsSize = array('alias' => 32, 'company' => 32, 'lastname' => 32, 'firstname' => 32, + 'address1' => 128, 'address2' => 128, 'postcode' => 12, 'city' => 64, + 'other' => 300, 'phone' => 16, 'phone_mobile' => 16, 'dni' => 16); + protected $fieldsValidate = array('id_customer' => 'isNullOrUnsignedId', 'id_manufacturer' => 'isNullOrUnsignedId', + 'id_supplier' => 'isNullOrUnsignedId', 'id_country' => 'isUnsignedId', 'id_state' => 'isNullOrUnsignedId', + 'alias' => 'isGenericName', 'company' => 'isGenericName', 'lastname' => 'isName','vat_number' => 'isGenericName', + 'firstname' => 'isName', 'address1' => 'isAddress', 'address2' => 'isAddress', 'postcode'=>'isPostCode', + 'city' => 'isCityName', 'other' => 'isMessage', + 'phone' => 'isPhoneNumber', 'phone_mobile' => 'isPhoneNumber', 'deleted' => 'isBool', 'dni' => 'isDniLite'); + + protected $table = 'address'; + protected $identifier = 'id_address'; + protected $_includeVars = array('addressType' => 'table'); + protected $_includeContainer = false; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'addresses', + 'fields' => array( + 'id_customer' => array('xlink_resource'=> 'customers'), + 'id_manufacturer' => array('xlink_resource'=> 'manufacturers'), + 'id_supplier' => array('xlink_resource'=> 'suppliers'), + 'id_country' => array('xlink_resource'=> 'countries'), + 'id_state' => array('xlink_resource'=> 'states'), + ), + ); + + /** + * Build an address + * + * @param integer $id_address Existing address id in order to load object (optional) + */ + public function __construct($id_address = NULL, $id_lang = NULL) + { + parent::__construct($id_address); + + /* Get and cache address country name */ + if ($this->id) + { + $result = Db::getInstance()->getRow('SELECT `name` FROM `'._DB_PREFIX_.'country_lang` + WHERE `id_country` = '.(int)($this->id_country).' + AND `id_lang` = '.($id_lang ? (int)($id_lang) : Configuration::get('PS_LANG_DEFAULT'))); + $this->country = $result['name']; + } + } + + public function add($autodate = true, $nullValues = false) + { + if (!parent::add($autodate, $nullValues)) + return false; + + if (Validate::isUnsignedId($this->id_customer)) + Customer::resetAddressCache($this->id_customer); + return true; + } + + public function delete() + { + if (Validate::isUnsignedId($this->id_customer)) + Customer::resetAddressCache($this->id_customer); + + if (!$this->isUsed()) + return parent::delete(); + else + { + $class = get_class($this); + $obj = new $class($this->id); + $obj->deleted = true; + return $obj->update(); + } + } + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_address'] = (int)($this->id); + $fields['id_customer'] = is_null($this->id_customer) ? 0 : (int)($this->id_customer); + $fields['id_manufacturer'] = is_null($this->id_manufacturer) ? 0 : (int)($this->id_manufacturer); + $fields['id_supplier'] = is_null($this->id_supplier) ? 0 : (int)($this->id_supplier); + $fields['id_country'] = (int)($this->id_country); + $fields['id_state'] = (int)($this->id_state); + $fields['alias'] = pSQL($this->alias); + $fields['company'] = pSQL($this->company); + $fields['lastname'] = pSQL($this->lastname); + $fields['firstname'] = pSQL($this->firstname); + $fields['address1'] = pSQL($this->address1); + $fields['address2'] = pSQL($this->address2); + $fields['postcode'] = pSQL($this->postcode); + $fields['city'] = pSQL($this->city); + $fields['other'] = pSQL($this->other); + $fields['phone'] = pSQL($this->phone); + $fields['phone_mobile'] = pSQL($this->phone_mobile); + $fields['vat_number'] = pSQL($this->vat_number); + $fields['dni'] = pSQL($this->dni); + $fields['deleted'] = (int)($this->deleted); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + public function validateControler($htmlentities = true) + { + $errors = parent::validateControler($htmlentities); + if (!Configuration::get('VATNUMBER_CHECKING')) + return $errors; + include_once(_PS_MODULE_DIR_.'vatnumber/vatnumber.php'); + if (class_exists('VatNumber', false)) + return array_merge($errors, VatNumber::WebServiceCheck($this->vat_number)); + return $errors; + } + /** + * Get zone id for a given address + * + * @param integer $id_address Address id for which we want to get zone id + * @return integer Zone id + */ + public static function getZoneById($id_address) + { + if (isset(self::$_idZones[$id_address])) + return self::$_idZones[$id_address]; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT s.`id_zone` AS id_zone_state, c.`id_zone` + FROM `'._DB_PREFIX_.'address` a + LEFT JOIN `'._DB_PREFIX_.'country` c ON c.`id_country` = a.`id_country` + LEFT JOIN `'._DB_PREFIX_.'state` s ON s.`id_state` = a.`id_state` + WHERE a.`id_address` = '.(int)($id_address)); + + self::$_idZones[$id_address] = (int)((int)($result['id_zone_state']) ? $result['id_zone_state'] : $result['id_zone']); + return self::$_idZones[$id_address]; + } + + /** + * Check if country is active for a given address + * + * @param integer $id_address Address id for which we want to get country status + * @return integer Country status + */ + public static function isCountryActiveById($id_address) + { + if (!$result = Db::getInstance()->getRow(' + SELECT c.`active` + FROM `'._DB_PREFIX_.'address` a + LEFT JOIN `'._DB_PREFIX_.'country` c ON c.`id_country` = a.`id_country` + WHERE a.`id_address` = '.(int)($id_address))) + return false; + return ($result['active']); + } + + /** + * Check if address is used (at least one order placed) + * + * @return integer Order count for this address + */ + public function isUsed() + { + $result = Db::getInstance()->getRow(' + SELECT COUNT(`id_order`) AS used + FROM `'._DB_PREFIX_.'orders` + WHERE `id_address_delivery` = '.(int)($this->id).' + OR `id_address_invoice` = '.(int)($this->id)); + + return isset($result['used']) ? $result['used'] : false; + } + + /** + * @param int $id_address + * @return int + * @deprecated + */ + static public function getManufacturerIdByAddress($id_address) + { + Tools::displayAsDeprecated(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_manufacturer` FROM `'._DB_PREFIX_.'address` + WHERE `id_address` = '.(int)($id_address)); + return isset($result['id_manufacturer']) ? $result['id_manufacturer'] : false; + } + + static public function getCountryAndState($id_address) + { + if (isset(self::$_idCountries[$id_address])) + return self::$_idCountries[$id_address]; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_country`, `id_state`, `vat_number`, `postcode` FROM `'._DB_PREFIX_.'address` + WHERE `id_address` = '.(int)($id_address)); + self::$_idCountries[$id_address] = $result; + return $result; + } + + /** + * Specify if an address is already in base + * + * @param $id_address Address id + * @return boolean + */ + static public function addressExists($id_address) + { + $row = Db::getInstance()->getRow(' + SELECT `id_address` + FROM '._DB_PREFIX_.'address a + WHERE a.`id_address` = '.(int)($id_address)); + + return isset($row['id_address']); + } + + static public function getFirstCustomerAddressId($id_customer, $active = true) + { + return Db::getInstance()->getValue(' + SELECT `id_address` + FROM `'._DB_PREFIX_.'address` + WHERE `id_customer` = '.(int)($id_customer).' AND `deleted` = 0'.($active ? ' AND `active` = 1' : '') + ); + } +} + diff --git a/classes/AdminTab.php b/classes/AdminTab.php new file mode 100644 index 000000000..1e04cb99d --- /dev/null +++ b/classes/AdminTab.php @@ -0,0 +1,1833 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class AdminTabCore +{ + /** @var integer Tab id */ + public $id = -1; + + /** @var string Associated table name */ + public $table; + + /** @var string Object identifier inside the associated table */ + protected $identifier = false; + + /** @var string Tab name */ + public $name; + + /** @var string Security token */ + public $token; + + /** @var boolean Automatically join language table if true */ + public $lang = false; + + /** @var boolean Tab Automatically displays edit/delete icons if true */ + public $edit = false; + + /** @var boolean Tab Automatically displays view icon if true */ + public $view = false; + + /** @var boolean Tab Automatically displays delete icon if true */ + public $delete = false; + + /** @var boolean Table records are not deleted but marked as deleted */ + public $deleted = false; + + /** @var boolean Tab Automatically displays duplicate icon if true */ + public $duplicate = false; + + /** @var boolean Content line is clickable if true */ + public $noLink = false; + + /** @var boolean select other required fields */ + public $requiredDatabase = false; + + /** @var boolean Tab Automatically displays '$color' as background color on listing if true */ + public $colorOnBackground = false; + + /** @var string Add fields into data query to display list */ + protected $_select; + + /** @var string Join tables into data query to display list */ + protected $_join; + + /** @var string Add conditions into data query to display list */ + protected $_where; + + /** @var string Group rows into data query to display list */ + protected $_group; + + /** @var string Having rows into data query to display list */ + protected $_having; + + /** @var array Name and directory where class image are located */ + public $fieldImageSettings = array(); + + /** @var string Image type */ + public $imageType = 'jpg'; + + /** @var array Fields to display in list */ + public $fieldsDisplay = array(); + + /** @var array Cache for query results */ + protected $_list = array(); + + /** @var integer Number of results in list */ + protected $_listTotal = 0; + + /** @var array WHERE clause determined by filter fields */ + protected $_filter; + + /** @var array Temporary SQL table WHERE clause determinated by filter fields */ + protected $_tmpTableFilter = ''; + + /** @var array Number of results in list per page (used in select field) */ + protected $_pagination = array(20, 50, 100, 300); + + /** @var string ORDER BY clause determined by field/arrows in list header */ + protected $_orderBy; + + /** @var string Default ORDER BY clause when $_orderBy is not defined */ + protected $_defaultOrderBy = false; + + /** @var string Order way (ASC, DESC) determined by arrows in list header */ + protected $_orderWay; + + /** @var integer Max image size for upload */ + protected $maxImageSize = 2000000; + + /** @var array Errors displayed after post processing */ + public $_errors = array(); + + /** @var array Confirmations displayed after post processing */ + protected $_conf; + + /** @var object Object corresponding to the tab */ + protected $_object = false; + + /** @var array tabAccess */ + public $tabAccess; + + /** @var string specificConfirmDelete */ + public $specificConfirmDelete = NULL; + + protected $identifiersDnd = array('id_product' => 'id_product', 'id_category' => 'id_category_to_move','id_cms_category' => 'id_cms_category_to_move', 'id_cms' => 'id_cms'); + + /** @var bool Redirect or not ater a creation */ + protected $_redirect = true; + + protected $_languages = NULL; + protected $_defaultFormLanguage = NULL; + + protected $_includeObj = array(); + protected $_includeVars = false; + protected $_includeContainer = true; + + public static $tabParenting = array( + 'AdminProducts' => 'AdminCatalog', + 'AdminCategories' => 'AdminCatalog', + 'AdminImageResize' => 'AdminImages', + 'AdminCMS' => 'AdminCMSContent', + 'AdminCMSCategories' => 'AdminCMSContent', + 'AdminOrdersStates' => 'AdminStatuses', + 'AdminAttributeGenerator' => 'AdminProducts', + 'AdminAttributes' => 'AdminAttributesGroups', + 'AdminFeaturesValues' => 'AdminFeatures', + 'AdminReturnStates' => 'AdminStatuses', + 'AdminStatsTab' => 'AdminStats' + ); + + public function __construct() + { + global $cookie; + + $this->id = Tab::getCurrentTabId(); + $this->_conf = array( + 1 => $this->l('Deletion successful'), 2 => $this->l('Selection successfully deleted'), + 3 => $this->l('Creation successful'), 4 => $this->l('Update successful'), + 5 => $this->l('Status update successful'), 6 => $this->l('Settings update successful'), + 7 => $this->l('Image successfully deleted'), 8 => $this->l('Module downloaded successfully'), + 9 => $this->l('Thumbnails successfully regenerated'), 10 => $this->l('Message sent to the customer'), + 11 => $this->l('Comment added'), 12 => $this->l('Module installed successfully'), + 13 => $this->l('Module uninstalled successfully'), 14 => $this->l('Language successfully copied'), + 15 => $this->l('Translations successfully added'), 16 => $this->l('Module transplanted successfully to hook'), + 17 => $this->l('Module removed successfully from hook'), 18 => $this->l('Upload successful'), + 19 => $this->l('Duplication completed successfully'), 20 => $this->l('Translation added successfully but the language has not been created'), + 21 => $this->l('Module reset successfully'), 22 => $this->l('Module deleted successfully'), + 23 => $this->l('Localization pack imported successfully'), 24 => $this->l('Refund Successful')); + if (!$this->identifier) $this->identifier = 'id_'.$this->table; + if (!$this->_defaultOrderBy) $this->_defaultOrderBy = $this->identifier; + $className = get_class($this); + if ($className == 'AdminCategories' OR $className == 'AdminProducts') + $className = 'AdminCatalog'; + $this->token = Tools::getAdminToken($className.(int)($this->id).(int)($cookie->id_employee)); + } + + + /** + * use translations files to replace english expression. + * + * @param mixed $string term or expression in english + * @param string $class + * @param boolan $addslashes if set to true, the return value will pass through addslashes(). Otherwise, stripslashes(). + * @param boolean $htmlentities if set to true(default), the return value will pass through htmlentities($string, ENT_QUOTES, 'utf-8') + * @return string the translation if available, or the english default text. + */ + protected function l($string, $class = 'AdminTab', $addslashes = FALSE, $htmlentities = TRUE) + { + // if the class is extended by a module, use modules/[module_name]/xx.php lang file + $currentClass = get_class($this); + if(Module::getModuleNameFromClass($currentClass)) + { + $string = str_replace('\'', '\\\'', $string); + return Module::findTranslation(Module::$classInModule[$currentClass], $string, $currentClass); + } + global $_LANGADM; + + if ($class == __CLASS__) + $class = 'AdminTab'; + + $key = md5(str_replace('\'', '\\\'', $string)); + $str = (key_exists(get_class($this).$key, $_LANGADM)) ? $_LANGADM[get_class($this).$key] : ((key_exists($class.$key, $_LANGADM)) ? $_LANGADM[$class.$key] : $string); + $str = $htmlentities ? htmlentities($str, ENT_QUOTES, 'utf-8') : $str; + return str_replace('"', '"', ($addslashes ? addslashes($str) : stripslashes($str))); + } + + /** + * Manage page display (form, list...) + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function display() + { + global $currentIndex, $cookie; + + // Include other tab in current tab + if ($this->includeSubTab('display', array('submitAdd2', 'add', 'update', 'view'))); + + // Include current tab + elseif ((Tools::getValue('submitAdd'.$this->table) AND sizeof($this->_errors)) OR isset($_GET['add'.$this->table])) + { + if ($this->tabAccess['add'] === '1') + { + $this->displayForm(); + if ($this->tabAccess['view']) + echo '

'.((Tools::getValue('back')) ? $this->l('Back') : $this->l('Back to list')).'
'; + } + else + echo $this->l('You do not have permission to add here'); + } + elseif (isset($_GET['update'.$this->table])) + { + if ($this->tabAccess['edit'] === '1' OR ($this->table == 'employee' AND $cookie->id_employee == Tools::getValue('id_employee'))) + { + $this->displayForm(); + if ($this->tabAccess['view']) + echo '

'.((Tools::getValue('back')) ? $this->l('Back') : $this->l('Back to list')).'
'; + } + else + echo $this->l('You do not have permission to edit here'); + } + elseif (isset($_GET['view'.$this->table])) + $this->{'view'.$this->table}(); + + else + { + $this->getList((int)($cookie->id_lang)); + $this->displayList(); + $this->displayOptionsList(); + $this->displayRequiredFields(); + $this->includeSubTab('display'); + } + } + + public function displayRequiredFields() + { + global $currentIndex; + if (!$this->tabAccess['add'] OR !$this->tabAccess['delete'] === '1' OR !$this->requiredDatabase) + return; + $rules = call_user_func_array(array($this->className, 'getValidationRules'), array($this->className)); + $required_class_fields = array($this->identifier); + foreach ($rules['required'] AS $required) + $required_class_fields[] = $required; + + + echo '
+ '.$this->l('Advanced parameters...').' + '; + } + + public function includeSubTab($methodname, $actions = array()) + { + if (!isset($this->_includeTab) OR !is_array($this->_includeTab)) + return ; + $key = 0; + foreach ($this->_includeTab as $subtab => $extraVars) + { + /* New tab loading */ + $classname = 'Admin'.$subtab; + if ($module = Db::getInstance()->getValue('SELECT `module` FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \''.pSQL($classname).'\'') AND file_exists(_PS_MODULE_DIR_.'/'.$module.'/'.$classname.'.php')) + include_once(_PS_MODULE_DIR_.'/'.$module.'/'.$classname.'.php'); + elseif (file_exists(PS_ADMIN_DIR.'/tabs/'.$classname.'.php')) + include_once('tabs/'.$classname.'.php'); + if (!isset($this->_includeObj[$key])) + $this->_includeObj[$key] = new $classname; + $adminTab = $this->_includeObj[$key]; + $adminTab->token = $this->token; + + /* Extra variables addition */ + if (!empty($extraVars) AND is_array($extraVars)) + foreach ($extraVars AS $varKey => $varValue) + $adminTab->$varKey = $varValue; + + /* Actions management */ + foreach ($actions as $action) + { + switch ($action) + { + + case 'submitAdd1': + if (Tools::getValue('submitAdd'.$adminTab->table)) + $ok_inc = true; + break; + case 'submitAdd2': + if (Tools::getValue('submitAdd'.$adminTab->table) AND sizeof($adminTab->_errors)) + $ok_inc = true; + break; + case 'submitDel': + if (Tools::getValue('submitDel'.$adminTab->table)) + $ok_inc = true; + break; + case 'submitFilter': + if (Tools::isSubmit('submitFilter'.$adminTab->table)) + $ok_inc = true; + case 'submitReset': + if (Tools::isSubmit('submitReset'.$adminTab->table)) + $ok_inc = true; + default: + if (isset($_GET[$action.$adminTab->table])) + $ok_inc = true; + } + } + $inc = false; + if ((isset($ok_inc) AND $ok_inc) OR !sizeof($actions)) + { + if (!$adminTab->viewAccess()) + { + echo Tools::displayError('Access denied'); + return false; + } + if (!sizeof($actions)) + if (($methodname == 'displayErrors' AND sizeof($adminTab->_errors)) OR $methodname != 'displayErrors') + echo (isset($this->_includeTabTitle[$key]) ? '

'.$this->_includeTabTitle[$key].'

' : ''); + if ($adminTab->_includeVars) + foreach ($adminTab->_includeVars AS $var => $value) + $adminTab->$var = $this->$value; + $adminTab->$methodname(); + $inc = true; + } + $key++; + } + return $inc; + } + + /** + * Manage page display (form, list...) + * + * @param string $className Allow to validate a different class than the current one + */ + public function validateRules($className = false) + { + if (!$className) + $className = $this->className; + + /* Class specific validation rules */ + $rules = call_user_func(array($className, 'getValidationRules'), $className); + + if ((sizeof($rules['requiredLang']) OR sizeof($rules['sizeLang']) OR sizeof($rules['validateLang']))) + { + /* Language() instance determined by default language */ + $defaultLanguage = new Language((int)(Configuration::get('PS_LANG_DEFAULT'))); + + /* All availables languages */ + $languages = Language::getLanguages(false); + } + + /* Checking for required fields */ + foreach ($rules['required'] AS $field) + if (($value = Tools::getValue($field)) == false AND (string)$value != '0') + if (!Tools::getValue($this->identifier) OR ($field != 'passwd' AND $field != 'no-picture')) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), $field, $className).' '.$this->l('is required'); + + /* Checking for multilingual required fields */ + foreach ($rules['requiredLang'] AS $fieldLang) + if (($empty = Tools::getValue($fieldLang.'_'.$defaultLanguage->id)) === false OR empty($empty)) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), $fieldLang, $className).' '.$this->l('is required at least in').' '.$defaultLanguage->name; + + /* Checking for maximum fields sizes */ + foreach ($rules['size'] AS $field => $maxLength) + if (Tools::getValue($field) !== false AND Tools::strlen(Tools::getValue($field)) > $maxLength) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), $field, $className).' '.$this->l('is too long').' ('.$maxLength.' '.$this->l('chars max').')'; + + /* Checking for maximum multilingual fields size */ + foreach ($rules['sizeLang'] AS $fieldLang => $maxLength) + foreach ($languages AS $language) + if (Tools::getValue($fieldLang.'_'.$language['id_lang']) !== false AND Tools::strlen(Tools::getValue($fieldLang.'_'.$language['id_lang'])) > $maxLength) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), $fieldLang, $className).' ('.$language['name'].') '.$this->l('is too long').' ('.$maxLength.' '.$this->l('chars max, html chars including').')'; + + /* Overload this method for custom checking */ + $this->_childValidation(); + + /* Checking for fields validity */ + foreach ($rules['validate'] AS $field => $function) + if (($value = Tools::getValue($field)) !== false AND ($field != 'passwd')) + if (!Validate::$function($value)) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), $field, $className).' '.$this->l('is invalid'); + + /* Checking for passwd_old validity */ + if (($value = Tools::getValue('passwd')) != false) + { + if ($className == 'Employee' AND !Validate::isPasswdAdmin($value)) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), 'passwd', $className).' '.$this->l('is invalid'); + elseif ($className == 'Customer' AND !Validate::isPasswd($value)) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), 'passwd', $className).' '.$this->l('is invalid'); + } + + /* Checking for multilingual fields validity */ + foreach ($rules['validateLang'] AS $fieldLang => $function) + foreach ($languages AS $language) + if (($value = Tools::getValue($fieldLang.'_'.$language['id_lang'])) !== false AND !empty($value)) + if (!Validate::$function($value)) + $this->_errors[] = $this->l('the field').' '.call_user_func(array($className, 'displayFieldName'), $fieldLang, $className).' ('.$language['name'].') '.$this->l('is invalid'); + } + + /** + * Overload this method for custom checking + */ + protected function _childValidation() { } + + /** + * Overload this method for custom checking + * + * @param integer $id Object id used for deleting images + */ + public function deleteImage($id) + { + $dir = null; + /* Deleting object images and thumbnails (cache) */ + if (key_exists('dir', $this->fieldImageSettings) AND $this->fieldImageSettings['dir'].'/') + { + $dir = $this->fieldImageSettings['dir'].'/'; + if (file_exists(_PS_IMG_DIR_.$dir.$id.'.'.$this->imageType) AND !unlink(_PS_IMG_DIR_.$dir.$id.'.'.$this->imageType)) + return false; + } + if (file_exists(_PS_TMP_IMG_DIR_.$this->table.'_'.$id.'.'.$this->imageType) AND !unlink(_PS_TMP_IMG_DIR_.$this->table.'_'.$id.'.'.$this->imageType)) + return false; + if (file_exists(_PS_TMP_IMG_DIR_.$this->table.'_mini_'.$id.'.'.$this->imageType) AND !unlink(_PS_TMP_IMG_DIR_.$this->table.'_mini_'.$id.'.'.$this->imageType)) + return false; + $types = ImageType::getImagesTypes(); + foreach ($types AS $imageType) + if (file_exists(_PS_IMG_DIR_.$dir.$id.'-'.stripslashes($imageType['name']).'.'.$this->imageType) AND !unlink(_PS_IMG_DIR_.$dir.$id.'-'.stripslashes($imageType['name']).'.'.$this->imageType)) + return false; + return true; + } + + /** + * Manage page processing + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function postProcess() + { + global $currentIndex, $cookie; + if (!isset($this->table)) + return false; + + // set token + $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; + + // Sub included tab postProcessing + $this->includeSubTab('postProcess', array('status', 'submitAdd1', 'submitDel', 'delete', 'submitFilter', 'submitReset')); + + /* Delete object image */ + if (isset($_GET['deleteImage'])) + { + if (Validate::isLoadedObject($object = $this->loadObject()) AND isset($this->fieldImageSettings)) + if ($this->deleteImage($object->id)) + Tools::redirectAdmin($currentIndex.'&add'.$this->table.'&'.$this->identifier.'='.Tools::getValue($this->identifier).'&conf=7&token='.$token); + $this->_errors[] = Tools::displayError('An error occurred during image deletion (cannot load object).'); + } + + /* Delete object */ + elseif (isset($_GET['delete'.$this->table])) + { + if ($this->tabAccess['delete'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject()) AND isset($this->fieldImageSettings)) + { + // check if request at least one object with noZeroObject + if (isset($object->noZeroObject) AND sizeof($taxes = call_user_func(array($this->className, $object->noZeroObject))) <= 1) + $this->_errors[] = Tools::displayError('You need at least one object.').' '.$this->table.'
'.Tools::displayError('You cannot delete all of the items.'); + else + { + $this->deleteImage($object->id); + if ($this->deleted) + { + $object->deleted = 1; + if ($object->update()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.$token); + } + elseif ($object->delete()) + Tools::redirectAdmin($currentIndex.'&conf=1&token='.$token); + $this->_errors[] = Tools::displayError('An error occurred during deletion.'); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while deleting object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + + /* Change object statuts (active, inactive) */ + elseif ((isset($_GET['status'.$this->table]) OR isset($_GET['status'])) AND Tools::getValue($this->identifier)) + { + if ($this->tabAccess['edit'] === '1') + { + if (Validate::isLoadedObject($object = $this->loadObject())) + { + if ($object->toggleStatus()) + Tools::redirectAdmin($currentIndex.'&conf=5'.((($id_category = (int)(Tools::getValue('id_category'))) AND Tools::getValue('id_product')) ? '&id_category='.$id_category : '').'&token='.$token); + else + $this->_errors[] = Tools::displayError('An error occurred while updating status.'); + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + /* Move an object */ + elseif (isset($_GET['position'])) + { + if ($this->tabAccess['edit'] !== '1') + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + elseif (!Validate::isLoadedObject($object = $this->loadObject())) + $this->_errors[] = Tools::displayError('An error occurred while updating status for object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + elseif (!$object->updatePosition((int)(Tools::getValue('way')), (int)(Tools::getValue('position')))) + $this->_errors[] = Tools::displayError('Failed to update the position.'); + else + Tools::redirectAdmin($currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.(($id_category = (int)(Tools::getValue($this->identifier))) ? ('&'.$this->identifier.'='.$id_category) : '').'&token='.$token); + Tools::redirectAdmin($currentIndex.'&'.$this->table.'Orderby=position&'.$this->table.'Orderway=asc&conf=5'.((($id_category = (int)(Tools::getValue('id_category'))) AND Tools::getValue('id_product')) ? '&id_category='.$id_category : '').'&token='.$token); + } + /* Delete multiple objects */ + elseif (Tools::getValue('submitDel'.$this->table)) + { + if ($this->tabAccess['delete'] === '1') + { + if (isset($_POST[$this->table.'Box'])) + { + $object = new $this->className(); + if (isset($object->noZeroObject) AND + // Check if all object will be deleted + (sizeof(call_user_func(array($this->className, $object->noZeroObject))) <= 1 OR sizeof($_POST[$this->table.'Box']) == sizeof(call_user_func(array($this->className, $object->noZeroObject))))) + $this->_errors[] = Tools::displayError('You need at least one object.').' '.$this->table.'
'.Tools::displayError('You cannot delete all of the items.'); + else + { + $result = true; + if ($this->deleted) + { + foreach(Tools::getValue($this->table.'Box') as $id) + { + $toDelete = new $this->className($id); + $toDelete->deleted = 1; + $result = $result AND $toDelete->update(); + } + } + else + $result = $object->deleteSelection(Tools::getValue($this->table.'Box')); + + if ($result) + Tools::redirectAdmin($currentIndex.'&conf=2&token='.$token); + $this->_errors[] = Tools::displayError('An error occurred while deleting selection.'); + } + } + else + $this->_errors[] = Tools::displayError('You must select at least one element to delete.'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); + } + + /* Create or update an object */ + elseif (Tools::getValue('submitAdd'.$this->table)) + { + /* Checking fields validity */ + $this->validateRules(); + if (!sizeof($this->_errors)) + { + $id = (int)(Tools::getValue($this->identifier)); + + /* Object update */ + if (isset($id) AND !empty($id)) + { + if ($this->tabAccess['edit'] === '1' OR ($this->table == 'employee' AND $cookie->id_employee == Tools::getValue('id_employee') AND Tools::isSubmit('updateemployee'))) + { + $object = new $this->className($id); + if (Validate::isLoadedObject($object)) + { + /* Specific to objects which must not be deleted */ + if ($this->deleted AND $this->beforeDelete($object)) + { + // Create new one with old objet values + $objectNew = new $this->className($object->id); + $objectNew->id = NULL; + $objectNew->date_add = ''; + $objectNew->date_upd = ''; + + // Update old object to deleted + $object->deleted = 1; + $object->update(); + + // Update new object with post values + $this->copyFromPost($objectNew, $this->table); + $result = $objectNew->add(); + if (Validate::isLoadedObject($objectNew)) + $this->afterDelete($objectNew, $object->id); + } + else + { + $this->copyFromPost($object, $this->table); + $result = $object->update(); + $this->afterUpdate($object); + } + if (!$result) + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.' ('.Db::getInstance()->getMsgError().')'; + elseif ($this->postImage($object->id) AND !sizeof($this->_errors)) + { + $parent_id = (int)(Tools::getValue('id_parent', 1)); + // Specific back redirect + if ($back = Tools::getValue('back')) + Tools::redirectAdmin(urldecode($back).'&conf=4'); + // Specific scene feature + if (Tools::getValue('stay_here') == 'on' || Tools::getValue('stay_here') == 'true' || Tools::getValue('stay_here') == '1') + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=4&updatescene&token='.$token); + // Save and stay on same form + if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=4&update'.$this->table.'&token='.$token); + // Save and back to parent + if (Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent')) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$parent_id.'&conf=4&token='.$token); + // Default behavior (save and back) + Tools::redirectAdmin($currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=4&token='.$token); + } + } + else + $this->_errors[] = Tools::displayError('An error occurred while updating object.').' '.$this->table.' '.Tools::displayError('(cannot load object)'); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + + /* Object creation */ + else + { + if ($this->tabAccess['add'] === '1') + { + $object = new $this->className(); + $this->copyFromPost($object, $this->table); + if (!$object->add()) + $this->_errors[] = Tools::displayError('An error occurred while creating object.').' '.$this->table.' ('.mysql_error().')'; + elseif (($_POST[$this->identifier] = $object->id /* voluntary */) AND $this->postImage($object->id) AND !sizeof($this->_errors) AND $this->_redirect) + { + $parent_id = (int)(Tools::getValue('id_parent', 1)); + $this->afterAdd($object); + // Save and stay on same form + if (Tools::isSubmit('submitAdd'.$this->table.'AndStay')) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$object->id.'&conf=3&update'.$this->table.'&token='.$token); + // Save and back to parent + if (Tools::isSubmit('submitAdd'.$this->table.'AndBackToParent')) + Tools::redirectAdmin($currentIndex.'&'.$this->identifier.'='.$parent_id.'&conf=3&token='.$token); + // Default behavior (save and back) + Tools::redirectAdmin($currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=3&token='.$token); + } + } + else + $this->_errors[] = Tools::displayError('You do not have permission to add here.'); + } + } + $this->_errors = array_unique($this->_errors); + } + + /* Cancel all filters for this tab */ + elseif (isset($_POST['submitReset'.$this->table])) + { + $filters = $cookie->getFamily($this->table.'Filter_'); + foreach ($filters AS $cookieKey => $filter) + if (strncmp($cookieKey, $this->table.'Filter_', 7 + Tools::strlen($this->table)) == 0) + { + $key = substr($cookieKey, 7 + Tools::strlen($this->table)); + /* Table alias could be specified using a ! eg. alias!field */ + $tmpTab = explode('!', $key); + $key = (count($tmpTab) > 1 ? $tmpTab[1] : $tmpTab[0]); + if (array_key_exists($key, $this->fieldsDisplay)) + unset($cookie->$cookieKey); + } + if (isset($cookie->{'submitFilter'.$this->table})) + unset($cookie->{'submitFilter'.$this->table}); + if (isset($cookie->{$this->table.'Orderby'})) + unset($cookie->{$this->table.'Orderby'}); + if (isset($cookie->{$this->table.'Orderway'})) + unset($cookie->{$this->table.'Orderway'}); + unset($_POST); + } + + /* Submit options list */ + elseif (Tools::getValue('submitOptions'.$this->table)) + { + if ($this->tabAccess['edit'] === '1') + { + foreach ($this->_fieldsOptions as $key => $field) + { + if ($field['type'] == 'textLang' OR $field['type'] == 'textareaLang') + { + $languages = Language::getLanguages(false); + $list = array(); + foreach ($languages as $language) + $list[$language['id_lang']] = (isset($field['cast']) ? $field['cast'](Tools::getValue($key.'_'.$language['id_lang'])) : Tools::getValue($key.'_'.$language['id_lang'])); + Configuration::updateValue($key, $list); + } else + Configuration::updateValue($key, (isset($field['cast']) ? $field['cast'](Tools::getValue($key)) : Tools::getValue($key))); + } + Tools::redirectAdmin($currentIndex.'&conf=6&token='.$token); + } + else + $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); + } + + /* Manage list filtering */ + elseif (Tools::isSubmit('submitFilter'.$this->table) OR $cookie->{'submitFilter'.$this->table} !== false) + { + $_POST = array_merge($cookie->getFamily($this->table.'Filter_'), (isset($_POST) ? $_POST : array())); + foreach ($_POST AS $key => $value) + { + /* Extracting filters from $_POST on key filter_ */ + if ($value != NULL AND !strncmp($key, $this->table.'Filter_', 7 + Tools::strlen($this->table))) + { + $key = Tools::substr($key, 7 + Tools::strlen($this->table)); + /* Table alias could be specified using a ! eg. alias!field */ + $tmpTab = explode('!', $key); + $filter = count($tmpTab) > 1 ? $tmpTab[1] : $tmpTab[0]; + if ($field = $this->filterToField($key, $filter)) + { + $type = (array_key_exists('filter_type', $field) ? $field['filter_type'] : (array_key_exists('type', $field) ? $field['type'] : false)); + if (($type == 'date' OR $type == 'datetime') AND is_string($value)) + $value = unserialize($value); + $key = isset($tmpTab[1]) ? $tmpTab[0].'.`'.$tmpTab[1].'`' : '`'.$tmpTab[0].'`'; + if (array_key_exists('tmpTableFilter', $field)) + $sqlFilter = & $this->_tmpTableFilter; + elseif (array_key_exists('havingFilter', $field)) + $sqlFilter = & $this->_filterHaving; + else + $sqlFilter = & $this->_filter; + + /* Only for date filtering (from, to) */ + if (is_array($value)) + { + if (isset($value[0]) AND !empty($value[0])) + { + if (!Validate::isDate($value[0])) + $this->_errors[] = Tools::displayError('\'from:\' date format is invalid (YYYY-MM-DD)'); + else + $sqlFilter .= ' AND '.pSQL($key).' >= \''.pSQL(Tools::dateFrom($value[0])).'\''; + } + + if (isset($value[1]) AND !empty($value[1])) + { + if (!Validate::isDate($value[1])) + $this->_errors[] = Tools::displayError('\'to:\' date format is invalid (YYYY-MM-DD)'); + else + $sqlFilter .= ' AND '.pSQL($key).' <= \''.pSQL(Tools::dateTo($value[1])).'\''; + } + } + else + { + $sqlFilter .= ' AND '; + if ($type == 'int' OR $type == 'bool') + $sqlFilter .= (($key == $this->identifier OR $key == '`'.$this->identifier.'`' OR $key == '`active`') ? 'a.' : '').pSQL($key).' = '.(int)($value).' '; + elseif ($type == 'decimal') + $sqlFilter .= (($key == $this->identifier OR $key == '`'.$this->identifier.'`') ? 'a.' : '').pSQL($key).' = '.(float)($value).' '; + elseif ($type == 'select') + $sqlFilter .= (($key == $this->identifier OR $key == '`'.$this->identifier.'`') ? 'a.' : '').pSQL($key).' = \''.pSQL($value).'\' '; + else + $sqlFilter .= (($key == $this->identifier OR $key == '`'.$this->identifier.'`') ? 'a.' : '').pSQL($key).' LIKE \'%'.pSQL($value).'%\' '; + } + } + } + } + } + elseif(Tools::isSubmit('submitFields') AND $this->requiredDatabase AND $this->tabAccess['add'] === '1' AND $this->tabAccess['delete'] === '1') + { + if (!is_array($fields = Tools::getValue('fieldsBox'))) + $fields = array(); + + $object = new $this->className(); + if (!$object->addFieldsRequiredDatabase($fields)) + $this->_errors[] = Tools::displayError('Error in updating required fields'); + else + Tools::redirectAdmin($currentIndex.'&conf=4&token='.$token); + } + } + + protected function uploadImage($id, $name, $dir, $ext = false) + { + if (isset($_FILES[$name]['tmp_name']) AND !empty($_FILES[$name]['tmp_name'])) + { + // Delete old image + $this->deleteImage($id); + + // Check image validity + if ($error = checkImage($_FILES[$name], $this->maxImageSize)) + $this->_errors[] = $error; + elseif (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($_FILES[$name]['tmp_name'], $tmpName)) + return false; + else + { + $_FILES[$name]['tmp_name'] = $tmpName; + // Copy new image + if (!imageResize($tmpName, _PS_IMG_DIR_.$dir.$id.'.'.$this->imageType, NULL, NULL, ($ext ? $ext : $this->imageType))) + $this->_errors[] = Tools::displayError('An error occurred while uploading image.'); + if (sizeof($this->_errors)) + return false; + if ($this->afterImageUpload()) + { + unlink($tmpName); + return true; + } + return false; + } + } + return true; + } + + + + protected function uploadIco($name, $dest) + { + + if (isset($_FILES[$name]['tmp_name']) AND !empty($_FILES[$name]['tmp_name'])) + { + /* Check ico validity */ + if ($error = checkIco($_FILES[$name], $this->maxImageSize)) + $this->_errors[] = $error; + + /* Copy new ico */ + elseif(!copy($_FILES[$name]['tmp_name'], $dest)) + $this->_errors[] = Tools::displayError('an error occurred while uploading favicon: '.$_FILES[$name]['tmp_name'].' to '.$dest); + } + return !sizeof($this->_errors) ? true : false; + } + + /** + * Overload this method for custom checking + * + * @param integer $id Object id used for deleting images + * @return boolean + */ + protected function postImage($id) + { + if (isset($this->fieldImageSettings['name']) AND isset($this->fieldImageSettings['dir'])) + return $this->uploadImage($id, $this->fieldImageSettings['name'], $this->fieldImageSettings['dir'].'/'); + elseif (!empty($this->fieldImageSettings)) + foreach ($this->fieldImageSettings AS $image) + if (isset($image['name']) AND isset($image['dir'])) + $this->uploadImage($id, $image['name'], $image['dir'].'/'); + return !sizeof($this->_errors) ? true : false; + } + + /** + * Copy datas from $_POST to object + * + * @param object &$object Object + * @param string $table Object table + */ + protected function copyFromPost(&$object, $table) + { + /* Classical fields */ + foreach ($_POST AS $key => $value) + if (key_exists($key, $object) AND $key != 'id_'.$table) + { + /* Do not take care of password field if empty */ + if ($key == 'passwd' AND Tools::getValue('id_'.$table) AND empty($value)) + continue; + /* Automatically encrypt password in MD5 */ + if ($key == 'passwd' AND !empty($value)) + $value = Tools::encrypt($value); + $object->{$key} = $value; + } + + /* Multilingual fields */ + $rules = call_user_func(array(get_class($object), 'getValidationRules'), get_class($object)); + if (sizeof($rules['validateLang'])) + { + $languages = Language::getLanguages(false); + foreach ($languages AS $language) + foreach ($rules['validateLang'] AS $field => $validation) + if (isset($_POST[$field.'_'.(int)($language['id_lang'])])) + $object->{$field}[(int)($language['id_lang'])] = $_POST[$field.'_'.(int)($language['id_lang'])]; + } + } + + /** + * Display errors + */ + public function displayErrors() + { + if ($nbErrors = count($this->_errors) AND $this->_includeContainer) + { + echo ' +
X'; + if (count($this->_errors) == 1) + echo $this->_errors[0]; + else + { + echo $nbErrors.' '.$this->l('errors').'
    '; + foreach ($this->_errors AS $error) + echo '
  1. '.$error.'
  2. '; + echo '
'; + } + echo '
'; + } + $this->includeSubTab('displayErrors'); + } + + /** + * Display a warning message + * + * @param string $warn Warning message to display + */ + public function displayWarning($warn) + { + $str_output = ''; + if (!empty($warn)) + { + $str_output .= ' +
'; + if (!is_array($warn)) + $str_output .= ''.$warn; + else + { $str_output .= 'X'. + (count($warn) > 1 ? $this->l('There are') : $this->l('There is')).' '.count($warn).' '.(count($warn) > 1 ? $this->l('warnings') : $this->l('warning')) + .' + '.$this->l('Click here to see more').' + '; + } + $str_output .= '
'; + } + echo $str_output; + } + + /** + * Display confirmations + */ + public function displayConf() + { + if ($conf = Tools::getValue('conf')) + echo '
+ + '.$this->_conf[(int)($conf)].' +
'; + } + + /** + * Get the current objects' list form the database + * + * @param integer $id_lang Language used for display + * @param string $orderBy ORDER BY clause + * @param string $_orderWay Order way (ASC, DESC) + * @param integer $start Offset in LIMIT clause + * @param integer $limit Row count in LIMIT clause + */ + public function getList($id_lang, $orderBy = NULL, $orderWay = NULL, $start = 0, $limit = NULL) + { + global $cookie; + + /* Manage default params values */ + if (empty($limit)) + $limit = ((!isset($cookie->{$this->table.'_pagination'})) ? $this->_pagination[1] : $limit = $cookie->{$this->table.'_pagination'}); + + if (!Validate::isTableOrIdentifier($this->table)) + die (Tools::displayError('Table name is invalid:').' "'.$this->table.'"'); + + if (empty($orderBy)) + $orderBy = $cookie->__get($this->table.'Orderby') ? $cookie->__get($this->table.'Orderby') : $this->_defaultOrderBy; + if (empty($orderWay)) + $orderWay = $cookie->__get($this->table.'Orderway') ? $cookie->__get($this->table.'Orderway') : 'ASC'; + + $limit = (int)(Tools::getValue('pagination', $limit)); + $cookie->{$this->table.'_pagination'} = $limit; + + /* Check params validity */ + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay) + OR !is_numeric($start) OR !is_numeric($limit) + OR !Validate::isUnsignedId($id_lang)) + die(Tools::displayError('get list params is not valid')); + + /* Determine offset from current page */ + if ((isset($_POST['submitFilter'.$this->table]) OR + isset($_POST['submitFilter'.$this->table.'_x']) OR + isset($_POST['submitFilter'.$this->table.'_y'])) AND + !empty($_POST['submitFilter'.$this->table]) AND + is_numeric($_POST['submitFilter'.$this->table])) + $start = (int)($_POST['submitFilter'.$this->table] - 1) * $limit; + + /* Cache */ + $this->_lang = (int)($id_lang); + $this->_orderBy = $orderBy; + $this->_orderWay = Tools::strtoupper($orderWay); + + /* SQL table : orders, but class name is Order */ + $sqlTable = $this->table == 'order' ? 'orders' : $this->table; + + /* Query in order to get results with all fields */ + $sql = 'SELECT SQL_CALC_FOUND_ROWS + '.($this->_tmpTableFilter ? ' * FROM (SELECT ' : '').' + '.($this->lang ? 'b.*, ' : '').'a.*'.(isset($this->_select) ? ', '.$this->_select.' ' : '').' + FROM `'._DB_PREFIX_.$sqlTable.'` a + '.($this->lang ? 'LEFT JOIN `'._DB_PREFIX_.$this->table.'_lang` b ON (b.`'.$this->identifier.'` = a.`'.$this->identifier.'` AND b.`id_lang` = '.(int)($id_lang).')' : '').' + '.(isset($this->_join) ? $this->_join.' ' : '').' + WHERE 1 '.(isset($this->_where) ? $this->_where.' ' : '').($this->deleted ? 'AND a.`deleted` = 0 ' : '').(isset($this->_filter) ? $this->_filter : '').' + '.(isset($this->_group) ? $this->_group.' ' : '').' + '.((isset($this->_filterHaving) || isset($this->_having)) ? 'HAVING ' : '').(isset($this->_filterHaving) ? ltrim($this->_filterHaving, ' AND ') : '').(isset($this->_having) ? $this->_having.' ' : '').' + ORDER BY '.(($orderBy == $this->identifier) ? 'a.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay). + ($this->_tmpTableFilter ? ') tmpTable WHERE 1'.$this->_tmpTableFilter : '').' + LIMIT '.(int)($start).','.(int)($limit); + + $this->_list = Db::getInstance()->ExecuteS($sql); + $this->_listTotal = count(Db::getInstance()->ExecuteS('SELECT + '.($this->_tmpTableFilter ? ' * FROM (SELECT ' : '').' + '.($this->lang ? 'b.*, ' : '').'a.*'.(isset($this->_select) ? ', '.$this->_select.' ' : '').' + FROM `'._DB_PREFIX_.$sqlTable.'` a + '.($this->lang ? 'LEFT JOIN `'._DB_PREFIX_.$this->table.'_lang` b ON (b.`'.$this->identifier.'` = a.`'.$this->identifier.'` AND b.`id_lang` = '.(int)($id_lang).')' : '').' + '.(isset($this->_join) ? $this->_join.' ' : '').' + WHERE 1 '.(isset($this->_where) ? $this->_where.' ' : '').($this->deleted ? 'AND a.`deleted` = 0 ' : '').(isset($this->_filter) ? $this->_filter : '').' + '.(isset($this->_group) ? $this->_group.' ' : '').' + '.((isset($this->_filterHaving) || isset($this->_having)) ? 'HAVING ' : '').(isset($this->_filterHaving) ? ltrim($this->_filterHaving, ' AND ') : '').(isset($this->_having) ? $this->_having.' ' : '').' + ORDER BY '.(($orderBy == $this->identifier) ? 'a.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay). + ($this->_tmpTableFilter ? ') tmpTable WHERE 1'.$this->_tmpTableFilter : ''))); + + + } + + /** + * Display image aside object form + * + * @param integer $id Object id + * @param string $image Local image filepath + * @param integer $size Image width + * @param integer $id_image Image id (for products with several images) + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayImage($id, $image, $size, $id_image = NULL, $token = NULL) + { + global $currentIndex; + + if (!isset($token) OR empty($token)) + $token = $this->token; + if ($id AND file_exists($image)) + echo ' +
+ '.cacheImage($image, $this->table.'_'.(int)($id).'.'.$this->imageType, $size, $this->imageType).' +

'.$this->l('File size').' '.(filesize($image) / 1000).'kb

+ + '.$this->l('Delete').' '.$this->l('Delete').' +
'; + } + + /** + * Display list header (filtering, pagination and column names) + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayListHeader($token = NULL) + { + global $currentIndex, $cookie; + $isCms = false; + if (preg_match('/cms/Ui', $this->identifier)) + $isCms = true; + $id_cat = Tools::getValue('id_'.($isCms ? 'cms_' : '').'category'); + + if (!isset($token) OR empty($token)) + $token = $this->token; + + /* Determine total page number */ + $totalPages = ceil($this->_listTotal / Tools::getValue('pagination', (isset($cookie->{$this->table.'_pagination'}) ? $cookie->{$this->table.'_pagination'} : $this->_pagination[0]))); + if (!$totalPages) $totalPages = 1; + + echo ' '; + echo ' + + + + + + + + + '; + foreach ($this->fieldsDisplay AS $key => $params) + { + echo ' '; + } + + /* Check if object can be modified, deleted or detailed */ + if ($this->edit OR $this->delete OR ($this->view AND $this->view !== 'noActionColumn')) + echo ' '; + echo ' + + '; + + /* Javascript hack in order to catch ENTER keypress event */ + $keyPress = 'onkeypress="formSubmit(event, \'submitFilterButton_'.$this->table.'\');"'; + + /* Filters (input, select, date or bool) */ + foreach ($this->fieldsDisplay AS $key => $params) + { + $width = (isset($params['width']) ? ' style="width: '.(int)($params['width']).'px;"' : ''); + echo ''; + if (!isset($params['type'])) + $params['type'] = 'text'; + + $value = Tools::getValue($this->table.'Filter_'.(array_key_exists('filter_key', $params) ? $params['filter_key'] : $key)); + if (isset($params['search']) AND !$params['search']) + { + echo '--'; + continue; + } + switch ($params['type']) + { + case 'bool': + echo ' + '; + break; + + case 'date': + case 'datetime': + if (is_string($value)) + $value = unserialize($value); + $name = $this->table.'Filter_'.(isset($params['filter_key']) ? $params['filter_key'] : $key); + $nameId = str_replace('!', '__', $name); + includeDatepicker(array($nameId.'_0', $nameId.'_1')); + echo $this->l('From').'
+ '.$this->l('To').' '; + break; + + case 'select': + + if (isset($params['filter_key'])) + { + echo ''; + break; + } + + case 'text': + default: + echo ''; + } + echo ''; + } + + if ($this->edit OR $this->delete OR ($this->view AND $this->view !== 'noActionColumn')) + echo '
'; + + echo ' + '; + } + + public function displayTop() + { + } + + /** + * Display list + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayList() + { + global $currentIndex; + + $this->displayTop(); + + if ($this->edit AND (!isset($this->noAdd) OR !$this->noAdd)) + echo '
'.$this->l('Add new').'

'; + /* Append when we get a syntax error in SQL query */ + if ($this->_list === false) + { + $this->displayWarning($this->l('Bad SQL query')); + return false; + } + + /* Display list header (filtering, pagination and column names) */ + $this->displayListHeader(); + if (!sizeof($this->_list)) + echo ''; + + /* Show the content of the table */ + $this->displayListContent(); + + /* Close list table and submit button */ + $this->displayListFooter(); + } + + public function displayListContent($token = NULL) + { + /* Display results in a table + * + * align : determine value alignment + * prefix : displayed before value + * suffix : displayed after value + * image : object image + * icon : icon determined by values + * active : allow to toggle status + */ + + global $currentIndex, $cookie; + $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); + + $id_category = 1; // default categ + + $irow = 0; + if ($this->_list AND isset($this->fieldsDisplay['position'])) + { + $positions = array_map(create_function('$elem', 'return (int)($elem[\'position\']);'), $this->_list); + sort($positions); + } + if ($this->_list) + { + $isCms = false; + if (preg_match('/cms/Ui', $this->identifier)) + $isCms = true; + $keyToGet = 'id_'.($isCms ? 'cms_' : '').'category'.(in_array($this->identifier, array('id_category', 'id_cms_category')) ? '_parent' : ''); + foreach ($this->_list AS $i => $tr) + { + $id = $tr[$this->identifier]; + echo 'identifier,$this->identifiersDnd) ? ' id="tr_'.(($id_category = (int)(Tools::getValue('id_'.($isCms ? 'cms_' : '').'category', '1'))) ? $id_category : '').'_'.$id.'_'.$tr['position'].'"' : '').($irow++ % 2 ? ' class="alt_row"' : '').' '.((isset($tr['color']) AND $this->colorOnBackground) ? 'style="background-color: '.$tr['color'].'"' : '').'> + '; + foreach ($this->fieldsDisplay AS $key => $params) + { + $tmp = explode('!', $key); + $key = isset($tmp[1]) ? $tmp[1] : $tmp[0]; + echo ' + '; + } + + if ($this->edit OR $this->delete OR ($this->view AND $this->view !== 'noActionColumn')) + { + echo ''; + } + echo ''; + } + } + } + + + protected function _displayEnableLink($token, $id, $value, $active, $id_category = NULL, $id_product = NULL) + { + global $currentIndex; + + echo ' + '.($value ? $this->l('Enabled') : $this->l('Disabled')).''; + } + + protected function _displayDuplicate($token = NULL, $id) + { + global $currentIndex; + + $_cacheLang['Duplicate'] = $this->l('Duplicate'); + $_cacheLang['Copy images too?'] = $this->l('Copy images too?', __CLASS__, TRUE, FALSE); + + $duplicate = $currentIndex.'&'.$this->identifier.'='.$id.'&duplicate'.$this->table; + + echo ' + + '.$_cacheLang['Duplicate'].''; + } + + protected function _displayViewLink($token = NULL, $id) + { + global $currentIndex; + + $_cacheLang['View'] = $this->l('View'); + + echo ' + + '.$_cacheLang['View'].''; + } + + protected function _displayEditLink($token = NULL, $id) + { + global $currentIndex; + + $_cacheLang['Edit'] = $this->l('Edit'); + + echo ' + + '; + } + + protected function _displayDeleteLink($token = NULL, $id) + { + global $currentIndex; + + $_cacheLang['Delete'] = $this->l('Delete'); + $_cacheLang['DeleteItem'] = $this->l('Delete item #', __CLASS__, TRUE, FALSE); + + echo ' + + '.$_cacheLang['Delete'].''; + } + + /** + * Close list table and submit button + */ + public function displayListFooter($token = NULL) + { + echo '
+ '; + + /* Determine current page number */ + $page = (int)(Tools::getValue('submitFilter'.$this->table)); + if (!$page) $page = 1; + if ($page > 1) + echo ' + +   '; + echo $this->l('Page').' '.$page.' / '.$totalPages; + if ($page < $totalPages) + echo ' + +  '; + echo ' | '.$this->l('Display').' + + / '.(int)($this->_listTotal).' '.$this->l('result(s)').' + + + + + + +
'; + + /* Display column names and arrows for ordering (ASC, DESC) */ + if (array_key_exists($this->identifier,$this->identifiersDnd) AND $this->_orderBy == 'position') + { + echo ' + + + + '; + } + echo 'identifier,$this->identifiersDnd) ? ' id="'.(($id_category = (int)(Tools::getValue($this->identifiersDnd[$this->identifier], 1))) ? substr($this->identifier,3,strlen($this->identifier)) : '').'"' : '' ).' class="table'.((array_key_exists($this->identifier,$this->identifiersDnd) AND ($this->_orderBy != 'position 'AND $this->_orderWay != 'DESC')) ? ' tableDnD' : '' ).'" cellpadding="0" cellspacing="0"> +
'; + if ($this->delete) + echo ' '; + echo ' '.$params['title']; + if (!isset($params['orderby']) OR $params['orderby']) + { + // Cleaning links + if (Tools::getValue($this->table.'Orderby') && Tools::getValue($this->table.'Orderway')) + $currentIndex = preg_replace('/&'.$this->table.'Orderby=([a-z _]*)&'.$this->table.'Orderway=([a-z]*)/i', '', $currentIndex); + echo '
+ + '; + } + echo '
'.$this->l('Actions').'
'; + if ($this->delete) + echo ' --'; + echo ' --
'.$this->l('No items found').'
'; + if ($this->delete AND (!isset($this->_listSkipDelete) OR !in_array($id, $this->_listSkipDelete))) + echo ''; + echo 'noLink) OR !$this->noLink)) + echo ' onclick="document.location = \''.$currentIndex.'&'.$this->identifier.'='.$id.($this->view? '&view' : '&update').$this->table.'&token='.($token!=NULL ? $token : $this->token).'\'">'.(isset($params['prefix']) ? $params['prefix'] : ''); + else + echo '>'; + if (isset($params['active']) AND isset($tr[$key])) + $this->_displayEnableLink($token, $id, $tr[$key], $params['active'], Tools::getValue('id_category'), Tools::getValue('id_product')); + elseif (isset($params['activeVisu']) AND isset($tr[$key])) + echo ''.($tr[$key] ? $this->l('Enabled') : $this->l('Disabled')).''; + elseif (isset($params['position'])) + { + if ($this->_orderBy == 'position' AND $this->_orderWay != 'DESC') + { + echo ' + '.$this->l('Down').''; + + echo ' + '.$this->l('Up').''; } + else + echo (int)($tr[$key] + 1); + } + elseif (isset($params['image'])) + { + $image_id = isset($params['image_id']) ? $tr[$params['image_id']] : $id; + echo cacheImage(_PS_IMG_DIR_.$params['image'].'/'.$image_id.(isset($tr['id_image']) ? '-'.(int)($tr['id_image']) : '').'.'.$this->imageType, $this->table.'_mini_'.$image_id.'.'.$this->imageType, 45, $this->imageType); + } + elseif (isset($params['icon']) AND (isset($params['icon'][$tr[$key]]) OR isset($params['icon']['default']))) + echo ''.$tr[$key]).''; + elseif (isset($params['price'])) + echo Tools::displayPrice($tr[$key], (isset($params['currency']) ? Currency::getCurrencyInstance((int)($tr['id_currency'])) : $currency), false, false); + elseif (isset($params['float'])) + echo rtrim(rtrim($tr[$key], '0'), '.'); + elseif (isset($params['type']) AND $params['type'] == 'date') + echo Tools::displayDate($tr[$key], $cookie->id_lang); + elseif (isset($params['type']) AND $params['type'] == 'datetime') + echo Tools::displayDate($tr[$key], $cookie->id_lang, true); + elseif (isset($tr[$key])) + { + $echo = ($key == 'price' ? round($tr[$key], 2) : isset($params['maxlength']) ? Tools::substr($tr[$key], 0, $params['maxlength']).'...' : $tr[$key]); + echo isset($params['callback']) ? call_user_func_array(array($this->className, $params['callback']), array($echo, $tr)) : $echo; + } + else + echo '--'; + + echo (isset($params['suffix']) ? $params['suffix'] : ''). + ''; + if ($this->view) + $this->_displayViewLink($token, $id); + if ($this->edit) + $this->_displayEditLink($token, $id); + if ($this->delete AND (!isset($this->_listSkipDelete) OR !in_array($id, $this->_listSkipDelete))) + $this->_displayDeleteLink($token, $id); + if ($this->duplicate) + $this->_displayDuplicate($token, $id); + echo '
'; + if ($this->delete) + echo '

'; + echo ' + + + + + '; + if (isset($this->_includeTab) AND sizeof($this->_includeTab)) + echo '

'; + } + + /** + * Options lists + */ + public function displayOptionsList() + { + global $currentIndex, $cookie, $tab; + + if (!isset($this->_fieldsOptions) OR !sizeof($this->_fieldsOptions)) + return ; + + $defaultLanguage = (int)Configuration::get('PS_LANG_DEFAULT'); + $this->_languages = Language::getLanguages(false); + $tab = Tab::getTab((int)$cookie->id_lang, Tab::getIdFromClassName($tab)); + echo '

'; + echo (isset($this->optionTitle) ? '

'.$this->optionTitle.'

' : ''); + echo ' + +
+
'; + echo (isset($this->optionTitle) ? ' + ' + .$this->optionTitle.'' : ''); + foreach ($this->_fieldsOptions AS $key => $field) + { + $val = Tools::getValue($key, Configuration::get($key)); + echo ' +
'; + switch ($field['type']) + { + case 'select': + echo ''; + break; + case 'bool': + echo ' + + + + + '; + break; + case 'textLang': + foreach ($this->_languages as $language) + { + $val = Tools::getValue($key.'_'.$language['id_lang'], Configuration::get($key, $language['id_lang'])); + echo ' +
+ +
'; + } + $this->displayFlags($this->_languages, $defaultLanguage, $key, $key); + echo '
'; + break; + case 'textareaLang': + foreach ($this->_languages as $language) + { + $val = Configuration::get($key, $language['id_lang']); + echo ' +
+ +
'; + } + $this->displayFlags($this->_languages, $defaultLanguage, $key, $key); + echo '
'; + break; + case 'text': + default: + echo ''.(isset($field['suffix']) ? $field['suffix'] : ''); + } + + if (isset($field['required']) AND $field['required']) + echo ' *'; + + echo (isset($field['desc']) ? '

'.$field['desc'].'

' : ''); + echo '
'; + } + echo '
+ +
+
+ +
'; + } + + /** + * Load class object using identifier in $_GET (if possible) + * otherwise return an empty object, or die + * + * @param boolean $opt Return an empty object if load fail + * @return object + */ + protected function loadObject($opt = false) + { + if ($id = (int)(Tools::getValue($this->identifier)) AND Validate::isUnsignedId($id)) + { + if (!$this->_object) + $this->_object = new $this->className($id); + if (Validate::isLoadedObject($this->_object)) + return $this->_object; + $this->_errors[] = Tools::displayError('Object cannot be loaded (not found)'); + } + elseif ($opt) + { + $this->_object = new $this->className(); + return $this->_object; + } + else + $this->_errors[] = Tools::displayError('Object cannot be loaded (identifier missing or invalid)'); + + $this->displayErrors(); + } + + /** + * Return field value if possible (both classical and multilingual fields) + * + * Case 1 : Return value if present in $_POST / $_GET + * Case 2 : Return object value + * + * @param object $obj Object + * @param string $key Field name + * @param integer $id_lang Language id (optional) + * @return string + */ + protected function getFieldValue($obj, $key, $id_lang = NULL) + { + if ($id_lang) + $defaultValue = ($obj->id AND isset($obj->{$key}[$id_lang])) ? $obj->{$key}[$id_lang] : ''; + else + $defaultValue = isset($obj->{$key}) ? $obj->{$key} : ''; + + return Tools::getValue($key.($id_lang ? '_'.$id_lang : ''), $defaultValue); + } + + /** + * Display form + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function displayForm($firstCall = true) + { + global $cookie; + + $allowEmployeeFormLang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + if ($allowEmployeeFormLang && !$cookie->employee_form_lang) + $cookie->employee_form_lang = (int)(Configuration::get('PS_LANG_DEFAULT')); + $useLangFromCookie = false; + $this->_languages = Language::getLanguages(false); + if ($allowEmployeeFormLang) + foreach ($this->_languages AS $lang) + if ($cookie->employee_form_lang == $lang['id_lang']) + $useLangFromCookie = true; + if (!$useLangFromCookie) + $this->_defaultFormLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); + else + $this->_defaultFormLanguage = (int)($cookie->employee_form_lang); + + // Only if it is the first call to displayForm, otherwise it has already been defined + if ($firstCall) + { + echo ' + '; + } + } + + /** + * Display object details + * + * @global string $currentIndex Current URL in order to keep current Tab + */ + public function viewDetails() { global $currentIndex; } + + /** + * Called before deletion + * + * @param object $object Object + * @return boolean + */ + protected function beforeDelete($object) { return true; } + + /** + * Called before deletion + * + * @param object $object Object + * @return boolean + */ + protected function afterDelete($object, $oldId) { return true; } + + protected function afterAdd($object) { return true; } + + protected function afterUpdate($object) { return true; } + + /** + * Check rights to view the current tab + * + * @return boolean + */ + + protected function afterImageUpload() { + return true; + } + + /** + * Check rights to view the current tab + * + * @return boolean + */ + + public function viewAccess($disable = false) + { + global $cookie; + + if ($disable) + return true; + + $this->tabAccess = Profile::getProfileAccess($cookie->profile, $this->id); + + if ($this->tabAccess['view'] === '1') + return true; + return false; + } + + /** + * Check for security token + */ + public function checkToken() + { + $token = Tools::getValue('token'); + return (!empty($token) AND $token === $this->token); + } + + /** + * Display flags in forms for translations + * + * @param array $languages All languages available + * @param integer $defaultLanguage Default language id + * @param string $ids Multilingual div ids in form + * @param string $id Current div id] + * #param boolean $return define the return way : false for a display, true for a return + */ + public function displayFlags($languages, $defaultLanguage, $ids, $id, $return = false) + { + if (sizeof($languages) == 1) + return false; + $defaultIso = Language::getIsoById($defaultLanguage); + $output = ' +
+ +
+
+ '.$this->l('Choose language:').'

'; + foreach ($languages as $language) + $output .= ''.$language['name'].' '; + $output .= '
'; + + if ($return) + return $output; + echo $output; + } + + protected function filterToField($key, $filter) + { + foreach ($this->fieldsDisplay AS $field) + if (array_key_exists('filter_key', $field) AND $field['filter_key'] == $key) + return $field; + if (array_key_exists($filter, $this->fieldsDisplay)) + return $this->fieldsDisplay[$filter]; + return false; + } +} + diff --git a/classes/Alias.php b/classes/Alias.php new file mode 100644 index 000000000..8c40cea3a --- /dev/null +++ b/classes/Alias.php @@ -0,0 +1,95 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AliasCore extends ObjectModel +{ + public $alias; + public $search; + public $active = true; + + protected $fieldsRequired = array('alias', 'search'); + protected $fieldsSize = array('alias' => 255, 'search' => 255); + protected $fieldsValidate = array('search' => 'isValidSearch', 'alias' => 'isValidSearch', 'active' => 'isBool'); + + protected $table = 'alias'; + protected $identifier = 'id_alias'; + + function __construct($id = NULL, $alias = NULL, $search = NULL, $id_lang = NULL) + { + if ($id) + parent::__construct($id); + elseif ($alias AND Validate::isValidSearch($alias)) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT a.id_alias, a.search, a.alias + FROM `'._DB_PREFIX_.'alias` a + WHERE `alias` LIKE \''.pSQL($alias).'\' AND `active` = 1'); + + if ($row) + { + $this->id = (int)($row['id_alias']); + $this->search = $search ? trim($search) : $row['search']; + $this->alias = $row['alias']; + } + else + { + $this->alias = trim($alias); + $this->search = trim($search); + } + } + } + + static public function deleteAliases($search) + { + return Db::getInstance()->Execute(' + DELETE + FROM `'._DB_PREFIX_.'alias` + WHERE `search` LIKE \''.pSQL($search).'\''); + } + + public function getAliases() + { + $aliases = Db::getInstance()->ExecuteS(' + SELECT a.alias + FROM `'._DB_PREFIX_.'alias` a + WHERE `search` = \''.pSQL($this->search).'\''); + + $aliases = array_map('implode', $aliases); + return implode(', ', $aliases); + } + + public function getFields() + { + parent::validateFields(); + + $fields['alias'] = pSQL($this->alias); + $fields['search'] = pSQL($this->search); + $fields['active'] = (int)($this->active); + return $fields; + } +} + diff --git a/classes/Attachment.php b/classes/Attachment.php new file mode 100644 index 000000000..9c7c5744f --- /dev/null +++ b/classes/Attachment.php @@ -0,0 +1,106 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AttachmentCore extends ObjectModel +{ + public $file; + public $file_name; + public $name; + public $mime; + public $description; + + /** @var integer position */ + public $position; + + protected $fieldsRequired = array('file', 'mime'); + protected $fieldsSize = array('file' => 40, 'mime' => 64, 'file_name' => 128); + protected $fieldsValidate = array('file' => 'isGenericName', 'mime' => 'isCleanHtml', 'file_name' => 'isGenericName'); + + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName', 'description' => 'isCleanHtml'); + + protected $table = 'attachment'; + protected $identifier = 'id_attachment'; + + public function getFields() + { + parent::validateFields(); + $fields['file_name'] = pSQL($this->file_name); + $fields['file'] = pSQL($this->file); + $fields['mime'] = pSQL($this->mime); + return $fields; + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'description')); + } + + public function delete() + { + @unlink(_PS_DOWNLOAD_DIR_.$this->file); + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'product_attachment WHERE id_attachment = '.(int)($this->id)); + return parent::delete(); + } + + public function deleteSelection($attachments) + { + $return = 1; + foreach ($attachments AS $id_attachment) + { + $attachment = new Attachment((int)($id_attachment)); + $return &= $attachment->delete(); + } + return $return; + } + + public static function getAttachments($id_lang, $id_product, $include = true) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM '._DB_PREFIX_.'attachment a + LEFT JOIN '._DB_PREFIX_.'attachment_lang al ON (a.id_attachment = al.id_attachment AND al.id_lang = '.(int)($id_lang).') + WHERE a.id_attachment '.($include ? 'IN' : 'NOT IN').' (SELECT pa.id_attachment FROM '._DB_PREFIX_.'product_attachment pa WHERE id_product = '.(int)($id_product).')'); + } + + public static function attachToProduct($id_product, $array) + { + $result1 = Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'product_attachment WHERE id_product = '.(int)($id_product)); + if (is_array($array)) + { + $ids = array(); + foreach ($array as $id_attachment) + $ids[] = '('.(int)($id_product).','.(int)($id_attachment).')'; + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET cache_has_attachments = '.(count($ids) ? '1' : '0').' WHERE id_product = '.(int)($id_product).' LIMIT 1'); + return ($result1 && Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'product_attachment (id_product, id_attachment) VALUES '.implode(',',$ids))); + } + return $result1; + } +} + diff --git a/classes/Attribute.php b/classes/Attribute.php new file mode 100644 index 000000000..0282a74fa --- /dev/null +++ b/classes/Attribute.php @@ -0,0 +1,201 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AttributeCore extends ObjectModel +{ + /** @var integer Group id which attribute belongs */ + public $id_attribute_group; + + /** @var string Name */ + public $name; + public $color; + + public $default; + + protected $fieldsRequired = array('id_attribute_group'); + protected $fieldsValidate = array('id_attribute_group' => 'isUnsignedId', 'color' => 'isColor'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 64); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'attribute'; + protected $identifier = 'id_attribute'; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'product_option_values', + 'objectNodeName' => 'product_option_value', + 'fields' => array( + 'id_attribute_group' => array('xlink_resource'=> 'product_options'), + 'default' => array(), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_attribute_group'] = (int)($this->id_attribute_group); + $fields['color'] = pSQL($this->color); + + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + public function delete() + { + if (($result = Db::getInstance()->ExecuteS('SELECT `id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute_combination` WHERE `'.$this->identifier.'` = '.(int)($this->id))) === false) + return false; + $combinationIds = array(); + if (Db::getInstance()->numRows()) + { + foreach ($result AS $row) + $combinationIds[] = (int)($row['id_product_attribute']); + if (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_attribute_combination` WHERE `'.$this->identifier.'` = '.(int)($this->id)) === false) + return false; + if (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_product_attribute` IN ('.implode(', ', $combinationIds).')') === false) + return false; + } + return parent::delete(); + } + + /** + * Get all attributes for a given language + * + * @param integer $id_lang Language id + * @param boolean $notNull Get only not null fields if true + * @return array Attributes + */ + static public function getAttributes($id_lang, $notNull = false) + { + return Db::getInstance()->ExecuteS(' + SELECT ag.*, agl.*, a.`id_attribute`, al.`name`, agl.`name` AS `attribute_group` + FROM `'._DB_PREFIX_.'attribute_group` ag + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute_group` = ag.`id_attribute_group` + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)($id_lang).') + '.($notNull ? 'WHERE a.`id_attribute` IS NOT NULL AND al.`name` IS NOT NULL' : '').' + ORDER BY agl.`name` ASC, al.`name` ASC'); + } + + /** + * Get quantity for a given attribute combinaison + * Check if quantity is enough to deserve customer + * + * @param integer $id_product_attribute Product attribute combinaison id + * @param integer $qty Quantity needed + * @return boolean Quantity is available or not + */ + static public function checkAttributeQty($id_product_attribute, $qty) + { + $result = Db::getInstance()->getRow(' + SELECT `quantity` + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + + return ($result AND ($qty <= $result['quantity'])); + } + + /** + * Get quantity for product with attributes quantity + * + * @acces public static + * @param integer $id_product + * @return mixed Quantity or false + */ + static public function getAttributeQty($id_product) + { + $row = Db::getInstance()->getRow(' + SELECT SUM(quantity) as quantity + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product` = '.(int)($id_product)); + + if ($row['quantity'] !== NULL) + return (int)($row['quantity']); + return false; + } + + /** + * Update array with veritable quantity + * + * @acces public static + * @param array &$arr + * return bool + */ + static public function updateQtyProduct(&$arr) + { + $id_product = (int)($arr['id_product']); + $qty = self::getAttributeQty($id_product); + + if ($qty !== false) + { + $arr['quantity'] = (int)($qty); + return true; + } + return false; + } + + public function isColorAttribute() + { + if (!Db::getInstance()->getRow(' + SELECT `is_color_group` FROM `'._DB_PREFIX_.'attribute_group` WHERE `id_attribute_group` = ( + SELECT `id_attribute_group` FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute` = '.(int)($this->id).') + AND is_color_group = 1')) + return false; + return Db::getInstance()->NumRows(); + } + + /** + * Get minimal quantity for product with attributes quantity + * + * @acces public static + * @param integer $id_product_attribute + * @return mixed Minimal Quantity or false + */ + static public function getAttributeMinimalQty($id_product_attribute) + { + $row = Db::getInstance()->getValue(' + SELECT minimal_quantity + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + + if ($row['quantity'] !== NULL) + return (int)($row['quantity']); + return false; + } + +} + diff --git a/classes/AttributeGroup.php b/classes/AttributeGroup.php new file mode 100644 index 000000000..140021ea0 --- /dev/null +++ b/classes/AttributeGroup.php @@ -0,0 +1,195 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AttributeGroupCore extends ObjectModel +{ + /** @var string Name */ + public $name; + public $is_color_group; + + /** @var string Public Name */ + public $public_name; + + protected $fieldsRequired = array(); + protected $fieldsValidate = array('is_color_group' => 'isBool'); + protected $fieldsRequiredLang = array('name', 'public_name'); + protected $fieldsSizeLang = array('name' => 64, 'public_name' => 64); + protected $fieldsValidateLang = array('name' => 'isGenericName', 'public_name' => 'isGenericName'); + + protected $table = 'attribute_group'; + protected $identifier = 'id_attribute_group'; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'product_options', + 'objectNodeName' => 'product_option', + 'fields' => array(), + 'associations' => array( + 'product_option_values' => array('resource' => 'product_option_value', + 'fields' => array( + 'id' => array(), + ), + ), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['is_color_group'] = (int)($this->is_color_group); + + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + return parent::add($autodate, true); + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'public_name')); + } + + static public function cleanDeadCombinations() + { + $attributeCombinations = Db::getInstance()->ExecuteS('SELECT pac.`id_attribute`, pa.`id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute` pa LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON (pa.`id_product_attribute` = pac.`id_product_attribute`)'); + $toRemove = array(); + foreach ($attributeCombinations AS $attributeCombination) + if ((int)($attributeCombination['id_attribute']) == 0) + $toRemove[] = (int)($attributeCombination['id_product_attribute']); + if (!empty($toRemove) AND Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_product_attribute` IN ('.implode(', ', $toRemove).')') === false) + return false; + return true; + } + + public function delete() + { + /* Select children in order to find linked combinations */ + $attributeIds = Db::getInstance()->ExecuteS('SELECT `id_attribute` FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute_group` = '.(int)($this->id)); + if ($attributeIds === false) + return false; + /* Removing attributes to the found combinations */ + $toRemove = array(); + foreach ($attributeIds AS $attribute) + $toRemove[] = (int)($attribute['id_attribute']); + if (!empty($toRemove) AND Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_attribute_combination` WHERE `id_attribute` IN ('.implode(', ', $toRemove).')') === false) + return false; + /* Remove combinations if they do not possess attributes anymore */ + if (!self::cleanDeadCombinations()) + return false; + /* Also delete related attributes */ + if (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'attribute_lang` WHERE `id_attribute` IN (SELECT id_attribute FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute_group` = '.(int)($this->id).')') === false OR Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute_group` = '.(int)($this->id)) === false) + return false; + return parent::delete(); + } + + /** + * Get all attributes for a given language / group + * + * @param integer $id_lang Language id + * @param boolean $id_attribute_group Attribute group id + * @return array Attributes + */ + static public function getAttributes($id_lang, $id_attribute_group) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'attribute` a + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)($id_lang).') + WHERE a.`id_attribute_group` = '.(int)($id_attribute_group).' + ORDER BY `name`'); + } + + /** + * Get all attributes groups for a given language + * + * @param integer $id_lang Language id + * @return array Attributes groups + */ + static public function getAttributesGroups($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'attribute_group` ag + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND `id_lang` = '.(int)($id_lang).') + ORDER BY `name` ASC'); + } + + /** + * Delete several objects from database + * + * return boolean Deletion result + */ + public function deleteSelection($selection) + { + /* Also delete Attributes */ + foreach ($selection AS $value) { + $obj = new AttributeGroup($value); + if (!$obj->delete()) + return false; + } + return true; + } + + public function setWsProductOptionValues($values) + { + $ids = array(); + foreach ($values as $value) + $ids[] = intval($value['id']); + $result = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'attribute` + WHERE `id_attribute_group` = '.(int)$this->id.' + AND `id_attribute` NOT IN ('.implode(',', $ids).')' + ); + $ok = true; + foreach ($values as $value) + { + $result = Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'attribute` + SET `id_attribute_group` = '.(int)$this->id.' + WHERE `id_attribute` = '.(int)$value['id'] + ); + if ($result === false) + $ok = false; + } + return $ok; + } + + public function getWsProductOptionValues() + { + $result = Db::getInstance()->executeS('SELECT id_attribute AS id from `'._DB_PREFIX_.'attribute` WHERE id_attribute_group = '.(int)$this->id); + return $result; + } +} + diff --git a/classes/Backup.php b/classes/Backup.php new file mode 100644 index 000000000..6f3144b69 --- /dev/null +++ b/classes/Backup.php @@ -0,0 +1,249 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class BackupCore +{ + /** @var integer Object id */ + public $id; + + /** @var string Last error messages */ + public $error; + + /** + * Creates a new backup object + * + * @param string $filename Filename of the backup file + */ + public function __construct($filename = NULL) + { + if ($filename) + $this->id = self::getBackupPath($filename); + } + + /** + * Get the full path of the backup file + * + * @param string $filename Filename of the backup file + * @return The full path of the backup file, or false if the backup file does not exists + */ + public static function getBackupPath($filename) + { + $backupdir = realpath(PS_ADMIN_DIR.'/backups/'); + + if ($backupdir === false) + die(Tools::displayError('Backups directory does not exist.')); + + // Check the realpath so we can validate the backup file is under the backup directory + $backupfile = realpath($backupdir.'/'.$filename); + if ($backupfile === false OR strncmp($backupdir, $backupfile, strlen($backupdir)) != 0) + die (Tools::displayError()); + + return $backupfile; + } + + /** + * Get the URL used to retreive this backup file + * + * @return The url used to request the backup file + */ + public function getBackupURL() + { + $adminDir = __PS_BASE_URI__.substr($_SERVER['SCRIPT_NAME'], strlen(__PS_BASE_URI__) ); + $adminDir = substr($adminDir, 0, strrpos($adminDir, '/')); + + return $adminDir.'/backup.php?filename='.basename($this->id); + } + + /** + * Delete the current backup file + * + * @return boolean Deletion result, true on success + */ + public function delete() + { + if (!$this->id || !unlink($this->id)) + { + $this->error = Tools::displayError('Error deleting').' '.($this->id ? '"'.$this->id.'"' : Tools::displayError('Invalid ID')); + return false; + } + return true; + } + + /** + * Deletes a range of backup files + * + * @return boolean True on success + */ + public function deleteSelection($list) + { + foreach ($list as $file) + { + $backup = new Backup($file); + if (!$backup->delete()) + { + $this->error = $backup->error; + return false; + } + } + return true; + } + + /** + * Creates a new backup file + * + * @return boolean true on successful backup + */ + public function add() + { + if ( _DB_TYPE_ !== 'MySQL' ) + { + $this->error = Tools::displayError('Sorry, backup currently only supports MySQL database types. You are using') . ' "' . _DB_TYPE_ . '"'; + return false; + } + + if (!Configuration::get('PS_BACKUP_ALL')) + $ignore_insert_table = array(_DB_PREFIX_.'connections', _DB_PREFIX_.'connections_page', _DB_PREFIX_.'connections_source', _DB_PREFIX_.'guest', _DB_PREFIX_.'statssearch'); + else + $ignore_insert_table = array(); + + // Generate some random number, to make it extra hard to guess backup file names + $rand = dechex ( mt_rand(0, min(0xffffffff, mt_getrandmax() ) ) ); + $date = time(); + $backupfile = PS_ADMIN_DIR . '/backups/' . $date . '-' . $rand . '.sql'; + + // Figure out what compression is available and open the file + if (function_exists('bzopen')) + { + $backupfile .= '.bz2'; + $fp = @bzopen($backupfile, 'w'); + } + else if (function_exists('gzopen')) + { + $backupfile .= '.gz'; + $fp = @gzopen($backupfile, 'w'); + } + else + $fp = @fopen($backupfile, 'w'); + + if ($fp === false) + { + echo Tools::displayError('Unable to create backup file') . ' "' . addslashes($backupfile) . '"'; + return false; + } + + $this->id = realpath($backupfile); + + fwrite($fp, '/* Backup for ' . Tools::getHttpHost(false, false) . __PS_BASE_URI__ . "\n * at " . date($date) . "\n */\n"); + fwrite($fp, "\n".'SET NAMES \'utf8\';'."\n\n"); + + // Find all tables + $tables = Db::getInstance()->ExecuteS('SHOW TABLES'); + $found = 0; + foreach ($tables as $table) + { + $table = current($table); + + // Skip tables which do not start with _DB_PREFIX_ + if (strlen($table) < strlen(_DB_PREFIX_) || strncmp($table, _DB_PREFIX_, strlen(_DB_PREFIX_)) != 0) + continue; + + // Export the table schema + $schema = Db::getInstance()->ExecuteS('SHOW CREATE TABLE `' . $table . '`'); + + if (count($schema) != 1 || !isset($schema[0]['Table']) || !isset($schema[0]['Create Table'])) + { + fclose($fp); + $this->delete(); + echo Tools::displayError('An error occurred while backing up. Unable to obtain the schema of').' "'.$table; + return false; + } + + fwrite($fp, '/* Scheme for table ' . $schema[0]['Table'] . " */\n"); + fwrite($fp, $schema[0]['Create Table'] . ";\n\n"); + + if (!in_array($schema[0]['Table'], $ignore_insert_table)) + { + $data = Db::getInstance()->ExecuteS('SELECT * FROM `' . $schema[0]['Table'] . '`', false); + $sizeof = DB::getInstance()->NumRows(); + $lines = explode("\n", $schema[0]['Create Table']); + + if ($data AND $sizeof > 0) + { + // Export the table data + fwrite($fp, 'INSERT INTO `' . $schema[0]['Table'] . "` VALUES\n"); + $i = 1; + while ($row = DB::getInstance()->nextRow($data)) + { + $s = '('; + + foreach ($row as $field => $value) + { + $tmp = "'" . mysql_real_escape_string($value) . "',"; + if($tmp != "'',") + $s .= $tmp; + else + { + foreach($lines AS $line) + if (strpos($line, '`'.$field.'`') !== false) + { + if (preg_match('/(.*NOT NULL.*)/Ui', $line)) + $s .= "'',"; + else + $s .= 'NULL,'; + break; + } + } + } + $s = rtrim($s, ','); + + if ($i%200 == 0 AND $i < $sizeof) + $s .= ");\nINSERT INTO `".$schema[0]['Table']."` VALUES\n"; + elseif ($i < $sizeof) + $s .= "),\n"; + else + $s .= ");\n"; + + fwrite($fp, $s); + ++$i; + } + } + } + $found++; + } + + fclose($fp); + if ($found == 0) + { + $this->delete(); + echo Tools::displayError('No valid tables were found to backup.' ); + return false; + } + + return true; + } + +} diff --git a/classes/Blowfish.php b/classes/Blowfish.php new file mode 100644 index 000000000..1048762e8 --- /dev/null +++ b/classes/Blowfish.php @@ -0,0 +1,478 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_UNPACK_NATIVE', 1); +define('PS_UNPACK_MODIFIED', 2); + +class Crypt_Blowfish +{ + + var $_P = array( + 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, + 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, + 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, + 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, + 0x9216D5D9, 0x8979FB1B + ); + + var $_S = array( + array( + 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, + 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, + 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, + 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, + 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, + 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, + 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, + 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, + 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, + 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, + 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, + 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, + 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, + 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, + 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, + 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, + 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, + 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, + 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, + 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, + 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, + 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, + 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, + 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, + 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, + 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, + 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, + 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, + 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, + 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, + 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, + 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, + 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, + 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, + 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, + 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, + 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, + 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, + 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, + 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, + 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, + 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, + 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, + 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, + 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, + 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, + 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, + 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, + 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, + 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, + 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, + 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, + 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, + 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, + 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, + 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, + 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, + 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, + 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, + 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, + 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, + 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, + 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, + 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A + ), + array( + 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, + 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, + 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, + 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, + 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, + 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, + 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, + 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, + 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, + 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, + 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, + 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, + 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, + 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, + 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, + 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, + 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, + 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, + 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, + 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, + 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, + 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, + 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, + 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, + 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, + 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, + 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, + 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, + 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, + 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, + 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, + 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, + 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, + 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, + 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, + 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, + 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, + 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, + 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, + 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, + 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, + 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, + 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, + 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, + 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, + 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, + 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, + 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, + 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, + 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, + 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, + 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, + 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, + 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, + 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, + 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, + 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, + 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, + 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, + 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, + 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, + 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 + ), + array( + 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, + 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, + 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, + 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, + 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, + 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, + 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, + 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, + 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, + 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, + 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, + 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, + 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, + 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, + 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, + 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, + 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, + 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, + 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, + 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, + 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, + 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, + 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, + 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, + 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, + 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, + 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, + 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, + 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, + 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, + 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, + 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, + 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, + 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, + 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, + 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, + 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, + 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, + 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, + 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, + 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, + 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, + 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, + 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, + 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, + 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, + 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, + 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, + 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, + 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, + 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, + 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, + 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, + 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, + 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, + 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, + 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, + 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, + 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, + 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, + 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, + 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, + 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, + 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 + ), + array( + 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, + 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, + 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, + 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, + 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, + 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, + 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, + 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, + 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, + 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, + 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, + 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, + 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, + 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, + 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, + 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, + 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, + 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, + 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, + 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, + 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, + 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, + 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, + 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, + 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, + 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, + 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, + 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, + 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, + 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, + 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, + 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, + 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, + 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, + 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, + 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, + 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, + 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, + 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, + 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, + 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, + 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, + 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, + 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, + 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, + 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, + 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, + 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, + 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, + 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, + 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, + 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, + 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, + 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, + 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, + 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, + 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, + 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, + 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, + 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, + 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, + 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, + 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, + 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 + ) + ); + + var $_iv = NULL; + + protected $_unpackMode = PS_UNPACK_NATIVE; + + function __construct($key, $iv) + { + $_iv = $iv; + + $len = strlen($key); + + $k = 0; + $data = 0; + $datal = 0; + $datar = 0; + + if (PHP_VERSION_ID == '50201' OR PHP_VERSION_ID == '50206') + $this->_unpackMode = PS_UNPACK_MODIFIED; + + for ($i = 0; $i < 18; $i++) + { + $data = 0; + for ($j = 4; $j > 0; $j--) + { + $data = $data << 8 | ord($key{$k}); + $k = ($k + 1) % $len; + } + $this->_P[$i] ^= $data; + } + + for ($i = 0; $i <= 16; $i += 2) { + $this->_encipher($datal, $datar); + $this->_P[$i] = $datal; + $this->_P[$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[0][$i] = $datal; + $this->_S[0][$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[1][$i] = $datal; + $this->_S[1][$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[2][$i] = $datal; + $this->_S[2][$i+1] = $datar; + } + for ($i = 0; $i < 256; $i += 2) { + $this->_encipher($datal, $datar); + $this->_S[3][$i] = $datal; + $this->_S[3][$i+1] = $datar; + } + } + + function _encipher(&$Xl, &$Xr) + { + for ($i = 0; $i < 16; $i++) { + $temp = $Xl ^ $this->_P[$i]; + $Xl = ((($this->_S[0][($temp>>24) & 255] + + $this->_S[1][($temp>>16) & 255]) ^ + $this->_S[2][($temp>>8) & 255]) + + $this->_S[3][$temp & 255]) ^ $Xr; + $Xr = $temp; + } + $Xr = $Xl ^ $this->_P[16]; + $Xl = $temp ^ $this->_P[17]; + } + + function _decipher(&$Xl, &$Xr) + { + for ($i = 17; $i > 1; $i--) + { + $temp = $Xl ^ $this->_P[$i]; + $Xl = ((($this->_S[0][($temp>>24) & 255] + + $this->_S[1][($temp>>16) & 255]) ^ + $this->_S[2][($temp>>8) & 255]) + + $this->_S[3][$temp & 255]) ^ $Xr; + $Xr = $temp; + } + $Xr = $Xl ^ $this->_P[1]; + $Xl = $temp ^ $this->_P[0]; + } + + function encrypt($plainText) + { + $cipherText = ''; + $len = strlen($plainText); + $plainText .= str_repeat(chr(0), (8 - ($len % 8)) % 8); + for ($i = 0; $i < $len; $i += 8) + { + list(, $Xl, $Xr) = ($this->_unpackMode == PS_UNPACK_NATIVE ? unpack('N2', substr($plainText, $i, 8)) : $this->myUnpackN2(substr($plainText, $i, 8))); + $this->_encipher($Xl, $Xr); + $cipherText .= pack('N2', $Xl, $Xr); + } + return $cipherText; + } + + function decrypt($cipherText) + { + $plainText = ''; + $len = strlen($cipherText); + $cipherText .= str_repeat(chr(0), (8 - ($len % 8)) % 8); + for ($i = 0; $i < $len; $i += 8) + { + list(, $Xl, $Xr) = ($this->_unpackMode == PS_UNPACK_NATIVE ? unpack('N2', substr($cipherText, $i, 8)) : $this->myUnpackN2(substr($cipherText, $i, 8))); + $this->_decipher($Xl, $Xr); + $plainText .= pack('N2', $Xl, $Xr); + } + return $plainText; + } + + function myUnpackN($str) + { + if (pack('L', 0x6162797A) == pack('V', 0x6162797A)) + return ((ord($str) << 24) | (ord(substr($str, 1)) << 16) | (ord(substr($str, 2)) << 8) | ord(substr($str, 3))); + else + return (ord($str) | (ord(substr($str, 1)) << 8) | (ord(substr($str, 2)) << 16) | (ord(substr($str, 3)) << 24)); + } + + function myUnpackN2($str) + { + return array('1' => $this->myUnpackN($str), '2' => $this->myUnpackN(substr($str, 4))); + } +} + +class BlowfishCore extends Crypt_Blowfish +{ + function encrypt($plaintext) + { + $ciphertext = ''; + $paddedtext = $this->maxi_pad($plaintext); + $strlen = strlen($paddedtext); + for($x = 0; $x < $strlen; $x += 8) + { + $piece = substr($paddedtext, $x, 8); + $cipher_piece = parent::encrypt($piece); + $encoded = base64_encode($cipher_piece); + $ciphertext = $ciphertext.$encoded; + } + return $ciphertext; + } + + function decrypt($ciphertext) + { + $plaintext = ''; + $chunks = explode('=', $ciphertext); + $ending_value = sizeof($chunks) ; + for($counter = 0; $counter < ($ending_value - 1); $counter++) + { + $chunk = $chunks[$counter].'='; + $decoded = base64_decode($chunk); + $piece = parent::decrypt($decoded); + $plaintext = $plaintext.$piece; + } + return $plaintext; + } + + function maxi_pad($plaintext) + { + $str_len = sizeof($plaintext); + $pad_len = $str_len % 8; + for($x = 0; $x < $pad_len; $x++) + $plaintext = $plaintext.' '; + return $plaintext; + } +} + + diff --git a/classes/CMS.php b/classes/CMS.php new file mode 100644 index 000000000..08e16bafe --- /dev/null +++ b/classes/CMS.php @@ -0,0 +1,254 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CMSCore extends ObjectModel +{ + + /** @var string Name */ + public $meta_title; + public $meta_description; + public $meta_keywords; + public $content; + public $link_rewrite; + public $id_cms_category; + public $position; + public $active; + + protected $fieldsRequiredLang = array('meta_title', 'link_rewrite'); + protected $fieldsSizeLang = array('meta_description' => 255, 'meta_keywords' => 255, 'meta_title' => 128, 'link_rewrite' => 128, 'content' => 3999999999999); + protected $fieldsValidateLang = array('meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName', 'meta_title' => 'isGenericName', 'link_rewrite' => 'isLinkRewrite', 'content' => 'isString'); + + protected $table = 'cms'; + protected $identifier = 'id_cms'; + + public function getFields() + { + parent::validateFields(); + $fields['id_cms'] = (int)($this->id); + $fields['id_cms_category'] = (int)($this->id_cms_category); + $fields['position'] = (int)($this->position); + $fields['active'] = (int)($this->active); + return $fields; + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + + $fieldsArray = array('meta_title', 'meta_description', 'meta_keywords', 'link_rewrite'); + $fields = array(); + $languages = Language::getLanguages(false); + $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); + foreach ($languages as $language) + { + $fields[$language['id_lang']]['id_lang'] = (int)($language['id_lang']); + $fields[$language['id_lang']][$this->identifier] = (int)($this->id); + $fields[$language['id_lang']]['content'] = (isset($this->content[$language['id_lang']])) ? pSQL($this->content[$language['id_lang']], true) : ''; + foreach ($fieldsArray as $field) + { + if (!Validate::isTableOrIdentifier($field)) + die(Tools::displayError()); + if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]); + elseif (in_array($field, $this->fieldsRequiredLang)) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); + else + $fields[$language['id_lang']][$field] = ''; + } + } + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + $this->position = CMS::getLastPosition((int)(Tools::getValue('id_cms_category'))); + return parent::add($autodate, true); + } + + public function update($nullValues = false) + { + if (parent::update($nullValues)) + return $this->cleanPositions($this->id_cms_category); + return false; + } + + public function delete() + { + if (parent::delete()) + return $this->cleanPositions($this->id_cms_category); + return false; + } + + public static function getLinks($id_lang, $selection = NULL, $active = true) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.id_cms, cl.link_rewrite, cl.meta_title + FROM '._DB_PREFIX_.'cms c + LEFT JOIN '._DB_PREFIX_.'cms_lang cl ON (c.id_cms = cl.id_cms AND cl.id_lang = '.(int)($id_lang).') + WHERE 1 + '.(($selection !== NULL) ? ' AND c.id_cms IN ('.implode(',', array_map('intval', $selection)).')' : ''). + ($active ? ' AND c.`active` = 1 ' : ''). + 'ORDER BY c.`position`'); + $link = new Link(); + $links = array(); + if ($result) + foreach ($result as $row) + { + $row['link'] = $link->getCMSLink((int)($row['id_cms']), $row['link_rewrite']); + $links[] = $row; + } + return $links; + } + + public static function listCms($id_lang = NULL, $id_block = false, $active = true) + { + if (empty($id_lang)) + $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.id_cms, l.meta_title + FROM '._DB_PREFIX_.'cms c + JOIN '._DB_PREFIX_.'cms_lang l ON (c.id_cms = l.id_cms) + '.(($id_block) ? 'JOIN '._DB_PREFIX_.'block_cms b ON (c.id_cms = b.id_cms)' : '').' + WHERE l.id_lang = '.(int)($id_lang).(($id_block) ? ' AND b.id_block = '.(int)($id_block) : '').($active ? ' AND c.`active` = 1 ' : '').' + ORDER BY c.`position`'); + } + + /** + * @deprecated + */ + public static function isInBlock($id_cms, $id_block) + { + Tools::displayAsDeprecated(); + Db::getInstance()->getRow(' + SELECT id_cms FROM '._DB_PREFIX_.'block_cms + WHERE id_block = '.(int)($id_block).' AND id_cms = '.(int)($id_cms)); + + return (Db::getInstance()->NumRows()); + } + + /** + * @deprecated + */ + public static function updateCmsToBlock($cms, $id_block) + { + Tools::displayAsDeprecated(); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'block_cms` WHERE `id_block` = '.(int)($id_block)); + + $list = ''; + foreach ($cms AS $id_cms) + $list .= '('.(int)($id_block).', '.(int)($id_cms).'),'; + $list = rtrim($list, ','); + + if (!empty($list)) + Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'block_cms (id_block, id_cms) VALUES '.pSQL($list)); + + return true; + } + + public function updatePosition($way, $position) + { + if (!$res = Db::getInstance()->ExecuteS(' + SELECT cp.`id_cms`, cp.`position`, cp.`id_cms_category` + FROM `'._DB_PREFIX_.'cms` cp + WHERE cp.`id_cms_category` = '.(int)(Tools::getValue('id_cms_category', 1)).' + ORDER BY cp.`position` ASC' + )) + return false; + + foreach ($res AS $cms) + if ((int)($cms['id_cms']) == (int)($this->id)) + $movedCms = $cms; + + if (!isset($movedCms) || !isset($position)) + return false; + + // < and > statements rather than BETWEEN operator + // since BETWEEN is treated differently according to databases + return (Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'cms` + SET `position`= `position` '.($way ? '- 1' : '+ 1').' + WHERE `position` + '.($way + ? '> '.(int)($movedCms['position']).' AND `position` <= '.(int)($position) + : '< '.(int)($movedCms['position']).' AND `position` >= '.(int)($position)).' + AND `id_cms_category`='.(int)($movedCms['id_cms_category'])) + AND Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'cms` + SET `position` = '.(int)($position).' + WHERE `id_cms` = '.(int)($movedCms['id_cms']).' + AND `id_cms_category`='.(int)($movedCms['id_cms_category']))); + } + + static public function cleanPositions($id_category) + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_cms` + FROM `'._DB_PREFIX_.'cms` + WHERE `id_cms_category` = '.(int)($id_category).' + ORDER BY `position`'); + $sizeof = sizeof($result); + for ($i = 0; $i < $sizeof; ++$i){ + $sql = ' + UPDATE `'._DB_PREFIX_.'cms` + SET `position` = '.(int)($i).' + WHERE `id_cms_category` = '.(int)($id_category).' + AND `id_cms` = '.(int)($result[$i]['id_cms']); + Db::getInstance()->Execute($sql); + } + return true; + } + + static public function getLastPosition($id_category) + { + return (Db::getInstance()->getValue('SELECT MAX(position)+1 FROM `'._DB_PREFIX_.'cms` WHERE `id_cms_category` = '.(int)($id_category))); + } + + static public function getCMSPages($id_lang = NULL, $id_cms_category = NULL, $active = true) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'cms` c + JOIN `'._DB_PREFIX_.'cms_lang` l ON (c.id_cms = l.id_cms)'. + (isset($id_cms_category) ? 'WHERE `id_cms_category` = '.(int)($id_cms_category) : ''). + ($active ? ' AND c.`active` = 1 ' : '').' + AND l.id_lang = '.(int)($id_lang).' + ORDER BY `position`'); + } + public static function getUrlRewriteInformations($id_cms) + { + $sql = ' + SELECT l.`id_lang`, c.`link_rewrite` + FROM `'._DB_PREFIX_.'cms_lang` AS c + LEFT JOIN `'._DB_PREFIX_.'lang` AS l ON c.`id_lang` = l.`id_lang` + WHERE c.`id_cms` = '.(int)$id_cms.' + AND l.`active` = 1'; + $arr_return = Db::getInstance()->ExecuteS($sql); + return $arr_return; + } +} + diff --git a/classes/CMSCategory.php b/classes/CMSCategory.php new file mode 100644 index 000000000..399dcacbc --- /dev/null +++ b/classes/CMSCategory.php @@ -0,0 +1,656 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CMSCategoryCore extends ObjectModel +{ + public $id; + + /** @var integer CMSCategory ID */ + public $id_cms_category; + + /** @var string Name */ + public $name; + + /** @var boolean Status for display */ + public $active = 1; + + /** @var string Description */ + public $description; + + /** @var integer Parent CMSCategory ID */ + public $id_parent; + + /** @var integer category position */ + public $position; + + /** @var integer Parents number */ + public $level_depth; + + /** @var string string used in rewrited URL */ + public $link_rewrite; + + /** @var string Meta title */ + public $meta_title; + + /** @var string Meta keywords */ + public $meta_keywords; + + /** @var string Meta description */ + public $meta_description; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected static $_links = array(); + + + protected $tables = array ('cms_category', 'cms_category_lang'); + + protected $fieldsRequired = array('id_parent', 'active'); + protected $fieldsSize = array('id_parent' => 10, 'active' => 1); + protected $fieldsValidate = array('active' => 'isBool'); + protected $fieldsRequiredLang = array('name', 'link_rewrite'); + protected $fieldsSizeLang = array('name' => 64, 'link_rewrite' => 64, 'meta_title' => 128, 'meta_description' => 255, 'meta_keywords' => 255); + protected $fieldsValidateLang = array('name' => 'isCatalogName', 'link_rewrite' => 'isLinkRewrite', 'description' => 'isCleanHtml', + 'meta_title' => 'isGenericName', 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName'); + + protected $table = 'cms_category'; + protected $identifier = 'id_cms_category'; + + public function __construct($id_cms_category = NULL, $id_lang = NULL) + { + parent::__construct($id_cms_category, $id_lang); + } + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_cms_category'] = (int)($this->id); + $fields['active'] = (int)($this->active); + $fields['id_parent'] = (int)($this->id_parent); + $fields['position'] = (int)($this->position); + $fields['level_depth'] = (int)($this->level_depth); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'description', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description')); + } + + public function add($autodate = true, $nullValues = false) + { + $this->position = self::getLastPosition((int)(Tools::getValue('id_parent'))); + $this->level_depth = $this->calcLevelDepth(); + foreach ($this->name AS $k => $value) + if (preg_match('/^[1-9]\./', $value)) + $this->name[$k] = '0'.$value; + $ret = parent::add($autodate); + $this->cleanPositions($this->id_parent); + return $ret; + } + + public function update($nullValues = false) + { + $this->level_depth = $this->calcLevelDepth(); + foreach ($this->name AS $k => $value) + if (preg_match('/^[1-9]\./', $value)) + $this->name[$k] = '0'.$value; + return parent::update(); + } + + /** + * Recursive scan of subcategories + * + * @param integer $maxDepth Maximum depth of the tree (i.e. 2 => 3 levels depth) + * @param integer $currentDepth specify the current depth in the tree (don't use it, only for rucursivity!) + * @param array $excludedIdsArray specify a list of ids to exclude of results + * @param integer $idLang Specify the id of the language used + * + * @return array Subcategories lite tree + */ + function recurseLiteCategTree($maxDepth = 3, $currentDepth = 0, $idLang = NULL, $excludedIdsArray = NULL) + { + global $link; + + //get idLang + $idLang = is_null($idLang) ? _USER_ID_LANG_ : (int)($idLang); + + //recursivity for subcategories + $children = array(); + if (($maxDepth == 0 OR $currentDepth < $maxDepth) AND $subcats = $this->getSubCategories($idLang, true) AND sizeof($subcats)) + foreach ($subcats as &$subcat) + { + if (!$subcat['id_cms_category']) + break; + elseif ( !is_array($excludedIdsArray) || !in_array($subcat['id_cms_category'], $excludedIdsArray) ) + { + $categ = new CMSCategory($subcat['id_cms_category'] ,$idLang); + $categ->name = CMSCategory::hideCMSCategoryPosition($categ->name); + $children[] = $categ->recurseLiteCategTree($maxDepth, $currentDepth + 1, $idLang, $excludedIdsArray); + } + } + + + return array( + 'id' => $this->id_cms_category, + 'link' => $link->getCMSCategoryLink($this->id, $this->link_rewrite), + 'name' => $this->name, + 'desc'=> $this->description, + 'children' => $children + ); + } + + static public function getRecurseCategory($id_lang = _USER_ID_LANG_, $current = 1, $active = 1, $links = 0) + { + $category = Db::getInstance()->getRow(' + SELECT c.`id_cms_category`, c.`id_parent`, c.`level_depth`, cl.`name`, cl.`link_rewrite` + FROM `'._DB_PREFIX_.'cms_category` c + JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON c.`id_cms_category` = cl.`id_cms_category` + WHERE c.`id_cms_category` = '.(int)($current).' + AND `id_lang` = '.(int)($id_lang)); + $result = Db::getInstance()->ExecuteS(' + SELECT c.`id_cms_category` + FROM `'._DB_PREFIX_.'cms_category` c + WHERE c.`id_parent` = '.(int)($current). + ($active ? ' AND c.`active` = 1' : '')); + foreach ($result as $row) + $category['children'][] = self::getRecurseCategory($id_lang, $row['id_cms_category'], $active, $links); + $category['cms'] = Db::getInstance()->ExecuteS(' + SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite` + FROM `'._DB_PREFIX_.'cms` c + JOIN `'._DB_PREFIX_.'cms_lang` cl ON c.`id_cms` = cl.`id_cms` + WHERE `id_cms_category` = '.(int)($current).' + AND cl.`id_lang` = '.(int)($id_lang).($active ? ' AND c.`active` = 1' : '').' + ORDER BY c.`position`'); + if ($links == 1) + { + $link = new Link(); + $category['link'] = $link->getCMSCategoryLink($current, $category['link_rewrite']); + foreach($category['cms'] as $key => $cms) + $category['cms'][$key]['link'] = $link->getCMSLink($cms['id_cms'], $cms['link_rewrite']); + } + return $category; + } + + static public function recurseCMSCategory($categories, $current, $id_cms_category = 1, $id_selected = 1, $is_html = 0) + { + global $currentIndex; + $html = ''; + if ($is_html == 0) + echo $html; + if (isset($categories[$id_cms_category])) + foreach ($categories[$id_cms_category] AS $key => $row) + $html .= self::recurseCMSCategory($categories, $categories[$id_cms_category][$key], $key, $id_selected, $is_html); + return $html; + } + + + + /** + * Recursively add specified CMSCategory childs to $toDelete array + * + * @param array &$toDelete Array reference where categories ID will be saved + * @param array $id_cms_category Parent CMSCategory ID + */ + protected function recursiveDelete(&$toDelete, $id_cms_category) + { + if (!is_array($toDelete) OR !$id_cms_category) + die(Tools::displayError()); + + $result = Db::getInstance()->ExecuteS(' + SELECT `id_cms_category` + FROM `'._DB_PREFIX_.'cms_category` + WHERE `id_parent` = '.(int)($id_cms_category)); + foreach ($result AS $k => $row) + { + $toDelete[] = (int)($row['id_cms_category']); + $this->recursiveDelete($toDelete, (int)($row['id_cms_category'])); + } + } + + public function delete() + { + if ($this->id == 1) return false; + + $this->clearCache(); + + /* Get childs categories */ + $toDelete = array((int)($this->id)); + $this->recursiveDelete($toDelete, (int)($this->id)); + $toDelete = array_unique($toDelete); + + /* Delete CMS Category and its child from database */ + $list = sizeof($toDelete) > 1 ? implode(',', $toDelete) : (int)($this->id); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cms_category` WHERE `id_cms_category` IN ('.$list.')'); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cms_category_lang` WHERE `id_cms_category` IN ('.$list.')'); + + self::cleanPositions($this->id_parent); + + /* Delete pages which are in categories to delete */ + $result = Db::getInstance()->ExecuteS(' + SELECT `id_cms` + FROM `'._DB_PREFIX_.'cms` + WHERE `id_cms_category` IN ('.$list.')'); + foreach ($result as $p) + { + $product = new CMS((int)($p['id_cms'])); + if (Validate::isLoadedObject($product)) + $product->delete(); + } + return true; + } + + /** + * Delete several categories from database + * + * return boolean Deletion result + */ + public function deleteSelection($categories) + { + $return = 1; + foreach ($categories AS $id_category_cms) + { + $category_cms = new CMSCategory((int)($id_category_cms)); + $return &= $category_cms->delete(); + } + return $return; + } + + /** + * Get the number of parent categories + * + * @return integer Level depth + */ + public function calcLevelDepth() + { + $parentCMSCategory = new CMSCategory((int)($this->id_parent)); + if (!$parentCMSCategory) + die('parent CMS Category does not exist'); + return $parentCMSCategory->level_depth + 1; + } + + /** + * Return available categories + * + * @param integer $id_lang Language ID + * @param boolean $active return only active categories + * @return array Categories + */ + static public function getCategories($id_lang, $active = true, $order = true) + { + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON c.`id_cms_category` = cl.`id_cms_category` + WHERE `id_lang` = '.(int)($id_lang).' + '.($active ? 'AND `active` = 1' : '').' + ORDER BY `name` ASC'); + + if (!$order) + return $result; + + $categories = array(); + foreach ($result AS $row) + $categories[$row['id_parent']][$row['id_cms_category']]['infos'] = $row; + return $categories; + } + + static public function getSimpleCategories($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.`id_cms_category`, cl.`name` + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (c.`id_cms_category` = cl.`id_cms_category`) + WHERE cl.`id_lang` = '.(int)($id_lang).' + ORDER BY cl.`name`'); + } + + /** + * Return current CMSCategory childs + * + * @param integer $id_lang Language ID + * @param boolean $active return only active categories + * @return array Categories + */ + public function getSubCategories($id_lang, $active = true) + { + global $cookie; + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (c.`id_cms_category` = cl.`id_cms_category` AND `id_lang` = '.(int)($id_lang).') + WHERE `id_parent` = '.(int)($this->id).' + '.($active ? 'AND `active` = 1' : '').' + GROUP BY c.`id_cms_category` + ORDER BY `name` ASC'); + + /* Modify SQL result */ + foreach ($result AS &$row) + { + $row['name'] = CMSCategory::hideCMSCategoryPosition($row['name']); + } + return $result; + } + + /** + * Hide CMSCategory prefix used for position + * + * @param string $name CMSCategory name + * @return string Name without position + */ + static public function hideCMSCategoryPosition($name) + { + return preg_replace('/^[0-9]+\./', '', $name); + } + + /** + * Return main categories + * + * @param integer $id_lang Language ID + * @param boolean $active return only active categories + * @return array categories + */ + static public function getHomeCategories($id_lang, $active = true) + { + return self::getChildren(1, $id_lang, $active); + } + /** + * @deprecated + **/ + static public function getRootCMSCategory($id_lang = NULL) + { + Tools::displayAsDeprecated(); + //get idLang + $id_lang = is_null($id_lang) ? _USER_ID_LANG_ : (int)($id_lang); + return new CMSCategory (1, $id_lang); + } + + static public function getChildren($id_parent, $id_lang, $active = true) + { + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.`id_cms_category`, cl.`name`, cl.`link_rewrite` + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON c.`id_cms_category` = cl.`id_cms_category` + WHERE `id_lang` = '.(int)($id_lang).' + AND c.`id_parent` = '.(int)($id_parent).' + '.($active ? 'AND `active` = 1' : '').' + ORDER BY `name` ASC'); + + /* Modify SQL result */ + $resultsArray = array(); + foreach ($result AS $row) + { + $row['name'] = CMSCategory::hideCMSCategoryPosition($row['name']); + $resultsArray[] = $row; + } + return $resultsArray; + } + + /** + * Check if CMSCategory can be moved in another one + * + * @param integer $id_parent Parent candidate + * @return boolean Parent validity + */ + public static function checkBeforeMove($id_cms_category, $id_parent) + { + if ($id_cms_category == $id_parent) return false; + if ($id_parent == 1) return true; + $i = (int)($id_parent); + + while (42) + { + $result = Db::getInstance()->getRow('SELECT `id_parent` FROM `'._DB_PREFIX_.'cms_category` WHERE `id_cms_category` = '.(int)($i)); + if (!isset($result['id_parent'])) return false; + if ($result['id_parent'] == $id_cms_category) return false; + if ($result['id_parent'] == 1) return true; + $i = $result['id_parent']; + } + } + + public static function getLinkRewrite($id_cms_category, $id_lang) + { + if (!Validate::isUnsignedId($id_cms_category) OR !Validate::isUnsignedId($id_lang)) + return false; + + if (isset(self::$_links[$id_cms_category.'-'.$id_lang])) + return self::$_links[$id_cms_category.'-'.$id_lang]; + + $result = Db::getInstance()->getRow(' + SELECT cl.`link_rewrite` + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON c.`id_cms_category` = cl.`id_cms_category` + WHERE `id_lang` = '.(int)($id_lang).' + AND c.`id_cms_category` = '.(int)($id_cms_category)); + self::$_links[$id_cms_category.'-'.$id_lang] = $result['link_rewrite']; + return $result['link_rewrite']; + } + + public function getLink() + { + global $link; + return $link->getCMSCategoryLink($this->id, $this->link_rewrite); + } + + public function getName($id_lang = NULL) + { + if (!$id_lang) + { + global $cookie; + + if (isset($this->name[$cookie->id_lang])) + $id_lang = $cookie->id_lang; + else + $id_lang = (int)(Configuration::get('PS_LANG_DEFAULT')); + } + return isset($this->name[$id_lang]) ? $this->name[$id_lang] : ''; + } + + /** + * Light back office search for categories + * + * @param integer $id_lang Language ID + * @param string $query Searched string + * @param boolean $unrestricted allows search without lang and includes first CMSCategory and exact match + * @return array Corresponding categories + */ + static public function searchByName($id_lang, $query, $unrestricted = false) + { + if ($unrestricted === true) + return Db::getInstance()->getRow(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (c.`id_cms_category` = cl.`id_cms_category`) + WHERE `name` LIKE \''.pSQL($query).'\''); + else + return Db::getInstance()->ExecuteS(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (c.`id_cms_category` = cl.`id_cms_category` AND `id_lang` = '.(int)($id_lang).') + WHERE `name` LIKE \'%'.pSQL($query).'%\' AND c.`id_cms_category` != 1'); + } + + /** + * Retrieve CMSCategory by name and parent CMSCategory id + * + * @param integer $id_lang Language ID + * @param string $CMSCategory_name Searched CMSCategory name + * @param integer $id_parent_CMSCategory parent CMSCategory ID + * @return array Corresponding CMSCategory + * @deprecated + */ + static public function searchByNameAndParentCMSCategoryId($id_lang, $CMSCategory_name, $id_parent_CMSCategory) + { + Tools::displayAsDeprecated(); + return Db::getInstance()->getRow(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (c.`id_cms_category` = cl.`id_cms_category` AND `id_lang` = '.(int)($id_lang).') + WHERE `name` LIKE \''.pSQL($CMSCategory_name).'\' + AND c.`id_cms_category` != 1 + AND c.`id_parent` = '.(int)($id_parent_CMSCategory)); + } + + /** + * Get Each parent CMSCategory of this CMSCategory until the root CMSCategory + * + * @param integer $id_lang Language ID + * @return array Corresponding categories + */ + public function getParentsCategories($idLang = null) + { + //get idLang + $idLang = is_null($idLang) ? _USER_ID_LANG_ : (int)($idLang); + + $categories = null; + $idCurrent = (int)($this->id); + while (true) + { + $query = ' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'cms_category` c + LEFT JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (c.`id_cms_category` = cl.`id_cms_category` AND `id_lang` = '.(int)($idLang).') + WHERE c.`id_cms_category` = '.$idCurrent.' AND c.`id_parent` != 0 + '; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); + + $categories[] = $result[0]; + if(!$result OR $result[0]['id_parent'] == 1) + return $categories; + $idCurrent = $result[0]['id_parent']; + } + } + /** + * Specify if a CMSCategory already in base + * + * @param $id_cms_category CMSCategory id + * @return boolean + * @deprecated + */ + static public function CMSCategoryExists($id_cms_category) + { + Tools::displayAsDeprecated(); + $row = Db::getInstance()->getRow(' + SELECT `id_cms_category` + FROM '._DB_PREFIX_.'cms_category c + WHERE c.`id_cms_category` = '.(int)($id_cms_category)); + + return isset($row['id_cms_category']); + } + + public function updatePosition($way, $position) + { + if (!$res = Db::getInstance()->ExecuteS(' + SELECT cp.`id_cms_category`, cp.`position`, cp.`id_parent` + FROM `'._DB_PREFIX_.'cms_category` cp + WHERE cp.`id_parent` = '.(int)(Tools::getValue('id_cms_category_parent', 1)).' + ORDER BY cp.`position` ASC' + )) + return false; + foreach ($res AS $category) + if ((int)($category['id_cms_category']) == (int)($this->id)) + $movedCategory = $category; + + if (!isset($movedCategory) || !isset($position)) + return false; + // < and > statements rather than BETWEEN operator + // since BETWEEN is treated differently according to databases + return (Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'cms_category` + SET `position`= `position` '.($way ? '- 1' : '+ 1').' + WHERE `position` + '.($way + ? '> '.(int)($movedCategory['position']).' AND `position` <= '.(int)($position) + : '< '.(int)($movedCategory['position']).' AND `position` >= '.(int)($position)).' + AND `id_parent`='.(int)($movedCategory['id_parent'])) + AND Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'cms_category` + SET `position` = '.(int)($position).' + WHERE `id_parent` = '.(int)($movedCategory['id_parent']).' + AND `id_cms_category`='.(int)($movedCategory['id_cms_category']))); + } + + static public function cleanPositions($id_category_parent) + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_cms_category` + FROM `'._DB_PREFIX_.'cms_category` + WHERE `id_parent` = '.(int)($id_category_parent).' + ORDER BY `position`'); + $sizeof = sizeof($result); + for ($i = 0; $i < $sizeof; ++$i){ + $sql = ' + UPDATE `'._DB_PREFIX_.'cms_category` + SET `position` = '.(int)($i).' + WHERE `id_parent` = '.(int)($id_category_parent).' + AND `id_cms_category` = '.(int)($result[$i]['id_cms_category']); + Db::getInstance()->Execute($sql); + } + return true; + } + + static public function getLastPosition($id_category_parent) + { + return (Db::getInstance()->getValue('SELECT MAX(position)+1 FROM `'._DB_PREFIX_.'cms_category` WHERE `id_parent` = '.(int)($id_category_parent))); + } + public static function getUrlRewriteInformations($id_category) + { + $sql = ' + SELECT l.`id_lang`, c.`link_rewrite` + FROM `'._DB_PREFIX_.'cms_category_lang` AS c + LEFT JOIN `'._DB_PREFIX_.'lang` AS l ON c.`id_lang` = l.`id_lang` + WHERE c.`id_cms_category` = '.(int)$id_category.' + AND l.`active` = 1'; + $arr_return = Db::getInstance()->ExecuteS($sql); + return $arr_return; + } +} + + diff --git a/classes/Cache.php b/classes/Cache.php new file mode 100755 index 000000000..70c014286 --- /dev/null +++ b/classes/Cache.php @@ -0,0 +1,80 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class CacheCore +{ + + protected static $_instance; + protected $_keysCached; + protected $_tablesCached = array(); + protected $_blackList = array('cart', + 'cart_discount', + 'cart_product', + 'connections', + 'connections_source', + 'connections_page', + 'customer', + 'customer_group', + 'customized_data', + 'guest', + 'pagenotfound', + 'page_viewed'); + public static function getInstance() + { + if(!isset(self::$_instance)) + { + $caching_system = _PS_CACHING_SYSTEM_; + self::$_instance = new $caching_system(); + + } + return self::$_instance; + } + + protected function __construct() + { + } + + protected function __destruct() + { + } + + protected function isBlacklist($query) + { + foreach ($this->_blackList AS $find) + if (strpos($query, $find)) + return true; + return false; + } + + abstract public function get($key); + abstract public function delete($key, $timeout = 0); + abstract public function set($key, $value, $expire = 0); + abstract public function flush(); + abstract public function setQuery($query, $result); + abstract public function deleteQuery($query); + +} diff --git a/classes/CacheFS.php b/classes/CacheFS.php new file mode 100755 index 000000000..2fbb89903 --- /dev/null +++ b/classes/CacheFS.php @@ -0,0 +1,175 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CacheFSCore extends Cache { + + protected $_depth; + + protected function __construct() + { + parent::__construct(); + return $this->_init(); + } + + protected function _init() + { + $this->_depth = Db::getInstance()->getValue('SELECT value FROM '._DB_PREFIX_.'configuration WHERE name=\'PS_CACHEFS_DIRECTORY_DEPTH\'', false); + return $this->_setKeys(); + } + + public function set($key, $value, $expire = 0) + { + $path = _PS_CACHEFS_DIRECTORY_; + for ($i = 0; $i < $this->_depth; $i++) + { + $path.=$key[$i].'/'; + } + if(file_put_contents($path.$key, serialize($value))) + { + $this->_keysCached[$key] = true; + return $key; + } + return false; + } + + public function setNumRows($key, $value, $expire = 0) + { + return $this->set($key.'_nrows', $value, $expire); + } + + public function getNumRows($key) + { + return $this->get($key.'_nrows'); + } + + public function get($key) + { + if (!isset($this->_keysCached[$key])) + return false; + $path = _PS_CACHEFS_DIRECTORY_; + for ($i = 0; $i < $this->_depth; $i++) + $path.=$key[$i].'/'; + if (!file_exists($path.$key)) + { + unset($this->_keysCached[$key]); + return false; + } + $file = file_get_contents($path.$key); + return unserialize($file); + } + + protected function _setKeys() + { + if (file_exists(_PS_CACHEFS_DIRECTORY_.'keysCached')) + { + $file = file_get_contents(_PS_CACHEFS_DIRECTORY_.'keysCached'); + $this->_keysCached = unserialize($file); + } + if (file_exists(_PS_CACHEFS_DIRECTORY_.'tablesCached')) + { + $file = file_get_contents(_PS_CACHEFS_DIRECTORY_.'tablesCached'); + $this->_tablesCached = unserialize($file); + } + return true; + } + + public function setQuery($query, $result) + { + $md5_query = md5($query); + if (isset($this->_keysCached[$md5_query])) + return true; + if ($this->isBlacklist($query)) + return true; + $key = $this->set($md5_query, $result); + if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) + foreach($res[1] AS $table) + if(!isset($this->_tablesCached[$table][$key])) + $this->_tablesCached[$table][$key] = true; + } + + public function delete($key, $timeout = 0) + { + $path = _PS_CACHEFS_DIRECTORY_; + if (!isset($this->_keysCached[$key])) + return; + for ($i = 0; $i < $this->_depth; $i++) + $path.=$key[$i].'/'; + if (!file_exists($path.$key)) + return true; + if (!unlink($path.$key)) + return false; + unset($this->_keysCached[$key]); + return true; + } + + public function deleteQuery($query) + { + + if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) + foreach ($res[1] AS $table) + if (isset($this->_tablesCached[$table])) + { + foreach ($this->_tablesCached[$table] AS $fsKey => $foo) + { + $this->delete($fsKey); + $this->delete($fsKey.'_nrows'); + } + unset($this->_tablesCached[$table]); + } + } + + public function flush() + { + } + + public function __destruct() + { + parent::__destruct(); + file_put_contents(_PS_CACHEFS_DIRECTORY_.'keysCached', serialize($this->_keysCached)); + file_put_contents(_PS_CACHEFS_DIRECTORY_.'tablesCached', serialize($this->_tablesCached)); + } + + public static function deleteCacheDirectory() + { + Tools::deleteDirectory(_PS_CACHEFS_DIRECTORY_, false); + } + + public static function createCacheDirectories($level_depth, $directory = false) + { + if (!$directory) + $directory = _PS_CACHEFS_DIRECTORY_; + $chars = '0123456789abcdefghijklmnopqrstuvwxyz'; + for ($i = 0; $i < strlen($chars); $i++) + { + $new_dir = $directory.$chars[$i].'/'; + if (mkdir($new_dir)) + if (chmod($new_dir, 0777)) + if ($level_depth - 1 > 0) + self::createCacheDirectories($level_depth - 1, $new_dir); + } + } +} diff --git a/classes/Carrier.php b/classes/Carrier.php new file mode 100644 index 000000000..761995055 --- /dev/null +++ b/classes/Carrier.php @@ -0,0 +1,687 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CarrierCore extends ObjectModel +{ + const SHIPPING_METHOD_DEFAULT = 0; + const SHIPPING_METHOD_WEIGHT = 1; + const SHIPPING_METHOD_PRICE = 2; + + /** @var int Tax id (none = 0) */ + public $id_tax_rules_group; + + /** @var string Name */ + public $name; + + /** @var string URL with a '@' for */ + public $url; + + /** @var string Delay needed to deliver customer */ + public $delay; + + /** @var boolean Carrier statuts */ + public $active = true; + + /** @var boolean True if carrier has been deleted (staying in database as deleted) */ + public $deleted = 0; + + /** @var boolean Active or not the shipping handling */ + public $shipping_handling = true; + + /** @var int Behavior taken for unknown range */ + public $range_behavior; + + /** @var boolean Carrier module */ + public $is_module; + + /** @var int shipping behavior: by weight or by price */ + public $shipping_method = 0; + + /** @var boolean Shipping external */ + public $shipping_external = 0; + + /** @var string Shipping external */ + public $external_module_name = NULL; + + /** @var boolean Need Range */ + public $need_range = 0; + + protected $fieldsRequired = array('name', 'active'); + protected $fieldsSize = array('name' => 64); + protected $fieldsValidate = array('id_tax_rules_group' => 'isInt', 'name' => 'isCarrierName', 'active' => 'isBool', 'url' => 'isAbsoluteUrl', 'shipping_handling' => 'isBool', 'range_behavior' => 'isBool', 'shipping_method' => 'isUnsignedInt'); + protected $fieldsRequiredLang = array('delay'); + protected $fieldsSizeLang = array('delay' => 128); + protected $fieldsValidateLang = array('delay' => 'isGenericName'); + + protected $table = 'carrier'; + protected $identifier = 'id_carrier'; + + protected static $priceByWeight = array(); + protected static $priceByWeight2 = array(); + protected static $priceByPrice = array(); + protected static $priceByPrice2 = array(); + + protected static $_cache_tax_rule = array(); + + protected $webserviceParameters = array( + 'fields' => array( + 'id_tax_rules_group' => array(), + 'deleted' => array(), + 'is_module' => array(), + ), + ); + + public function getFields() + { + parent::validateFields(); + $fields['id_tax_rules_group'] = (int)($this->id_tax_rules_group); + $fields['name'] = pSQL($this->name); + $fields['url'] = pSQL($this->url); + $fields['active'] = (int)($this->active); + $fields['deleted'] = (int)($this->deleted); + $fields['shipping_handling'] = (int)($this->shipping_handling); + $fields['range_behavior'] = (int)($this->range_behavior); + $fields['shipping_method'] = (int)($this->shipping_method); + $fields['is_module'] = (int)($this->is_module); + $fields['shipping_external'] = (int)($this->shipping_external); + $fields['external_module_name'] = $this->external_module_name; + $fields['need_range'] = $this->need_range; + + return $fields; + } + + public function __construct($id = NULL, $id_lang = NULL) + { + parent::__construct($id, $id_lang); + if ($this->name == '0') + $this->name = Configuration::get('PS_SHOP_NAME'); + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('delay')); + } + + public function add($autodate = true, $nullValues = false) + { + if (!parent::add($autodate, $nullValues) OR !Validate::isLoadedObject($this)) + return false; + if (!$result = Db::getInstance()->ExecuteS('SELECT `id_carrier` FROM `'._DB_PREFIX_.$this->table.'` WHERE `deleted` = 0')) + return false; + if (!$numRows = Db::getInstance()->NumRows()) + return false; + if ((int)($numRows) == 1) + Configuration::updateValue('PS_CARRIER_DEFAULT', (int)($this->id)); + return true; + } + + /** + * Change carrier id in delivery prices when updating a carrier + * + * @param integer $id_old Old id carrier + */ + public function setConfiguration($id_old) + { + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'delivery` SET `id_carrier` = '.(int)($this->id).' WHERE `id_carrier` = '.(int)($id_old)); + } + + /** + * Get delivery prices for a given order + * + * @param floatval $totalWeight Order total weight + * @param integer $id_zone Zone id (for customer delivery address) + * @return float Delivery price + */ + public function getDeliveryPriceByWeight($totalWeight, $id_zone) + { + $cache_key = $this->id.'_'.$totalWeight.'_'.$id_zone; + if (!isset(self::$priceByWeight[$cache_key])) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT d.`price` + FROM `'._DB_PREFIX_.'delivery` d + LEFT JOIN `'._DB_PREFIX_.'range_weight` w ON (d.`id_range_weight` = w.`id_range_weight`) + WHERE d.`id_zone` = '.(int)($id_zone).' + AND '.(float)($totalWeight).' >= w.`delimiter1` + AND '.(float)($totalWeight).' < w.`delimiter2` + AND d.`id_carrier` = '.(int)($this->id).' + ORDER BY w.`delimiter1` ASC'); + if (!isset($result['price'])) + self::$priceByWeight[$cache_key] = $this->getMaxDeliveryPriceByWeight($id_zone); + else + self::$priceByWeight[$cache_key] = $result['price']; + } + return self::$priceByWeight[$cache_key]; + } + + static public function checkDeliveryPriceByWeight($id_carrier, $totalWeight, $id_zone) + { + $cache_key = $id_carrier.'_'.$totalWeight.'_'.$id_zone; + if (!isset(self::$priceByWeight2[$cache_key])) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT d.`price` + FROM `'._DB_PREFIX_.'delivery` d + LEFT JOIN `'._DB_PREFIX_.'range_weight` w ON d.`id_range_weight` = w.`id_range_weight` + WHERE d.`id_zone` = '.(int)($id_zone).' + AND '.(float)($totalWeight).' >= w.`delimiter1` + AND '.(float)($totalWeight).' < w.`delimiter2` + AND d.`id_carrier` = '.(int)($id_carrier).' + ORDER BY w.`delimiter1` ASC'); + self::$priceByWeight2[$cache_key] = (isset($result['price'])); + } + return self::$priceByWeight2[$cache_key]; + } + + public function getMaxDeliveryPriceByWeight($id_zone) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT d.`price` + FROM `'._DB_PREFIX_.'delivery` d + INNER JOIN `'._DB_PREFIX_.'range_weight` w ON d.`id_range_weight` = w.`id_range_weight` + WHERE d.`id_zone` = '.(int)($id_zone).' + AND d.`id_carrier` = '.(int)($this->id).' + ORDER BY w.`delimiter2` DESC LIMIT 1'); + if (!isset($result[0]['price'])) + return false; + return $result[0]['price']; + } + + /** + * Get delivery prices for a given order + * + * @param floatval $orderTotal Order total to pay + * @param integer $id_zone Zone id (for customer delivery address) + * @return float Delivery price + */ + public function getDeliveryPriceByPrice($orderTotal, $id_zone, $id_currency = NULL) + { + $cache_key = $this->id.'_'.$orderTotal.'_'.$id_zone.'_'.$id_currency; + if (!isset(self::$priceByPrice[$cache_key])) + { + if (!empty($id_currency)) + $orderTotal = Tools::convertPrice($orderTotal, $id_currency, false); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT d.`price` + FROM `'._DB_PREFIX_.'delivery` d + LEFT JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price` + WHERE d.`id_zone` = '.(int)($id_zone).' + AND '.(float)($orderTotal).' >= r.`delimiter1` + AND '.(float)($orderTotal).' < r.`delimiter2` + AND d.`id_carrier` = '.(int)($this->id).' + ORDER BY r.`delimiter1` ASC'); + if (!isset($result['price'])) + self::$priceByPrice[$cache_key] = $this->getMaxDeliveryPriceByPrice($id_zone); + else + self::$priceByPrice[$cache_key] = $result['price']; + } + return self::$priceByPrice[$cache_key]; + } + + /** + * Check delivery prices for a given order + * + * @param id_carrier + * @param floatval $orderTotal Order total to pay + * @param integer $id_zone Zone id (for customer delivery address) + * @param integer $id_currency + * @return float Delivery price + */ + static public function checkDeliveryPriceByPrice($id_carrier, $orderTotal, $id_zone, $id_currency = NULL) + { + $cache_key = $id_carrier.'_'.$orderTotal.'_'.$id_zone.'_'.$id_currency; + if (!isset(self::$priceByPrice2[$cache_key])) + { + if (!empty($id_currency)) + $orderTotal = Tools::convertPrice($orderTotal, $id_currency, false); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT d.`price` + FROM `'._DB_PREFIX_.'delivery` d + LEFT JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price` + WHERE d.`id_zone` = '.(int)($id_zone).' + AND '.(float)($orderTotal).' >= r.`delimiter1` + AND '.(float)($orderTotal).' < r.`delimiter2` + AND d.`id_carrier` = '.(int)($id_carrier).' + ORDER BY r.`delimiter1` ASC'); + self::$priceByPrice2[$cache_key] = (isset($result['price'])); + } + return self::$priceByPrice2[$cache_key]; + } + + public function getMaxDeliveryPriceByPrice($id_zone) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT d.`price` + FROM `'._DB_PREFIX_.'delivery` d + INNER JOIN `'._DB_PREFIX_.'range_price` r ON d.`id_range_price` = r.`id_range_price` + WHERE d.`id_zone` = '.(int)($id_zone).' + AND d.`id_carrier` = '.(int)($this->id).' + ORDER BY r.`delimiter2` DESC LIMIT 1'); + if (!isset($result[0]['price'])) + return false; + return $result[0]['price']; + } + + /** + * Get delivery prices for a given shipping method (price/weight) + * + * @param string $rangeTable Table name (price or weight) + * @return array Delivery prices + */ + public static function getDeliveryPriceByRanges($rangeTable, $id_carrier) + { + $rangeTable = pSQL($rangeTable); + return Db::getInstance()->ExecuteS(' + SELECT d.`id_'.$rangeTable.'`, d.`id_carrier`, d.`id_zone`, d.`price` + FROM `'._DB_PREFIX_.'delivery` d + LEFT JOIN `'._DB_PREFIX_.$rangeTable.'` r ON r.`id_'.$rangeTable.'` = d.`id_'.$rangeTable.'` + WHERE (d.`id_'.$rangeTable.'` IS NOT NULL AND d.`id_'.$rangeTable.'` != 0 AND d.`id_carrier` = '.(int)($id_carrier).') + ORDER BY r.`delimiter1` ASC'); + } + + /** + * Get all carriers in a given language + * + * @param integer $id_lang Language id + * @param $modules_filters, possible values: + PS_CARRIERS_ONLY + CARRIERS_MODULE + CARRIERS_MODULE_NEED_RANGE + PS_CARRIERS_AND_CARRIER_MODULES_NEED_RANGE + ALL_CARRIERS + * @param boolean $active Returns only active carriers when true + * @return array Carriers + */ + public static function getCarriers($id_lang, $active = false, $delete = false, $id_zone = false, $ids_group = NULL, $modules_filters = 1) + { + if (!Validate::isBool($active)) + die(Tools::displayError()); + if ($ids_group) + { + $ids = ''; + foreach ($ids_group as $id) + $ids .= (int)($id).', '; + $ids = rtrim($ids, ', '); + if ($ids == '') + return (array()); + } + $sql = ' + SELECT c.*, cl.delay + FROM `'._DB_PREFIX_.'carrier` c + LEFT JOIN `'._DB_PREFIX_.'carrier_lang` cl ON (c.`id_carrier` = cl.`id_carrier` AND cl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'carrier_zone` cz ON (cz.`id_carrier` = c.`id_carrier`)'. + ($id_zone ? 'LEFT JOIN `'._DB_PREFIX_.'zone` z ON (z.`id_zone` = '.(int)($id_zone).')' : '').' + WHERE c.`deleted` '.($delete ? '= 1' : ' = 0'). + ($active ? ' AND c.`active` = 1' : ''). + ($id_zone ? ' AND cz.`id_zone` = '.(int)($id_zone).' + AND z.`active` = 1 ' : ' '); + switch ($modules_filters) + { + case 1 : + $sql .= 'AND c.is_module = 0 '; + break; + case 2 : + $sql .= 'AND c.is_module = 1 '; + break; + case 3 : + $sql .= 'AND c.is_module = 1 AND c.need_range = 1 '; + break; + case 4 : + $sql .= 'AND (c.is_module = 0 OR c.need_range = 1) '; + break; + case 5 : + $sql .= ''; + break; + + } + $sql .= ($ids_group ? ' AND c.id_carrier IN (SELECT id_carrier FROM '._DB_PREFIX_.'carrier_group WHERE id_group IN ('.$ids.')) ' : '').' + GROUP BY c.`id_carrier`'; + + $carriers = Db::getInstance()->ExecuteS($sql); + + if (is_array($carriers) AND count($carriers)) + { + foreach ($carriers as $key => $carrier) + if ($carrier['name'] == '0') + $carriers[$key]['name'] = Configuration::get('PS_SHOP_NAME'); + } + else + $carriers = array(); + + return $carriers; + } + + public static function getCarriersForOrder($id_zone, $groups = NULL) + { + global $cookie, $cart; + + if (is_array($groups) AND !empty($groups)) + $result = Carrier::getCarriers((int)($cookie->id_lang), true, false, (int)($id_zone), $groups, PS_CARRIERS_AND_CARRIER_MODULES_NEED_RANGE); + else + $result = Carrier::getCarriers((int)($cookie->id_lang), true, false, (int)($id_zone), array(1), PS_CARRIERS_AND_CARRIER_MODULES_NEED_RANGE); + $resultsArray = array(); + foreach ($result AS $k => $row) + { + $carrier = new Carrier((int)($row['id_carrier'])); + // Get only carriers that are compliant with shipping method + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND $carrier->getMaxDeliveryPriceByWeight($id_zone) === false) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND $carrier->getMaxDeliveryPriceByPrice($id_zone) === false)) + { + unset($result[$k]); + continue ; + } + + // If out-of-range behavior carrier is set on "Desactivate carrier" + if ($row['range_behavior']) + { + // Get id zone + if (!$id_zone) + $id_zone = (int)($defaultCountry->id_zone); + + // Get only carriers that have a range compatible with cart + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND (!Carrier::checkDeliveryPriceByWeight($row['id_carrier'], $cart->getTotalWeight(), $id_zone))) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND (!Carrier::checkDeliveryPriceByPrice($row['id_carrier'], $cart->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING), $id_zone, $cart->id_currency)))) + { + unset($result[$k]); + continue ; + } + } + $row['name'] = (strval($row['name']) != '0' ? $row['name'] : Configuration::get('PS_SHOP_NAME')); + $row['price'] = $cart->getOrderShippingCost((int)($row['id_carrier'])); + $row['price_tax_exc'] = $cart->getOrderShippingCost((int)($row['id_carrier']), false); + $row['img'] = file_exists(_PS_SHIP_IMG_DIR_.(int)($row['id_carrier']).'.jpg') ? _THEME_SHIP_DIR_.(int)($row['id_carrier']).'.jpg' : ''; + + // If price is false, then the carrier is unavailable (carrier module) + if ($row['price'] === false) + { + unset($result[$k]); + continue ; + } + + $resultsArray[] = $row; + } + return $resultsArray; + } + + /** + * @param int $id_country + * @param array $groups + * @return Array carriers list + * @deprecated + */ + public static function getCarriersOpc($id_country, $groups = NULL) + { + Tools::displayAsDeprecated(); + + return self::getCarriersForOrder((int)Country::getIdZone((int)($id_country)), $groups); + } + + public static function checkCarrierZone($id_carrier, $id_zone) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.`id_carrier` + FROM `'._DB_PREFIX_.'carrier` c + LEFT JOIN `'._DB_PREFIX_.'carrier_zone` cz ON (cz.`id_carrier` = c.`id_carrier`) + LEFT JOIN `'._DB_PREFIX_.'zone` z ON (z.`id_zone` = '.(int)($id_zone).') + WHERE c.`id_carrier` = '.(int)($id_carrier).' + AND c.`deleted` = 0 + AND c.`active` = 1 + AND cz.`id_zone` = '.(int)($id_zone).' + AND z.`active` = 1' + ); + } + + /** + * Get all zones + * + * @return array Zones + */ + public function getZones() + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'carrier_zone` cz + LEFT JOIN `'._DB_PREFIX_.'zone` z ON cz.`id_zone` = z.`id_zone` + WHERE cz.`id_carrier` = '. (int)($this->id)); + } + + /** + * Get a specific zones + * + * @return array Zone + */ + public function getZone($id_zone) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'carrier_zone` + WHERE `id_carrier` = '.(int)($this->id).' + AND `id_zone` = '.(int)($id_zone)); + } + + /** + * Add zone + */ + public function addZone($id_zone) + { + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'carrier_zone` (`id_carrier` , `id_zone`) + VALUES ('.(int)($this->id).', '.(int)($id_zone).')'); + } + + /** + * Delete zone + */ + public function deleteZone($id_zone) + { + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'carrier_zone` + WHERE `id_carrier` = '.(int)($this->id).' + AND `id_zone` = '.(int)($id_zone).' LIMIT 1'); + } + + /** + * Clean delivery prices (weight/price) + * + * @param string $rangeTable Table name to clean (weight or price according to shipping method) + * @return boolean Deletion result + */ + public function deleteDeliveryPrice($rangeTable) + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'delivery` WHERE `id_carrier` = '.(int)($this->id).' AND (`id_'.$rangeTable.'` IS NOT NULL OR `id_'.$rangeTable.'` = 0)'); + } + + /** + * Add new delivery prices + * + * @param string $priceList Prices list separated by commas + * @return boolean Insertion result + */ + public function addDeliveryPrice($priceList) + { + if (!Validate::isValuesList($priceList)) + die(Tools::displayError()); + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'delivery` (`id_range_price`, `id_range_weight`, `id_carrier`, `id_zone`, `price`) + VALUES '.$priceList); + } + + /** + * Copy old carrier informations when update carrier + * + * @param integer $oldId Old id carrier (copy from that id) + */ + public function copyCarrierData($oldId) + { + if (!Validate::isUnsignedId($oldId)) + die(Tools::displayError()); + + $oldLogo = _PS_SHIP_IMG_DIR_.'/'.(int)($oldId).'.jpg'; + if (file_exists($oldLogo)) + copy($oldLogo, _PS_SHIP_IMG_DIR_.'/'.(int)($this->id).'.jpg'); + + // Copy existing ranges price + $res = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'range_price` + WHERE id_carrier = '.(int)($oldId)); + foreach ($res AS $val) + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'range_price` (`id_carrier`, `delimiter1`, `delimiter2`) + VALUES ('.(int)($this->id).','.(float)($val['delimiter1']).','.(float)($val['delimiter2']).')'); + $maxRangePrice = Db::getInstance()->Insert_ID(); + $res2 = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'delivery` + WHERE id_carrier = '.(int)($oldId).' + AND id_range_price = '.(int)($val['id_range_price'])); + foreach ($res2 AS $val2) + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'delivery` (`id_carrier`,`id_range_price`,`id_range_weight`,`id_zone`, `price`) + VALUES ('.(int)($this->id).','.(int)($maxRangePrice).',NULL,'.(int)($val2['id_zone']).','.(float)($val2['price']).')'); + } + + // Copy existing ranges weight + $res = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'range_weight` + WHERE id_carrier = '.(int)($oldId)); + foreach ($res as $val) + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'range_weight` (`id_carrier`, `delimiter1`, `delimiter2`) + VALUES ('.(int)($this->id).','.(float)($val['delimiter1']).','.(float)($val['delimiter2']).')'); + $maxRangeWeight = Db::getInstance()->Insert_ID(); + $res2 = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'delivery` + WHERE id_carrier = '.(int)($oldId).' + AND id_range_weight = '.(int)($val['id_range_weight'])); + foreach ($res2 as $val2) + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'delivery` (`id_carrier`,`id_range_price`,`id_range_weight`,`id_zone`, `price`) + VALUES ('.(int)($this->id).',NULL,'.(int)($maxRangeWeight).','.(int)($val2['id_zone']).','.(float)($val2['price']).')'); + } + + // Copy existing zones + $res = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'carrier_zone` + WHERE id_carrier = '.(int)($oldId)); + foreach ($res as $val) + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'carrier_zone` (`id_carrier`, `id_zone`) + VALUES ('.(int)($this->id).','.(int)($val['id_zone']).')'); + + //Copy default carrier + if ((int)(Configuration::get('PS_CARRIER_DEFAULT')) == $oldId) + Configuration::updateValue('PS_CARRIER_DEFAULT', (int)($this->id)); + } + + /** + * Check if carrier is used (at least one order placed) + * + * @return integer Order count for this carrier + */ + public function isUsed() + { + $row = Db::getInstance()->getRow(' + SELECT COUNT(`id_carrier`) AS total + FROM `'._DB_PREFIX_.'orders` + WHERE `id_carrier` = '.(int)($this->id)); + + return (int)($row['total']); + } + + + /** + * Get the price without taxes defined in carrier + * @deprecated + **/ + public function getPriceWithoutTaxes($productPrice) + { + Tools::displayAsDeprecated(); + $tax = new Tax($this->id_tax); + return round($productPrice - ($productPrice * $tax->rate / 100), 2); + } + + + public function getShippingMethod() + { + $method = (int)($this->shipping_method); + + if ($this->shipping_method == Carrier::SHIPPING_METHOD_DEFAULT) + { + // backward compatibility + if ((int)(Configuration::get('PS_SHIPPING_METHOD'))) + $method = Carrier::SHIPPING_METHOD_WEIGHT; + else + $method = Carrier::SHIPPING_METHOD_PRICE; + } + + return $method; + } + + public function getRangeTable() + { + return ($this->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT) ? 'range_weight' : 'range_price'; + } + + public function getRangeObject() + { + return ($this->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT) ? new RangeWeight() : new RangePrice(); + } + + public function getRangeSuffix() + { + $suffix = Configuration::get('PS_WEIGHT_UNIT'); + if ($this->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE) + { + $currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT')); + $suffix = $currency->sign; + } + return $suffix; + } + + public static function getIdTaxRulesGroupByIdCarrier($id_carrier) + { + if (!isset(self::$_cache_tax_rule[(int)$id_carrier])) + { + self::$_cache_tax_rule[$id_carrier] = Db::getInstance()->getValue(' + SELECT `id_tax_rules_group` + FROM `'._DB_PREFIX_.'carrier` + WHERE `id_carrier` = '.(int)$id_carrier); + } + + return self::$_cache_tax_rule[$id_carrier]; + } +} + diff --git a/classes/CarrierModule.php b/classes/CarrierModule.php new file mode 100644 index 000000000..eabb7b2bf --- /dev/null +++ b/classes/CarrierModule.php @@ -0,0 +1,33 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class CarrierModuleCore extends Module +{ + abstract function getOrderShippingCost($params,$shipping_cost); + abstract function getOrderShippingCostExternal($params); +} + diff --git a/classes/Cart.php b/classes/Cart.php new file mode 100644 index 000000000..75b73e6a9 --- /dev/null +++ b/classes/Cart.php @@ -0,0 +1,1599 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CartCore extends ObjectModel +{ + public $id; + + /** @var integer Customer delivery address ID */ + public $id_address_delivery; + + /** @var integer Customer invoicing address ID */ + public $id_address_invoice; + + /** @var integer Customer currency ID */ + public $id_currency; + + /** @var integer Customer ID */ + public $id_customer; + + /** @var integer Guest ID */ + public $id_guest; + + /** @var integer Language ID */ + public $id_lang; + + /** @var integer Carrier ID */ + public $id_carrier; + + /** @var boolean True if the customer wants a recycled package */ + public $recyclable = 1; + + /** @var boolean True if the customer wants a gift wrapping */ + public $gift = 0; + + /** @var string Gift message if specified */ + public $gift_message; + + /** @var string Object creation date */ + public $date_add; + + /** @var string secure_key */ + public $secure_key; + + /** @var string Object last modification date */ + public $date_upd; + + protected static $_nbProducts = NULL; + protected static $_isVirtualCart = array(); + + protected $fieldsRequired = array('id_currency', 'id_lang'); + protected $fieldsValidate = array('id_address_delivery' => 'isUnsignedId', 'id_address_invoice' => 'isUnsignedId', + 'id_currency' => 'isUnsignedId', 'id_customer' => 'isUnsignedId', 'id_guest' => 'isUnsignedId', 'id_lang' => 'isUnsignedId', + 'id_carrier' => 'isUnsignedId', 'recyclable' => 'isBool', 'gift' => 'isBool', 'gift_message' => 'isMessage'); + + protected $_products = NULL; + protected static $_totalWeight = array(); + protected $_taxCalculationMethod = PS_TAX_EXC; + protected static $_discounts = NULL; + protected static $_discountsLite = NULL; + protected static $_carriers = NULL; + protected static $_taxes_rate = NULL; + protected static $_attributesLists = array(); + protected $table = 'cart'; + protected $identifier = 'id_cart'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_address_delivery' => array('xlink_resource' => 'addresses'), + 'id_address_invoice' => array('xlink_resource' => 'addresses'), + 'id_currency' => array('xlink_resource' => 'currencies'), + 'id_customer' => array('xlink_resource' => 'customers'), + 'id_guest' => array('xlink_resource' => 'guests'), + 'id_lang' => array('xlink_resource' => 'languages'), + 'id_carrier' => array('xlink_resource' => 'carriers'), + ), + 'associations' => array( + 'cart_rows' => array('resource' => 'cart_row', 'fields' => array( + 'id_product' => array('required' => true, 'xlink_resource' => 'products'), + 'id_product_attribute' => array('required' => true, 'xlink_resource' => 'combinations'), + 'quantity' => array('required' => true), + ) + ), + ), + ); + + const ONLY_PRODUCTS = 1; + const ONLY_DISCOUNTS = 2; + const BOTH = 3; + const BOTH_WITHOUT_SHIPPING = 4; + const ONLY_SHIPPING = 5; + const ONLY_WRAPPING = 6; + const ONLY_PRODUCTS_WITHOUT_SHIPPING = 7; + + public function getFields() + { + parent::validateFields(); + + $fields['id_address_delivery'] = (int)($this->id_address_delivery); + $fields['id_address_invoice'] = (int)($this->id_address_invoice); + $fields['id_currency'] = (int)($this->id_currency); + $fields['id_customer'] = (int)($this->id_customer); + $fields['id_guest'] = (int)($this->id_guest); + $fields['id_lang'] = (int)($this->id_lang); + $fields['id_carrier'] = (int)($this->id_carrier); + $fields['recyclable'] = (int)($this->recyclable); + $fields['gift'] = (int)($this->gift); + $fields['secure_key'] = pSQL($this->secure_key); + $fields['gift_message'] = pSQL($this->gift_message); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + + return $fields; + } + + public function __construct($id = NULL, $id_lang = NULL) + { + parent::__construct($id, $id_lang); + if ($this->id_customer) + { + $customer = new Customer((int)($this->id_customer)); + $this->_taxCalculationMethod = Group::getPriceDisplayMethod((int)($customer->id_default_group)); + if (!$this->secure_key AND $customer->secure_key) + { + $this->secure_key = $customer->secure_key; + $this->save(); + } + } + else + $this->_taxCalculationMethod = Group::getDefaultPriceDisplayMethod(); + } + + public function add($autodate = true, $nullValues = false) + { + $return = parent::add($autodate); + Module::hookExec('cart'); + return $return; + } + + public function update($nullValues = false) + { + self::$_nbProducts = NULL; + $this->_products = NULL; + $return = parent::update(); + Module::hookExec('cart'); + return $return; + } + + public function delete() + { + if (!Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cart_discount` WHERE `id_cart` = '.(int)($this->id)) OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cart_product` WHERE `id_cart` = '.(int)($this->id))) + return false; + return parent::delete(); + } + + static public function getTaxesAverageUsed($id_cart) + { + $cart = new Cart((int)($id_cart)); + if (!Validate::isLoadedObject($cart)) + die(Tools::displayError()); + + if (!Configuration::get('PS_TAX')) + return 0; + + $products = $cart->getProducts(); + $totalProducts_moy = 0; + $ratioTax = 0; + + if (!sizeof($products)) + return 0; + + foreach ($products AS $product) + { + $totalProducts_moy += $product['total_wt']; + $ratioTax += $product['total_wt'] * Tax::getProductTaxRate((int)$product['id_product'], (int)$cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + } + + if ($totalProducts_moy > 0) + return $ratioTax / $totalProducts_moy; + + return 0; + } + + /** + * Return cart discounts + * + * @result array Discounts + */ + public function getDiscounts($lite = false, $refresh = false) + { + if (!$this->id) + return array(); + if (!$lite AND !$refresh AND isset(self::$_discounts[$this->id])) + return self::$_discounts[$this->id]; + if ($lite AND isset(self::$_discountsLite[$this->id])) + return self::$_discountsLite[$this->id]; + + $result = Db::getInstance()->ExecuteS(' + SELECT d.*, `id_cart` + FROM `'._DB_PREFIX_.'cart_discount` c + LEFT JOIN `'._DB_PREFIX_.'discount` d ON c.`id_discount` = d.`id_discount` + WHERE `id_cart` = '.(int)($this->id)); + + $products = $this->getProducts(); + foreach ($result AS $k => $discount) + { + $categories = Discount::getCategories((int)($discount['id_discount'])); + $in_category = false; + foreach ($products AS $product) + if (Product::idIsOnCategoryId((int)($product['id_product']), $categories)) + { + $in_category = true; + break; + } + if (!$in_category) + unset($result[$k]); + } + + if ($lite) + { + self::$_discountsLite[$this->id] = $result; + return $result; + } + + $total_products_wt = $this->getOrderTotal(true, Cart::ONLY_PRODUCTS); + $total_products = $this->getOrderTotal(false, Cart::ONLY_PRODUCTS); + $shipping_wt = $this->getOrderShippingCost(); + $shipping = $this->getOrderShippingCost(NULL, false); + self::$_discounts[$this->id] = array(); + foreach ($result as $row) + { + $discount = new Discount($row['id_discount'], (int)($this->id_lang)); + $row['description'] = $discount->description ? $discount->description : $discount->name; + $row['value_real'] = $discount->getValue(sizeof($result), $total_products_wt, $shipping_wt, $this->id); + $row['value_tax_exc'] = $discount->getValue(sizeof($result), $total_products, $shipping, $this->id, false); + self::$_discounts[$this->id][] = $row; + } + + return isset(self::$_discounts[$this->id]) ? self::$_discounts[$this->id] : NULL; + } + + public function getDiscountsCustomer($id_discount) + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_discount` + FROM `'._DB_PREFIX_.'cart_discount` + WHERE `id_discount` = '.(int)($id_discount).' AND `id_cart` = '.(int)($this->id)); + + return Db::getInstance()->NumRows(); + } + + public function getLastProduct() + { + $sql = ' + SELECT `id_product`, `id_product_attribute` + FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_cart` = '.(int)($this->id).' + ORDER BY `date_add` DESC'; + $result = Db::getInstance()->getRow($sql); + if ($result AND isset($result['id_product']) AND $result['id_product']) + return $result; + return false; + } + + /** + * Return cart products + * + * @result array Products + */ + public function getProducts($refresh = false, $id_product = false) + { + if (!$this->id) + return array(); + // Product cache must be strictly compared to NULL, or else an empty cart will add dozens of queries + if ($this->_products !== NULL AND !$refresh) + return $this->_products; + $sql = ' + SELECT cp.`id_product_attribute`, cp.`id_product`, cu.`id_customization`, cp.`quantity` AS cart_quantity, cu.`quantity` AS customization_quantity, pl.`name`, + pl.`description_short`, pl.`available_now`, pl.`available_later`, p.`id_product`, p.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, p.`on_sale`, p.`ecotax`, p.`additional_shipping_cost`, p.`available_for_order`, + p.`quantity`, p.`price`, p.`weight`, p.`width`, p.`height`, p.`depth`, p.`out_of_stock`, p.`active`, p.`date_add`, p.`date_upd`, IFNULL(pa.`minimal_quantity`, p.`minimal_quantity`) as minimal_quantity, + t.`id_tax`, tl.`name` AS tax, t.`rate`, pa.`price` AS price_attribute, pa.`quantity` AS quantity_attribute, + pa.`ecotax` AS ecotax_attr, i.`id_image`, il.`legend`, pl.`link_rewrite`, cl.`link_rewrite` AS category, CONCAT(cp.`id_product`, cp.`id_product_attribute`) AS unique_id, + IF (IFNULL(pa.`reference`, \'\') = \'\', p.`reference`, pa.`reference`) AS reference, + IF (IFNULL(pa.`supplier_reference`, \'\') = \'\', p.`supplier_reference`, pa.`supplier_reference`) AS supplier_reference, + (p.`weight`+ pa.`weight`) weight_attribute, + IF (IFNULL(pa.`ean13`, \'\') = \'\', p.`ean13`, pa.`ean13`) AS ean13, IF (IFNULL(pa.`upc`, \'\') = \'\', p.`upc`, pa.`upc`) AS upc, + pai.`id_image` as pai_id_image + FROM `'._DB_PREFIX_.'cart_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$this->id_lang.') + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pa.`id_product_attribute` = cp.`id_product_attribute`) + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$this->id_lang.') + LEFT JOIN `'._DB_PREFIX_.'customization` cu ON (p.`id_product` = cu.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON (pai.`id_product_attribute` = pa.`id_product_attribute`) + LEFT JOIN `'._DB_PREFIX_.'image` i ON (IF(pai.`id_image`, + i.`id_image` = + (SELECT i2.`id_image` + FROM `'._DB_PREFIX_.'image` i2 + INNER JOIN `'._DB_PREFIX_.'product_attribute_image` pai2 ON (pai2.`id_image` = i2.`id_image`) + WHERE i2.`id_product` = p.`id_product` AND pai2.`id_product_attribute` = pa.`id_product_attribute` + ORDER BY i2.`position` + LIMIT 1), + i.`id_product` = p.`id_product` AND i.`cover` = 1) + ) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$this->id_lang.') + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$this->id_lang.') + WHERE cp.`id_cart` = '.(int)$this->id.' + '.($id_product ? ' AND cp.`id_product` = '.(int)$id_product : '').' + AND p.`id_product` IS NOT NULL + GROUP BY unique_id + ORDER BY cp.date_add ASC'; + $result = Db::getInstance()->ExecuteS($sql); + // Reset the cache before the following return, or else an empty cart will add dozens of queries + + $productsIds = array(); + $paIds = array(); + foreach ($result as $row) + { + $productsIds[] = $row['id_product']; + $paIds[] = $row['id_product_attribute']; + } + // Thus you can avoid one query per product, because there will be only one query for all the products of the cart + Product::cacheProductsFeatures($productsIds); + self::cacheSomeAttributesLists($paIds, $this->id_lang); + + $this->_products = array(); + if (empty($result)) + return array(); + foreach ($result AS $k => $row) + { + if (isset($row['ecotax_attr']) AND $row['ecotax_attr'] > 0) + $row['ecotax'] = (float)($row['ecotax_attr']); + $row['stock_quantity'] = (int)($row['quantity']); + // for compatibility with 1.2 themes + $row['quantity'] = (int)($row['cart_quantity']); + if (isset($row['id_product_attribute']) AND (int)$row['id_product_attribute']) + { + $row['weight'] = $row['weight_attribute']; + $row['stock_quantity'] = $row['quantity_attribute']; + } + if ($this->_taxCalculationMethod == PS_TAX_EXC) + { + $row['price'] = Product::getPriceStatic((int)$row['id_product'], false, isset($row['id_product_attribute']) ? (int)($row['id_product_attribute']) : NULL, 2, NULL, false, true, (int)($row['cart_quantity']), false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL), $specificPriceOutput); // Here taxes are computed only once the quantity has been applied to the product price + $row['price_wt'] = Product::getPriceStatic((int)$row['id_product'], true, isset($row['id_product_attribute']) ? (int)($row['id_product_attribute']) : NULL, 2, NULL, false, true, (int)($row['cart_quantity']), false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL)); + $tax_rate = Tax::getProductTaxRate((int)$id_product, (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + $row['total_wt'] = Tools::ps_round($row['price'] * (float)$row['cart_quantity'] * (1 + (float)($tax_rate) / 100), 2); + $row['total'] = $row['price'] * (int)($row['cart_quantity']); + } + else + { + $row['price'] = Product::getPriceStatic((int)$row['id_product'], false, (int)$row['id_product_attribute'], 6, NULL, false, true, $row['cart_quantity'], false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL), $specificPriceOutput); + $row['price_wt'] = Product::getPriceStatic((int)$row['id_product'], true, (int)$row['id_product_attribute'], 2, NULL, false, true, $row['cart_quantity'], false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL)); + + /* In case when you use QuantityDiscount, getPriceStatic() can be return more of 2 decimals */ + $row['price_wt'] = Tools::ps_round($row['price_wt'], 2); + $row['total_wt'] = $row['price_wt'] * (int)($row['cart_quantity']); + $row['total'] = Tools::ps_round($row['price'] * (int)($row['cart_quantity']), 2); + } + $row['reduction_applies'] = $specificPriceOutput AND (float)($specificPriceOutput['reduction']); + $row['id_image'] = Product::defineProductImage($row,$this->id_lang); + $row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']); + $row['features'] = Product::getFeaturesStatic((int)$row['id_product']); + if (array_key_exists($row['id_product_attribute'].'-'.$this->id_lang, self::$_attributesLists)) + $row = array_merge($row, self::$_attributesLists[$row['id_product_attribute'].'-'.$this->id_lang]); + + $this->_products[] = $row; + } + return $this->_products; + } + + public static function cacheSomeAttributesLists($ipaList, $id_lang) + { + $paImplode = array(); + $attributesList = array(); + $attributesListSmall = array(); + foreach ($ipaList as $id_product_attribute) + if ((int)$id_product_attribute AND !array_key_exists($id_product_attribute.'-'.$id_lang, self::$_attributesLists)) + { + $paImplode[] = (int)$id_product_attribute; + self::$_attributesLists[(int)$id_product_attribute.'-'.$id_lang] = array('attributes' => '', 'attributes_small' => ''); + } + if (!count($paImplode)) + return; + + $result = Db::getInstance()->ExecuteS(' + SELECT pac.`id_product_attribute`, agl.`public_name` AS public_group_name, al.`name` AS attribute_name + FROM `'._DB_PREFIX_.'product_attribute_combination` pac + LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.') + WHERE pac.`id_product_attribute` IN ('.implode($paImplode, ',').') + ORDER BY agl.`public_name` ASC'); + + foreach ($result as $row) + { + self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes'] .= $row['public_group_name'].' : '.$row['attribute_name'].', '; + self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes_small'] .= $row['attribute_name'].', '; + } + + foreach ($paImplode as $id_product_attribute) + { + self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes'] = rtrim(self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes'], ', '); + self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes_small'] = rtrim(self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes_small'], ', '); + } + } + + /** + * Return cart products quantity + * + * @result integer Products quantity + */ + public function nbProducts() + { + if (!$this->id) + return 0; + return self::getNbProducts($this->id); + } + + public static function getNbProducts($id) + { + // Must be strictly compared to NULL, or else an empty cart will bypass the cache and add dozens of queries + if (self::$_nbProducts !== NULL) + return self::$_nbProducts; + self::$_nbProducts = (int)(Db::getInstance()->getValue('SELECT SUM(`quantity`) FROM `'._DB_PREFIX_.'cart_product` WHERE `id_cart` = '.(int)($id))); + return self::$_nbProducts; + } + + /** + * Add a discount to the cart (NO controls except doubles) + * + * @param integer $id_discount The discount to add to the cart + * @result boolean Update result + */ + public function addDiscount($id_discount) + { + return Db::getInstance()->AutoExecute(_DB_PREFIX_.'cart_discount', array('id_discount' => (int)($id_discount), 'id_cart' => (int)($this->id)), 'INSERT'); + } + + public function containsProduct($id_product, $id_product_attribute, $id_customization) + { + return Db::getInstance()->getRow(' + SELECT cp.`quantity` + FROM `'._DB_PREFIX_.'cart_product` cp + '.($id_customization ? 'LEFT JOIN `'._DB_PREFIX_.'customization` c ON (c.`id_product` = cp.`id_product` AND c.`id_product_attribute` = cp.`id_product_attribute`)' : '').' + WHERE cp.`id_product` = '.(int)$id_product.' AND cp.`id_product_attribute` = '.(int)$id_product_attribute.' AND cp.`id_cart` = '.(int)$this->id. + ($id_customization ? ' AND c.`id_customization` = '.(int)$id_customization : '')); + } + + /** + * Update product quantity + * + * @param integer $quantity Quantity to add (or substract) + * @param integer $id_product Product ID + * @param integer $id_product_attribute Attribute ID if needed + * @param string $operator Indicate if quantity must be increased or decreased + */ + public function updateQty($quantity, $id_product, $id_product_attribute = NULL, $id_customization = false, $operator = 'up') + { + $product = new Product((int)$id_product, false, (int)Configuration::get('PS_LANG_DEFAULT')); + + /* If we have a product combination, the minimal quantity is set with the one of this combination */ + if (!empty($id_product_attribute)) + $minimalQuantity = (int)Attribute::getAttributeMinimalQty((int)$id_product_attribute); + else + $minimalQuantity = (int)$product->minimal_quantity; + + if (!Validate::isLoadedObject($product)) + die(Tools::displayError()); + self::$_nbProducts = NULL; + if (array_key_exists($this->id, self::$_totalWeight)) + unset(self::$_totalWeight[$this->id]); + if ((int)$quantity <= 0) + return $this->deleteProduct((int)$id_product, (int)$id_product_attribute, (int)$id_customization); + elseif (!$product->available_for_order OR Configuration::get('PS_CATALOG_MODE')) + return false; + else + { + /* Check if the product is already in the cart */ + $result = $this->containsProduct((int)$id_product, (int)$id_product_attribute, (int)$id_customization); + + /* Update quantity if product already exist */ + if (Db::getInstance()->NumRows()) + { + if ($operator == 'up') + { + $result2 = Db::getInstance()->getRow(' + SELECT '.(!empty($id_product_attribute) ? 'pa' : 'p').'.`quantity`, p.`out_of_stock` + FROM `'._DB_PREFIX_.'product` p + '.(!empty($id_product_attribute) ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON p.`id_product` = pa.`id_product`' : '').' + WHERE p.`id_product` = '.(int)($id_product). + (!empty($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '')); + $productQty = (int)$result2['quantity']; + $newQty = (int)$result['quantity'] + (int)$quantity; + $qty = '+ '.(int)$quantity; + + if (!Product::isAvailableWhenOutOfStock((int)$result2['out_of_stock'])) + if ($newQty > $productQty) + return false; + } + elseif ($operator == 'down') + { + $qty = '- '.(int)$quantity; + $newQty = (int)$result['quantity'] - (int)$quantity; + if ($newQty < $minimalQuantity AND $minimalQuantity > 1) + return -1; + } + else + return false; + + /* Delete product from cart */ + if ($newQty <= 0) + return $this->deleteProduct((int)$id_product, (int)$id_product_attribute, (int)$id_customization); + elseif ($newQty < $minimalQuantity) + return -1; + else + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'cart_product` + SET `quantity` = `quantity` '.$qty.' + WHERE `id_product` = '.(int)$id_product. + (!empty($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '').' + AND `id_cart` = '.(int)$this->id.' + LIMIT 1'); + } + + /* Add produt to the cart */ + else + { + $result2 = Db::getInstance()->getRow(' + SELECT '.(!empty($id_product_attribute) ? 'pa' : 'p').'.`quantity`, p.`out_of_stock` + FROM `'._DB_PREFIX_.'product` p + '.(!empty($id_product_attribute) ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON p.`id_product` = pa.`id_product`' : '').' + WHERE p.`id_product` = '.(int)$id_product. + (!empty($id_product_attribute) ? ' AND `id_product_attribute` = '.(int)$id_product_attribute : '')); + + if (!Product::isAvailableWhenOutOfStock((int)$result2['out_of_stock'])) + if ((int)$quantity > $result2['quantity']) + return false; + + if ((int)$quantity < $minimalQuantity) + return -1; + + if (!Db::getInstance()->AutoExecute(_DB_PREFIX_.'cart_product', array('id_product' => (int)$id_product, + 'id_product_attribute' => (int)$id_product_attribute, 'id_cart' => (int)$this->id, + 'quantity' => (int)$quantity, 'date_add' => date('Y-m-d H:i:s')), 'INSERT')) + return false; + } + } + // refresh cache of self::_products + $this->_products = $this->getProducts(true); + $this->update(true); + + if ($product->customizable) + return $this->_updateCustomizationQuantity((int)$quantity, (int)$id_customization, (int)$id_product, (int)$id_product_attribute, $operator); + else + return true; + } + + /* + ** Customization management + */ + protected function _updateCustomizationQuantity($quantity, $id_customization, $id_product, $id_product_attribute, $operator = 'up') + { + global $cookie; + + /* Getting datas */ + $files = $cookie->getFamily('pictures_'.(int)($id_product).'_'); + $textFields = $cookie->getFamily('textFields_'.(int)($id_product).'_'); + /* Customization addition */ + if (count($files) > 0 OR count($textFields) > 0) + return $this->_addCustomization((int)$id_product, (int)$id_product_attribute, $files, $textFields, (int)$quantity); + /* Deletion */ + if (!empty($id_customization) AND (int)($quantity) < 1) + return $this->_deleteCustomization((int)$id_customization, (int)$id_product, (int)$id_product_attribute); + /* Quantity update */ + if (!empty($id_customization)) + { + $result = Db::getInstance()->getRow('SELECT `quantity` FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.(int)$id_customization); + if ($result AND Db::getInstance()->NumRows()) + { + if ($operator == 'down' AND (int)($result['quantity']) - (int)($quantity) < 1) + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.(int)$id_customization); + return Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'customization` SET `quantity` = `quantity` '.($operator == 'up' ? '+ ' : '- ').(int)($quantity).' WHERE `id_customization` = '.(int)($id_customization)); + } + } + // refresh cache of self::_products + $this->_products = $this->getProducts(true); + $this->update(true); + return true; + } + + public function _addCustomization($id_product, $id_product_attribute, $files, $textFields, $quantity) + { + if (!is_array($files) OR !is_array($textFields)) + die(Tools::displayError()); + /* Copying them inside the db */ + if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'customization` (`id_cart`, `id_product`, `id_product_attribute`, `quantity`) VALUES ('.(int)($this->id).', '.(int)($id_product).', '.(int)($id_product_attribute).', '.(int)($quantity).')')) + return false; + if (!$id_customization = Db::getInstance()->Insert_ID()) + return false; + $query = 'INSERT INTO `'._DB_PREFIX_.'customized_data` (`id_customization`, `type`, `index`, `value`) VALUES '; + if (count($files)) + foreach ($files AS $key => $filename) + { + $tmp = explode('_', $key); + $query .= '('.(int)($id_customization).', '._CUSTOMIZE_FILE_.', '.$tmp[2].', \''.$filename.'\'), '; + } + if (count($textFields)) + foreach ($textFields AS $key => $textFieldValue) + { + $tmp = explode('_', $key); + $query .= '('.(int)($id_customization).', '._CUSTOMIZE_TEXTFIELD_.', '.$tmp[2].', \''.$textFieldValue.'\'), '; + } + $query = rtrim($query, ', '); + if (!$result = Db::getInstance()->Execute($query)) + return false; + /* Deleting customized informations from the cart (we just copied them inside the db) */ + return Cart::deleteCustomizationInformations((int)($id_product)); + } + + /** + * Check if order has already been placed + * + * @return boolean result + */ + public function OrderExists() + { + $result = Db::getInstance()->ExecuteS('SELECT `id_cart` FROM `'._DB_PREFIX_.'orders` WHERE `id_cart` = '.(int)($this->id)); + return Db::getInstance()->NumRows(); + } + + /* + ** Deletion + */ + + /** + * Delete a discount from the cart + * + * @param integer $id_discount Discount ID + * @return boolean result + */ + public function deleteDiscount($id_discount) + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cart_discount` WHERE `id_discount` = '.(int)($id_discount).' AND `id_cart` = '.(int)($this->id).' LIMIT 1'); + } + + /** + * Delete a product from the cart + * + * @param integer $id_product Product ID + * @param integer $id_product_attribute Attribute ID if needed + * @param integer $id_customization Customization id + * @return boolean result + */ + public function deleteProduct($id_product, $id_product_attribute = NULL, $id_customization = NULL) + { + self::$_nbProducts = NULL; + if ((int)($id_customization)) + { + $productTotalQuantity = (int)(Db::getInstance()->getValue('SELECT `quantity` + FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_product` = '.(int)($id_product).' AND `id_product_attribute` = '.(int)($id_product_attribute))); + $customizationQuantity = (int)(Db::getInstance()->getValue('SELECT `quantity` + FROM `'._DB_PREFIX_.'customization` + WHERE `id_cart` = '.(int)($this->id).' + AND `id_product` = '.(int)($id_product).' + AND `id_product_attribute` = '.(int)($id_product_attribute))); + if (!$this->_deleteCustomization((int)($id_customization), (int)($id_product), (int)($id_product_attribute))) + return false; + // refresh cache of self::_products + $this->_products = $this->getProducts(true); + return ($customizationQuantity == $productTotalQuantity AND $this->deleteProduct((int)($id_product), $id_product_attribute, NULL)); + } + + /* Get customization quantity */ + if (($result = Db::getInstance()->getRow('SELECT SUM(`quantity`) AS \'quantity\' FROM `'._DB_PREFIX_.'customization` WHERE `id_cart` = '.(int)($this->id).' AND `id_product` = '.(int)($id_product).' AND `id_product_attribute` = '.(int)($id_product_attribute))) === false) + return false; + + /* If the product still possesses customization it does not have to be deleted */ + if (Db::getInstance()->NumRows() AND (int)($result['quantity'])) + return Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` SET `quantity` = '.(int)($result['quantity']).' WHERE `id_cart` = '.(int)($this->id).' AND `id_product` = '.(int)($id_product).($id_product_attribute != NULL ? ' AND `id_product_attribute` = '.(int)($id_product_attribute) : '')); + + /* Product deletion */ + if (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cart_product` WHERE `id_product` = '.(int)($id_product).($id_product_attribute != NULL ? ' AND `id_product_attribute` = '.(int)($id_product_attribute) : '').' AND `id_cart` = '.(int)($this->id))) + { + // refresh cache of self::_products + $this->_products = $this->getProducts(true); + /* Update cart */ + return $this->update(true); + } + return false; + } + + /** + * Delete a customization from the cart. If customization is a Picture (type=2), + * then the image is also deleted + * + * @param integer $id_customization + * @return boolean result + */ + protected function _deleteCustomization($id_customization, $id_product, $id_product_attribute) + { + $result = true; + $customization = Db::getInstance()->getRow('SELECT * + FROM `'._DB_PREFIX_.'customization` + WHERE `id_customization` = '.(int)($id_customization)); + + if ($customization and sizeof($customization)) + { + $custData = Db::getInstance()->getRow('SELECT * + FROM `'._DB_PREFIX_.'customized_data` + WHERE `id_customization` = '.(int)($id_customization)); + + if (isset($custData['type']) and $custData['type'] == 0) + $result &= $this->deletePictureToProduct($id_product,$custData['value']); + + $result &= Db::getInstance()->execute('DELETE + FROM `'._DB_PREFIX_.'customized_data` + WHERE `id_customization` = '.(int)($id_customization)); + + if($result) + $result &= Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'cart_product` + SET `quantity` = `quantity` - '.(int)($customization['quantity']).' + WHERE `id_cart` = '.(int)($this->id).' + AND `id_product` = '.(int)($id_product).((int)($id_product_attribute) ? ' + AND `id_product_attribute` = '.(int)($id_product_attribute) : '')); + + if (!$result) + return false; + + return Db::getInstance()->Execute('DELETE + FROM `'._DB_PREFIX_.'customization` + WHERE `id_customization` = '.(int)($id_customization)); + } + + return true; + } + + static public function getTotalCart($id_cart, $use_tax_display = false) + { + $cart = new Cart((int)($id_cart)); + if (!Validate::isLoadedObject($cart)) + die(Tools::displayError()); + $with_taxes = $use_tax_display ? $cart->_taxCalculationMethod != PS_TAX_EXC : true; + return Tools::displayPrice($cart->getOrderTotal($with_taxes), Currency::getCurrencyInstance((int)($cart->id_currency)), false, false); + } + + + public static function getOrderTotalUsingTaxCalculationMethod($id_cart) + { + return Cart::getTotalCart($id_cart, true); + } + + /** + * This function returns the total cart amount + * + * Possible values for $type: + * Cart::ONLY_PRODUCTS + * Cart::ONLY_DISCOUNTS + * Cart::BOTH + * Cart::BOTH_WITHOUT_SHIPPING + * Cart::ONLY_SHIPPING + * Cart::ONLY_WRAPPING + * Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING + * + * @param boolean $withTaxes With or without taxes + * @param integer $type Total type + * @return float Order total + */ + public function getOrderTotal($withTaxes = true, $type = Cart::BOTH) + { + if (!$this->id) + return 0; + $type = (int)($type); + if (!in_array($type, array(Cart::ONLY_PRODUCTS, Cart::ONLY_DISCOUNTS, Cart::BOTH, Cart::BOTH_WITHOUT_SHIPPING, Cart::ONLY_SHIPPING, Cart::ONLY_WRAPPING, Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING))) + die(Tools::displayError()); + + // no shipping cost if is a cart with only virtuals products + $virtual = $this->isVirtualCart(); + if ($virtual AND $type == Cart::ONLY_SHIPPING) + return 0; + if ($virtual AND $type == Cart::BOTH) + $type = Cart::BOTH_WITHOUT_SHIPPING; + $shipping_fees = ($type != Cart::BOTH_WITHOUT_SHIPPING AND $type != Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING) ? $this->getOrderShippingCost(NULL, (int)($withTaxes)) : 0; + if ($type == Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING) + $type = Cart::ONLY_PRODUCTS; + + $products = $this->getProducts(); + $order_total = 0; + if (Tax::excludeTaxeOption()) + $withTaxes = false; + foreach ($products AS $product) + { + if ($this->_taxCalculationMethod == PS_TAX_EXC) + { + + // Here taxes are computed only once the quantity has been applied to the product price + $price = Product::getPriceStatic((int)$product['id_product'], false, (int)$product['id_product_attribute'], 2, NULL, false, true, $product['cart_quantity'], false, (int)$this->id_customer ? (int)$this->id_customer : NULL, (int)$this->id, ($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + + $total_ecotax = $product['ecotax'] * (int)$product['cart_quantity']; + $total_price = $price * (int)$product['cart_quantity']; + + if ($withTaxes) + { + $total_price = ($total_price - $total_ecotax) * (1 + (float)(Tax::getProductTaxRate((int)$product['id_product'], (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})) / 100); + $total_price = Tools::ps_round($total_price - $total_ecotax, 2); + } + } + else + { + + $price = Product::getPriceStatic((int)($product['id_product']), $withTaxes, (int)($product['id_product_attribute']), 6, NULL, false, true, $product['cart_quantity'], false, ((int)($this->id_customer) ? (int)($this->id_customer) : NULL), (int)($this->id), ((int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) ? (int)($this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) : NULL)); + $total_price = Tools::ps_round($price, 2) * (int)($product['cart_quantity']); + } + $order_total += $total_price; + } + $order_total_products = $order_total; + if ($type == Cart::ONLY_DISCOUNTS) + $order_total = 0; + // Wrapping Fees + $wrapping_fees = 0; + if ($this->gift) + { + $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')); + if ($withTaxes) + { + $wrapping_fees_tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX'))); + $wrapping_fees *= 1 + (((float)($wrapping_fees_tax->rate) / 100)); + } + $wrapping_fees = Tools::convertPrice(Tools::ps_round($wrapping_fees, 2), Currency::getCurrencyInstance((int)($this->id_currency))); + } + + if ($type != Cart::ONLY_PRODUCTS) + { + $discounts = array(); + /* Firstly get all discounts, looking for a free shipping one (in order to substract shipping fees to the total amount) */ + if ($discountIds = $this->getDiscounts(true)) + { + foreach ($discountIds AS $id_discount) + { + $discount = new Discount((int)($id_discount['id_discount'])); + if (Validate::isLoadedObject($discount)) + { + $discounts[] = $discount; + if ($discount->id_discount_type == 3) + foreach($products AS $product) + { + $categories = Discount::getCategories($discount->id); + if (count($categories) AND Product::idIsOnCategoryId($product['id_product'], $categories)) + { + if($type == Cart::ONLY_DISCOUNTS) + $order_total -= $shipping_fees; + $shipping_fees = 0; + break; + } + } + } + } + /* Secondly applying all vouchers to the correct amount */ + $shrunk = false; + foreach ($discounts AS $discount) + if ($discount->id_discount_type != 3) + { + $order_total -= Tools::ps_round((float)($discount->getValue(sizeof($discounts), $order_total_products, $shipping_fees, $this->id, (int)($withTaxes))), 2); + if ($discount->id_discount_type == 2) + if (in_array($discount->behavior_not_exhausted, array(1,2))) + $shrunk = true; + } + + $order_total_discount = 0; + if ($shrunk AND $order_total < (-$wrapping_fees - $order_total_products - $shipping_fees)) + $order_total_discount = -$wrapping_fees - $order_total_products - $shipping_fees; + else + $order_total_discount = $order_total; + } + } + + if ($type == Cart::ONLY_SHIPPING) return $shipping_fees; + if ($type == Cart::ONLY_WRAPPING) return $wrapping_fees; + if ($type == Cart::BOTH) $order_total += $shipping_fees + $wrapping_fees; + if ($order_total < 0 AND $type != Cart::ONLY_DISCOUNTS) return 0; + if ($type == Cart::ONLY_DISCOUNTS AND isset($order_total_discount)) + return Tools::ps_round((float)($order_total_discount), 2); + return Tools::ps_round((float)($order_total), 2); + } + + /** + * Return shipping total + * + * @param integer $id_carrier Carrier ID (default : current carrier) + * @return float Shipping total + */ + function getOrderShippingCost($id_carrier = NULL, $useTax = true) + { + global $defaultCountry; + + if ($this->isVirtualCart()) + return 0; + + // Checking discounts in cart + $products = $this->getProducts(); + $discounts = $this->getDiscounts(true); + if ($discounts) + foreach ($discounts AS $id_discount) + if ($id_discount['id_discount_type'] == 3) + { + if ($id_discount['minimal'] > 0) + { + $total_cart = 0; + + $categories = Discount::getCategories((int)($id_discount['id_discount'])); + if (sizeof($categories)) + foreach($products AS $product) + if (Product::idIsOnCategoryId((int)($product['id_product']), $categories)) + $total_cart += $product['total_wt']; + + if ($total_cart >= $id_discount['minimal']) + return 0; + } + else + return 0; + } + + // Order total in default currency without fees + $order_total = $this->getOrderTotal(true, Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING); + + // Start with shipping cost at 0 + $shipping_cost = 0; + + // If no product added, return 0 + if ($order_total <= 0 AND !(int)(self::getNbProducts($this->id))) + return $shipping_cost; + + // Get id zone + if ( + isset($this->id_address_delivery) + AND $this->id_address_delivery + AND Customer::customerHasAddress($this->id_customer, $this->id_address_delivery) + ) + $id_zone = Address::getZoneById((int)($this->id_address_delivery)); + else + $id_zone = (int)($defaultCountry->id_zone); + + // If no carrier, select default one + if (!$id_carrier) + $id_carrier = $this->id_carrier; + if (empty($id_carrier)) + { + $carrier = new Carrier((int)(Configuration::get('PS_CARRIER_DEFAULT')), Configuration::get('PS_LANG_DEFAULT')); + + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND (Carrier::checkDeliveryPriceByWeight((int)(Configuration::get('PS_CARRIER_DEFAULT')), $this->getTotalWeight(), $id_zone))) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND (Carrier::checkDeliveryPriceByPrice((int)(Configuration::get('PS_CARRIER_DEFAULT')), $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING), $id_zone, (int)($this->id_currency))))) + { + $id_carrier = (int)(Configuration::get('PS_CARRIER_DEFAULT')); + } + + unset($carrier); + } + + if (empty($id_carrier)) + { + if ((int)($this->id_customer)) + { + $customer = new Customer((int)($this->id_customer)); + $result = Carrier::getCarriers((int)(Configuration::get('PS_LANG_DEFAULT')), true, false, (int)($id_zone), $customer->getGroups()); + unset($customer); + } + else + $result = Carrier::getCarriers((int)(Configuration::get('PS_LANG_DEFAULT')), true, false, (int)($id_zone)); + + $resultsArray = array(); + foreach ($result AS $k => $row) + { + if ($row['id_carrier'] == Configuration::get('PS_CARRIER_DEFAULT')) + continue; + + if (!isset(self::$_carriers[$row['id_carrier']])) + self::$_carriers[$row['id_carrier']] = new Carrier((int)($row['id_carrier'])); + + $carrier = self::$_carriers[$row['id_carrier']]; + + // Get only carriers that are compliant with shipping method + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND $carrier->getMaxDeliveryPriceByWeight($id_zone) === false) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND $carrier->getMaxDeliveryPriceByPrice($id_zone) === false)) + { + unset($result[$k]); + continue ; + } + + // If out-of-range behavior carrier is set on "Desactivate carrier" + if ($row['range_behavior']) + { + // Get only carriers that have a range compatible with cart + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND (!Carrier::checkDeliveryPriceByWeight($row['id_carrier'], $this->getTotalWeight(), $id_zone))) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND (!Carrier::checkDeliveryPriceByPrice($row['id_carrier'], $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING), $id_zone, (int)($this->id_currency))))) + { + unset($result[$k]); + continue ; + } + } + + if ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT) + { + $shipping = $carrier->getDeliveryPriceByWeight($this->getTotalWeight(), $id_zone); + + if (!isset($tmp)) + $tmp = $shipping; + + if ($shipping <= $tmp) + $id_carrier = (int)($row['id_carrier']); + } + else // by price + { + $shipping = $carrier->getDeliveryPriceByPrice($order_total, $id_zone, (int)($this->id_currency)); + + if (!isset($tmp)) + $tmp = $shipping; + + if ($shipping <= $tmp) + $id_carrier = (int)($row['id_carrier']); + } + } + } + + if (empty($id_carrier)) + $id_carrier = Configuration::get('PS_CARRIER_DEFAULT'); + + if (!isset(self::$_carriers[$id_carrier])) + self::$_carriers[$id_carrier] = new Carrier((int)($id_carrier), Configuration::get('PS_LANG_DEFAULT')); + $carrier = self::$_carriers[$id_carrier]; + if (!Validate::isLoadedObject($carrier)) + die(Tools::displayError('Fatal error: "no default carrier"')); + if (!$carrier->active) + return $shipping_cost; + // Select carrier tax + if ($useTax AND !Tax::excludeTaxeOption()) + $carrierTax = Tax::getCarrierTaxRate((int)$carrier->id, (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + + $configuration = Configuration::getMultiple(array('PS_SHIPPING_FREE_PRICE', 'PS_SHIPPING_HANDLING', 'PS_SHIPPING_METHOD', 'PS_SHIPPING_FREE_WEIGHT')); + // Free fees + $free_fees_price = 0; + if (isset($configuration['PS_SHIPPING_FREE_PRICE'])) + $free_fees_price = Tools::convertPrice((float)($configuration['PS_SHIPPING_FREE_PRICE']), Currency::getCurrencyInstance((int)($this->id_currency))); + $orderTotalwithDiscounts = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING); + if ($orderTotalwithDiscounts >= (float)($free_fees_price) AND (float)($free_fees_price) > 0) + return $shipping_cost; + if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) AND $this->getTotalWeight() >= (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) AND (float)($configuration['PS_SHIPPING_FREE_WEIGHT']) > 0) + return $shipping_cost; + + // Get shipping cost using correct method + if ($carrier->range_behavior) + { + // Get id zone + if ( + isset($this->id_address_delivery) + AND $this->id_address_delivery + AND Customer::customerHasAddress($this->id_customer, $this->id_address_delivery) + ) + $id_zone = Address::getZoneById((int)($this->id_address_delivery)); + else + $id_zone = (int)($defaultCountry->id_zone); + if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT AND (!Carrier::checkDeliveryPriceByWeight($carrier->id, $this->getTotalWeight(), $id_zone))) + OR ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE AND (!Carrier::checkDeliveryPriceByPrice($carrier->id, $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING), $id_zone, (int)($this->id_currency))))) + $shipping_cost += 0; + else { + if ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT) + $shipping_cost += $carrier->getDeliveryPriceByWeight($this->getTotalWeight(), $id_zone); + else // by price + $shipping_cost += $carrier->getDeliveryPriceByPrice($order_total, $id_zone, (int)($this->id_currency)); + } + } + else + { + if ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT) + $shipping_cost += $carrier->getDeliveryPriceByWeight($this->getTotalWeight(), $id_zone); + else + $shipping_cost += $carrier->getDeliveryPriceByPrice($order_total, $id_zone, (int)($this->id_currency)); + + } + // Adding handling charges + if (isset($configuration['PS_SHIPPING_HANDLING']) AND $carrier->shipping_handling) + $shipping_cost += (float)($configuration['PS_SHIPPING_HANDLING']); + + $shipping_cost = Tools::convertPrice($shipping_cost, Currency::getCurrencyInstance((int)($this->id_currency))); + + // Additional Shipping Cost per product + foreach($products AS $product) + $shipping_cost += $product['additional_shipping_cost'] * $product['cart_quantity']; + + //get external shipping cost from module + if ($carrier->shipping_external) + { + $moduleName = $carrier->external_module_name; + $module = Module::getInstanceByName($moduleName); + if (key_exists('id_carrier', $module)) + $module->id_carrier = $carrier->id; + if($carrier->need_range) + $shipping_cost = $module->getOrderShippingCost($this, $shipping_cost); + else + $shipping_cost = $module->getOrderShippingCostExternal($this); + + // Check if carrier is available + if ($shipping_cost === false) + return false; + } + + // Apply tax + if (isset($carrierTax)) + $shipping_cost *= 1 + ($carrierTax / 100); + + return (float)(Tools::ps_round((float)($shipping_cost), 2)); + } + + /** + * Return cart weight + * + * @return float Cart weight + */ + public function getTotalWeight() + { + if (!array_key_exists($this->id, self::$_totalWeight)) + { + $result = Db::getInstance()->getRow(' + SELECT SUM((p.`weight` + pa.`weight`) * cp.`quantity`) as nb + FROM `'._DB_PREFIX_.'cart_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON cp.`id_product_attribute` = pa.`id_product_attribute` + WHERE (cp.`id_product_attribute` IS NOT NULL AND cp.`id_product_attribute` != 0) + AND cp.`id_cart` = '.(int)($this->id)); + $result2 = Db::getInstance()->getRow(' + SELECT SUM(p.`weight` * cp.`quantity`) as nb + FROM `'._DB_PREFIX_.'cart_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product` + WHERE (cp.`id_product_attribute` IS NULL OR cp.`id_product_attribute` = 0) + AND cp.`id_cart` = '.(int)($this->id)); + self::$_totalWeight[$this->id] = round((float)($result['nb']) + (float)($result2['nb']), 3); + } + return self::$_totalWeight[$this->id]; + } + + /** + * Check discount validity + * + * @return mixed Return a string if an error occurred and false otherwise + */ + function checkDiscountValidity($discountObj, $discounts, $order_total, $products, $checkCartDiscount = false) + { + global $cookie; + + if (!$order_total) + return Tools::displayError('Cannot add voucher if order is free.'); + if (!$discountObj->active) + return Tools::displayError('This voucher has already been used or is disabled.'); + if (!$discountObj->quantity) + return Tools::displayError('This voucher has expired (usage limit attained).'); + if ($discountObj->id_discount_type == 2 AND $this->id_currency != $discountObj->id_currency) + return Tools::displayError('This voucher can only be used in the following currency:').' + '.Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `name` FROM `'._DB_PREFIX_.'currency` WHERE id_currency = '.(int)$discountObj->id_currency); + if ($checkCartDiscount + AND ( + $this->getDiscountsCustomer($discountObj->id) >= $discountObj->quantity_per_user + OR (Order::getDiscountsCustomer((int)($cookie->id_customer), $discountObj->id) + $this->getDiscountsCustomer($discountObj->id) >= $discountObj->quantity_per_user) >= $discountObj->quantity_per_user + ) + ) + return Tools::displayError('You cannot use this voucher anymore (usage limit attained).'); + if (strtotime($discountObj->date_from) > time()) + return Tools::displayError('This voucher is not yet valid'); + if (strtotime($discountObj->date_to) < time()) + return Tools::displayError('This voucher has expired.'); + if (sizeof($discounts) >= 1 AND $checkCartDiscount) + { + if (!$discountObj->cumulable) + return Tools::displayError('This voucher is not valid with other current discounts.'); + foreach ($discounts as $discount) + if (!$discount['cumulable']) + return Tools::displayError('Voucher is not valid with other discounts.'); + } + if (is_array($discounts) AND in_array($discountObj->id, $discounts)) + return Tools::displayError('This voucher is already in your cart'); + $groups = Customer::getGroupsStatic($this->id_customer); + + if (($discountObj->id_customer OR $discountObj->id_group) AND ($this->id_customer != $discountObj->id_customer AND !in_array($discountObj->id_group, $groups))) + { + if (!$cookie->isLogged()) + return Tools::displayError('You cannot use this voucher.').' - '.Tools::displayError('Please log in.'); + return Tools::displayError('You cannot use this voucher.'); + } + $currentDate = date('Y-m-d'); + $onlyProductWithDiscount = true; + if (!$discountObj->cumulable_reduction) + { + foreach ($products as $product) + if (!$product['reduction_applies'] AND !$product['on_sale']) + $onlyProductWithDiscount = false; + } + if (!$discountObj->cumulable_reduction AND $onlyProductWithDiscount) + return Tools::displayError('This voucher is not valid for marked or reduced products.'); + $total_cart = 0; + $categories = Discount::getCategories($discountObj->id); + $returnErrorNoProductCategory = true; + foreach($products AS $product) + { + if(count($categories)) + if (Product::idIsOnCategoryId($product['id_product'], $categories)) + { + if ((!$discountObj->cumulable_reduction AND !$product['reduction_applies'] AND !$product['on_sale']) OR $discountObj->cumulable_reduction) + $total_cart += $product['total_wt']; + $returnErrorNoProductCategory = false; + } + } + if ($returnErrorNoProductCategory) + return Tools::displayError('This discount does not apply to that product category.'); + if ($total_cart < $discountObj->minimal) + return Tools::displayError('The order total is not high enough or this voucher cannot be used with those products.'); + return false; + } + + /** + * @param Discount $discountObj + * @return bool + * @deprecated + */ + public function hasProductInCategory($discountObj) + { + Tools::displayAsDeprecated(); + $products = $this->getProducts(); + $categories = Discount::getCategories($discountObj->id); + foreach ($products AS $product) + { + if (Product::idIsOnCategoryId($product['id_product'], $categories)) + return true; + } + return false; + } + + /** + * Return useful informations for cart + * + * @return array Cart details + */ + function getSummaryDetails() + { + global $cookie; + + $delivery = new Address((int)($this->id_address_delivery)); + $invoice = new Address((int)($this->id_address_invoice)); + + $total_tax = $this->getOrderTotal() - $this->getOrderTotal(false); + if ($total_tax < 0) + $total_tax = 0; + + $total_free_ship = 0; + if ($free_ship = Tools::convertPrice((float)(Configuration::get('PS_SHIPPING_FREE_PRICE')), new Currency((int)($this->id_currency)))) + { + $discounts = $this->getDiscounts(); + $total_free_ship = $free_ship - ($this->getOrderTotal(true, Cart::ONLY_PRODUCTS) + $this->getOrderTotal(true, Cart::ONLY_DISCOUNTS)); + foreach ($discounts as $discount) + if ($discount['id_discount_type'] == 3) + { + $total_free_ship = 0; + break; + } + } + + return array( + 'delivery' => $delivery, + 'delivery_state' => State::getNameById($delivery->id_state), + 'invoice' => $invoice, + 'invoice_state' => State::getNameById($invoice->id_state), + 'carrier' => new Carrier((int)($this->id_carrier), $cookie->id_lang), + 'products' => $this->getProducts(false), + 'discounts' => $this->getDiscounts(false, true), + 'is_virtual_cart' => (int)$this->isVirtualCart(), + 'total_discounts' => $this->getOrderTotal(true, Cart::ONLY_DISCOUNTS), + 'total_discounts_tax_exc' => $this->getOrderTotal(false, Cart::ONLY_DISCOUNTS), + 'total_wrapping' => $this->getOrderTotal(true, Cart::ONLY_WRAPPING), + 'total_wrapping_tax_exc' => $this->getOrderTotal(false, Cart::ONLY_WRAPPING), + 'total_shipping' => $this->getOrderShippingCost(), + 'total_shipping_tax_exc' => $this->getOrderShippingCost(NULL, false), + 'total_products_wt' => $this->getOrderTotal(true, Cart::ONLY_PRODUCTS), + 'total_products' => $this->getOrderTotal(false, Cart::ONLY_PRODUCTS), + 'total_price' => $this->getOrderTotal(), + 'total_tax' => $total_tax, + 'total_price_without_tax' => $this->getOrderTotal(false), + 'free_ship' => (int)$total_free_ship); + } + + /** + * Return carts thats have not been converted in orders + * + * @param string $dateFrom Select only cart updated after this date + * @param string $dateTo Select only cart updated before this date + * @return array Carts + * @deprecated + */ + static function getNonOrderedCarts($dateFrom, $dateTo) + { + Tools::displayAsDeprecated(); + if (!Validate::isDate($dateFrom) OR !Validate::isDate($dateTo)) + die (Tools::displayError()); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT cart.`id_cart`, cart.`date_upd`, c.`id_customer` AS id_customer, c.`lastname` AS customer_lastname, c.`firstname` AS customer_firstname, + SUM(cp.`quantity`) AS nb_products, + COUNT(cd.`id_cart`) AS nb_discounts + FROM `'._DB_PREFIX_.'cart` cart + LEFT JOIN `'._DB_PREFIX_.'cart_product` cp ON cart.`id_cart` = cp.`id_cart` + LEFT JOIN `'._DB_PREFIX_.'cart_discount` cd ON cart.`id_cart` = cd.`id_cart` + LEFT JOIN `'._DB_PREFIX_.'customer` c ON cart.`id_customer` = c.`id_customer` + WHERE cart.`id_cart` NOT IN (SELECT `id_cart` FROM `'._DB_PREFIX_.'orders`) + AND TO_DAYS(cart.`date_upd`) >= TO_DAYS(\''.pSQL(strftime('%Y-%m-%d %H:%M:%S', strtotime($dateFrom))).'\') + AND TO_DAYS(cart.`date_upd`) <= TO_DAYS(\''.pSQL(strftime('%Y-%m-%d %H:%M:%S', strtotime($dateTo))).'\') + GROUP BY cart.`id_cart`, cp.`id_cart`, cd.`id_cart` + ORDER BY cart.`date_upd` DESC'); + } + + public function checkQuantities() + { + if (Configuration::get('PS_CATALOG_MODE')) + return false; + foreach ($this->getProducts() AS $product) + if (!$product['active'] OR (!$product['allow_oosp'] AND $product['stock_quantity'] < $product['cart_quantity']) OR !$product['available_for_order']) + return false; + return true; + } + + static public function lastNoneOrderedCart($id_customer) + { + if (!$result = Db::getInstance()->getRow(' + SELECT c.`id_cart` + FROM '._DB_PREFIX_.'cart c + LEFT JOIN '._DB_PREFIX_.'orders o ON (c.`id_cart` = o.`id_cart`) + WHERE c.`id_customer` = '.(int)($id_customer).' AND o.`id_cart` IS NULL + ORDER BY c.`date_upd` DESC')) + return false; + return $result['id_cart']; + } + + /** + * Check if cart contains only virtual products + * @return boolean true if is a virtual cart or false + * + */ + public function isVirtualCart() + { + if (!isset(self::$_isVirtualCart[$this->id])) + { + $products = $this->getProducts(); + + if (!sizeof($products)) + return false; + + $list = ''; + foreach ($products AS $product) + $list .= (int)($product['id_product']).','; + $list = rtrim($list, ','); + + $n = (int)Db::getInstance()->getValue(' + SELECT COUNT(`id_product_download`) n + FROM `'._DB_PREFIX_.'product_download` + WHERE `id_product` IN ('.pSQL($list).') AND `active` = 1'); + + self::$_isVirtualCart[$this->id] = ($n == sizeof($products)); + } + return self::$_isVirtualCart[$this->id]; + } + + static public function getCartByOrderId($id_order) + { + if ($id_cart = self::getCartIdByOrderId($id_order)) + return new Cart((int)($id_cart)); + + return false; + } + + static public function getCartIdByOrderId($id_order) + { + $result = Db::getInstance()->getRow('SELECT `id_cart` FROM '._DB_PREFIX_.'orders WHERE `id_order` = '.(int)($id_order)); + if (!$result OR empty($result) OR !key_exists('id_cart', $result)) + return false; + + return $result['id_cart']; + } + + /* + * Add customer's pictures + * + * @return bool Always true + */ + public function addPictureToProduct($id_product, $index, $identifier) + { + global $cookie; + + $varName = 'pictures_'.(int)($id_product).'_'.(int)($index); + if ($cookie->$varName) + { + @unlink(_PS_UPLOAD_DIR_.$cookie->$varName); + @unlink(_PS_UPLOAD_DIR_.$cookie->$varName.'_small'); + } + $cookie->$varName = $identifier; + return true; + } + + /* + * Add customer's text + * + * @return bool Always true + */ + public function addTextFieldToProduct($id_product, $index, $textValue) + { + global $cookie; + $textValue = str_replace(array("\n", "\r"), '', nl2br($textValue)); + $textValue = str_replace('\\', '\\\\', $textValue); + $textValue = str_replace('\'', '\\\'', $textValue); + $cookie->{'textFields_'.(int)($id_product).'_'.(int)($index)} = $textValue; + return true; + } + + /* + * Delete customer's text + * + * @return bool Always true + */ + public function deleteTextFieldFromProduct($id_product, $index) + { + global $cookie; + + unset($cookie->{'textFields_'.(int)($id_product).'_'.(int)($index)}); + return true; + } + + /* + * Remove a customer's picture + * + * @return bool + */ + public function deletePictureToProduct($id_product, $index) + { + global $cookie; + + $varName = 'pictures_'.(int)($id_product).'_'.(int)($index); + // if cookie->varName is empty, use index which is the name of the picture + $picture = !empty($cookie->$varName)?$cookie->$varName:$index; + if ($picture) + { + if (!@unlink(_PS_UPLOAD_DIR_.$picture) OR !@unlink(_PS_UPLOAD_DIR_.$picture.'_small')) + return false; + unset($cookie->$varName); + return true; + } + return false; + } + + static public function deleteCustomizationInformations($id_product) + { + global $cookie; + + $cookie->unsetFamily('pictures_'.(int)($id_product).'_'); + $cookie->unsetFamily('textFields_'.(int)($id_product).'_'); + return true; + } + + static public function getCustomerCarts($id_customer) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM '._DB_PREFIX_.'cart c + WHERE c.`id_customer` = '.(int)($id_customer).' + ORDER BY c.`date_add` DESC'); + return $result; + } + + static public function replaceZeroByShopName($echo, $tr) + { + return ($echo == '0' ? Configuration::get('PS_SHOP_NAME') : $echo); + } + + /* DEPRECATED */ + public function getCustomeremail() + { + Tools::displayAsDeprecated(); + $customer = new Customer((int)($this->id_customer)); + return $customer->email; + } + + public function duplicate() + { + if (!Validate::isLoadedObject($this)) + return false; + $cart = new Cart($this->id); + $cart->id = NULL; + $cart->add(); + + if (!Validate::isLoadedObject($cart)) + return false; + + $success = true; + $products = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'cart_product` WHERE `id_cart` = '.(int)$this->id); + foreach ($products AS $product) + $success &= $cart->updateQty($product['quantity'], (int)$product['id_product'], (int)$product['id_product_attribute'], NULL, 'up'); + + // Customized products + $customs = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM '._DB_PREFIX_.'customization c + LEFT JOIN '._DB_PREFIX_.'customized_data cd ON cd.id_customization = c.id_customization + WHERE c.id_cart = '.(int)$this->id); + + $custom_ids = array(); + $sql_custom_data = 'INSERT INTO '._DB_PREFIX_.'customized_data (id_customization, type, index, value) VALUES '; + if (count($custom_ids)) + { + foreach ($customs AS $custom) + { + Db::getInstance(_PS_USE_SQL_SLAVE_)->Execute(' + INSERT INTO '._DB_PREFIX_.'customization (id_customization, id_cart, id_product_attribute, id_product, quantity) + VALUES(\'\', '.(int)$cart->id.', '.(int)$custom['id_product_attribute'].', '.(int)$custom['id_product'].', '.(int)$custom['quantity'].')'); + $custom_ids[$custom['id_customization']] = Db::getInstance(_PS_USE_SQL_SLAVE_)->Insert_ID(); + $sql_custom_data .= '('.(int)$custom_ids[$custom['id_customization']].', '.(int)$custom['type'].', '.(int)$custom['index'].', \''.pSQL($custom['value']).'\'),'; + } + Db::getInstance(_PS_USE_SQL_SLAVE_)->Execute($sql_custom_data); + } + + return array('cart' => $cart, 'success' => $success); + } + + public function getWsCartRows() + { + $query = 'SELECT id_product, id_product_attribute, quantity + FROM `'._DB_PREFIX_.'cart_product` + WHERE id_cart = '.(int)$this->id; + $result = Db::getInstance()->executeS($query); + return $result; + } + + public function setWsCartRows($values) + { + if ($this->deleteAssociations()) + { + $query = 'INSERT INTO `'._DB_PREFIX_.'cart_product`(`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES '; + foreach ($values as $value) + $query .= '('.(int)$this->id.', '.(int)$value['id_product'].', '.(int)$value['id_product_attribute'].', '.(int)$value['quantity'].', NOW()),'; + $result = Db::getInstance()->Execute(rtrim($query, ',')); + } + return $result; + } + + public function deleteAssociations() + { + return (Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_cart` = '.(int)($this->id)) !== false); + } + + /** + * isGuestCartByCartId + * + * @param int $id_cart + * @return bool true if cart has been made by a guest customer + */ + static public function isGuestCartByCartId($id_cart) + { + if (!(int)$id_cart) + return false; + return (bool)Db::getInstance()->getValue(' + SELECT `is_guest` + FROM `'._DB_PREFIX_.'customer` cu + LEFT JOIN `'._DB_PREFIX_.'cart` ca ON (ca.`id_customer` = cu.`id_customer`) + WHERE ca.`id_cart` = '.(int)$id_cart); + } +} + diff --git a/classes/Category.php b/classes/Category.php new file mode 100644 index 000000000..1be26e16e --- /dev/null +++ b/classes/Category.php @@ -0,0 +1,924 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CategoryCore extends ObjectModel +{ + public $id; + + /** @var integer category ID */ + public $id_category; + + /** @var string Name */ + public $name; + + /** @var boolean Status for display */ + public $active = 1; + + /** @var integer category position */ + public $position; + + /** @var string Description */ + public $description; + + /** @var integer Parent category ID */ + public $id_parent; + + /** @var integer Parents number */ + public $level_depth; + + /** @var integer Nested tree model "left" value */ + public $nleft; + + /** @var integer Nested tree model "right" value */ + public $nright; + + /** @var string string used in rewrited URL */ + public $link_rewrite; + + /** @var string Meta title */ + public $meta_title; + + /** @var string Meta keywords */ + public $meta_keywords; + + /** @var string Meta description */ + public $meta_description; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected static $_links = array(); + + protected $tables = array ('category', 'category_lang'); + + protected $fieldsRequired = array('active'); + protected $fieldsSize = array('active' => 1); + protected $fieldsValidate = array('nleft' => 'isUnsignedInt', 'nright' => 'isUnsignedInt', 'level_depth' => 'isUnsignedInt', 'active' => 'isBool'); + protected $fieldsRequiredLang = array('name', 'link_rewrite'); + protected $fieldsSizeLang = array('name' => 64, 'link_rewrite' => 64, 'meta_title' => 128, 'meta_description' => 255, 'meta_keywords' => 255); + protected $fieldsValidateLang = array('name' => 'isCatalogName', 'link_rewrite' => 'isLinkRewrite', 'description' => 'isCleanHtml', + 'meta_title' => 'isGenericName', 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName'); + + protected $table = 'category'; + protected $identifier = 'id_category'; + + /** @var string id_image is the category ID when an image exists and 'default' otherwise */ + public $id_image = 'default'; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'categories', + 'fields' => array( + 'id_parent' => array('xlink_resource'=> 'categories'), + ), + 'associations' => array( + 'categories' => array('getter' => 'getChildrenWs', 'resource' => 'category', ), + 'products' => array('getter' => 'getProductsWs', 'resource' => 'product', ), + + + ), + ); + + public function __construct($id_category = NULL, $id_lang = NULL) + { + parent::__construct($id_category, $id_lang); + $this->id_image = ($this->id AND file_exists(_PS_CAT_IMG_DIR_.(int)($this->id).'.jpg')) ? (int)($this->id) : false; + } + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_category'] = (int)($this->id); + $fields['active'] = (int)($this->active); + $fields['id_parent'] = (int)($this->id_parent); + $fields['position'] = (int)($this->position); + $fields['level_depth'] = (int)($this->level_depth); + $fields['nleft'] = (int)($this->nleft); + $fields['nright'] = (int)($this->nright); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'description', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description')); + } + + public function add($autodate = true, $nullValues = false) + { + $this->position = self::getLastPosition((int)(Tools::getValue('id_parent'))); + if (!isset($this->level_depth) OR $this->level_depth != 0) + $this->level_depth = $this->calcLevelDepth(); + $ret = parent::add($autodate); + if (!isset($this->doNotRegenerateNTree) OR !$this->doNotRegenerateNTree) + self::regenerateEntireNtree(); + $this->updateGroup(Tools::getValue('groupBox')); + Module::hookExec('categoryAddition', array('category' => $this)); + return $ret; + } + + /** + * update category positions in parent + * + * @param mixed $nullValues + * @return void + */ + public function update($nullValues = false) + { + $this->level_depth = $this->calcLevelDepth(); + $this->cleanPositions((int)$this->id_parent); + $ret = parent::update($nullValues); + if (!isset($this->doNotRegenerateNTree) OR !$this->doNotRegenerateNTree) + self::regenerateEntireNtree(); + Module::hookExec('categoryUpdate', array('category' => $this)); + return $ret; + } + + /** + * Recursive scan of subcategories + * + * @param integer $maxDepth Maximum depth of the tree (i.e. 2 => 3 levels depth) + * @param integer $currentDepth specify the current depth in the tree (don't use it, only for rucursivity!) + * @param array $excludedIdsArray specify a list of ids to exclude of results + * @param integer $idLang Specify the id of the language used + * + * @return array Subcategories lite tree + */ + function recurseLiteCategTree($maxDepth = 3, $currentDepth = 0, $idLang = NULL, $excludedIdsArray = NULL) + { + global $link; + + $idLang = is_null($idLang) ? _USER_ID_LANG_ : (int)($idLang); + + $children = array(); + if (($maxDepth == 0 OR $currentDepth < $maxDepth) AND $subcats = $this->getSubCategories((int)$idLang, true) AND sizeof($subcats)) + foreach ($subcats AS &$subcat) + { + if (!$subcat['id_category']) + break; + elseif (!is_array($excludedIdsArray) || !in_array($subcat['id_category'], $excludedIdsArray)) + { + $categ = new Category((int)$subcat['id_category'], (int)$idLang); + $children[] = $categ->recurseLiteCategTree($maxDepth, $currentDepth + 1, (int)$idLang, $excludedIdsArray); + } + } + + return array( + 'id' => (int)$this->id_category, + 'link' => $link->getCategoryLink((int)$this->id, $this->link_rewrite), + 'name' => $this->name, + 'desc'=> $this->description, + 'children' => $children + ); + } + + static public function recurseCategory($categories, $current, $id_category = 1, $id_selected = 1) + { + global $currentIndex; + echo ''; + if (isset($categories[$id_category])) + foreach ($categories[$id_category] AS $key => $row) + self::recurseCategory($categories, $categories[$id_category][$key], $key, $id_selected); + } + + + /** + * Recursively add specified category childs to $toDelete array + * + * @param array &$toDelete Array reference where categories ID will be saved + * @param array $id_category Parent category ID + */ + protected function recursiveDelete(&$toDelete, $id_category) + { + if (!is_array($toDelete) OR !$id_category) + die(Tools::displayError()); + + $result = Db::getInstance()->ExecuteS(' + SELECT `id_category` + FROM `'._DB_PREFIX_.'category` + WHERE `id_parent` = '.(int)($id_category)); + foreach ($result AS $k => $row) + { + $toDelete[] = (int)($row['id_category']); + $this->recursiveDelete($toDelete, (int)($row['id_category'])); + } + } + + public function delete() + { + if ((int)($this->id) === 0 OR (int)($this->id) === 1) return false; + + $this->clearCache(); + + /* Get childs categories */ + $toDelete = array((int)($this->id)); + $this->recursiveDelete($toDelete, (int)($this->id)); + $toDelete = array_unique($toDelete); + + /* Delete category and its child from database */ + $list = sizeof($toDelete) > 1 ? implode(',', array_map('intval',$toDelete)) : (int)($this->id); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category` WHERE `id_category` IN ('.$list.')'); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_lang` WHERE `id_category` IN ('.$list.')'); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_product` WHERE `id_category` IN ('.$list.')'); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_group` WHERE `id_category` IN ('.$list.')'); + + self::cleanPositions($this->id_parent); + + /* Delete categories images */ + require_once(_PS_ROOT_DIR_.'/images.inc.php'); + foreach ($toDelete AS $id_category) + deleteImage((int)$id_category); + + /* Delete products which were not in others categories */ + $result = Db::getInstance()->ExecuteS(' + SELECT `id_product` + FROM `'._DB_PREFIX_.'product` + WHERE `id_product` NOT IN (SELECT `id_product` FROM `'._DB_PREFIX_.'category_product`)'); + foreach ($result as $p) + { + $product = new Product((int)$p['id_product']); + if (Validate::isLoadedObject($product)) + $product->delete(); + } + + /* Set category default to 1 where categorie no more exists */ + $result = Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'product` + SET `id_category_default` = 1 + WHERE `id_category_default` + NOT IN (SELECT `id_category` FROM `'._DB_PREFIX_.'category`)'); + + /* Rebuild the nested tree */ + if (!isset($this->doNotRegenerateNTree) OR !$this->doNotRegenerateNTree) + self::regenerateEntireNtree(); + + Module::hookExec('categoryDeletion', array('category' => $this)); + return true; + } + + /** + * Delete several categories from database + * + * return boolean Deletion result + */ + public function deleteSelection($categories) + { + $return = 1; + foreach ($categories AS $id_category) + { + $category = new Category((int)($id_category)); + $return &= $category->delete(); + } + return $return; + } + + /** + * Get the depth level for the category + * + * @return integer Depth level + */ + public function calcLevelDepth() + { + /* Root category */ + if (!$this->id_parent) + return 0; + + $parentCategory = new Category((int)($this->id_parent)); + if (!Validate::isLoadedObject($parentCategory)) + die('parent category does not exist'); + return $parentCategory->level_depth + 1; + } + + /** + * Re-calculate the values of all branches of the nested tree + */ + public static function regenerateEntireNtree() + { + $categories = Db::getInstance()->ExecuteS('SELECT id_category, id_parent FROM '._DB_PREFIX_.'category ORDER BY id_category ASC'); + $categoriesArray = array(); + foreach ($categories AS $category) + $categoriesArray[(int)$category['id_parent']]['subcategories'][(int)$category['id_category']] = 1; + $n = 1; + self::_subTree($categoriesArray, 1, $n); + } + + protected static function _subTree(&$categories, $id_category, &$n) + { + $left = (int)$n++; + if (isset($categories[(int)$id_category]['subcategories'])) + foreach ($categories[(int)$id_category]['subcategories'] AS $id_subcategory => $value) + self::_subTree($categories, (int)$id_subcategory, $n); + $right = (int)$n++; + + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'category SET nleft = '.(int)$left.', nright = '.(int)$right.' WHERE id_category = '.(int)$id_category.' LIMIT 1'); + } + + /** + * Return available categories + * + * @param integer $id_lang Language ID + * @param boolean $active return only active categories + * @return array Categories + */ + static public function getCategories($id_lang = false, $active = true, $order = true, $sql_filter = '', $sql_sort = '',$sql_limit = '') + { + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON c.`id_category` = cl.`id_category` + WHERE 1 '.$sql_filter.' '.($id_lang ? 'AND `id_lang` = '.(int)($id_lang) : '').' + '.($active ? 'AND `active` = 1' : '').' + '.(!$id_lang ? 'GROUP BY c.id_category' : '').' + '.($sql_sort != '' ? $sql_sort : 'ORDER BY c.`level_depth` ASC, c.`position` ASC').' + '.($sql_limit != '' ? $sql_limit : '') + ); + + if (!$order) + return $result; + + $categories = array(); + foreach ($result AS $row) + $categories[$row['id_parent']][$row['id_category']]['infos'] = $row; + + return $categories; + } + + static public function getSimpleCategories($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.`id_category`, cl.`name` + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category`) + WHERE cl.`id_lang` = '.(int)($id_lang).' + ORDER BY c.`position`'); + } + + /** + * Return current category childs + * + * @param integer $id_lang Language ID + * @param boolean $active return only active categories + * @return array Categories + */ + public function getSubCategories($id_lang, $active = true) + { + global $cookie; + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.*, cl.id_lang, cl.name, cl.description, cl.link_rewrite, cl.meta_title, cl.meta_keywords, cl.meta_description + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) + WHERE `id_parent` = '.(int)($this->id).' + '.($active ? 'AND `active` = 1' : '').' + AND cg.`id_group` '.$sqlGroups.' + GROUP BY c.`id_category` + ORDER BY `level_depth` ASC, c.`position` ASC'); + + foreach ($result AS &$row) + { + $row['id_image'] = (file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg')) ? (int)($row['id_category']) : Language::getIsoById($id_lang).'-default'; + $row['legend'] = 'no picture'; + } + return $result; + } + + /** + * Return current category products + * + * @param integer $id_lang Language ID + * @param integer $p Page number + * @param integer $n Number of products per page + * @param boolean $getTotal return the number of results instead of the results themself + * @param boolean $active return only active products + * @param boolean $random active a random filter for returned products + * @param int $randomNumberProducts number of products to return if random is activated + * @param boolean $checkAccess set to false to return all products (even if customer hasn't access) + * @return mixed Products or number of products + */ + public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1, $checkAccess = true) + { + global $cookie; + if (!$checkAccess OR !$this->checkAccess($cookie->id_customer)) + return false; + + if ($p < 1) $p = 1; + + if (empty($orderBy)) + $orderBy = 'position'; + else + /* Fix for all modules which are now using lowercase values for 'orderBy' parameter */ + $orderBy = strtolower($orderBy); + + if (empty($orderWay)) + $orderWay = 'ASC'; + if ($orderBy == 'id_product' OR $orderBy == 'date_add') + $orderByPrefix = 'p'; + elseif ($orderBy == 'name') + $orderByPrefix = 'pl'; + elseif ($orderBy == 'manufacturer') + { + $orderByPrefix = 'm'; + $orderBy = 'name'; + } + elseif ($orderBy == 'position') + $orderByPrefix = 'cp'; + + if ($orderBy == 'price') + $orderBy = 'orderprice'; + + if (!Validate::isBool($active) OR !Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die (Tools::displayError()); + + $id_supplier = (int)(Tools::getValue('id_supplier')); + + /* Return only the number of products */ + if ($getTotal) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(cp.`id_product`) AS total + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product` + WHERE cp.`id_category` = '.(int)($this->id).($active ? ' AND p.`active` = 1' : '').' + '.($id_supplier ? 'AND p.id_supplier = '.(int)($id_supplier) : '')); + return isset($result) ? $result['total'] : 0; + } + + $sql = ' + SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, + (p.`price` * IF(t.`rate`,((100 + (t.`rate`))/100),1)) AS orderprice + FROM `'._DB_PREFIX_.'category_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` + WHERE cp.`id_category` = '.(int)($this->id).($active ? ' AND p.`active` = 1' : '').' + '.($id_supplier ? 'AND p.id_supplier = '.(int)$id_supplier : ''); + + if ($random === true) + { + $sql .= ' ORDER BY RAND()'; + $sql .= ' LIMIT 0, '.(int)($randomNumberProducts); + } + else + { + $sql .= ' ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' + LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n); + } + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + + if ($orderBy == 'orderprice') + Tools::orderbyPrice($result, $orderWay); + + if (!$result) + return false; + + /* Modify SQL result */ + return Product::getProductsProperties($id_lang, $result); + } + + /** + * Hide category prefix used for position + * + * @param string $name Category name + * @return string Name without position + */ + static public function hideCategoryPosition($name) + { + Tools::displayAsDeprecated(); + return preg_replace('/^[0-9]+\./', '', $name); + } + + /** + * Return main categories + * + * @param integer $id_lang Language ID + * @param boolean $active return only active categories + * @return array categories + */ + static public function getHomeCategories($id_lang, $active = true) + { + return self::getChildren(1, $id_lang, $active); + } + + static public function getRootCategory($id_lang = NULL) + { + return new Category (1, is_null($id_lang) ? (int)_USER_ID_LANG_ : (int)($id_lang)); + } + + static public function getChildren($id_parent, $id_lang, $active = true) + { + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.`id_category`, cl.`name`, cl.`link_rewrite` + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON c.`id_category` = cl.`id_category` + WHERE `id_lang` = '.(int)($id_lang).' + AND c.`id_parent` = '.(int)($id_parent).' + '.($active ? 'AND `active` = 1' : '').' + ORDER BY `position` ASC'); + + return $result; + } + + /** + * Copy products from a category to another + * + * @param integer $id_old Source category ID + * @param boolean $id_new Destination category ID + * @return boolean Duplication result + */ + public static function duplicateProductCategories($id_old, $id_new) + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_category` + FROM `'._DB_PREFIX_.'category_product` + WHERE `id_product` = '.(int)($id_old)); + + $row = array(); + if ($result) + foreach ($result AS $i) + $row[] = '('.implode(', ', array((int)($id_new), $i['id_category'], '(SELECT tmp.max + 1 FROM (SELECT MAX(cp.`position`) AS max FROM `'._DB_PREFIX_.'category_product` cp WHERE cp.`id_category`='.(int)($i['id_category']).') AS tmp)')).')'; + + $flag = Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'category_product` (`id_product`, `id_category`, `position`) VALUES '.implode(',', $row)); + return $flag; + } + + /** + * Check if category can be moved in another one. + * The category cannot be moved in a child category. + * + * @param integer $id_category current category + * @param integer $id_parent Parent candidate + * @return boolean Parent validity + */ + public static function checkBeforeMove($id_category, $id_parent) + { + if ($id_category == $id_parent) return false; + if ($id_parent == 1) return true; + $i = (int)($id_parent); + + while (42) + { + $result = Db::getInstance()->getRow('SELECT `id_parent` FROM `'._DB_PREFIX_.'category` WHERE `id_category` = '.(int)($i)); + if (!isset($result['id_parent'])) return false; + if ($result['id_parent'] == $id_category) return false; + if ($result['id_parent'] == 1) return true; + $i = $result['id_parent']; + } + } + + public static function getLinkRewrite($id_category, $id_lang) + { + if (!Validate::isUnsignedId($id_category) OR !Validate::isUnsignedId($id_lang)) + return false; + + if (isset(self::$_links[$id_category.'-'.$id_lang])) + return self::$_links[$id_category.'-'.$id_lang]; + + $result = Db::getInstance()->getRow(' + SELECT cl.`link_rewrite` + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON c.`id_category` = cl.`id_category` + WHERE `id_lang` = '.(int)($id_lang).' + AND c.`id_category` = '.(int)($id_category)); + self::$_links[$id_category.'-'.$id_lang] = $result['link_rewrite']; + return $result['link_rewrite']; + } + + public function getLink() + { + global $link; + return $link->getCategoryLink($this->id, $this->link_rewrite); + } + + public function getName($id_lang = NULL) + { + if (!$id_lang) + { + global $cookie; + + if (isset($this->name[$cookie->id_lang])) + $id_lang = $cookie->id_lang; + else + $id_lang = (int)(Configuration::get('PS_LANG_DEFAULT')); + } + return isset($this->name[$id_lang]) ? $this->name[$id_lang] : ''; + } + + /** + * Light back office search for categories + * + * @param integer $id_lang Language ID + * @param string $query Searched string + * @param boolean $unrestricted allows search without lang and includes first category and exact match + * @return array Corresponding categories + */ + static public function searchByName($id_lang, $query, $unrestricted = false) + { + if ($unrestricted === true) + return Db::getInstance()->getRow(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category`) + WHERE `name` LIKE \''.pSQL($query).'\''); + else + return Db::getInstance()->ExecuteS(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)($id_lang).') + WHERE `name` LIKE \'%'.pSQL($query).'%\' AND c.`id_category` != 1'); + } + + /** + * Retrieve category by name and parent category id + * + * @param integer $id_lang Language ID + * @param string $category_name Searched category name + * @param integer $id_parent_category parent category ID + * @return array Corresponding category + */ + static public function searchByNameAndParentCategoryId($id_lang, $category_name, $id_parent_category) + { + return Db::getInstance()->getRow(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)($id_lang).') + WHERE `name` LIKE \''.pSQL($category_name).'\' + AND c.`id_category` != 1 + AND c.`id_parent` = '.(int)($id_parent_category)); + } + + /** + * Get Each parent category of this category until the root category + * + * @param integer $id_lang Language ID + * @return array Corresponding categories + */ + public function getParentsCategories($idLang = null) + { + //get idLang + $idLang = is_null($idLang) ? _USER_ID_LANG_ : (int)($idLang); + + $categories = null; + $idCurrent = (int)($this->id); + while (true) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.*, cl.* + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)($idLang).') + WHERE c.`id_category` = '.(int)$idCurrent.' AND c.`id_parent` != 0 + '); + + $categories[] = $result[0]; + if(!$result OR $result[0]['id_parent'] == 1) + return $categories; + $idCurrent = $result[0]['id_parent']; + } + } + /** + * Specify if a category already in base + * + * @param $id_category Category id + * @return boolean + */ + static public function categoryExists($id_category) + { + $row = Db::getInstance()->getRow(' + SELECT `id_category` + FROM '._DB_PREFIX_.'category c + WHERE c.`id_category` = '.(int)($id_category)); + + return isset($row['id_category']); + } + + + public function cleanGroups() + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_group` WHERE `id_category` = '.(int)($this->id)); + } + + public function addGroups($groups) + { + foreach ($groups as $group) + { + $row = array('id_category' => (int)($this->id), 'id_group' => (int)($group)); + Db::getInstance()->AutoExecute(_DB_PREFIX_.'category_group', $row, 'INSERT'); + } + } + + public function getGroups() + { + $groups = array(); + $result = Db::getInstance()->ExecuteS(' + SELECT cg.`id_group` + FROM '._DB_PREFIX_.'category_group cg + WHERE cg.`id_category` = '.(int)($this->id)); + foreach ($result as $group) + $groups[] = $group['id_group']; + return $groups; + } + + /** + * checkAccess return true if id_customer is in a group allowed to see this category. + * + * @param mixed $id_customer + * @access public + * @return boolean true if access allowed for customer $id_customer + */ + public function checkAccess($id_customer) + { + if (!$id_customer) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT ctg.`id_group` + FROM '._DB_PREFIX_.'category_group ctg + WHERE ctg.`id_category` = '.(int)($this->id).' AND ctg.`id_group` = 1'); + } else { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT ctg.`id_group` + FROM '._DB_PREFIX_.'category_group ctg + INNER JOIN '._DB_PREFIX_.'customer_group cg on (cg.`id_group` = ctg.`id_group` AND cg.`id_customer` = '.(int)($id_customer).') + WHERE ctg.`id_category` = '.(int)($this->id)); + } + if ($result AND isset($result['id_group']) AND $result['id_group']) + return true; + return false; + } + + public function updateGroup($list) + { + $this->cleanGroups(); + if ($list AND sizeof($list)) + $this->addGroups($list); + else + $this->addGroups(array(1)); + } + + static public function setNewGroupForHome($id_group) + { + if (!(int)($id_group)) + return false; + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'category_group` + VALUES (1, '.(int)($id_group).') + '); + } + + public function updatePosition($way, $position) + { + if (!$res = Db::getInstance()->ExecuteS(' + SELECT cp.`id_category`, cp.`position`, cp.`id_parent` + FROM `'._DB_PREFIX_.'category` cp + WHERE cp.`id_parent` = '.(int)(Tools::getValue('id_category_parent', 1)).' + ORDER BY cp.`position` ASC' + )) + return false; + + foreach ($res AS $category) + if ((int)($category['id_category']) == (int)($this->id)) + $movedCategory = $category; + + if (!isset($movedCategory) || !isset($position)) + return false; + // < and > statements rather than BETWEEN operator + // since BETWEEN is treated differently according to databases + $result = (Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'category` + SET `position`= `position` '.($way ? '- 1' : '+ 1').' + WHERE `position` + '.($way + ? '> '.(int)($movedCategory['position']).' AND `position` <= '.(int)($position) + : '< '.(int)($movedCategory['position']).' AND `position` >= '.(int)($position)).' + AND `id_parent`='.(int)($movedCategory['id_parent'])) + AND Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'category` + SET `position` = '.(int)($position).' + WHERE `id_parent` = '.(int)($movedCategory['id_parent']).' + AND `id_category`='.(int)($movedCategory['id_category']))); + Module::hookExec('categoryUpdate'); + return $result; + } + + /** + * cleanPositions keep order of category in $id_category_parent, + * but remove duplicate position. Should not be used if positions + * are clean at the beginning ! + * + * @param mixed $id_category_parent + * @return boolean true if succeed + */ + static public function cleanPositions($id_category_parent) + { + $return = true; + + $result = Db::getInstance()->ExecuteS(' + SELECT `id_category` + FROM `'._DB_PREFIX_.'category` + WHERE `id_parent` = '.(int)($id_category_parent).' + ORDER BY `position`'); + $sizeof = sizeof($result); + for ($i = 0; $i < $sizeof; $i++){ + $sql = ' + UPDATE `'._DB_PREFIX_.'category` + SET `position` = '.(int)($i).' + WHERE `id_parent` = '.(int)($id_category_parent).' + AND `id_category` = '.(int)($result[$i]['id_category']); + $return &= Db::getInstance()->Execute($sql); + } + return $return; + } + + static public function getLastPosition($id_category_parent) + { + return (Db::getInstance()->getValue('SELECT MAX(position)+1 FROM `'._DB_PREFIX_.'category` WHERE `id_parent` = '.(int)($id_category_parent))); + } + + public static function getUrlRewriteInformations($id_category) + { + return Db::getInstance()->ExecuteS(' + SELECT l.`id_lang`, c.`link_rewrite` + FROM `'._DB_PREFIX_.'category_lang` AS c + LEFT JOIN `'._DB_PREFIX_.'lang` AS l ON c.`id_lang` = l.`id_lang` + WHERE c.`id_category` = '.(int)$id_category.' + AND l.`active` = 1' + ); + + } + + public function getChildrenWs() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.`id_category` as id + FROM `'._DB_PREFIX_.'category` c + WHERE c.`id_parent` = '.(int)($this->id).' + AND `active` = 1 + ORDER BY `position` ASC'); + return $result; + } + + public function getProductsWs() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT cp.`id_product` as id + FROM `'._DB_PREFIX_.'category_product` cp + WHERE cp.`id_category` = '.(int)($this->id).' + ORDER BY `position` ASC'); + return $result; + } +} diff --git a/classes/Chart.php b/classes/Chart.php new file mode 100644 index 000000000..cd22ec1e7 --- /dev/null +++ b/classes/Chart.php @@ -0,0 +1,178 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ChartCore +{ + protected static $poolId = 0; + + protected $width = 600; + protected $height = 300; + + // Time mode + protected $timeMode = false; + protected $from; + protected $to; + protected $format; + protected $granularity; + + protected $curves = array(); + + /** @prototype void public static function init(void) */ + public static function init() + { + if (!self::$poolId) + { + ++self::$poolId; + echo ' + + '; + } + } + + /** @prototype void public function __construct() */ + public function __construct() + { + self::init(); + ++self::$poolId; + } + + /** @prototype void public function setSize(int $width, int $height) */ + public function setSize($width, $height) + { + $this->width = (int)$width; + $this->height = (int)$height; + } + + /** @prototype void public function setTimeMode($from, $to, $granularity) */ + public function setTimeMode($from, $to, $granularity) + { + $this->granularity = $granularity; + + if (Validate::isDate($from)) + $from = strtotime($from); + $this->from = $from; + if (Validate::isDate($to)) + $to = strtotime($to); + $this->to = $to; + + if ($granularity == 'd') + $this->format = '%d/%m/%y'; + if ($granularity == 'w') + $this->format = '%d/%m/%y'; + if ($granularity == 'm') + $this->format = '%m/%y'; + if ($granularity == 'y') + $this->format = '%y'; + + $this->timeMode = true; + } + + public function getCurve($i) + { + if (!array_key_exists($i, $this->curves)) + $this->curves[$i] = new Curve(); + return $this->curves[$i]; + } + + /** @prototype void public function display() */ + public function display() + { + $options = ''; + if ($this->timeMode) + { + $options = 'xaxis:{mode:"time",timeformat:\''.addslashes($this->format).'\',min:'.$this->from.'000,max:'.$this->to.'000}'; + if ($this->granularity == 'd') + foreach ($this->curves as $curve) + for ($i = $this->from; $i <= $this->to; $i += 86400) + if (!$curve->getPoint($i)) + $curve->setPoint($i, 0); + } + + $jsCurves = array(); + foreach ($this->curves as $curve) + $jsCurves[] = $curve->getValues($this->timeMode); + + if (count($jsCurves)) + echo ' +
+ '; + else + echo ErrorFacade::Display(PS_ERROR_UNDEFINED, 'No values for this chart.'); + } +} + +class Curve +{ + protected $values = array(); + protected $label; + protected $type; + + /** @prototype void public function setValues(array $values) */ + public function setValues(array $values) + { + $this->values = $values; + } + + public function getValues($timeMode = false) + { + ksort($this->values); + $string = ''; + foreach ($this->values as $key => $value) + $string .= '['.addslashes((string)$key).($timeMode ? '000' : '').','.(float)$value.'],'; + return '{data:['.rtrim($string, ',').']'.(!empty($this->label) ? ',label:"'.$this->label.'"' : '').''.(!empty($this->type) ? ','.$this->type : '').'}'; + } + + /** @prototype void public function setPoint(float $x, float $y) */ + public function setPoint($x, $y) + { + $this->values[(string)$x] = (float)$y; + } + + public function setLabel($label) + { + $this->label = $label; + } + + public function setType($type) + { + $this->type = ''; + if ($type == 'bars') + $this->type = 'bars:{show:true}'; + if ($type == 'steps') + $this->type = 'lines:{show:true,steps:true}'; + } + + public function getPoint($x) + { + if (array_key_exists((string)$x, $this->values)) + return $this->values[(string)$x]; + } +} \ No newline at end of file diff --git a/classes/Combination.php b/classes/Combination.php new file mode 100644 index 000000000..7c94a65f4 --- /dev/null +++ b/classes/Combination.php @@ -0,0 +1,159 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CombinationCore extends ObjectModel +{ + public $id_product; + + public $reference; + + public $supplier_reference; + + public $location; + + public $ean13; + + public $upc; + + public $wholesale_price; + + public $price; + + public $ecotax; + + public $quantity; + + public $weight; + + public $default_on; + + protected $fieldsRequired = array( + 'id_product', + ); + protected $fieldsSize = array( + 'reference' => 32, + 'supplier_reference' => 32, + 'location' => 64, + 'ean13' => 13, + 'upc' => 12, + 'wholesale_price' => 27, + 'price' => 20, + 'ecotax' => 20, + 'quantity' => 10 + ); + protected $fieldsValidate = array( + 'id_product' => 'isUnsignedId', + 'location' => 'isGenericName', + 'ean13' => 'isEan13', + 'upc' => 'isUpc', + 'wholesale_price' => 'isPrice', + 'price' => 'isPrice', + 'ecotax' => 'isPrice', + 'quantity' => 'isUnsignedInt', + 'weight' => 'isFloat', + 'default_on' => 'isBool', + ); + + protected $table = 'product_attribute'; + protected $identifier = 'id_product_attribute'; + + protected $webserviceParameters = array( + 'objectNodeName' => 'combination', + 'objectsNodeName' => 'combinations', + 'fields' => array( + 'id_product' => array('required' => true, 'xlink_resource'=> 'products'), + ), + 'associations' => array( + 'product_option_values' => array('resource' => 'product_option_value', 'xlink_resource'=> 'product_option_values'), + ), + ); + + public function getFields() + { + parent::validateFields(); + $fields['id_product'] = (int)($this->id_product); + $fields['reference'] = pSQL($this->reference); + $fields['supplier_reference'] = pSQL($this->supplier_reference); + $fields['location'] = pSQL($this->location); + $fields['ean13'] = pSQL($this->ean13); + $fields['upc'] = pSQL($this->upc); + $fields['wholesale_price'] = pSQL($this->wholesale_price); + $fields['price'] = pSQL($this->price); + $fields['ecotax'] = pSQL($this->ecotax); + $fields['quantity'] = (int)($this->quantity); + $fields['weight'] = pSQL($this->weight); + $fields['default_on'] = (int)($this->default_on); + return $fields; + } + + public function delete() + { + if (!parent::delete() OR $this->deleteAssociations() === false) + return false; + return true; + } + + public function deleteAssociations() + { + if ( + Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'product_attribute_combination` + WHERE `id_product_attribute` = '.(int)($this->id)) === false + || + Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'product_attribute_image` + WHERE `id_product_attribute` = '.(int)($this->id)) === false + ) + return false; + return true; + } + + public function setWsProductOptionValues($values) + { + if ($this->deleteAssociations()) + { + $sqlValues = array(); + foreach ($values as $value) + $sqlValues[] = '('.(int)$value['id'].', '.(int)$this->id.')'; + $result = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'product_attribute_combination` (`id_attribute`, `id_product_attribute`) + VALUES '.implode(',', $sqlValues) + ); + return $result; + } + return false; + } + + public function getWsProductOptionValues() + { + $result = Db::getInstance()->executeS('SELECT id_attribute AS id from `'._DB_PREFIX_.'product_attribute_combination` WHERE id_product_attribute = '.(int)$this->id); + return $result; + } + +} + + diff --git a/classes/Configuration.php b/classes/Configuration.php new file mode 100644 index 000000000..774cc0389 --- /dev/null +++ b/classes/Configuration.php @@ -0,0 +1,341 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ConfigurationCore extends ObjectModel +{ + public $id; + + /** @var string Key */ + public $name; + + /** @var string Value */ + public $value; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 32); + protected $fieldsValidate = array('name' => 'isConfigName'); + + protected $table = 'configuration'; + protected $identifier = 'id_configuration'; + + /** @var array Configuration cache */ + protected static $_CONF; + /** @var array Configuration multilang cache */ + protected static $_CONF_LANG; + + protected $webserviceParameters = array( + 'fields' => array( + 'value' => array(), + 'date_add' => array(), + 'date_upd' => array() + ) + ); + + protected $webserviceParametersI18n = array( + 'retrieveData' => array('retrieveMethod' => 'getI18nConfigurationList'), + 'fields' => array( + 'value' => array('i18n' => true), + 'date_add' => array('i18n' => true), + 'date_upd' => array('i18n' => true) + ) + ); + + public function getFields() + { + parent::validateFields(); + $fields['name'] = pSQL($this->name); + $fields['value'] = pSQL($this->value); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + if (!is_array($this->value)) + return true; + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('value')); + } + + /** + * Delete a configuration key in database (with or without language management) + * + * @param string $key Key to delete + * @return boolean Deletion result + */ + static public function deleteByName($key) + { + if (!Validate::isConfigName($key)) + die(Tools::displayError()); + + if (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'configuration_lang` WHERE `id_configuration` = + (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE `name` = \''.pSQL($key).'\')') AND Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'configuration` WHERE `name` = \''.pSQL($key).'\'')) + { + unset(self::$_CONF[$key]); + return true; + } + return false; + } + + /** + * Get a single configuration value (in one language only) + * + * @param string $key Key wanted + * @param integer $id_lang Language ID + * @return string Value + */ + static public function get($key, $id_lang = NULL) + { + if (!Validate::isConfigName($key)) + die(Tools::displayError()); + if ($id_lang AND isset(self::$_CONF_LANG[(int)($id_lang)][$key])) + return self::$_CONF_LANG[(int)($id_lang)][$key]; + elseif (key_exists($key, self::$_CONF)) + return self::$_CONF[$key]; + return false; + } + + /** + * Set TEMPORARY a single configuration value (in one language only) + * + * @param string $key Key wanted + * @param mixed $values $values is an array if the configuration is multilingual, a single string else. + */ + static public function set($key, $values) + { + if (!Validate::isConfigName($key)) + die(Tools::displayError()); + /* Update classic values */ + if (!is_array($values)) + self::$_CONF[$key] = $values; + /* Update multilingual values */ + else + /* Add multilingual values */ + foreach ($values as $k => $value) + self::$_CONF_LANG[(int)($k)][$key] = $value; + } + + /** + * Get a single configuration value (in multiple languages) + * + * @param string $key Key wanted + * @return array Values in multiple languages + */ + static public function getInt($key) + { + $languages = Language::getLanguages(); + $resultsArray = array(); + foreach($languages as $language) + $resultsArray[$language['id_lang']] = self::get($key, $language['id_lang']); + return $resultsArray; + } + + /** + * Get several configuration values (in one language only) + * + * @param array $keys Keys wanted + * @param integer $id_lang Language ID + * @return array Values + */ + static public function getMultiple($keys, $id_lang = NULL) + { + if (!is_array($keys) OR !is_array(self::$_CONF) OR ($id_lang AND !is_array(self::$_CONF_LANG))) + die(Tools::displayError()); + + $resTab = array(); + if (!$id_lang) + { + foreach ($keys AS $key) + if (key_exists($key, self::$_CONF)) + $resTab[$key] = self::$_CONF[$key]; + } + elseif (key_exists($id_lang, self::$_CONF_LANG)) + foreach ($keys AS $key) + if (key_exists($key, self::$_CONF_LANG[(int)($id_lang)])) + $resTab[$key] = self::$_CONF_LANG[(int)($id_lang)][$key]; + return $resTab; + } + + /** + * Get several configuration values (in multiple languages) + * + * @param array $keys Keys wanted + * @return array Values in multiple languages + * @deprecated + */ + static public function getMultipleInt($keys) + { + Tools::displayAsDeprecated(); + $languages = Language::getLanguages(); + $resultsArray = array(); + foreach($languages as $language) + $resultsArray[$language['id_lang']] = self::getMultiple($keys, $language['id_lang']); + return $resultsArray; + } + + /** + * Insert configuration key and value into database + * + * @param string $key Key + * @param string $value Value + * @eturn boolean Insert result + */ + static protected function _addConfiguration($key, $value = NULL) + { + $newConfig = new Configuration(); + $newConfig->name = $key; + if (!is_null($value)) + $newConfig->value = $value; + return $newConfig->add(); + } + + /** + * Update configuration key and value into database (automatically insert if key does not exist) + * + * @param string $key Key + * @param mixed $values $values is an array if the configuration is multilingual, a single string else. + * @param boolean $html Specify if html is authorized in value + * @return boolean Update result + */ + static public function updateValue($key, $values, $html = false) + { + if ($key == NULL) return; + if (!Validate::isConfigName($key)) + die(Tools::displayError()); + $db = Db::getInstance(); + /* Update classic values */ + if (!is_array($values)) + { + $values = pSQL($values, $html); + if (Configuration::get($key) !== false) + { + $result = $db->AutoExecute( + _DB_PREFIX_.'configuration', + array('value' => $values, 'date_upd' => date('Y-m-d H:i:s')), + 'UPDATE', '`name` = \''.pSQL($key).'\'', true, true); + self::$_CONF[$key] = stripslashes($values); + } + else + { + $result = self::_addConfiguration($key, $values); + if ($result) + self::$_CONF[$key] = stripslashes($values); + return $result; + } + } + + /* Update multilingual values */ + else + { + $result = 1; + /* Add the key in the configuration table if it does not already exist... */ + $conf = $db->getRow('SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE `name` = \''.pSQL($key).'\''); + if (!is_array($conf) OR !array_key_exists('id_configuration', $conf)) + { + self::_addConfiguration($key); + $conf = $db->getRow('SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE `name` = \''.pSQL($key).'\''); + } + /* ... then add multilingual values into configuration_lang table */ + if (!array_key_exists('id_configuration', $conf) OR !(int)($conf['id_configuration'])) + return false; + foreach ($values as $id_lang => $value) + { + $value = pSQL($value, $html); + $result &= $db->Execute('INSERT INTO `'._DB_PREFIX_.'configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) + VALUES ('.$conf['id_configuration'].', '.(int)($id_lang).', \''.$value.'\', NOW()) + ON DUPLICATE KEY UPDATE `value` = \''.$value.'\', `date_upd` = NOW()'); + self::$_CONF_LANG[(int)($id_lang)][$key] = stripslashes($value); + } + } + return $result; + } + + static public function loadConfiguration() + { + /* Configuration */ + self::$_CONF = array(); + $result = Db::getInstance()->ExecuteS('SELECT `name`, `value` FROM `'._DB_PREFIX_.'configuration`'); + if ($result) + foreach ($result AS $row) + self::$_CONF[$row['name']] = stripslashes($row['value']); + + /* Multilingual configuration */ + self::$_CONF_LANG = array(); + $result = Db::getInstance()->ExecuteS(' + SELECT c.`name`, cl.`id_lang`, IFNULL(cl.`value`, c.`value`) AS value + FROM `'._DB_PREFIX_.'configuration_lang` cl + LEFT JOIN `'._DB_PREFIX_.'configuration` c ON c.id_configuration = cl.id_configuration'); + if ($result === false) + die(Tools::displayError('Invalid loadConfiguration() SQL query')); + foreach ($result AS $row) + self::$_CONF_LANG[(int)($row['id_lang'])][$row['name']] = stripslashes($row['value']); + } + + public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit) + { + $query = ' + SELECT DISTINCT main.`'.$this->identifier.'` FROM `'._DB_PREFIX_.$this->table.'` main + '.$sql_join.' + WHERE id_configuration NOT IN + ( SELECT id_configuration + FROM '._DB_PREFIX_.$this->table.'_lang + ) '.$sql_filter.' + '.($sql_sort != '' ? $sql_sort : '').' + '.($sql_limit != '' ? $sql_limit : '').' + '; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); + } + + public function getI18nConfigurationList($sql_join, $sql_filter, $sql_sort, $sql_limit) + { + $query = ' + SELECT DISTINCT main.`'.$this->identifier.'` FROM `'._DB_PREFIX_.$this->table.'` main + '.$sql_join.' + WHERE id_configuration IN + ( SELECT id_configuration + FROM '._DB_PREFIX_.$this->table.'_lang + ) '.$sql_filter.' + '.($sql_sort != '' ? $sql_sort : '').' + '.($sql_limit != '' ? $sql_limit : '').' + '; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); + } +} + + diff --git a/classes/Connection.php b/classes/Connection.php new file mode 100644 index 000000000..fabf92f93 --- /dev/null +++ b/classes/Connection.php @@ -0,0 +1,172 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ConnectionCore extends ObjectModel +{ + /** @var integer */ + public $id_guest; + + /** @var integer */ + public $id_page; + + /** @var string */ + public $ip_address; + + /** @var string */ + public $http_referer; + + /** @var string */ + public $date_add; + + protected $fieldsRequired = array ('id_guest', 'id_page'); + protected $fieldsValidate = array ('id_guest' => 'isUnsignedId', 'id_page' => 'isUnsignedId', + 'ip_address' => 'isInt', 'http_referer' => 'isAbsoluteUrl'); + + /* MySQL does not allow 'connection' for a table name */ + protected $table = 'connections'; + protected $identifier = 'id_connections'; + + public function getFields() + { + parent::validateFields(); + $fields['id_guest'] = (int)($this->id_guest); + $fields['id_page'] = (int)($this->id_page); + $fields['ip_address'] = (int)($this->ip_address); + if (Validate::isAbsoluteUrl($this->http_referer)) + $fields['http_referer'] = pSQL($this->http_referer); + $fields['date_add'] = pSQL($this->date_add); + return $fields; + } + + public static function setPageConnection($cookie, $full = true) + { + // The connection is created if it does not exist yet and we get the current page id + if (!isset($cookie->id_connections) OR !strstr(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', Tools::getHttpHost(false, false))) + $id_page = Connection::setNewConnection($cookie); + if (!isset($id_page) OR !$id_page) + $id_page = Page::getCurrentId(); + if (!Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS')) + return array('id_page' => $id_page); + + // The ending time will be updated by an ajax request when the guest will close the page + $time_start = date('Y-m-d H:i:s'); + Db::getInstance()->AutoExecute(_DB_PREFIX_.'connections_page', array('id_connections' => (int)($cookie->id_connections), 'id_page' => (int)($id_page), 'time_start' => $time_start), 'INSERT'); + + // This array is serialized and used by the ajax request to identify the page + return array( + 'id_connections' => (int)($cookie->id_connections), + 'id_page' => (int)($id_page), + 'time_start' => $time_start); + } + + public static function setNewConnection($cookie) + { + if (isset($_SERVER['HTTP_USER_AGENT']) + AND preg_match('/BotLink|ahoy|AlkalineBOT|anthill|appie|arale|araneo|AraybOt|ariadne|arks|ATN_Worldwide|Atomz|bbot|Bjaaland|Ukonline|borg\-bot\/0\.9|boxseabot|bspider|calif|christcrawler|CMC\/0\.01|combine|confuzzledbot|CoolBot|cosmos|Internet Cruiser Robot|cusco|cyberspyder|cydralspider|desertrealm, desert realm|digger|DIIbot|grabber|downloadexpress|DragonBot|dwcp|ecollector|ebiness|elfinbot|esculapio|esther|fastcrawler|FDSE|FELIX IDE|ESI|fido|H�m�h�kki|KIT\-Fireball|fouineur|Freecrawl|gammaSpider|gazz|gcreep|golem|googlebot|griffon|Gromit|gulliver|gulper|hambot|havIndex|hotwired|htdig|iajabot|INGRID\/0\.1|Informant|InfoSpiders|inspectorwww|irobot|Iron33|JBot|jcrawler|Teoma|Jeeves|jobo|image\.kapsi\.net|KDD\-Explorer|ko_yappo_robot|label\-grabber|larbin|legs|Linkidator|linkwalker|Lockon|logo_gif_crawler|marvin|mattie|mediafox|MerzScope|NEC\-MeshExplorer|MindCrawler|udmsearch|moget|Motor|msnbot|muncher|muninn|MuscatFerret|MwdSearch|sharp\-info\-agent|WebMechanic|NetScoop|newscan\-online|ObjectsSearch|Occam|Orbsearch\/1\.0|packrat|pageboy|ParaSite|patric|pegasus|perlcrawler|phpdig|piltdownman|Pimptrain|pjspider|PlumtreeWebAccessor|PortalBSpider|psbot|Getterrobo\-Plus|Raven|RHCS|RixBot|roadrunner|Robbie|robi|RoboCrawl|robofox|Scooter|Search\-AU|searchprocess|Senrigan|Shagseeker|sift|SimBot|Site Valet|skymob|SLCrawler\/2\.0|slurp|ESI|snooper|solbot|speedy|spider_monkey|SpiderBot\/1\.0|spiderline|nil|suke|http:\/\/www\.sygol\.com|tach_bw|TechBOT|templeton|titin|topiclink|UdmSearch|urlck|Valkyrie libwww\-perl|verticrawl|Victoria|void\-bot|Voyager|VWbot_K|crawlpaper|wapspider|WebBandit\/1\.0|webcatcher|T\-H\-U\-N\-D\-E\-R\-S\-T\-O\-N\-E|WebMoose|webquest|webreaper|webs|webspider|WebWalker|wget|winona|whowhere|wlm|WOLP|WWWC|none|XGET|Nederland\.zoek/i', $_SERVER['HTTP_USER_AGENT'])) + { + // This is a bot and we have to retrieve its connection ID + if ($id_connections = Db::getInstance()->getValue(' + SELECT `id_connections` FROM `'._DB_PREFIX_.'connections` c + WHERE ip_address = '.ip2long(Tools::getRemoteAddr()).' + AND DATE_ADD(c.`date_add`, INTERVAL 30 MINUTE) > \''.pSQL(date('Y-m-d H:i:00')).'\' + ORDER BY c.`date_add` DESC')) + { + $cookie->id_connections = (int)$id_connections; + return Page::getCurrentId(); + } + } + + // A new connection is created if the guest made no actions during 30 minutes + $result = Db::getInstance()->getRow(' + SELECT c.`id_guest` + FROM `'._DB_PREFIX_.'connections` c + WHERE c.`id_guest` = '.(int)($cookie->id_guest).' + AND DATE_ADD(c.`date_add`, INTERVAL 30 MINUTE) > \''.pSQL(date('Y-m-d H:i:00')).'\' + ORDER BY c.`date_add` DESC'); + if (!$result['id_guest'] AND (int)($cookie->id_guest)) + { + // The old connections details are removed from the database in order to spare some memory + Connection::cleanConnectionsPages(); + + $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; + $arrayUrl = parse_url($referer); + if (!isset($arrayUrl['host']) OR preg_replace('/^www./', '', $arrayUrl['host']) == preg_replace('/^www./', '', Tools::getHttpHost(false, false))) + $referer = ''; + $connection = new Connection(); + $connection->id_guest = (int)($cookie->id_guest); + $connection->id_page = Page::getCurrentId(); + $connection->ip_address = Tools::getRemoteAddr() ? ip2long(Tools::getRemoteAddr()) : ''; + if (Validate::isAbsoluteUrl($referer)) + $connection->http_referer = $referer; + $connection->add(); + $cookie->id_connections = $connection->id; + return $connection->id_page; + } + } + + public static function setPageTime($id_connections, $id_page, $time_start, $time) + { + if (!Validate::isUnsignedId($id_connections) + OR !Validate::isUnsignedId($id_page) + OR !Validate::isDate($time_start)) + return; + + // Limited to 5 minutes because more than 5 minutes is considered as an error + if ($time > 300000) + $time = 300000; + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'connections_page` + SET `time_end` = `time_start` + INTERVAL '.(int)($time / 1000).' SECOND + WHERE `id_connections` = '.(int)($id_connections).' + AND `id_page` = '.(int)($id_page).' + AND `time_start` = \''.pSQL($time_start).'\''); + } + + public static function cleanConnectionsPages() + { + $period = Configuration::get('PS_STATS_OLD_CONNECT_AUTO_CLEAN'); + + if ($period === 'week') + $interval = '1 WEEK'; + else if ($period === 'month') + $interval = '1 MONTH'; + else if ($period === 'year') + $interval = '1 YEAR'; + else + return; + + if ($interval != null) + { + // Records of connections details older than the beginning of the specified interval are deleted + Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'connections_page` + WHERE time_start < LAST_DAY(DATE_SUB(NOW(), INTERVAL '.$interval.'))'); + } + } +} + + diff --git a/classes/ConnectionsSource.php b/classes/ConnectionsSource.php new file mode 100644 index 000000000..1fb2fa928 --- /dev/null +++ b/classes/ConnectionsSource.php @@ -0,0 +1,112 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ConnectionsSourceCore extends ObjectModel +{ + public $id_connections; + public $http_referer; + public $request_uri; + public $keywords; + public $date_add; + + // Controler les keywords + + protected $fieldsRequired = array('id_connections', 'date_add'); + protected $fieldsValidate = array('id_connections' => 'isUnsignedId', 'http_referer' => 'isAbsoluteUrl', 'request_uri' => 'isUrl', 'keywords' => 'isMessage'); + + protected $table = 'connections_source'; + protected $identifier = 'id_connections_source'; + + public function getFields() + { + parent::validateFields(); + $fields['id_connections'] = (int)($this->id_connections); + $fields['http_referer'] = pSQL($this->http_referer); + $fields['request_uri'] = pSQL($this->request_uri); + $fields['keywords'] = pSQL($this->keywords); + $fields['date_add'] = pSQL($this->date_add); + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + if($result = parent::add($autodate, $nullValues)) + Referrer::cacheNewSource($this->id); + return $result; + } + + public static function logHttpReferer() + { + global $cookie; + + if (!isset($cookie->id_connections) OR !Validate::isUnsignedId($cookie->id_connections)) + return false; + if (!isset($_SERVER['HTTP_REFERER']) AND !Configuration::get('TRACKING_DIRECT_TRAFFIC')) + return false; + + $source = new ConnectionsSource(); + if (isset($_SERVER['HTTP_REFERER']) AND Validate::isAbsoluteUrl($_SERVER['HTTP_REFERER'])) + { + $parsed = parse_url($_SERVER['HTTP_REFERER']); + $parsed_host = parse_url(Tools::getProtocol().Tools::getHttpHost(false, false).__PS_BASE_URI__); + if ((preg_replace('/^www./', '', $parsed['host']) == preg_replace('/^www./', '', Tools::getHttpHost(false, false))) + AND !strncmp($parsed['path'], $parsed_host['path'], strlen(__PS_BASE_URI__))) + return false; + if (Validate::isAbsoluteUrl(strval($_SERVER['HTTP_REFERER']))) + { + $source->http_referer = strval($_SERVER['HTTP_REFERER']); + $source->keywords = trim(SearchEngine::getKeywords(strval($_SERVER['HTTP_REFERER']))); + if (!Validate::isMessage($source->keywords)) + return false; + } + } + + $source->id_connections = (int)($cookie->id_connections); + $source->request_uri = Tools::getHttpHost(false, false); + if (isset($_SERVER['REDIRECT_URL'])) + $source->request_uri .= strval($_SERVER['REDIRECT_URL']); + elseif (isset($_SERVER['REQUEST_URI'])) + $source->request_uri .= strval($_SERVER['REQUEST_URI']); + if (!Validate::isUrl($source->request_uri)) + $source->request_uri = ''; + return $source->add(); + } + + public static function getOrderSources($id_order) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT cos.http_referer, cos.request_uri, cos.keywords, cos.date_add + FROM '._DB_PREFIX_.'orders o + INNER JOIN '._DB_PREFIX_.'guest g ON g.id_customer = o.id_customer + INNER JOIN '._DB_PREFIX_.'connections co ON co.id_guest = g.id_guest + INNER JOIN '._DB_PREFIX_.'connections_source cos ON cos.id_connections = co.id_connections + WHERE id_order = '.(int)($id_order).' + ORDER BY cos.date_add DESC'); + } +} + + diff --git a/classes/Contact.php b/classes/Contact.php new file mode 100644 index 000000000..f4c42c7bc --- /dev/null +++ b/classes/Contact.php @@ -0,0 +1,88 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ContactCore extends ObjectModel +{ + public $id; + + /** @var string Name */ + public $name; + + /** @var string e-mail */ + public $email; + + /** @var string Detailed description */ + public $description; + + public $customer_service; + + protected $fieldsRequired = array(); + protected $fieldsSize = array('email' => 128); + protected $fieldsValidate = array('email' => 'isEmail', 'customer_service' => 'isBool'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName', 'description' => 'isCleanHtml'); + + protected $table = 'contact'; + protected $identifier = 'id_contact'; + + public function getFields() + { + parent::validateFields(); + $fields['email'] = pSQL($this->email); + $fields['customer_service'] = (int)($this->customer_service); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'description')); + } + + /** + * Return available contacts + * + * @param integer $id_lang Language ID + * @return array Contacts + */ + static public function getContacts($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'contact` c + LEFT JOIN `'._DB_PREFIX_.'contact_lang` cl ON c.`id_contact` = cl.`id_contact` + WHERE cl.`id_lang` = '.(int)($id_lang).' + ORDER BY `name` ASC'); + } +} + diff --git a/classes/ControllerFactory.php b/classes/ControllerFactory.php new file mode 100644 index 000000000..db7948c4c --- /dev/null +++ b/classes/ControllerFactory.php @@ -0,0 +1,53 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ControllerFactoryCore +{ + public static function includeController($className) + { + if (!class_exists($className, false)) + { + require_once(dirname(__FILE__).'/../controllers/'.$className.'.php'); + if (file_exists(dirname(__FILE__).'/../override/controllers/'.$className.'.php')) + require_once(dirname(__FILE__).'/../override/controllers/'.$className.'.php'); + else + { + $coreClass = new ReflectionClass($className.'Core'); + if ($coreClass->isAbstract()) + eval('abstract class '.$className.' extends '.$className.'Core {}'); + else + eval('class '.$className.' extends '.$className.'Core {}'); + } + } + } + + public static function getController($className, $auth = false, $ssl = false) + { + ControllerFactory::includeController($className); + return new $className($auth, $ssl); + } +} \ No newline at end of file diff --git a/classes/Cookie.php b/classes/Cookie.php new file mode 100644 index 000000000..0792e0116 --- /dev/null +++ b/classes/Cookie.php @@ -0,0 +1,347 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CookieCore +{ + /** @var array Contain cookie content in a key => value format */ + protected $_content; + + /** @var array Crypted cookie name for setcookie() */ + protected $_name; + + /** @var array expiration date for setcookie() */ + protected $_expire; + + /** @var array Website domain for setcookie() */ + protected $_domain; + + /** @var array Path for setcookie() */ + protected $_path; + + /** @var array cipher tool instance */ + protected $_cipherTool; + + /** @var array cipher tool initialization key */ + protected $_key; + + /** @var array cipher tool initilization vector */ + protected $_iv; + + protected $_modified = false; + + /** + * Get data if the cookie exists and else initialize an new one + * + * @param $name Cookie name before encrypting + * @param $path + */ + public function __construct($name, $path = '', $expire = NULL) + { + $this->_content = array(); + $this->_expire = isset($expire) ? (int)($expire) : (time() + 1728000); + $this->_name = md5($name.Tools::getHttpHost()); + $this->_path = trim(__PS_BASE_URI__.$path, '/\\').'/'; + if ($this->_path{0} != '/') $this->_path = '/'.$this->_path; + $this->_path = rawurlencode($this->_path); + $this->_path = str_replace('%2F', '/', $this->_path); + $this->_path = str_replace('%7E', '~', $this->_path); + $this->_key = _COOKIE_KEY_; + $this->_iv = _COOKIE_IV_; + $this->_domain = $this->getDomain(); + if (Configuration::get('PS_CIPHER_ALGORITHM')) + $this->_cipherTool = new Rijndael(_RIJNDAEL_KEY_, _RIJNDAEL_IV_); + else + $this->_cipherTool = new Blowfish($this->_key, $this->_iv); + $this->update(); + } + + protected function getDomain() + { + $r = '!(?:(\w+)://)?(?:(\w+)\:(\w+)@)?([^/:]+)?(?:\:(\d*))?([^#?]+)?(?:\?([^#]+))?(?:#(.+$))?!i'; + preg_match ($r, Tools::getHttpHost(false, false), $out); + if (preg_match('/^(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]{1}[0-9]|[1-9]).)'. + '{1}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]).)'. + '{2}((25[0-5]|2[0-4][0-9]|[1]{1}[0-9]{2}|[1-9]{1}[0-9]|[0-9]){1}))$/', $out[4])) + return false; + if (!strstr(Tools::getHttpHost(false, false), '.')) + return false; + $domain = $out[4]; + $subDomains = SubDomain::getSubDomains(); + if ($subDomains === false) + die(Tools::displayError('Bad SubDomain SQL query.')); + foreach ($subDomains AS $subDomain) + { + $subDomainLength = strlen($subDomain) + 1; + if (strncmp($subDomain.'.', $domain, $subDomainLength) == 0) + $domain = substr($domain, $subDomainLength); + } + return $domain; + } + + /** + * Set expiration date + * + * @param integer $expire Expiration time from now + */ + function setExpire($expire) + { + $this->_expire = (int)($expire); + } + + /** + * Magic method wich return cookie data from _content array + * + * @param $key key wanted + * @return string value corresponding to the key + */ + public function __get($key) + { + return isset($this->_content[$key]) ? $this->_content[$key] : false; + } + + /** + * Magic method which check if key exists in the cookie + * + * @param $key key wanted + * @return boolean key existence + */ + public function __isset($key) + { + return isset($this->_content[$key]); + } + + /** + * Magic method wich add data into _content array + * + * @param $key key desired + * @param $value value corresponding to the key + */ + public function __set($key, $value) + { + if (is_array($value)) + die(Tools::displayError()); + if (preg_match('/¤|\|/', $key.$value)) + throw new Exception('Forbidden chars in cookie'); + if (!$this->_modified AND (!isset($this->_content[$key]) OR (isset($this->_content[$key]) AND $this->_content[$key] != $value))) + $this->_modified = true; + $this->_content[$key] = $value; + $this->write(); + } + + /** + * Magic method wich delete data into _content array + * + * @param $key key wanted + */ + public function __unset($key) + { + if (isset($this->_content[$key])) + $this->_modified = true; + unset($this->_content[$key]); + $this->write(); + } + + /** + * Check customer informations saved into cookie and return customer validity + * + * @return boolean customer validity + */ + public function isLogged($withGuest = false) + { + if (!$withGuest AND $this->is_guest == 1) + return false; + + /* Customer is valid only if it can be load and if cookie password is the same as database one */ + if ($this->logged == 1 AND $this->id_customer AND Validate::isUnsignedId($this->id_customer) AND Customer::checkPassword((int)($this->id_customer), $this->passwd)) + return true; + return false; + } + + /** + * Check employee informations saved into cookie and return employee validity + * + * @return boolean employee validity + */ + public function isLoggedBack() + { + /* Employee is valid only if it can be load and if cookie password is the same as database one */ + return ($this->id_employee + AND Validate::isUnsignedId($this->id_employee) + AND Employee::checkPassword((int)$this->id_employee, $this->passwd) + AND (!isset($this->_content['remote_addr']) OR $this->_content['remote_addr'] == ip2long(Tools::getRemoteAddr()) OR !Configuration::get('PS_COOKIE_CHECKIP')) + ); + } + + /** + * Delete cookie + */ + public function logout() + { + $this->_content = array(); + $this->_setcookie(); + unset($_COOKIE[$this->_name]); + $this->_modified = true; + $this->write(); + } + + /** + * Soft logout, delete everything links to the customer + * but leave there affiliate's informations + */ + public function mylogout() + { + unset($this->_content['id_customer']); + unset($this->_content['id_guest']); + unset($this->_content['is_guest']); + unset($this->_content['id_connections']); + unset($this->_content['customer_lastname']); + unset($this->_content['customer_firstname']); + unset($this->_content['passwd']); + unset($this->_content['logged']); + unset($this->_content['email']); + unset($this->_content['id_cart']); + unset($this->_content['id_address_invoice']); + unset($this->_content['id_address_delivery']); + $this->_modified = true; + $this->write(); + } + + function makeNewLog() + { + unset($this->_content['id_customer']); + unset($this->_content['id_guest']); + Guest::setNewGuest($this); + $this->_modified = true; + } + + /** + * Get cookie content + */ + function update($nullValues = false) + { + + if (isset($_COOKIE[$this->_name])) + { + /* Decrypt cookie content */ + $content = $this->_cipherTool->decrypt($_COOKIE[$this->_name]); + + /* Get cookie checksum */ + $checksum = crc32($this->_iv.substr($content, 0, strrpos($content, '¤') + 2)); + + /* Unserialize cookie content */ + $tmpTab = explode('¤', $content); + foreach ($tmpTab AS $keyAndValue) + { + $tmpTab2 = explode('|', $keyAndValue); + if (sizeof($tmpTab2) == 2) + $this->_content[$tmpTab2[0]] = $tmpTab2[1]; + } + /* Blowfish fix */ + if (isset($this->_content['checksum'])) + $this->_content['checksum'] = (int)($this->_content['checksum']); + + /* Check if cookie has not been modified */ + if (!isset($this->_content['checksum']) OR $this->_content['checksum'] != $checksum) + $this->logout(); + + if (!isset($this->_content['date_add'])) + $this->_content['date_add'] = date('Y-m-d H:i:s'); + } + else + $this->_content['date_add'] = date('Y-m-d H:i:s'); + + //checks if the language exists, if not choose the default language + if (!Language::getLanguage((int)$this->id_lang)) + $this->id_lang = Configuration::get('PS_LANG_DEFAULT'); + + } + + /** + * Setcookie according to php version + */ + protected function _setcookie($cookie = NULL) + { + if ($cookie) + { + $content = $this->_cipherTool->encrypt($cookie); + $time = $this->_expire; + } + else + { + $content = 0; + $time = time() - 1; + } + if (PHP_VERSION_ID <= 50200) /* PHP version > 5.2.0 */ + return setcookie($this->_name, $content, $time, $this->_path, $this->_domain, 0); + else + return setcookie($this->_name, $content, $time, $this->_path, $this->_domain, 0, true); + } + + /** + * Save cookie with setcookie() + */ + public function write() + { + $cookie = ''; + + /* Serialize cookie content */ + if (isset($this->_content['checksum'])) unset($this->_content['checksum']); + foreach ($this->_content AS $key => $value) + $cookie .= $key.'|'.$value.'¤'; + + /* Add checksum to cookie */ + $cookie .= 'checksum|'.crc32($this->_iv.$cookie); + + /* Cookies are encrypted for evident security reasons */ + return $this->_setcookie($cookie); + } + + /** + * Get a family of variables (e.g. "filter_") + */ + public function getFamily($origin) + { + $result = array(); + if (count($this->_content) == 0) + return $result; + foreach ($this->_content AS $key => $value) + if (strncmp($key, $origin, strlen($origin)) == 0) + $result[$key] = $value; + return $result; + } + + /** + * + */ + public function unsetFamily($origin) + { + $family = $this->getFamily($origin); + foreach ($family AS $member => $value) + unset($this->$member); + } + +} diff --git a/classes/Country.php b/classes/Country.php new file mode 100644 index 000000000..122bebccc --- /dev/null +++ b/classes/Country.php @@ -0,0 +1,328 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CountryCore extends ObjectModel +{ + public $id; + + /** @var integer Zone id which country belongs */ + public $id_zone; + + /** @var integer Currency id which country belongs */ + public $id_currency; + + /** @var string 2 letters iso code */ + public $iso_code; + + /** @var integer international call prefix */ + public $call_prefix; + + /** @var string Name */ + public $name; + + /** @var boolean Contain states */ + public $contains_states; + + /** @var boolean Need identification number dni/nif/nie */ + public $need_identification_number; + + /** @var boolean Need Zip Code */ + public $need_zip_code; + + /** @var string Zip Code Format */ + public $zip_code_format; + + /** @var boolean Status for delivery */ + public $active = true; + + protected static $_idZones = array(); + + protected $tables = array ('country', 'country_lang'); + + protected $fieldsRequired = array('id_zone', 'id_currency', 'iso_code', 'contains_states', 'need_identification_number'); + protected $fieldsSize = array('iso_code' => 3); + protected $fieldsValidate = array('id_zone' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', 'call_prefix' => 'isInt', 'iso_code' => 'isLanguageIsoCode', 'active' => 'isBool', 'contains_states' => 'isBool', 'need_identification_number' => 'isBool', 'need_zip_code' => 'isBool', 'zip_code_format' => 'isZipCodeFormat'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 64); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $webserviceParameters = array( + 'objectsNodeName' => 'countries', + 'fields' => array( + 'id_zone' => array('sqlId' => 'id_zone', 'xlink_resource'=> 'zones'), + 'id_currency' => array('sqlId' => 'id_currency', 'xlink_resource'=> 'currencies'), + ), + ); + + protected $table = 'country'; + protected $identifier = 'id_country'; + + public function getFields() + { + parent::validateFields(); + $fields['id_zone'] = (int)($this->id_zone); + $fields['id_currency'] = (int)($this->id_currency); + $fields['iso_code'] = pSQL(strtoupper($this->iso_code)); + $fields['call_prefix'] = (int)($this->call_prefix); + $fields['active'] = (int)($this->active); + $fields['contains_states'] = (int)($this->contains_states); + $fields['need_identification_number'] = (int)($this->need_identification_number); + $fields['need_zip_code'] = (int)($this->need_zip_code); + $fields['zip_code_format'] = $this->zip_code_format; + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + /** + * Return available countries + * + * @param integer $id_lang Language ID + * @param boolean $active return only active coutries + * @return array Countries and corresponding zones + */ + static public function getCountries($id_lang, $active = false, $containStates = NULL) + { + if (!Validate::isBool($active)) + die(Tools::displayError()); + + $states = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT s.* + FROM `'._DB_PREFIX_.'state` s + ORDER BY s.`name` ASC'); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT cl.*,c.*, cl.`name` AS country, z.`name` AS zone + FROM `'._DB_PREFIX_.'country` c + LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country` AND cl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'zone` z ON z.`id_zone` = c.`id_zone` + WHERE 1 + '.($active ? 'AND c.active = 1' : '').' + '.(!is_null($containStates) ? 'AND c.`contains_states` = '.(int)($containStates) : '').' + ORDER BY cl.name ASC'); + $countries = array(); + foreach ($result AS &$country) + $countries[$country['id_country']] = $country; + foreach ($states AS &$state) + if (isset($countries[$state['id_country']])) /* Does not keep the state if its country has been disabled and not selected */ + $countries[$state['id_country']]['states'][] = $state; + + return $countries; + } + + /** + * Get a country ID with its iso code + * + * @param string $iso_code Country iso code + * @return integer Country ID + */ + static public function getByIso($iso_code) + { + if (!Validate::isLanguageIsoCode($iso_code)) + die(Tools::displayError()); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_country` + FROM `'._DB_PREFIX_.'country` + WHERE `iso_code` = \''.pSQL(strtoupper($iso_code)).'\''); + + return $result['id_country']; + } + + static public function getIdZone($id_country) + { + if (!Validate::isUnsignedId($id_country)) + die(Tools::displayError()); + + if (isset(self::$_idZones[$id_country])) + return self::$_idZones[$id_country]; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_zone` + FROM `'._DB_PREFIX_.'country` + WHERE `id_country` = '.(int)($id_country)); + + self::$_idZones[$id_country] = $result['id_zone']; + return $result['id_zone']; + } + + /** + * Get a country name with its ID + * + * @param integer $id_lang Language ID + * @param integer $id_country Country ID + * @return string Country name + */ + static public function getNameById($id_lang, $id_country) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name` + FROM `'._DB_PREFIX_.'country_lang` + WHERE `id_lang` = '.(int)($id_lang).' + AND `id_country` = '.(int)($id_country)); + + return $result['name']; + } + + /** + * Get a country iso with its ID + * + * @param integer $id_country Country ID + * @return string Country iso + */ + static public function getIsoById($id_country) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `iso_code` + FROM `'._DB_PREFIX_.'country` + WHERE `id_country` = '.(int)($id_country)); + + return $result['iso_code']; + } + + /** + * Get a country id with its name + * + * @param integer $id_lang Language ID + * @param string $country Country Name + * @return intval Country id + */ + static public function getIdByName($id_lang = NULL, $country) + { + $sql = ' + SELECT `id_country` + FROM `'._DB_PREFIX_.'country_lang` + WHERE `name` LIKE \''.pSQL($country).'\''; + if ($id_lang) + $sql .= ' AND `id_lang` = '.(int)($id_lang); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + + return ((int)($result['id_country'])); + } + + + /** + * @param $id_country + * @deprecated + */ + static public function getNeedIdentifcationNumber($id_country) + { + Tools::displayAsDeprecated(); + return self::isNeedDniByCountryId($id_country); + } + + static public function getNeedZipCode($id_country) + { + if (!(int)($id_country)) + return false; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `need_zip_code` + FROM `'._DB_PREFIX_.'country` + WHERE `id_country` = '.(int)($id_country)); + } + + static public function getZipCodeFormat($id_country) + { + if (!(int)($id_country)) + return false; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `zip_code_format` + FROM `'._DB_PREFIX_.'country` + WHERE `id_country` = '.(int)($id_country)); + } + + public static function displayCallPrefix($prefix) + { + return ((int)($prefix) ? '+'.$prefix : '-'); + } + + /** + * Returns the default country Id + * + * @return integer default country id + */ + public static function getDefaultCountryId() + { + global $cookie; + + if (Configuration::get('PS_GEOLOCATION_ENABLED') AND Validate::isLanguageIsoCode($cookie->iso_code_country)) + $id_country = (int)(Country::getByIso($cookie->iso_code_country)); + else + $id_country = (int)(Configuration::get('PS_COUNTRY_DEFAULT')); + + return $id_country; + } + + + public static function getCountriesByZoneId($id_zone, $id_lang) + { + if (empty($id_zone) OR empty($id_lang)) + die(Tools::displayError()); + return Db::getInstance()->ExecuteS(' + SELECT DISTINCT c.*, cl.* + FROM `'._DB_PREFIX_.'country` c + LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_country` = c.`id_country`) + LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country`) + WHERE (c.`id_zone` = '.(int)$id_zone.' OR s.`id_zone` = '.(int)$id_zone.') + AND `id_lang` = '.(int)$id_lang + ); + } + + public function isNeedDni() + { + return (bool)self::isNeedDniByCountryId($this->id); + } + + static public function isNeedDniByCountryId($id_country) + { + return (bool)Db::getInstance()->getValue(' + SELECT `need_identification_number` + FROM `'._DB_PREFIX_.'country` + WHERE `id_country` = '.(int)$id_country); + } + + static public function containsStates($id_country) + { + return (bool)Db::getInstance()->getValue(' + SELECT `contains_states` + FROM `'._DB_PREFIX_.'country` + WHERE `id_country` = '.(int)$id_country); + } + +} + diff --git a/classes/County.php b/classes/County.php new file mode 100644 index 000000000..337d0e5a1 --- /dev/null +++ b/classes/County.php @@ -0,0 +1,244 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CountyCore extends ObjectModel +{ + public $id; + public $name; + public $id_state; + public $active; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 64); + protected $fieldsValidate = array('name' => 'isGenericName', 'id_state' => 'isUnsignedId', 'active' => 'isBool'); + + protected $table = 'county'; + protected $identifier = 'id_county'; + + private static $_cache_get_counties = array(); + private static $_cache_county_zipcode = array(); + + const USE_BOTH_TAX = 0; + const USE_COUNTY_TAX = 1; + const USE_STATE_TAX = 2; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_state' => array('xlink_resource'=> 'states'), + ), + ); + + public function getFields() + { + parent::validateFields(); + $fields['id_state'] = (int)($this->id_state); + $fields['name'] = pSQL($this->name); + $fields['active'] = (int)($this->active); + return $fields; + } + + public function delete() + { + $id = $this->id; + parent::delete(); + + // remove associated zip codes & tax rule + return (County::deleteZipCodeByIdCounty($id) AND TaxRule::deleteTaxRuleByIdCounty($id)); + } + + public static function getCounties($id_state) + { + if (!isset(self::$_cache_get_counties[$id_state])) + { + self::$_cache_get_counties[$id_state] = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'county` + WHERE `id_state` = '.(int)$id_state + ); + } + + return self::$_cache_get_counties[$id_state]; + } + + // return the list of associated zipcode + public function getZipCodes() + { + return Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'county_zip_code` + WHERE `id_county` = '.(int)$this->id.' + ORDER BY `from_zip_code` ASC' + ); + } + + public function addZipCodes($zip_codes) + { + list($from, $to) = $this->breakDownZipCode($zip_codes); + + if ($from == 0) + return false; + + return Db::getInstance()->Execute( + 'INSERT INTO `'._DB_PREFIX_.'county_zip_code` (`id_county`, `from_zip_code`, `to_zip_code`) + VALUES ('.(int)$this->id.','.(int)$from.','.(int)$to.')' + ); + } + + + public function removeZipCodes($zip_codes) + { + list($from, $to) = $this->breakDownZipCode($zip_codes); + + if ($from == 0) + return false; + + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'county_zip_code` + WHERE `id_county` = '.(int)$this->id.' + AND `from_zip_code` = '.(int)$from.' + AND `to_zip_code` = '.(int)$to + ); + } + + + public function breakDownZipCode($zip_codes) + { + $zip_codes = preg_split('/-/', $zip_codes); + + if (sizeof($zip_codes) == 2) + { + $from = $zip_codes[0]; + $to = $zip_codes[1]; + if ($zip_codes[0] > $zip_codes[1]) + { + $from = $zip_codes[1]; + $to = $zip_codes[0]; + } + else if ($zip_codes[0] == $zip_codes[1]) + { + $from = $zip_codes[0]; + $to = 0; + } + } + else if (sizeof($zip_codes) == 1) + { + $from = $zip_codes[0]; + $to = 0; + } + + if (!Validate::isInt($from) OR !Validate::isInt($to)) + { + $from = 0; + $to = 0; + } + + return array($from, $to); + } + + public static function getIdCountyByZipCode($id_state, $zip_code) + { + if (!isset(self::$_cache_county_zipcode[$id_state.'-'.$zip_code])) + { + self::$_cache_county_zipcode[$id_state.'-'.$zip_code] = Db::getInstance()->getValue(' + SELECT DISTINCT c.`id_county` FROM `'._DB_PREFIX_.'county` c + LEFT JOIN `'._DB_PREFIX_.'county_zip_code` cz ON (c.`id_county` = cz.`id_county`) + WHERE `id_state` = '.(int)$id_state.' + AND cz.`from_zip_code` >= '.(int)$zip_code.' + AND cz.`to_zip_code` <= '.(int)$zip_code + ); + } + + return self::$_cache_county_zipcode[$id_state.'-'.$zip_code]; + } + + public function isZipCodeRangePresent($zip_codes) + { + $res = false; + list($from, $to) = $this->breakDownZipCode($zip_codes); + + if ($from == 0) + return false; + + if ($to != 0) + { + $res = Db::getInstance()->getValue(' + SELECT COUNT(*) FROM `'._DB_PREFIX_.'county_zip_code` cz + LEFT JOIN `'._DB_PREFIX_.'county` c ON (c.`id_county` = cz.`id_county`) + LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = c.`id_state`) + WHERE `from_zip_code` >= '.(int)$from.' + AND `to_zip_code` <= '.(int)$to.' + AND s.`id_country` = (SELECT `id_country` + FROM `'._DB_PREFIX_.'state` s + LEFT JOIN `'._DB_PREFIX_.'county` c ON (c.`id_state` = s.`id_state`) + WHERE `id_county` = '.(int)$this->id.' + )' + ); + } + + return ($res OR County::isZipCodePresent($from) OR County::isZipCodePresent($to)); + } + + public function isZipCodePresent($zip_code) + { + + if ($zip_code == 0) + return false; + + return (bool) Db::getInstance()->getValue(' + SELECT COUNT(*) FROM `'._DB_PREFIX_.'county_zip_code` cz + LEFT JOIN `'._DB_PREFIX_.'county` c ON (c.`id_county` = cz.`id_county`) + LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = c.`id_state`) + WHERE + (`from_zip_code` <= '.(int)$zip_code.' AND `to_zip_code` >= '.(int)$zip_code.') + OR + (`from_zip_code` = '.(int)$zip_code.') + AND s.`id_country` = (SELECT `id_country` + FROM `'._DB_PREFIX_.'state` s + LEFT JOIN `'._DB_PREFIX_.'county` c ON (c.`id_state` = s.`id_state`) + WHERE `id_county` = '.(int)$this->id.' + )' + ); + } + + public static function deleteZipCodeByIdCounty($id_county) + { + return Db::getInstance()->Execute( + 'DELETE FROM `'._DB_PREFIX_.'county_zip_code` + WHERE `id_county` = '.(int)$id_county + ); + } + + + public static function getIdCountyByNameAndIdState($name, $id_state) + { + return Db::getInstance()->getValue(' + SELECT `id_county` FROM `'._DB_PREFIX_.'county` + WHERE `name` = \''.pSQL($name).'\' + AND `id_state` = '.(int)$id_state + ); + } + +} + diff --git a/classes/Currency.php b/classes/Currency.php new file mode 100644 index 000000000..0a2a13bbf --- /dev/null +++ b/classes/Currency.php @@ -0,0 +1,364 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CurrencyCore extends ObjectModel +{ + public $id; + + /** @var string Name */ + public $name; + + /** @var string Iso code */ + public $iso_code; + + /** @var string Iso code numeric */ + public $iso_code_num; + + /** @var string Symbol for short display */ + public $sign; + + /** @var int bool used for displaying blank between sign and price */ + public $blank; + + /** @var string Conversion rate from euros */ + public $conversion_rate; + + /** @var boolean True if currency has been deleted (staying in database as deleted) */ + public $deleted = 0; + + /** @var int ID used for displaying prices */ + public $format; + + /** @var int bool Display decimals on prices */ + public $decimals; + + /** @var int bool active */ + public $active; + + protected $fieldsRequired = array('name', 'iso_code', 'sign', 'conversion_rate', 'format', 'decimals'); + protected $fieldsSize = array('name' => 32, 'iso_code' => 3, 'iso_code_num' => 3, 'sign' => 8); + protected $fieldsValidate = array('name' => 'isGenericName', 'iso_code' => 'isLanguageIsoCode', 'iso_code_num' => 'isNumericIsoCode', 'blank' => 'isInt', 'sign' => 'isGenericName', + 'format' => 'isUnsignedId', 'decimals' => 'isBool', 'conversion_rate' => 'isFloat', 'deleted' => 'isBool', 'active' => 'isBool'); + + protected $table = 'currency'; + protected $identifier = 'id_currency'; + + /** @var Currency Current currency */ + static protected $current = NULL; + /** @var array Currency cache */ + static protected $currencies = array(); + + protected $webserviceParameters = array( + 'fields' => array( + ), + ); + + + /** + * Overriding check if currency with the same iso code already exists. + * If it's true, currency is doesn't added. + * + * @see ObjectModelCore::add() + */ + public function add($autodate = true, $nullValues = false) + { + return Currency::exists($this->iso_code) ? false : parent::add(); + } + + /** + * Check if a curency already exists. + * + * @param int|string $iso_code int for iso code number string for iso code + * @return boolean + */ + public static function exists ($iso_code) + { + if(is_int($iso_code)) + $id_currency_exists = Currency::getIdByIsoCodeNum($iso_code); + else + $id_currency_exists = Currency::getIdByIsoCode($iso_code); + + if ($id_currency_exists){ + return true; + } else { + return false; + } + } + public function getFields() + { + parent::validateFields(); + + $fields['name'] = pSQL($this->name); + $fields['iso_code'] = pSQL($this->iso_code); + $fields['iso_code_num'] = pSQL($this->iso_code_num); + $fields['sign'] = pSQL($this->sign); + $fields['format'] = (int)($this->format); + $fields['decimals'] = (int)($this->decimals); + $fields['blank'] = (int)($this->blank); + $fields['conversion_rate'] = (float)($this->conversion_rate); + $fields['deleted'] = (int)($this->deleted); + $fields['active'] = (int)($this->active); + + return $fields; + } + + public function deleteSelection($selection) + { + if (!is_array($selection) OR !Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + $result = true; + foreach ($selection AS $id) + { + $obj = new Currency((int)($id)); + $res[$id] = $obj->delete(); + } + foreach ($res AS $value) + if (!$value) + return false; + return true; + } + + public function delete() + { + if ($this->id == Configuration::get('PS_CURRENCY_DEFAULT')) + { + $result = Db::getInstance()->getRow('SELECT `id_currency` FROM '._DB_PREFIX_.'currency WHERE `id_currency` != '.(int)($this->id).' AND `deleted` = 0'); + if (!$result['id_currency']) + return false; + Configuration::updateValue('PS_CURRENCY_DEFAULT', $result['id_currency']); + } + $this->deleted = 1; + return $this->update(); + } + + /** + * Return formated sign + * + * @param string $side left or right + * @return string formated sign + */ + public function getSign($side=NULL) + { + if (!$side) + return $this->sign; + $formated_strings = array( + 'left' => $this->sign.' ', + 'right' => ' '.$this->sign + ); + $formats = array( + 1 => array('left' => &$formated_strings['left'], 'right' => ''), + 2 => array('left' => '', 'right' => &$formated_strings['right']), + 3 => array('left' => &$formated_strings['left'], 'right' => ''), + 4 => array('left' => '', 'right' => &$formated_strings['right']), + ); + return ($formats[$this->format][$side]); + } + + /** + * Return available currencies + * + * @return array Currencies + */ + static public function getCurrencies($object = false, $active = 1) + { + $tab = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'currency` + WHERE `deleted` = 0 + '.($active == 1 ? 'AND `active` = 1' : '').' + ORDER BY `name` ASC'); + if ($object) + foreach ($tab as $key => $currency) + $tab[$key] = Currency::getCurrencyInstance($currency['id_currency']); + return $tab; + } + + static public function getPaymentCurrenciesSpecial($id_module) + { + return Db::getInstance()->getRow(' + SELECT mc.* + FROM `'._DB_PREFIX_.'module_currency` mc + WHERE mc.`id_module` = '.(int)($id_module)); + } + + static public function getPaymentCurrencies($id_module) + { + return Db::getInstance()->ExecuteS(' + SELECT c.* + FROM `'._DB_PREFIX_.'module_currency` mc + LEFT JOIN `'._DB_PREFIX_.'currency` c ON c.`id_currency` = mc.`id_currency` + WHERE c.`deleted` = 0 + AND mc.`id_module` = '.(int)($id_module).' + ORDER BY c.`name` ASC'); + } + + static public function checkPaymentCurrencies($id_module) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT mc.* + FROM `'._DB_PREFIX_.'module_currency` mc + WHERE mc.`id_module` = '.(int)($id_module)); + } + + static public function getCurrency($id_currency) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'currency` + WHERE `deleted` = 0 + AND `id_currency` = '.(int)($id_currency)); + } + + static public function getIdByIsoCode($iso_code) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_currency` + FROM `'._DB_PREFIX_.'currency` + WHERE `deleted` = 0 + AND `iso_code` = \''.pSQL($iso_code).'\''); + return $result['id_currency']; + } + static public function getIdByIsoCodeNum($iso_code) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_currency` + FROM `'._DB_PREFIX_.'currency` + WHERE `deleted` = 0 + AND `iso_code_num` = \''.pSQL($iso_code).'\''); + return (int)$result['id_currency']; + } + + /** + * Refresh the currency conversion rate + * The XML file define conversion rate for each from a default currency ($isoCodeSource). + * + * @param $data XML content which contains all the conversion rates + * @param $isoCodeSource The default currency used in the XML file + * @param $defaultCurrency The default currency object + */ + public function refreshCurrency($data, $isoCodeSource, $defaultCurrency) + { + // fetch the conversion rate of the default currency + $conversion_rate = 1; + if ($defaultCurrency->iso_code != $isoCodeSource) + { + foreach ($data->currency AS $currency) + if ($currency['iso_code'] == $defaultCurrency->iso_code) + { + $conversion_rate = round((float)$currency['rate'], 6); + break; + } + } + + if ($defaultCurrency->iso_code == $this->iso_code) + $this->conversion_rate = 1; + else + { + if ($this->iso_code == $isoCodeSource) + $rate = 1; + else + { + foreach ($data->currency AS $obj) + if ($this->iso_code == strval($obj['iso_code'])) + { + $rate = (float) $obj['rate']; + break; + } + } + + $this->conversion_rate = round($rate / $conversion_rate, 6); + } + $this->update(); + } + + /** + * @deprecated + **/ + static public function refreshCurrenciesGetDefault($data, $isoCodeSource, $idCurrency) + { + Tools::displayAsDeprecated(); + + $defaultCurrency = new Currency($idCurrency); + + /* Change defaultCurrency rate if not as currency of feed source */ + if ($defaultCurrency->iso_code != $isoCodeSource) + foreach ($data->currency AS $obj) + if ($defaultCurrency->iso_code == strval($obj['iso_code'])) + $defaultCurrency->conversion_rate = round((float)($obj['rate']), 6); + + return $defaultCurrency; + } + + public static function getDefaultCurrency() + { + $id_currency = (int)Configuration::get('PS_CURRENCY_DEFAULT'); + if ($id_currency == 0) + return false; + + return new Currency($id_currency); + } + + static public function refreshCurrencies() + { + // Parse + if (!$feed = @simplexml_load_file('http://www.prestashop.com/xml/currencies.xml')) + return Tools::displayError('Cannot parse feed.'); + + // Default feed currency (EUR) + $isoCodeSource = strval($feed->source['iso_code']); + + if (!$default_currency = self::getDefaultCurrency()) + return Tools::displayError('No default currency'); + + $currencies = self::getCurrencies(true); + foreach ($currencies as $currency) + $currency->refreshCurrency($feed->list, $isoCodeSource, $default_currency); + + } + + static public function getCurrent() + { + global $cookie; + + if (!self::$current) + { + if (isset($cookie->id_currency) AND $cookie->id_currency) + self::$current = new Currency((int)($cookie->id_currency)); + else + self::$current = new Currency((int)(Configuration::get('PS_CURRENCY_DEFAULT'))); + } + return self::$current; + } + + static public function getCurrencyInstance($id) + { + if (!array_key_exists($id, self::$currencies)) + self::$currencies[(int)($id)] = new Currency((int)($id)); + return self::$currencies[(int)($id)]; + } +} + diff --git a/classes/Customer.php b/classes/Customer.php new file mode 100644 index 000000000..738e1b3bb --- /dev/null +++ b/classes/Customer.php @@ -0,0 +1,659 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CustomerCore extends ObjectModel +{ + public $id; + + /** @var string Secure key */ + public $secure_key; + + /** @var string protected note */ + public $note; + + /** @var integer Gender ID */ + public $id_gender = 9; + + /** @var integer Default group ID */ + public $id_default_group; + + /** @var string Lastname */ + public $lastname; + + /** @var string Firstname */ + public $firstname; + + /** @var string Birthday (yyyy-mm-dd) */ + public $birthday = NULL; + + /** @var string e-mail */ + public $email; + + /** @var boolean Newsletter subscription */ + public $newsletter; + + /** @var string Newsletter ip registration */ + public $ip_registration_newsletter; + + /** @var string Newsletter ip registration */ + public $newsletter_date_add; + + /** @var boolean Opt-in subscription */ + public $optin; + + /** @var integer Password */ + public $passwd; + + /** @var datetime Password */ + public $last_passwd_gen; + + /** @var boolean Status */ + public $active = true; + + /** @var boolean Status */ + public $is_guest = 0; + + /** @var boolean True if carrier has been deleted (staying in database as deleted) */ + public $deleted = 0; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + public $years; + public $days; + public $months; + + protected $tables = array ('customer'); + + protected $fieldsRequired = array('lastname', 'passwd', 'firstname', 'email'); + protected $fieldsSize = array('lastname' => 32, 'passwd' => 32, 'firstname' => 32, 'email' => 128, 'note' => 65000); + protected $fieldsValidate = array('secure_key' => 'isMd5', 'lastname' => 'isName', 'firstname' => 'isName', 'email' => 'isEmail', 'passwd' => 'isPasswd', + 'id_gender' => 'isUnsignedId', 'birthday' => 'isBirthDate', 'newsletter' => 'isBool', 'optin' => 'isBool', 'active' => 'isBool', 'note' => 'isCleanHtml', 'is_guest' => 'isBool'); + + protected $webserviceParameters = array( + 'objectMethods' => array('add' => 'addWs'), + 'fields' => array( + 'id_default_group' => array('xlink_resource' => 'groups'), + 'newsletter_date_add' => array(), + 'ip_registration_newsletter' => array(), + 'last_passwd_gen' => array('setter' => null), + 'secure_key' => array('setter' => null), + 'deleted' => array() + ), + ); + + protected $table = 'customer'; + protected $identifier = 'id_customer'; + + protected static $_defaultGroupId = array(); + protected static $_customerHasAddress = array(); + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_customer'] = (int)($this->id); + $fields['secure_key'] = pSQL($this->secure_key); + $fields['note'] = pSQL($this->note, true); + $fields['id_gender'] = (int)($this->id_gender); + $fields['id_default_group'] = (int)($this->id_default_group); + $fields['lastname'] = pSQL($this->lastname); + $fields['firstname'] = pSQL($this->firstname); + $fields['birthday'] = pSQL($this->birthday); + $fields['email'] = pSQL($this->email); + $fields['newsletter'] = (int)($this->newsletter); + $fields['newsletter_date_add'] = pSQL($this->newsletter_date_add); + $fields['ip_registration_newsletter'] = pSQL($this->ip_registration_newsletter); + $fields['optin'] = (int)($this->optin); + $fields['passwd'] = pSQL($this->passwd); + $fields['last_passwd_gen'] = pSQL($this->last_passwd_gen); + $fields['active'] = (int)($this->active); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + $fields['is_guest'] = (int)($this->is_guest); + $fields['deleted'] = (int)($this->deleted); + return $fields; + } + + public function add($autodate = true, $nullValues = true) + { + $this->birthday = (empty($this->years) ? $this->birthday : (int)($this->years).'-'.(int)($this->months).'-'.(int)($this->days)); + $this->secure_key = md5(uniqid(rand(), true)); + $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_FRONT').'minutes')); + if (empty($this->id_default_group)) + $this->id_default_group = 1; + /* Can't create a guest customer, if this feature is disabled */ + if ($this->is_guest AND !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) + return false; + if (!parent::add($autodate, $nullValues)) + return false; + + $row = array('id_customer' => (int)($this->id), 'id_group' => (int)$this->id_default_group); + return Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); + } + + public function update($nullValues = false) + { + $this->birthday = (empty($this->years) ? $this->birthday : (int)$this->years.'-'.(int)$this->months.'-'.(int)$this->days); + if ($this->newsletter AND !$this->newsletter_date_add) + $this->newsletter_date_add = date('Y-m-d H:i:s'); + return parent::update(true); + } + + public function delete() + { + $addresses = $this->getAddresses((int)(Configuration::get('PS_LANG_DEFAULT'))); + foreach ($addresses AS $address) + { + $obj = new Address((int)($address['id_address'])); + $obj->delete(); + } + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customer_group` WHERE `id_customer` = '.(int)($this->id)); + Discount::deleteByIdCustomer((int)($this->id)); + return parent::delete(); + } + + /** + * Return customers list + * + * @return array Customers + */ + static public function getCustomers() + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `id_customer`, `email`, `firstname`, `lastname` + FROM `'._DB_PREFIX_.'customer` + ORDER BY `id_customer` ASC'); + } + + /** + * Return customer instance from its e-mail (optionnaly check password) + * + * @param string $email e-mail + * @param string $passwd Password is also checked if specified + * @return Customer instance + */ + public function getByEmail($email, $passwd = NULL) + { + if (!Validate::isEmail($email) OR ($passwd AND !Validate::isPasswd($passwd))) + die (Tools::displayError()); + + $result = Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_ .'customer` + WHERE `active` = 1 + AND `email` = \''.pSQL($email).'\' + '.(isset($passwd) ? 'AND `passwd` = \''.md5(pSQL(_COOKIE_KEY_.$passwd)).'\'' : '').' + AND `deleted` = 0 + AND `is_guest` = 0'); + + if (!$result) + return false; + $this->id = $result['id_customer']; + foreach ($result AS $key => $value) + if (key_exists($key, $this)) + $this->{$key} = $value; + + return $this; + } + + /** + * Check id the customer is active or not + * + * @return boolean customer validity + */ + public static function isBanned($id_customer) + { + if (!Validate::isUnsignedId($id_customer)) + return true; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_customer` + FROM `'._DB_PREFIX_.'customer` + WHERE `id_customer` = \''.(int)($id_customer).'\' + AND active = 1 + AND `deleted` = 0'); + if (isset($result['id_customer'])) + return false; + return true; + } + + /** + * Check if e-mail is already registered in database + * + * @param string $email e-mail + * @param $return_id boolean + * @param $ignoreGuest boolean, for exclure guest customer + * @return Customer ID if found, false otherwise + */ + static public function customerExists($email, $return_id = false, $ignoreGuest = true) + { + if (!Validate::isEmail($email)) + die (Tools::displayError()); + + $result = Db::getInstance()->getRow(' + SELECT `id_customer` + FROM `'._DB_PREFIX_.'customer` + WHERE `email` = \''.pSQL($email).'\'' + .($ignoreGuest ? 'AND `is_guest` = 0' : '')); + + if ($return_id) + return (int)($result['id_customer']); + else + return isset($result['id_customer']); + } + + /** + * Check if, except current customer, someone else registered this e-email + * + * @return integer Number of customers who have also this e-mail + * @deprecated + */ + public function cantChangeemail() + { + Tools::displayAsDeprecated(); + if (!Validate::isEmail($this->email)) + die (Tools::displayError()); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(`id_customer`) AS total + FROM `'._DB_PREFIX_.'customer` + WHERE `email` = \''.pSQL($this->email).'\' AND `id_customer` != '.(int)($this->id)); + + return $result['total']; + } + + /** + * Check if an address is owned by a customer + * + * @param integer $id_customer Customer ID + * @param integer $id_address Address ID + * @return boolean result + */ + static public function customerHasAddress($id_customer, $id_address) + { + if (!array_key_exists($id_customer, self::$_customerHasAddress)) + { + self::$_customerHasAddress[$id_customer] = (bool)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `id_address` + FROM `'._DB_PREFIX_.'address` + WHERE `id_customer` = '.(int)($id_customer).' + AND `id_address` = '.(int)($id_address).' + AND `deleted` = 0'); + } + return self::$_customerHasAddress[$id_customer]; + } + + static public function resetAddressCache($id_customer) + { + if (array_key_exists($id_customer, self::$_customerHasAddress)) + unset(self::$_customerHasAddress[$id_customer]); + } + + /** + * Return customer addresses + * + * @param integer $id_lang Language ID + * @return array Addresses + */ + public function getAddresses($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT a.*, cl.`name` AS country, s.name AS state + FROM `'._DB_PREFIX_.'address` a + LEFT JOIN `'._DB_PREFIX_.'country` c ON (a.`id_country` = c.`id_country`) + LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country`) + LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = a.`id_state`) + WHERE `id_lang` = '.(int)($id_lang).' AND `id_customer` = '.(int)($this->id).' AND a.`deleted` = 0'); + } + + + /** + * Returns customer last connections + * + * @param integer $nb Number of connections wanted + * @return array Connections + */ + public function getConnections($nb = 10) + { + Tools::displayAsDeprecated(); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `ip_address`, `date_add` + FROM `'._DB_PREFIX_.'connections` + WHERE `id_guest` IN (SELECT `id_guest` FROM `'._DB_PREFIX_.'guest` WHERE `id_customer` = '.(int)($this->id).') + ORDER BY `date_add` DESC + LIMIT 0,'.(int)($nb)); + } + + /** + * Count the number of addresses for a customer + * + * @param integer $id_customer Customer ID + * @return integer Number of addresses + */ + public static function getAddressesTotalById($id_customer) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT COUNT(a.`id_address`) + FROM `'._DB_PREFIX_.'address` a + WHERE a.`id_customer` = '.(int)($id_customer).' + AND a.`deleted` = 0'); + } + + /** + * Check if customer password is the right one + * + * @param string $passwd Password + * @return boolean result + */ + static public function checkPassword($id_customer, $passwd) + { + if (!Validate::isUnsignedId($id_customer) OR !Validate::isMd5($passwd)) + die (Tools::displayError()); + + return (bool)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `id_customer` + FROM `'._DB_PREFIX_.'customer` + WHERE `id_customer` = '.(int)($id_customer).' + AND `passwd` = \''.pSQL($passwd).'\''); + } + + /** + * Return customers who have subscribed to the newsletter + * + * @return array Customers + * @deprecated + */ + public static function getNewsletteremails() + { + Tools::displayAsDeprecated(); + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `email`, `firstname`, `lastname`, `newsletter`, `ip_registration_newsletter`, `newsletter_date_add` + FROM `'._DB_PREFIX_.'customer` + WHERE `newsletter` = 1 + AND `active` = 1'); + } + + /** + * Return the number of customers who registered today + * + * @return integer number of customers who registered today + * @deprecated + */ + public static function getTodaysRegistration() + { + Tools::displayAsDeprecated(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(`id_customer`) as nb + FROM `'._DB_PREFIX_.'customer` + WHERE DAYOFYEAR(`date_add`) = DAYOFYEAR(NOW()) + AND YEAR(`date_add`) = YEAR(NOW())'); + if (!$result['nb']) + return '0'; + return $result['nb']; + } + + /** + * Light back office search for customers + * + * @param string $query Searched string + * @return array Corresponding customers + */ + public static function searchByName($query) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT c.* + FROM `'._DB_PREFIX_.'customer` c + WHERE c.`email` LIKE \'%'.pSQL($query).'%\' + OR c.`id_customer` LIKE \'%'.pSQL($query).'%\' + OR c.`lastname` LIKE \'%'.pSQL($query).'%\' + OR c.`firstname` LIKE \'%'.pSQL($query).'%\''); + } + + /** + * Return several useful statistics about customer + * + * @return array Stats + */ + public function getStats() + { + $result = Db::getInstance()->getRow(' + SELECT COUNT(`id_order`) AS nb_orders, SUM(`total_paid` / o.`conversion_rate`) AS total_orders + FROM `'._DB_PREFIX_.'orders` o + WHERE o.`id_customer` = '.(int)($this->id).' + AND o.valid = 1'); + + $result2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT MAX(c.`date_add`) AS last_visit + FROM `'._DB_PREFIX_.'guest` g + LEFT JOIN `'._DB_PREFIX_.'connections` c ON c.id_guest = g.id_guest + WHERE g.`id_customer` = '.(int)($this->id)); + + $result3 = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT (YEAR(CURRENT_DATE)-YEAR(c.`birthday`)) - (RIGHT(CURRENT_DATE, 5)ExecuteS(' + SELECT c.date_add, COUNT(cp.id_page) AS pages, TIMEDIFF(MAX(cp.time_end), c.date_add) as time, http_referer,INET_NTOA(ip_address) as ipaddress + FROM `'._DB_PREFIX_.'guest` g + LEFT JOIN `'._DB_PREFIX_.'connections` c ON c.id_guest = g.id_guest + LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections + WHERE g.`id_customer` = '.(int)($this->id).' + GROUP BY c.`id_connections` + ORDER BY c.date_add DESC + LIMIT 10'); + } + + /** + * Return last cart ID for this customer + * + * @return integer Cart ID + * @deprecated + */ + public function getLastCart() + { + Tools::displayAsDeprecated(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT MAX(c.`id_cart`) AS id_cart + FROM `'._DB_PREFIX_.'cart` c + WHERE c.`id_customer` = '.(int)($this->id)); + if (isset($result['id_cart'])) + return $result['id_cart']; + return false; + } + /* + * Specify if a customer already in base + * + * @param $id_customer Customer id + * @return boolean + */ + // DEPRECATED + public function customerIdExists($id_customer) + { + return self::customerIdExistsStatic((int)($id_customer)); + } + + static public function customerIdExistsStatic($id_customer) + { + $row = Db::getInstance()->getRow(' + SELECT `id_customer` + FROM '._DB_PREFIX_.'customer c + WHERE c.`id_customer` = '.(int)($id_customer)); + + return isset($row['id_customer']); + } + + public function cleanGroups() + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customer_group` WHERE `id_customer` = '.(int)($this->id)); + } + + public function addGroups($groups) + { + foreach ($groups as $group) + { + $row = array('id_customer' => (int)($this->id), 'id_group' => (int)($group)); + Db::getInstance()->AutoExecute(_DB_PREFIX_.'customer_group', $row, 'INSERT'); + } + } + + public static function getGroupsStatic($id_customer) + { + $groups = array(); + $result = Db::getInstance()->ExecuteS(' + SELECT cg.`id_group` + FROM '._DB_PREFIX_.'customer_group cg + WHERE cg.`id_customer` = '.(int)($id_customer)); + foreach ($result AS $group) + $groups[] = (int)($group['id_group']); + return $groups; + } + + public function getGroups() + { + return self::getGroupsStatic((int)($this->id)); + } + + public function isUsed() + { + return false; + } + + /** + * @param int $id_group + * @return int + * @deprecated + */ + public function isMemberOfGroup($id_group) + { + Tools::displayAsDeprecated(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT count(cg.`id_group`) as nb + FROM '._DB_PREFIX_.'customer_group cg + WHERE cg.`id_customer` = '.(int)($this->id).' + AND cg.`id_group` = '.(int)($id_group)); + + return $result['nb']; + } + + public function getBoughtProducts() + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order + WHERE o.valid = 1 AND o.`id_customer` = '.(int)($this->id)); + } + + /** + * @deprecated + * @return bool + */ + public function getNeedDNI() + { + Tools::displayAsDeprecated(); + + return false; + } + + static public function getDefaultGroupId($id_customer) + { + if (!isset(self::$_defaultGroupId[(int)($id_customer)])) + self::$_defaultGroupId[(int)($id_customer)] = Db::getInstance()->getValue('SELECT `id_default_group` FROM `'._DB_PREFIX_.'customer` WHERE `id_customer` = '.(int)($id_customer)); + return self::$_defaultGroupId[(int)($id_customer)]; + } + + static public function getCurrentCountry($id_customer) + { + global $cart; + + if (!$cart OR !$cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) + $id_address = (int)(Db::getInstance()->getValue('SELECT `id_address` FROM `'._DB_PREFIX_.'address` WHERE `id_customer` = '.(int)($id_customer).' AND `deleted` = 0 ORDER BY `id`')); + else + $id_address = $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; + $ids = Address::getCountryAndState($id_address); + return (int)($ids['id_country'] ? $ids['id_country'] : Configuration::get('PS_COUNTRY_DEFAULT')); + } + + public function toggleStatus() + { + parent::toggleStatus(); + + /* Change status to active/inactive */ + return Db::getInstance()->Execute(' + UPDATE `'.pSQL(_DB_PREFIX_.$this->table).'` + SET `date_upd` = NOW() + WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + } + + + public function isGuest() + { + return (bool)$this->is_guest; + } + + public function transformToCustomer($id_lang, $password = NULL) + { + if (!$this->isGuest()) + return false; + if (empty($password)) + $password = Tools::passwdGen(); + if (!Validate::isPasswd($password)) + return false; + + $this->is_guest = 0; + $this->passwd = Tools::encrypt($password); + if ($this->update()) + { + $vars = array( + '{firstname}' => $this->firstname, + '{lastname}' => $this->lastname, + '{email}' => $this->email, + '{passwd}' => $password + ); + + Mail::Send((int)$id_lang, 'guest_to_customer', Mail::l('Your guest account has been transformed to customer account'), $vars, $this->email, $this->firstname.' '.$this->lastname); + return true; + } + return false; + } + public function addWs($autodate = true, $nullValues = false) + { + $this->passwd = Tools::encrypt($this->passwd); + return $this->add($autodate, $nullValues); + } +} + diff --git a/classes/CustomerMessage.php b/classes/CustomerMessage.php new file mode 100644 index 000000000..f2c36bc13 --- /dev/null +++ b/classes/CustomerMessage.php @@ -0,0 +1,59 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CustomerMessageCore extends ObjectModel +{ + public $id; + public $id_customer_thread; + public $id_employee; + public $message; + public $file_name; + public $ip_address; + public $user_agent; + public $date_add; + + protected $table = 'customer_message'; + protected $identifier = 'id_customer_message'; + + protected $fieldsRequired = array('message'); + protected $fieldsSize = array('message' => 65000); + protected $fieldsValidate = array('message' => 'isCleanHtml', 'id_employee' => 'isUnsignedId', 'ip_address' => 'isIp2Long'); + + public function getFields() + { + parent::validateFields(); + $fields['id_customer_thread'] = (int)($this->id_customer_thread); + $fields['id_employee'] = (int)($this->id_employee); + $fields['message'] = pSQL($this->message); + $fields['file_name'] = pSQL($this->file_name); + $fields['ip_address'] = (int)($this->ip_address); + $fields['user_agent'] = pSQL($this->user_agent); + $fields['date_add'] = pSQL($this->date_add); + return $fields; + } +} + diff --git a/classes/CustomerThread.php b/classes/CustomerThread.php new file mode 100644 index 000000000..3c3b1d624 --- /dev/null +++ b/classes/CustomerThread.php @@ -0,0 +1,82 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CustomerThreadCore extends ObjectModel +{ + public $id; + public $id_lang; + public $id_contact; + public $id_customer; + public $id_order; + public $id_product; + public $status; + public $email; + public $token; + public $date_add; + public $date_upd; + + protected $table = 'customer_thread'; + protected $identifier = 'id_customer_thread'; + + protected $fieldsRequired = array('id_lang', 'id_contact', 'token'); + protected $fieldsSize = array('email' => 254); + protected $fieldsValidate = array('id_lang' => 'isUnsignedId', 'id_contact' => 'isUnsignedId', 'id_customer' => 'isUnsignedId', + 'id_order' => 'isUnsignedId', 'id_product' => 'isUnsignedId', 'email' => 'isEmail', 'token' => 'isGenericName'); + + public function getFields() + { + parent::validateFields(); + $fields['id_lang'] = (int)($this->id_lang); + $fields['id_contact'] = (int)($this->id_contact); + $fields['id_customer'] = (int)($this->id_customer); + $fields['id_order'] = (int)($this->id_order); + $fields['id_product'] = (int)($this->id_product); + $fields['status'] = pSQL($this->status); + $fields['email'] = pSQL($this->email); + $fields['token'] = pSQL($this->token); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + public function delete() + { + if (!Validate::isUnsignedId($this->id)) + return false; + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customer_message` WHERE `id_customer_thread` = '.(int)($this->id)); + return (parent::delete()); + } + + public static function getCustomerMessages($id_customer) + { + return Db::getInstance()->ExecuteS(' + SELECT * FROM '._DB_PREFIX_.'customer_thread ct + LEFT JOIN '._DB_PREFIX_.'customer_message cm ON ct.id_customer_thread = cm.id_customer_thread + WHERE id_customer = '.(int)($id_customer)); + } +} + diff --git a/classes/Customization.php b/classes/Customization.php new file mode 100644 index 000000000..4bc51bce8 --- /dev/null +++ b/classes/Customization.php @@ -0,0 +1,125 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CustomizationCore +{ + + static public function getReturnedCustomizations($id_order) + { + if (($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT ore.`id_order_return`, ord.`id_order_detail`, ord.`id_customization`, ord.`product_quantity` + FROM `'._DB_PREFIX_.'order_return` ore + INNER JOIN `'._DB_PREFIX_.'order_return_detail` ord ON (ord.`id_order_return` = ore.`id_order_return`) + WHERE ore.`id_order` = '.(int)($id_order).' AND ord.`id_customization` != 0')) === false) + return false; + $customizations = array(); + foreach ($result AS $row) + $customizations[(int)($row['id_customization'])] = $row; + return $customizations; + } + + static public function getOrderedCustomizations($id_cart) + { + if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT `id_customization`, `quantity` FROM `'._DB_PREFIX_.'customization` WHERE `id_cart` = '.(int)($id_cart))) + return false; + $customizations = array(); + foreach ($result AS $row) + $customizations[(int)($row['id_customization'])] = $row; + return $customizations; + } + + static public function countCustomizationQuantityByProduct($customizations) + { + $total = array(); + foreach ($customizations AS $customization) + $total[(int)($customization['id_order_detail'])] = !isset($total[(int)($customization['id_order_detail'])]) ? (int)($customization['quantity']) : $total[(int)($customization['id_order_detail'])] + (int)($customization['quantity']); + return $total; + } + + static public function getLabel($id_customization, $id_lang) + { + if (!$id_customization || !$id_lang) + return false; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name` + FROM `'._DB_PREFIX_.'customization_field_lang` + WHERE `id_customization_field` = '.(int)($id_customization).' + AND `id_lang` = '.(int)($id_lang) + ); + + return $result['name']; + } + + public static function retrieveQuantitiesFromIds(array $ids_customizations) + { + $quantities = array(); + + $in_values = ''; + foreach($ids_customizations as $key => $id_customization) + { + if ($key > 0) $in_values += ','; + $in_values += (int)($id_customization); + } + + if (!empty($in_values)) + { + $results = Db::getInstance()->ExecuteS( + 'SELECT `id_customization`, `id_product`, `quantity`, `quantity_refunded`, `quantity_returned` + FROM `'._DB_PREFIX_.'customization` + WHERE `id_customization` IN ('.$in_values.')'); + + foreach($results as $row) + { + $quantities[$row['id_customization']] = $row; + } + } + + return $quantities; + } + + public static function countQuantityByCart($id_cart) + { + $quantity = array(); + + $results = Db::getInstance()->executeS(' + SELECT `id_product`, `id_product_attribute`, SUM(`quantity`) AS quantity + FROM `'._DB_PREFIX_.'customization` + WHERE `id_cart` = '.(int)($id_cart).' + GROUP BY `id_cart`, `id_product`, `id_product_attribute`' + ); + + foreach($results as $row) + { + $quantity[$row['id_product']][$row['product_attribute_id']] = $row['quantity']; + } + + return $quantity; + } + +} + diff --git a/classes/DateRange.php b/classes/DateRange.php new file mode 100644 index 000000000..c6afc142e --- /dev/null +++ b/classes/DateRange.php @@ -0,0 +1,67 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class DateRangeCore extends ObjectModel +{ + public $time_start; + public $time_end; + + protected $fieldsRequired = array ('time_start', 'time_end'); + protected $fieldsValidate = array ('time_start' => 'isDate', 'time_end' => 'isDate'); + + protected $table = 'date_range'; + protected $identifier = 'id_date_range'; + + public function getFields() + { + parent::validateFields(); + $fields['time_start'] = pSQL($this->time_start); + $fields['time_end'] = pSQL($this->time_end); + return $fields; + } + + public static function getCurrentRange() + { + $result = Db::getInstance()->getRow(' + SELECT `id_date_range`, `time_end` + FROM `'._DB_PREFIX_.'date_range` + WHERE `time_end` = (SELECT MAX(`time_end`) FROM `'._DB_PREFIX_.'date_range`)'); + if (!$result['id_date_range'] OR strtotime($result['time_end']) < strtotime(date('Y-m-d H:i:s'))) + { + // The default range is set to 1 day less 1 second (in seconds) + $rangeSize = 86399; + $dateRange = new DateRange(); + $dateRange->time_start = date('Y-m-d'); + $dateRange->time_end = strftime('%Y-%m-%d %H:%M:%S', strtotime($dateRange->time_start) + $rangeSize); + $dateRange->add(); + return $dateRange->id; + } + return $result['id_date_range']; + } +} + + diff --git a/classes/Db.php b/classes/Db.php new file mode 100644 index 000000000..a924f24e1 --- /dev/null +++ b/classes/Db.php @@ -0,0 +1,328 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +if (file_exists(dirname(__FILE__).'/../config/settings.inc.php')) + include_once(dirname(__FILE__).'/../config/settings.inc.php'); +//include_once(dirname(__FILE__).'/../classes/MySQL.php'); + +abstract class DbCore +{ + /** @var string Server (eg. localhost) */ + protected $_server; + + /** @var string Database user (eg. root) */ + protected $_user; + + /** @var string Database password (eg. can be empty !) */ + protected $_password; + + /** @var string Database type (MySQL, PgSQL) */ + protected $_type; + + /** @var string Database name */ + protected $_database; + + /** @var mixed Ressource link */ + protected $_link; + + /** @var mixed SQL cached result */ + protected $_result; + + /** @var mixed ? */ + protected static $_db; + + /** @var mixed Object instance for singleton */ + protected static $_instance = array(); + + protected static $_servers = array( + array('server' => _DB_SERVER_, 'user' => _DB_USER_, 'password' => _DB_PASSWD_, 'database' => _DB_NAME_), /* MySQL Master server */ + /* Add here your slave(s) server(s)*/ + /*array('server' => '192.168.0.15', 'user' => 'rep', 'password' => '123456', 'database' => 'rep'), + array('server' => '192.168.0.3', 'user' => 'myuser', 'password' => 'mypassword', 'database' => 'mydatabase'), + */ + ); + + protected $_lastQuery; + protected $_lastCached; + + protected static $_idServer; + + /** + * Get Db object instance (Singleton) + * + * @param boolean $master Decides wether the connection to be returned by the master server or the slave server + * @return object Db instance + */ + public static function getInstance($master = 1) + { + if ($master OR ($nServers = sizeof(self::$_servers)) == 1) + $idServer = 0; + else + $idServer = ($nServers > 2 AND ($id = ++self::$_idServer % (int)$nServers) !== 0) ? $id : 1; + + if(!isset(self::$_instance[$idServer])) + self::$_instance[(int)($idServer)] = new MySQL(self::$_servers[(int)($idServer)]['server'], self::$_servers[(int)($idServer)]['user'], self::$_servers[(int)($idServer)]['password'], self::$_servers[(int)($idServer)]['database']); + + return self::$_instance[(int)($idServer)]; + } + + public function getRessource() { return $this->_link;} + + public function __destruct() + { + $this->disconnect(); + } + + /** + * Build a Db object + */ + public function __construct($server, $user, $password, $database) + { + $this->_server = $server; + $this->_user = $user; + $this->_password = $password; + $this->_type = _DB_TYPE_; + $this->_database = $database; + + $this->connect(); + } + + /** + * Filter SQL query within a blacklist + * + * @param string $table Table where insert/update data + * @param string $values Data to insert/update + * @param string $type INSERT or UPDATE + * @param string $where WHERE clause, only for UPDATE (optional) + * @param string $limit LIMIT clause (optional) + * @return mixed|boolean SQL query result + */ + public function autoExecute($table, $values, $type, $where = false, $limit = false, $use_cache = 1) + { + if (!sizeof($values)) + return true; + + if (strtoupper($type) == 'INSERT') + { + $query = 'INSERT INTO `'.$table.'` ('; + foreach ($values AS $key => $value) + $query .= '`'.$key.'`,'; + $query = rtrim($query, ',').') VALUES ('; + foreach ($values AS $key => $value) + $query .= '\''.$value.'\','; + $query = rtrim($query, ',').')'; + if ($limit) + $query .= ' LIMIT '.(int)($limit); + return $this->q($query, $use_cache); + } + elseif (strtoupper($type) == 'UPDATE') + { + $query = 'UPDATE `'.$table.'` SET '; + foreach ($values AS $key => $value) + $query .= '`'.$key.'` = \''.$value.'\','; + $query = rtrim($query, ','); + if ($where) + $query .= ' WHERE '.$where; + if ($limit) + $query .= ' LIMIT '.(int)($limit); + return $this->q($query, $use_cache); + } + + return false; + } + + + /** + * Filter SQL query within a blacklist + * + * @param string $table Table where insert/update data + * @param string $values Data to insert/update + * @param string $type INSERT or UPDATE + * @param string $where WHERE clause, only for UPDATE (optional) + * @param string $limit LIMIT clause (optional) + * @return mixed|boolean SQL query result + */ + public function autoExecuteWithNullValues($table, $values, $type, $where = false, $limit = false) + { + if (!sizeof($values)) + return true; + + if (strtoupper($type) == 'INSERT') + { + $query = 'INSERT INTO `'.$table.'` ('; + foreach ($values AS $key => $value) + $query .= '`'.$key.'`,'; + $query = rtrim($query, ',').') VALUES ('; + foreach ($values AS $key => $value) + $query .= (($value === '' OR $value === NULL) ? 'NULL' : '\''.$value.'\'').','; + $query = rtrim($query, ',').')'; + if ($limit) + $query .= ' LIMIT '.(int)($limit); + return $this->q($query); + } + elseif (strtoupper($type) == 'UPDATE') + { + $query = 'UPDATE `'.$table.'` SET '; + foreach ($values AS $key => $value) + $query .= '`'.$key.'` = '.(($value === '' OR $value === NULL) ? 'NULL' : '\''.$value.'\'').','; + $query = rtrim($query, ','); + if ($where) + $query .= ' WHERE '.$where; + if ($limit) + $query .= ' LIMIT '.(int)($limit); + return $this->q($query); + } + + return false; + } + + /********************************************************* + * ABSTRACT METHODS + *********************************************************/ + + /** + * Open a connection + */ + abstract public function connect(); + + /** + * Get the ID generated from the previous INSERT operation + */ + abstract public function Insert_ID(); + + /** + * Get number of affected rows in previous databse operation + */ + abstract public function Affected_Rows(); + + /** + * Gets the number of rows in a result + */ + abstract public function NumRows(); + + /** + * Delete + */ + abstract public function delete ($table, $where = false, $limit = false, $use_cache = 1); + /** + * Fetches a row from a result set + */ + abstract public function Execute ($query, $use_cache = 1); + + /** + * Fetches an array containing all of the rows from a result set + */ + abstract public function ExecuteS($query, $array = true, $use_cache = 1); + + /* + * Get next row for a query which doesn't return an array + */ + abstract public function nextRow($result = false); + + /** + * Alias of Db::getInstance()->ExecuteS + * + * @acces string query The query to execute + * @return array Array of line returned by MySQL + */ + static public function s($query, $use_cache = 1) + { + return Db::getInstance()->ExecuteS($query, true, $use_cache); + } + + static public function ps($query, $use_cache = 1) + { + $ret = Db::s($query, $use_cache); + p($ret); + return $ret; + } + + static public function ds($query, $use_cache = 1) + { + Db::s($query, $use_cache); + die(); + } + + /** + * getRow return an associative array containing the first row of the query + * This function automatically add "limit 1" to the query + * + * @param mixed $query the select query (without "LIMIT 1") + * @param int $use_cache find it in cache first + * @return array associative array of (field=>value) + */ + abstract public function getRow($query, $use_cache = 1); + + /** + * getValue return the first item of a select query. + * + * @param mixed $query + * @param int $use_cache + * @return void + */ + abstract public function getValue($query, $use_cache = 1); + + /** + * Returns the text of the error message from previous database operation + */ + abstract public function getMsgError(); +} + +/** + * Sanitize data which will be injected into SQL query + * + * @param string $string SQL data which will be injected into SQL query + * @param boolean $htmlOK Does data contain HTML code ? (optional) + * @return string Sanitized data + */ +function pSQL($string, $htmlOK = false) +{ + if (_PS_MAGIC_QUOTES_GPC_) + $string = stripslashes($string); + if (!is_numeric($string)) + { + $link = Db::getInstance()->getRessource(); + $string = _PS_MYSQL_REAL_ESCAPE_STRING_ ? mysql_real_escape_string($string, $link) : addslashes($string); + if (!$htmlOK) + $string = strip_tags(nl2br2($string)); + } + + return $string; +} + +/** + * Convert \n and \r\n and \r to
+ * + * @param string $string String to transform + * @return string New string + */ +function nl2br2($string) +{ + return str_replace(array("\r\n", "\r", "\n"), '
', $string); +} + + diff --git a/classes/Delivery.php b/classes/Delivery.php new file mode 100644 index 000000000..7292d4424 --- /dev/null +++ b/classes/Delivery.php @@ -0,0 +1,77 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class DeliveryCore extends ObjectModel +{ + /** @var integer */ + public $id_delivery; + + /** @var integer */ + public $id_carrier; + + /** @var integer */ + public $id_range_price; + + /** @var integer */ + public $id_range_weight; + + /** @var integer */ + public $id_zone; + + /** @var float */ + public $price; + + protected $fieldsRequired = array ('id_carrier', 'id_range_price', 'id_range_weight', 'id_zone', 'price'); + protected $fieldsValidate = array ('id_carrier' => 'isUnsignedId', 'id_range_price' => 'isUnsignedId', + 'id_range_weight' => 'isUnsignedId', 'id_zone' => 'isUnsignedId', 'price' => 'isPrice'); + + protected $table = 'delivery'; + protected $identifier = 'id_delivery'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_carrier' => array('xlink_resource' => 'carriers'), + 'id_range_price' => array('xlink_resource' => 'priceranges'), + 'id_range_weight' => array('xlink_resource' => 'weightranges'), + 'id_zone' => array('xlink_resource' => 'zones'), + ) + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_carrier'] = (int)($this->id_carrier); + $fields['id_range_price'] = (int)($this->id_range_price); + $fields['id_range_weight'] = (int)($this->id_range_weight); + $fields['id_zone'] = (int)($this->id_zone); + $fields['price'] = (float)($this->price); + + return $fields; + } +} + diff --git a/classes/Discount.php b/classes/Discount.php new file mode 100644 index 000000000..0c4848664 --- /dev/null +++ b/classes/Discount.php @@ -0,0 +1,502 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class DiscountCore extends ObjectModel +{ + public $id; + + /** @var integer Customer id only if discount is reserved */ + public $id_customer; + + /** @var integer Group id only if discount is reserved */ + public $id_group; + + /** @var integer Currency ID only if the discount type is 2 */ + public $id_currency; + + /** @var integer Discount type ID */ + public $id_discount_type; + + /** @var string Name (the one which must be entered) */ + public $name; + + /** @var string A short description for the discount */ + public $description; + + /** @var string Value in percent as well as in euros */ + public $value; + + /** @var integer Totale quantity available */ + public $quantity; + + /** @var integer User quantity available */ + public $quantity_per_user; + + /** @var boolean Indicate if discount is cumulable with others */ + public $cumulable; + + /** @var integer Indicate if discount is cumulable with already bargained products */ + public $cumulable_reduction; + + /** @var integer Date from wich discount become active */ + public $date_from; + + /** @var integer Date from wich discount is no more active */ + public $date_to; + + /** @var integer Minimum cart total amount required to use the discount */ + public $minimal; + + /** @var integer display the discount in the summary */ + public $cart_display; + + public $behavior_not_exhausted; + + /** @var boolean Status */ + public $active = true; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $fieldsRequired = array('id_discount_type', 'name', 'value', 'quantity', 'quantity_per_user', 'date_from', 'date_to'); + protected $fieldsSize = array('name' => '32', 'date_from' => '32', 'date_to' => '32'); + protected $fieldsValidate = array('id_customer' => 'isUnsignedId', 'id_group' => 'isUnsignedId', 'id_discount_type' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', + 'name' => 'isDiscountName', 'value' => 'isPrice', 'quantity' => 'isUnsignedInt', 'quantity_per_user' => 'isUnsignedInt', + 'cumulable' => 'isBool', 'cumulable_reduction' => 'isBool', 'date_from' => 'isDate', + 'date_to' => 'isDate', 'minimal' => 'isFloat', 'active' => 'isBool'); + protected $fieldsRequiredLang = array('description'); + protected $fieldsSizeLang = array('description' => 128); + protected $fieldsValidateLang = array('description' => 'isVoucherDescription'); + + protected $table = 'discount'; + protected $identifier = 'id_discount'; + + + protected $webserviceParameters = array( + 'fields' => array( + 'id_discount_type' => array('sqlId' => 'id_discount_type', 'xlink_resource' => 'discount_types'), + 'id_customer' => array('sqlId' => 'id_customer', 'xlink_resource' => 'customers'), + 'id_group' => array('sqlId' => 'id_group', 'xlink_resource' => 'groups'), + 'id_currency' => array('sqlId' => 'id_currency', 'xlink_resource' => 'currencies'), + 'name' => array('sqlId' => 'name'), + 'value' => array('sqlId' => 'value'), + 'quantity' => array('sqlId' => 'quantity'), + 'quantity_per_user' => array('sqlId' => 'quantity_per_user'), + 'cumulable' => array('sqlId' => 'cumulable'), + 'cumulable_reduction' => array('sqlId' => 'cumulable_reduction'), + 'behavior_not_exhausted' => array('sqlId' => 'behavior_not_exhausted'), + 'date_from' => array('sqlId' => 'date_from'), + 'date_to' => array('sqlId' => 'date_to'), + 'minimal' => array('sqlId' => 'minimal'), + 'active' => array('sqlId' => 'active'), + 'cart_display' => array('sqlId' => 'cart_display'), + 'date_add' => array('sqlId' => 'date_add'), + 'date_upd' => array('sqlId' => 'date_upd') + ) + ); + + + + public function getFields() + { + parent::validateFields(); + + $fields['id_customer'] = (int)($this->id_customer); + $fields['id_group'] = (int)($this->id_group); + $fields['id_currency'] = (int)($this->id_currency); + $fields['id_discount_type'] = (int)($this->id_discount_type); + $fields['name'] = pSQL($this->name); + $fields['value'] = (float)($this->value); + $fields['quantity'] = (int)($this->quantity); + $fields['quantity_per_user'] = (int)($this->quantity_per_user); + $fields['cumulable'] = (int)($this->cumulable); + $fields['cumulable_reduction'] = (int)($this->cumulable_reduction); + $fields['date_from'] = pSQL($this->date_from); + $fields['date_to'] = pSQL($this->date_to); + $fields['minimal'] = (float)($this->minimal); + $fields['behavior_not_exhausted'] = (int)$this->behavior_not_exhausted; + $fields['active'] = (int)($this->active); + $fields['cart_display'] = (int)($this->cart_display); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + public function add($autodate = true, $nullValues = false, $categories = null) + { + $ret = NULL; + if (parent::add($autodate, $nullValues)) + $ret = true; + + $this->updateCategories($categories); + return $ret; + } + + /* Categories initialization is different between add() and update() because the addition will set all categories if none are selected (compatibility with old modules) and update won't update categories if none are selected */ + public function update($autodate = true, $nullValues = false, $categories = false) + { + $ret = NULL; + if (parent::update($autodate, $nullValues)) + $ret = true; + + $this->updateCategories($categories); + return $ret; + } + + public function delete() + { + if (!parent::delete()) + return false; + return (Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'cart_discount WHERE id_discount = '.(int)($this->id)) + AND Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'discount_category WHERE id_discount = '.(int)($this->id))); + } + + public function getTranslationsFieldsChild() + { + if (!parent::validateFieldsLang()) + return false; + return parent::getTranslationsFields(array('description')); + } + + /** + * Return discount types list + * + * @return array Discount types + */ + static public function getDiscountTypes($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM '._DB_PREFIX_.'discount_type dt + LEFT JOIN `'._DB_PREFIX_.'discount_type_lang` dtl ON (dt.`id_discount_type` = dtl.`id_discount_type` AND dtl.`id_lang` = '.(int)($id_lang).')'); + } + + /** + * Get discount ID from name + * + * @param string $discountName Discount name + * @return integer Discount ID + */ + public static function getIdByName($discountName) + { + if (!Validate::isDiscountName($discountName)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_discount` + FROM `'._DB_PREFIX_.'discount` + WHERE `name` = \''.pSQL($discountName).'\''); + return isset($result['id_discount']) ? $result['id_discount'] : false; + } + + /** + * Return customer discounts + * + * @param integer $id_lang Language ID + * @param boolean $id_customer Customer ID + * @return array Discounts + */ + static public function getCustomerDiscounts($id_lang, $id_customer, $active = false, $includeGenericOnes = true, $stock = false) + { + global $cart; + + $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT d.*, dtl.`name` AS `type`, dl.`description` + FROM `'._DB_PREFIX_.'discount` d + LEFT JOIN `'._DB_PREFIX_.'discount_lang` dl ON (d.`id_discount` = dl.`id_discount` AND dl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'discount_type` dt ON dt.`id_discount_type` = d.`id_discount_type` + LEFT JOIN `'._DB_PREFIX_.'discount_type_lang` dtl ON (dt.`id_discount_type` = dtl.`id_discount_type` AND dtl.`id_lang` = '.(int)($id_lang).') + WHERE (`id_customer` = '.(int)($id_customer).' + OR `id_group` IN (SELECT `id_group` FROM `'._DB_PREFIX_.'customer_group` WHERE `id_customer` = '.(int)($id_customer).')'. + ($includeGenericOnes ? ' OR (`id_customer` = 0 AND `id_group` = 0)' : '').') + '.($active ? ' AND d.`active` = 1' : '').' + '.($stock ? ' AND d.`quantity` != 0' : '')); + + foreach ($res as &$discount) + if ($discount['quantity_per_user']) + { + $quantity_used = Order::getDiscountsCustomer((int)($id_customer), (int)($discount['id_discount'])); + if (isset($cart) AND isset($cart->id)) + $quantity_used += $cart->getDiscountsCustomer((int)($discount['id_discount'])); + $discount['quantity_for_user'] = $discount['quantity_per_user'] - $quantity_used; + } + else + $discount['quantity_for_user'] = 0; + return $res; + } + + public function usedByCustomer($id_customer) + { + return Db::getInstance()->getValue(' + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'order_discount` od + LEFT JOIN `'._DB_PREFIX_.'orders` o ON (od.`id_order` = o.`id_order`) + WHERE od.`id_discount` = '.(int)($this->id).' + AND o.`id_customer` = '.(int)($id_customer) + ); + } + + /** + * Return discount value + * + * @param integer $nb_discounts Number of discount currently in cart + * @param boolean $order_total_products Total cart products amount + * @return mixed Return a float value or '!' if reduction is 'Shipping free' + */ + public function getValue($nb_discounts = 0, $order_total_products = 0, $shipping_fees = 0, $idCart = false, $useTax = true) + { + $totalAmount = 0; + + $cart = new Cart((int)($idCart)); + if (!Validate::isLoadedObject($cart)) + return 0; + + if ((!$this->cumulable AND (int)($nb_discounts) > 1) OR !$this->active OR (!$this->quantity AND !$cart->OrderExists())) + return 0; + + if ($this->usedByCustomer((int)($cart->id_customer)) >= $this->quantity_per_user AND !$cart->OrderExists()) + return 0; + + $date_start = strtotime($this->date_from); + $date_end = strtotime($this->date_to); + if ((time() < $date_start OR time() > $date_end) AND !$cart->OrderExists()) return 0; + + $products = $cart->getProducts(); + $categories = Discount::getCategories((int)($this->id)); + $in_category = false; + + foreach ($products AS $product) + if (count($categories) AND Product::idIsOnCategoryId($product['id_product'], $categories)) + $totalAmount += $useTax ? $product['total_wt'] : $product['total']; + + $totalAmount += (float)($shipping_fees); + if ($this->minimal > 0 AND $totalAmount < $this->minimal) + return 0; + + switch ($this->id_discount_type) + { + /* Relative value (% of the order total) */ + case 1: + $amount = 0; + $percentage = $this->value / 100; + foreach ($products AS $product) + if (Product::idIsOnCategoryId($product['id_product'], $categories)) + if ((!$this->cumulable_reduction AND !$product['reduction_applies'] AND !$product['on_sale']) OR $this->cumulable_reduction) + $amount += ($useTax ? $product['total_wt'] : $product['total']) * $percentage; + return $amount; + + /* Absolute value */ + case 2: + // An "absolute" voucher is available in one currency only + $currency = ((int)$cart->id_currency ? Currency::getCurrencyInstance($cart->id_currency) : Currency::getCurrent()); + if ($this->id_currency != $currency->id) + return 0; + + $taxDiscount = Cart::getTaxesAverageUsed((int)($cart->id)); + if (!$useTax AND isset($taxDiscount) AND $taxDiscount != 1) + $this->value = abs($this->value / (1 + $taxDiscount * 0.01)); + + // Main return + $value = 0; + foreach ($products AS $product) + if (Product::idIsOnCategoryId($product['id_product'], $categories)) + $value = $this->value; + // Return 0 if there are no applicable categories + return $value; + + /* Free shipping (does not return a value but a special code) */ + case 3: + return '!'; + } + return 0; + } + + /** + * @param int $id_category_product + * @param int $id_category_discount + * @return bool + * @deprecated + */ + static public function isParentCategoryProductDiscount($id_category_product, $id_category_discount) + { + Tools::displayAsDeprecated(); + $category = new Category((int)($id_category_product)); + $parentCategories = $category->getParentsCategories(); + foreach($parentCategories AS $parentCategory) + if($id_category_discount == $parentCategory['id_category']) + return true; + return false; + } + + static public function getCategories($id_discount) + { + return Db::getInstance()->ExecuteS(' + SELECT `id_category` + FROM `'._DB_PREFIX_.'discount_category` + WHERE `id_discount` = '.(int)($id_discount)); + } + + public function updateCategories($categories) + { + /* false value will avoid category update and null value will force all category to be selected */ + if ($categories === false) + return ; + if ($categories === null) + { + // Compatibility for modules which create discount without setting categories (ex. fidelity, sponsorship) + $result = Db::getInstance()->ExecuteS('SELECT id_category FROM '._DB_PREFIX_.'category'); + $categories = array(); + foreach ($result as $row) + $categories[] = $row['id_category']; + } + elseif (!is_array($categories) OR !sizeof($categories)) + return false; + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount_category` WHERE `id_discount`='.(int)($this->id)); + foreach($categories AS $category) + { + Db::getInstance()->Execute(' + SELECT `id_discount` + FROM `'._DB_PREFIX_.'discount_category` + WHERE `id_discount`='.(int)($this->id).' AND `id_category`='.(int)($category)); + if (Db::getInstance()->NumRows() == 0) + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'discount_category` (`id_discount`, `id_category`) VALUES('.(int)($this->id).','.(int)($category).')'); + } + } + + static public function discountExists($discountName, $id_discount = 0) + { + return Db::getInstance()->getRow('SELECT `id_discount` FROM '._DB_PREFIX_.'discount WHERE `name` LIKE \''.pSQL($discountName).'\' AND `id_discount` != '.(int)($id_discount)); + } + + static public function createOrderDiscount($order, $productList, $qtyList, $name, $shipping_cost = false, $id_category = 0, $subcategory = 0) + { + $languages = Language::getLanguages($order); + $products = $order->getProducts(false, $productList, $qtyList); + + // Totals are stored in the order currency (or at least should be) + $total = $order->getTotalProductsWithTaxes($products); + $discounts = $order->getDiscounts(true); + $total_tmp = $total; + foreach ($discounts as $discount) + { + if ($discount['id_discount_type'] == 1) + $total -= $total_tmp * ($discount['value'] / 100); + elseif ($discount['id_discount_type'] == 2) + $total -= ($discount['value'] * ($total_tmp / $order->total_products_wt)); + } + if ($shipping_cost) + $total += $order->total_shipping; + + // create discount + $voucher = new Discount(); + $voucher->id_discount_type = 2; + foreach ($languages as $language) + $voucher->description[$language['id_lang']] = strval($name).(int)($order->id); + $voucher->value = (float)($total); + $voucher->name = 'V0C'.(int)($order->id_customer).'O'.(int)($order->id); + $voucher->id_customer = (int)($order->id_customer); + $voucher->id_currency = (int)($order->id_currency); + $voucher->quantity = 1; + $voucher->quantity_per_user = 1; + $voucher->cumulable = 1; + $voucher->cumulable_reduction = 1; + $voucher->minimal = (float)($voucher->value); + $voucher->active = 1; + $voucher->cart_display = 1; + $now = time(); + $voucher->date_from = date('Y-m-d H:i:s', $now); + $voucher->date_to = date('Y-m-d H:i:s', $now + (3600 * 24 * 365.25)); /* 1 year */ + if (!$voucher->validateFieldsLang(false) OR !$voucher->add()) + return false; + // set correct name + $voucher->name = 'V'.(int)($voucher->id).'C'.(int)($order->id_customer).'O'.$order->id; + if (!$voucher->update()) + return false; + + return $voucher; + } + + static public function display($discountValue, $discountType, $currency = false) + { + if ((float)($discountValue) AND (int)($discountType)) + { + if ($discountType == 1) + return $discountValue.chr(37); // ASCII #37 --> % (percent) + elseif ($discountType == 2) + return Tools::displayPrice($discountValue, $currency); + } + return ''; // return a string because it's a display method + } + + static public function getVouchersToCartDisplay($id_lang, $id_customer) + { + return Db::getInstance()->ExecuteS(' + SELECT d.`name`, dl.`description`, d.`id_discount` + FROM `'._DB_PREFIX_.'discount` d + LEFT JOIN `'._DB_PREFIX_.'discount_lang` dl ON (d.`id_discount` = dl.`id_discount`) + WHERE d.`active` = 1 + AND d.`date_from` <= \''.pSQL(date('Y-m-d H:i:s')).'\' AND d.`date_to` >= \''.pSQL(date('Y-m-d H:i:s')).'\' + AND dl.`id_lang` = '.(int)($id_lang).' + AND d.`cart_display` = 1 AND d.`quantity` > 0 + AND ((d.`id_customer` = 0 AND d.`id_group` = 0) '.($id_customer ? 'OR (d.`id_customer` = '.$id_customer.' + OR d.`id_group` IN (SELECT `id_group` FROM `'._DB_PREFIX_.'customer_group` WHERE `id_customer` = '.(int)($id_customer).')))' : 'OR d.`id_group` = 1)')); + } + + static public function deleteByIdCustomer($id_customer) + { + $discounts = Db::getInstance()->ExecuteS('SELECT `id_discount` FROM `'._DB_PREFIX_.'discount` WHERE `id_customer` = '.(int)($id_customer)); + foreach ($discounts as $discount) + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount` WHERE `id_discount` = '.(int)($discount['id_discount'])); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount_category` WHERE `id_discount` = '.(int)($discount['id_discount'])); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount_lang` WHERE `id_discount` = '.(int)($discount['id_discount'])); + } + return true; + } + + static public function deleteByIdGroup($id_group) + { + $discounts = Db::getInstance()->ExecuteS('SELECT `id_discount` FROM `'._DB_PREFIX_.'discount` WHERE `id_group` = '.(int)($id_group)); + foreach ($discounts as $discount) + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount` WHERE `id_discount` = '.(int)($discount['id_discount'])); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount_category` WHERE `id_discount` = '.(int)($discount['id_discount'])); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount_lang` WHERE `id_discount` = '.(int)($discount['id_discount'])); + } + return true; + } + + static public function getDiscount($id_discount) + { + return Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'discount` WHERE `id_discount` = '.(int)$id_discount); + } +} + + diff --git a/classes/Employee.php b/classes/Employee.php new file mode 100644 index 000000000..c7596e7a5 --- /dev/null +++ b/classes/Employee.php @@ -0,0 +1,212 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class EmployeeCore extends ObjectModel +{ + public $id; + + /** @var string Determine employee profile */ + public $id_profile; + + /** @var string employee language */ + public $id_lang; + + /** @var string Lastname */ + public $lastname; + + /** @var string Firstname */ + public $firstname; + + /** @var string e-mail */ + public $email; + + /** @var string Password */ + public $passwd; + + /** @var datetime Password */ + public $last_passwd_gen; + + public $stats_date_from; + public $stats_date_to; + + /** @var string Display back office background in the specified color */ + public $bo_color; + + /** @var string employee's chosen theme */ + public $bo_theme; + + /** @var string / enum hover or click mode */ + public $bo_uimode; + + /** @var boolean Status */ + public $active = 1; + + protected $fieldsRequired = array('lastname', 'firstname', 'email', 'passwd', 'id_profile', 'id_lang'); + protected $fieldsSize = array('lastname' => 32, 'firstname' => 32, 'email' => 128, 'passwd' => 32, 'bo_color' => 32, 'bo_theme' => 32); + protected $fieldsValidate = array('lastname' => 'isName', 'firstname' => 'isName', 'email' => 'isEmail', 'id_lang' => 'isUnsignedInt', + 'passwd' => 'isPasswdAdmin', 'active' => 'isBool', 'id_profile' => 'isInt', 'bo_color' => 'isColor', 'bo_theme' => 'isGenericName', 'bo_uimode' => 'isGenericName'); + + protected $table = 'employee'; + protected $identifier = 'id_employee'; + + protected $webserviceParameters = array( + 'objectMethods' => array('add' => 'addWs'), + 'fields' => array( + 'id_lang' => array('xlink_resource' => 'languages'), + 'last_passwd_gen' => array('setter' => null), + 'stats_date_from' => array('setter' => null), + 'stats_date_to' => array('setter' => null), + ), + ); + + + public function getFields() + { + parent::validateFields(); + + $fields['id_profile'] = (int)$this->id_profile; + $fields['id_lang'] = (int)$this->id_lang; + $fields['lastname'] = pSQL($this->lastname); + $fields['firstname'] = pSQL(Tools::ucfirst($this->firstname)); + $fields['email'] = pSQL($this->email); + $fields['passwd'] = pSQL($this->passwd); + $fields['last_passwd_gen'] = pSQL($this->last_passwd_gen); + $fields['stats_date_from'] = pSQL($this->stats_date_from); + $fields['stats_date_to'] = pSQL($this->stats_date_to); + $fields['bo_color'] = pSQL($this->bo_color); + $fields['bo_theme'] = pSQL($this->bo_theme); + $fields['bo_uimode'] = pSQL($this->bo_uimode); + $fields['active'] = (int)$this->active; + + return $fields; + } + + /** + * Return all employee id and email + * + * @return array Employees + * @deprecated + */ + static public function getEmployees() + { + Tools::displayAsDeprecated(); + return Db::getInstance()->ExecuteS(' + SELECT `id_employee`, CONCAT(`firstname`, \' \', `lastname`) AS "name" + FROM `'._DB_PREFIX_.'employee` + WHERE `active` = 1 + ORDER BY `email`'); + } + + public function add($autodate = true, $nullValues = true) + { + $this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_BACK').'minutes')); + return parent::add($autodate, $nullValues); + } + + /** + * Return employee instance from its e-mail (optionnaly check password) + * + * @param string $email e-mail + * @param string $passwd Password is also checked if specified + * @return Employee instance + */ + public function getByEmail($email, $passwd = NULL) + { + if (!Validate::isEmail($email) OR ($passwd != NULL AND !Validate::isPasswd($passwd))) + die(Tools::displayError()); + + $result = Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'employee` + WHERE `active` = 1 + AND `email` = \''.pSQL($email).'\' + '.($passwd ? 'AND `passwd` = \''.Tools::encrypt($passwd).'\'' : '')); + if (!$result) + return false; + $this->id = $result['id_employee']; + $this->id_profile = $result['id_profile']; + foreach ($result AS $key => $value) + if (key_exists($key, $this)) + $this->{$key} = $value; + return $this; + } + + static public function employeeExists($email) + { + if (!Validate::isEmail($email)) + die (Tools::displayError()); + + return (bool)Db::getInstance()->getValue(' + SELECT `id_employee` + FROM `'._DB_PREFIX_.'employee` + WHERE `email` = \''.pSQL($email).'\''); + } + + /** + * Check if employee password is the right one + * + * @param string $passwd Password + * @return boolean result + */ + static public function checkPassword($id_employee, $passwd) + { + if (!Validate::isUnsignedId($id_employee) OR !Validate::isPasswd($passwd, 8)) + die (Tools::displayError()); + + return Db::getInstance()->getValue(' + SELECT `id_employee` + FROM `'._DB_PREFIX_.'employee` + WHERE `id_employee` = '.(int)$id_employee.' + AND `passwd` = \''.pSQL($passwd).'\' + AND active = 1'); + } + + static public function countProfile($id_profile, $activeOnly = false) + { + return Db::getInstance()->getValue(' + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'employee` + WHERE `id_profile` = '.(int)$id_profile.' + '.($activeOnly ? ' AND `active` = 1' : '')); + } + + public function isLastAdmin() + { + return ($this->id_profile == _PS_ADMIN_PROFILE_ + AND Employee::countProfile($this->id_profile, true) == 1 + AND $this->active + ); + } + + + public function addWs($autodate = true, $nullValues = false) + { + $this->passwd = Tools::encrypt($this->passwd); + return $this->add($autodate, $nullValues); + } + +} \ No newline at end of file diff --git a/classes/Feature.php b/classes/Feature.php new file mode 100644 index 000000000..526a7261f --- /dev/null +++ b/classes/Feature.php @@ -0,0 +1,207 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class FeatureCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 128); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'feature'; + protected $identifier = 'id_feature'; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'product_features', + 'objectNodeName' => 'product_feature', + 'fields' => array(), + ); + + public function getFields() + { + return array('id_feature' => NULL); + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + /** + * Get a feature data for a given id_feature and id_lang + * + * @param integer $id_lang Language id + * @param integer $id_feature Feature id + * @return array Array with feature's data + * @static + */ + static public function getFeature($id_lang, $id_feature) + { + return Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'feature` f + LEFT JOIN `'._DB_PREFIX_.'feature_lang` fl ON ( f.`id_feature` = fl.`id_feature` AND fl.`id_lang` = '.(int)($id_lang).') + WHERE f.`id_feature` = '.(int)($id_feature)); + } + + /** + * Get all features for a given language + * + * @param integer $id_lang Language id + * @return array Multiple arrays with feature's data + * @static + */ + static public function getFeatures($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'feature` f + LEFT JOIN `'._DB_PREFIX_.'feature_lang` fl ON (f.`id_feature` = fl.`id_feature` AND fl.`id_lang` = '.(int)($id_lang).') + ORDER BY fl.`name` ASC'); + } + + /** + * Delete several objects from database + * + * @param array $selection Array with items to delete + * @return boolean Deletion result + */ + public function deleteSelection($selection) + { + /* Also delete Attributes */ + foreach ($selection AS $value) { + $obj = new Feature($value); + if (!$obj->delete()) + return false; + } + return true; + } + + public function add($autodate = true, $nullValues = false) + { + return parent::add($autodate, true); + } + + public function delete() + { + /* Also delete related attributes */ + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'feature_value_lang` WHERE `id_feature_value` IN (SELECT id_feature_value FROM `'._DB_PREFIX_.'feature_value` WHERE `id_feature` = '.(int)($this->id).')'); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'feature_value` WHERE `id_feature` = '.(int)($this->id)); + /* Also delete related products */ + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'feature_product` WHERE `id_feature` = '.(int)($this->id)); + return parent::delete(); + } + + public function update($nullValues = false) + { + $this->clearCache(); + + $result = 1; + $fields = $this->getTranslationsFieldsChild(); + foreach ($fields as $field) + { + foreach ($field as $key => $value) + if (!Validate::isTableOrIdentifier($key)) + die(Tools::displayError()); + $mode = Db::getInstance()->getRow('SELECT `id_lang` FROM `'.pSQL(_DB_PREFIX_.$this->table).'_lang` WHERE `'.pSQL($this->identifier). + '` = '.(int)($this->id).' AND `id_lang` = '.(int)($field['id_lang'])); + $result *= (!Db::getInstance()->NumRows()) ? Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table.'_lang', $field, 'INSERT') : + Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table.'_lang', $field, 'UPDATE', '`'. + pSQL($this->identifier).'` = '.(int)($this->id).' AND `id_lang` = '.(int)($field['id_lang'])); + } + return $result; + } + + /** + * Count number of features for a given language + * + * @param integer $id_lang Language id + * @return int Number of feature + * @static + */ + static public function nbFeatures($id_lang) + { + $result = Db::getInstance()->getRow(' + SELECT COUNT(ag.`id_feature`) as nb + FROM `'._DB_PREFIX_.'feature` ag + LEFT JOIN `'._DB_PREFIX_.'feature_lang` agl ON (ag.`id_feature` = agl.`id_feature` AND `id_lang` = '.(int)($id_lang).') + ORDER BY `name` ASC'); + return ($result['nb']); + } + + /** + * Create a feature from import + * + * @param integer $id_feature Feature id + * @param integer $id_product Product id + * @param array $value Feature Value + */ + static public function addFeatureImport($name) + { + $rq = Db::getInstance()->getRow('SELECT `id_feature` FROM '._DB_PREFIX_.'feature_lang WHERE `name` = \''.pSQL($name).'\' GROUP BY `id_feature`'); + if (!empty($rq)) + return (int)($rq['id_feature']); + // Feature doesn't exist, create it + $feature = new Feature(); + $languages = Language::getLanguages(); + foreach ($languages as $language) + $feature->name[$language['id_lang']] = strval($name); + $feature->add(); + return $feature->id; + } + + public static function getFeaturesForComparison($list_ids_product, $id_lang) + { + $ids = ''; + foreach($list_ids_product as $id) + $ids .= (int)($id).','; + + $ids = rtrim($ids, ','); + + if (empty($ids)) + return false; + + return Db::getInstance()->ExecuteS(' + SELECT * , COUNT(*) as nb + FROM `'._DB_PREFIX_.'feature` f + LEFT JOIN `'._DB_PREFIX_.'feature_product` fp ON f.`id_feature` = fp.`id_feature` + LEFT JOIN `'._DB_PREFIX_.'feature_lang` fl ON f.`id_feature` = fl.`id_feature` + WHERE fp.`id_product` IN ('.$ids.') + AND `id_lang` = '.(int)($id_lang).' + GROUP BY f.`id_feature` + ORDER BY nb DESC'); + } +} + diff --git a/classes/FeatureValue.php b/classes/FeatureValue.php new file mode 100644 index 000000000..8ecc1e7c7 --- /dev/null +++ b/classes/FeatureValue.php @@ -0,0 +1,175 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class FeatureValueCore extends ObjectModel +{ + /** @var integer Group id which attribute belongs */ + public $id_feature; + + /** @var string Name */ + public $value; + + /** @var boolean Custom */ + public $custom = 0; + + protected $fieldsRequired = array('id_feature'); + protected $fieldsValidate = array('id_feature' => 'isUnsignedId', 'custom' => 'isBool'); + protected $fieldsRequiredLang = array('value'); + protected $fieldsSizeLang = array('value' => 255); + protected $fieldsValidateLang = array('value' => 'isGenericName'); + + protected $table = 'feature_value'; + protected $identifier = 'id_feature_value'; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'product_feature_values', + 'objectNodeName' => 'product_feature_value', + 'fields' => array( + 'id_feature' => array('xlink_resource'=> 'product_features'), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_feature'] = (int)$this->id_feature; + $fields['custom'] = (int)$this->custom; + + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('value')); + } + + /** + * Get all values for a given feature + * + * @param boolean $id_feature Feature id + * @return array Array with feature's values + * @static + */ + static public function getFeatureValues($id_feature) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'feature_value` + WHERE `id_feature` = '.(int)$id_feature); + } + + /** + * Get all values for a given feature and language + * + * @param integer $id_lang Language id + * @param boolean $id_feature Feature id + * @return array Array with feature's values + * @static + */ + static public function getFeatureValuesWithLang($id_lang, $id_feature) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'feature_value` v + LEFT JOIN `'._DB_PREFIX_.'feature_value_lang` vl ON (v.`id_feature_value` = vl.`id_feature_value` AND vl.`id_lang` = '.(int)$id_lang.') + WHERE v.`id_feature` = '.(int)$id_feature.' AND (v.`custom` IS NULL OR v.`custom` = 0) + ORDER BY vl.`value` ASC'); + } + + /** + * Get all language for a given value + * + * @param boolean $id_feature_value Feature value id + * @return array Array with value's languages + * @static + */ + static public function getFeatureValueLang($id_feature_value) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'feature_value_lang` + WHERE `id_feature_value` = '.(int)$id_feature_value.' + ORDER BY `id_lang`'); + } + + /** + * Select the good lang in tab + * + * @param array $lang Array with all language + * @param integer $id_lang Language id + * @return string String value name selected + * @static + */ + static public function selectLang($lang, $id_lang) + { + foreach ($lang as $tab) + if ($tab['id_lang'] == $id_lang) + return $tab['value']; + } + + static public function addFeatureValueImport($id_feature, $name) + { + $rq = Db::getInstance()->ExecuteS(' + SELECT fv.`id_feature_value` + FROM '._DB_PREFIX_.'feature_value fv + LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.`id_feature_value` = fv.`id_feature_value`) + WHERE `value` = \''.pSQL($name).'\' + AND fv.`id_feature` = '.(int)$id_feature.' + GROUP BY fv.`id_feature_value` LIMIT 1'); + + if (!isset($rq[0]['id_feature_value']) OR !$id_feature_value = (int)$rq[0]['id_feature_value']) + { + // Feature doesn't exist, create it + $featureValue = new FeatureValue(); + + $languages = Language::getLanguages(); + foreach ($languages AS $language) + $featureValue->value[$language['id_lang']] = strval($name); + + $featureValue->id_feature = (int)$id_feature; + $featureValue->custom = 1; + $featureValue->add(); + + return (int)$featureValue->id; + } + return (int)$id_feature_value; + } + + public function delete() + { + /* Also delete related products */ + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'feature_product` WHERE `id_feature_value` = '.(int)$this->id); + return parent::delete(); + } +} \ No newline at end of file diff --git a/classes/FrontController.php b/classes/FrontController.php new file mode 100755 index 000000000..ebf321d0f --- /dev/null +++ b/classes/FrontController.php @@ -0,0 +1,573 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class FrontControllerCore +{ + public $errors = array(); + protected static $smarty; + protected static $cookie; + protected static $link; + protected static $cart; + public $iso; + + public $orderBy; + public $orderWay; + public $p; + public $n; + + public $auth = false; + public $guestAllowed = false; + public $authRedirection = false; + public $ssl = false; + + protected $restrictedCountry = false; + protected $maintenance = false; + + public static $initialized = false; + + protected static $currentCustomerGroups; + + public function __construct() + { + global $css_files, $js_files, $useSSL; + + $useSSL = $this->ssl; + } + + public function run() + { + $this->init(); + $this->preProcess(); + $this->displayHeader(); + $this->process(); + $this->displayContent(); + $this->displayFooter(); + } + + public function init() + { + global $cookie, $smarty, $cart, $iso, $defaultCountry, $protocol_link, $protocol_content, $link, $css_files, $js_files; + + $css_files = array(); + $js_files = array(); + + if (self::$initialized) + return; + self::$initialized = true; + + if ($this->ssl AND !(empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) != 'off') AND Configuration::get('PS_SSL_ENABLED')) + { + header('HTTP/1.1 301 Moved Permanently'); + header('Location: '.Tools::getShopDomainSsl(true).$_SERVER['REQUEST_URI']); + exit(); + } + + ob_start(); + + $cookie = new Cookie('ps'); + $link = new Link(); + + if ($this->auth AND !$cookie->isLogged($this->guestAllowed)) + Tools::redirect('authentication.php'.($this->authRedirection ? '?back='.$this->authRedirection : '')); + + /* Theme is missing or maintenance */ + if (!is_dir(_PS_THEME_DIR_)) + die(Tools::displayError('Current theme unavailable. Please check your theme directory name and permissions.')); + elseif (basename($_SERVER['PHP_SELF']) != 'disabled.php' AND !(int)(Configuration::get('PS_SHOP_ENABLE'))) + $this->maintenance = true; + elseif (Configuration::get('PS_GEOLOCATION_ENABLED')) + $this->geolocationManagement(); + + // Switch language if needed and init cookie language + if ($iso = Tools::getValue('isolang') AND Validate::isLanguageIsoCode($iso) AND ($id_lang = (int)(Language::getIdByIso($iso)))) + $_GET['id_lang'] = $id_lang; + + Tools::switchLanguage(); + Tools::setCookieLanguage(); + + /* attribute id_lang is often needed, so we create a constant for performance reasons */ + if (!defined('_USER_ID_LANG_')) + define('_USER_ID_LANG_', (int)$cookie->id_lang); + + if (isset($_GET['logout']) OR ($cookie->logged AND Customer::isBanned((int)$cookie->id_customer))) + { + $cookie->logout(); + Tools::redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL); + } + elseif (isset($_GET['mylogout'])) + { + $cookie->mylogout(); + Tools::redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : NULL); + } + + global $currency; + $currency = Tools::setCurrency(); + + $_MODULES = array(); + + if ((int)$cookie->id_cart) + { + $cart = new Cart((int)$cookie->id_cart); + if ($cart->OrderExists()) + unset($cookie->id_cart, $cart); + /* Delete product of cart, if user can't make an order from his country */ + elseif (intval(Configuration::get('PS_GEOLOCATION_ENABLED')) AND !in_array(strtoupper($cookie->iso_code_country), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))) AND $cart->nbProducts() AND intval(Configuration::get('PS_GEOLOCATION_NA_BEHAVIOR')) != -1) + unset($cookie->id_cart, $cart); + elseif ($cookie->id_customer != $cart->id_customer OR $cookie->id_lang != $cart->id_lang OR $cookie->id_currency != $cart->id_currency) + { + if ($cookie->id_customer) + $cart->id_customer = (int)($cookie->id_customer); + $cart->id_lang = (int)($cookie->id_lang); + $cart->id_currency = (int)($cookie->id_currency); + $cart->update(); + } + + } + + if (!isset($cart) OR !$cart->id) + { + $cart = new Cart(); + $cart->id_lang = (int)($cookie->id_lang); + $cart->id_currency = (int)($cookie->id_currency); + $cart->id_guest = (int)($cookie->id_guest); + if ($cookie->id_customer) + { + $cart->id_customer = (int)($cookie->id_customer); + $cart->id_address_delivery = (int)(Address::getFirstCustomerAddressId($cart->id_customer)); + $cart->id_address_invoice = $cart->id_address_delivery; + } + else + { + $cart->id_address_delivery = 0; + $cart->id_address_invoice = 0; + } + } + if (!$cart->nbProducts()) + $cart->id_carrier = NULL; + + $locale = strtolower(Configuration::get('PS_LOCALE_LANGUAGE')).'_'.strtoupper(Configuration::get('PS_LOCALE_COUNTRY').'.UTF-8'); + setlocale(LC_COLLATE, $locale); + setlocale(LC_CTYPE, $locale); + setlocale(LC_TIME, $locale); + setlocale(LC_NUMERIC, 'en_US.UTF-8'); + + if (Validate::isLoadedObject($currency)) + $smarty->ps_currency = $currency; + if (Validate::isLoadedObject($ps_language = new Language((int)$cookie->id_lang))) + $smarty->ps_language = $ps_language; + + /* get page name to display it in body id */ + $pathinfo = pathinfo(__FILE__); + $page_name = basename($_SERVER['PHP_SELF'], '.'.$pathinfo['extension']); + $page_name = (preg_match('/^[0-9]/', $page_name)) ? 'page_'.$page_name : $page_name; + $smarty->assign(Tools::getMetaTags($cookie->id_lang, $page_name)); + $smarty->assign('request_uri', Tools::safeOutput(urldecode($_SERVER['REQUEST_URI']))); + + /* Breadcrumb */ + $navigationPipe = (Configuration::get('PS_NAVIGATION_PIPE') ? Configuration::get('PS_NAVIGATION_PIPE') : '>'); + $smarty->assign('navigationPipe', $navigationPipe); + + $protocol_link = (Configuration::get('PS_SSL_ENABLED') OR (isset($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) == 'on')) ? 'https://' : 'http://'; + $protocol_content = ((isset($useSSL) AND $useSSL AND Configuration::get('PS_SSL_ENABLED')) OR (isset($_SERVER['HTTPS']) AND strtolower($_SERVER['HTTPS']) == 'on')) ? 'https://' : 'http://'; + if (!defined('_PS_BASE_URL_')) + define('_PS_BASE_URL_', Tools::getShopDomain(true)); + if (!defined('_PS_BASE_URL_SSL_')) + define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true)); + + $link->preloadPageLinks(); + $this->canonicalRedirection(); + + Product::initPricesComputation(); + + $smarty->assign(array( + 'link' => $link, + 'cart' => $cart, + 'currency' => $currency, + 'cookie' => $cookie, + 'page_name' => $page_name, + 'base_dir' => _PS_BASE_URL_.__PS_BASE_URI__, + 'base_dir_ssl' => $protocol_link.Tools::getShopDomainSsl().__PS_BASE_URI__, + 'content_dir' => $protocol_content.Tools::getShopDomain().__PS_BASE_URI__, + 'tpl_dir' => _PS_THEME_DIR_, + 'modules_dir' => _MODULE_DIR_, + 'mail_dir' => _MAIL_DIR_, + 'lang_iso' => $ps_language->iso_code, + 'come_from' => Tools::getHttpHost(true, true).Tools::htmlentitiesUTF8(str_replace('\'', '', urldecode($_SERVER['REQUEST_URI']))), + 'cart_qties' => (int)$cart->nbProducts(), + 'currencies' => Currency::getCurrencies(), + 'languages' => Language::getLanguages(), + 'priceDisplay' => Product::getTaxCalculationMethod(), + 'add_prod_display' => (int)Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), + 'shop_name' => Configuration::get('PS_SHOP_NAME'), + 'roundMode' => (int)Configuration::get('PS_PRICE_ROUND_MODE'), + 'use_taxes' => (int)Configuration::get('PS_TAX'), + 'vat_management' => (int)Configuration::get('VATNUMBER_MANAGEMENT'), + 'opc' => (bool)Configuration::get('PS_ORDER_PROCESS_TYPE'), + 'PS_CATALOG_MODE' => (bool)Configuration::get('PS_CATALOG_MODE') + )); + + // Deprecated + $smarty->assign(array( + 'id_currency_cookie' => (int)$currency->id, + 'logged' => $cookie->isLogged(), + 'customerName' => ($cookie->logged ? $cookie->customer_firstname.' '.$cookie->customer_lastname : false) + )); + + // TODO for better performances (cache usage), remove these assign and use a smarty function to get the right media server in relation to the full ressource name + $assignArray = array( + 'img_ps_dir' => _PS_IMG_, + 'img_cat_dir' => _THEME_CAT_DIR_, + 'img_lang_dir' => _THEME_LANG_DIR_, + 'img_prod_dir' => _THEME_PROD_DIR_, + 'img_manu_dir' => _THEME_MANU_DIR_, + 'img_sup_dir' => _THEME_SUP_DIR_, + 'img_ship_dir' => _THEME_SHIP_DIR_, + 'img_store_dir' => _THEME_STORE_DIR_, + 'img_col_dir' => _THEME_COL_DIR_, + 'img_dir' => _THEME_IMG_DIR_, + 'css_dir' => _THEME_CSS_DIR_, + 'js_dir' => _THEME_JS_DIR_, + 'pic_dir' => _THEME_PROD_PIC_DIR_ + ); + + foreach ($assignArray as $assignKey => $assignValue) + if (substr($assignValue, 0, 1) == '/' OR $protocol_content == 'https://') + $smarty->assign($assignKey, $protocol_content.Tools::getMediaServer($assignValue).$assignValue); + else + $smarty->assign($assignKey, $assignValue); + + // setting properties from global var + self::$cookie = $cookie; + self::$cart = $cart; + self::$smarty = $smarty; + self::$link = $link; + + if ($this->maintenance) + $this->displayMaintenancePage(); + if ($this->restrictedCountry) + $this->displayRestrictedCountryPage(); + + //live edit + if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) + if (!is_dir(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$ad)) + die(Tools::displayError()); + + + $this->iso = $iso; + $this->setMedia(); + } + + /* Display a maintenance page if shop is closed */ + protected function displayMaintenancePage() + { + + if (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))) + { + header('HTTP/1.1 503 temporarily overloaded'); + self::$smarty->display(_PS_THEME_DIR_.'maintenance.tpl'); + exit; + } + } + + /* Display a specific page if the user country is not allowed */ + protected function displayRestrictedCountryPage() + { + global $smarty; + + header('HTTP/1.1 503 temporarily overloaded'); + $smarty->display(_PS_THEME_DIR_.'restricted-country.tpl'); + exit; + } + + protected function canonicalRedirection() + { + global $link, $cookie; + + if (Configuration::get('PS_CANONICAL_REDIRECT')) + { + // Automatically redirect to the canonical URL if needed + if (isset($this->php_self) AND !empty($this->php_self)) + { + // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain + $canonicalURL = $link->getPageLink($this->php_self, $this->ssl, $cookie->id_lang); + if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', (($this->ssl AND Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) + { + header('HTTP/1.0 301 Moved'); + $params = ''; + $excludedKey = array('isolang', 'id_lang'); + foreach ($_GET as $key => $value) + if (!in_array($key, $excludedKey)) + $params .= ($params == '' ? '?' : '&').$key.'='.$value; + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_ AND $_SERVER['REQUEST_URI'] != __PS_BASE_URI__) + die('[Debug] This page has moved
Please use the following URL instead: '.$canonicalURL.$params.''); + Tools::redirectLink($canonicalURL.$params); + } + } + } + } + + protected function geolocationManagement() + { + global $cookie, $smarty; + + if (!in_array($_SERVER['SERVER_NAME'], array('localhost', '127.0.0.1'))) + { + /* Check if Maxmind Database exists */ + if (file_exists(_PS_GEOIP_DIR_.'GeoLiteCity.dat')) + { + if (!isset($cookie->iso_code_country) OR (isset($cookie->iso_code_country) AND !in_array(strtoupper($cookie->iso_code_country), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))))) + { + include_once(_PS_GEOIP_DIR_.'geoipcity.inc'); + include_once(_PS_GEOIP_DIR_.'geoipregionvars.php'); + + $gi = geoip_open(realpath(_PS_GEOIP_DIR_.'GeoLiteCity.dat'), GEOIP_STANDARD); + $record = geoip_record_by_addr($gi, Tools::getRemoteAddr()); + + if (is_object($record) AND !in_array(strtoupper($record->country_code), explode(';', Configuration::get('PS_ALLOWED_COUNTRIES'))) AND !self::isInWhitelistForGeolocation()) + { + if (Configuration::get('PS_GEOLOCATION_BEHAVIOR') == _PS_GEOLOCATION_NO_CATALOG_) + $this->restrictedCountry = true; + elseif (Configuration::get('PS_GEOLOCATION_BEHAVIOR') == _PS_GEOLOCATION_NO_ORDER_) + $smarty->assign(array( + 'restricted_country_mode' => true, + 'geolocation_country' => $record->country_name + )); + } + elseif (is_object($record)) + { + $cookie->iso_code_country = strtoupper($record->country_code); + $hasBeenSet = true; + } + } + + if (isset($cookie->iso_code_country) AND (int)($id_country = Country::getByIso(strtoupper($cookie->iso_code_country)))) + { + /* Update defaultCountry */ + $defaultCountry = new Country($id_country); + if (isset($hasBeenSet) AND $hasBeenSet) + $cookie->id_currency = (int)(Currency::getCurrencyInstance($defaultCountry->id_currency ? (int)$defaultCountry->id_currency : Configuration::get('PS_CURRENCY_DEFAULT'))->id); + } + elseif (Configuration::get('PS_GEOLOCATION_NA_BEHAVIOR') == _PS_GEOLOCATION_NO_CATALOG_) + $this->restrictedCountry = true; + elseif (Configuration::get('PS_GEOLOCATION_NA_BEHAVIOR') == _PS_GEOLOCATION_NO_ORDER_) + $smarty->assign(array( + 'restricted_country_mode' => true, + 'geolocation_country' => 'Undefined' + )); + } + /* If not exists we disabled the geolocation feature */ + else + Configuration::updateValue('PS_GEOLOCATION_ENABLED', 0); + } + } + + public function preProcess() + { + } + + public function setMedia() + { + global $cookie; + + Tools::addCSS(_THEME_CSS_DIR_.'global.css', 'all'); + Tools::addJS(array(_PS_JS_DIR_.'tools.js', _PS_JS_DIR_.'jquery/jquery-1.4.4.min.js', _PS_JS_DIR_.'jquery/jquery.easing.1.3.js')); + if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) + { + Tools::addJS(array( + _PS_JS_DIR_.'jquery/jquery-ui-1.8.10.custom.min.js', + _PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js', + _PS_JS_DIR_.'hookLiveEdit.js') + ); + Tools::addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css'); + } + } + + public function process() + { + } + + public function displayContent() + { + Tools::safePostVars(); + self::$smarty->assign('errors', $this->errors); + } + + public function displayHeader() + { + global $css_files, $js_files; + + if (!self::$initialized) + $this->init(); + + // P3P Policies (http://www.w3.org/TR/2002/REC-P3P-20020416/#compact_policies) + header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'); + + /* Hooks are volontary out the initialize array (need those variables already assigned) */ + self::$smarty->assign(array( + 'time' => time(), + 'img_update_time' => Configuration::get('PS_IMG_UPDATE_TIME'), + 'static_token' => Tools::getToken(false), + 'token' => Tools::getToken(), + 'logo_image_width' => Configuration::get('SHOP_LOGO_WIDTH'), + 'logo_image_height' => Configuration::get('SHOP_LOGO_HEIGHT'), + 'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_, + 'content_only' => (int)(Tools::getValue('content_only')) + )); + self::$smarty->assign(array( + 'HOOK_HEADER' => Module::hookExec('header'), + 'HOOK_TOP' => Module::hookExec('top'), + 'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn') + )); + + if ((Configuration::get('PS_CSS_THEME_CACHE') OR Configuration::get('PS_JS_THEME_CACHE')) AND is_writable(_PS_THEME_DIR_.'cache')) + { + // CSS compressor management + if (Configuration::get('PS_CSS_THEME_CACHE')) + Tools::cccCss(); + + //JS compressor management + if (Configuration::get('PS_JS_THEME_CACHE')) + Tools::cccJs(); + } + + self::$smarty->assign('css_files', $css_files); + self::$smarty->assign('js_files', array_unique($js_files)); + self::$smarty->display(_PS_THEME_DIR_.'header.tpl'); + } + + public function displayFooter() + { + global $cookie; + if (!self::$initialized) + $this->init(); + + self::$smarty->assign(array( + 'HOOK_RIGHT_COLUMN' => Module::hookExec('rightColumn', array('cart' => self::$cart)), + 'HOOK_FOOTER' => Module::hookExec('footer'), + 'content_only' => (int)(Tools::getValue('content_only')))); + self::$smarty->display(_PS_THEME_DIR_.'footer.tpl'); + //live edit + if (Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))) + { + self::$smarty->assign(array('ad' => $ad, 'live_edit' => true)); + self::$smarty->display(_PS_ALL_THEMES_DIR_.'live_edit.tpl'); + } + else + Tools::displayError(); + } + + public function productSort() + { + if (!self::$initialized) + $this->init(); + + $stock_management = (int)(Configuration::get('PS_STOCK_MANAGEMENT')) ? true : false; // no display quantity order if stock management disabled + $orderByValues = array(0 => 'name', 1 => 'price', 2 => 'date_add', 3 => 'date_upd', 4 => 'position', 5 => 'manufacturer_name', 6 => 'quantity'); + $orderWayValues = array(0 => 'asc', 1 => 'desc'); + $this->orderBy = Tools::strtolower(Tools::getValue('orderby', $orderByValues[(int)(Configuration::get('PS_PRODUCTS_ORDER_BY'))])); + $this->orderWay = Tools::strtolower(Tools::getValue('orderway', $orderWayValues[(int)(Configuration::get('PS_PRODUCTS_ORDER_WAY'))])); + if (!in_array($this->orderBy, $orderByValues)) + $this->orderBy = $orderByValues[0]; + if (!in_array($this->orderWay, $orderWayValues)) + $this->orderWay = $orderWayValues[0]; + + self::$smarty->assign(array( + 'orderby' => $this->orderBy, + 'orderway' => $this->orderWay, + 'orderbydefault' => $orderByValues[(int)(Configuration::get('PS_PRODUCTS_ORDER_BY'))], + 'orderwayposition' => $orderWayValues[(int)(Configuration::get('PS_PRODUCTS_ORDER_WAY'))], // Deprecated: orderwayposition + 'orderwaydefault' => $orderWayValues[(int)(Configuration::get('PS_PRODUCTS_ORDER_WAY'))], + 'stock_management' => (int)($stock_management))); + } + + public function pagination($nbProducts = 10) + { + if (!self::$initialized) + $this->init(); + + $nArray = (int)(Configuration::get('PS_PRODUCTS_PER_PAGE')) != 10 ? array((int)(Configuration::get('PS_PRODUCTS_PER_PAGE')), 10, 20, 50) : array(10, 20, 50); + asort($nArray); + $this->n = abs((int)(Tools::getValue('n', ((isset(self::$cookie->nb_item_per_page) AND self::$cookie->nb_item_per_page >= 10) ? self::$cookie->nb_item_per_page : (int)(Configuration::get('PS_PRODUCTS_PER_PAGE')))))); + $this->p = abs((int)(Tools::getValue('p', 1))); + $range = 2; /* how many pages around page selected */ + + if ($this->p < 0) + $this->p = 0; + + if (isset(self::$cookie->nb_item_per_page) AND $this->n != self::$cookie->nb_item_per_page AND in_array($this->n, $nArray)) + self::$cookie->nb_item_per_page = $this->n; + + if ($this->p > ($nbProducts / $this->n)) + $this->p = ceil($nbProducts / $this->n); + $pages_nb = ceil($nbProducts / (int)($this->n)); + + $start = (int)($this->p - $range); + if ($start < 1) + $start = 1; + $stop = (int)($this->p + $range); + if ($stop > $pages_nb) + $stop = (int)($pages_nb); + self::$smarty->assign('nb_products', $nbProducts); + $pagination_infos = array( + 'pages_nb' => (int)($pages_nb), + 'p' => (int)($this->p), + 'n' => (int)($this->n), + 'nArray' => $nArray, + 'range' => (int)($range), + 'start' => (int)($start), + 'stop' => (int)($stop) + ); + self::$smarty->assign($pagination_infos); + } + + public static function getCurrentCustomerGroups() + { + if (!isset(self::$cookie) || !self::$cookie->id_customer) + return array(); + if (!is_array(self::$currentCustomerGroups)) + { + self::$currentCustomerGroups = array(); + $result = Db::getInstance()->ExecuteS('SELECT id_group FROM '._DB_PREFIX_.'customer_group WHERE id_customer = '.(int)self::$cookie->id_customer); + foreach ($result as $row) + self::$currentCustomerGroups[] = $row['id_group']; + } + return self::$currentCustomerGroups; + } + + protected static function isInWhitelistForGeolocation() + { + $allowed = false; + $userIp = Tools::getRemoteAddr(); + $ips = explode(';', Configuration::get('PS_GEOLOCATION_WHITELIST')); + if (is_array($ips) AND sizeof($ips)) + foreach ($ips AS $ip) + if (!empty($ip) AND strpos($userIp, $ip) === 0) + $allowed = true; + return $allowed; + } +} + diff --git a/classes/Group.php b/classes/Group.php new file mode 100644 index 000000000..fb461b73e --- /dev/null +++ b/classes/Group.php @@ -0,0 +1,168 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class GroupCore extends ObjectModel +{ + public $id; + + /** @var string Lastname */ + public $name; + + /** @var string Reduction */ + public $reduction; + + /** @var int Price display method (tax inc/tax exc) */ + public $price_display_method; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $tables = array ('group'); + + protected $fieldsRequired = array('price_display_method'); + protected $fieldsSize = array(); + protected $fieldsValidate = array('reduction' => 'isFloat', 'price_display_method' => 'isPriceDisplayMethod'); + + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'group'; + protected $identifier = 'id_group'; + + protected static $_cacheReduction = array(); + protected static $_groupPriceDisplayMethod = array(); + + protected $webserviceParameters = array(); + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_group'] = (int)($this->id); + $fields['reduction'] = (float)($this->reduction); + $fields['price_display_method'] = (int)($this->price_display_method); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + + return $fields; + } + + public function getTranslationsFieldsChild() + { + if (!parent::validateFieldsLang()) + return false; + return parent::getTranslationsFields(array('name')); + } + + static public function getGroups($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT g.`id_group`, g.`reduction`, g.`price_display_method`, gl.`name` + FROM `'._DB_PREFIX_.'group` g + LEFT JOIN `'._DB_PREFIX_.'group_lang` AS gl ON (g.`id_group` = gl.`id_group` AND gl.`id_lang` = '.(int)($id_lang).') + ORDER BY g.`id_group` ASC'); + } + + public function getCustomers() + { + return Db::getInstance()->ExecuteS(' + SELECT cg.`id_customer`, c.* + FROM `'._DB_PREFIX_.'customer_group` cg + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (cg.`id_customer` = c.`id_customer`) + WHERE cg.`id_group` = '.(int)($this->id).' + AND c.`deleted` != 1 + ORDER BY cg.`id_customer` ASC'); + } + + static public function getReduction($id_customer = NULL) + { + if ($id_customer === NULL) + $id_customer = 0; + if (!isset(self::$_cacheReduction['customer'][$id_customer])) + { + if ($id_customer) + $customer = new Customer((int)($id_customer)); + self::$_cacheReduction['customer'][$id_customer] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `reduction` + FROM `'._DB_PREFIX_.'group` + WHERE `id_group` = '.((isset($customer) AND Validate::isLoadedObject($customer)) ? (int)($customer->id_default_group) : 1)); + } + return self::$_cacheReduction['customer'][$id_customer]; + } + + public static function getReductionByIdGroup($id_group) + { + if (!isset(self::$_cacheReduction['group'][$id_group])) + { + self::$_cacheReduction['group'][$id_group] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `reduction` + FROM `'._DB_PREFIX_.'group` + WHERE `id_group` = '.$id_group); + } + return self::$_cacheReduction['group'][$id_group]; + } + + static public function getPriceDisplayMethod($id_group) + { + if (!isset(self::$_groupPriceDisplayMethod[$id_group])) + self::$_groupPriceDisplayMethod[$id_group] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `price_display_method` + FROM `'._DB_PREFIX_.'group` + WHERE `id_group` = '.(int)($id_group)); + return self::$_groupPriceDisplayMethod[$id_group]; + } + + static public function getDefaultPriceDisplayMethod() + { + return self::getPriceDisplayMethod(1); + } + + public function add($autodate = true, $nullValues = false) + { + return parent::add() && Category::setNewGroupForHome((int)($this->id)); + } + + public function delete() + { + if ($this->id == _PS_DEFAULT_CUSTOMER_GROUP_) + return false; + if (parent::delete()) + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customer_group` WHERE `id_group` = '.(int)($this->id)); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_group` WHERE `id_group` = '.(int)($this->id)); + Discount::deleteByIdGroup((int)($this->id)); + return true; + } + return false; + } +} + + diff --git a/classes/GroupReduction.php b/classes/GroupReduction.php new file mode 100644 index 000000000..c36e86a4c --- /dev/null +++ b/classes/GroupReduction.php @@ -0,0 +1,108 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class GroupReductionCore extends ObjectModel +{ + public $id_group; + public $id_category; + public $reduction; + + protected $fieldsRequired = array('id_group', 'id_category', 'reduction'); + protected $fieldsValidate = array('id_group' => 'isUnsignedId', 'id_category' => 'isUnsignedId', 'reduction' => 'isPrice'); + + protected $table = 'group_reduction'; + protected $identifier = 'id_group_reduction'; + + protected static $reductionCache = array(); + + public function getFields() + { + parent::validateFields(); + $fields['id_group'] = (int)($this->id_group); + $fields['id_category'] = (int)($this->id_category); + $fields['reduction'] = (float)($this->reduction); + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + return (parent::add($autodate, $nullValues) AND $this->_setCache()); + } + + public function update($nullValues = false) + { + return (parent::update($nullValues) AND $this->_clearCache() AND $this->_setCache()); + } + + public function delete() + { + return $this->_clearCache() AND parent::delete(); + } + + protected function _clearCache() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_group_reduction_cache` WHERE `id_group` = '.(int)($this->id_group)); + } + + protected function _setCache() + { + $resource = Db::getInstance()->ExecuteS(' + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_product` cp + INNER JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = cp.`id_product`) + WHERE cp.`id_category` = '.(int)($this->id_category) + , false); + $query = 'INSERT INTO `'._DB_PREFIX_.'product_group_reduction_cache` (`id_product`, `id_group`, `reduction`) VALUES '; + while ($row = Db::getInstance()->nextRow($resource)) + $query .= '('.(int)($row['id_product']).', '.(int)($this->id_group).', '.(float)($this->reduction).'), '; + return Db::getInstance()->Execute(rtrim($query, ', ')); + } + + static public function getGroupReductions($id_group, $id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT gr.`id_group_reduction`, gr.`id_group`, gr.`id_category`, gr.`reduction`, cl.`name` AS category_name + FROM `'._DB_PREFIX_.'group_reduction` gr + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = gr.`id_category` AND cl.`id_lang` = '.(int)($id_lang).') + WHERE `id_group` = '.(int)($id_group) + ); + } + + static public function getValueForProduct($id_product, $id_group) + { + if (!isset(self::$reductionCache[$id_product.'-'.$id_group])) + self::$reductionCache[$id_product.'-'.$id_group] = Db::getInstance()->getValue('SELECT `reduction` FROM `'._DB_PREFIX_.'product_group_reduction_cache` WHERE `id_product` = '.(int)($id_product).' AND `id_group` = '.(int)($id_group)); + return self::$reductionCache[$id_product.'-'.$id_group]; + } + + static public function doesExist($id_group, $id_category) + { + return (bool)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `id_group` FROM `'._DB_PREFIX_.'group_reduction` WHERE `id_group` = '.(int)($id_group).' AND `id_category` = '.(int)($id_category)); + } +} + + diff --git a/classes/Guest.php b/classes/Guest.php new file mode 100644 index 000000000..d1ad33882 --- /dev/null +++ b/classes/Guest.php @@ -0,0 +1,210 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class GuestCore extends ObjectModel +{ + public $id_operating_system; + public $id_web_browser; + public $id_customer; + public $javascript; + public $screen_resolution_x; + public $screen_resolution_y; + public $screen_color; + public $sun_java; + public $adobe_flash; + public $adobe_director; + public $apple_quicktime; + public $real_player; + public $windows_media; + public $accept_language; + + protected $fieldsSize = array('accept_language' => 8); + protected $fieldsValidate = array( + 'id_operating_system' => 'isUnsignedId', + 'id_web_browser' => 'isUnsignedId', + 'id_customer' => 'isUnsignedId', + 'javascript' => 'isBool', + 'screen_resolution_x' => 'isInt', + 'screen_resolution_y' => 'isInt', + 'screen_color' => 'isInt', + 'sun_java' => 'isBool', + 'adobe_flash' => 'isBool', + 'adobe_director' => 'isBool', + 'apple_quicktime' => 'isBool', + 'real_player' => 'isBool', + 'windows_media' => 'isBool', + 'accept_language' => 'isGenericName' + ); + + protected $table = 'guest'; + protected $identifier = 'id_guest'; + + + protected $webserviceParameters = array( + 'fields' => array( + 'id_customer' => array('xlink_resource' => 'customers'), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_operating_system'] = (int)($this->id_operating_system); + $fields['id_web_browser'] = (int)($this->id_web_browser); + $fields['id_customer'] = (int)($this->id_customer); + $fields['javascript'] = (int)($this->javascript); + $fields['screen_resolution_x'] = (int)($this->screen_resolution_x); + $fields['screen_resolution_y'] = (int)($this->screen_resolution_y); + $fields['screen_color'] = (int)($this->screen_color); + $fields['sun_java'] = (int)($this->sun_java); + $fields['adobe_flash'] = (int)($this->adobe_flash); + $fields['adobe_director'] = (int)($this->adobe_director); + $fields['apple_quicktime'] = (int)($this->apple_quicktime); + $fields['real_player'] = (int)($this->real_player); + $fields['windows_media'] = (int)($this->windows_media); + $fields['accept_language'] = pSQL($this->accept_language); + + return $fields; + } + + function userAgent() + { + $userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; + $acceptLanguage = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : ''; + $this->id_operating_system = $this->getOs($userAgent); + $this->id_web_browser = $this->getBrowser($userAgent); + $this->accept_language = $this->getLanguage($acceptLanguage); + } + + protected function getLanguage($acceptLanguage) + { + // $langsArray is filled with all the languages accepted, ordered by priority + $langsArray = array(); + preg_match_all('/([a-z]{2}(-[a-z]{2})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/', $acceptLanguage, $array); + if (count($array[1])) + { + $langsArray = array_combine($array[1], $array[4]); + foreach ($langsArray as $lang => $val) + if ($val === '') + $langsArray[$lang] = 1; + arsort($langsArray, SORT_NUMERIC); + } + + // Only the first language is returned + return (sizeof($langsArray) ? key($langsArray) : ''); + } + + protected function getBrowser($userAgent) + { + $browserArray = array( + 'Google Chrome' => 'Chrome/', + 'Safari' => 'Safari', + 'Firefox 3.x' => 'Firefox/3', + 'Firefox 2.x' => 'Firefox/2', + 'Opera' => 'Opera', + 'IE 8.x' => 'MSIE 8', + 'IE 7.x' => 'MSIE 7', + 'IE 6.x' => 'MSIE 6' + ); + foreach ($browserArray as $k => $value) + if (strstr($userAgent, $value)) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_web_browser` + FROM `'._DB_PREFIX_.'web_browser` wb + WHERE wb.`name` = \''.pSQL($k).'\''); + + return $result['id_web_browser']; + } + return NULL; + } + + protected function getOs($userAgent) + { + $osArray = array( + 'Windows Vista' => 'Windows NT 6', + 'Windows XP' => 'Windows NT 5', + 'MacOsX' => 'Mac OS X', + 'Linux' => 'X11' + ); + foreach ($osArray as $k => $value) + if (strstr($userAgent, $value)) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_operating_system` + FROM `'._DB_PREFIX_.'operating_system` os + WHERE os.`name` = \''.pSQL($k).'\''); + + return $result['id_operating_system']; + } + return NULL; + } + + public static function getFromCustomer($id_customer) + { + if (!Validate::isUnsignedId($id_customer)) + return false; + $result = Db::getInstance()->getRow(' + SELECT `id_guest` + FROM `'._DB_PREFIX_.'guest` + WHERE `id_customer` = '.(int)($id_customer)); + return $result['id_guest']; + } + + public function mergeWithCustomer($id_guest, $id_customer) + { + // Since the guests are merged, the guest id in the connections table must be changed too + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'connections` c + SET c.`id_guest` = '.(int)($id_guest).' + WHERE c.`id_guest` = '.(int)($this->id)); + + // The current guest is removed from the database + $this->delete(); + + // $this is still filled with values, so it's id is changed for the old guest + $this->id = (int)($id_guest); + $this->id_customer = (int)($id_customer); + + // $this is now the old guest but filled with the most up to date values + $this->update(); + } + + public static function setNewGuest($cookie) + { + $guest = new Guest(isset($cookie->id_customer) ? Guest::getFromCustomer((int)($cookie->id_customer)) : NULL); + $guest->userAgent(); + if ($guest->id_operating_system OR $guest->id_web_browser) + { + $guest->save(); + $cookie->id_guest = (int)($guest->id); + } + } +} + + diff --git a/classes/HelpAccess.php b/classes/HelpAccess.php new file mode 100644 index 000000000..b0d63b12e --- /dev/null +++ b/classes/HelpAccess.php @@ -0,0 +1,117 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + + +class HelpAccessCore +{ + const URL = 'http://help.prestashop.com'; + + protected static $_images = array(0 => 'none', + 1 => 'help2.png', + 2 => 'help-new.png'); + + public static function trackClick($label, $version) + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'help_access` (`label`, `version`) VALUES (\''.pSQL($label).'\',\''.pSQL($version).'\') + ON DUPLICATE KEY UPDATE `version` = \''.pSQL($version).'\' + '); + } + + public static function getVersion($label) + { + return Db::getInstance()->getValue(' + SELECT `version` FROM `'._DB_PREFIX_.'help_access` + WHERE `label` = \''.pSQL($label).'\' + '); + } + + public static function retrieveInfos($label, $iso_lang, $country, $version) + { + $image = self::$_images[0]; + $tooltip = ''; + $url = HelpAccess::URL.'/documentation/renderIcon?label='.$label.'&iso_lang='.$iso_lang.'&country='.$country.'&version='.$version; + + $ctx = stream_context_create(array( + 'http' => array( + 'timeout' => 10 + ) + )); + + $res = @file_get_contents($url, 0, $ctx); + + $infos = preg_split('/\|/', $res); + if (sizeof($infos) > 0) + { + $version = trim($infos[0]); + if (!empty($version)) + { + $image = self::$_images[1]; + + if (sizeof($infos) > 1) + $tooltip = trim('|'.$infos[1]); + } + } + + $last_version = HelpAccess::getVersion($label); + + if (!empty($version) && $version != $last_version) + $image = self::$_images[2]; + + return array('version' => $version, 'image' => $image, 'tooltip' => $tooltip); + } + + public static function displayHelp($label, $iso_lang, $country, $ps_version) + { + $infos = HelpAccess::retrieveInfos($label, $iso_lang, $country, $ps_version); + if (array_key_exists('image', $infos) && $infos['image'] != 'none') + { + echo ' + + '.Tools::displayError('HELP').' + + + '; + + + if (!empty($infos['tooltip'])) + echo ' '; + } + } +} + diff --git a/classes/Hook.php b/classes/Hook.php new file mode 100644 index 000000000..8c4ae44b4 --- /dev/null +++ b/classes/Hook.php @@ -0,0 +1,220 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class HookCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 32); + protected $fieldsValidate = array('name' => 'isHookName'); + + protected $table = 'hook'; + protected $identifier = 'id_hook'; + + public function getFields() + { + parent::validateFields(); + $fields['name'] = pSQL($this->name); + return $fields; + } + + /** + * Return hook ID from name + * + * @param string $hookName Hook name + * @return integer Hook ID + */ + static public function get($hookName) + { + if (!Validate::isHookName($hookName)) + die(Tools::displayError()); + + $result = Db::getInstance()->getRow(' + SELECT `id_hook`, `name` + FROM `'._DB_PREFIX_.'hook` + WHERE `name` = \''.pSQL($hookName).'\''); + + return ($result ? $result['id_hook'] : false); + } + + static public function getHooks($position = false) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'hook` h + '.($position ? 'WHERE h.`position` = 1' : '')); + } + + static public function getModulesFromHook($id_hook) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'module` m + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON (hm.id_module = m.id_module) + WHERE hm.id_hook = '.(int)($id_hook)); + } + + static public function getModuleFromHook($id_hook, $id_module) + { + return Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'module` m + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON (hm.id_module = m.id_module) + WHERE hm.id_hook = '.(int)($id_hook).' AND m.id_module = '.(int)($id_module)); + } + + static public function newOrder($cart, $order, $customer, $currency, $orderStatus) + { + return Module::hookExec('newOrder', array( + 'cart' => $cart, + 'order' => $order, + 'customer' => $customer, + 'currency' => $currency, + 'orderStatus' => $orderStatus)); + } + + static public function updateOrderStatus($newOrderStatusId, $id_order) + { + $order = new Order((int)($id_order)); + $newOS = new OrderState((int)($newOrderStatusId), $order->id_lang); + + $return = ((int)($newOS->id) == _PS_OS_PAYMENT_) ? Module::hookExec('paymentConfirm', array('id_order' => (int)($order->id))) : true; + $return = Module::hookExec('updateOrderStatus', array('newOrderStatus' => $newOS, 'id_order' => (int)($order->id))) AND $return; + return $return; + } + + static public function postUpdateOrderStatus($newOrderStatusId, $id_order) + { + $order = new Order((int)($id_order)); + $newOS = new OrderState((int)($newOrderStatusId), $order->id_lang); + $return = Module::hookExec('postUpdateOrderStatus', array('newOrderStatus' => $newOS, 'id_order' => (int)($order->id))); + return $return; + } + + static public function updateQuantity($product, $order) + { + return Module::hookExec('updateQuantity', array('product' => $product, 'order' => $order)); + } + + static public function productFooter($product, $category) + { + return Module::hookExec('productFooter', array('product' => $product, 'category' => $category)); + } + + static public function productOutOfStock($product) + { + return Module::hookExec('productOutOfStock', array('product' => $product)); + } + + static public function addProduct($product) + { + return Module::hookExec('addProduct', array('product' => $product)); + } + + static public function updateProduct($product) + { + return Module::hookExec('updateProduct', array('product' => $product)); + } + + static public function deleteProduct($product) + { + return Module::hookExec('deleteProduct', array('product' => $product)); + } + + static public function updateProductAttribute($id_product_attribute) + { + return Module::hookExec('updateProductAttribute', array('id_product_attribute' => $id_product_attribute)); + } + + static public function orderConfirmation($id_order) + { + if (Validate::isUnsignedId($id_order)) + { + $params = array(); + $order = new Order((int)$id_order); + $currency = new Currency((int)$order->id_currency); + + if (Validate::isLoadedObject($order)) + { + $params['total_to_pay'] = $order->total_paid; + $params['currency'] = $currency->sign; + $params['objOrder'] = $order; + $params['currencyObj'] = $currency; + + return Module::hookExec('orderConfirmation', $params); + } + } + return false; + } + + static public function paymentReturn($id_order, $id_module) + { + if (Validate::isUnsignedId($id_order) AND Validate::isUnsignedId($id_module)) + { + $params = array(); + $order = new Order((int)($id_order)); + $currency = new Currency((int)($order->id_currency)); + + if (Validate::isLoadedObject($order)) + { + $params['total_to_pay'] = $order->total_paid; + $params['currency'] = $currency->sign; + $params['objOrder'] = $order; + $params['currencyObj'] = $currency; + + return Module::hookExec('paymentReturn', $params, (int)($id_module)); + } + } + return false; + } + + static public function PDFInvoice($pdf, $id_order) + { + if (!is_object($pdf) OR !Validate::isUnsignedId($id_order)) + return false; + return Module::hookExec('PDFInvoice', array('pdf' => $pdf, 'id_order' => $id_order)); + } + + static public function backBeforePayment($module) + { + $params['module'] = strval($module); + if (!$params['module']) + return false; + return Module::hookExec('backBeforePayment', $params); + } + + static public function updateCarrier($id_carrier, $carrier) + { + if (!Validate::isUnsignedId($id_carrier) OR !is_object($carrier)) + return false; + return Module::hookExec('updateCarrier', array('id_carrier' => $id_carrier, 'carrier' => $carrier)); + } +} + + diff --git a/classes/Image.php b/classes/Image.php new file mode 100644 index 000000000..e8d8a5c92 --- /dev/null +++ b/classes/Image.php @@ -0,0 +1,301 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ImageCore extends ObjectModel +{ + public $id; + + /** @var integer Image ID */ + public $id_image; + + /** @var integer Product ID */ + public $id_product; + + /** @var string HTML title and alt attributes */ + public $legend; + + /** @var integer Position used to order images of the same product */ + public $position; + + /** @var boolean Image is cover */ + public $cover; + + protected $tables = array ('image', 'image_lang'); + + protected $fieldsRequired = array('id_product'); + protected $fieldsValidate = array('id_product' => 'isUnsignedId', 'position' => 'isUnsignedInt', 'cover' => 'isBool'); + protected $fieldsRequiredLang = array('legend'); + protected $fieldsSizeLang = array('legend' => 128); + protected $fieldsValidateLang = array('legend' => 'isGenericName'); + + protected $table = 'image'; + protected $identifier = 'id_image'; + + protected static $_cacheGetSize = array(); + + public function getFields() + { + parent::validateFields(); + $fields['id_product'] = (int)($this->id_product); + $fields['position'] = (int)($this->position); + $fields['cover'] = (int)($this->cover); + return $fields; + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('legend')); + } + + public function delete() + { + parent::delete(); + $result = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($this->id_product).' + ORDER BY `position`'); + $i = 1; + + foreach ($result as $row) + { + $row['position'] = $i++; + Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table, $row, 'UPDATE', '`id_image` = '.(int)($row['id_image']), 1); + } + } + + /** + * Return available images for a product + * + * @param integer $id_lang Language ID + * @param integer $id_product Product ID + * @return array Images + */ + static public function getImages($id_lang, $id_product) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'image` i + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON i.`id_image` = il.`id_image` + WHERE i.`id_product` = '.(int)($id_product).' + AND il.`id_lang` = '.(int)($id_lang).' + ORDER BY `position` ASC'); + } + + /** + * Return Images + * + * @return array Images + */ + static public function getAllImages() + { + return Db::getInstance()->ExecuteS(' + SELECT `id_image`, `id_product` + FROM `'._DB_PREFIX_.'image` + ORDER BY `id_image` ASC'); + } + + /** + * Return number of images for a product + * + * @param integer $id_product Product ID + * @return integer number of images + */ + static public function getImagesTotal($id_product) + { + $result = Db::getInstance()->getRow(' + SELECT COUNT(`id_image`) AS total + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($id_product)); + return $result['total']; + } + + /** + * Return highest position of images for a product + * + * @param integer $id_product Product ID + * @return integer highest position of images + */ + static public function getHighestPosition($id_product) + { + $result = Db::getInstance()->getRow(' + SELECT MAX(`position`) AS max + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($id_product)); + return $result['max']; + } + + /** + * Delete product cover + * + * @param integer $id_product Product ID + * @return boolean result + */ + static public function deleteCover($id_product) + { + if (!Validate::isUnsignedId($id_product)) + die(Tools::displayError()); + + if (file_exists(_PS_TMP_IMG_DIR_.'product_'.$id_product.'.jpg')) + unlink(_PS_TMP_IMG_DIR_.'product_'.$id_product.'.jpg'); + return Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'image` + SET `cover` = 0 + WHERE `id_product` = '.(int)($id_product)); + } + + /** + *Get product cover + * + * @param integer $id_product Product ID + * @return boolean result + */ + static public function getCover($id_product) + { + return Db::getInstance()->getRow(' + SELECT * FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($id_product).' + AND `cover`= 1'); + } + + /** + * Copy images from a product to another + * + * @param integer $id_product_old Source product ID + * @param boolean $id_product_new Destination product ID + */ + static public function duplicateProductImages($id_product_old, $id_product_new, $combinationImages) + { + $imagesTypes = ImageType::getImagesTypes('products'); + $result = Db::getInstance()->ExecuteS(' + SELECT `id_image` + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($id_product_old)); + foreach ($result as $row) + { + $image = new Image($row['id_image']); + $saved_id = $image->id_image; + unset($image->id); + unset($image->id_image); + $image->id_product = (int)($id_product_new); + if ($image->add()) + { + foreach ($imagesTypes AS $k => $imageType) + if (file_exists(_PS_PROD_IMG_DIR_.(int)($id_product_old).'-'.(int)($row['id_image']).'-'.$imageType['name'].'.jpg')) + copy(_PS_PROD_IMG_DIR_.(int)($id_product_old).'-'.(int)($row['id_image']).'-'.$imageType['name'].'.jpg', _PS_PROD_IMG_DIR_. + (int)($id_product_new).'-'.(int)($image->id).'-'.$imageType['name'].'.jpg'); + if (file_exists(_PS_PROD_IMG_DIR_.(int)($id_product_old).'-'.(int)($row['id_image']).'.jpg')) + copy(_PS_PROD_IMG_DIR_.(int)($id_product_old).'-'.(int)($row['id_image']).'.jpg', + _PS_PROD_IMG_DIR_.(int)($id_product_new).'-'.(int)($image->id).'.jpg'); + self::replaceAttributeImageAssociationId($combinationImages, (int)($saved_id), (int)($image->id)); + } + else + return false; + } + return self::duplicateAttributeImageAssociations($combinationImages); + } + + static protected function replaceAttributeImageAssociationId(&$combinationImages, $saved_id, $id_image) + { + if (!isset($combinationImages['new']) OR !is_array($combinationImages['new'])) + return ; + foreach ($combinationImages['new'] AS $id_product_attribute => $imageIds) + foreach ($imageIds AS $key => $imageId) + if ((int)($imageId) == (int)($saved_id)) + $combinationImages['new'][$id_product_attribute][$key] = (int)($id_image); + } + + /** + * Duplicate product attribute image associations + * @param integer $id_product_attribute_old + * @return boolean + */ + static public function duplicateAttributeImageAssociations($combinationImages) + { + if (!isset($combinationImages['new']) OR !is_array($combinationImages['new'])) + return true; + $query = 'INSERT INTO `'._DB_PREFIX_.'product_attribute_image` (`id_product_attribute`, `id_image`) VALUES '; + foreach ($combinationImages['new'] AS $id_product_attribute => $imageIds) + foreach ($imageIds AS $imageId) + $query .= '('.(int)($id_product_attribute).', '.(int)($imageId).'), '; + $query = rtrim($query, ', '); + return DB::getInstance()->Execute($query); + } + + /** + * Reposition image + * + * @param integer $position Position + * @param boolean $direction Direction + */ + public function positionImage($position, $direction) + { + $position = (int)($position); + $direction = (int)($direction); + + // temporary position + $high_position = Image::getHighestPosition($this->id_product) + 1; + + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'image` + SET `position` = '.(int)($high_position).' + WHERE `id_product` = '.(int)($this->id_product).' + AND `position` = '.($direction ? $position - 1 : $position + 1)); + + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'image` + SET `position` = `position`'.($direction ? '-1' : '+1').' + WHERE `id_image` = '.(int)($this->id)); + + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'image` + SET `position` = '.$this->position.' + WHERE `id_product` = '.(int)($this->id_product).' + AND `position` = '.(int)($high_position)); + } + + static public function getSize($type) + { + if (!isset(self::$_cacheGetSize[$type]) OR self::$_cacheGetSize[$type] === NULL) + self::$_cacheGetSize[$type] = Db::getInstance()->getRow('SELECT `width`, `height` FROM '._DB_PREFIX_.'image_type WHERE `name` = \''.pSQL($type).'\''); + return self::$_cacheGetSize[$type]; + } + + /** + * Clear all images in tmp dir + */ + static public function clearTmpDir() + { + foreach (scandir(_PS_TMP_IMG_DIR_) AS $d) + if (preg_match('/(.*)\.jpg$/', $d)) + unlink(_PS_TMP_IMG_DIR_.$d); + } + +} + + diff --git a/classes/ImageType.php b/classes/ImageType.php new file mode 100644 index 000000000..35c2ab554 --- /dev/null +++ b/classes/ImageType.php @@ -0,0 +1,149 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ImageTypeCore extends ObjectModel +{ + public $id; + + /** @var string Name */ + public $name; + + /** @var integer Width */ + public $width; + + /** @var integer Height */ + public $height; + + /** @var boolean Apply to products */ + public $products; + + /** @var integer Apply to categories */ + public $categories; + + /** @var integer Apply to manufacturers */ + public $manufacturers; + + /** @var integer Apply to suppliers */ + public $suppliers; + + /** @var integer Apply to scenes */ + public $scenes; + + /** @var integer Apply to store */ + public $stores; + + protected $fieldsRequired = array('name', 'width', 'height'); + protected $fieldsValidate = array( + 'name' => 'isImageTypeName', + 'width' => 'isImageSize', + 'height' => 'isImageSize', + 'categories' => 'isBool', + 'products' => 'isBool', + 'manufacturers' => 'isBool', + 'suppliers' => 'isBool', + 'scenes' => 'isBool', + 'stores' => 'isBool' + ); + protected $fieldsSize = array('name' => 16); + + protected $table = 'image_type'; + protected $identifier = 'id_image_type'; + + /** + * @var array Image types cache + */ + protected static $images_types_cache = array(); + + protected $webserviceParameters = array(); + + public function getFields() + { + parent::validateFields(); + $fields['name'] = pSQL($this->name); + $fields['width'] = (int)($this->width); + $fields['height'] = (int)($this->height); + $fields['products'] = (int)($this->products); + $fields['categories'] = (int)($this->categories); + $fields['manufacturers'] = (int)($this->manufacturers); + $fields['suppliers'] = (int)($this->suppliers); + $fields['scenes'] = (int)($this->scenes); + $fields['stores'] = (int)($this->store); + return $fields; + } + + /** + * Returns image type definitions + * + * @param string|null Image type + * @return array Image type definitions + */ + static public function getImagesTypes($type = NULL) + { + if (!isset(self::$images_types_cache[$type])) + { + if (!empty($type)) + $where = 'WHERE ' . pSQL($type) . ' = 1 '; + else + $where = ''; + + $query = 'SELECT * FROM `'._DB_PREFIX_.'image_type`'.$where.'ORDER BY `name` ASC'; + self::$images_types_cache[$type] = Db::getInstance()->ExecuteS($query); + } + + return self::$images_types_cache[$type]; + } + + /** + * Check if type already is already registered in database + * + * @param string $typeName Name + * @return integer Number of results found + */ + static public function typeAlreadyExists($typeName) + { + if (!Validate::isImageTypeName($typeName)) + die(Tools::displayError()); + + $result = Db::getInstance()->ExecuteS(' + SELECT `id_image_type` + FROM `'._DB_PREFIX_.'image_type` + WHERE `name` = \''.pSQL($typeName).'\''); + + return Db::getInstance()->NumRows(); + } + + /** + * Finds image type definition by name and type + * @param string $name + * @param string $type + */ + static public function getByNameNType($name, $type) + { + return Db::getInstance()->getRow('SELECT `id_image_type`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes` FROM `'._DB_PREFIX_.'image_type` WHERE `name` = \''.pSQL($name).'\' AND `'.pSQL($type).'` = 1'); + } + +} diff --git a/classes/ImportModule.php b/classes/ImportModule.php new file mode 100644 index 000000000..a3c04ad5b --- /dev/null +++ b/classes/ImportModule.php @@ -0,0 +1,93 @@ + + * @copyright PrestaShop + * @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0 + * @version 1.4 + * + */ + +abstract class ImportModuleCore extends Module +{ + protected $_link = NULL; + + public $server; + + public $user; + + public $passwd; + + public $database; + + /** @var string Prefix database */ + public $prefix; + + + public function __destruct() + { + if($this->_link) + @mysql_close($this->_link); + } + + protected function initDatabaseConnection() + { + if ($this->_link != NULL) + return $this->_link; + if ($this->_link = mysql_connect($this->server, $this->user, $this->passwd, true)) + { + if(!mysql_select_db($this->database, $this->_link)) + die(Tools::displayError('The database selection cannot be made.')); + if (!mysql_query('SET NAMES \'utf8\'', $this->_link)) + die(Tools::displayError('PrestaShop Fatal error: no utf-8 support. Please check your server configuration.')); + } + else + die(Tools::displayError('Link to database cannot be established.')); + return $this->_link; + } + + public function ExecuteS($query) + { + $this->initDatabaseConnection(); + $result = mysql_query($query, $this->_link); + $resultArray = array(); + if ($result !== true) + while ($row = mysql_fetch_assoc($result)) + $resultArray[] = $row; + return $resultArray; + } + + public function Execute($query) + { + $this->initDatabaseConnection(); + return mysql_query($query, $this->_link); + } + + public function getValue($query) + { + $this->initDatabaseConnection(); + $result = $this->ExecuteS($query); + if (!sizeof($result)) + return 0; + else + return array_shift($result[0]); + } + + public static function getImportModulesOnDisk () + { + $modules = Module::getModulesOnDisk(); + foreach ($modules as $key => $module) + if(get_parent_class($module) != 'ImportModule') + unset($modules[$key]); + return $modules; + } + + abstract public function getDefaultIdLang(); + +} + +?> diff --git a/classes/Language.php b/classes/Language.php new file mode 100644 index 000000000..4e13a1f80 --- /dev/null +++ b/classes/Language.php @@ -0,0 +1,605 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class LanguageCore extends ObjectModel +{ + public $id; + + /** @var string Name */ + public $name; + + /** @var string 2-letter iso code */ + public $iso_code; + + /** @var string 5-letter iso code */ + public $language_code; + + /** @var boolean Status */ + public $active = true; + + protected $fieldsRequired = array('name', 'iso_code'); + protected $fieldsSize = array('name' => 32, 'iso_code' => 2, 'language_code' => 5); + protected $fieldsValidate = array('name' => 'isGenericName', 'iso_code' => 'isLanguageIsoCode', 'language_code' => 'isLanguageCode', 'active' => 'isBool'); + + protected $table = 'lang'; + protected $identifier = 'id_lang'; + + /** @var array Languages cache */ + protected static $_checkedLangs; + protected static $_LANGUAGES; + protected static $countActiveLanguages; + + protected $webserviceParameters = array(); + + public function __construct($id = NULL, $id_lang = NULL) + { + parent::__construct($id); + } + + public function getFields() + { + parent::validateFields(); + $fields['name'] = pSQL($this->name); + $fields['iso_code'] = pSQL(strtolower($this->iso_code)); + $fields['language_code'] = pSQL(strtolower($this->language_code)); + if (empty($fields['language_code'])) + $fields['language_code'] = $fields['iso_code']; + $fields['active'] = (int)($this->active); + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + if (!parent::add($autodate)) + return false; + + $translationsFiles = array( + 'fields' => '_FIELDS', + 'errors' => '_ERRORS', + 'admin' => '_LANGADM', + 'pdf' => '_LANGPDF', + ); + if (!file_exists(_PS_TRANSLATIONS_DIR_.$this->iso_code)) + mkdir(_PS_TRANSLATIONS_DIR_.$this->iso_code); + foreach ($translationsFiles as $file => $var) + if (!file_exists(_PS_TRANSLATIONS_DIR_.$this->iso_code.'/'.$file.'.php')) + file_put_contents(_PS_TRANSLATIONS_DIR_.$this->iso_code.'/'.$file.'.php', ''); + + return ($this->loadUpdateSQL() AND Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + )); + } + + public function toggleStatus() + { + if (!parent::toggleStatus()) + return false; + + return (Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + )); + } + + public function checkFiles() + { + return self::checkFilesWithIsoCode($this->iso_code); + } + + + /** + * This functions checks if every files exists for the language $iso_code. + * Concerned files are theses located in translations/$iso_code/ + * and translations/mails/$iso_code . + * + * @param mixed $iso_code + * @returntrue if all files exists + */ + public static function checkFilesWithIsoCode($iso_code) + { + if (isset(self::$_checkedLangs[$iso_code]) AND self::$_checkedLangs[$iso_code]) + return true; + foreach (self::getFilesList($iso_code, _THEME_NAME_, false, false, false, true) as $key => $file) + if (!file_exists($key)) + return false; + self::$_checkedLangs[$iso_code] = true; + return true; + } + + public static function getFilesList($iso_from, $theme_from, $iso_to = false, $theme_to = false, $select = false, $check = false, $modules = false) + { + if (empty($iso_from)) + die(Tools::displayError()); + + $copy = ($iso_to AND $theme_to) ? true : false; + + $lPath_from = _PS_TRANSLATIONS_DIR_.(string)$iso_from.'/'; + $tPath_from = _PS_ROOT_DIR_.'/themes/'.(string)$theme_from.'/'; + $mPath_from = _PS_MAIL_DIR_.(string)$iso_from.'/'; + + if ($copy) + { + $lPath_to = _PS_TRANSLATIONS_DIR_.(string)$iso_to.'/'; + $tPath_to = _PS_ROOT_DIR_.'/themes/'.(string)$theme_to.'/'; + $mPath_to = _PS_MAIL_DIR_.(string)$iso_to.'/'; + } + + $lFiles = array('admin'.'.php', 'errors'.'.php', 'fields'.'.php', 'pdf'.'.php'); + $mFiles = array( + 'account.html', 'account.txt', + 'bankwire.html', 'bankwire.txt', + 'cheque.html', 'cheque.txt', + 'contact.html', 'contact.txt', + 'contact_form.html', 'contact_form.txt', + 'credit_slip.html', 'credit_slip.txt', + 'download_product.html', 'download_product.txt', + 'download-product.tpl', + 'employee_password.html', 'employee_password.txt', + 'forward_msg.html', 'forward_msg.txt', + 'guest_to_customer.html', 'guest_to_customer.txt', + 'in_transit.html', 'in_transit.txt', + 'newsletter.html', 'newsletter.txt', + 'order_canceled.html', 'order_canceled.txt', + 'order_conf.html', 'order_conf.txt', + 'order_customer_comment.html', 'order_customer_comment.txt', + 'order_merchant_comment.html', 'order_merchant_comment.txt', + 'order_return_state.html', 'order_return_state.txt', + 'outofstock.html', 'outofstock.txt', + 'password.html', 'password.txt', + 'password_query.html', 'password_query.txt', + 'payment.html', 'payment.txt', + 'payment_error.html', 'payment_error.txt', + 'preparation.html', 'preparation.txt', + 'refund.html', 'refund.txt', + 'reply_msg.html', 'reply_msg.txt', + 'shipped.html', 'shipped.txt', + 'test.html', 'test.txt', + 'voucher.html', 'voucher.txt', + ); + + $number = -1; + + $files = array(); + $files_tr = array(); + $files_theme = array(); + $files_mail = array(); + $files_modules = array(); + + + // When a copy is made from a theme in specific language + // to an other theme for the same language, + // it's avoid to copy Translations, Mails files + // and modules files which are not override by theme. + if (!$copy OR $iso_from != $iso_to) + { + // Translations files + if (!$check OR ($check AND (string)$iso_from != 'en')) + foreach ($lFiles as $file) + $files_tr[$lPath_from.$file] = ($copy ? $lPath_to.$file : ++$number); + if ($select == 'tr') + return $files_tr; + $files = array_merge($files, $files_tr); + + // Mail files + if (!$check OR ($check AND (string)$iso_from != 'en')) + $files_mail[$mPath_from.'lang.php'] = ($copy ? $mPath_to.'lang.php' : ++$number); + foreach ($mFiles as $file) + $files_mail[$mPath_from.$file] = ($copy ? $mPath_to.$file : ++$number); + if ($select == 'mail') + return $files_mail; + $files = array_merge($files, $files_mail); + + // Modules + if ($modules) + { + $modList = Module::getModulesDirOnDisk(); + foreach ($modList as $k => $mod) + { + $modDir = _PS_MODULE_DIR_.$mod; + // Lang file + if (file_exists($modDir.'/'.(string)$iso_from.'.php')) + $files_modules[$modDir.'/'.(string)$iso_from.'.php'] = ($copy ? $modDir.'/'.(string)$iso_to.'.php' : ++$number); + // Mails files + $modMailDirFrom = $modDir.'/mails/'.(string)$iso_from; + $modMailDirTo = $modDir.'/mails/'.(string)$iso_to; + if (file_exists($modMailDirFrom)) + { + $dirFiles = scandir($modMailDirFrom); + foreach ($dirFiles as $file) + if (file_exists($modMailDirFrom.'/'.$file) AND $file != '.' AND $file != '..' AND $file != '.svn') + $files_modules[$modMailDirFrom.'/'.$file] = ($copy ? $modMailDirTo.'/'.$file : ++$number); + } + } + if ($select == 'modules') + return $files_modules; + $files = array_merge($files, $files_modules); + } + } + else if ($select == 'mail' OR $select == 'tr') + { + return $files; + } + + // Theme files + if (!$check OR ($check AND (string)$iso_from != 'en')) + { + $files_theme[$tPath_from.'lang/'.(string)$iso_from.'.php'] = ($copy ? $tPath_to.'lang/'.(string)$iso_to.'.php' : ++$number); + $module_theme_files = (file_exists($tPath_from.'modules/') ? scandir($tPath_from.'modules/') : array()); + foreach ($module_theme_files as $module) + if ($module !== '.' AND $module != '..' AND $module !== '.svn' AND file_exists($tPath_from.'modules/'.$module.'/'.(string)$iso_from.'.php')) + $files_theme[$tPath_from.'modules/'.$module.'/'.(string)$iso_from.'.php'] = ($copy ? $tPath_to.'modules/'.$module.'/'.(string)$iso_to.'.php' : ++$number); + } + if ($select == 'theme') + return $files_theme; + $files = array_merge($files, $files_theme); + + // Return + return $files; + } + + public function loadUpdateSQL() + { + $tables = Db::getInstance()->ExecuteS('SHOW TABLES LIKE \''._DB_PREFIX_.'%_lang\' '); + $langTables = array(); + + foreach($tables as $table) + foreach($table as $t) + $langTables[] = $t; + + Db::getInstance()->Execute('SET @id_lang_default = (SELECT c.`value` FROM `'._DB_PREFIX_.'configuration` c WHERE c.`name` = \'PS_LANG_DEFAULT\' LIMIT 1)'); + foreach($langTables as $name) + { + $fields = ''; + $columns = Db::getInstance()->ExecuteS('SHOW COLUMNS FROM `'.$name.'`'); + foreach($columns as $column) + $fields .= $column['Field'].', '; + $fields = rtrim($fields, ', '); + $identifier = 'id_'.str_replace('_lang', '', str_replace(_DB_PREFIX_, '', $name)); + + $sql = 'INSERT IGNORE INTO `'.$name.'` ('.$fields.') (SELECT '; + $sql .= '`'.$identifier.'`, `id_lang`, '; + foreach($columns as $column) + if ($identifier != $column['Field'] and $column['Field'] != 'id_lang') + $sql .= '(SELECT `'.$column['Field'].'` FROM `'.$name.'` tl WHERE tl.`id_lang` = @id_lang_default AND tl.`'.$identifier.'` = `'.str_replace('_lang', '', $name).'`.`'.$identifier.'`), '; + $sql = rtrim($sql, ', '); + $sql .= ' FROM `'._DB_PREFIX_.'lang` CROSS JOIN `'.str_replace('_lang', '', $name).'`) ;'; + Db::getInstance()->Execute(pSQL($sql)); + } + } + + public static function recurseDeleteDir($dir) + { + if (!is_dir($dir)) + return false; + if ($handle = @opendir($dir)) + { + while (false !== ($file = readdir($handle))) + if ($file != '.' && $file != '..') + { + if (is_dir($dir.'/'.$file)) + self::recurseDeleteDir($dir.'/'.$file); + elseif (file_exists($dir.'/'.$file)) + @unlink($dir.'/'.$file); + } + closedir($handle); + } + rmdir($dir); + } + + public function delete() + { + if (empty($this->iso_code)) + $this->iso_code = self::getIsoById($this->id); + + // Database translations deletion + $result = Db::getInstance()->ExecuteS('SHOW TABLES FROM `'._DB_NAME_.'`'); + foreach ($result AS $row) + if (preg_match('/_lang/', $row['Tables_in_'._DB_NAME_])) + if (!Db::getInstance()->Execute('DELETE FROM `'.$row['Tables_in_'._DB_NAME_].'` WHERE `id_lang` = '.(int)($this->id))) + return false; + + // Delete tags + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'tag WHERE id_lang = '.(int)($this->id)); + + // Delete search words + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'search_word WHERE id_lang = '.(int)($this->id)); + + // Files deletion + foreach (self::getFilesList($this->iso_code, _THEME_NAME_, false, false, false, true, true) as $key => $file) + unlink($key); + $modList = scandir(_PS_MODULE_DIR_); + foreach ($modList as $k => $mod) + { + self::recurseDeleteDir(_PS_MODULE_DIR_.$mod.'/mails/'.$this->iso_code); + $files = @scandir(_PS_MODULE_DIR_.$mod.'/mails/'); + if (count($files) <= 2) + self::recurseDeleteDir(_PS_MODULE_DIR_.$mod.'/mails/'); + + if(file_exists(_PS_MODULE_DIR_.$mod.'/'.$this->iso_code.'.php')) + { + $return = unlink(_PS_MODULE_DIR_.$mod.'/'.$this->iso_code.'.php'); + $files = @scandir(_PS_MODULE_DIR_.$mod); + if (count($files) <= 2) + self::recurseDeleteDir(_PS_MODULE_DIR_.$mod); + } + } + + if (file_exists(_PS_MAIL_DIR_.$this->iso_code)) + self::recurseDeleteDir(_PS_MAIL_DIR_.$this->iso_code); + if (file_exists(_PS_TRANSLATIONS_DIR_.$this->iso_code)) + self::recurseDeleteDir(_PS_TRANSLATIONS_DIR_.$this->iso_code); + if (!parent::delete()) + return false; + + // delete images + $files_copy = array('/en.jpg', '/en-default-thickbox.jpg', '/en-default-home.jpg', '/en-default-large.jpg', '/en-default-medium.jpg', '/en-default-small.jpg', '/en-default-large_scene.jpg'); + $tos = array(_PS_CAT_IMG_DIR_, _PS_MANU_IMG_DIR_, _PS_PROD_IMG_DIR_, _PS_SUPP_IMG_DIR_); + foreach($tos AS $to) + foreach($files_copy AS $file) + { + $name = str_replace('/en', ''.$this->iso_code, $file); + + if (file_exists($to.$name)) + unlink($to.$name); + if (file_exists(dirname(__FILE__).'/../img/l/'.$this->id.'.jpg')) + unlink(dirname(__FILE__).'/../img/l/'.$this->id.'.jpg'); + } + return Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + } + + + public function deleteSelection($selection) + { + if (!is_array($selection) OR !Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + $result = true; + foreach ($selection AS $id) + { + $this->id = (int)($id); + $result = $result AND $this->delete(); + } + + Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + + return $result; + } + + /** + * Return available languages + * + * @param boolean $active Select only active languages + * @return array Languages + */ + public static function getLanguages($active = true) + { + if(!self::$_LANGUAGES) + self::loadLanguages(); + + foreach (self::$_LANGUAGES AS $language) + { + if ($active AND !$language['active']) + continue; + $languages[] = $language; + } + return $languages; + } + + public static function getLanguage($id_lang) + { + if (!array_key_exists((int)($id_lang), self::$_LANGUAGES)) + return false; + return self::$_LANGUAGES[(int)($id_lang)]; + } + + /** + * Return iso code from id + * + * @param integer $id_lang Language ID + * @return string Iso code + */ + public static function getIsoById($id_lang) + { + if (isset(self::$_LANGUAGES[(int)($id_lang)]['iso_code'])) + return self::$_LANGUAGES[(int)($id_lang)]['iso_code']; + return false; + } + + /** + * Return id from iso code + * + * @param string $iso_code Iso code + * @return integer Language ID + */ + public static function getIdByIso($iso_code) + { + if (!Validate::isLanguageIsoCode($iso_code)) + die(Tools::displayError('Fatal error : iso code is not correct : ').$iso_code); + + return Db::getInstance()->getValue('SELECT `id_lang` FROM `'._DB_PREFIX_.'lang` WHERE `iso_code` = \''.pSQL(strtolower($iso_code)).'\''); + } + + public static function getLanguageCodeByIso($iso_code) + { + if (!Validate::isLanguageIsoCode($iso_code)) + die(Tools::displayError('Fatal error : iso code is not correct : ').$iso_code); + + return Db::getInstance()->getValue('SELECT `language_code` FROM `'._DB_PREFIX_.'lang` WHERE `iso_code` = \''.pSQL(strtolower($iso_code)).'\''); + } + + /** + * Return array (id_lang, iso_code) + * + * @param string $iso_code Iso code + * @return array Language (id_lang, iso_code) + */ + public static function getIsoIds($active = true) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT `id_lang`, `iso_code` FROM `'._DB_PREFIX_.'lang` '.($active ? 'WHERE active = 1' : '')); + } + + public static function copyLanguageData($from, $to) + { + $result = Db::getInstance()->ExecuteS('SHOW TABLES FROM `'._DB_NAME_.'`'); + foreach ($result AS $row) + if (preg_match('/_lang/', $row['Tables_in_'._DB_NAME_]) AND $row['Tables_in_'._DB_NAME_] != _DB_PREFIX_.'lang') + { + $result2 = Db::getInstance()->ExecuteS('SELECT * FROM `'.$row['Tables_in_'._DB_NAME_].'` WHERE `id_lang` = '.(int)($from)); + if (!sizeof($result2)) + continue; + Db::getInstance()->Execute('DELETE FROM `'.$row['Tables_in_'._DB_NAME_].'` WHERE `id_lang` = '.(int)($to)); + $query = 'INSERT INTO `'.$row['Tables_in_'._DB_NAME_].'` VALUES '; + foreach ($result2 AS $row2) + { + $query .= '('; + $row2['id_lang'] = $to; + foreach ($row2 AS $field) + $query .= '\''.pSQL($field, true).'\','; + $query = rtrim($query, ',').'),'; + } + $query = rtrim($query, ','); + Db::getInstance()->Execute($query); + } + return true; + } + + /** + * Load all languages in memory for caching + */ + public static function loadLanguages() + { + self::$_LANGUAGES = array(); + + $result = Db::getInstance()->ExecuteS(' + SELECT `id_lang`, `name`, `iso_code`, `active` + FROM `'._DB_PREFIX_.'lang`'); + + foreach ($result AS $row) + self::$_LANGUAGES[(int)($row['id_lang'])] = array('id_lang' => (int)($row['id_lang']), 'name' => $row['name'], 'iso_code' => $row['iso_code'], 'active' => (int)($row['active'])); + } + + public function update($nullValues = false) + { + if (!parent::update($nullValues)) + return false; + + return Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + } + + public static function checkAndAddLanguage($iso_code) + { + if (Language::getIdByIso($iso_code)) + return true; + else + { + if(@fsockopen('www.prestashop.com', 80)) + { + $lang = new Language(); + $lang->iso_code = $iso_code; + $lang->active = true; + + if ($lang_pack = Tools::jsonDecode(Tools::file_get_contents('http://www.prestashop.com/download/lang_packs/get_language_pack.php?version='._PS_VERSION_.'&iso_lang='.$iso_code))) + { + if (isset($lang_pack->name) + && isset($lang_pack->version) + && isset($lang_pack->iso_code)) + $lang->name = $lang_pack->name; + } + if (!$lang->name OR !$lang->add()) + return false; + $insert_id = (int)($lang->id); + + if ($lang_pack) + { + $flag = Tools::file_get_contents('http://www.prestashop.com/download/lang_packs/flags/jpeg/'.$iso_code.'.jpg'); + if ($flag != NULL && !preg_match('//', $flag)) + { + $file = fopen(dirname(__FILE__).'/../img/l/'.$insert_id.'.jpg', 'w'); + if ($file) + { + fwrite($file, $flag); + fclose($file); + } + else + self::_copyNoneFlag($insert_id); + } + else + self::_copyNoneFlag($insert_id); + } + else + self::_copyNoneFlag($insert_id); + + $files_copy = array('/en.jpg', '/en-default-thickbox.jpg', '/en-default-home.jpg', '/en-default-large.jpg', '/en-default-medium.jpg', '/en-default-small.jpg', '/en-default-large_scene.jpg'); + $tos = array(_PS_CAT_IMG_DIR_, _PS_MANU_IMG_DIR_, _PS_PROD_IMG_DIR_, _PS_SUPP_IMG_DIR_); + foreach($tos AS $to) + foreach($files_copy AS $file) + { + $name = str_replace('/en', '/'.$iso_code, $file); + copy(dirname(__FILE__).'/../img/l'.$file, $to.$name); + } + return true; + } + else + return false; + } + } + + protected static function _copyNoneFlag($id) + { + return copy(dirname(__FILE__).'/../img/l/none.jpg', dirname(__FILE__).'/../img/l/'.$id.'.jpg'); + } + + public static function isInstalled($iso_code) + { + return Db::getInstance()->getValue('SELECT `id_lang` FROM `'._DB_PREFIX_.'lang` WHERE `iso_code` = "'.pSQL($iso_code).'"'); + } + + public static function countActiveLanguages() + { + if (!self::$countActiveLanguages) + self::$countActiveLanguages = Db::getInstance()->getValue('SELECT COUNT(*) FROM `'._DB_PREFIX_.'lang` WHERE `active` = 1'); + return self::$countActiveLanguages; + } +} + diff --git a/classes/Link.php b/classes/Link.php new file mode 100644 index 000000000..d9ec35a64 --- /dev/null +++ b/classes/Link.php @@ -0,0 +1,354 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class LinkCore +{ + /** @var boolean Rewriting activation */ + protected $allow; + protected $url; + public static $cache = array('page' => array()); + + /** + * Constructor (initialization only) + */ + public function __construct() + { + $this->allow = (int)Configuration::get('PS_REWRITING_SETTINGS'); + $this->url = $_SERVER['SCRIPT_NAME']; + } + + /** + * This function returns a link to delete a customization picture file + * + * @param mixed $product + * @param mixed $id_picture + * @return void + */ + public function getProductDeletePictureLink($product, $id_picture){ + if (is_object($product)) + return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink().((isset($product->category) AND !empty($product->category) AND $product->category != 'home') ? $product->category.'/' : '').(int)$product->id.'-'.$product->link_rewrite.($product->ean13 ? '-'.$product->ean13 : '').'.html?deletePicture='.$id_picture) : + (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$product->id).'&deletePicture='.$id_picture; + else + return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$product.'&deletePicture='.$id_picture; + } + + /** + * Return the correct link for product/category/supplier/manufacturer + * + * @param mixed $id_OBJ Can be either the object or the ID only + * @param string $alias Friendly URL (only if $id_OBJ is the object) + * @return string link + */ + public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL, $id_lang = NULL) + { + if (is_object($id_product)) + return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)$id_lang).((isset($id_product->category) AND !empty($id_product->category) AND $id_product->category != 'home') ? $id_product->category.'/' : '').(int)$id_product->id.'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : + (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$id_product->id); + elseif ($alias) + return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)$id_lang).(($category AND $category != 'home') ? ($category.'/') : '').(int)$id_product.'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : + (_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$id_product); + else + return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.(int)$id_product; + } + + public function getCategoryLink($id_category, $alias = NULL, $id_lang = NULL) + { + if (is_object($id_category)) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_category->id).'-'.$id_category->link_rewrite) : + (_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.(int)($id_category->id)); + if ($alias) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_category).'-'.$alias) : + (_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.(int)($id_category)); + return _PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.(int)($id_category); + } + + public function getCMSCategoryLink($id_category, $alias = NULL, $id_lang = NULL) + { + if (is_object($id_category)) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).'content/category/'.(int)($id_category->id).'-'.$id_category->link_rewrite) : + (_PS_BASE_URL_.__PS_BASE_URI__.'cms.php?id_cms_category='.(int)($id_category->id)); + if ($alias) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).'content/category/'.(int)($id_category).'-'.$alias) : + (_PS_BASE_URL_.__PS_BASE_URI__.'cms.php?id_cms_category='.(int)($id_category)); + return _PS_BASE_URL_.__PS_BASE_URI__.'cms.php?id_cms_category='.(int)($id_category); + } + + public function getCMSLink($cms, $alias = null, $ssl = false, $id_lang = NULL) + { + $base = (($ssl AND Configuration::get('PS_SSL_ENABLED')) ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true)); + + if (is_object($cms)) + { + return ($this->allow == 1) ? + ($base.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).'content/'.(int)($cms->id).'-'.$cms->link_rewrite) : + ($base.__PS_BASE_URI__.'cms.php?id_cms='.(int)($cms->id)); + } + + if ($alias) + return ($this->allow == 1) ? ($base.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).'content/'.(int)($cms).'-'.$alias) : + ($base.__PS_BASE_URI__.'cms.php?id_cms='.(int)($cms)); + return $base.__PS_BASE_URI__.'cms.php?id_cms='.(int)($cms); + } + + public function getSupplierLink($id_supplier, $alias = NULL, $id_lang = NULL) + { + if (is_object($id_supplier)) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_supplier->id).'__'.$id_supplier->link_rewrite) : + (_PS_BASE_URL_.__PS_BASE_URI__.'supplier.php?id_supplier='.(int)($id_supplier->id)); + if ($alias) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_supplier).'__'.$alias) : + (_PS_BASE_URL_.__PS_BASE_URI__.'supplier.php?id_supplier='.(int)($id_supplier)); + return _PS_BASE_URL_.__PS_BASE_URI__.'supplier.php?id_supplier='.(int)($id_supplier); + } + + public function getManufacturerLink($id_manufacturer, $alias = NULL, $id_lang = NULL) + { + if (is_object($id_manufacturer)) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_manufacturer->id).'_'.$id_manufacturer->link_rewrite) : + (_PS_BASE_URL_.__PS_BASE_URI__.'manufacturer.php?id_manufacturer='.(int)($id_manufacturer->id)); + if ($alias) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_manufacturer).'_'.$alias) : + (_PS_BASE_URL_.__PS_BASE_URI__.'manufacturer.php?id_manufacturer='.(int)($id_manufacturer)); + return _PS_BASE_URL_.__PS_BASE_URI__.'manufacturer.php?id_manufacturer='.(int)($id_manufacturer); + } + + /** + * @deprecated + */ + public function getCustomLink($id_custom, $page, $prefix = '~', $alias = NULL, $id_lang = NULL) + { + Tools::displayAsDeprecated(); + if (is_object($id_custom)) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_custom->id).$prefix.$id_custom->link_rewrite) : + (_PS_BASE_URL_.__PS_BASE_URI__.$page.'?id_custom='.(int)($id_custom->id)); + if ($alias) + return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink((int)($id_lang)).(int)($id_custom).$prefix.$alias) : + (_PS_BASE_URL_.__PS_BASE_URI__.$page.'?id_custom='.(int)($id_custom)); + return _PS_BASE_URL_.__PS_BASE_URI__.$page.'?id_custom='.(int)($id_custom); + } + + public function getImageLink($name, $ids, $type = NULL) + { + global $protocol_content; + if ($this->allow == 1) + $uri_path = __PS_BASE_URI__.$ids.($type ? '-'.$type : '').'/'.$name.'.jpg'; + else + $uri_path = _THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').'.jpg'; + return $protocol_content.Tools::getMediaServer($uri_path).$uri_path; + } + + public function getMediaLink($filepath) + { + return Tools::getProtocol().Tools::getMediaServer($filepath).$filepath; + } + + public function preloadPageLinks() + { + global $cookie; + if ($this->allow != 1) + return; + + $result = Db::getInstance()->ExecuteS(' + SELECT page, url_rewrite + FROM `'._DB_PREFIX_.'meta` m + LEFT JOIN `'._DB_PREFIX_.'meta_lang` ml ON (m.id_meta = ml.id_meta) + WHERE id_lang = '.(int)$cookie->id_lang); + foreach ($result as $row) + self::$cache['page'][$row['page'].'.php_'.$cookie->id_lang] = $this->getLangLink((int)$cookie->id_lang).$row['url_rewrite']; + } + + public function getPageLink($filename, $ssl = false, $id_lang = NULL) + { + global $cookie; + if ($id_lang == NULL) + $id_lang = (int)($cookie->id_lang); + + if (array_key_exists($filename.'_'.$id_lang, self::$cache['page'])) + $uri_path = self::$cache['page'][$filename.'_'.$id_lang]; + else + { + if ($this->allow == 1) + { + $url_rewrite = ''; + if ($filename != 'index.php') + { + $pagename = substr($filename, 0, -4); + $url_rewrite = Db::getInstance()->getValue(' + SELECT url_rewrite + FROM `'._DB_PREFIX_.'meta` m + LEFT JOIN `'._DB_PREFIX_.'meta_lang` ml ON (m.id_meta = ml.id_meta) + WHERE id_lang = '.(int)($id_lang).' AND `page` = \''.pSQL($pagename).'\''); + $uri_path = $this->getLangLink((int)$id_lang).($url_rewrite ? $url_rewrite : $filename); + } + else + $uri_path = $this->getLangLink((int)$id_lang); + } + else + { + $uri_path = ''; + if ($filename != 'index.php') + $uri_path = $filename; + } + self::$cache['page'][$filename.'_'.$id_lang] = $uri_path; + } + return (($ssl AND Configuration::get('PS_SSL_ENABLED')) ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true)).__PS_BASE_URI__.ltrim($uri_path, '/'); + } + + public function getCatImageLink($name, $id_category, $type = null) + { + return ($this->allow == 1) ? (__PS_BASE_URI__.$id_category.($type ? '-'.$type : '').'/'.$name.'.jpg') : (_THEME_CAT_DIR_.$id_category.($type ? '-'.$type : '').'.jpg'); + } + + /** + * Create link after language change, for the change language block + * + * @param integer $id_lang Language ID + * @return string link + */ + public function getLanguageLink($id_lang) + { + global $cookie; + $matches = array(); + $request = $_SERVER['REQUEST_URI']; + preg_match('#^/([a-z]{2})/([^\?]*).*$#', $request, $matches); + if ($matches) + { + $current_iso = $matches[1]; + $rewrite = $matches[2]; + $url_rewrite = Meta::getEquivalentUrlRewrite($id_lang, Language::getIdByIso($current_iso), $rewrite); + $request = str_replace($rewrite, $url_rewrite, $request); + } + + $queryTab = array(); + parse_str($_SERVER['QUERY_STRING'], $queryTab); + unset($queryTab['isolang']); + $query = http_build_query($queryTab); + + if (!empty($query) OR !$this->allow) + $query = '?'.$query; + + $switchLangLink = $this->getPageLink(substr($_SERVER['PHP_SELF'], strlen(__PS_BASE_URI__)), false, $id_lang).$query; + if (!$this->allow) + if ($id_lang != $cookie->id_lang) + { + if (strpos($switchLangLink,'id_lang')) + $switchLangLink = preg_replace('`id_lang=[0-9]*`','id_lang='.$id_lang,$switchLangLink); + else + $switchLangLink = $switchLangLink.'&id_lang='.$id_lang; + } + return $switchLangLink; + } + + /** + * @deprecated + */ + public function getLanguageLinkAdmin($id_lang) + { + Tools::displayAsDeprecated(); + return $this->getUrlWith('id_lang', (int)($id_lang)); + } + + /** + * This function return the current url with a new parameter key=value + * @param mixed $key + * @param mixed $val + * @return url with &key=val (or ?key=val) + * @deprectated + */ + public function getUrlWith($key, $val) + { + // This function does not use rewrite + Tools::displayAsDeprecated(); + $n = 0; + $url = str_replace('index.php', '', htmlentities($this->url, ENT_QUOTES, 'UTF-8')); + + foreach ($_GET as $k => $value) + // adminlang is an hand-written param in BO + if ($k != 'adminlang') + if (!is_array($value) AND $k != $key AND Tools::isSubmit($k)) + $url .= ((!$n++) ? '?' : '&').urlencode($k).($value ? '='.urlencode($value) : ''); + + return $url.($n ? '&' : '?').urlencode($key).'='.urlencode($val); + } + + public function goPage($url, $p) + { + return $url.($p == 1 ? '' : (!strstr($url, '?') ? '?' : '&').'p='.(int)($p)); + } + + public function getPaginationLink($type, $id_object, $nb = false, $sort = false, $pagination = false, $array = false) + { + if ($type AND $id_object) + $url = $this->{'get'.$type.'Link'}($id_object, NULL); + else + { + $url = $this->url; + if (Configuration::get('PS_REWRITING_SETTINGS')) + $url = $this->getPageLink(basename($url)); + } + $vars = (!$array ? '' : array()); + $varsNb = array('n', 'search_query'); + $varsSort = array('orderby', 'orderway'); + $varsPagination = array('p'); + + $n = 0; + foreach ($_GET AS $k => $value) + if ($k != 'id_'.$type) + { + if (Configuration::get('PS_REWRITING_SETTINGS') AND ($k == 'isolang' OR $k == 'id_lang')) + continue; + $ifNb = (!$nb OR ($nb AND !in_array($k, $varsNb))); + $ifSort = (!$sort OR ($sort AND !in_array($k, $varsSort))); + $ifPagination = (!$pagination OR ($pagination AND !in_array($k, $varsPagination))); + if ($ifNb AND $ifSort AND $ifPagination AND !is_array($value)) + !$array ? ($vars .= ((!$n++ AND ($this->allow == 1 OR $url == $this->url)) ? '?' : '&').urlencode($k).'='.urlencode($value)) : ($vars[urlencode($k)] = urlencode($value)); + } + if (!$array) + return $url.$vars; + $vars['requestUrl'] = $url; + if ($type AND $id_object) + $vars['id_'.$type] = (is_object($id_object) ? (int)$id_object->id : (int)$id_object); + return $vars; + } + + public function addSortDetails($url, $orderby, $orderway) + { + return $url.(!strstr($url, '?') ? '?' : '&').'orderby='.urlencode($orderby).'&orderway='.urlencode($orderway); + } + + protected function getLangLink($id_lang = NULL) + { + if (!$this->allow OR Language::countActiveLanguages() <= 1) + return ''; + + global $cookie; + if (!$id_lang) + $id_lang = (int)$cookie->id_lang; + + return Language::getIsoById((int)$id_lang).'/'; + } +} diff --git a/classes/LocalizationPack.php b/classes/LocalizationPack.php new file mode 100644 index 000000000..bc5948f30 --- /dev/null +++ b/classes/LocalizationPack.php @@ -0,0 +1,411 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require_once(_PS_TOOL_DIR_.'tar/Archive_Tar.php'); + +class LocalizationPackCore +{ + public $name; + public $version; + + protected $iso_code_lang; + protected $iso_currency; + protected $_errors = array(); + + public function loadLocalisationPack($file, $selection, $install_mode = false) + { + if (!$xml = simplexml_load_string($file)) + return false; + $mainAttributes = $xml->attributes(); + $this->name = strval($mainAttributes['name']); + $this->version = strval($mainAttributes['version']); + if (empty($selection)) + { + $res = true; + $res &= $this->_installStates($xml); + $res &= $this->_installTaxes($xml); + $res &= $this->_installCurrencies($xml, $install_mode); + $res &= $this->_installUnits($xml); + + if (!defined('_PS_MODE_DEV_') OR !_PS_MODE_DEV_) + $res &= $this->_installLanguages($xml, $install_mode); + + if ($res AND isset($this->iso_code_lang)) + Configuration::updateValue('PS_LANG_DEFAULT', (int)Language::getIdByIso($this->iso_code_lang)); + + if ($install_mode AND $res AND isset($this->iso_currency)) + { + $res &= Configuration::updateValue('PS_CURRENCY_DEFAULT', (int)Currency::getIdByIsoCode($this->iso_currency)); + Currency::refreshCurrencies(); + } + + return $res; + } + foreach ($selection AS $selected) + if (!Validate::isLocalizationPackSelection($selected) OR !$this->{'_install'.ucfirst($selected)}($xml)) + return false; + + return true; + } + + protected function _installStates($xml) + { + if (isset($xml->states->state)) + foreach ($xml->states->state AS $data) + { + $attributes = $data->attributes(); + + if (!$id_state = State::getIdByName($attributes['name'])) + { + $state = new State(); + $state->name = strval($attributes['name']); + $state->iso_code = strval($attributes['iso_code']); + $state->id_country = Country::getByIso(strval($attributes['country'])); + $state->id_zone = (int)(Zone::getIdByName(strval($attributes['zone']))); + + if (!$state->validateFields()) + { + $this->_errors[] = Tools::displayError('Invalid state properties.'); + return false; + } + + $country = new Country($state->id_country); + if (!$country->contains_states) + { + $country->contains_states = 1; + if (!$country->update()) + $this->_errors[] = Tools::displayError('Cannot update the associated country: ').$country->name; + } + + if (!$state->add()) + { + $this->_errors[] = Tools::displayError('An error occurred while adding the state.'); + return false; + } + } else { + $state = new State($id_state); + if (!Validate::isLoadedObject($state)) + { + $this->_errors[] = Tools::displayError('An error occurred while fetching the state.'); + return false; + } + } + + // Add counties + foreach ($data->county AS $xml_county) + { + $county_attributes = $xml_county->attributes(); + if (!$id_county = County::getIdCountyByNameAndIdState($county_attributes['name'], $state->id)) + { + $county = new County(); + $county->name = $county_attributes['name']; + $county->id_state = (int)$state->id; + $county->active = 1; + + if (!$county->validateFields()) + { + $this->_errors[] = Tools::displayError('Invalid County properties'); + return false; + } + + if (!$county->save()) + { + $this->_errors[] = Tools::displayError('An error has occured while adding the county'); + return false; + } + } else { + $county = new County((int)$id_county); + if (!Validate::isLoadedObject($county)) + { + $this->_errors[] = Tools::displayError('An error occurred while fetching the county.'); + return false; + } + } + + // add zip codes + foreach ($xml_county->zipcode AS $xml_zipcode) + { + $zipcode_attributes = $xml_zipcode->attributes(); + + $zipcodes = $zipcode_attributes['from']; + if (isset($zipcode_attributes['to'])) + $zipcodes .= '-'.$zipcode_attributes['to']; + + if ($county->isZipCodeRangePresent($zipcodes)) + continue; + + if (!$county->addZipCodes($zipcodes)) + { + $this->_errors[] = Tools::displayError('An error has occured while adding zipcodes'); + return false; + } + } + } + } + + + return true; + } + + protected function _installTaxes($xml) + { + if (isset($xml->taxes->tax)) + { + $available_behavior = array(PS_PRODUCT_TAX, PS_STATE_TAX, PS_BOTH_TAX); + $assoc_taxes = array(); + foreach ($xml->taxes->tax AS $taxData) + { + $attributes = $taxData->attributes(); + if (Tax::getTaxIdByName($attributes['name'])) + continue; + $tax = new Tax(); + $tax->name[(int)(Configuration::get('PS_LANG_DEFAULT'))] = strval($attributes['name']); + $tax->rate = (float)($attributes['rate']); + $tax->active = 1; + + if (!$tax->validateFields()) + { + $this->_errors[] = Tools::displayError('Invalid tax properties.'); + return false; + } + + if (!$tax->add()) + { + $this->_errors[] = Tools::displayError('An error occurred while importing the tax: ').strval($attributes['name']); + return false; + } + + $assoc_taxes[(int)$attributes['id']] = $tax->id; + } + + foreach ($xml->taxes->taxRulesGroup AS $group) + { + $group_attributes = $group->attributes(); + if (!Validate::isGenericName($group_attributes['name'])) + continue; + + if (TaxRulesGroup::getIdByName($group['name'])) + continue; + + $trg = new TaxRulesGroup(); + $trg->name = $group['name']; + $trg->active = 1; + + if (!$trg->save()) + { + $this->_errors = Tools::displayError('This tax rule can\'t be saved.'); + return false; + } + + foreach($group->taxRule as $rule) + { + $rule_attributes = $rule->attributes(); + + // Validation + if (!isset($rule_attributes['iso_code_country'])) + continue; + + $id_country = Country::getByIso(strtoupper($rule_attributes['iso_code_country'])); + if (!$id_country) + continue; + + if (!isset($rule_attributes['id_tax']) || !array_key_exists(strval($rule_attributes['id_tax']), $assoc_taxes)) + continue; + + // Default values + $id_state = (int) isset($rule_attributes['iso_code_state']) ? State::getIdByIso(strtoupper($rule_attributes['iso_code_state'])) : 0; + $id_county = 0; + $state_behavior = 0; + $county_behavior = 0; + + if ($id_state) + { + if (isset($rule_attributes['state_behavior']) && in_array($rule_attributes['state_behavior'], $available_behavior)) + $state_behavior = (int)$rule_attributes['state_behavior']; + + if (isset($rule_attributes['county_name'])) + { + $id_county = County::getIdCountyByNameAndIdState($rule_attributes['county_name'], (int)$id_state); + if (!$id_county) + continue; + } + + if (isset($rule_attributes['county_behavior']) && in_array($rule_attributes['state_behavior'], $available_behavior)) + $county_behavior = (int)$rule_attributes['county_behavior']; + } + + + // Creation + $tr = new TaxRule(); + $tr->id_tax_rules_group = $trg->id; + $tr->id_country = $id_country; + $tr->id_state = $id_state; + $tr->id_county = $id_county; + $tr->state_behavior = $state_behavior; + $tr->county_behavior = $county_behavior; + $tr->id_tax = $assoc_taxes[strval($rule_attributes['id_tax'])]; + $tr->save(); + } + } + } + + return true; + } + + protected function _installCurrencies($xml, $install_mode = false) + { + if (isset($xml->currencies->currency)) + { + if (!$feed = @simplexml_load_file('http://www.prestashop.com/xml/currencies.xml') AND !$feed = @simplexml_load_file(dirname(__FILE__).'/../localization/currencies.xml')) + { + $this->_errors[] = Tools::displayError('Cannot parse the currencies XML feed.'); + return false; + } + + foreach ($xml->currencies->currency AS $data) + { + $attributes = $data->attributes(); + if(Currency::exists($attributes['iso_code'])) + continue; + $currency = new Currency(); + $currency->name = strval($attributes['name']); + $currency->iso_code = strval($attributes['iso_code']); + $currency->iso_code_num = (int)($attributes['iso_code_num']); + $currency->sign = strval($attributes['sign']); + $currency->blank = (int)($attributes['blank']); + $currency->conversion_rate = 1; // This value will be updated if the store is online + $currency->format = (int)($attributes['format']); + $currency->decimals = (int)($attributes['decimals']); + $currency->active = $install_mode; + if (!$currency->validateFields()) + { + $this->_errors[] = Tools::displayError('Invalid currency properties.'); + return false; + } + if (!Currency::exists($currency->iso_code)) + { + if (!$currency->add()) + { + $this->_errors[] = Tools::displayError('An error occurred while importing the currency: ').strval($attributes['name']); + return false; + } + } + } + + Currency::refreshCurrencies(); + + if (!sizeof($this->_errors) AND $install_mode AND isset($attributes['iso_code']) AND sizeof($xml->currencies->currency) == 1) + $this->iso_currency = $attributes['iso_code']; + } + + return true; + } + + protected function _installLanguages($xml, $install_mode = false) + { + $attributes = array(); + if (isset($xml->languages->language)) + foreach ($xml->languages->language AS $data) + { + $attributes = $data->attributes(); + if (Language::getIdByIso($attributes['iso_code'])) + continue; + $native_lang = Language::getLanguages(); + $native_iso_code = array(); + foreach ($native_lang AS $lang) + $native_iso_code[] = $lang['iso_code']; + if ((in_array((string)$attributes['iso_code'], $native_iso_code) AND !$install_mode) OR !in_array((string)$attributes['iso_code'], $native_iso_code)) + if(@fsockopen('www.prestashop.com', 80, $errno = 0, $errstr = '', 10)) + { + if ($lang_pack = Tools::jsonDecode(Tools::file_get_contents('http://www.prestashop.com/download/lang_packs/get_language_pack.php?version='._PS_VERSION_.'&iso_lang='.$attributes['iso_code']))) + { + if ($content = file_get_contents('http://www.prestashop.com/download/lang_packs/gzip/'.$lang_pack->version.'/'.$attributes['iso_code'].'.gzip')) + { + $file = _PS_TRANSLATIONS_DIR_.$attributes['iso_code'].'.gzip'; + if (file_put_contents($file, $content)) + { + $gz = new Archive_Tar($file, true); + + if (!$gz->extract(_PS_TRANSLATIONS_DIR_.'../', false)) + { + $this->_errors[] = Tools::displayError('Cannot decompress the translation file of the language: ').(string)$attributes['iso_code']; + return false; + } + + if (!Language::checkAndAddLanguage((string)$attributes['iso_code'])) + { + $this->_errors[] = Tools::displayError('An error occurred while creating the language: ').(string)$attributes['iso_code']; + return false; + } + + @unlink($file); + } + else + $this->_errors[] = Tools::displayError('Server does not have permissions for writing.'); + } + } + else + $this->_errors[] = Tools::displayError('Error occurred when language was checked according to your Prestashop version.'); + } + else + $this->_errors[] = Tools::displayError('Archive cannot be downloaded from prestashop.com.'); + } + + // change the default language if there is only one language in the localization pack + if (!sizeof($this->_errors) AND $install_mode AND isset($attributes['iso_code']) AND sizeof($xml->languages->language) == 1) + $this->iso_code_lang = $attributes['iso_code']; + + return true; + } + + protected function _installUnits($xml) + { + $varNames = array('weight' => 'PS_WEIGHT_UNIT', 'volume' => 'PS_VOLUME_UNIT', 'short_distance' => 'PS_DIMENSION_UNIT', 'base_distance' => 'PS_BASE_DISTANCE_UNIT', 'long_distance' => 'PS_DISTANCE_UNIT'); + if (isset($xml->units->unit)) + foreach ($xml->units->unit AS $data) + { + $attributes = $data->attributes(); + if (!isset($varNames[strval($attributes['type'])])) + { + $this->_errors[] = Tools::displayError('Pack corrupted: wrong unit type.'); + return false; + } + if (!Configuration::updateValue($varNames[strval($attributes['type'])], strval($attributes['value']))) + { + $this->_errors[] = Tools::displayError('An error occurred while setting the units.'); + return false; + } + } + return true; + } + + public function getErrors() + { + return $this->_errors; + } +} + diff --git a/classes/Logger.php b/classes/Logger.php new file mode 100644 index 000000000..5e71eeec7 --- /dev/null +++ b/classes/Logger.php @@ -0,0 +1,161 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class LoggerCore extends ObjectModel +{ + /** @var integer Log id */ + public $id_log; + + /** @var integer Log severity */ + public $severity; + + /** @var integer Error code */ + public $error_code; + + /** @var string Message */ + public $message; + + /** @var string Object type (eg. Order, Customer...) */ + public $object_type; + + /** @var integer Object ID */ + public $object_id; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $fieldsRequired = array('severity', 'message'); + protected $fieldsSize = array(); + protected $fieldsValidate = array('id_log' => 'isUnsignedId', 'severity' => 'isInt', 'error_code' => 'isUnsignedInt', + 'message' => 'isMessage', 'object_id' => 'isUnsignedInt', 'object_type' => 'isName'); + + protected $table = 'log'; + protected $identifier = 'id_log'; + + protected static $_is_present = array(); + + + public function getFields() + { + parent::validateFields(); + + $fields['severity'] = intval($this->severity); + $fields['error_code'] = intval($this->error_code); + $fields['message'] = pSQL($this->message); + $fields['object_type'] = pSQL($this->object_type); + $fields['object_id'] = intval($this->object_id); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + + return $fields; + } + + static public function sendByMail($log) + { + /* Send e-mail to the shop owner only if the minimal severity level has been reached */ + if (intval(Configuration::get('PS_LOGS_BY_EMAIL')) <= intval($log->severity)) + Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), 'log_alert', Mail::l('[Log] You have a new alert from your shop'), array(), Configuration::get('PS_SHOP_EMAIL')); + } + + /** + * add a log item to the database and send a mail if configured for this $severity + * + * @param string $message the log message + * @param int $severity + * @param int $errorCode + * @param string $objectType + * @param int $objectId + * @param boolean $allowDuplicate if set to true, can log several time the same information (not recommended) + * @return boolean true if succeed + */ + static public function addLog($message, $severity = 1, $errorCode = NULL, $objectType = NULL, $objectId = NULL, $allowDuplicate = false) + { + $log = new Logger(); + $log->severity = intval($severity); + $log->error_code = intval($errorCode); + $log->message = pSQL($message); + $log->date_add = date('Y-m-d H:i:s'); + $log->date_upd = date('Y-m-d H:i:s'); + if (!empty($objectType) AND !empty($objectId)) + { + $log->object_type = pSQL($objectType); + $log->object_id = intval($objectId); + } + + self::sendByMail($log); + + if ($allowDuplicate or !$log->_isPresent() ) + { + $res = $log->add(); + if ($res) + { + self::$_is_present[$log->getHash()] = isset(self::$_is_present[$log->getHash()])?self::$_is_present[$log->getHash()] + 1:1; + return true; + } + } + return false; + } + + /** + * this function md5($this->message.$this->severity.$this->error_code.$this->object_type.$this->object_id) + * + * @return string hash + */ + public function getHash(){ + if (empty($this->hash)) + $this->hash = md5($this->message.$this->severity.$this->error_code.$this->object_type.$this->object_id); + + return $this->hash; + } + + /** + * check if this log message already exists in database. + * + * @param mixed $message + * @return true if exists + */ + private function _isPresent() + { + if (!isset(self::$_is_present[md5($this->message)])) + self::$_is_present[$this->getHash()] = Db::getInstance()->getValue('SELECT COUNT(*) + FROM `'._DB_PREFIX_.'log` + WHERE + `message` = \''.$this->message.'\' + AND `severity` = \''.$this->severity.'\' + AND `error_code` = \''.$this->error_code.'\' + AND `object_type` = \''.$this->object_type.'\' + AND `object_id` = \''.$this->object_id.'\' + '); + + return self::$_is_present[$this->getHash()]; + } + +} + diff --git a/classes/MCached.php b/classes/MCached.php new file mode 100755 index 000000000..3611778f2 --- /dev/null +++ b/classes/MCached.php @@ -0,0 +1,171 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class MCachedCore extends Cache +{ + protected $_memcacheObj; + protected $_isConnected = false; + + protected function __construct() + { + parent::__construct(); + return $this->connect(); + } + + public function connect() + { + $this->_memcacheObj = new Memcache(); + $servers = self::getMemcachedServers(); + if (!$servers) + return false; + foreach ($servers AS $server) + $this->_memcacheObj->addServer($server['ip'], $server['port'], $server['weight']); + + $this->_isConnected = true; + return $this->_setKeys(); + } + + public function set($key, $value, $expire = 0) + { + if (!$this->_isConnected) + return false; + if ($this->_memcacheObj->set($key, $value, 0, $expire)) + { + $this->_keysCached[$key] = true; + return $key; + } + } + + public function setNumRows($key, $value, $expire = 0) + { + return $this->set($key.'_nrows', $value, $expire); + } + + public function getNumRows($key) + { + return $this->get($key.'_nrows'); + } + + public function get($key) + { + if (!isset($this->_keysCached[$key])) + return false; + return $this->_memcacheObj->get($key); + } + + protected function _setKeys() + { + if (!$this->_isConnected) + return false; + $this->_keysCached = $this->_memcacheObj->get('keysCached'); + $this->_tablesCached = $this->_memcacheObj->get('tablesCached'); + + return true; + } + + public function setQuery($query, $result) + { + if (!$this->_isConnected) + return false; + if ($this->isBlacklist($query)) + return true; + $md5_query = md5($query); + if (isset($this->_keysCached[$md5_query])) + return true; + $key = $this->set($md5_query, $result); + if(preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) + foreach($res[1] AS $table) + if(!isset($this->_tablesCached[$table][$key])) + $this->_tablesCached[$table][$key] = true; + } + + public function delete($key, $timeout = 0) + { + if (!$this->_isConnected) + return false; + if (!empty($key) AND $this->_memcacheObj->delete($key, $timeout)) + unset($this->_keysCached[$key]); + } + + public function deleteQuery($query) + { + if (!$this->_isConnected) + return false; + if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) + foreach ($res[1] AS $table) + if (isset($this->_tablesCached[$table])) + { + foreach ($this->_tablesCached[$table] AS $memcachedKey => $foo) + { + $this->delete($memcachedKey); + $this->delete($memcachedKey.'_nrows'); + } + unset($this->_tablesCached[$table]); + } + } + + protected function close() + { + if (!$this->_isConnected) + return false; + return $this->_memcacheObj->close(); + } + + public function flush() + { + if(!$this->_isConnected) + return false; + if ($this->_memcacheObj->flush()) + return $this->_setKeys(); + return false; + } + + public function __destruct() + { + parent::__destruct(); + if (!$this->_isConnected) + return false; + $this->_memcacheObj->set('keysCached', $this->_keysCached, 0, 0); + $this->_memcacheObj->set('tablesCached', $this->_tablesCached, 0, 0); + $this->close(); + } + + public static function addServer($ip, $port, $weight) + { + return Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'memcached_servers (id_memcached_server, ip, port, weight) VALUES(\'\', \''.pSQL($ip).'\', '.(int)$port.', '.(int)$weight.')', false); + } + + public static function getMemcachedServers() + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT * FROM '._DB_PREFIX_.'memcached_servers', true, false); + } + + public static function deleteServer($id_server) + { + return Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'memcached_servers WHERE id_memcached_server='.(int)$id_server); + } +} diff --git a/classes/Mail.php b/classes/Mail.php new file mode 100644 index 000000000..8e09dac42 --- /dev/null +++ b/classes/Mail.php @@ -0,0 +1,228 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(_PS_SWIFT_DIR_.'Swift.php'); +include_once(_PS_SWIFT_DIR_.'Swift/Connection/SMTP.php'); +include_once(_PS_SWIFT_DIR_.'Swift/Connection/NativeMail.php'); +include_once(_PS_SWIFT_DIR_.'Swift/Plugin/Decorator.php'); + +class MailCore +{ + static public function Send($id_lang, $template, $subject, $templateVars, $to, $toName = NULL, $from = NULL, $fromName = NULL, $fileAttachment = NULL, $modeSMTP = NULL, $templatePath = _PS_MAIL_DIR_) + { + $configuration = Configuration::getMultiple(array('PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_METHOD', 'PS_MAIL_TYPE')); + if(!isset($configuration['PS_MAIL_SMTP_ENCRYPTION'])) $configuration['PS_MAIL_SMTP_ENCRYPTION'] = 'off'; + if(!isset($configuration['PS_MAIL_SMTP_PORT'])) $configuration['PS_MAIL_SMTP_PORT'] = 'default'; + + if (!isset($from)) $from = $configuration['PS_SHOP_EMAIL']; + if (!isset($fromName)) $fromName = $configuration['PS_SHOP_NAME']; + + if (!empty($from) AND !Validate::isEmail($from)) + die(Tools::displayError('Error: parameter "from" is corrupted')); + + if (!empty($fromName) AND !Validate::isMailName($fromName)) + die(Tools::displayError('Error: parameter "fromName" is corrupted')); + + if (!is_array($to) AND !Validate::isEmail($to)) + die(Tools::displayError('Error: parameter "to" is corrupted')); + + if (!is_array($templateVars)) + die(Tools::displayError('Error: parameter "templateVars" is not an array')); + + // Do not crash for this error, that may be a complicated customer name + if (!empty($toName) AND !Validate::isMailName($toName)) + $toName = NULL; + + if (!Validate::isTplName($template)) + die(Tools::displayError('Error: invalid email template')); + + if (!Validate::isMailSubject($subject)) + die(Tools::displayError('Error: invalid email subject')); + + /* Construct multiple recipients list if needed */ + if (is_array($to)) + { + $to_list = new Swift_RecipientList(); + foreach ($to AS $key => $addr) + { + $to_name = NULL; + $addr = trim($addr); + if (!Validate::isEmail($addr)) + die(Tools::displayError('Error: invalid email address')); + if ($toName AND is_array($toName) AND Validate::isGenericName($toName[$key])) + $to_name = $toName[$key]; + $to_list->addTo($addr, $to_name); + } + $to_plugin = $to[0]; + $to = $to_list; + } else { + /* Simple recipient, one address */ + $to_plugin = $to; + $to = new Swift_Address($to, $toName); + } + try { + /* Connect with the appropriate configuration */ + if ($configuration['PS_MAIL_METHOD'] == 2) + { + if (empty($configuration['PS_MAIL_SERVER']) OR empty($configuration['PS_MAIL_SMTP_PORT'])) + die(Tools::displayError('Error: invalid SMTP server or SMTP port')); + + $connection = new Swift_Connection_SMTP($configuration['PS_MAIL_SERVER'], $configuration['PS_MAIL_SMTP_PORT'], ($configuration['PS_MAIL_SMTP_ENCRYPTION'] == "ssl") ? Swift_Connection_SMTP::ENC_SSL : (($configuration['PS_MAIL_SMTP_ENCRYPTION'] == "tls") ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_OFF)); + $connection->setTimeout(4); + if (!$connection) + return false; + if (!empty($configuration['PS_MAIL_USER'])) + $connection->setUsername($configuration['PS_MAIL_USER']); + if (!empty($configuration['PS_MAIL_PASSWD'])) + $connection->setPassword($configuration['PS_MAIL_PASSWD']); + } + else + $connection = new Swift_Connection_NativeMail(); + + if (!$connection) + return false; + $swift = new Swift($connection, Configuration::get('PS_MAIL_DOMAIN')); + /* Get templates content */ + $iso = Language::getIsoById((int)($id_lang)); + if (!$iso) + die (Tools::displayError('Error - No ISO code for email')); + $template = $iso.'/'.$template; + + $moduleName = false; + $overrideMail = false; + + // get templatePath + if (preg_match('#'.__PS_BASE_URI__.'modules/#', $templatePath) AND preg_match('#modules/([a-z0-9_-]+)/#ui' , $templatePath , $res)) + $moduleName = $res[1]; + + if ($moduleName !== false AND (file_exists(_PS_THEME_DIR_.'modules/'.$moduleName.'/mails/'.$template.'.txt') OR + file_exists(_PS_THEME_DIR_.'modules/'.$moduleName.'/mails/'.$template.'.html'))) + $templatePath = _PS_THEME_DIR_.'modules/'.$moduleName.'/mails/'; + elseif (file_exists(_PS_THEME_DIR_.'mails/'.$template.'.txt') OR file_exists(_PS_THEME_DIR_.'mails/'.$template.'.html')) + { + $templatePath = _PS_THEME_DIR_.'mails/'; + $overrideMail = true; + } + elseif (!file_exists($templatePath.$template.'.txt') OR !file_exists($templatePath.$template.'.html')) + die(Tools::displayError('Error - The following email template is missing:').' '.$templatePath.$template.'.txt'); + + $templateHtml = file_get_contents($templatePath.$template.'.html'); + $templateTxt = strip_tags(html_entity_decode(file_get_contents($templatePath.$template.'.txt'), NULL, 'utf-8')); + + if ($overrideMail AND file_exists($templatePath.$iso.'/lang.php')) + include_once($templatePath.$iso.'/lang.php'); + elseif ($moduleName AND file_exists($templatePath.$iso.'/lang.php')) + include_once(_PS_THEME_DIR_.'mails/'.$iso.'/lang.php'); + else + include_once(dirname(__FILE__).'/../mails/'.$iso.'/lang.php'); + + /* Create mail and attach differents parts */ + $message = new Swift_Message('['.Configuration::get('PS_SHOP_NAME').'] '. $subject); + $templateVars['{shop_logo}'] = (file_exists(_PS_IMG_DIR_.'logo_mail.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo_mail.jpg'))) : ((file_exists(_PS_IMG_DIR_.'logo.jpg')) ? $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.'logo.jpg'))) : ''); + $templateVars['{shop_name}'] = Tools::safeOutput(Configuration::get('PS_SHOP_NAME')); + $templateVars['{shop_url}'] = Tools::getShopDomain(true, true).__PS_BASE_URI__; + $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $templateVars)), 'decorator'); + if ($configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 2) + $message->attach(new Swift_Message_Part($templateTxt, 'text/plain', '8bit', 'utf-8')); + if ($configuration['PS_MAIL_TYPE'] == 3 OR $configuration['PS_MAIL_TYPE'] == 1) + $message->attach(new Swift_Message_Part($templateHtml, 'text/html', '8bit', 'utf-8')); + if ($fileAttachment AND isset($fileAttachment['content']) AND isset($fileAttachment['name']) AND isset($fileAttachment['mime'])) + $message->attach(new Swift_Message_Attachment($fileAttachment['content'], $fileAttachment['name'], $fileAttachment['mime'])); + /* Send mail */ + $send = $swift->send($message, $to, new Swift_Address($from, $fromName)); + $swift->disconnect(); + return $send; + } + + catch (Swift_ConnectionException $e) { return false; } + } + + static public function sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption) + { + $swift = NULL; + $result = NULL; + try + { + if($smtpChecked) + { + + $smtp = new Swift_Connection_SMTP($smtpServer, $smtpPort, ($smtpEncryption == "off") ? Swift_Connection_SMTP::ENC_OFF : (($smtpEncryption == "tls") ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_SSL)); + $smtp->setUsername($smtpLogin); + $smtp->setpassword($smtpPassword); + $smtp->setTimeout(5); + $swift = new Swift($smtp, Configuration::get('PS_MAIL_DOMAIN')); + } + else + $swift = new Swift(new Swift_Connection_NativeMail(), Configuration::get('PS_MAIL_DOMAIN')); + + $message = new Swift_Message($subject, $content, $type); + + if ($swift->send($message, $to, $from)) + $result = true; + else + $result = 999; + + $swift->disconnect(); + } + catch (Swift_Connection_Exception $e) { $result = $e->getCode(); } + catch (Swift_Message_MimeException $e) { $result = $e->getCode(); } + + return $result; + } + + /** + * This method is used to get the translation for email Object. + * For an object is forbidden to use htmlentities, + * we have to return a sentence with accents. + * + * @param string $string raw sentence (write directly in file) + */ + static public function l($string) + { + global $_LANGMAIL, $cookie; + + $key = str_replace('\'', '\\\'', $string); + $id_lang = (!isset($cookie) OR !is_object($cookie)) ? (int)Configuration::get('PS_LANG_DEFAULT') : (int)$cookie->id_lang; + + $file_core = _PS_ROOT_DIR_.'/mails/'.Language::getIsoById((int)$id_lang).'/lang.php'; + if (Tools::file_exists_cache($file_core) && empty($_LANGMAIL)) + include_once($file_core); + + $file_theme = _PS_THEME_DIR_.'mails/'.Language::getIsoById((int)$id_lang).'/lang.php'; + if (Tools::file_exists_cache($file_theme)) + include_once($file_theme); + + if (!is_array($_LANGMAIL)) + return (str_replace('"', '"', $string)); + if (key_exists($key, $_LANGMAIL)) + $str = $_LANGMAIL[$key]; + else + $str = $string; + + return str_replace('"', '"', addslashes($str)); + } +} diff --git a/classes/Manufacturer.php b/classes/Manufacturer.php new file mode 100644 index 000000000..4e57bf86c --- /dev/null +++ b/classes/Manufacturer.php @@ -0,0 +1,363 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ManufacturerCore extends ObjectModel +{ + public $id; + + /** @var integer manufacturer ID */ + public $id_manufacturer;//FIXME is it really usefull...? + + /** @var string Name */ + public $name; + + /** @var string A description */ + public $description; + + /** @var string A short description */ + public $short_description; + + /** @var int Address */ + public $id_address; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + /** @var string Friendly URL */ + public $link_rewrite; + + /** @var string Meta title */ + public $meta_title; + + /** @var string Meta keywords */ + public $meta_keywords; + + /** @var string Meta description */ + public $meta_description; + + /** @var boolean active */ + public $active; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 64); + protected $fieldsValidate = array('name' => 'isCatalogName'); + + protected $fieldsSizeLang = array('short_description' => 254, 'meta_title' => 128, 'meta_description' => 255, 'meta_description' => 255); + protected $fieldsValidateLang = array('description' => 'isString', 'short_description' => 'isString', 'meta_title' => 'isGenericName', 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName'); + + protected $table = 'manufacturer'; + protected $identifier = 'id_manufacturer'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_address' => array('xlink_resource'=> 'addresses'), + 'link_rewrite' => array(), + ), + ); + + public function __construct($id = NULL, $id_lang = NULL) + { + parent::__construct($id, $id_lang); + + /* Get the manufacturer's id_address */ + $this->id_address = $this->getManufacturerAddress(); + + $this->link_rewrite = $this->getLink(); + } + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_manufacturer'] = (int)($this->id); + $fields['name'] = pSQL($this->name); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + $fields['active'] = (int)($this->active); + return $fields; + } + + public function getTranslationsFieldsChild() + { + $fieldsArray = array('description', 'short_description', 'meta_title', 'meta_keywords', 'meta_description'); + $fields = array(); + $languages = Language::getLanguages(false); + $defaultLanguage = Configuration::get('PS_LANG_DEFAULT'); + foreach ($languages as $language) + { + $fields[$language['id_lang']]['id_lang'] = $language['id_lang']; + $fields[$language['id_lang']][$this->identifier] = (int)($this->id); + $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : ''; + $fields[$language['id_lang']]['short_description'] = (isset($this->short_description[$language['id_lang']])) ? pSQL($this->short_description[$language['id_lang']], true) : ''; + + foreach ($fieldsArray as $field) + { + if (!Validate::isTableOrIdentifier($field)) + die(Tools::displayError()); + + /* Check fields validity */ + if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']], true); + elseif (in_array($field, $this->fieldsRequiredLang)) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); + else + $fields[$language['id_lang']][$field] = ''; + + } + } + return $fields; + } + + public function delete() + { + $address = new Address($this->id_address); + if (!$address->delete()) + return false; + return parent::delete(); + } + + /** + * Delete several objects from database + * + * return boolean Deletion result + */ + public function deleteSelection($selection) + { + if (!is_array($selection) OR !Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + $result = true; + foreach ($selection AS $id) + { + $this->id = (int)($id); + $this->id_address = self::getManufacturerAddress(); + $result = $result AND $this->delete(); + } + return $result; + } + + protected function getManufacturerAddress() + { + if (!(int)($this->id)) + return false; + $result = Db::GetInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT `id_address` FROM '._DB_PREFIX_.'address WHERE `id_manufacturer` = '.(int)($this->id)); + if (!$result) + return false; + return $result['id_address']; + } + + /** + * Return manufacturers + * + * @param boolean $getNbProducts [optional] return products numbers for each + * @return array Manufacturers + */ + static public function getManufacturers($getNbProducts = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_group = false) + { + if (!$id_lang) + $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); + $sql = 'SELECT m.*, ml.`description`'; + $sql.= ' FROM `'._DB_PREFIX_.'manufacturer` m + LEFT JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.(int)($id_lang).') + '.($active ? ' WHERE m.`active` = 1' : ''); + $sql.= ' ORDER BY m.`name` ASC'.($p ? ' LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n) : ''); + $manufacturers = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + if ($manufacturers === false) + return false; + if ($getNbProducts) + { + $sqlGroups = ''; + if (!$all_group) + { + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + } + foreach ($manufacturers as $key => $manufacturer) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT p.`id_product` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`) + WHERE m.`id_manufacturer` = '.(int)($manufacturer['id_manufacturer']). + ($active ? ' AND p.`active` = 1 ' : ''). + ($all_group ? '' : ' AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.')')); + + $manufacturers[$key]['nb_products'] = sizeof($result); + } + } + for ($i = 0; $i < sizeof($manufacturers); $i++) + if ((int)(Configuration::get('PS_REWRITING_SETTINGS'))) + $manufacturers[$i]['link_rewrite'] = Tools::link_rewrite($manufacturers[$i]['name'], false); + else + $manufacturers[$i]['link_rewrite'] = 0; + return $manufacturers; + } + + /** + * @deprecated + */ + static public function getManufacturersWithoutAddress() + { + Tools::displayAsDeprecated(); + $sql = 'SELECT m.* FROM `'._DB_PREFIX_.'manufacturer` m + LEFT JOIN `'._DB_PREFIX_.'address` a ON (a.`id_manufacturer` = m.`id_manufacturer` AND a.`deleted` = 0) + WHERE a.`id_manufacturer` IS NULL'; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + } + + /** + * Return name from id + * + * @param integer $id_manufacturer Manufacturer ID + * @return string name + */ + static protected $cacheName = array(); + static public function getNameById($id_manufacturer) + { + if (!isset(self::$cacheName[$id_manufacturer])) + self::$cacheName[$id_manufacturer] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `name` FROM `'._DB_PREFIX_.'manufacturer` WHERE `id_manufacturer` = '.(int)($id_manufacturer).' AND `active` = 1'); + return self::$cacheName[$id_manufacturer]; + } + + static public function getIdByName($name) + { + $result = Db::getInstance()->getRow(' + SELECT `id_manufacturer` + FROM `'._DB_PREFIX_.'manufacturer` + WHERE `name` = \''.pSQL($name).'\''); + if (isset($result['id_manufacturer'])) + return (int)($result['id_manufacturer']); + return false; + } + + public function getLink() + { + return Tools::link_rewrite($this->name, false); + } + + static public function getProducts($id_manufacturer, $id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true) + { + if ($p < 1) $p = 1; + if (empty($orderBy) ||$orderBy == 'position') $orderBy = 'name'; + if (empty($orderWay)) $orderWay = 'ASC'; + + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die (Tools::displayError()); + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + /* Return only the number of products */ + if ($getTotal) + { + $sql = ' + SELECT p.`id_product` + FROM `'._DB_PREFIX_.'product` p + WHERE p.id_manufacturer = '.(int)($id_manufacturer) + .($active ? ' AND p.`active` = 1' : '').' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + )'; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + return (int)(sizeof($result)); + } + $sql = ' + SELECT p.*, pa.`id_product_attribute`, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name, t.`rate`, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, + (p.`price` * ((100 + (t.`rate`))/100)) AS orderprice + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` + WHERE p.`id_manufacturer` = '.(int)($id_manufacturer).($active ? ' AND p.`active` = 1' : '').' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY '.(($orderBy == 'id_product') ? 'p.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' + LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + if (!$result) + return false; + if ($orderBy == 'price') + Tools::orderbyPrice($result, $orderWay); + return Product::getProductsProperties($id_lang, $result); + } + + public function getProductsLite($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT p.`id_product`, pl.`name` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + WHERE p.`id_manufacturer` = '.(int)($this->id)); + } + /* + * Specify if a manufacturer already in base + * + * @param $id_manufacturer Manufacturer id + * @return boolean + */ + static public function manufacturerExists($id_manufacturer) + { + $row = Db::getInstance()->getRow(' + SELECT `id_manufacturer` + FROM '._DB_PREFIX_.'manufacturer m + WHERE m.`id_manufacturer` = '.(int)($id_manufacturer)); + + return isset($row['id_manufacturer']); + } + + public function getAddresses($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT a.*, cl.name AS `country`, s.name AS `state` + FROM `'._DB_PREFIX_.'address` AS a + LEFT JOIN `'._DB_PREFIX_.'country_lang` AS cl ON (cl.`id_country` = a.`id_country` AND cl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'state` AS s ON (s.`id_state` = a.`id_state`) + WHERE `id_manufacturer` = '.(int)($this->id).' + AND a.`deleted` = 0'); + } +} + diff --git a/classes/Message.php b/classes/Message.php new file mode 100644 index 000000000..045304463 --- /dev/null +++ b/classes/Message.php @@ -0,0 +1,165 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class MessageCore extends ObjectModel +{ + public $id; + + /** @var string message content */ + public $message; + + /** @var integer Cart ID (if applicable) */ + public $id_cart; + + /** @var integer Order ID (if applicable) */ + public $id_order; + + /** @var integer Customer ID (if applicable) */ + public $id_customer; + + /** @var integer Employee ID (if applicable) */ + public $id_employee; + + /** @var boolean Message is not displayed to the customer */ + public $private; + + /** @var string Object creation date */ + public $date_add; + + protected $fieldsRequired = array('message'); + protected $fieldsSize = array('message' => 1600); + protected $fieldsValidate = array( + 'message' => 'isCleanHtml', 'id_cart' => 'isUnsignedId', 'id_order' => 'isUnsignedId', + 'id_customer' => 'isUnsignedId', 'id_employee' => 'isUnsignedId', 'private' => 'isBool'); + + protected $table = 'message'; + protected $identifier = 'id_message'; + + public function getFields() + { + parent::validateFields(); + + $fields['message'] = pSQL($this->message, true); + $fields['id_cart'] = (int)($this->id_cart); + $fields['id_order'] = (int)($this->id_order); + $fields['id_customer'] = (int)($this->id_customer); + $fields['id_employee'] = (int)($this->id_employee); + $fields['private'] = (int)($this->private); + $fields['date_add'] = pSQL($this->date_add); + + return $fields; + } + + /** + * Return the last message from cart + * + * @param integer $id_cart Cart ID + * @return array Message + */ + static public function getMessageByCartId($id_cart) + { + $db = Db::getInstance(); + $result = $db->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'message` + WHERE `id_cart` = '.(int)($id_cart)); + + return $result; + } + + /** + * Return messages from Order ID + * + * @param integer $id_order Order ID + * @param boolean $private return WITH private messages + * @return array Messages + */ + static public function getMessagesByOrderId($id_order, $private = false) + { + if (!Validate::isBool($private)) + die(Tools::displayError()); + + global $cookie; + + return Db::getInstance()->ExecuteS(' + SELECT m.*, c.`firstname` AS cfirstname, c.`lastname` AS clastname, e.`firstname` AS efirstname, e.`lastname` AS elastname, (COUNT(mr.id_message) = 0 AND m.id_customer != 0) AS is_new_for_me + FROM `'._DB_PREFIX_.'message` m + LEFT JOIN `'._DB_PREFIX_.'customer` c ON m.`id_customer` = c.`id_customer` + LEFT JOIN `'._DB_PREFIX_.'message_readed` mr ON (mr.id_message = m.id_message AND mr.id_employee = '.(int)$cookie->id_employee.') + LEFT OUTER JOIN `'._DB_PREFIX_.'employee` e ON e.`id_employee` = m.`id_employee` + WHERE id_order = '.(int)$id_order.' + '.(!$private ? ' AND m.`private` = 0' : '').' + GROUP BY m.id_message + ORDER BY m.date_add DESC'); + } + + /** + * Return messages from Cart ID + * + * @param integer $id_order Order ID + * @param boolean $private return WITH private messages + * @return array Messages + */ + static public function getMessagesByCartId($id_cart, $private = false) + { + if (!Validate::isBool($private)) + die(Tools::displayError()); + + global $cookie; + + return Db::getInstance()->ExecuteS(' + SELECT m.*, c.`firstname` AS cfirstname, c.`lastname` AS clastname, e.`firstname` AS efirstname, e.`lastname` AS elastname, (COUNT(mr.id_message) = 0 AND m.id_customer != 0) AS is_new_for_me + FROM `'._DB_PREFIX_.'message` m + LEFT JOIN `'._DB_PREFIX_.'customer` c ON m.`id_customer` = c.`id_customer` + LEFT JOIN `'._DB_PREFIX_.'message_readed` mr ON (mr.id_message = m.id_message AND mr.id_employee = '.(int)$cookie->id_employee.') + LEFT OUTER JOIN `'._DB_PREFIX_.'employee` e ON e.`id_employee` = m.`id_employee` + WHERE id_cart = '.(int)$id_cart.' + '.(!$private ? ' AND m.`private` = 0' : '').' + GROUP BY m.id_message + ORDER BY m.date_add DESC'); + } + + /** + * Registered a message 'readed' + * + * @param integer $id_message Message ID + * @param integer $id_emplyee Employee ID + */ + static public function markAsReaded($id_message, $id_employee) + { + if (!Validate::isUnsignedId($id_message) OR !Validate::isUnsignedId($id_employee)) + die(Tools::displayError()); + + $result = Db::getInstance()->Execute(' + INSERT INTO '._DB_PREFIX_.'message_readed (id_message , id_employee , date_add) VALUES + ('.(int)($id_message).', '.(int)($id_employee).', NOW()); + '); + return $result; + } +} + + diff --git a/classes/Meta.php b/classes/Meta.php new file mode 100644 index 000000000..363629e97 --- /dev/null +++ b/classes/Meta.php @@ -0,0 +1,184 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class MetaCore extends ObjectModel +{ + /** @var string Name */ + public $page; + + public $title; + public $description; + public $keywords; + public $url_rewrite; + + protected $fieldsRequired = array('page'); + protected $fieldsSize = array('page' => 64); + protected $fieldsValidate = array('page' => 'isFileName'); + + protected $fieldsRequiredLang = array(); + protected $fieldsSizeLang = array('title' => 128, 'description' => 255, 'keywords' => 255, 'url_rewrite' => 255); + protected $fieldsValidateLang = array('title' => 'isGenericName', 'description' => 'isGenericName', 'keywords' => 'isGenericName', 'url_rewrite' => 'isLinkRewrite'); + + protected $table = 'meta'; + protected $identifier = 'id_meta'; + + public function getFields() + { + parent::validateFields(); + return array('page' => pSQL($this->page)); + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('title', 'description', 'keywords', 'url_rewrite')); + } + + static public function getPages($excludeFilled = false, $addPage = false) + { + $selectedPages = array(); + if (!$files = scandir(_PS_ROOT_DIR_)) + die(Tools::displayError('Cannot scan root directory')); + + // Exclude pages forbidden + $exludePages = array('category', 'changecurrency', 'cms', 'footer', 'header', 'images.inc', 'init', + 'pagination', 'product', 'product-sort', 'statistics'); + foreach ($files as $file) + if (preg_match('/^[a-z0-9_.-]*\.php$/i', $file) AND !in_array(str_replace('.php', '', $file), $exludePages)) + $selectedPages[] = str_replace('.php', '', $file); + // Exclude page already filled + if ($excludeFilled) + { + $metas = self::getMetas(); + foreach ($metas as $k => $meta) + if (in_array($meta['page'], $selectedPages)) + unset($selectedPages[array_search($meta['page'], $selectedPages)]); + } + // Add selected page + if ($addPage) + { + $selectedPages[] = $addPage; + sort($selectedPages); + } + return $selectedPages; + } + + static public function getMetas() + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM '._DB_PREFIX_.'meta + ORDER BY page ASC'); + } + + static public function getMetasByIdLang($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'meta` m + LEFT JOIN `'._DB_PREFIX_.'meta_lang` ml ON m.`id_meta` = ml.`id_meta` + WHERE ml.`id_lang` = '.(int)($id_lang).' + ORDER BY page ASC'); + + } + + static public function getMetaByPage($page, $id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT * + FROM '._DB_PREFIX_.'meta m + LEFT JOIN '._DB_PREFIX_.'meta_lang ml on (m.id_meta = ml.id_meta) + WHERE m.page = \''.pSQL($page).'\' AND ml.id_lang = '.(int)($id_lang)); + } + + public function update($nullValues = false) + { + if (!parent::update($nullValues)) + return false; + + return Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + } + + public function add($autodate = true, $nullValues = false) + { + if (!parent::add($autodate, $nullValues)); + + return Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + } + + public function delete() + { + if (!parent::delete()) + return false; + + return Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + } + + public function deleteSelection($selection) + { + if (!is_array($selection) OR !Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + $result = true; + foreach ($selection AS $id) + { + $this->id = (int)($id); + $result = $result AND $this->delete(); + } + + return Tools::generateHtaccess(dirname(__FILE__).'/../.htaccess', + (int)(Configuration::get('PS_REWRITING_SETTINGS')), + (int)(Configuration::get('PS_HTACCESS_CACHE_CONTROL')), + Configuration::get('PS_HTACCESS_SPECIFIC') + ); + } + + static public function getEquivalentUrlRewrite($new_id_lang, $id_lang, $url_rewrite) + { + return Db::getInstance()->getValue(' + SELECT url_rewrite + FROM `'._DB_PREFIX_.'meta_lang` + WHERE id_meta = ( + SELECT id_meta + FROM `'._DB_PREFIX_.'meta_lang` + WHERE url_rewrite = \''.pSQL($url_rewrite).'\' AND id_lang = '.(int)($id_lang).' + ) + AND id_lang = '.(int)($new_id_lang)); + } +} + diff --git a/classes/Module.php b/classes/Module.php new file mode 100644 index 000000000..91028c119 --- /dev/null +++ b/classes/Module.php @@ -0,0 +1,932 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class ModuleCore +{ + /** @var integer Module ID */ + public $id = NULL; + + /** @var float Version */ + public $version; + + /** @var string Unique name */ + public $name; + + /** @var string Human name */ + public $displayName; + + /** @var string A little description of the module */ + public $description; + + /** @var string author of the module */ + public $author; + + /** @var string Admin tab correponding to the module */ + public $tab = NULL; + + /** @var boolean Status */ + public $active = false; + + /** @var array current language translations */ + protected $_lang = array(); + + /** @var string Module web path (eg. '/shop/modules/modulename/') */ + protected $_path = NULL; + + /** @var string Fill it if the module is installed but not yet set up */ + public $warning; + + /** @var string Message display before uninstall a module */ + public $beforeUninstall = NULL; + + public $_errors = false; + + protected $table = 'module'; + + protected $identifier = 'id_module'; + + static public $_db; + + /** @var array to store the limited country */ + public $limited_countries = array(); + + /** + * Constructor + * + * @param string $name Module unique name + */ + protected static $modulesCache; + protected static $_hookModulesCache; + + protected static $_INSTANCE = array(); + + protected static $_generateConfigXmlMode = false; + + protected static $l_cache = array(); + + /** + * @var array used by AdminTab to determine which lang file to use (admin.php or module lang file) + */ + public static $classInModule = array(); + + public function __construct($name = NULL) + { + global $cookie; + + if ($this->name == NULL) + $this->name = $this->id; + if ($this->name != NULL) + { + if (self::$modulesCache == NULL AND !is_array(self::$modulesCache)) + { + self::$modulesCache = array(); + $result = Db::getInstance()->ExecuteS('SELECT * FROM `'.pSQL(_DB_PREFIX_.$this->table).'`'); + foreach ($result as $row) + self::$modulesCache[$row['name']] = $row; + } + if (!isset(self::$modulesCache[$this->name])) + return false; + $this->active = true; + $this->id = self::$modulesCache[$this->name]['id_module']; + foreach (self::$modulesCache[$this->name] AS $key => $value) + if (key_exists($key, $this)) + $this->{$key} = $value; + $this->_path = __PS_BASE_URI__.'modules/'.$this->name.'/'; + } + } + + /** + * Insert module into datable + */ + public function install() + { + if (!Validate::isModuleName($this->name)) + die(Tools::displayError()); + $result = Db::getInstance()->getRow(' + SELECT `id_module` + FROM `'._DB_PREFIX_.'module` + WHERE `name` = \''.pSQL($this->name).'\''); + if ($result) + return false; + $result = Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table, array('name' => $this->name, 'active' => 1), 'INSERT'); + if (!$result) + return false; + $this->id = Db::getInstance()->Insert_ID(); + return true; + } + + /** + * Delete module from datable + * + * @return boolean result + */ + public function uninstall() + { + if (!Validate::isUnsignedId($this->id)) + return false; + $result = Db::getInstance()->ExecuteS(' + SELECT `id_hook` + FROM `'._DB_PREFIX_.'hook_module` hm + WHERE `id_module` = '.(int)($this->id)); + foreach ($result AS $row) + { + Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'hook_module` + WHERE `id_module` = '.(int)($this->id).' + AND `id_hook` = '.(int)($row['id_hook'])); + $this->cleanPositions($row['id_hook']); + } + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'module` + WHERE `id_module` = '.(int)($this->id)); + } + + /** + * Called when module is set to active + */ + public function enable() + { + return Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'module` + SET `active`= 1 + WHERE `name` = \''.pSQL($this->name).'\''); + } + + /** + * Called when module is set to deactive + */ + public function disable() + { + return Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'module` + SET `active`= 0 + WHERE `name` = \''.pSQL($this->name).'\''); + } + + /** + * Connect module to a hook + * + * @param string $hook_name Hook name + * @return boolean result + */ + public function registerHook($hook_name) + { + if (!Validate::isHookName($hook_name)) + die(Tools::displayError()); + if (!isset($this->id) OR !is_numeric($this->id)) + return false; + + // Check if already register + $result = Db::getInstance()->getRow(' + SELECT hm.`id_module` FROM `'._DB_PREFIX_.'hook_module` hm, `'._DB_PREFIX_.'hook` h + WHERE hm.`id_module` = '.(int)($this->id).' + AND h.`name` = \''.pSQL($hook_name).'\' + AND h.`id_hook` = hm.`id_hook`'); + if ($result) + return true; + + // Get hook id + $result = Db::getInstance()->getRow(' + SELECT `id_hook` + FROM `'._DB_PREFIX_.'hook` + WHERE `name` = \''.pSQL($hook_name).'\''); + if (!isset($result['id_hook'])) + return false; + + // Get module position in hook + $result2 = Db::getInstance()->getRow(' + SELECT MAX(`position`) AS position + FROM `'._DB_PREFIX_.'hook_module` + WHERE `id_hook` = '.(int)($result['id_hook'])); + if (!$result2) + return false; + + // Register module in hook + $return = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'hook_module` (`id_module`, `id_hook`, `position`) + VALUES ('.(int)($this->id).', '.(int)($result['id_hook']).', '.(int)($result2['position'] + 1).')'); + + $this->cleanPositions((int)($result['id_hook'])); + + return $return; + } + + /** + * Display flags in forms for translations + * + * @param array $languages All languages available + * @param integer $defaultLanguage Default language id + * @param string $ids Multilingual div ids in form + * @param string $id Current div id] + * #param boolean $return define the return way : false for a display, true for a return + */ + public function displayFlags($languages, $defaultLanguage, $ids, $id, $return = false) + { + if (sizeof($languages) == 1) + return false; + $output = ' +
+ +
+
+ '.$this->l('Choose language:').'

'; + foreach ($languages as $language) + $output .= ''.$language['name'].' '; + $output .= '
'; + + if ($return) + return $output; + echo $output; + } + + /** + * Unregister module from hook + * + * @param int $id_hook Hook id + * @return boolean result + */ + public function unregisterHook($hook_id) + { + return Db::getInstance()->Execute(' + DELETE + FROM `'._DB_PREFIX_.'hook_module` + WHERE `id_module` = '.(int)($this->id).' + AND `id_hook` = '.(int)($hook_id)); + } + + /** + * Unregister exceptions linked to module + * + * @param int $id_hook Hook id + * @return boolean result + */ + public function unregisterExceptions($hook_id) + { + return Db::getInstance()->Execute(' + DELETE + FROM `'._DB_PREFIX_.'hook_module_exceptions` + WHERE `id_module` = '.(int)($this->id).' + AND `id_hook` = '.(int)($hook_id)); + } + + /** + * Add exceptions for module->Hook + * + * @param int $id_hook Hook id + * @param array $excepts List of file name + * @return boolean result + */ + public function registerExceptions($id_hook, $excepts) + { + foreach ($excepts AS $except) + { + if (!empty($except)) + { + $result = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'hook_module_exceptions` (`id_module`, `id_hook`, `file_name`) + VALUES ('.(int)($this->id).', '.(int)($id_hook).', \''.pSQL(strval($except)).'\')'); + if (!$result) + return false; + } + } + return true; + } + + public function editExceptions($id_hook, $excepts) + { + // Cleaning... + Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'hook_module_exceptions` + WHERE `id_module` = '.(int)($this->id).' AND `id_hook` ='.(int)($id_hook)); + return $this->registerExceptions($id_hook, $excepts); + } + + + /** + * This function is used to determine the module name + * of an AdminTab which belongs to a module, in order to keep translation + * related to a module in its directory (instead of $_LANGADM) + * + * @param mixed $currentClass the + * @return boolean|string if the class belongs to a module, will return the module name. Otherwise, return false. + */ + public static function getModuleNameFromClass($currentClass) + { + // Module can now define AdminTab keeping the module translations method, + // i.e. in modules/[module name]/[iso_code].php + if (!isset(self::$classInModule[$currentClass])) + { + global $_MODULES; + $_MODULE = array(); + $reflectionClass = new ReflectionClass($currentClass); + $filePath = realpath($reflectionClass->getFileName()); + $realpathModuleDir = realpath(_PS_MODULE_DIR_); + if (substr(realpath($filePath), 0, strlen($realpathModuleDir)) == $realpathModuleDir) + { + self::$classInModule[$currentClass] = substr(dirname($filePath), strlen($realpathModuleDir)+1); + + $id_lang = (!isset($cookie) OR !is_object($cookie)) ? (int)(Configuration::get('PS_LANG_DEFAULT')) : (int)($cookie->id_lang); + $file = _PS_MODULE_DIR_.self::$classInModule[$currentClass].'/'.Language::getIsoById($id_lang).'.php'; + if (Tools::file_exists_cache($file) AND include_once($file)) + $_MODULES = !empty($_MODULES) ? array_merge($_MODULES, $_MODULE) : $_MODULE; + } + else + self::$classInModule[$currentClass] = false; + } + // return name of the module, or false + return self::$classInModule[$currentClass]; + } + + /** + * Return an instance of the specified module + * + * @param string $moduleName Module name + * @return Module instance + */ + static public function getInstanceByName($moduleName) + { + if (!Tools::file_exists_cache(_PS_MODULE_DIR_.$moduleName.'/'.$moduleName.'.php')) + return false; + include_once(_PS_MODULE_DIR_.$moduleName.'/'.$moduleName.'.php'); + if (!class_exists($moduleName, false)) + return false; + + if (!isset(self::$_INSTANCE[$moduleName])) + self::$_INSTANCE[$moduleName] = new $moduleName; + return self::$_INSTANCE[$moduleName]; + } + + /** + * Return an instance of the specified module + * + * @param integer $id_module Module ID + * @return Module instance + */ + static public function getInstanceById($id_module) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name` + FROM `'._DB_PREFIX_.'module` + WHERE `id_module` = '.(int)($id_module)); + return ($result ? Module::getInstanceByName($result['name']) : false); + } + + /** + * Return available modules + * + * @param boolean $useConfig in order to use config.xml file in module dir + * @return array Modules + */ + public static function getModulesOnDisk($useConfig = false) + { + global $cookie, $_MODULES; + + $moduleList = array(); + $errors = array(); + $modules_dir = self::getModulesDirOnDisk(); + foreach ($modules_dir AS $module) + { + $configFile = _PS_MODULE_DIR_.$module.'/config.xml'; + $xml_exist = file_exists($configFile); + if ($xml_exist) + $needNewConfigFile = (filemtime($configFile) < filemtime(_PS_MODULE_DIR_.$module.'/'.$module.'.php')); + else + $needNewConfigFile = true; + if ($useConfig AND $xml_exist) + { + $xml_module = simplexml_load_file($configFile); + if ((int)$xml_module->need_instance == 0 AND !$needNewConfigFile) + { + $file = _PS_MODULE_DIR_.$module.'/'.Language::getIsoById($cookie->id_lang).'.php'; + if (Tools::file_exists_cache($file) AND include_once($file)) + if(isset($_MODULE) AND is_array($_MODULE)) + $_MODULES = !empty($_MODULES) ? array_merge($_MODULES, $_MODULE) : $_MODULE; + + $xml_module->displayName = Module::findTranslation($xml_module->name, $xml_module->displayName, (string)$xml_module->name); + $xml_module->description = Module::findTranslation($xml_module->name, $xml_module->description, (string)$xml_module->name); + $xml_module->author = Module::findTranslation($xml_module->name, $xml_module->author, (string)$xml_module->name); + + if(isset($xml_module->confirmUninstall)) + $xml_module->confirmUninstall = Module::findTranslation($xml_module->name, $xml_module->confirmUninstall, (string)$xml_module->name); + + + $result = Db::getInstance()->getRow('SELECT `id_module`, `active` FROM `'._DB_PREFIX_.'module` WHERE `name` = \''.strval($xml_module->name).'\''); + if (isset($result['active']) AND $result['active']) + $xml_module->active = $result['active']; + if (isset($result['id_module']) AND $result['id_module']) + $xml_module->id = $result['id_module']; + $moduleList[] = $xml_module; + } + } + if (!$useConfig OR !$xml_exist OR (isset($xml_module->need_instance) AND (int)$xml_module->need_instance == 1) OR $needNewConfigFile) + { + $file = trim(file_get_contents(_PS_MODULE_DIR_.$module.'/'.$module.'.php')); + if (substr($file, 0, 5) == '') + $file = substr($file, 0, -2); + if (class_exists($module, false) OR eval($file) !== false) + { + $moduleList[] = new $module; + if (!$xml_exist OR $needNewConfigFile) + { + self::$_generateConfigXmlMode = true; + $tmpModule = new $module; + $tmpModule->_generateConfigXml((isset($xml_module->need_instance) ? (int)$xml_module->need_instance : 1)); + self::$_generateConfigXmlMode = false; + } + } + else + $errors[] = $module; + } + } + + if (sizeof($errors)) + { + echo '

'.Tools::displayError('Parse error(s) in module(s)').'

    '; + foreach ($errors AS $error) + echo '
  1. '.$error.'
  2. '; + echo '
'; + } + return $moduleList; + } + + public static function getModulesDirOnDisk() + { + $moduleList = array(); + $modules = scandir(_PS_MODULE_DIR_); + foreach ($modules AS $name) + { + if (Tools::file_exists_cache($moduleFile = _PS_MODULE_DIR_.'/'.$name.'/'.$name.'.php')) + { + if (!Validate::isModuleName($name)) + die(Tools::displayError().' (Module '.$name.')'); + $moduleList[] = $name; + } + } + return $moduleList; + } + + /** + * Return installed modules + * + * @param int $position Take only positionnables modules + * @return array Modules + */ + public static function getModulesInstalled($position = 0) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'module` m + '.($position ? ' + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON m.`id_module` = hm.`id_module` + LEFT JOIN `'._DB_PREFIX_.'hook` k ON hm.`id_hook` = k.`id_hook` + WHERE k.`position` = 1' : '')); + } + + /* + * Execute modules for specified hook + * + * @param string $hook_name Hook Name + * @param array $hookArgs Parameters for the functions + * @return string modules output + */ + public static function hookExec($hook_name, $hookArgs = array(), $id_module = NULL) + { + global $cookie; + if ((!empty($id_module) AND !Validate::isUnsignedId($id_module)) OR !Validate::isHookName($hook_name)) + die(Tools::displayError()); + + global $cart, $cookie; + $live_edit = false; + if (!isset($hookArgs['cookie']) OR !$hookArgs['cookie']) + $hookArgs['cookie'] = $cookie; + if (!isset($hookArgs['cart']) OR !$hookArgs['cart']) + $hookArgs['cart'] = $cart; + $hook_name = strtolower($hook_name); + + if (!isset(self::$_hookModulesCache)) + { + $db = Db::getInstance(_PS_USE_SQL_SLAVE_); + $result = $db->ExecuteS(' + SELECT h.`name` as hook, m.`id_module`, h.`id_hook`, m.`name` as module, h.`live_edit` + FROM `'._DB_PREFIX_.'module` m + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON hm.`id_module` = m.`id_module` + LEFT JOIN `'._DB_PREFIX_.'hook` h ON hm.`id_hook` = h.`id_hook` + AND m.`active` = 1 + ORDER BY hm.`position`', false); + self::$_hookModulesCache = array(); + + if ($result) + while ($row = $db->nextRow()) + { + $row['hook'] = strtolower($row['hook']); + if (!isset(self::$_hookModulesCache[$row['hook']])) + self::$_hookModulesCache[$row['hook']] = array(); + self::$_hookModulesCache[$row['hook']][] = array('id_hook' => $row['id_hook'], 'module' => $row['module'], 'id_module' => $row['id_module'], 'live_edit' => $row['live_edit']); + } + } + + if (!isset(self::$_hookModulesCache[$hook_name])) + return; + + $altern = 0; + $output = ''; + foreach (self::$_hookModulesCache[$hook_name] AS $array) + { + if ($id_module AND $id_module != $array['id_module']) + continue; + if (!($moduleInstance = Module::getInstanceByName($array['module']))) + continue; + + $exceptions = $moduleInstance->getExceptions((int)$array['id_hook'], (int)$array['id_module']); + foreach ($exceptions AS $exception) + if (strstr(basename($_SERVER['PHP_SELF']).'?'.$_SERVER['QUERY_STRING'], $exception['file_name'])) + continue 2; + + if (is_callable(array($moduleInstance, 'hook'.$hook_name))) + { + $hookArgs['altern'] = ++$altern; + + $display = call_user_func(array($moduleInstance, 'hook'.$hook_name), $hookArgs); + if ($array['live_edit'] && ((Tools::isSubmit('live_edit') AND $ad = Tools::getValue('ad') AND (Tools::getValue('liveToken') == sha1(Tools::getValue('ad')._COOKIE_KEY_))))) + { + $live_edit = true; + $output .= ' +
+ ' + .$moduleInstance->displayName.' + + + + + '.$display.'
'; + } + else + $output .= $display; + } + } + return ($live_edit ? '
' : '').$output.($live_edit ? '
' : ''); + } + + public static function hookExecPayment() + { + global $cart, $cookie; + $hookArgs = array('cookie' => $cookie, 'cart' => $cart); + $id_customer = (int)($cookie->id_customer); + $billing = new Address((int)($cart->id_address_invoice)); + $output = ''; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT DISTINCT h.`id_hook`, m.`name`, hm.`position` + FROM `'._DB_PREFIX_.'module_country` mc + LEFT JOIN `'._DB_PREFIX_.'module` m ON m.`id_module` = mc.`id_module` + INNER JOIN `'._DB_PREFIX_.'module_group` mg ON (m.`id_module` = mg.`id_module`) + INNER JOIN `'._DB_PREFIX_.'customer_group` cg on (cg.`id_group` = mg.`id_group` AND cg.`id_customer` = '.(int)($id_customer).') + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON hm.`id_module` = m.`id_module` + LEFT JOIN `'._DB_PREFIX_.'hook` h ON hm.`id_hook` = h.`id_hook` + WHERE h.`name` = \'payment\' + AND mc.id_country = '.(int)($billing->id_country).' + AND m.`active` = 1 + ORDER BY hm.`position`, m.`name` DESC'); + if ($result) + foreach ($result AS $k => $module) + if (($moduleInstance = Module::getInstanceByName($module['name'])) AND is_callable(array($moduleInstance, 'hookpayment'))) + if (!$moduleInstance->currencies OR ($moduleInstance->currencies AND sizeof(Currency::checkPaymentCurrencies($moduleInstance->id)))) + $output .= call_user_func(array($moduleInstance, 'hookpayment'), $hookArgs); + return $output; + } + + /** + * find translation from $_MODULES and put it in self::$l_cache if not already exist + * and return it. + * + * @param string $name name of the module + * @param string $string term to find + * @param string $source additional param for building translation key + * @return string + */ + public static function findTranslation($name, $string, $source) + { + global $_MODULES; + + $cache_key = $name . '|' . $string . '|' . $source; + + if (!isset(self::$l_cache[$cache_key])) + { + if (!is_array($_MODULES)) + return str_replace('"', '"', $string); + // set array key to lowercase for 1.3 compatibility + $_MODULES = array_change_key_case($_MODULES); + $currentKey = '<{'.strtolower($name).'}'.strtolower(_THEME_NAME_).'>'.strtolower($source).'_'.md5($string); + $defaultKey = '<{'.strtolower($name).'}prestashop>'.strtolower($source).'_'.md5($string); + + if (isset($_MODULES[$currentKey])) + $ret = stripslashes($_MODULES[$currentKey]); + elseif (isset($_MODULES[Tools::strtolower($currentKey)])) + $ret = stripslashes($_MODULES[Tools::strtolower($currentKey)]); + elseif (isset($_MODULES[$defaultKey])) + $ret = stripslashes($_MODULES[$defaultKey]); + elseif (isset($_MODULES[Tools::strtolower($defaultKey)])) + $ret = stripslashes($_MODULES[Tools::strtolower($defaultKey)]); + else + $ret = stripslashes($string); + + self::$l_cache[$cache_key] = str_replace('"', '"', $ret); + } + return self::$l_cache[$cache_key]; + } + /** + * Get translation for a given module text + * + * Note: $specific parameter is mandatory for library files. + * Otherwise, translation key will not match for Module library + * when module is loaded with eval() Module::getModulesOnDisk() + * + * @param string $string String to translate + * @param boolean|string $specific filename to use in translation key + * @return string Translation + */ + public function l($string, $specific = false) + { + if (self::$_generateConfigXmlMode) + return $string; + + global $_MODULES, $_MODULE, $cookie; + + $id_lang = (!isset($cookie) OR !is_object($cookie)) ? (int)(Configuration::get('PS_LANG_DEFAULT')) : (int)($cookie->id_lang); + $file = _PS_MODULE_DIR_.$this->name.'/'.Language::getIsoById($id_lang).'.php'; + if (Tools::file_exists_cache($file) AND include_once($file)) + $_MODULES = !empty($_MODULES) ? array_merge($_MODULES, $_MODULE) : $_MODULE; + + $source = $specific ? $specific : $this->name; + $string = str_replace('\'', '\\\'', $string); + $ret = $this->findTranslation($this->name, $string, $source); + return $ret; + } + + /* + * Reposition module + * + * @param boolean $id_hook Hook ID + * @param boolean $way Up (1) or Down (0) + * @param intger $position + */ + public function updatePosition($id_hook, $way, $position = NULL) + { + if (!$res = Db::getInstance()->ExecuteS(' + SELECT hm.`id_module`, hm.`position`, hm.`id_hook` + FROM `'._DB_PREFIX_.'hook_module` hm + WHERE hm.`id_hook` = '.(int)($id_hook).' + ORDER BY hm.`position` '.((int)($way) ? 'ASC' : 'DESC'))) + return false; + foreach ($res AS $key => $values) + if ((int)($values[$this->identifier]) == (int)($this->id)) + { + $k = $key ; + break ; + } + if (!isset($k) OR !isset($res[$k]) OR !isset($res[$k + 1])) + return false; + $from = $res[$k]; + $to = $res[$k + 1]; + + if (isset($position) and !empty($position)) + $to['position'] = (int)($position); + + return (Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'hook_module` + SET `position`= position '.($way ? '-1' : '+1').' + WHERE position between '.(int)(min(array($from['position'], $to['position']))) .' AND '.(int)(max(array($from['position'], $to['position']))).' + AND `id_hook`='.(int)($from['id_hook'])) + AND + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'hook_module` + SET `position`='.(int)($to['position']).' + WHERE `'.pSQL($this->identifier).'` = '.(int)($from[$this->identifier]).' AND `id_hook`='.(int)($to['id_hook'])) + ); + } + + /* + * Reorder modules position + * + * @param boolean $id_hook Hook ID + */ + public function cleanPositions($id_hook) + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_module` + FROM `'._DB_PREFIX_.'hook_module` + WHERE `id_hook` = '.(int)($id_hook).' + ORDER BY `position`'); + $sizeof = sizeof($result); + for ($i = 0; $i < $sizeof; ++$i) + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'hook_module` + SET `position` = '.(int)($i + 1).' + WHERE `id_hook` = '.(int)($id_hook).' + AND `id_module` = '.(int)($result[$i]['id_module'])); + return true; + } + + /* + * Return module position for a given hook + * + * @param boolean $id_hook Hook ID + * @return integer position + */ + public function getPosition($id_hook) + { + $result = Db::getInstance()->getRow(' + SELECT `position` + FROM `'._DB_PREFIX_.'hook_module` + WHERE `id_hook` = '.(int)($id_hook).' + AND `id_module` = '.(int)($this->id)); + return $result['position']; + } + + public function displayError($error) + { + $output = ' +
+ '.$error.' +
'; + $this->error = true; + return $output; + } + + public function displayConfirmation($string) + { + $output = ' +
+ '.$string.' +
'; + return $output; + } + + /* + * Return exceptions for module in hook + * + * @param int $id_hook Hook ID + * @return array Exceptions + */ + protected static $exceptionsCache = NULL; + public function getExceptions($id_hook) + { + if (self::$exceptionsCache == NULL AND !is_array(self::$exceptionsCache)) + { + self::$exceptionsCache = array(); + $result = Db::getInstance()->ExecuteS(' + SELECT CONCAT(id_hook, \'-\', id_module) as `key`, `file_name` as value + FROM `'._DB_PREFIX_.'hook_module_exceptions`'); + foreach ($result as $row) + { + if (!array_key_exists($row['key'], self::$exceptionsCache)) + self::$exceptionsCache[$row['key']] = array(); + self::$exceptionsCache[$row['key']][] = array('file_name' => $row['value']); + } + } + return (array_key_exists((int)($id_hook).'-'.(int)($this->id), self::$exceptionsCache) ? self::$exceptionsCache[(int)($id_hook).'-'.(int)($this->id)] : array()); + } + + public static function isInstalled($moduleName) + { + Db::getInstance()->Execute('SELECT `id_module` FROM `'._DB_PREFIX_.'module` WHERE `name` = \''.pSQL($moduleName).'\''); + return (bool)Db::getInstance()->NumRows(); + } + + public function isRegisteredInHook($hook) + { + if (!$this->id) + return false; + + return Db::getInstance()->getValue(' + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'hook_module` hm + LEFT JOIN `'._DB_PREFIX_.'hook` h ON (h.`id_hook` = hm.`id_hook`) + WHERE h.`name` = \''.pSQL($hook).'\' + AND hm.`id_module` = '.(int)($this->id) + ); + } + + /* + ** Template management (display, overload, cache) + */ + protected static function _isTemplateOverloadedStatic($moduleName, $template) + { + if (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/'.$moduleName.'/'.$template)) + return true; + elseif (Tools::file_exists_cache(_PS_MODULE_DIR_.$moduleName.'/'.$template)) + return false; + return NULL; + } + + protected function _isTemplateOverloaded($template) + { + return self::_isTemplateOverloadedStatic($this->name, $template); + } + + public static function display($file, $template, $cacheId = NULL, $compileId = NULL) + { + global $smarty; + + if (Configuration::get('PS_FORCE_SMARTY_2')) /* Keep a backward compatibility for Smarty v2 */ + { + $previousTemplate = $smarty->currentTemplate; + $smarty->currentTemplate = substr(basename($template), 0, -4); + } + $smarty->assign('module_dir', __PS_BASE_URI__.'modules/'.basename($file, '.php').'/'); + if (($overloaded = self::_isTemplateOverloadedStatic(basename($file, '.php'), $template)) === NULL) + $result = Tools::displayError('No template found for module').' '.basename($file,'.php'); + else + { + $smarty->assign('module_template_dir', ($overloaded ? _THEME_DIR_ : __PS_BASE_URI__).'modules/'.basename($file, '.php').'/'); + $result = $smarty->fetch(($overloaded ? _PS_THEME_DIR_.'modules/'.basename($file, '.php') : _PS_MODULE_DIR_.basename($file, '.php')).'/'.$template, $cacheId, $compileId); + } + if (Configuration::get('PS_FORCE_SMARTY_2')) /* Keep a backward compatibility for Smarty v2 */ + $smarty->currentTemplate = $previousTemplate; + return $result; + } + + protected function _getApplicableTemplateDir($template) + { + return $this->_isTemplateOverloaded($template) ? _PS_THEME_DIR_ : _PS_MODULE_DIR_.$this->name.'/'; + } + + public function isCached($template, $cacheId = NULL, $compileId = NULL) + { + global $smarty; + + /* Use Smarty 3 API calls */ + if (!Configuration::get('PS_FORCE_SMARTY_2')) /* PHP version > 5.1.2 */ + return $smarty->isCached($this->_getApplicableTemplateDir($template).$template, $cacheId, $compileId); + /* or keep a backward compatibility if PHP version < 5.1.2 */ + else + return $smarty->is_cached($this->_getApplicableTemplateDir($template).$template, $cacheId, $compileId); + } + + protected function _clearCache($template, $cacheId = NULL, $compileId = NULL) + { + global $smarty; + + /* Use Smarty 3 API calls */ + if (!Configuration::get('PS_FORCE_SMARTY_2')) /* PHP version > 5.1.2 */ + return $smarty->clearCache($template ? $this->_getApplicableTemplateDir($template).$template : NULL, $cacheId, $compileId); + /* or keep a backward compatibility if PHP version < 5.1.2 */ + else + return $smarty->clear_cache($template ? $this->_getApplicableTemplateDir($template).$template : NULL, $cacheId, $compileId); + } + + protected function _generateConfigXml($need_instance = 1) + { + $xml = ' + + '.$this->name.' + '.html_entity_decode(addslashes($this->displayName), ENT_COMPAT, 'UTF-8').' + '.$this->version.' + '.html_entity_decode(addslashes(strip_tags($this->description)), ENT_COMPAT, 'UTF-8').' + '.html_entity_decode(addslashes(strip_tags($this->author)), ENT_COMPAT, 'UTF-8').' + '.html_entity_decode(addslashes($this->tab), ENT_COMPAT, 'UTF-8').''.(isset($this->confirmUninstall) ? "\n\t".''.$this->confirmUninstall.'' : '').' + '.(int)method_exists($this, 'getContent').' + '.$need_instance.''.(isset($this->limited_countries) ? "\n\t".''.(sizeof($this->limited_countries) == 1 ? $this->limited_countries[0] : '').'' : '').' +'; + if (is_writable(_PS_MODULE_DIR_.$this->name.'/')) + file_put_contents(_PS_MODULE_DIR_.$this->name.'/config.xml', utf8_encode($xml)); + } + + /** + * @param string $hook_name + * @return bool if module can be transplanted on hook + */ + public function isHookableOn($hook_name) + { + return is_callable(array($this, 'hook'.ucfirst($hook_name))); + } +} + diff --git a/classes/ModuleGraph.php b/classes/ModuleGraph.php new file mode 100644 index 000000000..6153cbff9 --- /dev/null +++ b/classes/ModuleGraph.php @@ -0,0 +1,266 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class ModuleGraphCore extends Module +{ + protected $_employee; + + /** @var integer array graph data */ + protected $_values = array(); + + /** @var string array graph legends (X axis) */ + protected $_legend = array(); + + /**@var string graph titles */ + protected $_titles = array('main' => NULL, 'x' => NULL, 'y' => NULL); + + /** @var ModuleGraphEngine graph engine */ + protected $_render; + + abstract protected function getData($layers); + + public function setEmployee($id_employee) + { + $this->_employee = new Employee((int)($id_employee)); + } + public function setLang($id_lang) + { + $this->_id_lang = $id_lang; + } + + protected function setDateGraph($layers, $legend = false) + { + // Get dates in a manageable format + $fromArray = getdate(strtotime($this->_employee->stats_date_from)); + $toArray = getdate(strtotime($this->_employee->stats_date_to)); + + // If the granularity is inferior to 1 day + if ($this->_employee->stats_date_from == $this->_employee->stats_date_to) + { + if ($legend) + for ($i = 0; $i < 24; $i++) + { + if ($layers == 1) + $this->_values[$i] = 0; + else + for ($j = 0; $j < $layers; $j++) + $this->_values[$j][$i] = 0; + $this->_legend[$i] = ($i % 2) ? '' : sprintf('%02dh', $i); + } + if (is_callable(array($this, 'setDayValues'))) + $this->setDayValues($layers); + } + // If the granularity is inferior to 1 month TODO : change to manage 28 to 31 days + elseif (strtotime($this->_employee->stats_date_to) - strtotime($this->_employee->stats_date_from) <= 2678400) + { + if ($legend) + { + $days = array(); + if ($fromArray['mon'] == $toArray['mon']) + for ($i = $fromArray['mday']; $i <= $toArray['mday']; ++$i) + $days[] = $i; + else + { + $imax = date('t', mktime(0, 0, 0, $fromArray['mon'], 1, $fromArray['year'])); + for ($i = $fromArray['mday']; $i <= $imax; ++$i) + $days[] = $i; + for ($i = 1; $i <= $toArray['mday']; ++$i) + $days[] = $i; + } + foreach ($days as $i) + { + if ($layers == 1) + $this->_values[$i] = 0; + else + for ($j = 0; $j < $layers; $j++) + $this->_values[$j][$i] = 0; + $this->_legend[$i] = ($i % 2) ? '' : sprintf('%02d', $i); + } + } + if (is_callable(array($this, 'setMonthValues'))) + $this->setMonthValues($layers); + } + // If the granularity is superior to 1 month + else + { + if ($legend) + { + $months = array(); + if ($fromArray['year'] == $toArray['year']) + for ($i = $fromArray['mon']; $i <= $toArray['mon']; ++$i) + $months[] = $i; + else + { + for ($i = $fromArray['mon']; $i <= 12; ++$i) + $months[] = $i; + for ($i = 1; $i <= $toArray['mon']; ++$i) + $months[] = $i; + } + foreach ($months as $i) + { + if ($layers == 1) + $this->_values[$i] = 0; + else + for ($j = 0; $j < $layers; $j++) + $this->_values[$j][$i] = 0; + $this->_legend[$i] = sprintf('%02d', $i); + } + } + if (is_callable(array($this, 'setYearValues'))) + $this->setYearValues($layers); + } + } + + protected function csvExport($datas) + { + global $cookie; + $this->setEmployee(intval($cookie->id_employee)); + $this->setLang(intval($cookie->id_lang)); + + $layers = isset($datas['layers']) ? $datas['layers'] : 1; + if (isset($datas['option'])) + $this->setOption($datas['option'], $layers); + $this->getData($layers); + + if (is_array($this->_titles['main'])) + for ($i = 1; $i <= sizeof($this->_titles['main']); $i++) + $this->_csv .= ';'.$this->_titles['main'][$i]; + else + $this->_csv .= ';'.$this->_titles['main']; + $this->_csv .= "\n"; + if (sizeof($this->_legend)) + { + if ($datas['type'] == 'pie') + foreach ($this->_legend AS $key => $legend) + for ($i = 0; $i < (is_array($this->_titles['main']) ? sizeof($this->_values) : 1); ++$i) + $total += (is_array($this->_values[$i]) ? $this->_values[$i][$key] : $this->_values[$key]); + foreach ($this->_legend AS $key => $legend) + { + $this->_csv .= $legend.';'; + for ($i = 0; $i < (is_array($this->_titles['main']) ? sizeof($this->_values) : 1); ++$i) + $this->_csv .= (is_array($this->_values[$i]) ? $this->_values[$i][$key] : $this->_values[$key]) / (($datas['type'] == 'pie') ? $total : 1).';'; + $this->_csv .= "\n"; + } + } + $this->_displayCsv(); + } + + protected function _displayCsv() + { + ob_end_clean(); + header('Content-Type: application/octet-stream'); + header('Content-Disposition: attachment; filename="'.$this->displayName.' - '.time().'.csv"'); + echo $this->_csv; + exit; + } + + public function create($render, $type, $width, $height, $layers) + { + if (!Tools::file_exists_cache($file = dirname(__FILE__).'/../modules/'.$render.'/'.$render.'.php')) + die(Tools::displayError()); + require_once($file); + $this->_render = new $render($type); + + $this->getData($layers); + $this->_render->createValues($this->_values); + $this->_render->setSize($width, $height); + $this->_render->setLegend($this->_legend); + $this->_render->setTitles($this->_titles); + } + + public function draw() + { + $this->_render->draw(); + } + + public static function engine($params) + { + if (!($render = Configuration::get('PS_STATS_RENDER'))) + return Tools::displayError('No graph engine selected'); + if (!file_exists(dirname(__FILE__).'/../modules/'.$render.'/'.$render.'.php')) + return Tools::displayError('Graph engine selected is unavailable.'); + + global $cookie; + $id_employee = (int)($cookie->id_employee); + $id_lang = (int)($cookie->id_lang); + + if (!isset($params['layers'])) + $params['layers'] = 1; + if (!isset($params['type'])) + $params['type'] = 'column'; + if (!isset($params['width'])) + $params['width'] = 550; + if (!isset($params['height'])) + $params['height'] = 270; + + global $cookie; + $id_employee = (int)($cookie->id_employee); + $drawer = 'drawer.php?render='.$render.'&module='.Tools::getValue('module').'&type='.$params['type'].'&layers='.$params['layers'].'&id_employee='.$id_employee.'&id_lang='.$id_lang; + if (isset($params['option'])) + $drawer .= '&option='.$params['option']; + + require_once(dirname(__FILE__).'/../modules/'.$render.'/'.$render.'.php'); + return call_user_func(array($render, 'hookGraphEngine'), $params, $drawer); + } + + protected static function getEmployee($employee = null) + { + if (!$employee) + { + global $cookie; + $employee = new Employee((int)($cookie->id_employee)); + } + + if (empty($employee->stats_date_from) OR empty($employee->stats_date_to) OR $employee->stats_date_from == '0000-00-00' OR $employee->stats_date_to == '0000-00-00') + { + if (empty($employee->stats_date_from) OR $employee->stats_date_from == '0000-00-00') + $employee->stats_date_from = date('Y').'-01-01'; + if (empty($employee->stats_date_to) OR $employee->stats_date_to == '0000-00-00') + $employee->stats_date_to = date('Y').'-12-31'; + $employee->update(); + } + return $employee; + } + + public function getDate() + { + return self::getDateBetween($this->_employee); + } + + public static function getDateBetween($employee = null) + { + $employee = self::getEmployee($employee); + return ' \''.$employee->stats_date_from.' 00:00:00\' AND \''.$employee->stats_date_to.' 23:59:59\' '; + } + + public function getLang() + { + return $this->_id_lang; + } +} + + diff --git a/classes/ModuleGraphEngine.php b/classes/ModuleGraphEngine.php new file mode 100644 index 000000000..5adfb25f0 --- /dev/null +++ b/classes/ModuleGraphEngine.php @@ -0,0 +1,72 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class ModuleGraphEngineCore extends Module +{ + protected $_type; + + public function __construct($type) + { + $this->_type = $type; + } + + public function install() + { + if (!parent::install()) + return false; + return Configuration::updateValue('PS_STATS_RENDER', $this->name); + } + + public static function getGraphEngines() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT m.`name` + FROM `'._DB_PREFIX_.'module` m + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON hm.`id_module` = m.`id_module` + LEFT JOIN `'._DB_PREFIX_.'hook` h ON hm.`id_hook` = h.`id_hook` + WHERE h.`name` = \'GraphEngine\''); + + $arrayEngines = array(); + foreach ($result AS $module) + { + $instance = Module::getInstanceByName($module['name']); + if (!$instance) + continue; + $arrayEngines[$module['name']] = array($instance->displayName, $instance->description); + } + + return $arrayEngines; + } + + abstract public function createValues($values); + abstract public function setSize($width, $height); + abstract public function setLegend($legend); + abstract public function setTitles($titles); + abstract public function draw(); +} + + diff --git a/classes/ModuleGrid.php b/classes/ModuleGrid.php new file mode 100644 index 000000000..f58143a44 --- /dev/null +++ b/classes/ModuleGrid.php @@ -0,0 +1,185 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class ModuleGridCore extends Module +{ + protected $_employee; + + /** @var string array graph data */ + protected $_values = array(); + + /** @var integer total number of values **/ + protected $_totalCount = 0; + + /**@var string graph titles */ + protected $_title; + + /**@var integer start */ + protected $_start; + + /**@var integer limit */ + protected $_limit; + + /**@var string column name on which to sort */ + protected $_sort = null; + + /**@var string sort direction DESC/ASC */ + protected $_direction = null; + + /** @var ModuleGridEngine grid engine */ + protected $_render; + + public function install() + { + return (parent::install()); + } + + public function setEmployee($id_employee) + { + $this->_employee = new Employee((int)($id_employee)); + } + public function setLang($id_lang) + { + $this->_id_lang = $id_lang; + } + + public function create($render, $type, $width, $height, $start, $limit, $sort, $dir) + { + if (!Tools::file_exists_cache($file = dirname(__FILE__).'/../modules/'.$render.'/'.$render.'.php')) + die(Tools::displayError()); + require_once($file); + $this->_render = new $render($type); + + $this->_start = $start; + $this->_limit = $limit; + $this->_sort = $sort; + $this->_direction = $dir; + + $this->getData(); + + $this->_render->setTitle($this->_title); + $this->_render->setSize($width, $height); + $this->_render->setValues($this->_values); + $this->_render->setTotalCount($this->_totalCount); + $this->_render->setLimit($this->_start, $this->_limit); + } + + public function render() + { + $this->_render->render(); + } + + public static function engine($params) + { + if (!($render = Configuration::get('PS_STATS_GRID_RENDER'))) + return Tools::displayError('No grid engine selected'); + if (!file_exists(dirname(__FILE__).'/../modules/'.$render.'/'.$render.'.php')) + return Tools::displayError('Grid engine selected is unavailable.'); + + $grider = 'grider.php?render='.$render.'&module='.Tools::getValue('module'); + + global $cookie; + $grider .= '&id_employee='.(int)($cookie->id_employee); + $grider .= '&id_lang='.(int)($cookie->id_lang); + + if (!isset($params['width']) OR !Validate::IsUnsignedInt($params['width'])) + $params['width'] = 600; + if (!isset($params['height']) OR !Validate::IsUnsignedInt($params['height'])) + $params['height'] = 920; + if (!isset($params['start']) OR !Validate::IsUnsignedInt($params['start'])) + $params['start'] = 0; + if (!isset($params['limit']) OR !Validate::IsUnsignedInt($params['height'])) + $params['limit'] = 40; + + $grider .= '&width='.$params['width']; + $grider .= '&height='.$params['height']; + if (isset($params['start']) AND Validate::IsUnsignedInt($params['start'])) + $grider .= '&start='.$params['start']; + if (isset($params['limit']) AND Validate::IsUnsignedInt($params['limit'])) + $grider .= '&limit='.$params['limit']; + if (isset($params['type']) AND Validate::IsName($params['type'])) + $grider .= '&type='.$params['type']; + if (isset($params['option']) AND Validate::IsGenericName($params['option'])) + $grider .= '&option='.$params['option']; + if (isset($params['sort']) AND Validate::IsName($params['sort'])) + $grider .= '&sort='.$params['sort']; + if (isset($params['dir']) AND Validate::IsSortDirection($params['dir'])) + $grider .= '&dir='.$params['dir']; + + require_once(dirname(__FILE__).'/../modules/'.$render.'/'.$render.'.php'); + return call_user_func(array($render, 'hookGridEngine'), $params, $grider); + } + + protected function csvExport($datas) + { + global $cookie; + $this->_sort = $datas['defaultSortColumn']; + $this->setLang($cookie->id_lang); + $this->getData(); + + $layers = isset($datas['layers']) ? $datas['layers'] : 1; + + if (isset($datas['option'])) + $this->setOption($datas['option'], $layers); + + if (sizeof($datas['columns'])) + { + foreach ($datas['columns'] AS $column) + $this->_csv .= $column['header'].';'; + $this->_csv = rtrim($this->_csv, ';')."\n"; + + foreach ($this->_values AS $value) + { + foreach ($datas['columns'] AS $column) + $this->_csv .= $value[$column['dataIndex']].';'; + $this->_csv = rtrim($this->_csv, ';')."\n"; + } + } + $this->_displayCsv(); + } + + protected function _displayCsv() + { + ob_end_clean(); + header('Content-Type: application/octet-stream'); + header('Content-Disposition: attachment; filename="'.$this->displayName.' - '.time().'.csv"'); + echo $this->_csv; + exit; + } + + abstract protected function getData(); + + public function getDate() + { + return ModuleGraph::getDateBetween($this->_employee); + } + public function getLang() + { + return $this->_id_lang; + } +} + diff --git a/classes/ModuleGridEngine.php b/classes/ModuleGridEngine.php new file mode 100644 index 000000000..56af640d5 --- /dev/null +++ b/classes/ModuleGridEngine.php @@ -0,0 +1,71 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class ModuleGridEngineCore extends Module +{ + protected $_type; + + public function __construct($type) + { + $this->_type = $type; + } + + public function install() + { + if (!parent::install()) + return false; + return Configuration::updateValue('PS_STATS_GRID_RENDER', $this->name); + } + + public static function getGridEngines() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT m.`name` + FROM `'._DB_PREFIX_.'module` m + LEFT JOIN `'._DB_PREFIX_.'hook_module` hm ON hm.`id_module` = m.`id_module` + LEFT JOIN `'._DB_PREFIX_.'hook` h ON hm.`id_hook` = h.`id_hook` + WHERE h.`name` = \'GridEngine\''); + + $arrayEngines = array(); + foreach ($result AS $module) + { + $instance = Module::getInstanceByName($module['name']); + if (!$instance) + continue; + $arrayEngines[$module['name']] = array($instance->displayName, $instance->description); + } + return $arrayEngines; + } + + abstract public function setValues($values); + abstract public function setTitle($title); + abstract public function setSize($width, $height); + abstract public function setTotalCount($totalCount); + abstract public function setLimit($start, $limit); + abstract public function render(); +} + diff --git a/classes/MySQL.php b/classes/MySQL.php new file mode 100644 index 000000000..bab57c317 --- /dev/null +++ b/classes/MySQL.php @@ -0,0 +1,283 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class MySQLCore extends Db +{ + public function connect() + { + if (!defined('_PS_DEBUG_SQL_')) + define('_PS_DEBUG_SQL_', false); + if ($this->_link = mysql_connect($this->_server, $this->_user, $this->_password)) + { + if(!$this->set_db($this->_database)) + die(Tools::displayError('The database selection cannot be made.')); + } + else + die(Tools::displayError('Link to database cannot be established.')); + /* UTF-8 support */ + if (!mysql_query('SET NAMES \'utf8\'', $this->_link)) + die(Tools::displayError('PrestaShop Fatal error: no utf-8 support. Please check your server configuration.')); + /* Disable some MySQL limitations */ + mysql_query('SET GLOBAL SQL_MODE=\'\'', $this->_link); + return $this->_link; + } + + /* do not remove, useful for some modules */ + public function set_db($db_name) { + return mysql_select_db($db_name, $this->_link); + } + + public function disconnect() + { + if ($this->_link) + @mysql_close($this->_link); + $this->_link = false; + } + + public function getRow($query, $use_cache = 1) + { + $this->_result = false; + $this->_lastQuery = $query; + if($use_cache AND _PS_CACHE_ENABLED_) + if ($result = Cache::getInstance()->get(md5($query))) + { + $this->_lastCached = true; + return $result; + } + if ($this->_link) + if ($this->_result = mysql_query($query.' LIMIT 1', $this->_link)) + { + $this->_lastCached = false; + if (_PS_DEBUG_SQL_) + $this->displayMySQLError($query); + $result = mysql_fetch_assoc($this->_result); + if ($use_cache = 1 AND _PS_CACHE_ENABLED_) + Cache::getInstance()->setQuery($query, $result); + return $result; + } + if (_PS_DEBUG_SQL_) + $this->displayMySQLError($query); + return false; + } + + public function getValue($query, $use_cache = 1) + { + $this->_result = false; + $this->_lastQuery = $query; + if ($use_cache AND _PS_CACHE_ENABLED_) + if ($result = Cache::getInstance()->get(md5($query))) + { + $this->_lastCached = true; + return $result; + } + if ($this->_link AND $this->_result = mysql_query($query.' LIMIT 1', $this->_link) AND is_array($tmpArray = mysql_fetch_assoc($this->_result))) + { + $this->_lastCached = false; + $result = array_shift($tmpArray); + if($use_cache AND _PS_CACHE_ENABLED_) + Cache::getInstance()->setQuery($query, $result); + return $result; + } + return false; + } + + public function Execute($query, $use_cache = 1) + { + $this->_result = false; + if ($this->_link) + { + $this->_result = mysql_query($query, $this->_link); + if (_PS_DEBUG_SQL_) + $this->displayMySQLError($query); + if ($use_cache AND _PS_CACHE_ENABLED_) + Cache::getInstance()->deleteQuery($query); + return $this->_result; + } + if (_PS_DEBUG_SQL_) + $this->displayMySQLError($query); + return false; + } + + /** + * ExecuteS return the result of $query as array, + * or as mysqli_result if $array set to false + * + * @param string $query query to execute + * @param boolean $array return an array instead of a mysql_result object + * @param int $use_cache if query has been already executed, use its result + * @return array or result object + */ + public function ExecuteS($query, $array = true, $use_cache = 1) + { + $this->_result = false; + $this->_lastQuery = $query; + if ($use_cache AND _PS_CACHE_ENABLED_) + if ($array AND ($result = Cache::getInstance()->get(md5($query)))) + { + $this->_lastCached = true; + return $result; + } + if ($this->_link && $this->_result = mysql_query($query, $this->_link)) + { + $this->_lastCached = false; + if (_PS_DEBUG_SQL_) + $this->displayMySQLError($query); + if (!$array) + return $this->_result; + $resultArray = array(); + // Only SELECT queries and a few others return a valid resource usable with mysql_fetch_assoc + if ($this->_result !== true) + while ($row = mysql_fetch_assoc($this->_result)) + $resultArray[] = $row; + if ($use_cache AND _PS_CACHE_ENABLED_) + Cache::getInstance()->setQuery($query, $resultArray); + return $resultArray; + } + if (_PS_DEBUG_SQL_) + $this->displayMySQLError($query); + return false; + } + + public function nextRow($result = false) + { + return mysql_fetch_assoc($result ? $result : $this->_result); + } + + public function delete($table, $where = false, $limit = false, $use_cache = 1) + { + $this->_result = false; + if ($this->_link) + { + $query = 'DELETE FROM `'.pSQL($table).'`'.($where ? ' WHERE '.$where : '').($limit ? ' LIMIT '.(int)($limit) : ''); + $res = mysql_query($query, $this->_link); + if ($use_cache AND _PS_CACHE_ENABLED_) + Cache::getInstance()->deleteQuery($query); + return $res; + } + + return false; + } + + public function NumRows() + { + if (!$this->_lastCached AND $this->_link AND $this->_result) + { + $nrows = mysql_num_rows($this->_result); + if (_PS_CACHE_ENABLED_) + Cache::getInstance()->setNumRows(md5($this->_lastQuery), $nrows); + return $nrows; + } + elseif (_PS_CACHE_ENABLED_ AND $this->_lastCached) + { + return Cache::getInstance()->getNumRows(md5($this->_lastQuery)); + } + } + + public function Insert_ID() + { + if ($this->_link) + return mysql_insert_id($this->_link); + return false; + } + + public function Affected_Rows() + { + if ($this->_link) + return mysql_affected_rows($this->_link); + return false; + } + + protected function q($query, $use_cache = 1) + { + global $webservice_call; + $this->_result = false; + if ($this->_link) + { + $result = mysql_query($query, $this->_link); + $this->_lastQuery = $query; + if ($webservice_call) + $this->displayMySQLError($query); + if ($use_cache AND _PS_CACHE_ENABLED_) + Cache::getInstance()->deleteQuery($query); + return $result; + } + return false; + } + + /** + * Returns the text of the error message from previous MySQL operation + * + * @acces public + * @return string error + */ + public function getMsgError($query = false) + { + return mysql_error(); + } + + public function getNumberError() + { + return mysql_errno(); + } + + public function displayMySQLError($query = false) + { + global $webservice_call; + if ($webservice_call && mysql_errno()) + { + WebserviceRequest::getInstance()->setError(500, '[SQL Error] '.mysql_error().'. Query was : '.$query, 97); + + } + elseif (_PS_DEBUG_SQL_ AND mysql_errno() AND !defined('PS_INSTALLATION_IN_PROGRESS')) + { + if ($query) + die(Tools::displayError(mysql_error().'

'.$query.'
')); + die(Tools::displayError((mysql_error()))); + } + } + + static public function tryToConnect($server, $user, $pwd, $db) + { + if (!$link = @mysql_connect($server, $user, $pwd)) + return 1; + if (!@mysql_select_db($db, $link)) + return 2; + @mysql_close($link); + return 0; + } + + static public function tryUTF8($server, $user, $pwd) + { + $link = @mysql_connect($server, $user, $pwd); + if (!mysql_query('SET NAMES \'utf8\'', $link)) + $ret = false; + else + $ret = true; + @mysql_close($link); + return $ret; + } +} diff --git a/classes/ObjectModel.php b/classes/ObjectModel.php new file mode 100644 index 000000000..b7daf1f4d --- /dev/null +++ b/classes/ObjectModel.php @@ -0,0 +1,648 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +abstract class ObjectModelCore +{ + /** @var integer Object id */ + public $id; + + /** @var string SQL Table name */ + protected $table = NULL; + + /** @var string SQL Table identifier */ + protected $identifier = NULL; + + /** @var array Required fields for admin panel forms */ + protected $fieldsRequired = array(); + + /** @var fieldsRequiredDatabase */ + protected static $fieldsRequiredDatabase = NULL; + + /** @var array Maximum fields size for admin panel forms */ + protected $fieldsSize = array(); + + /** @var array Fields validity functions for admin panel forms */ + protected $fieldsValidate = array(); + + /** @var array Multilingual required fields for admin panel forms */ + protected $fieldsRequiredLang = array(); + + /** @var array Multilingual maximum fields size for admin panel forms */ + protected $fieldsSizeLang = array(); + + /** @var array Multilingual fields validity functions for admin panel forms */ + protected $fieldsValidateLang = array(); + + /** @var array tables */ + protected $tables = array(); + + /** @var array tables */ + protected $webserviceParameters = array(); + + protected static $_cache = array(); + + /** + * Returns object validation rules (fields validity) + * + * @param string $className Child class name for static use (optional) + * @return array Validation rules (fields validity) + */ + static public function getValidationRules($className = __CLASS__) + { + $object = new $className(); + return array( + 'required' => $object->fieldsRequired, + 'size' => $object->fieldsSize, + 'validate' => $object->fieldsValidate, + 'requiredLang' => $object->fieldsRequiredLang, + 'sizeLang' => $object->fieldsSizeLang, + 'validateLang' => $object->fieldsValidateLang); + } + + /** + * Prepare fields for ObjectModel class (add, update) + * All fields are verified (pSQL, intval...) + * + * @return array All object fields + */ + public function getFields() { return array(); } + + /** + * Build object + * + * @param integer $id Existing object id in order to load object (optional) + * @param integer $id_lang Required if object is multilingual (optional) + */ + public function __construct($id = NULL, $id_lang = NULL) + { + /* Connect to database and check SQL table/identifier */ + if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + $this->identifier = pSQL($this->identifier); + + /* Load object from database if object id is present */ + if ($id) + { + if (!isset(self::$_cache[$this->table][(int)($id)][(int)($id_lang)])) + self::$_cache[$this->table][(int)($id)][(int)($id_lang)] = Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_.$this->table.'` a '. + ($id_lang ? ('LEFT JOIN `'.pSQL(_DB_PREFIX_.$this->table).'_lang` b ON (a.`'.$this->identifier.'` = b.`'.$this->identifier).'` AND `id_lang` = '.(int)($id_lang).')' : '') + .' WHERE a.`'.$this->identifier.'` = '.(int)($id)); + + $result = self::$_cache[$this->table][(int)($id)][(int)($id_lang)]; + if (!$result) return false; + $this->id = (int)($id); + foreach ($result AS $key => $value) + if (key_exists($key, $this)) + $this->{$key} = stripslashes($value); + + /* Join multilingual tables */ + if (!$id_lang AND method_exists($this, 'getTranslationsFieldsChild')) + { + $result = Db::getInstance()->ExecuteS('SELECT * FROM `'.pSQL(_DB_PREFIX_.$this->table).'_lang` WHERE `'.$this->identifier.'` = '.(int)($id)); + if ($result) + foreach ($result as $row) + foreach ($row AS $key => $value) + { + if (key_exists($key, $this) AND $key != $this->identifier) + { + if (!is_array($this->{$key})) + $this->{$key} = array(); + $this->{$key}[$row['id_lang']] = stripslashes($value); + } + } + } + } + + if (!is_array(self::$fieldsRequiredDatabase)) + { + $fields = $this->getfieldsRequiredDatabase(true); + if ($fields) + foreach ($fields AS $row) + self::$fieldsRequiredDatabase[$row['object_name']][(int)$row['id_required_field']] = pSQL($row['field_name']); + else + self::$fieldsRequiredDatabase = array(); + } + } + + /** + * Save current object to database (add or update) + * + * return boolean Insertion result + */ + public function save($nullValues = false, $autodate = true) + { + return (int)($this->id) > 0 ? $this->update($nullValues) : $this->add($autodate, $nullValues); + } + + /** + * Add current object to database + * + * return boolean Insertion result + */ + public function add($autodate = true, $nullValues = false) + { + if (!Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + + /* Automatically fill dates */ + if ($autodate AND key_exists('date_add', $this)) + $this->date_add = date('Y-m-d H:i:s'); + if ($autodate AND key_exists('date_upd', $this)) + $this->date_upd = date('Y-m-d H:i:s'); + + /* Database insertion */ + if ($nullValues) + $result = Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.$this->table, $this->getFields(), 'INSERT'); + else + $result = Db::getInstance()->autoExecute(_DB_PREFIX_.$this->table, $this->getFields(), 'INSERT'); + if (!$result) + return false; + /* Get object id in database */ + $this->id = Db::getInstance()->Insert_ID(); + /* Database insertion for multilingual fields related to the object */ + if (method_exists($this, 'getTranslationsFieldsChild')) + { + $fields = $this->getTranslationsFieldsChild(); + if ($fields AND is_array($fields)) + foreach ($fields AS $field) + { + foreach ($field AS $key => $value) + if (!Validate::isTableOrIdentifier($key)) + die(Tools::displayError()); + $field[$this->identifier] = (int)$this->id; + $result = Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table.'_lang', $field, 'INSERT') && $result; + } + } + return $result; + } + + /** + * Update current object to database + * + * return boolean Update result + */ + public function update($nullValues = false) + { + if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + + $this->clearCache(); + + /* Automatically fill dates */ + if (key_exists('date_upd', $this)) + $this->date_upd = date('Y-m-d H:i:s'); + + /* Database update */ + if ($nullValues) + $result = Db::getInstance()->autoExecuteWithNullValues(_DB_PREFIX_.$this->table, $this->getFields(), 'UPDATE', '`'.pSQL($this->identifier).'` = '.(int)($this->id)); + else + $result = Db::getInstance()->autoExecute(_DB_PREFIX_.$this->table, $this->getFields(), 'UPDATE', '`'.pSQL($this->identifier).'` = '.(int)($this->id)); + if (!$result) + return false; + + // Database update for multilingual fields related to the object + if (method_exists($this, 'getTranslationsFieldsChild')) + { + $fields = $this->getTranslationsFieldsChild(); + if (is_array($fields)) + foreach ($fields as $field) + { + foreach ($field as $key => $value) + if (!Validate::isTableOrIdentifier($key)) + die(Tools::displayError()); + + // used to insert missing lang entries + $where_lang = '`'.pSQL($this->identifier).'` = '.(int)($this->id).' AND `id_lang` = '.(int)($field['id_lang']); + + $lang_found = Db::getInstance()->getValue('SELECT COUNT(*) FROM `'.pSQL(_DB_PREFIX_.$this->table).'_lang` WHERE '. $where_lang); + + if (!$lang_found) + $result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table.'_lang', $field, 'INSERT'); + else + $result &= Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table.'_lang', $field, 'UPDATE', $where_lang); + } + } + return $result; + } + + /** + * Delete current object from database + * + * return boolean Deletion result + */ + public function delete() + { + if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + + $this->clearCache(); + + /* Database deletion */ + $result = Db::getInstance()->Execute('DELETE FROM `'.pSQL(_DB_PREFIX_.$this->table).'` WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + if (!$result) + return false; + + /* Database deletion for multilingual fields related to the object */ + if (method_exists($this, 'getTranslationsFieldsChild')) + Db::getInstance()->Execute('DELETE FROM `'.pSQL(_DB_PREFIX_.$this->table).'_lang` WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + return $result; + } + + /** + * Delete several objects from database + * + * return boolean Deletion result + */ + public function deleteSelection($selection) + { + if (!is_array($selection) OR !Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + $result = true; + foreach ($selection AS $id) + { + $this->id = (int)($id); + $result = $result AND $this->delete(); + } + return $result; + } + + /** + * Toggle object status in database + * + * return boolean Update result + */ + public function toggleStatus() + { + if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + + /* Object must have a variable called 'active' */ + elseif (!key_exists('active', $this)) + die(Tools::displayError()); + + /* Update active status on object */ + $this->active = (int)(!$this->active); + + /* Change status to active/inactive */ + return Db::getInstance()->Execute(' + UPDATE `'.pSQL(_DB_PREFIX_.$this->table).'` + SET `active` = !`active` + WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + } + + /** + * Prepare multilingual fields for database insertion + * + * @param array $fieldsArray Multilingual fields to prepare + * return array Prepared fields for database insertion + */ + protected function getTranslationsFields($fieldsArray) + { + /* WARNING : Product do not use this function, so do not forget to report any modification if necessary */ + if (!Validate::isTableOrIdentifier($this->identifier)) + die(Tools::displayError()); + + $fields = array(); + $languages = Language::getLanguages(); + $defaultLanguage = Configuration::get('PS_LANG_DEFAULT'); + foreach ($languages as $language) + { + $fields[$language['id_lang']]['id_lang'] = $language['id_lang']; + $fields[$language['id_lang']][$this->identifier] = (int)($this->id); + foreach ($fieldsArray as $field) + { + /* Check fields validity */ + if (!Validate::isTableOrIdentifier($field)) + die(Tools::displayError()); + + /* Copy the field, or the default language field if it's both required and empty */ + if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]); + elseif (in_array($field, $this->fieldsRequiredLang)) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); + else + $fields[$language['id_lang']][$field] = ''; + } + } + + return $fields; + } + + /** + * Check for fields validity before database interaction + */ + public function validateFields($die = true, $errorReturn = false) + { + $fieldsRequired = array_merge($this->fieldsRequired, (isset(self::$fieldsRequiredDatabase[get_class($this)]) ? self::$fieldsRequiredDatabase[get_class($this)] : array())); + foreach ($fieldsRequired as $field) + if (Tools::isEmpty($this->{$field}) AND (!is_numeric($this->{$field}))) + { + if ($die) die (Tools::displayError().' ('.get_class($this).' -> '.$field.' is empty)'); + return $errorReturn ? get_class($this).' -> '.$field.' is empty' : false; + } + foreach ($this->fieldsSize as $field => $size) + if (isset($this->{$field}) AND Tools::strlen($this->{$field}) > $size) + { + if ($die) die (Tools::displayError().' ('.get_class($this).' -> '.$field.' Length '.$size.')'); + return $errorReturn ? get_class($this).' -> '.$field.' Length '.$size : false; + } + $validate = new Validate(); + foreach ($this->fieldsValidate as $field => $method) + if (!method_exists($validate, $method)) + die (Tools::displayError('Validation function not found.').' '.$method); + elseif (!empty($this->{$field}) AND !call_user_func(array('Validate', $method), $this->{$field})) + { + if ($die) die (Tools::displayError().' ('.get_class($this).' -> '.$field.' = '.$this->{$field}.')'); + return $errorReturn ? get_class($this).' -> '.$field.' = '.$this->{$field} : false; + } + return true; + } + + /** + * Check for multilingual fields validity before database interaction + */ + public function validateFieldsLang($die = true, $errorReturn = false) + { + $defaultLanguage = (int)(Configuration::get('PS_LANG_DEFAULT')); + foreach ($this->fieldsRequiredLang as $fieldArray) + { + if (!is_array($this->{$fieldArray})) + continue ; + if (!$this->{$fieldArray} OR !sizeof($this->{$fieldArray}) OR ($this->{$fieldArray}[$defaultLanguage] !== '0' AND empty($this->{$fieldArray}[$defaultLanguage]))) + { + if ($die) die (Tools::displayError().' ('.get_class($this).'->'.$fieldArray.' '.Tools::displayError('is empty for default language.').')'); + return $errorReturn ? get_class($this).'->'.$fieldArray.' '.Tools::displayError('is empty for default language.') : false; + } + } + foreach ($this->fieldsSizeLang as $fieldArray => $size) + { + if (!is_array($this->{$fieldArray})) + continue ; + foreach ($this->{$fieldArray} as $k => $value) + if (Tools::strlen($value) > $size) + { + if ($die) die (Tools::displayError().' ('.get_class($this).'->'.$fieldArray.' '.Tools::displayError('Length').' '.$size.' '.Tools::displayError('for language').')'); + return $errorReturn ? get_class($this).'->'.$fieldArray.' '.Tools::displayError('Length').' '.$size.' '.Tools::displayError('for language') : false; + } + } + $validate = new Validate(); + foreach ($this->fieldsValidateLang as $fieldArray => $method) + { + if (!is_array($this->{$fieldArray})) + continue ; + foreach ($this->{$fieldArray} as $k => $value) + if (!method_exists($validate, $method)) + die (Tools::displayError('Validation function not found.').' '.$method); + elseif (!empty($value) AND !call_user_func(array('Validate', $method), $value)) + { + if ($die) die (Tools::displayError('The following field is invalid according to the validate method ').''.$method.':
('.get_class($this).'->'.$fieldArray.' = '.$value.' '.Tools::displayError('for language').' '.$k.')'); + return $errorReturn ? Tools::displayError('The following field is invalid according to the validate method ').''.$method.':
('. get_class($this).'->'.$fieldArray.' = '.$value.' '.Tools::displayError('for language').' '.$k : false; + } + } + return true; + } + + static public function displayFieldName($field, $className = __CLASS__, $htmlentities = true) + { + global $_FIELDS, $cookie; + $iso = strtolower(Language::getIsoById($cookie->id_lang ? (int)$cookie->id_lang : Configuration::get('PS_LANG_DEFAULT'))); + @include(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php'); + + $key = $className.'_'.md5($field); + return ((is_array($_FIELDS) AND array_key_exists($key, $_FIELDS)) ? ($htmlentities ? htmlentities($_FIELDS[$key], ENT_QUOTES, 'utf-8') : $_FIELDS[$key]) : $field); + } + + public function validateControler($htmlentities = true) + { + $errors = array(); + + /* Checking for required fields */ + $fieldsRequired = array_merge($this->fieldsRequired, (isset(self::$fieldsRequiredDatabase[get_class($this)]) ? self::$fieldsRequiredDatabase[get_class($this)] : array())); + foreach ($fieldsRequired AS $field) + if (($value = Tools::getValue($field, $this->{$field})) == false AND (string)$value != '0') + if (!$this->id OR $field != 'passwd') + $errors[] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is required.'); + + + /* Checking for maximum fields sizes */ + foreach ($this->fieldsSize AS $field => $maxLength) + if (($value = Tools::getValue($field, $this->{$field})) AND Tools::strlen($value) > $maxLength) + $errors[] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is too long.').' ('.Tools::displayError('Maximum length:').' '.$maxLength.')'; + + /* Checking for fields validity */ + foreach ($this->fieldsValidate AS $field => $function) + { + // Hack for postcode required for country which does not have postcodes + if ($value = Tools::getValue($field, $this->{$field}) OR ($field == 'postcode' AND $value == '0')) + { + if (!Validate::$function($value)) + $errors[] = ''.self::displayFieldName($field, get_class($this), $htmlentities).' '.Tools::displayError('is invalid.'); + else + { + if ($field == 'passwd') + { + if ($value = Tools::getValue($field)) + $this->{$field} = Tools::encrypt($value); + } + else + $this->{$field} = $value; + } + } + } + return $errors; + } + + public function getWebserviceParameters($wsParamsAttributeName = NULL) + { + $defaultResourceParameters = array( + 'objectSqlId' => $this->identifier, + 'retrieveData' => array( + 'className' => get_class($this), + 'retrieveMethod' => 'getWebserviceObjectList', + 'params' => array() + ), + 'fields' => array( + 'id' => array('sqlId' => $this->identifier, 'i18n' => false), + ), + ); + + if (is_null($wsParamsAttributeName)) + $wsParamsAttributeName = 'webserviceParameters'; + + + if (!isset($this->{$wsParamsAttributeName}['objectNodeName'])) + $defaultResourceParameters['objectNodeName'] = $this->table; + if (!isset($this->{$wsParamsAttributeName}['objectsNodeName'])) + $defaultResourceParameters['objectsNodeName'] = $this->table.'s'; + + if (isset($this->{$wsParamsAttributeName}['associations'])) + foreach ($this->{$wsParamsAttributeName}['associations'] as $assocName => &$association) + { + if (!array_key_exists('setter', $association)) + $association['setter'] = Tools::toCamelCase('set_ws_'.$assocName); + if (!array_key_exists('getter', $association)) + $association['getter'] = Tools::toCamelCase('get_ws_'.$assocName); + } + + + if (isset($this->{$wsParamsAttributeName}['retrieveData']) && isset($this->{$wsParamsAttributeName}['retrieveData']['retrieveMethod'])) + unset($defaultResourceParameters['retrieveData']['retrieveMethod']); + + $resourceParameters = array_merge_recursive($defaultResourceParameters, $this->{$wsParamsAttributeName}); + if (isset($this->fieldsSize)) + foreach ($this->fieldsSize as $fieldName => $maxSize) + { + if (!isset($resourceParameters['fields'][$fieldName])) + $resourceParameters['fields'][$fieldName] = array('required' => false); + $resourceParameters['fields'][$fieldName] = array_merge( + $resourceParameters['fields'][$fieldName], + $resourceParameters['fields'][$fieldName] = array('sqlId' => $fieldName, 'maxSize' => $maxSize, 'i18n' => false) + ); + } + if (isset($this->fieldsValidate)) + foreach ($this->fieldsValidate as $fieldName => $validateMethod) + { + if (!isset($resourceParameters['fields'][$fieldName])) + $resourceParameters['fields'][$fieldName] = array('required' => false); + $resourceParameters['fields'][$fieldName] = array_merge( + $resourceParameters['fields'][$fieldName], + $resourceParameters['fields'][$fieldName] = array( + 'sqlId' => $fieldName, + 'validateMethod' => ( + array_key_exists('validateMethod', $resourceParameters['fields'][$fieldName]) ? + array_merge($resourceParameters['fields'][$fieldName]['validateMethod'], array($validateMethod)) : + array($validateMethod) + ), + 'i18n' => false + ) + ); + } + if (isset($this->fieldsRequired)) + { + $fieldsRequired = array_merge($this->fieldsRequired, (isset(self::$fieldsRequiredDatabase[get_class($this)]) ? self::$fieldsRequiredDatabase[get_class($this)] : array())); + foreach ($fieldsRequired as $fieldRequired) + { + if (!isset($resourceParameters['fields'][$fieldRequired])) + $resourceParameters['fields'][$fieldRequired] = array(); + $resourceParameters['fields'][$fieldRequired] = array_merge( + $resourceParameters['fields'][$fieldRequired], + $resourceParameters['fields'][$fieldRequired] = array('sqlId' => $fieldRequired, 'required' => true, 'i18n' => false) + ); + } + } + if (isset($this->fieldsSizeLang)) + foreach ($this->fieldsSizeLang as $fieldName => $maxSize) + { + if (!isset($resourceParameters['fields'][$fieldName])) + $resourceParameters['fields'][$fieldName] = array('required' => false); + $resourceParameters['fields'][$fieldName] = array_merge( + $resourceParameters['fields'][$fieldName], + $resourceParameters['fields'][$fieldName] = array('sqlId' => $fieldName, 'maxSize' => $maxSize, 'i18n' => true) + ); + } + if (isset($this->fieldsValidateLang)) + foreach ($this->fieldsValidateLang as $fieldName => $validateMethod) + { + if (!isset($resourceParameters['fields'][$fieldName])) + $resourceParameters['fields'][$fieldName] = array('required' => false); + $resourceParameters['fields'][$fieldName] = array_merge( + $resourceParameters['fields'][$fieldName], + $resourceParameters['fields'][$fieldName] = array( + 'sqlId' => $fieldName, + 'validateMethod' => ( + array_key_exists('validateMethod', $resourceParameters['fields'][$fieldName]) ? + array_merge($resourceParameters['fields'][$fieldName]['validateMethod'], array($validateMethod)) : + array($validateMethod) + ), + 'i18n' => true + ) + ); + } + if (isset($this->fieldsRequiredLang)) + foreach ($this->fieldsRequiredLang as $field) + { + if (!isset($resourceParameters['fields'][$field])) + $resourceParameters['fields'][$field] = array(); + $resourceParameters['fields'][$field] = array_merge( + $resourceParameters['fields'][$field], + $resourceParameters['fields'][$field] = array('sqlId' => $field, 'required' => true, 'i18n' => true) + ); + } + foreach ($resourceParameters['fields'] as $key => &$resourceParametersField) + if (!isset($resourceParametersField['sqlId'])) + $resourceParametersField['sqlId'] = $key; + return $resourceParameters; + } + + public function getWebserviceObjectList($sql_join, $sql_filter, $sql_sort, $sql_limit) + { + $query = ' + SELECT DISTINCT main.`'.$this->identifier.'` FROM `'._DB_PREFIX_.$this->table.'` main + '.$sql_join.' + WHERE 1 '.$sql_filter.' + '.($sql_sort != '' ? $sql_sort : '').' + '.($sql_limit != '' ? $sql_limit : '').' + '; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); + } + + public function getFieldsRequiredDatabase($all = false) + { + return Db::getInstance()->ExecuteS(' + SELECT id_required_field, object_name, field_name + FROM '._DB_PREFIX_.'required_field + WHERE 1 '.(!$all ? ' AND object_name = \''.pSQL(get_class($this)).'\'' : '')); + } + + public function addFieldsRequiredDatabase($fields) + { + if (!is_array($fields)) + return false; + + if (!Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'required_field WHERE object_name = \''.pSQL(get_class($this)).'\'')) + return false; + + foreach ($fields AS $field) + if (!Db::getInstance()->Execute(' + INSERT INTO '._DB_PREFIX_.'required_field (id_required_field, object_name, field_name) + VALUES(\'\', \''.pSQL(get_class($this)).'\', \''.pSQL($field).'\')')) + return false; + + return true; + } + + public function clearCache($all = false) + { + if ($all AND isset(self::$_cache[$this->table])) + unset(self::$_cache[$this->table]); + elseif ($this->id AND isset(self::$_cache[$this->table][(int)$this->id])) + unset(self::$_cache[$this->table][(int)$this->id]); + } +} + diff --git a/classes/Order.php b/classes/Order.php new file mode 100644 index 000000000..bbabe41c7 --- /dev/null +++ b/classes/Order.php @@ -0,0 +1,1042 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderCore extends ObjectModel +{ + /** @var integer Delivery address id */ + public $id_address_delivery; + + /** @var integer Invoice address id */ + public $id_address_invoice; + + /** @var integer Cart id */ + public $id_cart; + + /** @var integer Currency id */ + public $id_currency; + + /** @var integer Language id */ + public $id_lang; + + /** @var integer Customer id */ + public $id_customer; + + /** @var integer Carrier id */ + public $id_carrier; + + /** @var string Secure key */ + public $secure_key; + + /** @var string Payment method id */ + public $payment; + + /** @var string Payment module */ + public $module; + + /** @var float Currency conversion rate */ + public $conversion_rate; + + /** @var boolean Customer is ok for a recyclable package */ + public $recyclable = 1; + + /** @var boolean True if the customer wants a gift wrapping */ + public $gift = 0; + + /** @var string Gift message if specified */ + public $gift_message; + + /** @var string Shipping number */ + public $shipping_number; + + /** @var float Discounts total */ + public $total_discounts; + + /** @var float Total to pay */ + public $total_paid; + + /** @var float Total really paid */ + public $total_paid_real; + + /** @var float Products total */ + public $total_products; + + /** @var float Products total tax excluded */ + public $total_products_wt; + + /** @var float Shipping total */ + public $total_shipping; + + /** @var float Shipping tax rate */ + public $carrier_tax_rate; + + /** @var float Wrapping total */ + public $total_wrapping; + + /** @var integer Invoice number */ + public $invoice_number; + + /** @var integer Delivery number */ + public $delivery_number; + + /** @var string Invoice creation date */ + public $invoice_date; + + /** @var string Delivery creation date */ + public $delivery_date; + + /** @var boolean Order validity (paid and not canceled) */ + public $valid; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $tables = array ('orders'); + + protected $fieldsRequired = array('conversion_rate', 'id_address_delivery', 'id_address_invoice', 'id_cart', 'id_currency', 'id_lang', 'id_customer', 'id_carrier', 'payment', 'total_paid', 'total_paid_real', 'total_products', 'total_products_wt'); + protected $fieldsSize = array('payment' => 32); + protected $fieldsValidate = array( + 'id_address_delivery' => 'isUnsignedId', + 'id_address_invoice' => 'isUnsignedId', + 'id_cart' => 'isUnsignedId', + 'id_currency' => 'isUnsignedId', + 'id_lang' => 'isUnsignedId', + 'id_customer' => 'isUnsignedId', + 'id_carrier' => 'isUnsignedId', + 'secure_key' => 'isMd5', + 'payment' => 'isGenericName', + 'recyclable' => 'isBool', + 'gift' => 'isBool', + 'gift_message' => 'isMessage', + 'total_discounts' => 'isPrice', + 'total_paid' => 'isPrice', + 'total_paid_real' => 'isPrice', + 'total_products' => 'isPrice', + 'total_products_wt' => 'isPrice', + 'total_shipping' => 'isPrice', + 'carrier_tax_rate' => 'isFloat', + 'total_wrapping' => 'isPrice', + 'shipping_number' => 'isUrl', + 'conversion_rate' => 'isFloat' + ); + + protected $webserviceParameters = array( + 'objectMethods' => array('add' => 'addWs'), + 'objectNodeName' => 'order', + 'objectsNodeName' => 'orders', + 'fields' => array( + 'id_address_delivery' => array('xlink_resource'=> 'addresses'), + 'id_address_invoice' => array('xlink_resource'=> 'addresses'), + 'id_cart' => array('xlink_resource'=> 'carts'), + 'id_currency' => array('xlink_resource'=> 'currencies'), + 'id_lang' => array('xlink_resource'=> 'languages'), + 'id_customer' => array('xlink_resource'=> 'customers'), + 'id_carrier' => array('xlink_resource'=> 'carriers'), + 'module' => array(), // mettre en requis + 'invoice_number' => array(), + 'delivery_number' => array(), + 'invoice_date' => array(), + 'delivery_date' => array(), + 'valid' => array(), + 'current_state' => array('getter' => 'getCurrentState', 'setter' => 'setCurrentState', 'xlink_resource'=> 'order_states'), + 'date_add' => array(), + 'date_upd' => array(), + ), + 'associations' => array( + 'order_rows' => array('resource' => 'order_row', 'setter' => null, + 'fields' => array( + 'id' => array(), + 'product_id' => array('required' => true), + 'product_attribute_id' => array('required' => true), + 'product_quantity' => array('required' => true), + 'product_name' => array('setter' => null), + 'product_price' => array('setter' => null), + )), + ), + + ); + + /* MySQL does not allow 'order' for a table name */ + protected $table = 'orders'; + protected $identifier = 'id_order'; + protected $_taxCalculationMethod = PS_TAX_EXC; + + protected static $_historyCache = array(); + + public function getFields() + { + parent::validateFields(); + + $fields['id_address_delivery'] = (int)($this->id_address_delivery); + $fields['id_address_invoice'] = (int)($this->id_address_invoice); + $fields['id_cart'] = (int)($this->id_cart); + $fields['id_currency'] = (int)($this->id_currency); + $fields['id_lang'] = (int)($this->id_lang); + $fields['id_customer'] = (int)($this->id_customer); + $fields['id_carrier'] = (int)($this->id_carrier); + $fields['secure_key'] = pSQL($this->secure_key); + $fields['payment'] = pSQL($this->payment); + $fields['module'] = pSQL($this->module); + $fields['conversion_rate'] = (float)($this->conversion_rate); + $fields['recyclable'] = (int)($this->recyclable); + $fields['gift'] = (int)($this->gift); + $fields['gift_message'] = pSQL($this->gift_message); + $fields['shipping_number'] = pSQL($this->shipping_number); + $fields['total_discounts'] = (float)($this->total_discounts); + $fields['total_paid'] = (float)($this->total_paid); + $fields['total_paid_real'] = (float)($this->total_paid_real); + $fields['total_products'] = (float)($this->total_products); + $fields['total_products_wt'] = (float)($this->total_products_wt); + $fields['total_shipping'] = (float)($this->total_shipping); + $fields['carrier_tax_rate'] = (float)($this->carrier_tax_rate); + $fields['total_wrapping'] = (float)($this->total_wrapping); + $fields['invoice_number'] = (int)($this->invoice_number); + $fields['delivery_number'] = (int)($this->delivery_number); + $fields['invoice_date'] = pSQL($this->invoice_date); + $fields['delivery_date'] = pSQL($this->delivery_date); + $fields['valid'] = (int)($this->valid) ? 1 : 0; + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + + return $fields; + } + + public function __construct($id = NULL, $id_lang = NULL) + { + parent::__construct($id, $id_lang); + if ($this->id_customer) + { + $customer = new Customer((int)($this->id_customer)); + $this->_taxCalculationMethod = Group::getPriceDisplayMethod((int)($customer->id_default_group)); + } + else + $this->_taxCalculationMethod = Group::getDefaultPriceDisplayMethod(); + } + + public function getTaxCalculationMethod() + { + return (int)($this->_taxCalculationMethod); + } + + /* Does NOT delete a product but "cancel" it (which means return/refund/delete it depending of the case) */ + public function deleteProduct($order, $orderDetail, $quantity) + { + if (!$currentStatus = (int)($this->getCurrentState())) + return false; + + if ($this->hasBeenDelivered()) + { + if (!Configuration::get('PS_ORDER_RETURN')) + die(Tools::displayError()); + $orderDetail->product_quantity_return += (int)($quantity); + return $orderDetail->update(); + } + elseif ($this->hasBeenPaid()) + { + $orderDetail->product_quantity_refunded += (int)($quantity); + return $orderDetail->update(); + } + return $this->_deleteProduct($orderDetail, (int)($quantity)); + } + + /* DOES delete the product */ + protected function _deleteProduct($orderDetail, $quantity) + { + $price = $orderDetail->product_price * (1 + $orderDetail->tax_rate * 0.01); + if ($orderDetail->reduction_percent != 0.00) + $reduction_amount = $price * $orderDetail->reduction_percent / 100; + elseif ($orderDetail->reduction_amount != '0.000000') + $reduction_amount = Tools::ps_round($orderDetail->reduction_amount, 2); + if (isset($reduction_amount) AND $reduction_amount) + $price = Tools::ps_round($price - $reduction_amount, 2); + $productPriceWithoutTax = number_format($price / (1 + $orderDetail->tax_rate * 0.01), 2, '.', ''); + $price += Tools::ps_round($orderDetail->ecotax * (1 + $orderDetail->ecotax_tax_rate / 100), 2); + $productPrice = number_format($quantity * $price, 2, '.', ''); + /* Update cart */ + $cart = new Cart($this->id_cart); + $cart->updateQty($quantity, $orderDetail->product_id, $orderDetail->product_attribute_id, false, 'down'); // customization are deleted in deleteCustomization + $cart->update(); + + /* Update order */ + $shippingDiff = $this->total_shipping - $cart->getOrderShippingCost(); + $this->total_products -= $productPriceWithoutTax; + $this->total_products_wt -= $productPrice; + $this->total_shipping = $cart->getOrderShippingCost(); + /* It's temporary fix for 1.3 version... */ + if ($orderDetail->product_quantity_discount != '0.000000') + $this->total_paid -= ($productPrice + $shippingDiff); + else + $this->total_paid = $cart->getOrderTotal(); + $this->total_paid_real -= ($productPrice + $shippingDiff); + + /* Prevent from floating precision issues (total_products has only 2 decimals) */ + if ($this->total_products < 0) + $this->total_products = 0; + + /* Prevent from floating precision issues */ + $this->total_paid = number_format($this->total_paid, 2, '.', ''); + $this->total_paid_real = number_format($this->total_paid_real, 2, '.', ''); + $this->total_products = number_format($this->total_products, 2, '.', ''); + $this->total_products_wt = number_format($this->total_products_wt, 2, '.', ''); + + /* Update order detail */ + $orderDetail->product_quantity -= (int)($quantity); + + if (!$orderDetail->product_quantity) + { + if (!$orderDetail->delete()) + return false; + if (count($this->getProductsDetail()) == 0) + { + global $cookie; + $history = new OrderHistory(); + $history->id_order = (int)($this->id); + $history->changeIdOrderState(_PS_OS_CANCELED_, (int)($this->id)); + if (!$history->addWithemail()) + return false; + } + return $this->update(); + } + return $orderDetail->update() AND $this->update(); + } + + public function deleteCustomization($id_customization, $quantity, $orderDetail) + { + if (!$currentStatus = (int)($this->getCurrentState())) + return false; + + if ($this->hasBeenDelivered()) + return Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'customization` SET `quantity_returned` = `quantity_returned` + '.(int)($quantity).' WHERE `id_customization` = '.(int)($id_customization).' AND `id_cart` = '.(int)($this->id_cart).' AND `id_product` = '.(int)($orderDetail->product_id)); + elseif ($this->hasBeenPaid()) + return Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'customization` SET `quantity_refunded` = `quantity_refunded` + '.(int)($quantity).' WHERE `id_customization` = '.(int)($id_customization).' AND `id_cart` = '.(int)($this->id_cart).' AND `id_product` = '.(int)($orderDetail->product_id)); + if (!Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'customization` SET `quantity` = `quantity` - '.(int)($quantity).' WHERE `id_customization` = '.(int)($id_customization).' AND `id_cart` = '.(int)($this->id_cart).' AND `id_product` = '.(int)($orderDetail->product_id))) + return false; + if (!Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization` WHERE `quantity` = 0')) + return false; + return $this->_deleteProduct($orderDetail, (int)($quantity)); + } + + /** + * Get order history + * + * @param integer $id_lang Language id + * + * @return array History entries ordered by date DESC + */ + public function getHistory($id_lang, $id_order_state = false, $no_hidden = false) + { + if (!$id_order_state) + $id_order_state = 0; + + if (!isset(self::$_historyCache[$id_order_state]) OR $no_hidden) + { + $id_lang = $id_lang ? (int)($id_lang) : 'o.`id_lang`'; + $result = Db::getInstance()->ExecuteS(' + SELECT oh.*, e.`firstname` AS employee_firstname, e.`lastname` AS employee_lastname, osl.`name` AS ostate_name + FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON o.`id_order` = oh.`id_order` + LEFT JOIN `'._DB_PREFIX_.'order_state` os ON os.`id_order_state` = oh.`id_order_state` + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'employee` e ON e.`id_employee` = oh.`id_employee` + WHERE oh.id_order = '.(int)($this->id).' + '.($no_hidden ? ' AND os.hidden = 0' : '').' + '.((int)($id_order_state) ? ' AND oh.`id_order_state` = '.(int)($id_order_state) : '').' + ORDER BY oh.date_add DESC, oh.id_order_history DESC'); + if ($no_hidden) + return $result; + self::$_historyCache[$id_order_state] = $result; + } + return self::$_historyCache[$id_order_state]; + } + + public function getProductsDetail() + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_detail` od + WHERE od.`id_order` = '.(int)($this->id)); + } + + + /** + * @return string + * @deprecated + */ + public function getLastMessage() + { + Tools::displayAsDeprecated(); + $sql = 'SELECT `message` FROM `'._DB_PREFIX_.'message` WHERE `id_order` = '.(int)($this->id).' ORDER BY `id_message` desc'; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + return $result['message']; + } + + public function getFirstMessage() + { + $sql = 'SELECT `message` FROM `'._DB_PREFIX_.'message` WHERE `id_order` = '.(int)($this->id).' ORDER BY `id_message` asc'; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + return $result['message']; + } + + public function setProductPrices(&$row) + { + if ($this->_taxCalculationMethod == PS_TAX_EXC) + $row['product_price'] = Tools::ps_round($row['product_price'], 2); + else + $row['product_price_wt'] = Tools::ps_round($row['product_price'] * (1 + $row['tax_rate'] / 100), 2); + + if ($row['reduction_percent']) + { + if ($this->_taxCalculationMethod == PS_TAX_EXC) + $row['product_price'] = $row['product_price'] - $row['product_price'] * ($row['reduction_percent'] * 0.01); + else + $row['product_price_wt'] = Tools::ps_round($row['product_price_wt'] - $row['product_price_wt'] * ($row['reduction_percent'] * 0.01), 2); + } + + if ($row['reduction_amount']) + { + if ($this->_taxCalculationMethod == PS_TAX_EXC) + $row['product_price'] = $row['product_price'] - $row['reduction_amount'] / (1 + $row['tax_rate'] / 100); + else + $row['product_price_wt'] = Tools::ps_round($row['product_price_wt'] - $row['reduction_amount'], 2); + } + + if ($row['group_reduction']) + { + if ($this->_taxCalculationMethod == PS_TAX_EXC) + $row['product_price'] = $row['product_price'] - $row['product_price'] * ($row['group_reduction'] * 0.01); + else + $row['product_price_wt'] = Tools::ps_round($row['product_price_wt'] - $row['product_price_wt'] * ($row['group_reduction'] * 0.01), 2); + } + + if (($row['reduction_percent'] OR $row['reduction_amount'] OR $row['group_reduction']) AND $this->_taxCalculationMethod == PS_TAX_EXC) + $row['product_price'] = Tools::ps_round($row['product_price'], 2); + + if ($this->_taxCalculationMethod == PS_TAX_EXC) + $row['product_price_wt'] = Tools::ps_round($row['product_price'] * (1 + ($row['tax_rate'] * 0.01)), 2) + Tools::ps_round($row['ecotax'] * (1 + $row['ecotax_tax_rate'] / 100), 2); + else + { + $row['product_price_wt_but_ecotax'] = $row['product_price_wt']; + $row['product_price_wt'] = Tools::ps_round($row['product_price_wt'] + $row['ecotax'] * (1 + $row['ecotax_tax_rate'] / 100), 2); + } + + $row['total_wt'] = $row['product_quantity'] * $row['product_price_wt']; + $row['total_price'] = $row['product_quantity'] * $row['product_price']; + } + + /** + * Get order products + * + * @return array Products with price, quantity (with taxe and without) + */ + public function getProducts($products = false, $selectedProducts = false, $selectedQty = false) + { + if (!$products) + $products = $this->getProductsDetail(); + $resultArray = array(); + foreach ($products AS $k => $row) + { + // Change qty if selected + if ($selectedQty) + { + $row['product_quantity'] = 0; + foreach ($selectedProducts AS $key => $id_product) + if ($row['id_order_detail'] == $id_product) + $row['product_quantity'] = (int)($selectedQty[$key]); + if (!$row['product_quantity']) + continue ; + } + $this->setProductPrices($row); + + /* Add information for virtual product */ + if ($row['download_hash'] AND !empty($row['download_hash'])) + $row['filename'] = ProductDownload::getFilenameFromIdProduct($row['product_id']); + + /* Stock product */ + $resultArray[(int)($row['id_order_detail'])] = $row; + } + return $resultArray; + } + + public function getTaxesAverageUsed() + { + return Cart::getTaxesAverageUsed((int)($this->id_cart)); + } + + /** + * Count virtual products in order + * + * @return int number of virtual products + */ + public function getVirtualProducts() + { + $sql = ' + SELECT `product_id`, `download_hash`, `download_deadline` + FROM `'._DB_PREFIX_.'order_detail` od + WHERE od.`id_order` = '.(int)($this->id).' + AND `download_hash` <> \'\''; + return Db::getInstance()->ExecuteS($sql); + } + + /** + * Check if order contains (only) virtual products + * @return boolean true if is a virtual order or false + * + */ + public function isVirtual($strict = true) + { + $products = $this->getProducts(); + if (count($products) < 1) + return false; + $virtual = false; + foreach ($products AS $product) + { + $pd = ProductDownload::getIdFromIdProduct((int)($product['product_id'])); + if ($pd AND Validate::isUnsignedInt($pd) AND $product['download_hash']) + { + if ($strict === false) + return true; + $virtual &= true; + } + } + return $virtual; + } + + + /** + * Get order discounts + * + * @return array Discounts with price and quantity + */ + public function getDiscounts($details = false) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_discount` od '. + ($details ? 'LEFT JOIN `'._DB_PREFIX_.'discount` d ON (d.`id_discount` = od.`id_discount`)' : '').' + WHERE od.`id_order` = '.(int)($this->id)); + } + + static public function getDiscountsCustomer($id_customer, $id_discount) + { + return Db::getInstance()->getValue(' + SELECT COUNT(*) FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN '._DB_PREFIX_.'order_discount od ON (od.id_order = o.id_order) + WHERE o.id_customer = '.(int)($id_customer).' + AND od.id_discount = '.(int)($id_discount)); + } + + /** + * Get current order state (eg. Awaiting payment, Delivered...) + * + * @return array Order state details + */ + public function getCurrentState() + { + $orderHistory = OrderHistory::getLastOrderState($this->id); + if (!isset($orderHistory) OR !$orderHistory) + return false; + return $orderHistory->id; + } + + /** + * Get current order state name (eg. Awaiting payment, Delivered...) + * + * @return array Order state details + */ + public function getCurrentStateFull($id_lang) + { + return Db::getInstance()->getRow(' + SELECT oh.`id_order_state`, osl.`name`, os.`logable` + FROM `'._DB_PREFIX_.'order_history` oh + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (osl.`id_order_state` = oh.`id_order_state`) + LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`) + WHERE osl.`id_lang` = '.(int)($id_lang).' AND oh.`id_order` = '.(int)($this->id).' + ORDER BY `date_add` DESC, `id_order_history` DESC'); + } + + /** + * @deprecated + */ + public function isLogable() + { + Tools::displayAsDeprecated(); + return $this->valid; + } + + public function hasBeenDelivered() + { + return sizeof($this->getHistory((int)($this->id_lang), _PS_OS_DELIVERED_)); + } + + public function hasBeenPaid() + { + return sizeof($this->getHistory((int)($this->id_lang), _PS_OS_PAYMENT_)); + } + + public function hasBeenShipped() + { + return sizeof($this->getHistory((int)($this->id_lang), _PS_OS_SHIPPING_)); + } + + public function isInPreparation() + { + return sizeof($this->getHistory((int)($this->id_lang), _PS_OS_PREPARATION_)); + } + + /** + * Get customer orders + * + * @param integer $id_customer Customer id + * @return array Customer orders + */ + static public function getCustomerOrders($id_customer) + { + global $cookie; + + $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT o.*, ( + SELECT SUM(od.`product_quantity`) + FROM `'._DB_PREFIX_.'order_detail` od + WHERE od.`id_order` = o.`id_order`) + AS nb_products + FROM `'._DB_PREFIX_.'orders` o + WHERE o.`id_customer` = '.(int)($id_customer).' + GROUP BY o.`id_order` + ORDER BY o.`date_add` DESC'); + if (!$res) + return array(); + + foreach ($res AS $key => $val) + { + $res2 = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT os.`id_order_state`, osl.`name` AS order_state, os.`invoice` + FROM `'._DB_PREFIX_.'order_history` oh + LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`) + INNER JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)($cookie->id_lang).') + WHERE oh.`id_order` = '.(int)($val['id_order']).' + AND os.`hidden` != 1 + ORDER BY oh.`date_add` DESC, oh.`id_order_history` DESC + LIMIT 1 + '); + if ($res2) + $res[$key] = array_merge($res[$key], $res2[0]); + } + return $res; + } + + static public function getOrdersIdByDate($date_from, $date_to, $id_customer = NULL, $type = NULL) + { + $sql = ' + SELECT `id_order` + FROM `'._DB_PREFIX_.'orders` + WHERE DATE_ADD(date_upd, INTERVAL -1 DAY) <= \''.pSQL($date_to).'\' AND date_upd >= \''.pSQL($date_from).'\'' + .($type ? ' AND '.pSQL(strval($type)).'_number != 0' : '') + .($id_customer ? ' AND id_customer = '.(int)($id_customer) : ''); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + + $orders = array(); + foreach ($result AS $order) + $orders[] = (int)($order['id_order']); + return $orders; + } + + /* + * @deprecated + */ + static public function getOrders($limit = NULL) + { + Tools::displayAsDeprecated(); + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'orders` + ORDER BY `date_add` + '.((int)$limit ? 'LIMIT 0, '.(int)$limit : '')); + } + + static public function getOrdersWithInformations($limit = NULL) + { + global $cookie; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT *, ( + SELECT `name` + FROM `'._DB_PREFIX_.'order_history` oh + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (osl.`id_order_state` = oh.`id_order_state`) + WHERE oh.`id_order` = o.`id_order` + AND osl.`id_lang` = '.(int)$cookie->id_lang.' + ORDER BY oh.`date_add` DESC + LIMIT 1 + ) AS `state_name` + FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + ORDER BY o.`date_add` DESC + '.((int)$limit ? 'LIMIT 0, '.(int)$limit : '')); + } + + static public function getOrdersIdInvoiceByDate($date_from, $date_to, $id_customer = NULL, $type = NULL) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `id_order` + FROM `'._DB_PREFIX_.'orders` + WHERE DATE_ADD(invoice_date, INTERVAL -1 DAY) <= \''.pSQL($date_to).'\' AND invoice_date >= \''.pSQL($date_from).'\'' + .($type ? ' AND '.pSQL(strval($type)).'_number != 0' : '') + .($id_customer ? ' AND id_customer = '.(int)($id_customer) : ''). + ' ORDER BY invoice_date ASC'); + + $orders = array(); + foreach ($result AS $order) + $orders[] = (int)($order['id_order']); + return $orders; + } + + static public function getOrderIdsByStatus($id_order_state) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT id_order + FROM '._DB_PREFIX_.'orders o + WHERE '.(int)$id_order_state.' = ( + SELECT id_order_state + FROM '._DB_PREFIX_.'order_history oh + WHERE oh.id_order = o .id_order + ORDER BY date_add DESC, id_order_history DESC + LIMIT 1 + ) + ORDER BY invoice_date ASC'); + + $orders = array(); + foreach ($result AS $order) + $orders[] = (int)($order['id_order']); + return $orders; + } + + /** + * Get product total without taxes + * + * @return Product total with taxes + */ + public function getTotalProductsWithoutTaxes($products = false) + { + return $this->total_products; + } + + /** + * Get product total with taxes + * + * @return Product total with taxes + */ + public function getTotalProductsWithTaxes($products = false) + { + if ($this->total_products_wt != '0.00' AND !$products) + return $this->total_products_wt; + /* Retro-compatibility (now set directly on the validateOrder() method) */ + if (!$products) + $products = $this->getProductsDetail(); + + $return = 0; + foreach ($products AS $k => $row) + { + $price = Tools::ps_round($row['product_price'] * (1 + $row['tax_rate'] / 100), 2); + if ($row['reduction_percent']) + $price -= $price * ($row['reduction_percent'] * 0.01); + if ($row['reduction_amount']) + $price -= $row['reduction_amount'] * (1 + ($row['tax_rate'] * 0.01)); + if ($row['group_reduction']) + $price -= $price * ($row['group_reduction'] * 0.01); + $price += $row['ecotax'] * (1 + $row['ecotax_tax_rate'] / 100); + $return += Tools::ps_round($price, 2) * $row['product_quantity']; + } + if (!$products) + { + $this->total_products_wt = $return; + $this->update(); + } + return $return; + } + + /** + * Get customer orders number + * + * @param integer $id_customer Customer id + * @return array Customer orders number + */ + static public function getCustomerNbOrders($id_customer) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(`id_order`) AS nb + FROM `'._DB_PREFIX_.'orders` + WHERE `id_customer` = '.(int)($id_customer)); + + return isset($result['nb']) ? $result['nb'] : 0; + } + + /** + * Get an order by its cart id + * + * @param integer $id_cart Cart id + * @return array Order details + */ + static public function getOrderByCartId($id_cart) + { + $result = Db::getInstance()->getRow(' + SELECT `id_order` + FROM `'._DB_PREFIX_.'orders` + WHERE `id_cart` = '.(int)($id_cart)); + + return isset($result['id_order']) ? $result['id_order'] : false; + } + + /** + * Add a discount to order + * + * @param integer $id_discount Discount id + * @param string $name Discount name + * @param float $value Discount value + * @return boolean Query sucess or not + */ + public function addDiscount($id_discount, $name, $value) + { + return Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_discount', array('id_order' => (int)($this->id), 'id_discount' => (int)($id_discount), 'name' => pSQL($name), 'value' => (float)($value)), 'INSERT'); + } + + /** + * Get orders number last week + * + * @return integer Orders number last week + * @deprecated + */ + public static function getWeeklyOrders() + { + Tools::displayAsDeprecated(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(`id_order`) as nb + FROM `'._DB_PREFIX_.'orders` + WHERE YEARWEEK(`date_add`) = YEARWEEK(NOW())'); + + return isset($result['nb']) ? $result['nb'] : 0; + } + + /** + * Get sales amount last month + * + * @return float Sales amount last month + * @deprecated + */ + public static function getMonthlySales() + { + Tools::displayAsDeprecated(); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT SUM(`total_paid`) as nb + FROM `'._DB_PREFIX_.'orders` + WHERE MONTH(`date_add`) = MONTH(NOW()) + AND YEAR(`date_add`) = YEAR(NOW())'); + + return isset($result['nb']) ? $result['nb'] : 0; + } + + public function getNumberOfDays() + { + $nbReturnDays = (int)(Configuration::get('PS_ORDER_RETURN_NB_DAYS')); + if (!$nbReturnDays) + return true; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT TO_DAYS(NOW()) - TO_DAYS(`delivery_date`) AS days FROM `'._DB_PREFIX_.'orders` + WHERE `id_order` = '.(int)($this->id)); + if ($result['days'] <= $nbReturnDays) + return true; + return false; + } + + + public function isReturnable() + { + return ((int)(Configuration::get('PS_ORDER_RETURN')) == 1 AND (int)($this->getCurrentState()) == _PS_OS_DELIVERED_ AND $this->getNumberOfDays()); + } + + + public static function getLastInvoiceNumber() + { + return (int)Db::getInstance()->getValue(' + SELECT MAX(`invoice_number`) AS `invoice_number` + FROM `'._DB_PREFIX_.'orders` + '); + } + + public function setInvoice() + { + $number = (int)Configuration::get('PS_INVOICE_START_NUMBER'); + + if ($number) + Configuration::updateValue('PS_INVOICE_START_NUMBER', false); + else + $number = '(SELECT `invoice_number` + FROM ( + SELECT MAX(`invoice_number`) + 1 AS `invoice_number` + FROM `'._DB_PREFIX_.'orders`) + tmp )'; + + // a way to avoid duplicate invoice number + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'orders` + SET `invoice_number` = '.$number.', `invoice_date` = \''.date('Y-m-d H:i:s').'\' + WHERE `id_order` = '.(int)$this->id + ); + + $res = Db::getInstance()->getRow(' + SELECT `invoice_number`, `invoice_date` + FROM `'._DB_PREFIX_.'orders` + WHERE `id_order` = '.(int)$this->id + ); + + $this->invoice_date = $res['invoice_date']; + $this->invoice_number = $res['invoice_number']; + } + + public function setDelivery() + { + // Set delivery number + $number = (int)(Configuration::get('PS_DELIVERY_NUMBER')); + if (!(int)($number)) + die(Tools::displayError('Invalid delivery number')); + $this->delivery_number = $number; + Configuration::updateValue('PS_DELIVERY_NUMBER', $number + 1); + + // Set delivery date + $this->delivery_date = date('Y-m-d H:i:s'); + + // Update object + $this->update(); + } + + static public function printPDFIcons($id_order, $tr) + { + $order = new Order($id_order); + $orderState = OrderHistory::getLastOrderState($id_order); + if (!Validate::isLoadedObject($orderState) OR !Validate::isLoadedObject($order)) + die(Tools::displayError('Invalid objects')); + echo ''; + if (($orderState->invoice AND $order->invoice_number) AND (int)($tr['product_number'])) + echo 'invoice'; + else + echo ' '; + echo ''; + echo ''; + if ($orderState->delivery AND $order->delivery_number) + echo 'delivery'; + else + echo ' '; + echo ''; + } + + static public function getByDelivery($id_delivery) + { + $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT id_order + FROM `'._DB_PREFIX_.'orders` + WHERE `delivery_number` = '.(int)($id_delivery)); + return new Order((int)($res['id_order'])); + } + + public function getTotalWeight() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT SUM(product_weight * product_quantity) weight + FROM '._DB_PREFIX_.'order_detail + WHERE id_order = '.(int)($this->id)); + + return (float)($result['weight']); + } + + static public function getInvoice($id_invoice) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `invoice_number`, `id_order` + FROM `'._DB_PREFIX_.'orders` + WHERE invoice_number = '.(int)($id_invoice)); + } + + public function isAssociatedAtGuest($email) + { + if (!$email) + return false; + return (bool)Db::getInstance()->getValue(' + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + WHERE o.`id_order` = '.(int)$this->id.' + AND c.`email` = \''.pSQL($email).'\' + AND c.`is_guest` = 1 + '); + } + + /** + * @param int $id_order + * @param int $id_customer optionnal + * @return int id_cart + */ + static public function getCartIdStatic($id_order, $id_customer = 0) + { + return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `id_cart` + FROM `'._DB_PREFIX_.'orders` + WHERE `id_order` = '.(int)$id_order.' + '.($id_customer ? 'AND `id_customer` = '.(int)$id_customer : '')); + } + + public function getWsOrderRows() + { + $query = 'SELECT id_order_detail as `id`, id_order, product_attribute_id, product_quantity, product_name + FROM `'._DB_PREFIX_.'order_detail` + WHERE id_order = '.(int)$this->id; + $result = Db::getInstance()->executeS($query); + return $result; + } + + public function setCurrentState($id_order_state) + { + $history = new OrderHistory(); + $history->id_order = (int)($this->id); + $history->changeIdOrderState((int)$id_order_state, (int)($this->id)); + } + + public function addWs($autodate = true, $nullValues = false) + { + $paymentModule = Module::getInstanceByName($this->module); + $id_order_state = 1; // TODO + $customer = new Customer($this->id_customer); + $paymentModule->validateOrder($this->id_cart, $id_order_state, $this->total_paid, $this->payment, NULL, array(), null, false, $customer->secure_key); + return true; + } + + public function deleteAssociations() + { + return (Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'order_detail` + WHERE `id_order` = '.(int)($this->id)) !== false); + } +} diff --git a/classes/OrderDetail.php b/classes/OrderDetail.php new file mode 100644 index 000000000..9f1c4891f --- /dev/null +++ b/classes/OrderDetail.php @@ -0,0 +1,218 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderDetailCore extends ObjectModel +{ + /** @var integer */ + public $id_order_detail; + + /** @var integer */ + public $id_order; + + /** @var integer */ + public $product_id; + + /** @var integer */ + public $product_attribute_id; + + /** @var string */ + public $product_name; + + /** @var integer */ + public $product_quantity; + + /** @var integer */ + public $product_quantity_in_stock; + + /** @var integer */ + public $product_quantity_return; + + /** @var integer */ + public $product_quantity_refunded; + + /** @var integer */ + public $product_quantity_reinjected; + + /** @var float */ + public $product_price; + + /** @var float */ + public $reduction_percent; + + /** @var float */ + public $reduction_amount; + + /** @var float */ + public $group_reduction; + + /** @var float */ + public $product_quantity_discount; + + /** @var string */ + public $product_ean13; + + /** @var string */ + public $product_upc; + + /** @var string */ + public $product_reference; + + /** @var string */ + public $product_supplier_reference; + + /** @var float */ + public $product_weight; + + /** @var string */ + public $tax_name; + + /** @var float */ + public $tax_rate; + + /** @var float */ + public $ecotax; + + /** @var float */ + public $ecotax_tax_rate; + + /** @var integer */ + public $discount_quantity_applied; + + /** @var string */ + public $download_hash; + + /** @var integer */ + public $download_nb; + + /** @var date */ + public $download_deadline; + + protected $tables = array ('order_detail'); + + protected $fieldsRequired = array ('id_order', 'product_name', 'product_quantity', 'product_price', 'tax_rate'); + + protected $fieldsValidate = array ( + 'id_order' => 'isUnsignedId', + 'product_id' => 'isUnsignedId', + 'product_attribute_id' => 'isUnsignedId', + 'product_name' => 'isGenericName', + 'product_quantity' => 'isInt', + 'product_quantity_in_stock' => 'isInt', + 'product_quantity_return' => 'isUnsignedInt', + 'product_quantity_refunded' => 'isUnsignedInt', + 'product_quantity_reinjected' => 'isUnsignedInt', + 'product_price' => 'isPrice', + 'reduction_percent' => 'isFloat', + 'reduction_amount' => 'isPrice', + 'group_reduction' => 'isFloat', + 'product_quantity_discount' => 'isFloat', + 'product_ean13' => 'isEan13', + 'product_upc' => 'isUpc', + 'product_reference' => 'isReference', + 'product_supplier_reference' => 'isReference', + 'product_weight' => 'isFloat', + 'tax_name' => 'isGenericName', + 'tax_rate' => 'isFloat', + 'ecotax' => 'isFloat', + 'ecotax_tax_rate' => 'isFloat', + 'download_nb' => 'isInt', + ); + + protected $table = 'order_detail'; + protected $identifier = 'id_order_detail'; + + protected $webserviceParameters = array( + 'fields' => array ( + 'id_order' => array('xlink_resource' => 'orders'), + 'product_id' => array('xlink_resource' => 'products'), + 'product_attribute_id' => array('xlink_resource' => 'product_attributes'), + 'product_quantity_reinjected' => array(), + 'group_reduction' => array(), + 'discount_quantity_applied' => array(), + 'download_hash' => array(), + 'download_deadline' => array() + ) + ); + + + public function getFields() + { + parent::validateFields(); + + $fields['id_order'] = (int)($this->id_order); + $fields['product_id'] = (int)($this->product_id); + $fields['product_attribute_id'] = (int)($this->product_attribute_id); + $fields['product_name'] = pSQL($this->product_name); + $fields['product_quantity'] = (int)($this->product_quantity); + $fields['product_quantity_in_stock'] = (int)($this->product_quantity_in_stock); + $fields['product_quantity_return'] = (int)($this->product_quantity_return); + $fields['product_quantity_refunded'] = (int)($this->product_quantity_refunded); + $fields['product_quantity_reinjected'] = (int)($this->product_quantity_reinjected); + $fields['product_price'] = (float)($this->product_price); + $fields['reduction_percent'] = (float)($this->reduction_percent); + $fields['reduction_amount'] = (float)($this->reduction_amount); + $fields['group_reduction'] = (float)($this->group_reduction); + $fields['product_quantity_discount'] = (float)($this->product_quantity_discount); + $fields['product_ean13'] = pSQL($this->product_ean13); + $fields['product_upc'] = pSQL($this->product_upc); + $fields['product_reference'] = pSQL($this->product_reference); + $fields['product_supplier_reference'] = pSQL($this->product_reference); + $fields['product_weight'] = (float)($this->product_weight); + $fields['tax_name'] = pSQL($this->tax_name); + $fields['tax_rate'] = (float)($this->tax_rate); + $fields['ecotax'] = (float)($this->ecotax); + $fields['ecotax_tax_rate'] = (float)($this->ecotax_tax_rate); + $fields['download_hash'] = pSQL($this->download_hash); + $fields['download_nb'] = (int)($this->download_nb); + $fields['download_deadline'] = pSQL($this->download_deadline); + + return $fields; + } + + static public function getDownloadFromHash($hash) + { + if ($hash == '') return false; + $sql = 'SELECT * + FROM `'._DB_PREFIX_.'order_detail` od + LEFT JOIN `'._DB_PREFIX_.'product_download` pd ON (od.`product_id`=pd.`id_product`) + WHERE od.`download_hash` = \''.pSQL(strval($hash)).'\' + AND pd.`active` = 1'; + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + } + + static public function incrementDownload($id_order_detail, $increment=1) + { + $sql = 'UPDATE `'._DB_PREFIX_.'order_detail` + SET `download_nb` = `download_nb` + '.(int)($increment).' + WHERE `id_order_detail`= '.(int)($id_order_detail).' + LIMIT 1'; + return Db::getInstance()->Execute($sql); + } + +} + + diff --git a/classes/OrderDiscount.php b/classes/OrderDiscount.php new file mode 100644 index 000000000..4a5655d48 --- /dev/null +++ b/classes/OrderDiscount.php @@ -0,0 +1,71 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderDiscountCore extends ObjectModel +{ + /** @var integer */ + public $id_order_discount; + + /** @var integer */ + public $id_order; + + /** @var integer */ + public $id_discount; + + /** @var string */ + public $name; + + /** @var integer */ + public $value; + + protected $tables = array ('order_discount'); + + protected $fieldsRequired = array ('id_order', 'name', 'value'); + protected $fieldsValidate = array ('id_order' => 'isUnsignedId', 'name' => 'isGenericName', 'value' => 'isInt'); + + /* MySQL does not allow 'order detail' for a table name */ + protected $table = 'order_discount'; + protected $identifier = 'id_order_discount'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_order' => array('xlink_resource' => 'orders'), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_order'] = (int)($this->id_order); + $fields['name'] = pSQL($this->name); + $fields['value'] = (int)($this->value); + + return $fields; + } +} + diff --git a/classes/OrderHistory.php b/classes/OrderHistory.php new file mode 100644 index 000000000..44b8b4888 --- /dev/null +++ b/classes/OrderHistory.php @@ -0,0 +1,199 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderHistoryCore extends ObjectModel +{ + /** @var integer Order id */ + public $id_order; + + /** @var integer Order state id */ + public $id_order_state; + + /** @var integer Employee id for this history entry */ + public $id_employee; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $tables = array ('order_history'); + + protected $fieldsRequired = array('id_order', 'id_order_state'); + protected $fieldsValidate = array('id_order' => 'isUnsignedId', 'id_order_state' => 'isUnsignedId', 'id_employee' => 'isUnsignedId'); + + protected $table = 'order_history'; + protected $identifier = 'id_order_history'; + + protected $webserviceParameters = array( + 'objectsNodeName' => 'order_histories', + 'fields' => array( + 'id_order_state' => array('required' => true, 'xlink_resource'=> 'order_states'), + 'id_order' => array('xlink_resource' => 'orders'), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_order'] = (int)($this->id_order); + $fields['id_order_state'] = (int)($this->id_order_state); + $fields['id_employee'] = (int)($this->id_employee); + $fields['date_add'] = pSQL($this->date_add); + + return $fields; + } + + public function changeIdOrderState($new_order_state = NULL, $id_order) + { + if ($new_order_state != NULL) + { + Hook::updateOrderStatus((int)($new_order_state), (int)($id_order)); + $order = new Order((int)($id_order)); + + /* Best sellers */ + $newOS = new OrderState((int)($new_order_state), $order->id_lang); + $oldOrderStatus = OrderHistory::getLastOrderState((int)($id_order)); + $cart = Cart::getCartByOrderId($id_order); + $isValidated = $this->isValidated(); + if (Validate::isLoadedObject($cart)) + foreach ($cart->getProducts() as $product) + { + /* If becoming logable => adding sale */ + if ($newOS->logable AND (!$oldOrderStatus OR !$oldOrderStatus->logable)) + ProductSale::addProductSale($product['id_product'], $product['cart_quantity']); + /* If becoming unlogable => removing sale */ + elseif (!$newOS->logable AND ($oldOrderStatus AND $oldOrderStatus->logable)) + ProductSale::removeProductSale($product['id_product'], $product['cart_quantity']); + if (!$isValidated AND $newOS->logable AND isset($oldOrderStatus) AND $oldOrderStatus AND $oldOrderStatus->id == _PS_OS_ERROR_) + { + Product::updateQuantity($product); + Hook::updateQuantity($product, $order); + } + } + + $this->id_order_state = (int)($new_order_state); + + /* Change invoice number of order ? */ + if (!Validate::isLoadedObject($newOS) OR !Validate::isLoadedObject($order)) + die(Tools::displayError('Invalid new order state')); + + /* The order is valid only if the invoice is available and the order is not cancelled */ + $order->valid = $newOS->logable; + $order->update(); + + if ($newOS->invoice AND !$order->invoice_number) + $order->setInvoice(); + if ($newOS->delivery AND !$order->delivery_number) + $order->setDelivery(); + Hook::postUpdateOrderStatus((int)($new_order_state), (int)($id_order)); + } + } + + static public function getLastOrderState($id_order) + { + $id_order_state = Db::getInstance()->getValue(' + SELECT `id_order_state` + FROM `'._DB_PREFIX_.'order_history` + WHERE `id_order` = '.(int)($id_order).' + ORDER BY `date_add` DESC, `id_order_history` DESC'); + if (!$id_order_state) + return false; + return new OrderState($id_order_state, Configuration::get('PS_LANG_DEFAULT')); + } + + public function addWithemail($autodate = true, $templateVars = false) + { + $lastOrderState = $this->getLastOrderState($this->id_order); + + if (!parent::add($autodate)) + return false; + + $result = Db::getInstance()->getRow(' + SELECT osl.`template`, c.`lastname`, c.`firstname`, osl.`name` AS osname, c.`email` + FROM `'._DB_PREFIX_.'order_history` oh + LEFT JOIN `'._DB_PREFIX_.'orders` o ON oh.`id_order` = o.`id_order` + LEFT JOIN `'._DB_PREFIX_.'customer` c ON o.`id_customer` = c.`id_customer` + LEFT JOIN `'._DB_PREFIX_.'order_state` os ON oh.`id_order_state` = os.`id_order_state` + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = o.`id_lang`) + WHERE oh.`id_order_history` = '.(int)($this->id).' + AND os.`send_email` = 1'); + + if (isset($result['template']) AND Validate::isEmail($result['email'])) + { + $topic = $result['osname']; + $data = array('{lastname}' => $result['lastname'], '{firstname}' => $result['firstname'], '{id_order}' => (int)($this->id_order)); + if ($templateVars) $data = array_merge($data, $templateVars); + $order = new Order((int)($this->id_order)); + $data['{total_paid}'] = Tools::displayPrice((float)($order->total_paid), new Currency((int)($order->id_currency)), false, false); + $data['{order_name}'] = sprintf("#%06d", (int)($order->id)); + + // An additional email is sent the first time a virtual item is validated + if ($virtualProducts = $order->getVirtualProducts() AND (!$lastOrderState OR !$lastOrderState->logable) AND $newOrderState = new OrderState($this->id_order_state, Configuration::get('PS_LANG_DEFAULT')) AND $newOrderState->logable) + { + global $smarty; + $assign = array(); + foreach ($virtualProducts AS $key => $virtualProduct) + { + $id_product_download = ProductDownload::getIdFromIdProduct($virtualProduct['product_id']); + $product_download = new ProductDownload($id_product_download); + $assign[$key]['name'] = $product_download->display_filename; + $assign[$key]['link'] = $product_download->getTextLink(false, $virtualProduct['download_hash']); + if ($virtualProduct['download_deadline'] != '0000-00-00 00:00:00') + $assign[$key]['deadline'] = Tools::displayDate($virtualProduct['download_deadline'], $order->id_lang); + if ($product_download->nb_downloadable != 0) + $assign[$key]['downloadable'] = $product_download->nb_downloadable; + } + $smarty->assign('virtualProducts', $assign); + $iso = Language::getIsoById((int)($order->id_lang)); + $links = $smarty->fetch(_PS_MAIL_DIR_.$iso.'/download-product.tpl'); + $tmpArray = array('{nbProducts}' => count($virtualProducts), '{virtualProducts}' => $links); + $data = array_merge ($data, $tmpArray); + global $_LANGMAIL; + Mail::Send((int)($order->id_lang), 'download_product', Mail::l('Virtual product to download'), $data, $result['email'], $result['firstname'].' '.$result['lastname']); + } + + if (Validate::isLoadedObject($order)) + Mail::Send((int)($order->id_lang), $result['template'], $topic, $data, $result['email'], $result['firstname'].' '.$result['lastname']); + } + + return true; + } + + public function isValidated() + { + return Db::getInstance()->getValue(' + SELECT COUNT(oh.`id_order_history`) AS nb + FROM `'._DB_PREFIX_.'order_state` os + LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON (os.`id_order_state` = oh.`id_order_state`) + WHERE oh.`id_order` = '.(int)$this->id_order.' + AND os.`logable` = 1'); + } + +} diff --git a/classes/OrderMessage.php b/classes/OrderMessage.php new file mode 100644 index 000000000..307dd25f3 --- /dev/null +++ b/classes/OrderMessage.php @@ -0,0 +1,79 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderMessageCore extends ObjectModel +{ + /** @var string name name */ + public $name; + + /** @var string message content */ + public $message; + + /** @var string Object creation date */ + public $date_add; + + protected $fieldsRequired = array(); + protected $fieldsValidate = array(); + protected $fieldsSize = array(); + + protected $fieldsRequiredLang = array('name', 'message'); + protected $fieldsSizeLang = array('name' => 128, 'message' => 1200); + protected $fieldsValidateLang = array('name' => 'isGenericName', 'message' => 'isMessage'); + + protected $table = 'order_message'; + protected $identifier = 'id_order_message'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id' => array('sqlId' => 'id_discount_type', 'xlink_resource' => 'order_message_lang'), + 'date_add' => array('sqlId' => 'date_add') + ) + ); + + + public function getFields() + { + parent::validateFields(); + return array('date_add' => pSQL($this->date_add)); + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'message')); + } + + static public function getOrderMessages($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT om.id_order_message, oml.name, oml.message + FROM '._DB_PREFIX_.'order_message om + LEFT JOIN '._DB_PREFIX_.'order_message_lang oml ON (oml.id_order_message = om.id_order_message) + WHERE oml.id_lang = '.(int)($id_lang).' + ORDER BY name ASC'); + } +} diff --git a/classes/OrderReturn.php b/classes/OrderReturn.php new file mode 100644 index 000000000..2585d024b --- /dev/null +++ b/classes/OrderReturn.php @@ -0,0 +1,205 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderReturnCore extends ObjectModel +{ + /** @var integer */ + public $id; + + /** @var integer */ + public $id_customer; + + /** @var integer */ + public $id_order; + + /** @var integer */ + public $state; + + /** @var string message content */ + public $question; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $tables = array ('order_return'); + + protected $fieldsRequired = array ('id_customer', 'id_order'); + protected $fieldsValidate = array('id_customer' => 'isUnsignedId', 'id_order' => 'isUnsignedId', 'question' => 'isMessage'); + + protected $table = 'order_return'; + protected $identifier = 'id_order_return'; + + public function getFields() + { + parent::validateFields(); + + $fields['id_customer'] = pSQL($this->id_customer); + $fields['id_order'] = pSQL($this->id_order); + $fields['state'] = pSQL($this->state); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + $fields['question'] = pSQL(nl2br2($this->question), true); + return $fields; + } + + public function addReturnDetail($orderDetailList, $productQtyList, $customizationIds, $customizationQtyInput) + { + /* Classic product return */ + if ($orderDetailList) + foreach ($orderDetailList AS $key => $orderDetail) + if ($qty = (int)($productQtyList[$key])) + Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_return_detail', array('id_order_return' => (int)($this->id), 'id_order_detail' => (int)($orderDetail), 'product_quantity' => $qty, 'id_customization' => 0), 'INSERT'); + /* Customized product return */ + if ($customizationIds) + foreach ($customizationIds AS $orderDetailId => $customizations) + foreach ($customizations AS $customizationId) + if ($quantity = (int)($customizationQtyInput[(int)($customizationId)])) + Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_return_detail', array('id_order_return' => (int)($this->id), 'id_order_detail' => (int)($orderDetailId), 'product_quantity' => $quantity, 'id_customization' => (int)($customizationId)), 'INSERT'); + } + + public function checkEnoughProduct($orderDetailList, $productQtyList, $customizationIds, $customizationQtyInput) + { + $order = new Order((int)($this->id_order)); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError()); + $products = $order->getProducts(); + /* Products already returned */ + $order_return = self::getOrdersReturn($order->id_customer, $order->id, true); + foreach ($order_return AS $or) + { + $order_return_products = self::getOrdersReturnProducts($or['id_order_return'], $order); + foreach ($order_return_products AS $key => $orp) + $products[$key]['product_quantity'] -= (int)($orp['product_quantity']); + } + /* Quantity check */ + if ($orderDetailList) + foreach ($orderDetailList AS $key => $orderDetail) + if ($qty = (int)($productQtyList[$key])) + if ($products[$key]['product_quantity'] - $qty < 0) + return false; + /* Customization quantity check */ + if ($customizationIds) + { + $orderedCustomizations = Customization::getOrderedCustomizations((int)($order->id_cart)); + foreach ($customizationIds AS $productId => $customizations) + foreach ($customizations AS $customizationId) + { + $customizationId = (int)($customizationId); + if (!isset($orderedCustomizations[$customizationId])) + return false; + $quantity = (isset($customizationQtyInput[$customizationId]) ? (int)($customizationQtyInput[$customizationId]) : 0); + if ((int)($orderedCustomizations[$customizationId]['quantity']) - $quantity < 0) + return false; + } + } + return true; + } + + public function countProduct() + { + if (!$data = Db::getInstance()->getRow(' + SELECT COUNT(`id_order_return`) AS total + FROM `'._DB_PREFIX_.'order_return_detail` + WHERE `id_order_return` = '.(int)($this->id))) + return false; + return (int)($data['total']); + } + + static public function getOrdersReturn($customer_id, $order_id = false, $no_denied = false) + { + global $cookie; + + $data = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_return` + WHERE `id_customer` = '.(int)($customer_id). + ($order_id ? ' AND `id_order` = '.(int)($order_id) : ''). + ($no_denied ? ' AND `state` != 4' : '').' + ORDER BY `date_add` DESC'); + foreach ($data AS $k => $or) + { + $state = new OrderReturnState($or['state']); + $data[$k]['state_name'] = $state->name[$cookie->id_lang]; + } + return $data; + } + + static public function getOrdersReturnDetail($id_order_return) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_return_detail` + WHERE `id_order_return` = '.(int)($id_order_return)); + } + + static public function getOrdersReturnProducts($orderReturnId, $order) + { + $productsRet = self::getOrdersReturnDetail($orderReturnId); + $products = $order->getProducts(); + $tmp = array(); + foreach ($productsRet AS $return_detail) + { + $tmp[$return_detail['id_order_detail']]['quantity'] = isset($tmp[$return_detail['id_order_detail']]['quantity']) ? $tmp[$return_detail['id_order_detail']]['quantity'] + (int)($return_detail['product_quantity']) : (int)($return_detail['product_quantity']); + $tmp[$return_detail['id_order_detail']]['customizations'] = (int)($return_detail['id_customization']); + } + $resTab = array(); + foreach ($products AS $key => $product) + if (isset($tmp[$product['id_order_detail']])) + { + $resTab[$key] = $product; + $resTab[$key]['product_quantity'] = $tmp[$product['id_order_detail']]['quantity']; + $resTab[$key]['customizations'] = $tmp[$product['id_order_detail']]['customizations']; + } + return $resTab; + } + + static public function getReturnedCustomizedProducts($id_order) + { + $returns = Customization::getReturnedCustomizations($id_order); + $order = new Order((int)($id_order)); + if (!Validate::isLoadedObject($order)) + die(Tools::displayError()); + $products = $order->getProducts(); + foreach ($returns AS &$return) + { + $return['product_id'] = (int)($products[(int)($return['id_order_detail'])]['product_id']); + $return['product_attribute_id'] = (int)($products[(int)($return['id_order_detail'])]['product_attribute_id']); + $return['name'] = $products[(int)($return['id_order_detail'])]['product_name']; + $return['reference'] = $products[(int)($return['id_order_detail'])]['product_reference']; + } + return $returns; + } + + static public function deleteOrderReturnDetail($id_order_return, $id_order_detail, $id_customization = 0) + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'order_return_detail` WHERE `id_order_detail` = '.(int)($id_order_detail).' AND `id_order_return` = '.(int)($id_order_return).' AND `id_customization` = '.(int)($id_customization)); + } +} + diff --git a/classes/OrderReturnState.php b/classes/OrderReturnState.php new file mode 100644 index 000000000..6d5fb3581 --- /dev/null +++ b/classes/OrderReturnState.php @@ -0,0 +1,80 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderReturnStateCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + /** @var string Display state in the specified color */ + public $color; + + + protected $fieldsValidate = array('color' => 'isColor'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 64); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'order_return_state'; + protected $identifier = 'id_order_return_state'; + + public function getFields() + { + parent::validateFields(); + $fields['color'] = pSQL($this->color); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + /** + * Get all available order states + * + * @param integer $id_lang Language id for state name + * @return array Order states + */ + static public function getOrderReturnStates($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_return_state` ors + LEFT JOIN `'._DB_PREFIX_.'order_return_state_lang` orsl ON (ors.`id_order_return_state` = orsl.`id_order_return_state` AND orsl.`id_lang` = '.(int)($id_lang).') + ORDER BY ors.`id_order_return_state` ASC'); + } + + +} + diff --git a/classes/OrderSlip.php b/classes/OrderSlip.php new file mode 100644 index 000000000..63bc2ac21 --- /dev/null +++ b/classes/OrderSlip.php @@ -0,0 +1,179 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderSlipCore extends ObjectModel +{ + /** @var integer */ + public $id; + + /** @var integer */ + public $id_customer; + + /** @var integer */ + public $id_order; + + /** @var float */ + public $conversion_rate; + + /** @var integer */ + public $shipping_cost; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + protected $tables = array ('order_slip'); + + protected $fieldsRequired = array ('id_customer', 'id_order', 'conversion_rate'); + protected $fieldsValidate = array('id_customer' => 'isUnsignedId', 'id_order' => 'isUnsignedId', 'conversion_rate' => 'isFloat'); + + protected $table = 'order_slip'; + protected $identifier = 'id_order_slip'; + + public function getFields() + { + parent::validateFields(); + + $fields['id_customer'] = (int)($this->id_customer); + $fields['id_order'] = (int)($this->id_order); + $fields['conversion_rate'] = (float)($this->conversion_rate); + $fields['shipping_cost'] = (int)($this->shipping_cost); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + public function addSlipDetail($orderDetailList, $productQtyList) + { + foreach ($orderDetailList as $key => $orderDetail) + { + if ($qty = (int)($productQtyList[$key])) + Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_slip_detail', array('id_order_slip' => (int)($this->id), 'id_order_detail' => (int)($orderDetail), 'product_quantity' => $qty), 'INSERT'); + } + } + + static public function getOrdersSlip($customer_id, $order_id = false) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_slip` + WHERE `id_customer` = '.(int)($customer_id). + ($order_id ? ' AND `id_order` = '.(int)($order_id) : '').' + ORDER BY `date_add` DESC'); + } + + static public function getOrdersSlipDetail($id_order_slip = true, $id_order_detail = false) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS( + ($id_order_detail ? 'SELECT SUM(`product_quantity`) AS `total`' : 'SELECT *'). + 'FROM `'._DB_PREFIX_.'order_slip_detail`' + .($id_order_slip ? ' WHERE `id_order_slip` = '.(int)($id_order_slip) : '') + .($id_order_detail ? ' WHERE `id_order_detail` = '.(int)($id_order_detail) : '')); + } + + static public function getOrdersSlipProducts($orderSlipId, $order) + { + $discounts = $order->getDiscounts(true); + $productsRet = self::getOrdersSlipDetail($orderSlipId); + $products = $order->getProductsDetail(); + + $tmp = array(); + foreach ($productsRet as $slip_detail) + $tmp[$slip_detail['id_order_detail']] = $slip_detail['product_quantity']; + $resTab = array(); + foreach ($products as $key => $product) + if (isset($tmp[$product['id_order_detail']])) + { + $resTab[$key] = $product; + $resTab[$key]['product_quantity'] = $tmp[$product['id_order_detail']]; + if (sizeof($discounts)) + { + $order->setProductPrices($product); + $realProductPrice = $resTab[$key]['product_price']; + foreach ($discounts as $discount) + { + if ($discount['id_discount_type'] == 1) + $resTab[$key]['product_price'] -= $realProductPrice * ($discount['value'] / 100); + elseif ($discount['id_discount_type'] == 2) + $resTab[$key]['product_price'] -= (($discount['value'] * ($product['product_price_wt'] / $order->total_products_wt)) / (1.00 + ($product['tax_rate'] / 100))); + } + + } + } + return $order->getProducts($resTab); + } + + public function getProducts() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT *, osd.product_quantity + FROM `'._DB_PREFIX_.'order_slip_detail` osd + INNER JOIN `'._DB_PREFIX_.'order_detail` od ON osd.id_order_detail = od.id_order_detail + WHERE osd.`id_order_slip` = '.(int)$this->id); + + $order = new Order($this->id_order); + $products = array(); + foreach ($result AS $row) + { + $order->setProductPrices($row); + $products[] = $row; + } + return $products; + } + + static public function getSlipsIdByDate($dateFrom, $dateTo) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `id_order_slip` + FROM `'._DB_PREFIX_.'order_slip` + WHERE `date_add` BETWEEN \''.pSQL($dateFrom).' 00:00:00\' AND \''.pSQL($dateTo).' 23:59:59\' + ORDER BY `date_add` ASC'); + + $slips = array(); + foreach ($result AS $slip) + $slips[] = (int)$slip['id_order_slip']; + return $slips; + } + + static public function createOrderSlip($order, $productList, $qtyList, $shipping_cost = false) + { + $currency = new Currency($order->id_currency); + $orderSlip = new OrderSlip(); + $orderSlip->id_customer = (int)($order->id_customer); + $orderSlip->id_order = (int)($order->id); + $orderSlip->shipping_cost = (int)($shipping_cost); + $orderSlip->conversion_rate = $currency->conversion_rate; + if (!$orderSlip->add()) + return false; + + $orderSlip->addSlipDetail($productList, $qtyList); + return true; + } +} + diff --git a/classes/OrderState.php b/classes/OrderState.php new file mode 100644 index 000000000..4d05e1583 --- /dev/null +++ b/classes/OrderState.php @@ -0,0 +1,132 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderStateCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + /** @var string Template name if there is any e-mail to send */ + public $template; + + /** @var boolean Send an e-mail to customer ? */ + public $send_email; + + /** @var boolean Allow customer to view and download invoice when order is at this state */ + public $invoice; + + /** @var string Display state in the specified color */ + public $color; + + public $unremovable; + + /** @var boolean Log authorization */ + public $logable; + + /** @var boolean Delivery */ + public $delivery; + + /** @var boolean Hidden */ + public $hidden; + + protected $fieldsValidate = array('send_email' => 'isBool', 'invoice' => 'isBool', 'color' => 'isColor', 'logable' => 'isBool'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 64, 'template' => 64); + protected $fieldsValidateLang = array('name' => 'isGenericName', 'template' => 'isTplName'); + + protected $table = 'order_state'; + protected $identifier = 'id_order_state'; + + protected $webserviceParameters = array( + 'fields' => array( + 'unremovable' => array(), + 'delivery' => array(), + 'hidden' => array(), + ), + ); + + public function getFields() + { + parent::validateFields(); + $fields['send_email'] = (int)($this->send_email); + $fields['invoice'] = (int)($this->invoice); + $fields['color'] = pSQL($this->color); + $fields['unremovable'] = (int)($this->unremovable); + $fields['logable'] = (int)($this->logable); + $fields['delivery'] = (int)($this->delivery); + $fields['hidden'] = (int)($this->hidden); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name', 'template')); + } + + /** + * Get all available order states + * + * @param integer $id_lang Language id for state name + * @return array Order states + */ + static public function getOrderStates($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'order_state` os + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = '.(int)($id_lang).') + ORDER BY `name` ASC'); + } + + /** + * Check if we can make a facture when order is in this state + * + * @param integer $id_order_state State ID + * @return boolean availability + */ + static public function invoiceAvailable($id_order_state) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `invoice` AS ok + FROM `'._DB_PREFIX_.'order_state` + WHERE `id_order_state` = '.(int)($id_order_state)); + return $result['ok']; + } + + public function isRemovable() + { + return !($this->unremovable); + } +} + + diff --git a/classes/PDF.php b/classes/PDF.php new file mode 100644 index 000000000..4fe6c70f0 --- /dev/null +++ b/classes/PDF.php @@ -0,0 +1,1008 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(_PS_FPDF_PATH_.'fpdf.php'); + +class PDF_PageGroupCore extends FPDF +{ + var $NewPageGroup; // variable indicating whether a new group was requested + var $PageGroups; // variable containing the number of pages of the groups + var $CurrPageGroup; // variable containing the alias of the current page group + + // create a new page group; call this before calling AddPage() + function StartPageGroup() + { + $this->NewPageGroup=true; + } + + // current page in the group + function GroupPageNo() + { + return $this->PageGroups[$this->CurrPageGroup]; + } + + // alias of the current page group -- will be replaced by the total number of pages in this group + function PageGroupAlias() + { + return $this->CurrPageGroup; + } + + function _beginpage($orientation, $arg2) + { + parent::_beginpage($orientation, $arg2); + if($this->NewPageGroup) + { + // start a new group + $n = sizeof($this->PageGroups)+1; + $alias = "{nb$n}"; + $this->PageGroups[$alias] = 1; + $this->CurrPageGroup = $alias; + $this->NewPageGroup=false; + } + elseif($this->CurrPageGroup) + $this->PageGroups[$this->CurrPageGroup]++; + } + + function _putpages() + { + $nb = $this->page; + if (!empty($this->PageGroups)) + { + // do page number replacement + foreach ($this->PageGroups as $k => $v) + for ($n = 1; $n <= $nb; $n++) + $this->pages[$n]=str_replace($k, $v, $this->pages[$n]); + } + parent::_putpages(); + } +} + +class PDFCore extends PDF_PageGroupCore +{ + protected static $order = NULL; + protected static $orderReturn = NULL; + protected static $orderSlip = NULL; + protected static $delivery = NULL; + protected static $_priceDisplayMethod; + + /** @var object Order currency object */ + protected static $currency = NULL; + + protected static $_iso; + + /** @var array Special PDF params such encoding and font */ + + protected static $_pdfparams = array(); + protected static $_fpdf_core_fonts = array('courier', 'helvetica', 'helveticab', 'helveticabi', 'helveticai', 'symbol', 'times', 'timesb', 'timesbi', 'timesi', 'zapfdingbats'); + + /** + * Constructor + */ + public function __construct($orientation='P', $unit='mm', $format='A4') + { + global $cookie; + + if (!isset($cookie) OR !is_object($cookie)) + $cookie->id_lang = (int)(Configuration::get('PS_LANG_DEFAULT')); + self::$_iso = strtoupper(Language::getIsoById($cookie->id_lang)); + FPDF::FPDF($orientation, $unit, $format); + $this->_initPDFFonts(); + } + + protected function _initPDFFonts() + { + if (!$languages = Language::getLanguages()) + die(Tools::displayError()); + foreach ($languages AS $language) + { + $isoCode = strtoupper($language['iso_code']); + $conf = Configuration::getMultiple(array('PS_PDF_ENCODING_'.$isoCode, 'PS_PDF_FONT_'.$isoCode)); + self::$_pdfparams[$isoCode] = array( + 'encoding' => (isset($conf['PS_PDF_ENCODING_'.$isoCode]) AND $conf['PS_PDF_ENCODING_'.$isoCode] == true) ? $conf['PS_PDF_ENCODING_'.$isoCode] : 'iso-8859-1', + 'font' => (isset($conf['PS_PDF_FONT_'.$isoCode]) AND $conf['PS_PDF_FONT_'.$isoCode] == true) ? $conf['PS_PDF_FONT_'.$isoCode] : 'helvetica' + ); + } + + if ($font = self::embedfont()) + { + $this->AddFont($font); + $this->AddFont($font, 'B'); + } + } + + /** + * Invoice header + */ + public function Header() + { + global $cookie; + + $conf = Configuration::getMultiple(array('PS_SHOP_NAME', 'PS_SHOP_ADDR1', 'PS_SHOP_CODE', 'PS_SHOP_CITY', 'PS_SHOP_COUNTRY', 'PS_SHOP_STATE')); + $conf['PS_SHOP_NAME'] = isset($conf['PS_SHOP_NAME']) ? Tools::iconv('utf-8', self::encoding(), $conf['PS_SHOP_NAME']) : 'Your company'; + $conf['PS_SHOP_ADDR1'] = isset($conf['PS_SHOP_ADDR1']) ? Tools::iconv('utf-8', self::encoding(), $conf['PS_SHOP_ADDR1']) : 'Your company'; + $conf['PS_SHOP_CODE'] = isset($conf['PS_SHOP_CODE']) ? Tools::iconv('utf-8', self::encoding(), $conf['PS_SHOP_CODE']) : 'Postcode'; + $conf['PS_SHOP_CITY'] = isset($conf['PS_SHOP_CITY']) ? Tools::iconv('utf-8', self::encoding(), $conf['PS_SHOP_CITY']) : 'City'; + $conf['PS_SHOP_COUNTRY'] = isset($conf['PS_SHOP_COUNTRY']) ? Tools::iconv('utf-8', self::encoding(), $conf['PS_SHOP_COUNTRY']) : 'Country'; + $conf['PS_SHOP_STATE'] = isset($conf['PS_SHOP_STATE']) ? Tools::iconv('utf-8', self::encoding(), $conf['PS_SHOP_STATE']) : ''; + + if (file_exists(_PS_IMG_DIR_.'/logo_invoice.jpg')) + $this->Image(_PS_IMG_DIR_.'/logo_invoice.jpg', 10, 8, 0, 15); + else if (file_exists(_PS_IMG_DIR_.'/logo.jpg')) + $this->Image(_PS_IMG_DIR_.'/logo.jpg', 10, 8, 0, 15); + $this->SetFont(self::fontname(), 'B', 15); + $this->Cell(115); + + if (self::$orderReturn) + $this->Cell(77, 10, self::l('RETURN #').' '.sprintf('%06d', self::$orderReturn->id), 0, 1, 'R'); + elseif (self::$orderSlip) + $this->Cell(77, 10, self::l('SLIP #').' '.sprintf('%06d', self::$orderSlip->id), 0, 1, 'R'); + elseif (self::$delivery) + $this->Cell(77, 10, self::l('DELIVERY SLIP #').' '.Tools::iconv('utf-8', self::encoding(), Configuration::get('PS_DELIVERY_PREFIX', (int)($cookie->id_lang))).sprintf('%06d', self::$delivery), 0, 1, 'R'); + elseif (self::$order->invoice_number) + $this->Cell(77, 10, self::l('INVOICE #').' '.Tools::iconv('utf-8', self::encoding(), Configuration::get('PS_INVOICE_PREFIX', (int)($cookie->id_lang))).sprintf('%06d', self::$order->invoice_number), 0, 1, 'R'); + else + $this->Cell(77, 10, self::l('ORDER #').' '.sprintf('%06d', self::$order->id), 0, 1, 'R'); + } + + /** + * Invoice footer + */ + public function Footer() + { + $arrayConf = array('PS_SHOP_NAME', 'PS_SHOP_ADDR1', 'PS_SHOP_ADDR2', 'PS_SHOP_CODE', 'PS_SHOP_CITY', 'PS_SHOP_COUNTRY', 'PS_SHOP_DETAILS', 'PS_SHOP_PHONE', 'PS_SHOP_STATE'); + $conf = Configuration::getMultiple($arrayConf); + $conf['PS_SHOP_NAME_UPPER'] = Tools::strtoupper($conf['PS_SHOP_NAME']); + $y_delta = array_key_exists('PS_SHOP_DETAILS', $conf) ? substr_count($conf['PS_SHOP_DETAILS'],"\n") : 0; + $this->SetY( -33 - ($y_delta * 7)); + $this->SetFont(self::fontname(), '', 7); + $this->Cell(190, 5, ' '."\n".Tools::iconv('utf-8', self::encoding(), 'P. ').$this->GroupPageNo().' / '.$this->PageGroupAlias(), 'T', 1, 'R'); + + /* + * Display a message for customer + */ + if (!self::$delivery) + { + $this->SetFont(self::fontname(), '', 8); + if (self::$orderSlip) + $textFooter = self::l('An electronic version of this invoice is available in your account. To access it, log in to the'); + else + $textFooter = self::l('An electronic version of this invoice is available in your account. To access it, log in to the'); + $this->Cell(0, 10, $textFooter, 0, 0, 'C', 0, (Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].__PS_BASE_URI__.'history.php'); + $this->Ln(4); + $this->Cell(0, 10, Tools::iconv('utf-8', self::encoding(), Configuration::get('PS_SHOP_NAME')).' '.self::l('website using your e-mail address and password (which you created when placing your first order).'), 0, 0, 'C', 0, (Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].__PS_BASE_URI__.'history.php'); + } + else + $this->Ln(4); + $this->Ln(9); + foreach($conf as $key => $value) + $conf[$key] = Tools::iconv('utf-8', self::encoding(), $value); + foreach ($arrayConf as $key) + if (!isset($conf[$key])) + $conf[$key] = ''; + $this->SetFillColor(240, 240, 240); + $this->SetTextColor(0, 0, 0); + $this->SetFont(self::fontname(), '', 8); + $this->Cell(0, 5, $conf['PS_SHOP_NAME_UPPER']. + (!empty($conf['PS_SHOP_ADDR1']) ? ' - '.self::l('Headquarters:').' '.$conf['PS_SHOP_ADDR1'].(!empty($conf['PS_SHOP_ADDR2']) ? ' '.$conf['PS_SHOP_ADDR2'] : '').' '.$conf['PS_SHOP_CODE'].' '.$conf['PS_SHOP_CITY'].((isset($conf['PS_SHOP_STATE']) AND !empty($conf['PS_SHOP_STATE'])) ? (', '.$conf['PS_SHOP_STATE']) : '').' '.$conf['PS_SHOP_COUNTRY'] : ''), 0, 1, 'C', 1); + $this->Multicell(0, 5, + (!empty($conf['PS_SHOP_DETAILS']) ? self::l('Details:').' '.$conf['PS_SHOP_DETAILS'].' - ' : ''). + (!empty($conf['PS_SHOP_PHONE']) ? self::l('PHONE:').' '.$conf['PS_SHOP_PHONE'] : ''), 0, 'C', 1); + } + + public static function multipleInvoices($invoices) + { + $pdf = new PDF('P', 'mm', 'A4'); + foreach ($invoices AS $id_order) + { + $orderObj = new Order((int)$id_order); + if (Validate::isLoadedObject($orderObj)) + PDF::invoice($orderObj, 'D', true, $pdf); + } + return $pdf->Output('invoices.pdf', 'D'); + } + + public static function multipleOrderSlips($orderSlips) + { + $pdf = new PDF('P', 'mm', 'A4'); + foreach ($orderSlips AS $id_order_slip) + { + $orderSlip = new OrderSlip((int)$id_order_slip); + $order = new Order((int)$orderSlip->id_order); + $order->products = OrderSlip::getOrdersSlipProducts($orderSlip->id, $order); + if (Validate::isLoadedObject($orderSlip) AND Validate::isLoadedObject($order)) + PDF::invoice($order, 'D', true, $pdf, $orderSlip); + } + return $pdf->Output('order_slips.pdf', 'D'); + } + + public static function multipleDelivery($slips) + { + $pdf = new PDF('P', 'mm', 'A4'); + foreach ($slips AS $id_order) + { + $orderObj = new Order((int)$id_order); + if (Validate::isLoadedObject($orderObj)) + PDF::invoice($orderObj, 'D', true, $pdf, false, $orderObj->delivery_number); + } + return $pdf->Output('invoices.pdf', 'D'); + } + + public static function orderReturn($orderReturn, $mode = 'D', $multiple = false, &$pdf = NULL) + { + $pdf = new PDF('P', 'mm', 'A4'); + self::$orderReturn = $orderReturn; + $order = new Order($orderReturn->id_order); + self::$order = $order; + $pdf->SetAutoPageBreak(true, 35); + $pdf->StartPageGroup(); + $pdf->AliasNbPages(); + $pdf->AddPage(); + + /* Display address information */ + $delivery_address = new Address((int)($order->id_address_delivery)); + $deliveryState = $delivery_address->id_state ? new State($delivery_address->id_state) : false; + $arrayConf = array('PS_SHOP_NAME', 'PS_SHOP_ADDR1', 'PS_SHOP_ADDR2', 'PS_SHOP_CODE', 'PS_SHOP_CITY', 'PS_SHOP_COUNTRY', 'PS_SHOP_DETAILS', 'PS_SHOP_PHONE', 'PS_SHOP_STATE'); + $conf = Configuration::getMultiple($arrayConf); + foreach ($conf as $key => $value) + $conf[$key] = Tools::iconv('utf-8', self::encoding(), $value); + foreach ($arrayConf as $key) + if (!isset($conf[$key])) + $conf[$key] = ''; + + $width = 100; + $pdf->SetX(10); + $pdf->SetY(25); + $pdf->SetFont(self::fontname(), '', 9); + + if (!empty($delivery_address->company)) + { + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->company), 0, 'L'); + $pdf->Ln(5); + } + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->lastname), 0, 'L'); + $pdf->Ln(5); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address1), 0, 'L'); + $pdf->Ln(5); + if (!empty($delivery_address->address2)) + { + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address2), 0, 'L'); + $pdf->Ln(5); + } + $pdf->Cell($width, 10, $delivery_address->postcode.' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->city), 0, 'L'); + $pdf->Ln(5); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->country.($deliveryState ? ' - '.$deliveryState->name : '')), 0, 'L'); + + /* + * display order information + */ + $pdf->Ln(12); + $pdf->SetFillColor(240, 240, 240); + $pdf->SetTextColor(0, 0, 0); + $pdf->SetFont(self::fontname(), '', 9); + $pdf->Cell(0, 6, self::l('RETURN #').sprintf('%06d', self::$orderReturn->id).' '.self::l('from') . ' ' .Tools::displayDate(self::$orderReturn->date_upd, self::$order->id_lang), 1, 2, 'L'); + $pdf->Cell(0, 6, self::l('We have logged your return request.'), 'TRL', 2, 'L'); + $pdf->Cell(0, 6, self::l('Your package must be returned to us within').' '.Configuration::get('PS_ORDER_RETURN_NB_DAYS').' '.self::l('days of receiving your order.'), 'BRL', 2, 'L'); + $pdf->Ln(5); + $pdf->Cell(0, 6, self::l('List of items marked as returned :'), 0, 2, 'L'); + $pdf->Ln(5); + $pdf->ProdReturnTab(); + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), 'B', 10); + $pdf->Cell(0, 6, self::l('Return reference:').' '.self::l('RET').sprintf('%06d', self::$order->id), 0, 2, 'C'); + $pdf->Cell(0, 6, self::l('Please include this number on your return package.'), 0, 2, 'C'); + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), 'B', 9); + $pdf->Cell(0, 6, self::l('REMINDER:'), 0, 2, 'L'); + $pdf->SetFont(self::fontname(), '', 9); + $pdf->Cell(0, 6, self::l('- All products must be returned in their original packaging without damage or wear.'), 0, 2, 'L'); + $pdf->Cell(0, 6, self::l('- Please print out this document and slip it into your package.'), 0, 2, 'L'); + $pdf->Cell(0, 6, self::l('- The package should be sent to the following address:'), 0, 2, 'L'); + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), 'B', 10); + $pdf->Cell(0, 5, Tools::strtoupper($conf['PS_SHOP_NAME']), 0, 1, 'C', 1); + $pdf->Cell(0, 5, (!empty($conf['PS_SHOP_ADDR1']) ? self::l('Headquarters:').' '.$conf['PS_SHOP_ADDR1'].(!empty($conf['PS_SHOP_ADDR2']) ? ' '.$conf['PS_SHOP_ADDR2'] : '').' '.$conf['PS_SHOP_CODE'].' '.$conf['PS_SHOP_CITY'].' '.$conf['PS_SHOP_COUNTRY'].((isset($conf['PS_SHOP_STATE']) AND !empty($conf['PS_SHOP_STATE'])) ? (', '.$conf['PS_SHOP_STATE']) : '') : ''), 0, 1, 'C', 1); + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), '', 9); + $pdf->Cell(0, 6, self::l('Upon receiving your package, we will notify you by e-mail. We will then begin processing the reimbursement of your order total.'), 0, 2, 'L'); + $pdf->Cell(0, 6, self::l('Let us know if you have any questions.'), 0, 2, 'L'); + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), 'B', 10); + $pdf->Cell(0, 6, self::l('If the conditions of return listed above are not respected,'), 'TRL', 2, 'C'); + $pdf->Cell(0, 6, self::l('we reserve the right to refuse your package and/or reimbursement.'), 'BRL', 2, 'C'); + + return $pdf->Output(sprintf('%06d', self::$order->id).'.pdf', $mode); + } + + /** + * Product table with references, quantities... + */ + public function ProdReturnTab() + { + $header = array( + array(self::l('Description'), 'L'), + array(self::l('Reference'), 'L'), + array(self::l('Qty'), 'C') + ); + $w = array(110, 25, 20); + $this->SetFont(self::fontname(), 'B', 8); + $this->SetFillColor(240, 240, 240); + for ($i = 0; $i < sizeof($header); $i++) + $this->Cell($w[$i], 5, $header[$i][0], 'T', 0, $header[$i][1], 1); + $this->Ln(); + $this->SetFont(self::fontname(), '', 7); + + $products = OrderReturn::getOrdersReturnProducts(self::$orderReturn->id, self::$order); + foreach ($products AS $product) + { + $before = $this->GetY(); + $this->MultiCell($w[0], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B'); + $lineSize = $this->GetY() - $before; + $this->SetXY($this->GetX() + $w[0], $this->GetY() - $lineSize); + $this->Cell($w[1], $lineSize, ($product['product_reference'] != '' ? Tools::iconv('utf-8', self::encoding(), $product['product_reference']) : '---'), 'B'); + $this->Cell($w[2], $lineSize, $product['product_quantity'], 'B', 0, 'C'); + $this->Ln(); + } + } + + /** + * Main + * + * @param object $order Order + * @param string $mode Download or display (optional) + */ + public static function invoice($order, $mode = 'D', $multiple = false, &$pdf = NULL, $slip = false, $delivery = false) + { + global $cookie; + + if (!Validate::isLoadedObject($order) OR (!$cookie->id_employee AND (!OrderState::invoiceAvailable($order->getCurrentState()) AND !$order->invoice_number))) + die('Invalid order or invalid order state'); + self::$order = $order; + self::$orderSlip = $slip; + self::$delivery = $delivery; + self::$_iso = strtoupper(Language::getIsoById((int)(self::$order->id_lang))); + if ((self::$_priceDisplayMethod = $order->getTaxCalculationMethod()) === false) + die(self::l('No price display method defined for the customer group')); + + if (!$multiple) + $pdf = new PDF('P', 'mm', 'A4'); + + $pdf->SetAutoPageBreak(true, 35); + $pdf->StartPageGroup(); + + self::$currency = Currency::getCurrencyInstance((int)(self::$order->id_currency)); + + $pdf->AliasNbPages(); + $pdf->AddPage(); + /* Display address information */ + $invoice_address = new Address((int)($order->id_address_invoice)); + $invoiceState = $invoice_address->id_state ? new State($invoice_address->id_state) : false; + $delivery_address = new Address((int)($order->id_address_delivery)); + $deliveryState = $delivery_address->id_state ? new State($delivery_address->id_state) : false; + + $width = 100; + + $pdf->SetX(10); + $pdf->SetY(25); + $pdf->SetFont(self::fontname(), '', 12); + $pdf->Cell($width, 10, self::l('Delivery'), 0, 'L'); + $pdf->Cell($width, 10, self::l('Invoicing'), 0, 'L'); + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), '', 9); + + if (!empty($delivery_address->company) OR !empty($invoice_address->company)) + { + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->company), 0, 'L'); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->company), 0, 'L'); + $pdf->Ln(5); + } + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->lastname), 0, 'L'); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->firstname).' '.Tools::iconv('utf-8', self::encoding(), $invoice_address->lastname), 0, 'L'); + $pdf->Ln(5); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address1), 0, 'L'); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->address1), 0, 'L'); + $pdf->Ln(5); + if (!empty($invoice_address->address2) OR !empty($delivery_address->address2)) + { + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->address2), 0, 'L'); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->address2), 0, 'L'); + $pdf->Ln(5); + } + $pdf->Cell($width, 10, $delivery_address->postcode.' '.Tools::iconv('utf-8', self::encoding(), $delivery_address->city), 0, 'L'); + $pdf->Cell($width, 10, $invoice_address->postcode.' '.Tools::iconv('utf-8', self::encoding(), $invoice_address->city), 0, 'L'); + $pdf->Ln(5); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $delivery_address->country.($deliveryState ? ' - '.$deliveryState->name : '')), 0, 'L'); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->country.($invoiceState ? ' - '.$invoiceState->name : '')), 0, 'L'); + $pdf->Ln(5); + + if (Configuration::get('VATNUMBER_MANAGEMENT') AND !empty($invoice_address->vat_number)) + { + $vat_delivery = ''; + if ($invoice_address->id != $delivery_address->id) + $vat_delivery = $delivery_address->vat_number; + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $vat_delivery), 0, 'L'); + $pdf->Cell($width, 10, Tools::iconv('utf-8', self::encoding(), $invoice_address->vat_number), 0, 'L'); + $pdf->Ln(5); + } + + $pdf->Cell($width, 10, $delivery_address->phone, 0, 'L'); + if($invoice_address->dni != NULL) + $pdf->Cell($width, 10, self::l('Tax ID number:').' '.Tools::iconv('utf-8', self::encoding(), $invoice_address->dni), 0, 'L'); + if (!empty($delivery_address->phone_mobile)) + { + $pdf->Ln(5); + $pdf->Cell($width, 10, $delivery_address->phone_mobile, 0, 'L'); + } + + /* + * display order information + */ + $carrier = new Carrier(self::$order->id_carrier); + if ($carrier->name == '0') + $carrier->name = Configuration::get('PS_SHOP_NAME'); + $history = self::$order->getHistory(self::$order->id_lang); + foreach($history as $h) + if ($h['id_order_state'] == _PS_OS_SHIPPING_) + $shipping_date = $h['date_add']; + $pdf->Ln(12); + $pdf->SetFillColor(240, 240, 240); + $pdf->SetTextColor(0, 0, 0); + $pdf->SetFont(self::fontname(), '', 9); + if (self::$orderSlip) + $pdf->Cell(0, 6, self::l('SLIP #').sprintf('%06d', self::$orderSlip->id).' '.self::l('from') . ' ' .Tools::displayDate(self::$orderSlip->date_upd, self::$order->id_lang), 1, 2, 'L', 1); + elseif (self::$delivery) + $pdf->Cell(0, 6, self::l('DELIVERY SLIP #').Configuration::get('PS_DELIVERY_PREFIX', (int)($cookie->id_lang)).sprintf('%06d', self::$delivery).' '.self::l('from') . ' ' .Tools::displayDate(self::$order->delivery_date, self::$order->id_lang), 1, 2, 'L', 1); + else + $pdf->Cell(0, 6, self::l('INVOICE #').Configuration::get('PS_INVOICE_PREFIX', (int)($cookie->id_lang)).sprintf('%06d', self::$order->invoice_number).' '.self::l('from') . ' ' .Tools::displayDate(self::$order->invoice_date, self::$order->id_lang), 1, 2, 'L', 1); + $pdf->Cell(55, 6, self::l('Order #').sprintf('%06d', self::$order->id), 'L', 0); + $pdf->Cell(70, 6, self::l('Carrier:').($order->gift ? ' '.Tools::iconv('utf-8', self::encoding(), $carrier->name) : ''), 'L'); + $pdf->Cell(0, 6, self::l('Payment method:'), 'LR'); + $pdf->Ln(5); + $pdf->Cell(55, 6, (isset($shipping_date) ? self::l('Shipping date:').' '.Tools::displayDate($shipping_date, self::$order->id_lang) : ' '), 'LB', 0); + $pdf->Cell(70, 6, ($order->gift ? self::l('Gift-wrapped order') : Tools::iconv('utf-8', self::encoding(), $carrier->name)), 'LRB'); + $pdf->Cell(0, 6, Tools::iconv('utf-8', self::encoding(), $order->payment), 'LRB'); + $pdf->Ln(15); + $pdf->ProdTab((self::$delivery ? true : '')); + + /* Exit if delivery */ + if (!self::$delivery) + { + if (!self::$orderSlip) + $pdf->DiscTab(); + $priceBreakDown = array(); + $pdf->priceBreakDownCalculation($priceBreakDown); + + if (!self::$orderSlip OR (self::$orderSlip AND self::$orderSlip->shipping_cost)) + { + $priceBreakDown['totalWithoutTax'] += Tools::ps_round($priceBreakDown['shippingCostWithoutTax'], 2) + Tools::ps_round($priceBreakDown['wrappingCostWithoutTax'], 2); + $priceBreakDown['totalWithTax'] += self::$order->total_shipping + self::$order->total_wrapping; + } + if (!self::$orderSlip) + { + $taxDiscount = self::$order->getTaxesAverageUsed(); + if ($taxDiscount != 0) + $priceBreakDown['totalWithoutTax'] -= Tools::ps_round(self::$order->total_discounts / (1 + self::$order->getTaxesAverageUsed() * 0.01), 2); + else + $priceBreakDown['totalWithoutTax'] -= self::$order->total_discounts; + $priceBreakDown['totalWithTax'] -= self::$order->total_discounts; + } + + /* + * Display price summation + */ + if (Configuration::get('PS_TAX') OR $order->total_products_wt != $order->total_products) + { + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), 'B', 8); + $width = 165; + $pdf->Cell($width, 0, self::l('Total products (tax excl.)').' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalProductsWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + + $pdf->SetFont(self::fontname(), 'B', 8); + $width = 165; + $pdf->Cell($width, 0, self::l('Total products (tax incl.)').' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalProductsWithTax'], self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + else + { + $pdf->Ln(5); + $pdf->SetFont(self::fontname(), 'B', 8); + $width = 165; + $pdf->Cell($width, 0, self::l('Total products ').' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalProductsWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + + if (!self::$orderSlip AND self::$order->total_discounts != '0.00') + { + $pdf->Cell($width, 0, self::l('Total discounts (tax incl.)').' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (!self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_discounts, self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + + if(isset(self::$order->total_wrapping) and ((float)(self::$order->total_wrapping) > 0)) + { + $pdf->Cell($width, 0, self::l('Total gift-wrapping').' : ', 0, 0, 'R'); + if (self::$_priceDisplayMethod == PS_TAX_EXC) + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['wrappingCostWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + else + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_wrapping, self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + + if (self::$order->total_shipping != '0.00' AND (!self::$orderSlip OR (self::$orderSlip AND self::$orderSlip->shipping_cost))) + { + $pdf->Cell($width, 0, self::l('Total shipping').' : ', 0, 0, 'R'); + if (self::$_priceDisplayMethod == PS_TAX_EXC) + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(Tools::ps_round($priceBreakDown['shippingCostWithoutTax'], 2), self::$currency, true, false)), 0, 0, 'R'); + else + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_shipping, self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + + if (Configuration::get('PS_TAX') OR $order->total_products_wt != $order->total_products) + { + $pdf->Cell($width, 0, self::l('Total').' '.(self::$_priceDisplayMethod == PS_TAX_EXC ? self::l(' (tax incl.)') : self::l(' (tax excl.)')).' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice((self::$_priceDisplayMethod == PS_TAX_EXC ? $priceBreakDown['totalWithTax'] : $priceBreakDown['totalWithoutTax']), self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + $pdf->Cell($width, 0, self::l('Total').' '.(self::$_priceDisplayMethod == PS_TAX_EXC ? self::l(' (tax excl.)') : self::l(' (tax incl.)')).' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice((self::$_priceDisplayMethod == PS_TAX_EXC ? $priceBreakDown['totalWithoutTax'] : $priceBreakDown['totalWithTax']), self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + else + { + $pdf->Cell($width, 0, self::l('Total').' : ', 0, 0, 'R'); + $pdf->Cell(0, 0, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(($priceBreakDown['totalWithoutTax']), self::$currency, true, false)), 0, 0, 'R'); + $pdf->Ln(4); + } + + $pdf->TaxTab($priceBreakDown); + } + Hook::PDFInvoice($pdf, self::$order->id); + + if (!$multiple) + return $pdf->Output(sprintf('%06d', self::$order->id).'.pdf', $mode); + } + + public function ProdTabHeader($delivery = false) + { + if (!$delivery) + { + $header = array( + array(self::l('Description'), 'L'), + array(self::l('Reference'), 'L'), + array(self::l('U. price'), 'R'), + array(self::l('Qty'), 'C'), + array(self::l('Total'), 'R') + ); + $w = array(100, 15, 30, 15, 30); + } + else + { + $header = array( + array(self::l('Description'), 'L'), + array(self::l('Reference'), 'L'), + array(self::l('Qty'), 'C'), + ); + $w = array(120, 30, 10); + } + $this->SetFont(self::fontname(), 'B', 8); + $this->SetFillColor(240, 240, 240); + if ($delivery) + $this->SetX(25); + for($i = 0; $i < sizeof($header); $i++) + $this->Cell($w[$i], 5, $header[$i][0], 'T', 0, $header[$i][1], 1); + $this->Ln(); + $this->SetFont(self::fontname(), '', 8); + } + + /** + * Product table with price, quantities... + */ + public function ProdTab($delivery = false) + { + if (!$delivery) + $w = array(100, 15, 30, 15, 30); + else + $w = array(120, 30, 10); + self::ProdTabHeader($delivery); + if (!self::$orderSlip) + { + if (isset(self::$order->products) AND sizeof(self::$order->products)) + $products = self::$order->products; + else + $products = self::$order->getProducts(); + } + else + $products = self::$orderSlip->getProducts(); + $customizedDatas = Product::getAllCustomizedDatas((int)(self::$order->id_cart)); + Product::addCustomizationPrice($products, $customizedDatas); + + $counter = 0; + $lines = 25; + $lineSize = 0; + $line = 0; + + + foreach($products AS $product) + if (!$delivery OR ((int)($product['product_quantity']) - (int)($product['product_quantity_refunded']) > 0)) + { + if($counter >= $lines) + { + $this->AddPage(); + $this->Ln(); + self::ProdTabHeader($delivery); + $lineSize = 0; + $counter = 0; + $lines = 40; + $line++; + } + $counter = $counter + ($lineSize / 5) ; + + $i = -1; + + // Unit vars + $unit_without_tax = $product['product_price'] + $product['ecotax']; + $unit_with_tax = $product['product_price_wt'] + ($product['ecotax'] * (1 + $product['ecotax_tax_rate'] / 100)); + if (self::$_priceDisplayMethod == PS_TAX_EXC) + $unit_price = &$unit_without_tax; + else + $unit_price = &$unit_with_tax; + $productQuantity = $delivery ? ((int)($product['product_quantity']) - (int)($product['product_quantity_refunded'])) : (int)($product['product_quantity']); + + if ($productQuantity <= 0) + continue ; + + // Total prices + $total_with_tax = $unit_with_tax * $productQuantity; + $total_without_tax = $unit_without_tax * $productQuantity; + // Spec + if (self::$_priceDisplayMethod == PS_TAX_EXC) + $final_price = &$total_without_tax; + else + $final_price = &$total_with_tax; + // End Spec + + if (isset($customizedDatas[$product['product_id']][$product['product_attribute_id']])) + { + $productQuantity = (int)($product['product_quantity']) - (int)($product['customizationQuantityTotal']); + if ($delivery) + $this->SetX(25); + $before = $this->GetY(); + $this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']).' - '.self::l('Customized'), 'B'); + $lineSize = $this->GetY() - $before; + $this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize); + $this->Cell($w[++$i], $lineSize, $product['product_reference'], 'B'); + if (!$delivery) + $this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price, self::$currency, true, false)), 'B', 0, 'R'); + $this->Cell($w[++$i], $lineSize, (int)($product['customizationQuantityTotal']), 'B', 0, 'C'); + if (!$delivery) + $this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price * (int)($product['customizationQuantityTotal']), self::$currency, true, false)), 'B', 0, 'R'); + $this->Ln(); + $i = -1; + $total_with_tax = $unit_with_tax * $productQuantity; + $total_without_tax = $unit_without_tax * $productQuantity; + } + if ($delivery) + $this->SetX(25); + if ($productQuantity) + { + $before = $this->GetY(); + $this->MultiCell($w[++$i], 5, Tools::iconv('utf-8', self::encoding(), $product['product_name']), 'B'); + $lineSize = $this->GetY() - $before; + $this->SetXY($this->GetX() + $w[0] + ($delivery ? 15 : 0), $this->GetY() - $lineSize); + $this->Cell($w[++$i], $lineSize, ($product['product_reference'] ? $product['product_reference'] : '--'), 'B'); + if (!$delivery) + $this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($unit_price, self::$currency, true, false)), 'B', 0, 'R'); + $this->Cell($w[++$i], $lineSize, $productQuantity, 'B', 0, 'C'); + if (!$delivery) + $this->Cell($w[++$i], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($final_price, self::$currency, true, false)), 'B', 0, 'R'); + $this->Ln(); + } + } + + if (!sizeof(self::$order->getDiscounts()) AND !$delivery) + $this->Cell(array_sum($w), 0, ''); + } + + /** + * Discount table with value, quantities... + */ + public function DiscTab() + { + $w = array(90, 25, 15, 10, 25, 25); + $this->SetFont(self::fontname(), 'B', 7); + $discounts = self::$order->getDiscounts(); + + foreach($discounts AS $discount) + { + $this->Cell($w[0], 6, self::l('Discount:').' '.$discount['name'], 'B'); + $this->Cell($w[1], 6, '', 'B'); + $this->Cell($w[2], 6, '', 'B'); + $this->Cell($w[3], 6, '', 'B', 0, 'R'); + $this->Cell($w[4], 6, '1', 'B', 0, 'C'); + $this->Cell($w[5], 6, ((!self::$orderSlip AND $discount['value'] != 0.00) ? '-' : '').self::convertSign(Tools::displayPrice($discount['value'], self::$currency, true, false)), 'B', 0, 'R'); + $this->Ln(); + } + + if (sizeof($discounts)) + $this->Cell(array_sum($w), 0, ''); + } + + public function priceBreakDownCalculation(array &$priceBreakDown) + { + $priceBreakDown['totalsWithoutTax'] = array(); + $priceBreakDown['totalsWithTax'] = array(); + $priceBreakDown['totalsEcotax'] = array(); + $priceBreakDown['wrappingCostWithoutTax'] = 0; + $priceBreakDown['shippingCostWithoutTax'] = 0; + $priceBreakDown['totalWithoutTax'] = 0; + $priceBreakDown['totalWithTax'] = 0; + $priceBreakDown['totalProductsWithoutTax'] = 0; + $priceBreakDown['totalProductsWithTax'] = 0; + $priceBreakDown['hasEcotax'] = 0; + if (self::$order->total_paid == '0.00' AND self::$order->total_discounts == 0) + return ; + + // Setting products tax + if (isset(self::$order->products) AND sizeof(self::$order->products)) + $products = self::$order->products; + else + $products = self::$order->getProducts(); + $amountWithoutTax = 0; + $taxes = array(); + /* Firstly calculate all prices */ + foreach ($products AS &$product) + { + if (!isset($priceBreakDown['totalsWithTax'][$product['tax_rate']])) + $priceBreakDown['totalsWithTax'][$product['tax_rate']] = 0; + if (!isset($priceBreakDown['totalsEcotax'][$product['tax_rate']])) + $priceBreakDown['totalsEcotax'][$product['tax_rate']] = 0; + if (!isset($priceBreakDown['totalsWithoutTax'][$product['tax_rate']])) + $priceBreakDown['totalsWithoutTax'][$product['tax_rate']] = 0; + if (!isset($taxes[$product['tax_rate']])) + $taxes[$product['tax_rate']] = 0; + + /* Without tax */ + if (self::$_priceDisplayMethod == PS_TAX_EXC) + $product['priceWithoutTax'] = Tools::ps_round((float)($product['product_price']) + (float)$product['ecotax'], 2); + else + $product['priceWithoutTax'] = ($product['product_price_wt_but_ecotax'] / (1 + $product['tax_rate'] / 100)) + (float)$product['ecotax']; + + $product['priceWithoutTax'] = $product['priceWithoutTax'] * (int)($product['product_quantity']); + + $amountWithoutTax += $product['priceWithoutTax']; + /* With tax */ + $product['priceWithTax'] = (float)($product['product_price_wt']) * (int)($product['product_quantity']); + $product['priceEcotax'] = $product['ecotax'] * (1 + $product['ecotax_tax_rate'] / 100); + } + + $priceBreakDown['totalsProductsWithoutTax'] = $priceBreakDown['totalsWithoutTax']; + $priceBreakDown['totalsProductsWithTax'] = $priceBreakDown['totalsWithTax']; + + $tmp = 0; + $product = &$tmp; + /* And secondly assign to each tax its own reduction part */ + $discountAmount = (float)(self::$order->total_discounts); + foreach ($products as $product) + { + $ratio = $amountWithoutTax == 0 ? 0 : $product['priceWithoutTax'] / $amountWithoutTax; + $priceWithTaxAndReduction = $product['priceWithTax'] - $discountAmount * $ratio; + if (self::$_priceDisplayMethod == PS_TAX_EXC) + { + $vat = $priceWithTaxAndReduction - Tools::ps_round($priceWithTaxAndReduction / $product['product_quantity'] / (((float)($product['tax_rate']) / 100) + 1), 2) * $product['product_quantity']; + $priceBreakDown['totalsWithoutTax'][$product['tax_rate']] += $product['priceWithoutTax'] ; + $priceBreakDown['totalsProductsWithoutTax'][$product['tax_rate']] += $product['priceWithoutTax']; + } + else + { + $vat = (float)($product['priceWithoutTax']) * ((float)($product['tax_rate']) / 100) * $product['product_quantity']; + $priceBreakDown['totalsWithTax'][$product['tax_rate']] += $product['priceWithTax']; + $priceBreakDown['totalsProductsWithTax'][$product['tax_rate']] += $product['priceWithTax']; + $priceBreakDown['totalsProductsWithoutTax'][$product['tax_rate']] += $product['priceWithoutTax']; + } + $priceBreakDown['totalsEcotax'][$product['tax_rate']] += ($product['priceEcotax'] * $product['product_quantity']); + if ($priceBreakDown['totalsEcotax'][$product['tax_rate']]) + $priceBreakDown['hasEcotax'] = 1; + $taxes[$product['tax_rate']] += $vat; + } + + $carrier_tax_rate = (float)self::$order->carrier_tax_rate; + if (($priceBreakDown['totalsWithoutTax'] == $priceBreakDown['totalsWithTax']) AND (!$carrier_tax_rate OR $carrier_tax_rate == '0.00') AND (!self::$order->total_wrapping OR self::$order->total_wrapping == '0.00')) + return ; + + foreach ($taxes AS $tax_rate => &$vat) + { + if (self::$_priceDisplayMethod == PS_TAX_EXC) + { + $priceBreakDown['totalsWithoutTax'][$tax_rate] = Tools::ps_round($priceBreakDown['totalsWithoutTax'][$tax_rate], 2); + $priceBreakDown['totalsProductsWithoutTax'][$tax_rate] = Tools::ps_round($priceBreakDown['totalsWithoutTax'][$tax_rate], 2); + $priceBreakDown['totalsWithTax'][$tax_rate] = Tools::ps_round($priceBreakDown['totalsWithoutTax'][$tax_rate] * (1 + $tax_rate / 100), 2); + $priceBreakDown['totalsProductsWithTax'][$tax_rate] = Tools::ps_round($priceBreakDown['totalsProductsWithoutTax'][$tax_rate] * (1 + $tax_rate / 100), 2); + } + else + { + $priceBreakDown['totalsWithoutTax'][$tax_rate] = $priceBreakDown['totalsProductsWithoutTax'][$tax_rate]; + $priceBreakDown['totalsProductsWithoutTax'][$tax_rate] = Tools::ps_round($priceBreakDown['totalsProductsWithoutTax'][$tax_rate], 2); + } + $priceBreakDown['totalWithTax'] += $priceBreakDown['totalsWithTax'][$tax_rate]; + $priceBreakDown['totalWithoutTax'] += $priceBreakDown['totalsWithoutTax'][$tax_rate]; + $priceBreakDown['totalProductsWithoutTax'] += $priceBreakDown['totalsProductsWithoutTax'][$tax_rate]; + $priceBreakDown['totalProductsWithTax'] += $priceBreakDown['totalsProductsWithTax'][$tax_rate]; + } + $priceBreakDown['taxes'] = $taxes; + $priceBreakDown['shippingCostWithoutTax'] = ($carrier_tax_rate AND $carrier_tax_rate != '0.00') ? (self::$order->total_shipping / (1 + ($carrier_tax_rate / 100))) : self::$order->total_shipping; + if (self::$order->total_wrapping AND self::$order->total_wrapping != '0.00') + { + $wrappingTax = new Tax(Configuration::get('PS_GIFT_WRAPPING_TAX')); + $priceBreakDown['wrappingCostWithoutTax'] = self::$order->total_wrapping / (1 + ((float)($wrappingTax->rate) / 100)); + } + } + + /** + * Tax table + */ + public function TaxTab(array &$priceBreakDown) + { + + $invoiceAddress = new Address(self::$order->id_address_invoice); + if (Configuration::get('VATNUMBER_MANAGEMENT') AND !empty($invoiceAddress->vat_number) AND $invoiceAddress->id_country != Configuration::get('VATNUMBER_COUNTRY')) + { + $this->Ln(); + $this->Cell(30, 0, self::l('Exempt of VAT according section 259B of the General Tax Code.'), 0, 0, 'L'); + return; + } + + if (self::$order->total_paid == '0.00' OR (!(int)(Configuration::get('PS_TAX')) AND self::$order->total_products == self::$order->total_products_wt)) + return ; + + $carrier_tax_rate = (float)self::$order->carrier_tax_rate; + if (($priceBreakDown['totalsWithoutTax'] == $priceBreakDown['totalsWithTax']) AND (!$carrier_tax_rate OR $carrier_tax_rate == '0.00') AND (!self::$order->total_wrapping OR self::$order->total_wrapping == '0.00')) + return ; + + // Displaying header tax + if ($priceBreakDown['hasEcotax']) + { + $header = array(self::l('Tax detail'), self::l('Tax'), self::l('Pre-Tax Total'), self::l('Total Tax'), self::l('Ecotax (Tax Incl.)'), self::l('Total with Tax')); + $w = array(60, 20, 40, 20, 30, 20); + } + else + { + $header = array(self::l('Tax detail'), self::l('Tax'), self::l('Pre-Tax Total'), self::l('Total Tax'), self::l('Total with Tax')); + $w = array(60, 30, 40, 30, 30); + } + $this->SetFont(self::fontname(), 'B', 8); + for($i = 0; $i < sizeof($header); $i++) + $this->Cell($w[$i], 5, $header[$i], 0, 0, 'R'); + + $this->Ln(); + $this->SetFont(self::fontname(), '', 7); + + $nb_tax = 0; + + // Display product tax + foreach ($priceBreakDown['taxes'] AS $tax_rate => $vat) + { + if ($tax_rate != '0.00' AND $priceBreakDown['totalsProductsWithTax'][$tax_rate] != '0.00') + { + $nb_tax++; + $before = $this->GetY(); + $lineSize = $this->GetY() - $before; + $this->SetXY($this->GetX(), $this->GetY() - $lineSize + 3); + $this->Cell($w[0], $lineSize, self::l('Products'), 0, 0, 'R'); + $this->Cell($w[1], $lineSize, number_format($tax_rate, 3, ',', ' ').' %', 0, 0, 'R'); + $this->Cell($w[2], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalsProductsWithoutTax'][$tax_rate], self::$currency, true, false)), 0, 0, 'R'); + $this->Cell($w[3], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalsProductsWithTax'][$tax_rate] - $priceBreakDown['totalsProductsWithoutTax'][$tax_rate], self::$currency, true, false)), 0, 0, 'R'); + if ($priceBreakDown['hasEcotax']) + $this->Cell($w[4], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalsEcotax'][$tax_rate], self::$currency, true, false)), 0, 0, 'R'); + $this->Cell($w[$priceBreakDown['hasEcotax'] ? 5 : 4], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['totalsProductsWithTax'][$tax_rate], self::$currency, true, false)), 0, 0, 'R'); + $this->Ln(); + } + } + + // Display carrier tax + if ($carrier_tax_rate AND $carrier_tax_rate != '0.00' AND ((self::$order->total_shipping != '0.00' AND !self::$orderSlip) OR (self::$orderSlip AND self::$orderSlip->shipping_cost))) + { + $nb_tax++; + $before = $this->GetY(); + $lineSize = $this->GetY() - $before; + $this->SetXY($this->GetX(), $this->GetY() - $lineSize + 3); + $this->Cell($w[0], $lineSize, self::l('Carrier'), 0, 0, 'R'); + $this->Cell($w[1], $lineSize, number_format($carrier_tax_rate, 3, ',', ' ').' %', 0, 0, 'R'); + $this->Cell($w[2], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['shippingCostWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + $this->Cell($w[3], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_shipping - $priceBreakDown['shippingCostWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + if ($priceBreakDown['hasEcotax']) + $this->Cell($w[4], $lineSize, (self::$orderSlip ? '-' : '').'', 0, 0, 'R'); + $this->Cell($w[$priceBreakDown['hasEcotax'] ? 5 : 4], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_shipping, self::$currency, true, false)), 0, 0, 'R'); + $this->Ln(); + } + + // Display wrapping tax + if (self::$order->total_wrapping AND self::$order->total_wrapping != '0.00') + { + $tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX'))); + $taxRate = $tax->rate; + + $nb_tax++; + $before = $this->GetY(); + $lineSize = $this->GetY() - $before; + $this->SetXY($this->GetX(), $this->GetY() - $lineSize + 3); + $this->Cell($w[0], $lineSize, self::l('Gift-wrapping'), 0, 0, 'R'); + $this->Cell($w[1], $lineSize, number_format($taxRate, 3, ',', ' ').' %', 0, 0, 'R'); + $this->Cell($w[2], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice($priceBreakDown['wrappingCostWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + $this->Cell($w[3], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_wrapping - $priceBreakDown['wrappingCostWithoutTax'], self::$currency, true, false)), 0, 0, 'R'); + $this->Cell($w[4], $lineSize, (self::$orderSlip ? '-' : '').self::convertSign(Tools::displayPrice(self::$order->total_wrapping, self::$currency, true, false)), 0, 0, 'R'); + } + + if (!$nb_tax) + $this->Cell(190, 10, self::l('No tax'), 0, 0, 'C'); + } + + static protected function convertSign($s) + { + $arr['before'] = array('€', '£', '¥'); + $arr['after'] = array(chr(128), chr(163), chr(165)); + return str_replace($arr['before'], $arr['after'], $s); + } + + static protected function l($string) + { + global $cookie; + $iso = Language::getIsoById((isset($cookie->id_lang) AND Validate::isUnsignedId($cookie->id_lang)) ? $cookie->id_lang : Configuration::get('PS_LANG_DEFAULT')); + + if (@!include(_PS_TRANSLATIONS_DIR_.$iso.'/pdf.php')) + die('Cannot include PDF translation language file : '._PS_TRANSLATIONS_DIR_.$iso.'/pdf.php'); + + if (!isset($_LANGPDF) OR !is_array($_LANGPDF)) + return str_replace('"', '"', $string); + $key = md5(str_replace('\'', '\\\'', $string)); + $str = (key_exists('PDF_invoice'.$key, $_LANGPDF) ? $_LANGPDF['PDF_invoice'.$key] : $string); + + return (Tools::iconv('utf-8', self::encoding(), $str)); + } + + static public function encoding() + { + return (isset(self::$_pdfparams[self::$_iso]) AND is_array(self::$_pdfparams[self::$_iso]) AND self::$_pdfparams[self::$_iso]['encoding']) ? self::$_pdfparams[self::$_iso]['encoding'] : 'iso-8859-1'; + } + + static public function embedfont() + { + return (((isset(self::$_pdfparams[self::$_iso]) AND is_array(self::$_pdfparams[self::$_iso]) AND self::$_pdfparams[self::$_iso]['font']) AND !in_array(self::$_pdfparams[self::$_iso]['font'], self::$_fpdf_core_fonts)) ? self::$_pdfparams[self::$_iso]['font'] : false); + } + + static public function fontname() + { + $font = self::embedfont(); + if (in_array(self::$_pdfparams[self::$_iso]['font'], self::$_fpdf_core_fonts)) + $font = self::$_pdfparams[self::$_iso]['font']; + return $font ? $font : 'Arial'; + } + +} + diff --git a/classes/Pack.php b/classes/Pack.php new file mode 100644 index 000000000..43a00b8b3 --- /dev/null +++ b/classes/Pack.php @@ -0,0 +1,201 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class PackCore extends Product +{ + protected static $cachePackItems = array(); + protected static $cacheIsPack = array(); + protected static $cacheIsPacked = array(); + + public static function isPack($id_product) + { + if (!array_key_exists($id_product, self::$cacheIsPack)) + { + $result = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'pack WHERE id_product_pack = '.(int)($id_product)); + self::$cacheIsPack[$id_product] = ($result > 0); + } + return self::$cacheIsPack[$id_product]; + } + + public static function isPacked($id_product) + { + if (!array_key_exists($id_product, self::$cacheIsPacked)) + { + $result = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'pack WHERE id_product_item = '.(int)($id_product)); + self::$cacheIsPacked[$id_product] = ($result > 0); + } + return self::$cacheIsPacked[$id_product]; + } + + public static function noPackPrice($id_product) + { + global $cookie; + + $sum = 0; + + $price_display_method = !self::$_taxCalculationMethod; + $items = self::getItems($id_product, Configuration::get('PS_LANG_DEFAULT')); + foreach ($items as $item) + $sum += $item->getPrice($price_display_method) * $item->pack_quantity; + return $sum; + } + + public static function getItems($id_product, $id_lang) + { + if (array_key_exists($id_product, self::$cachePackItems)) + return self::$cachePackItems[$id_product]; + $result = Db::getInstance()->ExecuteS('SELECT id_product_item, quantity FROM '._DB_PREFIX_.'pack where id_product_pack = '.(int)($id_product)); + $arrayResult = array(); + foreach ($result AS $row) + { + $p = new Product($row['id_product_item'], false, (int)($id_lang)); + $p->pack_quantity = $row['quantity']; + $arrayResult[] = $p; + } + self::$cachePackItems[$id_product] = $arrayResult; + return self::$cachePackItems[$id_product]; + } + + public static function isInStock($id_product) + { + // Not enough, the quantity must be > to the item quantity of the pack, not just > 0 + $items = self::getItems((int)($id_product), Configuration::get('PS_LANG_DEFAULT')); + foreach ($items AS $item) + if ($item->quantity == 0 AND !$item->isAvailableWhenOutOfStock((int)($item->out_of_stock))) + return false; + return true; + } + + public static function getItemTable($id_product, $id_lang, $full = false) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.*, pl.*, i.`id_image`, il.`legend`, t.`rate`, cl.`name` AS category_default, a.quantity AS pack_quantity + FROM `'._DB_PREFIX_.'pack` a + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = a.id_product_item + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.id_product = pl.id_product AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).') + WHERE a.`id_product_pack` = '.(int)($id_product) + ); + if (!$full) + return $result; + + $arrayResult = array(); + foreach ($result as $row) + if (!Pack::isPack($row['id_product'])) + $arrayResult[] = Product::getProductProperties($id_lang, $row); + return $arrayResult; + } + + public static function getPacksTable($id_product, $id_lang, $full = false, $limit = NULL) + { + $packs = Db::getInstance()->getValue(' + SELECT GROUP_CONCAT(a.`id_product_pack`, ",") + FROM `'._DB_PREFIX_.'pack` a + WHERE a.`id_product_item` = '.(int)$id_product.')'); + if (!(int)$packs) + return array(); + + $sql = ' + SELECT p.*, pl.*, i.`id_image`, il.`legend`, t.`rate` + FROM `'._DB_PREFIX_.'product` p + NATURAL LEFT JOIN `'._DB_PREFIX_.'product_lang` pl + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)$id_lang.') + WHERE pl.`id_lang` = '.(int)$id_lang.' + AND p.`id_product` IN ('.$packs.')'; + if ($limit) + $sql .= ' LIMIT '.(int)$limit; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + if (!$full) + return $result; + + $arrayResult = array(); + foreach ($result as $row) + if (!Pack::isPacked($row['id_product'])) + $arrayResult[] = Product::getProductProperties($id_lang, $row); + return $arrayResult; + } + + public static function deleteItems($id_product) + { + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET cache_is_pack = 0 WHERE id_product = '.(int)($id_product).' LIMIT 1'); + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'pack` WHERE `id_product_pack` = '.(int)($id_product)); + } + + /** + * @deprecated + */ + public static function addItems($id_product, $ids) + { + Tools::displayAsDeprecated(); + + array_pop($ids); + foreach ($ids as $id_product_item) + { + $idQty = explode('x', $id_product_item); + if (!self::addItem($id_product, $idQty[1], $idQty[0])) + return false; + } + return true; + } + + /** + * Add an item to the pack + * + * @param integer $id_product + * @param integer $id_item + * @param integer $qty + * @return boolean true if everything was fine + */ + public static function addItem($id_product, $id_item, $qty) + { + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET cache_is_pack = 1 WHERE id_product = '.(int)($id_product).' LIMIT 1'); + return Db::getInstance()->AutoExecute(_DB_PREFIX_.'pack', array('id_product_pack' => (int)($id_product), 'id_product_item' => (int)($id_item), 'quantity' => (int)($qty)), 'INSERT'); + } + + public static function duplicate($id_product_old, $id_product_new) + { + Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'pack (id_product_pack, id_product_item, quantity) + (SELECT '.(int)($id_product_new).', id_product_item, quantity FROM '._DB_PREFIX_.'pack WHERE id_product_pack = '.(int)($id_product_old).')'); + + // If return query result, a non-pack product will return false + return true; + } +} + diff --git a/classes/Page.php b/classes/Page.php new file mode 100644 index 000000000..9c235ff78 --- /dev/null +++ b/classes/Page.php @@ -0,0 +1,120 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class PageCore extends ObjectModel +{ + public $id_page_type; + public $id_object; + + public $name; + + protected $fieldsRequired = array ('id_page_type'); + protected $fieldsValidate = array ('id_page_type' => 'isUnsignedId', 'id_object' => 'isUnsignedId'); + + protected $table = 'page'; + protected $identifier = 'id_page'; + + public function getFields() + { + parent::validateFields(); + $fields['id_page_type'] = (int)($this->id_page_type); + $fields['id_object'] = (int)($this->id_object); + return $fields; + } + + public static function getCurrentId() + { + $phpSelf = isset($_SERVER['PHP_SELF']) ? substr($_SERVER['PHP_SELF'], strlen(__PS_BASE_URI__)) : ''; + + // Some pages must be distinguished in order to record exactly what is being seen + $specialArray = array( + 'product.php' => 'id_product', + 'category.php' => 'id_category', + 'order.php' => 'step', + 'manufacturer.php' => 'id_manufacturer'); + if (array_key_exists($phpSelf, $specialArray)) + { + $id_object = Tools::getValue($specialArray[$phpSelf]); + $result = Db::getInstance()->getRow(' + SELECT p.`id_page` + FROM `'._DB_PREFIX_.'page` p + LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.`id_page_type` = pt.`id_page_type` + WHERE pt.`name` = \''.pSQL($phpSelf).'\' + AND p.`id_object` = '.(int)($id_object)); + if ($result['id_page']) + return $result['id_page']; + else + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'page` (`id_page_type`,`id_object`) + VALUES ((SELECT pt.`id_page_type` FROM `'._DB_PREFIX_.'page_type` pt WHERE pt.`name` = \''.pSQL($phpSelf).'\'), + '.(int)($id_object).')'); + return Db::getInstance()->Insert_ID(); + } + } + else + { + $result = Db::getInstance()->getRow(' + SELECT p.`id_page` + FROM `'._DB_PREFIX_.'page` p + LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.`id_page_type` = pt.`id_page_type` + WHERE pt.`name` = \''.pSQL($phpSelf).'\''); + if ($result['id_page']) + return $result['id_page']; + else + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'page_type` (`name`) + VALUES (\''.pSQL($phpSelf).'\')'); + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'page` (`id_page_type`) + VALUES ('.(int)(Db::getInstance()->Insert_ID()).')'); + return Db::getInstance()->Insert_ID(); + } + } + } + + public static function setPageViewed($id_page) + { + $id_date_range = DateRange::getCurrentRange(); + + // Try to increment the visits counter + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'page_viewed` + SET `counter` = `counter` + 1 + WHERE `id_date_range` = '.(int)($id_date_range).' + AND `id_page` = '.(int)($id_page)); + + // If no one has seen the page in this date range, it is added + if (Db::getInstance()->Affected_Rows() == 0) + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'page_viewed` (`id_date_range`,`id_page`,`counter`) + VALUES ('.(int)($id_date_range).','.(int)($id_page).',1)'); + } +} + + diff --git a/classes/PaymentCC.php b/classes/PaymentCC.php new file mode 100644 index 000000000..a418ca264 --- /dev/null +++ b/classes/PaymentCC.php @@ -0,0 +1,74 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class PaymentCCCore extends ObjectModel +{ + public $id_order; + public $id_currency; + public $amount; + public $transaction_id; + public $card_number; + public $card_brand; + public $card_expiration; + public $card_holder; + public $date_add; + + protected $fieldsRequired = array('id_currency', 'amount'); + protected $fieldsSize = array('transaction_id' => 254, 'card_number' => 254, 'card_brand' => 254, 'card_expiration' => 254, 'card_holder' => 254); + protected $fieldsValidate = array( + 'id_order' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', 'amount' => 'isPrice', + 'transaction_id' => 'isAnything', 'card_number' => 'isAnything', 'card_brand' => 'isAnything', 'card_expiration' => 'isAnything', 'card_holder' => 'isAnything'); + + protected $table = 'payment_cc'; + protected $identifier = 'id_payment_cc'; + + public function getFields() + { + parent::validateFields(); + $fields['id_order'] = (int)($this->id_order); + $fields['id_currency'] = (int)($this->id_currency); + $fields['amount'] = (float)($this->amount); + $fields['transaction_id'] = pSQL($this->transaction_id); + $fields['card_number'] = pSQL($this->card_number); + $fields['card_brand'] = pSQL($this->card_brand); + $fields['card_expiration'] = pSQL($this->card_expiration); + $fields['card_holder'] = pSQL($this->card_holder); + $fields['date_add'] = pSQL($this->date_add); + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + if (parent::add($autodate, $nullValues)) + { + Module::hookExec('paymentCCAdded', array('paymentCC' => $this)); + return true; + } + return false; + } +} + diff --git a/classes/PaymentModule.php b/classes/PaymentModule.php new file mode 100644 index 000000000..2d8fb2c8c --- /dev/null +++ b/classes/PaymentModule.php @@ -0,0 +1,478 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(dirname(__FILE__).'/../config/config.inc.php'); + +abstract class PaymentModuleCore extends Module +{ + /** @var integer Current order's id */ + public $currentOrder; + public $currencies = true; + public $currencies_mode = 'checkbox'; + + public function install() + { + if (!parent::install()) + return false; + + // Insert currencies availability + if ($this->currencies_mode == 'checkbox') + { + if (!Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_currency` (id_module, id_currency) + SELECT '.(int)($this->id).', id_currency FROM `'._DB_PREFIX_.'currency` WHERE deleted = 0')) + return false; + } + elseif ($this->currencies_mode == 'radio') + { + if (!Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_currency` (id_module, id_currency) + VALUES ('.(int)($this->id).', -2)')) + return false; + } + else + Tools::displayError('No currency mode for payment module'); + + // Insert countries availability + $return = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_country` (id_module, id_country) + SELECT '.(int)($this->id).', id_country FROM `'._DB_PREFIX_.'country` WHERE active = 1'); + // Insert group availability + $return &= Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_group` (id_module, id_group) + SELECT '.(int)($this->id).', id_group FROM `'._DB_PREFIX_.'group`'); + + return $return; + } + + public function uninstall() + { + if (!Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'module_country` WHERE id_module = '.(int)($this->id)) + OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'module_currency` WHERE id_module = '.(int)($this->id)) + OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'module_group` WHERE id_module = '.(int)($this->id))) + return false; + return parent::uninstall(); + } + + /** + * Validate an order in database + * Function called from a payment module + * + * @param integer $id_cart Value + * @param integer $id_order_state Value + * @param float $amountPaid Amount really paid by customer (in the default currency) + * @param string $paymentMethod Payment method (eg. 'Credit card') + * @param string $message Message to attach to order + */ + + public function validateOrder($id_cart, $id_order_state, $amountPaid, $paymentMethod = 'Unknown', $message = NULL, $extraVars = array(), $currency_special = NULL, $dont_touch_amount = false, $secure_key = false) + { + global $cart; + + $cart = new Cart((int)($id_cart)); + // Does order already exists ? + if (Validate::isLoadedObject($cart) AND $cart->OrderExists() === 0) + { + if ($secure_key !== false AND $secure_key != $cart->secure_key) + die(Tools::displayError()); + + // Copying data from cart + $order = new Order(); + $order->id_carrier = (int)($cart->id_carrier); + $order->id_customer = (int)($cart->id_customer); + $order->id_address_invoice = (int)($cart->id_address_invoice); + $order->id_address_delivery = (int)($cart->id_address_delivery); + $vat_address = new Address((int)($order->id_address_delivery)); + $order->id_currency = ($currency_special ? (int)($currency_special) : (int)($cart->id_currency)); + $order->id_lang = (int)($cart->id_lang); + $order->id_cart = (int)($cart->id); + $customer = new Customer((int)($order->id_customer)); + $order->secure_key = ($secure_key ? pSQL($secure_key) : pSQL($customer->secure_key)); + $order->payment = Tools::substr($paymentMethod, 0, 32); + if (isset($this->name)) + $order->module = $this->name; + $order->recyclable = $cart->recyclable; + $order->gift = (int)($cart->gift); + $order->gift_message = $cart->gift_message; + $currency = new Currency($order->id_currency); + $order->conversion_rate = $currency->conversion_rate; + $amountPaid = !$dont_touch_amount ? Tools::ps_round((float)($amountPaid), 2) : $amountPaid; + $order->total_paid_real = $amountPaid; + $order->total_products = (float)($cart->getOrderTotal(false, Cart::ONLY_PRODUCTS)); + $order->total_products_wt = (float)($cart->getOrderTotal(true, Cart::ONLY_PRODUCTS)); + $order->total_discounts = (float)(abs($cart->getOrderTotal(true, Cart::ONLY_DISCOUNTS))); + $order->total_shipping = (float)($cart->getOrderShippingCost()); + $order->carrier_tax_rate = (float)Tax::getCarrierTaxRate($cart->id_carrier, (int)$cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + $order->total_wrapping = (float)(abs($cart->getOrderTotal(true, Cart::ONLY_WRAPPING))); + $order->total_paid = (float)(Tools::ps_round((float)($cart->getOrderTotal(true, Cart::BOTH)), 2)); + $order->invoice_date = '0000-00-00 00:00:00'; + $order->delivery_date = '0000-00-00 00:00:00'; + // Amount paid by customer is not the right one -> Status = payment error + if ($order->total_paid != $order->total_paid_real) + $id_order_state = _PS_OS_ERROR_; + // Creating order + if ($cart->OrderExists() === 0) + $result = $order->add(); + else + { + $errorMessage = Tools::displayError('An order has already been placed using this cart.'); + Logger::addLog($errorMessage, 4, '0000001', 'Cart', intval($order->id_cart)); + die($errorMessage); + } + + // Next ! + if ($result AND isset($order->id)) + { + if (!$secure_key) + $message .= $this->l('Warning : the secure key is empty, check your payment account before validation'); + // Optional message to attach to this order + if (isset($message) AND !empty($message)) + { + $msg = new Message(); + $message = strip_tags($message, '
'); + if (!Validate::isCleanHtml($message)) + $message = $this->l('Payment message is not valid, please check your module!'); + $msg->message = $message; + $msg->id_order = (int)($order->id); + $msg->private = 1; + $msg->add(); + } + + // Insert products from cart into order_detail table + $products = $cart->getProducts(); + $productsList = ''; + $db = Db::getInstance(); + $query = 'INSERT INTO `'._DB_PREFIX_.'order_detail` + (`id_order`, `product_id`, `product_attribute_id`, `product_name`, `product_quantity`, `product_quantity_in_stock`, `product_price`, `reduction_percent`, `reduction_amount`, `group_reduction`, `product_quantity_discount`, `product_ean13`, `product_upc`, `product_reference`, `product_supplier_reference`, `product_weight`, `tax_name`, `tax_rate`, `ecotax`, `ecotax_tax_rate`, `discount_quantity_applied`, `download_deadline`, `download_hash`) + VALUES '; + + $customizedDatas = Product::getAllCustomizedDatas((int)($order->id_cart)); + Product::addCustomizationPrice($products, $customizedDatas); + $outOfStock = false; + foreach ($products AS $key => $product) + { + $productQuantity = (int)(Product::getQuantity((int)($product['id_product']), ($product['id_product_attribute'] ? (int)($product['id_product_attribute']) : NULL))); + $quantityInStock = ($productQuantity - (int)($product['cart_quantity']) < 0) ? $productQuantity : (int)($product['cart_quantity']); + if ($id_order_state != _PS_OS_CANCELED_ AND $id_order_state != _PS_OS_ERROR_) + { + if (Product::updateQuantity($product, (int)$order->id)) + $product['stock_quantity'] -= $product['cart_quantity']; + if ($product['stock_quantity'] < 0 && Configuration::get('PS_STOCK_MANAGEMENT')) + $outOfStock = true; + + Hook::updateQuantity($product, $order); + Product::updateDefaultAttribute($product['id_product']); + } + $price = Product::getPriceStatic((int)($product['id_product']), false, ($product['id_product_attribute'] ? (int)($product['id_product_attribute']) : NULL), 6, NULL, false, true, $product['cart_quantity'], false, (int)($order->id_customer), (int)($order->id_cart), (int)($order->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + $price_wt = Product::getPriceStatic((int)($product['id_product']), true, ($product['id_product_attribute'] ? (int)($product['id_product_attribute']) : NULL), 2, NULL, false, true, $product['cart_quantity'], false, (int)($order->id_customer), (int)($order->id_cart), (int)($order->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + // Add some informations for virtual products + $deadline = '0000-00-00 00:00:00'; + $download_hash = NULL; + if ($id_product_download = ProductDownload::getIdFromIdProduct((int)($product['id_product']))) + { + $productDownload = new ProductDownload((int)($id_product_download)); + $deadline = $productDownload->getDeadLine(); + $download_hash = $productDownload->getHash(); + } + + // Exclude VAT + if (Tax::excludeTaxeOption()) + { + $product['tax'] = 0; + $product['rate'] = 0; + $tax_rate = 0; + } + else + $tax_rate = Tax::getProductTaxRate((int)($product['id_product']), $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + + $ecotaxTaxRate = 0; + if (!empty($product['ecotax'])) + $ecotaxTaxRate = Tax::getProductEcotaxRate($order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + + $quantityDiscount = SpecificPrice::getQuantityDiscount((int)$product['id_product'], Shop::getCurrentShop(), (int)$cart->id_currency, (int)$vat_address->id_country, (int)$customer->id_default_group, (int)$product['cart_quantity']); + $unitPrice = Product::getPriceStatic((int)$product['id_product'], true, ($product['id_product_attribute'] ? intval($product['id_product_attribute']) : NULL), 2, NULL, false, true, 1, false, (int)$order->id_customer, NULL, (int)$order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + $quantityDiscountValue = $quantityDiscount ? ((Product::getTaxCalculationMethod((int)$order->id_customer) == PS_TAX_EXC ? Tools::ps_round($unitPrice, 2) : $unitPrice) - $quantityDiscount['price'] * (1 + $tax_rate / 100)) : 0.00; + $query .= '('.(int)($order->id).', + '.(int)($product['id_product']).', + '.(isset($product['id_product_attribute']) ? (int)($product['id_product_attribute']) : 'NULL').', + \''.pSQL($product['name'].((isset($product['attributes']) AND $product['attributes'] != NULL) ? ' - '.$product['attributes'] : '')).'\', + '.(int)($product['cart_quantity']).', + '.$quantityInStock.', + '.(float)(Product::getPriceStatic((int)($product['id_product']), false, ($product['id_product_attribute'] ? (int)($product['id_product_attribute']) : NULL), (Product::getTaxCalculationMethod((int)($order->id_customer)) == PS_TAX_EXC ? 2 : 6), NULL, false, false, $product['cart_quantity'], false, (int)($order->id_customer), (int)($order->id_cart), (int)($order->{Configuration::get('PS_TAX_ADDRESS_TYPE')}), $specificPrice, FALSE)).', + '.(float)(($specificPrice AND $specificPrice['reduction_type'] == 'percentage') ? $specificPrice['reduction'] * 100 : 0.00).', + '.(float)(($specificPrice AND $specificPrice['reduction_type'] == 'amount') ? (!$specificPrice['id_currency'] ? Tools::convertPrice($specificPrice['reduction'], $order->id_currency) : $specificPrice['reduction']) : 0.00).', + '.(float)(Group::getReduction((int)($order->id_customer))).', + '.$quantityDiscountValue.', + '.(empty($product['ean13']) ? 'NULL' : '\''.pSQL($product['ean13']).'\'').', + '.(empty($product['upc']) ? 'NULL' : '\''.pSQL($product['upc']).'\'').', + '.(empty($product['reference']) ? 'NULL' : '\''.pSQL($product['reference']).'\'').', + '.(empty($product['supplier_reference']) ? 'NULL' : '\''.pSQL($product['supplier_reference']).'\'').', + '.(float)($product['id_product_attribute'] ? $product['weight_attribute'] : $product['weight']).', + \''.(empty($tax_rate) ? '' : pSQL($product['tax'])).'\', + '.(float)($tax_rate).', + '.(float)Tools::convertPrice(floatval($product['ecotax']), intval($order->id_currency)).', + '.(float)$ecotaxTaxRate.', + '.(($specificPrice AND $specificPrice['from_quantity'] > 1) ? 1 : 0).', + \''.pSQL($deadline).'\', + \''.pSQL($download_hash).'\'),'; + + $customizationQuantity = 0; + if (isset($customizedDatas[$product['id_product']][$product['id_product_attribute']])) + { + $customizationText = ''; + foreach ($customizedDatas[$product['id_product']][$product['id_product_attribute']] AS $customization) + if (isset($customization['datas'][_CUSTOMIZE_TEXTFIELD_])) + foreach ($customization['datas'][_CUSTOMIZE_TEXTFIELD_] AS $text) + $customizationText .= $text['name'].$this->l(':').' '.$text['value'].', '; + $customizationText = rtrim($customizationText, ', '); + + $customizationQuantity = (int)($product['customizationQuantityTotal']); + $productsList .= + ' + '.$product['reference'].' + '.$product['name'].(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '').' - '.$this->l('Customized').(!empty($customizationText) ? ' - '.$customizationText : '').' + '.Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? $price : $price_wt, $currency, false, false).' + '.$customizationQuantity.' + '.Tools::displayPrice($customizationQuantity * (Product::getTaxCalculationMethod() == PS_TAX_EXC ? $price : $price_wt), $currency, false, false).' + '; + } + + if (!$customizationQuantity OR (int)$product['cart_quantity'] > $customizationQuantity) + $productsList .= + ' + '.$product['reference'].' + '.$product['name'].(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '').' + '.Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? $price : $price_wt, $currency, false, false).' + '.((int)($product['cart_quantity']) - $customizationQuantity).' + '.Tools::displayPrice(((int)($product['cart_quantity']) - $customizationQuantity) * (Product::getTaxCalculationMethod() == PS_TAX_EXC ? $price : $price_wt), $currency, false, false).' + '; + } // end foreach ($products) + $query = rtrim($query, ','); + $result = $db->Execute($query); + + // Insert discounts from cart into order_discount table + $discounts = $cart->getDiscounts(); + $discountsList = ''; + $total_discount_value = 0; + $shrunk = false; + foreach ($discounts AS $discount) + { + $objDiscount = new Discount((int)$discount['id_discount'], $order->id_lang); + $value = $objDiscount->getValue(sizeof($discounts), $cart->getOrderTotal(true, Cart::ONLY_PRODUCTS), $order->total_shipping, $cart->id); + if ($objDiscount->id_discount_type == 2 AND in_array($objDiscount->behavior_not_exhausted, array(1,2))) + $shrunk = true; + + if ($shrunk AND ($total_discount_value + $value) > ($order->total_products + $order->total_shipping + $order->total_wrapping)) + { + $amount_to_add = ($order->total_products + $order->total_shipping + $order->total_wrapping) - $total_discount_value; + if ($objDiscount->id_discount_type == 2 AND $objDiscount->behavior_not_exhausted == 2) + { + $voucher = new Discount(); + foreach ($objDiscount AS $key => $discountValue) + $voucher->$key = $discountValue; + $voucher->name = 'VSRK'.(int)$order->id_customer.'O'.(int)$order->id; + $voucher->value = (float)$value - $amount_to_add; + $voucher->add(); + $params['{voucher_amount}'] = Tools::displayPrice($voucher->value, $currency, false, false); + $params['{voucher_num}'] = $voucher->name; + @Mail::Send((int)$order->id_lang, 'voucher', Mail::l('New voucher regarding your order #').$order->id, $params, $customer->email, $customer->firstname.' '.$customer->lastname); + } + } + else + $amount_to_add = $value; + $order->addDiscount($objDiscount->id, $objDiscount->name, $amount_to_add); + $total_discount_value += $amount_to_add; + if ($id_order_state != _PS_OS_ERROR_ AND $id_order_state != _PS_OS_CANCELED_) + $objDiscount->quantity = $objDiscount->quantity - 1; + $objDiscount->update(); + + $discountsList .= + ' + '.$this->l('Voucher code:').' '.$objDiscount->name.' + '.($value != 0.00 ? '-' : '').Tools::displayPrice($value, $currency, false, false).' + '; + } + + // Specify order id for message + $oldMessage = Message::getMessageByCartId((int)($cart->id)); + if ($oldMessage) + { + $message = new Message((int)$oldMessage['id_message']); + $message->id_order = (int)$order->id; + $message->update(); + } + + // Hook new order + $orderStatus = new OrderState((int)$id_order_state, (int)$order->id_lang); + if (Validate::isLoadedObject($orderStatus)) + { + Hook::newOrder($cart, $order, $customer, $currency, $orderStatus); + foreach ($cart->getProducts() AS $product) + if ($orderStatus->logable) + ProductSale::addProductSale((int)$product['id_product'], (int)$product['cart_quantity']); + } + + if (isset($outOfStock) AND $outOfStock) + { + $history = new OrderHistory(); + $history->id_order = (int)$order->id; + $history->changeIdOrderState(_PS_OS_OUTOFSTOCK_, (int)$order->id); + $history->addWithemail(); + } + + // Set order state in order history ONLY even if the "out of stock" status has not been yet reached + // So you migth have two order states + $new_history = new OrderHistory(); + $new_history->id_order = (int)$order->id; + $new_history->changeIdOrderState((int)$id_order_state, (int)$order->id); + $new_history->addWithemail(true, $extraVars); + + // Order is reloaded because the status just changed + $order = new Order($order->id); + + // Send an e-mail to customer + if ($id_order_state != _PS_OS_ERROR_ AND $id_order_state != _PS_OS_CANCELED_ AND $customer->id) + { + $invoice = new Address((int)($order->id_address_invoice)); + $delivery = new Address((int)($order->id_address_delivery)); + $carrier = new Carrier((int)($order->id_carrier), $order->id_lang); + $delivery_state = $delivery->id_state ? new State((int)($delivery->id_state)) : false; + $invoice_state = $invoice->id_state ? new State((int)($invoice->id_state)) : false; + + $data = array( + '{firstname}' => $customer->firstname, + '{lastname}' => $customer->lastname, + '{email}' => $customer->email, + '{delivery_company}' => $delivery->company, + '{delivery_firstname}' => $delivery->firstname, + '{delivery_lastname}' => $delivery->lastname, + '{delivery_address1}' => $delivery->address1, + '{delivery_address2}' => $delivery->address2, + '{delivery_city}' => $delivery->city, + '{delivery_postal_code}' => $delivery->postcode, + '{delivery_country}' => $delivery->country, + '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '', + '{delivery_phone}' => ($delivery->phone) ? $delivery->phone : $delivery->phone_mobile, + '{delivery_other}' => $delivery->other, + '{invoice_company}' => $invoice->company, + '{invoice_vat_number}' => $invoice->vat_number, + '{invoice_firstname}' => $invoice->firstname, + '{invoice_lastname}' => $invoice->lastname, + '{invoice_address2}' => $invoice->address2, + '{invoice_address1}' => $invoice->address1, + '{invoice_city}' => $invoice->city, + '{invoice_postal_code}' => $invoice->postcode, + '{invoice_country}' => $invoice->country, + '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '', + '{invoice_phone}' => ($invoice->phone) ? $invoice->phone : $invoice->phone_mobile, + '{invoice_other}' => $invoice->other, + '{order_name}' => sprintf("#%06d", (int)($order->id)), + '{date}' => Tools::displayDate(date('Y-m-d H:i:s'), (int)($order->id_lang), 1), + '{carrier}' => $carrier->name, + '{payment}' => $order->payment, + '{products}' => $productsList, + '{discounts}' => $discountsList, + '{total_paid}' => Tools::displayPrice($order->total_paid, $currency, false, false), + '{total_products}' => Tools::displayPrice($order->total_paid - $order->total_shipping - $order->total_wrapping + $order->total_discounts, $currency, false, false), + '{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency, false, false), + '{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency, false, false), + '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency, false, false)); + + if (is_array($extraVars)) + $data = array_merge($data, $extraVars); + + // Join PDF invoice + if ((int)(Configuration::get('PS_INVOICE')) AND Validate::isLoadedObject($orderStatus) AND $orderStatus->invoice AND $order->invoice_number) + { + $fileAttachment['content'] = PDF::invoice($order, 'S'); + $fileAttachment['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)($order->id_lang)).sprintf('%06d', $order->invoice_number).'.pdf'; + $fileAttachment['mime'] = 'application/pdf'; + } + else + $fileAttachment = NULL; + + if (Validate::isEmail($customer->email)) + Mail::Send((int)($order->id_lang), 'order_conf', Mail::l('Order confirmation'), $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment); + } + $this->currentOrder = (int)($order->id); + return true; + } + else + { + $errorMessage = Tools::displayError('Order creation failed'); + Logger::addLog($errorMessage, 4, '0000002', 'Cart', intval($order->id_cart)); + die($errorMessage); + } + } + else + { + $errorMessage = Tools::displayError('Cart can\'t be loaded or an order has already been placed using this cart'); + Logger::addLog($errorMessage, 4, '0000001', 'Cart', intval($cart->id)); + die($errorMessage); + } + } + + + /** + * @param int $id_currency : this parameter is optionnal but on 1.5 version of Prestashop, it will be REQUIRED + * @return Currency + */ + public function getCurrency($current_id_currency = NULL) + { + if (!(int)$current_id_currency) + global $cookie; + + if (!$this->currencies) + return false; + if ($this->currencies_mode == 'checkbox') + { + $currencies = Currency::getPaymentCurrencies($this->id); + return $currencies; + } + elseif ($this->currencies_mode == 'radio') + { + $currencies = Currency::getPaymentCurrenciesSpecial($this->id); + $currency = $currencies['id_currency']; + if ($currency == -1) + { + // not use $cookie if $current_id_currency is set + if ((int)$current_id_currency) + $id_currency = (int)$current_id_currency; + else + $id_currency = (int)($cookie->id_currency); + } + elseif ($currency == -2) + $id_currency = (int)(Configuration::get('PS_CURRENCY_DEFAULT')); + else + $id_currency = $currency; + } + if (!isset($id_currency) OR empty($id_currency)) + return false; + return (new Currency($id_currency)); + } +} + diff --git a/classes/Product.php b/classes/Product.php new file mode 100644 index 000000000..eafd4a1a3 --- /dev/null +++ b/classes/Product.php @@ -0,0 +1,3101 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('_CUSTOMIZE_FILE_', 0); +define('_CUSTOMIZE_TEXTFIELD_', 1); + +class ProductCore extends ObjectModel +{ + /** @var string Tax name */ + public $tax_name; + + /** @var string Tax rate */ + public $tax_rate; + + /** @var string Tax rules group */ + public $id_tax_rules_group; + + /** @var integer Manufacturer id */ + public $id_manufacturer; + + /** @var integer Supplier id */ + public $id_supplier; + + /** @var integer default Category id */ + public $id_category_default; + + /** @var integer default Attribute id if color picker is enabled */ + public $id_color_default; + + /** @var string Manufacturer name */ + public $manufacturer_name; + + /** @var string Supplier name */ + public $supplier_name; + + /** @var string Name */ + public $name; + + /** @var string Long description */ + public $description; + + /** @var string Short description */ + public $description_short; + + /** @var integer Quantity available */ + public $quantity = 0; + + /** @var integer Minimal quantity for add to cart */ + public $minimal_quantity = 0; + + /** @var string available_now */ + public $available_now; + + /** @var string available_later */ + public $available_later; + + /** @var float Price in euros */ + public $price = 0; + + /** @var float Additional shipping cost */ + public $additional_shipping_cost = 0; + + /** @var float Wholesale Price in euros */ + public $wholesale_price = 0; + + /** @var boolean on_sale */ + public $on_sale = false; + + /** @var boolean online_only */ + public $online_only = false; + + /** @var string unity */ + public $unity = NULL; + + /** @var float price for product's unity */ + public $unit_price; + + /** @var float price for product's unity ratio */ + public $unit_price_ratio = 0; + + /** @var float Ecotax */ + public $ecotax = 0; + + /** @var string Reference */ + public $reference; + + /** @var string Supplier Reference */ + public $supplier_reference; + + /** @var string Location */ + public $location; + + /** @var string Width in default width unit */ + public $width = 0; + + /** @var string Height in default height unit */ + public $height = 0; + + /** @var string Depth in default depth unit */ + public $depth = 0; + + /** @var string Weight in default weight unit */ + public $weight = 0; + + /** @var string Ean-13 barcode */ + public $ean13; + + /** @var string Upc barcode */ + public $upc; + + /** @var string Friendly URL */ + public $link_rewrite; + + /** @var string Meta tag description */ + public $meta_description; + + /** @var string Meta tag keywords */ + public $meta_keywords; + + /** @var string Meta tag title */ + public $meta_title; + + /** @var integer Out of stock behavior */ + public $out_of_stock = 2; + + /** @var boolean Product statuts */ + public $quantity_discount = 0; + + /** @var boolean Product customization */ + public $customizable; + + /** @var boolean Product is new */ + public $new = NULL; + + /** @var integer Number of uploadable files (concerning customizable products) */ + public $uploadable_files; + + /** @var interger Number of text fields */ + public $text_fields; + + /** @var boolean Product statuts */ + public $active = 1; + + /** @var boolean Product available for order */ + public $available_for_order = 1; + + /** @var enum Product condition (new, used, refurbished) */ + public $condition; + + /** @var boolean Show price of Product */ + public $show_price = 1; + + public $indexed = 0; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + /*** @var array Tags */ + public $tags; + + public $cache_is_pack; + public $cache_has_attachments; + public $cache_default_attribute; + + public static $_taxCalculationMethod = PS_TAX_EXC; + protected static $_prices = array(); + protected static $_pricesLevel2 = array(); + protected static $_pricesLevel3 = array(); + protected static $_incat = array(); + protected static $_cart_quantity = array(); + protected static $_tax_rules_group = array(); + protected static $_cacheFeatures = array(); + protected static $_frontFeaturesCache = array(); + + /** @var array tables */ + protected $tables = array ('product', 'product_lang'); + + protected $fieldsRequired = array('quantity', 'price'); + protected $fieldsSize = array('reference' => 32, 'supplier_reference' => 32, 'location' => 64, 'ean13' => 13, 'upc' => 12, 'unity' => 10); + protected $fieldsValidate = array( + 'id_tax_rules_group' => 'isUnsignedId', + 'id_manufacturer' => 'isUnsignedId', + 'id_supplier' => 'isUnsignedId', + 'id_category_default' => 'isUnsignedId', + 'id_color_default' => 'isUnsignedInt', /* unsigned integer because its value could be 0 if the feature is disabled */ + 'minimal_quantity' => 'isUnsignedInt', + 'price' => 'isPrice', + 'additional_shipping_cost' => 'isPrice', + 'wholesale_price' => 'isPrice', + 'on_sale' => 'isBool', + 'online_only' => 'isBool', + 'ecotax' => 'isPrice', + 'unit_price' => 'isPrice', + 'unity' => 'isString', + 'reference' => 'isReference', + 'supplier_reference' => 'isReference', + 'location' => 'isReference', + 'width' => 'isFloat', + 'height' => 'isFloat', + 'depth' => 'isFloat', + 'weight' => 'isFloat', + 'out_of_stock' => 'isUnsignedInt', + 'quantity_discount' => 'isBool', + 'customizable' => 'isUnsignedInt', + 'uploadable_files' => 'isUnsignedInt', + 'text_fields' => 'isUnsignedInt', + 'active' => 'isBool', + 'available_for_order' => 'isBool', + 'condition' => 'isGenericName', + 'show_price' => 'isBool', + 'ean13' => 'isEan13', + 'upc' => 'isUpc', + 'indexed' => 'isBool', + 'cache_is_pack' => 'isBool', + 'cache_has_attachments' => 'isBool' + ); + protected $fieldsRequiredLang = array('link_rewrite', 'name'); + /* Description short is limited to 400 chars, but without html, so it can't be generic */ + protected $fieldsSizeLang = array('meta_description' => 255, 'meta_keywords' => 255, + 'meta_title' => 128, 'link_rewrite' => 128, 'name' => 128, 'available_now' => 255, 'available_later' => 255); + protected $fieldsValidateLang = array( + 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName', + 'meta_title' => 'isGenericName', 'link_rewrite' => 'isLinkRewrite', 'name' => 'isCatalogName', + 'description' => 'isString', 'description_short' => 'isString', 'available_now' => 'isGenericName', 'available_later' => 'IsGenericName'); + + protected $table = 'product'; + protected $identifier = 'id_product'; + + protected $webserviceParameters = array( + 'objectNodeNames' => 'products', + 'fields' => array( + 'id_manufacturer' => array('xlink_resource' => 'manufacturers'), + 'id_supplier' => array('xlink_resource' => 'suppliers'), + 'id_category_default' => array('xlink_resource' => 'categories'), + 'out_of_stock' => array('required' => true), + 'new' => array(), + 'cache_default_attribute' => array(), + 'id_default_image' => array('getter' => 'getCoverWs', 'setter' => '', 'xlink_resource' => array('resourceName' => 'images', 'subResourceName' => 'products')), + ), + 'associations' => array( + 'categories' => array('resource' => 'category', 'fields' => array( + 'id' => array('required' => true), + )), + 'images' => array('resource' => 'image','fields' => array('id' => array()) + ), + ), + ); + + public function getCoverWs() + { + $result = $this->getCover($this->id); + return $result['id_image']; + } + + public function getWsImages() + { + //d('a'); + return Db::getInstance()->ExecuteS(' + SELECT `id_image` as id + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($this->id).' + ORDER BY `position`'); + } + + + + public function __construct($id_product = NULL, $full = false, $id_lang = NULL) + { + global $cart; + + parent::__construct($id_product, $id_lang); + if ($full AND $this->id) + { + $this->tax_name = 'deprecated'; // The applicable tax may be BOTH the product one AND the state one (moreover this variable is some deadcode) + $this->manufacturer_name = Manufacturer::getNameById((int)$this->id_manufacturer); + $this->supplier_name = Supplier::getNameById((int)$this->id_supplier); + self::$_tax_rules_group[$this->id] = $this->id_tax_rules_group; + if (is_object($cart) AND $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')} != NULL) + $this->tax_rate = Tax::getProductTaxRate($this->id, $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + else + $this->tax_rate = Tax::getProductTaxRate($this->id, NULL); + $this->new = $this->isNew(); + $this->price = Product::getPriceStatic((int)($this->id), false, NULL, 6, NULL, false, true, 1, false, NULL, NULL, NULL, $this->specificPrice); + $this->unit_price = ($this->unit_price_ratio != 0 ? $this->price / $this->unit_price_ratio : 0); + if ($this->id) + $this->tags = Tag::getProductTags((int)$this->id); + } + + if ($this->id_category_default) + $this->category = Category::getLinkRewrite((int)$this->id_category_default, (int)$id_lang); + } + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_product'] = (int)($this->id); + $fields['id_tax_rules_group'] = (int)($this->id_tax_rules_group); + $fields['id_manufacturer'] = (int)($this->id_manufacturer); + $fields['id_supplier'] = (int)($this->id_supplier); + $fields['id_category_default'] = (int)($this->id_category_default); + $fields['id_color_default'] = (int)($this->id_color_default); + $fields['quantity'] = (int)($this->quantity); + $fields['minimal_quantity'] = (int)($this->minimal_quantity); + $fields['price'] = (float)($this->price); + $fields['additional_shipping_cost'] = (float)($this->additional_shipping_cost); + $fields['wholesale_price'] = (float)($this->wholesale_price); + $fields['on_sale'] = (int)($this->on_sale); + $fields['online_only'] = (int)($this->online_only); + $fields['ecotax'] = (float)($this->ecotax); + $fields['unity'] = pSQL($this->unity); + $fields['unit_price_ratio'] = (float)($this->unit_price > 0 ? $this->price / $this->unit_price : 0); + $fields['ean13'] = pSQL($this->ean13); + $fields['upc'] = pSQL($this->upc); + $fields['reference'] = pSQL($this->reference); + $fields['supplier_reference'] = pSQL($this->supplier_reference); + $fields['location'] = pSQL($this->location); + $fields['width'] = (float)($this->width); + $fields['height'] = (float)($this->height); + $fields['depth'] = (float)($this->depth); + $fields['weight'] = (float)($this->weight); + $fields['out_of_stock'] = pSQL($this->out_of_stock); + $fields['quantity_discount'] = (int)($this->quantity_discount); + $fields['customizable'] = (int)($this->customizable); + $fields['uploadable_files'] = (int)($this->uploadable_files); + $fields['text_fields'] = (int)($this->text_fields); + $fields['active'] = (int)($this->active); + $fields['available_for_order'] = (int)($this->available_for_order); + $fields['condition'] = pSQL($this->condition); + $fields['show_price'] = (int)($this->show_price); + $fields['indexed'] = 0; // Reset indexation every times + $fields['cache_is_pack'] = (int)($this->cache_is_pack); + $fields['cache_has_attachments'] = (int)($this->cache_has_attachments); + $fields['cache_default_attribute'] = (int)($this->cache_default_attribute); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + self::validateFieldsLang(); + + $fieldsArray = array('meta_description', 'meta_keywords', 'meta_title', 'link_rewrite', 'name', 'available_now', 'available_later'); + $fields = array(); + $languages = Language::getLanguages(false); + $defaultLanguage = Configuration::get('PS_LANG_DEFAULT'); + foreach ($languages as $language) + { + $fields[$language['id_lang']]['id_lang'] = $language['id_lang']; + $fields[$language['id_lang']][$this->identifier] = (int)($this->id); + $fields[$language['id_lang']]['description'] = (isset($this->description[$language['id_lang']])) ? pSQL($this->description[$language['id_lang']], true) : ''; + $fields[$language['id_lang']]['description_short'] = (isset($this->description_short[$language['id_lang']])) ? pSQL($this->description_short[$language['id_lang']], true) : ''; + foreach ($fieldsArray as $field) + { + if (!Validate::isTableOrIdentifier($field)) + die(Tools::displayError()); + + /* Check fields validity */ + if (isset($this->{$field}[$language['id_lang']]) AND !empty($this->{$field}[$language['id_lang']])) + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$language['id_lang']]); + elseif (in_array($field, $this->fieldsRequiredLang)) + { + if ($this->{$field} != '') + $fields[$language['id_lang']][$field] = pSQL($this->{$field}[$defaultLanguage]); + } + else + $fields[$language['id_lang']][$field] = ''; + } + } + return $fields; + } + + public static function initPricesComputation($id_customer = NULL) + { + global $cookie; + + if ($id_customer) + { + $customer = new Customer((int)($id_customer)); + if (!Validate::isLoadedObject($customer)) + die(Tools::displayError()); + self::$_taxCalculationMethod = Group::getPriceDisplayMethod((int)($customer->id_default_group)); + } + elseif ($cookie->id_customer) + { + $customer = new Customer((int)($cookie->id_customer)); + self::$_taxCalculationMethod = Group::getPriceDisplayMethod((int)($customer->id_default_group)); + } + else + self::$_taxCalculationMethod = Group::getDefaultPriceDisplayMethod(); + } + + public static function getTaxCalculationMethod($id_customer = NULL) + { + if ($id_customer) + self::initPricesComputation((int)($id_customer)); + return (int)(self::$_taxCalculationMethod); + } + + /** + * Move a product inside its category + * @param boolean $way Up (1) or Down (0) + * @param integer $position + * return boolean Update result + */ + public function updatePosition($way, $position) + { + if (!$res = Db::getInstance()->ExecuteS(' + SELECT cp.`id_product`, cp.`position`, cp.`id_category` + FROM `'._DB_PREFIX_.'category_product` cp + WHERE cp.`id_category` = '.(int)(Tools::getValue('id_category', 1)).' + ORDER BY cp.`position` ASC' + )) + return false; + + foreach ($res AS $product) + if ((int)($product['id_product']) == (int)($this->id)) + $movedProduct = $product; + + if (!isset($movedProduct) || !isset($position)) + return false; + + // < and > statements rather than BETWEEN operator + // since BETWEEN is treated differently according to databases + return (Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'category_product` + SET `position`= `position` '.($way ? '- 1' : '+ 1').' + WHERE `position` + '.($way + ? '> '.(int)($movedProduct['position']).' AND `position` <= '.(int)($position) + : '< '.(int)($movedProduct['position']).' AND `position` >= '.(int)($position)).' + AND `id_category`='.(int)($movedProduct['id_category'])) + AND Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'category_product` + SET `position` = '.(int)($position).' + WHERE `id_product` = '.(int)($movedProduct['id_product']).' + AND `id_category`='.(int)($movedProduct['id_category']))); + } + + /* + * Reorder product position in category $id_category. + * Call it after deleting a product from a category. + * + * @param int $id_category + */ + public static function cleanPositions($id_category) + { + $return = true; + + $result = Db::getInstance()->ExecuteS(' + SELECT `id_product` + FROM `'._DB_PREFIX_.'category_product` + WHERE `id_category` = '.(int)($id_category).' + ORDER BY `position`'); + $sizeof = sizeof($result); + + for ($i = 0; $i < $sizeof; $i++) + $return &= Db::getInstance()->Execute($sql=' + UPDATE `'._DB_PREFIX_.'category_product` + SET `position` = '.(int)($i).' + WHERE `id_category` = '.(int)($id_category).' + AND `id_product` = '.(int)($result[$i]['id_product'])); + return $return; + } + + /** + * Get the default attribute for a product + * + * @return int Attributes list + */ + public static function getDefaultAttribute($id_product, $minimumQuantity = 0) + { + $sql = 'SELECT `id_product_attribute` + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `default_on` = 1 '.((int)($minimumQuantity) > 0 ? 'AND `quantity` >= '.(int)($minimumQuantity).' ' : '').'AND `id_product` = '.(int)($id_product); + $result = Db::getInstance()->getRow($sql); + if (!$result) + $result = Db::getInstance()->getRow(' + SELECT `id_product_attribute` + FROM `'._DB_PREFIX_.'product_attribute` + WHERE '.((int)($minimumQuantity) > 0 ? '`quantity` >= '.(int)($minimumQuantity).' AND ' : '').'`id_product` = '.(int)($id_product)); + if (!$result) + $result = Db::getInstance()->getRow(' + SELECT `id_product_attribute` + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product` = '.(int)($id_product)); + return $result['id_product_attribute']; + } + + public static function updateDefaultAttribute($id_product) + { + $id_product_attribute = self::getDefaultAttribute($id_product); + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET cache_default_attribute = '.(int)($id_product_attribute).' WHERE id_product = '.(int)($id_product_attribute).' LIMIT 1'); + } + + public function validateFieldsLang($die = true, $errorReturn = false) + { + if (!is_array($this->description_short)) + $this->description_short = array(); + foreach ($this->description_short as $k => $value) + if (Tools::strlen(strip_tags($value)) > 400) + { + if ($die) die (Tools::displayError().' ('.get_class($this).'->description: length > 400 for language '.$k.')'); + return $errorReturn ? get_class($this).'->'.Tools::displayError('description: length > 400 for language').' '.$k : false; + } + return parent::validateFieldsLang($die, $errorReturn); + } + + public function delete() + { + Hook::deleteProduct($this); + if (!parent::delete() OR + !$this->deleteCategories(true) OR + !$this->deleteImages() OR + !$this->deleteProductAttributes() OR + !$this->deleteProductFeatures() OR + !$this->deleteTags() OR + !$this->deleteCartProducts() OR + !$this->deleteAttributesImpacts() OR + !$this->deleteAttachments() OR + !$this->deleteCustomization() OR + !SpecificPrice::deleteByProductId((int)($this->id)) OR + !$this->deletePack() OR + !$this->deleteProductSale() OR + !$this->deleteSceneProducts() OR + !$this->deleteSearchIndexes() OR + !$this->deleteAccessories() OR + !$this->deleteFromAccessories()) + return false; + if ($id = ProductDownload::getIdFromIdProduct($this->id)) + if ($productDownload = new ProductDownload($id) AND !$productDownload->delete(true)) + return false; + return true; + } + + public function deleteSelection($products) + { + $return = 1; + foreach ($products AS $id_product) + { + $product = new Product((int)($id_product)); + $return &= $product->delete(); + } + return $return; + } + + /** + * @deprecated + * @param string $reference + */ + public static function getByReference($reference) + { + Tools::displayAsDeprecated(); + if (!Validate::isReference($reference)) + die(Tools::displayError()); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_product` + FROM `'._DB_PREFIX_.'product` p + WHERE p.`reference` = \''.pSQL($reference).'\''); + if (!isset($result['id_product'])) + return false; + + return new self((int)$result['id_product']); + } + + /** + * addToCategories add this product to the category/ies if not exists. + * + * @param mixed $categories id_category or array of id_category + * @return boolean true if succeed + */ + public function addToCategories($categories = array()) + { + if (empty($categories)) + return false; + + if (!is_array($categories)) + $categories=array($categories); + + if (!sizeof($categories)) + return false; + + $currentCategories = $this->getCategories(); + + // for new categ, put product at last position + $resCategNewPos = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql='SELECT id_category, MAX(position)+1 newPos + FROM `'._DB_PREFIX_.'category_product` + WHERE `id_category` IN('.implode(',', array_map('intval', $categories)).') + GROUP BY id_category'); + foreach ($resCategNewPos as $array) + { + $newCategories[$array['id_category']] = $array['newPos']; + } + + $newCategPos=array(); + foreach ($categories as $id_category) + $newCategPos[$id_category] = isset($newCategories[$id_category])?$newCategories[$id_category]:0; + + $productCats = array(); + + foreach ($categories as $newIdCateg) + if (!in_array($newIdCateg,$currentCategories)) + $productCats[] = '('. $newIdCateg.', '. $this->id.', '. $newCategPos[$newIdCateg].')'; + if (sizeof($productCats)) + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'category_product` (`id_category`, `id_product`, `position`) + VALUES '.implode(',', $productCats)); + + return true; + } + + /** + * Update categories to index product into + * + * @param string $productCategories Categories list to index product into + * @param boolean keepingCurrentPos (deprecated, no more used) + * @return array Update/insertion result + */ + public function updateCategories($categories, $keepingCurrentPos = false) + { + if (empty($categories)) + return false; + $positions = array(); + // get max position in each categories + $result = Db::getInstance()->ExecuteS('SELECT `id_category` + FROM `'._DB_PREFIX_.'category_product` + WHERE `id_category` NOT IN('.implode(',', array_map('intval', $categories)).') + AND id_product = '. $this->id .''); + foreach ($result as $categToDelete){ + $this->deleteCategory($categToDelete['id_category']); + } + // if none are found, it's an error + if (!is_array($result)) + return (false); + + if (!$this->addToCategories($categories)) + return false; + + return true; + } + + /** + * deleteCategory delete this product from the category $id_category + * + * @param mixed $id_category + * @param mixed $cleanPositions + * @return boolean + */ + public function deleteCategory($id_category, $cleanPositions = true) + { + $result = Db::getInstance()->ExecuteS('SELECT `id_category` FROM `'._DB_PREFIX_.'category_product` WHERE `id_product` = '.(int)($this->id) . ' AND id_category = '.(int)$id_category .''); + $return = Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_product` WHERE `id_product` = '.(int)($this->id).' AND id_category = '.(int)$id_category .'' ); + if ($cleanPositions === true) + foreach ($result AS $row) + $this->cleanPositions((int)$row['id_category']); + return $return; + } + + /** + * Delete all association to category where product is indexed + * + * @param boolean $cleanPositions clean category positions after deletion + * @return array Deletion result + */ + public function deleteCategories($cleanPositions = false) + { + $return = Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'category_product` WHERE `id_product` = '.(int)($this->id)); + if ($cleanPositions === true) + { + $result = Db::getInstance()->ExecuteS('SELECT `id_category` FROM `'._DB_PREFIX_.'category_product` WHERE `id_product` = '.(int)($this->id)); + foreach($result AS $row) + $this->cleanPositions((int)($row['id_category'])); + } + return $return; + } + + /** + * Delete products tags entries + * + * @return array Deletion result + */ + public function deleteTags() + { + return (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_tag` WHERE `id_product` = '.(int)($this->id)) + AND Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'tag` WHERE `id_tag` NOT IN (SELECT `id_tag` FROM `'._DB_PREFIX_.'product_tag`)')); + } + + /** + * Delete product from cart + * + * @return array Deletion result + */ + public function deleteCartProducts() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'cart_product` WHERE `id_product` = '.(int)($this->id)); + } + + /** + * Delete product images from database + * + * @return array Deletion result + */ + public function deleteImages() + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_image` + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($this->id)); + foreach($result as $row) + if (!deleteImage((int)($this->id), $row['id_image']) OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'image_lang` WHERE `id_image` = '.(int)($row['id_image']))) + return false; + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'image` WHERE `id_product` = '.(int)($this->id)); + } + + public static function getProductAttributePrice($id_product_attribute) + { + $rq = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `price` + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + return $rq['price']; + } + + /** + * Get all available products + * + * @param integer $id_lang Language id + * @param integer $start Start number + * @param integer $limit Number of products to return + * @param string $orderBy Field for ordering + * @param string $orderWay Way for ordering (ASC or DESC) + * @return array Products details + */ + public static function getProducts($id_lang, $start, $limit, $orderBy, $orderWay, $id_category = false, $only_active = false) + { + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die (Tools::displayError()); + if ($orderBy == 'id_product' OR $orderBy == 'price' OR $orderBy == 'date_add') + $orderByPrefix = 'p'; + elseif ($orderBy == 'name') + $orderByPrefix = 'pl'; + elseif ($orderBy == 'position') + $orderByPrefix = 'c'; + + $rq = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.*, pl.* , t.`rate` AS tax_rate, m.`name` AS manufacturer_name, s.`name` AS supplier_name + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) + LEFT JOIN `'._DB_PREFIX_.'supplier` s ON (s.`id_supplier` = p.`id_supplier`)'. + ($id_category ? 'LEFT JOIN `'._DB_PREFIX_.'category_product` c ON (c.`id_product` = p.`id_product`)' : '').' + WHERE pl.`id_lang` = '.(int)($id_lang). + ($id_category ? ' AND c.`id_category` = '.(int)($id_category) : ''). + ($only_active ? ' AND p.`active` = 1' : '').' + ORDER BY '.(isset($orderByPrefix) ? pSQL($orderByPrefix).'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay). + ($limit > 0 ? ' LIMIT '.(int)($start).','.(int)($limit) : '') + ); + if($orderBy == 'price') + Tools::orderbyPrice($rq,$orderWay); + return ($rq); + } + + public static function getSimpleProducts($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.`id_product`, pl.`name` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`) + WHERE pl.`id_lang` = '.(int)($id_lang).' + ORDER BY pl.`name`'); + } + + /** + * Return the products in the same category than the default category of the instancied product + * + * @param integer $id_lang Language ID + * @return array Products + * @deprecated + */ + public function getDefaultCategoryProducts($idLang = NULL, $limit = NULL) + { + Tools::displayAsDeprecated(); + //get idLang + $idLang = is_null($idLang) ? _USER_ID_LANG_ : (int)($idLang); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.`id_product`, pl.`description_short`set, pl.`link_rewrite`, pl.`name`, i.`id_image` + FROM `'._DB_PREFIX_.'category_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = cp.id_product) + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = p.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`) + WHERE cp.id_category = ' . (int)($this->id_category_default) . ' + AND id_lang = ' . (int)($idLang) . ' + AND p.`active` = 1 + AND i.`cover` = 1 + '. (is_null($limit) ? '' : ' LIMIT 0 , ' . (int)($limit))); + return $result; + } + + public function isNew() + { + $result = Db::getInstance()->ExecuteS(' + SELECT id_product FROM `'._DB_PREFIX_.'product` p + WHERE 1 + AND id_product = '.(int)($this->id).' + AND DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 + '); + return sizeof($result) > 0; + } + + + public function productAttributeExists($attributesList, $currentProductAttribute = false) + { + $result = Db::getInstance()->ExecuteS('SELECT pac.`id_attribute`, pac.`id_product_attribute` + FROM `'._DB_PREFIX_.'product_attribute` pa + LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON (pac.`id_product_attribute` = pa.`id_product_attribute`) + WHERE pa.`id_product` = '.(int)($this->id)); + /* If something's wrong */ + if (!$result OR empty($result)) + return false; + /* Product attributes simulation */ + $productAttributes = array(); + foreach ($result AS $productAttribute) + $productAttributes[$productAttribute['id_product_attribute']][] = $productAttribute['id_attribute']; + /* Checking product's attribute existence */ + foreach ($productAttributes AS $key => $productAttribute) + if (sizeof($productAttribute) == sizeof($attributesList)) + { + $diff = false; + for ($i = 0; $diff == false AND isset($productAttribute[$i]); $i++) + if (!in_array($productAttribute[$i], $attributesList) OR $key == $currentProductAttribute) + $diff = true; + if (!$diff) + return true; + } + return false; + } + + /** + * Add a product attribute + * + * @param float $price Additional price + * @param float $weight Additional weight + * @param float $ecotax Additional ecotax + * @param integer $quantity Quantity available + * @param integer $id_images Image ids + * @param string $reference Reference + * @param string $supplier_reference Supplier Reference + * @param string $location Location + * @param string $ean13 Ean-13 barcode + * @param boolean $default Is default attribute for product + * @return mixed $id_product_attribute or false + */ + public function addProductAttribute($price, $weight, $unit_impact, $ecotax, $quantity, $id_images, $reference, $supplier_reference, $ean13, $default, $location = NULL, $upc = NULL) + { + $price = str_replace(',', '.', $price); + $weight = str_replace(',', '.', $weight); + Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_attribute', + array('id_product' => (int)($this->id), 'price' => (float)($price), 'ecotax' => (float)($ecotax), 'quantity' => (int)($quantity), + 'weight' => ($weight ? (float)($weight) : 0), 'unit_price_impact' => ($unit_impact ? (float)($unit_impact) : 0), + 'reference' => pSQL($reference), 'supplier_reference' => pSQL($supplier_reference), + 'location' => pSQL($location), 'ean13' => pSQL($ean13), 'upc' => pSQL($upc), 'default_on' => (int)($default)), + 'INSERT'); + $id_product_attribute = Db::getInstance()->Insert_ID(); + Product::updateDefaultAttribute($this->id); + if (!$id_product_attribute) + return false; + if (empty($id_images)) + return (int)($id_product_attribute); + $query = 'INSERT INTO `'._DB_PREFIX_.'product_attribute_image` (`id_product_attribute`, `id_image`) VALUES '; + foreach ($id_images AS $id_image) + $query .= '('.(int)($id_product_attribute).', '.(int)($id_image).'), '; + $query = trim($query, ', '); + if (!Db::getInstance()->Execute($query)) + return false; + return (int)($id_product_attribute); + } + + public function addCombinationEntity($wholesale_price, $price, $weight, $unit_impact, $ecotax, $quantity, $id_images, $reference, $supplier_reference, $ean13, $default, $location = NULL, $upc = NULL) + { + if ( + !$id_product_attribute = $this->addProductAttribute($price, $weight, $unit_impact, $ecotax, $quantity, $id_images, $reference, $supplier_reference, $ean13, $default, $location, $upc) + OR !Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'product_attribute` SET `wholesale_price` = '.(float)($wholesale_price).' WHERE `id_product_attribute` = '.(int)($id_product_attribute)) + ) + return false; + return (int)($id_product_attribute); + } + + public function addProductAttributeMultiple($attributes, $setDefault = true) + { + $values = array(); + $keys = array(); + $fields = array(); + $default_value = 1; + foreach ($attributes AS &$attribute) + foreach ($attribute AS $key => $value) + if ($value != "") + $fields[$key] = $key; + + foreach ($attributes AS &$attribute) + { + $k = array(); + $v = array(); + foreach ($attribute AS $key => $value) + { + if (in_array($key, $fields)) + { + $k[] = '`'.$key.'`'; + $v[] = '\''.$value.'\''; + } + } + if ($setDefault) + { + $k[] = '`default_on`'; + $v[] = '\''.$default_value.'\''; + $default_value = 0; + } + $values[] = '(' . implode(', ', $v).')'; + $keys[] = implode(', ', $k); + } + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'product_attribute` ('. $keys[0].') VALUES '.implode(', ', $values)); + + return (array_map(create_function('$elem', 'return $elem[\'id_product_attribute\'];'), + Db::getInstance()->ExecuteS(' + SELECT `id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_product_attribute` >= '.(int)(Db::getInstance()->Insert_ID()) + ))); + } + + /** + * Del all default attributes for product + */ + public function deleteDefaultAttributes() + { + return Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'product_attribute` + SET `default_on` = 0 + WHERE `id_product` = '.(int)($this->id)); + } + + public function setDefaultAttribute($id_product_attribute) + { + return Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'product_attribute` + SET `default_on` = 1 + WHERE `id_product` = '.(int)($this->id).' + AND `id_product_attribute` = '.(int)($id_product_attribute)); + } + + /** + * Update a product attribute + * + * @param integer $id_product_attribute Product attribute id + * @param float $price Additional price + * @param float $weight Additional weight + * @param float $ecotax Additional ecotax + * @param integer $quantity Quantity available + * @param integer $id_image Image id + * @param string $reference Reference + * @param string $ean13 Ean-13 barcode + * @param string $upc Upc barcode + * @param string $minimal_quantity Minimal quantity + * @return array Update result + */ + public function updateProductAttribute($id_product_attribute, $wholesale_price, $price, $weight, $unit, $ecotax, $quantity, $id_images, $reference, $supplier_reference, $ean13, $default, $location = NULL, $upc = NULL, $minimal_quantity) + { + Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'product_attribute_combination` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + + $price = str_replace(',', '.', $price); + $weight = str_replace(',', '.', $weight); + $data = array( + 'wholesale_price' => (float)($wholesale_price), + 'price' => (float)($price), + 'ecotax' => (float)($ecotax), + 'weight' => ($weight ? (float)($weight) : 0), + 'unit_price_impact' => ($unit ? (float)($unit) : 0), + 'reference' => pSQL($reference), + 'supplier_reference' => pSQL($supplier_reference), + 'location' => pSQL($location), + 'ean13' => pSQL($ean13), + 'upc' => pSQL($upc), + 'default_on' => (int)($default), + 'minimal_quantity' => (int)($minimal_quantity)); + if ($quantity) + $data['quantity'] = (int)$quantity; + if (!Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_attribute', $data, 'UPDATE', '`id_product_attribute` = '.(int)($id_product_attribute)) OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_attribute_image` WHERE `id_product_attribute` = '.(int)($id_product_attribute))) + return false; + if ($quantity) + Hook::updateProductAttribute($id_product_attribute); + Product::updateDefaultAttribute($this->id); + if (empty($id_images)) + return true; + $query = 'INSERT INTO `'._DB_PREFIX_.'product_attribute_image` (`id_product_attribute`, `id_image`) VALUES '; + foreach ($id_images AS $id_image) + $query .= '('.(int)($id_product_attribute).', '.(int)($id_image).'), '; + $query = trim($query, ', '); + return Db::getInstance()->Execute($query); + } + + public function updateQuantityProductWithAttributeQuantity() + { + return Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'product` + SET `quantity` = IFNULL( + ( + SELECT SUM(`quantity`) + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product` = '.(int)($this->id).' + ), \'0\' ) + WHERE `id_product` = '.(int)($this->id)); + } + /** + * Delete product attributes + * + * @return array Deletion result + */ + public function deleteProductAttributes() + { + Module::hookExec('deleteProductAttribute', array('id_product_attribute' => 0, 'id_product' => $this->id, 'deleteAllAttributes' => true)); + + $result = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'product_attribute_combination` + WHERE `id_product_attribute` IN (SELECT `id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_product` = '.(int)($this->id).')'); + + $result2 = Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_product` = '.(int)($this->id)); + + return ($result & $result2); + } + + /** + * Delete product attributes impacts + * + * @return Deletion result + */ + public function deleteAttributesImpacts() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'attribute_impact` WHERE `id_product` = '.(int)($this->id)); + } + + /** + * Delete product features + * + * @return array Deletion result + */ + public function deleteProductFeatures() + { + return $this->deleteFeatures(); + } + + /** + * Delete product attachments + * + * @return array Deletion result + */ + public function deleteAttachments() + { + $attachments = Db::getInstance()->ExecuteS('SELECT id_attachment FROM `'._DB_PREFIX_.'product_attachment` WHERE `id_product` = '.(int)($this->id)); + $result = true; + foreach ($attachments AS $attachment) + { + $attachmentObj = new Attachment((int)($attachment['id_attachment'])); + if (Validate::isLoadedObject($attachmentObj)) + $result &= $attachmentObj->delete(); + } + + return $result; + } + + /** + * Delete product customizations + * + * @return array Deletion result + */ + public function deleteCustomization() + { + return + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization_field` WHERE `id_product` = '.(int)($this->id)) && + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization_field_lang` WHERE `id_customization_field` NOT IN (SELECT id_customization_field FROM `'._DB_PREFIX_.'customization_field`)'); + } + + /** + * Delete product quantity discounts + * + * @return array Deletion result + * @deprecated + */ + public function deleteQuantityDiscounts() + { + Tools::displayAsDeprecated(); + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'discount_quantity` WHERE `id_product` = '.(int)($this->id)); + } + + /** + * Delete product pack details + * + * @return array Deletion result + */ + public function deletePack() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'pack` WHERE `id_product_pack` = '.(int)($this->id).' OR `id_product_item` = '.(int)($this->id)); + } + + /** + * Delete product sales + * + * @return array Deletion result + */ + public function deleteProductSale() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_sale` WHERE `id_product` = '.(int)($this->id)); + } + + /** + * Delete product in its scenes + * + * @return array Deletion result + */ + public function deleteSceneProducts() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'scene_products` WHERE `id_product` = '.(int)($this->id)); + } + + /** + * Delete product indexed words + * + * @return array Deletion result + */ + public function deleteSearchIndexes() + { + return + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'search_index` WHERE `id_product` = '.(int)($this->id)) && + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'search_word` WHERE `id_word` NOT IN (SELECT id_word FROM `'._DB_PREFIX_.'search_index`)'); + } + + /** + * Add a product attributes combinaison + * + * @param integer $id_product_attribute Product attribute id + * @param array $attributes Attributes to forge combinaison + * @return array Insertion result + */ + public function addAttributeCombinaison($id_product_attribute, $attributes) + { + if (!is_array($attributes)) + die(Tools::displayError()); + if (!sizeof($attributes)) + return false; + $attributesList = ''; + foreach($attributes AS $id_attribute) + $attributesList .= '('.(int)($id_product_attribute).','.(int)($id_attribute).'),'; + $attributesList = rtrim($attributesList, ','); + + if (!Validate::isValuesList($attributesList)) + die(Tools::displayError()); + + $result = Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'product_attribute_combination` (`id_product_attribute`, `id_attribute`) VALUES '.$attributesList); + return $result; + } + + public function addAttributeCombinationMultiple($id_attributes, $combinations) + { + $attributesList = ''; + foreach ($id_attributes AS $nb => $id_product_attribute) + if (isset($combinations[$nb])) + foreach ($combinations[$nb] AS $id_attribute) + $attributesList .= '('.(int)($id_product_attribute).','.(int)($id_attribute).'),'; + $attributesList = rtrim($attributesList, ','); + return Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'product_attribute_combination` (`id_product_attribute`, `id_attribute`) VALUES '.$attributesList); + } + + /** + * Delete a product attributes combinaison + * + * @param integer $id_product_attribute Product attribute id + * @return array Deletion result + */ + public function deleteAttributeCombinaison($id_product_attribute) + { + if (!$id_product_attribute OR !is_numeric($id_product_attribute)) + return false; + + Module::hookExec('deleteProductAttribute', array('id_product_attribute' => $id_product_attribute, 'id_product' => $this->id, 'deleteAllAttributes' => false)); + + $result = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product_attribute` = '.(int)($id_product_attribute).' + AND `id_product` = '.(int)($this->id)); + $result2 = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'product_attribute_combination` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + $result3 = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + return ($result AND $result2 AND $result3); + } + + /** + * Delete features + * + */ + public function deleteFeatures() + { + // List products features + $result1 = Db::getInstance()->ExecuteS(' + SELECT p.*, f.* + FROM `'._DB_PREFIX_.'feature_product` as p + LEFT JOIN `'._DB_PREFIX_.'feature_value` as f ON (f.`id_feature_value` = p.`id_feature_value`) + WHERE `id_product` = '.(int)($this->id)); + foreach ($result1 as $tab) + // Delete product custom features + if ($tab['custom']) { + $result2 = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'feature_value` + WHERE `id_feature_value` = '.(int)($tab['id_feature_value'])); + $result3 = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'feature_value_lang` + WHERE `id_feature_value` = '.(int)($tab['id_feature_value'])); + } + // Delete product features + $result4 = Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'feature_product` + WHERE `id_product` = '.(int)($this->id)); + return ($result4); + } + + /** + * Get all available product attributes combinaisons + * + * @param integer $id_lang Language id + * @return array Product attributes combinaisons + */ + public function getAttributeCombinaisons($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT pa.*, ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, al.`name` AS attribute_name, a.`id_attribute`, pa.`unit_price_impact` + FROM `'._DB_PREFIX_.'product_attribute` pa + LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)($id_lang).') + WHERE pa.`id_product` = '.(int)($this->id).' + ORDER BY pa.`id_product_attribute`'); + } + + public function getCombinationImages($id_lang) + { + if (!$productAttributes = Db::getInstance()->ExecuteS('SELECT `id_product_attribute` FROM `'._DB_PREFIX_.'product_attribute` WHERE `id_product` = '.(int)($this->id))) + return false; + $ids = array(); + foreach ($productAttributes AS $productAttribute) + $ids[] = (int)($productAttribute['id_product_attribute']); + if (!$result = Db::getInstance()->ExecuteS(' + SELECT pai.`id_image`, pai.`id_product_attribute`, il.`legend` + FROM `'._DB_PREFIX_.'product_attribute_image` pai + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (il.`id_image` = pai.`id_image`) + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = pai.`id_image`) + WHERE pai.`id_product_attribute` IN ('.implode(', ', $ids).') AND il.`id_lang` = '.(int)($id_lang).' ORDER by i.`position`')) + return false; + $images = array(); + foreach ($result AS $row) + $images[$row['id_product_attribute']][] = $row; + return $images; + } + + /** + * Check if product has attributes combinaisons + * + * @return integer Attributes combinaisons number + */ + public function hasAttributes() + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT COUNT(`id_product_attribute`) + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product` = '.(int)($this->id)); + } + + /** + * Get new products + * + * @param integer $id_lang Language id + * @param integer $pageNumber Start from (optional) + * @param integer $nbProducts Number of products to return (optional) + * @return array New products + */ + public static function getNewProducts($id_lang, $pageNumber = 0, $nbProducts = 10, $count = false, $orderBy = NULL, $orderWay = NULL) + { + if ($pageNumber < 0) $pageNumber = 0; + if ($nbProducts < 1) $nbProducts = 10; + if (empty($orderBy) || $orderBy == 'position') $orderBy = 'date_add'; + if (empty($orderWay)) $orderWay = 'DESC'; + if ($orderBy == 'id_product' OR $orderBy == 'price' OR $orderBy == 'date_add') + $orderByPrefix = 'p'; + elseif ($orderBy == 'name') + $orderByPrefix = 'pl'; + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die(Tools::displayError()); + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + if ($count) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(`id_product`) AS nb + FROM `'._DB_PREFIX_.'product` p + WHERE `active` = 1 + AND DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + )'); + return (int)($result['nb']); + } + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, + i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, + (p.`price` * ((100 + (t.`rate`))/100)) AS orderprice, pa.id_product_attribute + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT OUTER JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND `default_on` = 1) + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) + WHERE p.`active` = 1 + AND DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY '.(isset($orderByPrefix) ? pSQL($orderByPrefix).'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' + LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)($nbProducts)); + + if ($orderBy == 'price') + Tools::orderbyPrice($result, $orderWay); + if (!$result) + return false; + + $productsIds = array(); + foreach ($result as $row) + $productsIds[] = $row['id_product']; + // Thus you can avoid one query per product, because there will be only one query for all the products of the cart + Product::cacheFrontFeatures($productsIds, $id_lang); + + return Product::getProductsProperties((int)$id_lang, $result); + } + + static protected function _getProductIdByDate($beginning, $ending) + { + global $cookie, $cart; + + $id_group = $cookie->id_customer ? (int)(Customer::getDefaultGroupId((int)($cookie->id_customer))) : _PS_DEFAULT_CUSTOMER_GROUP_; + $id_address = $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; + $ids = Address::getCountryAndState($id_address); + $id_country = (int)($ids['id_country'] ? $ids['id_country'] : Configuration::get('PS_COUNTRY_DEFAULT')); + return SpecificPrice::getProductIdByDate((int)(Shop::getCurrentShop()), (int)($cookie->id_currency), $id_country, $id_group, $beginning, $ending); + } + + /** + * Get a random special + * + * @param integer $id_lang Language id + * @return array Special + */ + public static function getRandomSpecial($id_lang, $beginning = false, $ending = false) + { + $currentDate = date('Y-m-d H:i:s'); + $ids_product = self::_getProductIdByDate((!$beginning ? $currentDate : $beginning), (!$ending ? $currentDate : $ending)); + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + // Please keep 2 distinct queries because RAND() is an awful way to achieve this result + $sql = ' + SELECT p.id_product + FROM `'._DB_PREFIX_.'product` p + WHERE 1 + AND p.`active` = 1 + AND p.`id_product` IN ('.implode(', ', $ids_product).') + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY RAND()'; + $id_product = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + + if (!$id_product) + return false; + + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, + i.`id_image`, il.`legend`, t.`rate` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + WHERE p.id_product = '.(int)$id_product); + + return Product::getProductProperties($id_lang, $row); + } + + /** + * Get prices drop + * + * @param integer $id_lang Language id + * @param integer $pageNumber Start from (optional) + * @param integer $nbProducts Number of products to return (optional) + * @param boolean $count Only in order to get total number (optional) + * @return array Prices drop + */ + public static function getPricesDrop($id_lang, $pageNumber = 0, $nbProducts = 10, $count = false, $orderBy = NULL, $orderWay = NULL, $beginning = false, $ending = false) + { + if (!Validate::isBool($count)) + die(Tools::displayError()); + + if ($pageNumber < 0) $pageNumber = 0; + if ($nbProducts < 1) $nbProducts = 10; + if (empty($orderBy) || $orderBy == 'position') $orderBy = 'price'; + if (empty($orderWay)) $orderWay = 'DESC'; + if ($orderBy == 'id_product' OR $orderBy == 'price' OR $orderBy == 'date_add') + $orderByPrefix = 'p'; + elseif ($orderBy == 'name') + $orderByPrefix = 'pl'; + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die (Tools::displayError()); + $currentDate = date('Y-m-d H:i:s'); + $ids_product = self::_getProductIdByDate((!$beginning ? $currentDate : $beginning), (!$ending ? $currentDate : $ending)); + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + if ($count) + { + $sql = ' + SELECT COUNT(DISTINCT p.`id_product`) AS nb + FROM `'._DB_PREFIX_.'product` p + WHERE p.`active` = 1 + AND p.`show_price` = 1 + '.((!$beginning AND !$ending) ? ' AND p.`id_product` IN('.((is_array($ids_product) AND sizeof($ids_product)) ? implode(', ', $ids_product) : 0).')' : '').' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + )'; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($sql); + return (int)($result['nb']); + } + $sql = ' + SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, + pl.`name`, p.`ean13`, p.`upc`, i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name, + DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) + WHERE 1 + AND p.`active` = 1 + AND p.`show_price` = 1 + '.((!$beginning AND !$ending) ? ' AND p.`id_product` IN ('.((is_array($ids_product) AND sizeof($ids_product)) ? implode(', ', $ids_product) : 0).')' : '').' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY '.(isset($orderByPrefix) ? pSQL($orderByPrefix).'.' : '').'`'.pSQL($orderBy).'`'.' '.pSQL($orderWay).' + LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)($nbProducts); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + if($orderBy == 'price') + Tools::orderbyPrice($result,$orderWay); + if (!$result) + return false; + return Product::getProductsProperties($id_lang, $result); + } + + + /** + * getProductCategories return an array of categories which this product belongs to + * + * @return array of categories + */ + public static function getProductCategories($id_product = '') + { + $ret = array(); + if ($row = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `id_category` FROM `'._DB_PREFIX_.'category_product` + WHERE `id_product` = '.(int)$id_product) + ) + foreach ($row as $val) + { + $ret[] = $val['id_category']; + } + return $ret; + } + + /** + * getCategories return an array of categories which this product belongs to + * + * @return array of categories + */ + public function getCategories() + { + return Product::getProductCategories($this->id); + } + + /** + * Get categories where product is indexed + * + * @param integer $id_product Product id + * @return array Categories where product is indexed + * @deprecated + */ + public static function getIndexedCategories($id_product) + { + Tools::displayAsDeprecated(); + return Db::getInstance()->ExecuteS(' + SELECT `id_category` + FROM `'._DB_PREFIX_.'category_product` + WHERE `id_product` = '.(int)($id_product)); + } + + /** + * Get product images and legends + * + * @param integer $id_lang Language id for multilingual legends + * @return array Product images and legends + */ + public function getImages($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT i.`cover`, i.`id_image`, il.`legend` + FROM `'._DB_PREFIX_.'image` i + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + WHERE i.`id_product` = '.(int)($this->id).' + ORDER BY `position`'); + } + + /** + * Get product cover image + * + * @return array Product cover image + */ + public static function getCover($id_product) + { + return Db::getInstance()->getRow(' + SELECT `id_image` + FROM `'._DB_PREFIX_.'image` + WHERE `id_product` = '.(int)($id_product).' + AND `cover` = 1'); + } + + /** + * Get reduction value for a given product + * ***************************************** + * ** Kept for retro-compatibility issues ** + * ***************************************** + * You should use getPriceStatic() instead (with the parameter $only_reduc set to true) + * + * @param array $result SQL result with reduction informations + * @param boolean $wt With taxes or not (optional) + * @return float Reduction value in euros + */ + /* */ + public static function getReductionValue($reduction_price, $reduction_percent, $date_from, $date_to, $product_price, $usetax, $taxrate) + { + Tools::displayAsDeprecated(); + + // Avoid an error with 1970-01-01 + if (!Validate::isDate($date_from) OR !Validate::isDate($date_to)) + return 0; + $currentDate = date('Y-m-d H:i:s'); + if ($date_from != $date_to AND ($currentDate > $date_to OR $currentDate < $date_from)) + return 0; + + // reduction values + if (!$usetax) + $reduction_price /= (1 + ($taxrate / 100)); + + // make the reduction + if ($reduction_price AND $reduction_price > 0) + { + if ($reduction_price >= $product_price) + $ret = $product_price; + else + $ret = $reduction_price; + } + elseif ($reduction_percent AND $reduction_percent > 0) + { + if ($reduction_percent >= 100) + $ret = $product_price; + else + $ret = $product_price * $reduction_percent / 100; + } + return isset($ret) ? $ret : 0; + } + + /** + * Get product price + * + * @param integer $id_product Product id + * @param boolean $usetax With taxes or not (optional) + * @param integer $id_product_attribute Product attribute id (optional). If set to false, do not apply the combination price impact. NULL does apply the default combination price impact. + * @param integer $decimals Number of decimals (optional) + * @param integer $divisor Useful when paying many time without fees (optional) + * @param boolean $only_reduc Returns only the reduction amount + * @param boolean $usereduc Set if the returned amount will include reduction + * @param integer $quantity Required for quantity discount application (default value: 1) + * @param boolean $forceAssociatedTax Force to apply the associated tax. Only works when the parameter $usetax is true + * @param integer $id_customer Customer ID (for customer group reduction) + * @param integer $id_cart Cart ID. Required when the cookie is not accessible (e.g., inside a payment module, a cron task...) + * @param integer $id_address Customer address ID. Required for price (tax included) calculation regarding the guest localization + * @param variable_reference $specificPriceOutput. If a specific price applies regarding the previous parameters, this variable is filled with the corresponding SpecificPrice object + * @param boolean $with_ecotax insert ecotax in price output. + * @return float Product price + */ + public static function getPriceStatic($id_product, $usetax = true, $id_product_attribute = NULL, $decimals = 6, $divisor = NULL, $only_reduc = false, + $usereduc = true, $quantity = 1, $forceAssociatedTax = false, $id_customer = NULL, $id_cart = NULL, $id_address = NULL, &$specificPriceOutput = NULL, $with_ecotax = TRUE) + { + global $cookie, $cart; + $cur_cart = $cart; + + if (isset($divisor)) + Tools::displayParameterAsDeprecated('divisor'); + + if (!Validate::isBool($usetax) OR !Validate::isUnsignedId($id_product)) + die(Tools::displayError()); + // Initializations + if (!$id_customer) + $id_customer = ((Validate::isCookie($cookie) AND isset($cookie->id_customer) AND $cookie->id_customer) ? (int)($cookie->id_customer) : NULL); + $id_group = $id_customer ? (int)(Customer::getDefaultGroupId($id_customer)) : _PS_DEFAULT_CUSTOMER_GROUP_; + if (!is_object($cur_cart) OR (Validate::isUnsignedInt($id_cart) AND $id_cart)) + { + /* + * When a user (e.g., guest, customer, Google...) is on PrestaShop, he has already its cart as the global (see /init.php) + * When a non-user calls directly this method (e.g., payment module...) is on PrestaShop, he does not have already it BUT knows the cart ID + */ + if (!$id_cart AND !Validate::isCookie($cookie)) + die(Tools::displayError()); + $cur_cart = $id_cart ? new Cart((int)($id_cart)) : new Cart((int)($cookie->id_cart)); + } + + if ((int)($id_cart)) + { + if (!isset(self::$_cart_quantity[(int)($id_cart).'_'.(int)($id_product)]) OR self::$_cart_quantity[(int)($id_cart).'_'.(int)($id_product)] != (int)($quantity)) + self::$_cart_quantity[(int)($id_cart).'_'.(int)($id_product)] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT SUM(`quantity`) + FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_product` = '.(int)($id_product).' AND `id_cart` = '.(int)($id_cart) + ); + $cart_quantity = self::$_cart_quantity[(int)($id_cart).'_'.(int)($id_product)]; + } + $quantity = ($id_cart AND $cart_quantity) ? $cart_quantity : $quantity; + $id_currency = (int)(Validate::isLoadedObject($cur_cart) ? $cur_cart->id_currency : ((isset($cookie->id_currency) AND (int)($cookie->id_currency)) ? $cookie->id_currency : Configuration::get('PS_CURRENCY_DEFAULT'))); + if (!$id_address) + $id_address = $cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}; + + if (Tax::excludeTaxeOption()) + $usetax = false; + + $id_country = (int)Country::getDefaultCountryId(); + $id_state = 0; + $id_county = 0; + $id_state = 0; + + + $address_infos = Address::getCountryAndState($id_address); + if ($address_infos['id_country']) + { + $id_country = (int)($address_infos['id_country']); + $id_state = (int)($address_infos['id_state']); + $id_county = (int)County::getIdCountyByZipCode($address_infos['id_state'], $address_infos['postcode']); + + } + + if ($usetax != false AND !empty($address_infos['vat_number']) AND $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY') AND Configuration::get('VATNUMBER_MANAGEMENT')) + $usetax = false; + + $id_shop = (int)(Shop::getCurrentShop()); + + return Product::priceCalculation($id_shop, $id_product, $id_product_attribute, $id_country, $id_state, $id_county, $id_currency, $id_group, $quantity, $usetax, $decimals, $only_reduc, + $usereduc, $with_ecotax, $specificPriceOutput); + } + + /** + * Price calculation / Get product price + * + * @param integer $id_shop Shop id + * @param integer $id_product Product id + * @param integer $id_product_attribute Product attribute id + * @param integer $id_country Country id + * @param integer $id_state State id + * @param integer $id_currency Currency id + * @param integer $id_group Group id + * @param integer $quantity Quantity Required for Specific prices : quantity discount application + * @param boolean $use_tax with (1) or without (0) tax + * @param integer $decimals Number of decimals returned + * @param boolean $only_reduc Returns only the reduction amount + * @param boolean $use_reduc Set if the returned amount will include reduction + * @param boolean $with_ecotax insert ecotax in price output. + * @param variable_reference $specific_price_output If a specific price applies regarding the previous parameters, this variable is filled with the corresponding SpecificPrice object + * @return float Product price + **/ + public static function priceCalculation($id_shop, $id_product, $id_product_attribute, $id_country, $id_state, $id_county, $id_currency, $id_group, $quantity, $use_tax, $decimals, $only_reduc, $use_reduc, $with_ecotax, &$specific_price_output) + { + // Caching + if ($id_product_attribute === NULL) + $product_attribute_label = 'NULL'; + else + $product_attribute_label = ($id_product_attribute === false ? 'false' : $id_product_attribute); + $cacheId = $id_product.'-'.$id_shop.'-'.$id_currency.'-'.$id_country.'-'.$id_group.'-'.$quantity.'-'.$product_attribute_label.'-'.($use_tax?'1':'0').'-'.$decimals.'-'.($only_reduc?'1':'0').'-'.($use_reduc?'1':'0'); + + if (isset(self::$_prices[$cacheId])) + return self::$_prices[$cacheId]; + + // fetch price & attribute price + $cacheId2 = $id_product.'-'.$id_product_attribute; + if (!isset(self::$_pricesLevel2[$cacheId2])) + self::$_pricesLevel2[$cacheId2] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT p.`price`, p.`ecotax`, + '.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.(int)($id_product).' AND default_on = 1), 0)').' AS attribute_price + FROM `'._DB_PREFIX_.'product` p + '.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.(int)($id_product_attribute) : '').' + WHERE p.`id_product` = '.(int)($id_product)); + $result = self::$_pricesLevel2[$cacheId2]; + + + // Cache for specific prices + $cacheId3 = $id_product.'-'.$id_shop.'-'.$id_currency.'-'.$id_country.'-'.$id_group.'-'.$quantity; + + if (!isset(self::$_pricesLevel3[$cacheId3])) + self::$_pricesLevel3[$cacheId3] = SpecificPrice::getSpecificPrice((int)($id_product), $id_shop, $id_currency, $id_country, $id_group, $quantity); + $specific_price = self::$_pricesLevel3[$cacheId3]; + + $price = (float)(!$specific_price OR $specific_price['price'] == 0) ? $result['price'] : $specific_price['price']; + // convert only if the specific price is in the default currency (id_currency = 0) + if (!$specific_price OR !($specific_price['price'] > 0 AND $specific_price['id_currency'])) + $price = Tools::convertPrice($price, $id_currency); + + // Parameter passed by ref + $specific_price_output = $specific_price; + // Attribute price + $attribute_price = Tools::convertPrice(array_key_exists('attribute_price', $result) ? (float)($result['attribute_price']) : 0, $id_currency); + if ($id_product_attribute !== false) // If you want the default combination, please use NULL value instead + $price += $attribute_price; + + // TaxRate calculation + $tax_rate = Tax::getProductTaxRateViaRules((int)$id_product, (int)$id_country, (int)$id_state, (int)$id_county); + if ($tax_rate === false) + $tax_rate = 0; + // Add Tax + if ($use_tax) + $price = $price * (1 + ($tax_rate / 100)); + $price = Tools::ps_round($price, $decimals); + + // Reduction + $reduc = 0; + if (($only_reduc OR $use_reduc) AND $specific_price) + { + if ($specific_price['reduction_type'] == 'amount') + { + $reduction_amount = $specific_price['reduction']; + + if (!$specific_price['id_currency']) + $reduction_amount = Tools::convertPrice($reduction_amount, $id_currency); + $reduc = Tools::ps_round(!$use_tax ? $reduction_amount / (1 + $tax_rate / 100) : $reduction_amount, $decimals); + } + else + $reduc = Tools::ps_round($price * $specific_price['reduction'], $decimals); + } + + if ($only_reduc) + return $reduc; + + if ($use_reduc) + $price -= $reduc; + + // Group reduction + if ($reductionFromCategory = (float)(GroupReduction::getValueForProduct($id_product, $id_group))) + $price -= $price * $reductionFromCategory; + else // apply group reduction if there is no group reduction for this category + $price *= ((100 - Group::getReductionByIdGroup($id_group)) / 100); + + $price = Tools::ps_round($price, $decimals); + + // Eco Tax + if ($result['ecotax'] AND $with_ecotax) + { + $ecotax = $result['ecotax']; + if ($id_currency) + $ecotax = Tools::convertPrice($ecotax, $id_currency); + if ($use_tax) + { + $taxRate = TaxRulesGroup::getTaxesRate((int)Configuration::get('PS_ECOTAX_TAX_RULES_GROUP_ID'), (int)$id_country, (int)$id_state, (int)$id_county); + $price += $ecotax * (1 + ($taxRate / 100)); + } + else + $price += $ecotax; + } + + $price = Tools::ps_round($price, $decimals); + + if ($price < 0) + $price = 0; + + self::$_prices[$cacheId] = $price; + return self::$_prices[$cacheId]; + } + + public static function convertAndFormatPrice($price, $currency = false) + { + if (!$currency) + $currency = Currency::getCurrent(); + return Tools::displayPrice(Tools::convertPrice($price, $currency), $currency); + } + + public static function isDiscounted($id_product, $quantity = 1) + { + global $cookie, $cart; + + $id_customer = ((Validate::isCookie($cookie) AND isset($cookie->id_customer) AND $cookie->id_customer) ? (int)($cookie->id_customer) : NULL); + $id_group = $id_customer ? (int)(Customer::getDefaultGroupId($id_customer)) : _PS_DEFAULT_CUSTOMER_GROUP_; + $cart_quantity = !$cart ? 0 : Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT SUM(`quantity`) + FROM `'._DB_PREFIX_.'cart_product` + WHERE `id_product` = '.(int)($id_product).' AND `id_cart` = '.(int)($cart->id) + ); + $quantity = $cart_quantity ? $cart_quantity : $quantity; + $id_currency = (int)(Validate::isLoadedObject($cart) ? $cart->id_currency : ((isset($cookie->id_currency) AND (int)($cookie->id_currency)) ? $cookie->id_currency : Configuration::get('PS_CURRENCY_DEFAULT'))); + $ids = Address::getCountryAndState((int)($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + $id_country = (int)($ids['id_country'] ? $ids['id_country'] : Configuration::get('PS_COUNTRY_DEFAULT')); + $id_shop = (int)(Shop::getCurrentShop()); + return (bool)SpecificPrice::getSpecificPrice((int)$id_product, $id_shop, $id_currency, $id_country, $id_group, $quantity); + } + + /** + * Get product price + * Same as static function getPriceStatic, no need to specify product id + * + * @param boolean $tax With taxes or not (optional) + * @param integer $id_product_attribute Product attribute id (optional) + * @param integer $decimals Number of decimals (optional) + * @param integer $divisor Util when paying many time without fees (optional) + * @return float Product price in euros + */ + public function getPrice($tax = true, $id_product_attribute = NULL, $decimals = 6, $divisor = NULL, $only_reduc = false, $usereduc = true, $quantity = 1) + { + return self::getPriceStatic((int)($this->id), $tax, $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity); + } + + /** + * @deprecated + */ + public function getIdProductAttributeMostExpsensive() + { + Tools::displayAsDeprecated(); + return $this->getIdProductAttributeMostExpensive(); + } + + public function getIdProductAttributeMostExpensive() + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `id_product_attribute` + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product` = '.(int)($this->id).' + ORDER BY `price` DESC'); + + return (isset($row['id_product_attribute']) AND $row['id_product_attribute']) ? (int)$row['id_product_attribute'] : 0; + } + + public function getPriceWithoutReduct($notax = false, $id_product_attribute = false) + { + return self::getPriceStatic((int)($this->id), !$notax, $id_product_attribute, 6, NULL, false, false); + } + + /** + * Get product price for display + * Also display currency sign and reduction + * + * @param array $params Product price, reduction... + * @param object $smarty Smarty object + * @return string Product price fully formated in customer currency + */ + static function productPrice($params, &$smarty) + { + $ret = ''; + if (isset($params['p']['reduction']) AND $params['p']['reduction']) + $ret .= ''.Tools::displayPrice($params['p']['price_without_reduction'], $smarty->ps_currency).'
'; + $ret .= Tools::displayPrice($params['p']['price'], $smarty->ps_currency); + return $ret; + } + + static function productPriceWithoutDisplay($params, &$smarty) + { + return Tools::convertPrice($params['p'], $params['c']); + } + + /** + * Display price with right format and currency + * + * @param array $params Params + * @object $smarty Smarty object + * @return string Price with right format and currency + */ + static function convertPrice($params, &$smarty) + { + return Tools::displayPrice($params['price'], $smarty->ps_currency); + } + + static function convertPriceWithCurrency($params, &$smarty) + { + if (!isset($params['convert'])) + $params['convert'] = true; + return Tools::displayPrice($params['price'], $params['currency'], false, $params['convert']); + } + + static function displayWtPrice($params, &$smarty) + { + return Tools::displayPrice($params['p'], $smarty->ps_currency); + } + + static function displayWtPriceWithCurrency($params, &$smarty) + { + return Tools::displayPrice($params['price'], $params['currency'], false, $params['convert']); + } + + /** + * Get available product quantities + * + * @param integer $id_product Product id + * @param integer $id_product_attribute Product attribute id (optional) + * @return integer Available quantities + */ + public static function getQuantity($id_product, $id_product_attribute = NULL, $cache_is_pack = NULL) + { + $lang = Configuration::get('PS_LANG_DEFAULT'); + if (((int)$cache_is_pack OR ($cache_is_pack === NULL AND Pack::isPack((int)$id_product, (int)$lang))) AND !Pack::isInStock((int)$id_product, (int)$lang)) + return 0; + + return Db::getInstance()->getValue(' + SELECT IF(COUNT(id_product_attribute), SUM(pa.`quantity`), p.`quantity`) as total + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_attribute` AS pa ON pa.`id_product` = p.`id_product` + WHERE p.`id_product` = '.(int)($id_product).' + '.(isset($id_product_attribute) ? 'AND `id_product_attribute` = '.(int)($id_product_attribute) : '').' + GROUP BY p.`id_product`'); + } + + /** + * Update available product quantities + * + * @param array $product Array with ordered product (quantity, id_product_attribute if applicable) + * @return mixed Query result + */ + public static function updateQuantity($product, $id_order = NULL) + { + if (!is_array($product)) + die (Tools::displayError()); + + if (!Configuration::get('PS_STOCK_MANAGEMENT')) + return true; + + if (Pack::isPack((int)($product['id_product']))) + { + $products_pack = Pack::getItems((int)($product['id_product']), (int)(Configuration::get('PS_LANG_DEFAULT'))); + foreach($products_pack AS $product_pack) + { + $tab_product_pack['id_product'] = (int)($product_pack->id); + $tab_product_pack['id_product_attribute'] = self::getDefaultAttribute($tab_product_pack['id_product'], 1); + $tab_product_pack['cart_quantity'] = (int)($product_pack->pack_quantity * $product['cart_quantity']); + self::updateQuantity($tab_product_pack); + } + } + + $productObj = new Product((int)$product['id_product'], false, (int)Configuration::get('PS_LANG_DEFAULT')); + return $productObj->addStockMvt(-(int)$product['cart_quantity'], (int)_STOCK_MOVEMENT_ORDER_REASON_, (int)$product['id_product_attribute'], (int)$id_order, NULL); + } + + public static function reinjectQuantities(&$orderDetail, $quantity) + { + global $cookie; + if (!Validate::isLoadedObject($orderDetail)) + die(Tools::displayError()); + + if (Pack::isPack((int)($orderDetail->product_id))) + { + $products_pack = Pack::getItems((int)($orderDetail->product_id), (int)(Configuration::get('PS_LANG_DEFAULT'))); + foreach($products_pack AS $product_pack) + if (!$product_pack->addStockMvt((int)($product_pack->pack_quantity * $quantity), _STOCK_MOVEMENT_ORDER_REASON_, (int)$product_pack->id_product_attribute, (int)$orderDetail->id_order, (int)$cookie->id_employee)) + return false; + } + + $product = new Product((int)$orderDetail->product_id); + if (!$product->addStockMvt((int)$quantity, _STOCK_MOVEMENT_ORDER_REASON_, (int)$orderDetail->product_attribute_id, (int)$orderDetail->id_order, (int)$cookie->id_employee)) + return false; + + $orderDetail->product_quantity_reinjected += (int)($quantity); + return true; + } + + public static function isAvailableWhenOutOfStock($oos) + { + return !Configuration::get('PS_STOCK_MANAGEMENT') ? true : ((int)($oos) == 2 ? (int)(Configuration::get('PS_ORDER_OUT_OF_STOCK')) : (int)($oos)); + } + + /** + * Check product availability + * + * @param integer $qty Quantity desired + * @return boolean True if product is available with this quantity + */ + public function checkQty($qty) + { + if (Pack::isPack((int)($this->id)) AND !Pack::isInStock((int)($this->id))) + return false; + + if ($this->isAvailableWhenOutOfStock($this->out_of_stock)) + return true; + + $result = Db::getInstance()->getRow(' + SELECT `quantity` + FROM `'._DB_PREFIX_.'product` + WHERE `id_product` = '.(int)($this->id)); + + return ($result AND $qty <= $result['quantity']); + } + + /** + * Check if there is not a default attribute and create it not + */ + public function checkDefaultAttributes() + { + $row = Db::getInstance()->getRow(' + SELECT id_product + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `default_on` = 1 AND `id_product` = '.(int)($this->id)); + if ($row) + return true; + + $mini = Db::getInstance()->getRow(' + SELECT MIN(pa.id_product_attribute) as `id_attr` + FROM `'._DB_PREFIX_.'product_attribute` pa + WHERE `id_product` = '.(int)($this->id)); + if (!$mini) + return false; + + if (!Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'product_attribute` + SET `default_on` = 1 + WHERE `id_product_attribute` = '.(int)($mini['id_attr']))) + return false; + return true; + } + + /** + * Get all available attribute groups + * + * @param integer $id_lang Language id + * @return array Attribute groups + */ + public function getAttributesGroups($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name, a.`id_attribute`, al.`name` AS attribute_name, + a.`color` AS attribute_color, pa.`id_product_attribute`, pa.`quantity`, pa.`price`, pa.`ecotax`, pa.`weight`, pa.`default_on`, pa.`reference`, pa.`unit_price_impact`, pa.`minimal_quantity` + FROM `'._DB_PREFIX_.'product_attribute` pa + LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON a.`id_attribute` = al.`id_attribute` + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON ag.`id_attribute_group` = agl.`id_attribute_group` + WHERE pa.`id_product` = '.(int)($this->id).' + AND al.`id_lang` = '.(int)($id_lang).' + AND agl.`id_lang` = '.(int)($id_lang).' + ORDER BY agl.`public_name`, al.`name`'); + } + + /** + * Delete product accessories + * + * @return mixed Deletion result + */ + public function deleteAccessories() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'accessory` WHERE `id_product_1` = '.(int)($this->id)); + } + + /** + * Delete product from other products accessories + * + * @return mixed Deletion result + */ + public function deleteFromAccessories() + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'accessory` WHERE `id_product_2` = '.(int)($this->id)); + } + + /** + * Get product accessories (only names) + * + * @param integer $id_lang Language id + * @param integer $id_product Product id + * @return array Product accessories + */ + public static function getAccessoriesLight($id_lang, $id_product) + { + return Db::getInstance()->ExecuteS(' + SELECT p.`id_product`, p.`reference`, pl.`name` + FROM `'._DB_PREFIX_.'accessory` + LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product`= `id_product_2`) + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + WHERE `id_product_1` = '.(int)($id_product)); + } + + /** + * Get product accessories + * + * @param integer $id_lang Language id + * @return array Product accessories + */ + public function getAccessories($id_lang, $active = true) + { + global $link, $cookie; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, + i.`id_image`, il.`legend`, t.`rate`, m.`name` as manufacturer_name, cl.`name` AS category_default, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), + INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new + FROM `'._DB_PREFIX_.'accessory` + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = `id_product_2` + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (p.`id_manufacturer`= m.`id_manufacturer`) + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + WHERE `id_product_1` = '.(int)($this->id).' + '.($active ? 'AND p.`active` = 1' : '')); + + if (!$result) + return false; + + return $this->getProductsProperties($id_lang, $result); + } + + public static function getAccessoryById($accessoryId) + { + return Db::getInstance()->getRow('SELECT `id_product`, `name` FROM `'._DB_PREFIX_.'product_lang` WHERE `id_product` = '.(int)($accessoryId)); + } + + /** + * Link accessories with product + * + * @param array $accessories_id Accessories ids + */ + public function changeAccessories($accessories_id) + { + foreach ($accessories_id as $id_product_2) + Db::getInstance()->AutoExecute(_DB_PREFIX_.'accessory', array('id_product_1' => (int)($this->id), 'id_product_2' => (int)($id_product_2)), 'INSERT'); + } + + /** + * Add new feature to product + */ + public function addFeaturesCustomToDB($id_value, $lang, $cust) + { + $row = array('id_feature_value' => (int)($id_value), 'id_lang' => (int)($lang), 'value' => pSQL($cust)); + return Db::getInstance()->autoExecute(_DB_PREFIX_.'feature_value_lang', $row, 'INSERT'); + } + + public function addFeaturesToDB($id_feature, $id_value, $cust = 0) + { + if ($cust) + { + $row = array('id_feature' => (int)($id_feature), 'custom' => 1); + Db::getInstance()->autoExecute(_DB_PREFIX_.'feature_value', $row, 'INSERT'); + $id_value = Db::getInstance()->Insert_ID(); + } + $row = array('id_feature' => (int)($id_feature), 'id_product' => (int)($this->id), 'id_feature_value' => (int)($id_value)); + Db::getInstance()->autoExecute(_DB_PREFIX_.'feature_product', $row, 'INSERT'); + if ($id_value) + return ($id_value); + } + + public static function addFeatureProductImport($id_product, $id_feature, $id_feature_value) + { + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'feature_product` (`id_feature`, `id_product`, `id_feature_value`) + VALUES ('.(int)($id_feature).', '.(int)($id_product).', '.(int)($id_feature_value).') + ON DUPLICATE KEY UPDATE `id_feature_value` = '.(int)($id_feature_value) + ); + } + + /** + * Select all features for the object + * + * @return array Array with feature product's data + */ + public function getFeatures() + { + return self::getFeaturesStatic((int)$this->id); + } + + public static function getFeaturesStatic($id_product) + { + if (!array_key_exists($id_product, self::$_cacheFeatures)) + self::$_cacheFeatures[$id_product] = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT id_feature, id_product, id_feature_value + FROM `'._DB_PREFIX_.'feature_product` + WHERE `id_product` = '.(int)$id_product); + return self::$_cacheFeatures[$id_product]; + } + + public static function cacheProductsFeatures(array $productIds) + { + $productImplode = array(); + foreach ($productIds as $id_product) + if ((int)$id_product AND !array_key_exists($id_product, self::$_cacheFeatures)) + $productImplode[] = (int)$id_product; + if (!count($productImplode)) + return; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT id_feature, id_product, id_feature_value + FROM `'._DB_PREFIX_.'feature_product` + WHERE `id_product` IN ('.implode($productImplode, ',').')'); + foreach ($result as $row) + { + if (!array_key_exists($row['id_product'], self::$_cacheFeatures)) + self::$_cacheFeatures[$row['id_product']] = array(); + self::$_cacheFeatures[$row['id_product']][] = $row; + } + } + + public static function cacheFrontFeatures(array $productIds, $id_lang) + { + $productImplode = array(); + foreach ($productIds as $id_product) + if ((int)$id_product AND !array_key_exists($id_product.'-'.$id_lang, self::$_cacheFeatures)) + $productImplode[] = (int)$id_product; + if (!count($productImplode)) + return; + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT id_product, name, value, pf.id_feature + FROM '._DB_PREFIX_.'feature_product pf + LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.') + LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.') + WHERE `id_product` IN ('.implode($productImplode, ',').')'); + + foreach ($result as $row) + { + if (!array_key_exists($row['id_product'].'-'.$id_lang, self::$_frontFeaturesCache)) + self::$_frontFeaturesCache[$row['id_product'].'-'.$id_lang] = array(); + self::$_frontFeaturesCache[$row['id_product'].'-'.$id_lang][] = $row; + } + } + + /** + * Admin panel product search + * + * @param integer $id_lang Language id + * @param string $query Search query + * @return array Matching products + */ + public static function searchByName($id_lang, $query) + { + $result = Db::getInstance()->ExecuteS(' + SELECT p.`id_product`, pl.`name`, pl.`link_rewrite`, p.`weight`, p.`active`, p.`ecotax`, i.`id_image`, p.`reference`, p.`cache_is_pack`, + il.`legend`, m.`name` AS manufacturer_name, tl.`name` AS tax_name + FROM `'._DB_PREFIX_.'category_product` cp + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`) AND i.`cover` = 1 + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + WHERE pl.`name` LIKE \'%'.pSQL($query).'%\' OR p.`reference` LIKE \'%'.pSQL($query).'%\' OR p.`supplier_reference` LIKE \'%'.pSQL($query).'%\' + GROUP BY `id_product` + ORDER BY pl.`name` ASC'); + + if (!$result) + return false; + + $resultsArray = array(); + foreach ($result AS $k => $row) + { + $row['price'] = Product::getPriceStatic($row['id_product'], true, NULL, 2); + $row['quantity'] = Product::getQuantity($row['id_product'], NULL, $row['cache_is_pack']); + $resultsArray[] = $row; + } + return $resultsArray; + } + + /** + * Duplicate attributes when duplicating a product + * + * @param integer $id_product_old Old product id + * @param integer $id_product_new New product id + */ + public static function duplicateAttributes($id_product_old, $id_product_new) + { + $return = true; + $combinationImages = array(); + + $result = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'product_attribute` + WHERE `id_product` = '.(int)($id_product_old)); + foreach ($result as $row) + { + $id_product_attribute_old = (int)($row['id_product_attribute']); + $result2 = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'product_attribute_combination` + WHERE `id_product_attribute` = '.$id_product_attribute_old); + + $row['id_product'] = $id_product_new; + unset($row['id_product_attribute']); + $return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_attribute', $row, 'INSERT'); + + $id_product_attribute_new = (int)(Db::getInstance()->Insert_ID()); + if ($resultImages = self::_getAttributeImageAssociations($id_product_attribute_old)) + { + $combinationImages['old'][$id_product_attribute_old] = $resultImages; + $combinationImages['new'][$id_product_attribute_new] = $resultImages; + } + foreach ($result2 AS $row2) + { + $row2['id_product_attribute'] = $id_product_attribute_new; + $return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'product_attribute_combination', $row2, 'INSERT'); + } + } + return !$return ? false : $combinationImages; + } + + /** + * Get product attribute image associations + * @param integer $id_product_attribute + * @return boolean + */ + public static function _getAttributeImageAssociations($id_product_attribute) + { + $combinationImages = array(); + $data = Db::getInstance()->ExecuteS(' + SELECT `id_image` + FROM `'._DB_PREFIX_.'product_attribute_image` + WHERE `id_product_attribute` = '.(int)($id_product_attribute)); + foreach ($data AS $row) + $combinationImages[] = (int)($row['id_image']); + return $combinationImages; + } + + public static function duplicateAccessories($id_product_old, $id_product_new) + { + $return = true; + + $result = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'accessory` + WHERE `id_product_1` = '.(int)($id_product_old)); + foreach ($result as $row) + { + $data = array( + 'id_product_1' => (int)($id_product_new), + 'id_product_2' => (int)($row['id_product_2'])); + $return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'accessory', $data, 'INSERT'); + } + return $return; + } + + public static function duplicateTags($id_product_old, $id_product_new) + { + $resource = Db::getInstance()->Execute('SELECT `id_tag` FROM `'._DB_PREFIX_.'product_tag` WHERE `id_product` = '.(int)($id_product_old)); + if (!Db::getInstance()->NumRows()) + return true; + $query = 'INSERT INTO `'._DB_PREFIX_.'product_tag` (`id_product`, `id_tag`) VALUES'; + while ($row = Db::getInstance()->nextRow($resource)) + $query .= ' ('.(int)($id_product_new).', '.(int)($row['id_tag']).'),'; + $query = rtrim($query, ','); + return Db::getInstance()->Execute($query); + } + + public static function duplicateDownload($id_product_old, $id_product_new) + { + $resource = Db::getInstance()->Execute('SELECT `display_filename`, `physically_filename`, `date_deposit`, `date_expiration`, `nb_days_accessible`, `nb_downloadable`, `active` FROM `'._DB_PREFIX_.'product_download` WHERE `id_product` = '.(int)($id_product_old)); + if (!Db::getInstance()->NumRows()) + return true; + $query = 'INSERT INTO `'._DB_PREFIX_.'product_download` (`id_product`, `display_filename`, `physically_filename`, `date_deposit`, `date_expiration`, `nb_days_accessible`, `nb_downloadable`, `active`) VALUES'; + while ($row = Db::getInstance()->nextRow($resource)) + $query .= ' ('.(int)($id_product_new).', \''.pSQL($row['display_filename']).'\', \''.pSQL($row['physically_filename']).'\', \''.pSQL($row['date_deposit']).'\', \''.pSQL($row['date_expiration']).'\', '.(int)($row['nb_days_accessible']).', '.(int)($row['nb_downloadable']).', '.(int)($row['active']).'),'; + $query = rtrim($query, ','); + return Db::getInstance()->Execute($query); + } + + /** + * Duplicate features when duplicating a product + * + * @param integer $id_product_old Old product id + * @param integer $id_product_old New product id + */ + public static function duplicateFeatures($id_product_old, $id_product_new) + { + $return = true; + + $result = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'feature_product` + WHERE `id_product` = '.(int)($id_product_old)); + foreach ($result as $row) + { + $result2 = Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'feature_value` + WHERE `id_feature_value` = '.(int)($row['id_feature_value'])); + // Custom feature value, need to duplicate it + if ($result2['custom']) + { + $old_id_feature_value = $result2['id_feature_value']; + unset($result2['id_feature_value']); + $return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'feature_value', $result2, 'INSERT'); + $max_fv = Db::getInstance()->getRow(' + SELECT MAX(`id_feature_value`) AS nb + FROM `'._DB_PREFIX_.'feature_value`'); + $new_id_feature_value = $max_fv['nb']; + $languages = Language::getLanguages(); + foreach ($languages as $language) + { + $result3 = Db::getInstance()->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'feature_value_lang` + WHERE `id_feature_value` = '.(int)($old_id_feature_value).' + AND `id_lang` = '.(int)($language['id_lang'])); + $result3['id_feature_value'] = $new_id_feature_value; + $return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'feature_value_lang', $result3, 'INSERT'); + } + $row['id_feature_value'] = $new_id_feature_value; + } + $row['id_product'] = $id_product_new; + $return &= Db::getInstance()->AutoExecute(_DB_PREFIX_.'feature_product', $row, 'INSERT'); + } + return $return; + } + + static protected function _getCustomizationFieldsNLabels($productId) + { + $customizations = array(); + if (($customizations['fields'] = Db::getInstance()->ExecuteS(' + SELECT `id_customization_field`, `type`, `required` + FROM `'._DB_PREFIX_.'customization_field` + WHERE `id_product` = '.(int)($productId).' + ORDER BY `id_customization_field`')) === false) + return false; + if (empty($customizations['fields'])) + return array(); + $customizationFieldIds = array(); + foreach ($customizations['fields'] AS $customizationField) + $customizationFieldIds[] = (int)($customizationField['id_customization_field']); + if (($customizationLabels = Db::getInstance()->ExecuteS(' + SELECT `id_customization_field`, `id_lang`, `name` + FROM `'._DB_PREFIX_.'customization_field_lang` + WHERE `id_customization_field` IN ('.implode(', ', $customizationFieldIds).') + ORDER BY `id_customization_field`')) === false) + return false; + foreach ($customizationLabels AS $customizationLabel) + $customizations['labels'][$customizationLabel['id_customization_field']][] = $customizationLabel; + return $customizations; + } + + public static function duplicateSpecificPrices($oldProductId, $productId) + { + foreach (SpecificPrice::getIdsByProductId((int)($oldProductId)) as $data) + { + $specificPrice = new SpecificPrice((int)($data['id_specific_price'])); + if (!$specificPrice->duplicate((int)($productId))) + return false; + } + return true; + } + + public static function duplicateCustomizationFields($oldProductId, $productId) + { + if (($customizations = self::_getCustomizationFieldsNLabels($oldProductId)) === false) + return false; + if (empty($customizations)) + return true; + foreach ($customizations['fields'] AS $customizationField) + { + /* The new datas concern the new product */ + $customizationField['id_product'] = (int)($productId); + $oldCustomizationFieldId = (int)($customizationField['id_customization_field']); + unset($customizationField['id_customization_field']); + if (!Db::getInstance()->AutoExecute(_DB_PREFIX_.'customization_field', $customizationField, 'INSERT') OR !$customizationFieldId = Db::getInstance()->Insert_ID()) + return false; + if (isset($customizations['labels'])) + { + $query = 'INSERT INTO `'._DB_PREFIX_.'customization_field_lang` (`id_customization_field`, `id_lang`, `name`) VALUES '; + foreach ($customizations['labels'][$oldCustomizationFieldId] AS $customizationLabel) + $query .= '('.(int)($customizationFieldId).', '.(int)($customizationLabel['id_lang']).', \''.pSQL($customizationLabel['name']).'\'), '; + $query = rtrim($query, ', '); + if (!Db::getInstance()->Execute($query)) + return false; + } + } + return true; + } + + /** + * Get the link of the product page of this product + */ + public function getLink() + { + global $link; + return $link->getProductLink($this); + } + + public function getTags($id_lang) + { + if (!($this->tags AND key_exists($id_lang, $this->tags))) + return ''; + $result = ''; + foreach ($this->tags[$id_lang] AS $tagName) + $result .= $tagName.', '; + return rtrim($result, ', '); + } + + public static function defineProductImage($row, $id_lang) + { + if ($row['id_image']) + return $row['id_product'].'-'.$row['id_image']; + return Language::getIsoById((int)$id_lang).'-default'; + } + + protected static $producPropertiesCache = array(); + + public static function getProductProperties($id_lang, $row) + { + if (!$row['id_product']) + return false; + + // Product::getDefaultAttribute is only called if id_product_attribute is missing from the SQL query at the origin of it: consider adding it in order to avoid unnecessary queries + $row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']); + if ((!isset($row['id_product_attribute']) OR !$row['id_product_attribute']) + AND ((isset($row['cache_default_attribute']) AND ($ipa_default = $row['cache_default_attribute']) !== NULL) + OR ($ipa_default = Product::getDefaultAttribute($row['id_product'], !$row['allow_oosp']))) + ) + $row['id_product_attribute'] = $ipa_default; + if (!isset($row['id_product_attribute'])) + $row['id_product_attribute'] = 0; + + // Tax + $usetax = Tax::excludeTaxeOption(); + + $cacheKey = $row['id_product'].'-'.$row['id_product_attribute'].'-'.$id_lang.'-'.(int)($usetax); + if (array_key_exists($cacheKey, self::$producPropertiesCache)) + return self::$producPropertiesCache[$cacheKey]; + + // Datas + $link = new Link(); + $row['category'] = Category::getLinkRewrite((int)$row['id_category_default'], (int)($id_lang)); + $row['link'] = $link->getProductLink((int)$row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']); + $row['attribute_price'] = (isset($row['id_product_attribute']) AND $row['id_product_attribute']) ? (float)(Product::getProductAttributePrice($row['id_product_attribute'])) : 0; + $row['price_tax_exc'] = Product::getPriceStatic((int)$row['id_product'], false, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? (int)($row['id_product_attribute']) : NULL), (self::$_taxCalculationMethod == PS_TAX_EXC ? 2 : 6)); + if (self::$_taxCalculationMethod == PS_TAX_EXC) + { + $row['price_tax_exc'] = Tools::ps_round($row['price_tax_exc'], 2); + $row['price'] = Product::getPriceStatic((int)$row['id_product'], true, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? (int)($row['id_product_attribute']) : NULL), 6); + } + else + $row['price'] = Tools::ps_round(Product::getPriceStatic((int)$row['id_product'], true, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? (int)($row['id_product_attribute']) : NULL), 6), 2); + + $row['reduction'] = Product::getPriceStatic((int)($row['id_product']), (bool)$usetax, (int)($row['id_product_attribute']), 6, NULL, true, true, 1, true, NULL, NULL, NULL, $specific_prices); + $row['specific_prices'] = $specific_prices; + $row['price_without_reduction'] = Product::getPriceStatic((int)$row['id_product'], true, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? (int)($row['id_product_attribute']) : NULL), 6, NULL, false, false); + if ($row['id_product_attribute']) + { + $row['quantity_all_versions'] = $row['quantity']; + $row['quantity'] = Product::getQuantity((int)$row['id_product'], $row['id_product_attribute'], isset($row['cache_is_pack']) ? $row['cache_is_pack'] : NULL); + } + $row['id_image'] = Product::defineProductImage($row, $id_lang); + $row['features'] = Product::getFrontFeaturesStatic((int)$id_lang, $row['id_product']); + $row['attachments'] = ((!isset($row['cache_has_attachments']) OR $row['cache_has_attachments']) ? Product::getAttachmentsStatic((int)($id_lang), $row['id_product']) : array()); + + // Pack management + $row['pack'] = (!isset($row['cache_is_pack']) ? Pack::isPack($row['id_product']) : (int)$row['cache_is_pack']); + $row['packItems'] = $row['pack'] ? Pack::getItemTable($row['id_product'], $id_lang) : array(); + $row['nopackprice'] = $row['pack'] ? Pack::noPackPrice($row['id_product']) : 0; + if ($row['pack'] AND !Pack::isInStock($row['id_product'])) + $row['quantity'] = 0; + + self::$producPropertiesCache[$cacheKey] = $row; + return self::$producPropertiesCache[$cacheKey]; + } + + public static function getProductsProperties($id_lang, $query_result) + { + $resultsArray = array(); + foreach ($query_result AS $row) + if ($row2 = Product::getProductProperties($id_lang, $row)) + $resultsArray[] = $row2; + return $resultsArray; + } + + /* + * Select all features for a given language + * + * @param $id_lang Language id + * @return array Array with feature's data + */ + public static function getFrontFeaturesStatic($id_lang, $id_product) + { + if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache)) + { + self::$_frontFeaturesCache[$id_product.'-'.$id_lang] = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT name, value, pf.id_feature + FROM '._DB_PREFIX_.'feature_product pf + LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.') + LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.') + WHERE pf.id_product = '.(int)$id_product); + } + return self::$_frontFeaturesCache[$id_product.'-'.$id_lang]; + } + + public function getFrontFeatures($id_lang) + { + return self::getFrontFeaturesStatic($id_lang, $this->id); + } + + public static function getAttachmentsStatic($id_lang, $id_product) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM '._DB_PREFIX_.'product_attachment pa + LEFT JOIN '._DB_PREFIX_.'attachment a ON a.id_attachment = pa.id_attachment + LEFT JOIN '._DB_PREFIX_.'attachment_lang al ON (a.id_attachment = al.id_attachment AND al.id_lang = '.(int)($id_lang).') + WHERE pa.id_product = '.(int)($id_product)); + } + + public function getAttachments($id_lang) + { + return self::getAttachmentsStatic($id_lang, $this->id); + } + + /* + ** Customization management + */ + + public static function getAllCustomizedDatas($id_cart, $id_lang = null) + { + global $cookie; + // No need to query if there isn't any real cart! + if (!$id_cart) + return false; + if (!$id_lang AND !is_null($cookie) AND $cookie->id_lang) + $id_lang = $cookie->id_lang; + else + { + $cart = new Cart((int)($id_cart)); + $id_lang = (int)($cart->id_lang); + } + + if (!$result = Db::getInstance()->ExecuteS(' + SELECT cd.`id_customization`, c.`id_product`, cfl.`id_customization_field`, c.`id_product_attribute`, cd.`type`, cd.`index`, cd.`value`, cfl.`name` + FROM `'._DB_PREFIX_.'customized_data` cd + NATURAL JOIN `'._DB_PREFIX_.'customization` c + LEFT JOIN `'._DB_PREFIX_.'customization_field_lang` cfl ON (cfl.id_customization_field = cd.`index` AND id_lang = '.(int)($id_lang).') + WHERE c.`id_cart` = '.(int)$id_cart.' + ORDER BY `id_product`, `id_product_attribute`, `type`, `index`')) + return false; + $customizedDatas = array(); + foreach ($result AS $row) + $customizedDatas[(int)($row['id_product'])][(int)($row['id_product_attribute'])][(int)($row['id_customization'])]['datas'][(int)($row['type'])][] = $row; + if (!$result = Db::getInstance()->ExecuteS('SELECT `id_product`, `id_product_attribute`, `id_customization`, `quantity`, `quantity_refunded`, `quantity_returned` FROM `'._DB_PREFIX_.'customization` WHERE `id_cart` = '.(int)($id_cart))) + return false; + foreach ($result AS $row) + { + $customizedDatas[(int)($row['id_product'])][(int)($row['id_product_attribute'])][(int)($row['id_customization'])]['quantity'] = (int)($row['quantity']); + $customizedDatas[(int)($row['id_product'])][(int)($row['id_product_attribute'])][(int)($row['id_customization'])]['quantity_refunded'] = (int)($row['quantity_refunded']); + $customizedDatas[(int)($row['id_product'])][(int)($row['id_product_attribute'])][(int)($row['id_customization'])]['quantity_returned'] = (int)($row['quantity_returned']); + } + return $customizedDatas; + } + + + /** + * @param int $id_customization + * @return bool + * @deprecated + */ + public function deleteCustomizedDatas($id_customization) + { + Tools::displayAsDeprecated(); + if (Pack::isPack((int)($product['id_product']))) + { + $products_pack = Pack::getItems((int)($product['id_product']), (int)(Configuration::get('PS_LANG_DEFAULT'))); + foreach($products_pack AS $product_pack) + { + $tab_product_pack['id_product'] = (int)($product_pack->id); + $tab_product_pack['id_product_attribute'] = self::getDefaultAttribute($tab_product_pack['id_product'], 1); + $tab_product_pack['cart_quantity'] = (int)($product_pack->pack_quantity * $product['cart_quantity']); + self::updateQuantity($tab_product_pack); + } + } + if (($result = Db::getInstance()->ExecuteS('SELECT `value` FROM `'._DB_PREFIX_.'customized_data` WHERE `id_customization` = '.(int)($id_customization).' AND `type` = '._CUSTOMIZE_FILE_)) === false) + return false; + foreach ($result AS $row) + if (!@unlink(_PS_UPLOAD_DIR_.$row['value']) OR !@unlink(_PS_UPLOAD_DIR_.$row['value'].'_small')) + return false; + return (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization` WHERE `id_customization` = '.(int)($id_customization)) AND Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customized_data` WHERE `id_customization` = '.(int)($id_customization))); + } + + public static function addCustomizationPrice(&$products, &$customizedDatas) + { + foreach ($products AS &$productUpdate) + { + $customizationQuantity = 0; + $customizationQuantityRefunded = 0; + $customizationQuantityReturned = 0; + /* Compatibility */ + $productId = (int)(isset($productUpdate['id_product']) ? $productUpdate['id_product'] : $productUpdate['product_id']); + $productAttributeId = (int)(isset($productUpdate['id_product_attribute']) ? $productUpdate['id_product_attribute'] : $productUpdate['product_attribute_id']); + $productQuantity = (int)(isset($productUpdate['cart_quantity']) ? $productUpdate['cart_quantity'] : $productUpdate['product_quantity']); + $price = isset($productUpdate['price']) ? $productUpdate['price'] : $productUpdate['product_price']; + $priceWt = $price * (1 + ((isset($productUpdate['tax_rate']) ? $productUpdate['tax_rate'] : $productUpdate['rate']) * 0.01)); + if (isset($customizedDatas[$productId][$productAttributeId])) + foreach ($customizedDatas[$productId][$productAttributeId] AS $customization) + { + $customizationQuantity += (int)($customization['quantity']); + $customizationQuantityRefunded += (int)($customization['quantity_refunded']); + $customizationQuantityReturned += (int)($customization['quantity_returned']); + } + $productUpdate['customizationQuantityTotal'] = $customizationQuantity; + $productUpdate['customizationQuantityRefunded'] = $customizationQuantityRefunded; + $productUpdate['customizationQuantityReturned'] = $customizationQuantityReturned; + if ($customizationQuantity) + { + $productUpdate['total_wt'] = $priceWt * ($productQuantity - $customizationQuantity); + $productUpdate['total_customization_wt'] = $priceWt * $customizationQuantity; + $productUpdate['total'] = $price * ($productQuantity - $customizationQuantity); + $productUpdate['total_customization'] = $price * $customizationQuantity; + } + } + } + + /* + ** Customization fields' label management + */ + + protected function _checkLabelField($field, $value) + { + if (!Validate::isLabel($value)) + return false; + $tmp = explode('_', $field); + if (count($tmp) < 4) + return false; + return $tmp; + } + + protected function _deleteOldLabels() + { + $max = array(_CUSTOMIZE_FILE_ => (int)(Tools::getValue('uploadable_files')), _CUSTOMIZE_TEXTFIELD_ => (int)(Tools::getValue('text_fields'))); + /* Get customization field ids */ + if (($result = Db::getInstance()->ExecuteS('SELECT `id_customization_field`, `type` FROM `'._DB_PREFIX_.'customization_field` WHERE `id_product` = '.(int)($this->id).' ORDER BY `id_customization_field`')) === false) + return false; + if (empty($result)) + return true; + $customizationFields = array(_CUSTOMIZE_FILE_ => array(), _CUSTOMIZE_TEXTFIELD_ => array()); + foreach ($result AS $row) + $customizationFields[(int)($row['type'])][] = (int)($row['id_customization_field']); + $extraFile = count($customizationFields[_CUSTOMIZE_FILE_]) - $max[_CUSTOMIZE_FILE_]; + $extraText = count($customizationFields[_CUSTOMIZE_TEXTFIELD_]) - $max[_CUSTOMIZE_TEXTFIELD_]; + + /* If too much inside the database, deletion */ + if ($extraFile > 0 AND count($customizationFields[_CUSTOMIZE_FILE_]) - $extraFile >= 0 AND + (!Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization_field` WHERE `id_product` = '.(int)($this->id).' AND `type` = '._CUSTOMIZE_FILE_.' AND `id_customization_field` >= '.(int)($customizationFields[_CUSTOMIZE_FILE_][count($customizationFields[_CUSTOMIZE_FILE_]) - $extraFile])) + OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization_field_lang` WHERE `id_customization_field` NOT IN (SELECT `id_customization_field` FROM `'._DB_PREFIX_.'customization_field`)'))) + return false; + + if ($extraText > 0 AND count($customizationFields[_CUSTOMIZE_TEXTFIELD_]) - $extraText >= 0 AND + (!Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization_field` WHERE `id_product` = '.(int)($this->id).' AND `type` = '._CUSTOMIZE_TEXTFIELD_.' AND `id_customization_field` >= '.(int)($customizationFields[_CUSTOMIZE_TEXTFIELD_][count($customizationFields[_CUSTOMIZE_TEXTFIELD_]) - $extraText])) + OR !Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'customization_field_lang` WHERE `id_customization_field` NOT IN (SELECT `id_customization_field` FROM `'._DB_PREFIX_.'customization_field`)'))) + return false; + return true; + } + + protected function _createLabel(&$languages, $type) + { + /* Label insertion */ + if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'customization_field` (`id_product`, `type`, `required`) VALUES ('.(int)($this->id).', '.(int)($type).', 0)') OR !$id_customization_field = (int)(Db::getInstance()->Insert_ID())) + return false; + + /* Multilingual label name creation */ + $values = ''; + foreach ($languages AS $language) + $values .= '('.(int)($id_customization_field).', '.(int)($language['id_lang']).', \'\'), '; + $values = rtrim($values, ', '); + if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'customization_field_lang` (`id_customization_field`, `id_lang`, `name`) VALUES '.$values)) + return false; + return true; + } + + public function createLabels($uploadableFiles, $textFields) + { + $languages = Language::getLanguages(); + if ((int)($uploadableFiles) > 0) + for ($i = 0; $i < (int)($uploadableFiles); $i++) + if (!$this->_createLabel($languages, _CUSTOMIZE_FILE_)) + return false; + if ((int)($textFields) > 0) + for ($i = 0; $i < (int)($textFields); $i++) + if (!$this->_createLabel($languages, _CUSTOMIZE_TEXTFIELD_)) + return false; + return true; + } + + public function updateLabels() + { + $hasRequiredFields = 0; + foreach ($_POST AS $field => $value) + /* Label update */ + if (strncmp($field, 'label_', 6) == 0) + { + if (!$tmp = $this->_checkLabelField($field, $value)) + return false; + /* Multilingual label name update */ + if (!Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'customization_field_lang` + (`id_customization_field`, `id_lang`, `name`) VALUES ('.(int)($tmp[2]).', '.(int)($tmp[3]).', \''.pSQL($value).'\') + ON DUPLICATE KEY UPDATE `name` = \''.pSQL($value).'\'')) + return false; + $isRequired = isset($_POST['require_'.(int)($tmp[1]).'_'.(int)($tmp[2])]) ? 1 : 0; + $hasRequiredFields |= $isRequired; + /* Require option update */ + if (!Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'customization_field` SET `required` = '.(int)($isRequired).' WHERE `id_customization_field` = '.(int)($tmp[2]))) + return false; + } + if ($hasRequiredFields AND !Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'product` SET `customizable` = 2 WHERE `id_product` = '.(int)($this->id))) + return false; + if (!$this->_deleteOldLabels()) + return false; + return true; + } + + public function getCustomizationFields($id_lang = false) + { + if (!$result = Db::getInstance()->ExecuteS(' + SELECT cf.`id_customization_field`, cf.`type`, cf.`required`, cfl.`name`, cfl.`id_lang` + FROM `'._DB_PREFIX_.'customization_field` cf + NATURAL JOIN `'._DB_PREFIX_.'customization_field_lang` cfl + WHERE cf.`id_product` = '.(int)($this->id).($id_lang ? ' AND cfl.`id_lang` = '.(int)($id_lang) : '').' + ORDER BY cf.`id_customization_field`')) + return false; + if ($id_lang) + return $result; + $customizationFields = array(); + foreach ($result AS $row) + $customizationFields[(int)($row['type'])][(int)($row['id_customization_field'])][(int)($row['id_lang'])] = $row; + return $customizationFields; + } + + public function getCustomizationFieldIds() + { + return Db::getInstance()->ExecuteS('SELECT `id_customization_field`, `type` FROM `'._DB_PREFIX_.'customization_field` WHERE `id_product` = '.(int)($this->id)); + } + + public function getRequiredCustomizableFields() + { + return Db::getInstance()->ExecuteS('SELECT `id_customization_field`, `type` FROM `'._DB_PREFIX_.'customization_field` WHERE `id_product` = '.(int)($this->id).' AND `required` = 1'); + } + + public function hasAllRequiredCustomizableFields() + { + global $cookie; + + $fields = array_merge($cookie->getFamily('pictures_'.(int)($this->id)), $cookie->getFamily('textFields_'.(int)($this->id))); + if (($requiredFields = $this->getRequiredCustomizableFields()) === false) + return false; + $prefix = array(_CUSTOMIZE_FILE_ => 'pictures_'.(int)($this->id).'_', _CUSTOMIZE_TEXTFIELD_ => 'textFields_'.(int)($this->id).'_'); + foreach ($requiredFields AS $field) + if (!isset($fields[$prefix[$field['type']].$field['id_customization_field']]) OR empty($fields[$prefix[$field['type']].$field['id_customization_field']])) + return false; + return true; + } + + /** + * Specify if a product is already in database + * + * @param $id_product Product id + * @return boolean + */ + public static function existsInDatabase($id_product) + { + $row = Db::getInstance()->getRow(' + SELECT `id_product` + FROM '._DB_PREFIX_.'product p + WHERE p.`id_product` = '.(int)($id_product)); + + return isset($row['id_product']); + } + + public static function idIsOnCategoryId($id_product, $categories) + { + $sql = 'SELECT id_product FROM `'._DB_PREFIX_.'category_product` WHERE `id_product`='.(int)($id_product).' AND `id_category` IN('; + foreach ($categories AS $category) + $sql .= (int)($category['id_category']).','; + $sql = rtrim($sql, ',').')'; + + if (isset(self::$_incat[md5($sql)])) + return self::$_incat[md5($sql)]; + + if (!Db::getInstance(_PS_USE_SQL_SLAVE_)->Execute($sql)) + return false; + self::$_incat[md5($sql)] = (Db::getInstance(_PS_USE_SQL_SLAVE_)->NumRows() > 0 ? true : false); + return self::$_incat[md5($sql)]; + } + + public function getNoPackPrice() + { + return Pack::noPackPrice($this->id); + } + + public function checkAccess($id_customer) + { + if (!$id_customer) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT ctg.`id_group` + FROM `'._DB_PREFIX_.'category_product` cp + INNER JOIN `'._DB_PREFIX_.'category_group` ctg ON (ctg.`id_category` = cp.`id_category`) + WHERE cp.`id_product` = '.(int)($this->id).' AND ctg.`id_group` = 1'); + } else { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT cg.`id_group` + FROM `'._DB_PREFIX_.'category_product` cp + INNER JOIN `'._DB_PREFIX_.'category_group` ctg ON (ctg.`id_category` = cp.`id_category`) + INNER JOIN `'._DB_PREFIX_.'customer_group` cg ON (cg.`id_group` = ctg.`id_group`) + WHERE cp.`id_product` = '.(int)($this->id).' AND cg.`id_customer` = '.(int)($id_customer)); + } + if ($result AND isset($result['id_group']) AND $result['id_group']) + return true; + return false; + } + + public function addStockMvt($quantity, $id_reason, $id_product_attribute = NULL, $id_order = NULL, $id_employee = NULL) + { + $stockMvt = new StockMvt(); + $stockMvt->id_product = (int)$this->id; + $stockMvt->id_product_attribute = (int)$id_product_attribute; + $stockMvt->id_order = (int)$id_order; + $stockMvt->id_employee = (int)$id_employee; + $stockMvt->quantity = (int)$quantity; + $stockMvt->id_stock_mvt_reason = (int)$id_reason; + return $stockMvt->add(); + } + + public function getStockMvts($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT sm.id_stock_mvt, sm.date_add, sm.quantity, sm.id_order, CONCAT(pl.name, \' \', GROUP_CONCAT(IFNULL(al.name, \'\'), \'\')) product_name, CONCAT(e.lastname, \' \', e.firstname) employee, mrl.name reason + FROM `'._DB_PREFIX_.'stock_mvt` sm + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (sm.id_product = pl.id_product AND pl.id_lang = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'stock_mvt_reason_lang` mrl ON (sm.id_stock_mvt_reason = mrl.id_stock_mvt_reason AND mrl.id_lang = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'employee` e ON (e.id_employee = sm.id_employee) + LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON (pac.id_product_attribute = sm.id_product_attribute) + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (al.id_attribute = pac.id_attribute AND al.id_lang = '.(int)$id_lang.') + WHERE sm.id_product='.(int)$this->id.' + GROUP BY sm.id_stock_mvt'); + } + + public function setWsCategories($values) + { + $ids = array(); + foreach ($values as $value) + $ids[] = $value['id']; + if ($this->deleteCategories()) + { + if ($ids) + { + $sqlValues = ''; + $ids = array_map('intval', $ids); + foreach ($ids as $position => $id) + $sqlValues[] = '('.(int)$id.', '.(int)$this->id.', '.(int)$position.')'; + $result = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'category_product` (`id_category`, `id_product`, `position`) + VALUES '.implode(',', $sqlValues) + ); + return $result; + } + } + return false; + } + + public function getWsCategories() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT `id_category` AS id FROM `'._DB_PREFIX_.'category_product` WHERE `id_product` = '.(int)$this->id); + return $result; + } + + /** + * @deprecated + */ + public function getBasicPrice() + { + Tools::displayAsDeprecated(); + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `price` FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.(int)($this->id)); + } + + public static function getUrlRewriteInformations($id_product) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT pl.`id_lang`, pl.`link_rewrite`, p.`ean13`, cl.`link_rewrite` AS category_rewrite + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'lang` l ON (pl.`id_lang` = l.`id_lang`) + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = p.`id_category_default` AND cl.`id_lang` = pl.`id_lang`) + WHERE p.`id_product` = '.(int)$id_product. ' + AND l.`active` = 1'); + } + + public static function getIdTaxRulesGroupByIdProduct($id_product) + { + if (!isset(self::$_tax_rules_group[$id_product])) + { + $id_group = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `id_tax_rules_group` + FROM `'._DB_PREFIX_.'product` + WHERE `id_product` = '.(int)$id_product); + self::$_tax_rules_group[$id_product] = $id_group; + } + return self::$_tax_rules_group[$id_product]; + } +} + diff --git a/classes/ProductDownload.php b/classes/ProductDownload.php new file mode 100644 index 000000000..eb37d9ac7 --- /dev/null +++ b/classes/ProductDownload.php @@ -0,0 +1,272 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ProductDownloadCore extends ObjectModel +{ + /** @var integer Product id which download belongs */ + public $id_product; + + /** @var string DisplayFilename the name which appear */ + public $display_filename; + + /** @var string PhysicallyFilename the name of the file on hard disk */ + public $physically_filename; + + /** @var string DateDeposit when the file is upload */ + public $date_deposit; + + /** @var string DateExpiration deadline of the file */ + public $date_expiration; + + /** @var string NbDaysAccessible how many days the customer can access to file */ + public $nb_days_accessible; + + /** @var string NbDownloadable how many time the customer can download the file */ + public $nb_downloadable; + + /** @var boolean Active if file is accessible or not */ + public $active = 1; + + protected static $_productIds = array(); + + protected $fieldsRequired = array( + 'id_product', + 'display_filename' + ); + protected $fieldsSize = array( + 'display_filename' => 255, + 'physically_filename' => 255, + 'date_deposit' => 20, + 'date_expiration' => 20, + 'nb_days_accessible' => 10, + 'nb_downloadable' => 10, + 'active' => 1 + ); + protected $fieldsValidate = array( + 'id_product' => 'isUnsignedId', + 'display_filename' => 'isGenericName', + 'physically_filename' => 'isSha1', + 'date_deposit' => 'isDate', + 'date_expiration' => 'isDate', + 'nb_days_accessible' => 'isUnsignedInt', + 'nb_downloadable' => 'isUnsignedInt', + 'active' => 'isUnsignedInt' + ); + + protected $table = 'product_download'; + protected $identifier = 'id_product_download'; + + /** + * Build a virtual product + * + * @param integer $id_product_download Existing productDownload id in order to load object (optional) + */ + public function __construct($id_product_download = NULL) + { + parent::__construct($id_product_download); + // TODO check if the file is present on hard drive + } + + public function delete($deleteFile=false) + { + if ($deleteFile) + $this->deleteFile(); + } + + public function getFields() + { + parent::validateFields(); + + $fields['id_product'] = (int)($this->id_product); + $fields['display_filename'] = pSQL($this->display_filename); + $fields['physically_filename'] = pSQL($this->physically_filename); + $fields['date_deposit'] = pSQL($this->date_deposit); + $fields['date_expiration'] = pSQL($this->date_expiration); + $fields['nb_days_accessible'] = (int)($this->nb_days_accessible); + $fields['nb_downloadable'] = (int)($this->nb_downloadable); + $fields['active'] = (int)($this->active); + return $fields; + } + + + /** + * Delete the file + * + * @return boolean + */ + public function deleteFile() + { + if (!$this->checkFile()) + return false; + return unlink(_PS_DOWNLOAD_DIR_.$this->physically_filename); + } + + /** + * Check if file exists + * + * @return boolean + */ + public function checkFile() + { + if (!$this->physically_filename) return false; + return file_exists(_PS_DOWNLOAD_DIR_.$this->physically_filename); + } + + /** + * Check if download repository is writable + * + * @return boolean + */ + static public function checkWritableDir() + { + return is_writable(_PS_DOWNLOAD_DIR_); + } + + /** + * Return the id_product_download from an id_product + * + * @param int $id_product Product the id + * @return integer Product the id for this virtual product + */ + public static function getIdFromIdProduct($id_product) + { + if (array_key_exists($id_product, self::$_productIds)) + return self::$_productIds[$id_product]; + + $data = Db::getInstance()->getRow(' + SELECT `id_product_download` + FROM `'._DB_PREFIX_.'product_download` + WHERE `id_product` = '.(int)($id_product).' AND `active` = 1'); + + self::$_productIds[$id_product] = isset($data['id_product_download']) ? (int)($data['id_product_download']) : false; + + return self::$_productIds[$id_product]; + } + + /** + * Return the filename from an id_product + * + * @param int $id_product Product the id + * @return string Filename the filename for this virtual product + */ + public static function getFilenameFromIdProduct($id_product) + { + $data = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `physically_filename` + FROM `'._DB_PREFIX_.'product_download` + WHERE `id_product` = '.(int)($id_product).' + AND `active` = 1'); + return $data['physically_filename']; + } + + /** + * Return the display filename from a physical filename + * + * @param string $physically_filename Filename physically + * @return string Filename the display filename for this virtual product + */ + public static function getFilenameFromFilename($physically_filename) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `display_filename` + FROM `'._DB_PREFIX_.'product_download` + WHERE `physically_filename` = \''.pSQL($physically_filename).'\''); + } + + /** + * Return html link + * + * @param string $class CSS selector (optionnal) + * @param bool $admin specific to backend (optionnal) + * @param string $hash hash code in table order detail (optionnal) + * @return string Html all the code for print a link to the file + */ + public function getTextLink($admin=true, $hash=false) + { + $key = $this->physically_filename . '-' . ($hash ? $hash : 'orderdetail'); + $link = ($admin) ? './get-file-admin.php?' : Tools::getHttpHost(true, true).__PS_BASE_URI__.'get-file.php?'; + $link .= ($admin) ? 'file='.$this->physically_filename : 'key='.$key; + return $link; + } + + /** + * Return html link + * + * @param string $class CSS selector (optionnal) + * @param bool $admin specific to backend (optionnal) + * @param string $hash hash code in table order detail (optionnal) + * @return string Html all the code for print a link to the file + */ + public function getHtmlLink($class=false, $admin=true, $hash=false) + { + $link = $this->getTextLink($admin, $hash); + $html = 'display_filename.''; + return $html; + } + + /** + * Return a deadline + * + * @return string Datetime in SQL format + */ + public function getDeadline() + { + if (!(int)($this->nb_days_accessible)) + return '0000-00-00 00:00:00'; + $timestamp = strtotime('+'.(int)($this->nb_days_accessible).' day'); + return date('Y-m-d H:i:s', $timestamp); + } + + /** + * Return a hash for control download access + * + * @return string Hash ready to insert in database + */ + public function getHash() + { + // TODO check if this hash not already in database + return sha1(microtime().$this->id); + } + + /** + * Return a sha1 filename + * + * @return string Sha1 unique filename + */ + static public function getNewFilename() + { + $ret = sha1(microtime()); + if (file_exists(_PS_DOWNLOAD_DIR_.$ret)) + $ret = ProductDownload::getNewFilename(); + return $ret; + } + +} + + diff --git a/classes/ProductSale.php b/classes/ProductSale.php new file mode 100644 index 000000000..ace932319 --- /dev/null +++ b/classes/ProductSale.php @@ -0,0 +1,180 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ProductSaleCore +{ + /* + ** Fill the `product_sale` SQL table with data from `order_detail` + ** @return bool True on success + */ + static public function fillProductSales() + { + return Db::getInstance()->Execute(' + REPLACE INTO '._DB_PREFIX_.'product_sale + (`id_product`, `quantity`, `sale_nbr`, `date_upd`) + SELECT od.product_id, COUNT(od.product_id), SUM(od.product_quantity), NOW() + FROM '._DB_PREFIX_.'order_detail od GROUP BY od.product_id'); + } + + /* + ** Get number of actives products sold + ** @return int number of actives products listed in product_sales + */ + static public function getNbSales() + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(ps.`id_product`) AS nb + FROM `'._DB_PREFIX_.'product_sale` ps + LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ps.`id_product` + WHERE p.`active` = 1'); + return (int)($result['nb']); + } + + /* + ** Get required informations on best sales products + ** + ** @param integer $id_lang Language id + ** @param integer $pageNumber Start from (optional) + ** @param integer $nbProducts Number of products to return (optional) + ** @return array from Product::getProductProperties + */ + static public function getBestSales($id_lang, $pageNumber = 0, $nbProducts = 10, $orderBy=NULL, $orderWay=NULL) + { + if ($pageNumber < 0) $pageNumber = 0; + if ($nbProducts < 1) $nbProducts = 10; + if (empty($orderBy) || $orderBy == 'position') $orderBy = 'sales'; + if (empty($orderWay)) $orderWay = 'DESC'; + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.*, + pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, + i.`id_image`, il.`legend`, + ps.`quantity` AS sales, t.`rate`, pl.`meta_keywords`, pl.`meta_title`, pl.`meta_description`, + DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new + FROM `'._DB_PREFIX_.'product_sale` ps + LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + WHERE p.`active` = 1 + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY '.(isset($orderByPrefix) ? $orderByPrefix.'.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' + LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)($nbProducts)); + + if ($orderBy == 'price') + Tools::orderbyPrice($result,$orderWay); + if (!$result) + return false; + return Product::getProductsProperties($id_lang, $result); + } + + /* + ** Get required informations on best sales products + ** + ** @param integer $id_lang Language id + ** @param integer $pageNumber Start from (optional) + ** @param integer $nbProducts Number of products to return (optional) + ** @return array keys : id_product, link_rewrite, name, id_image, legend, sales, ean13, upc, link + */ + static public function getBestSalesLight($id_lang, $pageNumber = 0, $nbProducts = 10) + { + global $link; + + if ($pageNumber < 0) $pageNumber = 0; + if ($nbProducts < 1) $nbProducts = 10; + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, i.`id_image`, il.`legend`, ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category + FROM `'._DB_PREFIX_.'product_sale` ps + LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = p.`id_category_default` AND cl.`id_lang` = '.(int)$id_lang.') + WHERE p.`active` = 1 + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY sales DESC + LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)($nbProducts)); + if (!$result) + return $result; + + foreach ($result AS &$row) + { + $row['link'] = $link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']); + $row['id_image'] = Product::defineProductImage($row, $id_lang); + } + return $result; + } + + static public function addProductSale($product_id, $qty = 1) + { + return Db::getInstance()->Execute(' + INSERT INTO '._DB_PREFIX_.'product_sale + (`id_product`, `quantity`, `sale_nbr`, `date_upd`) + VALUES ('.(int)($product_id).', '.(int)($qty).', 1, NOW()) + ON DUPLICATE KEY UPDATE `quantity` = `quantity` + '.(int)($qty).', `sale_nbr` = `sale_nbr` + 1, `date_upd` = NOW()'); + } + + static public function getNbrSales($id_product) + { + $result = Db::getInstance()->getRow('SELECT `sale_nbr` FROM '._DB_PREFIX_.'product_sale WHERE `id_product` = '.(int)($id_product)); + if (!$result OR empty($result) OR !key_exists('sale_nbr', $result)) + return -1; + return (int)($result['sale_nbr']); + } + + static public function removeProductSale($id_product, $qty = 1) + { + $nbrSales = self::getNbrSales($id_product); + if ($nbrSales > 1) + return Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product_sale SET `quantity` = `quantity` - '.(int)($qty).', `sale_nbr` = `sale_nbr` - 1, `date_upd` = NOW() WHERE `id_product` = '.(int)($id_product)); + elseif ($nbrSales == 1) + return Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'product_sale WHERE `id_product` = '.(int)($id_product)); + return true; + } +} + diff --git a/classes/Profile.php b/classes/Profile.php new file mode 100644 index 000000000..6aaa414d3 --- /dev/null +++ b/classes/Profile.php @@ -0,0 +1,130 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ProfileCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'profile'; + protected $identifier = 'id_profile'; + + public function getFields() + { + return array('id_profile' => $this->id); + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + /** + * Get all available profiles + * + * @return array Profiles + */ + static public function getProfiles($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.`id_profile`, `name` + FROM `'._DB_PREFIX_.'profile` p + LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (p.`id_profile` = pl.`id_profile` AND `id_lang` = '.(int)($id_lang).') + ORDER BY `name` ASC'); + } + + /** + * Get the current profile name + * + * @return string Profile + */ + static public function getProfile($id_profile, $id_lang = NULL) + { + if ($id_lang == NULL) + $id_lang = Configuration::get('PS_LANG_DEFAULT'); + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name` + FROM `'._DB_PREFIX_.'profile` p + LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (p.`id_profile` = pl.`id_profile`) + WHERE p.`id_profile` = '.(int)($id_profile).' + AND pl.`id_lang` = '.(int)($id_lang)); + } + + + public function add($autodate = true, $nullValues = false) + { + if (parent::add($autodate, true)) + return Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'access (SELECT '.(int)($this->id).', id_tab, 0, 0, 0, 0 FROM '._DB_PREFIX_.'tab)'); + return false; + } + + public function delete() + { + if (parent::delete()) + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'access` WHERE `id_profile` = '.(int)($this->id)); + return false; + } + + public static function getProfileAccess($id_profile, $id_tab) + { + /* Accesses selection */ + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `view`, `add`, `edit`, `delete` + FROM `'._DB_PREFIX_.'access` + WHERE `id_profile` = '.(int)($id_profile).' AND `id_tab` = '.(int)($id_tab)); + } + + public static function getProfileAccesses($id_profile) + { + /* Accesses selection */ + $accesses = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'access` + WHERE `id_profile` = '.(int)($id_profile)); + + $result = array(); + foreach($accesses AS $access) { + /* If it is the first time we meet this tab we prepare it */ + if (!isset($result[$access['id_tab']])) + $result[$access['id_tab']] = array(); + $result[$access['id_tab']] = $access; + } + return $result; + } +} + + diff --git a/classes/QuickAccess.php b/classes/QuickAccess.php new file mode 100644 index 000000000..17f2ba41a --- /dev/null +++ b/classes/QuickAccess.php @@ -0,0 +1,82 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class QuickAccessCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + /** @var string Link */ + public $link; + + /** @var boolean New windows or not */ + public $new_window; + + protected $fieldsRequired = array('link', 'new_window'); + protected $fieldsSize = array('link' => 128); + protected $fieldsValidate = array('link' => 'isUrl', 'new_window' => 'isBool'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'quick_access'; + protected $identifier = 'id_quick_access'; + + public function getFields() + { + parent::validateFields(); + $fields['link'] = pSQL($this->link); + $fields['new_window'] = (int)($this->new_window); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + /** + * Get all available quick_accesses + * + * @return array QuickAccesses + */ + static public function getQuickAccesses($id_lang) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'quick_access` qa + LEFT JOIN `'._DB_PREFIX_.'quick_access_lang` qal ON (qa.`id_quick_access` = qal.`id_quick_access` AND qal.`id_lang` = '.(int)($id_lang).') + ORDER BY `name` ASC'); + } +} + diff --git a/classes/RangePrice.php b/classes/RangePrice.php new file mode 100644 index 000000000..c26d055be --- /dev/null +++ b/classes/RangePrice.php @@ -0,0 +1,69 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class RangePriceCore extends ObjectModel +{ + public $id_carrier; + public $delimiter1; + public $delimiter2; + + protected $fieldsRequired = array('id_carrier', 'delimiter1', 'delimiter2'); + protected $fieldsValidate = array('id_carrier' => 'isInt', 'delimiter1' => 'isFloat', 'delimiter2' => 'isFloat'); + + protected $table = 'range_price'; + protected $identifier = 'id_range_price'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_carrier' => array('xlink_resource' => 'carriers'), + ) + ); + + public function getFields() + { + parent::validateFields(); + $fields['id_carrier'] = (int)($this->id_carrier); + $fields['delimiter1'] = (float)($this->delimiter1); + $fields['delimiter2'] = (float)($this->delimiter2); + return $fields; + } + + /** + * Get all available price ranges + * + * @return array Ranges + */ + public static function getRanges($id_carrier) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'range_price` + WHERE `id_carrier` = '.(int)($id_carrier).' + ORDER BY `delimiter1` ASC'); + } +} + diff --git a/classes/RangeWeight.php b/classes/RangeWeight.php new file mode 100644 index 000000000..60867b49b --- /dev/null +++ b/classes/RangeWeight.php @@ -0,0 +1,69 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class RangeWeightCore extends ObjectModel +{ + public $id_carrier; + public $delimiter1; + public $delimiter2; + + protected $fieldsRequired = array('id_carrier', 'delimiter1', 'delimiter2'); + protected $fieldsValidate = array('id_carrier' => 'isInt', 'delimiter1' => 'isFloat', 'delimiter2' => 'isFloat'); + + protected $table = 'range_weight'; + protected $identifier = 'id_range_weight'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_carrier' => array('xlink_resource' => 'carriers'), + ) + ); + + public function getFields() + { + parent::validateFields(); + $fields['id_carrier'] = (int)($this->id_carrier); + $fields['delimiter1'] = (float)($this->delimiter1); + $fields['delimiter2'] = (float)($this->delimiter2); + return $fields; + } + + /** + * Get all available weight ranges + * + * @return array Ranges + */ + public static function getRanges($id_carrier) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'range_weight` + WHERE `id_carrier` = '.(int)($id_carrier).' + ORDER BY `delimiter1` ASC'); + } +} + diff --git a/classes/Referrer.php b/classes/Referrer.php new file mode 100644 index 000000000..64f66c18e --- /dev/null +++ b/classes/Referrer.php @@ -0,0 +1,315 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ReferrerCore extends ObjectModel +{ + public $name; + public $passwd; + + public $http_referer_regexp; + public $http_referer_like; + public $request_uri_regexp; + public $request_uri_like; + public $http_referer_regexp_not; + public $http_referer_like_not; + public $request_uri_regexp_not; + public $request_uri_like_not; + + public $base_fee; + public $percent_fee; + public $click_fee; + + public $cache_visitors; + public $cache_visits; + public $cache_pages; + public $cache_registrations; + public $cache_orders; + public $cache_sales; + public $cache_reg_rate; + public $cache_order_rate; + + public $date_add; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 64, 'http_referer_regexp' => 64, 'request_uri_regexp' => 64, 'http_referer_like' => 64, 'request_uri_like' => 64, 'passwd' => 32); + protected $fieldsValidate = array( + 'name' => 'isGenericName', 'passwd' => 'isPasswd', + 'http_referer_regexp' => 'isCleanHtml', 'request_uri_regexp' => 'isCleanHtml', 'http_referer_like' => 'isCleanHtml', 'request_uri_like' => 'isCleanHtml', + 'http_referer_regexp_not' => 'isCleanHtml', 'request_uri_regexp_not' => 'isCleanHtml', 'http_referer_like_not' => 'isCleanHtml', 'request_uri_like_not' => 'isCleanHtml', + 'base_fee' => 'isFloat', 'percent_fee' => 'isFloat', 'click_fee' => 'isFloat', + 'cache_visitors' => 'isUnsignedInt', 'cache_visits' => 'isUnsignedInt', 'cache_pages' => 'isUnsignedInt', 'cache_registrations' => 'isUnsignedInt', + 'cache_orders' => 'isUnsignedInt', 'cache_sales' => 'isOptFloat', 'cache_reg_rate' => 'isOptFloat', 'cache_order_rate' => 'isOptFloat'); + + protected $table = 'referrer'; + protected $identifier = 'id_referrer'; + + protected static $_join = '(r.http_referer_like IS NULL OR r.http_referer_like = \'\' OR cs.http_referer LIKE r.http_referer_like) + AND (r.request_uri_like IS NULL OR r.request_uri_like = \'\' OR cs.request_uri LIKE r.request_uri_like) + AND (r.http_referer_like_not IS NULL OR r.http_referer_like_not = \'\' OR cs.http_referer NOT LIKE r.http_referer_like_not) + AND (r.request_uri_like_not IS NULL OR r.request_uri_like_not = \'\' OR cs.request_uri NOT LIKE r.request_uri_like_not) + AND (r.http_referer_regexp IS NULL OR r.http_referer_regexp = \'\' OR cs.http_referer REGEXP r.http_referer_regexp) + AND (r.request_uri_regexp IS NULL OR r.request_uri_regexp = \'\' OR cs.request_uri REGEXP r.request_uri_regexp) + AND (r.http_referer_regexp_not IS NULL OR r.http_referer_regexp_not = \'\' OR cs.http_referer NOT REGEXP r.http_referer_regexp_not) + AND (r.request_uri_regexp_not IS NULL OR r.request_uri_regexp_not = \'\' OR cs.request_uri NOT REGEXP r.request_uri_regexp_not)'; + + public function getFields() + { + parent::validateFields(); + $fields['name'] = pSQL($this->name); + $fields['passwd'] = pSQL($this->passwd); + $fields['http_referer_regexp'] = pSQL($this->http_referer_regexp, true); + $fields['request_uri_regexp'] = pSQL($this->request_uri_regexp, true); + $fields['http_referer_like'] = pSQL($this->http_referer_like, true); + $fields['request_uri_like'] = pSQL($this->request_uri_like, true); + $fields['http_referer_regexp_not'] = pSQL($this->http_referer_regexp_not, true); + $fields['request_uri_regexp_not'] = pSQL($this->request_uri_regexp_not, true); + $fields['http_referer_like_not'] = pSQL($this->http_referer_like_not, true); + $fields['request_uri_like_not'] = pSQL($this->request_uri_like_not, true); + $fields['base_fee'] = number_format($this->base_fee, 2, '.', ''); + $fields['percent_fee'] = number_format($this->percent_fee, 2, '.', ''); + $fields['click_fee'] = number_format($this->click_fee, 2, '.', ''); + $fields['cache_visitors'] = (int)($this->cache_visitors); + $fields['cache_visits'] = (int)($this->cache_visits); + $fields['cache_pages'] = (int)($this->cache_pages); + $fields['cache_registrations'] = (int)($this->cache_registrations); + $fields['cache_orders'] = (int)($this->cache_orders); + $fields['cache_sales'] = number_format($this->cache_sales, 2, '.', ''); + $fields['cache_reg_rate'] = $this->cache_reg_rate > 1 ? 1 : number_format((float)($this->cache_reg_rate), 4, '.', ''); + $fields['cache_order_rate'] = $this->cache_order_rate > 1 ? 1 : number_format((float)($this->cache_order_rate), 4, '.', ''); + $fields['date_add'] = pSQL($this->date_add); + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + if (!($result = parent::add($autodate, $nullValues))) + return false; + $this->refreshCache(array(array('id_referrer' => $this->id))); + $this->refreshIndex(array(array('id_referrer' => $this->id))); + return $result; + } + + public static function cacheNewSource($id_connections_source) + { + Db::getInstance()->Execute(' + INSERT INTO '._DB_PREFIX_.'referrer_cache (id_referrer, id_connections_source) ( + SELECT id_referrer, id_connections_source + FROM '._DB_PREFIX_.'referrer r + LEFT JOIN '._DB_PREFIX_.'connections_source cs ON ('.self::$_join.') + WHERE id_connections_source = '.(int)($id_connections_source).' + )'); + } + + public static function getReferrers($id_customer) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT DISTINCT c.date_add, r.name + FROM '._DB_PREFIX_.'guest g + LEFT JOIN '._DB_PREFIX_.'connections c ON c.id_guest = g.id_guest + LEFT JOIN '._DB_PREFIX_.'connections_source cs ON c.id_connections = cs.id_connections + LEFT JOIN '._DB_PREFIX_.'referrer r ON ('.self::$_join.') + WHERE g.id_customer = '.(int)($id_customer).' + AND r.name IS NOT NULL'); + } + + public function getStatsVisits($id_product = null, $employee = null) + { + list($join, $where) = array('',''); + if ((int)($id_product)) + { + $join = 'LEFT JOIN `'._DB_PREFIX_.'page` p ON cp.`id_page` = p.`id_page` + LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type`'; + $where = 'AND pt.`name` = \'product.php\' + AND p.`id_object` = '.(int)($id_product); + } + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(DISTINCT cs.id_connections_source) AS visits, + COUNT(DISTINCT cs.id_connections) as visitors, + COUNT(DISTINCT c.id_guest) as uniqs, + COUNT(DISTINCT cp.time_start) as pages + FROM '._DB_PREFIX_.'referrer_cache rc + LEFT JOIN '._DB_PREFIX_.'connections_source cs ON rc.id_connections_source = cs.id_connections_source + LEFT JOIN '._DB_PREFIX_.'connections c ON cs.id_connections = c.id_connections + LEFT JOIN '._DB_PREFIX_.'connections_page cp ON cp.id_connections = c.id_connections + '.$join.' + WHERE cs.date_add BETWEEN '.ModuleGraph::getDateBetween($employee).' + AND rc.id_referrer = '.(int)($this->id).' + '.$where); + } + + public function getRegistrations($id_product = null, $employee = null) + { + list($join, $where) = array('',''); + if ((int)($id_product)) + { + $join = 'LEFT JOIN '._DB_PREFIX_.'connections_page cp ON cp.id_connections = c.id_connections + LEFT JOIN `'._DB_PREFIX_.'page` p ON cp.`id_page` = p.`id_page` + LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON pt.`id_page_type` = p.`id_page_type`'; + $where = 'AND pt.`name` = \'product.php\' + AND p.`id_object` = '.(int)($id_product); + } + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(DISTINCT cu.id_customer) AS registrations + FROM '._DB_PREFIX_.'referrer_cache rc + LEFT JOIN '._DB_PREFIX_.'connections_source cs ON rc.id_connections_source = cs.id_connections_source + LEFT JOIN '._DB_PREFIX_.'connections c ON cs.id_connections = c.id_connections + LEFT JOIN '._DB_PREFIX_.'guest g ON g.id_guest = c.id_guest + LEFT JOIN '._DB_PREFIX_.'customer cu ON cu.id_customer = g.id_customer + '.$join.' + WHERE cu.date_add BETWEEN '.ModuleGraph::getDateBetween($employee).' + AND cu.date_add > cs.date_add + AND rc.id_referrer = '.(int)($this->id).' + '.$where); + return $result['registrations']; + } + + public function getStatsSales($id_product = null, $employee = null) + { + list($join, $where) = array('',''); + if ((int)($id_product)) + { + $join = 'LEFT JOIN '._DB_PREFIX_.'order_detail od ON oo.id_order = od.id_order'; + $where = 'AND od.product_id = '.(int)($id_product); + } + + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' + SELECT oo.id_order + FROM '._DB_PREFIX_.'referrer_cache rc + INNER JOIN '._DB_PREFIX_.'connections_source cs ON rc.id_connections_source = cs.id_connections_source + INNER JOIN '._DB_PREFIX_.'connections c ON cs.id_connections = c.id_connections + INNER JOIN '._DB_PREFIX_.'guest g ON g.id_guest = c.id_guest + LEFT JOIN '._DB_PREFIX_.'orders oo ON oo.id_customer = g.id_customer + '.$join.' + WHERE oo.invoice_date BETWEEN '.ModuleGraph::getDateBetween($employee).' + AND oo.date_add > cs.date_add + AND rc.id_referrer = '.(int)($this->id).' + AND oo.valid = 1 + '.$where); + + $implode = array(); + foreach ($result as $row) + if ((int)$row['id_order']) + $implode[] = (int)$row['id_order']; + + if ($implode) + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(o.id_order) AS orders, SUM(o.total_paid_real / o.conversion_rate) AS sales + FROM '._DB_PREFIX_.'orders o + WHERE o.id_order IN ('.implode($implode, ',').') + AND o.valid = 1'); + else + return array('orders' => 0, 'sales' => 0); + } + + public static function refreshCache($referrers = null, $employee = null) + { + if (!$referrers OR !is_array($referrers)) + $referrers = Db::getInstance()->ExecuteS('SELECT id_referrer FROM '._DB_PREFIX_.'referrer'); + foreach ($referrers as $row) + { + $referrer = new Referrer((int)($row['id_referrer'])); + $statsVisits = $referrer->getStatsVisits(null, $employee); + $referrer->cache_visitors = $statsVisits['uniqs']; + $referrer->cache_visits = $statsVisits['visits']; + $referrer->cache_pages = $statsVisits['pages']; + $registrations = $referrer->getRegistrations(null, $employee); + $referrer->cache_registrations = (int)($registrations); + $statsSales = $referrer->getStatsSales(null, $employee); + $referrer->cache_orders = (int)($statsSales['orders']); + $referrer->cache_sales = number_format($statsSales['sales'], 2, '.', ''); + $referrer->cache_reg_rate = $statsVisits['uniqs'] ? (int)($registrations) / $statsVisits['uniqs'] : 0; + $referrer->cache_order_rate = $statsVisits['uniqs'] ? (int)($statsSales['orders']) / $statsVisits['uniqs'] : 0; + if (!$referrer->update()) + Tools::dieObject(mysql_error()); + Configuration::updateValue('PS_REFERRERS_CACHE_LIKE', ModuleGraph::getDateBetween($employee)); + Configuration::updateValue('PS_REFERRERS_CACHE_DATE', date('Y-m-d H:i:s')); + } + return true; + } + + public static function refreshIndex($referrers = null) + { + if (!$referrers OR !is_array($referrers)) + { + Db::getInstance()->Execute('TRUNCATE '._DB_PREFIX_.'referrer_cache'); + Db::getInstance()->Execute(' + INSERT INTO '._DB_PREFIX_.'referrer_cache (id_referrer, id_connections_source) ( + SELECT id_referrer, id_connections_source + FROM '._DB_PREFIX_.'referrer r + LEFT JOIN '._DB_PREFIX_.'connections_source cs ON ('.self::$_join.') + )'); + } + else + foreach ($referrers as $row) + { + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'referrer_cache WHERE id_referrer = '.(int)($row['id_referrer'])); + Db::getInstance()->Execute(' + INSERT INTO '._DB_PREFIX_.'referrer_cache (id_referrer, id_connections_source) ( + SELECT id_referrer, id_connections_source + FROM '._DB_PREFIX_.'referrer r + LEFT JOIN '._DB_PREFIX_.'connections_source cs ON ('.self::$_join.') + WHERE id_referrer = '.(int)($row['id_referrer']).' + )'); + } + } + + public static function getAjaxProduct($id_referrer, $id_product, $employee = null) + { + $product = new Product($id_product, false, Configuration::get('PS_LANG_DEFAULT')); + $currency = Currency::getCurrencyInstance(Configuration::get('PS_CURRENCY_DEFAULT')); + $referrer = new Referrer($id_referrer); + $statsVisits = $referrer->getStatsVisits($id_product, $employee); + $registrations = $referrer->getRegistrations($id_product, $employee); + $statsSales = $referrer->getStatsSales($id_product, $employee); + + // If it's a product and it has no visits nor orders + if ((int)($id_product) AND !$statsVisits['visits'] AND !$statsSales['orders']) + exit; + + $jsonArray = array(); + $jsonArray[] = 'id_product:\''.(int)($product->id).'\''; + $jsonArray[] = 'product_name:\''.addslashes($product->name).'\''; + $jsonArray[] = 'uniqs:\''.(int)($statsVisits['uniqs']).'\''; + $jsonArray[] = 'visitors:\''.(int)($statsVisits['visitors']).'\''; + $jsonArray[] = 'visits:\''.(int)($statsVisits['visits']).'\''; + $jsonArray[] = 'pages:\''.(int)($statsVisits['pages']).'\''; + $jsonArray[] = 'registrations:\''.(int)($registrations).'\''; + $jsonArray[] = 'orders:\''.(int)($statsSales['orders']).'\''; + $jsonArray[] = 'sales:\''.Tools::displayPrice($statsSales['sales'], $currency).'\''; + $jsonArray[] = 'cart:\''.Tools::displayPrice(((int)($statsSales['orders']) ? $statsSales['sales'] / (int)($statsSales['orders']) : 0), $currency).'\''; + $jsonArray[] = 'reg_rate:\''.number_format((int)($statsVisits['uniqs']) ? (int)($registrations) / (int)($statsVisits['uniqs']) : 0, 4, '.', '').'\''; + $jsonArray[] = 'order_rate:\''.number_format((int)($statsVisits['uniqs']) ? (int)($statsSales['orders']) / (int)($statsVisits['uniqs']) : 0, 4, '.', '').'\''; + $jsonArray[] = 'click_fee:\''.Tools::displayPrice((int)($statsVisits['visits']) * $referrer->click_fee, $currency).'\''; + $jsonArray[] = 'base_fee:\''.Tools::displayPrice($statsSales['orders'] * $referrer->base_fee, $currency).'\''; + $jsonArray[] = 'percent_fee:\''.Tools::displayPrice($statsSales['sales'] * $referrer->percent_fee / 100, $currency).'\''; + die ('[{'.implode(',', $jsonArray).'}]'); + } +} + + diff --git a/classes/Rijndael.php b/classes/Rijndael.php new file mode 100644 index 000000000..90ddc9e69 --- /dev/null +++ b/classes/Rijndael.php @@ -0,0 +1,50 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class RijndaelCore +{ + protected $_key; + protected $_iv; + + public function __construct($key, $iv) + { + $this->_key = $key; + $this->_iv = base64_decode($iv); + } + + // Base64 is not required, but it is be more compact than urlencode + public function encrypt($plaintext) + { + return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->_key, $plaintext, MCRYPT_MODE_ECB, $this->_iv)); + } + + public function decrypt($ciphertext) + { + return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->_key, base64_decode($ciphertext), MCRYPT_MODE_ECB, $this->_iv); + } +} + diff --git a/classes/Scene.php b/classes/Scene.php new file mode 100644 index 000000000..69032f799 --- /dev/null +++ b/classes/Scene.php @@ -0,0 +1,243 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SceneCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + /** @var boolean Active Scene */ + public $active = true; + + /** @var array Products */ + public $products; + + protected $table = 'scene'; + protected $identifier = 'id_scene'; + + protected $fieldsRequired = array('active'); + protected $fieldsValidate = array('active' => 'isBool'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 100); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + public function __construct($id = NULL, $id_lang = NULL, $liteResult = true, $hideScenePosition = false) + { + parent::__construct((int)($id), (int)($id_lang)); + + if (!$liteResult) + $this->products = $this->getProducts(true, (int)($id_lang), false); + if ($hideScenePosition) + $this->name = Scene::hideScenePosition($this->name); + } + + public function getFields() + { + parent::validateFields(); + $fields['active'] = (int)($this->active); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + public function update($nullValues = false) + { + if (!$this->updateZoneProducts()) + return false; + if (!$this->updateCategories()) + return false; + return parent::update($nullValues); + } + + public function add($autodate = true, $nullValues = false) + { + $zones = Tools::getValue('zones'); + if ($zones) + $this->addZoneProducts($zones); + $categories = Tools::getValue('categoryBox'); + if ($categories) + $this->addCategories($categories); + + return parent::add($autodate, $nullValues); + } + + public function delete() + { + $this->deleteZoneProducts(); + $this->deleteCategories(); + return parent::delete(); + } + + public function addCategories($categories) + { + $result = true; + foreach ($categories AS $category) + { + if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'scene_category` ( `id_scene` , `id_category`) VALUES ('.(int)($this->id).', '.(int)($category).')')) + $result = false; + } + return $result; + } + + public function deleteCategories() + { + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'scene_category` + WHERE `id_scene` = '.(int)($this->id)); + } + + public function updateCategories() + { + + if (!$this->deleteCategories()) + return false; + $categories = Tools::getValue('categoryBox'); + if ($categories AND !$this->addCategories($categories)) + return false; + return true; + } + + public function addZoneProducts($zones) + { + $result = true; + foreach ($zones AS $zone) + { + $sql = 'INSERT INTO `'._DB_PREFIX_.'scene_products` ( `id_scene` , `id_product` , `x_axis` , `y_axis` , `zone_width` , `zone_height`) VALUES + ('.(int)($this->id).', '.(int)($zone['id_product']).', '.(int)($zone['x1']).', '.(int)($zone['y1']).', '.(int)($zone['width']).', '.(int)($zone['height']).')'; + if (!Db::getInstance()->Execute($sql)) + $result = false; + } + return $result; + } + + public function deleteZoneProducts() + { + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'scene_products` + WHERE `id_scene` = '.(int)($this->id)); + } + + public function updateZoneProducts() + { + if (!$this->deleteZoneProducts()) + return false; + $zones = Tools::getValue('zones'); + if ($zones AND !$this->addZoneProducts($zones)) + return false; + return true; + } + + /** + * Get all scenes of a category + * + * @return array Products + */ + static public function getScenes($id_category, $id_lang = NULL, $onlyActive = true, $liteResult = true, $hideScenePosition = true) + { + $id_lang = is_null($id_lang) ? _USER_ID_LANG_ : (int)($id_lang); + + $scenes = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT s.* + FROM `'._DB_PREFIX_.'scene_category` sc + LEFT JOIN `'._DB_PREFIX_.'scene` s ON (sc.id_scene = s.id_scene) + LEFT JOIN `'._DB_PREFIX_.'scene_lang` sl ON (sl.id_scene = s.id_scene) + WHERE sc.id_category = '.(int)($id_category).' AND sl.id_lang = '.(int)($id_lang).($onlyActive ? ' AND s.active = 1' : '').' + ORDER BY sl.name ASC'); + + if (!$liteResult AND $scenes) + foreach($scenes AS &$scene) + $scene = new Scene((int)($scene['id_scene']), (int)($id_lang), false, $hideScenePosition); + return $scenes; + } + + /** + * Get all products of this scene + * + * @return array Products + */ + public function getProducts($onlyActive = true, $id_lang = NULL, $liteResult = true) + { + global $link; + + $id_lang = is_null($id_lang) ? _USER_ID_LANG_ : (int)($id_lang); + + $products = Db::getInstance()->ExecuteS(' + SELECT s.* + FROM `'._DB_PREFIX_.'scene_products` s + LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = s.id_product) + WHERE s.id_scene = '.(int)($this->id).($onlyActive ? ' AND p.active = 1' : '')); + + if (!$liteResult AND $products) + foreach ($products AS &$product) + { + $product['details'] = new Product((int)($product['id_product']), !$liteResult, (int)($id_lang)); + $product['link'] = $link->getProductLink((int)($product['details']->id), $product['details']->link_rewrite, $product['details']->category, $product['details']->ean13); + $cover = Product::getCover((int)($product['details']->id)); + if(is_array($cover)) + $product = array_merge($cover, $product); + } + + return $products; + } + + /** + * Get categories where scene is indexed + * + * @param integer $id_scene Scene id + * @return array Categories where scene is indexed + */ + static public function getIndexedCategories($id_scene) + { + return Db::getInstance()->ExecuteS(' + SELECT `id_category` + FROM `'._DB_PREFIX_.'scene_category` + WHERE `id_scene` = '.(int)($id_scene)); + } + + /** + * Hide scene prefix used for position + * + * @param string $name Scene name + * @return string Name without position + */ + static public function hideScenePosition($name) + { + return preg_replace('/^[0-9]+\./', '', $name); + } + +} + + diff --git a/classes/Search.php b/classes/Search.php new file mode 100644 index 000000000..da9431b95 --- /dev/null +++ b/classes/Search.php @@ -0,0 +1,474 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('PS_SEARCH_MAX_WORD_LENGTH', 15); + +/* Copied from Drupal search module, except for \x{0}-\x{2f} that has been replaced by \x{0}-\x{2c}\x{2e}-\x{2f} in order to keep the char '-' */ +define('PREG_CLASS_SEARCH_EXCLUDE', +'\x{0}-\x{2c}\x{2e}-\x{2f}\x{3a}-\x{40}\x{5b}-\x{60}\x{7b}-\x{bf}\x{d7}\x{f7}\x{2b0}-'. +'\x{385}\x{387}\x{3f6}\x{482}-\x{489}\x{559}-\x{55f}\x{589}-\x{5c7}\x{5f3}-'. +'\x{61f}\x{640}\x{64b}-\x{65e}\x{66a}-\x{66d}\x{670}\x{6d4}\x{6d6}-\x{6ed}'. +'\x{6fd}\x{6fe}\x{700}-\x{70f}\x{711}\x{730}-\x{74a}\x{7a6}-\x{7b0}\x{901}-'. +'\x{903}\x{93c}\x{93e}-\x{94d}\x{951}-\x{954}\x{962}-\x{965}\x{970}\x{981}-'. +'\x{983}\x{9bc}\x{9be}-\x{9cd}\x{9d7}\x{9e2}\x{9e3}\x{9f2}-\x{a03}\x{a3c}-'. +'\x{a4d}\x{a70}\x{a71}\x{a81}-\x{a83}\x{abc}\x{abe}-\x{acd}\x{ae2}\x{ae3}'. +'\x{af1}-\x{b03}\x{b3c}\x{b3e}-\x{b57}\x{b70}\x{b82}\x{bbe}-\x{bd7}\x{bf0}-'. +'\x{c03}\x{c3e}-\x{c56}\x{c82}\x{c83}\x{cbc}\x{cbe}-\x{cd6}\x{d02}\x{d03}'. +'\x{d3e}-\x{d57}\x{d82}\x{d83}\x{dca}-\x{df4}\x{e31}\x{e34}-\x{e3f}\x{e46}-'. +'\x{e4f}\x{e5a}\x{e5b}\x{eb1}\x{eb4}-\x{ebc}\x{ec6}-\x{ecd}\x{f01}-\x{f1f}'. +'\x{f2a}-\x{f3f}\x{f71}-\x{f87}\x{f90}-\x{fd1}\x{102c}-\x{1039}\x{104a}-'. +'\x{104f}\x{1056}-\x{1059}\x{10fb}\x{10fc}\x{135f}-\x{137c}\x{1390}-\x{1399}'. +'\x{166d}\x{166e}\x{1680}\x{169b}\x{169c}\x{16eb}-\x{16f0}\x{1712}-\x{1714}'. +'\x{1732}-\x{1736}\x{1752}\x{1753}\x{1772}\x{1773}\x{17b4}-\x{17db}\x{17dd}'. +'\x{17f0}-\x{180e}\x{1843}\x{18a9}\x{1920}-\x{1945}\x{19b0}-\x{19c0}\x{19c8}'. +'\x{19c9}\x{19de}-\x{19ff}\x{1a17}-\x{1a1f}\x{1d2c}-\x{1d61}\x{1d78}\x{1d9b}-'. +'\x{1dc3}\x{1fbd}\x{1fbf}-\x{1fc1}\x{1fcd}-\x{1fcf}\x{1fdd}-\x{1fdf}\x{1fed}-'. +'\x{1fef}\x{1ffd}-\x{2070}\x{2074}-\x{207e}\x{2080}-\x{2101}\x{2103}-\x{2106}'. +'\x{2108}\x{2109}\x{2114}\x{2116}-\x{2118}\x{211e}-\x{2123}\x{2125}\x{2127}'. +'\x{2129}\x{212e}\x{2132}\x{213a}\x{213b}\x{2140}-\x{2144}\x{214a}-\x{2b13}'. +'\x{2ce5}-\x{2cff}\x{2d6f}\x{2e00}-\x{3005}\x{3007}-\x{303b}\x{303d}-\x{303f}'. +'\x{3099}-\x{309e}\x{30a0}\x{30fb}\x{30fd}\x{30fe}\x{3190}-\x{319f}\x{31c0}-'. +'\x{31cf}\x{3200}-\x{33ff}\x{4dc0}-\x{4dff}\x{a015}\x{a490}-\x{a716}\x{a802}'. +'\x{a806}\x{a80b}\x{a823}-\x{a82b}\x{d800}-\x{f8ff}\x{fb1e}\x{fb29}\x{fd3e}'. +'\x{fd3f}\x{fdfc}-\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}'. +'\x{ff5b}-\x{ff65}\x{ff70}\x{ff9e}\x{ff9f}\x{ffe0}-\x{fffd}'); + +define('PREG_CLASS_NUMBERS', +'\x{30}-\x{39}\x{b2}\x{b3}\x{b9}\x{bc}-\x{be}\x{660}-\x{669}\x{6f0}-\x{6f9}'. +'\x{966}-\x{96f}\x{9e6}-\x{9ef}\x{9f4}-\x{9f9}\x{a66}-\x{a6f}\x{ae6}-\x{aef}'. +'\x{b66}-\x{b6f}\x{be7}-\x{bf2}\x{c66}-\x{c6f}\x{ce6}-\x{cef}\x{d66}-\x{d6f}'. +'\x{e50}-\x{e59}\x{ed0}-\x{ed9}\x{f20}-\x{f33}\x{1040}-\x{1049}\x{1369}-'. +'\x{137c}\x{16ee}-\x{16f0}\x{17e0}-\x{17e9}\x{17f0}-\x{17f9}\x{1810}-\x{1819}'. +'\x{1946}-\x{194f}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2153}-\x{2183}'. +'\x{2460}-\x{249b}\x{24ea}-\x{24ff}\x{2776}-\x{2793}\x{3007}\x{3021}-\x{3029}'. +'\x{3038}-\x{303a}\x{3192}-\x{3195}\x{3220}-\x{3229}\x{3251}-\x{325f}\x{3280}-'. +'\x{3289}\x{32b1}-\x{32bf}\x{ff10}-\x{ff19}'); + +define('PREG_CLASS_PUNCTUATION', +'\x{21}-\x{23}\x{25}-\x{2a}\x{2c}-\x{2f}\x{3a}\x{3b}\x{3f}\x{40}\x{5b}-\x{5d}'. +'\x{5f}\x{7b}\x{7d}\x{a1}\x{ab}\x{b7}\x{bb}\x{bf}\x{37e}\x{387}\x{55a}-\x{55f}'. +'\x{589}\x{58a}\x{5be}\x{5c0}\x{5c3}\x{5f3}\x{5f4}\x{60c}\x{60d}\x{61b}\x{61f}'. +'\x{66a}-\x{66d}\x{6d4}\x{700}-\x{70d}\x{964}\x{965}\x{970}\x{df4}\x{e4f}'. +'\x{e5a}\x{e5b}\x{f04}-\x{f12}\x{f3a}-\x{f3d}\x{f85}\x{104a}-\x{104f}\x{10fb}'. +'\x{1361}-\x{1368}\x{166d}\x{166e}\x{169b}\x{169c}\x{16eb}-\x{16ed}\x{1735}'. +'\x{1736}\x{17d4}-\x{17d6}\x{17d8}-\x{17da}\x{1800}-\x{180a}\x{1944}\x{1945}'. +'\x{2010}-\x{2027}\x{2030}-\x{2043}\x{2045}-\x{2051}\x{2053}\x{2054}\x{2057}'. +'\x{207d}\x{207e}\x{208d}\x{208e}\x{2329}\x{232a}\x{23b4}-\x{23b6}\x{2768}-'. +'\x{2775}\x{27e6}-\x{27eb}\x{2983}-\x{2998}\x{29d8}-\x{29db}\x{29fc}\x{29fd}'. +'\x{3001}-\x{3003}\x{3008}-\x{3011}\x{3014}-\x{301f}\x{3030}\x{303d}\x{30a0}'. +'\x{30fb}\x{fd3e}\x{fd3f}\x{fe30}-\x{fe52}\x{fe54}-\x{fe61}\x{fe63}\x{fe68}'. +'\x{fe6a}\x{fe6b}\x{ff01}-\x{ff03}\x{ff05}-\x{ff0a}\x{ff0c}-\x{ff0f}\x{ff1a}'. +'\x{ff1b}\x{ff1f}\x{ff20}\x{ff3b}-\x{ff3d}\x{ff3f}\x{ff5b}\x{ff5d}\x{ff5f}-'. +'\x{ff65}'); + +/** + * Matches all CJK characters that are candidates for auto-splitting + * (Chinese, Japanese, Korean). + * Contains kana and BMP ideographs. + */ +define('PREG_CLASS_CJK', '\x{3041}-\x{30ff}\x{31f0}-\x{31ff}\x{3400}-\x{4db5}'. +'\x{4e00}-\x{9fbb}\x{f900}-\x{fad9}'); + +class SearchCore +{ + public static function sanitize($string, $id_lang, $indexation = false) + { + $string = Tools::strtolower(strip_tags($string)); + $string = html_entity_decode($string, ENT_NOQUOTES, 'utf-8'); + + $string = preg_replace('/(['.PREG_CLASS_NUMBERS.']+)['.PREG_CLASS_PUNCTUATION.']+(?=['.PREG_CLASS_NUMBERS.'])/u', '\1', $string); + $string = preg_replace('/['.PREG_CLASS_SEARCH_EXCLUDE.']+/u', ' ', $string); + + if ($indexation) + $string = preg_replace('/[._-]+/', '', $string); + else + { + $string = preg_replace('/[._]+/', '', $string); + $string = ltrim(preg_replace('/([^ ])-/', '$1', ' '.$string)); + $string = preg_replace('/[._]+/', '', $string); + $string = preg_replace('/[^\s]-+/', '', $string); + } + + $blacklist = Configuration::get('PS_SEARCH_BLACKLIST', $id_lang); + if (!empty($blacklist)) + { + $string = preg_replace('/(?<=\s)('.$blacklist.')(?=\s)/Su', '', $string); + $string = preg_replace('/^('.$blacklist.')(?=\s)/Su', '', $string); + $string = preg_replace('/(?<=\s)('.$blacklist.')$/Su', '', $string); + $string = preg_replace('/^('.$blacklist.')$/Su', '', $string); + } + + if (!$indexation) + { + $alias = new Alias(NULL, $string); + if (Validate::isLoadedObject($alias)) + $string = $alias->search; + } + + if ($indexation) + { + $minWordLen = (int)Configuration::get('PS_SEARCH_MINWORDLEN'); + if ($minWordLen > 1) + { + $minWordLen -= 1; + $string = preg_replace('/(?<=\s)[^\s]{1,'.$minWordLen.'}(?=\s)/Su', ' ', $string); + $string = preg_replace('/^[^\s]{1,'.$minWordLen.'}(?=\s)/Su', '', $string); + $string = preg_replace('/(?<=\s)[^\s]{1,'.$minWordLen.'}$/Su', '', $string); + $string = preg_replace('/^[^\s]{1,'.$minWordLen.'}$/Su', '', $string); + } + } + + $string = trim(preg_replace('/\s+/', ' ', $string)); + return $string; + } + + public static function find($id_lang, $expr, $pageNumber = 1, $pageSize = 1, $orderBy = 'position', $orderWay = 'desc', $ajax = false) + { + global $cookie; + $db = Db::getInstance(_PS_USE_SQL_SLAVE_); + + // TODO : smart page management + if ($pageNumber < 1) $pageNumber = 1; + if ($pageSize < 1) $pageSize = 1; + + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die(Tools::displayError()); + + $whereArray = array(); + $scoreArray = array(); + $words = explode(' ', Search::sanitize($expr, $id_lang)); + + foreach ($words AS $key => $word) + if (!empty($word) AND strlen($word) >= (int)Configuration::get('PS_SEARCH_MINWORDLEN')) + { + $word = str_replace('%', '\\%', $word); + $word = str_replace('_', '\\_', $word); + $whereArray[] = ' p.id_product '.($word[0] == '-' ? 'NOT' : '').' IN ( + SELECT id_product + FROM '._DB_PREFIX_.'search_word sw + LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word + WHERE sw.id_lang = '.(int)$id_lang.' + AND sw.word LIKE '.($word[0] == '-' ? ' \''.pSQL(Tools::substr($word, 1, PS_SEARCH_MAX_WORD_LENGTH)).'%\'' : '\''.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).'%\'').' + ) '; + if ($word[0] != '-') + $scoreArray[] = 'sw.word LIKE \''.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).'%\''; + } + else + unset($words[$key]); + + if (!sizeof($words)) + return ($ajax ? array() : array('total' => 0, 'result' => array())); + + $score = ''; + if (sizeof($scoreArray)) + $score = ',( + SELECT SUM(weight) + FROM '._DB_PREFIX_.'search_word sw + LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word + WHERE sw.id_lang = '.(int)$id_lang.' + AND si.id_product = p.id_product + AND ('.implode(' OR ', $scoreArray).') + ) position'; + + $eligibleProducts = $db->ExecuteS(' + SELECT DISTINCT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + INNER JOIN `'._DB_PREFIX_.'category_product` cp ON cp.`id_category` = cg.`id_category` + INNER JOIN `'._DB_PREFIX_.'category` c ON cp.`id_category` = c.`id_category` + INNER JOIN `'._DB_PREFIX_.'product` p ON cp.`id_product` = p.`id_product` + WHERE c.`active` = 1 AND p.`active` = 1 + AND cg.`id_group` '.(!$cookie->id_customer ? '= 1' : 'IN ( + SELECT id_group FROM '._DB_PREFIX_.'customer_group + WHERE id_customer = '.(int)$cookie->id_customer.' + )').' + AND '.implode(' AND ', $whereArray)); + + $productPool = ''; + foreach ($eligibleProducts AS $product) + if (!empty($product['id_product'])) + $productPool .= (int)$product['id_product'].','; + if (empty($productPool)) + return ($ajax ? array() : array('total' => 0, 'result' => array())); + $productPool = ((strpos($productPool, ',') === false) ? (' = '.(int)$productPool.' ') : (' IN ('.rtrim($productPool, ',').') ')); + + if ($ajax) + { + if (!$result = $db->ExecuteS(' + SELECT DISTINCT p.id_product, pl.name pname, cl.name cname, + cl.link_rewrite crewrite, pl.link_rewrite prewrite '.$score.' + FROM '._DB_PREFIX_.'product p + INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') + INNER JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.') + WHERE p.`id_product` '.$productPool.' + ORDER BY position DESC LIMIT 10')) + return false; + + return $result; + } + + $queryResults = ' + SELECT SQL_CALC_FOUND_ROWS p.*, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`name`, pa.`id_product_attribute`, + tax.`rate`, i.`id_image`, il.`legend`, m.`name` manufacturer_name '.$score.', DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 new + FROM '._DB_PREFIX_.'product p + INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` tax ON (tax.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') + WHERE p.`id_product` '.$productPool.' + '.($orderBy ? 'ORDER BY '.$orderBy : '').($orderWay ? ' '.$orderWay : '').' + LIMIT '.(int)(($pageNumber - 1) * $pageSize).','.(int)$pageSize; + + $result = $db->ExecuteS($queryResults); + $total = $db->getValue('SELECT COUNT(*) + FROM '._DB_PREFIX_.'product p + INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` tax ON (tax.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND default_on = 1) + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') + WHERE p.`id_product` '.$productPool); + + if (!$result) + $resultProperties = false; + else + $resultProperties = Product::getProductsProperties($id_lang, $result); + + return array('total' => $total,'result' => $resultProperties); + } + + public static function getTags($db, $id_product, $id_lang) + { + $tags = ''; + $tagsArray = $db->ExecuteS(' + SELECT t.name FROM '._DB_PREFIX_.'product_tag pt + LEFT JOIN '._DB_PREFIX_.'tag t ON (pt.id_tag = t.id_tag AND t.id_lang = '.(int)$id_lang.') + WHERE pt.id_product = '.(int)$id_product); + foreach ($tagsArray AS $tag) + $tags .= $tag['name'].' '; + return $tags; + } + + public static function getAttributes($db, $id_product, $id_lang) + { + $attributes = ''; + $attributesArray = $db->ExecuteS(' + SELECT al.name FROM '._DB_PREFIX_.'product_attribute pa + INNER JOIN '._DB_PREFIX_.'product_attribute_combination pac ON pa.id_product_attribute = pac.id_product_attribute + INNER JOIN '._DB_PREFIX_.'attribute_lang al ON (pac.id_attribute = al.id_attribute AND al.id_lang = '.(int)$id_lang.') + WHERE pa.id_product = '.(int)$id_product); + foreach ($attributesArray AS $attribute) + $attributes .= $attribute['name'].' '; + return $attributes; + } + + public static function getFeatures($db, $id_product, $id_lang) + { + $features = ''; + $featuresArray = $db->ExecuteS(' + SELECT fvl.value FROM '._DB_PREFIX_.'feature_product fp + LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fp.id_feature_value = fvl.id_feature_value AND fvl.id_lang = '.(int)$id_lang.') + WHERE fp.id_product = '.(int)$id_product); + foreach ($featuresArray AS $feature) + $features .= $feature['value'].' '; + return $features; + } + + public static function indexation($full = false) + { + $db = Db::getInstance(); + + if ($full) + { + $db->Execute('TRUNCATE '._DB_PREFIX_.'search_index'); + $db->Execute('TRUNCATE '._DB_PREFIX_.'search_word'); + $db->Execute('UPDATE '._DB_PREFIX_.'product SET indexed = 0'); + } + else + { + $products = $db->ExecuteS('SELECT id_product FROM '._DB_PREFIX_.'product WHERE indexed = 0'); + + $ids = array(); + if ($products) + foreach($products AS $product) + $ids[] = (int)$product['id_product']; + if (sizeof($ids)) + $db->Execute('DELETE FROM '._DB_PREFIX_.'search_index WHERE id_product IN ('.implode(',', $ids).')'); + } + + $weightArray = array( + 'pname' => Configuration::get('PS_SEARCH_WEIGHT_PNAME'), + 'reference' => Configuration::get('PS_SEARCH_WEIGHT_REF'), + 'ean13' => Configuration::get('PS_SEARCH_WEIGHT_REF'), + 'upc' => Configuration::get('PS_SEARCH_WEIGHT_REF'), + 'description_short' => Configuration::get('PS_SEARCH_WEIGHT_SHORTDESC'), + 'description' => Configuration::get('PS_SEARCH_WEIGHT_DESC'), + 'cname' => Configuration::get('PS_SEARCH_WEIGHT_CNAME'), + 'mname' => Configuration::get('PS_SEARCH_WEIGHT_MNAME'), + 'tags' => Configuration::get('PS_SEARCH_WEIGHT_TAG'), + 'attributes' => Configuration::get('PS_SEARCH_WEIGHT_ATTRIBUTE'), + 'features' => Configuration::get('PS_SEARCH_WEIGHT_FEATURE') + ); + + $products = $db->ExecuteS(' + SELECT p.id_product, pl.id_lang, pl.name pname, p.reference, p.ean13, p.upc, pl.description_short, pl.description, cl.name cname, m.name mname + FROM '._DB_PREFIX_.'product p + LEFT JOIN '._DB_PREFIX_.'product_lang pl ON p.id_product = pl.id_product + LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = p.id_category_default AND pl.id_lang = cl.id_lang) + LEFT JOIN '._DB_PREFIX_.'manufacturer m ON m.id_manufacturer = p.id_manufacturer + WHERE p.indexed = 0', false); + + $countWords = 0; + $countProducts = 0; + $queryArray = array(); + $queryArray2 = array(); + $productsArray = array(); + while ($product = $db->nextRow($products)) + { + $product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']); + $product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']); + $product['features'] = Search::getFeatures($db, (int)$product['id_product'], (int)$product['id_lang']); + + $pArray = array(); + foreach ($product AS $key => $value) + if (strncmp($key, 'id_', 3)) + { + $words = explode(' ', Search::sanitize($value, (int)$product['id_lang'], true)); + foreach ($words AS $word) + if (!empty($word)) + { + $word = Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH); + if (!isset($pArray[$word])) + $pArray[$word] = $weightArray[$key]; + else + $pArray[$word] += $weightArray[$key]; + } + } + + foreach ($pArray AS $word => $weight) + { + if (!$weight) + continue; + $queryArray[] = '('.(int)$product['id_lang'].',\''.pSQL($word).'\')'; + $queryArray2[] = '('.(int)$product['id_product'].',(SELECT id_word FROM '._DB_PREFIX_.'search_word WHERE word = \''.pSQL($word).'\' AND id_lang = '.(int)$product['id_lang'].' LIMIT 1),'.(int)$weight.')'; + + // Force save every 40 words in order to avoid overloading MySQL + if (++$countWords % 40 == 0) + Search::saveIndex($queryArray, $queryArray2); + } + + if (!in_array($product['id_product'], $productsArray)) + $productsArray[] = (int)$product['id_product']; + + // Force save every 20 products in order to avoid overloading MySQL + if (++$countProducts % 20 == 0) // If you change "20" here, you must change the limit in setProductsAsIndexed() + { + Search::setProductsAsIndexed($productsArray); + $productsArray = array(); + } + } + // One last save is done at the end in order to save what's left + Search::saveIndex($queryArray, $queryArray2); + Search::setProductsAsIndexed($productsArray); + + $db->Execute('DELETE FROM '._DB_PREFIX_.'search_word WHERE id_word NOT IN (SELECT id_word FROM '._DB_PREFIX_.'search_index)'); + return true; + } + + protected static function setProductsAsIndexed(array &$products) + { + if (count($products)) + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET indexed = 1 WHERE id_product IN ('.implode(',', $products).') LIMIT 20'); + } + + // $queryArray and $queryArray2 are automatically emptied in order to be reused immediatly + protected static function saveIndex(array &$queryArray, array &$queryArray2) + { + if (count($queryArray) AND count($queryArray2)) + { + if (!($rows = $db = Db::getInstance()->Execute('INSERT IGNORE INTO '._DB_PREFIX_.'search_word (id_lang, word) VALUES '.implode(',',$queryArray))) OR $rows != count($queryArray)) + Tools::d(array(mysql_error(), $queryArray)); + if (!($rows = $db = Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'search_index (id_product, id_word, weight) VALUES '.implode(',',$queryArray2).' ON DUPLICATE KEY UPDATE weight = weight + VALUES(weight)')) OR $rows != sizeof($queryArray2)) + Tools::d(array(mysql_error(), $queryArray2)); + } + $queryArray = array(); + $queryArray2 = array(); + } + + public static function searchTag($id_lang, $tag, $count = false, $pageNumber = 0, $pageSize = 10, $orderBy = false, $orderWay = false) + { + global $link; + + if (!is_numeric($pageNumber) OR !is_numeric($pageSize) OR !Validate::isBool($count) OR !Validate::isValidSearch($tag) + OR $orderBy AND !$orderWay OR ($orderBy AND !Validate::isOrderBy($orderBy)) OR ($orderWay AND !Validate::isOrderBy($orderWay))) + die(Tools::displayError()); + + if ($pageNumber < 1) $pageNumber = 1; + if ($pageSize < 1) $pageSize = 10; + + if ($count) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(pt.`id_product`) nb + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_tag` pt ON (p.`id_product` = pt.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'tag` t ON (pt.`id_tag` = t.`id_tag` AND t.`id_lang` = '.(int)$id_lang.') + WHERE p.`active` = 1 + AND t.`name` LIKE \'%'.pSQL($tag).'%\''); + return isset($result['nb']) ? $result['nb'] : 0; + } + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT p.*, pl.`description_short`, pl.`link_rewrite`, pl.`name`, tax.`rate`, i.`id_image`, il.`legend`, m.`name` manufacturer_name, 1 position, + DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 new + FROM `'._DB_PREFIX_.'product` p + INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` tax ON (tax.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) + LEFT JOIN `'._DB_PREFIX_.'product_tag` pt ON (p.`id_product` = pt.`id_product`) + LEFT JOIN `'._DB_PREFIX_.'tag` t ON (pt.`id_tag` = t.`id_tag` AND t.`id_lang` = '.(int)$id_lang.') + WHERE p.`active` = 1 + AND t.`name` LIKE \'%'.pSQL($tag).'%\' + ORDER BY position DESC'.($orderBy ? ', '.$orderBy : '').($orderWay ? ' '.$orderWay : '').' + LIMIT '.(int)(($pageNumber - 1) * $pageSize).','.(int)$pageSize); + if (!$result) return false; + + return Product::getProductsProperties($id_lang, $result); + } +} diff --git a/classes/SearchEngine.php b/classes/SearchEngine.php new file mode 100644 index 000000000..1dbe51bce --- /dev/null +++ b/classes/SearchEngine.php @@ -0,0 +1,72 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SearchEngineCore extends ObjectModel +{ + public $server; + public $getvar; + + protected $fieldsRequired = array ('server', 'getvar'); + protected $fieldsValidate = array ('server' => 'isUrl', 'getvar' => 'isModuleName'); + + protected $table = 'search_engine'; + protected $identifier = 'id_search_engine'; + + public function getFields() + { + parent::validateFields(); + $fields['server'] = pSQL($this->server); + $fields['getvar'] = pSQL($this->getvar); + return $fields; + } + + public static function getKeywords($url) + { + $parsedUrl = @parse_url($url); + if (!isset($parsedUrl['host']) OR !isset($parsedUrl['query'])) + return false; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT `server`, `getvar` FROM `'._DB_PREFIX_.'search_engine`'); + foreach ($result as $index => $row) + { + $host =& $row['server']; + $varname =& $row['getvar']; + if (strstr($parsedUrl['host'], $host)) + { + $kArray = array(); + preg_match('/[^a-z]'.$varname.'=.+\&'.'/U', $parsedUrl['query'], $kArray); + if (empty($kArray[0])) + preg_match('/[^a-z]'.$varname.'=.+$'.'/', $parsedUrl['query'], $kArray); + if (empty($kArray[0])) + return false; + $kString = urldecode(str_replace('+', ' ', ltrim(substr(rtrim($kArray[0], '&'), strlen($varname) + 1), '='))); + return $kString; + } + } + } +} + + diff --git a/classes/Shop.php b/classes/Shop.php new file mode 100644 index 000000000..2722b8f10 --- /dev/null +++ b/classes/Shop.php @@ -0,0 +1,52 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ShopCore extends ObjectModel +{ + public function __construct() + { + + } + + static public function getShops() + { + /*return Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'shops` + ');*/ + return array( + array('id_shop' => 1, 'name' => 'Default shop') + ); + } + + static public function getCurrentShop() + { + // During implementation, remind you to NOT trust the cookie, you may be called from a payment module (Mouhahahaha!) + return 1; + } +} + + diff --git a/classes/SpecificPrice.php b/classes/SpecificPrice.php new file mode 100644 index 000000000..c65e285ed --- /dev/null +++ b/classes/SpecificPrice.php @@ -0,0 +1,256 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SpecificPriceCore extends ObjectModel +{ + public $id_product; + public $id_shop; + public $id_currency; + public $id_country; + public $id_group; + public $price; + public $from_quantity; + public $reduction; + public $reduction_type; + public $from; + public $to; + + protected $fieldsRequired = array('id_product', 'id_shop', 'id_currency', 'id_country', 'id_group', 'price', 'from_quantity', 'reduction', 'reduction_type', 'from', 'to'); + protected $fieldsValidate = array('id_product' => 'isUnsignedId', 'id_shop' => 'isUnsignedId', 'id_country' => 'isUnsignedId', 'id_group' => 'isUnsignedId', 'price' => 'isPrice', 'from_quantity' => 'isUnsignedInt', 'reduction' => 'isPrice', 'reduction_type' => 'isReductionType', 'from' => 'isDateFormat', 'to' => 'isDateFormat'); + + protected $table = 'specific_price'; + protected $identifier = 'id_specific_price'; + + protected static $_specificPriceCache = array(); + protected static $_cache_priorities = array(); + + public function getFields() + { + parent::validateFields(); + $fields['id_product'] = (int)($this->id_product); + $fields['id_shop'] = (int)($this->id_shop); + $fields['id_currency'] = (int)($this->id_currency); + $fields['id_country'] = (int)($this->id_country); + $fields['id_group'] = (int)($this->id_group); + $fields['price'] = (float)($this->price); + $fields['from_quantity'] = (int)($this->from_quantity); + $fields['reduction'] = (float)($this->reduction); + $fields['reduction_type'] = pSQL($this->reduction_type); + $fields['from'] = pSQL($this->from); + $fields['to'] = pSQL($this->to); + return $fields; + } + + static public function getByProductId($id_product) + { + return Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'specific_price` WHERE `id_product` = '.(int)($id_product) + ); + } + + static public function getIdsByProductId($id_product) + { + return Db::getInstance()->ExecuteS(' + SELECT `id_specific_price` FROM `'._DB_PREFIX_.'specific_price` WHERE `id_product` = '.(int)$id_product.' + '); + } + + // score generation for quantity discount + protected static function _getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group) + { + $select = '('; + + $now = date('Y-m-d H:i:s'); + $select .= ' IF (\''.$now.'\' >= `from` AND \''.$now.'\' <= `to`, '.pow(2, 0).', 0) + '; + + $priority = SpecificPrice::getPriority($id_product); + foreach (array_reverse($priority) AS $k => $field) + $select .= ' IF (`'.$field.'` = '.(int)(${$field}).', '.pow(2, $k + 1).', 0) + '; + + return rtrim($select, ' +').') AS `score`'; + } + + public static function getPriority($id_product) + { + + if (!isset(self::$_cache_priorities[(int)$id_product])) + { + self::$_cache_priorities[(int)$id_product] = Db::getInstance()->getValue(' + SELECT `priority` + FROM `'._DB_PREFIX_.'specific_price_priority` + WHERE `id_product` = '.(int)$id_product); + } + + $priority = self::$_cache_priorities[(int)$id_product]; + + if (!$priority) + $priority = Configuration::get('PS_SPECIFIC_PRICE_PRIORITIES'); + + return preg_split('/;/', $priority); + } + + static public function getSpecificPrice($id_product, $id_shop, $id_currency, $id_country, $id_group, $quantity) + { + /* + ** The date is not taken into account for the cache, but this is for the better because it keeps the consistency for the whole script. + ** The price must not change between the top and the bottom of the page + */ + + $key = ((int)$id_product.'-'.(int)$id_shop.'-'.(int)$id_currency.'-'.(int)$id_country.'-'.(int)$id_group.'-'.(int)$quantity); + if (!array_key_exists($key, self::$_specificPriceCache)) + { + $now = date('Y-m-d H:i:s'); + self::$_specificPriceCache[$key] = Db::getInstance()->getRow(' + SELECT *, '.self::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group).' + FROM `'._DB_PREFIX_.'specific_price` + WHERE `id_product` IN (0, '.(int)$id_product.') + AND `id_shop` IN (0, '.(int)$id_shop.') + AND `id_currency` IN (0, '.(int)$id_currency.') + AND `id_country` IN (0, '.(int)$id_country.') + AND `id_group` IN (0, '.(int)$id_group.') + AND `from_quantity` <= '.(int)$quantity.' + AND (`from` = \'0000-00-00 00:00:00\' OR (\''.$now.'\' >= `from` AND \''.$now.'\' <= `to`)) + ORDER BY `score` DESC, `from_quantity` DESC'); + } + return self::$_specificPriceCache[$key]; + } + + static public function setPriorities($priorities) + { + $value = ''; + foreach ($priorities as $priority) + $value .= pSQL($priority).';'; + + SpecificPrice::deletePriorities(); + + return Configuration::updateValue('PS_SPECIFIC_PRICE_PRIORITIES', rtrim($value, ';')); + } + + public static function deletePriorities() + { + return Db::getInstance()->Execute(' + TRUNCATE `'._DB_PREFIX_.'specific_price_priority` + '); + } + + static public function setSpecificPriority($id_product, $priorities) + { + $fields = ''; + $value = ''; + foreach ($priorities as $priority) + $value .= pSQL($priority).';'; + + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'specific_price_priority` (`id_product`, `priority`) + VALUES ('.(int)$id_product.',\''.rtrim($value, ';').'\') + ON DUPLICATE KEY UPDATE `priority` = \''.rtrim($value, ';').'\' + '); + } + + static public function getQuantityDiscounts($id_product, $id_shop, $id_currency, $id_country, $id_group) + { + $now = date('Y-m-d H:i:s'); + $res = Db::getInstance()->ExecuteS(' + SELECT *, + '.self::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group).' + FROM `'._DB_PREFIX_.'specific_price` + WHERE `id_product` IN(0, '.(int)($id_product).') AND + `id_shop` IN(0, '.(int)($id_shop).') AND + `id_currency` IN(0, '.(int)($id_currency).') AND + `id_country` IN(0, '.(int)($id_country).') AND + `id_group` IN(0, '.(int)($id_group).') AND + (`from` = \'0000-00-00 00:00:00\' OR (\''.$now.'\' >= `from` AND \''.$now.'\' <= `to`)) + ORDER BY `score` DESC, `from_quantity` DESC + '); + + $targeted_prices = array(); + $max_score = NULL; + + foreach($res as $specific_price) + { + if (!isset($max_score)) + $max_score = $specific_price['score']; + else if ($max_score != $specific_price['score']) + break; + + if ($specific_price['from_quantity'] > 1) + $targeted_prices[] = $specific_price; + } + + return $targeted_prices; + } + + static public function getQuantityDiscount($id_product, $id_shop, $id_currency, $id_country, $id_group, $quantity) + { + $now = date('Y-m-d H:i:s'); + return Db::getInstance()->getRow(' + SELECT *, + '.self::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group).' + FROM `'._DB_PREFIX_.'specific_price` + WHERE `id_product` IN(0, '.(int)($id_product).') AND + `id_shop` IN(0, '.(int)($id_shop).') AND + `id_currency` IN(0, '.(int)($id_currency).') AND + `id_country` IN(0, '.(int)($id_country).') AND + `id_group` IN(0, '.(int)($id_group).') AND + `from_quantity` >= '.(int)($quantity).' AND + (`from` = \'0000-00-00 00:00:00\' OR (\''.$now.'\' >= `from` AND \''.$now.'\' <= `to`)) + ORDER BY `score` DESC, `from_quantity` DESC + '); + } + + static public function getProductIdByDate($id_shop, $id_currency, $id_country, $id_group, $beginning, $ending) + { + $resource = Db::getInstance()->ExecuteS(' + SELECT `id_product` + FROM `'._DB_PREFIX_.'specific_price` + WHERE `id_shop` IN(0, '.(int)($id_shop).') AND + `id_currency` IN(0, '.(int)($id_currency).') AND + `id_country` IN(0, '.(int)($id_country).') AND + `id_group` IN(0, '.(int)($id_group).') AND + `from_quantity` = 1 AND + (`from` = \'0000-00-00 00:00:00\' OR (\''.$beginning.'\' >= `from` AND \''.$ending.'\' <= `to`)) AND + `reduction` > 0 + ', false); + $ids_product = array(); + while ($row = DB::getInstance()->nextRow($resource)) + $ids_product[] = (int)($row['id_product']); + return $ids_product; + } + + static public function deleteByProductId($id_product) + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'specific_price` WHERE `id_product` = '.(int)($id_product)); + } + + public function duplicate($id_product = false) + { + if ($id_product) + $this->id_product = (int)($id_product); + return $this->add(); + } +} + diff --git a/classes/State.php b/classes/State.php new file mode 100644 index 000000000..8843060a0 --- /dev/null +++ b/classes/State.php @@ -0,0 +1,193 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class StateCore extends ObjectModel +{ + /** @var integer Country id which state belongs */ + public $id_country; + + /** @var integer Zone id which state belongs */ + public $id_zone; + + /** @var string 2 letters iso code */ + public $iso_code; + + /** @var string Name */ + public $name; + + /** @var boolean Status for delivery */ + public $active = true; + + protected $fieldsRequired = array('id_country', 'id_zone', 'iso_code', 'name'); + protected $fieldsSize = array('iso_code' => 4, 'name' => 32); + protected $fieldsValidate = array('id_country' => 'isUnsignedId', 'id_zone' => 'isUnsignedId', 'iso_code' => 'isStateIsoCode', 'name' => 'isGenericName', 'active' => 'isBool'); + + protected $table = 'state'; + protected $identifier = 'id_state'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_zone' => array('xlink_resource'=> 'zones'), + 'id_country' => array('xlink_resource'=> 'countries') + ), + ); + + public function getFields() + { + parent::validateFields(); + $fields['id_country'] = (int)($this->id_country); + $fields['id_zone'] = (int)($this->id_zone); + $fields['iso_code'] = pSQL(strtoupper($this->iso_code)); + $fields['name'] = pSQL($this->name); + $fields['active'] = (int)($this->active); + return $fields; + } + + public static function getStates($id_lang = false, $active = false) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT `id_state`, `id_country`, `id_zone`, `iso_code`, `name`, `active` + FROM `'._DB_PREFIX_.'state` + '.($active ? 'WHERE active = 1' : '').' + ORDER BY `name` ASC'); + } + + /** + * Get a state name with its ID + * + * @param integer $id_state Country ID + * @return string State name + */ + static public function getNameById($id_state) + { + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name` + FROM `'._DB_PREFIX_.'state` + WHERE `id_state` = '.(int)($id_state)); + + return $result['name']; + } + + /** + * Get a state id with its name + * + * @param string $id_state Country ID + * @return integer state id + */ + static public function getIdByName($state) + { + $result = Db::getInstance()->getRow(' + SELECT `id_state` + FROM `'._DB_PREFIX_.'state` + WHERE `name` LIKE \''.pSQL($state).'\''); + + return ((int)($result['id_state'])); + } + + /** + * Get a state id with its iso code + * + * @param string $iso_code Iso code + * @return integer state id + */ + static public function getIdByIso($iso_code) + { + return Db::getInstance()->getValue(' + SELECT `id_state` + FROM `'._DB_PREFIX_.'state` + WHERE `iso_code` = \''.pSQL($iso_code).'\'' + ); + } + + /** + * Delete a state only if is not in use + * + * @return boolean + */ + public function delete() + { + if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) + die(Tools::displayError()); + + if (!$this->isUsed()) + { + /* Database deletion */ + $result = Db::getInstance()->Execute('DELETE FROM `'.pSQL(_DB_PREFIX_.$this->table).'` WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + if (!$result) + return false; + + /* Database deletion for multilingual fields related to the object */ + if (method_exists($this, 'getTranslationsFieldsChild')) + Db::getInstance()->Execute('DELETE FROM `'.pSQL(_DB_PREFIX_.$this->table).'_lang` WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + return $result; + } + else + return false; + } + + /** + * Check if a state is used + * + * @return boolean + */ + public function isUsed() + { + return ($this->countUsed() > 0); + } + + /** + * Returns the number of utilisation of a state + * + * @return integer count for this state + */ + public function countUsed() + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT COUNT(*) AS nb_used + FROM `'._DB_PREFIX_.'address` + WHERE `'.pSQL($this->identifier).'` = '.(int)($this->id)); + return $row['nb_used']; + } + + public static function getStatesByIdCountry($id_country) + { + if (empty($id_country)) + die(Tools::displayError()); + + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'state` s + WHERE s.`id_country` = '.(int)$id_country + ); + } + + public static function hasCounties($id_state) + { + return sizeof(County::getCounties((int)$id_state)); + } +} + diff --git a/classes/StockMvt.php b/classes/StockMvt.php new file mode 100755 index 000000000..9d5b61a10 --- /dev/null +++ b/classes/StockMvt.php @@ -0,0 +1,121 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class StockMvtCore extends ObjectModel +{ + public $id; + + public $id_product; + public $id_product_attribute = NULL; + public $id_order = NULL; + public $id_employee = NULL; + public $quantity; + public $id_stock_mvt_reason; + + public $date_add; + public $date_upd; + + protected $table = 'stock_mvt'; + protected $identifier = 'id_stock_mvt'; + + + protected $fieldsRequired = array('id_product', 'id_stock_mvt_reason', 'quantity'); + protected $fieldsValidate = array('id_product' => 'isUnsignedId', 'id_product_attribute' => 'isUnsignedId','id_order' => 'isUnsignedId','id_employee' => 'isUnsignedId', + 'quantity' => 'isInt', 'id_stock_mvt_reason' => 'isUnsignedId'); + + protected $webserviceParameters = array( + 'objectNodeNames' => 'stock_movements', + ); + + + + public function getFields() + { + parent::validateFields(); + $fields['id_product'] = (int)$this->id_product; + $fields['id_product_attribute'] = (int)$this->id_product_attribute; + $fields['id_order'] = (int)$this->id_order; + $fields['id_employee'] = (int)$this->id_employee; + $fields['id_stock_mvt_reason'] = (int)$this->id_stock_mvt_reason; + $fields['quantity'] = (int)$this->quantity; + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + public function add($autodate = true, $nullValues = false, $update_quantity = true) + { + if (!parent::add($autodate, $nullValues)) + return false; + if (!$update_quantity) + return true; + + if ($this->id_product_attribute) + { + $product = new Product((int)($this->id_product), false, Configuration::get('PS_LANG_DEFAULT')); + return (Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product_attribute SET quantity=quantity+'.(int)$this->quantity.' + WHERE id_product='.(int)$product->id.' AND id_product_attribute='.(int)$this->id_product_attribute) AND $product->updateQuantityProductWithAttributeQuantity()); + } + else + return Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET quantity=quantity+'.(int)$this->quantity.' WHERE id_product='.(int)$this->id_product); + } + + public static function addMissingMvt($id_employee) + { + $products_without_attributes = Db::getInstance()->ExecuteS('SELECT p.id_product, pa.id_product_attribute, (p.quantity - SUM(IFNULL(sm.quantity, 0))) quantity + FROM '._DB_PREFIX_.'product p + LEFT JOIN '._DB_PREFIX_.'stock_mvt sm ON (sm.id_product = p.id_product) + LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (pa.id_product = p.id_product) + WHERE pa.id_product_attribute IS NULL + GROUP BY p.id_product'); + + $products_with_attributes = Db::getInstance()->ExecuteS('SELECT p.id_product, pa.id_product_attribute, SUM(pa.quantity) - SUM(IFNULL(sm.quantity, 0)) quantity + FROM '._DB_PREFIX_.'product p + LEFT JOIN '._DB_PREFIX_.'product_attribute pa ON (pa.id_product = p.id_product) + LEFT JOIN '._DB_PREFIX_.'stock_mvt sm ON (sm.id_product = pa.id_product AND sm.id_product_attribute = pa.id_product_attribute) + WHERE pa.id_product_attribute IS NOT NULL + GROUP BY pa.id_product_attribute'); + + + + $products = array_merge($products_without_attributes, $products_with_attributes); + if ($products) + { + foreach ($products AS $product) + { + if (!$product['quantity']) + continue; + $mvt = new self(); + foreach ($product AS $k => $row) + $mvt->{$k} = $row; + $mvt->id_employee = (int)$id_employee; + $mvt->id_stock_mvt_reason = _STOCK_MOVEMENT_MISSING_REASON_; + $mvt->add(true, false, false); + } + } + } +} diff --git a/classes/StockMvtReason.php b/classes/StockMvtReason.php new file mode 100755 index 000000000..ce580e118 --- /dev/null +++ b/classes/StockMvtReason.php @@ -0,0 +1,71 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class StockMvtReasonCore extends ObjectModel +{ + public $id; + public $name; + + public $sign; + + public $date_add; + public $date_upd; + + protected $table = 'stock_mvt_reason'; + protected $identifier = 'id_stock_mvt_reason'; + + + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 255); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $webserviceParameters = array( + 'objectNodeNames' => 'stock_movement_reasons', + ); + + public function getFields() + { + parent::validateFields(); + $fields['sign'] = (int)$this->sign; + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + static public function getStockMvtReasons($id_lang) + { + return Db::getInstance()->ExecuteS('SELECT smrl.name, smr.id_stock_mvt_reason, smr.sign + FROM '._DB_PREFIX_.'stock_mvt_reason smr + LEFT JOIN '._DB_PREFIX_.'stock_mvt_reason_lang smrl ON (smr.id_stock_mvt_reason = smrl.id_stock_mvt_reason AND smrl.id_lang='.(int)$id_lang.')'); + } +} diff --git a/classes/Store.php b/classes/Store.php new file mode 100644 index 000000000..fcee4786d --- /dev/null +++ b/classes/Store.php @@ -0,0 +1,123 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class StoreCore extends ObjectModel +{ + /** @var integer Country id */ + public $id_country; + + /** @var integer State id */ + public $id_state; + + /** @var string Store name */ + public $name; + + /** @var string Address first line */ + public $address1; + + /** @var string Address second line (optional) */ + public $address2; + + /** @var string Postal code */ + public $postcode; + + /** @var string City */ + public $city; + + /** @var float Latitude */ + public $latitude; + + /** @var float Longitude */ + public $longitude; + + /** @var string Store hours (PHP serialized) */ + public $hours; + + /** @var string Phone number */ + public $phone; + + /** @var string Fax number */ + public $fax; + + /** @var string Note */ + public $note; + + /** @var string e-mail */ + public $email; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + /** @var boolean Store status */ + public $active = true; + + protected $fieldsRequired = array('id_country', 'name', 'address1', 'city', 'active'); + protected $fieldsSize = array('name' => 128, 'address1' => 128, 'address2' => 128, 'postcode' => 12, 'city' => 64, 'latitude' => 10, 'longitude' => 10, 'hours' => 254, 'phone' => 16, 'fax' => 16, 'email' => 128, 'note' => 65000); + protected $fieldsValidate = array('id_country' => 'isUnsignedId', 'id_state' => 'isNullOrUnsignedId', 'name' => 'isGenericName', 'address1' => 'isAddress', 'address2' => 'isAddress', + 'city' => 'isCityName', 'latitude' => 'isCoordinate', 'longitude' => 'isCoordinate', 'hours' => 'isSerializedArray', 'phone' => 'isPhoneNumber', 'fax' => 'isPhoneNumber', + 'note' => 'isCleanHtml', 'email' => 'isEmail', 'active' => 'isBool'); + + protected $table = 'store'; + protected $identifier = 'id_store'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_country' => array('xlink_resource'=> 'countries'), + 'id_state' => array('xlink_resource'=> 'states'), + ), + ); + + public function getFields() + { + parent::validateFields(); + + $fields['id_country'] = (int)($this->id_country); + $fields['id_state'] = (int)($this->id_state); + $fields['name'] = pSQL($this->name); + $fields['address1'] = pSQL($this->address1); + $fields['address2'] = pSQL($this->address2); + $fields['postcode'] = pSQL($this->postcode); + $fields['city'] = pSQL($this->city); + $fields['latitude'] = (float)($this->latitude); + $fields['longitude'] = (float)($this->longitude); + $fields['hours'] = pSQL($this->hours); + $fields['phone'] = pSQL($this->phone); + $fields['fax'] = pSQL($this->fax); + $fields['note'] = pSQL($this->note); + $fields['email'] = pSQL($this->email); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + $fields['active'] = (int)($this->active); + + return $fields; + } +} + + diff --git a/classes/SubDomain.php b/classes/SubDomain.php new file mode 100644 index 000000000..ba32e6511 --- /dev/null +++ b/classes/SubDomain.php @@ -0,0 +1,56 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SubDomainCore extends ObjectModel +{ + public $name; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 16); + protected $fieldsValidate = array('name' => 'isSubDomainName'); + + protected $table = 'subdomain'; + protected $identifier = 'id_subdomain'; + + public function getFields() + { + parent::validateFields(); + $fields['name'] = pSQL($this->name); + return $fields; + } + + static public function getSubDomains() + { + if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT `name` FROM `'._DB_PREFIX_.'subdomain`')) + return false; + $subDomains = array(); + foreach ($result AS $row) + $subDomains[] = $row['name']; + return $subDomains; + } +} + diff --git a/classes/Supplier.php b/classes/Supplier.php new file mode 100644 index 000000000..b4fd2fbfe --- /dev/null +++ b/classes/Supplier.php @@ -0,0 +1,272 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SupplierCore extends ObjectModel +{ + public $id; + + /** @var integer supplier ID */ + public $id_supplier; + + /** @var string Name */ + public $name; + + /** @var string A short description for the discount */ + public $description; + + /** @var string Object creation date */ + public $date_add; + + /** @var string Object last modification date */ + public $date_upd; + + /** @var string Friendly URL */ + public $link_rewrite; + + /** @var string Meta title */ + public $meta_title; + + /** @var string Meta keywords */ + public $meta_keywords; + + /** @var string Meta description */ + public $meta_description; + + /** @var boolean active */ + public $active; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 64); + protected $fieldsValidate = array('name' => 'isCatalogName'); + + protected $fieldsSizeLang = array('meta_title' => 128, 'meta_description' => 255, 'meta_keywords' => 255); + protected $fieldsValidateLang = array('description' => 'isGenericName', 'meta_title' => 'isGenericName', 'meta_description' => 'isGenericName', 'meta_keywords' => 'isGenericName'); + + protected $table = 'supplier'; + protected $identifier = 'id_supplier'; + + protected $webserviceParameters = array( + 'fields' => array( + 'link_rewrite' => array('sqlId' => 'link_rewrite'), + ), + ); + + public function __construct($id = NULL, $id_lang = NULL) + { + parent::__construct($id, $id_lang); + + $this->link_rewrite = $this->getLink(); + } + + public function getLink() + { + return Tools::link_rewrite($this->name, false); + } + + public function getFields() + { + parent::validateFields(); + if (isset($this->id)) + $fields['id_supplier'] = (int)($this->id); + $fields['name'] = pSQL($this->name); + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + $fields['active'] = (int)($this->active); + return $fields; + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('description', 'meta_title', 'meta_keywords', 'meta_description')); + } + + /** + * Return suppliers + * + * @return array Suppliers + */ + static public function getSuppliers($getNbProducts = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_groups = false) + { + global $cookie; + + if (!$id_lang) + $id_lang = Configuration::get('PS_LANG_DEFAULT'); + $query = 'SELECT s.*, sl.`description`'; + $query .= ' FROM `'._DB_PREFIX_.'supplier` as s + LEFT JOIN `'._DB_PREFIX_.'supplier_lang` sl ON (s.`id_supplier` = sl.`id_supplier` AND sl.`id_lang` = '.(int)($id_lang).') + '.($active ? ' WHERE s.`active` = 1 ' : ''); + $query .= ' ORDER BY s.`name` ASC'.($p ? ' LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n) : ''); + $suppliers = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); + if ($suppliers === false) + return false; + if ($getNbProducts) + { + $sqlGroups = ''; + if (!$all_groups) + { + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + } + foreach ($suppliers as $key => $supplier) + { + $sql = ' + SELECT p.`id_product` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'supplier` as m ON (m.`id_supplier`= p.`id_supplier`) + WHERE m.`id_supplier` = '.(int)($supplier['id_supplier']). + ($active ? ' AND p.`active` = 1' : ''). + ($all_groups ? '' :' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + )'); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + $suppliers[$key]['nb_products'] = sizeof($result); + } + } + for ($i = 0; $i < sizeof($suppliers); $i++) + if ((int)(Configuration::get('PS_REWRITING_SETTINGS'))) + $suppliers[$i]['link_rewrite'] = Tools::link_rewrite($suppliers[$i]['name'], false); + else + $suppliers[$i]['link_rewrite'] = 0; + return $suppliers; + } + + /** + * Return name from id + * + * @param integer $id_supplier Supplier ID + * @return string name + */ + static protected $cacheName = array(); + static public function getNameById($id_supplier) + { + if (!isset(self::$cacheName[$id_supplier])) + self::$cacheName[$id_supplier] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT `name` FROM `'._DB_PREFIX_.'supplier` WHERE `id_supplier` = '.(int)($id_supplier)); + return self::$cacheName[$id_supplier]; + } + static public function getIdByName($name) + { + $result = Db::getInstance()->getRow(' + SELECT `id_supplier` + FROM `'._DB_PREFIX_.'supplier` + WHERE `name` = \''.pSQL($name).'\''); + if (isset($result['id_supplier'])) + return (int)($result['id_supplier']); + return false; + } + + static public function getProducts($id_supplier, $id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true) + { + if ($p < 1) $p = 1; + if (empty($orderBy) OR $orderBy == 'position') $orderBy = 'name'; + if (empty($orderWay)) $orderWay = 'ASC'; + + if (!Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay)) + die (Tools::displayError()); + + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + /* Return only the number of products */ + if ($getTotal) + { + $sql = ' + SELECT p.`id_product` + FROM `'._DB_PREFIX_.'product` p + WHERE p.id_supplier = '.(int)($id_supplier) + .($active ? ' AND p.`active` = 1' : '').' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + )'; + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + return (int)(sizeof($result)); + } + + $sql = ' + SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, i.`id_image`, il.`legend`, s.`name` AS supplier_name, tl.`name` AS tax_name, t.`rate`, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, + (p.`price` * ((100 + (t.`rate`))/100)) AS orderprice, m.`name` AS manufacturer_name + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) + LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` + AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' + AND tr.`id_state` = 0) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).') + LEFT JOIN `'._DB_PREFIX_.'supplier` s ON s.`id_supplier` = p.`id_supplier` + LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON m.`id_manufacturer` = p.`id_manufacturer` + WHERE p.`id_supplier` = '.(int)($id_supplier).($active ? ' AND p.`active` = 1' : '').' + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + ORDER BY '.(($orderBy == 'id_product') ? 'p.' : '').'`'.pSQL($orderBy).'` '.pSQL($orderWay).' + LIMIT '.(((int)($p) - 1) * (int)($n)).','.(int)($n); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($sql); + if (!$result) + return false; + if ($orderBy == 'price') + Tools::orderbyPrice($result, $orderWay); + return Product::getProductsProperties($id_lang, $result); + } + + public function getProductsLite($id_lang) + { + return Db::getInstance()->ExecuteS(' + SELECT p.`id_product`, pl.`name` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') + WHERE p.`id_supplier` = '.(int)($this->id)); + } + /* + * Specify if a supplier already in base + * + * @param $id_supplier Supplier id + * @return boolean + */ + static public function supplierExists($id_supplier) + { + $row = Db::getInstance()->getRow(' + SELECT `id_supplier` + FROM '._DB_PREFIX_.'supplier s + WHERE s.`id_supplier` = '.(int)($id_supplier)); + + return isset($row['id_supplier']); + } +} + diff --git a/classes/Tab.php b/classes/Tab.php new file mode 100644 index 000000000..0112949b6 --- /dev/null +++ b/classes/Tab.php @@ -0,0 +1,234 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class TabCore extends ObjectModel +{ + /** @var string Displayed name*/ + public $name; + + /** @var string Class and file name*/ + public $class_name; + + public $module; + + /** @var integer parent ID */ + public $id_parent; + + /** @var integer position */ + public $position; + + protected $fieldsRequired = array('class_name', 'position'); + protected $fieldsSize = array('class_name' => 64, 'module' => 64); + protected $fieldsValidate = array('id_parent' => 'isInt', 'position' => 'isUnsignedInt', 'module' => 'isTabName'); + + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'tab'; + protected $identifier = 'id_tab'; + + protected static $_getIdFromClassName = array(); + + public function getFields() + { + parent::validateFields(); + $fields['id_parent'] = (int)($this->id_parent); + $fields['class_name'] = pSQL($this->class_name); + $fields['module'] = pSQL($this->module); + $fields['position'] = (int)($this->position); + return $fields; + } + + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + public function add($autodate = true, $nullValues = false) + { + $this->position = self::getNbTabs($this->id_parent) + 1; + if (parent::add($autodate, $nullValues)) + return self::initAccess($this->id); + return false; + } + + static public function initAccess($id_tab) + { + /* Cookie's loading */ + global $cookie; + if (!is_object($cookie) OR !$cookie->profile) + return false; + /* Profile selection */ + $profiles = Db::getInstance()->ExecuteS('SELECT `id_profile` FROM '._DB_PREFIX_.'profile'); + if (!$profiles OR empty($profiles)) + return false; + /* Query definition */ + $query = 'INSERT INTO `'._DB_PREFIX_.'access` VALUES '; + foreach ($profiles AS $profile) + { + $rights = (((int)($profile['id_profile']) == 1 OR (int)($profile['id_profile']) == $cookie->profile) ? 1 : 0); + $query .= ($profile === $profiles[0] ? '' : ', ').'('.(int)($profile['id_profile']).', '.(int)($id_tab).', '.$rights.', '.$rights.', '.$rights.', '.$rights.')'; + } + return Db::getInstance()->Execute($query); + } + + public function delete() + { + if (Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'access WHERE `id_tab` = '.(int)($this->id)) AND parent::delete()) + return $this->cleanPositions($this->id_parent); + return false; + } + + /** + * Get tab id + * + * @return integer tab id + */ + static public function getCurrentTabId() + { + if ($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT `id_tab` FROM `'._DB_PREFIX_.'tab` WHERE LOWER(class_name)=\''.pSQL(Tools::strtolower(Tools::getValue('tab'))).'\'')) + return $result['id_tab']; + return -1; + } + + /** + * Get tab parent id + * + * @return integer tab parent id + */ + static public function getCurrentParentId() + { + if ($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT `id_parent` FROM `'._DB_PREFIX_.'tab` WHERE LOWER(class_name)=\''.pSQL(Tools::strtolower(Tools::getValue('tab'))).'\'')) + return $result['id_parent']; + return -1; + } + + /** + * Get tabs + * + * @return array tabs + */ + static public function getTabs($id_lang = false, $id_parent = NULL) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'tab` t + '.($id_lang ? 'LEFT JOIN `'._DB_PREFIX_.'tab_lang` tl ON (t.`id_tab` = tl.`id_tab` AND tl.`id_lang` = '.(int)($id_lang).')' : ''). + ($id_parent !== NULL ? ('WHERE t.`id_parent` = '.(int)($id_parent)) : '').' + ORDER BY t.`position` ASC'); + } + + /** + * Get tab + * + * @return array tab + */ + static public function getTab($id_lang, $id_tab) + { + /* Tabs selection */ + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'tab` t + LEFT JOIN `'._DB_PREFIX_.'tab_lang` tl ON (t.`id_tab` = tl.`id_tab` AND tl.`id_lang` = '.(int)($id_lang).') + WHERE t.`id_tab` = '.(int)($id_tab)); + } + + /** + * Get tab id from name + * + * @param string class_name + * @return int id_tab + */ + static public function getIdFromClassName($class_name) + { + if (isset(self::$_getIdFromClassName[$class_name]) AND self::$_getIdFromClassName[$class_name]) + return (int)self::$_getIdFromClassName[$class_name]['id']; + + self::$_getIdFromClassName[$class_name] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT id_tab AS id + FROM `'._DB_PREFIX_.'tab` t + WHERE LOWER(t.`class_name`) = \''.pSQL($class_name).'\''); + + return (int)self::$_getIdFromClassName[$class_name]['id']; + } + + /** + * @deprecated + * @param int $id_tab + */ + static public function getClassNameFromID($id_tab) + { + Tools::displayAsDeprecated(); + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT class_name FROM `'._DB_PREFIX_.'tab` t WHERE t.`id_tab` = \''.(int)$id_tab.'\''); + } + + static public function getNbTabs($id_parent = NULL) + { + return (int)Db::getInstance()->getValue(' + SELECT COUNT(*) + FROM `'._DB_PREFIX_.'tab` t + '.($id_parent !== NULL ? 'WHERE t.`id_parent` = '.(int)$id_parent : '')); + } + + public function move($direction) + { + $nbTabs = self::getNbTabs($this->id_parent); + if ($direction != 'l' AND $direction != 'r') + return false; + if ($nbTabs <= 1) + return false; + if ($direction == 'l' AND $this->position <= 1) + return false; + if ($direction == 'r' AND $this->position >= $nbTabs) + return false; + + $newPosition = ($direction == 'l') ? $this->position - 1 : $this->position + 1; + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'tab` t SET position = '.(int)($this->position).' WHERE id_parent = '.(int)($this->id_parent).' AND position = '.(int)($newPosition)); + $this->position = $newPosition; + return $this->update(); + } + + public function cleanPositions($id_parent) + { + $result = Db::getInstance()->ExecuteS(' + SELECT `id_tab` + FROM `'._DB_PREFIX_.'tab` + WHERE `id_parent` = '.(int)($id_parent).' + ORDER BY `position`'); + $sizeof = sizeof($result); + for ($i = 0; $i < $sizeof; ++$i) + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'tab` + SET `position` = '.($i + 1).' + WHERE `id_tab` = '.(int)($result[$i]['id_tab'])); + return true; + } +} + + diff --git a/classes/Tag.php b/classes/Tag.php new file mode 100644 index 000000000..be11b4ff2 --- /dev/null +++ b/classes/Tag.php @@ -0,0 +1,203 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class TagCore extends ObjectModel +{ + /** @var integer Language id */ + public $id_lang; + + /** @var string Name */ + public $name; + + protected $fieldsRequired = array('id_lang', 'name'); + protected $fieldsValidate = array('id_lang' => 'isUnsignedId', 'name' => 'isGenericName'); + + protected $table = 'tag'; + protected $identifier = 'id_tag'; + + protected $webserviceParameters = array( + 'fields' => array( + 'id_lang' => array('xlink_resource' => 'languages'), + ), + ); + + public function __construct($id = NULL, $name = NULL, $id_lang = NULL) + { + if ($id) + parent::__construct($id); + elseif ($name AND Validate::isGenericName($name) AND $id_lang AND Validate::isUnsignedId($id_lang)) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT * + FROM `'._DB_PREFIX_.'tag` t + WHERE `name` LIKE \''.pSQL($name).'\' AND `id_lang` = '.(int)($id_lang)); + + if ($row) + { + $this->id = (int)($row['id_tag']); + $this->id_lang = (int)($row['id_lang']); + $this->name = $row['name']; + } + } + } + + public function getFields() + { + parent::validateFields(); + $fields['id_lang'] = (int)($this->id_lang); + $fields['name'] = pSQL($this->name); + return $fields; + } + + public function add($autodate = true, $nullValues = false) + { + if (!parent::add($autodate, $nullValues)) + return false; + elseif (isset($_POST['products'])) + return $this->setProducts(Tools::getValue('products')); + return true; + } + + /** + * Add several tags in database and link it to a product + * + * @param integer $id_lang Language id + * @param integer $id_product Product id to link tags with + * @param string $string Tags separated by commas + * + * @return boolean Operation success + */ + static public function addTags($id_lang, $id_product, $string) + { + if (!Validate::isUnsignedId($id_lang) OR !Validate::isTagsList($string)) + return false; + + $tmpTab = array_unique(array_map('trim', preg_split('/,/', $string, NULL, PREG_SPLIT_NO_EMPTY))); + $list = array(); + foreach ($tmpTab AS $tag) + { + if (!Validate::isGenericName($tag)) + return false; + $tagObj = new Tag(NULL, trim($tag), (int)($id_lang)); + + /* Tag does not exist in database */ + if (!Validate::isLoadedObject($tagObj)) + { + $tagObj->name = trim($tag); + $tagObj->id_lang = (int)($id_lang); + $tagObj->add(); + } + if (!in_array($tagObj->id, $list)) + $list[] = $tagObj->id; + } + $data = ''; + foreach ($list AS $tag) + $data .= '('.(int)($tag).','.(int)($id_product).'),'; + $data = rtrim($data, ','); + + return Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'product_tag` (`id_tag`, `id_product`) + VALUES '.$data); + } + + static public function getMainTags($id_lang, $nb = 10) + { + $groups = FrontController::getCurrentCustomerGroups(); + $sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT t.name, COUNT(pt.id_tag) AS times + FROM `'._DB_PREFIX_.'product_tag` pt + LEFT JOIN `'._DB_PREFIX_.'tag` t ON (t.id_tag = pt.id_tag) + LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = pt.id_product) + WHERE t.`id_lang` = '.(int)($id_lang).' + AND p.`active` = 1 + AND p.`id_product` IN ( + SELECT cp.`id_product` + FROM `'._DB_PREFIX_.'category_group` cg + LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) + WHERE cg.`id_group` '.$sqlGroups.' + ) + GROUP BY t.id_tag + ORDER BY times DESC + LIMIT 0, '.(int)($nb)); + } + + static public function getProductTags($id_product) + { + if (!$tmp = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT t.`id_lang`, t.`name` + FROM '._DB_PREFIX_.'tag t + LEFT JOIN '._DB_PREFIX_.'product_tag pt ON (pt.id_tag = t.id_tag) + WHERE pt.`id_product`='.(int)($id_product))) + return false; + $result = array(); + foreach ($tmp AS $tag) + $result[$tag['id_lang']][] = $tag['name']; + return $result; + } + + public function getProducts($associated = true) + { + global $cookie; + $id_lang = $this->id_lang ? $this->id_lang : $cookie->id_lang; + + if (!$this->id AND $associated) + return array(); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT pl.name, pl.id_product + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.id_product = pl.id_product + WHERE pl.id_lang = '.(int)($id_lang).' + AND p.active = 1 + '.($this->id ? ('AND p.id_product '.($associated ? 'IN' : 'NOT IN').' (SELECT pt.id_product FROM `'._DB_PREFIX_.'product_tag` pt WHERE pt.id_tag = '.(int)($this->id).')') : '').' + ORDER BY pl.name'); + } + + public function setProducts($array) + { + Db::getInstance()->Execute('DELETE FROM '._DB_PREFIX_.'product_tag WHERE id_tag = '.(int)$this->id); + if (is_array($array)) + { + $array = array_map('intval', $array); + $result1 = Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'product SET indexed = 0 WHERE id_product IN ('.implode(',', $array).')'); + $ids = array(); + foreach ($array as $id_product) + $ids[] = '('.(int)$id_product.','.(int)$this->id.')'; + return ($result1 && Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'product_tag (id_product, id_tag) VALUES '.implode(',',$ids)) && Search::indexation(false)); + } + return $result1; + } + + static public function deleteTagsForProduct($id_product) + { + return Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'product_tag` WHERE `id_product` = '.(int)($id_product)); + } +} + + diff --git a/classes/Tax.php b/classes/Tax.php new file mode 100644 index 000000000..a7b3a9060 --- /dev/null +++ b/classes/Tax.php @@ -0,0 +1,399 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class TaxCore extends ObjectModel +{ + /** @var string Name */ + public $name; + + /** @var float Rate (%) */ + public $rate; + + /** @var bool active state */ + public $active; + + protected $fieldsRequired = array('rate'); + protected $fieldsValidate = array('rate' => 'isFloat'); + protected $fieldsRequiredLang = array('name'); + protected $fieldsSizeLang = array('name' => 32); + protected $fieldsValidateLang = array('name' => 'isGenericName'); + + protected $table = 'tax'; + protected $identifier = 'id_tax'; + + protected static $_product_country_tax = array(); + protected static $_product_tax_via_rules = array(); + + public $noZeroObject = 'getTaxes'; + + public function getFields() + { + parent::validateFields(); + $fields['rate'] = (float)($this->rate); + $fields['active'] = (int)($this->active); + return $fields; + } + + /** + * Check then return multilingual fields for database interaction + * + * @return array Multilingual fields + */ + public function getTranslationsFieldsChild() + { + parent::validateFieldsLang(); + return parent::getTranslationsFields(array('name')); + } + + public function delete() + { + /* Clean associations */ + TaxRule::deleteTaxRuleByIdTax((int)$this->id); + return parent::delete(); + } + + /** + * @deprecated zones are not related to a tax + */ + public static function checkTaxZone($id_tax, $id_zone) + { + Tools::displayAsDeprecated(); + return true; + } + + /** + * @deprecated states are not related to a tax. Check TaxRules. + */ + public function getStates() + { + Tools::displayAsDeprecated(); + return false; + } + + /** + * @deprecated states are not related to a tax. Check TaxRules. + */ + public function getState($id_state) + { + Tools::displayAsDeprecated(); + return false; + } + + /** + * @deprecated states are not related to a tax. Check TaxRules. + */ + public function addState($id_state) + { + Tools::displayAsDeprecated(); + return true; + } + + + /** + * @deprecated states are not related to a tax. Check TaxRules. + */ + public function deleteState($id_state) + { + Tools::displayAsDeprecated(); + return true; + } + + /** + * Get all zones + * + * @return array Zones + * @deprecated zones are not related to a tax + */ + public function getZones() + { + Tools::displayAsDeprecated(); + return false; + } + + /** + * Get a specific zones + * + * @return array Zone + * @deprecated zones are not related to a tax + */ + public function getZone($id_zone) + { + Tools::displayAsDeprecated(); + return false; + } + + /** + * Add zone + * @deprecated zones are not related to a tax + */ + public function addZone($id_zone) + { + Tools::displayAsDeprecated(); + return true; + } + + /** + * Delete zone + * @deprecated zones are not related to a tax + */ + public function deleteZone($id_zone) + { + Tools::displayAsDeprecated(); + return true; + } + + /** + * Get all available taxes + * + * @return array Taxes + */ + static public function getTaxes($id_lang = false, $active = 1) + { + return Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' + SELECT t.id_tax, t.rate'.((int)($id_lang) ? ', tl.name, tl.id_lang ' : '').' + FROM `'._DB_PREFIX_.'tax` t + '.((int)($id_lang) ? 'LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.`id_tax` = tl.`id_tax` AND tl.`id_lang` = '.(int)($id_lang).')' + .($active == 1 ? 'WHERE t.`active` = 1' : '').' + ORDER BY `name` ASC' : '')); + } + + static public function excludeTaxeOption() + { + return !Configuration::get('PS_TAX'); + } + + /* + * @deprecated zones are not related to a tax + */ + static public function zoneHasTax($id_tax, $id_zone) + { + Tools::displayAsDeprecated(); + return true; + } + + + + /** + * @deprecated states are not related to a tax. Check TaxRules. + */ + static public function getRateByState($id_state, $active = 1) + { + Tools::displayAsDeprecated(); + return false; + } + + /** + * Return the applicable tax rate depending of the country and state + * @deprecated use getApplicableTaxRate + * @param integer $id_tax + * @param float $productTax + * @param integer $id_address + * + * @return float taxe_rate + */ + static public function getApplicableTax($id_tax, $productTax, $id_address = NULL) + { + Tools::displayAsDeprecated(); + return Tax::getApplicableTaxRate($id_tax, $productTax, $id_address); + } + + /** + * Return the applicable tax rate depending of the country and state + * + * @param integer $id_tax + * @param float $productTax + * @param integer $id_address + * + * @return float taxe_rate + */ + public static function getApplicableTaxRate($id_tax, $productTax, $id_address = NULL) + { + Tools::displayAsDeprecated(); + global $cart, $cookie, $defaultCountry; + + return $productTax; + } + + static public function getTaxIdByRate($rate, $active = 1) + { + Tools::displayAsDeprecated(); + $tax = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT t.`id_tax` + FROM `'._DB_PREFIX_.'tax` t + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (t.id_tax = tl.id_tax) + WHERE t.`rate` = '.(float)($rate). + ($active == 1 ? ' AND t.`active` = 1' : '')); + return $tax ? (int)($tax['id_tax']) : false; + } + + public static function getTaxIdByName($tax_name, $active =1) + { + $tax = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT t.`id_tax` + FROM `'._DB_PREFIX_.'tax` t + LEFT JOIN `'._DB_PREFIX_.'tax_lang` tl ON (tl.id_tax = t.id_tax) + WHERE tl.`name` = \''.pSQL($tax_name).'\' '. + ($active == 1 ? ' AND t.`active` = 1' : '')); + + return $tax ? (int)($tax['id_tax']) : false; + } + + static public function getDataByProductId($id_product) + { + Tools::displayAsDeprecated(); + + $tax_rate = Tax::getProductTaxRate((int)$id_product); + $id_tax = Tax::getTaxIdByRate($tax_rate); + + return array('id_tax' => $id_tax, 'rate' => $tax_rate); + } + + /** + * Return the product tax + * + * @param integer $id_product + * @param integer $id_country + * @return Tax + */ + public static function getProductTaxRate($id_product, $id_address = NULL) + { + $id_country = (int)Country::getDefaultCountryId(); + $id_state = 0; + $id_county = 0; + $rate = 0; + if (!empty($id_address)) + { + $address_infos = Address::getCountryAndState($id_address); + if ($address_infos['id_country']) + { + $id_country = (int)($address_infos['id_country']); + $id_state = (int)$address_infos['id_state']; + $id_county = (int)County::getIdCountyByZipCode($address_infos['id_state'], $address_infos['postcode']); + } + + if (!empty($address_infos['vat_number']) AND $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY') AND Configuration::get('VATNUMBER_MANAGEMENT')) + return 0; + } + + if ($rate = Tax::getProductTaxRateViaRules((int)$id_product, (int)$id_country, (int)$id_state, (int)$id_county)) + return $rate; + + return $rate; + } + + public static function getProductEcotaxRate($id_address = NULL) + { + $id_country = (int)Country::getDefaultCountryId(); + $id_state = 0; + $id_county = 0; + $rate = 0; + if (!empty($id_address)) + { + $address_infos = Address::getCountryAndState($id_address); + if ($address_infos['id_country']) + { + $id_country = (int)($address_infos['id_country']); + $id_state = (int)$address_infos['id_state']; + $id_county = (int)County::getIdCountyByZipCode($address_infos['id_state'], $address_infos['postcode']); + } + + if (!empty($address_infos['vat_number']) AND $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY') AND Configuration::get('VATNUMBER_MANAGEMENT')) + return 0; + } + + if ($rate = TaxRulesGroup::getTaxesRate((int)Configuration::get('PS_ECOTAX_TAX_RULES_GROUP_ID'), (int)$id_country, (int)$id_state, (int)$id_county)) + return $rate; + + return $rate; + } + + /** + * Return the product tax rate using the tax rules system + * + * @param integer $id_product + * @param integer $id_country + * @return Tax + */ + public static function getProductTaxRateViaRules($id_product, $id_country, $id_state, $id_county) + { + if (!isset(self::$_product_tax_via_rules[$id_product.'-'.$id_country.'-'.$id_state.'-'.$id_county])) + { + $tax_rate = TaxRulesGroup::getTaxesRate((int)Product::getIdTaxRulesGroupByIdProduct((int)$id_product), (int)$id_country, (int)$id_state, (int)$id_county); + self::$_product_tax_via_rules[$id_product.'-'.$id_country.'-'.$id_county] = $tax_rate; + } + + return self::$_product_tax_via_rules[$id_product.'-'.$id_country.'-'.$id_county]; + } + + + public static function getCarrierTaxRate($id_carrier, $id_address = NULL) + { + $id_country = (int)Country::getDefaultCountryId(); + $id_state = 0; + $id_county = 0; + if (!empty($id_address)) + { + $address_infos = Address::getCountryAndState($id_address); + if ($address_infos['id_country']) + { + $id_country = (int)($address_infos['id_country']); + $id_state = (int)$address_infos['id_state']; + $id_county = (int)County::getIdCountyByZipCode($address_infos['id_state'], $address_infos['postcode']); + } + + if (!empty($address_infos['vat_number']) AND $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY') AND Configuration::get('VATNUMBER_MANAGEMENT')) + return 0; + } + + return TaxRulesGroup::getTaxesRate((int)Carrier::getIdTaxRulesGroupByIdCarrier((int)$id_carrier), (int)$id_country, (int)$id_state, (int)$id_county); + } + + public function toggleStatus() + { + if (parent::toggleStatus()) + return $this->_onStatusChange(); + + return false; + } + + public function update($nullValues = false) + { + if (parent::update($nullValues)) + return $this->_onStatusChange(); + + return false; + } + + protected function _onStatusChange() + { + if (!$this->active) + return TaxRule::deleteTaxRuleByIdTax($this->id); + + return true; + } +} + diff --git a/classes/TaxRule.php b/classes/TaxRule.php new file mode 100644 index 000000000..b5fae456e --- /dev/null +++ b/classes/TaxRule.php @@ -0,0 +1,111 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class TaxRuleCore extends ObjectModel +{ + public $id_tax_rules_group; + public $id_country; + public $id_state; + public $id_county; + public $id_tax; + public $state_behavior; + public $county_behavior; + + protected $fieldsRequired = array('id_tax_rules_group', 'id_country', 'id_tax'); + protected $fieldsValidate = array('id_tax_rules_group' => 'isUnsignedId', 'id_country' => 'isUnsignedId', 'id_state' => 'isUnsignedId', 'id_county' => 'isUnsignedId', 'id_tax' => 'isUnsignedId', 'state_behavior' => 'isUnsignedInt', 'county_behavior' => 'isUnsignedInt'); + + protected $table = 'tax_rule'; + protected $identifier = 'id_tax_rule'; + + public function getFields() + { + parent::validateFields(); + $fields['id_tax_rules_group'] = (int)($this->id_tax_rules_group); + $fields['id_country'] = (int)$this->id_country; + $fields['id_state'] = (int)$this->id_state; + $fields['id_county'] = (int)$this->id_county; + $fields['state_behavior'] = (int)$this->state_behavior; + $fields['county_behavior'] = (int)$this->county_behavior; + $fields['id_tax'] = (int)($this->id_tax); + + return $fields; + } + + public static function deleteByGroupId($id_group) + { + if (empty($id_group)) + die(Tools::displayError()); + + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'tax_rule` + WHERE `id_tax_rules_group` = '.(int)$id_group + ); + } + + public static function getTaxRulesByGroupId($id_group) + { + if (empty($id_group)) + die(Tools::displayError()); + + $results = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'tax_rule` + WHERE `id_tax_rules_group` = '.(int)$id_group + ); + + $res = array(); + foreach ($results AS $row) + $res[$row['id_country']][$row['id_state']][$row['id_county']] = array('id_tax' => $row['id_tax'], 'state_behavior' => $row['state_behavior'], 'county_behavior' => $row['county_behavior']); + + return $res; + } + + public static function deleteTaxRuleByIdTax($id_tax) + { + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'tax_rule` + WHERE `id_tax` = '.(int)$id_tax + ); + } + + + public static function deleteTaxRuleByIdCounty($id_county) + { + return Db::getInstance()->Execute(' + DELETE FROM `'._DB_PREFIX_.'tax_rule` + WHERE `id_county` = '.(int)$id_county + ); + } + + public static function isTaxInUse($id_tax) + { + return Db::getInstance()->getValue(' + SELECT COUNT(*) FROM `'._DB_PREFIX_.'tax_rule` WHERE `id_tax` = '.(int)$id_tax + ); + } +} + diff --git a/classes/TaxRulesGroup.php b/classes/TaxRulesGroup.php new file mode 100644 index 000000000..f970bb3e0 --- /dev/null +++ b/classes/TaxRulesGroup.php @@ -0,0 +1,166 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + + +class TaxRulesGroupCore extends ObjectModel +{ + public $name; + + /** @var bool active state */ + public $active; + + protected $fieldsRequired = array('name'); + protected $fieldsSize = array('name' => 64); + protected $fieldsValidate = array('name' => 'isGenericName'); + + protected $table = 'tax_rules_group'; + protected $identifier = 'id_tax_rules_group'; + + protected static $_taxes = array(); + + public function getFields() + { + parent::validateFields(); + $fields['name'] = ($this->name); + $fields['active'] = (int)($this->active); + return $fields; + } + + public static function getTaxRulesGroups($only_active = true) + { + return Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'tax_rules_group` g' + .($only_active ? ' WHERE g.`active` = 1' : '') + ); + } + + public static function getTaxRulesGroupsForOptions() + { + $tax_rules[] = array('id_tax_rules_group' => 0, 'name' => Tools::displayError('No tax')); + return array_merge($tax_rules, TaxRulesGroup::getTaxRulesGroups()); + } + + public static function getTaxes($id_tax_rules_group, $id_country, $id_state, $id_county) + { + if (empty($id_tax_rules_group) OR empty($id_country)) + return array(new Tax()); // No Tax + + if (isset(self::$_taxes[$id_tax_rules_group.'-'.$id_country.'-'.$id_state.'-'.$id_county])) + return self::$_taxes[$id_tax_rules_group.'-'.$id_country.'-'.$id_state.'-'.$id_county]; + + $rows = Db::getInstance()->ExecuteS(' + SELECT * + FROM `'._DB_PREFIX_.'tax_rule` + WHERE `id_country` = '.(int)$id_country.' + AND `id_tax_rules_group` = '.(int)$id_tax_rules_group.' + AND `id_state` IN (0, '.(int)$id_state.') + AND `id_county` IN (0, '.(int)$id_county.') + ORDER BY `id_county` DESC, `id_state` DESC' + ); + + + $taxes = array(); + foreach ($rows AS $row) + { + if ($row['id_county'] != 0) + { + switch($row['county_behavior']) + { + case County::USE_BOTH_TAX: + $taxes[] = new Tax($row['id_tax']); + break; + + case County::USE_COUNTY_TAX: + $taxes = array(new Tax($row['id_tax'])); + break 2; + + case County::USE_STATE_TAX: // do nothing + break; + } + } + else if ($row['id_state'] != 0) + { + switch($row['state_behavior']) + { + case PS_STATE_TAX: // use only product tax + $taxes[] = new Tax($row['id_tax']); + break 2; // switch + foreach + + case PS_BOTH_TAX: + $taxes[] = new Tax($row['id_tax']); + break; + + case PS_PRODUCT_TAX: // do nothing use country tax + break; + } + } + else + $taxes[] = new Tax((int)$row['id_tax']); + } + + self::$_taxes[$id_tax_rules_group.'-'.$id_country.'-'.$id_state.'-'.$id_county] = $taxes; + return $taxes; + } + + public static function getAssociatedTaxRatesByIdCountry($id_country) + { + $rows = Db::getInstance()->ExecuteS(' + SELECT rg.`id_tax_rules_group`, t.`rate` + FROM `'._DB_PREFIX_.'tax_rules_group` rg + LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (tr.`id_tax_rules_group` = rg.`id_tax_rules_group`) + LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) + WHERE tr.`id_country` = '.(int)$id_country.' + AND tr.`id_state` = 0 + AND tr.`id_county` = 0' + ); + + $res = array(); + foreach ($rows AS $row) + $res[$row['id_tax_rules_group']] = $row['rate']; + + return $res; + } + + public static function getTaxesRate($id_tax_rules_group, $id_country, $id_state, $id_county) + { + $rate = 0; + foreach (TaxRulesGroup::getTaxes($id_tax_rules_group, $id_country, $id_state, $id_county) AS $tax) + $rate += (float)$tax->rate; + + return $rate; + } + + public static function getIdByName($name) + { + return Db::getInstance()->getValue( + 'SELECT `id_tax_rules_group` + FROM `'._DB_PREFIX_.'tax_rules_group` rg + WHERE `name` = \''.pSQL($name).'\'' + ); + } +} \ No newline at end of file diff --git a/classes/Tools.php b/classes/Tools.php new file mode 100644 index 000000000..b658603af --- /dev/null +++ b/classes/Tools.php @@ -0,0 +1,1880 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ToolsCore +{ + protected static $file_exists_cache = array(); + protected static $_forceCompile; + protected static $_caching; + + /** + * Random password generator + * + * @param integer $length Desired length (optional) + * @return string Password + */ + public static function passwdGen($length = 8) + { + $str = 'abcdefghijkmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + for ($i = 0, $passwd = ''; $i < $length; $i++) + $passwd .= self::substr($str, mt_rand(0, self::strlen($str) - 1), 1); + return $passwd; + } + + /** + * Redirect user to another page + * + * @param string $url Desired URL + * @param string $baseUri Base URI (optional) + */ + public static function redirect($url, $baseUri = __PS_BASE_URI__) + { + if (strpos($url, 'http://') === FALSE) + { + global $link; + if (strpos($url, $baseUri) !== FALSE && strpos($url, $baseUri) == 0) + $url = substr($url, strlen($baseUri)); + $explode = explode('?', $url); + $url = $link->getPageLink($explode[0], true); + if (isset($explode[1])) + $url .= '?'.$explode[1]; + $baseUri = ''; + } + + if (isset($_SERVER['HTTP_REFERER']) AND ($url == $_SERVER['HTTP_REFERER'])) + header('Location: '.$_SERVER['HTTP_REFERER']); + else + header('Location: '.$baseUri.$url); + exit; + } + + /** + * Redirect url wich allready PS_BASE_URI + * + * @param string $url Desired URL + */ + public static function redirectLink($url) + { + if (!preg_match('@^https?://@i', $url)) + { + global $link; + if (strpos($url, __PS_BASE_URI__) !== FALSE && strpos($url, __PS_BASE_URI__) == 0) + $url = substr($url, strlen(__PS_BASE_URI__)); + $explode = explode('?', $url); + $url = $link->getPageLink($explode[0]); + if (isset($explode[1])) + $url .= '?'.$explode[1]; + } + + header('Location: '.$url); + exit; + } + + /** + * Redirect user to another admin page + * + * @param string $url Desired URL + */ + public static function redirectAdmin($url) + { + header('Location: '.$url); + exit; + } + + /** + * getProtocol return the set protocol according to configuration (http[s]) + * @param Boolean true if require ssl + * @return String (http|https) + */ + public static function getProtocol($use_ssl = null) + { + return (!is_null($use_ssl) && $use_ssl ? 'https://' : 'http://'); + } + + /** + * getHttpHost return the current host used, with the protocol (http or https) if $http is true + * This function should not be used to choose http or https domain name. + * Use Tools::getShopDomain() or Tools::getShopDomainSsl instead + * + * @param boolean $http + * @param boolean $entities + * @return void + */ + public static function getHttpHost($http = false, $entities = false) + { + $host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']); + if ($entities) + $host = htmlspecialchars($host, ENT_COMPAT, 'UTF-8'); + if ($http) + $host = (Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$host; + return $host; + } + + /** + * getShopDomain return domain name according to configuration + * + * @param boolean $http if true, return domain name with protocol + * @param boolean $entities if true, + * @return void + */ + public static function getShopDomain($http = false, $entities = false) + { + if (!($domain = Configuration::get('PS_SHOP_DOMAIN'))) + $domain = self::getHttpHost(); + if ($entities) + $domain = htmlspecialchars($domain, ENT_COMPAT, 'UTF-8'); + if ($http) + $domain = 'http://'.$domain; + return $domain; + } + + public static function getShopDomainSsl($http = false, $entities = false) + { + if (!($domain = Configuration::get('PS_SHOP_DOMAIN_SSL'))) + $domain = self::getHttpHost(); + if ($entities) + $domain = htmlspecialchars($domain, ENT_COMPAT, 'UTF-8'); + if ($http) + $domain = (Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$domain; + return $domain; + } + + /** + * Get the server variable SERVER_NAME + * + * @param string $referrer URL referrer + */ + static function getServerName() + { + if (isset($_SERVER['HTTP_X_FORWARDED_SERVER']) AND $_SERVER['HTTP_X_FORWARDED_SERVER']) + return $_SERVER['HTTP_X_FORWARDED_SERVER']; + return $_SERVER['SERVER_NAME']; + } + + /** + * Get the server variable REMOTE_ADDR + * + * @param string $remote_addr ip of client + */ + static function getRemoteAddr() + { + if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND $_SERVER['HTTP_X_FORWARDED_FOR']) + { + if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',')) + { + $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); + return $ips[0]; + } + else + return $_SERVER['HTTP_X_FORWARDED_FOR']; + } + return $_SERVER['REMOTE_ADDR']; + } + + /** + * Secure an URL referrer + * + * @param string $referrer URL referrer + */ + public static function secureReferrer($referrer) + { + if (preg_match('/^http[s]?:\/\/'.self::getServerName().'(:'._PS_SSL_PORT_.')?\/.*$/Ui', $referrer)) + return $referrer; + return __PS_BASE_URI__; + } + + /** + * Get a value from $_POST / $_GET + * if unavailable, take a default value + * + * @param string $key Value key + * @param mixed $defaultValue (optional) + * @return mixed Value + */ + public static function getValue($key, $defaultValue = false) + { + if (!isset($key) OR empty($key) OR !is_string($key)) + return false; + $ret = (isset($_POST[$key]) ? $_POST[$key] : (isset($_GET[$key]) ? $_GET[$key] : $defaultValue)); + + if (is_string($ret) === true) + $ret = urldecode(preg_replace('/((\%5C0+)|(\%00+))/i', '', urlencode($ret))); + return !is_string($ret)? $ret : stripslashes($ret); + } + + public static function getIsset($key) + { + if (!isset($key) OR empty($key) OR !is_string($key)) + return false; + return isset($_POST[$key]) ? true : (isset($_GET[$key]) ? true : false); + } + + /** + * Change language in cookie while clicking on a flag + */ + public static function setCookieLanguage() + { + global $cookie; + + /* If language does not exist or is disabled, erase it */ + if ($cookie->id_lang) + { + $lang = new Language((int)$cookie->id_lang); + if (!Validate::isLoadedObject($lang) OR !$lang->active) + $cookie->id_lang = NULL; + } + + /* Automatically detect language if not already defined */ + if (!$cookie->id_lang AND isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) + { + $array = explode(',', self::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE'])); + if (self::strlen($array[0]) > 2) + { + $tab = explode('-', $array[0]); + $string = $tab[0]; + } + else + $string = $array[0]; + if (Validate::isLanguageIsoCode($string)) + { + $lang = new Language((int)(Language::getIdByIso($string))); + if (Validate::isLoadedObject($lang) AND $lang->active) + $cookie->id_lang = (int)($lang->id); + } + } + + /* If language file not present, you must use default language file */ + if (!$cookie->id_lang OR !Validate::isUnsignedId($cookie->id_lang)) + $cookie->id_lang = (int)(Configuration::get('PS_LANG_DEFAULT')); + + $iso = Language::getIsoById((int)$cookie->id_lang); + @include_once(_PS_THEME_DIR_.'lang/'.$iso.'.php'); + + return $iso; + } + + public static function switchLanguage() + { + global $cookie; + + if ($id_lang = (int)(self::getValue('id_lang')) AND Validate::isUnsignedId($id_lang)) + $cookie->id_lang = $id_lang; + } + + public static function setCurrency() + { + global $cookie; + + if (self::isSubmit('SubmitCurrency')) + if (isset($_POST['id_currency']) AND is_numeric($_POST['id_currency'])) + { + $currency = Currency::getCurrencyInstance((int)($_POST['id_currency'])); + if (is_object($currency) AND $currency->id AND !$currency->deleted) + $cookie->id_currency = (int)($currency->id); + } + + if ((int)$cookie->id_currency) + { + $currency = Currency::getCurrencyInstance((int)$cookie->id_currency); + if (is_object($currency) AND (int)$currency->id AND (int)$currency->deleted != 1 AND $currency->active) + return $currency; + } + $currency = Currency::getCurrencyInstance((int)(Configuration::get('PS_CURRENCY_DEFAULT'))); + if (is_object($currency) AND $currency->id) + $cookie->id_currency = (int)($currency->id); + return $currency; + } + + /** + * Return price with currency sign for a given product + * + * @param float $price Product price + * @param object $currency Current currency (object, id_currency, NULL => getCurrent()) + * @return string Price correctly formated (sign, decimal separator...) + */ + public static function displayPrice($price, $currency = NULL, $no_utf8 = false) + { + if ($currency === NULL) + $currency = Currency::getCurrent(); + /* if you modified this function, don't forget to modify the Javascript function formatCurrency (in tools.js) */ + if (is_int($currency)) + $currency = Currency::getCurrencyInstance((int)($currency)); + $c_char = (is_array($currency) ? $currency['sign'] : $currency->sign); + $c_format = (is_array($currency) ? $currency['format'] : $currency->format); + $c_decimals = (is_array($currency) ? (int)($currency['decimals']) : (int)($currency->decimals)) * _PS_PRICE_DISPLAY_PRECISION_; + $c_blank = (is_array($currency) ? $currency['blank'] : $currency->blank); + $blank = ($c_blank ? ' ' : ''); + $ret = 0; + if (($isNegative = ($price < 0))) + $price *= -1; + $price = self::ps_round($price, $c_decimals); + switch ($c_format) + { + /* X 0,000.00 */ + case 1: + $ret = $c_char.$blank.number_format($price, $c_decimals, '.', ','); + break; + /* 0 000,00 X*/ + case 2: + $ret = number_format($price, $c_decimals, ',', ' ').$blank.$c_char; + break; + /* X 0.000,00 */ + case 3: + $ret = $c_char.$blank.number_format($price, $c_decimals, ',', '.'); + break; + /* 0,000.00 X */ + case 4: + $ret = number_format($price, $c_decimals, '.', ',').$blank.$c_char; + break; + } + if ($isNegative) + $ret = '-'.$ret; + if ($no_utf8) + return str_replace('€', chr(128), $ret); + return $ret; + } + + public static function displayPriceSmarty($params, &$smarty) + { + if (array_key_exists('currency', $params)) + { + $currency = Currency::getCurrencyInstance((int)($params['currency'])); + if (Validate::isLoadedObject($currency)) + return self::displayPrice($params['price'], $currency, false); + } + return self::displayPrice($params['price']); + } + + /** + * Return price converted + * + * @param float $price Product price + * @param object $currency Current currency object + * @param boolean $to_currency convert to currency or from currency to default currency + */ + public static function convertPrice($price, $currency = NULL, $to_currency = true) + { + if ($currency === NULL) + $currency = Currency::getCurrent(); + elseif (is_numeric($currency)) + $currency = Currency::getCurrencyInstance($currency); + + $c_id = (is_array($currency) ? $currency['id_currency'] : $currency->id); + $c_rate = (is_array($currency) ? $currency['conversion_rate'] : $currency->conversion_rate); + + if ($c_id != (int)(Configuration::get('PS_CURRENCY_DEFAULT'))) + { + if ($to_currency) + $price *= $c_rate; + else + $price /= $c_rate; + } + + return $price; + } + + + + /** + * Display date regarding to language preferences + * + * @param array $params Date, format... + * @param object $smarty Smarty object for language preferences + * @return string Date + */ + public static function dateFormat($params, &$smarty) + { + return self::displayDate($params['date'], $smarty->ps_language->id, (isset($params['full']) ? $params['full'] : false)); + } + + /** + * Display date regarding to language preferences + * + * @param string $date Date to display format UNIX + * @param integer $id_lang Language id + * @param boolean $full With time or not (optional) + * @return string Date + */ + public static function displayDate($date, $id_lang, $full = false, $separator='-') + { + if (!$date OR !strtotime($date)) + return $date; + if (!Validate::isDate($date) OR !Validate::isBool($full)) + die (self::displayError('Invalid date')); + $tmpTab = explode($separator, substr($date, 0, 10)); + $hour = ' '.substr($date, -8); + + $language = Language::getLanguage((int)($id_lang)); + if ($language AND strtolower($language['iso_code']) == 'fr') + return ($tmpTab[2].'-'.$tmpTab[1].'-'.$tmpTab[0].($full ? $hour : '')); + else + return ($tmpTab[0].'-'.$tmpTab[1].'-'.$tmpTab[2].($full ? $hour : '')); + } + + /** + * Sanitize a string + * + * @param string $string String to sanitize + * @param boolean $full String contains HTML or not (optional) + * @return string Sanitized string + */ + public static function safeOutput($string, $html = false) + { + if (!$html) + $string = @htmlentities(strip_tags($string), ENT_QUOTES, 'utf-8'); + return $string; + } + + public static function htmlentitiesUTF8($string, $type = ENT_QUOTES) + { + if (is_array($string)) + return array_map(array('Tools', 'htmlentitiesUTF8'), $string); + return htmlentities($string, $type, 'utf-8'); + } + + public static function htmlentitiesDecodeUTF8($string) + { + if (is_array($string)) + return array_map(array('Tools', 'htmlentitiesDecodeUTF8'), $string); + return html_entity_decode($string, ENT_QUOTES, 'utf-8'); + } + + public static function safePostVars() + { + $_POST = array_map(array('Tools', 'htmlentitiesUTF8'), $_POST); + } + + /** + * Delete directory and subdirectories + * + * @param string $dirname Directory name + */ + public static function deleteDirectory($dirname, $delete_self = true) + { + $dirname = rtrim($dirname, '/').'/'; + $files = scandir($dirname); + foreach ($files as $file) + if ($file != '.' AND $file != '..') + { + if (is_dir($dirname.$file)) + self::deleteDirectory($dirname.$file, true); + elseif (file_exists($dirname.$file)) + unlink($dirname.$file); + else + p('Unable to delete '.$dirname.$file); + } + if($delete_self) + rmdir($dirname); + } + + /** + * Display an error according to an error code + * + * @param integer $code Error code + */ + public static function displayError($string = 'Fatal error', $htmlentities = true) + { + global $_ERRORS, $cookie; + + $iso = strtolower(Language::getIsoById((is_object($cookie) AND $cookie->id_lang) ? (int)$cookie->id_lang : (int)Configuration::get('PS_LANG_DEFAULT'))); + @include_once(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php'); + + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_ AND $string == 'Fatal error') + return ('
'.print_r(debug_backtrace(), true).'
'); + if (!is_array($_ERRORS)) + return str_replace('"', '"', $string); + $key = md5(str_replace('\'', '\\\'', $string)); + $str = (isset($_ERRORS) AND is_array($_ERRORS) AND key_exists($key, $_ERRORS)) ? ($htmlentities ? htmlentities($_ERRORS[$key], ENT_COMPAT, 'UTF-8') : $_ERRORS[$key]) : $string; + return str_replace('"', '"', stripslashes($str)); + } + + /** + * Display an error with detailed object + * + * @param mixed $object + * @param boolean $kill + * @return $object if $kill = false; + */ + public static function dieObject($object, $kill = true) + { + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_) + { + echo '
';
+			print_r($object);
+			echo '

'; + if ($kill) + die('END'); + } + return $object; + } + + /** + * ALIAS OF dieObject() - Display an error with detailed object + * + * @param object $object Object to display + */ + public static function d($object, $kill = true) + { + return (self::dieObject($object, $kill = true)); + } + + /** + * ALIAS OF dieObject() - Display an error with detailed object but don't stop the execution + * + * @param object $object Object to display + */ + public static function p($object) + { + return (self::dieObject($object, false)); + } + + /** + * Check if submit has been posted + * + * @param string $submit submit name + */ + public static function isSubmit($submit) + { + return ( + isset($_POST[$submit]) OR isset($_POST[$submit.'_x']) OR isset($_POST[$submit.'_y']) + OR isset($_GET[$submit]) OR isset($_GET[$submit.'_x']) OR isset($_GET[$submit.'_y']) + ); + } + + /** + * Get meta tages for a given page + * + * @param integer $id_lang Language id + * @return array Meta tags + */ + public static function getMetaTags($id_lang, $page_name) + { + global $maintenance; + + if (!(isset($maintenance) AND (!in_array(Tools::getRemoteAddr(), explode(',', Configuration::get('PS_MAINTENANCE_IP')))))) + { + /* Products specifics meta tags */ + if ($id_product = self::getValue('id_product')) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name`, `meta_title`, `meta_description`, `meta_keywords`, `description_short` + FROM `'._DB_PREFIX_.'product` p + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = p.`id_product`) + WHERE pl.id_lang = '.(int)($id_lang).' AND pl.id_product = '.(int)($id_product).' AND p.active = 1'); + if ($row) + { + if (empty($row['meta_description'])) + $row['meta_description'] = strip_tags($row['description_short']); + return self::completeMetaTags($row, $row['name']); + } + } + + /* Categories specifics meta tags */ + elseif ($id_category = self::getValue('id_category')) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `name`, `meta_title`, `meta_description`, `meta_keywords`, `description` + FROM `'._DB_PREFIX_.'category_lang` + WHERE id_lang = '.(int)($id_lang).' AND id_category = '.(int)($id_category)); + if ($row) + { + if (empty($row['meta_description'])) + $row['meta_description'] = strip_tags($row['description']); + return self::completeMetaTags($row, $row['name']); + } + } + + /* Manufacturers specifics meta tags */ + elseif ($id_manufacturer = self::getValue('id_manufacturer')) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `meta_title`, `meta_description`, `meta_keywords` + FROM `'._DB_PREFIX_.'manufacturer_lang` + WHERE id_lang = '.(int)($id_lang).' AND id_manufacturer = '.(int)($id_manufacturer)); + if ($row) + { + if (empty($row['meta_description'])) + $row['meta_description'] = strip_tags($row['meta_description']); + $row['meta_title'] = $row['meta_title'].' - '.Configuration::get('PS_SHOP_NAME'); + return self::completeMetaTags($row, $row['meta_title']); + } + } + + /* Suppliers specifics meta tags */ + elseif ($id_supplier = self::getValue('id_supplier')) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `meta_title`, `meta_description`, `meta_keywords` + FROM `'._DB_PREFIX_.'supplier_lang` + WHERE id_lang = '.(int)($id_lang).' AND id_supplier = '.(int)($id_supplier)); + if ($row) + { + if (empty($row['meta_description'])) + $row['meta_description'] = strip_tags($row['meta_description']); + $row['meta_title'] = $row['meta_title'].' - '.Configuration::get('PS_SHOP_NAME'); + return self::completeMetaTags($row, $row['meta_title']); + } + } + + /* CMS specifics meta tags */ + elseif ($id_cms = self::getValue('id_cms')) + { + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' + SELECT `meta_title`, `meta_description`, `meta_keywords` + FROM `'._DB_PREFIX_.'cms_lang` + WHERE id_lang = '.(int)($id_lang).' AND id_cms = '.(int)($id_cms)); + if ($row) + { + $row['meta_title'] = $row['meta_title'].' - '.Configuration::get('PS_SHOP_NAME'); + return self::completeMetaTags($row, $row['meta_title']); + } + } + } + + /* Default meta tags */ + return self::getHomeMetaTags($id_lang, $page_name); + } + + /** + * Get meta tags for a given page + * + * @param integer $id_lang Language id + * @return array Meta tags + */ + public static function getHomeMetaTags($id_lang, $page_name) + { + global $cookie; + + /* Metas-tags */ + $metas = Meta::getMetaByPage($page_name, $id_lang); + $ret['meta_title'] = (isset($metas['title']) AND $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME'); + $ret['meta_description'] = (isset($metas['description']) AND $metas['description']) ? $metas['description'] : ''; + $ret['meta_keywords'] = (isset($metas['keywords']) AND $metas['keywords']) ? $metas['keywords'] : ''; + return $ret; + } + + + public static function completeMetaTags($metaTags, $defaultValue) + { + global $cookie; + + if ($metaTags['meta_title'] == NULL) + $metaTags['meta_title'] = $defaultValue.' - '.Configuration::get('PS_SHOP_NAME'); + if ($metaTags['meta_description'] == NULL) + $metaTags['meta_description'] = Configuration::get('PS_META_DESCRIPTION', (int)($cookie->id_lang)) ? Configuration::get('PS_META_DESCRIPTION', (int)($cookie->id_lang)) : ''; + if ($metaTags['meta_keywords'] == NULL) + $metaTags['meta_keywords'] = Configuration::get('PS_META_KEYWORDS', (int)($cookie->id_lang)) ? Configuration::get('PS_META_KEYWORDS', (int)($cookie->id_lang)) : ''; + return $metaTags; + } + + /** + * Encrypt password + * + * @param object $object Object to display + */ + public static function encrypt($passwd) + { + return md5(pSQL(_COOKIE_KEY_.$passwd)); + } + + /** + * Get token to prevent CSRF + * + * @param string $token token to encrypt + */ + public static function getToken($page = true) + { + global $cookie; + if ($page === true) + return (self::encrypt($cookie->id_customer.$cookie->passwd.$_SERVER['SCRIPT_NAME'])); + else + return (self::encrypt($cookie->id_customer.$cookie->passwd.$page)); + } + + /** + * Encrypt password + * + * @param object $object Object to display + */ + public static function getAdminToken($string) + { + return !empty($string) ? self::encrypt($string) : false; + } + public static function getAdminTokenLite($tab) + { + global $cookie; + return Tools::getAdminToken($tab.(int)(Tab::getIdFromClassName($tab)).(int)($cookie->id_employee)); + } + + /** + * Get the user's journey + * + * @param integer $id_category Category ID + * @param string $path Path end + * @param boolean $linkOntheLastItem Put or not a link on the current category + * @param string [optionnal] $categoryType defined what type of categories is used (products or cms) + */ + public static function getPath($id_category, $path = '', $linkOntheLastItem = false, $categoryType = 'products') + { + global $link, $cookie; + + if ($id_category == 1) + return ''.$path.''; + + $pipe = Configuration::get('PS_NAVIGATION_PIPE'); + if (empty($pipe)) + $pipe = '>'; + + if ($categoryType === 'products') + { + $category = Db::getInstance()->getRow(' + SELECT id_category, level_depth, nleft, nright + FROM '._DB_PREFIX_.'category + WHERE id_category = '.(int)$id_category); + + if (isset($category['id_category'])) + { + $categories = Db::getInstance()->ExecuteS(' + SELECT c.id_category, cl.name, cl.link_rewrite + FROM '._DB_PREFIX_.'category c + LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = c.id_category) + WHERE c.nleft <= '.(int)$category['nleft'].' AND c.nright >= '.(int)$category['nright'].' AND cl.id_lang = '.(int)($cookie->id_lang).' AND c.id_category != 1 + ORDER BY c.level_depth ASC + LIMIT '.(int)$category['level_depth']); + + $fullPath = ''; + $n = 1; + $nCategories = (int)sizeof($categories); + foreach ($categories AS $category) + { + $fullPath .= + (($n < $nCategories OR $linkOntheLastItem) ? '' : ''). + htmlentities($category['name'], ENT_NOQUOTES, 'UTF-8'). + (($n < $nCategories OR $linkOntheLastItem) ? '' : ''). + (($n++ != $nCategories OR !empty($path)) ? ''.$pipe.'' : ''); + } + + return $fullPath.$path; + } + } + elseif ($categoryType === 'CMS') + { + $category = new CMSCategory((int)($id_category), (int)($cookie->id_lang)); + if (!Validate::isLoadedObject($category)) + die(self::displayError()); + $categoryLink = $link->getCMSCategoryLink($category); + + if ($path != $category->name) + $fullPath .= ''.htmlentities($category->name, ENT_NOQUOTES, 'UTF-8').''.$pipe.''.$path; + else + $fullPath = ($linkOntheLastItem ? '' : '').htmlentities($path, ENT_NOQUOTES, 'UTF-8').($linkOntheLastItem ? '' : ''); + + return self::getPath((int)($category->id_parent), $fullPath, $linkOntheLastItem, $categoryType); + } + } + + /** + * @param string [optionnal] $type_cat defined what type of categories is used (products or cms) + */ + public static function getFullPath($id_category, $end, $type_cat = 'products') + { + global $cookie; + + $pipe = (Configuration::get('PS_NAVIGATION_PIPE') ? Configuration::get('PS_NAVIGATION_PIPE') : '>'); + + if($type_cat === 'products') + $category = new Category((int)($id_category), (int)($cookie->id_lang)); + else if ($type_cat === 'CMS') + $category = new CMSCategory((int)($id_category), (int)($cookie->id_lang)); + + if (!Validate::isLoadedObject($category)) + $id_category = 1; + if ($id_category == 1) + return htmlentities($end, ENT_NOQUOTES, 'UTF-8'); + + return self::getPath($id_category, $category->name, true, $type_cat).''.$pipe.' '.htmlentities($end, ENT_NOQUOTES, 'UTF-8').''; + } + + /** + * @deprecated + */ + public static function getCategoriesTotal() + { + Tools::displayAsDeprecated(); + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT COUNT(`id_category`) AS total FROM `'._DB_PREFIX_.'category`'); + return (int)($row['total']); + } + + /** + * @deprecated + */ + public static function getProductsTotal() + { + Tools::displayAsDeprecated(); + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT COUNT(`id_product`) AS total FROM `'._DB_PREFIX_.'product`'); + return (int)($row['total']); + } + + /** + * @deprecated + */ + public static function getCustomersTotal() + { + Tools::displayAsDeprecated(); + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT COUNT(`id_customer`) AS total FROM `'._DB_PREFIX_.'customer`'); + return (int)($row['total']); + } + + /** + * @deprecated + */ + public static function getOrdersTotal() + { + Tools::displayAsDeprecated(); + $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT COUNT(`id_order`) AS total FROM `'._DB_PREFIX_.'orders`'); + return (int)($row['total']); + } + + /* + ** Historyc translation function kept for compatibility + ** Removing soon + */ + public static function historyc_l($key, $translations) + { + global $cookie; + if (!$translations OR !is_array($translations)) + die(self::displayError()); + $iso = strtoupper(Language::getIsoById($cookie->id_lang)); + $lang = key_exists($iso, $translations) ? $translations[$iso] : false; + return (($lang AND is_array($lang) AND key_exists($key, $lang)) ? stripslashes($lang[$key]) : $key); + } + + public static function link_rewrite($str, $utf8_decode = false) + { + $purified = ''; + $length = self::strlen($str); + if ($utf8_decode) + $str = utf8_decode($str); + for ($i = 0; $i < $length; $i++) + { + $char = self::substr($str, $i, 1); + if (self::strlen(htmlentities($char)) > 1) + { + $entity = htmlentities($char, ENT_COMPAT, 'UTF-8'); + $purified .= $entity{1}; + } + elseif (preg_match('|[[:alpha:]]{1}|u', $char)) + $purified .= $char; + elseif (preg_match('<[[:digit:]]|-{1}>', $char)) + $purified .= $char; + elseif ($char == ' ') + $purified .= '-'; + elseif ($char == '\'') + $purified .= '-'; + } + return trim(self::strtolower($purified)); + } + + /** + * Truncate strings + * + * @param string $str + * @param integer $maxLen Max length + * @param string $suffix Suffix optional + * @return string $str truncated + */ + /* CAUTION : Use it only on module hookEvents. + ** For other purposes use the smarty function instead */ + public static function truncate($str, $maxLen, $suffix = '...') + { + if (self::strlen($str) <= $maxLen) + return $str; + $str = utf8_decode($str); + return (utf8_encode(substr($str, 0, $maxLen - self::strlen($suffix)).$suffix)); + } + + /** + * Generate date form + * + * @param integer $year Year to select + * @param integer $month Month to select + * @param integer $day Day to select + * @return array $tab html data with 3 cells :['days'], ['months'], ['years'] + * + */ + public static function dateYears() + { + for ($i = date('Y') - 10; $i >= 1900; $i--) + $tab[] = $i; + return $tab; + } + + public static function dateDays() + { + for ($i = 1; $i != 32; $i++) + $tab[] = $i; + return $tab; + } + + public static function dateMonths() + { + for ($i = 1; $i != 13; $i++) + $tab[$i] = date('F', mktime(0, 0, 0, $i, date('m'), date('Y'))); + return $tab; + } + + public static function hourGenerate($hours, $minutes, $seconds) + { + return implode(':', array($hours, $minutes, $seconds)); + } + + public static function dateFrom($date) + { + $tab = explode(' ', $date); + if (!isset($tab[1])) + $date .= ' ' . self::hourGenerate(0, 0, 0); + return $date; + } + + public static function dateTo($date) + { + $tab = explode(' ', $date); + if (!isset($tab[1])) + $date .= ' ' . self::hourGenerate(23, 59, 59); + return $date; + } + + /** + * @deprecated + */ + public static function getExactTime() + { + Tools::displayAsDeprecated(); + return time()+microtime(); + } + + static function strtolower($str) + { + if (is_array($str)) + return false; + if (function_exists('mb_strtolower')) + return mb_strtolower($str, 'utf-8'); + return strtolower($str); + } + + static function strlen($str, $encoding = 'UTF-8') + { + if (is_array($str)) + return false; + $str = html_entity_decode($str, ENT_COMPAT, 'UTF-8'); + if (function_exists('mb_strlen')) + return mb_strlen($str, $encoding); + return strlen($str); + } + + static function stripslashes($string) + { + if (_PS_MAGIC_QUOTES_GPC_) + $string = stripslashes($string); + return $string; + } + + static function strtoupper($str) + { + if (is_array($str)) + return false; + if (function_exists('mb_strtoupper')) + return mb_strtoupper($str, 'utf-8'); + return strtoupper($str); + } + + static function substr($str, $start, $length = false, $encoding = 'utf-8') + { + if (is_array($str)) + return false; + if (function_exists('mb_substr')) + return mb_substr($str, (int)($start), ($length === false ? self::strlen($str) : (int)($length)), $encoding); + return substr($str, $start, ($length === false ? self::strlen($str) : (int)($length))); + } + + static function ucfirst($str) + { + return self::strtoupper(self::substr($str, 0, 1)).self::substr($str, 1); + } + + public static function orderbyPrice(&$array, $orderWay) + { + foreach($array as &$row) + $row['price_tmp'] = Product::getPriceStatic($row['id_product'], true, ((isset($row['id_product_attribute']) AND !empty($row['id_product_attribute'])) ? (int)($row['id_product_attribute']) : NULL), 2); + if(strtolower($orderWay) == 'desc') + uasort($array, 'cmpPriceDesc'); + else + uasort($array, 'cmpPriceAsc'); + foreach($array as &$row) + unset($row['price_tmp']); + } + + public static function iconv($from, $to, $string) + { + if (function_exists('iconv')) + return iconv($from, $to.'//TRANSLIT', str_replace('¥', '¥', str_replace('£', '£', str_replace('€', '€', $string)))); + return html_entity_decode(htmlentities($string, ENT_NOQUOTES, $from), ENT_NOQUOTES, $to); + } + + public static function isEmpty($field) + { + return ($field === '' OR $field === NULL); + } + + /** + * @deprecated + **/ + public static function getTimezones($select = false) + { + Tools::displayAsDeprecated(); + + static $_cache = 0; + + // One select + if ($select) + { + // No cache + if (!$_cache) + { + $tmz = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT `name` FROM '._DB_PREFIX_.'timezone WHERE id_timezone = '.(int)($select)); + $_cache = $tmz['name']; + } + return $_cache; + } + + // Multiple select + $tmz = Db::getInstance(_PS_USE_SQL_SLAVE_)->s('SELECT * FROM '._DB_PREFIX_.'timezone'); + $tab = array(); + foreach ($tmz as $timezone) + $tab[$timezone['id_timezone']] = str_replace('_', ' ', $timezone['name']); + return $tab; + } + + /** + * @deprecated + **/ + public static function ps_set_magic_quotes_runtime($var) + { + Tools::displayAsDeprecated(); + + if (function_exists('set_magic_quotes_runtime')) + set_magic_quotes_runtime($var); + } + + public static function ps_round($value, $precision = 0) + { + $method = (int)(Configuration::get('PS_PRICE_ROUND_MODE')); + if ($method == PS_ROUND_UP) + return Tools::ceilf($value, $precision); + elseif ($method == PS_ROUND_DOWN) + return Tools::floorf($value, $precision); + return round($value, $precision); + } + + public static function ceilf($value, $precision = 0) + { + $precisionFactor = $precision == 0 ? 1 : pow(10, $precision); + $tmp = $value * $precisionFactor; + $tmp2 = (string)$tmp; + // If the current value has already the desired precision + if (strpos($tmp2, '.') === false) + return ($value); + if ($tmp2[strlen($tmp2) - 1] == 0) + return $value; + return ceil($tmp) / $precisionFactor; + } + + public static function floorf($value, $precision = 0) + { + $precisionFactor = $precision == 0 ? 1 : pow(10, $precision); + $tmp = $value * $precisionFactor; + $tmp2 = (string)$tmp; + // If the current value has already the desired precision + if (strpos($tmp2, '.') === false) + return ($value); + if ($tmp2[strlen($tmp2) - 1] == 0) + return $value; + return floor($tmp) / $precisionFactor; + } + + /** + * file_exists() wrapper with cache to speedup performance + * + * @param string $filename File name + * @return boolean Cached result of file_exists($filename) + */ + public static function file_exists_cache($filename) + { + if (!isset(self::$file_exists_cache[$filename])) + self::$file_exists_cache[$filename] = file_exists($filename); + return self::$file_exists_cache[$filename]; + } + + public static function file_get_contents($url, $useIncludePath = false, $streamContext = NULL) + { + if (in_array(ini_get('allow_url_fopen'), array('On', 'on', '1'))) + return file_get_contents($url, $useIncludePath, $streamContext); + else if (function_exists('curl_init')) + { + $curl = curl_init(); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_URL, $url); + $content = curl_exec($curl); + curl_close($curl); + return $content; + } + else + return false; + } + + public static function minifyHTML($html_content) + { + if (strlen($html_content) > 0) + { + //set an alphabetical order for args + $html_content = preg_replace_callback( + '/(<[a-zA-Z0-9]+)((\s?[a-zA-Z0-9]+=[\"\\\'][^\"\\\']*[\"\\\']\s?)*)>/' + ,array('Tools', 'minifyHTMLpregCallback') + ,$html_content); + + require_once(_PS_TOOL_DIR_.'minify_html/minify_html.class.php'); + $html_content = Minify_HTML::minify($html_content, array('xhtml', 'cssMinifier', 'jsMinifier')); + + if (Configuration::get('PS_HIGH_HTML_THEME_COMPRESSION')) + { + //$html_content = preg_replace('/"([^\>\s"]*)"/i', '$1', $html_content);//FIXME create a js bug + $html_content = preg_replace('/]*dtd\">/is', '', $html_content); + $html_content = preg_replace('/\s\>/is', '>', $html_content); + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('', '', $html_content); + //$html_content = str_replace('

', '', $html_content);//FIXME doesnt work... + $html_content = str_replace("\n", '', $html_content);//TODO with bellow + $html_content = str_replace('', '', $html_content); + $html_content = str_replace('
- '. + Tools::displayError('You will be redirected to your cart in a few seconds.')) : ''); + } + elseif (!$updateQuantity) + { + if (Tools::getValue('ajax') == 'true') + die('{"hasError" : true, "errors" : ["'.Tools::displayError('You already have the maximum quantity available for this product.', false).'"]}'); + else + $this->errors[] = Tools::displayError('You already have the maximum quantity available for this product.') + .((isset($_SERVER['HTTP_REFERER']) AND basename($_SERVER['HTTP_REFERER']) == 'order.php' OR (!Tools::isSubmit('ajax') AND substr(basename($_SERVER['REQUEST_URI']),0, strlen('cart.php')) == 'cart.php')) ? ('
- '. + Tools::displayError('You will be redirected to your cart in a few seconds.')) : ''); + } + } + } + elseif ($delete) + { + if (self::$cart->deleteProduct((int)($idProduct), (int)($idProductAttribute), (int)($customizationId))) + if (!Cart::getNbProducts((int)(self::$cart->id))) + { + self::$cart->id_carrier = 0; + self::$cart->gift = 0; + self::$cart->gift_message = ''; + self::$cart->update(); + } + } + } + $discounts = self::$cart->getDiscounts(); + foreach($discounts AS $discount) + { + $discountObj = new Discount((int)($discount['id_discount']), (int)(self::$cookie->id_lang)); + if ($error = self::$cart->checkDiscountValidity($discountObj, $discounts, self::$cart->getOrderTotal(true, Cart::ONLY_PRODUCTS), self::$cart->getProducts())) + { + self::$cart->deleteDiscount((int)($discount['id_discount'])); + self::$cart->update(); + $errors[] = $error; + } + } + if (!sizeof($this->errors)) + { + $queryString = Tools::safeOutput(Tools::getValue('query', NULL)); + if ($queryString AND !Configuration::get('PS_CART_REDIRECT')) + Tools::redirect('search.php?search='.$queryString); + if (isset($_SERVER['HTTP_REFERER'])) + { + // Redirect to previous page + preg_match('!http(s?)://(.*)/(.*)!', $_SERVER['HTTP_REFERER'], $regs); + if (isset($regs[3]) AND !Configuration::get('PS_CART_REDIRECT') AND Tools::getValue('ajax') != 'true') + Tools::redirect($regs[3]); + } + } + } + if (Tools::getValue('ajax') != 'true' AND !sizeof($this->errors)) + Tools::redirect('order.php?'.(isset($idProduct) ? 'ipa='.(int)($idProduct) : '')); + + } + } + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'errors.tpl'); + } +} diff --git a/controllers/CategoryController.php b/controllers/CategoryController.php new file mode 100644 index 000000000..1fb358b36 --- /dev/null +++ b/controllers/CategoryController.php @@ -0,0 +1,169 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CategoryControllerCore extends FrontController +{ + protected $category; + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(array( + _PS_CSS_DIR_.'jquery.cluetip.css' => 'all', + _THEME_CSS_DIR_.'scenes.css' => 'all', + _THEME_CSS_DIR_.'category.css' => 'all', + _THEME_CSS_DIR_.'product_list.css' => 'all')); + + if (Configuration::get('PS_COMPARATOR_MAX_ITEM') > 0) + Tools::addJS(_THEME_JS_DIR_.'products-comparison.js'); + } + + public function displayHeader() + { + parent::displayHeader(); + $this->productSort(); + } + + public function preProcess() + { + if ($id_category = (int)Tools::getValue('id_category')) + $this->category = new Category($id_category, self::$cookie->id_lang); + if (!Validate::isLoadedObject($this->category)) + { + header('HTTP/1.1 404 Not Found'); + header('Status: 404 Not Found'); + } + else + { + // Automatically redirect to the canonical URL if the current in is the right one + // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain + $currentURL = self::$link->getCategoryLink($this->category); + $currentURL = preg_replace('/[?&].*$/', '', $currentURL); + if (!preg_match('/^'.Tools::pRegexp($currentURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) + { + header('HTTP/1.0 301 Moved'); + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_ ) + die('[Debug] This page has moved
Please use the following URL instead: '.$currentURL.''); + Tools::redirectLink($currentURL); + } + } + + parent::preProcess(); + + if((int)(Configuration::get('PS_REWRITING_SETTINGS'))) + if ($id_category = (int)Tools::getValue('id_category')) + { + $rewrite_infos = Category::getUrlRewriteInformations((int)$id_category); + + $default_rewrite = array(); + foreach ($rewrite_infos AS $infos) + $default_rewrite[$infos['id_lang']] = self::$link->getCategoryLink((int)$id_category, $infos['link_rewrite'], $infos['id_lang']); + + self::$smarty->assign('lang_rewrite_urls', $default_rewrite); + } + } + + public function process() + { + parent::process(); + if (!($id_category = (int)Tools::getValue('id_category')) OR !Validate::isUnsignedId($id_category)) + $this->errors[] = Tools::displayError('Missing category ID'); + else + { + if (!Validate::isLoadedObject($this->category)) + $this->errors[] = Tools::displayError('Category does not exist'); + elseif (!$this->category->checkAccess((int)(self::$cookie->id_customer))) + $this->errors[] = Tools::displayError('You do not have access to this category.'); + elseif (!$this->category->active) + self::$smarty->assign('category', $this->category); + else + { + $rewrited_url = self::$link->getCategoryLink((int)$this->category->id, $this->category->link_rewrite); + + /* Scenes (could be externalised to another controler if you need them */ + self::$smarty->assign('scenes', Scene::getScenes((int)($this->category->id), (int)(self::$cookie->id_lang), true, false)); + + /* Scenes images formats */ + if ($sceneImageTypes = ImageType::getImagesTypes('scenes')) + { + foreach ($sceneImageTypes AS $sceneImageType) + { + if ($sceneImageType['name'] == 'thumb_scene') + $thumbSceneImageType = $sceneImageType; + elseif ($sceneImageType['name'] == 'large_scene') + $largeSceneImageType = $sceneImageType; + } + self::$smarty->assign('thumbSceneImageType', isset($thumbSceneImageType) ? $thumbSceneImageType : NULL); + self::$smarty->assign('largeSceneImageType', isset($largeSceneImageType) ? $largeSceneImageType : NULL); + } + + $this->category->description = nl2br2($this->category->description); + $subCategories = $this->category->getSubCategories((int)(self::$cookie->id_lang)); + self::$smarty->assign('category', $this->category); + if (Db::getInstance()->numRows()) + { + self::$smarty->assign('subcategories', $subCategories); + self::$smarty->assign(array( + 'subcategories_nb_total' => sizeof($subCategories), + 'subcategories_nb_half' => ceil(sizeof($subCategories) / 2))); + } + if ($this->category->id != 1) + { + $nbProducts = $this->category->getProducts(NULL, NULL, NULL, $this->orderBy, $this->orderWay, true); + $this->pagination((int)$nbProducts); + self::$smarty->assign('nb_products', (int)$nbProducts); + $cat_products = $this->category->getProducts((int)(self::$cookie->id_lang), (int)($this->p), (int)($this->n), $this->orderBy, $this->orderWay); + } + self::$smarty->assign(array( + 'products' => (isset($cat_products) AND $cat_products) ? $cat_products : NULL, + 'id_category' => (int)($this->category->id), + 'id_category_parent' => (int)($this->category->id_parent), + 'return_category_name' => Tools::safeOutput($this->category->name), + 'path' => Tools::getPath((int)($this->category->id)), + 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), + 'categorySize' => Image::getSize('category'), + 'mediumSize' => Image::getSize('medium'), + 'thumbSceneSize' => Image::getSize('thumb_scene'), + 'homeSize' => Image::getSize('home') + )); + } + } + + self::$smarty->assign(array( + 'allow_oosp' => (int)(Configuration::get('PS_ORDER_OUT_OF_STOCK')), + 'comparator_max_item' => (int)(Configuration::get('PS_COMPARATOR_MAX_ITEM')), + 'suppliers' => Supplier::getSuppliers() + )); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'category.tpl'); + } +} + diff --git a/controllers/CompareController.php b/controllers/CompareController.php new file mode 100644 index 000000000..2363e8cd1 --- /dev/null +++ b/controllers/CompareController.php @@ -0,0 +1,101 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class CompareControllerCore extends FrontController +{ + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'/comparator.css'); + } + + public function process() + { + parent::process(); + + $hasProduct = false; + $product_list = Tools::getValue('compare_product_list'); + $postProducts = isset($product_list) ? rtrim($product_list,'|') : ''; + + if (!Configuration::get('PS_COMPARATOR_MAX_ITEM')) + return Tools::redirect('404.php'); + + if ($postProducts) + { + $ids = array_unique(explode('|', $postProducts)); + + if (sizeof($ids) > 0) + { + if (sizeof($ids) > Configuration::get('PS_COMPARATOR_MAX_ITEM')) + $ids = array_slice($ids, 0, Configuration::get('PS_COMPARATOR_MAX_ITEM')); + + $listProducts = array(); + $listFeatures = array(); + + foreach ($ids AS $id) + { + $curProduct = new Product((int)($id), true, (int)(self::$cookie->id_lang)); + if (!Validate::isLoadedObject($curProduct)) + continue; + + foreach ($curProduct->getFrontFeatures(self::$cookie->id_lang) AS $feature) + $listFeatures[$curProduct->id][$feature['id_feature']] = $feature['value']; + + $cover = Product::getCover((int)$id); + + $curProduct->id_image = Tools::htmlentitiesUTF8(Product::defineProductImage(array('id_image' => $cover['id_image'], 'id_product' => $id), self::$cookie->id_lang)); + $listProducts[] = $curProduct; + } + + if (sizeof($listProducts) > 0) + { + $width = 80 / sizeof($listProducts); + + $hasProduct = true; + $ordered_features = Feature::getFeaturesForComparison($ids, self::$cookie->id_lang); + self::$smarty->assign(array( + 'ordered_features' => $ordered_features, + 'product_features' => $listFeatures, + 'products' => $listProducts, + 'link' => new Link(), + 'width' => $width, + 'homeSize' => Image::getSize('home') + )); + self::$smarty->assign('HOOK_EXTRA_PRODUCT_COMPARISON', Module::hookExec('extraProductComparison', array('list_ids_product' => $ids))); + } + } + } + self::$smarty->assign('hasProduct', $hasProduct); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'products-comparison.tpl'); + } +} + diff --git a/controllers/ContactController.php b/controllers/ContactController.php new file mode 100644 index 000000000..f2ac56ada --- /dev/null +++ b/controllers/ContactController.php @@ -0,0 +1,264 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ContactControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = 'contact-form.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function preProcess() + { + parent::preProcess(); + + if (self::$cookie->isLogged()) + { + self::$smarty->assign('isLogged', 1); + $customer = new Customer((int)(self::$cookie->id_customer)); + if (!Validate::isLoadedObject($customer)) + die(Tools::displayError('Customer not found')); + $products = array(); + $orders = array(); + $getOrders = Db::getInstance()->ExecuteS(' + SELECT id_order + FROM '._DB_PREFIX_.'orders + WHERE id_customer = '.(int)$customer->id.' ORDER BY date_add'); + foreach ($getOrders as $row) + { + $order = new Order($row['id_order']); + $date = explode(' ', $order->date_add); + $orders[$row['id_order']] = Tools::displayDate($date[0], self::$cookie->id_lang); + $tmp = $order->getProducts(); + foreach ($tmp as $key => $val) + $products[$val['product_id']] = $val['product_name']; + } + + $orderList = ''; + foreach ($orders as $key => $val) + $orderList .= ''; + $orderedProductList = ''; + + foreach ($products as $key => $val) + $orderedProductList .= ''; + self::$smarty->assign('orderList', $orderList); + self::$smarty->assign('orderedProductList', $orderedProductList); + } + + if (Tools::isSubmit('submitMessage')) + { + $fileAttachment = NULL; + if (isset($_FILES['fileUpload']['name']) AND !empty($_FILES['fileUpload']['name']) AND !empty($_FILES['fileUpload']['tmp_name'])) + { + $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg'); + $filename = uniqid().substr($_FILES['fileUpload']['name'], -5); + $fileAttachment['content'] = file_get_contents($_FILES['fileUpload']['tmp_name']); + $fileAttachment['name'] = $_FILES['fileUpload']['name']; + $fileAttachment['mime'] = $_FILES['fileUpload']['type']; + } + $message = Tools::htmlentitiesUTF8(Tools::getValue('message')); + if (!($from = trim(Tools::getValue('from'))) OR !Validate::isEmail($from)) + $this->errors[] = Tools::displayError('Invalid e-mail address'); + elseif (!($message = nl2br2($message))) + $this->errors[] = Tools::displayError('Message cannot be blank'); + elseif (!Validate::isMessage($message)) + $this->errors[] = Tools::displayError('Invalid message'); + elseif (!($id_contact = (int)(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact((int)($id_contact), (int)(self::$cookie->id_lang))))) + $this->errors[] = Tools::displayError('Please select a subject on the list.'); + elseif (!empty($_FILES['fileUpload']['name']) AND $_FILES['fileUpload']['error'] != 0) + $this->errors[] = Tools::displayError('An error occurred during the file upload'); + elseif (!empty($_FILES['fileUpload']['name']) AND !in_array(substr($_FILES['fileUpload']['name'], -4), $extension) AND !in_array(substr($_FILES['fileUpload']['name'], -5), $extension)) + $this->errors[] = Tools::displayError('Bad file extension'); + else + { + if ((int)(self::$cookie->id_customer)) + $customer = new Customer((int)(self::$cookie->id_customer)); + else + { + $customer = new Customer(); + $customer->getByEmail($from); + } + + $contact = new Contact($id_contact, self::$cookie->id_lang); + + if (!(( + $id_customer_thread = (int)Tools::getValue('id_customer_thread') + AND (int)Db::getInstance()->getValue(' + SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm + WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND token = \''.pSQL(Tools::getValue('token')).'\'') + ) OR ( + $id_customer_thread = (int)Db::getInstance()->getValue(' + SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm + WHERE cm.email = \''.pSQL($from).'\' AND cm.id_order = '.(int)(Tools::getValue('id_order')).'') + ))) + { + $fields = Db::getInstance()->ExecuteS(' + SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email + FROM '._DB_PREFIX_.'customer_thread cm + WHERE email = \''.pSQL($from).'\' AND ('. + ($customer->id ? 'id_customer = '.(int)($customer->id).' OR ' : '').' + id_order = '.(int)(Tools::getValue('id_order')).')'); + $score = 0; + foreach ($fields as $key => $row) + { + $tmp = 0; + if ((int)$row['id_customer'] AND $row['id_customer'] != $customer->id AND $row['email'] != $from) + continue; + if ($row['id_order'] != 0 AND Tools::getValue('id_order') != $row['id_order']) + continue; + if ($row['email'] == $from) + $tmp += 4; + if ($row['id_contact'] == $id_contact) + $tmp++; + if (Tools::getValue('id_product') != 0 AND $row['id_product'] == Tools::getValue('id_product')) + $tmp += 2; + if ($tmp >= 5 AND $tmp >= $score) + { + $score = $tmp; + $id_customer_thread = $row['id_customer_thread']; + } + } + } + $old_message = Db::getInstance()->getValue(' + SELECT cm.message FROM '._DB_PREFIX_.'customer_message cm + WHERE cm.id_customer_thread = '.(int)($id_customer_thread).' + ORDER BY date_add DESC'); + if ($old_message == htmlentities($message, ENT_COMPAT, 'UTF-8')) + { + self::$smarty->assign('alreadySent', 1); + $contact->email = ''; + $contact->customer_service = 0; + } + if (!empty($contact->email)) + { + if (Mail::Send((int)(self::$cookie->id_lang), 'contact', Mail::l('Message from contact form'), array('{email}' => $from, '{message}' => stripslashes($message)), $contact->email, $contact->name, $from, ((int)(self::$cookie->id_customer) ? $customer->firstname.' '.$customer->lastname : ''), $fileAttachment) + AND Mail::Send((int)(self::$cookie->id_lang), 'contact_form', Mail::l('Your message has been correctly sent'), array('{message}' => stripslashes($message)), $from)) + self::$smarty->assign('confirmation', 1); + else + $this->errors[] = Tools::displayError('An error occurred while sending message.'); + } + + if ($contact->customer_service) + { + if ((int)$id_customer_thread) + { + $ct = new CustomerThread($id_customer_thread); + $ct->status = 'open'; + $ct->id_lang = (int)self::$cookie->id_lang; + $ct->id_contact = (int)($id_contact); + if ($id_order = (int)Tools::getValue('id_order')) + $ct->id_order = $id_order; + if ($id_product = (int)Tools::getValue('id_product')) + $ct->id_product = $id_product; + $ct->update(); + } + else + { + $ct = new CustomerThread(); + if (isset($customer->id)) + $ct->id_customer = (int)($customer->id); + if ($id_order = (int)Tools::getValue('id_order')) + $ct->id_order = $id_order; + if ($id_product = (int)Tools::getValue('id_product')) + $ct->id_product = $id_product; + $ct->id_contact = (int)($id_contact); + $ct->id_lang = (int)self::$cookie->id_lang; + $ct->email = $from; + $ct->status = 'open'; + $ct->token = Tools::passwdGen(12); + $ct->add(); + } + + if ($ct->id) + { + $cm = new CustomerMessage(); + $cm->id_customer_thread = $ct->id; + $cm->message = htmlentities($message, ENT_COMPAT, 'UTF-8'); + if (isset($filename) AND rename($_FILES['fileUpload']['tmp_name'], _PS_MODULE_DIR_.'../upload/'.$filename)) + $cm->file_name = $filename; + $cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']); + $cm->user_agent = $_SERVER['HTTP_USER_AGENT']; + if ($cm->add()) + { + if (empty($contact->email)) + Mail::Send((int)(self::$cookie->id_lang), 'contact_form', Mail::l('Your message has been correctly sent'), array('{message}' => stripslashes($message)), $from); + self::$smarty->assign('confirmation', 1); + } + else + $this->errors[] = Tools::displayError('An error occurred while sending message.'); + } + else + $this->errors[] = Tools::displayError('An error occurred while sending message.'); + } + if (count($this->errors) > 1) + array_unique($this->errors); + } + } + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'contact-form.css'); + } + + public function process() + { + parent::process(); + + $email = Tools::safeOutput(Tools::getValue('from', ((isset(self::$cookie) AND isset(self::$cookie->email) AND Validate::isEmail(self::$cookie->email)) ? self::$cookie->email : ''))); + self::$smarty->assign(array( + 'errors' => $this->errors, + 'email' => $email, + 'fileupload' => Configuration::get('PS_CUSTOMER_SERVICE_FILE_UPLOAD') + )); + + + if ($id_customer_thread = (int)Tools::getValue('id_customer_thread') AND $token = Tools::getValue('token')) + { + $customerThread = Db::getInstance()->getRow(' + SELECT cm.* FROM '._DB_PREFIX_.'customer_thread cm + WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND token = \''.pSQL($token).'\''); + self::$smarty->assign('customerThread', $customerThread); + } + + self::$smarty->assign(array('contacts' => Contact::getContacts((int)(self::$cookie->id_lang)), + 'message' => html_entity_decode(Tools::getValue('message')) + )); + } + + public function displayContent() + { + $_POST = array_merge($_POST, $_GET); + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'contact-form.tpl'); + } +} + diff --git a/controllers/DiscountController.php b/controllers/DiscountController.php new file mode 100644 index 000000000..37e5769d3 --- /dev/null +++ b/controllers/DiscountController.php @@ -0,0 +1,59 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class DiscountControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'discount.php'; + $this->authRedirection = 'discount.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function process() + { + parent::process(); + + $discounts = Discount::getCustomerDiscounts((int)(self::$cookie->id_lang), (int)(self::$cookie->id_customer), true, false); + $nbDiscounts = 0; + foreach ($discounts AS $discount) + if ($discount['quantity_for_user']) + $nbDiscounts++; + + self::$smarty->assign(array('nbDiscounts' => (int)($nbDiscounts), 'discount' => $discounts)); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'discount.tpl'); + } +} + diff --git a/controllers/GuestTrackingController.php b/controllers/GuestTrackingController.php new file mode 100644 index 000000000..dfe4a7317 --- /dev/null +++ b/controllers/GuestTrackingController.php @@ -0,0 +1,127 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class GuestTrackingControllerCore extends FrontController +{ + public function preProcess() + { + parent::preProcess(); + + if (self::$cookie->isLogged()) + Tools::redirect('history.php'); + } + + public function process() + { + parent::process(); + + if ($id_order = Tools::getValue('id_order') AND $email = Tools::getValue('email')) + { + $order = new Order((int)$id_order); + if (!Validate::isLoadedObject($order)) + $this->errors[] = Tools::displayError('Invalid order'); + elseif (!$order->isAssociatedAtGuest($email)) + $this->errors[] = Tools::displayError('Invalid order'); + else + { + $customer = new Customer((int)$order->id_customer); + $id_order_state = (int)($order->getCurrentState()); + $carrier = new Carrier((int)($order->id_carrier), (int)($order->id_lang)); + $addressInvoice = new Address((int)($order->id_address_invoice)); + $addressDelivery = new Address((int)($order->id_address_delivery)); + if ($order->total_discounts > 0) + self::$smarty->assign('total_old', (float)($order->total_paid - $order->total_discounts)); + $products = $order->getProducts(); + $customizedDatas = Product::getAllCustomizedDatas((int)($order->id_cart)); + Product::addCustomizationPrice($products, $customizedDatas); + + self::$smarty->assign(array( + 'shop_name' => Configuration::get('PS_SHOP_NAME'), + 'order' => $order, + 'return_allowed' => false, + 'currency' => new Currency($order->id_currency), + 'order_state' => (int)($id_order_state), + 'invoiceAllowed' => (int)(Configuration::get('PS_INVOICE')), + 'invoice' => (OrderState::invoiceAvailable((int)($id_order_state)) AND $order->invoice_number), + 'order_history' => $order->getHistory((int)(self::$cookie->id_lang), false, true), + 'products' => $products, + 'discounts' => $order->getDiscounts(), + 'carrier' => $carrier, + 'address_invoice' => $addressInvoice, + 'invoiceState' => (Validate::isLoadedObject($addressInvoice) AND $addressInvoice->id_state) ? new State((int)($addressInvoice->id_state)) : false, + 'address_delivery' => $addressDelivery, + 'deliveryState' => (Validate::isLoadedObject($addressDelivery) AND $addressDelivery->id_state) ? new State((int)($addressDelivery->id_state)) : false, + 'is_guest' => true, + 'group_use_tax' => (Group::getPriceDisplayMethod($customer->id_default_group) == PS_TAX_INC), + 'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_, + 'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_, + 'use_tax' => Configuration::get('PS_TAX'), + 'customizedDatas' => $customizedDatas)); + if ($carrier->url AND $order->shipping_number) + self::$smarty->assign('followup', str_replace('@', $order->shipping_number, $carrier->url)); + self::$smarty->assign('HOOK_ORDERDETAILDISPLAYED', Module::hookExec('orderDetailDisplayed', array('order' => $order))); + Module::hookExec('OrderDetail', array('carrier' => $carrier, 'order' => $order)); + + if (Tools::isSubmit('submitTransformGuestToCustomer')) + { + if (!Validate::isPasswd(Tools::getValue('password'))) + $this->errors[] = Tools::displayError('Invalid password'); + $customer = new Customer((int)$order->id_customer); + if (!Validate::isLoadedObject($customer)) + $this->errors[] = Tools::displayError('Invalid customer'); + if (!$customer->transformToCustomer(self::$cookie->id_lang, Tools::getValue('password'))) + $this->errors[] = Tools::displayError('An error occurred while transforming guest to customer.'); + else + self::$smarty->assign('transformSuccess', true); + } + } + if (sizeof($this->errors)) + /* Handle brute force attacks */ + sleep(1); + } + + self::$smarty->assign(array( + 'action' => 'guest-tracking.php', + 'errors' => $this->errors + )); + } + + public function setMedia() + { + parent::setMedia(); + + Tools::addCSS(_THEME_CSS_DIR_.'history.css'); + Tools::addCSS(_THEME_CSS_DIR_.'addresses.css'); + } + + public function displayContent() + { + parent::displayContent(); + + self::$smarty->display(_PS_THEME_DIR_.'guest-tracking.tpl'); + } +} diff --git a/controllers/HistoryController.php b/controllers/HistoryController.php new file mode 100644 index 000000000..a8b6ef07d --- /dev/null +++ b/controllers/HistoryController.php @@ -0,0 +1,72 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class HistoryControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'history.php'; + $this->authRedirection = 'history.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'history.css'); + Tools::addCSS(_THEME_CSS_DIR_.'addresses.css'); + Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.scrollTo-1.4.2-min.js', _THEME_JS_DIR_.'history.js')); + } + + public function process() + { + parent::process(); + + if ($orders = Order::getCustomerOrders((int)(self::$cookie->id_customer))) + foreach ($orders AS &$order) + { + $myOrder = new Order((int)($order['id_order'])); + if (Validate::isLoadedObject($myOrder)) + $order['virtual'] = $myOrder->isVirtual(false); + } + self::$smarty->assign(array( + 'orders' => $orders, + 'invoiceAllowed' => (int)(Configuration::get('PS_INVOICE')), + 'slowValidation' => Tools::isSubmit('slowvalidation') + )); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'history.tpl'); + } +} + diff --git a/controllers/IdentityController.php b/controllers/IdentityController.php new file mode 100644 index 000000000..96d38a610 --- /dev/null +++ b/controllers/IdentityController.php @@ -0,0 +1,129 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class IdentityControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'identity.php'; + $this->authRedirection = 'identity.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function preProcess() + { + parent::preProcess(); + + $customer = new Customer((int)(self::$cookie->id_customer)); + + if (sizeof($_POST)) + { + $exclusion = array('secure_key', 'old_passwd', 'passwd', 'active', 'date_add', 'date_upd', 'last_passwd_gen', 'newsletter_date_add', 'id_default_group'); + $fields = $customer->getFields(); + foreach ($fields AS $key => $value) + if (!in_array($key, $exclusion)) + $customer->{$key} = key_exists($key, $_POST) ? trim($_POST[$key]) : 0; + } + + if (isset($_POST['years']) AND isset($_POST['months']) AND isset($_POST['days'])) + $customer->birthday = (int)($_POST['years']).'-'.(int)($_POST['months']).'-'.(int)($_POST['days']); + + if (Tools::isSubmit('submitIdentity')) + { + if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) AND + !(Tools::getValue('months') == '' AND Tools::getValue('days') == '' AND Tools::getValue('years') == '')) + $this->errors[] = Tools::displayError('Invalid date of birth'); + else + { + $customer->birthday = (empty($_POST['years']) ? '' : (int)($_POST['years']).'-'.(int)($_POST['months']).'-'.(int)($_POST['days'])); + + $_POST['old_passwd'] = trim($_POST['old_passwd']); + if (empty($_POST['old_passwd']) OR (Tools::encrypt($_POST['old_passwd']) != self::$cookie->passwd)) + $this->errors[] = Tools::displayError('Your password is incorrect.'); + elseif ($_POST['passwd'] != $_POST['confirmation']) + $this->errors[] = Tools::displayError('Password and confirmation do not match'); + else + { + $prev_id_default_group = $customer->id_default_group; + $this->errors = $customer->validateControler(); + } + if (!sizeof($this->errors)) + { + $customer->id_default_group = (int)($prev_id_default_group); + $customer->firstname = Tools::ucfirst(Tools::strtolower($customer->firstname)); + if (Tools::getValue('passwd')) + self::$cookie->passwd = $customer->passwd; + if ($customer->update()) + { + self::$cookie->customer_lastname = $customer->lastname; + self::$cookie->customer_firstname = $customer->firstname; + self::$smarty->assign('confirmation', 1); + } + else + $this->errors[] = Tools::displayError('Cannot update information'); + } + } + } + else + $_POST = array_map('stripslashes', $customer->getFields()); + + if ($customer->birthday) + $birthday = explode('-', $customer->birthday); + else + $birthday = array('-', '-', '-'); + + /* Generate years, months and days */ + self::$smarty->assign(array( + 'years' => Tools::dateYears(), + 'sl_year' => $birthday[0], + 'months' => Tools::dateMonths(), + 'sl_month' => $birthday[1], + 'days' => Tools::dateDays(), + 'sl_day' => $birthday[2], + 'errors' => $this->errors + )); + + self::$smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'identity.css'); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'identity.tpl'); + } +} + + diff --git a/controllers/IndexController.php b/controllers/IndexController.php new file mode 100644 index 000000000..1ba1847d0 --- /dev/null +++ b/controllers/IndexController.php @@ -0,0 +1,48 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class IndexControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = Configuration::get('PS_HOMEPAGE_PHP_SELF'); + + parent::__construct(); + } + + public function process() + { + parent::process(); + self::$smarty->assign('HOOK_HOME', Module::hookExec('home')); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'index.tpl'); + } +} diff --git a/controllers/ManufacturerController.php b/controllers/ManufacturerController.php new file mode 100644 index 000000000..545fa6c0a --- /dev/null +++ b/controllers/ManufacturerController.php @@ -0,0 +1,101 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ManufacturerControllerCore extends FrontController +{ + protected $manufacturer; + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); + } + + public function process() + { + if ($id_manufacturer = Tools::getValue('id_manufacturer')) + { + $this->manufacturer = new Manufacturer((int)$id_manufacturer, self::$cookie->id_lang); + if (Validate::isLoadedObject($this->manufacturer) AND $this->manufacturer->active) + { + $nbProducts = $this->manufacturer->getProducts($id_manufacturer, NULL, NULL, NULL, $this->orderBy, $this->orderWay, true); + $this->pagination((int)$nbProducts); + self::$smarty->assign(array( + 'nb_products' => $nbProducts, + 'products' => $this->manufacturer->getProducts($id_manufacturer, (int)self::$cookie->id_lang, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay), + 'path' => ($this->manufacturer->active ? Tools::safeOutput($this->manufacturer->name) : ''), + 'manufacturer' => $this->manufacturer)); + } + else + { + header('HTTP/1.1 404 Not Found'); + header('Status: 404 Not Found'); + $this->errors[] = Tools::displayError('Manufacturer does not exist.'); + } + } + else + { + if (Configuration::get('PS_DISPLAY_SUPPLIERS')) + { + $data = call_user_func(array('Manufacturer', 'getManufacturers'), true, (int)(self::$cookie->id_lang), true); + $nbProducts = count($data); + $this->pagination($nbProducts); + + $data = call_user_func(array('Manufacturer', 'getManufacturers'), true, (int)(self::$cookie->id_lang), true, $this->p, $this->n); + $imgDir = _PS_MANU_IMG_DIR_; + foreach ($data AS &$item) + $item['image'] = (!file_exists($imgDir.'/'.$item['id_manufacturer'].'-medium.jpg')) ? + Language::getIsoById((int)(self::$cookie->id_lang)).'-default' : $item['id_manufacturer']; + self::$smarty->assign(array( + 'pages_nb' => ceil($nbProducts / (int)($this->n)), + 'nbManufacturers' => $nbProducts, + 'mediumSize' => Image::getSize('medium'), + 'manufacturers' => $data, + 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), + )); + } + else + self::$smarty->assign('nbManufacturers', 0); + } + } + + public function displayHeader() + { + parent::displayHeader(); + $this->productSort(); + } + + public function displayContent() + { + parent::displayContent(); + if ($this->manufacturer) + self::$smarty->display(_PS_THEME_DIR_.'manufacturer.tpl'); + else + self::$smarty->display(_PS_THEME_DIR_.'manufacturer-list.tpl'); + } + +} \ No newline at end of file diff --git a/controllers/MyAccountController.php b/controllers/MyAccountController.php new file mode 100644 index 000000000..871fb76b1 --- /dev/null +++ b/controllers/MyAccountController.php @@ -0,0 +1,63 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class MyAccountControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'my-account.php'; + $this->authRedirection = 'my-account.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'my-account.css'); + } + + public function process() + { + parent::process(); + + self::$smarty->assign(array( + 'voucherAllowed' => (int)(Configuration::get('PS_VOUCHERS')), + 'returnAllowed' => (int)(Configuration::get('PS_ORDER_RETURN')) + )); + self::$smarty->assign('HOOK_CUSTOMER_ACCOUNT', Module::hookExec('customerAccount')); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'my-account.tpl'); + } +} + diff --git a/controllers/NewProductsController.php b/controllers/NewProductsController.php new file mode 100644 index 000000000..0a8832c17 --- /dev/null +++ b/controllers/NewProductsController.php @@ -0,0 +1,65 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class NewProductsControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = 'new-products.php'; + + parent::__construct(); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); + } + + public function process() + { + parent::process(); + + $this->productSort(); + $nbProducts = (int)(Product::getNewProducts((int)(self::$cookie->id_lang), isset($this->p) ? (int)($this->p) - 1 : NULL, isset($this->n) ? (int)($this->n) : NULL, true)); + $this->pagination($nbProducts); + + self::$smarty->assign(array( + 'products' => Product::getNewProducts((int)(self::$cookie->id_lang), (int)($this->p) - 1, (int)($this->n), false, $this->orderBy, $this->orderWay), + 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), + 'nbProducts' => (int)($nbProducts), + 'homeSize' => Image::getSize('home') + )); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'new-products.tpl'); + } +} + diff --git a/controllers/OrderConfirmationController.php b/controllers/OrderConfirmationController.php new file mode 100644 index 000000000..448398040 --- /dev/null +++ b/controllers/OrderConfirmationController.php @@ -0,0 +1,94 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderConfirmationControllerCore extends FrontController +{ + public $id_cart; + public $id_module; + public $id_order; + public $secure_key; + + public function __construct() + { + $this->php_self = 'order-confirmation.php'; + + parent::__construct(); + } + + public function preProcess() + { + parent::preProcess(); + + $this->id_cart = (int)(Tools::getValue('id_cart', 0)); + + /* check if the cart has been made by a Guest customer, for redirect link */ + if (Cart::isGuestCartByCartId($this->id_cart)) + $redirectLink = 'guest-tracking.php'; + else + $redirectLink = 'history.php'; + + $this->id_module = (int)(Tools::getValue('id_module', 0)); + $this->id_order = Order::getOrderByCartId((int)($this->id_cart)); + $this->secure_key = Tools::getValue('key', false); + if (!$this->id_order OR !$this->id_module OR !$this->secure_key OR empty($this->secure_key)) + Tools::redirect($redirectLink.(Tools::isSubmit('slowvalidation') ? '?slowvalidation' : '')); + + $order = new Order((int)($this->id_order)); + if (!Validate::isLoadedObject($order) OR $order->id_customer != self::$cookie->id_customer OR $this->secure_key != $order->secure_key) + Tools::redirect($redirectLink); + $module = Module::getInstanceById((int)($this->id_module)); + if ($order->payment != $module->displayName) + Tools::redirect($redirectLink); + } + + public function process() + { + parent::process(); + self::$smarty->assign(array( + 'is_guest' => self::$cookie->is_guest, + 'HOOK_ORDER_CONFIRMATION' => Hook::orderConfirmation((int)($this->id_order)), + 'HOOK_PAYMENT_RETURN' => Hook::paymentReturn((int)($this->id_order), (int)($this->id_module)) + )); + + if (self::$cookie->is_guest) + { + self::$smarty->assign(array( + 'id_order' => $this->id_order, + 'id_order_formatted' => sprintf('#%06d', $this->id_order) + )); + /* If guest we clear the cookie for security reason */ + self::$cookie->logout(); + } + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'order-confirmation.tpl'); + } +} + diff --git a/controllers/OrderController.php b/controllers/OrderController.php new file mode 100644 index 000000000..0c627667b --- /dev/null +++ b/controllers/OrderController.php @@ -0,0 +1,268 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +ControllerFactory::includeController('ParentOrderController'); + +class OrderControllerCore extends ParentOrderController +{ + public $step; + + public function init() + { + parent::init(); + + $this->step = (int)(Tools::getValue('step')); + if (!$this->nbProducts) + $this->step = -1; + } + + public function preProcess() + { + global $isVirtualCart, $orderTotal; + + parent::preProcess(); + + /* If some products have disappear */ + if (!self::$cart->checkQuantities()) + { + $this->step = 0; + $this->errors[] = Tools::displayError('An item in your cart is no longer available for this quantity, you cannot proceed with your order.'); + } + + /* Check minimal amount */ + $currency = Currency::getCurrency((int)self::$cart->id_currency); + + $orderTotal = self::$cart->getOrderTotal(); + $minimalPurchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); + + if ($orderTotal < $minimalPurchase) + { + $this->step = 0; + $this->errors[] = Tools::displayError('A minimum purchase total of').' '.Tools::displayPrice($minimalPurchase, $currency). + ' '.Tools::displayError('is required in order to validate your order.'); + } + + if (!self::$cookie->isLogged(true) AND in_array($this->step, array(1, 2, 3))) + Tools::redirect('authentication.php?back=order.php?step='.$this->step); + + if ($this->nbProducts) + self::$smarty->assign('virtual_cart', $isVirtualCart); + } + + public function displayHeader() + { + if (!Tools::getValue('ajax')) + parent::displayHeader(); + } + + public function process() + { + parent::process(); + + /* 4 steps to the order */ + switch ((int)$this->step) + { + case -1; + self::$smarty->assign('empty', 1); + break; + case 1: + $this->_assignAddress(); + break; + case 2: + if(Tools::isSubmit('processAddress')) + $this->processAddress(); + $this->autoStep(); + $this->_assignCarrier(); + break; + case 3: + if(Tools::isSubmit('processCarrier')) + $this->processCarrier(); + $this->autoStep(); + /* Bypass payment step if total is 0 */ + if (($id_order = $this->_checkFreeOrder()) AND $id_order) + { + if (self::$cookie->is_guest) + { + $email = self::$cookie->email; + self::$cookie->logout(); // If guest we clear the cookie for security reason + Tools::redirect('guest-tracking.php?id_order='.(int)$id_order.'&email='.urlencode($email)); + } + else + Tools::redirect('history.php'); + } + $this->_assignPayment(); + break; + default: + $this->_assignSummaryInformations(); + break; + } + } + + public function displayContent() + { + parent::displayContent(); + + switch ((int)$this->step) + { + case -1: + self::$smarty->display(_PS_THEME_DIR_.'shopping-cart.tpl'); + break; + case 1: + self::$smarty->display(_PS_THEME_DIR_.'order-address.tpl'); + break; + case 2: + self::$smarty->display(_PS_THEME_DIR_.'order-carrier.tpl'); + break; + case 3: + self::$smarty->display(_PS_THEME_DIR_.'order-payment.tpl'); + break; + default: + self::$smarty->display(_PS_THEME_DIR_.'shopping-cart.tpl'); + break; + } + } + + public function displayFooter() + { + if (!Tools::getValue('ajax')) + parent::displayFooter(); + } + + /* Order process controller */ + public function autoStep() + { + global $isVirtualCart; + + if ($this->step >= 2 AND (!self::$cart->id_address_delivery OR !self::$cart->id_address_invoice)) + Tools::redirect('order.php?step=1'); + $delivery = new Address((int)(self::$cart->id_address_delivery)); + $invoice = new Address((int)(self::$cart->id_address_invoice)); + if ($delivery->deleted OR $invoice->deleted) + { + if ($delivery->deleted) + unset(self::$cart->id_address_delivery); + if ($invoice->deleted) + unset(self::$cart->id_address_invoice); + Tools::redirect('order.php?step=1'); + } + elseif ($this->step >= 3 AND !self::$cart->id_carrier AND !$isVirtualCart) + Tools::redirect('order.php?step=2'); + } + + /* + * Manage address + */ + public function processAddress() + { + if (!Tools::isSubmit('id_address_delivery') OR !Address::isCountryActiveById((int)Tools::getValue('id_address_delivery'))) + $this->errors[] = Tools::displayError('This address is not in a valid area.'); + else + { + self::$cart->id_address_delivery = (int)(Tools::getValue('id_address_delivery')); + self::$cart->id_address_invoice = Tools::isSubmit('same') ? self::$cart->id_address_delivery : (int)(Tools::getValue('id_address_invoice')); + if (!self::$cart->update()) + $this->errors[] = Tools::displayError('An error occurred while updating your cart.'); + + if (Tools::isSubmit('message')) + $this->_updateMessage(Tools::getValue('message')); + } + if (sizeof($this->errors)) + { + if (Tools::getValue('ajax')) + die('{"hasError" : true, "errors" : ["'.implode('\',\'', $this->errors).'"]}'); + $this->step = 1; + } + if (Tools::getValue('ajax')) + die(true); + } + + /* Carrier step */ + protected function processCarrier() + { + global $orderTotal; + + parent::_processCarrier(); + + if (sizeof($this->errors)) + { + self::$smarty->assign('errors', $this->errors); + $this->_assignCarrier(); + $this->step = 2; + $this->displayContent(); + include(dirname(__FILE__).'/../footer.php'); + exit; + } + $orderTotal = self::$cart->getOrderTotal(); + } + + /* Address step */ + protected function _assignAddress() + { + parent::_assignAddress(); + + self::$smarty->assign('cart', self::$cart); + if (self::$cookie->is_guest) + Tools::redirect('order.php?step=2'); + } + + /* Carrier step */ + protected function _assignCarrier() + { + global $defaultCountry; + + if (isset(self::$cookie->id_customer)) + $customer = new Customer((int)(self::$cookie->id_customer)); + else + die(Tools::displayError('Fatal error: No customer')); + // Assign carrier + parent::_assignCarrier(); + // Assign wrapping and TOS + $this->_assignWrappingAndTOS(); + + self::$smarty->assign('is_guest' ,(isset(self::$cookie->is_guest) ? self::$cookie->is_guest : 0)); + } + + /* Payment step */ + protected function _assignPayment() + { + global $orderTotal; + + // Redirect instead of displaying payment modules if any module are grefted on + Hook::backBeforePayment('order.php?step=3'); + + /* We may need to display an order summary */ + self::$smarty->assign(self::$cart->getSummaryDetails()); + self::$smarty->assign(array( + 'total_price' => (float)($orderTotal), + 'taxes_enabled' => (int)(Configuration::get('PS_TAX')) + )); + self::$cookie->checkedTOS = '1'; + + parent::_assignPayment(); + } +} + diff --git a/controllers/OrderDetailController.php b/controllers/OrderDetailController.php new file mode 100644 index 000000000..e33ce3f85 --- /dev/null +++ b/controllers/OrderDetailController.php @@ -0,0 +1,167 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderDetailControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->authRedirection = 'history.php'; + $this->ssl = true; + + parent::__construct(); + + header("Cache-Control: no-cache, must-revalidate"); + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + } + + public function preProcess() + { + parent::preProcess(); + + if (Tools::isSubmit('submitMessage')) + { + $idOrder = (int)(Tools::getValue('id_order')); + $msgText = htmlentities(Tools::getValue('msgText'), ENT_COMPAT, 'UTF-8'); + + if (!$idOrder OR !Validate::isUnsignedId($idOrder)) + $this->errors[] = Tools::displayError('Order is no longer valid'); + elseif (empty($msgText)) + $this->errors[] = Tools::displayError('Message cannot be blank'); + elseif (!Validate::isMessage($msgText)) + $this->errors[] = Tools::displayError('Message is invalid (HTML is not allowed)'); + if(!sizeof($this->errors)) + { + $order = new Order((int)($idOrder)); + if (Validate::isLoadedObject($order) AND $order->id_customer == self::$cookie->id_customer) + { + $message = new Message(); + $message->id_customer = (int)(self::$cookie->id_customer); + $message->message = $msgText; + $message->id_order = (int)($idOrder); + $message->private = false; + $message->add(); + if (!Configuration::get('PS_MAIL_EMAIL_MESSAGE')) + $to = strval(Configuration::get('PS_SHOP_EMAIL')); + else + { + $to = new Contact((int)(Configuration::get('PS_MAIL_EMAIL_MESSAGE'))); + $to = strval($to->email); + } + $toName = strval(Configuration::get('PS_SHOP_NAME')); + $customer = new Customer((int)(self::$cookie->id_customer)); + if (Validate::isLoadedObject($customer)) + Mail::Send((int)(self::$cookie->id_lang), 'order_customer_comment', Mail::l('Message from a customer'), + array( + '{lastname}' => $customer->lastname, + '{firstname}' => $customer->firstname, + '{email}' => $customer->email, + '{id_order}' => (int)($message->id_order), + '{message}' => $message->message), + $to, $toName, $customer->email, $customer->firstname.' '.$customer->lastname); + if (Tools::getValue('ajax') != 'true') + Tools::redirect('order-detail.php?id_order='.(int)($idOrder)); + } + else + { + $this->errors[] = Tools::displayError('Order not found'); + } + } + } + + if (!$id_order = (int)(Tools::getValue('id_order')) OR !Validate::isUnsignedId($id_order)) + $this->errors[] = Tools::displayError('Order ID required'); + else + { + $order = new Order($id_order); + if (Validate::isLoadedObject($order) AND $order->id_customer == self::$cookie->id_customer) + { + $id_order_state = (int)($order->getCurrentState()); + $carrier = new Carrier((int)($order->id_carrier), (int)($order->id_lang)); + $addressInvoice = new Address((int)($order->id_address_invoice)); + $addressDelivery = new Address((int)($order->id_address_delivery)); + if ($order->total_discounts > 0) + self::$smarty->assign('total_old', (float)($order->total_paid - $order->total_discounts)); + $products = $order->getProducts(); + + $customizedDatas = Product::getAllCustomizedDatas((int)($order->id_cart)); + Product::addCustomizationPrice($products, $customizedDatas); + + $customer = new Customer($order->id_customer); + + self::$smarty->assign(array( + 'shop_name' => strval(Configuration::get('PS_SHOP_NAME')), + 'order' => $order, + 'return_allowed' => (int)($order->isReturnable()), + 'currency' => new Currency($order->id_currency), + 'order_state' => (int)($id_order_state), + 'invoiceAllowed' => (int)(Configuration::get('PS_INVOICE')), + 'invoice' => (OrderState::invoiceAvailable((int)($id_order_state)) AND $order->invoice_number), + 'order_history' => $order->getHistory((int)(self::$cookie->id_lang), false, true), + 'products' => $products, + 'discounts' => $order->getDiscounts(), + 'carrier' => $carrier, + 'address_invoice' => $addressInvoice, + 'invoiceState' => (Validate::isLoadedObject($addressInvoice) AND $addressInvoice->id_state) ? new State((int)($addressInvoice->id_state)) : false, + 'address_delivery' => $addressDelivery, + 'deliveryState' => (Validate::isLoadedObject($addressDelivery) AND $addressDelivery->id_state) ? new State((int)($addressDelivery->id_state)) : false, + 'is_guest' => false, + 'messages' => Message::getMessagesByOrderId((int)($order->id)), + 'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_, + 'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_, + 'use_tax' => Configuration::get('PS_TAX'), + 'group_use_tax' => (Group::getPriceDisplayMethod($customer->id_default_group) == PS_TAX_INC), + 'customizedDatas' => $customizedDatas)); + if ($carrier->url AND $order->shipping_number) + self::$smarty->assign('followup', str_replace('@', $order->shipping_number, $carrier->url)); + self::$smarty->assign('HOOK_ORDERDETAILDISPLAYED', Module::hookExec('orderDetailDisplayed', array('order' => $order))); + Module::hookExec('OrderDetail', array('carrier' => $carrier, 'order' => $order)); + } + else + $this->errors[] = Tools::displayError('Cannot find this order'); + } + } + + public function displayHeader() + { + if (Tools::getValue('ajax') != 'true') + parent::displayHeader(); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'order-detail.tpl'); + } + + public function displayFooter() + { + if (Tools::getValue('ajax') != 'true') + parent::displayFooter(); + } +} + diff --git a/controllers/OrderFollowController.php b/controllers/OrderFollowController.php new file mode 100644 index 000000000..2fee624fc --- /dev/null +++ b/controllers/OrderFollowController.php @@ -0,0 +1,106 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderFollowControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'order-follow.php'; + $this->authRedirection = 'order-follow.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function preProcess() + { + parent::preProcess(); + + if (Tools::isSubmit('submitReturnMerchandise')) + { + $customizationQtyInput = Tools::getValue('customization_qty_input'); + + if (!$id_order = (int)(Tools::getValue('id_order'))) + Tools::redirect('history.php'); + if (!$order_qte_input = Tools::getValue('order_qte_input')) + Tools::redirect('order-follow.php?errorDetail1'); + if ($customizationIds = Tools::getValue('customization_ids') AND !$customizationQtyInput) + Tools::redirect('order-follow.php?errorDetail1'); + if (!$ids_order_detail = Tools::getValue('ids_order_detail') AND !$customizationIds) + Tools::redirect('order-follow.php?errorDetail2'); + + $order = new Order((int)($id_order)); + if (!$order->isReturnable()) Tools::redirect('order-follow.php?errorNotReturnable'); + if ($order->id_customer != self::$cookie->id_customer) + die(Tools::displayError()); + $orderReturn = new OrderReturn(); + $orderReturn->id_customer = (int)(self::$cookie->id_customer); + $orderReturn->id_order = $id_order; + $orderReturn->question = strval(Tools::getValue('returnText')); + if (empty($orderReturn->question)) + Tools::redirect('order-follow.php?errorMsg'); + if (!$orderReturn->checkEnoughProduct($ids_order_detail, $order_qte_input, $customizationIds, $customizationQtyInput)) + Tools::redirect('order-follow.php?errorQuantity'); + + $orderReturn->state = 1; + $orderReturn->add(); + $orderReturn->addReturnDetail($ids_order_detail, $order_qte_input, $customizationIds, $customizationQtyInput); + Module::hookExec('orderReturn', array('orderReturn' => $orderReturn)); + Tools::redirect('order-follow.php'); + } + + $ordersReturn = OrderReturn::getOrdersReturn((int)(self::$cookie->id_customer)); + if (Tools::isSubmit('errorQuantity')) + self::$smarty->assign('errorQuantity', true); + elseif (Tools::isSubmit('errorMsg')) + self::$smarty->assign('errorMsg', true); + elseif (Tools::isSubmit('errorDetail1')) + self::$smarty->assign('errorDetail1', true); + elseif (Tools::isSubmit('errorDetail2')) + self::$smarty->assign('errorDetail2', true); + elseif (Tools::isSubmit('errorNotReturnable')) + self::$smarty->assign('errorNotReturnable',true); + + self::$smarty->assign('ordersReturn', $ordersReturn); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'history.css'); + Tools::addCSS(_THEME_CSS_DIR_.'addresses.css'); + Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.scrollTo-1.4.2-min.js', _THEME_JS_DIR_.'history.js')); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'order-follow.tpl'); + } +} + diff --git a/controllers/OrderOpcController.php b/controllers/OrderOpcController.php new file mode 100644 index 000000000..29e4aa346 --- /dev/null +++ b/controllers/OrderOpcController.php @@ -0,0 +1,451 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +ControllerFactory::includeController('ParentOrderController'); + +class OrderOpcControllerCore extends ParentOrderController +{ + public $isLogged; + + public function preProcess() + { + parent::preProcess(); + if ($this->nbProducts) + self::$smarty->assign('virtual_cart', false); + $this->isLogged = (bool)((int)(self::$cookie->id_customer) AND Customer::customerIdExistsStatic((int)(self::$cookie->id_customer))); + + if (self::$cart->nbProducts()) + { + if (Tools::isSubmit('ajax')) + { + if (Tools::isSubmit('method')) + { + switch (Tools::getValue('method')) + { + case 'updateMessage': + if (Tools::isSubmit('message')) + { + $txtMessage = urldecode(Tools::getValue('message')); + $this->_updateMessage($txtMessage); + if (sizeof($this->errors)) + die('{"hasError" : true, "errors" : ["'.implode('\',\'', $this->errors).'"]}'); + die(true); + } + break; + case 'updateCarrierAndGetPayments': + if (Tools::isSubmit('id_carrier') AND Tools::isSubmit('recyclable') AND Tools::isSubmit('gift') AND Tools::isSubmit('gift_message')) + { + if ($this->_processCarrier()) + { + $return = array( + 'summary' => self::$cart->getSummaryDetails(), + 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'), + 'HOOK_PAYMENT' => self::_getPaymentMethods() + ); + die(Tools::jsonEncode($return)); + } + else + $this->errors[] = Tools::displayError('Error occurred updating cart.'); + if (sizeof($this->errors)) + die('{"hasError" : true, "errors" : ["'.implode('\',\'', $this->errors).'"]}'); + exit; + } + break; + case 'updateTOSStatusAndGetPayments': + if (Tools::isSubmit('checked')) + { + self::$cookie->checkedTOS = (int)(Tools::getValue('checked')); + die(Tools::jsonEncode(array( + 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'), + 'HOOK_PAYMENT' => self::_getPaymentMethods() + ))); + } + break; + case 'getCarrierList': + die(Tools::jsonEncode(self::_getCarrierList())); + break; + case 'editCustomer': + if (!$this->isLogged) + exit; + $customer = new Customer((int)self::$cookie->id_customer); + if (Tools::getValue('years')) + $customer->birthday = (int)Tools::getValue('years').'-'.(int)Tools::getValue('months').'-'.(int)Tools::getValue('days'); + $_POST['lastname'] = $_POST['customer_lastname']; + $_POST['firstname'] = $_POST['customer_firstname']; + $this->errors = $customer->validateControler(); + $customer->newsletter = (int)Tools::isSubmit('newsletter'); + $customer->optin = (int)Tools::isSubmit('optin'); + $return = array( + 'hasError' => !empty($this->errors), + 'errors' => $this->errors, + 'id_customer' => (int)self::$cookie->id_customer, + 'token' => Tools::getToken(false) + ); + if (!sizeof($this->errors)) + $return['isSaved'] = (bool)$customer->update(); + else + $return['isSaved'] = false; + die(Tools::jsonEncode($return)); + break; + case 'getAddressBlockAndCarriersAndPayments': + if (self::$cookie->isLogged()) + { + if (file_exists(_PS_MODULE_DIR_.'blockuserinfo/blockuserinfo.php')) + { + include_once(_PS_MODULE_DIR_.'blockuserinfo/blockuserinfo.php'); + $blockUserInfo = new BlockUserInfo(); + } + self::$smarty->assign('isVirtualCart', self::$cart->isVirtualCart()); + $this->_assignAddress(); + // Wrapping fees + $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')); + $wrapping_fees_tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX'))); + $wrapping_fees_tax_inc = $wrapping_fees * (1 + (((float)($wrapping_fees_tax->rate) / 100))); + $return = array( + 'order_opc_adress' => self::$smarty->fetch(_PS_THEME_DIR_.'order-address.tpl'), + 'block_user_info' => (isset($blockUserInfo) ? $blockUserInfo->hookTop(array()) : ''), + 'carrier_list' => self::_getCarrierList(), + 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'), + 'HOOK_PAYMENT' => self::_getPaymentMethods(), + 'gift_price' => Tools::displayPrice(Tools::convertPrice(Product::getTaxCalculationMethod() == 1 ? $wrapping_fees : $wrapping_fees_tax_inc, new Currency((int)(self::$cookie->id_currency)))) + ); + die(Tools::jsonEncode($return)); + } + die(Tools::displayError()); + break; + case 'makeFreeOrder': + /* Bypass payment step if total is 0 */ + if (($id_order = $this->_checkFreeOrder()) AND $id_order) + { + $email = self::$cookie->email; + if (self::$cookie->is_guest) + self::$cookie->logout(); // If guest we clear the cookie for security reason + die('freeorder:'.$id_order.':'.$email); + } + exit; + break; + case 'updateAddressesSelected': + $id_address_delivery = (int)(Tools::getValue('id_address_delivery')); + $id_address_invoice = (int)(Tools::getValue('id_address_invoice')); + $address_delivery = new Address((int)(Tools::getValue('id_address_delivery'))); + $address_invoice = ((int)(Tools::getValue('id_address_delivery')) == (int)(Tools::getValue('id_address_invoice')) ? $address_delivery : new Address((int)(Tools::getValue('id_address_invoice')))); + + if (!Address::isCountryActiveById((int)(Tools::getValue('id_address_delivery')))) + $this->errors[] = Tools::displayError('This address is not in a valid area.'); + elseif (!Validate::isLoadedObject($address_delivery) OR !Validate::isLoadedObject($address_invoice) OR $address_invoice->deleted OR $address_delivery->deleted) + $this->errors[] = Tools::displayError('This address is invalid.'); + else + { + self::$cart->id_address_delivery = (int)(Tools::getValue('id_address_delivery')); + self::$cart->id_address_invoice = Tools::isSubmit('same') ? self::$cart->id_address_delivery : (int)(Tools::getValue('id_address_invoice')); + if (!self::$cart->update()) + $this->errors[] = Tools::displayError('An error occurred while updating your cart.'); + if (!sizeof($this->errors)) + { + if (self::$cookie->id_customer) + { + $customer = new Customer((int)(self::$cookie->id_customer)); + $groups = $customer->getGroups(); + } + else + $groups = array(1); + $result = self::_getCarrierList(); + // Wrapping fees + $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')); + $wrapping_fees_tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX'))); + $wrapping_fees_tax_inc = $wrapping_fees * (1 + (((float)($wrapping_fees_tax->rate) / 100))); + $result = array_merge($result, array( + 'summary' => self::$cart->getSummaryDetails(), + 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'), + 'HOOK_PAYMENT' => self::_getPaymentMethods(), + 'gift_price' => Tools::displayPrice(Tools::convertPrice(Product::getTaxCalculationMethod() == 1 ? $wrapping_fees : $wrapping_fees_tax_inc, new Currency((int)(self::$cookie->id_currency)))) + )); + die(Tools::jsonEncode($result)); + } + } + if (sizeof($this->errors)) + die('{"hasError" : true, "errors" : ["'.implode('\',\'', $this->errors).'"]}'); + break; + default: + exit; + } + } + exit; + } + } + elseif (Tools::isSubmit('ajax')) + exit; + } + + public function setMedia() + { + parent::setMedia(); + + // Adding CSS style sheet + Tools::addCSS(_THEME_CSS_DIR_.'order-opc.css'); + // Adding JS files + Tools::addJS(_THEME_JS_DIR_.'order-opc.js'); + Tools::addJs(_PS_JS_DIR_.'jquery/jquery.scrollTo-1.4.2-min.js'); + Tools::addJS(_THEME_JS_DIR_.'tools/statesManagement.js'); + } + + public function process() + { + // SHOPPING CART + $this->_assignSummaryInformations(); + // WRAPPING AND TOS + $this->_assignWrappingAndTOS(); + + $selectedCountry = (int)(Configuration::get('PS_COUNTRY_DEFAULT')); + $countries = Country::getCountries((int)(self::$cookie->id_lang), true); + self::$smarty->assign(array( + 'isLogged' => $this->isLogged, + 'isGuest' => isset(self::$cookie->is_guest) ? self::$cookie->is_guest : 0, + 'countries' => $countries, + 'sl_country' => isset($selectedCountry) ? $selectedCountry : 0, + 'PS_GUEST_CHECKOUT_ENABLED' => Configuration::get('PS_GUEST_CHECKOUT_ENABLED'), + 'errorCarrier' => Tools::displayError('You must choose a carrier before', false), + 'errorTOS' => Tools::displayError('You must accept terms of service before', false), + 'isPaymentStep' => (bool)(isset($_GET['isPaymentStep']) AND $_GET['isPaymentStep']) + )); + $years = Tools::dateYears(); + $months = Tools::dateMonths(); + $days = Tools::dateDays(); + self::$smarty->assign(array( + 'years' => $years, + 'months' => $months, + 'days' => $days, + )); + + /* Load guest informations */ + if ($this->isLogged AND self::$cookie->is_guest) + self::$smarty->assign('guestInformations', $this->_getGuestInformations()); + + if ($this->isLogged) + $this->_assignAddress(); // ADDRESS + // CARRIER + $this->_assignCarrier(); + // PAYMENT + $this->_assignPayment(); + Tools::safePostVars(); + + self::$smarty->assign('newsletter', (int)Module::getInstanceByName('blocknewsletter')->active); + } + + public function displayHeader() + { + if (Tools::getValue('ajax') != 'true') + parent::displayHeader(); + } + + public function displayContent() + { + parent::displayContent(); + + self::$smarty->display(_PS_THEME_DIR_.'errors.tpl'); + self::$smarty->display(_PS_THEME_DIR_.'order-opc.tpl'); + } + + public function displayFooter() + { + if (Tools::getValue('ajax') != 'true') + parent::displayFooter(); + } + + protected function _getGuestInformations() + { + $customer = new Customer((int)(self::$cookie->id_customer)); + $address_delivery = new Address((int)self::$cart->id_address_delivery); + + if ($customer->birthday) + $birthday = explode('-', $customer->birthday); + else + $birthday = array('0', '0', '0'); + + return array( + 'id_customer' => (int)(self::$cookie->id_customer), + 'email' => Tools::htmlentitiesUTF8($customer->email), + 'customer_lastname' => Tools::htmlentitiesUTF8($customer->lastname), + 'customer_firstname' => Tools::htmlentitiesUTF8($customer->firstname), + 'newsletter' => (int)$customer->newsletter, + 'optin' => (int)$customer->optin, + 'id_address_delivery' => (int)self::$cart->id_address_delivery, + 'company' => Tools::htmlentitiesUTF8($address_delivery->company), + 'lastname' => Tools::htmlentitiesUTF8($address_delivery->lastname), + 'firstname' => Tools::htmlentitiesUTF8($address_delivery->firstname), + 'vat_number' => Tools::htmlentitiesUTF8($address_delivery->vat_number), + 'dni' => Tools::htmlentitiesUTF8($address_delivery->dni), + 'address1' => Tools::htmlentitiesUTF8($address_delivery->address1), + 'postcode' => Tools::htmlentitiesUTF8($address_delivery->postcode), + 'city' => Tools::htmlentitiesUTF8($address_delivery->city), + 'phone' => Tools::htmlentitiesUTF8($address_delivery->phone), + 'phone_mobile' => Tools::htmlentitiesUTF8($address_delivery->phone_mobile), + 'id_country' => (int)($address_delivery->id_country), + 'id_state' => (int)($address_delivery->id_state), + 'id_gender' => (int)$customer->id_gender, + 'sl_year' => $birthday[0], + 'sl_month' => $birthday[1], + 'sl_day' => $birthday[2] + ); + } + + protected function _assignCarrier() + { + if (!$this->isLogged) + { + $carriers = Carrier::getCarriersForOrder(Country::getIdZone((int)Configuration::get('PS_COUNTRY_DEFAULT'))); + self::$smarty->assign(array( + 'checked' => $this->_setDefaultCarrierSelection($carriers), + 'carriers' => $carriers, + 'default_carrier' => (int)(Configuration::get('PS_CARRIER_DEFAULT')), + 'HOOK_EXTRACARRIER' => NULL, + 'HOOK_BEFORECARRIER' => Module::hookExec('beforeCarrier', array('carriers' => $carriers)) + )); + } + else + parent::_assignCarrier(); + } + + protected function _assignPayment() + { + self::$smarty->assign(array( + 'HOOK_TOP_PAYMENT' => ($this->isLogged ? Module::hookExec('paymentTop') : ''), + 'HOOK_PAYMENT' => self::_getPaymentMethods() + )); + } + + protected function _getPaymentMethods() + { + if (!$this->isLogged) + return '

'.Tools::displayError('Please sign in to see payment methods').'

'; + if (self::$cart->OrderExists()) + return '

'.Tools::displayError('Error: this order is already validated').'

'; + if (!self::$cart->id_customer OR !Customer::customerIdExistsStatic(self::$cart->id_customer) OR Customer::isBanned(self::$cart->id_customer)) + return '

'.Tools::displayError('Error: no customer').'

'; + $address_delivery = new Address(self::$cart->id_address_delivery); + $address_invoice = (self::$cart->id_address_delivery == self::$cart->id_address_invoice ? $address_delivery : new Address(self::$cart->id_address_invoice)); + if (!self::$cart->id_address_delivery OR !self::$cart->id_address_invoice OR !Validate::isLoadedObject($address_delivery) OR !Validate::isLoadedObject($address_invoice) OR $address_invoice->deleted OR $address_delivery->deleted) + return '

'.Tools::displayError('Error: please choose an address').'

'; + if (!self::$cart->id_carrier AND !self::$cart->isVirtualCart()) + return '

'.Tools::displayError('Error: please choose a carrier').'

'; + elseif (self::$cart->id_carrier != 0) + { + $carrier = new Carrier((int)(self::$cart->id_carrier)); + if (!Validate::isLoadedObject($carrier) OR $carrier->deleted OR !$carrier->active) + return '

'.Tools::displayError('Error: the carrier is invalid').'

'; + } + if (!self::$cart->id_currency) + return '

'.Tools::displayError('Error: no currency has been selected').'

'; + if (!self::$cookie->checkedTOS AND Configuration::get('PS_CONDITIONS')) + return '

'.Tools::displayError('Please accept Terms of Service').'

'; + + /* If some products have disappear */ + if (!self::$cart->checkQuantities()) + return '

'.Tools::displayError('An item in your cart is no longer available, you cannot proceed with your order.').'

'; + + /* Check minimal amount */ + $currency = Currency::getCurrency((int)self::$cart->id_currency); + + $orderTotal = self::$cart->getOrderTotal(); + $minimalPurchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); + if ($orderTotal < $minimalPurchase) + return '

'.Tools::displayError('A minimum purchase total of').' '.Tools::displayPrice($minimalPurchase, $currency). + ' '.Tools::displayError('is required in order to validate your order.').'

'; + + /* Bypass payment step if total is 0 */ + if (self::$cart->getOrderTotal() <= 0) + return '

'; + + $return = Module::hookExecPayment(); + if (!$return) + return '

'.Tools::displayError('No payment method is available').'

'; + return $return; + } + + protected function _getCarrierList() + { + $address_delivery = new Address(self::$cart->id_address_delivery); + if (self::$cookie->id_customer) + { + $customer = new Customer((int)(self::$cookie->id_customer)); + $groups = $customer->getGroups(); + } + else + $groups = array(1); + if (!Address::isCountryActiveById((int)(self::$cart->id_address_delivery))) + $this->errors[] = Tools::displayError('This address is not in a valid area.'); + elseif (!Validate::isLoadedObject($address_delivery) OR $address_delivery->deleted) + $this->errors[] = Tools::displayError('This address is invalid.'); + else + { + $carriers = Carrier::getCarriersForOrder((int)Address::getZoneById((int)($address_delivery->id)), $groups); + $result = array( + 'checked' => $this->_setDefaultCarrierSelection($carriers), + 'carriers' => $carriers, + 'HOOK_BEFORECARRIER' => Module::hookExec('beforeCarrier', array('carriers' => $carriers)), + 'HOOK_EXTRACARRIER' => Module::hookExec('extraCarrier', array('address' => $address_delivery)) + ); + return $result; + } + if (sizeof($this->errors)) + return array( + 'hasError' => true, + 'errors' => $this->errors + ); + } + + protected function _setDefaultCarrierSelection($carriers) + { + if (sizeof($carriers)) + { + $defaultCarrierIsPresent = false; + if (self::$cart->id_carrier != 0) + foreach ($carriers AS $carrier) + if ($carrier['id_carrier'] == self::$cart->id_carrier) + { + $defaultCarrierIsPresent = true; + self::$cart->id_carrier = $carrier['id_carrier']; + } + if (!$defaultCarrierIsPresent) + foreach ($carriers AS $carrier) + if ($carrier['id_carrier'] == Configuration::get('PS_CARRIER_DEFAULT')) + { + $defaultCarrierIsPresent = true; + self::$cart->id_carrier = $carrier['id_carrier']; + } + if (!$defaultCarrierIsPresent) + self::$cart->id_carrier = $carriers[0]['id_carrier']; + } + else + self::$cart->id_carrier = 0; + if (self::$cart->update()) + return self::$cart->id_carrier; + return 0; + } +} + + diff --git a/controllers/OrderReturnController.php b/controllers/OrderReturnController.php new file mode 100644 index 000000000..367533d64 --- /dev/null +++ b/controllers/OrderReturnController.php @@ -0,0 +1,99 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderReturnControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'order-return.php'; + $this->authRedirection = 'order-follow.php'; + $this->ssl = true; + + parent::__construct(); + + header("Cache-Control: no-cache, must-revalidate"); + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + } + + public function preProcess() + { + parent::preProcess(); + + if (!isset($_GET['id_order_return']) OR !Validate::isUnsignedId($_GET['id_order_return'])) + $this->errors[] = Tools::displayError('Order ID required'); + else + { + $orderRet = new OrderReturn((int)($_GET['id_order_return'])); + if (Validate::isLoadedObject($orderRet) AND $orderRet->id_customer == self::$cookie->id_customer) + { + $order = new Order((int)($orderRet->id_order)); + if (Validate::isLoadedObject($order)) + { + $state = new OrderReturnState((int)($orderRet->state)); + self::$smarty->assign(array( + 'orderRet' => $orderRet, + 'order' => $order, + 'state_name' => $state->name[(int)(self::$cookie->id_lang)], + 'return_allowed' => false, + 'products' => OrderReturn::getOrdersReturnProducts((int)($orderRet->id), $order), + 'returnedCustomizations' => OrderReturn::getReturnedCustomizedProducts((int)($orderRet->id_order)), + 'customizedDatas' => Product::getAllCustomizedDatas((int)($order->id_cart)) + )); + } + else + $this->errors[] = Tools::displayError('Cannot find this order return'); + } + else + $this->errors[] = Tools::displayError('Cannot find this order return'); + } + + self::$smarty->assign(array( + 'errors' => $this->errors, + 'nbdaysreturn' => (int)(Configuration::get('PS_ORDER_RETURN_NB_DAYS')) + )); + } + + public function displayHeader() + { + if (Tools::getValue('ajax') != 'true') + parent::displayHeader(); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'order-return.tpl'); + } + + public function displayFooter() + { + if (Tools::getValue('ajax') != 'true') + parent::displayFooter(); + } +} + diff --git a/controllers/OrderSlipController.php b/controllers/OrderSlipController.php new file mode 100644 index 000000000..2b3b6feaa --- /dev/null +++ b/controllers/OrderSlipController.php @@ -0,0 +1,60 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class OrderSlipControllerCore extends FrontController +{ + public function __construct() + { + $this->auth = true; + $this->php_self = 'order-slip.php'; + $this->authRedirection = 'order-slip.php'; + $this->ssl = true; + + parent::__construct(); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'history.css'); + Tools::addCSS(_THEME_CSS_DIR_.'addresses.css'); + Tools::addJS(array(_PS_JS_DIR_.'jquery/jquery.scrollTo-1.4.2-min.js',_THEME_JS_DIR_.'history.js')); + } + + public function process() + { + parent::process(); + self::$smarty->assign('ordersSlip', OrderSlip::getOrdersSlip((int)(self::$cookie->id_customer))); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'order-slip.tpl'); + } +} + diff --git a/controllers/PageNotFoundController.php b/controllers/PageNotFoundController.php new file mode 100644 index 000000000..7776a60d9 --- /dev/null +++ b/controllers/PageNotFoundController.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class PageNotFoundControllerCore extends FrontController +{ + public function displayContent() + { + self::$smarty->display(_PS_THEME_DIR_.'404.tpl'); + } +} + diff --git a/controllers/ParentOrderController.php b/controllers/ParentOrderController.php new file mode 100644 index 000000000..347c1a02d --- /dev/null +++ b/controllers/ParentOrderController.php @@ -0,0 +1,391 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/* Class FreeOrder to use PaymentModule (abstract class, cannot be instancied) */ +class FreeOrder extends PaymentModule {} + +class ParentOrderControllerCore extends FrontController +{ + public $nbProducts; + + public function __construct() + { + $this->ssl = true; + parent::__construct(); + + /* Disable some cache related bugs on the cart/order */ + header('Cache-Control: no-cache, must-revalidate'); + header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); + } + + public function init() + { + parent::init(); + $this->nbProducts = self::$cart->nbProducts(); + } + + public function preProcess() + { + global $isVirtualCart; + + parent::preProcess(); + + // Redirect to the good order process + if (Configuration::get('PS_ORDER_PROCESS_TYPE') == 0 AND strpos($_SERVER['PHP_SELF'], 'order.php') === false) + Tools::redirect('order.php'); + if (Configuration::get('PS_ORDER_PROCESS_TYPE') == 1 AND strpos($_SERVER['PHP_SELF'], 'order-opc.php') === false) + { + if (isset($_GET['step']) AND $_GET['step'] == 3) + Tools::redirect('order-opc.php?isPaymentStep=true'); + Tools::redirect('order-opc.php'); + } + + if (Configuration::get('PS_CATALOG_MODE')) + $this->errors[] = Tools::displayError('This store has not accepted your new order.'); + + if (Tools::isSubmit('submitReorder') AND $id_order = (int)Tools::getValue('id_order')) + { + $oldCart = new Cart(Order::getCartIdStatic((int)$id_order, (int)self::$cookie->id_customer)); + $duplication = $oldCart->duplicate(); + if (!$duplication OR !Validate::isLoadedObject($duplication['cart'])) + $this->errors[] = Tools::displayError('Sorry, we cannot renew your order.'); + elseif (!$duplication['success']) + $this->errors[] = Tools::displayError('Missing items - we are unable renew your order'); + else + { + self::$cookie->id_cart = $duplication['cart']->id; + self::$cookie->write(); + if (Configuration::get('PS_ORDER_PROCESS_TYPE') == 1) + Tools::redirect('order-opc.php'); + Tools::redirect('order.php'); + } + } + + if ($this->nbProducts) + { + if (Tools::isSubmit('submitAddDiscount') AND Tools::getValue('discount_name')) + { + $discountName = Tools::getValue('discount_name'); + if (!Validate::isDiscountName($discountName)) + $this->errors[] = Tools::displayError('Voucher name invalid.'); + else + { + $discount = new Discount((int)(Discount::getIdByName($discountName))); + if (Validate::isLoadedObject($discount)) + { + if ($tmpError = self::$cart->checkDiscountValidity($discount, self::$cart->getDiscounts(), self::$cart->getOrderTotal(), self::$cart->getProducts(), true)) + $this->errors[] = $tmpError; + } + else + $this->errors[] = Tools::displayError('Voucher name invalid.'); + if (!sizeof($this->errors)) + { + self::$cart->addDiscount((int)($discount->id)); + Tools::redirect('order-opc.php'); + } + } + self::$smarty->assign(array( + 'errors' => $this->errors, + 'discount_name' => Tools::safeOutput($discountName) + )); + } + elseif (isset($_GET['deleteDiscount']) AND Validate::isUnsignedId($_GET['deleteDiscount'])) + { + self::$cart->deleteDiscount((int)($_GET['deleteDiscount'])); + Tools::redirect('order-opc.php'); + } + + /* Is there only virtual product in cart */ + if ($isVirtualCart = self::$cart->isVirtualCart()) + $this->_setNoCarrier(); + } + + self::$smarty->assign('back', Tools::safeOutput(Tools::getValue('back'))); + } + + public function setMedia() + { + parent::setMedia(); + + // Adding CSS style sheet + Tools::addCSS(_THEME_CSS_DIR_.'addresses.css'); + Tools::addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'screen'); + + // Adding JS files + Tools::addJS(_THEME_JS_DIR_.'tools.js'); + if ((Configuration::get('PS_ORDER_PROCESS_TYPE') == 0 AND Tools::getValue('step') == 1) OR Configuration::get('PS_ORDER_PROCESS_TYPE') == 1) + Tools::addJS(_THEME_JS_DIR_.'order-address.js'); + Tools::addJS(_PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js'); + if ((int)(Configuration::get('PS_BLOCK_CART_AJAX')) OR Configuration::get('PS_ORDER_PROCESS_TYPE') == 1) + { + Tools::addJS(_THEME_JS_DIR_.'cart-summary.js'); + Tools::addJS(_PS_JS_DIR_.'jquery/jquery-typewatch.pack.js'); + } + + } + + /** + * @return boolean + */ + protected function _checkFreeOrder() + { + if (self::$cart->getOrderTotal() <= 0) + { + $order = new FreeOrder(); + $order->free_order_class = true; + $order->validateOrder((int)(self::$cart->id), _PS_OS_PAYMENT_, 0, Tools::displayError('Free order', false)); + return (int)Order::getOrderByCartId((int)self::$cart->id); + } + return false; + } + + protected function _updateMessage($messageContent) + { + if ($messageContent) + { + if (!Validate::isMessage($messageContent)) + $this->errors[] = Tools::displayError('Invalid message'); + elseif ($oldMessage = Message::getMessageByCartId((int)(self::$cart->id))) + { + $message = new Message((int)($oldMessage['id_message'])); + $message->message = htmlentities($messageContent, ENT_COMPAT, 'UTF-8'); + $message->update(); + } + else + { + $message = new Message(); + $message->message = htmlentities($messageContent, ENT_COMPAT, 'UTF-8'); + $message->id_cart = (int)(self::$cart->id); + $message->id_customer = (int)(self::$cart->id_customer); + $message->add(); + } + } + else + { + if ($oldMessage = Message::getMessageByCartId((int)(self::$cart->id))) + { + $message = new Message((int)($oldMessage['id_message'])); + $message->delete(); + } + } + return true; + } + + protected function _processCarrier() + { + self::$cart->recyclable = (int)(Tools::getValue('recyclable')); + self::$cart->gift = (int)(Tools::getValue('gift')); + if ((int)(Tools::getValue('gift'))) + { + if (!Validate::isMessage($_POST['gift_message'])) + $this->errors[] = Tools::displayError('Invalid gift message'); + else + self::$cart->gift_message = strip_tags($_POST['gift_message']); + } + + if (isset(self::$cookie->id_customer) AND self::$cookie->id_customer) + { + $address = new Address((int)(self::$cart->id_address_delivery)); + if (!($id_zone = Address::getZoneById($address->id))) + $this->errors[] = Tools::displayError('No zone match with your address'); + } + else + $id_zone = Country::getIdZone((int)Configuration::get('PS_COUNTRY_DEFAULT')); + + if (Validate::isInt(Tools::getValue('id_carrier')) AND sizeof(Carrier::checkCarrierZone((int)(Tools::getValue('id_carrier')), (int)($id_zone)))) + self::$cart->id_carrier = (int)(Tools::getValue('id_carrier')); + elseif (!self::$cart->isVirtualCart() AND (int)(Tools::getValue('id_carrier')) != 0) + $this->errors[] = Tools::displayError('Invalid carrier or no carrier selected'); + + Module::hookExec('processCarrier', array('cart' => self::$cart)); + + return self::$cart->update(); + } + + protected function _assignSummaryInformations() + { + global $currency; + + if (file_exists(_PS_SHIP_IMG_DIR_.(int)(self::$cart->id_carrier).'.jpg')) + self::$smarty->assign('carrierPicture', 1); + $summary = self::$cart->getSummaryDetails(); + $customizedDatas = Product::getAllCustomizedDatas((int)(self::$cart->id)); + Product::addCustomizationPrice($summary['products'], $customizedDatas); + + if ($free_ship = Tools::convertPrice((float)(Configuration::get('PS_SHIPPING_FREE_PRICE')), new Currency((int)(self::$cart->id_currency)))) + { + $discounts = self::$cart->getDiscounts(); + $total_free_ship = $free_ship - ($summary['total_products_wt'] + $summary['total_discounts']); + foreach ($discounts as $discount) + if ($discount['id_discount_type'] == 3) + { + $total_free_ship = 0; + break; + } + self::$smarty->assign('free_ship', $total_free_ship); + } + // for compatibility with 1.2 themes + foreach($summary['products'] AS $key => $product) + $summary['products'][$key]['quantity'] = $product['cart_quantity']; + self::$smarty->assign($summary); + self::$smarty->assign(array( + 'token_cart' => Tools::getToken(false), + 'isVirtualCart' => self::$cart->isVirtualCart(), + 'productNumber' => self::$cart->nbProducts(), + 'voucherAllowed' => Configuration::get('PS_VOUCHERS'), + 'shippingCost' => self::$cart->getOrderTotal(true, Cart::ONLY_SHIPPING), + 'shippingCostTaxExc' => self::$cart->getOrderTotal(false, Cart::ONLY_SHIPPING), + 'customizedDatas' => $customizedDatas, + 'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_, + 'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_, + 'lastProductAdded' => self::$cart->getLastProduct(), + 'displayVouchers' => Discount::getVouchersToCartDisplay((int)(self::$cookie->id_lang), (isset(self::$cookie->id_customer) ? (int)(self::$cookie->id_customer) : 0)), + 'currencySign' => $currency->sign, + 'currencyRate' => $currency->conversion_rate, + 'currencyFormat' => $currency->format, + 'currencyBlank' => $currency->blank)); + self::$smarty->assign(array( + 'HOOK_SHOPPING_CART' => Module::hookExec('shoppingCart', $summary), + 'HOOK_SHOPPING_CART_EXTRA' => Module::hookExec('shoppingCartExtra', $summary) + )); + } + + protected function _assignAddress() + { + if (!Customer::getAddressesTotalById((int)(self::$cookie->id_customer))) + Tools::redirect('address.php?back=order.php?step=1'); + $customer = new Customer((int)(self::$cookie->id_customer)); + if (Validate::isLoadedObject($customer)) + { + /* Getting customer addresses */ + $customerAddresses = $customer->getAddresses((int)(self::$cookie->id_lang)); + self::$smarty->assign('addresses', $customerAddresses); + + /* Setting default addresses for cart */ + if ((!isset(self::$cart->id_address_delivery) OR empty(self::$cart->id_address_delivery)) AND sizeof($customerAddresses)) + { + self::$cart->id_address_delivery = (int)($customerAddresses[0]['id_address']); + $update = 1; + } + if ((!isset(self::$cart->id_address_invoice) OR empty(self::$cart->id_address_invoice)) AND sizeof($customerAddresses)) + { + self::$cart->id_address_invoice = (int)($customerAddresses[0]['id_address']); + $update = 1; + } + /* Update cart addresses only if needed */ + if (isset($update) AND $update) + self::$cart->update(); + + /* If delivery address is valid in cart, assign it to Smarty */ + if (isset(self::$cart->id_address_delivery)) + { + $deliveryAddress = new Address((int)(self::$cart->id_address_delivery)); + if (Validate::isLoadedObject($deliveryAddress) AND ($deliveryAddress->id_customer == $customer->id)) + self::$smarty->assign('delivery', $deliveryAddress); + } + + /* If invoice address is valid in cart, assign it to Smarty */ + if (isset(self::$cart->id_address_invoice)) + { + $invoiceAddress = new Address((int)(self::$cart->id_address_invoice)); + if (Validate::isLoadedObject($invoiceAddress) AND ($invoiceAddress->id_customer == $customer->id)) + self::$smarty->assign('invoice', $invoiceAddress); + } + } + if ($oldMessage = Message::getMessageByCartId((int)(self::$cart->id))) + self::$smarty->assign('oldMessage', $oldMessage['message']); + } + + protected function _assignCarrier() + { + $customer = new Customer((int)(self::$cookie->id_customer)); + $address = new Address((int)(self::$cart->id_address_delivery)); + $id_zone = Address::getZoneById((int)($address->id)); + $carriers = Carrier::getCarriersForOrder($id_zone, $customer->getGroups()); + + $checked = 0; + if (Validate::isUnsignedInt(self::$cart->id_carrier) AND self::$cart->id_carrier) + { + $carrier = new Carrier((int)(self::$cart->id_carrier)); + if ($carrier->active AND !$carrier->deleted) + $checked = (int)(self::$cart->id_carrier); + } + self::$smarty->assign(array( + 'checked' => (int)($checked), + 'carriers' => $carriers, + 'default_carrier' => (int)(Configuration::get('PS_CARRIER_DEFAULT')), + 'HOOK_EXTRACARRIER' => Module::hookExec('extraCarrier', array('address' => $address)), + 'HOOK_BEFORECARRIER' => Module::hookExec('beforeCarrier', array('carriers' => $carriers)) + )); + } + + protected function _assignWrappingAndTOS() + { + // Wrapping fees + $wrapping_fees = (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')); + $wrapping_fees_tax = new Tax((int)(Configuration::get('PS_GIFT_WRAPPING_TAX'))); + $wrapping_fees_tax_inc = $wrapping_fees * (1 + (((float)($wrapping_fees_tax->rate) / 100))); + + // TOS + $cms = new CMS((int)(Configuration::get('PS_CONDITIONS_CMS_ID')), (int)(self::$cookie->id_lang)); + $this->link_conditions = self::$link->getCMSLink($cms, $cms->link_rewrite, true); + if (!strpos($this->link_conditions, '?')) + $this->link_conditions .= '?content_only=1'; + else + $this->link_conditions .= '&content_only=1'; + + self::$smarty->assign(array( + 'checkedTOS' => (int)(self::$cookie->checkedTOS), + 'recyclablePackAllowed' => (int)(Configuration::get('PS_RECYCLABLE_PACK')), + 'giftAllowed' => (int)(Configuration::get('PS_GIFT_WRAPPING')), + 'cms_id' => (int)(Configuration::get('PS_CONDITIONS_CMS_ID')), + 'conditions' => (int)(Configuration::get('PS_CONDITIONS')), + 'link_conditions' => $this->link_conditions, + 'recyclable' => (int)(self::$cart->recyclable), + 'gift_wrapping_price' => (float)(Configuration::get('PS_GIFT_WRAPPING_PRICE')), + 'total_wrapping_cost' => Tools::convertPrice($wrapping_fees_tax_inc, new Currency((int)(self::$cookie->id_currency))), + 'total_wrapping_tax_exc_cost' => Tools::convertPrice($wrapping_fees, new Currency((int)(self::$cookie->id_currency))))); + } + + protected function _assignPayment() + { + self::$smarty->assign(array( + 'HOOK_TOP_PAYMENT' => Module::hookExec('paymentTop'), + 'HOOK_PAYMENT' => Module::hookExecPayment() + )); + } + + /** + * Set id_carrier to 0 (no shipping price) + * + */ + protected function _setNoCarrier() + { + self::$cart->id_carrier = 0; + self::$cart->update(); + } +} diff --git a/controllers/PasswordController.php b/controllers/PasswordController.php new file mode 100644 index 000000000..5d4dd6a25 --- /dev/null +++ b/controllers/PasswordController.php @@ -0,0 +1,116 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('MIN_PASSWD_LENGTH', 8); + +class PasswordControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = 'password.php'; + + parent::__construct(); + } + + public function process() + { + parent::process(); + + if (Tools::isSubmit('email')) + { + if (!($email = Tools::getValue('email')) OR !Validate::isEmail($email)) + $this->errors[] = Tools::displayError('Invalid e-mail address'); + else + { + $customer = new Customer(); + $customer->getByemail($email); + if (!Validate::isLoadedObject($customer)) + $this->errors[] = Tools::displayError('There is no account registered to this e-mail address.'); + else + { + if ((strtotime($customer->last_passwd_gen.'+'.(int)($min_time = Configuration::get('PS_PASSWD_TIME_FRONT')).' minutes') - time()) > 0) + $this->errors[] = Tools::displayError('You can regenerate your password only each').' '.(int)($min_time).' '.Tools::displayError('minute(s)'); + else + { + if (Mail::Send((int)(self::$cookie->id_lang), 'password_query', Mail::l('Password query confirmation'), + array('{email}' => $customer->email, + '{lastname}' => $customer->lastname, + '{firstname}' => $customer->firstname, + '{url}' => self::$link->getPageLink('password.php', true).'?token='.$customer->secure_key.'&id_customer='.(int)$customer->id), + $customer->email, + $customer->firstname.' '.$customer->lastname)) + self::$smarty->assign(array('confirmation' => 2, 'email' => $customer->email)); + else + $this->errors[] = Tools::displayError('Error occured when sending the e-mail.'); + } + } + } + } + elseif (($token = Tools::getValue('token')) && ($id_customer = (int)(Tools::getValue('id_customer')))) + { + $email = Db::getInstance()->getValue('SELECT `email` FROM '._DB_PREFIX_.'customer c WHERE c.`secure_key` = "'.pSQL($token).'" AND c.id_customer='.(int)($id_customer)); + if ($email) + { + $customer = new Customer(); + $customer->getByemail($email); + if ((strtotime($customer->last_passwd_gen.'+'.(int)($min_time = Configuration::get('PS_PASSWD_TIME_FRONT')).' minutes') - time()) > 0) + Tools::redirect('authentication.php?error_regen_pwd'); + else + { + $customer->passwd = Tools::encrypt($password = Tools::passwdGen((int)(MIN_PASSWD_LENGTH))); + $customer->last_passwd_gen = date('Y-m-d H:i:s', time()); + if ($customer->update()) + { + if (Mail::Send((int)(self::$cookie->id_lang), 'password', Mail::l('Your password'), + array('{email}' => $customer->email, + '{lastname}' => $customer->lastname, + '{firstname}' => $customer->firstname, + '{passwd}' => $password), + $customer->email, + $customer->firstname.' '.$customer->lastname)) + self::$smarty->assign(array('confirmation' => 1, 'email' => $customer->email)); + else + $this->errors[] = Tools::displayError('Error occured when sending the e-mail.'); + } + else + $this->errors[] = Tools::displayError('An error occurred with your account and your new password cannot be sent to your e-mail. Please report your problem using the contact form.'); + } + } + else + $this->errors[] = Tools::displayError('We cannot regenerate your password with the data you submitted'); + } + elseif (($token = Tools::getValue('token')) || ($id_customer = Tools::getValue('id_customer'))) + $this->errors[] = Tools::displayError('We cannot regenerate your password with the data you submitted'); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'password.tpl'); + } +} + diff --git a/controllers/PricesDropController.php b/controllers/PricesDropController.php new file mode 100644 index 000000000..18a76a2f8 --- /dev/null +++ b/controllers/PricesDropController.php @@ -0,0 +1,65 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class PricesDropControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = 'prices-drop.php'; + + parent::__construct(); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); + } + + public function process() + { + parent::process(); + + $this->productSort(); + $nbProducts = Product::getPricesDrop((int)(self::$cookie->id_lang), NULL, NULL, true); + $this->pagination($nbProducts); + + self::$smarty->assign(array( + 'products' => Product::getPricesDrop((int)(self::$cookie->id_lang), (int)($this->p) - 1, (int)($this->n), false, $this->orderBy, $this->orderWay), + 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), + 'nbProducts' => $nbProducts, + 'homeSize' => Image::getSize('home') + )); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'prices-drop.tpl'); + } +} + diff --git a/controllers/ProductController.php b/controllers/ProductController.php new file mode 100644 index 000000000..ebc1a8b5a --- /dev/null +++ b/controllers/ProductController.php @@ -0,0 +1,461 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ProductControllerCore extends FrontController +{ + protected $product; + + public function setMedia() + { + parent::setMedia(); + + Tools::addCSS(_THEME_CSS_DIR_.'product.css'); + Tools::addCSS(_PS_CSS_DIR_.'jquery.fancybox-1.3.4.css', 'screen'); + Tools::addJS(array( + _PS_JS_DIR_.'jquery/jquery.fancybox-1.3.4.js', + _PS_JS_DIR_.'jquery/jquery.idTabs.modified.js', + _PS_JS_DIR_.'jquery/jquery.scrollTo-1.4.2-min.js', + _PS_JS_DIR_.'jquery/jquery.serialScroll-1.2.2-min.js', + _THEME_JS_DIR_.'tools.js', + _THEME_JS_DIR_.'product.js')); + + if (Configuration::get('PS_DISPLAY_JQZOOM') == 1) + { + Tools::addCSS(_PS_CSS_DIR_.'jqzoom.css', 'screen'); + Tools::addJS(_PS_JS_DIR_.'jquery/jquery.jqzoom.js'); + } + } + + public function preProcess() + { + if ($id_product = (int)Tools::getValue('id_product')) + $this->product = new Product($id_product, true, self::$cookie->id_lang); + + if (!Validate::isLoadedObject($this->product)) + { + header('HTTP/1.1 404 Not Found'); + header('Status: 404 Not Found'); + } + else + { + // Automatically redirect to the canonical URL if the current in is the right one + // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain + if (Validate::isLoadedObject($this->product)) + { + $canonicalURL = self::$link->getProductLink($this->product); + if (!preg_match('/^'.Tools::pRegexp($canonicalURL, '/').'([&?].*)?$/', Tools::getProtocol().$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])) + { + header('HTTP/1.0 301 Moved'); + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_) + die('[Debug] This page has moved
Please use the following URL instead: '.$canonicalURL.''); + Tools::redirectLink($canonicalURL); + } + } + } + + parent::preProcess(); + + if((int)(Configuration::get('PS_REWRITING_SETTINGS'))) + if ($id_product = (int)Tools::getValue('id_product')) + { + $rewrite_infos = Product::getUrlRewriteInformations((int)$id_product); + + $default_rewrite = array(); + foreach ($rewrite_infos AS $infos) + $default_rewrite[$infos['id_lang']] = self::$link->getProductLink((int)$id_product, $infos['link_rewrite'], $infos['category_rewrite'], $infos['ean13'], (int)$infos['id_lang']); + + self::$smarty->assign('lang_rewrite_urls', $default_rewrite); + } + } + + public function process() + { + parent::process(); + global $cart; + + if (!$id_product = (int)(Tools::getValue('id_product')) OR !Validate::isUnsignedId($id_product)) + $this->errors[] = Tools::displayError('Product not found'); + else + { + if (!Validate::isLoadedObject($this->product) + OR (!$this->product->active AND (Tools::getValue('adtoken') != Tools::encrypt('PreviewProduct'.$this->product->id)) + || !file_exists(dirname(__FILE__).'/../'.Tools::getValue('ad').'/ajax.php'))) + { + header('HTTP/1.1 404 page not found'); + $this->errors[] = Tools::displayError('Pproduct is no longer available.'); + } + elseif (!$this->product->checkAccess((int)(self::$cookie->id_customer))) + $this->errors[] = Tools::displayError('You do not have access to this product.'); + else + { + self::$smarty->assign('virtual', ProductDownload::getIdFromIdProduct((int)($this->product->id))); + + if (!$this->product->active) + self::$smarty->assign('adminActionDisplay', true); + + /* rewrited url set */ + $rewrited_url = self::$link->getProductLink($this->product->id, $this->product->link_rewrite); + + /* Product pictures management */ + require_once('images.inc.php'); + self::$smarty->assign('customizationFormTarget', Tools::safeOutput(urldecode($_SERVER['REQUEST_URI']))); + + if (Tools::isSubmit('submitCustomizedDatas')) + { + $this->pictureUpload($this->product, $cart); + $this->textRecord($this->product, $cart); + $this->formTargetFormat(); + } + elseif (isset($_GET['deletePicture']) AND !$cart->deletePictureToProduct((int)($this->product->id), (int)(Tools::getValue('deletePicture')))) + $this->errors[] = Tools::displayError('An error occurred while deleting the selected picture'); + + $files = self::$cookie->getFamily('pictures_'.(int)($this->product->id)); + $textFields = self::$cookie->getFamily('textFields_'.(int)($this->product->id)); + foreach ($textFields as $key => $textField) + $textFields[$key] = str_replace('
', "\n", $textField); + self::$smarty->assign(array( + 'pictures' => $files, + 'textFields' => $textFields)); + + $productPriceWithTax = Product::getPriceStatic($id_product, true, NULL, 6); + if (Product::$_taxCalculationMethod == PS_TAX_INC) + $productPriceWithTax = Tools::ps_round($productPriceWithTax, 2); + + $productPriceWithoutEcoTax = (float)($productPriceWithTax - $this->product->ecotax); + $configs = Configuration::getMultiple(array('PS_ORDER_OUT_OF_STOCK', 'PS_LAST_QTIES')); + + /* Features / Values */ + $features = $this->product->getFrontFeatures((int)(self::$cookie->id_lang)); + $attachments = $this->product->getAttachments((int)(self::$cookie->id_lang)); + + /* Category */ + $category = false; + if (isset($_SERVER['HTTP_REFERER']) AND preg_match('!^(.*)\/([0-9]+)\-(.*[^\.])|(.*)id_category=([0-9]+)(.*)$!', $_SERVER['HTTP_REFERER'], $regs) AND !strstr($_SERVER['HTTP_REFERER'], '.html')) + { + if (isset($regs[2]) AND is_numeric($regs[2])) + { + if (Product::idIsOnCategoryId((int)($this->product->id), array('0' => array('id_category' => (int)($regs[2]))))) + $category = new Category((int)($regs[2]), (int)(self::$cookie->id_lang)); + } + elseif (isset($regs[5]) AND is_numeric($regs[5])) + { + if (Product::idIsOnCategoryId((int)($this->product->id), array('0' => array('id_category' => (int)($regs[5]))))) + $category = new Category((int)($regs[5]), (int)(self::$cookie->id_lang)); + } + } + if (!$category) + $category = new Category($this->product->id_category_default, (int)(self::$cookie->id_lang)); + + if (isset($category) AND Validate::isLoadedObject($category)) + { + self::$smarty->assign(array( + 'path' => Tools::getPath((int)$category->id, $this->product->name, true), + 'category' => $category, + 'subCategories' => $category->getSubCategories((int)(self::$cookie->id_lang), true), + 'id_category_current' => (int)($category->id), + 'id_category_parent' => (int)($category->id_parent), + 'return_category_name' => Tools::safeOutput($category->name))); + } + else + self::$smarty->assign('path', Tools::getPath((int)$this->product->id_category_default, $this->product->name)); + + self::$smarty->assign('return_link', (isset($category->id) AND $category->id) ? Tools::safeOutput(self::$link->getCategoryLink($category)) : 'javascript: history.back();'); + + $lang = Configuration::get('PS_LANG_DEFAULT'); + if (Pack::isPack((int)($this->product->id), (int)($lang)) AND !Pack::isInStock((int)($this->product->id), (int)($lang))) + $this->product->quantity = 0; + + $group_reduction = (100 - Group::getReduction((int)(self::$cookie->id_customer))) / 100; + $id_customer = (isset(self::$cookie->id_customer) AND self::$cookie->id_customer) ? (int)(self::$cookie->id_customer) : 0; + $id_group = $id_customer ? (int)(Customer::getDefaultGroupId($id_customer)) : _PS_DEFAULT_CUSTOMER_GROUP_; + $id_country = (int)($id_customer ? Customer::getCurrentCountry($id_customer) : Configuration::get('PS_COUNTRY_DEFAULT')); + + // Tax + $tax = (float)(Tax::getProductTaxRate((int)($this->product->id), $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); + self::$smarty->assign('tax_rate', $tax); + + $ecotax_rate = (float) Tax::getProductEcotaxRate($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}); + $ecotaxTaxAmount = Tools::ps_round($this->product->ecotax, 2); + if (Product::$_taxCalculationMethod == PS_TAX_INC) + $ecotaxTaxAmount = Tools::ps_round($ecotaxTaxAmount * (1 + $ecotax_rate / 100), 2); + + self::$smarty->assign(array( + 'quantity_discounts' => $this->formatQuantityDiscounts(SpecificPrice::getQuantityDiscounts((int)($this->product->id), (int)(Shop::getCurrentShop()), (int)(self::$cookie->id_currency), $id_country, $id_group), $this->product->getPrice(Product::$_taxCalculationMethod == PS_TAX_INC, false), (float)($tax)), + 'product' => $this->product, + 'ecotax_tax_inc' => $ecotaxTaxAmount, + 'ecotax_tax_exc' => Tools::ps_round($this->product->ecotax, 2), + 'ecotaxTax_rate' => $ecotax_rate, + 'homeSize' => Image::getSize('home'), + 'product_manufacturer' => new Manufacturer((int)($this->product->id_manufacturer), Configuration::get('PS_LANG_DEFAULT')), + 'token' => Tools::getToken(false), + 'productPriceWithoutEcoTax' => (float)($productPriceWithoutEcoTax), + 'features' => $features, + 'attachments' => $attachments, + 'allow_oosp' => $this->product->isAvailableWhenOutOfStock((int)($this->product->out_of_stock)), + 'last_qties' => (int)($configs['PS_LAST_QTIES']), + 'group_reduction' => $group_reduction, + 'col_img_dir' => _PS_COL_IMG_DIR_, + )); + self::$smarty->assign(array( + 'HOOK_EXTRA_LEFT' => Module::hookExec('extraLeft'), + 'HOOK_EXTRA_RIGHT' => Module::hookExec('extraRight'), + 'HOOK_PRODUCT_OOS' => Hook::productOutOfStock($this->product), + 'HOOK_PRODUCT_FOOTER' => Hook::productFooter($this->product, $category), + 'HOOK_PRODUCT_ACTIONS' => Module::hookExec('productActions'), + 'HOOK_PRODUCT_TAB' => Module::hookExec('productTab'), + 'HOOK_PRODUCT_TAB_CONTENT' => Module::hookExec('productTabContent') + )); + + $images = $this->product->getImages((int)(self::$cookie->id_lang)); + $productImages = array(); + foreach ($images AS $k => $image) + { + if ($image['cover']) + { + self::$smarty->assign('mainImage', $images[0]); + $cover = $image; + $cover['id_image'] = (int)($this->product->id).'-'.$cover['id_image']; + $cover['id_image_only'] = (int)($image['id_image']); + } + $productImages[(int)($image['id_image'])] = $image; + } + if (!isset($cover)) + $cover = array('id_image' => Language::getIsoById(self::$cookie->id_lang).'-default', 'legend' => 'No picture', 'title' => 'No picture'); + $size = Image::getSize('large'); + self::$smarty->assign(array( + 'cover' => $cover, + 'imgWidth' => (int)($size['width']), + 'mediumSize' => Image::getSize('medium'), + 'largeSize' => Image::getSize('large'), + 'accessories' => $this->product->getAccessories((int)(self::$cookie->id_lang)))); + if (sizeof($productImages)) + self::$smarty->assign('images', $productImages); + + /* Attributes / Groups & colors */ + $colors = array(); + $attributesGroups = $this->product->getAttributesGroups((int)(self::$cookie->id_lang)); + if (is_array($attributesGroups) AND sizeof($attributesGroups)) + { + $combinationImages = $this->product->getCombinationImages((int)(self::$cookie->id_lang)); + foreach ($attributesGroups AS $k => $row) + { + /* Color management */ + if (((isset($row['attribute_color']) AND $row['attribute_color']) OR (file_exists(_PS_COL_IMG_DIR_.$row['id_attribute'].'.jpg'))) AND $row['id_attribute_group'] == $this->product->id_color_default) + { + $colors[$row['id_attribute']]['value'] = $row['attribute_color']; + $colors[$row['id_attribute']]['name'] = $row['attribute_name']; + if (!isset($colors[$row['id_attribute']]['attributes_quantity'])) + $colors[$row['id_attribute']]['attributes_quantity'] = 0; + $colors[$row['id_attribute']]['attributes_quantity'] += (int)($row['quantity']); + } + + $groups[$row['id_attribute_group']]['attributes'][$row['id_attribute']] = $row['attribute_name']; + $groups[$row['id_attribute_group']]['name'] = $row['public_group_name']; + $groups[$row['id_attribute_group']]['is_color_group'] = $row['is_color_group']; + if ($row['default_on']) + $groups[$row['id_attribute_group']]['default'] = (int)($row['id_attribute']); + if (!isset($groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']])) + $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] = 0; + $groups[$row['id_attribute_group']]['attributes_quantity'][$row['id_attribute']] += (int)($row['quantity']); + + $combinations[$row['id_product_attribute']]['attributes_values'][$row['id_attribute_group']] = $row['attribute_name']; + $combinations[$row['id_product_attribute']]['attributes'][] = (int)($row['id_attribute']); + $combinations[$row['id_product_attribute']]['price'] = (float)($row['price']); + $combinations[$row['id_product_attribute']]['ecotax'] = (float)($row['ecotax']); + $combinations[$row['id_product_attribute']]['weight'] = (float)($row['weight']); + $combinations[$row['id_product_attribute']]['quantity'] = (int)($row['quantity']); + $combinations[$row['id_product_attribute']]['reference'] = $row['reference']; + $combinations[$row['id_product_attribute']]['unit_impact'] = $row['unit_price_impact']; + $combinations[$row['id_product_attribute']]['minimal_quantity'] = $row['minimal_quantity']; + $combinations[$row['id_product_attribute']]['id_image'] = isset($combinationImages[$row['id_product_attribute']][0]['id_image']) ? $combinationImages[$row['id_product_attribute']][0]['id_image'] : -1; + } + //wash attributes list (if some attributes are unavailables and if allowed to wash it) + if (!Product::isAvailableWhenOutOfStock($this->product->out_of_stock) && Configuration::get('PS_DISP_UNAVAILABLE_ATTR') == 0) + { + foreach ($groups AS &$group) + foreach ($group['attributes_quantity'] AS $key => &$quantity) + if (!$quantity) + unset($group['attributes'][$key]); + foreach ($colors AS $key => $color) + if (!$color['attributes_quantity']) + unset($colors[$key]); + } + foreach($groups AS &$group) + natcasesort($group['attributes']); + foreach ($combinations AS $id_product_attribute => $comb) + { + $attributeList = ''; + foreach ($comb['attributes'] AS $id_attribute) + $attributeList .= '\''.(int)($id_attribute).'\','; + $attributeList = rtrim($attributeList, ','); + $combinations[$id_product_attribute]['list'] = $attributeList; + } + self::$smarty->assign(array( + 'groups' => $groups, + 'combinaisons' => $combinations, /* Kept for compatibility purpose only */ + 'combinations' => $combinations, + 'colors' => (sizeof($colors) AND $this->product->id_color_default) ? $colors : false, + 'combinationImages' => $combinationImages)); + } + + self::$smarty->assign(array( + 'no_tax' => Tax::excludeTaxeOption() OR !Tax::getProductTaxRate((int)$this->product->id, $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}), + 'customizationFields' => $this->product->getCustomizationFields((int)(self::$cookie->id_lang)) + )); + + // Pack management + self::$smarty->assign('packItems', $this->product->cache_is_pack ? Pack::getItemTable($this->product->id, (int)(self::$cookie->id_lang), true) : array()); + self::$smarty->assign('packs', Pack::getPacksTable($this->product->id, (int)(self::$cookie->id_lang), true, 1)); + } + } + + self::$smarty->assign(array( + 'ENT_NOQUOTES' => ENT_NOQUOTES, + 'outOfStockAllowed' => (int)(Configuration::get('PS_ORDER_OUT_OF_STOCK')), + 'errors' => $this->errors, + 'categories' => Category::getHomeCategories((int)(self::$cookie->id_lang)), + 'have_image' => Product::getCover((int)(Tools::getValue('id_product'))), + 'tax_enabled' => Configuration::get('PS_TAX'), + 'display_qties' => (int)(Configuration::get('PS_DISPLAY_QTIES')), + 'display_ht' => !Tax::excludeTaxeOption(), + 'ecotax' => (!sizeof($this->errors) AND $this->product->ecotax > 0 ? Tools::convertPrice((float)($this->product->ecotax)) : 0), + )); + + global $currency; + self::$smarty->assign(array( + 'currencySign' => $currency->sign, + 'currencyRate' => $currency->conversion_rate, + 'currencyFormat' => $currency->format, + 'currencyBlank' => $currency->blank, + 'jqZoomEnabled' => Configuration::get('PS_DISPLAY_JQZOOM') + )); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'product.tpl'); + } + + public function pictureUpload(Product $product, Cart $cart) + { + if (!$fieldIds = $this->product->getCustomizationFieldIds()) + return false; + $authorizedFileFields = array(); + foreach ($fieldIds AS $fieldId) + if ($fieldId['type'] == _CUSTOMIZE_FILE_) + $authorizedFileFields[(int)($fieldId['id_customization_field'])] = 'file'.(int)($fieldId['id_customization_field']); + $indexes = array_flip($authorizedFileFields); + foreach ($_FILES AS $fieldName => $file) + if (in_array($fieldName, $authorizedFileFields) AND isset($file['tmp_name']) AND !empty($file['tmp_name'])) + { + $fileName = md5(uniqid(rand(), true)); + if ($error = checkImage($file, (int)(Configuration::get('PS_PRODUCT_PICTURE_MAX_SIZE')))) + $this->errors[] = $error; + + if ($error OR (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($file['tmp_name'], $tmpName))) + return false; + /* Original file */ + elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName)) + $this->errors[] = Tools::displayError('An error occurred during the image upload.'); + /* A smaller one */ + elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName.'_small', (int)(Configuration::get('PS_PRODUCT_PICTURE_WIDTH')), (int)(Configuration::get('PS_PRODUCT_PICTURE_HEIGHT')))) + $this->errors[] = Tools::displayError('An error occurred during the image upload.'); + elseif (!chmod(_PS_UPLOAD_DIR_.$fileName, 0777) OR !chmod(_PS_UPLOAD_DIR_.$fileName.'_small', 0777)) + $this->errors[] = Tools::displayError('An error occurred during the image upload.'); + else + $cart->addPictureToProduct((int)($this->product->id), $indexes[$fieldName], $fileName); + unlink($tmpName); + } + return true; + } + + public function textRecord(Product $product, Cart $cart) + { + if (!$fieldIds = $this->product->getCustomizationFieldIds()) + return false; + $authorizedTextFields = array(); + foreach ($fieldIds AS $fieldId) + if ($fieldId['type'] == _CUSTOMIZE_TEXTFIELD_) + $authorizedTextFields[(int)($fieldId['id_customization_field'])] = 'textField'.(int)($fieldId['id_customization_field']); + $indexes = array_flip($authorizedTextFields); + foreach ($_POST AS $fieldName => $value) + if (in_array($fieldName, $authorizedTextFields) AND !empty($value)) + { + if (!Validate::isMessage($value)) + $this->errors[] = Tools::displayError('Invalid message'); + else + $cart->addTextFieldToProduct((int)($this->product->id), $indexes[$fieldName], $value); + } + elseif (in_array($fieldName, $authorizedTextFields) AND empty($value)) + $cart->deleteTextFieldFromProduct((int)($this->product->id), $indexes[$fieldName]); + } + + public function formTargetFormat() + { + $customizationFormTarget = Tools::safeOutput(urldecode($_SERVER['REQUEST_URI'])); + foreach ($_GET AS $field => $value) + if (strncmp($field, 'group_', 6) == 0) + $customizationFormTarget = preg_replace('/&group_([[:digit:]]+)=([[:digit:]]+)/', '', $customizationFormTarget); + if (isset($_POST['quantityBackup'])) + self::$smarty->assign('quantityBackup', (int)($_POST['quantityBackup'])); + self::$smarty->assign('customizationFormTarget', $customizationFormTarget); + } + + public function formatQuantityDiscounts($specificPrices, $price, $taxRate) + { + foreach ($specificPrices AS $key => &$row) + { + $row['quantity'] = &$row['from_quantity']; + if ($row['price'] != 0) // The price may be directly set + { + $cur_price = (Product::$_taxCalculationMethod == PS_TAX_EXC ? $row['price'] : $row['price'] * (1 + $taxRate / 100)); + + if ($row['reduction_type'] == 'amount') + { + $cur_price = Product::$_taxCalculationMethod == PS_TAX_INC ? $cur_price - $row['reduction'] : $cur_price - ($row['reduction'] / (1 + $taxRate / 100)); + } else { + $cur_price = $cur_price * ( 1 - ($row['reduction'])); + } + + $row['real_value'] = $price - $cur_price; + } + else + { + if ($row['reduction_type'] == 'amount') + { + $row['real_value'] = Product::$_taxCalculationMethod == PS_TAX_INC ? $row['reduction'] : $row['reduction'] / (1 + $taxRate / 100); + } else { + $row['real_value'] = $row['reduction'] * 100; + } + } + $row['nextQuantity'] = (isset($specificPrices[$key + 1]) ? (int)($specificPrices[$key + 1]['from_quantity']) : -1); + } + return $specificPrices; + } +} + diff --git a/controllers/SearchController.php b/controllers/SearchController.php new file mode 100644 index 000000000..12bf6ca8c --- /dev/null +++ b/controllers/SearchController.php @@ -0,0 +1,140 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SearchControllerCore extends FrontController +{ + public $instantSearch; + public $ajaxSearch; + + public function __construct() + { + $this->php_self = 'search.php'; + + parent::__construct(); + + $this->instantSearch = Tools::getValue('instantSearch'); + $this->ajaxSearch = Tools::getValue('ajaxSearch'); + } + + public function preProcess() + { + parent::preProcess(); + + $query = urldecode(Tools::getValue('q')); + if ($this->ajaxSearch) + { + self::$link = new Link(); + $searchResults = Search::find((int)(Tools::getValue('id_lang')), $query, 1, 10, 'position', 'desc', true); + foreach ($searchResults AS &$product) + $product['product_link'] = self::$link->getProductLink($product['id_product'], $product['prewrite'], $product['crewrite']); + die(Tools::jsonEncode($searchResults)); + } + + if ($this->instantSearch && !is_array($query)) + { + $this->productSort(); + $this->n = abs((int)(Tools::getValue('n', Configuration::get('PS_PRODUCTS_PER_PAGE')))); + $this->p = abs((int)(Tools::getValue('p', 1))); + $search = Search::find((int)(self::$cookie->id_lang), $query, $this->p, $this->n, $this->orderBy, $this->orderWay); + Module::hookExec('search', array('expr' => $query, 'total' => $search['total'])); + $nbProducts = $search['total']; + $this->pagination($nbProducts); + self::$smarty->assign(array( + 'products' => $search['result'], // DEPRECATED (since to 1.4), not use this: conflict with block_cart module + 'search_products' => $search['result'], + 'nbProducts' => $search['total'], + 'search_query' => $query, + 'instantSearch' => $this->instantSearch, + 'homeSize' => Image::getSize('home'))); + } + elseif ($query = Tools::getValue('search_query', Tools::getValue('ref')) AND !is_array($query)) + { + $this->productSort(); + $this->n = abs((int)(Tools::getValue('n', Configuration::get('PS_PRODUCTS_PER_PAGE')))); + $this->p = abs((int)(Tools::getValue('p', 1))); + $search = Search::find((int)(self::$cookie->id_lang), $query, $this->p, $this->n, $this->orderBy, $this->orderWay); + Module::hookExec('search', array('expr' => $query, 'total' => $search['total'])); + $nbProducts = $search['total']; + $this->pagination($nbProducts); + self::$smarty->assign(array( + 'products' => $search['result'], // DEPRECATED (since to 1.4), not use this: conflict with block_cart module + 'search_products' => $search['result'], + 'nbProducts' => $search['total'], + 'search_query' => $query, + 'homeSize' => Image::getSize('home'))); + } + elseif ($tag = urldecode(Tools::getValue('tag')) AND !is_array($tag)) + { + $nbProducts = (int)(Search::searchTag((int)(self::$cookie->id_lang), $tag, true)); + $this->pagination($nbProducts); + $result = Search::searchTag((int)(self::$cookie->id_lang), $tag, false, $this->p, $this->n, $this->orderBy, $this->orderWay); + Module::hookExec('search', array('expr' => $tag, 'total' => sizeof($result))); + self::$smarty->assign(array( + 'search_tag' => $tag, + 'products' => $result, // DEPRECATED (since to 1.4), not use this: conflict with block_cart module + 'search_products' => $result, + 'nbProducts' => $nbProducts, + 'homeSize' => Image::getSize('home'))); + } + else + { + self::$smarty->assign(array( + 'products' => array(), + 'search_products' => array(), + 'pages_nb' => 1, + 'nbProducts' => 0)); + } + self::$smarty->assign('add_prod_display', Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY')); + } + + public function displayHeader() + { + if (!$this->instantSearch AND !$this->ajaxSearch) + parent::displayHeader(); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'search.tpl'); + } + + public function displayFooter() + { + if (!$this->instantSearch AND !$this->ajaxSearch) + parent::displayFooter(); + } + + public function setMedia() + { + parent::setMedia(); + + if (!$this->instantSearch AND !$this->ajaxSearch) + Tools::addCSS(_THEME_CSS_DIR_.'product-list.css'); + } +} + diff --git a/controllers/SitemapController.php b/controllers/SitemapController.php new file mode 100644 index 000000000..a2c1d9138 --- /dev/null +++ b/controllers/SitemapController.php @@ -0,0 +1,64 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SitemapControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = 'sitemap.php'; + + parent::__construct(); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'sitemap.css'); + Tools::addJS(_THEME_JS_DIR_.'tools/treeManagement.js'); + } + + public function process() + { + parent::process(); + + self::$smarty->assign('categoriesTree', Category::getRootCategory()->recurseLiteCategTree(0)); + self::$smarty->assign('categoriescmsTree', CMSCategory::getRecurseCategory(_USER_ID_LANG_, 1, 1, 1)); + self::$smarty->assign('voucherAllowed', (int)(Configuration::get('PS_VOUCHERS'))); + $blockmanufacturer = Module::getInstanceByName('blockmanufacturer'); + $blocksupplier = Module::getInstanceByName('blocksupplier'); + self::$smarty->assign('display_manufacturer_link', (((int)$blockmanufacturer->id AND Configuration::get('PS_DISPLAY_SUPPLIERS')) ? true : false)); + self::$smarty->assign('display_supplier_link', (((int)$blocksupplier->id AND Configuration::get('PS_DISPLAY_SUPPLIERS')) ? true : false)); + self::$smarty->assign('PS_DISPLAY_SUPPLIERS', Configuration::get('PS_DISPLAY_SUPPLIERS')); + self::$smarty->assign('display_store', Configuration::get('PS_STORES_DISPLAY_SITEMAP')); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'sitemap.tpl'); + } +} diff --git a/controllers/StoresController.php b/controllers/StoresController.php new file mode 100644 index 000000000..0a973bf01 --- /dev/null +++ b/controllers/StoresController.php @@ -0,0 +1,170 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class StoresControllerCore extends FrontController +{ + public function __construct() + { + $this->php_self = 'stores.php'; + + parent::__construct(); + } + + public function preProcess() + { + global $smarty, $cookie; + + $simplifiedStoreLocator = Configuration::get('PS_STORES_SIMPLIFIED'); + $distanceUnit = Configuration::get('PS_DISTANCE_UNIT'); + if (!in_array($distanceUnit, array('km', 'mi'))) + $distanceUnit = 'km'; + + if ($simplifiedStoreLocator) + { + $stores = Db::getInstance()->ExecuteS(' + SELECT s.*, cl.name country, st.iso_code state + FROM '._DB_PREFIX_.'store s + LEFT JOIN '._DB_PREFIX_.'country_lang cl ON (cl.id_country = s.id_country) + LEFT JOIN '._DB_PREFIX_.'state st ON (st.id_state = s.id_state) + WHERE s.active = 1 AND cl.id_lang = '.(int)($cookie->id_lang)); + + foreach ($stores AS &$store) + $store['has_picture'] = file_exists(_PS_STORE_IMG_DIR_.(int)($store['id_store']).'.jpg'); + } + else + { + if (Tools::getValue('all') == 1) + { + $stores = Db::getInstance()->ExecuteS(' + SELECT s.*, cl.name country, st.iso_code state + FROM '._DB_PREFIX_.'store s + LEFT JOIN '._DB_PREFIX_.'country_lang cl ON (cl.id_country = s.id_country) + LEFT JOIN '._DB_PREFIX_.'state st ON (st.id_state = s.id_state) + WHERE s.active = 1 AND cl.id_lang = '.(int)($cookie->id_lang)); + } + else + { + $distance = (int)(Tools::getValue('radius', 100)); + $multiplicator = ($distanceUnit == 'km' ? 6371 : 3959); + + $stores = Db::getInstance()->ExecuteS(' + SELECT s.*, cl.name country, st.iso_code state, + ('.(int)($multiplicator).' * acos(cos(radians('.(float)(Tools::getValue('latitude')).')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.(float)(Tools::getValue('longitude')).')) + sin(radians('.(float)(Tools::getValue('latitude')).')) * sin(radians(latitude)))) distance + FROM '._DB_PREFIX_.'store s + LEFT JOIN '._DB_PREFIX_.'country_lang cl ON (cl.id_country = s.id_country) + LEFT JOIN '._DB_PREFIX_.'state st ON (st.id_state = s.id_state) + WHERE s.active = 1 AND cl.id_lang = '.(int)($cookie->id_lang).' + HAVING distance < '.(int)($distance).' + ORDER BY distance ASC + LIMIT 0,20'); + } + + if (Tools::getValue('ajax') == 1) + { + $dom = new DOMDocument('1.0'); + $node = $dom->createElement('markers'); + $parnode = $dom->appendChild($node); + + $days[1] = 'Monday'; + $days[2] = 'Tuesday'; + $days[3] = 'Wednesday'; + $days[4] = 'Thursday'; + $days[5] = 'Friday'; + $days[6] = 'Saturday'; + $days[7] = 'Sunday'; + + foreach ($stores AS $store) + { + $days_datas = array(); + $node = $dom->createElement('marker'); + $newnode = $parnode->appendChild($node); + $newnode->setAttribute('name', $store['name']); + $address = $store['address1'].(!empty($store['address2']) ? '
'.$store['address2'] : '').'
'.$store['postcode'].' '.$store['city'].', '.$store['state'].'
'.$store['country']; + $other = ''; + if (!empty($store['hours'])) + { + $hours = unserialize($store['hours']); + + for ($i = 1; $i < 8; $i++) + { + $hours_datas = array(); + $hours_datas['day'] = $days[$i]; + $hours_datas['hours'] = $hours[(int)($i) - 1]; + $days_datas[] = $hours_datas; + } + $smarty->assign('days_datas', $days_datas); + $other .= self::$smarty->fetch(_PS_THEME_DIR_.'store_infos.tpl'); + } + + $newnode->setAttribute('addressNoHtml', strip_tags(str_replace('
', ' ', $address))); + $newnode->setAttribute('address', $address); + $newnode->setAttribute('other', $other); + $newnode->setAttribute('phone', $store['phone']); + $newnode->setAttribute('id_store', (int)($store['id_store'])); + $newnode->setAttribute('has_store_picture', file_exists(_PS_STORE_IMG_DIR_.(int)($store['id_store']).'.jpg')); + $newnode->setAttribute('lat', (float)($store['latitude'])); + $newnode->setAttribute('lng', (float)($store['longitude'])); + + if (isset($store['distance'])) + $newnode->setAttribute('distance', (int)($store['distance'])); + } + + header('Content-type: text/xml'); + die($dom->saveXML()); + } + else + $smarty->assign('hasStoreIcon', file_exists(dirname(__FILE__).'/../img/logo_stores.gif')); + } + + $smarty->assign(array('distance_unit' => $distanceUnit, 'simplifiedStoresDiplay' => $simplifiedStoreLocator, 'stores' => $stores, 'mediumSize' => Image::getSize('medium'))); + } + + public function process() + { + parent::process(); + + self::$smarty->assign(array( + 'defaultLat' => (float)Configuration::get('PS_STORES_CENTER_LAT'), + 'defaultLong' => (float)Configuration::get('PS_STORES_CENTER_LONG') + )); + } + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'stores.css'); + if (!Configuration::get('PS_STORES_SIMPLIFIED')) + Tools::addJS(_THEME_JS_DIR_.'stores.js'); + Tools::addJS('http://maps.google.com/maps/api/js?sensor=true'); + } + + public function displayContent() + { + parent::displayContent(); + self::$smarty->display(_PS_THEME_DIR_.'stores.tpl'); + } +} diff --git a/controllers/SupplierController.php b/controllers/SupplierController.php new file mode 100644 index 000000000..56ae636e2 --- /dev/null +++ b/controllers/SupplierController.php @@ -0,0 +1,101 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class SupplierControllerCore extends FrontController +{ + protected $supplier; + + public function setMedia() + { + parent::setMedia(); + Tools::addCSS(_THEME_CSS_DIR_.'product_list.css'); + } + + public function process() + { + if ($id_supplier = Tools::getValue('id_supplier')) + { + $this->supplier = new Supplier((int)$id_supplier, self::$cookie->id_lang); + if (Validate::isLoadedObject($this->supplier) AND $this->supplier->active) + { + $nbProducts = $this->supplier->getProducts($id_supplier, NULL, NULL, NULL, $this->orderBy, $this->orderWay, true); + $this->pagination((int)$nbProducts); + self::$smarty->assign(array( + 'nb_products' => $nbProducts, + 'products' => $this->supplier->getProducts($id_supplier, (int)self::$cookie->id_lang, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay), + 'path' => ($this->supplier->active ? Tools::safeOutput($this->supplier->name) : ''), + 'supplier' => $this->supplier)); + } + else + { + header('HTTP/1.1 404 Not Found'); + header('Status: 404 Not Found'); + $this->errors[] = Tools::displayError('Supplier does not exist'); + } + } + else + { + if (Configuration::get('PS_DISPLAY_SUPPLIERS')) + { + $data = call_user_func(array('Supplier', 'getSuppliers'), true, (int)(self::$cookie->id_lang), true); + $nbProducts = count($data); + $this->pagination($nbProducts); + + $data = call_user_func(array('Supplier', 'getSuppliers'), true, (int)(self::$cookie->id_lang), true, $this->p, $this->n); + $imgDir = _PS_MANU_IMG_DIR_; + foreach ($data AS &$item) + $item['image'] = (!file_exists($imgDir.'/'.$item['id_supplier'].'-medium.jpg')) ? + Language::getIsoById((int)(self::$cookie->id_lang)).'-default' : $item['id_supplier']; + self::$smarty->assign(array( + 'pages_nb' => ceil($nbProducts / (int)($this->n)), + 'nbSuppliers' => $nbProducts, + 'mediumSize' => Image::getSize('medium'), + 'suppliers' => $data, + 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), + )); + } + else + self::$smarty->assign('nbSuppliers', 0); + } + } + + public function displayHeader() + { + parent::displayHeader(); + $this->productSort(); + } + + public function displayContent() + { + parent::displayContent(); + if ($this->supplier) + self::$smarty->display(_PS_THEME_DIR_.'supplier.tpl'); + else + self::$smarty->display(_PS_THEME_DIR_.'supplier-list.tpl'); + } + +} \ No newline at end of file diff --git a/css/admin-ie.css b/css/admin-ie.css new file mode 100644 index 000000000..77a7f4b38 --- /dev/null +++ b/css/admin-ie.css @@ -0,0 +1,2 @@ +fieldset {position:relative;padding-top:25px} +fieldset legend {position:absolute;top:-0.5em;left:1.1em} \ No newline at end of file diff --git a/css/admin.css b/css/admin.css new file mode 100644 index 000000000..f7127cfd5 --- /dev/null +++ b/css/admin.css @@ -0,0 +1,1492 @@ +/* CSS Admin PrestaShop */ +* {font-family: Arial,Verdana,Helvetica,sans-serif} + +body { + margin: 0; + padding: 0; + font-size: 12px; + color: #000; + text-align: center; +/* behavior: url(csshover.htc); */ +} + +.float {float:left} +.floatr {float:right} + +a img { + border: 0; +} + +a { + color: #000; + text-decoration: none; + outline: 0pt; +} + +a:hover { + color: #222; + text-decoration: none; +} + +a.link, a.link:hover { + color: #999999; +} +a.link { + text-decoration: underline; +} +.warn a{ + text-decoration: underline; +} + +img { + vertical-align: middle; +} + +input { + vertical-align: middle; +} + +p { + margin: 0.5em 0; +} + +hr { + border: none; + padding: 0; + margin-top: 10px; + margin-bottom: 10px; +} + +.block { + display: block; +} + +/* FONTS */ + +.bold { + font-weight: bold; +} + +legend, th { + font-family : Trebuchet,Arial,Helvetica,sans-serif; +} + +h1, h2, h3, h4, h5, h6 { + font-family : "Trebuchet MS",Trebuchet,Arial,Helvetica,sans-serif; +} + +h1 { + font-size: 1.6em; + margin: 0 0 .67em 0; +} +h2 { + font-size: 1.4em; + margin: 0 0 .83em 0; + color: #268CCD; +} +h3 { + font-size: 1.1em; + margin: 0 0 .83em 0; +} +h4 { + margin: 1.33em 0; +} +h5 { + font-size: 0.83em; + margin: 1.67em 0; +} +h6 { + font-size: 0.67em; + margin: 2.33em 0; +} + +h3.blue { + color: #268CCD; +} + +.red { + color: red; +} + +form { + margin: 0; + padding: 0; +} + +form p { + margin: 0.5em 0 0 0; + padding: 0 0 0.5em 0; +} + +form sup { + color: #CC0000; + font-weight: bold; + vertical-align: text-top; +} +form .simulate-disable-input{ + min-width:127px; + display:inline-block; + padding:3px; + border:1px solid #E0D0B1; + background-color:#dddddd; + color:#666666; + font-size:12px; +} +.block-mail { + margin:0 0 20px 0; +} +.mail-form { + margin:0 0 0 220px; + width:auto; + color: #7F7F7F; + font-size: 0.85em; +} +.label-subject { + padding:0; + margin:0 0 10px 0; + text-align:left; +} +.label-subject input{ + width:555px; +} +.mail-label table { + width:555px; +} +.mails_field { + margin:0; + background: none repeat scroll 0 0 #FFFFF0; + border: 1px solid #DFD5C3; + font-size: 1.1em; + margin: 20px 0 20px 0; + padding: 2em 1em 1em 1em; + position:relative; +} + +.mails_field h3{ + position:absolute; + margin:0; + top:-10px; + font-size:1em; + background-color:#FFF6D3; + border:1px solid #DFD5C3; + padding: 2px 5px 2px 5px; + display:inline-block; +} + +.style-themeModuleMail { + margin: 0; + padding: 0.2em 0.5em; + border: 1px solid #DFD5C3; + background: #FFF6D3; + font-weight: bold; + text-align: left; + cursor : pointer; + font-size: 12px; +} + +.style-themeModuleName { + margin: 0; + padding: 0.2em 0.5em; + border: 1px solid #DFD5C3; + background: #FFF6D3; + font-weight: bold; + text-align: left; + cursor : pointer; + font-size: 12px; +} + +.margin-form { + padding: 0 0 1em 210px; + color: #7F7F7F; + font-size: 0.85em; +} + +fieldset.width1 .margin-form { + margin: 0 0 1em 130px; +} + +fieldset img { + padding: 0 4px 0 0; + vertical-align: bottom; +} + +label { + float: left; + width: 200px; + padding: 0.2em 0.5em 0 0; + text-align: right; + font-weight: bold; +} + +#preview_import label { + float:left; + font-weight:bold; + padding:0.2em 0 0; + text-align:left; + width:270px; +} + +label.t { + float: none; + clear: none; + padding: 0px; + margin: 0px; + font-weight: bold; + font-size: 12px; +} +label.std { + float: none; + margin: 0px; + width: 170px; + display: block; + font-size: 12px; + text-align: right; + font-weight: bold; +} +form div.std { + margin-top: -2em; +} + +fieldset.width1 label { + width: 110px; +} + +label:after { + clear: both; +} + +input, textarea, option { + color: #000; + font-size: 12px; + margin: 0; + padding: 0; +} + +input[type="text"], input[type="password"], input[type="file"], textarea { + padding: 2px 4px; +} + +input[type="text"], input[type="password"], input[type="file"], textarea, select, option { + background-color:#FFF; +} +input[type="radio"], input[type="checkbox"] { + background-color:transparent; +} + +input:focus, textarea:focus { + background-color: #F0EBD6; +} + +fieldset { + _position: relative; +} + +legend { + _position: relative; + _top: -2em; + _margin-top: 12px; +} +select optgroup { + background: #fff; + padding: 2px; + color: #000 +} +select optgroup option { + padding: 0 9px; + color: #000 +} + +.lab_modules_positions { + float: none; + text-align: left; + font-weight: normal; + padding: 0; + cursor: pointer; + display: block; + width: 425px; +} + +.lab_modules { + float: none; + text-align: left; + font-weight: normal; + padding-left: 10px; + cursor: pointer; + display: block; + width: 350px; +} + +/* STRUCTURE */ + +#container { + width: 960px; + margin: 0 auto 2em auto; + text-align: left; +} + +#main { + clear: left; + /*border: 1px solid #999; + border-bottom: none;*/ +} + +#content { + padding: 1.25em; +} + +#news { + width: 640px; + border: 1px solid #E0D0B1; +} + +#help { + float: right; + width: 150px; + padding: 4px; + border: 1px solid #DFD5C3; + font-size: 0.9em; +} + +#image { + float: none; + padding: 6px; + background: #fff; + border: 1px solid #DFD5C3; + font-size: 0.9em; + text-align: center; +} +#image img { margin: 0; padding: 0 } + +#id_image_attr +{ + list-style: none; +} + +#product_link { + width: 240px; + float: right; + padding: 4px; + margin-top: 8px; + font-size: 0.9em; + text-align: center; + clear: right; +} + +#help:after, +#image:after { + clear: both; +} + +/* NAV */ + +#nav { + float: right; + margin: 1em 0; + font-size: 1.1em; + font-weight: bold; + vertical-align: middle; +} + +#nav li { + display: inline; + list-style: none; + margin: 0 0 0 2em +} + +#nav img { + vertical-align: bottom; +} + +.warn .pico { + vertical-align: middle; + padding: 0; + margin: 0 +} + +#content .alert { + width: 500px; + margin: 0 0 15px 0; + padding: 10px 15px; + border-top: 1px solid #DF7B7B; + border-bottom: 1px solid #DF7B7B; + background-color: #FFE6E6; +} + +#content .warning { + width: 400px; + margin: 0 0 15px 0; + line-height: 20px; + padding: 10px 20px 10px 20px; + border-top: 1px solid #FF9900; + border-bottom: 1px solid #FF9900; + background-color: #FFEBCC; +} + +#unhook_button_position_bottom { + overflow: hidden; + width: 600px; + padding-top: 10px; +} + +#unhook_button_position_top { + overflow: hidden; + width: 600px; +} + +#content .conf, #content .warn, #content .error { + color:#383838; + font-weight:700; + margin: 0 0 10px 0; + line-height: 20px; + padding: 10px 15px; +} + +#content .error-inline { + color:#ff0000; + font-weight:bold; +} + +#content .conf { + border: 1px solid #72CB67; + background-color: #DFFAD3; +} +#content .conf img, #content .warn img, #content .error img { + margin:-4px 5px 0 0; +} + +#content .error { + border: 1px solid #EC9B9B; + background-color: #FAE2E3; +} + +#content .warn { + border: 1px solid #D3C200; + background-color: #FFFAC6; +} + +#content .error ol { + clear: both; + margin-top: 5px; + padding-bottom: 0; +} + +#content .error ol li{ + font-weight:200; + margin-left:30px; +} + +#content .confirm h3 { + padding: 0 0 0 20px; + background: url(../img/admin/ok.gif) no-repeat 0 0; +} + +#content .warn h3 { + padding: 0 0 0 20px; + background: url(../img/admin/warning.gif) no-repeat 0 0; +} + +#content .error h3 { + padding: 0 0 0 20px; + background: url(../img/admin/warning.gif) no-repeat 0 0; +} + +/* CONTENT - COLUMN */ + +.column { + float: left; + width: 173px; + margin: 0 50px 1.5em 0; + padding: 10px; + -moz-border-radius: 20px; + text-align: center; +} + +#col_1 { + height: 235px; + color: #FFFFFF; + background: #FF8C76 url(../img/admin/col_1.gif) no-repeat; +} + +#col_2 { + height: 235px; + color: #FFFFFF; + background: #FFC44F url(../img/admin/col_2.gif) no-repeat; +} + +#col_3 { + height: 235px; + color: #FFFFFF; + background: #8CFF70 url(../img/admin/col_3.gif) no-repeat; +} + +/* CONTENT - NEWS */ + +#news img { + padding: 0 6px 0 0; + vertical-align: middle; +} + +#news .infos, +#news .content { + margin: 0; + padding: 4px; + font-family: Arial,Helvetica,sans-serif; + font-weight: normal; +} + +.table tr.last td { + border-bottom: none; +} + +.footer_link, .footer_link:hover { + color: #812143; + font-weight: bold; + text-decoration: underline; +} + +/* CLASS */ + +h3.title { + clear: both; + margin: 0; + padding: 4px 10px; + border: 1px solid #E0D0B1; + border: none; +} + +h3.subtitle { + color: #FF8D42; + font-size: 1.2em; +} + +p.infos { + float: right; + margin: 0; + padding: 0; + font-size: 0.9em; + line-height: 1em; + vertical-align: top; +} + +.width1 { + width: 350px; +} + +.width2 { + width: 500px; +} + +.width3 { + width: 600px; +} + +.width4 { + width: 745px; +} + +.width5 { + width: 655px; +} + +.widthfull { + width: 100%; +} + +tr.deleted td { + background-color: #EEEEEE; +} + +.contextnav { + margin: 10px 0; + padding: 3px 6px; + line-height: 1.30em; + border: 1px solid #E0D0B1; +} + +.contextnav img { + vertical-align: text-top; +} + +.contextnavleft { + float: left; + width: 6em; +} + +.contextnavcenter { + text-align: center; +} + +.contextnavcenter a, +.contextnavcenter b { + letter-spacing: 6pt; +} + +.contextnavright { + float: right; + width: 6em; + text-align: right; +} + +.hidden { + height: 1px; + border-width: 1px 0 0 0; + border-style: solid; + border-color: #fff; +} + +.clear { + clear: both; +} + +.flatclear { + clear: both; + height:0px; + line-height:0px; +} + +.space { + margin-top: 13px; +} + +.pspace { + padding-top: 1em; +} + +.double-space { + margin-top: 2em ; +} + +.space-bottom { + margin-bottom: 1em; +} + +.double-bottom-space { + margin-bottom: 2em ; +} + +.left { + text-align: left; +} + +.center { + text-align: center; +} + +.right { + text-align: right; +} + +.small { + font-size: 0.85em; +} + +.row { + background: #F4E6C9 url(../img/admin/news-bg.gif) repeat-x top left; +} + +.noborder { + border: none; +} + +.highlight { + background-color: #FFFF66; + font-weight: bold; +} + +.discount_name { + background: #FFEBCC; + padding: 2px; + text-transform: uppercase; +} + +.displayed_flag { + float: left; + margin: 4px 0 0 4px; +} + +.language_flags { + display: none; + float: left; + background: #FFF; + margin: 4px; + padding: 8px; + width: 80px; + border: 1px solid #555; +} + +.pointer { + cursor: pointer; +} + +.imgm { + margin: 3px 0px 3px 0px; +} + +.green { + color: forestgreen; +} + +.bullet { + display: list-item; + list-style: disc; + margin-left: 30px; +} + +/* access management */ +#ajax_confirmation { + padding-top: 3px; + padding-bottom: 6px; +} + +/* help boxes */ +.hint { + display: none; + position: relative; + left: 0px; + margin-top: 4px; + margin-bottom: 2px; + border: 1px solid #50B0EC; + padding: 8px 6px 8px 34px ; + color: #383838; + background: #DDE9F7 url(../img/admin/help2.png) no-repeat 6px 5px; +} + +/* The pointer image is added by using another span */ +.hint .hint-pointer { + position: absolute; + left: -10px; + top: 5px; + width: 10px; + height: 19px; +} + +#flagsLanguage img { + padding: 3px; + margin-bottom: -4px; +} + +#flagsLanguage .selected_language { + border: 1px solid #BBB; + padding: 2px; + margin-bottom: -4px; +} + +.disable, .disable:hover { + background-color: #CCCCCC; + color: #AAAAAA; +} + +/* Ajax classes */ +.ajax-warning, .ajax-success, .ajax-error { + border: 1px solid #CCCCCC; + padding: 5px 20px; + margin: 5px; + width: 70%; +} +.ajax-warning { + background-color: #FFBD6F; +} +.ajax-success { + background-color: #9FDF8B; +} +.ajax-error { + background-color: #FF7F84; +} +.ajax-loader { + margin: 5px 10px; +} + +/* tab: AdminProducts */ +#upload-confirmation { + background-color: yellow; + font-weight:bold; +} + +.productFieldComment { + color: #7F7F7F; + font-size: 0.8em; +} + +/* Confirm box */ +a.confirm_yes, a.confirm_no { + width: 50px; + margin-left: 60px; + padding: 10px; + border-style: solid; + border-width: 1px; + text-align: center; + font-weight: bold; + color: white; +} +a.confirm_yes { + border-color: red; + background-color: red; +} +a.confirm_no { + border-color: green; + background-color: green; +} + +/* tab: AdminImport */ + +form#import_form { + padding-bottom:22px; + margin-left:15px; + margin-bottom:20px; +} +.table_overflow { + width:900px; + height:500px; + overflow:auto; +} + +.new_message{ + background-color:#FFE35C; +} +.myDragClass { + background-color: #FFAA55; +} +.dragHandle{ +cursor: move; +} + +p#mailResultCheck{ + margin:2px 0; + padding-left:18px; + font-size:12px; +} + +p.ok{ + background:url('../img/admin/enabled.gif') no-repeat top left; + color:green; +} + +p.fail{ + background:url('../img/admin/disabled.gif') no-repeat top left; + font-weight:bold; + color:red; +} +#resultCheckLangPack{ + border: 1px solid #DFD5C3; + padding:10px; + margin-bottom:10px; +} + +/* TinyMCE */ +span.defaultSkin .mceToolbar { height: auto } +span.defaultSkin table.mceLayout tr.mceFirst td { float: left } + +/* webservice */ +table.permissions { + border:1px solid #DFD5C3; +} +table.permissions th { + background:#FFF6D3; + text-align:center; + height:20px; +} +table.permissions td { + padding:5px; + text-align:center; +} + +/* */ +.path_bar{ + background-color:#EFEFEF; + font-family:Arial; + font-size:13px; + margin-bottom:20px; + padding:5px; +} + +.path_bar a{ + font-weight:700; +} +.adminHeader h1{ + font-family:Arial; + color:#812143; + font-size:18pt; + margin: 0; +} + +#adminHeader hr{ + background-color: #812143; + margin: 0; +} + +.clearfix:after { + content: "."; + display: block; + clear: both; + visibility: hidden; + line-height: 0; + height: 0; +} + +.clearfix { + display: inline-block; +} + +html[xmlns] .clearfix { + display: block; +} + +* html .clearfix { + height: 1%; +} + +#adminHeader #help_img{ + float: right; + margin-top: 5px; +} +#adminpresentation{ + width: 923px; + border:1px solid #8E8E8E; + background-color: #EFEFEF; + float: left; + padding: 1px; + font-size: 8pt; +} + +#listpresentation{ + float: left; + width: 100px; +} + +#iframe{ + width: 450px; + height: 220px; + float: left; + margin: 10px; + background: #DDD; + border: 1px solid #666; +} + +#adminpresentation ul li{ + list-style: none; +} + +#list_video{ + float: left; + width: 220px; +} + +#list_video h3{ + color: #882F4F; + font-size: 12pt; + padding-top: 25px; + margin: 0; +} + +#list_video ul{ + text-align: left; + padding: 0; + margin: 0; +} + +#list_video ul li{ + float: left; + width: 195px; + text-decoration: underline; + padding-left: 25px; + margin-top: 5px; +} + +#footer_iframe_home{ + float: left; + background-color: #DEDEDE; + width: 100%; + height: 25px; + padding-top: 10px; +} + +#footer_iframe_home label{ + float: none; + padding-left: 10px; + color: #903E5B; + line-height: 15px; +} + +#footer_iframe_home input{ + margin-left: 10px; +} + +#footer_iframe_home a{ + float: right; + margin: 0px 15px 0px 0px; + text-decoration: underline; + color: #903E5B; +} + +#column_left{ + width: 610px; + float: left; + padding-top: 20px; +} + +#column_right{ + width: 315px; + float: right; + padding-top: 20px; +} + +.F_list{ + list-style: none; + padding: 0; + margin: 0; +} + +#first_block{ + margin: 0; + background: #EFEFEF url('../img/admin/catalog_xl.png') no-repeat 6px 6px; +} + +#second_block{ + background: #EFEFEF url('../img/admin/customer_xl.png') no-repeat 6px 6px; +} + +#third_block{ + background: #EFEFEF url('../img/admin/stats_xl.png') no-repeat 6px 6px; +} + +#fourth_block{ + background: #EFEFEF url('../img/admin/employees_xl.png') no-repeat 6px 6px; +} + +.F_list li{ + width: 125px; + float: left; + margin-left: 14px; + border: 1px solid #8E8E8E; + padding: 5px; + height: 120px; +} + +.F_list li h4{ + width: 115px; + color: #903E5B; + text-decoration: underline; + font-size: 12px; + margin-top: 35px; + margin-bottom: 0; +} + +.F_list a{ + color: #903E5B; +} + +.F_list a:hover{ + color: #903E5B; +} + +.F_list li p{ + font-size: 8pt; +} + +.table_info{ + width: 283px; + float: left; + padding: 1px; + border: 1px solid #8E8E8E; + margin-right: 15px; + margin-top: 20px; +} + +.table_info h5{ + background-image: url('../img/admin/green-gradient.png'); + color: #FFFFFF; + margin: 0; + line-height: 29px; + padding-left: 15px; + font-size: 12pt; +} + +.table_info h5 a, +.admin-box1 h5 a{ + color: #FFFFFF; + font-size: 8pt; + float: right; + text-decoration: underline; + font-weight: normal; + padding-right: 10px; +} + +.admin-box2 h5 a{ + color: #FFFFFF; + font-size: 8pt; + float: right; + text-decoration: underline; + font-weight: normal; + padding-right: 10px; +} + +#table_info_last{ + margin-left: 0; + float: left; +} + +.table_info_details{ + width: 283px; + border: 0; +} + +.table_info_details tr{ + height: 30px; + background-color: #EFEFEF; + width: 290px; + color: #000000; + font-weight: bold; + padding-left: 5px; + width: 100%; + text-align: center; +} + +.tr_odd td{ + background-color: #DEDEDE; +} +.table_info_details tr td.td_align_left{ + text-align: left; + padding-left: 10px; + width: 150px; +} + +.table_info_details tr td{ + text-align: right; + padding-right: 10px; +} + +#table_info_large{ + margin-top: 20px; + margin-bottom: 20px; + width: 586px; + float: left; + padding: 1px; + border: 1px solid #8E8E8E; +} + +#table_info_large h5{ + background-image: url('../img/admin/green-gradient.png'); + color: #FFFFFF; + margin: 0; + line-height: 29px; + padding-left: 15px; + font-size: 12pt; + font-weight: normal; +} + +#table_info_large h5 a{ + color: #FFFFFF; + float: right; + font-size: 8pt; + text-decoration: underline; + font-weight: normal; + padding-right: 8px; +} + +#stat_google{ + width: 586px; + height: 175px; + background-color: #DEDEDE; +} + +.admin-box1{ + width: 310px; + float: left; + padding: 1px; + border: 1px solid #8E8E8E; + font-size: 8pt; + margin-bottom: 20px; +} + +.admin-box1 h5{ + background-image: url('../img/admin/orange-gradient.png'); + color: #FFFFFF; + margin: 0; + line-height: 29px; + padding-left: 15px; + font-size: 12pt; +} + +.admin-box2{ + width: 310px; + float: left; + padding: 1px; + border: 1px solid #8E8E8E; + font-size: 8pt; + margin-bottom: 20px; + background-color: #f2f2f2; +} + +.admin-box2 h5{ + background-image: url('../img/admin/pink-gradient.png'); + color: #FFFFFF; + margin: 0; + line-height: 29px; + padding-left: 15px; + font-size: 12pt; +} + + +.admin-home-box-list li img{ + margin: 0 15px 0 5px; +} +.admin-home-box-list{ + padding-left:0; + margin: 0px; + list-style: none; +} + +#prestashop_link{ + background: url('../img/admin/bg_pslink.png') no-repeat 0px 0px; +} + +.admin-home-box-list li{ + margin: 1px; + padding:5px 0; +} + +#prestashop_link li{ + height: 67px; + margin: 1px; +} + +.admin-home-box-list li p{ + padding: 5px 5px 0px 90px; +} +.admin-home-box-list li a{ + color: #812143; + font-weight: bold; + text-decoration: underline; + line-height: 18px; + font-size: 8.5pt; + text-align: left; +} + +#prestashop_link li a{ + color: #812143; + margin-left: 90px; + font-weight: bold; + text-decoration: underline; + line-height: 18px; + font-size: 8.5pt; + text-align: left; + float:left; +} + +#table_customer{ + width: 590px; + cellpadding: 0; + cellspacing: 0; +} + +#table_customer thead span{ + background: url('../img/admin/greenlight-gradient.png'); + color: #FFFFFF; + line-height: 35px; + border: 1px solid #416110; + display: block; + text-align: center; + height: 30px; + border-left: none; + border-right: none; +} + +#table_customer thead span.first{ + border: 1px solid #416110; + border-right: none; +} + +#table_customer thead span.last{ + border: 1px solid #416110; + border-left: none; +} + +#table_customer thead th{ + margin: 0; +} + +#order_id{ + width: 52px; + text-align: center; +} + +#order_customer{ + width: 175px; +} + +#order_status{ + width: 130px; +} + +#order_total{ + width: 100px; +} + +.order_action{ + text-align: center; +} + +#order_line1{ + background-color: #EFEFEF; +} + +#table_customer tbody{ + font-size: 8pt; +} + +#table_customer tbody tr td.order_td_first{ + text-align: center; + padding: 0; + height: 35px; +} + +#table_customer tbody tr td{ + border: 1px solid #E0E0E0; + border-top: none; + padding-left: 10px; + height: 35px; +} + +#table_info_news{ + width: 310px; + float: left; + padding: 1px; + border: 1px solid #8E8E8E; + margin-top: 20px; + font-size: 8pt; +} + +#table_info_news h5{ + background-color: #7Ab51D; + color: #FFFFFF; + margin: 0; + line-height: 29px; + padding-left: 15px; + font-size: 12pt; +} + +#table_info_news h5 a{ + color: #FFFFFF; + float: right; + font-size: 8pt; + text-decoration: underline; + font-weight: normal; + padding-right: 10px; +} + +#table_info_news ul{ + list-style: none outside none; + padding: 0; + margin: 0; +} + +#block_news_first{ + background-color: #E1EBD2; + padding: 5px; +} +#block_news_first a{ + color: #812143; + font-weight: bold; + text-decoration: underline; + line-height: 18px; +} + +#block_news_first p{ + line-height: 12px; + padding-left: 10px; + margin: 0; +} + +#block_news_first p a{ + color: #812143; + font-weight: bold; + margin-right: 8px; + margin-left: 200px; +} + +#table_info_news ul li a{ + line-height: 25px; + padding-left: 10px; + margin: 0; + text-decoration: underline; +} + +.block_news_odd{ + background-color: #DEDEDE; + line-height: 25px; +} + +#block_news_last{ + background-color: #EFEFEF; +} + +#see_newsletter{ + margin-left: 5px; + background: url(../img/admin/email.gif) no-repeat left center; +} + +#follow_on_facebook{ + margin-left: 5px; + background: url(../img/admin/facebook.jpg) no-repeat left center; +} + +#follow_on_twitter{ + margin-left: 5px; + background: url(../img/admin/twitter.jpg) no-repeat left center; +} + +#block_news_last ul li a{ + color: #812143; + padding-left: 20px; +} + +.viewed{ + background: url('../img/admin/enabled.gif') no-repeat left center; +} + +.clear{ + clear: both; +} + +a.blue { + color:blue; +} + +a.blue:hover { + color:#0000AA; +} + + +/* help cluetip */ +.cluetip-help-button { + width: auto; + text-align:left; + background-color:white; + padding:10px; + border:1px solid gray; + background:#F1F2F4 url(../img/admin/block_bg.jpg) repeat-x scroll left bottom; + opacity:0.75; +} + +.ac_results ul { + list-style: none; + text-align: left; + background: white; + padding: 0; +} +.ac_results li { + padding: 5px; +} +.ac_even { + background: #EFEFEF; +} +.ac_over { + background: #ECEADE; +} +.button-translate { + padding:0px; + margin : 0 0 0 10px; + height:15px; + width:15px; + cursor:pointer; +} diff --git a/css/csshover.htc.htc b/css/csshover.htc.htc new file mode 100644 index 000000000..3ba936ac3 --- /dev/null +++ b/css/csshover.htc.htc @@ -0,0 +1,120 @@ + + \ No newline at end of file diff --git a/css/datePicker.css b/css/datePicker.css new file mode 100644 index 000000000..a22417f78 --- /dev/null +++ b/css/datePicker.css @@ -0,0 +1,142 @@ +table.jCalendar { + border: 1px solid #000; + background: #aaa; + border-collapse: separate; + border-spacing: 2px; +} +table.jCalendar th { + background: #333; + color: #fff; + font-weight: bold; + padding: 3px 5px; +} +table.jCalendar td { + background: #ccc; + color: #000; + padding: 3px 5px; + text-align: center; +} +table.jCalendar td.other-month { + background: #ddd; + color: #aaa; +} +table.jCalendar td.today { + background: #666; + color: #fff; +} +table.jCalendar td.selected { + background: #f66; + color: #fff; +} +table.jCalendar td.selected:hover { + background: #f33; + color: #fff; +} +table.jCalendar td:hover, table.jCalendar td.dp-hover { + background: #fff; + color: #000; +} +table.jCalendar td.disabled, table.jCalendar td.disabled:hover { + background: #bbb; + color: #888; +} + +/* For the popup */ + +/* NOTE - you will probably want to style a.dp-choose-date - see how I did it in demo.css */ +/* located in demo.css and creates a little calendar icon + * instead of a text link for "Choose date" + */ +a.dp-choose-date { + /*float: left; + display: block; + text-indent: -2000px;*/ + width: 16px; + height: 18px; + overflow: visible; + padding: 0; + margin: 2px 3px 0 3px; + background: url('../img/admin/calendar.png') no-repeat 0px -1px; +} +a.dp-choose-date.dp-disabled { + background-position: 0 -20px; + cursor: default; +} +/* makes the input field shorter once the date picker code + * has run (to allow space for the calendar icon + */ +input.dp-applied { + width: 100px; + /*float: left;*/ +} + + + +div.dp-popup { + position: relative; + background: #ccc; + font-size: 10px; + font-family: arial, sans-serif; + padding: 2px; + width: 171px; + line-height: 1.2em; +} +div#dp-popup { + position: absolute; + z-index: 199; +} +div.dp-popup h2 { + font-size: 12px; + text-align: center; + margin: 2px 0; + padding: 0; +} +a#dp-close { + font-size: 11px; + padding: 4px 0; + text-align: center; + display: block; +} +a#dp-close:hover { + text-decoration: underline; +} +div.dp-popup a { + color: #000; + text-decoration: none; + padding: 3px 2px 0; +} +div.dp-popup div.dp-nav-prev { + position: absolute; + top: 2px; + left: 4px; + width: 100px; +} +div.dp-popup div.dp-nav-prev a { + float: left; +} +/* Opera needs the rules to be this specific otherwise it doesn't change the cursor back to pointer after you have disabled and re-enabled a link */ +div.dp-popup div.dp-nav-prev a, div.dp-popup div.dp-nav-next a { + cursor: pointer; +} +div.dp-popup div.dp-nav-prev a.disabled, div.dp-popup div.dp-nav-next a.disabled { + cursor: default; +} +div.dp-popup div.dp-nav-next { + position: absolute; + top: 2px; + right: 4px; + width: 100px; +} +div.dp-popup div.dp-nav-next a { + float: right; +} +div.dp-popup a.disabled { + cursor: default; + color: #aaa; +} +div.dp-popup td { + cursor: pointer; +} +div.dp-popup td.disabled { + cursor: default; +} \ No newline at end of file diff --git a/css/index.php b/css/index.php new file mode 100644 index 000000000..4c46c3561 --- /dev/null +++ b/css/index.php @@ -0,0 +1,37 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; +?> \ No newline at end of file diff --git a/css/install.css b/css/install.css new file mode 100644 index 000000000..e29531b37 --- /dev/null +++ b/css/install.css @@ -0,0 +1,349 @@ +/* POS CSS Install */ + +body { + height: 100%; + font-family: Arial, Verdana, sans-serif; + font-size: 13px; + font-weight: bold; + margin: 0; + padding: 0; + text-align: center; + background-color: #FFF; + color: #333; +} + +a { + color: #C73178; + text-decoration: none; + font-weight: normal; +} + +a:hover { + color: #333; + font-weight: normal; + text-decoration: underline; +} + +img { + margin-right: 10px; +} + +a img { + border: 0px; +} + +form { + margin: 0; + padding: 0; +} + +input, select { + font-family: Arial, Verdana, sans-serif; + font-weight: normal; + font-size: 12px; + margin: 2px 0 2px 0; +} + +#required { + color: #C73178; +} + + +/* STRUCTURE */ + +#page { + width: 100%; +} + +#container { + margin-top: 10px; + padding: 10px 0 0 0; + background: #FFF; +} + +#container-inner { + width: 940px; + margin: 0 auto 0 auto; + padding: 0; + text-align: left; +} + +#content { + float: right; + width: 697px; + border-left: 1px solid #65B821; + min-height: 380px; + margin: 0 0 20px 0; + padding: 5px 14px; +} + +#sidebar { + float: left; + width: 200px; + padding: 5px 0 0 0; +} + + +/* HEADER */ + +#header { + background-color: #DFF5CD; +} + +#header table{ + margin-left: 240px; + +} + +#frame { + color: #666; + width: 860px; + text-align: right; + padding-top: 50px; + padding-right: 10px; + padding-left: 20px; + margin-top: 30px; + float: right; +} + +#frame a{ + color: #666; + text-decoration: none; + font-weight: bold; +} + +#frame a:hover { + color: #333; + font-weight: bold; + text-decoration: underline; +} + +#spanTitle { + margin-top: -5px; + font-size: 23px; + float: left; + color: #555; +} + + +/* WELCOME */ + +#welcome { + margin-bottom: 2em; +} + +#welcome h3 { + font-size: 115%; +} + +#welcome p { + margin: 1.5em 180px 1em 0; + line-height: 1.5em; +} + +#welcome ul { + margin: 0 190px 0 20px; + padding: 0; + list-style: none; +} + +#welcome ul li { + margin: 0 0 10px 0; + padding: 0 0 0 26px; + font-size: 110%; + line-height: 1.3em; + font-weight: normal; + color: #666; + background: url(../img/install/icon-checksm_gris.gif) no-repeat 0 4px; +} + +/* CONTENT */ + +#content h1 { + margin: 0 0 12px 0; + padding: 0; + border-bottom: 1.5px solid #65B821; + color: #666; + font-size: 1.5em; +} + +#content h1 .faint { + background: #65B821; + width: inherit; + margin: 0 0.4em 0 0; + padding: 0 0.2em 0 0.2em; + color: #fff; + text-align: center; +} + +#content h2 { + color: #C73178; + font-size: 1.3em; + border-bottom: 2px solid #F4D7E4; + margin: 12px 0 12px 0; +} + +#content h3 { + margin: 0; + color: #C73178; +} + +/* TABLE */ + +.table { + width: 450px; + margin: 0 0 20px 0; + padding: 0; + border: 1px solid #F4D7E4; + border-collapse: collapse; +} + +.table th, .table td { + margin: 0; + padding: 5px; + border-bottom: 1px inset #F0EADA; +} + +.table td { + text-align: center; +} + + +/* FORM TABLE */ + +table.form-table { + width: 550px; + margin-top: 0.65em; + padding: 0; + border-collapse: collapse; +} + +table.form-table th, +table.form-table td { + margin: 0; + padding: 8px; + border-bottom: 1px dotted #F4D7E4; +} + +table.form-table th { + width: 135px; + padding-top: 12px; + text-align: right; + vertical-align: top; + color: #333; +} + +table.form-table td p.note { + margin: 0; + padding: 2px 0 2px 0; + font-family: "Lucida Grande", Arial, Verdana, sans-serif; + font-size: 90%; + font-weight: normal; + color: #666; +} + +/* HELP BOXES : HINT TO HIDE AND REVEAL PASSWORDS */ + +.reveal { + height: 50px; + font-size: 12px; + color: #333; + padding: 9px 10px 2px 10px; +} + +/* ERROR */ + +#content div.alert { + width: 450px; + margin: 15px 0; + padding: 10px 15px; + border-top : 1px dotted #666; + border-bottom: 1px dotted #666; + background: #F9E3EE; +} + +#content div.error h4 { + margin: 0; + padding: 0 0 0 20px; + font-family: "Lucida Grande", Verdana, sans-serif; + font-size: 110%; + text-transform: none; + font-weight: normal; + letter-spacing: 0; + text-align: left; + color: #C73178; + border: none; + background: url(../img/install/warning.gif) no-repeat 0 0; +} + +#content div.error ol { + margin: 15px 0 0 0; + padding-bottom: 0; + color: #C73178; + font-weight: normal; +} + + +/* WAITING */ + +#waiting { + margin: 10px; + display: none; + width: 230px; + background: #FFF; + border: 1px #666 dotted; + padding: 10px; +} + + +/* INFOS */ + +#infos { + width : 320px; + margin-left: 20px; + border: 1px solid #65B821; + background-color: #DFF5CD; + font-weight: normal; + padding: 10px; +} + + +/* SIDEBAR */ + +#sidebar div { + vertical-align: middle; + margin: auto 0 5px 0; + line-height: 27px; + font-size: 0.9em; + font-weight: bold; + color: #666; +} + +#sidebar .number { + line-height: 60px; + float: left; + height: 62px; + padding: 5px; + font-size: 4.0em; +} + +#sidebar .step { + float: right; + width: 140px; + height: 60px; + padding: 5px; + border: 1px solid #F4D7E4; +} + + +/* FOOTER */ + +#footer { + clear: both; + margin: 0; + padding: 8px 5px 20px 5px; + border-top: 1px solid #F4D7E4; + text-align: center; + font-size: 90%; + line-height: 1em; +} \ No newline at end of file diff --git a/css/jquery.autocomplete.css b/css/jquery.autocomplete.css new file mode 100644 index 000000000..ab37428d7 --- /dev/null +++ b/css/jquery.autocomplete.css @@ -0,0 +1,51 @@ +.ac_results { + text-align: left; + padding: 0px; + border: 1px solid black; + background-color: white; + overflow: hidden; + z-index: 99999; +} + +.ac_results ul { + width: 100%; + list-style-position: outside; + list-style: none; + padding: 0; + margin: 0; +} + +.ac_results li { + margin: 0px; + padding: 2px 5px; + cursor: default; + display: block; + /* + if width will be 100% horizontal scrollbar will apear + when scroll mode will be used + */ + /*width: 100%;*/ + font: menu; + font-size: 12px; + /* + it is very important, if line-height not setted or setted + in relative units scroll will be broken in firefox + */ + line-height: 16px; + overflow: hidden; +} + +/* +.ac_loading { + background: white url('indicator.gif') right center no-repeat; +} +*/ + +.ac_odd { + background-color: #eee; +} + +.ac_over { + background-color: #0A246A; + color: white; +} diff --git a/css/jquery.cluetip.css b/css/jquery.cluetip.css new file mode 100644 index 000000000..335e03591 --- /dev/null +++ b/css/jquery.cluetip.css @@ -0,0 +1,63 @@ +#cluetip-close img { + border: 0; +} +#cluetip-title { + overflow: hidden; +} +#cluetip-title #cluetip-close { + float: right; + position: relative; +} +#cluetip-waitimage { + width: 43px; + height: 11px; + position: absolute; + background-image: url('../img/loader.gif'); +} +.cluetip-arrows { + display: none; + position: absolute; + top: 0; + left: -11px; + height: 22px; + width: 11px; + background-repeat: no-repeat; + background-position: 0 0; +} +#cluetip-extra { + display: none; +} + +.cluetip-default { + background-color: transparent; +} +.cluetip-default #cluetip-outer { + border: 2px solid #ccc; + position: relative; + background-color: #fff; +} + +.cluetip-default h3#cluetip-title { + margin: 0 0 5px; + padding: 2px 5px; + font-size: 12px; + font-weight: normal; + background-color: #ccc; + color: #333; +} + +.cluetip-default #cluetip-inner { + padding: 0 5px 5px; + display: inline-block; +} +.cluetip-default div#cluetip-close { + text-align: right; + margin: 0 5px 5px; + color: #900; +} + +/* stupid IE6 HasLayout hack */ +.cluetip-rounded #cluetip-title, +.cluetip-rounded #cluetip-inner { + zoom: 1; +} \ No newline at end of file diff --git a/css/jquery.fancybox-1.3.4.css b/css/jquery.fancybox-1.3.4.css new file mode 100644 index 000000000..a14169775 --- /dev/null +++ b/css/jquery.fancybox-1.3.4.css @@ -0,0 +1,374 @@ +/* + * FancyBox - jQuery Plugin + * Simple and fancy lightbox alternative + * + * Examples and documentation at: http://fancybox.net + * + * Copyright (c) 2008 - 2010 Janis Skarnelis + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. + * + * Version: 1.3.4 (11/11/2010) + * Requires: jQuery v1.3+ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +/* PrestaShop + * + * We did several modifications in this file: + * + * - Persistant arrows + * - Fixed IE 6 path on the AlphaLoader method + * - Specific path for background images + * + */ + +#fancybox-loading { + position: fixed; + top: 50%; + left: 50%; + width: 40px; + height: 40px; + margin-top: -20px; + margin-left: -20px; + cursor: pointer; + overflow: hidden; + z-index: 1104; + display: none; +} + +#fancybox-loading div { + position: absolute; + top: 0; + left: 0; + width: 40px; + height: 480px; + background-image: url('../js/jquery/fancybox/fancybox.png'); +} + +#fancybox-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 1100; + display: none; +} + +#fancybox-tmp { + padding: 0; + margin: 0; + border: 0; + overflow: auto; + display: none; +} + +#fancybox-wrap { + position: absolute; + top: 0; + left: 0; + padding: 20px; + z-index: 1101; + outline: none; + display: none; +} + +#fancybox-outer { + position: relative; + width: 100%; + height: 100%; + background: #fff; +} + +#fancybox-content { + width: 0; + height: 0; + padding: 0; + outline: none; + position: relative; + overflow: hidden; + z-index: 1102; + border: 0px solid #fff; +} + +#fancybox-hide-sel-frame { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 1101; +} + +#fancybox-close { + position: absolute; + top: -15px; + right: -15px; + width: 30px; + height: 30px; + background: transparent url('../js/jquery/fancybox/fancybox.png') -40px 0px; + cursor: pointer; + z-index: 1103; + display: none; +} + +#fancybox-error { + color: #444; + font: normal 12px/20px Arial; + padding: 14px; + margin: 0; +} + +#fancybox-img { + width: 100%; + height: 100%; + padding: 0; + margin: 0; + border: none; + outline: none; + line-height: 0; + vertical-align: top; +} + +#fancybox-frame { + width: 100%; + height: 100%; + border: none; + display: block; +} + +#fancybox-left, #fancybox-right { + position: absolute; + bottom: 0px; + height: 100%; + width: 35%; + cursor: pointer; + outline: none; + background: transparent url('../js/jquery/fancybox/blank.gif'); + z-index: 1102; + display: none; +} + +#fancybox-left { + left: 0px; +} + +#fancybox-right { + right: 0px; +} + +#fancybox-left-ico, #fancybox-right-ico { + position: absolute; + top: 50%; + left: -9999px; + width: 30px; + height: 30px; + margin-top: -15px; + cursor: pointer; + z-index: 1102; + display: block; +} + +#fancybox-left-ico { + background-image: url('../js/jquery/fancybox/fancybox.png'); + background-position: -40px -30px; + left: 20px; /* PrestaShop - make left arrow permanently visible */ +} + +#fancybox-right-ico { + background-image: url('../js/jquery/fancybox/fancybox.png'); + background-position: -40px -60px; + /* PrestaShop - make right arrow permanently visible */ + right: 20px; + left: auto; + /* End */ +} + +#fancybox-left:hover, #fancybox-right:hover { + visibility: visible; /* IE6 */ +} + +#fancybox-left:hover span { + left: 20px; +} + +#fancybox-right:hover span { + left: auto; + right: 20px; +} + +.fancybox-bg { + position: absolute; + padding: 0; + margin: 0; + border: 0; + width: 20px; + height: 20px; + z-index: 1001; +} + +#fancybox-bg-n { + top: -20px; + left: 0; + width: 100%; + background-image: url('../js/jquery/fancybox/fancybox-x.png'); +} + +#fancybox-bg-ne { + top: -20px; + right: -20px; + background-image: url('../js/jquery/fancybox/fancybox.png'); + background-position: -40px -162px; +} + +#fancybox-bg-e { + top: 0; + right: -20px; + height: 100%; + background-image: url('../js/jquery/fancybox/fancybox-y.png'); + background-position: -20px 0px; +} + +#fancybox-bg-se { + bottom: -20px; + right: -20px; + background-image: url('../js/jquery/fancybox/fancybox.png'); + background-position: -40px -182px; +} + +#fancybox-bg-s { + bottom: -20px; + left: 0; + width: 100%; + background-image: url('../js/jquery/fancybox/fancybox-x.png'); + background-position: 0px -20px; +} + +#fancybox-bg-sw { + bottom: -20px; + left: -20px; + background-image: url('../js/jquery/fancybox/fancybox.png'); + background-position: -40px -142px; +} + +#fancybox-bg-w { + top: 0; + left: -20px; + height: 100%; + background-image: url('../js/jquery/fancybox/fancybox-y.png'); +} + +#fancybox-bg-nw { + top: -20px; + left: -20px; + background-image: url('../js/jquery/fancybox/fancybox.png'); + background-position: -40px -122px; +} + +#fancybox-title { + font-family: Helvetica; + font-size: 12px; + z-index: 1102; +} + +.fancybox-title-inside { + padding-bottom: 10px; + text-align: center; + color: #333; + background: #fff; + position: relative; +} + +.fancybox-title-outside { + padding-top: 10px; + color: #fff; +} + +.fancybox-title-over { + position: absolute; + bottom: 0; + left: 0; + color: #FFF; + text-align: left; +} + +#fancybox-title-over { + padding: 10px; + background-image: url('../js/jquery/fancybox/fancy_title_over.png'); + display: block; +} + +.fancybox-title-float { + position: absolute; + left: 0; + bottom: -20px; + height: 32px; +} + +#fancybox-title-float-wrap { + border: none; + border-collapse: collapse; + width: auto; +} + +#fancybox-title-float-wrap td { + border: none; + white-space: nowrap; +} + +#fancybox-title-float-left { + padding: 0 0 0 15px; + background: url('../js/jquery/fancybox/fancybox.png') -40px -90px no-repeat; +} + +#fancybox-title-float-main { + color: #FFF; + line-height: 29px; + font-weight: bold; + padding: 0 0 3px 0; + background: url('../js/jquery/fancybox/fancybox-x.png') 0px -40px; +} + +#fancybox-title-float-right { + padding: 0 0 0 15px; + background: url('../js/jquery/fancybox/fancybox.png') -55px -90px no-repeat; +} + +/* IE6 */ + +.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_close.png', sizingMethod='scale'); } + +.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_nav_left.png', sizingMethod='scale'); } +.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_nav_right.png', sizingMethod='scale'); } + +.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; } +.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_title_left.png', sizingMethod='scale'); } +.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_title_main.png', sizingMethod='scale'); } +.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_title_right.png', sizingMethod='scale'); } + +.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame { + height: expression(this.parentNode.clientHeight + "px"); +} + +#fancybox-loading.fancybox-ie6 { + position: absolute; margin-top: 0; + top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'); +} + +#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='js/jquery/fancybox/fancy_loading.png', sizingMethod='scale'); } + +/* IE6, IE7, IE8 */ + +.fancybox-ie .fancybox-bg { background: transparent !important; } + +.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_n.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_ne.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_e.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_se.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_s.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_sw.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_w.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../js/jquery/fancybox/fancy_shadow_nw.png', sizingMethod='scale'); } \ No newline at end of file diff --git a/css/jquery.jgrowl.css b/css/jquery.jgrowl.css new file mode 100644 index 000000000..02e041002 --- /dev/null +++ b/css/jquery.jgrowl.css @@ -0,0 +1,127 @@ + +div.jGrowl { + padding: 10px; + z-index: 9999; +} + +/** Special IE6 Style Positioning **/ +div.ie6 { + position: absolute; +} + +div.ie6.top-right { + right: auto; + bottom: auto; + left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.top-left { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.bottom-right { + left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.bottom-left { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.center { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); + width: 100%; +} + +/** Normal Style Positions **/ +body > div.jGrowl { + position: fixed; +} + +body > div.jGrowl.top-left { + left: 0px; + top: 0px; +} + +body > div.jGrowl.top-right { + right: 0px; + top: 0px; +} + +body > div.jGrowl.bottom-left { + left: 0px; + bottom: 0px; +} + +body > div.jGrowl.bottom-right { + right: 0px; + bottom: 0px; +} + +body > div.jGrowl.center { + top: 0px; + width: 50%; + left: 25%; +} + +/** Cross Browser Styling **/ +div.center div.jGrowl-notification, div.center div.jGrowl-closer { + margin-left: auto; + margin-right: auto; +} + +div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer { + background-color: #000; + color: #fff; + opacity: .85; + filter: alpha(opacity = 85); + zoom: 1; + width: 235px; + padding: 10px; + margin-top: 5px; + margin-bottom: 5px; + font-family: Tahoma, Arial, Helvetica, sans-serif; + font-size: 12px; + text-align: left; + display: none; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +div.jGrowl div.jGrowl-notification { + min-height: 40px; +} + +div.jGrowl div.jGrowl-notification div.header { + font-weight: bold; + font-size: 10px; +} + +div.jGrowl div.jGrowl-notification div.close { + z-index: 99; + float: right; + font-weight: bold; + font-size: 12px; + cursor: pointer; +} + +div.jGrowl div.jGrowl-closer { + height: 15px; + padding-top: 4px; + padding-bottom: 4px; + cursor: pointer; + font-size: 11px; + font-weight: bold; + text-align: center; +} + +/** Hide jGrowl when printing **/ +@media print { + div.jGrowl { + display: none; + } +} \ No newline at end of file diff --git a/css/jqzoom.css b/css/jqzoom.css new file mode 100644 index 000000000..1d5cdc988 --- /dev/null +++ b/css/jqzoom.css @@ -0,0 +1,21 @@ +div.zoomdiv { +z-index : 100; +position : absolute; +top:0px; +left:0px; +width : 200px; +height : 200px; +background: #ffffff; +border:1px solid #CCCCCC; +display:none; +text-align: center; +overflow: hidden; + +} + + +img.jqzoom{ +cursor:crosshair; +position:relative; + +} diff --git a/css/login.css b/css/login.css new file mode 100644 index 000000000..1151ce652 --- /dev/null +++ b/css/login.css @@ -0,0 +1,146 @@ +/* CSS Document */ + +body { + margin: 0; + padding: 0; + font-family: Arial; + font-size: 13px; + color: #333; + text-align: center; + background-image: url('../img/admin/bg_2.png'); +} + +h1 { + color: #902F52; + font-size: 20pt; + padding: 15px 10px 10px 30px; + margin: 0; + overflow: hidden; +} + +h2 a { + color: #dedede; + font-size: 7pt; + text-decoration: underline; + margin: 0; +} + +h2 a:hover { + color: #dedede; + font-size: 7pt; + text-decoration: underline; + margin: 0; +} + +a { + color: #902d50; + text-decoration: underline; +} + +a:hover { + color: #902d50; + text-decoration: none; +} + +input, textarea, option, select { + color: #000; + font-family: Arial; + font-size: 12px; + margin: 0; + padding: 0; +} + +input:focus, textarea:focus { + border: 1px solid #686868; + background-color: #DFDFDF; +} + +/* CONTENT */ + +#container { + width: 464px; + margin: 5em auto 1em auto; + padding: 0; +} + +#login { + height: 313px; + background: url('../img/admin/bg_login.gif') no-repeat top center; + color: #383838; + text-align: left; + font-weight: bold; +} + +#login form { + margin: 0; + padding: 40px 30px 25px 30px; +} + +#login #submit { + margin: 1em 1px; + padding: 0; + display: block; +} + +#login #submit input { + padding: 2px 4px; + _padding: 0; +} + +#login #lost { + + font-size: 0.95em; +} + +/* ERROR */ + +#error { + margin: 0 30px 15px 30px; + padding: 10px 15px; + border: 1px solid #EC9B9B; + background-color: #FAE2E3; + text-align: left; +} + +#error ol { + margin: 15px 0 0 0; + padding-bottom: 0; +} + +#error li { + _margin-left: 45px; + font-family: Arial; + font-size: 11px; +} + +#error h3 { + margin: 0 0 .83em 0; + padding: 5px 0 0 30px; + background: url(../img/admin/error.png) no-repeat 0 0; + font-size: 1em; +} + +/* CLASS */ + +.input { + width: 260px; + margin-top: 2px; + padding: 2px 4px; + border: 1px solid #588216; +} + +.button { + border: 1px solid #DFD5AF; + border-top: 1px solid #FFF6D3; + border-left: 1px solid #FFF6D3; + color: #268CCD; + background-color: #FFF6D3; +} + +.button:hover { + background-color: #F0EBD6; +} + +.center { + text-align: center; +} diff --git a/css/tabpane.css b/css/tabpane.css new file mode 100644 index 000000000..f9606ad8d --- /dev/null +++ b/css/tabpane.css @@ -0,0 +1,67 @@ +.tab-pane { + float: left; + position: relative; + width: 928px; +} + +.tab-pane-tax { + float: left; + position: relative; + width: 900px; +} + +.tab-row .tab { + text-align: center; + font-weight: bold; + display: inline; + margin: 0; + float: left; + padding: 2px 8px 3px 8px; + background: #EFEFEF; + z-index: 1; + white-space: nowrap; + position: relative; + font-size: 1.1em; +} + +.tab-row .tab.selected { + border: 1px solid #ccc; + border-bottom: 0; + background: #FFF6D3; + z-index: 3; + padding: 2px 25px 4px 25px; + margin: 1px -3px -3px 0px; + top: -2px; +} + +.tab-page { + clear: both; + border: 1px solid #ccc; + background: #FFFFF0; + z-index: 2; + position: relative; + padding: 10px; +} + +.tab-page table tr td.col-left { + width: 150px; + vertical-align: top; +} + +.tab-page table tr td p { + margin: 0.5em 0 0 0; + padding: 0 0 0.5em 0; + color: #7F7F7F; + font-size: 0.95em; +} + +.tab-page table tr td p.block { + display: block; + clear: both; +} + +.tab-row { + z-index: 1; + white-space: nowrap; +} + diff --git a/css/thickbox.css b/css/thickbox.css new file mode 100644 index 000000000..0226a1ac2 --- /dev/null +++ b/css/thickbox.css @@ -0,0 +1,174 @@ +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +*{padding: 0; margin: 0;} + +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +#TB_window { + font: 12px Arial, Helvetica, sans-serif; + color: #333333; +} + +#TB_secondLine { + font: 10px Arial, Helvetica, sans-serif; + color:#666666; +} + +/*#TB_window a:link {color: #666666;} +#TB_window a:visited {color: #666666;} +#TB_window a:hover {color: #000;} +#TB_window a:active {color: #666666;} +#TB_window a:focus{color: #666666;}*/ +#TB_window h2 { + text-align:center; + padding-bottom: 25px; + display: block; +} + + +/* ----------------------------------------------------------------------------------------------------------------*/ +/* ---------->>> thickbox settings <<<-----------------------------------------------------------------------------*/ +/* ----------------------------------------------------------------------------------------------------------------*/ +#TB_overlay { + position: fixed; + z-index:100; + top: 0px; + left: 0px; + height:100%; + width:100%; +} + +.TB_overlayMacFFBGHack {background: url(../img/macFFBgHack.png) repeat;} +.TB_overlayBG { + background-color:#000; + filter:alpha(opacity=75); + -moz-opacity: 0.75; + opacity: 0.75; +} + +* html #TB_overlay { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_window { + position: fixed; + background: #ffffff; + z-index: 102; + color:#000000; + display:none; + border: 4px solid #525252; + text-align:left; + top:50%; + left:50%; +} + +* html #TB_window { /* ie6 hack */ +position: absolute; +margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_window img#TB_Image { + display:block; + margin: 15px 0 0 15px; + border-right: 1px solid #ccc; + border-bottom: 1px solid #ccc; + border-top: 1px solid #666; + border-left: 1px solid #666; +} + +#TB_caption{ + height:25px; + padding:7px 30px 10px 25px; + float:left; +} + +#TB_closeWindow{ + height:25px; + padding:11px 25px 10px 0; + float:right; +} + +#TB_closeAjaxWindow{ + padding:7px 10px 5px 0; + margin-bottom:1px; + text-align:right; + float:right; +} + +#TB_ajaxWindowTitle{ + float:left; + padding:7px 0 5px 10px; + margin-bottom:1px; +} + +#TB_title{ + background-color:#e8e8e8; + height:27px; +} + +#TB_ajaxContent{ + clear:both; + padding:2px 15px 15px 15px; + overflow:auto; + text-align:left; + line-height:1.4em; +} + +#TB_ajaxContent.TB_modal{ + padding:15px; +} + +#TB_ajaxContent p{ + padding:5px 0px 5px 0px; +} + +#TB_load{ + position: fixed; + display:none; + height:13px; + width:208px; + z-index:103; + top: 50%; + left: 50%; + margin: -6px 0 0 -104px; /* -height/2 0 0 -width/2 */ +} + +* html #TB_load { /* ie6 hack */ +position: absolute; +margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} + +#TB_HideSelect{ + z-index:99; + position:fixed; + top: 0; + left: 0; + background-color:#fff; + border:none; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + height:100%; + width:100%; +} + +* html #TB_HideSelect { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + +#TB_iframeContent{ + clear:both; + border:none; + margin-bottom:-1px; + margin-top:1px; + _margin-bottom:1px; +} + +*+html #TB_window { /* ie7 hack */ + position: absolute; + margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = document.documentElement && document.documentElement.scrollTop || document.body.scrollTop) + 'px'); +} \ No newline at end of file diff --git a/discount.php b/discount.php new file mode 100644 index 000000000..973297f96 --- /dev/null +++ b/discount.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('DiscountController')->run(); diff --git a/docs/dev/dbmodel.mwb b/docs/dev/dbmodel.mwb new file mode 100644 index 0000000000000000000000000000000000000000..63b9983370b02a71f27b14ea46d5b65d0f4c20a0 GIT binary patch literal 127165 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≺Q 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%0Aw$Kp}8ZV=RY7o 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%0A43i`V8nCsvNPT{ z{9&v32bakE7nit3edWfKQnU33fpDU*>imKxb1~N|6yv9eX7%>lt-#x<>Tf7Y3?6qBSOf7&zvl#jzxkM!L~Tue9t*Xv%}0e3+}(na)Goa5+WzH@-q zSM_7nv9WIlAdjoD8%V3E9|RL2<9K!vT_EI=DUbY1tt)Bh58hT=^C>U{6OS~ywgUW{ z_-^&21tR2K0IC3Wf}DZlaw5M`M(eFbaop?uXp6U-DpywK+=Udu1k<9&?f(#?+*$QD zmI6<2bsLD~x4O-8=LOeUd||zU6$Oy3Fg7YSm?&sg7r^>?&yjaYH4k~Zp?}(k8k!@# zD9K5I_yRuKnj|g{Z>VJ2P5oRZE*GjO+{1SR^5$=K4|r3E;-e_nZ;ObxBV zC?O@b4zKPk%@Ya~T;8$XA2~;==ZAJ#(TU@U@`gtJo|Zwc+Qk$uD)d47W)}I3^`%fL zvT!53bD_u?4ZOl2{H#xddU*XGgUkuj)zpr`@Osbv^6RykH+bj9ov5K*MSEE}_roq9 zjtrG+mw_~gfet}gQk6Vz%><%qidCdVE0-H}q1524qbbA8(!p4hu9%)N2RSvD+^VZt zyK_;!dAr;yvg#ch{pI}7Dx8(G{ePxPgMfdPbNeN0PctOzEBc)tze!$q9{Y|o8?${s z3cY|jJH6NuG7N;iRY4wc!-9ouG0b27{27CSG5SA^bKX`PJ+Mulp1p7$-##51iR-;? zF?A;R2%nP)Eyz60($s1u{E#BN**yG`oDc*83|rOIkZ8G+`xpMZN>W3pI>YCgy$vjD z>s&t=LixsR@MU#vRRO=1&G$Z#(}|L~>ch=m_K#eHZ|+x@FRkC&TfTs2Ny?s^e>X|` zdjHuS>nVN`mi7wWhXY>hj;({Od3;15-Et|Hoj-^8b6VG!5P9`Sc5} zjiVEQ)k(a+-~4dY4Qyg}SHtB9_dELk@y*@+>zgA0{|bM7b6w zmz=2s#Fm;)Hj((t+H>4y(giY8`@-`x9m?I*yy4ko(ryZ&&l{*jOr&qWo1}Ry-rK|X zxh}D@1(0oR#;R=B#9oZet=?Q|f?JCLQDDn2+k7;Vs~rCt?bsD_`@}5mi5h}S;TUhB zSwpXur|HCu*lZiY`pr9556vj>3QFzqLQPZht0LAj`a| zApsdKiJtKcLOAz+(QYI=fukC|5I<|T7zMfr3BF?$bZ{o>q6v%4$mbRAHRHZ^Xas{@bcI{w?esbfKDk8*e%9 zaO0LcZ(`4|(ds7^#tiEXbwuuElEbU+8(B#}EtAX~fTVY<;IK(rc>u(vSZ`IT$S;+? z8_Zpy$Zo3IxENh!a@plJ^lkv(sJDp8#UZu%Oe{U5$X+~so_5#PD>#mUTV!3pbl4X< zc#i#ciS1M?J%q}p>`wjzevb3f-XAAdhgw{hy0Gq&(-YB_#@IfdQZ!$HpA6Cr0&@XI zm=}OGxxs|6xwNGb{CFHA1*k&<{uA?Jj^TmV0q7#Bq=@nQAs4-iz#2rri?6Ljq-Glf z*HBAAqX|CBtGO-aswlV>Ug*o{X;f_gV^cW*eVvG?~_zg69sK)I22ceK8QT31aJ zcS{j`4g^1g-kexfsq_ce8sX9_!A9Ac9;ihHEwsq%^(O8}IPcf+wp!YcHv~oOaxtXo zG5`cDdy|47&w~AG$WC0rE94jhjzEwaK#^^F9)>Zubf=UKVNk}u-WDqzgM0~^eiQr{ znqO#lIqfLN&CBRU&gSCZ_X7WyYpkxYZ-h;CCB^zl@^5 zZ0{C2$FF@y#Iz$qL=y&bs}i;3St)38dsCF3R84fBoysDu+F876$JX*HXH`i*Ng2pc ziSHVS$c+>gRo|*>RQzhGGXMuwwDksv5}(0y*_e#o!bH|aYNM7T=mq@%hHlZDWGBU~ zeyr&?QCdQL|JGfO`m{%C!G8@3^7tqC6wz<4r_78|u#5H$C z1FdPlwlMQT)B30(I*JsBJzi0YeJB%9kjd(0Bj(b<&;+WLB^Ml@A+us%z{McVg|m_* zRoMn^^TDb7<0ZUV<8n>xOzBxi6iQUvBIZ0**~@5^~A)Oy0 z7#a;obGwz!$}2I8)qw?>O{ye|TAIxyi+13ODhcF$DK&vXFu6D<7rdbYuPgQd0!WfY z!$+wY0{CY28-?-_$A!SNsOmt$Fp*dl7>rck*H ziG)(;dSB89!TBd9Id~=m9Sa=YBy6wfXN z*(O_&>MW`cx(K6tM}dW03JO`a4m$;WGXNF|Q{+9BA&KtMW`55b^;q;qJ7LEBX-B7x|4uMo|$7h2wMN|xYd7i?{ReJ(@FK7l0TCyEh>!mCApwlWPF z{~D;ArU8hEWn$%kaC%5NXDnx;YOjcSh{v>n>EVAH0`3c4#yaj4+VHE-jaKi70@B9?&|ymE;p+i*y!}gCP6naf9!q(@KK9SnO7ELO zSJlNS)?O)#6ERc9q*80%@CgLT#hkkGfIms5j~tV81H6bzYhQ^o{*au7d2WsWqzbkc zBj!!M+3Js~H)N0>^Fvg~usut>avJ~Xn{bksv4IAsohz$gQdnT+&@Hu3RZR=A3SaS` z{gA$@78_d=I!WMVux^dxKfOv@g;DtBi?q1e_)@@!#dIh@QWtroGbPz_6KUuO)iReH z)|V|A=VnE!i*eD0c1X^e`dz|7%lTF&ls5&`_Bmwe?6A>J6>;cUa&NSnS%dFN`1U*T zNHs)gRJ+((wN#+^iqq4CeF7ffF5$KW{W=PgXWG#4j3F^uDh*5idg;jCjN%QOZhiH+ zKIn+ok}Y?Iek~GouiFFOu6$o~w&>^jW%YDA+Dv-VekIB%5B}o3fLnaf?rfSFc)K>W z#=qpf*R;le%)RPukt|}1+U_2ppGSHH-R^FVfaSjIO?{uk#gSqz{=r90n8VJls!dP( z&s6dvsj5ZVw{Xg@R?a!&9N8_O?ia>6ItJ}5E}O}MAs3~DFCTu2w7Z6}&MC#K zVs)+nXyzG-L&?&027CjOsmv-B;p6o~j%B5M2-A4-2Xf2!P~J}YI;1{rcu~ZmrGyp) zP8kD;r8k3WF#|IJ{O83Wl&4Q#ey=FaU zRV*CC8+>LD>_Eoy?}}J7&{D`8zw4l2)zK1cEj0KNx_Yst^BmT}ienC;HGi6)i1UNu zw_Mu|n2Y(g@|E8{DDkG`Y7@wp@3u0TKMq3kMTx#Hxl+(y0n^#4fdNC1P9}p)?Dxj1 z%x=$JJ4AuBrgj9j2@;$P6MyA2N!|PfL@uwW}hm05jQ!0JkZdh^CgS0qg%^>#c&~3cGGy z9D+NIySoN=hv4q+5Zv8q+}#>?cMI+s+!I`bYe;tI`~TYCK2_(oFIH98TCdD8#~crx z9|SOf3bf8lFP#BuhS1{2#dQg4qCxXAWI%ToG6y z&)!U8a!ti5DO7qZoQyhoo&V7HblOFS{%ov#OxPA|ccv^5mI`l7wvUJkBg4UpTxY%H zq^$kt=pMTsufV7-)c81*-pm%-JX;%^-IB0@#!H|j+yMu+NEWTb7>p7qP!auQ!qc$Y z2I-60iL;=MwG&BiV%fpYNeB1HQ5b?y2sG+r|1qR?!Ci+d%dCzIpYJS$IjYyQK9B+_ zkl%!xVQz`a6UZU^N`{=eBCW)DHWq4OFNGrzjmis%cxd)BbdfA(mu;|+ZlY6)N7oHxcdZ8lUXYIBTh%bkZv$z;eoVH;bVN0_ zU~g;vbghqZd1B8+`7-yFd853*_LNOtCd&gho2QQ&(uT|?+#G>*)gBJ;w16k-Nt4^@ zto0p@q8{khxf{m>?`nBTXe}8DXs`e6`uN?_hRcm9V$sO- zkXSu|N1QnE(*n3X18gzjxBTkQP8}&UJi+j9bjnmoe+KFtV(5|%geaqHavxqwoV(Klj0Lz#qtH<~D?NIUuK};AsI zB(D2Ox!hMU)qQF9IOny9m83<(Mks-3H}1huK3;ULXQ58=V8^Tv55#Q!tB-e&+ z(71wk>H*pp6*?S2_8IZ50@}|gIliEhFO+QE{F^*z`;l9Gp-m{hNzqBrnZqf$fnHk~X^AJC`H5?an*iCoZjRR{JD1~HbpnpRjlkiY z&q`|(yej|Q<81|MfbYFR@v;*gM2zm&FmzoB+$oeMZ8qnJZ{=RSDY58R=G~m-EDfOHDz&7|50BJRB!wW!a>PfcJ`{80vGk&ptSqh(i z!~Wh051ZwayT!MGFS05>c`!$231|ANd=ks|s;sAW2WCxb_n-Ob&~V>GancXq^Sr7l zmjBio6#AsR@aGe0%+&l2x9OaRO+z?Z^+0&5_K>N0Ub*&AGJNPJqnIBx`1b=}>gXN! z2AJGtv}_rWH3c+W^EY*z=!UlLGzGeXqvFr?8`z+H#X-o%InHnQ*Afhy%X4qVMV{rovD(g=b$GZ#SQ9EFGGS&Ye=8)=py8YgGp%t5mw#EU zR=Asc5l@l;u)DY+@VQ19)iT>Kb*w%(yBS(afnS5%H1POP)3>v#?cA?YGpM&n4~_d# zMIDWMFS{m)M?iQo`#5fTfpQk@r%8iM&V}HTAdAy7di~U=K5ajE=NkNE(DfOA`HhvPo9LE>A|Ub(m?>e;7{| zbq%_R(tE~z{{09s$H=9CO~y#qV=H^fA`3ucaY$VJH)_Q)1%wpO?I$7J*_gS|;tJ!x zw~5om6TKfCa%%iMJ5fJP~N9XKDg`7Ujsf3c~}pue`cE?o})L)z=bduq~6 zr2c>^E7ET*HSVOjxn(*_42wQEFUeP|vL~=-NO;JZz&JEZSRx%_%CM< zowBXAvPJHHD{<7go0sTAnH&DT&;X_m!?*vLT>gjJ^H%#WYEOjmQpemnb;1Y9u1T+V zwjLo#=ks7)SX?fuFtyAIoGWprdTd*(RGW_S!SRDiv0TxuQMpS8NM?dYi?y9cyu_|a zvugAoL%Mnt_aEZS-f)}BUlJ|C7b1=wI_mJ-!(mgpBwrPsTE#1E#Vb@*7?45}y9-72 z@F3sSaoczY+uWf9ZZ4kH#y(qbP%4^yjOS0)&uv#R%PW0{{jes0t9f0!hh4uJoL9vI zS}CXs$L(54Ah-6vM|1th%AlW`}L)=okluXy} zZ1D19jwO3?C_JDMsKMu^a>6OH!FX;%8~?;b#Mci*(^PVtA)`D}31vG}_o`#j7KGAz zWNQxiDaD^^Fu*ocKs;@lj22{=MAOSe|351$>QYBKI>J;7DPkFdGJJ zeXbIhd$z({7ZtbM--VVzocQvzFLyXji?KHTeU=A8Tuw7gfV)%RlcIbaGc}$x4~KWmEFg(@byZ$SKexALJtIs`);bDo z$99gGJU0DF0!`x-#unow#pYr&YBIM_L;RIA{zmZGi5Ao;8%8_3`Y~7Ipbk?vD;P9O4gl&1AfEm0M@RkH@=`V3{WdGt0G>zr) zDz-{X8`Dc&A4Yg)QaL5LjJ|e=-qo3_jxkE7@%@)9NaGvA^|9!9EnX+iF|@^drbSqe zv6uME%w!Ufqfq%D&_&tbaZ-oMhreuR1Do6V)5q7h^0Yiot?Cl8gH)loA37N{HP=}|1 z6&vd?X#u^)Mou`l`MyTdjxd{Al$2o|Tm#suQ5qRQ*(>a4Paa!O>u$~f3we`rOCq;N zHm$puK^qAy7hxRBn`!{q7yZl8Tn67?4!QqSKCw@g*PWf3oGrWRa&FTlRxSTpU3uw? zb<6%O;s&#tH${8y*^Wk1icqsos<_#Cy8rn5#OA^;o}cWm?>FY> zsu^}8J{;t?8VmC^cm8D2C_L5DC|s^soc&bH=&U>_%wb|~a8XSygB`TUsnHNnmhwLM zk+mG`|9N3yEcrMgUEq2HPv|r3_t6k~ZI8b_8piGsi$K#6>hVqAaNZ?~Z^uX~&9MF* z88G9}6x-}^Svb-s!HfT+od#Q=1>Kl=rO;<{LZ9VR9^bO%e4cv~JM5S*?g1nFs^2el zcdX6TpEq=K7Zvgd^40@ZALty)mn5c;v&=$>44@cB-xiR%_A}gkQv5wLD|87-&hNPH zQ?yR++&A<~2LiX`Ra!*3kqnsBd>hsaX5oJ4yWaUgus}pzj)m?qS`=Dre;6p#)O93f zV3DQuOF=^6O{x-vxN&H<$Uw&Mh_i@*qqhe+lD|5z&aM9OSy; z?+NaX&5j)ff^l{}MPZlUJ}L3xs$VBnMM_TkrA~*odg!~Wr=8jjt&3hxw8{w1s6WY3 z(m8EtUp7%|{6F|y)X0DMTwx!*t)Od(%Z~Msk9OsY&vSYLT7{>b(3bc__@*MV2ngx< zvoRHy-&n@=&h#xDo0Rk_ptuzcgY@Lc+GuR5V9&`DW6GA^Jet69PFkzgt$|@nzRWvX zs(rw7O^v^*svjptC#mx1B7W=)m4AzV4-?=lH>j!v9s0x|o@=T!guWfXJle*LU7lbq zms~iw64Kk6LLN@uIWm}kO6avXrvJJVRn-6Lh;TmXuAYU-O9|=B|D~9K=ulC-oC`dg z(>>~G@DVRB)n2Jz3kvncS^jHE60b4rO@dNlt-j?=!$yr8T>j+)a|0TydlQ;F(`Ueh zBCOi9my0dA>i?&D*G&yLhJbX08i`KonM611AQI1vv>gXD8?w8{sQJ2jS9VPQny2yd z0=ukZBbqbwOPNeM=7In07mvzE*C(kx9U#|dzUM0V7QQY&`muyygz+ItbK;b-q${0d z;QZ=3VDY#;Ydc?&zh^sORk&+v=QE3!F^j#R|9bie>@V1mkX1^5V^N|mu^;bC>0ybq z{vw!kBSOpU=G0$E+pQrJ4n?7WRXTCM0{Dv7y*-O&HutoOE+OfjlB3N&M`M50IxJg) zi7=1d_a%r`Izo{Aue(}eDtcWPjN^4#x?jNVk%?hj)luZ#SCiNVWy%}Z2E3U2R;d88 z)en%RY^X2=%Ly&!w=*pkvr@7sz3p-BBQXEl3YQvUkWZG=JM*Gq>hhlef2C`Hge#Jgy_qbHFkznKMSx+dWd5n0*<97MOzB=(=^l0o z0Y{63rdDIR$W0ecXct_`J0f>04|44lX$WYA2!nj8V#eZ4?RMZ!MpytEW6Ya?tZziU zNU8F35DA~4w-Ly75?9CLcC`QB6hEVc_>h9nSMeib%gJ!qkt9B~=)AbBRjHJ{Uzz2n zc{KDAMgSe1eFux<*XV@))=1mzCsLc}mB3ZZz9e9de<*aDT_XII9 zT}M?`RP0Mu1Z=RYXOC4B2p)Q7c#1>(?s(Jp3A;2|{cx9TORLD2T*gsQgwQJvNCgDO zx<@M%@Eo9fJ>V{D)Oq>c`{wA3OB@6bViQ-0j_*8*%C|T+U6{~7xpWk=FjA+XGyM(!CHtaw9r)*p*zL1bF3A6 zm>p6dS}y9VdxTlou#MD6+3F!$f@W2)0Zr9=dg+1o|Mt{Cdo8i7^N!^X3$%XfL_F=U z2FyYkB!po|=qdZ1?0n)*3B__V%nv33sYf=sv$(c|glj)*dwalfEznzs#j$R@a)xEn z|F!A0obUc8Y~-Rs`Om>cJ6h9&2G_eo_EPnRL>*D57WE=SOuvKNgSGsbGDYa0ZSKm; z*Dyz3bB(87>5cnjeJ%z+t&Ntcg2WUd^^q^r1^Ux%FHNCwzndXE%|k3Ld<1dPfo(38 z9;D6IN?S=n>W}><9N&D-buDW}S(b{V@#iPHsM5R)4%C6Gkw$rOMQ|m}ClMC&tVRLv zo}aRZE{hX3J+enh(}fFV-Y)gPktWn^_1VeOk%-%Vkf{y_yIIZL0@A9Q@Citg$?DjK z1<+AuHlqN$c*DyCGEPL3>;!2>FND73tS*(YR&!)-Rb)e=Nd9V!W$GzI`}K~Z}P z}C7fVi-q8rq*K5VO|C}`d!r-|w(mhQm5!1MIs+tJhjuL(%_ z)aB1zq3`o|k>AGFp~@RHl{=g!v6Kx`31n(JFZ-COFA@~J&sOJKYX=8J52&o^O+mp) zTm^esmH2-|o_6c_5-7*t|1e2Gc|WJZtQ5rZ+v2wLn%J5X8IkhxQ|vXf#U1L_UX#6a<#@m{jn_43E`GH zT7uGI*@=(RVih5|51--$9s~0*5uSoL2g({Dd3W?Y5k8sOjrzoT;ij&4UhH#q+la|} zk|)gI#*-dCso|{f(Q*@PU8F9LzkbCeBGisB1hUXBxibWwG%jR5$GtYo0xk>3ut_8OY;IOJqvL1hd(;?cFFmI<+t))| zmcIrnB}axFx0g>?o_3wvV~5EkKC^~rMT5$ndV_Y~Z>+a9XA~rC{iwPtx{aw zkU15qtJEeH+-XOBkrR zbJ95Smb@Vc(YEkZO`X%yIhParFh`L$Vzp9ghZobotP}a9EnFvrP^jIP;&0`ceHl0~ z`&DT<+r`@ARd6Y^anN;8%Bp}G|7V$r?;$Hi0xfFEPo0Fog`P?DL08?#6cQwZPG zn(^24wNUO(L~c&+5A7LUtZlKh>$=(tHX&1~JXv2yze&9G62)PVtUNo?YoRH?LSs=J z8$>;#YJs3?g|4GYhtcbO=yHFTG+SR9lWVA4w~@{@{nvfPz&pru;Lp|To2SL0=C6Qc zW<}*qa{N)+RZHGD776Mdn=~e>Dy*Vef>8YO-PB~g6$0Y1qjQd=#aaz7-%4Oy^>>YG zb8KREpd!<$t0;n$jA%MCOeUfYVH@V6Zkfv@-Os^^iYSU2U5e9(v~z%jOdNS>?JT$# zW04-*FNu(hEt!nMAEDXRZGy}<4B&@}Eco;Cxb~q!<>h_T>8SOvw&Oxx{zDv}GZ~MS zr(rc;IyaujipbQ&Yf2TqR zQd<>?o+wnW+QAR@K-r`~5P%5nCOd#qDT(FAejG7;@?lv-rRAGWz-dqyi9EWiAD`tk zay;E4_4Ja#_)3AGo$jv|As-EHo(|e)2jxHGUdsKS_CDqhpDcWkuO3S(OG33 zU8Kn$OgQUp8VTYDjYCO<$@;ihp`v7o?DDCy8l#fJ3>1mr$5FXPxxvwJU}YXJ zUJ-m$>9*RVfea7Kt^zK+;(Hk~?%vFq;&)rp);xK}WPPr%J^Q<2aU%J1CaqbSXvWOU zm}q$96yqABkY9d`j4XWmvMwkqM*%Um-K_n9Xot8eWpDr3iOkNv6o_kPrnLDang;tT z3ct60w47Z%BG0b4ST+WcMMsf|M$3k;tNmrf@pfnPr@r?~bE4=pokHr9rSxJH;Q`ur zu;Is3Y#m|KS7>>{>PC%MmM?V>V2|!I7=H^Mh*UzAEM|-L4LO}X8rAiq?k=(^WsY1_ zGd*Gl3+id6MPE|K_l%6PjX=A!|lpzZl%F*mkm%kcXd z7lHlRi*D(0BIsiFbt`P2&L+16qX<+RETIWWZCPxi&ICuH96P3JMU+pGfXPVzJh*rt zYrLBIU6*TW1~~K_o!|Hf2x_y&Y1Xh1t-|Jlr_$@CMv&!)t*5|U z8U?a?R9{ixrUH3eb!IAOy>MgkedJ`QaNTmo-AD%vSBR3)<7(1UX7Te_QB_o7hKPzc zi8dn;8`Sj*(2=R{attC5H#wyeVL_8zaW0=N`otJq62#dS=fn_b7|-ITAr(_FRAM8! zbvHXUIw|_(7t5XEoy8{jc!qQ>iA>{*-)$Rvhve9L2Jwd=`Jww4hJZErAL3M6>YFocY!kta8g8}ce;j=^8@jD|A@ zA-7pUXXW-FOL(6)v&}6Fs$|;wX|xiz)jrE@p$gzCZe7{D|7Ta1{r=jRz1U>oK#X+o!2(b41^ErUfs}A-H zs%CXl*UZee5W_WiMa&px_+=+=BXuA*r6DPFHKt8hEWQ+{>yz{%;M%=j{;om9wcD5* z3k=tzDTr@WK|*S4RGH=~&Oraji_nYvT1)U?;^B7BJUfl)Ur7LUMn$D(?x-8CqJYke zR-6HPT*z8may%h65qCfD0-C|8PM|A&ob<2Ka>6I$C=hdZB@@TBJA(yj*W70s@^X!#o7+?Y zFx!rqzB^-ABdCC2FrlJeHQH$|!tNC2q88kQ-4T$5K5j1>-iu|O{_e+b^U%IsTz8^> zcP39SoQT!F$h^33IqL*ipS;*YBH0-Iwe;Zg7IiWb(Yg0c8kxN)NfF{6IQB5+sc;HU9I*CBku{i-@jGnyEqvY+TQyP_`CFWQN}jC<8xg*91urjXeT^&YTC#}ZxQ$G4pg^E5Ssp9B{2~%;BFHN$ePzQbdW?*| zkxk|riLmG{i9nA*xnU-@g4<a=g6kQp)N9em&Wh@}%Ezk12nOaQXUy)k^;^OPCmzdt%)l=@*w}W!@qxYGD^kRsIcapL`+%nLvL{tA384r ztV{DMFvY&`Z62a5G+rb~Ye&-)(9s##c1TTbD#ws@a*We`w~^tH`~(Vst+aQ%7_+$< zQdP5nPn>!YV)zaIL=|E=@CT-~DR_TCmzUZ8l2UHk$^YTGe2h^FPe67+DMuV&r_n_G z?B$$5Aj&d!44#Xy__;uEDFj1IG@&9lVOKerIq9cy2wqBjx0ZKvDZLfG9OJ&CweTap zqG*?K#1V80VcJ7eqJ`-MHd=7LFqUMiN2Z1(t4G?_$fC>+f&Z!`B zHT$Ots}t8-+*qSXmc%ReO%t?k!A;x~;F^h~IWGu}8DI7a?W~nDPFL%_GNAIVD4?>m z3+?gn5S^}xMOoXhz|eF8AiVkX`MkPCz2+ZWvW4R^+SXAq?7dJrA_h~y+>|n9 zWsr28hD}kh;)_q9^TUMqrx+8bNyxozTxNf<8tplo(f)4BzPg0$%^qZ6@O5sF1O}ht zLLLRb%nXtVad54e&`_2&qLQAH1%Tgm)AW~~qJ-Clf5N-J+i0M-bGueR)V!B@Yz)*? zoD#zab!6(_9YZ264J%x8UV3v%$qXQjh∑%Vk1cjz_B-|MycIyHOr)(p+p&M|(Y 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

  • 5rA)idlTWo>FXK;Sg>@;vtu0f&a4c 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 +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; +?> \ No newline at end of file diff --git a/docs/licences/open-software-3.0.txt b/docs/licences/open-software-3.0.txt new file mode 100644 index 000000000..f18dbccb9 --- /dev/null +++ b/docs/licences/open-software-3.0.txt @@ -0,0 +1,44 @@ +Open Source Links +Submitted by Michael Tiemann on Tue, 2006-09-19 03:53. :: +There are many resources (good and bad) on the web offering information, advice, and interpretation concerning Open Source. The following are references that we, the OSI Board, have found useful, either for informing ourselves or for helping others begin their education about open source. And as you explore these links, be mindful of these words attributed to the Buddha, "Believe nothing, no matter where you read it, or who said it, no matter if I have said it, unless it agrees with your own reason and your own common sense..." + +Rich References + + * Open Source on Wikipedia. Note that Wikipedia itself is implemented using MediaWiki software, which is covered by the GNU GPL, a popular license that is both a free software license and also approved by the OSI as an Open Source license. + * David Wheeler's Why OSS? Just look at the numbers! + * David Wheeler's References + * The Free, Libre, and Open Source Software (FLOSS) Surveys and reports. + * The Economic impact of FLOSS on innovation and competitiveness of the EU ICT sector, published 20 November 2006 by UNU-Merit. (Also linked from our Research page). + +Books + + * The Cathedral and the Bazaar (online and book), Eric S. Raymond, 1997 + * Open Sources: Voices from the Open Source Revolution, Chris DiBona, Sam Ockman, and Mark Stone, 1999 + * Open Sources 2.0: The Continuing Evolution, Chris DiBona, Mark Stone, and Danese Cooper, 2005 + * The Success of Open Source, Steven Weber, 2004 + * Producing Open Source Software, Karl Fogel, 2005 + * Open Source Licensing, Larry Rosen, 2004 + * Collaborative Ownership and the Digital Economy, Rishab Aiyer Ghosh, 2005 + +Open Source Software + + * The Free Software Directory Lists over 5,000 packages. (Yes, Free Software is also Open Source Software) + * sourceforge.net Lists over 120,000 projects in varying stages of development. Mainly for developers. The public sourceforge.net site only hosts projects covered by an OSI-approved license. + * freshmeat.net Lists over 60,000 new releases of Open Source packages. Mainly for people who want to download the latest releases from developers. freshmeat.net strongly prefers software covered by an OSI-approved license (but will host non-open source software in exchange for a fee). + +Open Source Conferences and User Groups + + * OSCON. Note that O'Reilly Media put on many other conferences, most of which have strong open source components and/or constitutents. + * FOSS4G. Free and Open Source Geospatial Information Systems conference. + * Blender Conference. There are other regional versions of this conference that can be found at the blender.org website. + * The Ottawa Linux Symposium. A premier event for hackers to discuss implementation experiences and chart the future of Linux. + * The Wizards of OS conference in Berlin. + * The FISL conference in Porto Alegre, Brazil. + * The FOSSSL conference (and other events) in Colombo, Sri Lanka. + * There are hundreds of conferences per year all over the world that advertise "Open Source" as a topic. Alas, these have varying degrees of quality and felicity and the OSI does not vouch for (nor recommend against) the ones not listed in this section. Check to see whether an OSI-affiliated speaker is listed as presenting if you wish to hear the OSI's thoughts or positions. + * User groups tend to focus on software or groups of software used in a particular context: Linux users in Northern Virginia (NOVALUG), PostgreSQL users in Dubai (EMIRPUG), GIS developers and users who formed the Indian Chapter of OSGeo, or the dozens of topic-specific users of the R package and its extensions. There are many thousands of user groups, and the best way to find the one that's right for you is to search the web, find the mailing lists, and make contact. + +Packaged Open Source Software + +Hundreds, if not thousands, of companies now sell commercially packaged and supported open source software. While many open source software packages do run on proprietary systems (Apache is quite popular on all operating systems platforms), Linux distributions provide a complete (and in some cases, exclusively) open source environment suitable for hand-held, desktop, server, and high-end enterprise/cluster/mainframe use. +The OSI website is built with and runs exclusively open source software, including Apache (web server), Drupal (content management and blogs), the PHP scripting language, the MySQL database, to name a few of the more well-known packages. \ No newline at end of file diff --git a/docs/licences/tinymce-smarty-swift.txt b/docs/licences/tinymce-smarty-swift.txt new file mode 100644 index 000000000..070b42c74 --- /dev/null +++ b/docs/licences/tinymce-smarty-swift.txt @@ -0,0 +1,460 @@ +TinyMCE, Smarty and Swift are licenced under LGPL : + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/download/.htaccess b/download/.htaccess new file mode 100644 index 000000000..93169e4eb --- /dev/null +++ b/download/.htaccess @@ -0,0 +1,2 @@ +Order deny,allow +Deny from all diff --git a/download/index.php b/download/index.php new file mode 100644 index 000000000..e3a60fae7 --- /dev/null +++ b/download/index.php @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/footer.php b/footer.php new file mode 100644 index 000000000..4b25c2d64 --- /dev/null +++ b/footer.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$controller = new FrontController(); +$controller->displayFooter(); diff --git a/get-file.php b/get-file.php new file mode 100644 index 000000000..c66cc201b --- /dev/null +++ b/get-file.php @@ -0,0 +1,300 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include(dirname(__FILE__).'/config/config.inc.php'); +include(dirname(__FILE__).'/init.php'); + +function displayError($msg) +{ + $translations = array( + 'Invalid key.' => Tools::displayError('Invalid key.'), + 'This product does not exist in our store.' => Tools::displayError('This product does not exist in our store.'), + 'This product has been deleted.' => Tools::displayError('This product has been deleted.'), + 'This file no longer exists.' => Tools::displayError('This file no longer exists.'), + 'The product deadline is in the past.' => Tools::displayError('The product deadline is in the past.'), + 'Expiration date exceeded' => Tools::displayError('Expiration date exceeded'), + 'You have reached the maximum number of allowed downloads.' => Tools::displayError('You have reached the maximum number of allowed downloads.')); +?> + +isLoggedBack() AND Tools::getValue('file')) +{ + /* Admin can directly access to file */ + $filename = Tools::getValue('file'); + if (!Validate::isSha1($filename)) + die(Tools::displayError()); + $file = _PS_DOWNLOAD_DIR_.strval(preg_replace('/\.{2,}/', '.',$filename)); + $filename = ProductDownload::getFilenameFromFilename(Tools::getValue('file')); + if (empty($filename)) + { + $newFileName = Tools::getValue('filename'); + if (!empty($newFileName)) + $filename = Tools::getValue('filename'); + else + $filename = 'file'; + } + + if (!file_exists($file)) + Tools::redirect('index.php'); +} +else +{ + if (!($key = Tools::getValue('key'))) + displayError('Invalid key.'); + + $cookie = new Cookie('ps'); + Tools::setCookieLanguage(); + if (!$cookie->isLogged() AND !Tools::getValue('secure_key') AND !Tools::getValue('id_order')) + Tools::redirect('authentication.php?back=get-file.php&key='.$key); + elseif (!$cookie->isLogged() AND Tools::getValue('secure_key') AND Tools::getValue('id_order')) + { + $order = new Order((int)Tools::getValue('id_order')); + if (!Validate::isLoadedObject($order)) + displayError('Invalid key.'); + if ($order->secure_key != Tools::getValue('secure_key')) + displayError('Invalid key.'); + } + + /* Key format: - */ + $tmp = explode('-', $key); + if (sizeof($tmp) != 2) + displayError('Invalid key.'); + + $filename = $tmp[0]; + $hash = $tmp[1]; + + if (!($info = OrderDetail::getDownloadFromHash($hash))) + displayError('This product does not exist in our store.'); + + /* Product no more present in catalog */ + if (!isset($info['id_product_download']) OR empty($info['id_product_download'])) + displayError('This product has been deleted.'); + + if (!file_exists(_PS_DOWNLOAD_DIR_.$filename)) + displayError('This file no longer exists.'); + + $now = time(); + + $product_deadline = strtotime($info['download_deadline']); + if ($now > $product_deadline AND $info['download_deadline'] != '0000-00-00 00:00:00') + displayError('The product deadline is in the past.'); + + $customer_deadline = strtotime($info['date_expiration']); + if ($now > $customer_deadline AND $info['date_expiration'] != '0000-00-00 00:00:00') + displayError('Expiration date exceeded'); + + if ($info['download_nb'] >= $info['nb_downloadable'] AND $info['nb_downloadable']) + displayError('You have reached the maximum number of allowed downloads.'); + + /* Access is authorized -> increment download value for the customer */ + OrderDetail::incrementDownload($info['id_order_detail']); + + $file = _PS_DOWNLOAD_DIR_.$info['physically_filename']; + $filename = $info['display_filename']; +} + +/* Detect mime content type */ +$mimeType = false; +if (function_exists('finfo_open')) +{ + $finfo = @finfo_open(FILEINFO_MIME); + $mimeType = @finfo_file($finfo, $file); + @finfo_close($finfo); +} +elseif (function_exists('mime_content_type')) + $mimeType = @mime_content_type($file); +elseif (function_exists('exec')) +{ + $mimeType = trim(@exec('file -b --mime-type '.escapeshellarg($file))); + if (!$mimeType) + $mimeType = trim(@exec('file --mime '.escapeshellarg($file))); + if (!$mimeType) + $mimeType = trim(@exec('file -bi '.escapeshellarg($file))); +} + +if (empty($mimeType)) +{ + $bName = basename($filename); + $bName = explode('.', $bName); + $bName = strtolower($bName[count($bName) - 1]); + + $mimeTypes = array( + 'ez' => 'application/andrew-inset', + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'doc' => 'application/msword', + 'oda' => 'application/oda', + 'pdf' => 'application/pdf', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'bcpio' => 'application/x-bcpio', + 'vcd' => 'application/x-cdlink', + 'pgn' => 'application/x-chess-pgn', + 'cpio' => 'application/x-cpio', + 'csh' => 'application/x-csh', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'spl' => 'application/x-futuresplash', + 'gtar' => 'application/x-gtar', + 'hdf' => 'application/x-hdf', + 'js' => 'application/x-javascript', + 'skp' => 'application/x-koan', + 'skd' => 'application/x-koan', + 'skt' => 'application/x-koan', + 'skm' => 'application/x-koan', + 'latex' => 'application/x-latex', + 'nc' => 'application/x-netcdf', + 'cdf' => 'application/x-netcdf', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'tar' => 'application/x-tar', + 'tcl' => 'application/x-tcl', + 'tex' => 'application/x-tex', + 'texinfo' => 'application/x-texinfo', + 'texi' => 'application/x-texinfo', + 't' => 'application/x-troff', + 'tr' => 'application/x-troff', + 'roff' => 'application/x-troff', + 'man' => 'application/x-troff-man', + 'me' => 'application/x-troff-me', + 'ms' => 'application/x-troff-ms', + 'ustar' => 'application/x-ustar', + 'src' => 'application/x-wais-source', + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'zip' => 'application/zip', + 'au' => 'audio/basic', + 'snd' => 'audio/basic', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'kar' => 'audio/midi', + 'mpga' => 'audio/mpeg', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'aif' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'm3u' => 'audio/x-mpegurl', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'wav' => 'audio/x-wav', + 'pdb' => 'chemical/x-pdb', + 'xyz' => 'chemical/x-xyz', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'ief' => 'image/ief', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'png' => 'image/png', + 'tiff' => 'image/tiff', + 'tif' => 'image/tif', + 'djvu' => 'image/vnd.djvu', + 'djv' => 'image/vnd.djvu', + 'wbmp' => 'image/vnd.wap.wbmp', + 'ras' => 'image/x-cmu-raster', + 'pnm' => 'image/x-portable-anymap', + 'pbm' => 'image/x-portable-bitmap', + 'pgm' => 'image/x-portable-graymap', + 'ppm' => 'image/x-portable-pixmap', + 'rgb' => 'image/x-rgb', + 'xbm' => 'image/x-xbitmap', + 'xpm' => 'image/x-xpixmap', + 'xwd' => 'image/x-windowdump', + 'igs' => 'model/iges', + 'iges' => 'model/iges', + 'msh' => 'model/mesh', + 'mesh' => 'model/mesh', + 'silo' => 'model/mesh', + 'wrl' => 'model/vrml', + 'vrml' => 'model/vrml', + 'css' => 'text/css', + 'html' => 'text/html', + 'htm' => 'text/html', + 'asc' => 'text/plain', + 'txt' => 'text/plain', + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'sgml' => 'text/sgml', + 'sgm' => 'text/sgml', + 'tsv' => 'text/tab-seperated-values', + 'wml' => 'text/vnd.wap.wml', + 'wmls' => 'text/vnd.wap.wmlscript', + 'etx' => 'text/x-setext', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'mxu' => 'video/vnd.mpegurl', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie', + 'ice' => 'x-conference-xcooltalk'); + + if (isset($mimeTypes[$bName])) + $mimeType = $mimeTypes[$bName]; + else + $mimeType = 'application/octet-stream'; +} + + +/* Set headers for download */ +header('Content-Transfer-Encoding: binary'); +header('Content-Type: '.$mimeType); +header('Content-Length: '.filesize($file)); +header('Content-Disposition: attachment; filename="'.$filename.'"'); +ob_end_flush(); +$fp = fopen($file, 'rb'); +while (!feof($fp)) + echo fgets($fp, 16384); + +exit; diff --git a/guest-tracking.php b/guest-tracking.php new file mode 100644 index 000000000..c5ac5c5e3 --- /dev/null +++ b/guest-tracking.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('GuestTrackingController')->run(); diff --git a/header.php b/header.php new file mode 100644 index 000000000..3c247b7a7 --- /dev/null +++ b/header.php @@ -0,0 +1,30 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$controller = new FrontController(); +$controller->displayHeader(); + diff --git a/history.php b/history.php new file mode 100644 index 000000000..11370d2ce --- /dev/null +++ b/history.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('HistoryController')->run(); diff --git a/identity.php b/identity.php new file mode 100644 index 000000000..4dac92f1c --- /dev/null +++ b/identity.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('IdentityController')->run(); diff --git a/images.inc.php b/images.inc.php new file mode 100644 index 000000000..0d851e178 --- /dev/null +++ b/images.inc.php @@ -0,0 +1,345 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/** + * Generate a cached thumbnail for object lists (eg. carrier, order states...etc) + * + * @param string $image Real image filename + * @param string $cacheImage Cached filename + * @param integer $size Desired size + */ +function cacheImage($image, $cacheImage, $size, $imageType = 'jpg') +{ + if (file_exists($image)) + { + if (!file_exists(_PS_TMP_IMG_DIR_.$cacheImage)) + { + $imageGd = ($imageType == 'gif' ? imagecreatefromgif($image) : imagecreatefromjpeg($image)); + $x = imagesx($imageGd); + $y = imagesy($imageGd); + $max_x = ((int)$size)*3; + /* Size is already ok */ + if ($y < $size && $x <= $max_x ) + copy($image, _PS_TMP_IMG_DIR_.$cacheImage); + + /* We need to resize */ + else + { + $ratioX = $x / ($y / $size); + if($ratioX > $max_x) + { + $ratioX = $max_x; + $size = $y / ($x / $max_x); + } + $newImage = ($imageType == 'gif' ? imagecreate($ratioX, $size) : imagecreatetruecolor($ratioX, $size)); + + /* Allow to keep nice look even if resized */ + $white = imagecolorallocate($newImage, 255, 255, 255); + imagefill($newImage, 0, 0, $white); + imagecopyresampled($newImage, $imageGd, 0, 0, 0, 0, $ratioX, $size, $x, $y); + imagecolortransparent($newImage, $white); + + /* Quality alteration and image creation */ + if ($imageType == 'gif') + imagegif($newImage, _PS_TMP_IMG_DIR_.$cacheImage); + else + imagejpeg($newImage, _PS_TMP_IMG_DIR_.$cacheImage, 86); + } + } + return ''; + } + return ''; +} + +/** + * Check image upload + * + * @param array $file Upload $_FILE value + * @param integer $maxFileSize Maximum upload size + */ +function checkImage($file, $maxFileSize) +{ + if ($file['size'] > $maxFileSize) + return Tools::displayError('Image is too large').' ('.($file['size'] / 1000).Tools::displayError('KB').'). '.Tools::displayError('Maximum allowed:').' '.($maxFileSize / 1000).Tools::displayError('KB'); + if (!isPicture($file)) + return Tools::displayError('Image format not recognized, allowed formats are: .gif, .jpg, .png'); + if ($file['error']) + return Tools::displayError('Error while uploading image; please change your server\'s settings.').'('.Tools::displayError('Error code: ').$file['error'].')'; + return false; +} + + + +function checkImageUploadError($file) +{ + if ($file['error']) + { + switch ($file['error']) + { + case 1: + return Tools::displayError('The file is too large.'); + break; + + case 2: + return Tools::displayError('The file is too large.'); + break; + + case 3: + return Tools::displayError('The file was partialy uploaded'); + break; + + case 4: + return Tools::displayError('The file is empty'); + break; + } + } +} + +/** + * Check image MIME type + * + * @param string $file $_FILE of the current file + * @param array $types Allowed MIME types + */ +function isPicture($file, $types = NULL) +{ + /* Detect mime content type */ + $mimeType = false; + if (!$types) + $types = array('image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'); + + /* Try 4 different methods to determine the mime type */ + if (function_exists('finfo_open')) + { + $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; + $finfo = finfo_open($const); + $mimeType = finfo_file($finfo, $file['tmp_name']); + finfo_close($finfo); + } + elseif (function_exists('mime_content_type')) + $mimeType = mime_content_type($file['tmp_name']); + elseif (function_exists('exec')) + { + $mimeType = trim(exec('file -b --mime-type '.escapeshellarg($file['tmp_name']))); + if (!$mimeType) + $mimeType = trim(exec('file --mime '.escapeshellarg($file['tmp_name']))); + if (!$mimeType) + $mimeType = trim(exec('file -bi '.escapeshellarg($file['tmp_name']))); + } + if (empty($mimeType) OR $mimeType == 'regular file') + $mimeType = $file['type']; + + /* For each allowed MIME type, we are looking for it inside the current MIME type */ + foreach ($types AS $type) + if (strstr($mimeType, $type)) + return true; + + return false; +} + +/** + * Check icon upload + * + * @param array $file Upload $_FILE value + * @param integer $maxFileSize Maximum upload size + */ +function checkIco($file, $maxFileSize) +{ + if ($file['size'] > $maxFileSize) + return Tools::displayError('Image is too large').' ('.($file['size'] / 1000).'ko). '.Tools::displayError('Maximum allowed:').' '.($maxFileSize / 1000).'ko'; + if (substr($file['name'], -4) != '.ico') + return Tools::displayError('Image format not recognized, allowed formats are: .ico'); + if ($file['error']) + return Tools::displayError('Error while uploading image; please change your server\'s settings.'); + return false; +} + +/** + * Resize, cut and optimize image + * + * @param array $sourceFile Image object from $_FILE + * @param string $destFile Destination filename + * @param integer $destWidth Desired width (optional) + * @param integer $destHeight Desired height (optional) + * + * @return boolean Operation result + */ +function imageResize($sourceFile, $destFile, $destWidth = NULL, $destHeight = NULL, $fileType = 'jpg') +{ + list($sourceWidth, $sourceHeight, $type, $attr) = getimagesize($sourceFile); + if (!$sourceWidth) + return false; + if ($destWidth == NULL) $destWidth = $sourceWidth; + if ($destHeight == NULL) $destHeight = $sourceHeight; + + $sourceImage = createSrcImage($type, $sourceFile); + + $widthDiff = $destWidth / $sourceWidth; + $heightDiff = $destHeight / $sourceHeight; + + if ($widthDiff > 1 AND $heightDiff > 1) + { + $nextWidth = $sourceWidth; + $nextHeight = $sourceHeight; + } + else + { + if (Configuration::get('PS_IMAGE_GENERATION_METHOD') == 2 OR (!Configuration::get('PS_IMAGE_GENERATION_METHOD') AND $widthDiff > $heightDiff)) + { + $nextHeight = $destHeight; + $nextWidth = round(($sourceWidth * $nextHeight) / $sourceHeight); + $destWidth = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $destWidth : $nextWidth); + } + else + { + $nextWidth = $destWidth; + $nextHeight = round($sourceHeight * $destWidth / $sourceWidth); + $destHeight = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $destHeight : $nextHeight); + } + } + + $destImage = imagecreatetruecolor($destWidth, $destHeight); + + $white = imagecolorallocate($destImage, 255, 255, 255); + imagefilledrectangle ($destImage, 0, 0, $destWidth, $destHeight, $white); + + imagecopyresampled($destImage, $sourceImage, (int)(($destWidth - $nextWidth) / 2), (int)(($destHeight - $nextHeight) / 2), 0, 0, $nextWidth, $nextHeight, $sourceWidth, $sourceHeight); + imagecolortransparent($destImage, $white); + return (returnDestImage($fileType, $destImage, $destFile)); +} + +/** + * Cut image + * + * @param array $srcFile Image object from $_FILE + * @param string $destFile Destination filename + * @param integer $destWidth Desired width (optional) + * @param integer $destHeight Desired height (optional) + * + * @return boolean Operation result + */ +function imageCut($srcFile, $destFile, $destWidth = NULL, $destHeight = NULL, $fileType = 'jpg', $destX = 0, $destY = 0) +{ + if (!isset($srcFile['tmp_name']) OR !file_exists($srcFile['tmp_name'])) + return false; + + // Source infos + $srcInfos = getimagesize($srcFile['tmp_name']); + $src['width'] = $srcInfos[0]; + $src['height'] = $srcInfos[1]; + $src['ressource'] = createSrcImage($srcInfos[2], $srcFile['tmp_name']); + + // Destination infos + $dest['x'] = $destX; + $dest['y'] = $destY; + $dest['width'] = $destWidth != NULL ? $destWidth : $src['width']; + $dest['height'] = $destHeight != NULL ? $destHeight : $src['height']; + $dest['ressource'] = createDestImage($dest['width'], $dest['height']); + + $white = imagecolorallocate($dest['ressource'], 255, 255, 255); + imagecopyresampled($dest['ressource'], $src['ressource'], 0, 0, $dest['x'], $dest['y'], $dest['width'], $dest['height'], $dest['width'], $dest['height']); + imagecolortransparent($dest['ressource'], $white); + $return = returnDestImage($fileType, $dest['ressource'], $destFile); + return ($return); +} + +function createSrcImage($type, $filename) +{ + switch ($type) + { + case 1: + return imagecreatefromgif($filename); + break; + case 3: + return imagecreatefrompng($filename); + break; + case 2: + default: + return imagecreatefromjpeg($filename); + break; + } +} + +function createDestImage($width, $height) +{ + $image = imagecreatetruecolor($width, $height); + $white = imagecolorallocate($image, 255, 255, 255); + imagefill($image, 0, 0, $white); + return $image; +} + +function returnDestImage($type, $ressource, $filename) +{ + $flag = false; + switch ($type) + { + case 'gif': + $flag = imagegif($ressource, $filename); + break; + case 'png': + $flag = imagepng($ressource, $filename, 7); + break; + case 'jpeg': + default: + $flag = imagejpeg($ressource, $filename, 90); + break; + } + imagedestroy($ressource); + return $flag; +} + +/** + * Delete product or category image + * + * @param integer $id_item Product or category id + * @param integer $id_image Image id + */ +function deleteImage($id_item, $id_image = NULL) +{ + $path = ($id_image) ? _PS_PROD_IMG_DIR_ : _PS_CAT_IMG_DIR_; + $table = ($id_image) ? 'product' : 'category'; + + if (file_exists(_PS_TMP_IMG_DIR_.$table.'_'.$id_item.'.jpg')) + unlink(_PS_TMP_IMG_DIR_.$table.'_'.$id_item.'.jpg'); + + if ($id_image AND file_exists($path.$id_item.'-'.$id_image.'.jpg')) + unlink($path.$id_item.'-'.$id_image.'.jpg'); + elseif (!$id_image AND file_exists($path.$id_item.'.jpg')) + unlink($path.$id_item.'.jpg'); + /* Auto-generated images */ + $imagesTypes = ImageType::getImagesTypes(); + foreach ($imagesTypes AS $k => $imagesType) + if ($id_image AND file_exists($path.$id_item.'-'.$id_image.'-'.$imagesType['name'].'.jpg')) + unlink($path.$id_item.'-'.$id_image.'-'.$imagesType['name'].'.jpg'); + elseif (!$id_image AND file_exists($path.$id_item.'-'.$imagesType['name'].'.jpg')) + unlink($path.$id_item.'-'.$imagesType['name'].'.jpg'); + /* BO "mini" image */ + if (file_exists(_PS_TMP_IMG_DIR_.$table.'_mini_'.$id_item.'.jpg')) + unlink(_PS_TMP_IMG_DIR_.$table.'_mini_'.$id_item.'.jpg'); + return true; +} + diff --git a/img/404.gif b/img/404.gif new file mode 100644 index 0000000000000000000000000000000000000000..e61d3b039672e098f47229189426e6e6b802e349 GIT binary patch literal 1049 zcmV+!1m^okNk%w1VSNC70K@gwv*+1cXZ;k>)M%*@RH|Nj6000000000000000000000000000000000000 z000000000000000A^8LV00000EC2ui0DS;`000I5AS8}tX`X1Ru59bRa4gSsT}ODX z?|kq7z@TtQEJjGiq;kn@0+G(BbV`L%uh{I*s_lBG+^=|C43p33ojJ`WuiNnMJ5H~T z>b*n20OqWCWYP$f*gqZp2~=2+7i(0}N-nO}x|FouXsd zO9tHIoCV*`TH@sEjtyeqMhd;`>)vwcR|NC)>y`H+T?FtO7-^6ectaelo5UcHLqrSq zAzSbdLY4y(eIYPl5C{W-+pJ|l7^J|q0rrUh1c)XL!9jdc4s2V{(Fg&P(o%wf=>%so zb3LUA7|F9qMq5*kA!D`^;4Wzis1RWJ%K;XWK79Hbz%+`wUqi28?LpO-Ff3(jT`j6a zCb9uFr!+{`)ydc$0g|1?!XTNyrWU6FpsOV>vcFR9>KOcsVqw2x*(OPp)|1u8$aLD3 z%tQ~L0s<=6oznMkWT#|2_wh2nuzq*PWlnu+4rIKFOO3mf;6smUC_4(ywWR$rPo z_by)KcrCcRi8F6L4d`j<(}UdHR=deo1v?U3lX}^~HB&q{mJF0_;V{Uj*_L*r0>;MY!OE6rN|{HVj_F86F!> zBLIf_ou|(@05&6_CE{^IUK$8y(b_i2owH&chD|fTd}zdY#cZ`8pa2~{PN5qz9TNFr z8!i4sqKf;0Se+$BM#0#Bu~q2=NR8p9WfRG)=jD=UC;-`*H?~olFJYk>B^_7RQlpY- zvJodO-MvEQ8UA^~+?PvmNlTk<`X;CYJ|mc4@4MwMr|Dwt8WJ0KE3<>#uXt2`e0TrV=Wv zs*+KxC&!MGYZuFE`scG+L<{Pcw8@TPEhNp>F{=^VKGLnQzJ=?^xUZJ`3%YQ8TZFld zu-k^aM8M04yu)NGhP@Bqi>tn0@au1n)Mgh#iOo72k+aS}-yAf} THWY32(MTt)^wLbr5CQ-@<&*Ln literal 0 HcmV?d00001 diff --git a/img/admin/AdminCatalog.gif b/img/admin/AdminCatalog.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e24cbc0c36e5db0e81f2903a4811fb1cb736e62 GIT binary patch literal 1697 zcmd5+S6CER6y9EFir51<45A3^PT4-}g3D~9Y+-k?5D|vmksV=X*4Y78Oi>U8Nn#Sy zi%CrHwp5dtrlu#FUW}$`OfxanG&75=Nxsj|hdkvz%-nPDf6jmYd(XMT&8v|&JM=a1?6IQo4kQim0}XJPihUx0*o@hOkCfgz?;=3uXJGo z^mVG-guHje-!tqF(}hI00d)#UMMF$cA5&Qx<*U|53(6(2mF5{0lDPq}kyXy4i>jKk zYMSNFmT{hlawe=StCZ3!yq>m<85)VjFSj+x%wB0hnONtM;)@hbY=JE-vj#KSL5H`s zlvtsuk15J4WqLfXb|6mlI$XwtJ01kpDguk^q87Cs0BoDNc z9TZ~&kM7tB0#wun&Np~rZyYCMl&6m)Lw&w*q^~n#iGtNtfHjFF={QaD1dyb=m;{!z zfkc#TCoy53T82Pi6vB7fKznKfNO9sUM*;>dtck!z7%(DQM5i~IOcekMBQOM`5Q1tD z6Q)Bk7zV}$D6nzSC0Nkm8sicy8yMsHI0iwzy}jCAotEV~AjD#^q++0`MnGs1%Nd?X zYM4ZEI)Z~tL^vwWQ!E3dA`$4MwiCfIH+LJIKWw6kz_XC_Jkg={cCM+uigbUD~aH%&5pt-}Ti zJK87}#bCV|Mi7%8HleW5j39P1>@>TaHMqs1v$$Y=I>zaIO(we&LG?P^i8v9&;WC?1 zyWMUOEL4Xes4?wZ%OrS$iI8btO5h#yMbGGq;T%cuEEi_ku5<+iVl2-lVr(41Lk7T0 zL?|X@r>^IuS_jEdJ!I6yu{1Dxz8G~HenITNbX#zTvqtAM=$vK~YP1``G2iHaIWtH| z21*sjKZ+&2BvfE(daCpV<5csIjLG?sfBy0NZ@(V@<>#M%{Nej!-+g=Zo3Fq6 z@{1#%A3pTir=NWM(ZK^B?*HKZ_uhTy?YG{16h zxcssWmtJ!5`im~SU}W9!(AqVFs|Wg5tvvs{bI)1Pw>;U~)6FNiWpS3FyE>Orv5qBV zG}2DAwJvU1bawN?1@q@Mg+sx{fZykBsIRN_xLr;MUSpqIU1hUYVivQ>Xwd6Wp)IwV zit@5KrL$+1%q#|rfEk4a`Daa^Hg(G6NfYxXj7Kw_E%Y<)O zRFQh?Qg6OUxp8Hqcs_vtfmzumWfpDy*lM>Zt z=0lz!78VVOr`Jxhx~g@KnOnE#OdiY~w{xvHXSO~gV|=D<*6uZ8)r2Yi1xiW%zCp1h z%RbHElgMTJS0AXe%q_`tA3id0ASA`JKaUCcV%bCCyParSDSaopf P-p!kKjbuy3qRPJjEe7_a literal 0 HcmV?d00001 diff --git a/img/admin/AdminCustomers.gif b/img/admin/AdminCustomers.gif new file mode 100644 index 0000000000000000000000000000000000000000..faef1dc53601673ed17d5d08c117d09575f7086e GIT binary patch literal 1461 zcmZ?wbhEHb6k!lyxN5=>RLJR_!4_D+8IZ^Bm(5}9!5mb;scz0BtHtP_!=6!V?wQK& z9LuI*$!g)tEUCii6wT_HC~ROa=pCc(87t!&&lZ#=nNVo$lf~hk&K8ttVi(5dm(67t z!s{L<>X*f98_ca?&gzrFmQZBto2cR%E^Fk>R@uk*}`rz#W*+ z=@BWf=fL8X#-7n&5nRN?;Zqle1Gx6p~WYGxKbf-tXS8 zq>!0ns}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKGr(jcIRgqhen_7~nP?4LHS8P>b ztCX0MpOk6^WP^nDl@!2AO0sR096=HaAUmD&i&7O#^$c{A4a^J_%nbDmjZMtW&2GK4GRy>*)Z*l#%z~24{5%DaiHS-1r6smXK$k+i zkXzvE3pY5gSP$$Wz2y8{{ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@TIKQ+g zITff}8KxN+cK9s)HWySP|5yBfM08oIbySQt4vI+_A` zM#hGQMrJU*o_WP3iFwJXFncqB_5$^~8XB26;?-;AT$Gwvl3x^(pPvIu0Rb8LCHch} z`2`Bj!KMnniOHFHAU-I1Aii};Ey^rQO>ryA&s6}2uT>@%`+=TC@wcV3i>s5dtEsW8 zg}ITLqp1>9ZwfhKrVn(CJ}7Y@B^HeX-RQWVL^UgZccVq zW=48iYD#iaVnTdeY)o`iWJGvaXh?8SV1U1$uaCEvr-!?ntBbRfql3Mjt&O#nrG>ef zsfn=>Fk9;B>S$|eYN)HJswgWdD#**p%1BE|N{EYziUOZlh$g{>~#?dLKM4GswXWw|FvT>ga!vUvc zRn@f32ab4Io;Og{?rr{eB2%oPv9zCqO|Hm5lueIE!<&PhRe&XtMSzu^!=0Cphmn~f mgMnF6n~&E`mXRrA`En*k1vh0bqYWE3afz32+wSeiU=09up4MUj literal 0 HcmV?d00001 diff --git a/img/admin/AdminEmployees.gif b/img/admin/AdminEmployees.gif new file mode 100644 index 0000000000000000000000000000000000000000..38e91df296c5475197908fb9446b800a2169464d GIT binary patch literal 1720 zcmcgsS$Gpw6i%D1ZAzNbl#)_pnzC8iWM;BXnuW+1!0C|_;oTbc!Us|;@!8hw02gMjFqg16;qJp!ze?;(pk zlz3KEw!6E403wUO2z7|DdRg-l*w!RB)a7`(N^EU;AzIhbr>pBK1AQ3gl~@DCzQt8_ zl++dywk<35(+VOauO)@8G`xIu8__ATx98#^sVy)A^9kKR;S6zrsn(V}Hz>8V2#obI zbCV#pB2c?XVr$K}wdR=vk_t2{*sHJx3Tqb^(1Q(lhtTXTsR@Xk?Fw74)EX?Ttl`_+ zrHa{EM61FQC~*Len_~?W)%S?BZjq%)Vr|JcHi)(Eyq=VY=#VYY%k3el*;lBTo5lMd zNBL1n$m@q3BujFCvn>@T!@U#>byG{}m_>Pb_Z}rgM=Z)Vofr1T395&74<)FkAzyQN zs5gv7lr}45PMK2Cc$8vEC>8CCB~2-dl8i9jl!=?Cm(@yW0>buMlz4grN^25Kf`W7^ zxH=5$VMvdt5RKMgFjPS(jKFFbRU>FMVlZh?6AVL>L&>QnB1=p`hig)cvnVbg))qqCDB$lcX48zhsP_&vuR3`^xESai~B`Y!>98@x#pyMpf#GtfCvYY8=ElMuZ zV<|-AUhi?ov7~AuAyt@(s#9cKji_LCG@8z90-a=o)Zby85S?ruj8p0$m1O!8VTyxS zWXRmvom?mlg=!E4)n~Y#Sdt}UVJf3bbGnmU zO998SB&sna-(22_vhl#|@Ze>pQX7mPYx9RDbm%o10D>FM#(=ZxdcL&dm` zNpP)^b@b0ae*f*)BftFo(~m!V|J}FW9RB*NFTeQwvrj)c^zla@esJ*p_uhTy?YG{1 zDDcmY`*xS3oqET@%#|?6X#!dB)ISYG8Rkn@lW=GqGr2@9A{U(j`}U_QwYD@j1q1#@ zpSPjD&f~6iIUR%@Uud&h%rz#=Xwd7l8kB2GRdv;Z%2Vghn>%NAg|Zx)b;``L8KsKp zCDV%KMNCo0fj_dE%Wb!SKkc)uUr;)~;I* zI(ZxF#z%xwX|8b7Fb?K|lHt(!v>6gn$8h$VLQ5gwp8^DGke%lqYpmq&D9D;B0rL5} zF((iKBQSxP0G%TXjMi2)0YY38Y#8ykk0PK9Oo4$90>$~((ovg10rCsPSR2S)2xg7e z14n$vUP`oC4z`ZxbnTOk7M1VXwe7(0`i;0fHC;Kp5XS^XZvVmHoZMB#TY}rc{)8Xm G)%*o=eFD({ literal 0 HcmV?d00001 diff --git a/img/admin/AdminModules.gif b/img/admin/AdminModules.gif new file mode 100644 index 0000000000000000000000000000000000000000..29b86c2b22eda173ed7fc33017acfdc00fa3145b GIT binary patch literal 1461 zcmZ?wbhEHb6k!lyxN6G~RLB{a&+eDS5s=5OW5?u^#bM#c99Y2Vk;3km%^{`E=$$MU zkS*+&pyeH_>KCu4Vaa6X#ZuJfo?2}ll&YCgZ($$7np|b>p1>NBW$v257M!JGAI=_I zuIiP_8JNc@smACM$7UVG=AXmvmB#KHr)})P5}3!6P-5;AryiYQYwjWuk|$x{!mOan zY~smc?9S{Q!xV%Qmue&kg&dz0$52&wylyQNJ0T* zr*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|Tv zNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-h znc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&` zn+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b( zKe;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A( zn_hEsCvy`wQzvIvLsvsX7dHzFBS%L^Qy|aC*wE0(45rsJuec;JFF6%vZzj-Qs9s0B zdaay`QWHz^i$e1Ab6_bTAS1sdzc?emK*2fKRKYhfIWrH$2SpFWw=StgnPsUdZbkXI z3gGay%EV$n(6cE1wsdxJbuxA}HFmWyH!^cHRf6hGAt%iAfsWA!B@U#-0uutJKoAq2 z^no0B=1I*1=9nU2)?obq@9&@AzkdGs{_X3R&!0Yic>nJ0o7b;izIguZ>66Eg9zM8# z@9v%3w{G6Je(ma&%a<-*IDhW!nbW6Eo;ZH&=#j&R4j$OQZ||PnyLRr_zHRH4&6_rE zSif%Vn$@dTu2{Zo>5|2Z7A}}SZ|F(<6Xm4w6X>Mw4 zsIRN7sjjN5C@(85DK083$j{5o$mNlr>kh>weniH?el2oDPl2@VPj@b~le z@%HlcaCdWcadvWau(z|dv9_|bFgG(bF*X8bOFdm3Z7od=bv0ELWhF%gc{y1bX(>qw zaWPR5VIe^Qem-6vZZ1v^b~aWPW+p}k2F0H&K+={$2UOsI%1j2fq66~^JanY`Pb?`q znPXMGU}loXY`ti<85_hZ*G@BR^j&dE(aT%rL0VG>ODkKEyTJs8#S>TsJqkGV-1ww; z IwvG(e0LVt&ApigX literal 0 HcmV?d00001 diff --git a/img/admin/AdminNext.gif b/img/admin/AdminNext.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e6deea2559d7f6703961a38b031640e819b64f4 GIT binary patch literal 1330 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 E0C}~{U;qFB literal 0 HcmV?d00001 diff --git a/img/admin/AdminPayment.gif b/img/admin/AdminPayment.gif new file mode 100644 index 0000000000000000000000000000000000000000..14bb881bd1c98983b9262e384d385bddf5e91ee6 GIT binary patch literal 1322 zcmZ?wbhEHb6k!lyI3mlS=g1_Z!RVgIs_(??6v?M!$7JCxU>hK;ZN+96D4bg8>l!WW z6v?A)%cO43lv?Cx?kQm5C1mN#?Gh!VZpmcn%V+5=q;1V*=_O?1&ZBI^=n}^!tHsCw z1B(B-BYXoCToOwXfwYZ%ML}Y6c4~=2Qfhi;o~_dR-TRdkGE;1o!cBb*d<&dYGcrA@ zic*8C{6dnevXd=SlxV%Qmue&kg&dz0$52& zwylyQNJ0T*r*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5 zfdUjL0c|TvNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@Haa zD@m--%_~-hnc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;- zkyxN_sAr&`n+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL z7i9t?B{9b(Ke;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%` zX>93cU;;A(n_hEsCnF;_OLJ#eLsvsX7dHzFBS%L^Qy|aC*wE0(45rsJuec;JFF6%v zZzj-Qs9rO?daay`QWHz^i$e1Ab6_bTAS1sdzc?emK*2fKRKYhfIWrH$2SpFWw=Stg znPsUdZbkXI3gGay%EV$n(6cE1wsdxJbuxA}HFmWyH!^cHRf6hGAt%iAfsWA!B@U#- z0uutJKoAq2^no0B=1I*1=9nU2)?obq@9&@AzkdGs{_X3R&!0Yic>nJ0o7b;izIguZ z>66Eg9zM8#@9v%3w{G6Je(ma&%a<-*IDhW!nbW6Eo;ZH&=#j&R4j$OQZ||PnyLRr_ zzHRH4&6_rESif%Vn$@dTu2{Zo>5|2Z7A}}SZ|F(<6 zXm4w6X>Mw4sIRN7sjjN5C@(85DK083$j{5o$mNlr>kh>weniH?el2oDPl z2@VPj@b~le@%HlcaCdWcadvWau(z|dv9_|bFgG(bF*X8bOFdm3Z7od=bv0ELWhF%g zc{y1bX(>qwaWPR5VIe^Qem-6vZZ1v^b~aWPW+q@Uqxh2rNXjzkfC?N?na05Co}k{B zk~uG9)w-P9Y%x0L4|Z;tK6B#)O~zRZ3OH8GkZ9^HIw>OHBYf@9louup4UPv(3?w5Y aCbxqG3D{A4#9GI@^5iO@<$7JBl ztnbX6QsT-$3Q+vd9pM|G;F4I92&8T7D+&^mvr|hHl2X$%^K6yg@7}MZkeOnu6mIHk z;9KCFnvv;IRg@ZBBbrg&Y3=Q-RjPwnS zbPdg|jE$@e3>2V1320kUN}5%WiyPD~AkS7Qqokz3N?*Ucyj-u`STDaQUEk2s(h_8b zk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOz-6iAnjTCALaHmqNUdTj1*pH#o0Y z59}emIIAz^b}9q_QAYKPa_0zqBYh6{uVprWqJ^ z_$>k{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6e|N03j;$#a}xt|BLg!FLqkUk z16K<-S0`snOJhqn0~44T*z}s4J2| z4|I$^C~+Vq7MKt)1%jCHqz~l4Gf!$BFvk=Dvj*e;e}Dh{{`K?6_itaneE#(D!~1t{ z-@JbH^2PIKPoF$~^zgy`dw1{LzIF4)^=ntJT)uSi!ufM&&zwGW^2G6DM~@snbnw9b zeS7!p-nDbb_HA3YY~HkS!}@h=*Q{Q(a>epxOP4HOv~a=vd2{E?o;7pE^l4M4OrA7x zLVsUxPj^>mM|)dqOLJ3WLw#LsO?6deMR{3iNpVqOL4ICtPIgviMtWLmN^(+SLVR3o zOmtLaM0i+eNN`YKfWM!wkGGenhr64ri?frXgT0-tjkT4fg}IrjiLntdTk7fRXlrR| zsH>@}C@U!{$jiyfNJ~jdh>MAe2nz`c@bmHVaC32Tu(PqUFf%bSFev_H0g{FcI-o)c zRAw@;l^vK-;GrYce_~0HrUch4rx%675=E;HIk2A0;&EJ-_;`~@o7!RFXB`W6m>gmNT2ChXJ3nvY<1cWXaB5yWJcatO0QA)(iju literal 0 HcmV?d00001 diff --git a/img/admin/AdminShipping.gif b/img/admin/AdminShipping.gif new file mode 100644 index 0000000000000000000000000000000000000000..362e2928e5bfbf4b8259786d87bc8b30bb95501e GIT binary patch literal 1709 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 literal 0 HcmV?d00001 diff --git a/img/admin/AdminTools.gif b/img/admin/AdminTools.gif new file mode 100644 index 0000000000000000000000000000000000000000..854e17468b01bdfd0c75a2109c6a7e043f67225d GIT binary patch literal 1658 zcmZ?wbhEHb6k!lyc;?LDp1`VO%NA3rp=Hf%7sh7f%IuTL<`l*17|Ckj!WxmUZXeEN z?#YvN*62}%%BrmSSsBFZjZpIptp< zreV&Okmsgu#_W|WU>V4&ZN(OnCmWE*o=|EUkjt)R#pV<)7M5mW6U?G!%48S9;T+4R zY{=vi!|f3-!7wy|;(zW4-v9-d#F9iHZDU_ikeHmETB4AYnx2_wtMq>NekFy>6kDZm zQ(pt$0_W6>OpmIf)Zi+=kmRcDWXlvKdpiZ23ag6Tg51=SM1_jnoV;SI3R|Vbl>DSr zDrlU}Ruupl@KL zZ)l`zXl`X}WMyEW00l}w+lo@stb$zJpmqUywn`Z#B?VUc`sL;2dgaD?`9*7iAWdWaj57fJ{tG$}cUkRRX#c;)UD-UthSv zdBu8Q59uZ6=jvA^7U&!58R+Ncg8T(mU0f2Bif{&2)x{x|1*!T$sm1xFMaii^<;pP4 zz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JJiY7#fLwm{}Ma zI$9XGTDZA7Ia^v9Te=yTz|6p=*WBF6$<@@!&Dqt^)zHwz&BDUS(b3Tq$TKoFG&C}U z>GjMjE=kNwPKDW<3A7ig*A=f`E9aur#FG4?ko^1{SPBTp$S=t+&d4uNa1J(A@J&q4 z%meX3(F5_VOKMSOS!#+~QGTuhIDD-#vDgpvEQ-G^on2g=j9pEQT`kOw%p6UXpn6lt z2{V15WAs6Z11YhVgsyL#pFrHdENpF4Zz^r@34jvqUEVojbN~+qz}*ri~lcuUorj^{SOCmM>enWbvYf3+B(8J7@N+nKPzOn>uCk zq=^&y`+9r2yE;4C+ge+in;IMH>uPJNt12tX%Sua%iwXi?qaq{1!$L!Xg8~Em{d|4Ay*xeK-CSLqog5wP?QCtVtt>6f%}h;V~xOjJZzNKk;EkC%s=i<5($jg^I&iIIUp@h1zAbY{>2 z6_21YpMkx+!MUlqrM0cSqqD2Kr$a@n&DNn?-K2$;!&tvfso9>dnUz7Ft6fA?nMcC0 ziIc&Msgs+9f!D~Hk=lRI~c9o`JDw%H|u=({N-pPgEat36yV|j literal 0 HcmV?d00001 diff --git a/img/admin/___info-ca.gif b/img/admin/___info-ca.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bb96b05d729b098242777d5685d4bdf39407cf1 GIT binary patch literal 628 zcmZ?wbhEHb6krfwc*ekRb)v}6E2jTmt-Qa&?#tcY_xmNjpLBk6$n(eh2j6cN-(R8p zd7u7^;|=fD2|w8E|MOb%|Mz?TKcDw#rSSXp@?TF#eK{WR^HS8WyH)?c9DRDA{@E(S zpO*rj9dNt9MCi}6-p_}PKOEHja!mf?`SAbWul;zu_0#3-U-w!*ZW4Zddg`y2D{d{c z{dU>y%2d(kn?$}J_4;wqq@qQ>`o+5g|)d$~>Y?pnw1dkvqi6aKJ8>Bo8RyGyih%oqQ1 z%JTcYDR&kKy*bzP|Nnmm+5^R(ER5_7aSS>jt3YwWz<#kIuBpkC(bCRR+pM{#$=_R9 zLclw!x5rLdfXTy-X@V1invDWR?x3g2U75Cu|vkL9; z@-kI+(p2CN_u&`n5m8n)H!}Q=4MTu4Kf}R9F7QznC`l8!l;#z$&sUhhhc#dbCUyuH2|*D2rK{q literal 0 HcmV?d00001 diff --git a/img/admin/access.png b/img/admin/access.png new file mode 100644 index 0000000000000000000000000000000000000000..1800f8e56b81fe93899caf3e79d840e83a66c0f2 GIT binary patch literal 706 zcmV;z0zLhSP))oM+u>itHevEaRDcXyY5zmKX?EEbuWnE_yPbMt|!e!9B4IskA-Bvt)s zc6N3lguwRp_QNzy>mh_v2%(gwX?<&J>tF9ZwOVaKM4CtMibsQpELAEMc6N3MA$-?t zHoG~i-L*B4 zGOEh=pWLNj0aL*w>kyQmH$ErE$jrn(-=4b5;^liurofB~=f5Jskrc`#d;>9o;sjuz z0hN@iXZsKX01tk-_0oc=0ERsImE!mbl4KI%7?i7E5e}cC2Y=%S{}APn@_ZBXqZ~j4 zqJesP?cZ?j9ja%(VE4u~EWXd&muKny)y5C@nX12wnPS1`0RhY~4OACD#+6P$648h7lGu%S$8&@FN~xzmjDk of=PJZ^5R4_`&g>k92J270dlgk&Dl^^F#rGn07*qoM6N<$g0PZPO8@`> literal 0 HcmV?d00001 diff --git a/img/admin/add-btn.png b/img/admin/add-btn.png new file mode 100644 index 0000000000000000000000000000000000000000..642a6e1730bf1e3a391e0c96878ad07440b2bb9d GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6TNskp4n*H^~7K6 zbB=HvQ!v|Q!@R4ZRsM7RbPF>BwvC)w44OQ8j~J2#W*70E$TKTQ{P%w1A-?MjNzF$l z{B3!ZHle8@riD#FTBYrcx`?{KA%(3=vKgw5h)FKC=8Tn7o^rv~mf>TAUcgTe~DWM4f^=CaH literal 0 HcmV?d00001 diff --git a/img/admin/add.gif b/img/admin/add.gif new file mode 100644 index 0000000000000000000000000000000000000000..df08c0b6b93e51661981722c0f8514a8bb2748af GIT binary patch literal 598 zcmZ?wbhEHb6krfwc*ekB(`vH$=912x71!Tg%G(kVH#>CJ!D;{h|KELeXZ6nHma`Qn z?jD|VV`A&Jg6AKedh|J_uL_!ergPH1x>Z+Z*X&NsKajNa#QeRFw%&Ys(SL?R!vOo@`xmd)CzbO}%HD9eYgAJ~+Pg z{M4o`xj|EXcHLQ5us1Gwe#oP@52s!2N?8@M<@WM*_m@^4&3gas&5;-TPd_`f_3rB8 zt;sbzvU>JbWv-5L?zSr19Y66%{j}pPJ=a=#j#ekk4L@>c=YvmouD!q3dA_D+YjN0I zm*TbA41*OY{$ycfXJBX00XYy9Ck*VH8`ztgTUuMq-PCz?n5323*d>ItEtxI#Y-F@r zB~Rn^o?Eo|kuo6UtxYZgUDO|~W_8Ji57 zB zbrg&Y3=Q-RjPwnSbPdg|jE$@e3>2V1320kUN}5%WiyPD~AkS7Qqokz3N?*Ucyj-u` zSTDaQUEk2s(h_8bk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOz-6iAnjTCALaH zmqNUdTj1*pH#o0Y59}emIIAz^b}9q_QAYKPa_0 zzqBYh6{uVprWqJ^_$>k{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6e|N03j;$# za}xt|BLg!FLqkUk16K<-S0`snOJhqn0~44T*z}s4yBZm~npir!8oC-9y0}?b7&$sR zngV%7#)gJQW-z^;dBr7(dC93TdozLdLiJkU)obNkl$uzQUlfv`p94z)0U7xv`NbLe z1q#l=rV74^$(eZ|J}7!1zI910$}CGwaVyHtRRD*tRVEhufu2S2x23a-tCO*-sj;ht zxsjQpsS;Fg3OQk>4|I$^C~+Vq7MKt)1%jCHqz~l4Gf!$BFvk=Dvj*e;e}Dh{{`K?6 z_itaneE#(D!~1t{-@JbH^2PIKPoF$~^zgy`dw1{LzIF4)^=ntJT)uSi!ufM&&zwGW z^2G6DM~@snbnw9beS7!p-nDbb_HA3YY~HkS!}@h=*Q{Q(a>epxOP4HOv~a=vd2{E? zo;7pE^l4M4OrA7xLVsUxPj^>mM|)dqOLJ3WLw#LsO?6deMR{3iNpVqOL4ICtPIgvi zMtWLmN^(+SLVR3oOmtLaM0i+eNN`YKfWM!wkGGenhr64ri?frXgT0-tjkT4fg}Irj ziLntdTk7fRXlrR|sH>@}C@U!{$jiyfNJ~jdh>MAe2nz`c@bmHVaC32Tu(PqUFf%a% z%a@-lK$4L`2Uyks%N+p*2PT!C{z`_dITAdZRz}@D+;@3T!#uZXDr&JxJ2Ed%t1GnF Lcrn9@mBAVS{4AgE literal 0 HcmV?d00001 diff --git a/img/admin/addresses_edit.gif b/img/admin/addresses_edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..369fc46ed259191014664e8a16bea76e7513f8b6 GIT binary patch literal 412 zcmV;N0b~A&P)%thM>W-PO4z!6ryTDvQjnlZlgy>*`kliP$?n1x#3mBv=H* zZvSv|{Wk%bFo}=%C%C=cB-|2gZto+r=@*a)F<})kF(DFGf{cEF%qX{I6ar>BlQ09$ zKtwM=E70{BMdbz}7ZEfCIhx`>6H;PlIK|!Y1xVX8?flcwAM>e&;Vo+| zZ%mU{7{y8a=JsV~OO`DAvL$3&vc=4qIVZeyLpJ+o*sj2qBCtwZu&Y?x0tEyt?QD^D zwso!iv7%)aaRr_21O!bhBNe-LfDTG5AUHr-Lqio-WI5~mE+aGhaFUbfp8Lx^$#atc zB>gMHNX_%d0?O(dpKP$qdtkk!Z~wZ;%^S>fW*zzJe8VQGL<1e4Q zde4R4={~sc_u%%U033lfaP16BN!x63@tLW~{f+mC{{iZMtzx&|ZN;_eUbIe}$DzOx z$bPATGjs`@v-Ak>bo1*)wyB8Cy9n92Fu1y5_69%~tlFX)lE<#!zYg7M8U0t zu>NL)#bd@N7Fw~eWzu4B&BHw!!>MZz!Kl3*+g{m0>D=zA8?aVv^LE#pX$^rLDS)`UAbxrJCzSXrp&K#b zLdc2Z-8$@4Z$Hg5j%6qMu3YdfLFSl)sCfp$Q#1JX$~@l5y%?nc1zp)u-@*_shPrU_ zh6!o4Lu8qO#5#f3m`(pwU^b=8 z(v2y?Q3d~%xKN;v@_3J33OO27D%fl`lvb$Ls+xTe81AC9N=wa-s&!!HD*IAXQ=dzE zS}K2G?Q3ykoX?Lh)u~`DmBVN>Vqswc;cyrpj|a6HJ!I8pjE#q=*}%X6m0>cO^+{_7 zieE}RIkw#R9b6g}D&#T*Mn_S{=77my{3Q?wU^1DYR4PGw27`&cS$P2xB9qCY)Hbbf zxZD_@4{a6~nz}j)Ft=kD(g@;7e}6v$fdIT-FPu&%2qJAIGc$8D2~eq2s~bDL{9)Se zrmfrlC=m)NK;@@<@DYvnG$SJeY&M$`>1j0D8i&K_Aps(hXz7`swfD`pw(<7R7fr{s z>z!v>(b?GvtJMmrREqNQa>|plj*gCqUawzbu~=iz0FslFHxUG}l}@Km6&4mg7K_EJ q3B_}Aa`F=TIN_Jc8F@x#$n4**RgB^*(#uT%0000}QdQ9sf*QnxY>*kpE+b{_Q;sJloS71)&(@kO!}mqf@1v(v;*8Y=G9S3kY~Cw# zY=t&c z;3~JK4HxB^lY(MD+sYeQ=t%XSSW;x^1M?dTvN=W^yNcAcy`HCte31C;)5xP%b~qs> zDP&4(%TBqBNGHwnryK;BdMI$fEg xd0mc!C@j^ZpLxYv4HmnPfI0THYuv<%+6iSmMn&w3dPGDfL1|=LY008wP(boU~ literal 0 HcmV?d00001 diff --git a/img/admin/appearance.gif b/img/admin/appearance.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e5f79e9b3bd6a1e8231aeff9823f2016bdbadb2 GIT binary patch literal 1025 zcmZ?wbhEHb6krfwXlG!k+F?_@!$y6^TJ;(0jApF#oIc-g#=NZA)1tQ>ot-4PAXRor zj>hs_jb*u7Yl;ommYS}qve{H-vboH3OS#$hDyy9}cDrirKR7ymi;jAm9r>*^|DV{0 zNmFYZw>$K0aht%^UowCeb>nzM^auP-gXwyfgLlJXl%DsC>Rys@n6=E|Bo zE9<|s2fggielRuR(VX;0bF+T0a{RO=_T&EOpPQo}FD!bpsPM^>(r2qHpRK5QzP9f9 zx|-+fYM-yKf4-sq!~XQ&=dAx<)&74~=ig<+-xr;JUyb{JAou^H+;b}%&TpP@ZTFm; zJEq^?HS6x)xnEnG9ZTWnC*Z=?j8Abs(1QdU=Ff%Yn zGw6VLpgh6AagV{ALuLnKkdR6}ht{19&pqb*PJQ)d!^Q$;e(PmtIy8g3MCME9u(5Ro zyS9oLWgNTn^3q8m*2WpnW<(XbvCc3E@niUL;H1YaUOlnIj6+GM#PuSrmT+uvJE!f``Zo|B9vxhr*{9m=$I{NhuI|)y^tAosY+Wfi}Jkr$;Lft>m1{p&+23 zJh92la@vK3Q#jjMq$c`^Jec6l$a(C{cX!obsicJ1cf-U`tIG`NCfgi!@jADYk^JhwKQ z>=P$IgO8Ap-rGtH=Zv`Zwo$wQ4L(i21g6ypzo~vvL-gN`1{KF)te z`m2tv25BhH%l;Uk!2F2&NuVzml#f?nAp4HAp>g;fzB>lS@gEI5Ycm|8g@?yA@lird0fXuoU{ciC-; u@D0|(tKLwHtZWw!MNF1Ax;Lo(Isbd6S6uF%UZF^|1waFM5)0kASFV*_r zf5`X$%ne2VC(fxmT-}jsfYXA;9VY+dXRBkyakJF^$Ie8>akJF_r!LU^-@Mc6f5}9< z|Iyj@$3jxgjc{5p<*@bty7fjFxMrQ<|FSg(|5N8`{*Rfe3dZp>)c)r#)%jny%Hn@o ztNwqW{%JtWOi?74uF(G2WW5_F_Fv%#JpHAsF)B1 zSx~de;D6#Iwg2VI^#7MmGx=}nEAbX6=SY=|2C|@Wjp6^A6~_N_y1+ql6^NComXkpi zOg&)vKLZlpt1W!Qxv5%IfGmiwQ3Dy?LX+YeWC4&)pk;kvH(DoC9RmQ4MeB(mMfZ&W O0000sPN{y?pud$&)Ad?%lh7{rbt1C-?8)zj^cK<;#~Z zSg>IJ{P{gSJz-&Cfq{X(zP>&_J{}$(uCA^Q4i08!W(?E@ia%Kx*ctva=zt6c`H6w8 z$e|&?LPM(kaO1%R8B$%I&P^XbRLFHRmlQvS6^y1Xss~j24|A zr;dIqQ()uZSCo*Hl$NNJ<7_CC>64L^kdmv*P*7A>R*{sEFDzz?jTcsuNlA0_3T{%4 TNcZsa@eA;9S;_3|$Y2csVFZ1a literal 0 HcmV?d00001 diff --git a/img/admin/arrow2.gif b/img/admin/arrow2.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5c7f485611aa87fef7498449ac19ccedf4ba7f9 GIT binary patch literal 215 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 V7BJ7>(S!g1002ovPDHLkV1n)G4)Fj0 literal 0 HcmV?d00001 diff --git a/img/admin/arrow_in.png b/img/admin/arrow_in.png new file mode 100755 index 0000000000000000000000000000000000000000..134e122632ead612525ac70d0c195fc110eaadd3 GIT binary patch literal 547 zcmV+;0^I$HP)e%@pL+Zh6OKO(bdCwj5U0s0gt)-3k4&7P=4Z z=t{Lg`%d#aL|4wtcyb(OPhTQ_8ly=!3VJ?jF}WW_R1DW)Dj={txfYRvcrJwzJDQ?v zY7}(KlOtjXzD+mmt5&qVQ43Vy*fCWJ{JJ!ak-YD(9sgOK?^~fuX~Ab47|#XKpJwqe z*(|8IEu$C^{TR-BVaoJSt6`-}A?R4tpnai*X`NTsoU0tH%Ompk~r l(#$%pKpR5(n-OJ3xTo| zzV{Az-rC_Vje#(D=jSF0=P$d$OcdrqWdZ50OISNyhHKXf!jg068_0ZrhDT>{L~4Gy zBdqY8Z{N|1SMT6qEsm9X5`57DGIJ6{tUiU*w*<03GFWKb!_-I5B@^$yqd8xVVYQKh zR0+dTu)vlxgG|$F-~JTf!pHvB;^}=nIGMw(LqWZ0Ajmc)rbZwghz$N6FuFDPw?M3V zxyd6>bK=mgT-5{T&WPHE+aleX_AmP13}~n2@i(LDRmJ8PMrCl_&@?^QbAJr{3Xe7{ zRYXL~lWa_vCNY#Ts)2%lP|*kDnyzJ7?dSAQ`{;tavxCB5aI&_5*@FmdS#$HE!Hso; z?9Gj1PKm*v6<|v1p?jjC$@D`cYYE)_AVDgN3~tc{;W|CxdRiyDU-Jm$-Iy+k=wIpu zaqU^Lc$`4uXdceI71qtpa9aZ_T0~1>NOA<)R1XMW9DzMQjIr$@2E+2ogl@2IS%W^B gtbN=AP4XIk0RxY;jV+3>Hvj+t07*qoM6N<$f-d$A%>V!Z literal 0 HcmV?d00001 diff --git a/img/admin/arrow_up.png b/img/admin/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab1ee7147bd579e23865b127b1ad91ac8679860 GIT binary patch literal 3245 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 literal 0 HcmV?d00001 diff --git a/img/admin/asterisk.gif b/img/admin/asterisk.gif new file mode 100644 index 0000000000000000000000000000000000000000..897dc0a633f63565e65181c5f877dbe21d453458 GIT binary patch literal 612 zcmZ?wbhEHb6krfwc*ekRt&idHfsPmZ(ylLX`Tu6|t%b&)HZlCa*Yf2;`M2XPzdqjm zerM+M<$_-iX#Bbq^YgIctG%KB@AbU8xa#-2GoOwIe0#k6@4cGW>jaNC3I4w~=i3qE zzdzpnx)A+*i_8DpSuZvkKU%8%|90}fce{UG@cDdW=C3m@?{-x z|Gt{~{o$&AFIRm!o%UxR!-w-7x2G`NUE%UuTQTBkrG$#{awM@@S>?yQ{0d?GpTbz2x81wm(;sJ|6V>x|QMo^{5{g zQvQEG_vN7F&&R8No(p)oT=K(a!8hBCzwb4CajfJ2`+I*+D*k`g^Z(h*hjSPnu66l! zqwxFDAO<=D#h)yU>eE*;PY^ol~#fq*;UA#zxz+Sy)(=-@}j_;9-ysUyDgHfxvn46-E@m7|( z9~K^EW0g~9x#DzSNe8D8Q{RdihD!yyW!O6mZUiv4aH(o$2_zkCIK(N@#Px@x$}+jq zeemGH{rmU%`T6tn^Dkb!7#JA1VZ(;Kd-twgyLR&A$^QQSfB*jN>FIg#;zfCR`KeQ< z9zT9uUteEXSm@~Jn4O)yV8Mc;M~}{$HS5ZiE3vV$va+%-U%q_w=+T}%d*;lU&?|Ns9Cg9#}9WC1%z2SkG6gn_-aA)u+brL~2Z(_V$c&dJ$QR>9lV zM7_yZjz>+d3gtIdHNtSOWlm+_Li=q@4 zfwai7D3U19G#_JPiBU6!4vvmg)8EWJ_rKoTrlg=O=)mDD&fz;B=X{^0l*0dnK36jm zi8y+Dd);%*Xn$hR*gUY$kY6u^OYQownS<#stnu8Q)z|-tL1XhkgVQN*&bYF?Z_|b$ z?7CrhsB3%A-fQ?PKx6YjH6*qA^4yqu_W>1JeDG5u316NYIz;Q{qnE4a1lUr}P88b- zu~#va8lrF8=K7UBG2I<|6+^z3MqRl)^vex~hK4Q)A!>yXuq?}ASyn|T6w+GTpU}!B zrOsF^hKiyLG_zZ}=I_@Zb#$gV=kJLKobxGN2q6jz3Mv6qa?X!C91g9ktLyo~5}z{~ zjqWnscI2?f{IXSt4 zG4^1-x_dFNtlpnfvI>Qci3NWB`A#D07#SG>=lrD}4u{{GrkMgTPDGoWPG=uuY`w?h z8O+t92W&IxBi{U6%%tw1sQQ4Bi>pE1_{V{>9+EWFSa z2^TNl4zPaoG_@c*H-mXq$+r3Cps2W|i2~)MRnay+l;*k%`Y$Mt8@e+Jj47S>2F)?EBBM zU^8lvc%$Qfd)tS@XC9W#>VSysjIj(6y>^JHc;VuWOFiBsl$ZuI8~SdK0+5hw6a`Dl zu*fr2^z>9{*>AnjbAHWO)$SI*O^-o|j{wv!+OxTXNDN0X+IFhd{yQ%S;;#Oy4H+dB jl$1ZEnyru$N~z*+t{{CoO+Sk500000NkvXXu0mjfuTp9G literal 0 HcmV?d00001 diff --git a/img/admin/bg.png b/img/admin/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..bef777e269f79f0a8ef174d4f181b81008e2f385 GIT binary patch literal 56884 zcmV(^K-IsAP)+$k26{h@G}MEssSGCp4Hf``j9pjtpZ~LJGIvI}vjG-X z!~ggH$N%&5&M}6Ytz{zO?kqCjS5=wW-HFKEnc2)(c#N^uT5E|2xf9XzJj*7L#4lTh zzZuVCbB;0I_a$a`SJlsaiRc-RnGq3wED?#w7{lHFzyJRGJP#46>ifQ93^Vh!@H17_ z-Q69({@;K9eV&Jz-}l9DsZZx(?$jk&^$84>|%x*r$c;{3RX2uUEBGG59*WH#dO2Pt1+9H!3q; zWPKR?wbsIi!gs}grTlf&-h6ED*eXsUT+b?hpyZmy!yqCNB2qIWcVZF|5m6sZyua`M zBS}SwsUD696A_z;Vmv7#CgS`SwX*Az)Q`o}^Y)jB zxJ_(eb0>2bY*(4ni58LL;j1dSV>$X-^^=`Q@We#waWPXIxY(;is=C$^QB}vU6n7g# zMO1YW)*26$F~*t`k4r?{Ohw3zb7hDKmKwhBawl>oVZ3y_Zsy_CpFliiiqE%?|GqKs zlIwiJJLdhI+mgb|w)0=|ekiq(@|}1aLSXKTVgLnW>2P zv&J1uZIa_pFf;sYB45jvxiFJRoI6Buf#B=3o$c}QM8p^;p6`W)_v^V0C_k~+-rg@{ zKPY!Mi`P~=R+!D*ZPi}I!c`SjHDCBg!!~$l-2l|i)_$a7P2u0fb0fkIpL5o4dFRBT zhMn1$qM1AP8xDAKW;S;wviNg7u23f;HaF4XWAd?M)wlDGR<6N}4(t@HA0I5YjYve6Evbj=j%U_R(zpl7NmN)kpD9T^ zQD(_)D2!_zU%S7gT6y?5yemArDA1# zowD~|PEObbQL&?x^!6^@%!xct(E5q!4cvXswM(Ep5{PK7#mDulh1l&y}}#&CDyI*9A@GPC&-7K#hnu8W`g`CV@-Y88sg!_4yE zXUBH%euPHNt$LkdwSuoRLsjuF zEpO`UAFtKW7GW+FybO*#84J4_&E3Q^nQ_}-ERx^yKD2BtCSJD8UC6P%iAeRa+%Eld znmZHYli*f#EPdN6BNh`-rriI}82Hb&KgNFkC`yi}(6-+`*Q=MyMOy0~ODeC$!WDQQ zX&%qK)@26+uG4crAG7{`qlh;fWAw#c712)A-S|edcQC;WscX=zPYvY?s)9xw#?kw%!$n0&0SrYT?jxG zkuj4H5j&CP{|S+0A7z1Ew!iu&Ia+oi&-Jzw&^VBp|K{a;i>YsS_t2V8CBs|n}6Rrb&=u; zTz7TeGqrf}2h|Pl2fRiJG{=p8uJ&v&uw&i%>{#+oklj_cv;Tcx-0En5SM3w=_x)>2 znR(g5H9%x@E?a9YTWb+hz@X$TPn~UM&cY(>+=9yPDy}F93XDdQvL^|gO6?Uz1b{AF=Sm!JJ(Q|sMLwpTEfg^ zEY2)K!XgFc;*?m+Sa{A?b(j-5O=A`|BOS_YYp%gEM2T3GIhz(VtXOcwJmH~C@I1r98e*S*`KQh$FS!6uVTb-}RYNs57;CLaXF_d!y z4INITm@!e+^bMw{mZH$KeKY3!7LTEZnZ|g?y|+-zq&_@q*Ii2GnbPaWI42ZMArX1> zzNoqTwHPIk2s2}LR&7l|`!SW0{TrPe$g-+3lZbZM6kj*6dDXhRap{|rpgZ>{G&M`L zI{#FKXg`7aAvkyNInm|gZ-iOLSaTKZBQeRJla1K z{w40ix#qBebI{C)q=rOmEm2u+I9umhH7do=boZgExNWns6#R75SX}!dzby{bT@*5_ zDxk1hpdIc6evcYp*>Z~y`aA;On(tD>nX>7W4)S~hDScj3rHQ#S$(+lH=A4PJ zqg+HK!hIC|JY#Qx7;2CRFQbHjj9G}C1#p|X8LTdXTpfY z3KN?ELd$#r64l>-*Vgsq`-rW#%X_y}*Km&2V!};Pp;^?cInW>@QogI5*k*N%_0my@ z*$EF?h=>K-o0%HsLno})o66lc*R>zB&n%<@xoZEbiBVut^ zwLkk!?W0$eJ3gGq}2~nM^C{FSmF;qS{LE@K~36lrn zQ%Drb3Oog~Ji6;J8hOxiAH4AZ8R!$FYchF~MwL(F~ZK zoJDZJ3Bd$GOtGu z^siw!hO0WdUthNRBD37h`_FCL&rzK70Aj?wC?b|^9uAS1IuT(K&@oaGu^ixVo0(piwTN(j z@nY;HKV@M-k{gk6QdrDzJLh#uyqK5?010}1b2s!1%o}{|=PNT09%GEN1Oj#?*GA_o znc8tko>UBB zo=DqEbqr&GAw%#6Sv2o_2E(dAvpO$(tGYR4?rSYo!JoWxn6+_6KhALA(~|8(=K}QG zCYQ(_j&%U^YQy%3I{zhTwieS*YyBt_yReuWUW3Q{!By0N6h&zg`!7g-%nE=VsF$j( z*$Xy|`-Ox$vxCUZSe0}Bcx~E13la;DuhW)6*50yl7h&8nmOR?{Rrp1!!AZeO7a6Et zP)skgV(o3uAwLVprQZ(JzWH&Cu`{{VjJ%Qd7^k_L7wXlIWIQMlnbTHl zg~w2?$|`sM?&{is()qJjm0vqtguj_lnl&;0%@}HSVG?p(p`t=&C?v>TRGD(8sYZ30 zeBZ#8g@p<0WCJ+dFVf-;iIYq1?Vyk`YR6!lxCON!&k;I*N}V9ZbRgzsHdLeG5g7vz z>I5wDJdZn>kyum?SUTJ$-`qx9Qir!k+d*p?mML(00L&taKbzV^obMC{iJyrU{ts7; zDviM+F5)?X^)bf#E*+2P!$G{Awx+w0n{WUJO!j{Mbu%E=bFRj9*~7x3!4VM)Q=pTq z%EUg#p8-~#u&U@#P-_4D3}zQ`{QBqTVG)U6Iz*IN!MkBnq7G$JP4xk>gQVW6ysC;- z@jMUi%sjn<4~5Pim9Ve~OUeMWwgHfS5gB7EAMj08anyNTzlC*PK+yZnEFPzM_E+vi z^u8ZeR%Txk?x5spu=A_5v(Ym5OURg6N(74GBL)TMG+;pWwxUDAa1U@8g>~!0@R2KKi?b%cv^6$JDUL)C-+$$%&t!o z^Uir@pgvi2-jyp+OxCpZ{#CkQOcAv?ni5-UEzU8Sc}gxAo7{+`I;>^J%xjs*u-|G4 zNnoV@U58(j2$HpYE3wSHxMyowAF>vsVdgk5%F|^_7B1}~|Fv?6dcE2&+lv4~B{NdK z5M*-~I(oK%T+HxP`bVwt|K~H^f_xUE{RATM73!v{KD*AW;Bln(<*L(q-Crl#p@jfl zfXU5CgXQ1JJJ zP&L1`9d5QPK#VvVgOGC(E*pZx`4kfGN1fUs%K%Irkd@bBbxRt(`Jx1^objGxov|-j z-^7YAXAp5chpJ)l@h}+CEMsy@FZz;X z?SX88{j|qtmXe0z+c#vQ(3yB$D&kVZ5a(qWIgJZTDTJ}O{{5=0o|R8-I)p1lr9^v# zmj*RMv7Nm!YjWM9;+Iau@8?IYiGJ)sI%Lead0DcUCRw)34VPxMH;J)&TSHuSlcT}rXO zkv7KKQ~`N*vf0v8G_yh281hK%SY}q`8q<$!|Uh;wYToNK6vRI$9{dO4ra7B zyPxbD!#*o640O3mOgOo9jIyU9feH%x0m&OFzA{jte*1`U4Ag>2;#G6^;aqRIg2n2^ zw{bV$Fij1Kvi06?@#~09R>HxkD`Cf%(99@*U<_Ommk#E|X6fS6cG8?PvoNt&5kud4@`)L*{<%35Lh743ou+isLC&uHjS5`&}Do$IAW z!vsIaDHh_v&d1nDKwfgP)=XI%H=cb; zY^}4pdsSBB{S99B8$9b4KZ(m<1ZErn&g>v1F%fh0*4J2oF=B8L9g*POvZLjhSZ+BqIJvtlmALo{k*^=Louajl11@xi=<-+Pg97OYp zCXk0`hh8Jk8VuK4$11Pa+!1$NaBHRhAhZU~PRosnOM=c_j^qHFJ^IJoLEr4+t)Syw ziE?}1JOw|PbYg6S!+xQ>$Rlt?wzn5#+E4+c>lC|uIY z=yyX28>m;zI#qplk6sFgk{orDj{5L`l3>-*X>Fy7?$pL=xGoO>Z(^+eRO^pEdsKSg z>E^^ig@^}eKA^aLM)2u6%u+FWed2b0-?>(*s)b{u+BBaDNZlnF#EM*Zi+fjj17TfDdQDg_1{-fq z>gb-N>jA`#vHe)Uv+JU44_4hUdB_4MkedI9NKv5#ax^Mmjy9za&Fn6a zMA)pIQ(H-_1{#s%n3agg^?(0=_&{7BQ4H@`a;k-C zP99fg_B>D49%5cS728@C^Q<@%KcCOg0Z;`TQcIFjFZ_Zfl@}%_#P4k(;$6-;o#+|E z%%I$Z%%F~N^fvGN{yYyJ`*?oL4q&>=-$wi>t#{n_-gSSf>Su-Qn6s!NB5j)|j)oPh zWX_2nTi|9M6KuXOfl{H3XEYXCpz+%A7)>@j%hrfS6L&roFx$JqKWh;zeWX3n}=I?UdIj51t?h2!Q9ID}>m0MyhYNLsZx`PL$ z8b>(RpQ_a13@%!zMpWGokE0Z1@!!9HODs0$EJ`d^*f&jj&gm(uh$2QXE~G4>nR(>7 zBXeS`Mwi6#Lhgmx!xu%OAIJR>PvGJ#ZD2}OhYlNira?qvV&o-GNCFZk^Q}!`vTP1% zyziE5i<6SETh}i}Kml_3X5+;PF3iN?xga8g0HLs`Qk#h3VXXLx)cAr%L^=jOEsF0f zA>5puIgQ!43lT*JSrp*$eefHS&gv_8WOcn>+=o(vZ{{G-Kz9o~&T15LHI$txN!~|( z+aBhdY*$!YH&@!fq09UWZT*sE7GH={T*}F+qNJu-`lB=*eF$q(6T=<&?|4xkVra@W z$WsYmwo(fLS<#%c7HB~rmrA|vnQHu60mY3y(3+`&;kf?LjYT0#k z+cE(ELga;A(+1XYMvO7YasMmm0wFb*QR?-0CroZO{7~-(h=^(#MV_ryWEkHFq_slQ zVPg>c&ddwG^-H`H_ z^-xk;9u8=QrX99Oc`ixS(_z$QMGnj5wR@f37Pk(VKzi-QUIOzvr@qGykE*D<#y%b0 zwKK!%bSSHV5pi}b{JyI=g;Qi|p@{HScqZ z4aMDu4x-iO1`?v16g^t5KQnU=5GV@P0_S`m0DbOVRz7lGxScV3y^;n6goeg^Tejd+ zq8Q!iazGj4)AnHQZpZ5cqVJn0p5SF8RbFe%{+ndJ;PdW*1!|I1D2i5K_2m z0?>udc?v}9hhOuR(ietf!g9DzZUM@nJaqTnrSu1$MrKWZ>1=LvvNKR2=cd{i29`?V z=5@Q4qH-TnvBpbB)jbMwm<>O|3wp;7XQ#DnnFY*b3tyrbqfF#vWWivMH6;0hhTyCv2e+mpZG=Rz^Cd(W$Z z#|Xu9f@_JEB+LbRKCLDAGt3VyL~B65tBXGFjj2M}n+20OS{Lj+tk+Vb_Tz&sdR&nI zBymI3+14m-z(9%x-9dWHtVD8@{u%Le^5EjwcOS+qAffRgJL3&IXsne(w#&2LQ*Tk z!6Ikr9qKU(OsaQzK?aUkRAe)ob1Oj)8ri9~#<6qNR9D4SWwEl*>6M$BX-jEvuT4d!ySb0kno3R`jMs%+N}ZD$&S{_~Jbxo%(W*#G*~h}NpgB28Cfr@SuBtEW#gMbpYIfh3 z928dGo`RA-#F*#>_qGrQV0*pTxV1m9nh@>2eCWwUoW}s0{27DG>)eQqJw*2ofu@5% z$|5R2pkuruI(_Dq?PXp^{tMl&F$hr2SrjqMIEiX<2XpW`vsd2r0S=}(wS?mTwe(Md z4J|WeF08g4u_vo7#MX4J*Iv7onzk?TYu!`qYDRa^y{Nve&H6q0JP)|bLhaEqA2Lwx8O$W44klhSD8h$ke^<} z?pDwV{-GMRSxEYXFT-#e33AK(&N0S2jfvoSy$gWUWUV<#A^3QcT>cmB^DqJ8{(fE} zvSl=gNXfzNp_C@-oJ(~OvlGjZWj>xC7!RUpE*t^ahc4dD&rX}&}AD7uNec&_!!~G6Il%JsQn&%L9}9Ki)sT}uoth1p2?rff$&<~3grQl-x|!_pAgkrNR^i?i67_3yu*F~+hrRH_Vq0c)fp^sM~HYO1J9HtB#}gIUVVOn}mAO79JbHM95SURMBr z?L?t0ukEt90d7~me{^VhI2r$1@4hM-&T_L{dxOiqapJTWH!CW&w-HZ)x%lnJf!90| zx$M@e0L5e^KPMO#Mc?(N=QXn+A*D$H2P=cfrEXnsoTb$`zSi{C%{{!t!H4fi6&^U7 zb@xJ1(x{7y8WF}6%^3+yRrYD$B*hLvHviq^)uw4Shl<51CqKR&%%jIpfjzdn2kTCR zKY!O{4AZ3`P4c#F+Oo>saNNZyZ1*Y;K1UVZTyj^Fb%j?UNCA3Ob_A+Tivxkt7G|FE93#WUHrqQ$8XI6K2dt5q9^*=o!WS_#4=tA9~rs$pT>2nAMfY-4@vP%#6KOLpMvcmo?T3)hEwAaAf2pwBKoli!y~O-m)*0Uew}%>elCI) zL{x@gVyXi2pzc~ZLHD>8nY0O-Y7-xVoAye)Eoe~GyZQ|0$IJt-&#;OwP3KUI&wp9s zuT{2itpy(FrHA`jEk>9HNcI{sMj0llQtYGc9 zQ+-+6K5;g5lwg(5B$U!mRwhl-ZDX2rCni-e%Fu1;9#9fh8P+Y2PI=aLh`C(aFRzeJ z@xY;ppE<5e+*(s5O&M&NixC$z`6jzMpYr)?9(K#p$180Be30I9gzlFVCMXFQ6i_1o ztDryb6Z^g(w$pt1;}*!>IB>yns?u%`h7Z!jh01&D5ac>mv-z{eS&!%0PN9@xFtfN3 z3%U7XdcwSWLnT>Z7bW5sgt}<672nf)fX-$=HoSBVdHnoGTV)L=O&NB^KAaMwPv8V*lYPp%PP=9%AadEG+HUM<0B~LwE~jtRnC`do(+8X5!^#76cMOU?y{!=F!6q zT-tSDuBVb0*26Db?4B@EM=5Hy=Gzw>a#AX*vObKf*45Uk?#@omT$EuV@YU>HPyq(} zcrG?Sii@GUQgRk17)HJ8{njCt0U_uh-HoE;J8Q)-yLZMobe<7x4p2Wa!Eqw`{QbnZ ze%TlTC_tE=p(6bE@83r?w=rRGCn>;_F+3+P?oc<=^GHMsB(r}bXtdv4;YjYj=F9oc zrY*?Bmk~M7_s!bjnB;=ERuTg{cgih*0_mR=&Y} zKPrU(5ox|J6VGLTbc7l0S|VInjYWb7D~B;GuHcuAMz#4^Zl!;wk&dJ znay2?&VN7p^N_E1zV7t%^Mm0UtVG~5f|WJ~hD)rK@ysoQr{(7^Cd_#Y8MYCM##5v$x6JBHr4^N)&GGZ|lYwGn;C-h-Q#^jV=TpW9P*um0a%ahQ?TA$4Z@y4#Z_0Jg z+>*}g=3gP4Thm?g%G=<-Un5a+t8gbKZLbR10}X_-Bu;Htf7xE>FNx7VBd39+UcQc5sy<%}s>Dce4cpCLeIyR26~uyOEE<2*AujsWY_&%WDf# z0j_1ifPZVU6YAWxz?>`4sg~4Q7G@`w=_--HvwvmRfH&4L@74wNn=e`>VLi=h08Z7F zUPw#a_^)ODanwm>rXgtFPbZIXDpOw4+a~eiy>-e>@6orT*(t5{`*pYFUe&YnB{BO} zCx>NawvMMw&gPN;YK!82Ei?Fh#{^P!AGj?bLLvUf@jrA}?4?lcT1ESuWmWR0y^Kxk zWMYrV0;mbdz@AE9px!C>{{2XjswwLccfHrjT8l*4tdaHlYS_G}IcEe@mrRrPkYTOG z+n*u-fAps8G3bT$q$F!7(}^2bt|Nnmg)KL*6=L5yF^k!Pr(M^e)LbdWOUy1R?5?z< z>g!rdt*|g`_;Yj+D(S0vpr)o3x`*7V5_aT?BU#VPYxWz5MB$8EjMAS3`0Pp(xKrl8 z113_oFUPw7;zYG8=w_<#tjPMkEnqxy%AAeZJj_GEQY(Q$^H<^RjPZpU7f-pP_LLru z2wdtgu84Ss;uL@z0U6C^&@0U#nASViJTF=b9`-e{sv-~5jc*YNvTMFv-+24LN^}Jv zIN-r}MIJ?rSIFOUj5U~QN*xUcg1agesMa3b1* zf5n~4U|y#lrxV%H#kS;>1KAh3{)XDBm6Y`Fb(|%lxlwIIgI}GS8xk0~UT#5cd&uT# z@dCb}8H8g!e@Pkng~(2ZHy%qS#DLQBU*oFpV8#o)|23o`O=j$>e=2g2cYJUj0D!b= zw8?!ATIE5U>o8s?n?yY46jjXQSmk}+r_Gy>kcF=Q6=AZH-u3I-EV&pIhL9pCH)B}t za#&n-W04|a^ujtUT(IFX!SeFMI!@C#9rg*@;m)haxMuLj59Bn->P|k013d0>Z&pRV z&+JX*@D4Fmp$PQJTB7}q?J;BIJmg;!`s}PN%k&@&9XybzP0VFh7F9(mBaa{;JCUtf zolY}HWY{xH+-z`MrcL#2kxKZRQEnPzTC3>7o(v%Ycc6>0C!#{ z5lwp__l|@F3to(dmDMJa{6`otpV^AkQ&INa!j+C}+bfAcNl15=$gJtos}+VNIZg@u zqi%R9g+n3rB2^}>FWcErw~c($=UYr`bu5O}*oE|4K$WMR!FBnHaKxw`znCgu0f+H& z*Q6fw%ZFJIav6~(9HJ_$DpCBVp{g)GK_jKlF!O?O+K6LZdk}RH07Jo!~7#M28}Ji(?k(S&}Fbx$X4tKqH`XOxqqJ2MXNU?qKT_Qn2Piz%V>3fOI2*n#jf& zcoWJzX4-w3yQ!kGA)+!J=+?rmJ~p!uvKKvxkzlr z4_8)qAJ325B--aoPnA@C%;=q;F_5-PeaLvtD?xLwVP}1w=NaxZ3od6cPl0?8kq-C8 ztf=$@fiU`fX8z=e^?mqRyp}D=A}2hLJI9t86XH4NlVa58dBBseY+xo|^CRqLE9NI- z_%xUzyzlEmDy$L&dvFAe;|^7ojKx_fAF|zbBILI4T84S{TCS?*Ch`!`S~MqYHE1nT z75D4`yyf*=)|_#YB^*O%Za^oxc(?FPwv5EgOTuciGJl{!F8&~SqE>~;< z@}S0ZQ+nFMkT8ZpBcMVx*86Qx z*sFGHhRgV<*yuTlvgQC2~JT_i%BahCKYB&vP%iSg{{=RVL_fX4T~sNx!j4GoqhAYhR0Wu z={Bb9^a;Y$M|e#?>(LE?(#~0OYGJbZk}|Oj&hCAn!;uVUZqT#W5l~R$)jPH?dF0uo zgBop0`Z>-E;afo&)mGM6F%Q2mv1y@zooIA1(&{OH+o7TA1_H07ek7#V%*(G8+)>oh zk#yZ~@Q@EH0P6h5VrWKC7Kmzb-lyL+1sZ6J3ZF4UlpK0X+=@X z&-VJ9+dv$HUbI*ZlgsSf2A?1**NAeil{~_B)i()ZnI>1hPC>HOGtnE8vxqdu8bqqWxtbD@4|h|8h`}2LD}O zuvsx}prdVd|8`0EEwqA(!+Sox_e@xpo4Amey*|>ByU~uMo_>cd(lOA+ z7~{*&&gqIYl^%2#emNYmYvp?KZAs?8lsiWa&CHgCmNy9~Ijy;lX}vi)q3~L62x#Or zLrq0A+2&exZ%Q_4xC6{XfVpf9h|wdzW-pthPv3GPW*W!wzsZch*8|<^?_$hu)1vOO zpD1tL)Iw~wZu6$FEU)7AKYj7(4z1<7I4{j;t>8^KgTphkF%OXDMMlfDZdUi3U3`Te zl*pko&d(qZAy`ywx)c$ZD)F8}HDAxO)49222`7;WICz@636^-c#6u;+;1@L#f7=h_ z+2>GnB}g%P%#3L5s3O9DYkJXBeS4f+W>$)4Fk&)0gA*&i2o$u_(5cho>0{y+1jFuOt=bJMeQOpn?z)L9P#awmtLARlJZe*mF9tzQ4=rs>HUAvq>4-2 zdtYuuEtKa~{vsUOFJQLvpFC1-a;oMUeNXH@A_QaqhC>gqHN48pS6av1P5!Q4?5}^lhGba7wjq+{V-xb*wB^40~ z&OqAAx}JLzDcW(+SWWoCgUG#E(Q`+Ky0GSoxVxrEM3iYP!uu{V$K{kKN|$b@sTh5q zCBGbUL_9{dW!vmBmwm5NvaVm{O6#}#=N_z9D~z!kY+Ne^qxiF@YlhT9txD0;#I^G& zI+Yb@gb2gAT7#V_O|-t_GJDF4bovQ%KU)x^9aR`~9cGb^ff=x>Z6-xb%N3KHFSqSb zFtcw_P3SNs$LCui-6MgmSwe-pifE`l;e(>O=6rsBV&X6tCZqrS^H1apm@#RMOY8fm zy$4fz=737%(ZAAKZx~7@3NgkbvJgH%f#E9=gDsDD0^}G6@LX#sc8dM{==)BhWfm#6 zK*1{*^j(vP2g`CAIzI3FJdeB2Wh_DtTP0YAw?0` z2+DiGQzH{k%7Yrdi*A#AGO2~xjF|I~LALVz*7?3Xh`^##k#Im0BC%znVm1Y)Ohj|N z%Qw*ulNe#dbSo3%#I=@Dy%wa{n4`%UXyfN=mOhu~JdVZcU1`EUK5MN*5FkB7FGSjqN&8S+dI+n$vKWEX~!Q(Wm_O7mALYfq-4 z7OkGSK)?G3??M7cqeCH?06~NMQoFYRyO`UurLL*>A4FmvPKITK3}bT&mN86{+$>zL zrKUp_wxeHpn+&RmLBw2dKOmms$Le+FgfG(mWms%~T$hb|$ zo16A^>0jXs-RwIIiIQqtofCfQTB~@b3G&!n-n~6SVrM2Sl}gqew@rm^JHact(Ve*E zg|R3j$Q%JSE62TFPG|CcX(H*@ZI(Ty2cW!QFWB4~}eb50c5s!T3AgqEv}F=Q=YL_^ihC}l=P zniAxNr7C}IHv|8bnp!mH-y#F)s#oC&r!2_(j&I7OEY=b-8*UyxWBq|-noi8`IL&M# z8l>iJ5mg%=qRg}l&}+q?^Qm193Xx~lDpCDnWVdWtZ;` zeTnlIEwQUIYQ=YTQsm7H>9uT`#z`_G2u7A7o`#2EqwB;`sGpd?FW`NE4D8#E#@x(} zondE*mox?~^Izk%YFr$#V=0@MDQMzGdO_5ZH$!8o+}0Fcbf~wxNPLeGDs;%2!GV?o zO>45v{)4OXTR2j^^nggyeyjDv&R?IwAs8a3^k~Db1wa{0vKClqnx5XFfid`5TrA*% zF?ynX`FDH=<2E5>SR!zR9F-+Z3L~$n)CJQ6(kvAB_{HvHZ=H_K^Jeh2Aq;)zXXT#? z`NCJ)MN0SU7pUl56Jm4D`ojgaubJ7g z`xbT~5d;cJaQ#(9^@)Ymi`ATj)yOkYk;>t-4d#FgiZH`b2>T0zGoU~>Kjpl#F0k0m zFZNC-wxCSHw^OYOzNAa&7W>>6lEeK`1I^zochHu=SsYERyff)5!*8waw^cXDf%D&o*BMFNC)yEPRht`03z#4>VB>NrILX6gsV7(M0S%pBNV3NWHE24@rU zodTh{r)n^&Wyb#%A8A`cNc*b>`Cym9!>gL(0&j+!y-4o~K^l1mi()1MQ8z~L6ulf? zusx5My?9~i@{p6C4E_0!xoRdZInyrwD zsF)d<#=`1nGgDc-ot)?E)iDSGSDDq&Nqy-9=FBea%&w3j38~0Xn$w=a&)_-T%vEHl zqz}%^6vq??7zIz_X<4hd`}2ʑ}_7JUU%!+g7w>hWL5*gPDl%uOhQPMlmcypV?s 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 PHRGUWLA0R&1K0l#@1IEJ literal 0 HcmV?d00001 diff --git a/img/admin/bg_pslink.png b/img/admin/bg_pslink.png new file mode 100644 index 0000000000000000000000000000000000000000..432bdb734f6fc3d9356c6ece0217268787ce11cf GIT binary patch literal 24905 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 Hu0mjfRW65L literal 0 HcmV?d00001 diff --git a/img/admin/binoculars.png b/img/admin/binoculars.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9de04548df891a7c87fc945c8c21fb9a05ff05 GIT binary patch literal 826 zcmV-A1I7G_P)M%ilt^{mjf*adRS=fr@ivj?EDu7bH*JS9Q z4T_7~)!F~9b^djFa61A3Fjn>_BD-T|1#3h=Km&LUIH%N_o|k*udG67O%c0z=p>O@A zcSd)Ls`AknUw1Aq71k_)H;x|X?6+Uhbe{J=J%tZ}hEwVd&x^e&X3C1w!1%vKexH~d zw)wSc$Ih=C>D(D25n^jdCM>ChC6$O#42Z!z(%biT zx;?`$BSTbH^K`Z)DCOq(`P?^@mUE1a3=>-+HbNX364sK83;|Gus6ErsGWhxtZY|_k zn$I%u%3%t*d0rbl!g8t1_~;K95hAOg0t$-Y1NZ=ub1vz;Cp$aM#%hV;QXa7eF^1bW zuTfZ-2S5-+Au)X46bK3m z#Ma;%jwru)`})ZDXQ(*a`(RI({J7G>ts4u>&KIavtN5C*tJ8G-$GM6Lu|8D{SU#c{h literal 0 HcmV?d00001 diff --git a/img/admin/calendar.png b/img/admin/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..b98c29f4a30e0392bf244543cd37d02c84a07335 GIT binary patch literal 1011 zcmVk000BJNklbL86o#Lfdwp%kNt_hNCXiMUN)!p&ML|N)6|gG^2?^Hh;ST`n3RPmkf(^d`31~}^ zP}v{^Dk@Ej01=@|q)n3u5+`v!>U`L~zB6-J%=JgwZmO_kq|uqVy7Qj*ymQVOB_hHR zMhGys++x1kX0K&%&S4!G=djjconWl%n-*(?@zIEPUp?*tZmqO<{n^1s@_hcnLXSZs zwg40^z5^m)4LA!);@9mMk~YK%Bnbx}{6Mp1dH~jSWDs~_44m;(ObQZ15`$^OtttSC zv3&s6r2q<6Yaq@uan3Wb9Sc+{0JKv8L_|LQwkrG0L_WK^E+QhI|Fk9|B41qd`wQ3o z{_?E1wR%(D{^S=C5eWej>u@530bKlfgCNvgn%y7_;p>|lTw6QO)yocXj!gI=Pd_<8 zJMj#3Cj!{3?CCMCUxBA4C%L<{#M#qh1nL|w z&Wz%$aC@cBvEeL*Y^E22aULzuitql|1YmJ#8HM8exlIxW&Ixx`>x>LWl!kLy+ZTc{ z#%rMAl~X0c;5}YGS>ne(H+kt~iA%FJ7FKpC79z%qIh+#$O^-oheF&#c3{u^0GF8d5 zxVF#4XvANC*O@3naWJAhlJ`slMW+TsfD@%0AAPyNer!mLB{3Fj9Eo)pn>@4@o;g0` zQ}3wdtU2QNA0WNP-KOK9IWt|C7sTCd+vbu-~*)M#4w(JimI-m&$2N z3s&bkT_&A+EXaL=gWfuwHL-FTTUh zx{q7cr%_7LXf#lGX8DXdoJf)ir4^Km5j!m?4CFazG$|J&l$vI=kU>N^Xc?kV6KM62 z5ERsQ+W<5gO%$-X+s37t*oY08P!nbJ;f~bVD4;YPq0|(mp@^-$HjfQORCn4mT81#t zM4?8+JL@v&2r`@xX(g6IHlPt3av9BjGa;9OFwkT(y36#C2Kgx9_Ub{mn4CzO#e#pc h9vs8@@W1Ja{{jv@dJiQ^jn4o8002ovPDHLkV1k}v(C`2N literal 0 HcmV?d00001 diff --git a/img/admin/cart.gif b/img/admin/cart.gif new file mode 100644 index 0000000000000000000000000000000000000000..be9175d6f9cbd54c6c7346cb43c21edbd97e6cc5 GIT binary patch literal 265 zcmZ?wbhEHb6krfwIKse?mX>z(=+UK1m)^T~ucxPH+qP}*-@mV_s=9XV+RT|VfByVg zQc|*a@7{Im)}1+XrlqCj`Sa&frcC+&|9@6i76TDL@h1x-JA)8|4oEG?P6pPt1uA_h zne&_`DL9@saJ^&FB%m>2?VB2XiH;WKh6WZk_hSnhGECT&+zuRAAjLJoO)pWvaB6F+ zuwsFL$l_yH7hL61=w#-6C}F{x(jMUFrK-fj!r#oxt**w!T_eQCDA>@%&(7V}ro<;y jHA9()okv(XjhBy!eKI#^U$;^-qY4iLL;GeWMFwjCH11XL literal 0 HcmV?d00001 diff --git a/img/admin/catalog_xl.png b/img/admin/catalog_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..58778b34a698adbda6474087a31adbe7804f2232 GIT binary patch literal 1419 zcmbVMZA=?=7(WFkVKQHmg)zf&IhH7f_U`)LlWr?_y{$kQD>dRI8Q1oJ6WXiSV=bL= z1kK2RY%FY+@%9O_MqywG7-6t34Rd@^wh|dS-}iTPeL4cQ=N79!IUDJ3dI7xMD#HN3mKiforTRV zrj)g^jI-+FaW)fz;z~GMp;&0iB^C1bDg?g3DvE>=3)X+lc}xL;Z{g#pM|4a!GM*T6;w+`>z|jT6=9( z9u~E-UcORrfcq#(i-AGz_7;*1fj7iyfdiMqR8YL5(#5((Gi5-)7rB#j5|~Pd;kZ_X zX%(18hvP;aX4287EK;vm>S;_ByNcH&|oW*Y6$*pTDY}X(?)9ULLs&ooMJEvDF-G zdltz!aw6dxGFCYCEP2vAB|V7zjP(#Op~uzvmD>{yes+O_uP?! z7vnFD^z0<{%hfh~Ot679EE-k+I?FYlD z_s;b`8GI+T>y9&|Y#F^%^`xi%#>K$!-S|UL@3j3Gx2Wcor literal 0 HcmV?d00001 diff --git a/img/admin/center_btn_filter.png b/img/admin/center_btn_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..f7009ad52d6e4ddf0414425f35a4612571bf641b GIT binary patch literal 267 zcmV+m0rdWfP)MiP{SPx=i{eiu7D-I0$37iG9X+DCtT zZbE$Ay(J;EQY7)%ZDSI<^Dh3C2!=>p31lTmB4s7Wl_OW0z9>sx6i$v-j>l<|#)q;Z zVWik`AMe+YB(ZL)*y?eQFQ=^5^SEQNjICw@HBF)D@2o_9dUF)f|D}s0egVS&jTb!= RiBtdp002ovPDHLkV1fdsYQ+Em literal 0 HcmV?d00001 diff --git a/img/admin/charged_ko.gif b/img/admin/charged_ko.gif new file mode 100644 index 0000000000000000000000000000000000000000..2ed560ec4c62ec88bd5ab52dcaaefa01a7ba1a72 GIT binary patch literal 1006 zcmZ?wbhEHb6krfw_|57kQOzS zvu4eiI}ZrvFIc!>!Ggt$7cW_|WW|aVD_5>uwQAMs)vMR6S+jQS+6@~vY}~kU)22S(0lGCLKL-h1YLJO{b&4F>!gWWl e5R<-lgn&{DhmeX}hsIl{1?*gG$^W@I7_0$EhzKqK literal 0 HcmV?d00001 diff --git a/img/admin/charged_ok.gif b/img/admin/charged_ok.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2d449b1d22017cb14be124184f2ced10afb1345 GIT binary patch literal 997 zcmZ?wbhEHb6krfwXlG#XEm|H{y&UKoX zi<08M+K*b>+S}UNL7)QyIy*W$yMUm(ySt~Sx3{;aw+{&V`}-$?z@&+jCQY6^dCHV2 zQ>RXyK7IPknX_ijnl)$cyt#Ad0m1wQ3l}U{uz2y}B}C&akmoHzxe*MOc8@F!Vx_$fhojZ5#-@pIh!GnhnA3l2Y=<(ynPoF-0_Uzg7=g(if zc=7V(%h#`8|Ni~^&!0d4|Nmzg1tT>C6o0ZXGcfQn=zszMlqVQC4lzh`$arjc;2^CR zb)Z90nXN}mJLG}Fk3(HYyCp&eViH*!j`z#0opU2YwV{ELl~2J#;D8rbla`l|!2+Yk zrfC`pVTMjF924a2s@@cM8nlW^N_A~m!O(J$NlTf1)`m+doRgGY+ITpVma;esg=G{Z zC?zusiA${LQII&~C8FUs%OG$POXpMp7VC(ej7(m={Jv=g3m!E-VAT#@=26N0^rW!1 nB!}07h0gAMr)N|~D4a+<#LOY6;WI(tVI#93Td+6}2ZJ>Ly?OaE literal 0 HcmV?d00001 diff --git a/img/admin/close-white.png b/img/admin/close-white.png new file mode 100644 index 0000000000000000000000000000000000000000..b23fdb88e3641acff0211edb353863d84dd507df GIT binary patch literal 3286 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 yK0ClME literal 0 HcmV?d00001 diff --git a/img/admin/cms.gif b/img/admin/cms.gif new file mode 100644 index 0000000000000000000000000000000000000000..176c99a23f6d8391aa7f0629805dde422eeefaa1 GIT binary patch literal 1026 zcmZ?wbhEHb6krfw_|5Zb7=dSLpv@U*>>f`uIC53 z-(73`d3?&xlM^3bTKoRenkSbxe!INx!=)`BA8q{bc-POzn~onpe(KnfGsg~`J$~@? z>CUSu@dqsemBSV>Nkhb4}ekAst$vC6)liHVDgO^G)qMxcvBKz{=B yM3eS*CPuCqycNtWEHQnvganj1*w}c4+c)qr@Ea)!H}EOdXen{C1npO3um%7GB3L{C literal 0 HcmV?d00001 diff --git a/img/admin/color.png b/img/admin/color.png new file mode 100644 index 0000000000000000000000000000000000000000..35eefe489b9f1931a15e3612aa88984232b6baa0 GIT binary patch literal 839 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 Hu0mjf$^yWL literal 0 HcmV?d00001 diff --git a/img/admin/commercial.gif b/img/admin/commercial.gif new file mode 100644 index 0000000000000000000000000000000000000000..716701beed3f32f53a9e958101d5c3302c6c502d GIT binary patch literal 1017 zcmZ?wbhEHb6krfw_|5!8sYuAah+~~GyFnl2S&{g zi&+p6yD&1L%RQ~nzj#Jm;^Nrsg>h-i5>wYCY5!DwL2^8cUIN!s%}`E-?%!leP=@Zu7vJgNxi#LdiJFD z?@909oz<|rx^Z`H%ij9t19dG2>RJ!hw{CB0-qFyyuc3W^)5Nt6Q#Q0r-_+iEu%Z26 zQ~RN&&I2u72V1)iwRRtB>p9%scci2LXxF4;J(G_2PCn5$^yd7H zmnUqxG7qoLja0!jk2;7OuOrdd00pD{n7eb!YMVJF7NcUAN)x zsttEnZ@jm9)4esD@2}l*fBo)z+qXT~u{B-_HLhpjRJ~-n&k^x zGAs%@M69!3$Xs+V^q69mwXI}=^Ajc~1;1AuFDE|r61Ol^5jb;k3EzCX)QmkX7aJDv zsFk#QsoeDZxU?{@496K^XHHoY(^GGDeq6@FY^!|iPxC~VzM0x#X+H{_lbl#MIC=gg zD>r+|@P+Q!BALkODq*89Fz1HUqLb3PxlSP!4_JHVi|Miav2JcVPmM59*T*EB5*JyCN)Kk#>As1Njz}zV&c&&;b7X6m!=-P z2wV_NNl74t#KenB8(T^=AYefPwY%MQmwxlk%B9eOV5fMZL=NuyPt@$s4rKP2!_kOliDt$OOI7B7_F`@vfl*=U+7S5ACD|vBo zamsr?Tdh|23=a?U`>nfp?}<@~8X+nnMzSm;U0q$xLI?vP1ibe=mg&8x(P%s^nT?GG zF-9ieI*N0SG=wlvtGz_Cxe0)xsDi4Zy?_W*%0<3E_Z{Q=UL(Yas`eC!2+igupU>6- zgE3%w7p9MPtHsGr4&a>QYW*id2)y{t`#lBTdlbbOL%FgGYc0lFY#+v2+N~BEB74J+ zjE-8?!x-A{ffW&=f-#mPNuGf1zX04h$HYX1mnV<&LSc#Upx#p;{qY!UNYZrscVjKq z7>u!*o6kmCl z&|P6iwZ>LhWA_{5Om1H35!im6?N*B$zy5nK_Erl>;}$kq$Jh=7g>~5K(z(CYBgo}a zP8@rc5F;XB!?nan4op z`TXcExyBI7y8Gw{M%@KWXtO-uC6{$bj3GVv8Tap8XyfM zZ|{Bc@q2Ff^4%BS%-MWx_rVKirbetxS8bWrf9b^fKMxKcneK7z$%*G2ZaDj~ zYsK}b)|1zFmbNEo{X9N-Z>RVFPY=HT{PXU{hCOYrf4?1kzPD^;hm&u|;U{mtE?GGH z{M_`fPdB)h9=v|#LVV4t8&f@>@9)}n{m0e_CooMnZXPc z1I3>#jO+}S3_2i_KykvrzO%uyskx=KtW>_;vIJHH8A)04ps6!A|k75 zXP05%X>?ZRg0EI08ztW5Q{;}9@oLSqLXKbJs2g2I7@W-i?-iwhqTk93Ns#?_4Oe;pVT6ySOten-xUgWB^|R04u-7oax_VqP>>tFRFSEDf%iqd UxORD&0G5U=36AW-OiT>c0Gtq)7XSbN literal 0 HcmV?d00001 diff --git a/img/admin/coupon.gif b/img/admin/coupon.gif new file mode 100644 index 0000000000000000000000000000000000000000..f61d4f7bdab8288fd16b0c267ac486bbac973683 GIT binary patch literal 248 zcmZ?wbhEHb6krfwIKsfNe*OBVPoK7){k!ww-!o^2>({TpfB*j4o8L!{9GQLXf6tlkTeohVdgVV5bf5pf_uhX7+(7Xs3nM#&2!jqt z3CKpT?es7y z=k-cdoZ+)fq)qgy0*gkU9t%^N$E@DtmbQ`MY!A&N`@+JNSo6YpIg6P@x!9U?TZ)An cs|Hq)$ literal 0 HcmV?d00001 diff --git a/img/admin/customer_xl.png b/img/admin/customer_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc1ba4e29331e1908998fa720097239c84ce495 GIT binary patch literal 1583 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nA0*tB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsddm{=GX z8k(CJm>U_GSr{5RS{S%mxVbtxTUr`hx*3?j%)qAC%-Pk=#Ms!v)xgEs(9p%r(Z$Ua zsLj>I(#gWn*w_iC*E6rUBrz{J6=rWH&|ausbG&-3oQqNuOY)0C^7C_GDIg#tza+mn zBfmhwIoMReH!(Rg55xyW55%`FsYRJ(sVQzn`MC<<@U_asV!x%Ev6HKXg_)5B#NU=? z&SuUQjt0)AZWeBCF0M*Yy(#2`nLf}l`k=&tlvrRwz!V5#!jnFb1J69EdB7Y~1k4)2 z|7RWnW~+n%pAgr#Z{P0NvE$I8Lkkx!ym#;3r%#{e&6_uC)~pvVUR=0v;q&Lu4<0;t z_3G8>)2ELeJGO4!x(ypPT)upH%a$#>cke!V^5oK`OP@S>GI{dk6)RRupFaKe?c3Y7 zZTs@&%hs)1SFT(MG|eTya4*m#Ar-gQT)y4+Sb>Kv zfupfyPL2nM3Cs7t_lsmMm4zE?zdiedtJD9(ZKjWZ{5#`WtoLv)uWwQ=E4NLm&t3CK zI-^-%Zlef~sLe0=1>)9bPP@5EeiSy%{Nfjxy;_1J^VApFoHEaZw^fZRxxdTSGo~(b ze6`4H&tlHWKiGsOh&nL^{m+s9w9+!~!h@^74}M>KIqKJ;1(gnse)kk?gjQM@H$2N& z*kt+hP3BIKWoY3Prkp*$k&X+-~>bHss$~jXL-(; zyisXCs1;bS&G%!2sE5&9E}lCtgx(}4yTqL@{wDdfmMJINnP=CHz^;odfqy>lJRn_R zao(_y&EvLRRg+4JgTkMNFKZNca+~vP5)sM{YMbS@Zykrt3a*5g)nCLJTq@_ilMR|V z;T5Oau>i)j^RxNhX>X8~ZRc@+&9we`0OQ(ESC=g>me}cQ%4@s!@Btgsy$-o3qh_by$!w70kS{rmS-RaIxsoJmVd`~Uy{)~#Eo zOqufR*|VcZkADCD{o1u_fq{W**RCxtE}l7aW@~G!r>AFlczAYpHUkcz_>+Z^oq>}< z2P6-&lYw*^fRH%#4wFb0FB>f=7j|)TPp&pM{BsjZs*H zQII3ukH0a4m%D&PfTxy~)s2gZOGHGFN!W;$mw7ca+p<7mCNUc~R$&2lZZ=*~Ax9fA J23-HPoF=3{_^F^*RNl{ef#$P`}ZF|e*FCT z^VhFmzkmP!^XJdszkmPz`}hCBtk z1+$rHm&JNa%W~>FjxZs2;X|n literal 0 HcmV?d00001 diff --git a/img/admin/date.png b/img/admin/date.png new file mode 100644 index 0000000000000000000000000000000000000000..62df31c9366c8ee7bf7cab7c579e31edd7e8baf7 GIT binary patch literal 622 zcmV-!0+IcRP)`FCspBaR&gRzcP<|32mwU(YIn!(Hs3o4|=A0pk5vKoy(?abQez zFPFfSp=7`qe%~0z7*|^*u;qio-V}(9LhYtV2}}uW89pxoV63Zn;GApG>l;QNj;yGvYTw&sRaJfbE~=l5MfKo#l=H<6y>xF%RW%|o zP7qbX0Q$#P2?C#i@m0bAo=vVYx^kO0gMx}sGu^|{>@LbCBJj6bP#_FEx=*DEeYnt> zrpAZ!9cg?opta>Nz8`SzWF{J|m5K+(2`Ui!@M1d8WZ^CoLyD>rzQ2y|d(6$}2>gJj z6DwpBK1#KK6;zd)0J_>!j19q|0|)t*o2RQiMd00}v$Yv<%FIHMJ&m=*Yr{$lRwA{) z_jvW80Ki->hlj`T#{xz`M44SI($o+m*;uzdxe&lw8+qWv*<(q<;2LMzlDz&@;B;G( zf$=nF}{2+l1)IOAx65XJ|Yb~ zL{zFil8*L1nmJK+5;xXitixHsIKevm&s|vi_2)T&x6^h03nM~WjXfRfZ~y=R07*qo IM6N<$f=FW*$p8QV literal 0 HcmV?d00001 diff --git a/img/admin/delete.gif b/img/admin/delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..20874bb3814eafc0ca3eeba507a18642cbf0f856 GIT binary patch literal 992 zcmV<610VcHNk%w1VGsZi0Ow}_000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;B04x9i000mG5C8xOr~v;7 z97wRB!GEk+&9Ze%*D6&9T@`yaY7{D1&x)}!*oxb?QQyAZ`o?Wz!BFnnnF|-rTswE6 z3??$=3|+l?=$x4%WYCeUN`m(28Ptf>AerDoYWrr)lr2978=d=h?AtVGl4|9VIkoDv zX^m*nF=(h9Rjbnw#d>2A$L}@A3J?n>TMxPEI~@ z8L9Ky+U{zCh92BX{H(G}s;ZJJ7!3_IjQIJ@1Z36Kot#uu82&S~ qanyWt65wFv)3KPaAmM^zTa%Q5&jEuY3Y}a!=Wdqvq=*EHO-5 zX_~Xnxok^Wc#BijA=ic@p6w@mdQS&TJ{LUmLiOgm{VJl9)FkGana#AcT&t@)-zt7> zsacDA!D46U#f}Nv>Rf)Zu>EIX_{+}zkAvfRfYH+slP5Vo&kIBTB_#aI$oOAhzq{FM ze|x~;?$8tc(Pt(n9-m))VS4(N**O=MW?f!Ua&>Ll?G<&`H&)Nu{czF#M;nem+?Q8{&UKBOjyv>#KFEw zB9MulSIRi)K*hsFt{js8#ispmPd+K6>N!clGUU~Ts?lvqq>7X{vmb>Isllnm+Wv|(CbF01{Xkf4g0LAm(DgXcg literal 0 HcmV?d00001 diff --git a/img/admin/details.gif b/img/admin/details.gif new file mode 100644 index 0000000000000000000000000000000000000000..95eaaa9a3803cfdad82f16928d8195f2f3afd937 GIT binary patch literal 954 zcmZ?wbhEHb6krfwXlG#fr|@t`yZ_Ek|2=&X$EPKonVUUr(bj#dCePe@bMBr8tB>AV zeBjCQgAbM+e!A-Dv#nYZy>$&gSFTCD!8q`RUv5j^6uv^6sZo55Apy{NviwueYCnz5nLNvuDrVzkmPk^N;V}zyJULpJ5b? zhQL6FfZ|UUW{?|nKm;gHFmOy~U}QMqupz;bmq|FyqH)neXAyM+g%FO9Ek}h^Jr*b^ zPF!@fUqZV~CgS7cP9c6{jx!%NC>`t32$_^qX}H8^ny$Hq$At$6J7?=EdI%UEYG&bZ zkhkLaxX`&>fM=4GkHMjrECSq1%yI;hn!*J*wk*2wfU)H!2b;#4oXn*O?js literal 0 HcmV?d00001 diff --git a/img/admin/disabled.gif b/img/admin/disabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b47cbe5eddb96a353550822667fba6a19218ada GIT binary patch literal 960 zcmb`GT}V@57{~wTxVbYmIr%2JooQ3V5?rjLuriq|bDB`%M`ep#X&;!m{0PB}ZRQt? zT8ENB2CJ*+BD^pf)Wr-d35(H%P*_OC=nLy2Y>Mmc-O6t2vX|$a^S;mX{GP9uQ(Cs8 zV3SRRh<@N*c24;A$b7@mxw4&+H*aZ2=faDZpYk`%?c2Zb^cn4Td?~SnA3mflt>FXp z->Yk93ybLNY$(qVwjKU{{=(v`*R-jbc6HOLT6(JOYiaq9P>9wYSiI~1kiU^0IWk+k zEiyIrtzsAL8(e5=o~z#TajlU$dqcUobaIl`?8X0BvLaPhWDwmM9@#{D4B&~z6q&&# z5kw=h3`8??=>uei$vXwvlq;Kb;02PdC%W(wI~imBG1jxh)<;>b@n5W+q+5t)+6~A& z4^+BS{cP|4EE3HqkVd3%l;QNj<@eVW!xK;7A*0{!vW^pg2J!Hn-($W}3cWRD*=__>v22J)+;3fjD+v zWko<>UlsHDEhd1;pQU19#NG*H&MO!&guJLF`cFW(27_8>8L1yz7O!p>Do0G*xj1!& zXmSPue8P$bhb6!bCMNSqlXlyhe@h5VDE}3hMP)F7>i-+Z3mlYpPjnl+PaE8CFh=;op*lL z%g-;S9GTpGq;1oUHA^nc={?@H=kE5k*OoUQsGWMczjSx;)YFqrK0e-dxar!nb4$-H zs@qq2^#0+UH+Q`L`fBO5rNw)*@4dhF|Nnmm+5p9$ER5_7N(?$6<3WC6U~6`mSTG|{ zL+S96PY(+urUW!C%Dkwv!0DXxp{X_+{A(PA7DTXdF{@ZDt#Fyw|8(t_9??c_S?x_4 zc5EWNyfQU%%)HDZnJqO=l2XDVBEkW3V(iYG5^Nk^+`J;p66`Y40s^e1yaH@uyb>#< fIU{7HdD+;6IhgvCq?wsT_c^gMFz^I8GFSru9^G*O literal 0 HcmV?d00001 diff --git a/img/admin/down-white.gif b/img/admin/down-white.gif new file mode 100755 index 0000000000000000000000000000000000000000..b969607d301a460e54a614fcbf70961a3eb293e3 GIT binary patch literal 75 zcmZ?wbhEHbu$1B2o}LFb~>#FEq$h4Rdj31pDc`A42%pq dKm|a>oD2+1ygmJu2kt(c*XbG7TCBlf4FC*l6x9F# literal 0 HcmV?d00001 diff --git a/img/admin/down.gif b/img/admin/down.gif new file mode 100644 index 0000000000000000000000000000000000000000..f806d853498198d5e9d06f7f7e89fd794892d46a GIT binary patch literal 63 zcmZ?wbhEHbh0}nGW-}}rtXE-tdGT|B$Pzh+dFf1@Y83|ccpyD_#RVtM# z<#HMA5Z=S>cDtG-l0ZY@TrLNeWox9y@V>Ec_b2v-Uam%YKLY*qP_$K&-3D3NJ8{2pelAA*Rg$Xf;q4Z)2*(% zfI<>ffhB0f&CeCCzZmGf^SuiwOsx7B;rl!T^X`Jtr^l#vWTU6Q;CMQQ*}n{X(2Dan zCtR-%>;MJPw4_vI89MZIKXaE2J M07*qoM6N<$g6g}*^Z)<= literal 0 HcmV?d00001 diff --git a/img/admin/duplicate.gif b/img/admin/duplicate.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec5dc73f456a109fd87fc968c35a05bf047035b0 GIT binary patch literal 1004 zcmd5*i%XMH6hHgEPn!>F@hPdF+RUP&f-EC7qq$@)hz!#b8MZYowbHRoSxw5hEw!!3 zzH*6=TB#J1q;iw3X}%^JO`PGA7MY|e*~5Y;G1kSuqQkw1!#U^oJHLCm_t0TpT)c<{ zEGP#^)W)_>Hdfjd<6qwtSTeF|(`&koUa!|NYFFCDnnA_DyWYA9gSJib>H7@-M$%bx z>RneQ{qnMTq_)J7Q`mL7Y2bdxv~_ZRIHj6X>XO?=T8f&_7+sn(4>LWB6WUiwSzG4k zpL2@#3%VCY?H{d;Z)>VL%dWfBN%}p5Q~gatRb`e7sZ~c_cv>VKS>pR?(_cOqN3Ug@ z(=2ZvwY+b-*q8t9*Mf7d^Yv_x^pL#xHD?~wB@{bO8Jt&){Tlt4M&G9t z)}M5G>{CBHW8cOqhf4HT*@^mO*^_hd|C$Ae1po&4Ac>pN{_By_L@-T6f^Ih%T1Q6k z$#9Qh9>@p@0Fw+~pt;z(8YUU$qzO*-7|`5)ntO8v2vEuZzyS7>VcA>|prk)AX^sG} zFci}aCGsmg(hz`CP#}O9IY|F{0I?yUj-db$B|tL5vLRgpDFu*o9Cj2zp%|ppYFiEz z%RpKPc?e5V+jWQ&L*sDWst^=!IN>HKLV!vUd?c90nCKy)1~ivuIKp^rfIuVw8A)Xz zPeV1us35~P(h#K!VA8OkV%%C;cPPK7NDL}bem2xu8d8Tmg&iX!k>`_?8(=NEv(T$< zltHKD9X`Yo#m@pun+T1Qt>X&2rQl6^ZI;*AJ?ij^?aBeg;6z=oq)p48`EEX&ROz~F zzWmZrQXBP$zyW^4cEo~y1Pfj9D_Hak=RXy8Q@o?G!YHAdss6o_pJ5PlRjnmLA$a8hr4^#xQeF<6tZ!r3im%h;eO^U>mn2KO%OBv zXbqc_O>Et8t519HKx-tMBkEC`W9eM?((TWh^_Wj`g|MMV|D0gT=Z3jczRZLz?SSn~ zE)DV}u1$5ReMfA>@{)ojHu;C_%axlr4-Ue5UpF8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;UJt{NMlp0n155K~y+Tos#WK6j2n$=U+6XL_(7!1cgl(g&ifZSPdi*i6qew z6=g_86A|+TwevwqluDt}^;4kulDaQ5vwLTKdhQj)`8Iaoff>%Zzd8KwSS1b4gE!Nu zMSFB#?2+G+82TwqA9f@@@Ld}Fw&nTzEs4GRD)nzS#O{+tJ#XEuW z76P=4?aO`gtaC*|0DELl07TByj-@alG5pIM_EjKbb3anuGY0{EfIdJUpbyXo=mYct z`T%`^KC<*tXK85~PzVBPpGbi&B8NVTR`cMl0jOe8yTE-yAF$&6-wYtQy5cqN@iBVQ z2dr4{rU4Wg`Y@;I172Ps>nU91@;J+QI6ilAc#^}P;|vZC(`N2T@-wXZp7q-s(9(3# z2l9ltg=@&AtME7L<0MVcg@>b4*UVM6&B3C{m$hAAq~`Uq(1&Tz2MSD{pq$>sSI7{Q z&MBN{3OG&sX72HeS%m%x`Y;XpFu4Kw8m1IHZe+G1P*=G<6$a3UY0$?lL~n989=CD{ z(^b|q9tO~dX+*7(MkfrQ4~ITLAE-_)pz75;Dq26Gyk#1X5|en?Ji)JiL}}asXLX#A cga3K?2cBfbq!Xd*a{vGU07*qoM6N<$g1ZL+VgLXD literal 0 HcmV?d00001 diff --git a/img/admin/edit.gif b/img/admin/edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..7934bbc8c96f3ad800a3ce2246698a1a137824ce GIT binary patch literal 973 zcmdT@?MstU6hF_l+%S{rlQ_32Iy6kCD1FgN7*D>;3L02CL&#~0EmJXEN`06zayG;H zl&CNwOE4qfFeRyB&Xq0qVcL8{Wu}{Rq;o1d#BAN!U(w~>bI<*8&hPy0<=pg)w8SI{ z6PQp3kV6D-ZEfjvI{Sodt|MFDB3z&EG#ZT_kEcsXOb#_3?T;+VzG}r znH{cF6vY~}y{^?^x7$6}mTA|@oGWI}&hoZn*=c?>(OJ6KBD5N=8x#WPT%WO7y!XqZ ztqwUDfA)KM%x%eE=u^zA~uTg0nlePfHq+xm~){c6r}v-Cw%vUK`vrJ%ImpygwF>!3ng7 zqjj`cOwxi#S{SI#;UOA4RETpIn;d|LmIE+w?gmLvf}20!Y&}U6w9WuYjFUv;aUy^m z1E2sT;_TZ5eTu~v&?n6Zx+(EfGhp$4M6jY9?qO*|C%QE2{8ZTFjG$X+zg@L*V z1(4W768jkV2Nn18>OdMeVq{5ZLi1NWF+8tKIdf%y{fp8ylfGQl(RI* zdXX?ddT@>jAOJ83d2B)mx@B5MI#ZIg223IcP(Rysx{f)Sutjg|ocDN)gtF_Xame8q zjgoewE*`O4Du-tcu|=z{-iQMl72pu~hz0!!CVJwx;7(2y^yQ7x4+GC!6k#=Eb&ME> z;EhY5_hnIOdGckS8az(0F`(?Xemxyr@~tW$-};3N@-s0gKU3?&;v%wM_DL``D>09+ zQ0CRC+5X%TQG#TBj6+q&>`ku7GiiJtKVCuz>8BX))>4`-)zIlgmGX1+46l|J!f%L< sf1PR=@{dx7Z?|JUtyKYF>aV4Wl{NK&_ZCFkW4`%xw&p5RB7h5j0nBhelmGw# literal 0 HcmV?d00001 diff --git a/img/admin/edit_2.gif b/img/admin/edit_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d62aac1a9fadea5bbbb7933105f26db7a2a6de1 GIT binary patch literal 1201 zcmZ?wbhEHb6krfwXkcXU@bF+@U{L(e9pM|G;F4I92&8T7D+&^mvr|hHl2X$%^K6yg z@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZBB zbrg&Y3=Q-RjPwnSbPdg|jE$@e3>2V1320kUN}5%WiyPD~AkS7Qqokz3N?*Ucyj-u` zSTDaQUEk2s(h_8bk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOz-6iAnjTCALaH zmqNUdTj1*pH#o0Y59}emIIAz^b}9q_QAYKPa_0 zzqBYh6{uVprWqJ^_$>k{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6e|N03j;$# za}xt|BLg!FLqkUk16K<-S0`snOJhqn0~44T*z}s4yEt387`r&T8oC-9y0}?b7&$sR zngV%7#)gJQW-z^;dBr7(dC93TdozLdLiIZ1)obNkl$uzQUlfv`p94z)0U7xv`NbLe z1q#l=rV74^$(eZ|J}7!1zI910$}CGwaVyHtRRD*tRVEhufu2S2x23a-tCO*-sj;ht zxsjQpsS;Fg3OQk>4|I$^C~+Vq7MKt)1%jCHqz~l4Gf!$BFvk=Dvj*e;e}Dh{{`K?6 z_itaneE#(D!~1t{-@JbH^2PIKPoF$~^zgy`dw1{LzIF4)^=ntJT)uSi!ufM&&zwGW z^2G6DM~@snbnw9beS7!p-nDbb_HA3YY~HkS!}@h=*Q{Q(a>epxOP4HOv~a=vd2{E? zo;7pE^l4M4OrA7xLVsUxPj^>mM|)dqOLJ3WLw#LsO?6deMR{3iNpVqOL4ICtPIgvi zMtWLmN^(+SLVR3oOmtLaM0i+eNN`YKfWM!wkGGenhr64ri?frXgT0-tjkT4fg}Irj ziLntdTk7fRXlrR|sH>@}C@U!{$jiyfNJ~jdh>MAe2nz`c@bmHVaC32Tu(PqUFf%a% z%a@-lK$4L`2Uyks%N+p*2PTc4{>}*x?%fJLb0%PV$h5;fvS(Cn)iUO;*ybS8zVP+Q QWlK8RjrSb#WMr@g0Bo0}l>h($ literal 0 HcmV?d00001 diff --git a/img/admin/email.gif b/img/admin/email.gif new file mode 100644 index 0000000000000000000000000000000000000000..94ba79d858a2395433b01146ec15c269dc9d3ac3 GIT binary patch literal 582 zcmZ?wbhEHb6krfwc*ekBo3mxx^*?RP@4Wf=eZ`Siv7OuQKK~xpyfwDx)TYy~u08oV zb<5+gKmR+`9Q3a_a_-jaXYYRIPrWdI-^;_df5g|UaxFdh^Ur_Zj>Grg{QLO*-<-|Y zp1l9(UAV4g?Y)Su6MOG{Uv>0t^_Capv<5Hay}?d7}ys#C^t2? zw6?XkNEzB28*}u_$(fp}n>vX&ib;yinLAICnN?Aen@v(>g^IK^51Xu!hM<_$Qb~!` zYXo$ZbTy2{w70PF=;?{=vS!??c|co%NnnluleLY_UcLjWoEA&jxGgM%&Gw3laha%U z>kA3#Yu^@T)-d4F;*$8ea>Z={4H;d96p0fH7C5po%gtE8z;LXWjn{9^4u^@0`k6%p NGVh!yOjcm91^^RL!pr~w literal 0 HcmV?d00001 diff --git a/img/admin/email_edit.gif b/img/admin/email_edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e0b0e373c7d21176e9d0a72509af5711c9e5ad3 GIT binary patch literal 604 zcmZ?wbhEHb6krfwc*ejG;VAy~e$?Jd$^5Ao4&M6VRCDm+wtm~3E$42%esVHo>XyfM zZ|{Bc@q2Ff^4%BS%-MWx_rVKirbetxS8bWrf9b^fKMxKcneK7z$%*G2ZaDj~ zYsK}b)|1zFmbNEo{X9N-Z>RVFPY=HT{PXU{hCOYrf4?1kzPD^;hm&u|;U{mtE?GGH z{M_`fPdB)h9=v|#LVV4t8&f@>@9)}n{m0e_CooMnZXPc z1I3>#jO+}S3_2i_KykvrzO%uyskx=KtW>_;vIJHH8A)04ps6!A|k75 zXP05%X>?ZRg0EI08za%#$qHXQCe(t)0@4SQf%$)YmrS{OL z=*6Gz&8O*A_f#kP}_Ry&9 z$)oPdruWpZV_sQyJ`8g{42nq)fkh68Ne^>A4sbsaVKxt2H4(>jDav;$UpW<;VlG)Z z9K(}mk4X=9JPc_$5>PM{eLf9(KNG%iH+@YgwUc<7SuC}8OL# zXkAv)Z%Y5#*8W{k{9RD~VpjiYUH@)l{%~afab^E91vGAJ;PeoH_xGB!6jLzqoSD?d3rJ|dVU zAT1mzDjz18NiH56EFK*_m zZ*OdAXJTGjb!c-Df+G}QWo2VvU0GIgR~9;gBo|X_VZLy|LT3w_I~aBh3PHt=nTHSs Y5I9kx&;$ep1{gTdKmw+Zg8~5nJGu`CuK)l5 literal 0 HcmV?d00001 diff --git a/img/admin/employees_xl.png b/img/admin/employees_xl.png new file mode 100644 index 0000000000000000000000000000000000000000..d9215fbd63820231748902eef8c3c407220d69a7 GIT binary patch literal 1373 zcmbVLZ%i9y7(WDwF4=T3B%6GBbBq|1(Yx#Q&-J8(a@QM8R%lAY(2>ZsJ?MpAue&>F zA;jo#37QNw5-|}ovrWW`4T!LfMe2}jtB7M_fdki^`fsvt8t&81F~e`b&Me{MIjqOic8{AKF}y=z%Mk25j*#~jR9K_Ejb2?<1{oN2^tULQaGa0aXY$cmxgQo z7(>A(L~FF8TTa!uJ%EuF0hkSVQ2@8#z(N=Z(qy$-j{+l3;23Vi2xAdprAZ@=<6wKB zP)!Ne(_WU_)`B}b8q%~VjbX7^%n&0DveJMNHk(biVKf#&M3LGO(fD{#L@mfzUhQ@UI)YqE%l@ zRKUD~DmN(s_#X8I88Xb>-aTR(!G?&QyRWBx|x7lB0mBG6Ods5F`3tf1a&qSwRt- zg&?QM64=ZyE$*UkRSLqm&;ix)0j7#|-W z9UYyTn(FH6T3TA_@9$5i(}_f)ySqD?OwP{E&dkhAPfrgF45U)2v9Yn`<>kJkiy~k^}8O;;kE(=g-b1zRJD!d+I~^Tz32YzYFi*EIohfUem#l$NS=^$8P1ne>QPW z?X50vf980{^Ul(wYr68SH4=md7GA16C`MbeO5XiwE^DFu_R3>^D))|dlROeUa_F1p z?|zzQzAp&Zjpa4JcJ=XzAHMjl@G??e8@qe{YjYvKlDE>Cb96;~G%=C=*Hbr=?^TCC zc{Tm*X#OvydHuhRJLVtGxoZ<1sq|u7abfD@>}OZ}pI^Fj*i;SLy2z~O!nYRu;GHZr z4X*e)PQCEuSWepq*RQ^OZ~f8R*B^k?pDi0XhmeX6srW!))@hgk#O17DlVx>h{sEHG B58VI& literal 0 HcmV?d00001 diff --git a/img/admin/enabled-2.gif b/img/admin/enabled-2.gif new file mode 100644 index 0000000000000000000000000000000000000000..085b57b298d0b6a2f63a3adad63a9454b16cfbe9 GIT binary patch literal 1427 zcmZ?wbhEHb6krfwxT?<(Q^hy&7(-%%XiPP4LL*OdlW6ZjhUhB3)tAE(>IHlDGj!}? zNNyBOY!I$rq@UH#0#uyQE|WivvF8B8#N!NcwL^nUk#C56lsTcvPQUjyF)=hTc$ zkE){7;3~h6MhI|Z8xtBTx$+|-gpg^Jvqyke^gTcyO5{G?PXAR8pCucQE0 zQj%?}|N*N_31y=g{<>lpi<;HsXMd|v6mX?+vGmMOMfhu&1 zEAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5FD#PU%0_}#d=^5=_Tjq z>Q^Kd=o{)8=;!8w`~_BBToROua0XV@#UYgisro^w#rdU0$*Dl)$}r8qu)}W=NFmTQ zR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsddm{=GX8k(CJm>U_GSr{5RS{S%mxVbtx zTUr`hx*3?j%)qAC+}y>;%-G1%+11e1(9p%r!otYW(a{vhGcq?$S+WE4mMTrO-#=Gku_A^g)RO zDY3wWfGH5fgeQF<2cCIS^ME;~2$(e(|Nr~@=l8FlKfZta`sMSdk00K@d;8|~tCugH zKYRM*@uPti4*$!dV9LN zIy>6iT3ec%8XM~CYHO;iDl5v%N=u513Jdb{a&xk?GBeWCQd5$X5)DCA|t}X zLPLUs0t5X0e0{vVJU!gqTwR=<93AZKY;CNqEG^80(Xw{{#uj)G1RgG_OpBZD;njn?1E literal 0 HcmV?d00001 diff --git a/img/admin/enabled.gif b/img/admin/enabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f3c6e5710a06dae05ed4ee55636ad7507d2976e GIT binary patch literal 321 zcmZ?wbhEHb6krfwxXQp_Sz}y#qIk~n8SzWQwqDy9Fw^74+p9TSlDf{<*)*9gIy}E* zPj>R^sFo9z5%UAwdhHKA+ShZwA!A+Kyc07UPnETvsa|nziG7Pj^s=Ce{W+QISvL_5c6>3^W6ZKUo;r859|GKsJE<#K0DJU_yb1j#R(LlVg)q z{P={@K1*iuh>$Z0P7|I+#dkwB>?;9=iwp%-83EIA^`3v0NgYk{5k;5902qx z0OKP7|11FAApq_t0M{M>-5>zkGaUQr>F_B4^C|$_9{}Ye0Q~Fg{kyl}DFE(JJNn4S z?kE8J=H}|MvFNI(?X$7!C;-($GU#<|`PtavhJxoL0QkGO{NmyENF>@H0PU=)`rX~& zVOag|@b*nE(mE^Sl8^oH@cYot+I@)diq5f^kGo^I|BLL-TC3++Aa_1bZpr$ z7T`N2{My;p9stoD0NF7Z>!_yn%gXmG0Qbwu`z!$afOY010Mj=m>Lmd0Cjk5F?Cv-Q z{V)LNdUE*I*6t_(`{d-+9svB`-TN#6&>aB$?(Y9nJohO8;4~T9DFgFME$}A*?>!dQ z9sum9rs;lm{VxFYy14zQqWMWA+aLhjBLMi&&fZl??L{ooLN)wC8~wGh`iz6mFiz5hrk@sy7Du&v=N0Ms4;>MH>IR#r}7SA>LbA)}m}9Cvmk zH;`g1sD?|Jit;itGPYG}D*`EA(PEf{M!N(P5V$9XrGRLOSRaUls+Ks1goFf#i*Z&e zm?0kQ43@A=sF4MMOhLg+FvG}8w-G3zR_eyX00R7ylKfx>kGF+7P(t3U8v|I`l93ny Xjfn9YSex>Y00000NkvXXu0mjfVCQ7T literal 0 HcmV?d00001 diff --git a/img/admin/error2.png b/img/admin/error2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d52e2f1daba36a020aa967d6c2c46e9dd71fa55 GIT binary patch literal 1061 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g!!3-obe&3U4U|?nl@Ck7}z{qffk>Mm0!&xSV z^TI;sCB)82NuHCIIxj18k%{3lE5l_rhKp>B*H{@Ya{AnSKQh980qzeE`R2r#@*5PhjC{Zo&A`Ww{QKtbNA=ndq3~p|9StxuLlo*J$n4>@snTAp8tON3K+jo{->l8eSn;@3Z_bL; zxf9ctNOr5eS(G+;e*V&D9a=K$7A4M`p1y3MP=`{^!bMpVX0KeoDrr`$%A3UtmaLgK zYr%?DOCEFz_)Q842omb*77Pjsn$XeCUCp7Pp~2zS%E_e3s6L~>M1KE*1q%CjOV4=3 z*~)dh@H2B`$Lh@n9nYq>2eq?HlNo^n7UnsS#^LQC3QaoM#T-G@yGywqF Cz9@#Gu8DG$hFX_f|hN*(F@w(qs(QmF8Fk=Qxn6L*;Z&>DPmbK=i1&6~C2m}&|M4?cq zRBB&eAA`YQGMOwEi_K3M&KI@{3p?+x?H&Y4?NZlXiAohZrBlB=%TigW?_p6&L3)?gF z&BI&V8eR1A72Yw0cS5->PfW=A9viN#`xL?V?+=jP_*a=AjGP^;BT zOG`TavQED;tKE_6cV!0O;+jvs_QPO-RA#@%?AKZYI$J<*3oP3MD~^D{`SXuoWi%Q$ zOjfhS9*!0AZMcFaC}@U)&~C`>3vK&1z^ zAr)Q7f?-`*%Fz3F7tpevWYziDmh`x2Onjnr9)9jBCh2=wR4bVAU<`>?7Z%o^K064j ziewVO)O<2IK@FQd98K~(MAM06G6In{KLHXIxR~3_s)fw?SU3{92NxT0N^IPb>e3*H z#2o}9Ln$b*w6-BKg?kTi9D9SFddYto0V07z5$R7*2up+V%=PkB_^E6d790H-O2PAH zzcdms%91vTiJWjO`O2dbG(9IaJ|X+)Q(Rp$cmlXJm^&I-kaaTALae@ndeuXShyc?6 E0!#3mOaK4? literal 0 HcmV?d00001 diff --git a/img/admin/export.gif b/img/admin/export.gif new file mode 100644 index 0000000000000000000000000000000000000000..61f4912ccd305e4f8d889a5465b00fa44aae748f GIT binary patch literal 979 zcmZ?wbhEHb6krfwXlG#1%2qQd)HW*7F|9PPX)twcvU2IR_3Cx;o#q-bB`9}ZR^saL z%vFg68?uTw

    kos@R!Vv8SMVPhriz;$IAB8xB@99ja+LSkrc-cE$GP?MEBCjx={2 zYnpJfW8&$q>E|ZQJU?;%rD=x_9XfpY@X@13Po6w^`t<2DXU^QefB(^=M~@#re)jCy z^XJcBzI^%W)vMR9U%z?t=Iz_J@87@w@ZrP9j~_pM`t@Cc!oj5gaZu>3_&V991PX~y!g{( literal 0 HcmV?d00001 diff --git a/img/admin/female.gif b/img/admin/female.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cf832899193a2be20ac61c0b2e389432119c887 GIT binary patch literal 249 zcmV9FJV-16Fc(f{xF?ZxTjrQY<`@#B}<_s;L_zv=0<B-;>w>_xIj&&g7on z-G0*m0000000000A^8LW2LKrWEC2ui01yBW000GcU?z%9P*qSft|EdAhS5|3O9n=w zCx(UCfkC2CDBuDDTP0S|MGS+5tq^1ACbEMKA~6IulO;r9lN4Yv8KJfnbiD+NZ4_8E z1_1V4uvkbM02~Z+84eN>1Bn4za{z~l5&;~95gZ(cmKcO0908J>BLbFWEFl0p?iX@` literal 0 HcmV?d00001 diff --git a/img/admin/female_2.gif b/img/admin/female_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..659255212cc2fa620a0759cb8a1a5e63b551705b GIT binary patch literal 1476 zcmZ?wbhEHb6krfwxN6TZuYc~xJMWLrIDGrSjak*x-<^Hk720xc`KdcAu5|=7U7ve# zdi9ifrL&e#UAlbA(s@m@C*}4{$mr>bZto0kKGk%nFTV3!*YVHSKO8RE{rTCa{^ZWf zQ_kEuf9w0BFLS$Re|qt0LG7G(m*3o7f8*)yhtCf^o>@Qb_K6$QN+-QK`s`TczS%7^ zzTN#it7ZDJs{OByKJSh1{C4m2w6e)p_g=oZ^W6NlxyvUk?GA4})pT%H!}Mnd9xdxz ze7gBiZ(PTcu7ytzJz`*BQ2fsw;Txdfl30=mq;2dg3KEmEQ%e+*Qqwc@Y?a>c-mj#P znPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(;w+TacStlBiITo0C^;Rbi`? zn3A8AY6WD2g!Ppaz)DK8ZIv8B5(*$Yo%4%Q6-@OEbdwFt3>3@^^$d+o%+1Yp6pRcE z4fG9+^bL)44b82LjjRj|6rex}Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M(T(8_%FTW^V z-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}><76{9OHt!~%UoJp=vRT#&!Os*6j4QW4I;s=7F&vLIDID784hv?w_h zs9YJQ85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!pD+3b?14Bb|69aQ2 z12YRlLq`h(R|_{+Cud7bV@o#!6POv;^qQNyIXOC-I61o-x*8g~xLH^jIXXI;0(nNp zhK5FFFuk66#U+V($*C}VGlBL(^*Z9!Yvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf% z3ciWSnRy^SD0(2ibxAGCEK5ysE6UGR0Ee$tCKmgFo<;GurL&8xld-F*v8#o-k(r~Z z5>#&rIbo&`bc{YIaUdlYm=G`pf|&5659GizPih`8#}omx2IK#KfB*dc_4CK~Z(qNB z{`B#~`*&~Oyngla#q(!RpFDo_@WK6ickkT3b@RscYgeyazI5@z`EzH_oIZ8(#PMTC zj~qU9@WB3kd-v?#wR6YzZCkf&-n4PU`gLp9tX{Qp#qwoKmn>eiaKZd}bLY&SHFL)F zX;Y_6o-}bne_wA;cUNaeds}Nub5mnOeO+x$bya0Wd0A;maZzDGeqL@)c2;IadRl5q za#CVKd|YfybW~(Scvxsia8O`?zn`ygnoeYiVkztEs9eD=8|-%gM?}OG!$Ii;0Q|3keGF^YQXpjRE@K+goJRD9IuSLybP~goR*q6v#AxcxSCEdx19#R v6ThAvcbtNfB_pGXl0uUp7nfj@ji{)Y*f#xiw!NCVY-VOnoJTo>9T}_vMA$BrF5c<}c2!rR+}wr}6QZQHhG%a)y)X>xjo@yTh1C#D)4pQ3+slJ22? ztpmLpd%IM3wJU9Jk>A=RySY(%L!HFB8nHE1BC9KfSCk1XFXdla%)7XddqEz@yd1VU zSuC?Mm}aIk0$svDI#B${!pP2`$Djk!3i1;J+X9E_1s*z5{U??boy@VCe__Q$r>zk@ zjT)>6L^(`4*G&G@Fyk!0-|@$ctvsi=%Khf|OL?7cIPm^Ar<$Ob1aoU!d#i?!mn1W5 z|AdLmn%$mK%p5ak&1Tk`>LJa{wRp)=X6^azGR)j-*R5yPS?MOr%(H#RPG;REPd0gZ vMMV`=b#+ZmZCznLFGfy2p-Y#q@Ns%Gva#R3b2lRB!NW(7pFDMQWUvMR7MPXR literal 0 HcmV?d00001 diff --git a/img/admin/forbbiden.gif b/img/admin/forbbiden.gif new file mode 100644 index 0000000000000000000000000000000000000000..c772d4989314e1c09300cd89e8d4ac69ab8ae42a GIT binary patch literal 594 zcmZ?wbhEHb6krfwc*el6Gtl_<(y3PpQofx(|18w|!-TqXiNXK>|9`z{-KVmo=SOya zefID}ciGFNsB5{&zZOl{8*Tq~QtzX>n!_pH?@k&MpRZ{mWFWd*IbH8h9ea=x{b1Gn3x2kri(-CWKJ&P|;`fT#dy~DMMFxIdx8%$G zxo6YE-(|*rfBy7Jq!2#)|~x)Qtj78^FH=g{@k(dM|bJHisBcQCC_6b zK5W@~J0s=Onw8h$gTM4P{5*a5OrZ6jD`y|q)i4Y+Q2fcl$j-pdpaXIUC{7sI*Eg^? zHMg|3D)3MP}w6Qar3CfuUD$Da3v@+}YDZ2CPn>%Q-i8L#iX)Efoy1BS`%&@U* z^3e#^cj0l~=j>=@Y}6EDCBvg~>NID7mui!qyNg7dldY^yldsIaYrHp`q|{tYoSwgM zlJ*pC5>wJvSAXeb=_<+Cq`)L^b?T+-JckGajXlbDp!O3u-Q3AM%A_e0B6BN{l6;Me?jK~AVg~lC6z(~+2 zVuc{6AYl|ig9Ss2EtXP5sFZ@0G79az<<5@#6aEfQPQHAv=i!JF z^_+=%&ZN}OEalF$a;IB)NUbkg&qf>lY;^&cl#jIWOz$>YKL$-VtsQHQwtU)&G_F9U z;b_x(v}Kj8b=_=Rg#NuyUlTjp5IfRv@NZMP^{YSH;csgXK)>;4JNcM`k1P0Cmw-?P z5-I^E4?^0*aOHAR9c+_D&VJjBx6d(#=-i6Qw_(a?vTFya38ge!=)OpkOf=oGcSf0x z$wjzQh%4jBt~k6qj#4F1>V23z8C9p^s-r~raY8Ga)gB=<$LQWl#{XT6U%*J)O+?br3drq;ap0WPYqpk z=r7v!mmG#m6N&<}qF`Em!>oFW=^xpLZ`lp^Y`;s0k$c3*efys~cH?c@c-LWk>@+>H zj}|(N&w%N<(^Lw^UpXh9ImRW<8p8 zhSUMd0R68Crrq7=lY_NfRPgcuINT z7|YE=QR3-+=6ww3eo>|O&I6b4<_g6R4wbE66|*u{>AOtq9g+ukJ>;%AEkJ_muJ86- zxFim0KAD{q7@5V(%$AHk2~B=Ve6)LJGTgxdhbmjK_ zMs&&qHnH6p5{Zx56(4|an&}rilgut6O|?=0B9{06|II1@97(Xv-1EWp{}VCAATGs1 zZrlI$|6+ux-Ru7rKfl}>0A+>P(kKrxV7L=3pw=KSftlYiH?h#=|Jx-R4l2v(|NlI- zM9~ljA^8LV2LS&7EC2ui01yBW000J;zy_%@s0@w1iZbEzH7wAmR62TEdN5ppvg*_V z5a{W7P;pkU-jyNJK!4VmNG(l8ptL7Wq%cjTV-_J4E`L&R7BvQjQXWqkD2!1zPc0>W zP$mZvIyxy90#6SJ4hK;TIT#cl7CTQHEDH>nP&yz4786!55(^(276%6x0JwP;CMFvN Y5;iL_JSZ=~u98zbP1)MpJ~BZ7JC9qMJpcdz literal 0 HcmV?d00001 diff --git a/img/admin/graybar.jpg b/img/admin/graybar.jpg new file mode 100755 index 0000000000000000000000000000000000000000..d3d2ccce2b7bc57d7b2c506609a3a03ac4f1e260 GIT binary patch literal 719 zcmex=PKf)jeavTFPU}NP3ii@HPGcYjzzs11A%*enbz$^gd-4{|Q zF%sc)_$9;3)_lm(pu`6(Vo#Aj{+vR0s-tMFfy>&Gl5LNbe1E70L)qTia}GJ zT6zV|S!(GOJZHJ)bC{PIn1Mkg(8RGoh@qkBpbF3&IY9|pw MbX{)i`2W8N0BDn%wg3PC literal 0 HcmV?d00001 diff --git a/img/admin/green-gradient.png b/img/admin/green-gradient.png new file mode 100755 index 0000000000000000000000000000000000000000..e0fffbdd7755138e8d171e06bb178d17c5f28960 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{M!3HGXPAxeO5-1LGcVbv~PUa<$!O>_%)r1c48n{Iv*t(u1=&kHeO=jaGxPCVNXY!vum=h`db&7C4K$bFiy85}Sb4q9e07KI}djJ3c literal 0 HcmV?d00001 diff --git a/img/admin/greenlight-gradient.png b/img/admin/greenlight-gradient.png new file mode 100755 index 0000000000000000000000000000000000000000..b289a372a6375e653f233edc75fc4d59d840043c GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMq2^0spJ29*~C-V}>VN3FMcVYMs zf(!O8p9~b?EbxddW?0 zImmgyK;Ur8@z?X_uAUuHsamkKzm8|qhMn_IE4ZlaVrE~ppPEvS^IM%vw#LMc)I$ztaD0e0sv+|Jg@)& literal 0 HcmV?d00001 diff --git a/img/admin/grid.gif b/img/admin/grid.gif new file mode 100755 index 0000000000000000000000000000000000000000..78b54c0f65b19012079abe617e69949f05b158b7 GIT binary patch literal 87 zcmZ?wbhEHb6k!lyn8*ME|NsAg^YR9eRQ$=p$iTqNpaT*G$ulr%^z<(}{o>%F3QxVN lH%9~f-_=H(D2?)LTG+nn)z2thn_Z^9OSj8-r!q2F0{~ndA$kA+ literal 0 HcmV?d00001 diff --git a/img/admin/group.gif b/img/admin/group.gif new file mode 100644 index 0000000000000000000000000000000000000000..213f3a2c72ad919fa008c1adc9e88a9b375c0137 GIT binary patch literal 1004 zcmZ?wbhEHb6krfwXlG#14k@;a+iaYFI=W1%~VeR*Pru`3@|2J&e|EOjEV%Pr< z-TXgx|Nqpc6D6GoN+v%^*!I6@-Sf0F|NEmHCdN3mRfJ7VbeWauJu}09a%JwaN{1yy zAuDPV*VZTf)qd2`6x=bnW^P~J>Xw346Kl8kWjCG9Z$Deucdm5Wxw6UUE9PCOzT9GZ zb&kRP#Y#_?N<3X_{A`WYu}NO{rurV9o_%;(*^vcR#}-#yTU>N)Y4x*N-j8MnK3`Mx zY948s#Ib<{feEQ|>x&&f= zJnHS27pSjEwD`a=K`o={&kM)E1%jrTx0VDdFL}(Z<#BCCVshKDLk1dNa|{+Xc}l9g zNC?yvH?{Z+8O=MA(V)uJ(x@A>!{dV|f;lh**UKGxo4BGci~L0C0UEUjP6A literal 0 HcmV?d00001 diff --git a/img/admin/help-new.png b/img/admin/help-new.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb44849d0b65c8d922f3b80c44bb9199f3b5e34 GIT binary patch literal 2765 zcmbVOdo+}JA0JII<+dxiMD2LoT9>(CX3XR^W?YM0CI%&A=E1~Vc4jn2y2z$<7fOk& z-Xzy(-3h7OCALyTt7TOaB9dk19hKhqJ!jAU@jmA~&+qsB{l1^i_kPZkam?b=dcj8WgSEeiz`DzAU5_fTpB$R6u?8la39C=4c$j(t?0O!M{F$ z%o>joM(`m!f3+o(Y=H=YfJ;Ckg+d`hXo=wP!jWh^9>2_CVPP)QFz1Wd0$PkYo3FpZ zKnD4A9+N9za@g=?Mp`H*T3`#vJpB>^i|gU>jhM~J|LeH&7;fe5vIQamgVlB4J|9mydmu1F=a)eMUgr5Xcov8xRGrE z*$slhWDrnR)+jU@XNAI9ps?0xG|?L6WbN$aNW$YS@y;l#6^_5fq8u$rC=yv#1}ik$ z2}QJY!a6!TV=-uFydw&4y@GXP^93|E9bB=?T()g=a<0zJNp*@8@DwPOLnxhz!9-T z9EM0n0bj9<|0icinKQ`c=J>B>Svit*;PUoc>&t|1!vnHq6T_2@#)F4fJs}YJB{wpW z67&4jPDL)|v9@ILuZf{r;qckP7iKzoZALa~dg?G@Wlv6mx^GnAjWe0)m!2>c84*R) zdyWy_Eu~%Es}(kFU7z`6B-K0n?kRKq+Zas0`(9_q!&-nRH^t~#mD`-?qg`ybk#pfz z)75z-?nAI<)JuC8`cu&s4D1Nx3;-y(IlEf5kX+{0>^?h+(Vx@yo1Ew} zeD~VtWZRV*Yvb>Yww>2Y)>94C$`2Tc$Y|_!=;FsGPW7FLW{#2i(fMev`{IM`)C&nL0D{0pdxH2|qWpog2 zu8Zq`<~rT6(V zVbpn-1D%FeAhL#SH7=bcLD(|%^BUA(}_cK8#D&+vD|SE>YZg?L@)F>y|qzS#dU1hR<;q z+Y#rF3Uv#7b{6&9pJdFrgzU|hCP)@v77)xo!G0Q5L3y2Pa_|t|U(#in>(4-2q6-tE z*LwXztFC>L=zi6StY`Z4ul}V-)iuDw2Wly9J?lO>m0dnp9{ki>!UVhxGGaF#9Ah}7 zYm3{$5m$eUX@Pf<;bayi$iw%s|#H|EN{ASFxu$t;hTPPXuqs?C^waqPh_B zCq{Q)=}DF5-Drc1YAVsTJMFDQes8dL{j0Vn3Qxldqk7NW>D`MMYs%&e!oX-{lU;YK zflFA?TEPJo${N#1htk0~t&_v6$8S$w(_UlMk#J!i2CJ73wm(#TbiSqa;g6SBVbVk{ zeQAA(#c{vO<9FpEg013{j@+ZOgpxb1`-;Oq6b{&!ba=wHn)suYZuZ^!Ze2pQUdH2) z*eayv)x?4n=JAwNmGYhJKexCmyIt#dKV_wHmHc~#akIh{X45z#$b@4Ypf*u$J2f3X zsZ%`zT2tUJYYNzk;j^tDI{Pt2=RCFCP2}3w8THuBrwD7j`7GuMq0*KIs@FkXHjQNC>6uO1h%#NDnKP+;Di z8oDQp)JJl~gq9r-+1KA>ki_MX#?LAQ>bG!7l2GF-7rEQa zqqd@9lUZ?)%|lhXo5?%nG>aQ2C2u~p;T4iU&Doz0lp3F?CZu#FTG?q*C8DtDSc4cs?*t@W@6mQl#ov zC!9@r6GVKHxb!rzqHrS>rd@H#bkiu;7@3+=4#byoz>Pj=%53q<|ok9aH!knF6(w=FB?MAy4=a8#^@IK`Mi1I}Jx5jgiG@XlNnKIaNTc zr8shHGPN1mhxywsq;r0V#+;}hSw|PK0fQq7SBSzVl|R)*Y;jHqWab2Gay1^@2-8?_ z#!$4~K6LJh7h63R=cpv@4Lr(*X;(9eR|%*P-m44oUhuwjvbxVl9eVRJhN;7i(bm z$C2NpJ{G)?+DO}09AcRZymkZ1#PcY5JBQ-e>I{Xi2oyFdP|zqxy>uByPXu@C?0w)So5Xw`m5JDJ^Ob`X}Ac1&W z+)cDyCsW zT)6;O$$+AzK1nJlFexBNloTVPh_P!uFzy;E;y?z$0*po$D_2uBH0&3@RAjE*#$z#G zOyC$A_G?gl?s^PEp@J~3IKWv1kN^w`#DN4NnM`)VxBwu42VC%=i!(^35?rVNfcf@d z5jK@rLgg{p-?)$!4I2%^N-7?on3#x5B;XXPC_G4^P_#Z=T$~XLXZ1EYEYLX1)wVMp zn2=hek}6@TLXOdT6bKdZFb#`D`ZWcalFR+>Sg!si6e1a3BT(W&9DtX}w0V88R>M5# zKVkgPS{<}a3E_E=S`n`jA@z{h&VUi^{+dW@h(tqOr;;K?5yUbTqIel3hdE3d7CFI* zrD7^TbOS(;Oa#a-0LcvmJ>3A78=K|Dpil@DHb9*5@guA!q7?-MDM%R@Ajkqd2`rKq zn@w^B*%U8;;x>cj$knhwE`nxwr3mjgtlM8=sSFh)fEB7Bg(7yQ1J*|?V1+tbp~Nr( zT`^pNNGjK^wdMJmEfZ2n6Cg2LrI2C1=u4IUfFA(=CvOsg>Bb_vumL8(Cb2!S->~BU zM>9MU3|`wD|J5urTSy0Lr{7y2S$w}dkQ})&D&%U645bgCPzG~2OwST0px%4ty;q9ilwHlN zk))kPAE?eD-=+7L>#rX0wkt|-I+LF6=j+Gp8M>=nccVoz=5+22JS3&(=ChL&IK}x+ z(5k7)VwcEAX>>z=u-ITUzpjwld`QgM)Pq@?_xGLdIy=zP@WF%79_uy&trX>_gR$lA z#x7~AQbi7$3Qn~4)Nj3gc>dAuJxO9={jU1y-YrRvYf9&agj?KNo+V~{u!_3%IMI2_ z&MkLTwa0h4S5=&`?_H|w^#>j}{6fMz($bm389gT~GK2dw61wujj+7c&?ElxK;Erm^ zl#}A)n?E}93~h7%WPp>~BQJdzXdHT%ZF#I_n8~f^Rdv5uaP{>|Mp27O6@R+q=bF#`_m01#rFPvqHw!&^P62a6nhDNl z#_v=gkXKc7CEsqdGpClHtjx<8qF!UpH+tDTW`Xu&kq*QYFFGBLr#lixrTiWOrI@`=(y_C(Gh+AsvxOA5N)>9Kl;-|e(vi(MRZ?F zx6T_p+jhFw#z^+!o#zYN;!i)4(LU~NotkYeI+QLrt$(Vp$c?{*0L&o}ylr)YSMws{ z-L~+@M>Q}}Ctv^BZo3xl;pE#7iOV*2;N1r{#}U)j%A40xz};lsR;#P4&6^Kr9ZZhv zpr7|eLNFmN<3&qTy8Gt4;nyy~?V| z?3B(G11{N7La%93P@~1N{Y9Zil0z5f3~v_I^*HP|z87NSa0s%n%hEksOy^}`3Vco# zIC&?j$6AVG%S`!ZaUQjgrh3v?4dZ#%TWvC~-_z2|u$SL}H@ca8M(@U~V?(s8XLy{k^$EIRSIZu(qE zmhNErnu~0`Fgwmz398$Ca;mSW=KAjTvOuD~?~3=?XF0#Z-1^ki_|W882U7sar!5zU zLMg4|4pK~V&DaBpRWFmb`mwdc1CDR1gedF$9|A_GR zyIUm|Ch;dO-!ERhm0ljYRVL4SIH013CKD#Q-VY7?JRzL{85>Y~4MvP59&bk!bLG_d zil~U6oOCNr3if6kcyVbq&+I{Jc4&wzo;RwN==djCDGO2Sf;CtA7QVG<(*Mwyw<_n# z+~{h%mDP)yhiz_us+kUp7qzzxl|CuQFFtT=#o@lAKiNk6r0L9RPuVvptSWY+Ubr7r zotyKr2D@Q!)}N_&1AF@B7ZL=TxxzdT!i#Y8_>s}7E1gpxGGgZSd+dBNacS*C+>W{! y?EJ@Z=%1h26igGzr7ejE-mUwX=l}TA!bsHZ&kZ)7mW({@?-qv@z%2EOO!+sjo)YQ+ literal 0 HcmV?d00001 diff --git a/img/admin/home.gif b/img/admin/home.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8847824364c22aceb6dbe5c68526a2f50dc2131 GIT binary patch literal 597 zcmZ?wbhEHb6krfwc*ekBUTU;@_3CY9Ce_u|;k|(kUOF4Pqu;-O-?X#3xVZSv?VC%N zF5TDR6jc(DvpMn1nKPGG=BK5l&73)NUcU3e>-)RAyDRP079Uu+q2B4iy*oEg96Y|H zEOu_#w{PEe^@Q{$_}1(zTwCumEh}`-%q-7x*C(GJ^_^;-5M!~U#roClXl2!A0J*=;&!mheMgmL;o3~! zR`=kl7;y;FiNud96g@cyA5 zuc*$5xSHtL#UWFotlr!?zPH6Gc}jB8j?AT{HVgv_6o0ZXvNOms=zv@SiW3I*O%1Y5 z&9X*DEgdcTOjfR)9aff(j)pw_O>RB{v%RMF&lE6paWT}Dljv|W^q6X9W-ljgY}XuQ zI5&u&ot-OGQQ1OW)@i%p&fUAYOoZ7?lmeI7OP)C4&8jXYC9CP=F3ZmOkds|jRQ^`8 z>26LTA?7EXdL5#>ncr%E_#~@p&cPzi&ZZO5(C^wW>#Py5km(R3kGM7y%Zd#wEt~@W d3Qt;J_3UH#l@wkr-y`u$jQl-m6h4p*qE7_+1c6UAtE;QKySs;lg?V~< z*45S3*48>WI5;^uMMg$CIyxpMCZ?pMWM*c%xw%O}`1$((38r7$Om#dM=XhumTTDfI^D@<=Xo^Z9D%9Mzd>~zWozX zw@pX;kIU0r--|nr9m(%V3~f;nK5~JnUxmp~-`e|Y@jVwc8??{}=1&T-G( zk|VQpd)SjHc_Dqf6JOj2{rRHlCD)tI>5_Rz*bf-ZwU^$_&3I^>*y5Bl)k6mVLXQ`Ta@iw}YH- zQg?21!=)YVS9W*aIM9Fp`1IFjy5C=%`1w}%(+i8fK5Y8-p!xfw*6&XnzCUgJ{;d-I)6L|qTb){TfaY>|KsJ9pRecre6#T9tJS~Wt@-tC!;hDHe!buQ=ktO;UswM5 zy6*SK-M>HX`Tc3%_t!^$e>wK&>$$%_4*vOm_0Nxc|NgxD_vgdEKOg`9`}hAp5dCKu z1w%Om6o0ZXGcYhS=zu%{$`cG6+Zfn6WHbUi+IXBev~*@P@<_IDvrF+PAN8Ka62qoYLU%G-#eKYdy*3rIAY83>Gfqo=m3V_DP~j+ZX~gmat6{ zHpx4~@zKSBrA;a)#F3HtIER2gkB7vJhdko4Dqa$a6I@R-a`6}k6n<1ZD#Xsqq_E<^ z)t;$hauEiN2b3SN>8M$qu=upV{RpGvffW^jEe-vLnJsEgGA=#9e}cIqVg>^v$1_Go HMh0sD`oAbI literal 0 HcmV?d00001 diff --git a/img/admin/import.gif b/img/admin/import.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdd46317e3370700ce78a29bb10e9debfdedde00 GIT binary patch literal 981 zcmZ?wbhEHb6krfwXlGz>Y_jrfb`5C_2<;9G?+pr`=N&d9AYxWf^!(tMd7&{Yg5p+( zq|T4eotKrkIy`Yhc-1z#z_`12O=VCm1+3F@(<1aNMBa zC?YPTX0!1z`-FCZ@(za;8;gnS928P3dbL@>QHe6_QW@X?#@#u|W;vqI(b|w{* cgNwDBS=cz{c+5D|;@Hg0GRI@0fdYdy025o&>i_@% literal 0 HcmV?d00001 diff --git a/img/admin/index.php b/img/admin/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/admin/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/admin/info.png b/img/admin/info.png new file mode 100644 index 0000000000000000000000000000000000000000..bb000acac10a39193ce13f76d23ebdd9280281b3 GIT binary patch literal 1270 zcmV+}2R^84%Z`rYdHCRK<~gSO!6 z^BzclGNrw#ge4Mw8!AS)99(j-dK&j zn6T1TaiqoE?Y+w1!PMx?*yzvS@V?FDDOrw#s?M{~<>h?TX zh(2zrhPT#anZvci+**{sf|R!4>GoTZy=bV)v%uAyw9~=b>{fcNdX~Z1 zfs?_MuF+M6wohl4u)fuism)P)sD-A>zT09y2{;#p~zT&t671q#?#}AtIe~<;82CQhp*62gSKFt!=uXJQJlkOrpYp5 znpls$hM>q>oy1s;yrr|y)#dX#XO_az<>Kn~=kNM#s?3vzSZLJ$=2mun8U}}?3l00tI6Ph zq{+9#*k6;tq{G|F*67LE>&o8jJ8Pt3pvF&jtZSFTQhcgso5aS^i4b5;a7>bY=EU%jlETCm~N4{gtpVB$KJ!$=;G}7Y^u%M z>Gpf3%Dl?pe5lNYp}=p0r-i1?nXb_$Q;WRI-iWr-hoQ*P-|*}6`#orwi=4h&l)qn; zzf^OjiK@+ZpvP8oq=28rPl&mJtIdV3(21SMiJ7{Hnz>?|!{Y7uqsidm>-bNb!>Y*O z!`SO*rphs3ndk2JSB|}uuFz0~wuYd{XsF9voy00ykK^w7HQ?sE00058NklZ~ zj{`8k7)OK3#l${j@uN%ZalYU$Dfy?hLk&fO-{VuIU8=R-&NE*t3@;)i8kW}HUc7oW zJNxQ;Q``S;*$tC$eYf}QYODWWJ|Fw?-|F6+vYF{n30?06?EkgqGchnQRV)7IReG2K zk(hPpisOGXle9^%N<4o|xci^?OV literal 0 HcmV?d00001 diff --git a/img/admin/information.png b/img/admin/information.png new file mode 100644 index 0000000000000000000000000000000000000000..121c7336dc5d7e72080980b934618d6608ee979f GIT binary patch literal 725 zcmV;`0xJE9P)TmiBc>G#Z4hnJ5)iUE?jh#Z53Sk9|#IQR=%*M zbegV(TAGxG&Y~Nc#xT{yG>_33Gsz_V&D`(3_v=DPe6$-q%P(I(9609~RpotD^X4IQ zbu=x(9ak4lR;{!+4Je@q;ih-t&fwWk9=`f-UUl%rm643KaU?Fl0 z6`pW^dU*z;{kij>W#0lEzMRk4NNyb3Ru|vhTF=y+rMM8`gOaFQLn^V3!m~01KR;Zi zhEuruAu_j${MFh3DAFBGo|e$4Pp-Q-~96)smkq(Y`T3*VcxVM$!im1F+to z*w^07SaAsvL4wBz$B)AkWQQlPVzJJ$6h(~BE^=UR8^+obD=FB>wl>w*P?#yiSjLzzwF*!rY@%*mE&WIKAR;&sI$9D84gC%1t<@%0qT3@6%3r6Gjj5ilP5hRhlxHuOz%o259~|RynZd9JYA?T`1>dm`NE7bvHsk^ zne2aV0ifrrD`{1K91SN4l@>H$j41*)4RYs?fph;qrgzZ`s6T>xS+*g$00000NkvXX Hu0mjfwNh0) literal 0 HcmV?d00001 diff --git a/img/admin/invoice.gif b/img/admin/invoice.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c16743512dd882fe202327dfe1fd7a60061ba3e GIT binary patch literal 601 zcmZ?wbhEHb6krfwc*elsQ@HH;>9W0*lFy$%Uz?@2b?eqMXU=paY9)6axOZv!nl)=~ zED2w-WJzytZ)nx}NGFMzGiUxhKDni}?azb5|Ns9#Gd1Gkw*JivYmWfIbdRt1qkcZ# zxVO{$$;pswJ4#;^7kzqmxBiWy+K@EArpn*pM~x z#I7cr=li>EOmTgCrTXvpgH|IU>0XIc%`rB((^%C*-FkV?@oo`lHMy}kfQ$p!d?xO#YaSX*1m%F4RBy4u^@ zo0ynLNl7UxDr#zK0+n!=F@h+rk|4j}|1iL?>5R^Kps1s#i(?4K_1d$BLI)Ihm>n%Q zG5-C3xaFV<59{q%WyhzUt}7BXwVFJ5B<#vqrv7MK|3NTUZ@b`^oo}|Bp7k%-aW-G4 XGvmqNUF^0%!x%hW{an^LB{Ts5HGezC literal 0 HcmV?d00001 diff --git a/img/admin/list-next.gif b/img/admin/list-next.gif new file mode 100644 index 0000000000000000000000000000000000000000..20f5d922585d702d52319e7c7623dc6693022534 GIT binary patch literal 53 zcmZ?wbhEHbWM$xFXkY+=|Ns9h{$ycbXZX*c1LA{Z7?^lme?3E{4--Rqg1uw980ZN KIvz%14AubDe-J|e literal 0 HcmV?d00001 diff --git a/img/admin/list-prev.gif b/img/admin/list-prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..69dcd1b215cc2adbd93e13e035eaa16a6ca3ac33 GIT binary patch literal 53 zcmZ?wbhEHbWM$xFXkY+=|Ns9h{$ycbXZX*c1LA{Z7?^l^nAtmTbH|zl7)CKLSOWk* CE(=Tm literal 0 HcmV?d00001 diff --git a/img/admin/list-prev2.gif b/img/admin/list-prev2.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6981829192aa70825cf4d4ecffa6b5daf467fc8 GIT binary patch literal 62 zcmZ?wbhEHb8iEi+}odO MYo<{9 literal 0 HcmV?d00001 diff --git a/img/admin/localization.gif b/img/admin/localization.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1d63637fdb56ea09dab51fabed26e9c8078d1a1 GIT binary patch literal 1067 zcmchW`%}^f0KmVNcGarGtvT1WyIHoIR$gh3wRt;-sJUr#x9M?dhN)nemM=8XIq?B0 z(!e7Ih(>ncV{U+gv=l@V5dnEWMMSc5lK31rJ0Cm$iGA+#`{$=mLSp2*3hB zROR`LRTrS(pznUU{6l>-1Otx8#(qz~mV!@4K29qqr{=b1Bj~v>PFleqh`YluR2RIm z8&SbV776c_4&6ZsixE?01ykik(wt%`ym&0PbPQ1{%R`Obuaw`fR+Rj#Eh%qpK@1K3 zNF7V-P-ZZtnVqtmT@x8>TP8;j=PKbmRYAY3fUn9IO78uo&eswO$LfnrG^AWn3qON_ zg^5rny7NMD?Wt`|F%%{gBPgsFRzKn2?P-jCfdLObOcdg;)vB)7D3Ew@8BU2JtMiC5 z6ir;s5SPdszL8QAHDrj19A_rSY1-mVv{(!6r^)sl3lpkiWSgI58wXJO=g4_c`J6n} zJCp9UXL{|oJQD@;igLHH+M{`}q_6N8sy1e_ebf0X`ifOU<(dh#F?(afmHw~mW&`u# zuY(l22wlTwHNC8_v!ID`Y|CULN!?5xK@)Tsf}xIPBDR@Hv>8&ng_O+D7z=oaf!&1C0{vPUz@o>6xg46G^R z?+!c9CgnR!-Ai(TXGG+b3SJom9>Wy3K`S7LCkSFYOEu3{FL0D^_)7N+y_>IF?4Mp1 z*;hpKV%(;Tv?(Vp>w10qKUZ|T%~yRg$EeJ$k-N3(1&!V_X>e;zOFHAS(dIFj)?|(~ zv3=D#y=q%@J6!AHzrCt0=jgUivh5q)-jFS>z45Fs?yfm^*I#?zdVPEPwsy9*cea85 zk&sRQ{Q#f@&h9n$o&XN+0@On}tRyw)*okO+*kw*u$WaoU86J?R-GB8c)%fAuqJ@*f zf>i8#zf%$eu5Ag4`Yiu=cQPg7+?SF%Yvd7CcruvT^Im7rS>GHQ>HMG_(ihrxn4G9T z92nW0l;wrUus4W1z59G%>5+H9oPYWT&WvNy3nPHHrINTOCvR2Fy1Yr>9!UQb<{wGC z?f=mQ?RaT7xFH4$E!%>gL`#x`?_}ucXjhN;<5>Ldm9Rhwj(09kd2vAt_v0SmeVzm@ z39toU%B6=s2yh1WUx9#TIl6FM(D|g}nnn(cQTNH$J#k#_T*A8vAW#k|=G1Qyr>`6f ZIg}E8D$4It&D_CYSdHH^jGrIy)qlM|F4q76 literal 0 HcmV?d00001 diff --git a/img/admin/login-bg.jpg b/img/admin/login-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..135e4d128b5df4142a7dffe6591961af4b4a5f45 GIT binary patch literal 12222 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 literal 0 HcmV?d00001 diff --git a/img/admin/lv2_b.gif b/img/admin/lv2_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1d164d600bb4b88db09862b6ec32ac999c044c2 GIT binary patch literal 81 zcmZ?wbhEHblw^=%XkcJyXlVHV|G(l-7DjdkMg|=QAOOiQFlqGkvz>g)f3a)JrOeG? iyQAN<@@h=G)5NBkX_xbQ?+3N>k-6a&a&LlKL zToU9L{Qp10^;5i#K(4ZbP0l+XkKwxA=B literal 0 HcmV?d00001 diff --git a/img/admin/lv2_f.gif b/img/admin/lv2_f.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee3a5ef3f06bd058ec1c2c61084a23b650680d7e GIT binary patch literal 76 zcmZ?wbhEHblw^=%XkcJyXlVHV|G(l-7DjdkMg|=QAOOiQFe&%+vz>g)f3a)JrOeG? dyQAN<@@h=G)5NBkx$PbI@lQV2%|aO%tO0#}8dd-R literal 0 HcmV?d00001 diff --git a/img/admin/lv2_f.png b/img/admin/lv2_f.png new file mode 100644 index 0000000000000000000000000000000000000000..10a601c0620f24b60c83542f5fc91c3858b3d0a5 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoQ!3-oz7qkBdQk(%kA+8M#4fXZ)Kwi(rf9XJq zxg^Lh`2T-~>!)}ffm~Tn7sn8d^T`Q^SS30h^Z45Kq}*&~>AYgB<;*I{(Epv~--1gm RGk^*iJYD@<);T3K0RTU?Bf0

    8+^&x0!)}ffn0k}7sn8fEx881yT-%ujKh$cO1E>B9ZxY-T&q*vH#ufx{8+n wm9Ki(%ER8jTY@dKqIXyKmJ)lZxWk5WjQ`H5{?eV(39^{M)78&qol`;+03``CIRF3v literal 0 HcmV?d00001 diff --git a/img/admin/lv5_b.png b/img/admin/lv5_b.png new file mode 100644 index 0000000000000000000000000000000000000000..d09db6c530cade88566730eadfce0769ed0a4f54 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^$v`Z|!3-oHb6vU$q&Ne7LR=df8tUuofxMoL|I&dJ zb4ie2@c;h|*H7^}0=agcE{-7{$CDEl*(Mw~spvGvgO_LVzXg-+B|3$c@3xm%DJtLN zaH4_5{qofVzmg{`(>`|bQ`Qyv=7o1;=Y3>kSfL@XYQl>(Z-6E-c)I$ztaD0e0s#9) BHiQ5G literal 0 HcmV?d00001 diff --git a/img/admin/lv5_f.png b/img/admin/lv5_f.png new file mode 100644 index 0000000000000000000000000000000000000000..933b08b517e369430624458d64b1cbed201640af GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^$v`Z{!3-p)oDf4Se#e_Z#Yh_&uf=`X&hB9w~0A{an~24=PPHbEd(0N N;OXk;vd$@?2>=s*H{$>R literal 0 HcmV?d00001 diff --git a/img/admin/lvl_0.gif b/img/admin/lvl_0.gif new file mode 100755 index 0000000000000000000000000000000000000000..379e26f7f329430ddc159e8416de436fedbebeed GIT binary patch literal 85 zcmZ?wbhEHblwy!zXkcV$XlVHV|G(ltLFb~>#FEq$h4Rdj31pDc{*42%pq m3_t)<&cGzz)4%fcTmHp!w%qF8d~eTh{>U9B literal 0 HcmV?d00001 diff --git a/img/admin/lvl_1.gif b/img/admin/lvl_1.gif new file mode 100755 index 0000000000000000000000000000000000000000..5b27e6c4f2507b7487d2d5730bf5e1dbbe8d7892 GIT binary patch literal 97 zcmZ?wbhEHblwy!zXkcV$XlVHV|G(ltLFb~>#FEq$h4Rdj31pDc{*42%pq z3_t)<&cLMH)6aJDE&t7~Ew?f^yH)(YRl7*I?^)oyv{hX>ulH_HJ3n1kl))MR5ac5U literal 0 HcmV?d00001 diff --git a/img/admin/male.gif b/img/admin/male.gif new file mode 100644 index 0000000000000000000000000000000000000000..18f749232446435ae3c863ca6760ece552f7baad GIT binary patch literal 360 zcmZ?wbhEHb6krfwxXQqg(y{x*t&g*Iz35qe^V;*DJI_63? zryu?4-}LO%^_TUFt`$!@Fn7!Kcb|T&J^JF>i$4o?-o1G5DZ$gyWcm= zKU+Nc(4^JpCvLcZ_`;*f+g_i!|NY#PKlh$}Z&`Bb_{|URzx=xW>d)45-;dw@Rx;!4 z^8Jr{H$2{O;&t=li%$iww=BQSfEOtKWMO1yP-V~o zsRH?lfvxqxqyi5esrH%t$*n6a`wpE?w5oOV?&;1v!hq$?`BZWtSTs_sL|yr sl*FYgCBe-l<0h)5ptyC3jEOs|h?s%~s|;s2uYfeaj9mOFCr1Wr0HZaey#N3J literal 0 HcmV?d00001 diff --git a/img/admin/male_2.gif b/img/admin/male_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e170f93d7f1d6099e406464fe4cf57663ffecc86 GIT binary patch literal 1479 zcmZ?wbhEHb6krfwxN6UE;@-Eb&;MM0{%7Zz7uTNuJpb_f%~yZA*FTA_->^5(|NU&)<&r|o)o`tIjDum6&p9r7b1P#bD+2=sC{P00R+N%v73AUuwF}6zRmvzSDX`MlFE20GD>v55 zFG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV640d( zFXR^Z`oay)E7k*hNG~}*SHB{$K;KZ$KtDGZMv>iKmOL5>Q4jB{Rj!z{JA9(9qn( zz}(2d%)-#n(Zayh!p+sm+0xS3(#^mGW(GFB=H_me25yF~&aQ^8hK4R~78XX1j*g~4 zo{_Pkp^+I(uV-FyNn&1dD$L$YpuJGNE_n4?ITxiSmgE}qQ4YGH0< z=4h$})tf?2nCSx@qYp|PNQng|1WbV-COqi_Iq=Mrng`4=MZm1V`2XMEKfizd{PF$U z*Ds$xef;qL-P<>>U%h}$>=IY|?cXql&E@W4PxO0iYIfYV%-!7@eBhC@9iNJ-3yU0=^Gg;zVvoKeTsx>tl- zgVBV^LeyDUAuF6oS;k(p&55_h%!yw@P|+<^oS9#mM^cj`Sl57oK{L7Yq`f19H308S BLf-%Y literal 0 HcmV?d00001 diff --git a/img/admin/manufacturers.gif b/img/admin/manufacturers.gif new file mode 100644 index 0000000000000000000000000000000000000000..659aace81c639dac0e3905c1a6d792c94051c20a GIT binary patch literal 280 zcmZ?wbhEHb6krfwIKsf-=jV6k%$dD=_by$!w56rx-o1Op#l_E_J=?Nn%gmWGv$M00 z9zFX0{rhXzuBD}=O`be?_3G8%zkjc(sp;zKVju!2{$ycfXAor20jUMq$-p`_L8Z^< zvP|+Sw&RT*Jyk4@TSSg_^PH{_={e+-(Bu%&5%;9P*wWXeGa)470!wF0!bS%lUSu@dqsemBSV>Nkhb4}ekAst$vC6)liHVDgO^G)qMxcvBKz{=B yM3eS*CPuCqycNtWEHQnvganj1*w}c4+c)qr@Ea)!H}EOdXen{C1npO3um%7GB3L{C literal 0 HcmV?d00001 diff --git a/img/admin/medal.png b/img/admin/medal.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5377cc6b5cbff833f638aeb313e0d3607ef033 GIT binary patch literal 588 zcmV-S0<-;zP)Q}atMclX|NNJ7%4KKSxD?%wCVckd-;Mn7)7xn>tnUtqPqjF=)S zJt`%TejQ*EdBv$W8!*B(aujyQwk?< zmcusHktb;MmF)gASlq_c_0;LfVcJ5&Z!%+3gp|ri7gVKWnH;8V&`wWoAaNi~ut4;b zMggK=5!4T?_ivYhBdkO8d(44Gsat4Z7Is;80|<)v7NJdj6cF5!Y^{(a*`4;Kmo1RV z6lrgMr`2F-1R#$2=IXtgx-G~SFpHScs9 zysvZ|62oGO_y*~ZHP)Ul*4invGcWA%o&bPv_mgSgpc)+&iIhSIT#LF(SrTD>=2drq a`tc9!{Hj7Gw`KeQ0000mX@>cK|L!876t}dXEXxl5X_#8e zU`=!PGDS#cyR;2l-}~yPMoguH$e;YWaq1hPb$-ku(%PH#+{dwW1;+F6^zHY!Sg-(H zp+x2Sg(gyNj3!1)7m%=5sJ5IY2T?|KO8dwt-|RnKaxX-oCl$<@(e_Hk>qEz^+PS!jY^=N3$m%%bR*UZ`z5XnWsu-o-CVlwtVin>ID~S z7hSAhdik&RqjeiMZ`--MY2lgH#b-N~oo`-owRPpSo)s7RS6}Q}ce8)f-6`uXPv3BL z`o^o%x8Iw!`P!T<*XC`zK5yHN`P*+y-Tq+Kp2rJ!++4Kt=Hgv9m+ZQ=Y!49KUcUGC z%6)fM?Z2~n|K0fqp07Q0Z{4AL>w)O-y$y%&Z#Z&)Ird=d@rT<^JluW~h#u`Y`Do{<$Gc8H-g5?sp6omKbmN6jn=gIdcIE5#tKW9t z__6Qyul;v^9X)#V#EBE9PMtb^`t-ST=Pq2haPi{BOP4NPzI^%0l`Ge-T|0Q;>7k3y z4_|tI^z!qgS6&>y`r^dZ7pJbhJazrmnH#Up-FkiS-k%G1-dw!%=F;7_SMI&Na{t|l zM}Mz9cz6BbyBm+*KX~xq`Sa%=fZ+4@KY#u(jDn#M0*XIbm>C#&8FWC71?33_jy(+0 zCJoI?yF@hnS48Z5At+%nA@lI0 zv$IUn&-4fiALAC+6%IS4sr0;kj$~2T2}MQqzKN{9*LXM&Ek4FArr}ldg2CMXnxpLaHX=l!ydGh4Rf&~j^&z}9@!Gq4u&Uf$LwY9a?)zvLsx^&K*Id9&)nKf%x zYisMFLx=Y4+4JSgmkARll$V#^y?b}vx^?aC?M+QhH*VZGdi3bcn>YLW``^BOyJX3d z#fulOU%&qN@#8OFzHDe{xPSlt)~#DNZrr$G!-lS|uJ`ZXuU@_S*s)_XXU<%^cJ1}+ z*I&GNv2EM7HEY%YwVynBvaGD^_3PK0H*em%ckioLujb90S6NvJbm!^Qr(0TD=Fgws z+}!->)2Gj$KLg21>37*cZ+eyl`33){5@6urm>&u>^pK~EV~E7%+=*9(4mt3+o(x;= zRk;1&-Md{XfB)+zHSjT?ex_M0H)-}{4}~=y4NsGIF)Tm-?g_vCvbin(HuKcq&i4QF z#>*tTq%(eJPnO%vA1aT77Oe}GFu2OKa!Sw1_A}Po_n*qGUN07-X6pXXGBo(|yJv>&+b4)*hzG3im^>bP0l+XkK DR<&2a literal 0 HcmV?d00001 diff --git a/img/admin/module_install.png b/img/admin/module_install.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0790e5ccda55ed137697114dff4420e30691bd GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gy!3-q#EwW`|U|`G(@Ck8kTI2KO%a@5;17__E zp0LTia)tN8yOrE1I!0=*_#=Ws5D^*H~uHwas1N{`SM` zoo6eiZ?k*-?!~J&FD~8P^z!ZVH}7BGdUUyOlh^7azMGG(U2`OM@+RAtZ=N@-_P+b% zV9j#Z&!0b?y1qSYPSEC)OI96!;$ZZKV+nm5Z6wE9%iOr{?r*0`cdS%^>hdb^+y;QMSYsG=ELswR`tnn^ithxF~ z#QP6#7Vay1@%rhL7muozm^Q9X>)hZ~vn>4P!|N*!gx0Net61*6_2jHgCsNiN^=Mq} zHhX8myj?C+wj@7${dmQJ)=PI+J$rSnXOsWpeIY-zP!KtY|*^k0fmcf7VR&2_Ud}adf)WfcH2($ zUVm_I{+@`kC2^mD-Ufp=Q+56VBcQ4z$S?T+Kmmpq_Ak_cuDIyw;us=vIeEnqE{P2t zqBFFT1^ak5Z8<35Co=KrLmhYVb6G&GF+BrI3dk&+s*2* zz3JPB4?f(#cgxZEh@0)}d-tx(F?@XV=;PzZpFe*-Bg63N`SY_f40|LQUfsNTuCeaR zmoG=87+&AK`|{e=TMkB-S{ko9ntXiu;zDKVRUfAl(V@58tZw-@zI*!g-HR8W-@Us~ zQF7SL_I^Xnt(cIjZdPw^-8`8T^XB@sV=h+5-RC;=uG4Ef!`tacX<)-?hAQwLT^!hc>srQ@e?s!-O4L{~)b6lF?nj8py0)zbGcRPR{ zbT0|=3;s_Pz;Jv{SU%9m{hlt4ArhCTUN|n)WFXLxIE9h%CC4|TYa6@wx=uX#>tFv8 zPR>(3;@_v#O#dVO@Mm$$|DO+5{&`pBeJ=2{q(|qf6EjOB&1XXhlb8ES z=#=vh3(nk_zpl8jqH|*1X1P}kQ=xxCbkBO@w%2b@R3)0e jaoknI`J-O?bP0l+XkKL2W@p literal 0 HcmV?d00001 diff --git a/img/admin/module_warning.png b/img/admin/module_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4c1dfe48eb1ad242dc329b8e94f0d757b71142 GIT binary patch literal 968 zcmd6m{ZA8j0LD)?X9Z0*K!q8jj4Y0EOoahLap1U8DndyCA*q^K6H$Ix$k-1q#%)o+ zki}$gZe=E7@LgAA=^~bDZI3Ifg+fc&I6@XH4RqB}df$8N-M4qOe}+%;JkPIB^2yWJ z*r48+`fe(MAR9Hcm@e6ylg?DUkxbj*z7zym^Kaw9W|i!0N#IJ!Ss8a@GVzJz+Ak9= za8eCDwa`&45&PtuX$eOeP1DkNrTn;oTR02=fKRLCu?oq)SF{xfo*p_(f)^w-Z2?pi zP%GSIDd#uHzh?`0AxqZ8M^PDX;yr!z|BKA*ZCr(D zc}e;6L12WR(8dWh!!X=GN4aS|3zk{;1$O)l?fpU?+D1>E;N7({t^-sA5=!YIDmscp zuSWFN0cw?5^2dBC$y&z|xv_}~@zIB(ISby;mLH&!r9hZci#`oBVZx|BZY_w+R8li} ztg}hRl`(fY@5tlrA5cLP{qh+{Xn4ymmQ;hVm!UzNsAfWb@vjP+yur>6M+1XkB_#MX zjIWp@M?f?TC<;VE;<%D`mWbxcYMiCeLRtvK|G4qOrrkS?H&3+nD2p}>D?;t%t;bVKZ|7xR{?DM$-pzR1J8%``_a@MylXZO~Bt~<3} zJJq66%>7x~)#>`~*M(D^&6%6*J&%Lk#}&7XgMT7P%dxkqQ0-C7VaH#Bp3+U#@FrX8G8xwWKiU(=TR>lWRZbL#2w zIajCN{d_ZTZPxqm?>1gt*Sx>BX?uOpOuw|XNk9I4?>^Kv@o4wTJBwx>nzrlSwzADd z(euOazq@3XD36`9iv4j4Iu|ISLB- z%DT*&N__GPA`&dplKf&~x<)KQ?3{c|Ox*md#gye)c{JFZ<@H$9)>w)Oo9Vc-F=-l# ZF<7vNs+bzfDsdjXro$s}&B>9$8UUwUG0ObdQifCF$AU~8B zNfK}+39Xy*B>`(~-F4G`=F<9hem_^6%c)&FXJ_Z^^L@V0bDqNkz}qj{j}# zZeO@9reUlp6SNT}nnMlz{}Ol@RWp659t1x5U|ukyDNv7E`Y!)K0>m<7NwP2v=jt&0 zYZEZM?10o;gX-~H{5=I)U$ijhq!EFSUOfFU49Aic^^;OeWrmwsRl>e#!Qi49kCz8QXI*Fs%W>6yY5gAo^-S}+>9wBN^&*Q zG4^%@n%U-UIOBpcEW_o&vdtYO7!zH`RL|u^8B9?mQyE*vDii6lzaG63D zz*;iScVUV&Xl!MOt99T#1vRm)i>fe@9)~>CfJ*lb4xalQMPw}mVP6r>8}g3uG&2f2 z3E19H@MWK&)+a&#I}?VN`U&jhveixBBXAs3D>Q0?RU734Wf17|q`BQ^PVqDm#ZlG; zJ0#SCp0n#%v~9!WOzaYYUUEY}*N$SUAXLyJ&74yO+uzO2QPIh3jw?y>RQU(_;(y{dIK0do TOVd4b00000NkvXXu0mjfB?mx` literal 0 HcmV?d00001 diff --git a/img/admin/more.png b/img/admin/more.png new file mode 100644 index 0000000000000000000000000000000000000000..0be351eb42a5996cb4f7abbcf6eae0bff91fa3e3 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)Gmu>My}kfQDF*n2xO#YaSX*1$+uOUky2{GR znwXeKNl9sHY8n_AC@LxfRfWvs=mJvQB|(0{|KWha%b)QRP}tAY#W95Adh8i%z7_|D z!vX3u`Jen_UzRW-?6;NqvTT{vcY=@anc29d(T8P+sRGN2tI{t873&if-*3ESx~(-S o_O0skdWMSk<#!$4IC$0DT=HaE+Wf*_4`?!jr>mdKI;Vst030kuqW}N^ literal 0 HcmV?d00001 diff --git a/img/admin/msg-forward.png b/img/admin/msg-forward.png new file mode 100644 index 0000000000000000000000000000000000000000..e8156909d43983d868b967b52aafc17f8039930e GIT binary patch literal 1326 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 ALjV8( literal 0 HcmV?d00001 diff --git a/img/admin/msg-ok.png b/img/admin/msg-ok.png new file mode 100644 index 0000000000000000000000000000000000000000..35f391cd76bb71ff326b010732107b626c9f80ed GIT binary patch literal 1513 zcmV=IdGqbLt7XoNyG{nLPaFoVC~9>wI6%&fc341R&`DOi;i; zz(BwNg1VmXpD}h6eBh3i#2ODdk^iazM{3z(>@5EnbYCIMz=dadGlq+(vJ?`3^{;#k z|9uFlwk2%B;nP6pc;33_VL)PO z2%9K$YoP7%o@uB3Nv0s4g>^pLjqX>upf*rWLdVaUl-q}nv2^H;2D6ERNd{UU?VeW7 z{A6GOMi$>Oo`J64vO#U2oLkx+8-zZsPg0ODVIogr;M9*hr;XDOGX(K^5`X4tD$YO8 z1hs*3UTJ-lf%DHYapI;1nxeUEB1AOMd@pTUXt|%x;*0gB1!#SojC11#oO+NB%E_ko zMgn~wgfI0f(Lm#!y3t6iGp~YF&ItvH8}Gm4UM-GK{?q}4aGulTp-!lL<6-qw3DbC)p93o z+~HX;eXnxPyF6}p*WVL$qX}H6FyZKY)ZbO3j{#M%8G%r$N>A7|}%4wOGkGS2)k&wI%aVGr9#0cQvRU zjs@jpW4rXNbM1F{JxY`hY@J|mD<{(83TMIEzY+C!)TkKR2FeN7y4!K67~TXH#o~?) zZu@uaTW~vXINYz2O!K&7S10Po#nKbyT=RV&=4|~jLAJ{=Z;21baeC#Bfz6+2wGj2_v-$;^T|vzo_TFTL*3NJlW!1 z4dkTRm!hacg`%@zvMKId4@+M-%zY{(TSH*%UMIvQ)b3B6g4S_7P> z;*ZRkl6Z-M1I?>N*hG?fp-`OS_eO5RDn;TY2J#xekU+`SL{kX%(L*SH=VaHdR4iU% zAgBKGNw5h%gJhpr35wqtS;tpEePp&E{>^ig8_25t%q?t!4`P}0P>K~}s9p{}WAT#v z)-#kF*i*gSBh;~l*Lg$Lr=WPs?5bEMig&56+`z8NWnN(ud_2gg_yiRD&Cc?r;A0Al zcT-!r0s0-%Cv1Xu+H}WK;de{9q}e|LA5&Pohq}rQq}i9qLNGzAN2+Zx30vZml(I#l zcrP`T8=wcth6XnATu!zw6a;!A$r6g#!ygLbebiHKAjur+7yL&)&uRW)isDJ|9uj+K zLcEMx$_?mC7x;}}f~JSg6by<*IChGcSx316opJt@pdz(#G);J~pqQ@nMDc#qP;Nk5 zGIz?b2^OuP70M~z&+*C)Xo}}3f{JAkFZeozvC0hu{>>UN5HJuhFk}1!8(1S|muxLg P00000NkvXXu0mjfVQ%6# literal 0 HcmV?d00001 diff --git a/img/admin/msg-pending.png b/img/admin/msg-pending.png new file mode 100644 index 0000000000000000000000000000000000000000..d912a1d5da5919a6a66ca3dbe25d74299ed8e649 GIT binary patch literal 2197 zcmV;G2x|91n|<#oH;p^F#9$pe6Nyk0`S=JiSGhO zfIYx@j!zzY?eN08z>$$^<*O63pQp0>eo8yH?Ccnm2lg@csofCy&;YUk zWde{PNFQMo(o12)z?dO!T;=L3ud?#*t0x_h6CZ`Z^_p12ie3O0_V3?6RjpR}QsoUE z`ScQ>czhpQcI<*B15J-ihv1dK8$rmC4ghopI>G1|j|5Rxu+^}7?E+U``4jCAmS1#0 z{&t&!?{&;LHZy15&gW&%@20XWqjh7R*jg zPBa-E--=m`NmL3lM0g$u4RRg9T{DGo5@*ni370ae+wW%l@S}Y2*12b{zxm!X^_uu0 z@XMJwb8#KP4*=iv%fXQyU!G<2XqXs|jHVc0P136Q7%6;q-;)m+F_Euh+yG;0kcQ5SpjQc291r?t6&w`#+0l zSI`SFt!tM6-X3Uy$>0VfmAjk}SOKLINOq~x*BZLdSZj>d#ElFYB?O~BJ0F;0=NIpz z9W|%Z)p$BtY64K&v6WJ_il@rZ2;gc=W&m%L*1{El(*prigB8N^PS6Up0io42hK`E4!MgrI}4hC4%Fuy`dg7HTYp@hIkNJYH7NWoJ5 z0eC`l*GQ8f@W~S8W(%~*DI$7k)JvgWI^}bPD^u7#R(pj25jYDg*Go;j+!zdCOAzA+ zfsH0wyEvslWT1SjeVKvwZEvL2oXKp{s@p4N!>h{2YRK5*_VC>EMq#oxNu%9z{<1!R zikIL8KBlvoKnR7=s?$>#3!wl3y8Aa%pwCTnL#0=@hkH(Fg-Tig^S3PK04jch=X);N zeR6Wd=G0CGEThFs_tHL8Z3Ox!((D zSO8Li$~x<+qz$k<5P-peF?|4JAUs?5$echoeh4Wv3bDe z0@Kd|okcy6(h6U&fYDa_rlYycuA`Lg{}&6yt>G-7H8y#v!e+{Wke&r0C1}@_umJLq z*`ZRl)(W{chXRm+muo)-6(DWdSsnB3}iL>!PdqP7!LXaKbA%bqYG^Z;4@jK+D2fJ`&I7CYT%u;6@yfDcyBquv(TD zgvcFN7pdd9zTg8o#po2{xNkN@A<+RLbOKr;0|BseAb{oAC&|EM8XX z;KKJA87<)jBS<4|=6$i$9?A#u{bVOu3L_|w`6MkhJrKaP_83XJL?y^0j6o|!V{w(` z8!_!zUjbgnR`M+u9rgkbj&1d- z8jtdL2(%6WM{fz>d}Ewes)!Q7^`_!C^)e;j+w<)2Tkj2V6!`}5M!hDE&R=gIS@h$l zC&qk6J!yp*)&jW|+5HlQ`Lj*_))zp2Vt#O8RdKzoXlFf#0i9+YzZIoiKG){`f2F75Hc!sXnePpi2l};-2!sOW>NRn6 zIpxrDYQE(Q_Ln`IVnPYAwv|Y30c6kU#)0e^r3JhIyl}S3R3qaN zpbAX8lec-`R9^qz>ch)W7WkO2i@>jM_u;-i(9aj{)Jxt07WhAaO?}CYM4?RsKq-Y% z3a#}W51{WCnkb40!;nU!vAMp~1IifVMNvc)MZKZ5wHW}soFvIpK@fB%(liD5!)u2Z zl70)EZQfZva4d=x@WShl9iJFUlH@7(n%DwfT2K3T!X-BQzuWv5 XJ;`hW_D!#o00000NkvXXu0mjfpvn_B literal 0 HcmV?d00001 diff --git a/img/admin/nav-home.gif b/img/admin/nav-home.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8847824364c22aceb6dbe5c68526a2f50dc2131 GIT binary patch literal 597 zcmZ?wbhEHb6krfwc*ekBUTU;@_3CY9Ce_u|;k|(kUOF4Pqu;-O-?X#3xVZSv?VC%N zF5TDR6jc(DvpMn1nKPGG=BK5l&73)NUcU3e>-)RAyDRP079Uu+q2B4iy*oEg96Y|H zEOu_#w{PEe^@Q{$_}1(zTwCumEh}`-%q-7x*C(GJ^_^;-5M!~U#roClXl2!A0J*=;&!mheMgmL;o3~! zR`=kl7;y;FiNud96g@cyA5 zuc*$5xSHtL#UWFotlr!?zPH6Gc}jB8j?AT{HVgv_6o0ZXvNOms=zv@SiW3I*O%1Y5 z&9X*DEgdcTOjfR)9aff(j)pw_O>RB{v%RMF&lE6paWT}Dljv|W^q6X9W-ljgY}XuQ zI5&u&ot-OGQQ1OW)@i%p&fUAYOoZ7?lmeI7OP)C4&8jXYC9CP=F3ZmOkds|jRQ^`8 z>26LTA?7EXdL5#>ncr%E_#~@p&cPzi&ZZO5(C^wW>#Py5km(R3kGM7y%Zd#wEt~@W d3Qt;J_Iz8e|+KXc|k z1H->pul{Go{P42=X=U|IM*Me}$G^moubiC!g@u3VX?~TL{Qv#?cQ2>^#>RiVy#B@o zeiIP*mlpX)L*u=;_%9W??+grotj+&h8U9gI{2lK3E6DkOR5$~bfZ|UUMs@~q1|5)j zAU`p%O*qh9;GrX?*}Y^^(w+dD-o7o$iiLdvE@{z%xennEHx~v8Xo>bZ2{Uqw%eE{E zxR4>i>Uxx=qTGn3qNIdhfUj1ZTSzjqiIrbQrafOsPOiLp!lVvvX*rHQRvu1ara97* z#XS7{6^sJQoMaSKi)L{$ax$^WJ8xEFo+u-{VUMef7~d(TGsoQ687^L8_r2=s$Y2cs DaprA8 literal 0 HcmV?d00001 diff --git a/img/admin/nav-user.gif b/img/admin/nav-user.gif new file mode 100644 index 0000000000000000000000000000000000000000..27508ef3ec5b4d2a1e2b94556773fd336a5d3786 GIT binary patch literal 354 zcmZ?wbhEHb6krfwxXQp#=BxVb*|R+}OG4+|uA6nXbn4QpSFis6|G#3@l_Q7NZ>{&) zvSHKr@88dyIkR`~-u3I(e?BoMc*)P+-S2nKY)skx|NZ;-87rRLyLWF|lK$kaM|;ow z>72Z}{ownfM~{}TI$yr?bMe+U@k<^=Fa5t`%ff~==Zn`p={fnMY}SUDwcodH-TLF) zg3Ptg7$^XWKUo;r8Q2+gKxTma#K2a6pt-<9N2>qClL>(|2n{*q*1BY9&@*lkW3 zlR3c$7aPhrtiJHz!G|n0E}jD^C(LfXV|7v0Fb-!j z_yivVJ`f26pW|Ck@40XXX_GF}3uk6?e&6?a^+FBXe8tyT;0>~=d~r&_H-C=^mj0`Pjh4{o>n)Mm52 zWT1{Td?*wO9Ys-Ky1@ZtW=ak+~N8Fzs0`yjfqnaOqC z5%}z}N5|C#^QC%z4y$C60^{+R7LJ8Nfj|JrmA!xJS#zzElY_?D>CNohSGqKG9t;LR z-UI}LLEw4*i@{*fJt=@6<@orZ`03-NBna{qZ+fuX?LD&TA10IO=wGlV@IUn%86YN8 T3Q8a700000NkvXXu0mjftmg`H literal 0 HcmV?d00001 diff --git a/img/admin/news-new.gif b/img/admin/news-new.gif new file mode 100644 index 0000000000000000000000000000000000000000..f310c6b405221701e084f04c33ada05221ad46f7 GIT binary patch literal 333 zcmZ?wbhEHb6krfwxXQrrzmwtrh3WrSy8i$4`2T~w|L17@-;?)$qTv6x*Z<#G_5b&` z|2tCuFShu|HKj_ zPD=-qna7qiEELe1>Y!LKp}LivM6nk(Yy>G5y=mHFVlkIAWQt=I1WS{I%8+T%~u*P4$*zxw5x7dno;*2~Z3XrLj{tk_xO0n3(+q>*?Af#A&Ehif67b^8bbk0oWPEZe>snKCP`AGim2d;HM&!JT{OPXhZ#H;jD#q20T=`|kVMdfPSTO%(KF9H!}jgldHGK-@Vh@wbMJ%WJoKsE z+;!(Rv~Wn%Vnc!@C9x^aCTQ@eQEXbq#o2dx`S-u!?Njd@jzC_z5e!@j;PkFtyS9#v zjq$$u3!`^cdHAyrvt`Sj6gAMo;mF8bAF1mjP5RmZL_J;$3g5(s9Fq!3f8gx7Q~crZ z43{rnem(*@dYud35tVUpW;#FCI&QBxZ>#s7OS9*38_zTOr7to(IL4*-7OBiP@VO_b zqN;?TgjOHAe~TCDl_s+nD~t?(h{qoPCZGAjqx%Mj249<;%6>dKm5r@o;p3B2*-tla z9R2Ip_dc;df>_xDAq29K2J6Q*QL8jSEs0A>okdm3FeL~zWf~0RjwMV3L-*Yc$)Q`w9j$x{U2q=Cw5R>T%4#@YZHs}6#&M@ zH!!wg6aC3Bp_x#fZ<1R>mJD$I!Wn=!R|O!hLjS-3A|(KeLyX`|%&ZE|DiQ=6T$=$2 z60DRu z0zeR>s1roWidJpb0M1`?GgmT@lO!o3OWCqw5#tc+5bIIvQFUcVWFTg%7458dWWRIH z)ff=B#DI#YR$m0TxGDfpj4`EwOH-5?u~EmaL(^8UM!=Y8+z!oOss9+g0l3;bwR)vD z0Ko{xfcTiL05+5isBx(Gi1FpvI+P9uVu<&sUmA;FVxl(**^+7Jk))ibQA%jO2L?h} zO5-0hfEtTPl#px5#3ACa#+HD!gL3UQZ`<5!kWi}twED0@0a)ff02%_mW#V8k2-bMK zO-Mu#TaK;uSnU9y9xoCXF72`RQik+yV(+@=>Y0HMAgFdRV2wrWQfU+CVy4S7s)lX@ zx7d)Y&D={9YnQH%b6Nwy!0G^`G;qrUCV<5t#v-;TrQ}^Xwias)hS0IdB5J-^8vCN{ zgPs7G(gU6Ilsm(Z-f%qBq=3iqX*Q- ziESw(HCP2>T3hHSpRVo0^?1O>yKpScz94mu!NGK(Rx7pwXRZl=VvwR}Mh3uIgE)(b zLDbS{=3JhuU`#2WG)Wj5Tu)zLKPsX0Lfa3%UCY-5Kw6$kP;rD{ST{UCtyWB|3cwUY z_@Y9RxL9Ef-sdbk!FesfqJb3V>0>dx|`#+GukAWQK9+J+B|Gyw$^d z%U6L{C#SLl7cS22Pm;x_hKBnw#-XY`GGN+eIjAM5MSNgn{Sd$>S2c0)3B!vIQK_9| z{>&!+bG(A8zQ4v7uqS|TO-^Mm&CgZ$CyD!VlBQT|R|jAvK5N7qrWlG`dF%8!fPOy|!5iFo;5vyoHezIo%TpS*OW-jJ`% zOy}R}={~Srd_W)s_~GPKc0fe-iOA!|u*;P77-Qmg-g~NxbwXg(7sD$8xN^MG_k%P` z)(j-gk~;7l@LZAmts#U*AdCSMz%eZ!-jB5Q|JVBP(h~zWxSauBxZaDG^}upoxLKRM z2^jc4fLprRwN#;720&};TYgHqxdAL&#H-aRS(dT5xOi)QsRty4;HuRs)oS(1(ptY2 z0Q@@7^T*OOZ67F#0^qkh_s-|bO;F_irt-kSYPCwOR%=IO;@~YIp`Cl@UwPxuNMD}k pkHyEtI`HC3*}oZ@xz+#O=6~Sz4L-L9usZ+%002ovPDHLkV1kT^Zi4^- literal 0 HcmV?d00001 diff --git a/img/admin/next.gif b/img/admin/next.gif new file mode 100644 index 0000000000000000000000000000000000000000..b3325cd69a4af4b66dc35bc1f01e9dbbd5263547 GIT binary patch literal 301 zcmZ?wbhEHb6krfwxXQpF>bt*W@#C!SD^AVV794nETzsZ;!;{?kkCMBtY(4uyGVx@^ z(g${x7lL|kx2=0JaodaK$KQ!Z94=XOzkcOo>*DhX)9xzeo^4rsZ`Z}ov0c|HmOWc@ z;(bB)<(^H?X6$VE7XJ!FFzn-qcZ8F#$g^y7j8DC cteH9*)qz|>B23{bg01Z;3^LvQ6C4?=0r3W6hyVZp literal 0 HcmV?d00001 diff --git a/img/admin/ok.gif b/img/admin/ok.gif new file mode 100644 index 0000000000000000000000000000000000000000..11358801661a841c6c58afda919d72341986c872 GIT binary patch literal 610 zcmZ?wbhEHb6krfwc*el+|Ns9lzdn8Z`Qhb{r_aAWeDdkxgLe|bLnZm9UU&Mk)+~-5!pw)YIdjQA4p0);!(FfqilD4&9>C+y+P53Y>Kx{_f; zo0W{K4OHutG%8ip3Y8fK6Hxrg!pIJEkPgUEpg3V*-`~K{)ZEhA%FLr-X{j&B(#F7{ zuP4ICCt_yL*~(!q$t@})Bg(Dd%GJzlG+#+oeZ4xjnloz?j~=&@y6zrbP8Dtk*(QAv zQPsWs7+A!`-J9(A literal 0 HcmV?d00001 diff --git a/img/admin/ok2.png b/img/admin/ok2.png new file mode 100644 index 0000000000000000000000000000000000000000..4207a363cb342cb68a8cff0b5678e692091ba0af GIT binary patch literal 1162 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gy!3-q#EwW`|U|?nl@Ck8c^JQTPWMU0qWe;Ix zj$mYuX5k2B6N(mOOlD+FVr0o@W8tc27RqCl&k~c* zln|(77p`Izt7a3f_xE$(7TsmD9*j)hSTYEmJVe);20v zH!Rh1D7WQnV-fCR74Ku0Y+;w`V3+AHdp^a0ug;%qcPp64T zr=4HFQ$TSdhvH;TrD>e16S>r;acj)v)|ttpGmA%Snt)+9uVIszahtqRw}9bnUZXj@ zCbRiW=klAiD_C?XT6Zhi_A1#n85qq_b#Aco>NoT1wes!*B5Rj9%C7U(J*MdTPOx!r zbPAgq5IHX}aD{u=DwpU5L2-+Mvgalh&CgC><(0T3IC)t}>hh3`l_6QH!m`%{=By6R zSreSQHY{&_NbSn<;vG44J2DzpS2S;^Y}r}VzPq|}e^K*+oR&jHtp`fl4^?*^DeE{= z(Q~Z6V`D?#_SXI_9sLJ7CLHUUcDQrKvF=$Xdgh+%oqc-hypuB)9-Xo9?1UxfW-h-t zb^EooJFc(Wb${dDJDd02+r01YmIL><9elX$z@sgP9&JDLbnDS4JC8lxb^OVmTeI3^jT@3~A4?1GDA*+#Q1SSl zRylwF2UBTtvufuSV;zS>4u$&XujxvgZ~NiUs(bK|^!I74Yng*|_X#|d*?v?&KX2YX zPL((8f_eq>*aYuw;dK#ncW6mh-|fQI?BLO>_%)r1c48n{Iv*t(u1=&kHeO=jaGxPDAYKt|SrvQaKJY5_^IIi1v zY!p1=AkZ9P`uXqjytCRbnQu=wVAxw1YNNrH%AV@DkNqiICHv1x_UeQQ+t(j;^$VPI nUTR96KFd@&?o%v|^Zzj4=y9(5qAs=oXeNWFtDnm{r-UW|Rb)Ib literal 0 HcmV?d00001 diff --git a/img/admin/page_world.png b/img/admin/page_world.png new file mode 100644 index 0000000000000000000000000000000000000000..b8895ddecf57c8ece24f566d9b4a9d803e5a11bb GIT binary patch literal 903 zcmV;219<$2P)^$%%`*Fg>ryDtc(lF@?b>dE!20r+y z#Q*>(wbV5H`-E4Do={CJp7=ERhw15hgZi)?jRG88 zzVz(5;g?Td1izJyO33bhjg2Qc7FVY@f9!o)Gu?DII~vm-Dc?}3M!fsgjP?F(7`rgg z+xOk8XD)e?Zl=5+un`5!7kr?F=eq)K-5uqr%yU$1hLv){Vlm=)*5~`lwMciiXFu*g z)*Jkz6AF>#zb(Vx`Iv{bdGZHtlW)v(y5k^|xgSUc9%0}S20nrYrO}78ofk?bV!5)4 z=Ngz@+$9N1>>mA%IWx`Fqa240bWkiW;2TZgd8CZS0U}@mknC;!2;wi$eI@`h0y2JS`Eae0CW}q(2(%!m8 zWq$`PDU>LT1_y*bBv#P5<@q0@ttz$hIH}YMDvAigCc=y*)jY-VOpTd;A8@3t7Xh4r z0KTWOk;N2Ox4!&&^4B*no$WtTX!BXB)rg!y8dvGgKBQKLJNXRRp0}Bsjd1|LNQX~c zbC~fjrk2iL@4dYF*vt;}dFn(%h)n_-vzEIHMOKRkdF%3Lq|zBgKm_h>TEq!))nWjq zzn;B!?!(dQcHu$#=JF`cS&W~C`WHFW^B!~MI#k)>1Vk&eQy8P1O`J6V04{D@|7d6^ zyBABnh-d^H0FX&L07M||E0n_dp4v&Q%PSE9p#R#Hq)`5I_(B5CE#q dxjPz0{s-<+c#AC!i7@~G002ovPDHLkV1iPlpuqqD literal 0 HcmV?d00001 diff --git a/img/admin/payment.gif b/img/admin/payment.gif new file mode 100644 index 0000000000000000000000000000000000000000..de6b152045d7d43764f21c99002b3508025ec8c6 GIT binary patch literal 1042 zcmeH`{V&u39LK*yoH9?-I!lEfre$qy*0g9>Ia13!Ka=ZWnAMy-$2oD_8K#&OC(lIk zoMImCWa#dDT<)18jv_JP__*(d&L7clz4rR~{ljZ}ySO^rUm+PI#z;1TJYjT2=l8_C z?29ex56R=j6|>@BvExey6PTY9%Z3u)3@2$UA10Ry(#i$Nl_TKh2JY_Q;Q^kW;N=D0 z-r(Z{zP{k+2mbyL5CDOJ5EKN#!4MJxp`j2K1|-sYeEbH5vU@>+ex&@OM=jT+0{F&F(8ctSqe<0!c^McWWt_2X>TUE zudlDazdxg5lv*XER*BMUBpG$mjCyHigDkUQlJ;(j)+En*FVAY8&Tg5Zx6aVpzP;|2 z(c5Pk9dkLIb2%RrIbCx(UGp^q^UcFQKJk8{-BeyLZES$CNuw$2>$e*kprvK2w@Hqc zC?!;we2yu~KvB7^sK*o)*g_Sy*vMkB*lhOD&=7~i;c~esit>28@$qqiKp+$f#bU8U zB9Tg^)6>&~!WDFCO|011;&MU4QHn%!8kVitICZP_4bldsoc`A^9S49RH;)cIVqB8IiWvDVxY}VG=1l zxxXhyP{R}9x@{)awN6Ze6(MD*m1K~A{IZa>j@Lu=j4bS!6&^QrbM46ZG)694i)MZ) zxRp?-B3WEBzvx{MrXU_UYQrfyXX5gLu5V(QY1Ls(G`!J~hQFVAi!USQ8tfJvUbrh> LBva)2IOOVI3#c-?cKZg#;nHh#4Q2fclD#F0TpaXI{C{7sIk2Wwh@rbpy zwX!#LF$oC>_KQl$af)#^Nhzpm>FVkm7?>+Ea7s**)i*Y^w6U?ZbI@d1EXJx}WMXEu z*4ExxPF-C|j>p3J*zseIti1d}XS)P>czHQ>I5~NE_<2Mx+?b}#&dkcm%Pw|-os*f% zP@L&859^C2LDo(g7D*ANC!a4cv*{E#Ha2mKYnbsYP*-qr5atu$;c!Se)KUMHXTk}F t^$a_UrYxxaVep_~R}PPgK#&R}!=6I*t!qV865A)twkUkJLV$z88USl4vTy(Z literal 0 HcmV?d00001 diff --git a/img/admin/photo.gif b/img/admin/photo.gif new file mode 100644 index 0000000000000000000000000000000000000000..4221ace66c1768651ef582bbf09c47164fca26f6 GIT binary patch literal 1053 zcmZ?wbhEHb6krfwc;3v=9wFNqCD$Dz-xsGaDN$)^iptD%wb>cEbF(!T=4mZ0)LvPt zyS74qL$%?$T8k}p#@icAcGS7N&^-|eHZ%SLyX-GM$|!`-&pd+iVQ``WB{qP@@l&;;MZ6MYX)_B%4w<;WEOqtgS7 z_D(V0H}&|;;N!D`JPw4Om>YU>Zt%(Z!KW97MDAO8c1ifzrQuO$RijRM#BTo|zvKV; z6_GI~vlDjyKff|6Y1jV?tD-Nij*35>cX4%0%I^OOrwdXK+`PCpDt+(&OY34TuZz08 zE+%8&|I6#6QqGlJ*${nYV|3Pm|5rA~WFLB;eei$oq5s#m#OEFUpL^m)!IA%kNB);w z4JbPLzxdeylH>nNkN>Z};oW}pN!f}2H8*|gZu&Od@^88ou>Qo%&O2ezm2%?iKvFm+<`I znx9YGem(E`^}O%Z%Y*+%!9aw7;y*#>qSVBa)D(sC%#sWRcTe8{2F0H&j9d)=8FUzc z0F+S}IG!^6=ali-@L)d=hj7{khKG*KY}_I$4igl;MKuHF7#JEIVds-J%{XH)A@LMf z3y-YRlotzJ8+m+!N%5ZF`e*RUw#HN9Btrn(Q&bK zJj69s-TTCfo6Zg`4Lptt3YttxE|Zj<8ooR*eBjK$Z7KIh;$dn#pQO1@#RG)}%nTf6 zQX3){tMkt@$v8JdQrLmHf!#zxVqfy|zBv{J_jWKkFgi3#h^r_W1T-9AU}R*FnZeM& p$RnodHATQBy>C9Rgo?`w28Bm1mzD)GOZeSc@bU2pRyGy}YXGt`wVMC{ literal 0 HcmV?d00001 diff --git a/img/admin/photo_add.gif b/img/admin/photo_add.gif new file mode 100644 index 0000000000000000000000000000000000000000..50c0b42af977ac8e17e360597f2765b2d0ccfff1 GIT binary patch literal 1066 zcmZ?wbhEHb6krfwc;3fgl_hDOEoqZ29i1fI9wFNqCD$Dz-xsGaDN$)^ii%IQ;mmZk zx!D>E^R%Ly?3Na42lr^iw>dZ0S+6YB4e!@oTcN+9+Ayupe_gG`mOA6@4JJFAOt&^$ z?`|>6pAoJ%=l|YzFM|bt_ILYe?6T3_Wp|*@*KoJ3_Fnsg{k}FUo@np0KQzJj@I>Fk zll_iNbvZJ{|LF7pqrFoaS0@_pn|gd^@bOte9tT2C%ndy`H@JLz@X7hXrx%7a?ud`v zxAN?g@Uu(9+jk~JomFk$l@N8xBX;}$?p;aoJO20XN;$tGGUjAhN$uaA zm9*=B|DN;cX4%0%I^OOrwdXK+`PCpDt+(&OY34TuZz08E+%8&|I6#6 zQqGlJ*${nYV|3Pm|5rA~WFLB;eei$oq5s#m#OEFUpL^m)!IA%kNB);w4JbPLzxdey zlH>nNkN#@$!T%SEg>fHfh_HIkO+- z-9KA)|7^vaM+I{q70rKKvfy#qq9+xLpH#iRnf&fv!H;_h7oP3<`LylV^PXSN`(C{~ z_vxQZd|^<{=<$8`Sb6fq{jQ*IMVs%HWO*3oMI@Dt0_@ zU~1&C(2@`n;RukIGy0;E<&@aaDkY<06fuFpvBjoZ#;}rU0aLHIPQZeUFUR|t?D~ox na|#qHWwNmIaA+tU5fr$_#?IDIz;a%YgK?5Jzk_X+1A{dH;m4=m literal 0 HcmV?d00001 diff --git a/img/admin/picture.gif b/img/admin/picture.gif new file mode 100644 index 0000000000000000000000000000000000000000..c33d0e62bcd952d0a38b7bc06386827f035474bc GIT binary patch literal 585 zcmZ?wbhEHb6krfwc*ekxG}Zd$`%h(au4PVLRJ%Ly;GKOlt4w+}U+6tp5Zm8zabEEM z|NrOhdfvPCLD8H;Z5#8BUwmA=)U#?;R^6rr^Uv0F9gMiRF89ON?^8BEK6zqxX=7|_ zuk)<+7Z#kEG-vCzx;^0&j>b$`eW7jJ_VShU-oF31@xZMkm)A8fyYuDi_oWvaCmn2G z*J@X}(s$;Ww6}ON0Mq5-eedwK=CIF13SZi1|5)#KykvrzN~?}skx=K$=pFk zvAd^7Mxe<-MPtg;X^b*WGU5{KuCkh%KGu9prZc$}H6)Z|Ep#1?4Vf+NS15|xxN15o zh>CK!1#WBFVIwSJWNXXf$9Z`BP9?1X78ZFAX7wX0O?jM^`91Z7Obl*szjt3sTH4N^ zm-mjMsg8~yo4dQVl@-HhQ!WmZi3bk}HL@}&#dJ)V%`POaO>_%)r1c48n{Iv*t(u1=&kHeO=jaGxPDAb7kCd-2oJ`^mK6y;kX{# zagdimQK02SS%Uxdm8Dj9oXyqhI1b3nXZ>&}H|U1uwwEVwR2a2IeP3EU^Ygk~0j);) YGncLJ+Pz%%9%u-Ir>mdKI;Vst0D9Ou%>V!Z literal 0 HcmV?d00001 diff --git a/img/admin/prefs.gif b/img/admin/prefs.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a1f43562f26ba1c172ff8f19febdf520f899ea1 GIT binary patch literal 351 zcmZ?wbhEHb6krfwxXQrL*4FmFMq&T{{r~s$EMLC-|LXkf*RQ{u8TWfZ;{WLZ|IaR) zJbCi-=gM(N{|`;yvSrK6nKSR+y?f@&neSVh-@SYHe@;+$clYYmt3NHv z`@cNv|NhDUkIeetpz(ih#Q$?^|1V4ZzqRTA`m+E3|1(eTa9MO|;p9n*iTiFIJ>sa4!o%<~C9#0xUXw~-V5Egc z-yVhsGrC=**aR6`%8L29xLDaG#Dcgwn3-icIQl2@^UKP!dUGjrF)J$x$V&%_FI+4j fzC4ImwqAf!F;YcQQDF1dZ7Q5{jMMfyGFSruy83zV literal 0 HcmV?d00001 diff --git a/img/admin/prestastore.gif b/img/admin/prestastore.gif new file mode 100644 index 0000000000000000000000000000000000000000..642599e070616fee09151b911cd12d3e12056be1 GIT binary patch literal 984 zcmZ?wbhEHb6krfw_|CxKS0)izB@xvu5z{6S+bt2>D-qW(5jRO9p;scKLn3LCM9MUY z)EN@#b0l&nOJvQF$eANiFhinXzC>n+Qf{+JLAQQ!uXWXAyUH0xS&Jlc7fIwTk;q*p zQLsd!V3|bG3W>ti5=HAJO4dr0u9v7;Bv-jYqGG*7=|+jljS>}GBr3N_RPT_e-7Qhw z?^!#|sd2AF)8x?R$?b>oj7s))TvWfu3Wix?b@BY*KgjudGG$MyLa#2zkmPHqeqV)KmPy! zKf@>(86ltp@+K%RFmUW;*vTQ|v0;Iuo|e!m3y*?_4(+VvFHTH+%-Sug6*NbHvFQO{ zmwr&e3k4+>cRm*FK8=kFP71IJNfq3fAk;cR#b}d3=ffp#%{(me6$dt^dQZ`eS`w4+ zp+SL5NOy^VrvW3U2p6B2z?%gu+*7#(#15QDI_l2YB%kx;hEa0^gIrL?4hM%1EG*n% zoBmi#dg{r*#PupmBT3a`sBG1wcg(U*3fu1}TyQ^a=AEqWD{D`@o3j0dSm1uk>MP09 z?#|rvs&eU5VT)}giyup+oZN8g{r~^}8E69(f3h&LGbl0WfQ$$EiGj`AVPb)Yj#U4N zB#ntGab~T{K3sUHu%xg5@WRX_4L-Ky33pTsc(|CSw776Iavizgqo5$_<)&4kBE%h} XBqk&%+@!?ICD+l(&^y7yk--`O`g>dB literal 0 HcmV?d00001 diff --git a/img/admin/previous.png b/img/admin/previous.png new file mode 100644 index 0000000000000000000000000000000000000000..980b4d664fea6d3849d58f84ef71bdf31a4a0cb3 GIT binary patch literal 1183 zcmV;Q1YrA#P);m^l?frU-&rw#CfAm~JpyXccIwAT0pBBRNQ!#qxGhx2;I@rA_hCO)8=wHZX26X6|%Y*xVu1{3e&kV!}ExzDr zPHWu|7$I}X0p)nnVL6-uKgsw zS19okdboA?AbP*bfpc1owkZ{FEQ9e_iWJ*~GSF*s??=x=_SQdFp=BbSH}#$*q?87b zfn>q*jjnAsTyyNL-^qaE)=}Qr$K}YdhLHGD!6HJgJq%rUGtfH41br%B6(^b_Nc`Vr zlyP`X5kXxWiuP#*&QB`PG$vaW=O^XpzL$>vM`{c#9$Pc@WARX!H<6K=RYe3<^%fS3 zrHoWGj3%=={GX@kh77HD6mU!?drf5XiU>z4gK_R=BARbWQGY!Nb)H1QpyxX#WUvgq zMF!@4iPxl-1)}!)+h`h3f^Fn5&R!LsTF<*^_#_cDDwxK&mBgpWN;kqfd;pC%-b2lm zcThc?AR25VhoEbXBm?f{#QRfDH(ZE;&69wt%ki*$6elXILvc9S6-x$YRy0uD9*xr< z9uzGl&V9=p_+tpMpjOhc59YoDqGV}ZaXkct)zZPPBV_?k6^ zIU09GZF|?mQW6y=%yHv%hV>;Bw(MRN`p!rgT#+op1PK?Xxf>c~)fVJCBKX5Pb$aKk z(6xm_X4)X!hK9SPRMl)nu05PLd5&-tIU}I4Zx?n;$=%dvG83A{oxI7l?}Dy944JkN z;WqW$whH}NWa4(-36abe)UJ>Md`@w!H1{ZAZpuh;*reghgJ2xzQh3?Kji002ovPDHLkV1nmPJazy8 literal 0 HcmV?d00001 diff --git a/img/admin/printer.gif b/img/admin/printer.gif new file mode 100644 index 0000000000000000000000000000000000000000..a350d1871536eb28fe2949936de1c79c1c26269d GIT binary patch literal 731 zcmV<10wn#3P)^msfbTI z9jQ^EwMRD5xNEm*sJPjH^k)@gXT@kl5ii6#6jNXX`Yb0kVgq(zut?ZfbRr+DS= z>q{33dTpWN$tl6c7nxE)4Qur1GCxuUnp5Y z5HK(>u&W4&EXz<>UtfnPivJ`O3Zb4K8yl-}7K;Uh5XR!-B2uXo6E#Dr&Ck!D<$0b5 zXEK?PNF*3;w;Rc15`MqGDN4rSaGd2kJ3GNmOiaM%^D*ppJL2&;mX?;95{t!PwOY^e z?d|R0=pOKTy$qMj1$rk8qtS@b(NQ*LUtb@(y1JlNtJzsS-`3U!Ze(Pn>hXBkfzr6} z{3Vv(2AlG1;RQN6I#_mYZVs)jt>6p>!_3go(6&ye1Mdo>SRyz&A^1T#%t=UROW6Bf zz^9CeqErU&3`3<-Da~6HQ^UW&yCT)$Cu literal 0 HcmV?d00001 diff --git a/img/admin/products.gif b/img/admin/products.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1036fe42b317b71547e310d53ea3bc9de51d3c9 GIT binary patch literal 1005 zcmZ?wbhEHb6krfw_|5v$mA}+Ba*j*Qu7Yzh-@CF>~h3 zS+i!%o;`ccoH=vn&Yd@J-ok|o7cE+}c=6&TOO`BMx^&sHWvf=LTD^Mpnl)=SY}l}I zg)|M~L=9MYr2pbG)TpDc_F4F4H) zKrRF22?mZ+4F5T0G#)jx@h}T(@f=h=&DtvPzw$=Y(k2IG=ej?_%4|N%mboo|eqU1KleCZwiCG!M#5&p3o6S%1^ZC>E-0D6( z37_~o-5LWfl~gJpJ=?_YP)NJsK`Q0$)O?{24sSzTZ;a{KUyi2 z=-*Nd%@OOO2W_U}dsu6OLkiuRIcv-CiP$om%sf1&-@czcdwx*>qIQa!dssYgj$2vk zJOZzkwr-KfwxuV>?)&q;&KbKz(4wg_Thf>oZTV`i8{Pv=c+Rv%Xyc8JtY1$5yuSb+#A5#XhVp zI1m^nP@Q|x9ubhT;>6A3ODjYU3uGR9y^xc5M?fCeKiH*h-tlru>g zAM+0&VjO2Ti&KM*LKe2B-5`gtRgXH826rAP(f`hdnxSeWXir+tC{9Fg0tWuMk%xs> z(N}d1o-Q>y6+93*Y_t@l!ZM?Vd8z^p?o!mc%h2<_4JD3Zq!cERn}CT=@A)`HZ5xcL zWWg|X3w3TKbQ2}GJy8VJ+aid`Jb20U{|{ED*8-2*byF7~PT#g?n}QGjQ*@ z9h!CuO2UfA5^@8Xf7YqiCEK9#1~FHn13k-UH;11G&RM<{-eQ0Adsn zYCMQz*N_o`Iep^K$zCHAF9Hy`0Fh$@LTUp%YY=H>Ak7%WQ_IWnU=aad6Vu;YQwo80 z4AR$t_*JNZ1IQTwvVXUz^+Kz-A08|s@S&q1#aW$Enar~}5=$n)($0l450-is%t|-t im!J8J<&yAVk$_)8f3g6Ow|qeW0000WD zt~R^3*7W`ctA|_kUvJZYu)*-*W~0YDjUVqYeX`s5$u9G!dw~q=C%bK*?zMcj-}>&p#~7e^D{o=$pktm567 zg7+t@-d`yAaHi(txw?<%>px%3`*<_u^Y!{qw@SZ1EP8#W`OW#xkLMabU26Vxx#jcq zwlCK^zTE8mdb{iE?e4F4y1w4&`F6kW>xkS{xCTws>Y&+0y@$5+9VYc2G`qp|jA}idw<|sR-?BJN}a>%XG{8otKr^l=_ z)Fk}4-Y_or5ReF5c3}eN0k@gPPDv{`4kz>Y%jWkme4MzbyO~2kNJL-*g9D#d_N5t& zk6XLNH2h}da42kOD?8y=eaf%;bb9~h(8g0C&8NZ|&xJLg32#0V)_OX;?My`T z>4^3-k?m(<+Rmo;pUj+cId8_L!ue+lrd}?beYs%4nc9`t>epPaU3qIpvclXft$8`R z3-k1rl$tLsv;OUVdv$}?#*WbKlalw$%0JuVd#=y#{KSCslLBr}b-Xjx>CQADa=tU& z|_?yRf0vmxWortG_$bM9@;zrU^E?xyMo zJ4+tzt^9DMv~lhA#&y>l*WPGZf3suvtH}r7tiSkq%jK`TuYcQf^ZUb{4UhJ>+H z*^!QC$2y;%?0$K=@4?BbFV9YVd3N&aOEcbHoA>#4!~0uHA70w`@$RZmkJf#9xZ&@+ zt^eL{J9Ovgp*z2h-2Hjv-p`}={+zh~>&T;D#~=JY_2Ad($G=ZM`hVup@3W8ooPGS~ z!jnH2f#~VqOHcn?diwv$v%goL|GWD9|F!3TuRs5P_vP1{FaO_u_5byQ%kQ4vdi?&^ zllQ-#e|-Pq)BEQiem(yLM1Nm={PptV?^mCGzXqbuzg~R$^YZiG7oY#V`uz9J=Rfbh z{(k@M_uH@k-hKJ|;oH9t-~WI7{_o@W|DV49|NP_k=b!(+{rLUk*Pnm?|1*qup!k!8 znSnu`K?f8Ppgh6A@t?uICSc0KgoC_H!dyNoO3v+OX=k=PoRG*O-YR!!MdiU~Cxy-Q z4)k1HU~pJUT{mJ)z(l52UVTZgWtp2)I45Za>cy;3NMv9QkvEzXSaiglUt^^~=B_Oq zLZTeYjixv%v3T@r&UQOQn6XSW{ig=~UcN1mUX?Zai1GgI+# z3n%wtK1Hh#4uN@roJJX)jEh+~x#xszF1!2Ep+m{1M?kV^;ly{>Dr6)bm=7hivCmeq do#oOQwA7zlglkR%g98I2;~`<@0s#RAYXIpN-sAuP literal 0 HcmV?d00001 diff --git a/img/admin/right_btn_filter.png b/img/admin/right_btn_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..fb9b95f57ffb50abb792f647743f3ea64fa5d066 GIT binary patch literal 642 zcmV-|0)737P)Nkl(@2_X6)6!^j25&YI5kVDf-VkH5r+(JbrW5>#l=N%a}gBlDnche zS}X`o4mRQ<7$u~MDNWm?X`1A|Pis#b)m z6=8_vcv%&WNhZebuu*m^RWKxRyU+@$`3^}$nhauHhOHBXPN+NX!4AjOX0YQ7=a#e% z)e2@J*x#Y{K?!Rqfx}X) zeVpXf673%778)el9lePtK5_0U?Y>8eY+m+yjx0@Io=M7TMYWT7{cj{rMcr*Z7UxuB zskT}V03ZY)OauJ`fH5LbQ?*H>b8VLg@C;aeU4mg6kS+nE=c5673lKU1dk9iE>ak}j zh#vR|{)bZkX^-Yq4!n}4&*~D07^A`Si7r8qzj7sV`c{hs|-YQvit9;4r%4N5!m*1&db**;Ao%&UG|H*uuFn@jjf~}i3Z*E+Dy?O2R zrZxB4*WGMgf4^=0{hoC z>5@awR~&hU9XLUN^V4E>ei^e(IUbW9oe|;`jcNG# zsP%L=n@B=|$0G;F24(>^9Sw&Dh6ZLf78MBz#pX6nmfvv)91MC{d3?C!!wzpKJk-Eo F4FEvy0lokL literal 0 HcmV?d00001 diff --git a/img/admin/search.gif b/img/admin/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3G literal 0 HcmV?d00001 diff --git a/img/admin/separator_filter.png b/img/admin/separator_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..088b28e18f5df6d97da2f3eb0643ff70329c582a GIT binary patch literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ep!3HGH{*y@rQo^1tjv*4^$$$R;w`b-s=rfui Z!BGA#=5W6CynjGx22WQ%mvv4FO#o-Y6Z8N8 literal 0 HcmV?d00001 diff --git a/img/admin/slip.gif b/img/admin/slip.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5df19aaf2db300b653d232adaddcc758780a56a GIT binary patch literal 1027 zcmZ?wbhEHb6krfwXlGzx)Qe^|jAJuNWH(LXvPk8&Oyjl5{Tu*(**&k=OU6?G{T zb14vWEt2vmk@6~+^{JHetx^c6RSc|E4zAaWs8b1PQVVaIBP-$rhQ@EwX3W7R-yPo$XY%*tvYEXYFdQy48No8~vL%#I>&u z?%W>Iu`Q}|V{G^4*xs!Xy}Kg%_QXuwm(;yJzh`OMge_T9c4ST6UEIH_WWws0$p;gr z9!i*gG-<}MF{VmoHzra^>pPtJkkzzi{K)#hceJ+`M_=*3FBzZe6-@_r{GIckbM| zckkYPAb9%v&8vHlA3uKn{Q1k5FJHZS_4@VeH*em&ef##^yLa#3zyJ90bZt;<~DY+w7@PX;* zY5S^2AAT~wI6udpSz?2RBa=%zk66W5!E>0|@M} z>yVR4X3Xp|u%(XlYJttI&a~R9%WPUZax4W-c9Vd>$x00Dc9wG@>DD1zyd>EBuTccv zGLg!3$hK2?=4{x&3oM)@$7D84jlpVMjw@9fjphYdf#Dd6DNtM?!!@K*L1GxZ^B_P? zuosgS%DAHiPCBGil3XN;R#sNZE0uCyC_!LXdA>Z*0okRz#EYf83pV5?!Dhzh;QVKQdA6gaSiy0Q zwHpQA32)_>bnKz8H7e6+f>0}n?YOmSgW5poF+-A(Fd8Wu*}>ZXPtH)_4C-%=|1?YB z3Ur`Oc6PRdfMahG&VMlj*hOZ ztV~T!4Gau4G&J=0_ph(7udS`sCwy=bXu*;tGxzWPAE=-pW(k6V3QUyV>i*$!)6DfZ z;jp(1?>5yv|8jTz`sPC+G5_W(4>);W;a_}Y6XbiZ_5!3!M5!KV$fsPtA>D>7QbOm! z+22Aj?}w>#wcpG1pFb9vFxi^p3o0}Z_ACS=(XT_zp>OoneHV2}^&)h&;+x`|9Nl!( z5_|D(9QjT`+0mz=KOQ~%)AbXHr?NUbBZ^MQY7e)bzb76zJe9KHN$C1&Cd5upe)N0T zYVq;XsI1V;w2{-PvR?Mgm0ar2^0N`rON=;D*spml%bi%ll>JFFdd z+Pdv`@;K-mbl4~Gq<6?kzsQS031=cxu12O@i%z|gkb5b$_*#}~(@c%VC0;Y$1h#$* z?)n%y_if08k6}|kh0p#JIsa4i($8@#KPRsLTDss%<%%!08^8Yccm5sh`X|!;Pm=ea zZ2#Z6k$=j9{*=Z1sS5d1pYW$W^-n|o-?rkvedYfqr2Lzh{%=C&zp1%@r`PTOa!i9?#En2*I@zSMBSFBjE ze*OAYJJxO3uwnD&&0Du_-L`GphK)NnZP~qf>)tI}_iWj=ck8x&+ji{RzIQheH17D; zy6@Zeod$h**xOwyDts6J*+`fJ9_MQ88K;Z73JNNJ1yLbQo{k!)bK6vopAqYHr{P@|+ zmoHzvdiDDC>o*|q?*04sA3l5l$K)tMatJ8?WMO1r_|KpN(h15F3>*&_{&UKBY*0Ap zT5@a6OD9z>ndbj|vQ0-cCN6ZEI!ofnW{*j8EsGv)P@J+PVXntSxwDo@OE@MvcyR68 z_=F>Hjzz|q35+I79!Poh<_K{z9XUQ0}$2iW9&M?Fy$gc*GZh+i#(Mch>H3D2mX;thjEr=F zDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPsx)kDt+yY-;xWReFdSDOf zCFkerS0onb8|oS8=jMX^1y)^L5|oN?23FO@A(aKG`a!A1`K3k4sX*n*FwMZQ!*3Bt zA<#8e{zaL1N{AbeZ0LqJ>1<~U7Vd99qjFFZLF;|hs5#y24w^_(1jczi!*-hJ=8_q*SF_rA)ih|kYY zKqeyF9f;Lky=#frlyOtVt*&`i*ZjdA&?^-5@(wfQu-3%}+RCieoVA8CrD9VmG8Mv9 zaH~6Js>N3S@`3iUUZJorQE1A=Ru35LnQ8TPK(Mu8uC;#F4iz_3MW*DiHm|Y)opDpb zt^Q?J-%8|v8hKXsoM;Wo@dgk7rDbWA7aDWzjl>}hn++HRzbO>TJ2C$&Lf!drQ zMFXgtpm2fmP^gC{Xs65T^_HLvMN=fjkTiqSUe?L56on2C46Kq-n;J@vV||gO>%6;T0h-^rb4eP_jy+KjYP@Nl%@`5PawtYSO)N()*7lUL(QzUfgd|7c6ekk@| zy8R(8T;UA6onfDs@dVx2uy69eoEZs|A?@P$N3mp+0c8msFBg-26 z^N-(u+xzP;KmYXO58r>cXZN??eErpzUwl6B*{8d9e)920AAa!u4)eWt-+BA3?c3gb za>BbwbU)gcpifgY~zU=C&uDs&%%Pzg-;)|BHw_Uj8g7eQi zx3wkRytv8GwR2QOmQsz2#D@BXASopH1!tdi<{9(n&7CuQ*35Wa?ddhuvFMD`POX|= z83}WtieP!!v_R=p*6;Ir+%6{r+mgUbii-*z1*e>RQa+Z4o_NCXQ;y3$cJeVtA2sR7 zBM#3w?9f9F&OYeCi4(?;8+*W*ECk8hI~IN&NQwPk*>7g~c)EOBK}UK_xH4aaqXJzW{9h9uO|Lip6_XI zlP%7Ar@T%6*TnzM^Sv46{J*F8R*dVfTwexi1I7Q`5xxNmE{P?HK-$K>q98FjJGDe1 zDK$Ma&sORE?)^#%nJKnP;ikR@z6H*y8JQkcMXAA6ej&+K*~ykEO7?aNHWgMCxdpkY zC5Z|ZxjA{oRu#5Ni7EL>sa8NXNLXJ<0j#7X+g8aDB%uJZ(>cE=Rl!uxKsVXI%s|1+ zP|wiV#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc> z^!3Zj%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA7xhtg4Gc zDhpEegHnt0ON)|Ify$L(nt@@5-y)DgplhuBi!yx zi<^aok)xxdDUfGmY-ng?2Gi@AS6q^qmz)Z-Hxp%#K*FTSt8FTUTr&vUar z#lrzO@F%b%2a%J5Kq5ZN$wubBhC-uI=mJ#n7loG!i;9ZSw@^i;n9I~+EUES?sUFX{ zh{NGZ38e%Ap`xOqvbwUWs)|IZCR4~13WdbMGdN@_l}e-0=uA4Zo>^aC&tkDCw}q#8 zC(hhGea6c~^0Lo$=3`pXn9-|P!==mGFLB_NG9muvJw|nV1@Y0f>TzsMe;G+fWc8FY zbhT`#mNP=n^;8vv2nBQHH+(h32!j-1Qf)VBHUiyFtg{nYHVWHG=1kSn7T675I=1;6 zG*_3$GhnrP2A9v^3fO!hadh-TyS+r?xY0XRV(?Y=n9GM|%8f4469>uUs(~!zQ9Jqj zS;{1@#w(#md9+{$$!f%f)wgXB+pE9joaRFf-08ZO2?pq3^Y}b|Q=>p2;5CcHpcn)} zsZ=VH$>ef*cXzj3-K-tx*XeYFgM$zR2`&7_@SO)<0qAT3UH4>ek;LEF9*}efTf0LK zJC|o`2Hggs0_C$=i2olsVUkv5K`*{kTI$- zgdo+**P6|tffuHcAA5|OCb8KmdKzk(4Tz@aB(BIq-+X6yPU&%LmS*}qR{hef%I{Z4 z0{zhiTT4hkgzCG}uvKRhD$eQ)U;X{EqPXXx z`8cg_#fp+=h~Ru!yE7p*+%Sns>)Msc(C*7hun0=tfTdy-inGA(k*wse?r>e5 gC#fg7+zT4_fxXFZ<|p^!@YzYp=|_?AG&peTUjpaoQ~&?~ literal 0 HcmV?d00001 diff --git a/img/admin/submenu-bg.gif b/img/admin/submenu-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3de2cfc5edbc2c7ad388aef0d1975736a946972 GIT binary patch literal 52 zcmZ?wbhEHbWMtrBn8?8J=GDCy&#paveDU#vvx+}i7}y#9Gw3h?0Z5*KiM2&u(I}X~ F8UPB~5U>CM literal 0 HcmV?d00001 diff --git a/img/admin/submenu-bg.png b/img/admin/submenu-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..1cdb923787a8ac533af6f263e8cecd0ba7b71f93 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^OhD|*!3HFIc5Iysq{2O2978nDADwWJw;_PTS^n7H z>xrUzJs-ju_@(rp{ckXw7|fh|St+@P<;IR@Y}ILgX5E($El-O0n0azPSJ@y@8*xxT%n)TrQT#!u+p00i_>zopr01wzTl>h($ literal 0 HcmV?d00001 diff --git a/img/admin/submenu-bg_2.png b/img/admin/submenu-bg_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1cdb923787a8ac533af6f263e8cecd0ba7b71f93 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^OhD|*!3HFIc5Iysq{2O2978nDADwWJw;_PTS^n7H z>xrUzJs-ju_@(rp{ckXw7|fh|St+@P<;IR@Y}ILgX5E($El-O0n0azPSJ@y@8*xxT%n)TrQT#!u+p00i_>zopr01wzTl>h($ literal 0 HcmV?d00001 diff --git a/img/admin/submenu-configuration.gif b/img/admin/submenu-configuration.gif new file mode 100644 index 0000000000000000000000000000000000000000..659aace81c639dac0e3905c1a6d792c94051c20a GIT binary patch literal 280 zcmZ?wbhEHb6krfwIKsf-=jV6k%$dD=_by$!w56rx-o1Op#l_E_J=?Nn%gmWGv$M00 z9zFX0{rhXzuBD}=O`be?_3G8%zkjc(sp;zKVju!2{$ycfXAor20jUMq$-p`_L8Z^< zvP|+Sw&RT*Jyk4@TSSg_^PH{_={e+-(Bu%&5%;9P*wWXeGa)470!wF0!bS%lUSu@dqsemBSV>Nkhb4}ekAst$vC6)liHVDgO^G)qMxcvBKz{=B yM3eS*CPuCqycNtWEHQnvganj1*w}c4+c)qr@Ea)!H}EOdXen{C1npO3um%7GB3L{C literal 0 HcmV?d00001 diff --git a/img/admin/success.png b/img/admin/success.png new file mode 100644 index 0000000000000000000000000000000000000000..9c941c781e35bcaf882c3fd4b3b5deeec0e83bea GIT binary patch literal 1032 zcmV+j1o!)iP)ByJJg(;2z z>ignXs3s$f01J))X|+-UY$qG=D-es00dnC%;mzT%$eu< z-57oVledaYnI<5H0P6bSpu(2t_}*ZiN=}hGoXv+bq5xHoNX6Z|E}{S`nEV09lbz;r7-%j3S`PnTElAmdJhS`rxhAoho@6;q}+( z`rUJ`VnT;7&E~^6q5u_$06Ksv0%!n%xMnS$04AIOg{*xU! zZ~3v9+*MPc5>3i%oLdq?y{i0EmxX9>)-Hw_Wxk&69OvFZ{^OhZPc2kD=Qh+mb4l>GNYdm00000D;?To<^|B9bDXS$35y?NTB(B^%P%XkxK7CDzAU=fZ_3`Iue1Yve}CciH2@ zynbh5hK4n#o|-u`=l7oToY&=Ul}m=>xy|l{Ec4HUXoh)bPg%#z32UD|W^Iup)-rj> zd=bXPzeMEvjw`s7ONG~Om=l^ucT=_iQQ0YVLrG=}@JBDiq$6quw(J4ExwP?7No6uq ziL2Ma)k{9G0%Ca{TFml(In4tLXS_Fh!kZ=zI9zCO;jscF)d(0F3^qls^G>i0T5Pfe1(YN39Q)z z;KK0{+-Fa*^OZc}wIL6!aMRMDeQd3T)3e9KhojfpE1$RGL@BYWT?S7HDF N002ovPDHLkV1fg%&-4HQ literal 0 HcmV?d00001 diff --git a/img/admin/supplier.gif b/img/admin/supplier.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5cb1f263cafa5c94545520fd8d7dc129be0eef3 GIT binary patch literal 266 zcmZ?wbhEHb6krfwIKsg29|+Ez`G02S|CvCPb_U1;@_A!vh=Dc=Ffg#T zD=74(WX@Ar$m6wI$7{(HuZ9~;N-7>9Lc10?Oq`t3BXodgsild8)KZrw$Fx_A!vh=Dc=Ffg#T zD=74(WX@Ar$m6wI$7{(HuZ9~;N-7>9Lc10?Oq`t3BXodgsild8)KZrw$Fxa+NABl_R3_h0W#{{Q#KtJB%S-(Q*h{c+3x|Nnn~I`i#L_Rklyzg!Q#y~X}`9|;OD;~F}S$({a{pIfR@7G#>zFhqM zVZ(zx;dj>B-`VW&=i7}RPkP^<(|mcL=*5NR@6Yz$o8tBB?WT9<+8KrpQ2fcl$j+e5 zpaXI;C{7sIr#C1!HMg|3wRd#3aB=qbatX6fn$)b(DkVQtUcgDR$yU@}gr9ZdWOh;O zCL3W95neGd2?^b;QnpRfQi^VljLWA;H?b*;9uu|GS2ENSvOA*8CTe7$pk~jZDx}WG zeL<7m)$-ICbrV?~70o77VM}|fr_XhmRZN>)WX#P)jE#ADC2njmJkq>?o5hA9;>3hR N7RD|mFCG>KYXEG{&A9*o literal 0 HcmV?d00001 diff --git a/img/admin/tab-contact.gif b/img/admin/tab-contact.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f85b96600197d73fbd783c08a64af98ef9b7e17 GIT binary patch literal 354 zcmZ?wbhEHb6krfwxXQrr|NsB*-@m_q|NhytXZP;iyL$ENk8=w?pO|yz%$cJ{kM^GV zbL7zao|8ZJ?%msd@cq`UTYGoE-?3%kmJOTAcYa>Ke*NUFM^kqHFW&m5Va@sCbx$(a zKC4)DrF_--n6=+`&TPzB@np};lIW%X)qmoNfr0?fynv=D0U9>UH`avBmS7O+ z6Y5&5!JsE~k@La_EgQ|NU4bXeZswgl$e_h8*TA2{!oZ^<$gL*K>f6h}-y$s_rmQI0 z)7UhDK~!E$Oje>NAWkUFyO){CWf=oAM~f>ff0_s@2L}TuC-2@y1|bn%uOmks8LR;x C0fcb? literal 0 HcmV?d00001 diff --git a/img/admin/tab-customers.gif b/img/admin/tab-customers.gif new file mode 100644 index 0000000000000000000000000000000000000000..2194c59dbdfb95ed058b5a8a7c7ebbd580f939c8 GIT binary patch literal 587 zcmZ?wbhEHb6krfwc*ejGVkl6u=!|vw8msi_ch@&8&(?W$X4RHSg$u;wc_2`WfKa67S<O)OxmKl} z@Z!RdmbI7XrRrRW^7JZSl3>ced+XstlhV>=9uMx_zy8#t*O#|BR;@c(uJ?9(?TaJx zK7Rd~)3-i<($1b$$GtoEo?TG9CDy6kgFnMU==+s*^Y`A^ykXtkO{d~4L|$zwFKC>4 zzR|eYT+q67MMa?5rFj3iiiM8#n=6){`*CKrSM$~v=Qpoyj99w=#{1n(8M9A3e(`o@ zML@ib)Z3GbY%12Ct5Of|*;}{j;ZJ=K+P5{h@V&pj z=l#}}zSXC)odg!`ybxg_{p{M-+|)BHmWd1c*9>ifi@Ia0)R{;&PQ0)evb;2v-vq=azRca54xAv}g*ja+VE> z;+Jp@S5?u{eB-Ig>&&Rv(i3=Tp@$G}lb?g8;u7XP+1%~VeR*Pru`3@|2J&e|EOjEV%Pr< z-TXgx|Nqpc6D6GoN+v%^*!I6@-Sf0F|NEmHCdN3mRfJ7VbeWauJu}09a%JwaN{1yy zAuDPV*VZTf)qd2`6x=bnW^P~J>Xw346Kl8kWjCG9Z$Deucdm5Wxw6UUE9PCOzT9GZ zb&kRP#Y#_?N<3X_{A`WYu}NO{rurV9o_%;(*^vcR#}-#yTU>N)Y4x*N-j8MnK3`Mx zY948s#Ib<{feEQ|>x&&f= zJnHS27pSjEwD`a=K`o={&kM)E1%jrTx0VDdFL}(Z<#BCCVshKDLk1dNa|{+Xc}l9g zNC?yvH?{Z+8O=MA(V)uJ(x@A>!{dV|f;lh**UKGxo4BGci~L0C0UEUjP6A literal 0 HcmV?d00001 diff --git a/img/admin/tab-invoice.gif b/img/admin/tab-invoice.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2d449b1d22017cb14be124184f2ced10afb1345 GIT binary patch literal 997 zcmZ?wbhEHb6krfwXlG#XEm|H{y&UKoX zi<08M+K*b>+S}UNL7)QyIy*W$yMUm(ySt~Sx3{;aw+{&V`}-$?z@&+jCQY6^dCHV2 zQ>RXyK7IPknX_ijnl)$cyt#Ad0m1wQ3l}U{uz2y}B}C&akmoHzxe*MOc8@F!Vx_$fhojZ5#-@pIh!GnhnA3l2Y=<(ynPoF-0_Uzg7=g(if zc=7V(%h#`8|Ni~^&!0d4|Nmzg1tT>C6o0ZXGcfQn=zszMlqVQC4lzh`$arjc;2^CR zb)Z90nXN}mJLG}Fk3(HYyCp&eViH*!j`z#0opU2YwV{ELl~2J#;D8rbla`l|!2+Yk zrfC`pVTMjF924a2s@@cM8nlW^N_A~m!O(J$NlTf1)`m+doRgGY+ITpVma;esg=G{Z zC?zusiA${LQII&~C8FUs%OG$POXpMp7VC(ej7(m={Jv=g3m!E-VAT#@=26N0^rW!1 nB!}07h0gAMr)N|~D4a+<#LOY6;WI(tVI#93Td+6}2ZJ>Ly?OaE literal 0 HcmV?d00001 diff --git a/img/admin/tab-orders.gif b/img/admin/tab-orders.gif new file mode 100644 index 0000000000000000000000000000000000000000..be9175d6f9cbd54c6c7346cb43c21edbd97e6cc5 GIT binary patch literal 265 zcmZ?wbhEHb6krfwIKse?mX>z(=+UK1m)^T~ucxPH+qP}*-@mV_s=9XV+RT|VfByVg zQc|*a@7{Im)}1+XrlqCj`Sa&frcC+&|9@6i76TDL@h1x-JA)8|4oEG?P6pPt1uA_h zne&_`DL9@saJ^&FB%m>2?VB2XiH;WKh6WZk_hSnhGECT&+zuRAAjLJoO)pWvaB6F+ zuwsFL$l_yH7hL61=w#-6C}F{x(jMUFrK-fj!r#oxt**w!T_eQCDA>@%&(7V}ro<;y jHA9()okv(XjhBy!eKI#^U$;^-qY4iLL;GeWMFwjCH11XL literal 0 HcmV?d00001 diff --git a/img/admin/tab-payment.gif b/img/admin/tab-payment.gif new file mode 100644 index 0000000000000000000000000000000000000000..b91777ebbf9f6c7f60aa7e348ca0af737d1beb04 GIT binary patch literal 383 zcmZ?wbhEHb6krfwxXQo~INfjAg~j!|st!LnP`oLx|47%f56{+|U7ffn_SVZ=+a7J2 zer8hLmg>#}&7XgMT7P%dxkqQ0-C7VaH#Bp3+U#@FrX8G8xwWKiU(=TR>lWRZbL#2w zIajCN{d_ZTZPxqm?>1gt*Sx>BX?uOpOuw|XNk9I4?>^Kv@o4wTJBwx>nzrlSwzADd z(euOazq@3XD36`9iv4j4Iu|ISLB- z%DT*&N__GPA`&dplKf&~x<)KQ?3{c|Ox*md#gye)c{JFZ<@H$9)>w)Oo9Vc-F=-l# ZF<7vNs+bzfDsdjXro$s}&B>9$8UUwL~I45F@-<0!RbFWVM_UCKBe6Q>+DNV<#3lF43EDLm= zWZ!YBDP?nP&FP}dJ+TElGZx>N;WO1UX-!P^q0*kSEeSh9v-Tu5U8tzsUpVc0pW{T^ zhI6GJ(_E5wMJ&5HyZUH$%&O2S=UNtApBb{)&#~VoYHL8ro*dsf?hMobia%Kx*%??F zbU=oI{KUZ4b)c!hLr2O~=J<(>CpC5)X%mGdd6r1@92S%i^iw~P`0I-h$2G?lFFITV z8e41(14JAdSseep2p$tS z*4>$2J;|E6wX?4;O8Ry;`_aOHw-?HvUE9PkIDq0$7Djdk83rAYb3k#zz`m+Mrm4B5 zRfbQ?w9C}G*V@FyLzYiQz@^GTRJi8=o1A`>v;#LMuIR}Lq8jA(mIEC|U SECR9w7zr%$cdnws%gMw`0eSXV0FswzifmKan(H%c+~sV!PIV z|NgzFr>Ac7_2S~C3`^aWgt8a`#WsVp;}#WV zZE6u0>EJ10>FJxijCHc2w8-R^x${L9vI+1xi%(d_zp}pDsfveA$L}@A3J?n>TMxPEI~@ z8L9Ky+U{zCh92BX{H(G}s;ZJJ7!3_IjQIJ@1Z36Kot#uu82&S~ qanyWt65wFv)3KPaAmM^zTa%Q5&jEuY3Y}a!=WdDlzEXk$gpqzC`jt^St~+GqcEZQpWp z=js!mrtE#+z3KJRz3&yBivOpjIn>{(HmY8AaovGprvQVDr?lrtrlq`!0g{;#?`9qAm`yMDr;cC>Zsys$fRT` zV9YILWX5meCgJ0wA#5e>tgI}>#p*6*praukp&+CvWhtoZ=;q?WZx>o-aiDNf8=I~z zUqXZ7QWjn&g_abD56TYR%o33$iwju}Ow|qxllbxBA=^|IyBYz81D}p^vl&>LapckkY9JM*?12v*!! zzI=Jtn#Tc6R~wh!ub6jl_O@qh4!_!T;%)JidlNT2`Tzev166_IPZmaY22}>_xpP{!W;##QSh{rS*|W!O zx&`08dy%owq<&Mv)C2Wv&Q5;z?C#pNYrUr$8@7oYJ$f{HzIEav*TCsYOHTAS_ls4p z3%Pvxtmj0T{@ul!Hf?(P^l8#u!-h?f*-M=sK73fb%FnEw>&%%m*^6wZ9c*mbni{vj zX~EIX-ko{NPxq_Wvsm|trY><0o38HOFZuufe+EK8@h1x-JA(;>4oD%$PYi4o4zmh8 zbfo%EED7TLB{A>9iWZeA8cH|TOq(pA#xZq6L`|2(9+sm!ilkaB78t*+=9>RbeTv7i z3F=A}8XCNc(t4`K>1>QVy*#`E6ZPbD4AlYy6a{p3wfOin#q`}+^(1w4*fk9~+$ChC WxW)Lzg}qG-w6|>+VQ_I|um%8vSAN+5 literal 0 HcmV?d00001 diff --git a/img/admin/thead.png b/img/admin/thead.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c871b52066da58241e54a5a800e562491d7509 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^Y(T8R!2~3OIAkJ$RHUbiV~EE2wG$8W9x&ix%A6`{ zoW=f1p>>aR#e!9JN*0N~cf9NT&cm@=l}@PJZCgGtqgW8Iy7#{9r@+_Q(Ad w>rZ`H7|;|dux8yUuS>@jtp414-Ex*`Q+C>K={r0}ftE0My85}Sb4q9e0NKhms{jB1 literal 0 HcmV?d00001 diff --git a/img/admin/themes.gif b/img/admin/themes.gif new file mode 100644 index 0000000000000000000000000000000000000000..bda9d7c2a7862c83731a62e6fa65a8b55c810e55 GIT binary patch literal 997 zcmZ?wbhEHb6krfwXlG#1PFbsyzFse9lX2b_i{fp*dCUFsm-*$d@Gn^IU%0}*aFu`2 zT8FajUNyUXYIg+`tqCt%8C9_+pk!lU*`~mj^|aK$ge(GP;;`d=2THF2o=|!F0MOW65hD4Y{KryrbCe}2cz1KM7JG{YdH|r zaXh-~L`=`AxW3cz6VAj>IvYRvTx$P`#EGX9CZA25bT)bN+3X1?GN+!)n0}#T{@Kz6 zXUmsdty_Abe&vmSVjr59U2I!)p=HI@&Q;gC*Ie&jcVph(hYPmdo_*x)oFi|S9(ugv z{L6#4z8t#!<^TWx45MI}hJfNv7G?&9AO;7QVtiPWlMY~o3pUp zJYn3!*6463rQm`B4~LjmzzhjNw&nx!i4s1F0%@+jQbq|K9LbIg`VE*DaBxgM#1Vtk3k;Qyb@L_4aol;h%`-;GAYo6zMnxZ{M$0=)9k-oaI|bw{S{xMu hJkR$EvScm1^w^1&OGr$^BH#c6iws+^Fb@ZVH2`Pf=d%C+ literal 0 HcmV?d00001 diff --git a/img/admin/time.gif b/img/admin/time.gif new file mode 100644 index 0000000000000000000000000000000000000000..f15768f1336a06d62e156e19f94f304f34fb15a2 GIT binary patch literal 618 zcmZ?wbhEHb6krfwc*ejmz0B?2)%iL7#}BWnTC-#CnK!>SOp9E1<^ADJvu>Z?R#w;0 zzw+X~Q)iw(x^wI4^C@%Z&2LJ2@#p{f!&~;Qp0arDhWj^2={tAp#k-e}FCAX~_|vb8+Z*p*-c~j1Wc$jSJLhB{-MaSd zmaKKl1tO*Qsl+RxY}E@B8<6FCMJw_PcO!;(^;A?!EnZ zc2CWsZFk;%_;7CboKHV~Ebq=Jop|Kg_y0G}Z`-%HV8_wZk8hrszWL7Kix0b&U7S}N zK7I9}J7=anynEpNpZ`Gc?)AeLkMCW3{PEnDns;xW?3$l@<-q)DB|%GCV=C$!uAJC* z{{H(LXBM8@)6zQc#E!#Eym`_{kw_N!;@ zwU%Yq?|=P&d3O~9xj^wJ3nM#&AA=6a08pGTupe*mYie$3Z8Z&5Q3(pNHEr|b%yA8{ zvC&luiEQQc_Lr10GO|_>)tKF+sAZ}zl`1YCXf5RwuGnPDxxmkcPiMcIyR&c;v#xcZ zjv;@%9gBsBl6{kNut!FMPJ{@TOR__nXOo7hm~w`t9#@JWE0fP7KUr073rA%GOTlb* zHFJR`0UnDYC8x>F?CAoA9~7@n)s^te`1sJdTS_%%jf130<6$s eJP=ar;gi<(lWO|Jc&JNMz|N%M$mReA25SI>dNZp4 literal 0 HcmV?d00001 diff --git a/img/admin/translation.gif b/img/admin/translation.gif new file mode 100644 index 0000000000000000000000000000000000000000..af91f09a4c9b8f1d5a19ddfef5604e2a3a557cf7 GIT binary patch literal 919 zcmZ?wbhEHb6krfwXlGzxW@ct*XXobT=HcPt=jRs`6ciB=5fc-WkdTm+l$4g1mX(#2 zlao_WP*7G@R#8z=RaI3}Q`6AU(A3n_*4Eb1(b3b>)7RHGG&D3aGBP$cHZd_VH8nLi zH@C2`u(Y(ava+(Vv9YzawX?Icx3_n2aBy;Ra&d8Sb#--fbMx@<@bdEV_V)Ji@$vKX z3knJf4i1iph=`1g3~$?>JMCcQyrV74PR-hOW#jR?d(J;Pe*O8S`)^*p|N8&`e}+*o z8UhrDfZ|UUpc(%ebU-G7@&p4%2}3o9jK_ur2b(#H-#BCxwDmR`CF}@DT$Io!Z7gOa z@?*lW!*V(S6MigcT+kHLziHC~LtsJ}}G8zU9nui2r^n5A~C^RxMF)=Z0@cNeEz+epkgkWV= literal 0 HcmV?d00001 diff --git a/img/admin/transparentpixel.gif b/img/admin/transparentpixel.gif new file mode 100755 index 0000000000000000000000000000000000000000..b7406476aa46e4d98eefacf95f6d3e8c5439e330 GIT binary patch literal 43 qcmZ?wbh9u|WMp7uXkY+=|Ns9h{$ycf01D`U_#hbuCMF+725SJnmj?g< literal 0 HcmV?d00001 diff --git a/img/admin/unknow.gif b/img/admin/unknow.gif new file mode 100644 index 0000000000000000000000000000000000000000..27491d2f922ead4f3e9c7d8931042b505e5761ad GIT binary patch literal 1227 zcmZ?wbhEHb6krfwSj5WU9hsO>T$7Yvo|s#flvmCG1B(B-BYXoCToOwXfwYZ%ML}Y6 zc4~=2Qfhi;o~_dR-TRdkGE;1o!cBb*d<&dYGcrA@ic*8C{6dnevXd=SlxV%Qmue&kg&dz0$52&wylyQNJ0T*r*nQ$s)DJWfo`&a znSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g1^ zl#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-hnc$LIoLrPyP?DLS zrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&`n+x(6SaoqpP%6S1 zSXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b(Ke;qFHLt|e#a0O@ zqnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A(n_hEsH&-(YGgoI< zLsvsX7dHzFBS%L^Qy|aC*wE0(45rsJuec;JFF6%vZzj-Qs9qPmdaay`QWHz^i$e1A zb6_bTAS1sdzc?emK*2fKRKYhfIWrH$2SpFWw=StgnPsUdZbkXI3gGay%EV$n(6cE1 zwsdxJbuxA}HFmWyH!^cHRf6hGAt%iAfsWA!B@U#-0uutJKoAq2^no0B=1I*1=9nU2 z)?obq@9&@AzkdGs{_X3R&!0Yic>nJ0o7b;izIguZ>66Eg9zM8#@9v%3w{G6Je(ma& z%a<-*IDhW!nbW6Eo;ZH&=#j&R4j$OQZ||PnyLRr_zHRH4&6_rESif%Vn$@dTu2{Zo z>5|2Z7A}}SZ|F(<6Xm4w6X>Mw4sIRN7sjjN5C@(85 zDK083$j{5o$mNlr>kh>weniH?el2oDPl2@VPj@b~le@%HlcaCdWcadvWa zu(z|dv9_|bFgG(bF*X8bOFdm3Z7od=bv0ELWhF%gc{y1bX(>qwaWPR5VIe^Qem-6v zZZ1v^b~aWPW+p}k2F0H&K$4X~2UOsI$|475gNR*sxOh2sWH5?MnE3Yd{NhA;kGRnA h&ea`rb2yC(q--5K?DzyCv}PBWteM)kF@=f28UXBKr=9=+ literal 0 HcmV?d00001 diff --git a/img/admin/unknown.gif b/img/admin/unknown.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9ef51c1bdf7103f053fd3ccff04bbf34dcb5fd0 GIT binary patch literal 396 zcmV;70dxLGNk%w1VGsZi0M!5hM02aAz~g$O&(-7ao3ztrlEA*x=i}<~UWm5K*y*** z;)<)&?(_I?n8s3lvAWaoxz6UHxz^$8^L?k)UWmGswAsbj?9<`z=a_q@;MS%bC4)#uIJ@2S7q!`k+EoXCWw$z+MOt;pn)ug`_6*GF}(>hk>7 zd4;sg{I5l?fgu7 zuK)l5A^8LW2LKxYEC2ui01yBW000K5z>RQ7EE;<|8jbWa3R%pT^wpa6imb;=6i}%; zmR6uS)LOn02}%GNbQr=`OEeJ>>lTYah-!5*84?P61{xI?3ql<&0vRze3Je%G1vmo@ zLKTb}oEs7{FfcL$1(_EWj|Hj}tUNk0LLVO%4WS+$2)Ph7H9{UG2@o$0g!@6q# literal 0 HcmV?d00001 diff --git a/img/admin/up.gif b/img/admin/up.gif new file mode 100644 index 0000000000000000000000000000000000000000..67345103c2c56780647290326f0e06473b3b9150 GIT binary patch literal 55 zcmZ?wbhEHbsI*;I@367XWlNpwx(3Jfjm{gJT{pJ6Z*6hk-r~Kv!+T4o|E?CF9o8XUL8T5j!VFZJ(Unc(|hRP-XMs>h@!`2m2zA^hF(?8ggP<#K~Dv zCuc>UnjLp+Qo_ke38$u~otc()W?tf%`AKKyC!e34dvR9I<+=G+=Hy|?X&6+iP_Ut)x=FFWtciy~t^XJcBuwcQ$g$oxgTC{la;w4L#EM2;^ z<5)xQiIz#HJExuPoq4W*)`f}lFHO0+Z^f#E-c4#?Y}Ji);6li@$7j7PzORi^n|T1T$9O%^p}VlBKdf$=aacfp;UqOGgE zBpapKc(p=KOi(mi6E#ywHMQpePjiHTQOS!7vqBa-w00eGRcLck@R4z9S;3v{W1tFdNfJZYqHAL2@6(uYuZ&Z=t>GLx+JD!kdzW=*x03E zQ_p1i@u6alims8DNWzsTljm9$PWbX7!NH+HRE5JJ%cW)V9OKNsHv%4sf=!IQQkGnk zIC&)u-HJGR4!k&^sflZ4R%;EXMk0jSi}YZ4-^>ybT`?3P^d$p*P@{{PU`6;~Bv?VE zL4mrd)9G}&xlgy+a9Tpnrr}m?F)_SwkLq|%R8SW3=_cQX3M2$C1?vmJ3;#{s5sw^P69Q7Y9Bhn(RmnZF}fqrL(og0 z351qlfS`|uK>|I&Fab+o2*t1fY$yi8p%Y1tOz4V!HWILXumoRJ;%@+ z4NVNRvCzgr9|^;87^A>)jDaozLy0h?z$k-R42u|}kuc@LqJXs!6Zx=R#KZ-R7r<5w zTL~u1@V*N6>zJvxZkp)kYr6G@Zd>X07~P(tJJZ}~|M5>QkXJun#ufXL zm60kJ+RMgf(#)qAnOo7QFE}tKwlq}7dm;uce2*izhCW$-c`oR8_ax;Ny1de*FHPj)Yg5c*MabWisYzO}|-|AC@9$Y2M33CcfzE*{TvIyJH!xVIwNUo^BPEWS@NY d&XREE#wtI)s<@%lTh#gY#4Kq}hC1z1-5)pmQi%Wn literal 0 HcmV?d00001 diff --git a/img/admin/warning.gif b/img/admin/warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..a4316825ec00c16f0047334aab6eb7c318b89c18 GIT binary patch literal 581 zcmZ?wbhEHb6krfwc*el+9|->a{P*Ym-(O$<{(S!T=i9$O?)~|8lo_2kGu;$DC6`$^G`gTA0b*5JEWEt<#0?tF(YzNYr83sL2 z{K>+|4s@js$fck-VPId>z|hp((%ROft=`@yB_}7;-OOaj#AVDhkwHbAnMGcCBD)Er z01vARm(H@0P*||Qk&#tM eOu+GoOJBR45)-G1kb?=;mn_BkPUVgR3?qZqi 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 literal 0 HcmV?d00001 diff --git a/img/c/2-large.jpg b/img/c/2-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3d3d24dd90da3bf4c64996395ea3d44784651d6f GIT binary patch literal 15694 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 literal 0 HcmV?d00001 diff --git a/img/c/2-medium.jpg b/img/c/2-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9692889a042e174cc092fefb846792d6fda19f1 GIT binary patch literal 2560 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 literal 0 HcmV?d00001 diff --git a/img/c/2-small.jpg b/img/c/2-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76c7df8e783f2e4dd8483f9eff0fd4f74a54df71 GIT binary patch literal 1380 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox{#0Q&N)$F}wFrX@yoZ0brSJibj>zsd*%Eo`(9x#F=WbmO(Rn)cN<@U}eY-21n>NUJHnnx_eR_CZ_B5{_ zKV@Fa{FM980JK?AkO3HcjI0Qc0A0__A}D02pi(&T;0LhfK!@2g^6YK>HqXFf%ERVv zuN=V{vunTqKDEx`d{5PmFRS>2mEGEQ)C0|v5(Mc-_yZKzf=oh+3SfhnKnATcOLg42 zVsh}31Fs(gb?5;7&dAIR3|E*V7@3$EfG$up6jl;ZNW91@YUCJL*tl>b#4(HvZ1zl_ zoiDmhd{QfWl_lu5Q(J=9o0il4~FMhpEjzqL=hgrRgs zMu__4+iyLqg;*P9CT%J*zx~U!qIjEw{8@`hx206ya(@?nv@gE+u~n^|Tc2Uj^zC`? z%6W_03f*RXH+gmE<3ATf=Qz#Wwen?ak-SHP zU*u7v;#gh1cI)$!@8qv8G_UVmet;`zuO4^G5@q9git`^b7wvmIy-xJ$ErmBzLcQ0Q+|=_npTS88m^fLOkkSyNAcLY|pktvzV&g<;tbvk{ zz=R2T#;;E(w(I7cbFc$b}5jB(3>!ta6%glFcxECIuRKBzS+uEHOAzKT~?n)hGuqrH`dGF)G zDFtm>Q7)_F4g~UjdXf}8VU_p``=a=5-i#-?_gl2Snc?ns-24Q;^BxJVWQ=0>^?^SQPCS739np~T3Q#B%V@><kzjoa=lko29|7XLs4> RWXAstVlocDZ&%rEo4_ufChwZ7_F-F?m}@4cT> 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

    eCGjA#!vUPD!y=tMgx$8_OXs_jr+hkcdtGe&J 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 VFKI>yz^{a7K?39PQN$RZ|Jg5)IavSz literal 0 HcmV?d00001 diff --git a/img/c/3-category.jpg b/img/c/3-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf93e8c87145d9a12c440a16c7d0fadab73e9cfa GIT binary patch literal 16989 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 literal 0 HcmV?d00001 diff --git a/img/c/3-large.jpg b/img/c/3-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33f929178b97f2bddea3f5e636fa6dabe2f77cfb GIT binary patch literal 10597 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 D@*$Kp literal 0 HcmV?d00001 diff --git a/img/c/3-medium.jpg b/img/c/3-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45e6dc0b53d91b3c67e80c3469796b272a1b5408 GIT binary patch literal 1828 zcmb7EeKb^Q7{7OBZez?0_l}tclbAu@u|vzQ6{eC5mG8313boEgOSNpfGiS5aNo0v4 zwvTD7P>m2)kC*H= zD1Wp2W(bBM2nG+N`5oE_;c+AF!I~z> z7^FI9&<6u)Aus{>nE!Er6F3;J>4qqH7{Z}=6mT3#1G`2EQd!F~m8E>;RW&>vZ?&be zxJubrkwKS7d5^5hSL@CsXYD_$Gt``~%)Wd;E^K;Ddt0v(7SwqhcKxh%ERE*u)O8Kq zg9kx5C@eF_r%D_W3Xg0hItCpHJ3=nuxpuT`y~o{n%huj`snsQ^TlU|JH|L0B*t?4V{`+TRp_ z%Ng#I9<>?}BzStnv2LAIW-Bz%0`edJS~v!q;n*mLJ4YU;Mcz)dS1xVYa=%PT3I&)? zQ3wYi5P?J@&4+_=5T1b14A>klg3`@D=6RX^#2!g3kv*NS<|1dD zdbCa2lbjS)+hEx)%LznU&+yOH4E4vmXYPdQ7F;l0D95tqqYK^J?e&O|ShGJM~65VQ@6_Zp3fy z$eWT$~zHVtQS zl?P5*rEI>EH5=P132&usYRr&(-kovc`r4)XHs5{ueMjf$$gwx%nF|h4{68&*>Z>Pg z9bBbMzfLCCb27m8ZAMWCvD7x7ww1RsYsDJop2^-9hJKFgGR2aR^-iL9$^>eVw^P+^ z>%{5u>3(0C?=Oz&Q(haKGI&0T4UxsMUEz6_-`Se5t>qWT7|O3xE;YxnXgVJ~9&gAL z?F>8@nbzdC`n>n5xc(gs;={QXTB1N9uvYI2{f8lp&Ec2xO9o_or={< zBxJp*^>;pzPn_c|bMw0L2RrXim)Rs1vta3|vOBL_zM77_YC+Je_O#-CRUVnDN?j~2 zyoYZowUDheS<%2w32rQZ|HTAFWW;(>m}41pTGea*Q@x4AZ;6|QBHXg3$=~&zp~{xp z(SI^^-y?ft2Rspf(=Q5HzM@m;UW+4ji#8y+HMJ+`iMuSTt7`&xpZUCo?_3`Co;b8? z$jsWIf|XI7xx-+V-+HB#VS7P4+4DaRNULo0)o+fk+MJ#S)cwv1wt3Z~{hS+pP&c5O z`56YUxw@fdJny-3X+?vMvBOXWtwhK--L{JSFs6C`<$~()Df-oxY*FP{dv(*X2hT#JDhrY6^I<_%8K*hd zz&hK#5KS|K-i%WY4p4`Uj|oNs*4?l-5ARTT5C^0`8u?u>zTuG57i-~oJagarQ`GUG zU_KHkKxX%*AJ$LGC2S(>yOPhoFyS7@Ur0j+c8K&9m{+KuYHGl!tvi1&1p<)C$Ko!(`-LonHv6 z`H}dfq{+)4!(Qwm?bv&d?&=~>%Z)#sXjX!{t()B+f^PBkH1zwF(oNqGI`tlmfc!7M CU%9pb literal 0 HcmV?d00001 diff --git a/img/c/3-small.jpg b/img/c/3-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..981e037f0d768ccffedc6c03531852a3cac902df GIT binary patch literal 1176 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 literal 0 HcmV?d00001 diff --git a/img/c/4-large.jpg b/img/c/4-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f752acee91e7baff3d56e909fe9f5cbcef2b39ce GIT binary patch literal 7716 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 UErrWC6k8co!~Rs4?{60V3)OjlI{*Lx literal 0 HcmV?d00001 diff --git a/img/c/4-medium.jpg b/img/c/4-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..945480537ce797e6db3f77ed2f0ed613e2e5c110 GIT binary patch literal 1683 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 KL+(qgxBmehbb%rO literal 0 HcmV?d00001 diff --git a/img/c/de-default-large.jpg b/img/c/de-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..dcc29c8f14dd0455ddb3b39d3176e4f521c9933d GIT binary patch literal 8343 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 H`uu+bgPCz+ literal 0 HcmV?d00001 diff --git a/img/c/de-default-medium.jpg b/img/c/de-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c0ee666461c87378d46070c5c514857386e472c1 GIT binary patch literal 2010 zcmbW%dpOkT9suy)%x}hR1~X&EZNeCXLdk6;Qphz7x=6#O!nkEC2D8}`ty{{@Y-pt{ ztxIx^K_fygAxRTuTnm&5rgw=RD8Zf6h7I_xpYSc`wiR^SsaVZob_d15i$O zj&=Y90ss)v05-n@<~AO-R!1lvdkHkZox$h)X@p3FUAqa}>ES_PG=ig(J;BM%)}9ba zHr$~{I8Q$n8Wh1G>?4@%mf9QwYyc1n-AYlwL7bOr{Ogu^AV(gy?uv{u?g99kJ(_{MDZl5|ffsSijs%&&a&>YgXR9-}4I! zi|!Xctg2?$)Yd)Xv^;HXYwvj0+4YM1x_{u!+d9 zTo3^KizS->g8hdJEpkC&Fc2ob<$^$?LJX#Cu9 zHB5BazBXK?5}1%)BRZoG3BF0wolNp5sn z|6~jqcK3FQ`R*m@bylAxZ>gh5MJJ>$a1)><%sv0u>MCr~6hJ0px>=^ko+a%L*)ek$ znVExH32R3a+TApQ)XqG}VS2JYy8+W?vj&%V#cvaGVp9qb1#&`19ans@q&%7a^EXN z>%5;D)h*R`;M|>>+Hn$+oRrjfassl-lHKOX@OG(f!#jS+u&-v}D@!`_I)h&rvNQ~6 z+8d2dzdjjh1I}O46xtSZzB_(=sO@6zi4gaYb$T)mSa4DtI3kEK zZhXY{nvdBp7B^oORGXkwo;5LEIzNeQ_tfjI&*T+TR9q>_s`A2>LSg2yzC8KWirMwy z>#8}%Kcrq5maDuIGXp%gN|)SLBLl*O5COERm zcUAjM=6s+&T8i3rT$4b$d;-Iwl4!^BxA7fgHGwZ_+WFz@8ISf-h1VkUOJ+YtQ=Jng zrW6YjDAky}u`fMJ-KVuu?_M?A^FqSHYl*et%w^yId+T+5cIR9l^}0Pp*eL5?jf0MTP= zClFCpie}bF8go=j_vN=&VOP=KM1#1G%e^-a(pnbqD3rta4MRJrr%U@=IphcYpk2nz z6Vj&E8^+6>VRNCxq`@{)qcy5WBh1jU<5cW{VOMyFu$R9>aOd%Q5_e}npD&x*%l3ZH z9CD#6xl9gOTN$DnZWT~KV+dPN^>n>FF#;i6x%FGz`r^@sCxP?78xr-n#wj4mDE94) z?!&TO+zBkN@Wz6Ld12tI5t{(!Ax2Sk7t>~2WoBxuoli3CtO`J4Htov?aLwf{&n}Pq z1*?)+%g-z7Yt^f()Vg-1=us>`tn4l>FnAx{6Lr%~{C2eVcunOvxvxZd6L3C@x2NbR z#8VIqx^k|=fG6onwQt4&1Wql&4=?`&L8=kb$DbfC2RhY=cSbKaJP@r&bHm>J&cA8&atl4E`w8@u!6Dr>y4$03BHaKDXE@}1i YC1-!5?Cfc?)wQy}|AyawNN{uTPg1vHga7~l literal 0 HcmV?d00001 diff --git a/img/c/de-default-small.jpg b/img/c/de-default-small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..11e9c36886bc33382cc8a795c4f7d4ab4863facc GIT binary patch literal 1220 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6Cz%mqC}AQHg;`kdaxC@&6G9d7vj*8Nq-73K*GyZe(NU;N;>4 zD%dK(z{JSR%*4VBay3wOEl{3;MUYiU(a@1iI53f2sZhkIapFP_Wv7h?MT0JWP%%y_ zYU1P)6PJ*bQdLve(9|+9H8Z!cv~qTFb#wRd^a>6M4GWKmj7m;PO-s+n%qlJ^Ei136 ztZHs)ZENr7?3y%r%G7DoXUv?nXz`Mz%a*TLxoXqqEnBy3-?4Mop~FXx9y@;G&P778mFHFAhJOi*hHi=1j?9ZhleV_)E}1i1ED_o0f%I-y=hnAeD{tdU_|+OZD8l z-EpSvkwTNd#>T?l-`n1vUsrK_y$EBnh~TV7eT5kgK^1fSc0ba3@Uy$;X{{Sy#mbHa zJoS<YL{ziZKCa(AdkAx^4_VQ4?b|p_7;4f&ue;O-P#3PuRNRV+f@0q z_vnqj2Yc2E|J-EQdDv*f3?_rJ9WuqS{XJjKMh9L_{C9Mh+4hS*9J-1jDXAGZwpqR9 zf5v!saopVOi5otccl>AA@>D!(-hyjutKx$HE;yLle74M?q2@40pr6Ni9b`Xpwm#+XPSW^zL(Y+g@I3uW7`i zd6I#7%ZKp8Z<8Iae(7A_yXACp{*$ezVs@sK!Xt99*|4jh7%h`?q literal 0 HcmV?d00001 diff --git a/img/c/de.jpg b/img/c/de.jpg new file mode 100755 index 0000000000000000000000000000000000000000..43716f65318bb486962929a0530b495c72153c52 GIT binary patch literal 11205 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 K-Hni^t^Wl!0L!ib literal 0 HcmV?d00001 diff --git a/img/c/en-default-category.jpg b/img/c/en-default-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c28c90de171a96a73e4a1294e09713d232a4f5e4 GIT binary patch literal 3928 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 literal 0 HcmV?d00001 diff --git a/img/c/es-default-category.jpg b/img/c/es-default-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4bf610f5562e2526ab9e50883c89d1ca57ea3180 GIT binary patch literal 4121 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 literal 0 HcmV?d00001 diff --git a/img/c/es-default-medium.jpg b/img/c/es-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..745c9f1c983eb4f44e771dfa8b2fc95c50435d8b GIT binary patch literal 1799 zcmb7EYdBPE6yBG)Fh=$;GhI+FA*D$wjoTSUxz!lby<|v5E}6zPWJ(TA4o5>II+RPA zsEI?8oIRDEes!L+_V;7&?^}DVcfIdgpZt;hIe@r0I6D9! z2mm1Z0P-h*Jpe>O$AgK zRN$R990X%AcqR0Z{Nwi5V|fQagh2p8U<9pjavi!0s&6w4qxi>Ja9(_NS=Br{=b=e{ zCNa4gx?hfO7LaKl+Nn0%RNo zQMWZfvnin%KrA#lJo4mzX(g2yahtGGclR$&=Lp%$e41-cmwQ%%I&M1~Ei~AtPaGKP z-d`v?KN+x$U#~Bk#O;<62R)%n33%FDNcwa!v-4VCcetobvt~m~jab%g&dJbJ%AA?bmdsN5gxh-@o0XNXSZd2o}vv8<`3-KCYLb-+3u4 zAT^$a$&PqXwY}bVzl35*%XYp>woY(*zW!GmYvCOP=S=Oi_If2CTHw=$6Pu*_*y1M= zo4z&FLC>r?TIsw7NDc_Xt%7o`HbvW>eo&&9NQAlRm=aP{!HOJhNGvrk3&(A@rs z;p5G}*LqCgG^*J&FIybN~6-gnfSn2KI6J$@<3^0wN$hjF9M@vF0oa(ErRtk=bv z{=58r=(^7rYL1S+vu`|fR{ib1W#-{E1HoO4M~bf1N6@B(APB_3-?{-L0lG`=+`SQ7 zH}0Xd{Av9_hVIy8lPHC_@s`EzuvsRm+QOE=#PR!QXt!J!(6SBGme7{&6g0_ z1=%Lj@_Ab>PMOgw$~rAS3W8e!hr?~UyBCS?^?x!oYKyjt+tTadBa0|GvYgd(+`M!| zw&_`0D`0pdGsV>ZK}%PdXBbhUnLkc*q6=#sZ(xivLl#H;ZlN_t2mbrLi2<{iX zi$je{XWkTZZ~;>Biu(Bh{8h29a7>AoV?=I%S|*FRfXTC8)ptE1tbP-?En9?E_on~UbR7>&slUY&>8}eVn z_QgRD6-c4bj{@leUj;gpro$CaUn~q{e3+n7B1Tr|XtJ|r9pkvC=W%kYsprWql-}#- zw|6go6rN7$XL}vsrUBzUg05v>ob?Uy* z>(S&oZ;^3YtquOcU0&~?Yh6|YE!m2XRN%{KzeIA@``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxp0@GqN(hjO%!p?sO;U!V{BahMauML;99}WB8-EAu&#!>yU;(@g^0|bHa~r z*6s(nM-bgT5QCT*8SNQCcH&aN1XG|Zz`(@F4D=p1%vp>~f($~6%!W#ii3-LO7YZvI z7zG9uPP%yMA=Hg*_DpYC=P7S^tLDJH!{(E{$jN25GNcPr{@ma2VYwTli+q%OqO4B{|x0*Ghf~G^jTyp1M{J7C5w9P{H>0kM0xf*jlrQ_0LwtraB z^d@N2uG?+jFa7-M%=UfWJo)Lc=m$ruz(Nj=M}7u}@dP|5W&{Yu3|N5z*sn-lWndI! zP&9N5ENm1=oTvczsldOkngwr;&C~onf9B8WeMUb{KbE_~snYeqC2_(px22mym`^ac zbS{3IlGGOK%&?5Bb9sMoNL$pLQll$7W;n1-^zE1&Jaf8GtKH4o2Nm4glrLmV-rGLU zZFl$LRbDT6U*xk^HP&yqaGWE6mCfQ}qEpcoMTbX!le#ConfE$E;yU9F)4luc{@Fg? SZk4|0``pd<^7qyMzX<>tuPw#^ literal 0 HcmV?d00001 diff --git a/img/c/es.jpg b/img/c/es.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28d7b8c81516e80cfc3027882a806825d27fc2f0 GIT binary patch literal 6828 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/img/c/fr-default-category.jpg b/img/c/fr-default-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c77b7622e867a956a9184806b60a563250b38b8 GIT binary patch literal 4938 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 SogA+3MeOqwe|b@NI{iPZ8*3&2 literal 0 HcmV?d00001 diff --git a/img/c/fr-default-large.jpg b/img/c/fr-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70c8ca6b7938871aa95e2f9337bf346693231b35 GIT binary patch literal 8272 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 H9~S=$9s;s( literal 0 HcmV?d00001 diff --git a/img/c/fr-default-medium.jpg b/img/c/fr-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a216e5ea41430cf5f13215ef83141ef99f1347ab GIT binary patch literal 2223 zcmb7Ec|4Ts7k_8od2NGPjiqAjvXi;hwar|2GKy4)Y0)qUm27P!Y9d$2SZ_j%5F&pF?7&Ud+cc>us}-sG?e zKp+4B0WV;=53mD3BywfLf`T_B1wkkjBqJ#)Atfs#D~pyvqvhoBSUGu|JQ|H9VQ~ba zf`Wo9Mp21GRKgP#h$}xqfUpe;l7=8@q8wU|_8N2mwkUrQk>6f8BpoSndU6LD&QfV&M!I3gAnmS;Oy(?OR@GC>N1V7=31w ziJ!V=;zql9#w8n1-M)viapn~m4%y%M(H2*zVm1Eh_}E7I``NG|26mx=h1~-P6ny+6 zAPRwm2mltRK&0YHWZ0n;90meHE;QRl2K0OSU-4wU+wJM4Q|2LewLf+%zBaap>(KR^ z%tOigk+-5(Ns5@X{5PF>Iw9)u7jWYGkn%;S1{lNEm-eSbwv=pZKevC**EyxpTql8& zf# zzbGKTDNtZ&5Fm(vP*ReAV}pQELgDZPbu$f3bJ})d2)7nXUPs;GefkBYW#^SQIQb7+ z61K?2yKTb2Gasw8A}aRUsKrZ^7WJ)Z>+=wJQs+Bwp!C}77K7U6wC0C~b_mKW6<2K# z{2|PGtYMI5vH9smozbDdpD1(x~b4rsFN86 z`nfL~x8@IbNbd`80wyEJ9n>rRd0fszFIo$qxTosz)Q3X@$M5Alh*lj`?dn`oZC2Ay z-5r^RNK3MP`;>#B8r%9o>9;@RHBdN~bDGgIf865fDS4}#KRNLqcMuj|)_53r2 zqxDp)dY@d1$EQDL_{WSsF;e4ydM__zTL-!si}QJfqB*ZEDP4HlvZa)PF8iQi_Cpd6XdF!5OY0NHX=F`bq+Y9_NwNW-Tb6O z!xgNyo=!>SCnb9etLYCykN8ffZ>aq&%+NgC(*ey4**>D8b-mmAu12dpU>eoa%l$2N ztcH`b-SUJ`LrN3d=VILn0g<1-VHq&=RI6GB;0Dyh!gGa0B2eGQAAtkZ&1l=bLQZqB zWa^#TZ?k8szO=u0%-w$tbKYF^tLhX>g-)cM9bG+rnX*2|eqj&sPqJ7e^n^F}sa=)y z>ywpRb&JeQhTQ>$gXv9;m-5(xqlf!d6{7Adw(e+qS=t6DJ=|ujudr@>UwUC?8~*O> zYP1s}p6aQ5E76O@xmeSlw%w;wG<)C!q@XO7i-FE_kZW96)=C4pY44$A^U!+Fymn`r zbakAC@Ujf~&6hn+JjLT73l9K2#s&2BpVS7$*c*H<#qjbka{;w}NZ+6cgx;X|#cu?M@Z+ae^AFdFOr4QOm`v9j+m3t&9^7c${b8 zp(wu^LHDYk!CdlqC*fSng)+_T+{+0CL3!>3%N$l-X;lH^&0WTAi-^U36{}k}FI4f)7N$zCKtA60% zCc>JFyoi$G;+(W2F&t@}Z_rGSt!tFr7Rge;<{D_I@nig1z>M*1Q0>>|BP4%)U>Ptc z_*5YIC&ccF#{N2 zXGQ}r#GXm5lQ7O=JImiRsnrOcdrKU9qZ0PzmVlBp5N`0CO5rj7Wb>OEKi)iZ=tbDt T554%Ek015M9>BbY383dMnILVf literal 0 HcmV?d00001 diff --git a/img/c/fr-default-small.jpg b/img/c/fr-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..69e05318a0f3772c8ad55e1d92885c840a8a941a GIT binary patch literal 1252 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxMw02J`ns~FzyvNOUir7nzXcOS4rS?`|J1<&ly$oo{9_u-nx ziLjLXOL?7B8Y)fH0v>Ew9u$1zj+c+SRHNq6>k4y{)V(<(%0Mm_M0c?P*bZh!Mteqi zJPMd#3Jib_W@Kh$;^u@onUP75fmuk=&{05GK`F3t;=+vwFR>Uo1tlgGHeH1JfX$xi z>76pSM{}BH@-nqG-$`3HLBz>gX^L?Xw|m3eWsgFAx1Kl|e2!WE zKH~dL#&GWK2aIFWigq0B*nckc<=RQ}7T2%t?!M@#b%Tldqji`8TZB`|cH2XYzDe8u zoZxm??ZP#8nc=-q?ZS|?_LV2AQainr6Q8?;bNZNTHf2E(T){oT)j(KZ&0Xr9ruxEbYrjszIw@*1>xcin}Hpyz9{Y!lme6`k9FI1EMR-*v`%6S+}`siqcx{MVr*R z9^AMeV;r#R?v$s(nj5|Jj=0Eebq;o`IhErm&^SRyXG{IEe;b;(Rka;-@B3JCYrWs9 zA5vWv9KCSbr$rybS(g}isWcqZvD$cCea($MIa(UZ8wG_gYrJ1)ak7D}`Sm-q8O^0X zHF-?R@@||qTgbJcJMKP%fXxSkRrh6|mrpqL^Mxy?+QsfGRTpFgLhZw?&hPwgbAIRk H;{P`Rw*rR{ literal 0 HcmV?d00001 diff --git a/img/c/fr.jpg b/img/c/fr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed443472f6457de2a66f10fed0c34e25d4620b0f GIT binary patch literal 13454 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 literal 0 HcmV?d00001 diff --git a/img/c/index.php b/img/c/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/c/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/c/it-default-category.jpg b/img/c/it-default-category.jpg new file mode 100755 index 0000000000000000000000000000000000000000..add52ebb9866dec260ef650995e0b6657fc51af2 GIT binary patch literal 6438 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 literal 0 HcmV?d00001 diff --git a/img/c/it-default-medium.jpg b/img/c/it-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..461031f99934d59dbe75a84ed825b9b74101c174 GIT binary patch literal 2607 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 JLI?T(Hvtr}PZR(E literal 0 HcmV?d00001 diff --git a/img/c/it.jpg b/img/c/it.jpg new file mode 100755 index 0000000000000000000000000000000000000000..94802add7e6e15673d950cf943b205f6b139eefa GIT binary patch literal 35628 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 Ksl9)th5rG(VF{}M literal 0 HcmV?d00001 diff --git a/img/co/index.php b/img/co/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/co/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..883937325c4b6ac99389725577f2043aa60a20a2 GIT binary patch literal 1150 zcmb7?-7AAp9LIk{b7@6Vlgtfw+FwA)g)3Js6jx%F3m4ud5~U;&iVJpQxzG|Zv$VV= zgwfKNZC<7pt-M8~u;Y6kJ6hW_&3XDfzs~pf`}CYT50L_oN=10*Qhf?hCJ_|?L`Z&e z6e>pVKkMe|S$Sv=I&4P&#ilv1>^pkw`Hz3L_b}dDvCq28_aqj_E`xvhSra;i=zEUu z8;0wgA>r~m)#d&QcwaKaOmxj&YS)8X&vTGXwz@uMhkU=^=Ke&piy04gwK=B7q-dA# z;r0Q>{k5Q%nFqXVMCWAvRSt%;u<1TGTe&@Dm??|no4C*6zOn6u?O1QvmMy?+cAu1m z``S4Es_Daxu0;j+GXZ~F*0&f65^(t$%yK^Rk_7$XIDU14ev6#1wiuM~^FS@=08L;J z%z$%n0bW6+oG&u;HJ~D5Ux>Z*zv14JoMb}Uo5$7(I$e$d` O268!G@`>Jyh`s^lVQd8e literal 0 HcmV?d00001 diff --git a/img/index.php b/img/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/l/1.jpg b/img/l/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72b962fa68b3be1b7052090dbbcfcd50f468cea9 GIT binary patch literal 665 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<&6$5T1i2m0J53D0AgYh z6b35>nqtqGl9MxOKUS4Mt;{SCl}sR&)6T770xDDy0J@)r8_7^c1|dbINleUw%7%{4 ziA4`TK%K&7&mlBjCLa7y z2=j-%qSx$ap?r1HZl-A|apt=7|deLj-OXn87GG z5$;EU>hRV4KxJZr=s^s$7OV>7KLJKVbD$z=0iYsAWb+sW6&VZ@3m?KACZImo{g!xo jU}>G-T89lMMP^T__vaFDunGJ=O=;pXm%gd@|K9`vunB~j5ev@{~-oJ4hC)p0cJ))1|~s9WPorsHvgw`;@jXerr=KwyGZmCQtN(u!0HqIu AiU0rr literal 0 HcmV?d00001 diff --git a/img/l/3.jpg b/img/l/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..adb6dc5d93202a1178d81d4e32c324f871e1c47f GIT binary patch literal 696 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxW?^Fx5&^2`0Gh(c%9NMJdG^K+j@tLHLN@FKX%Pg9 zqS(sFz{2XX@F7?WGb5utqapv%J+FXDr3D#)A&0D%k%`%mfkkm4SS=Gs?c})fP)Oy-4T=IlE18+t5$<7RVh}W9R%8(pcAT{7BGgrE_Dm1I?8@>usazj5E$wc{pG7uD zn{G_qRWTK4hKv9M6EnzHaKI?YplF!bco1SM&<1-&nLu?FyMFBxR^~_95$;=okPzF;QSTlrKDP%e2Zj#ZW)MS> zfl<(~5bj}toJE3J8vB7tB?N#bqr?=*WJ9PQ8SMq)ZpJL0x_Wm&AlDINuF}0G-op2s WBYiF~X!|htmY#G{DLGdD|0V#DpM^>Q literal 0 HcmV?d00001 diff --git a/img/l/4.jpg b/img/l/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5abbc8cfa91a2d677274b4740634818a40ec3165 GIT binary patch literal 924 zcmex=Jq?U}9uuW@2Fmx*ZrGjI}^{1{Oh9Aw@$+HsQcTcBMiQqsEB~Ih36?9uy6__(8=u zsi=vQOH5osQc6`#T|-mL#MI2(!qUpw#nsK-!_zA`Bs45MA~GsDB{eNQBQvYGq_nKO zqOz*FrM0cSqqA$$M%n)zEeTL>QL7=~wSXh`@ z*g^hcWGV+@WL##!=?ELHy&R6vPoC%%H-6%qq9A_+|mp+lOk5C zO!9oTWA=OQJ12F|6x}#1yZ`1oiK!PK^=ArNvKIunaj;vyjobO3ft&kC*~f#qatl}t z6?#K%A1PS1fN|2!HMQQy_bKe$zN0Dnso`m9w+GQjIKzTCPQ>(SKit1 literal 0 HcmV?d00001 diff --git a/img/l/5.jpg b/img/l/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..744eb0eef5a1b2bd02aa947f06785ee349d68406 GIT binary patch literal 911 zcmex=Jq?U}9uuW@2Fmx*ZrGjI}^{1{Oh9Aw@$+HsQcTcBMiQqsEB~Ih36?9uy6__(8=u zsi=vQOH5osQc6`#T|-mL#MI2(!qUpw#nsK-!_zA`Bs45MA~GsDB{eNQBQvYGq_nKO zqOz*FrM0cSqqA$$M%n)zEeTL>QL7=~wSXh`@ z*g^hcWGV+@WL##!`JmU58d{cx}&O-D;9p?;yl+@=Z$JYo;fK` zKA$a`zco9`^>K7Y>)LJ4E|#->3NNsJevHq^QuNrrGyjaQ-9BD^E$vI~y!-B@y)`pF zF`edWoV(MeYS#MS-mkZRuQT8Hd0Du+x6Aoy4G&K1xjB4aKc_17KZEfL8@1k#7vh5K H|K9`v{=pZ{ literal 0 HcmV?d00001 diff --git a/img/l/en-default-home.jpg b/img/l/en-default-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae66584319cc1119a251037135a73c106c4f9b34 GIT binary patch literal 3026 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 literal 0 HcmV?d00001 diff --git a/img/l/en-default-large.jpg b/img/l/en-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d08a055e03dfb8462820fd6709e102724d0fa868 GIT binary patch literal 6819 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 O_|Me;Jp}SiWB(6E{$ox6 literal 0 HcmV?d00001 diff --git a/img/l/en.jpg b/img/l/en.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d07b871d2d2968a7d8e6a169fe808e4fe1f86e8 GIT binary patch literal 10859 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 literal 0 HcmV?d00001 diff --git a/img/l/index.php b/img/l/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/l/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/l/none.jpg b/img/l/none.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e4c07cd411b8705dd365d37c94a9cd1c85cc303 GIT binary patch literal 443 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 z z<|DU>`DQ*!^}q1>d_~*+_nTbT`}Ga!CbfLY`3yL`&gh}@J*oAI7)j7&-c&;rEpH?# zuO;<4Zu2R{pRC{2{cW@REp``Qppxg9EG=}^ir zqEV&~TAXkQfu;2*s)U*ojDnI|_i)+*2VFI5KAuobiF#$TRl1OzVkEsfwD?~~^bMnl zm{Op$msJG0@m7iTS8r~acdrVu4;m__tw)nmTdn*BFFVE=Ggcq2%TDoOPZ=6zx! zy)4?$iL@aIq}0xF#ND=0`=GbhKMtZ&cbk352bS!TqPG~$SH4B|p$DoZ%Bm$Hs(QHk zdAhpM<3m2e=^aLz{NKEMR|Y|NnKWq{FJpJ=L!5|F@iI0~twBVjvW5db_*2BVO} z4o&`VM_9Rnxo3Zy7!<2neF4)+^+Br`zB=WgF%0yI_HdOJ4Wc|%d+haK!6~J7p;L?L z9Q@Vw%g~#DxdxSg`Rdk4Mj>JD%_o37V8hY`glC(**b72p&I#PXIv*u3A?GUGh$|8> z{D{8fYn~vi2LAI)QvR4gm`Ts1nt{+td!CnH7>6ypNI4zb;(hNBp3`MU*QVMit9!fi z<1O=9!(#g{$nfS1#FS*D>yPx2(+wShyx0DiaIYIOiL;5RHwymt{io&X-Q+M#Ybfk* z8tsBhFo*J~f@sfxRrAxylDR5i zS#F^2Ut#L(J0g)(U0oeCEwvuj+S}zWUy2N=ARz(XOVF zRyu-++00?00?i2UJ(bBkqK-XD6er|r*4h#5vaem&k z!@0OPcMVboQr51;5JyC2izciNdzp@CTol$uP!${e(y?D97Zu@nZQv5+R%&l1Ynkg#!gF+Iq z8}O2-gtSXURpYLPEsOV9<2moO=NjBUu#Vv08Gq?Tl>P- zvp0OTA$8C(GBj!;+_W8w-PUc?`;ZISEBJEm0#-GF`pgsKAqiV{kOr<_1FMc~@G5@j z4=_1IG~xY#6pOI5LxTL|kV2gEACQ{d5cTb1{qjd0@eQmtVfJZ literal 0 HcmV?d00001 diff --git a/img/loadingAnimation.gif b/img/loadingAnimation.gif new file mode 100644 index 0000000000000000000000000000000000000000..82290f48334c81272ff5991962951758137a08ba GIT binary patch literal 5886 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 Dl)1NK literal 0 HcmV?d00001 diff --git a/img/logo.jpg b/img/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0cc82adf8065109dd50cadf1ebfc09ea879921a GIT binary patch literal 5022 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 literal 0 HcmV?d00001 diff --git a/img/m/1-large.jpg b/img/m/1-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6000b1be53bb2dabd664cf01121c8441dac63550 GIT binary patch literal 4108 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 D7v8zJ literal 0 HcmV?d00001 diff --git a/img/m/1-medium.jpg b/img/m/1-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..373c85b7949a8c3509bd22a2c2d621f6261b38af GIT binary patch literal 2056 zcmb7Ec~nz(7Je^#NPzbOVGWoVpdf~wK`EH97=(bbyMVH_fEdKEl}#ZLDb$KYpo1tB zC?Jc1$fBY`5wOBRCyF42itJ_I1a-;)eK0zm`E&03o%1{I-1B|s-tW7=yVmY$a4wit$VlY@KJRV0NOOeSWDH2Iqh5|{;z%nEfqyWKk z@>D97EUT!bAg@G`r^;`UfM^7R!4k1pqP#RoTK@lz&Bp*t0Gt75G`JH$!5|t2H`@Rj z0HDwy62Rv`;Q$O4j|K@yRtW@<Y{{!eqmdA!?k{-N)t_Og$Ry*AIT30x{UR#3lG;?ZEYOquA{ z+S_|7E$ns3Tuc0nv*?YYMaDpoW5nnnkzBujKBu|ZH^_XlF7tX%6Z??g?rNke4F~`+ zh#p7@p8^e{FjxQwQ4s0qR0ReTsgQsa4q{QOc@}5B#ZA`Uh_6`bIN){EJZ{%Fmi+nA zUjH`(;&c5qHQl-s@_&yG;9DMh4_Db~y^g+AR#le#lfPJw=H71Xb=k~2YtXk$O7tK! z_~2O62d>T%FI^A1&r{Q6pZ&^||5mpuBK-I1-)Uzy0h6|5?m~rstVhPRjxzGn5}3bl zj|O^*HuJFNQ-q?4b$Zw&oi?=fV&dKuvF+ziH zRr~Td?P&TXCyL%a?flE#xAPb6Xn~@oeNd*=@HD<>&jyNcq?Kn(g^#p45Uiz9a zIkWb*P%*OP!T_C}-Sncl*QKw2M??J^zbuuwOz>}^JAy*d^qFQ!^4(&7$}@Akm&ZzC z2BEBXuJ~fRi9>?J7{l|TRlk?|prCbWswzp=iJLG*ri(O;%vYSQH6HKZ5v=m=J8OlC zk{Wh`is1&QoDDk+3$g{|+iq#~Cm@446*EsGgFD6EULp6YGJA_@saZO;_OxAx_c?ov zx-W+2u9c7X>fNe$jPZA^cHG!m=BzH@W+g0W`E-r=qzd2+h@y>C?XFrE)F}%G zSaH|QuBM1my^E$>(Wf=_)odhJNP!8fNjG2c^1RF2>=@1UPfwpT>A`+uAhRfU>cr&v zX*e0Lg-dfKb{E|W|0grHStDXLIT$kF##9=;$(mN~<;fis`f3&_5a{qjO3I{^3c#|_ zHj0LXUNcN|a3IyMH+vp)UZ+{@`m6KR!Rlok{(%i1S-LbfH!?Dz#W%LF&stwjzfRC8 zt2|F$|M^IJp#n}`okcuJB3;j~?bcI4iX>erV0Az#gu1*11-QcS0lxPE5lpc>%WG6YvvJ!w>8~*E0D{n zyb~d-U+%mrd96r=F(=8^gCU{=F*%F9yS?3oh;R+^Wz@N05O+f{xq)x5#CxAL4*M7h( zRASJbf71=(!7;YOoaGkg6%}SFE0Be+{_%^xpC>H19U9Sl=E4j-)-WI2!v6SWRY-hE zm(?2jLQGI$efx@AgRAeEe5XBcjnlX(BW4usQ5I%2T=y6woXZ8TeKpLI(dW0kyq8K; z#(vMM(zhK)(2K|@4yBhN`zv)NevrOHJOUY9Y4z)K~ zaPCdEx^%10*}uA(=vsGm+ES??hch$H==hj(qAWS~OzjQE%!Xo|1mIMTYHd77j%=Cq z_6aX}E+$?ao4soBWEZ_>)Tn0~r_iTkR#`pw!^fl8&>y4Dx|^yQM;JeR8f$4DpI%oX z9eY<&wLE$6N>iByniv=-Nld>TkuLl|i2p}$BdUMEOEBoJ=Eo;X4i%W#*hc-qSRb)_ oZWW|s556}{d@d`FhmXki)4HnB%U#`^&RgT-*<40Z;^wb^0<0VTLjV8( literal 0 HcmV?d00001 diff --git a/img/m/1-small.jpg b/img/m/1-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3fb7f964199a7671100d60ecfe2c3c1eb7ddb0b GIT binary patch literal 1236 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox^$OHYP>wfHz`-4ula=5^r`z+ZZh+dJ+7O;{Ffn^`^Kt^ z+pccY2bw4=zyJ&gMkM=~S(sQE7)1nx6oJNa040Fde^}DtHg~d_m|Z?^PVj`Y`#&;m zTax+K>&~Z_Gc|)2nrsTr=Q{q>Xk$as!MZJzTTb)EK9~Exs{ET|+Q$oSdoLL+cqn#t zO4i{k&s%x;8Lq70owm@}OQ7TNe4zc3f*>Ejyb7innFIudz;*-OWzV=XNb2%L9eYsF z2m)P$q8i8*WEN5s2CHTQskUwMjY)eO$?-dRdf2biyMelNfj(qpVrFCJgxLb*F$fAM z8nOrp8#yM51RhjSc5)61E}Xa!>SH#0rh{{Pr@Ee1KizDcpZNI3R1W7|mpxC{D_C7t z+32{{?S9UO6Myf0@rjYR^Xk$)=a;^G7o|Ew;;Zb!*4;7 zC+uhV^IvPtI=kZ3)n$Tjf|_f7wRxks$~%*zA6FI@TiNM^s4cB|3SBTj7scV)f&i!46zEU|s|bZwvZd;t+fk55G} z&fJmW&yAVCp5$>@x~j^qg*P>RH=L9r050TjgoT!)TS-V`%n={ce9_0jqoP>UicfPesz zH-L618iK+{pmE~Djqu`^ThNt6LT* zaY>!-+P+Wf*6*(dJU`f;t$4kV?}nXh=}zy7n>H1kIAqo!-5C9HWnXpaQ>Lp=%QmiE z-`&3{c9%jT(|kGRyV0k49sV7vT~VK8-LH4Yoj=xXWc+R^w8}r9rVt(#3Te%4I9cHL4+-vZ+NRq9MCV zCTvzE*3u+Ka<@n+$*NW%vL);pyZhVy_xGIhIp_1f&+~rY=e*zV`@Cm)VEGw9HgR3K z0D=I3&QsVO>|Yle3}dj%Ltr%q0x*I>(2fxS>L;BxywlzjU!9bWHi-HU zr|;*7M759Ib$rw|Z1y39#5D4l-Zgo1w%sIee(d}Cfx)#^F;9IAb{x=q-G}wJaXTC! zjxEr)+I6EjK5z&l;gjcH5f4uEle;X2uAHT?I|HevPJ(kgM z#$(H?k82t2IJDKO)MBil=Yq_BUUO$xt^8~DmZy)F=skIZhYEV~bdQCmCgwlbr4lkV za^>CgvEbUlU$dK@tHd>BS$($n5D&##Jp9SmSWza$aa8_DkKAmP4>&FoMYL}> z7I(#TiIazKcV7!Kw(l__9MbbiP0xZSZwz(C^q)!!{$e4nhIgg2v1HYrxZu<_86)|$ z=Me=N>sEjLK{w4ZZNnW>!PLnfrzwfngFSj(Lp1jYKit)H*D$^2_8SwUZ|o#X>u!IF zxun)8Y}%}ugT3hPFLnv={65`E?(BwOrA#vK50=dFb0{fvGO9ofs?Wa|L7xzrfof8N zWxB!y>av4`Z9%@o(n;J4*Y+(|HSS*~j*GK%--<0rT&{B)3c?@*SZe?9Dn)_Ghz5p1 zv1gfXT>*lnKoW0u_ar_;-{145%gumftt_7h>NQ(;y5v7)FBaFjA4H-)bsy)8wZl@2 z`?U?)3!SqJ6aF}k&cH^s17k3&@UYC^iK0zFHpNmjnjlB7|w~nNgMW97omE z;yCgT9qyX?TTFO6xHCwSRxrcxx6_NXQn1`+6v}^9Vpvm`tEQRUP#yVgPE=4=LujhE z>so^hUG9sYxAyClyFokBqHP_HqniCJ@y0I0)h#xB-F@L|uvtfbhgydAh5=hI zW~hc^+#^~H5>R81Ub>H6f1t(?^U-kLQx)pp=Hn;B8mK9 zskI9#8x}u!Dmr+#Db~3pPAB1=QUmWNTgk1j_H3vKhiFL-dgZM`|7xoz`)vb7_l|YH zH8$)mAbE{RN|U*i-xl|(iUzs#S%X8{EHGz+FWuiqKf2)hgjVYAC6aL+JhIQ!F)r1a zJ~Zz4C3YFqzYpNHiXRCKIi4}I4<(SF!tP!z)SCg@!ys z0)>6+xq>VgO4$V4!NYQO+r+edzg8WgI?yRLCu2H&d!keQXqs)+hts$p5{hRoxzI;v zPX)a$=^Ht(IQ*-3%=SwP)lS(#_O`3GRGl{K-o0dcPPAv{kxefj)}_Q(*Jij0FYnCv zwxl$C`S?M3ut+O2vCmp|#(rEA;P+nrtd8=nkD#&ycnFI@)w#kr1jrhuQl1e;Qbtu# z*K-!9accUXYGJ1_TNtghBek-%&1oOLEOgD=a1)dAGrp(dHFpe|`eFN;?yA=0EL^W( z*WIr!q&-u=)wYDWQO6l!B=%ZwGN6kp!owtN-e$Fq*Oqf8h5;tmX!(|Iw65EhoN)U) zLZ6-df<$M#MBKs22PZrf=U0am`-G)+&A{BiEt+7#rxsL)sB~QEO6wNsEPi*`w zq3xc}v;3r)cvAm6vUhmn6e()m@Y*+x@4uTcu#U*Rmbjl4TvMob~hQM$wT&!3Db`JK;8?A;WdUcRb- z@4WAsw{q(*1Sj+lsa;QM4Ego3e=%}l-S{td*jUxDTazPWn?`9y-z?<5Z{B`FZ$@x$ zF8AYEYq>z1oUpwaN)@vRfKQO-CJt6MPNXN-39~O&``Pl>m^|MFv_IF*s-? z$G^s+`-Fusq+5lkg+K28fQZQ6DdVP00_YBDtOVqZh}h<1YWQPaDzsHS7-|r4HLkCl*GnZrU;ls zd}_G|z>J3h*&-VqfE+UcuD`bcEVEMcydF>)7ohk6Y-GXI3E;x4L+(q4$-5AWRu3j2#AJM{{#>qyOL7YXcB$AZ3s;1SAQ75g-TxwAT)Z?z;+x z01)6GFx>(}VIT-QbDJN;#6LSfUqIl!aexcLl!8Ox%�z{qOt#$_zqLiBxbV-srdW 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 literal 0 HcmV?d00001 diff --git a/img/m/de-default-large.jpg b/img/m/de-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..dcc29c8f14dd0455ddb3b39d3176e4f521c9933d GIT binary patch literal 8343 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 H`uu+bgPCz+ literal 0 HcmV?d00001 diff --git a/img/m/de-default-medium.jpg b/img/m/de-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c0ee666461c87378d46070c5c514857386e472c1 GIT binary patch literal 2010 zcmbW%dpOkT9suy)%x}hR1~X&EZNeCXLdk6;Qphz7x=6#O!nkEC2D8}`ty{{@Y-pt{ ztxIx^K_fygAxRTuTnm&5rgw=RD8Zf6h7I_xpYSc`wiR^SsaVZob_d15i$O zj&=Y90ss)v05-n@<~AO-R!1lvdkHkZox$h)X@p3FUAqa}>ES_PG=ig(J;BM%)}9ba zHr$~{I8Q$n8Wh1G>?4@%mf9QwYyc1n-AYlwL7bOr{Ogu^AV(gy?uv{u?g99kJ(_{MDZl5|ffsSijs%&&a&>YgXR9-}4I! zi|!Xctg2?$)Yd)Xv^;HXYwvj0+4YM1x_{u!+d9 zTo3^KizS->g8hdJEpkC&Fc2ob<$^$?LJX#Cu9 zHB5BazBXK?5}1%)BRZoG3BF0wolNp5sn z|6~jqcK3FQ`R*m@bylAxZ>gh5MJJ>$a1)><%sv0u>MCr~6hJ0px>=^ko+a%L*)ek$ znVExH32R3a+TApQ)XqG}VS2JYy8+W?vj&%V#cvaGVp9qb1#&`19ans@q&%7a^EXN z>%5;D)h*R`;M|>>+Hn$+oRrjfassl-lHKOX@OG(f!#jS+u&-v}D@!`_I)h&rvNQ~6 z+8d2dzdjjh1I}O46xtSZzB_(=sO@6zi4gaYb$T)mSa4DtI3kEK zZhXY{nvdBp7B^oORGXkwo;5LEIzNeQ_tfjI&*T+TR9q>_s`A2>LSg2yzC8KWirMwy z>#8}%Kcrq5maDuIGXp%gN|)SLBLl*O5COERm zcUAjM=6s+&T8i3rT$4b$d;-Iwl4!^BxA7fgHGwZ_+WFz@8ISf-h1VkUOJ+YtQ=Jng zrW6YjDAky}u`fMJ-KVuu?_M?A^FqSHYl*et%w^yId+T+5cIR9l^}0Pp*eL5?jf0MTP= zClFCpie}bF8go=j_vN=&VOP=KM1#1G%e^-a(pnbqD3rta4MRJrr%U@=IphcYpk2nz z6Vj&E8^+6>VRNCxq`@{)qcy5WBh1jU<5cW{VOMyFu$R9>aOd%Q5_e}npD&x*%l3ZH z9CD#6xl9gOTN$DnZWT~KV+dPN^>n>FF#;i6x%FGz`r^@sCxP?78xr-n#wj4mDE94) z?!&TO+zBkN@Wz6Ld12tI5t{(!Ax2Sk7t>~2WoBxuoli3CtO`J4Htov?aLwf{&n}Pq z1*?)+%g-z7Yt^f()Vg-1=us>`tn4l>FnAx{6Lr%~{C2eVcunOvxvxZd6L3C@x2NbR z#8VIqx^k|=fG6onwQt4&1Wql&4=?`&L8=kb$DbfC2RhY=cSbKaJP@r&bHm>J&cA8&atl4E`w8@u!6Dr>y4$03BHaKDXE@}1i YC1-!5?Cfc?)wQy}|AyawNN{uTPg1vHga7~l literal 0 HcmV?d00001 diff --git a/img/m/de-default-small.jpg b/img/m/de-default-small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..11e9c36886bc33382cc8a795c4f7d4ab4863facc GIT binary patch literal 1220 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6Cz%mqC}AQHg;`kdaxC@&6G9d7vj*8Nq-73K*GyZe(NU;N;>4 zD%dK(z{JSR%*4VBay3wOEl{3;MUYiU(a@1iI53f2sZhkIapFP_Wv7h?MT0JWP%%y_ zYU1P)6PJ*bQdLve(9|+9H8Z!cv~qTFb#wRd^a>6M4GWKmj7m;PO-s+n%qlJ^Ei136 ztZHs)ZENr7?3y%r%G7DoXUv?nXz`Mz%a*TLxoXqqEnBy3-?4Mop~FXx9y@;G&P778mFHFAhJOi*hHi=1j?9ZhleV_)E}1i1ED_o0f%I-y=hnAeD{tdU_|+OZD8l z-EpSvkwTNd#>T?l-`n1vUsrK_y$EBnh~TV7eT5kgK^1fSc0ba3@Uy$;X{{Sy#mbHa zJoS<YL{ziZKCa(AdkAx^4_VQ4?b|p_7;4f&ue;O-P#3PuRNRV+f@0q z_vnqj2Yc2E|J-EQdDv*f3?_rJ9WuqS{XJjKMh9L_{C9Mh+4hS*9J-1jDXAGZwpqR9 zf5v!saopVOi5otccl>AA@>D!(-hyjutKx$HE;yLle74M?q2@40pr6Ni9b`Xpwm#+XPSW^zL(Y+g@I3uW7`i zd6I#7%ZKp8Z<8Iae(7A_yXACp{*$ezVs@sK!Xt99*|4jh7%h`?q literal 0 HcmV?d00001 diff --git a/img/m/de.jpg b/img/m/de.jpg new file mode 100755 index 0000000000000000000000000000000000000000..43716f65318bb486962929a0530b495c72153c52 GIT binary patch literal 11205 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 K-Hni^t^Wl!0L!ib literal 0 HcmV?d00001 diff --git a/img/m/en-default-large.jpg b/img/m/en-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d08a055e03dfb8462820fd6709e102724d0fa868 GIT binary patch literal 6819 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 literal 0 HcmV?d00001 diff --git a/img/m/es-default-large.jpg b/img/m/es-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6683d919ffc8e963b73282bab098669759a41cbb GIT binary patch literal 6826 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 literal 0 HcmV?d00001 diff --git a/img/m/es-default-medium.jpg b/img/m/es-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89043661550cf408a514e73af01f85112fa63863 GIT binary patch literal 1802 zcmb7EdpJ~E6yN8}jHWXlXUxzL!g%B&k492rkXLDjrd)ccl$u20hDk}2Jm!{)x{4k* zy{4k1`cU#Hlm;c!m_iR4$weMhdMI<*qVnLwCKRU@fU|Ftxka=wQL0EdTQ z0-&mBYB5oYDfS!@0|61>(VqSzXN%kI5(ZkbGwSqvWxL;Vyn@2YPZljIq2{*QgwQiB zbmvF%Dz5O? zo&L0Sjq5|yIFTxpzTwlpI$36n*Eq5IOw=VLGsn}%EV-+xLpn42kY$9|=HCp+!(WFi zvW!#cl2fta2iB(U_ABdZx9%KvTou9Eo1GO&(4bq-q8+?{B#Rdc9vF+$!bkgeRY%27 zBW^3%*!6x+!iRf-)-jCL+|2 zub~aC_2igTQ9GnHz+c`S^A4`oxlC>90Gf3Tx%|cUi^_-eOBxfxWBf}rc0`1PKsFYn zsE@UE|MZ9$S3d{e>hLqn7o5pxUYa*WZ{tvN|Gb52N8$==s!}Q0L-2Nii5t1%iXt{JtIrhTod8$gQS*k|4`M%d@P7{$jSW@ctgledg_YFO-HfH#7Y;!PZTdi z21a&n0c%jEe>6WcZ$d!G)#%GeQ2t5Pz-lM6SeliZ{-K8vsiV!OEw75xk@FcI_4WI7 z`zD#&n8abX&b8e24}X#ja`3optfLu z12#Dx^j*58_*%utc^>2-yB)ooRXI0N68psd>*ln+(x&-`?s(q@Q;tMg#~*ak(={YL z9yB@UE_AQDNfW!jWiPWyT*K5qxl(Y&*7H0>{&-wxnxrOvTg&yM9Tz-_-dh>0veM(> zH*2mB_S6~lY!2u3OS@Ou7eI&XA2dF{pT9cj34zgfG=978&@9V&a)D8v&l1|4m)|zH z`AX)Rd(D?kWuMWDsO_$|-#V+1O=AmvlFV+keHhW07$QJP94de0EN@`Q571yWtKoWQ zbWSxVWNYJWYzA2z4;j6}B6A zU!5*$vSqa=CnBb#rm{=RqNNQ^2r^<`SU$Uvux_<%Ufv6;cPG0%%Dw%fHAjkL3wcTDLWGk`J9rhide>-n zBQ@+$H?y;ybDhQxN3K1$oBPy&)feQ(^xx-a%9B-cjEUl~7Tf!2h7$S)!_?vdsg7B> zbP5x{qTy<>zek*kj@yq!dpXq%{bTTDyH(Z$@e&7 z{3kr@;LYD!hp0c1umo*;_6%QW^}3iDoVaP1T}TlUXt1(3!^a(*)~?SJ52U7865Z`B MY0Qmd$%<$H0_qf|3jhEB literal 0 HcmV?d00001 diff --git a/img/m/es-default-small.jpg b/img/m/es-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3118b097d6e8cc4d6576824d79d203337d28f71 GIT binary patch literal 1014 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxlccbI#jOlU5{m6Wz48JKj4VJuBaCHcWMW|zQ4kao zRx$t@!vQp$k(KFYT*upVr!zqpKA9{tl;>M6(zo;*!ym;BiE-*&hcpC=cMGXJ=lu9) z-+hpK1X0`xG#X+M(Eav|@^}<5!4&8UFfaj~!OY4Da~C6%AcGLIqLQJ4W1_He;KYT> z21Y@JlP+F*2z4WyJ<}s@tG>gX#teE7KA)-6oXor7g4v^!Kldj-_3PzQ_#I?@*5Ubl zFZUhd>=jQ_Tw|<_bt0!;bAERF@4cyQ(_^z53!i%#th*oJ#MohHo3u2A<#0|*h5S># zPq(+6*6H1+AG?~z^hdk1S+?<%<5Rs1gX&to%=!Br=o>`=U_gTaJP;WL6&Va26BPmr z4;oDT01HHW#ZU1};Wwo}y)+W$RQ`F++fzu8S?UGL zP2Bsk`j1oZyC3!Du()Rcxkq3jht8sN28Z#4Iw)EM2t^B6fr0=qF@QV@PjHNa42p)0 zj)ek&6B8BS9u@e{;A$68mh2z$_xzbZr;kh4rhe_NW@&P*QZhIruN-u96{8u0psK~+ zRfcS_&J4>qTrMA9xyo5rU25s+OOFB>c$H=gsx3FlQ{}3UtUmNXJkKQ~WAfhic>=aa zKVMa?VEbaACBpr;t4sU+``Fh#sc@^hA N@A-A^bA9Fin*g)37PtTa literal 0 HcmV?d00001 diff --git a/img/m/es-default-thickbox.jpg b/img/m/es-default-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6bd5603f7ef665c7008db59c466a49fecbf5f517 GIT binary patch literal 8219 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 T@Uq{`&V9IOyE+`^FDL&8dq?EY literal 0 HcmV?d00001 diff --git a/img/m/es.jpg b/img/m/es.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28d7b8c81516e80cfc3027882a806825d27fc2f0 GIT binary patch literal 6828 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/img/m/fr-default-large.jpg b/img/m/fr-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70c8ca6b7938871aa95e2f9337bf346693231b35 GIT binary patch literal 8272 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 H9~S=$9s;s( literal 0 HcmV?d00001 diff --git a/img/m/fr-default-medium.jpg b/img/m/fr-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a216e5ea41430cf5f13215ef83141ef99f1347ab GIT binary patch literal 2223 zcmb7Ec|4Ts7k_8od2NGPjiqAjvXi;hwar|2GKy4)Y0)qUm27P!Y9d$2SZ_j%5F&pF?7&Ud+cc>us}-sG?e zKp+4B0WV;=53mD3BywfLf`T_B1wkkjBqJ#)Atfs#D~pyvqvhoBSUGu|JQ|H9VQ~ba zf`Wo9Mp21GRKgP#h$}xqfUpe;l7=8@q8wU|_8N2mwkUrQk>6f8BpoSndU6LD&QfV&M!I3gAnmS;Oy(?OR@GC>N1V7=31w ziJ!V=;zql9#w8n1-M)viapn~m4%y%M(H2*zVm1Eh_}E7I``NG|26mx=h1~-P6ny+6 zAPRwm2mltRK&0YHWZ0n;90meHE;QRl2K0OSU-4wU+wJM4Q|2LewLf+%zBaap>(KR^ z%tOigk+-5(Ns5@X{5PF>Iw9)u7jWYGkn%;S1{lNEm-eSbwv=pZKevC**EyxpTql8& zf# zzbGKTDNtZ&5Fm(vP*ReAV}pQELgDZPbu$f3bJ})d2)7nXUPs;GefkBYW#^SQIQb7+ z61K?2yKTb2Gasw8A}aRUsKrZ^7WJ)Z>+=wJQs+Bwp!C}77K7U6wC0C~b_mKW6<2K# z{2|PGtYMI5vH9smozbDdpD1(x~b4rsFN86 z`nfL~x8@IbNbd`80wyEJ9n>rRd0fszFIo$qxTosz)Q3X@$M5Alh*lj`?dn`oZC2Ay z-5r^RNK3MP`;>#B8r%9o>9;@RHBdN~bDGgIf865fDS4}#KRNLqcMuj|)_53r2 zqxDp)dY@d1$EQDL_{WSsF;e4ydM__zTL-!si}QJfqB*ZEDP4HlvZa)PF8iQi_Cpd6XdF!5OY0NHX=F`bq+Y9_NwNW-Tb6O z!xgNyo=!>SCnb9etLYCykN8ffZ>aq&%+NgC(*ey4**>D8b-mmAu12dpU>eoa%l$2N ztcH`b-SUJ`LrN3d=VILn0g<1-VHq&=RI6GB;0Dyh!gGa0B2eGQAAtkZ&1l=bLQZqB zWa^#TZ?k8szO=u0%-w$tbKYF^tLhX>g-)cM9bG+rnX*2|eqj&sPqJ7e^n^F}sa=)y z>ywpRb&JeQhTQ>$gXv9;m-5(xqlf!d6{7Adw(e+qS=t6DJ=|ujudr@>UwUC?8~*O> zYP1s}p6aQ5E76O@xmeSlw%w;wG<)C!q@XO7i-FE_kZW96)=C4pY44$A^U!+Fymn`r zbakAC@Ujf~&6hn+JjLT73l9K2#s&2BpVS7$*c*H<#qjbka{;w}NZ+6cgx;X|#cu?M@Z+ae^AFdFOr4QOm`v9j+m3t&9^7c${b8 zp(wu^LHDYk!CdlqC*fSng)+_T+{+0CL3!>3%N$l-X;lH^&0WTAi-^U36{}k}FI4f)7N$zCKtA60% zCc>JFyoi$G;+(W2F&t@}Z_rGSt!tFr7Rge;<{D_I@nig1z>M*1Q0>>|BP4%)U>Ptc z_*5YIC&ccF#{N2 zXGQ}r#GXm5lQ7O=JImiRsnrOcdrKU9qZ0PzmVlBp5N`0CO5rj7Wb>OEKi)iZ=tbDt T554%Ek015M9>BbY383dMnILVf literal 0 HcmV?d00001 diff --git a/img/m/fr-default-small.jpg b/img/m/fr-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..69e05318a0f3772c8ad55e1d92885c840a8a941a GIT binary patch literal 1252 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxMw02J`ns~FzyvNOUir7nzXcOS4rS?`|J1<&ly$oo{9_u-nx ziLjLXOL?7B8Y)fH0v>Ew9u$1zj+c+SRHNq6>k4y{)V(<(%0Mm_M0c?P*bZh!Mteqi zJPMd#3Jib_W@Kh$;^u@onUP75fmuk=&{05GK`F3t;=+vwFR>Uo1tlgGHeH1JfX$xi z>76pSM{}BH@-nqG-$`3HLBz>gX^L?Xw|m3eWsgFAx1Kl|e2!WE zKH~dL#&GWK2aIFWigq0B*nckc<=RQ}7T2%t?!M@#b%Tldqji`8TZB`|cH2XYzDe8u zoZxm??ZP#8nc=-q?ZS|?_LV2AQainr6Q8?;bNZNTHf2E(T){oT)j(KZ&0Xr9ruxEbYrjszIw@*1>xcin}Hpyz9{Y!lme6`k9FI1EMR-*v`%6S+}`siqcx{MVr*R z9^AMeV;r#R?v$s(nj5|Jj=0Eebq;o`IhErm&^SRyXG{IEe;b;(Rka;-@B3JCYrWs9 zA5vWv9KCSbr$rybS(g}isWcqZvD$cCea($MIa(UZ8wG_gYrJ1)ak7D}`Sm-q8O^0X zHF-?R@@||qTgbJcJMKP%fXxSkRrh6|mrpqL^Mxy?+QsfGRTpFgLhZw?&hPwgbAIRk H;{P`Rw*rR{ literal 0 HcmV?d00001 diff --git a/img/m/fr.jpg b/img/m/fr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed443472f6457de2a66f10fed0c34e25d4620b0f GIT binary patch literal 13454 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 literal 0 HcmV?d00001 diff --git a/img/m/index.php b/img/m/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/m/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/m/it-default-large.jpg b/img/m/it-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..97bf6f2f08d6cd8c84070bfc470dc5a22dbb5347 GIT binary patch literal 11828 zcmeHtXH*nloMk}+O>U4N83Ys*5XlmxK}0|#DM%6<1SClkfhI^JIY-F~3M!J73<8Zr zQIMRP*kq8b-jR)vKy|@2|)+E&TWI+ z02LJgP*FC3Oajz(?&)fqo7__qadDDy_i=U+36Q&bO+?b)&&|t4#Ndve$Q@H%J&^!q z`ODHGzWxqR-JS=D+z?T{#z>w6bN~=F^*=kM&`@?-dRkf<8d^p$n2w&Ak(rr^k%@_g z^&A@uD?2L_6B{=hI|nBh7Z)?+JP$V~&pA#m&VM?g0#Vw~&@#}{GH|jmv2gxh7jh@S zPERFGB@Lny1*qAnKH!*d+H)7=wCOm^9KfQ!oboTz-_eWR{PKNm zl$!@)2cQ7)esO{%@Za(O$sBa(;497?;iYI~pNwty&ysD+LZNZ5cLuP5oIM#1Q3VIW z$jc7L2us21H5K(nPlkJJZe*908aFAQPpib-jg7s{3qDk&3Qjm2M(M2-R$)TWU*VCr zo9bHH&->b*27W&fnp((=c2->uthqHJyEge;Mh$0LAv09(cU?Q0_7z7GZX;ZFRF@Ml z`+o~6Y-7=KA|xK#fanuu-f<+JBLlab7Xca0mz6*CJ9cKE(Vk)7AE{4hoL>?2SUyRx z9hj&ec%Ny!2zNMnpZp?D)BSIZxBC}N4auZn1xAdpB?C9>O2cNz0INUCRZoc(Wb{wl z-@%;e#4qmz>a~%9mqFEI0gb^GeqAGA?X%~I0Y=0b1EtmO@m>cj8A#XDAp7@CBpXI7$pICKhFO2FCJ_Yarz0Fb6%BS*~Dl!oV^ z5s^wf_0VXw;iPkakA7aNaNLMGH8a;e)LPzCPhBJ_^afidLtSA)@bNCSsYqYU`JOV? z4=ytA(h_55+Zki}XK(9^3zd|bX$k9;_UzHYVun^f?Hg`U_tp?Pk(!+hQcY*4{Jy_? zL-)`{!h~Qv84&n;5P4NGl@{)F2a9Uh5s&eFPpzVOk6Y|3t;H`rvxE_1QJ4TevWE=R zl7aX(NX_;MNvJJ;}@NWA%2tE93XP{-U zMbhr$HcQti*F!JQT2I$C{=B$v0e4-DX7|xHJrGWTkq+Py6kXH*^=R^ahD#=XR}}O?#MkqOi8cM zg^5tv)grKM$GZxAu-1?Z+rnkW75#)(*1mi@y3GOz~2a|IUF)%4GX$=bT-8@H5RO)=08!APC?~mLUldXXcpK4{(1g zgyl&LGWVD|ZG{zc&rVS#KGN4g8m3_N@=)*Tr%3l3!sz;deBY4+8JnQ1e5#sbJhneC zfxPFE`oIg@`M8}^Xpit=8jP6?%-kRYM+qw(U*1Ak@nYD1JA4)v+D{Ug*i+n+4u$%O zE7#iSiT*%8f%hH$>U=G^1y+KsPVX^&3KhV|FE7ac81H*oM*4HFr8Pk>n6=3zAl&X^2jkO6EC3Hgx>jJ3Ge>;=7_qdXNt9p~I~+=Zra8&YoOCwi^PR$;eB zzy`h*q!9#{Olq8l)TQ)gPdZ)s8LJ(})IdLW-Uly6^+7`2Yr@xdG~KtMF5anX!>Px~ z-rpAG$M4_47A7zarn8hOIz)V#%Z&Jt^G+m&#N3%@!g_{uy!(sv$Pc#yh zY2Ki++8ZV`CjNY0@e8N)meyIznR>Me@wu2pwbT^p8s$OhL^AE}60}!lWS(@y$B$3g zyq`|lf&6`a_?`}`Y|b*DUKpA^hwH-%A%#%{C5(5E&3-oA@H^_R+&(lAR71L<#gDAp z>|bJsH}$Dahqr}%?EVOEGJ23@LpxLZN$gpAh6?bbv#eY8Mr~L`O?(&+y!##&xmV&* zxl_pd74w2P8I`D<2Zs%H&2c^O{2mp-rGFa2+JKt`IL&nb(+K@HZ_=951{t+E%kllE z-VTNZ>bd#6@6w#@cpP4xv3V4Zb)3h$+`>+kuJX$$3}7#PV2Ic`**n*iTXdnXs~7yY zeoay%u_ajV zF5QuJ&-5J|k-8_OtqhhHfWQSg0F1U>9x7y{&BD=jr9C;tydqqRr#KF=Q6g} zzcC=)4d-JsSDHh^UTOBx0QJ_MxzL05f(w=9>5P+~R8T~?;m?sKy9 zMGHHwRGNr_*ptXL7p?;+Uzpq$832b0hLkNnoNN5_*ukMxopiWykKU}_uMQgY6$n`= zCs+^*HMp=b7A@1yPemt2H5w)=oeoQxW;i0MQs!Q*HU+P1K+bpwDwqcqLT{(0Q3UKY zc#hQ@r(~Yz>g?>cTb-$6;Y!bok_yE>^D@I%J z8`tup3^Bfg4_-{%M>kF=f&=EU+bWFdnY$Tc(Lz6fw-8xky9|M^QB68PZYGug#)h-4 zE=;v5q2oZsTjTqEul+ER`gEB)wEkSE&{qsNn&9|;9#viP(Uw^HFdMd@D-tK2XZJos z98mTRN4HnN&`rBVm@{;C8C|K1qhI+>n&8O7&RD$7rC&N%%FF2l92(c`?IRz(Tt&tf z3gNSg1tog&oz&hG?rqgN+o*iwPmf`I&GB84>czox&yZUov4#C+qic41Qfh`?KU4=a z%0Rp|$(l^IZX98#{I(8|)o>I#At0bmxS8I;^vt(!xSqX9z>#N_YrB^8O_)`@{m;}{ z54&!g%53(&tgP_DKwKkq+4`i$8Sjs&=@w>u9y3l*`q1yd8KpRu@yIRr`PIFQ;Mc5? z5`ZcAmoQJm^)P-CN{A6_T)i@VyS0wJpyhfpllX|TiRahR_+1{$QIaP99r_?v^ISm> zUtT zp9n&HAGs_eW{~LV2&HC!ZK0Cthg!eIFIO0+az0fPjEm#nniXJ`1pP!jW-2&aN`SKO zAM5kYnYEfXH%EVCPC5LVroHxTf#oS_0($riMvK_J;7JBPq+5;(3F4j6H4OLy8!TPc zM`DiU6zm0YxJc@>|6*N3Zuz0f0(A-2q^pJrKHk%M30b*~cshAx&27t+T7Rd|P%8F* zgOyb156B?o4)EJ!JsCnW`O^c%F_;i9MRb%_KY&D&cpI_A{^XKzWqjcZJ5AG)>#KdE z^5)sE_GojbtMIpwEU25KQ&B@s#9SZ0UQ`tKj0!+3a>+ew3g{zv4P#a{ET>y@;*X## zTOjlHiONbv_$sZ}BMYm5muZ|w8mz!?RIR2sK@!v7TO}%^-qY&So;>ZPRKhTb{>eM@8R3Tp;3>?>p#CpO6ILa5z>-70M3v zOoXyASwB5G`)z=%i`xFO-eenSo+-Td^a;UZFMqWN4T*yFa|_Axsr9b#)9bc3Oeh%g z_43@-Dps=3MGdMxibZ|p10;(R{=-OFS&`DeSQvDVNA%u-coLVH)_`~+0BV1NNA%`P zBvyTB9%*<3wP}hcv|Jpo&Uk*iFCZf-+()~=-K56a*4;*^#4YG@Q(bdo#^n#poW=5K zLz$hO;%nGPL1&r-O$@C2fN6(&5sYQPUdr=@JLUi0`@BH&N;ION*cAM;e)-REI}n`3 zl^uG&xVl48p<;%`wSOa7alRCF$5FklZNE=_rP)XimydUN|9kUx3pP3fCUxrBAP%>v z)n<_|OL7!gZ+;6gDXwima=DTOMwYB6j@4}iFSDt(<(q!7C(f&ct~m<&_4<++iSNP$ z2{$KWa^B*LQ3s}8=TNR|O+gS1ku1xgP6?)b;K=5R>cd)nSOJw>YV(TBp}9cp-v75}5`M|@aL zzUW=|hjWV0v@e)Vlz%U`Vm`d>dk;&V6M8#Z4WQhD)+?!U<&V#=zwTRo3wsTZdX53heHkZ_%; z)P7oc{ooP%N)bxEPg5G3^(z|V-Q60PxcoWhve&U~o}YKly>FbS>7T?(WioV_LmQ?D z7I^1n7%xE!6IQWObM6g)&jU}k@%m$AQ{g5idB&hj6u^vFeeb7V6-$lo(P*S4%=^2TE43GhFZ)-B}nXvTN#1p24 z?u>UMAK_AF-(6j1+fTAKT0? z==8*UuB#h;#yRrUMv^8&yc5ZQGZ}~tt_k<5w}moWxz*`osm0|M#{Pl^iP z#nZLTS&@NEGBASNHa3Lg(4vw%>CGYPyI={npUHQmSR4`qVi))9=! z-48I*$nzXaU9p;`vLx2cMK+x|5qL1eQEeQKtFp{)4@d%&m9oXjDLFh%$&+<4GtE?4 z5ow*EY1LJ}B8*AV>7_++3f?BtXi96*TqH?f=75N>MQoWY{E^)h@oeZ_@Kz6FSS`H~^UIJjR-vX+LukQ9X& zF(L-qUC97WiXxBSN3?b0z!X9+^9eEIg&=a!0>01&WOvp1<-O@Bk_cY8OBk|a>TbxK zW+jqv{(@oI%=Jg?ua@m&Hri9s!=2tNOIwaTn%72m+l*GK!sJ3eE$o=aPbsHsv)`&o zO9+pqv0wJz0y9xGGl+5(v$qs&;t4&vHF=aBO9n)YprrOy%H-+-p*fh%?zB)oV*S-N znYZ+(qOK$$K0tgZdgb46N*UDWWc_WB2ug?J`k%&%D)jTM?{Y9MJ`RtIR8y& z+cYXyM_Tiz!~C;FKw*JNC>zxx+ynOv?}<(p64aChyPfY+qN?_n(%=7>wwmpd#*sM< z0s;Wb;lE3fyI~;G^dh4WS91NHSPy&U{h5-C@bAO?pJ<5lar4X=Jpn-K-6+!GyM~Ul z;8Kq;pGWIdwMk+|paQ>Xa*iJv!dSQY8ftCJb$mZPyy;T^ z(7`PAb>0=Z2^B5*U{hM}C_Xq|;>^w?jB4~rIzgp;?zH0R0dhc8SXJIc750W|pU34= zJ=9(JR8=+tiDUccmVB>h#DmVD?j&ZcX4z_ufV=N+A;pQwSGg%$dy{bsf9##(7_S48 zJiK(xMW|SkvEgzJF-it`RC@)$d86)=^!1VvyFz4O&@zTJ0Hb?;AdEkM7ps!AH*VKZ zCvWZA>O8jJ*c9*dB;#gm?347@f}Kf{xc-)~v7*D98XlB&aYB0h1?q@ARgtA919O|C zY$Gip-7^?Lezb$z8t=UVj+7R`ELM4x^?Us;6^XcXDmdEK&=tY#BtVrmztNG5PsZ{= zL7@_pp$_YG$~fv3o}!XF%k&dx=l$v05^)smm?2Y2S?*pCBF7DP()a_8CDM<;MJ;KE z`p|1jMK; zw5Y2|6J!ANT$TZ@LHRb=C24X`AMv7JH)coBq%)N}iK2BbU#JDX&$B+08wiCEQwa=M zJ+xQ!ipP-cqZHh+@Nml525qvSlamNtRQgFsrd`U1GX}!7(Msp`2@Qjqnb|Idi@ig~ zmA-F($y;>-YcGd@keV(Ne&M(!mQeK-WebCvJ+2M&vtqNXG>GTU|5e9pUGM7nuk9qsy~aM;q`W!E zKv}2^_D266;sbo~hC*PB$Y)pajm#|dU15zY(q?wX-yr&yyFjrxZh%J!<@2tSIO*q|4Fyc93YaJ3%B zIzt9rcf12>D!^|9tSz2?ncporu7MSYUq?dlA*NsODj&D*&+SfL7m;yVY+7wSwb{kf2*{5D$K4!bz@$OOw z_?7qiANx8NFm0S`*YYwM`1vrHZ_^v;QWH0T_2>*!L29quus)_g@ZUzaBwVkYbT;~O ztNO>C_x8k*XWF>o8FLEhU22jW^{-*Y`*nY-xvJsp3l|@gt}Iz}9-#kr$^#aoamofI zd5I<0jYB;=MHgi3^Q~7*>4QqgFL~+RJUrJgsCuJfj10IHMTW^>WfMY`Ru4cLe)vdj zQ=~)ItDuBxJ8KoT_Ys4P8S?bszJL4PKrGd~vYk#Wu*CCME-vZ46i30E^{tj)j9f_b zAI26LPf+#F6X19(#(1UgU`07vsHE8Nn!yv-w=|KzCbQ>vExTUR3H<5z-GcFGP^}0j zz_`NL@Wb7~Zb;1WtH!2jmD}(VxmzwN5BFS{mn5#6dSqaei~3-w2qrtalP)tjQ`eK{ z&CU6QOl2x{ZI;-_U`*5_y+JL}j?W|YAqa?Ta6pzTkIl?nzXzLR<`>Q@n;7bFRg+{A z|3oMZQ_#z&oav2gzk?epj$qj-m`U&35P|e0{3I4=2v)*D%Qdlzg2Cgvd<~_j(BB9p z@wwIwOIRMm{VZn~( z{Ot1^3Qh_Wh_t}m3g)izy4X}?!X0QTN5kfb`kjtHlnO`y@MqnBC3=fy4eukzpPN98 zuuPrfzg!~JP48|QQ=vif%5p_nuU5qbCW|;qduvcdyC~YFXlK0dGE!B%BhyscCCBYM zznxhT%{f4;rEg;!_Rvg=H;f0fo*GF|FLlj#x-F>LMbi|`Fu+&>WX>19Ke^N(Ssc#z z??z=RH@?CcqZiX481kUt`*`IAw~s#ZK5Bq^h7Yi>|CS{f>y64>HEzNfcBvVcy|dXq z2|ORT^d#M%eqls5dnk>4V)KgnbPgQ0BGF%jqO)yx`4-4$8L6QlP$O8kbSrh!J~hWr zS4=_n8JDGa%8XFR*?odG)~jThsL-Ve9bFl3Gja@T^0k{;LoM0nuGwt`b<>Hk7p}e> z3)fuhn3NU6ME8}r0nHQKz15;GO+N>Pw*PpiJuuMOsag%eg<=nqJ4E0f_u8<-u~0Ps zgvi%J`=&EyT!)h_=l-13xgc>T-`;=&#HFldzYw+u*>lE!(x6xF^rpWKSZQ0ux!_03 z2@ZI_a(H5o={D}%?2bID=yORwTl|FtqyCUD!@p)#`+$}38yN|w3MTk|Y#=Ub+TR3k zv1)?pkCDD~c)P4jv`*hgf1yPH}TAKE?` z7qf7k`4fHRlRTaAly);HW;q}D`-5UIOTzcP=?Ryo+AK?6&{gR{}6hM(2np|lJRd^XevY=L+CoHbMDti8ojt_m^;>c zL50P~>M48lJWMlpQ<2I&;q;DhGLlOZ`ulHkQ&*w~6oPl}Gm-q=`rbZ|KSH79A+?^m z1yA@h{qH?8*qdgwyK5s~RZ^j6)^S_lH3QpjXw-CU4wd4g2bNW=7%uEG6~hDbYdh;{!gU z1Gu!VMeA$)Ve?O}X&&4iJyWNo8N#l@WBVKVdOyDLWR3LaHN)fwGW+rwb}Q_ic>Aq>l#mJb<4=QgcQEuGeqaO}K!0w_HJc!BXo(22i)N z-{-Mh?Hkb_-@>lLpYW^(B^=LYC)fJ+X^g;kJz9wr)#mDiAOE;ywG-g+0bXI)*;aoy zD%~$t4)hGELTl{fJFG~h(z_H7Wz!JDLb_T_qT6JM4e#7pcqY7&b^8)$*A!^I3zZpj zjl=9;1Y5dc1A9*jsqk(q!fe~vZ%X@b+{b$bf7IO`q(?`j`3^sp8YamTC`g4uAL2vM zo@(R91twUQiEDO-{sPHYq~^t4eqPz3>K1zY=hV{R><(gp9$Q0er8aKq{HsQ4SUrBlL<k1^UsTc!Jovw zfJIVz_<-quPixoYBfMX@dqS5d3BPA=YXz_^+l$ z~fU{@8HO<}kc4%HaesB9TahtX(d)lpBWe|P@%&-UU1E;rWj6#{2j^D6=fzv7Uzu)# zS$la78>QLQ($T?L_MH3M8G5F=6kd1sj9@n2_E>QkvgLR6gIme`X@2zaSMM10c=jmM z7y)inM&@>sKMeq>QG%Ubnl8dIAc*HYI-w3PsOjPYUPi)jr?z`Atr$1-Zh?>uOcp~C+!xa>c z(M#;O5Z15oJD9F)d6r`HZ+r3WtAFQRjgB+@sQXIn6Ricq17059-r#`fGxtyh?B1Xn zEWX|&S(!WUk*dEseBaaJ8^3j&cp3QJ+{>gj%MYRFi0?vGv8DR*a|YZwmG4tB+&Jdx zawR1^WI=GL$j;@pfPp`$b1Aa4{g|;pq#-RfD)Z*^DbwQZ4*zo;skx=uJObFXH&`v9 z^fR3TzcWpEGb-rz$hOPCHOHT`hkJ7=auiGO@n@u?peE`kE(o(ba_h^_K$-bJwJA=% zzTyt49Wx_{PTgmpQA@L=E(rI>>KvV$0Zf;)*?AcfYlsS$%}6~+uIC|3F*r@;)@DN) z50jw$Mc!ZCfy^0S4^pA1|sd(m( z%_i*dt|LP z(719ztIAKH>E7p^{V}A(7IkW;1!9ilR?`%M;u5hN$VXmG)D8r(p9tJ3*Z*75Oz_Ae zCWc*c%P;M&fYB~4Tr7=Ow7wX-YYBF$?QwEpetV3vDg&k0yL=iHZY=8g%|l=(1N5vp z@;gG}Q~MX`C|cM{H*4II5?Ex;kBo=iiXh{_%@veIgH>(vzFh}lTm z6-sL%9PLZ-b*e-cg=0EIC%J&H&67iQ9jccFV#IuKpfv@;(Qp+3}*uHD= z6z?nm-%aV42|?ryv>@0y(v_Sc;E$x@deWs61P?`?tTS;DnYU7;p>6kF<`T5Ms5{zI4SVerf! zm`vDkylkHdDx`Ob!y$fJr&gBb{jU#(b+<3XIZpq$H>mCfvjN74pAc(n9gGyUeUpOI zP_*U=@dI=%3O-Hxc0lNb5ARW|E{Tg6OHvob#IxoKQQ5mpaTUe-kT?ipLlQI;#{4@I z?|~B{P5krkhngZbD4GB>VEvys~pf6zlRdL-dMU} zG=7@Ii!X;C*#(T>3-TP>i}JX9rF^RrF3vd*Z4(x|{+6N5?d&H0PhTPXR6T!cc*jM3 ze<@W@=BS67LtEy`nm^>VMUDm4684afhg4uA9c;rN;IRf1iXn+c#?DQVrj2lco}c_{ zQsKVsMTKuX+VJDpR6V@<^6v%X!;OUo9S$ZI)uodh`LvtKC2#W1hGsxZTpr8QiArQZ zFjQl#;ozK`kL%y)!=MTex?TFz`DZ*CDv(@e438<;TbI+6>feUGmPq7xMT*LZfcN7r zQ>+u>6C(q$iRYIuK0efW|0|wJZYMzPI;?p48NB)n^hr&u&Nnu=u?a-FRnhV${#|pH zc!p19v0gflf?#zw%`&KS*|Kz0i_3Z3b8{SK0za|QxI~xgyUw`R=U4dVPkt93ftl+r zVtVdYU&FM$G@H%wP-!CV^w21eu{?V)slQmV&$oZ7HCPhV8zw^fj$rM$;O@6`-)g~i z`h?Xf|AnZ-`P`nhjHJpui84lp@-RkXB8eZaa6f^#=iP9MM##%m8rR+~O>+L1EN@C! z?uk2Pi9p@1fjbd=;n(P1|6@9(g>v9o(2%61I+qACfEKAu_qMm~i8Zau{Mnprv_=N5 z`sgsf4(|;2+wnU>#)qnu!n?KGNBu((4ckp$a!VsaE*;-!x=a&BV=lys2}oUru-dq) zv6Rjz78sF?kokvC=Xdx1s7gN@?9W^b*H}U$c1xFKqt#m7Q7;-6%gTEUBK}z9IlC$l zdo3)$#Htp-(1?mnwQ9< z!PY;!q(A@OJ}E_yu7zTpQ^;hSDyHdn!5vJ;8)9DRkk7OUq)2==t-S2%_rYM%Bo~1f z9;L8$+5ppicVObt$V{1exux*6&`4U$&Pj`aZ@G( zPUBCD+2+2r7d>W;^gCy=V&rC~C6E)L$pyDX_wIiQL@&smsjXV3JGUe14Q2CxJdBKe z!ZetA;yXQKF^z%5u47qCs|`QuDwmeo$VAWA)~O8v+q^gLtQPvH9^`LHzJ(Mj$DZmrJErxy|>GADCi zXFJYk7#vrXOM)`~H3vJ~lm9<+u=W3L4i<%#jX65taaC!(T0;@=$~Xm1jJMNbY2&&` zYG=YYWp+XZm-mD_g#_wGp7TRLyD1kC3J^+bvn{i88_%rP^HL?+eUV%UmsHwNhb%Au z1x@`1MH3l+DPE1TE*#Brg=6FT^}WS*d5WP`1S0i8SqNO^{hyQ?a7c~2LKmkbti^5% ivi971@b{Y7QBA;qk^=qD(xd-f_aCQ@|EqIDp8X%92Y259 literal 0 HcmV?d00001 diff --git a/img/m/it-default-medium.jpg b/img/m/it-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..461031f99934d59dbe75a84ed825b9b74101c174 GIT binary patch literal 2607 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 JLI?T(Hvtr}PZR(E literal 0 HcmV?d00001 diff --git a/img/m/it.jpg b/img/m/it.jpg new file mode 100755 index 0000000000000000000000000000000000000000..94802add7e6e15673d950cf943b205f6b139eefa GIT binary patch literal 35628 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 Ksl9)th5rG(VF{}M literal 0 HcmV?d00001 diff --git a/img/macFFBgHack.png b/img/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/img/os/1.gif b/img/os/1.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7c5f3153915ba3acf02926d2b0bbe3ee9356562 GIT binary patch literal 958 zcmZ?wbhEHb6krfwXlG!Ebdu;u)Y@Aqxgt&RkJI{<9Zq{Yy|*kaIojiPvc=)ZbdNJr zBQDHwy*B_>at6M7{%=dl1x9rKukgxZn-k!>Ne!A@4m6~sN zv**s8yJ%X+jwNkNmo8nqcI~E3oA&SDdtiOn>Ah1fZtK6jq2>AhuB)f_|2#hV>CF|- zukU|%W5c)0Yrj6-@a5^ABS(&$IdkU5jqCUCUweJ;%+sfL{yaGR_uIk0-;Y0i`tOQz`~#dG6s|<7&vA#aB|3aY*=uxnS*~{ zM?w>0cMD5QNW#O#N12!`oeFN8_}IWEt{!z`f&+s~kCaB>stX0l%xxU}Wdc78nA?0M zR7@W1C~#zMA@VR-sVFesk%5FV^!g(LATwrMJTWXwref@oYcH4=RNq zcN8N2manVy)w~E8dQBdw4(fXsr{nnRxc>Uj{)3!&WevTbM<4ze@$1WOeOv zXwF*IS@;kOAIict7Z5euI?Og}uA$oNb`2XJxrC2g!AGyzwK?`*mmOnynD(Y^tiU#L z1JmBe#|rR?n|5uXU3bShe#bFh1F^kvq`Wu7>u zO7ZE(>i_nR3VP7tZM_F!RvxMQRJys@1uW02Hkk>Rs@}i2unZC4>Ya^+(m(-D`t3&Z~ zwN0M&X|H{fLyz2;^f~ovi@I6L`6Qtf*Q{qX=RQb51ECt5?0Q@#-N?5 z%yfB;s{RZw+#QqOEwA!kmoLglp3A7+kbI^>@-mULA@fu0-i#8`)4*-HJ`wNtrj}Pm zUXAcNvN5U4(>Hh6?*)>P2;rJawasV2QC2eVJ;NHmWm(%KlZEIme&2tgzgME?hG CC(m{O literal 0 HcmV?d00001 diff --git a/img/os/11.gif b/img/os/11.gif new file mode 100644 index 0000000000000000000000000000000000000000..57abc204b26d3135ce3d3d1371b3536abc095ff4 GIT binary patch literal 608 zcmZ?wbhEHb6krfwc*el+|Ns9V|Nnpc@$22szaPJTfAQ`6qxat)zyJE|^@j(q-`{!h z=Kix+7hin5^7QS^Coj(5e|F{0v!f55oxA<;^opTwHVb!urEkHXOLHZ1=^byH3pCd}7w7a|<^fp0WN|@6v63OLle6-`+cK zee1jpRa4g0O<7*nvox=7Np|PFvi6y|jnmRiSHr7B(=%Jnqg2{CUCA*~-9A#$E<(vRM%+4;&oV*WEJW7C zN75*m&n!aRAd=rOoYOE$Kre`2CsIHom{m29K`okD-HTntn?>25LD7>z%8NnLg+a_3 z7%U8Q0g69a7}*(O8FWClf#QULeQ!f-6RV&|TRU4*SChPttBZ^KBu7K;?pWPm1vzOM z8AUxWZ{cnmJBAf28F<|+S(@1V^;XE3XtJ)*ik9q&kzQdI6{WU9HB_oeJDiV!*(1tR zVugNyK$C?7BO`}_j_?Ye0Q07E#;aBeJB5ff2}h`|5S5ixH;oLs)}#`BpTR0Ja$C;J zgMJfv)OYYXylhNzX=UhU`Lm&MRkN7jbdlH!CYQDzg|JVlB8Dj*BI>?nA}2I78e7;6 NR5cn-7zr>~0{~mk+2;TN literal 0 HcmV?d00001 diff --git a/img/os/2.gif b/img/os/2.gif new file mode 100644 index 0000000000000000000000000000000000000000..192829587502fdeceb1ad545ca52987b6bf04c85 GIT binary patch literal 334 zcmZ?wbhEHb6krfwSjxa)Q)g0hDCfwdJu!Th=h&Q-O))L!YQFsX5;DstWnIjc zYg=6UTwL00YEG40d37aaS;&%8b4vE*^qi~t^XrRElgX4zEjgP~T27VRd3R;asU+|z@WvT12P8WCkD1`hp7b~I#T@}OVp>TxaleQ20z`I<2S+S67wt{7u87y$_hp5 zi~U-aTs)b$7rGl-mK-|N&N4a9MMPblIonx=OGr#YTwFq;Imv}XR-B!^mzjaXU4)ZM cf=_;?CkGGn!dbo|q6`y)Io1XTJ2F@U0G9%BzyJUM literal 0 HcmV?d00001 diff --git a/img/os/3.gif b/img/os/3.gif new file mode 100644 index 0000000000000000000000000000000000000000..56d6cefc50d660779daca2a11fd78675b4a853be GIT binary patch literal 1046 zcmdUu{Zra?0LPh9Ls!n6Kdif5Ti3(3YrBlQQs-9Ri74za*<9Wptk|r()~?fPHS20K z`Ob+?BPMliHtP;;;t2zRjdiH#S44b5PGCG}e39ob&kBk-KINa$`(F3@`Sr`Yj9OYy zcp)2?jk}4%)ovE6nh#F29#(f8Qn%+#vWc48Z)-Z=n&RebelApZ7R}y0y3|dy^YiU} z1N|Wrg{yxJZzGxO-wn)ENR4^9hm#p&7 z4Ug(9(r>MbtLR^lQ&{B?kzJxPm$cX+qPZU*_eyA91>_kbc@<>O-xZ!=N=yOSAJ)2L zmz~44j=?KFWvLG#`NzvJ6(ux5NsLkw2qmJdvMKA(k*`ps&NlL+T~%*WU5ia#ip^b* zY3pO!>p*`sWvEY?ez1(OmL|FA80LxY~`!z5& zb1SH64ryAPa~!w!H;;}J&~ZHTT|RwRWUeVZ+Y-^WhP7>Lde)k;HED&D=5}Chi|E-= z12<-5CoP=RKiqZ8@80eI<$rA2l@e4rjg5_@D-~mSu zaP}ln{>CyNxCemeKJfI1QQ4Y99I+3_ox>ZB2f#N7yfT121U@;y9s^7P0z*;f2nZ@c zNVyrD03jrS%_IX;8~#}kQpYgeT5ukOCqZ-?L}$V3G+0>xD|)bM1Thm>HG{YX#1}W? z_NQ@sD!%-5-JV)UH`iUMq#LBd0K{?s&%K<$r*D-X+S1l1aD)}yHo_i4LuT$N{H{!R z@M6}BSv9$tNAY7bZ+_H5B)<@8+V}dw52`bE^tP1Tqh34Lb^s62GDrhC-+76zsJh>1 zJkXa2kHW&!U+Q)r|C7NzO#ewzqWc;m3(t0WK2eI9xA&KwZ=!ja`^E+5B_*gxSF>~P z{#+O@ud%^`bD}dh(pGuYXI_J@I2e@-rr@lw^cy~MgUZ>P^U{+%5|sX+y7%1=8y7xf z-6CY|&Mn*pmA02ZIzjy&A!NYM=4Z_hJ>W;D9PEL6V+Z|k2c_n{srma6A}Ob literal 0 HcmV?d00001 diff --git a/img/os/4.gif b/img/os/4.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3e55c77b414d1d39404c38fc16eee718737fa GIT binary patch literal 615 zcmYk3Uq};i0LM>Tt!(0-1Zyp8y7iA=e;$rdc3J2zb8>~!^~Z5x>Sa<_YAm(g5V_73 zV~iMw4`bZJJcf-SG>$#UA#oggkmDZK;e*_phYvD(D3J=m^sVpX=ivh%zIXjyt!;y~ zNG(!C5O5U`^B!%U%B}LbNz@gx5%Zdn4}&2wyhIqAnwFuhRgq4kQeJ`~*~8k*m6#{M zlW9yYS^P>6i#jxcEbr`6aZQfksbb8`hViIoE^}OgGM0i?DQ6W^@>&^oKuSRAH?;M0 zH<-mCE29yIrSOJ8lLBTI!q}v0{Vi7>RK6%x{NGMbO0g= zv?Q6+c_L{Tc@7=P(P>O7S}>#n)?u#jARv-yD3{9ozAE0J36vTo@c4dIj4RN_QW&x- z8fmbUlv&{5q(lZtDuZhYl4u7q3#k!`%Twl-Y3aG`zuV$!th^?v>z0uX?(OX%|IPi! zR)HW40uI>0Cx~60W!MkgT;wC?^7$$&$A+EGn>Xgb^tAilyADV5OWT~!-F&C6?$skZ zIeMw4rk@%6#K8M4t@PJh506l1Mg!MQ)eKzddCUwuzMKmk2aWb8-uEYuGR|gusMqgr zeDK11yJFxeGeOopU+k=|_8yzM*j>-`{T?50tHy|_LzltCf}%Iozr~U3eQec<^Jh21 z$oER6spa*0>*&IUp75U5X5EY5dS{)3Kteh<{Ga<-0`LA+zbRZf{LE2hLwx@L&TJS~ literal 0 HcmV?d00001 diff --git a/img/os/5.gif b/img/os/5.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbce89abe3087e03ee31d90465c654e557d84006 GIT binary patch literal 980 zcmZ?wbhEHb6krfwXlG!^$;qkuYdASta7v8G)L7B!@!~TQBxfc{%}$n`lOi`SO>us@ z@`4PN#n~Fm@^qHx>#Zy_SY2$qw$yBWx#h-6n=Li=TWg(mG`Q|+^4Qbjy|2yhKu6%A zuHeJnp~w0nk53IbF(KyU#JCgFBTmkYJUJ`+)a;nkbK*|VjXym(;q27p^V8GL%u6^k zKk34Z^h>icFVD`tJUi#=+`O|3lFlwnIkzb7{F3zZOEWJl&%Urc=i-XoODprQtj@i( zy71zPl1r<~F0U@Xyr%fd+L9}4ORugkzr4Eg%G&Cy>uaxWsJyzd^4g}Vs~hUCZ?3t% zrS8Voy2sn2pX`c%u)F5%p^*Pqyw|N;w|)EeYnvLcZ*IQ6rSZnLhMU`gWZTUhO}BP5 z-`d%7dspl2-R-w_cHi37b7ybIoqb(*_V(Z1-*fLk@7)8F?;o0Q_u!QKhi5!EGV|fF zIS-G|eROicMpg_qTu4~msum?8PO zm3x}0IM1>f!EQa%b$li*S(#wqGDkmlgN~(8%NdqtxqCU8lTtV)$R;XDJUNiYDWqsK z&!h3vfdy=)Zl!k$gr0gaH%pxRa3Zmpja%4DOk#@zn|rUMwpWkFqyq}91|}(U6cisF q=4WP8&Da=p)I(6ou1Y|`BbAGVomWD`pbL-9*Kc7EYId9xt{=9qhCn@Dm zQ_CAYoiE3Zd(3iAlRuZP{0R&B5*PEv$>mQ~ z&7Vh4{^aHSNlW?C)$_*4ffI~*MMfmd;tpPmHbJ|`Tzev12&-elZBCi!Gb{tBnk2p z1KSLTIRzdfVO={|cuq>5?dS~Bbn4OIlkYS5)fBK|N5|^Tg{&z%xKbD2l2MYmo*2w6 z+dKDC)1nn;V>!y5MY+uMrKMFHG(9r;rTO_qq?%l1m{d(9M1<6Or^|_m$g-O-&vTj1 zC1N6_!e*{6#_GIkjg+RQf)JM>&lU@DJ}y3$a!np#MQvVZam8aUnhXkOU38{8X*UB_4FINwp)&vg literal 0 HcmV?d00001 diff --git a/img/os/7.gif b/img/os/7.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3a61298ff7af2434f66bdc7aedde6e45da58671 GIT binary patch literal 596 zcmZ?wbhEHb6krfwIL5#bGRtSpxiu~OYVN$cld>*l&bcW^o*kKUXiCktk~O!MeEIdI z=UC64ds|YLrOdfD<<6%&CEH4BcGYZov}MYnDO+x>Nm&%rbEsv>wK*}1Vplx)hm z^61K(Q&U>C^0o0^-s;X-~c1Idko63sS-dOTuW>_(ECBqUtj?X~o@T_g>Rv^FW)b6B~b*XA_i zlav$@WU*)C(cfvvsx7cyo5RUoL{p!UnM+I1O_pLnVWymsf?Am5IR`0PDNLg#Z8m literal 0 HcmV?d00001 diff --git a/img/os/8.gif b/img/os/8.gif new file mode 100644 index 0000000000000000000000000000000000000000..b16b55530d4418e2bd9115499f7e74c5b5038169 GIT binary patch literal 387 zcmZ?wbhEHb6krfwSjxcghKc3Ru_J%1Y`)0J{0Z}UBP8<2%jS!b$)BWdYTIn=c>*K5xWC{`lE^aRVBz@<&YM3sBiRpy45Z;zIs_ zOt$#~QsDCk=!UeI|Ns9p;0205Sr{1@Oc``Qsz82XU|VotR)L3(nE3Q1MTu)xT8T=v zH#;n`IhxM;Wmc|PQ@fJcl`Mm``mD~1DJQmapKbWLAw}ex`tP#3df22)CvM4$ZR`I}gWOhnKw-iLY7j`=(%Dq_SUUfm* z+e7`)GgEg|7j9XI$DzlO7v(4;WWgS1UK}B8;n|S#ys+Wuq#T8Xhoa?Ky7tBXi+x{y zzwbWq9X@+z;N)nK3Q~VjRL{5%%(8Gc0WuO^0QCJ3m__yiW;11@RK`oTouk=o%v~jR z9m)ln6%}JvlByoA(yHSMT20Usims4Vm-z~?1%}Jnaz#)|HFM5{OEtHJL7@h#Y1}4! zflfT`sTJcuhhCMBi9TovY6+=TNolxv6$?2N*LkVLdnFn-4YYtv2O7E&A2$@Mj9VD# zF6o&T_$TAYuYO%VABJ0 z9LUwk3gU9Kw@T!yYcyP;2-Tv=XKlp-<%*4#TwY^FvN5PLMgjBRTSn`2-DvQw&BchkC^E{>?0O4dB)rotBD zT&^ZtK$%0rj4juRVL`MEB@K?uL~w;R>n|B5k5r$SjrPw@pqPSY>z<&bLLf#sIMMl{0FG9&eZfgUaiHU)DriY#i!6wF=4#N8SI`x1469~We zZJ{WQiftB~pP>A0>ip619W%aB7b^S9(5KP)$vu|>hot19Z*O$EYc$-t(V6cY3--R<^D5a9 z?6^Ddwk!YJHlP2KuzxH+^yETBd-H+|!<}G%&$W|bH~D@4XmsrA-=E*>PF`3Z`0!cE zdE9*>Z%#IcJN5xlM1wC61*ZFkQ%~9x$G87<^xMvV-fbEF?qJ{6ZDFoCIdx}$@MCTw a&t;zPJf`is;{4DTwnEf_*ZzY+>eRpe^R^BE literal 0 HcmV?d00001 diff --git a/img/os/index.php b/img/os/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/os/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/p/1-1-home.jpg b/img/p/1-1-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ad2eb662225ec431c27229af0cb360aaffd45ae GIT binary patch literal 2635 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 D@rx>w literal 0 HcmV?d00001 diff --git a/img/p/1-1-large.jpg b/img/p/1-1-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3b83fb2aeb1c1cf23e1bd5d976cd2580576609f GIT binary patch literal 7255 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 literal 0 HcmV?d00001 diff --git a/img/p/1-1-thickbox.jpg b/img/p/1-1-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2aa9606b238e66321e08047e88a30253e8f4abf1 GIT binary patch literal 18736 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 H{{Kw?k4WU` literal 0 HcmV?d00001 diff --git a/img/p/1-1.jpg b/img/p/1-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01c4d317f328a343e01cf4c65cba73e5098a49bc GIT binary patch literal 17191 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 Lx|@x$#wG_Vp?o#qlQeAX-%kqCrJIW=q4 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 P4NOtO;$HxjFZ2H&=lI7a literal 0 HcmV?d00001 diff --git a/img/p/1-2-home.jpg b/img/p/1-2-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2489a0323829b116c85234e784f341135182dfc GIT binary patch literal 2859 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 literal 0 HcmV?d00001 diff --git a/img/p/1-2-medium.jpg b/img/p/1-2-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64e0e9a8f1e78517ea1b75b7574b71c190018878 GIT binary patch literal 1733 zcmb7EdsIw$9KZL@+?i@-a_^XmLd{H42~8gyErAFKqB)?5;GkM4N+hB>WHL#MszaqxbSM;>E*+!k;<^+HrjOy18G3qp z)JX30LO^e#0qz7MgrFo?-2qVvpotMMz;n#o)KD;dWlJ){c8v={CCiPimml*AZ|8L<;; zT-Sh^e78VVJ8gH`-WmPeg*%<@J0|rl<;KjB11K!;Arb(ghKQ%Ye zf7yxp))Tv8ax34LI0Z$8nv@KWbO*OvCmp!q&?>CG@GviXC6yLw)l3VP_^dXd7X~I5 zt>ZbQFTC&kw0NC&E;rk*jUFN1U(!(C3vkZBA(;3tJ%PMT8{jFz6MVr4np}9P%3b*y zq2^q5Rpd(c;rSbUIl|UWhvR>Z8!7d?ZyK%B^J)MhQg?!hv%y3_RR`$(wZJ1pL@}H$ z13_W(1gk=%{cMiy-7n)2&G?LI9&U~Dl1BwS&(#p~B3&i={oMtTpTDJ34QBa%Oz_h5 zfc`^feYtIv=VbG0r!J$JM*=P{z$39Np@-6-fczUfi%J3I~;}d3%$4 ztY6hwN2RU7Bl+rzt*3o`9G`3^*X2L8R7EB>2(#9YKAe|c)Dvx=`)P5jRbuZzfV^_k z_<43y;w7l_Ll@A&6a(=C`wiTg&;f^-921_vS|n5K5@R7RCPK<(s;&j6q6)s@SnqQri>TD5lR0Jp(f*4%C=ca2B{Y;$2phY1pYCi zMNUsx74z|O5h2*=-Ic;D=gcaDYY!%&Cia|_U@8mOZ0~>6!HVRr;Y}X~oq=Ry7w37aX+~cV;|3AC420 z*_$^m=&e7SJnEk<3`h>Rx2w6EduS>aW2jj&_80FE(l_fMSmPZ}WMVA{*(DQ8`@dO- zy*V6bxrwThMc%RN6l6TLW_msrOY( zWW@~KAU8~#zOcT_vV)a)^0N8O=gX&tn%yhitMf4>%-xHbC))F%TUZ4RYrl$xkE+P+ zE3{9USuGYuZDWaDY-2o=YR;84xMb=F`;a3B`m$@Jm%O%H5PDCa$rq!6E_SJL*VsV= U9S29pd`f&>^z>E3UF!C~0J_R~#Q*>R literal 0 HcmV?d00001 diff --git a/img/p/1-2-small.jpg b/img/p/1-2-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8eb2ed9dd8b367236f53769458643a71c5cd486 GIT binary patch literal 1063 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxeMkZzfK?WhPsX!Tf z#-}qo&zr4clNMNE9S_u@Ajkj=QWVE9G6}K>C^|B*8U`kU^)Z3;J(YvW<>%*iNZ8QyNkT%FyjBJd&a9;tfW?&H%QV1**5LQ$&Ff=lDbWWT& z=_1sJZ1zkKAL*Zsk@fs$DWB{tb4hJRXuXz#N~WRadj``BDYd=vTtbV_O|qP_x}mb~ zrhIZ(Me>$z>mya(wb!rCRIUp-F3I!jN#ct2{%^fab{I5N^9KW+p)3FlJ75Z9ML2^& zP|;8!@Pk3(#KOjn2VvGT+ADUkM&`dfcg#ap#_ZCkck;Rg6MPN^9MF~7cEO{lw?y0K zg<_Ot?$Q${{(ZWjFnRl`*`KW>_AGFj`MJ&|Xh!zh^M3t6pMVnpIN=Cb2HSD>%WVca zLQW9q2qt#86M(5hkO3H^fsG37vTsKgWTFC;@|j85kLe zFkl1)L1Um};s=F^3m-yU0Cb_fz>Y=+?$Ad`#oluHXZU^|c3(JMujX0Z(|1$c1aDLvR8lSb*RVbQ+TPJ>Qvo z=H6%indx0mb#+&*RljA`Rn@(p7N5R>kfg*U#Xw+SAP^Yv13j&Pgh3GC;Liy-Ab|u0 z3k3xU2?Y-W0}cBc{`Kou@ULDWAfg~4AR;5adWD36gp7)Yj*kBN4JH-_8Wsu~I@&W6 zFbIGK5(*9q3Jwk76$0A->*J{pgbWL=0j>c7Mg#&!27^Ebdl~@YKEs51hWqaU1`Y`Y z4Fd}S)ZzdYK<&R(KmiOKkN_IyX&Lky0t^I>1c3zHyOj9PCjbAJA^(Md#dRoV8WHK3 zVq`E@3qjW()&B-*yk?qa7M@v#;tNAQOTQ{jyWXT;#x(25|0)E;81I{GXF3@5l$(bx zE_k9KbP;8^LK!kjR2e~*0TESMqCzHh7i&l6VP3cI{CaMjF5~jDY5#WqZviHy?G5i9 z4|M&e@%dV_i&brBn_0*PbjSw5_v>!I;P&z(rP*G`%kiHAOp4nBgx@#TG#_KrnLAxGwOQ8lV^)q8o0Q_j$P9y> zD?U4haIu773TXXItG_=o3zo!@D0 zTp&Dw{1*(_WtrXf?6&J&Q*>E1qp}OL#e6O^Qy%3@`6+Kz%75Tn@X0si;CY$%PpgwG zHCD!cp*h3X^MF{yS!o=Xm;MO*Up)UQolOetK0pAh*?jbU_UP{STYq27-?Pi&xRvGP zk^P`Zk}5N0Mui-gn0KvkL3dn>)n4M67$&%U0>wTAbhYaYT%`9h{KM?uGuV&HJAsWG z1T$2-IWBfVH_gViM_yXb2OPVmtcBg}t4=EcNks;kfoNu@<|6l$&y_aWrsi>8FvDGa z8+w3_WqSTMI_AyS*!O{2cT-otxtKpg=y(0}<9ZD|KmDj%=G29K}Mgi9yX8M7e&f0+Gy=Be-A!?^}4A2EK9!E=ev zGDsPOt`w9M9#)VR7Dzy#GWipa>X9w6TM-o&d5t<@jv-J&T(j$19tn}t9w6Q zTU1%fu%OWlWfc*4qYPDLv_2ywrNH)f>ed+fLwj5=;;HxLY1xS^FCZWT|HT3nc~~x@$Uzoth3JjL=0{ipng*BJzTnRT(8!l+lVPBUC8^+sCNewv)Wbhq^{Dc*=Ij z^S}Hjmp^5QF`R|S4gl1ut2pL_G7Ci>b!-+R>+n#9zD09EThX$m&jwuKRZ$vWybQi} zIZk=}m{009z1c09>a()^|8gV&2CTmaObWXXzS}oex3rEF@{GLd#9b@1sABo`_1$)} zA2CNvU6}6nDGMD#WFI@5LW^&~XLA~R`7(Wz`!^qq(tC>9%egb-$2xPio!{$k1G?@fa&rGU#x}3%lBZ5tSMet^ic00pvku}-OvpSDi}qEc;p}|x zsg7!G-TA@=1l;!Jcl1}Gh0i8}{+~=Vx>A+gc7omAg~@n1B`z{KaJw)?7q-LEaPd(c z>V3<4SjTzHN}|4zrrsqdnDTDFS5xHV(hj>?s;_zVkH@J~zXl&_s@Cv5W+8zWb^M23 zKp+oor&)GB81>7Qi{n(;wIEMKheDo}R9)|mc2$1&J4;I+@*|NQFY?z1ojZCx+%$#3 z_e$rT^ZNYQ^G@^@?(NHZk%>TrzRe|g;r*Z48)`dGv)vx6gM*IpqV;Zj<2HG>R7=dH zX+Dd#%I%DZt_GjegUk%Oc%8}I^$dglU{TULg!%N zdUCWp)$KhUkDL0qPx)4kwWpe{6KeN38~_|#@ITRmz<$W~%dfN`m~XsE>wiDz_Ieoo zaJ{(p7NN06jvc3tv9xc8N++%jN&L-fYbrumOJm#CsYh&Mhw_oV%;zd2x8J!0|Bc`C z#TzQy+mMZ(gU1`41^mRK=wbO{x@r;CA(joQf$=~-^!uXuOc&6ZIowd}T zDfbvu(^Tzcn;zMtdFjtGm8WGrzIe%h_dU=X%42L_fc3G%?5Du%cH8c# zVNtKC9D6Pwwy!>LQJX3&F`4;WrBjQyv(k!|QY0O9?V&7J-Qf?l`{^#@a(65w{|joc zAH3}fD=m1Y>zK@;-}k~YY>SX6%QE89D8s{pnKFzFL}aAwD(y-Ej5(-Y*0ao1X<1hW z&w~ws@xQ_3$#1sewudV3>@#z?Pi91wt%IXXOA;9vpiD1>B?X5|*je65Wxo0v?$fxR z-Y6q?$M8R)L1`E-d7uU1i~ZVu-vZ&@0(lCC zKkMG<2~>5(sczA8$X#B~$f@f8qU8Su2&&M}g+54!Qo9PO?VGl2Pm@lh>Bv8sWsB6r z8C40&Gug97B?v(O>tO!E^Z%y|ADBe400S;0I1CH~6bRz)L=%`{fzooIT>^JhVCOvyvm9rh z;}_Hzi;qq!+nMCJOAI^vq3kl8ZH8YG5pB|(O!_m)aOW9zEQk4o4}`diX6kXs{q25j zQm`8jQE4~w7Mh9iLtfueU#Yj%BI_Mo_u$lSqth;D&(ss+2R+v8;UrF{qBC(x_BcoS z?_+|^&_NXFz({aFMKi}is(1(oy3DyKJ7>r0aq+tE{pin6MU2tmG$epuR8H@rLg5;| z>@XT^S6MxcoSLIzt3G1l zN-;LNx*UHVMHny9oBvw@_oFGR919`5p53tf6Davvqvtr7!P3A)Thh%=Q>>6GeMTh8Q(=f& znV(kiX0Ay>tIE!i-MHz+C_8NQ@F|AU>t@W%eF@|#NHak{4e3$|GUP{2j?KbnodVkN zPL$;l~)gMNO8QAbYS|EVY}vN={q! zrqT?iQEH^dZL=hpeI>Opo}i^8BooaPU|N&~1@{C(-Trtr=yVP+uYG1t&scM#()=oE zgRr+qn~0Lx)1zycOk4?`l#t~!lSH=sR#duUMm~r5WxG+~vyF`n0UKj{Hx)6Gmq?OU z+m=p}vC(DqG;UO)JVq?`%${mOOSjy;EchK{=9aNlenK&U{EW@Zg|~2r4Ie&bQxZi| z?JHWH5vQlNm^{U|lJCfZ3S@+ZdGaJ>duOTcFWdg=!T6N?TK%Zn$E*Ch2e`X6^`af)Q#3dD>#uE{ z^LN%)7&lj3FRjgtjZfyTf#B14ZjXKpbixdB724p(_C11Q6gsWKtdpC@$0R*)S5Y$9n-&RBDs7xhk!u=BB zSv|cz5#O#l{)O)zaTksKf!Pm~xWeQ}(nl|0_?DW4;u<$NO&!uvpu!vXr6D^I0g>G4 zD5rLOBSR%TN+n6N<}ym|0z&v|2LgpyQdL@?`9_rzmK~o!>@WSwj@$SWjqO!L6nIf; zH<PN9mywZ2eO{2 zqdGN^552e7o{opT^@@2vMqNk>&06y7ro|Wv2pnHy<5SgZFVZhOiTQ=fg^(A)XeW|q zJ3=k6A8Sz8rix*$vYRgI(?CGa!hoL3s$);R)wg~CC_iJ2HZvc20$kGJ~vGvp8xqf_*ad)0^X+Jv>z8BeC*AMdfb zDOp+@d^NXcnL=eo@fazb2XbdoLS>}>ElQ8#(Nj2gSgfJByo7{m4M-OUTJE>uugxcZn6^f5@%xF33OfpX(wn_hr zyMql)nUr^BG8Bzvf`;&d5|of2MelOH+m_^{QP1i?rj=DRt>hdZ?VnV5RJO|YEfkH^ ze7DUD%C9qO8;vvqNxY2a047^%%9IJI%c;w8KYXj_Z@bmyRD_vc?t6)9Ue6CyTt(FX zDi7B@LO0(~N2yRgw4=}RFh%Ui?8 zj1JV^7cvgM`}Wlf9y{aH$T7h)v_fxl`7OGahOJe7W~lG*kHXOq1Mi+C&%7rabU5o2 zpSi@BoW}iS`rOx~-Lr1Zn_uv+{1Im9dOihQO+(YrG&pHKWj<*gL)l$Z7Wf&m=60`k z175(2{5&ZIwmE@)*}rq+mz_;y6lMXX0ANZ=#K`0bjY>esz#^z9WT@;wOv3u&58yBU zFsA$^KV1dEGRlOth%s&vyc>6}P{RDwgLQkrE%d%2;@ zsxX4WSyR+on>o!eNY1_(T!wlGqQAombKO#0YZ2l?P>{PegOxl4*tU+9hNN?(CQN&W ztdPY?$b(NKqpUJna~MucO?ibO&0c-vs!CQ!Mu|w6<_sp^jMk@wB)QVm+gbfFHxS-7 zEmoa3%NU^|JS-0mZ5$RSiXFE3^|W6oQKJO0D8Ed8DoNASEAu>6883(boTghSu9}JA z6kE-b7g9*<14qW-iI&ksT5!(cK;9Vj>c+=81U9z{zp(kiA$r68rr1Qm;h~Qt~N7%j!n9I!fNJM6ij5?!dGe*j$$;bBNx-#^!dAXDT zdyXA|{Vf?O8=#!~!8Cn*k%6K~>ecNC&zEx9c$?l9p_W$`!H>Az8-(;X{x&1t5N5*P zaG3BxOK~^Q{@}@S%pQJ-VJc+7%eE^fo3>q#|Gw|bemdPc!obA2(eM5i%n7`n zE{9{N^H2x+kK6%%bJL%ufu)I<MwCGlrw1FzNP1|3>aH!Ozop83=8_@wxTAYQtXafNc z)X)YkxHg?`L{$yz9Bj+pt(4b|&r(|H=3fiO@qTYiS@K~jx=$m|#F^E|VjQ%ieoxJi zz@P8+X-h3bjC%Q#8R_6KOwyV1uiQ$? z4uR6usn~xZTd9i*b>@Vr(;f zrCD|MU#a-BSq^E2cZ%hiCQxjDNjapXBQb9mgK{KP*?#msfq0VcMy#c5d!D<}i*A?x zi6ZaH)_}C?W;^OiCU&xHNMh^ty2+SyKywFO!1+`!pzxQqXfcLv*~iUI%a1UORaj4; zC8&%JKz>?$>LGHpki?9Ewaip2EW&2Hp;%3c>`Bm z9Cn`_B8A)7G#}=UtxsqZD7Ic(JF>7YlvkBH7TaOM;H}y+y+Y($En%GxY8;Q@Ys}6ZNJ^UF38i=(VN!i$#%WiN!r3m`Rs^y0nA337J5<6M$~5Qc>9%Y z>(QMN90iS+c2Sb=F>v0|G%Y+NGxVr1X)c-~e>)X$= z@b>j)Axdl8iQgD`v;SzhhT+HB*Py`*L;U4|F1_8!A`pVQ*h$>RA0y@Sowbnfo6KU- zJr$-B%aXA}wTZhpV~Q!lk!%P?#;k*v*@f^&Z9BQ1v|WWTh!T@BCf3cbHg~R{mMBeo z*?!_HTH7?#U5Q*{!v)7PnOzLAaV~&+CB2WN@e;1Z@#}8S?L}rb^+lNb!{dHF)iX%*H(6$iMdpuAW&BUUCZ^nRG;3hMVWWz0nSdiNj+5!C zzTz=4iJcL$rEyT|`ZT^*le!i- zh<7J`m>ZvT!WdkO*(9Dh^t(R4R;{1KCPD(2Cb}un4KHLhl-#`aB4+P<@rJOL@{J+j z7$>DTJTmEdY?<#?ypXSChRyenN3wsZM||DI`GC!yZ(WIjBc>3wg#i~p)HTZ zWFFT$vz$R3$OgR=(lmy~#5c8A(T-|^Fpv`%9>31k_S2?$^;X=OsPtvbc-Ap~Tj5FO zoeRFiaqK3#d`Cz_(JEXfTFnPTPE;Zrm1YgPC~Hxv29@&vb5@quRJDVx0JV4qun%c` z<^v48Hwz6b0nFwqR5|X}T0mIWm(4zpCD-6)6Xo(9NDE2NwW`JIuzv#Xpy6-$&%+n3 z{~-k`u@`ds;XeLEufoE30;#DU;r^D7(6$th}zK zc5V2hD&Gm9M?1(bA2-aW&22&nbdf#fE0;XpY1p+R!JOsoJ3HZWuNKC&N!uAY5)D$@ zYus!PH+Mp>H?~mwb(4P9c(>8Uq`X3-FMfc(oAnndyE)VOEz36LZJaSS_H-PgHZJWe z7Sl!?Vysg%U1u%PlzhkBrgJ=AZl5A`=7XKtUy!VY>>;RZ@59a*j2-XDY6E|2hrRK% z%ELp==I**5wfz>-P<+y7Pc1mpUhwEr?WMuJs+!%1pK+zkB>UAVQis-ZK**b%U}*O0 zN71v2YwtO~~Bavyyxj64d=b%!3wLQ{_5AaT?CV%EOP}Ri%1&szL|4UY^(^SvGAEAUi5xR?<;}E1udY$A z^&eqKg*E60@KzR!J9yJ9>x9FKY~YK%^ZxM$WCfq#i1l@)H&))_)ClYDZV$tl?-#}B zB-hr@BK{gV6In@gdD!=UL)&1l9rbaz`{QD$o$@M@1qN7TI!TVSt=cv4Fha1F-3*!# zn9ZbU|9!ZV!l7q53eTkcfka>4V#kYZ>&RoIsu`zUcjF6ER2}}&n0yCoC13_lMjY5- zE0gYO;$g>KFA1&f^?Ln*N@Q@awP>TkFT>${g86tDHb0(`WID3Gla>p<$$3;DSVolh zv@~{;T-t4Md!PK5mn-oo!N)tqVITg(O6ck1amR~d{`dn+t(csn%H6isth*tz zdFx=fCH{aKlicjF)QcSb{{-Q)0q5b1HvrlCWtZkHuZMsL1#VeBhw4e6x#|ZXKJ8zV z9Rd;9|NIPD%Th!5;^yE9&EYR z*KoY4<>pWw<_3Qg`hPslb_X-5Z)ShP845@7v5$`7KgZu;{yJc6bi%zo7 z!~eb_HflC%Hp3R*5glYloP=6;k48qS^ckMpByh{itfB<7#@1jBCT)q>G(;A^oG`Sa zy6}$MjNLS03OF>0VDlOCt5a?Ms|QAI_p9+7;$-LB*n zoN{TGZzjxsjc+FTew%Ns(Gy5ag>bJt&x9QSGc2)LXQwPrhzy~Btdf54CG%pbTfEV) zX#SQ1x0Gr!ZuxyvXEzr~)RI0p#7iW3&XMu2j| zfCG)1HKHzIU({A7*wtZ%pA03;R>__d28{M)Nwem%DY9f}OKh^_W-;qnD8eVVUSrCw zTxssL6fKpL9~z4M#!FU?J0Q?WZ@TqDi}vPM7lN~T1D>d?JTA}76LpUAX2v6Ympmui z)kAaFJS8S5&er$>1`pXLj!|LkU69%t+)JGQ ztmsCk{`Q=j;>fk}#9V_FG$r;dmV9f5@4l1odQFuI^HBGqLgXSWGm@G13Z2OamljWy z`{dDiAWu*SVD?2 zR^HG4MKTJeQIS*cjGQa(N8|uot=gfa_~)gfOmvjw)rNg|2jC5qcKBqW=hv^5nH}om z5z(zvLh=EC*6GN*oqF(h?vP36JPNX9TN~L#VZS;=biZNPAJv#%*y!wKGC*554AOH|YLz$>BCAH=&YRnj zk1zAD)91&a<`=mnl$v*AqbPy2R!z{K>6CqaggJgJ7sqPMYHoE$bFr1_S`BHRd8nsQ z+OQVHqF0%uAg8dYlqZ5A6=UuiBq3>6ru%T1gti%>fK*f!;Q7H&GzB>bcjrvPatd&-9cgAK*MO0?AnOX7Hk|Y=$imUD`Q@#*_rcxQ^FoEF6glb-CSamKB z6T7cy?<4urvZL&|y1yH~A*KOM=_NXZouYm}Atl9CIs7lK&o+(V-|D=>z)s*663o9l z_>O02E0r)}>ckJ&d`8>%BT)Y>{ z&X@P4<>(cgOzi|M9$3E9DSiCD(YiDEz&w^MIz(ug6(oj;2@N^KcaTxB6VC}O zHPSlkD8K)T{qAk_8MzK#c%X?J4ozsFB%L0sxX~RqB4x96tXy7tl1X%w9EQQb$l?+g z!ls8XLeuyWN6}>!MH{@5Oq4T9WQYPAn>>>PVVxN?TC-sDQdTP33ah*DtMHzF6m|?e zVs`@ebTiZspXT4y*FR*1qAfQX(;Kv@$iWrCrRea-g@>^)nue?MiNetb(giI0j^S|> z0V<%|BsLyl`iUI_>B6#E9@iT3nPd-(R}{x8h09SkQH_6q)!5k6zyWtzly;ibl~}5q z|BSlR0TZwFJ*#N)mpes0`|{5$%AD`a$cyswp|J83<(7+W2ia()z_bG*f>a6biz0D&WGjFro%2h|%eg0c2^kSwg#Mmu59tHkIpf@#Tt{sIAtJr1fvxBL*7S5D2 z!ddN4%G;|`ZK04)nwj1=2>ZP&>`)W4sA4tDTsdEqal2rnm79&Q)#`X#hNF6mNbzQlVthaq3No>Z2jiEZ&!=X4gLc0o6ZMiw*LXIjxzeNCl^eD)hpG{! zK6C2oq+ZWtf$c@oyM2NrL)XgV#1D|P9CgVN$}WxfiaXHNkzqS}?g_htDunCU&uve5 zjFfo6w$)sw-B^kemf}6OO=JDO-SmDTTh`|a%M}&CK~BqAgnlmucUHJY#gl6B{~WQd zH_r5dVKw59$F9=Yxs@$<~MF}r#Hdp&16;YlDuX;@y zk!01@cQ}E_x7eoh(q3?TMCoM086^%p744*;1+&gwbpL8v#lZY0^EO`2jUH<38QU63w2rimq_ ztWPb4de3%2S0a6CMTWc82UB0`q;zPqPS|Q?&2%k{d4B3;1mwq-PqN0>30|Tln6*jb2e279Hf)U*Yy9&c{w^24|TP zDfm<$63IksBtL;nFyk?bT$Oi&k_8h@Nc7GQ zS6Pp`X{7BHTS(+uw8@GM2iXwxUN<60mn^()9L{LN_`#XJ1& zQ~DgudLNl<5_Q)=WjY$>qMgDLgG8EWmzBo;Ae*cnm~zzkBu;%?>i1lOPw;NKZy8f_ z(;3)E{rOgy=4T`9GCCN4_T4ZsxXb6xVul!X6dOJZ*I{)6RpLD4=+2ljOhX%3j%Tv3OpcSOd0S-l2G6E<#jg#!H2R3$yEPzjGTv@1)P_>B(n#aHmAO+< z{Ye2Q!HWCa5DzfUA>QmT>P*-zKaU98>K}Bl`y6~z_u?5*h&fxI;j-Hqd(*%uIgCNG zNA~p-zaAebW5!_v)W9yQF}93Y_+hZaB;lrs3!_iuTgwX@(cCfx$}cQ}0*VsvZLuWQ ze!szdV3VI6jD^AS8M`>;pY0jG*ZgK4o=xWd_M3S?%OALu5_;14h?F&p9Up{#T zJ-;wOI-lhE|2Xx(X80cx0?Vu{&vuU}q{1JtQn+VFVbX{kgW9AClA>6aAy^K85FuEG zAxMhQDIQ-)WDF;8%Rf2}zqE%zQyc=S&=f_{)O?W01`SBUYVJhQRR72=j%x@ILIJh* zZl9X5EfR0^lT=mzbOaD0Ns`0~LZayj_|MV=3*te$i>j(Z1KhA2MUeza5+orNMKKaP zR9@SvASD*%{zLduMG_~9rl?J_S1Ye8h!#SRruw%>NNh`h5FH?F%;RAx98%TdJB32~ z(<8DVS%M@zoT z!=`6Kpcg$W)cc4XYo4fTKxBXr1hB=nWSNm9Q53~Y$+3is{^hxc=%CaTOk|fHa zDS9b6$!&0NK7snGo+*)@DbZ#n0T%!$(bJoGeILd+$Bh1ik}Ls0EDDLN)-vM%1VVF+ z)uDU_`-gJHwrRx{@BwF>F}`21Jg2=RfIrO2Jg1HSucP&UKR5tuRZ3)FtqS}d1Pu5t z?(YGHj6}#NVAx9_s2JerkbBCY5WjiyvQmA13ypM}GHbTamW3iw_Q6sz&guj%5YUti z{CD^f*GKF|5+U7zY*-tX#boMI23aN?90G-u$^PHO@9%IuoBW+;1|9JsVxcnYjM}^- z@5J~=@RN-11K99awYhM<=lsUtxU?pyA!&%3wh7+G3|eN34p4U%6vg%I*(cj+ljwUvR@8mc`v8P3@#^<53qXGjt7IH40lccczj zJxDi#a`JZ#lDy37?;`vp7%8#QmG;bkR>CKY{F>WdfHWr(scQ0V>nU}seN|CVUvrqj zqwqmxd%gpl{3>QzTJf54hR5?cosBaY#!6cbA*MkP3%*L;d`a{K_HnMXk)ndwKZCa9%| zRn00`6cW;z7+MQMxQbs}39|IGpN*Wz_%gm_T8d_DYC7DBrnjR)j?|3%@EahpPA{e1 zTKDJg56|k5#p3bF@UjBRcTSQd$%^t}bux=iv{_+8XbY&ZLF9qQrPV@o--g-!pzqxD6tL&)h1iJK1JGTb$druTd~%M|~1F6e&#!^Lz)}cYbjnqwP0_ zBjAH``MYbd3`|K3Xvny~PFLSE3$meIto&ll z4mWciIpX&dzrwfnc6cAZ!1vP=XccK0vd|?W<-K;TcE*Ao-NmAfotQDr_hzGJ){51! zP84=xGU)HMDRn?cimj;*31Xjda7a8cUanhOY%D^;GCngVM2mmoef5^zd%f9-z*t7~ zC-2~oGfFdb*j($I;JCBTuh&r*uPJ-K4-+d$=wyr9S?ji@!b@2=>+1I;NgDPU&c#na zj0asDhiH}UU+UXwjlJcGSpB;0V#e9)-bd(Q8rJB67?|p&NLCp=74%zf{E(LVt!V^> zO?~1>WT=a6@MR*b^Vr1g%vvdD9_X#r6$hlo zx!vH6sX_8%1 zrY(B=ci&P8YizhNc|4$|W23RM@OJ;KM|{{GTax2MqCsvV4$4GZ4T~;GnG`0VtHNtH zhp*`w2knt^G`4=%K}uqu9F+E$T!qFS@N;Nmf-9bt@RRFQA=|Dj5RIa3W7S1Hd)(3Z z+N3X_Mn#`1+2qw!Sh&K)^1ZAd;e?V?cav?Fj*cK<~7|=4sr&yLdpb{9t|Hy!#q^ z`Rkt7-TK;Pv-)P`LEFJOAcZ1e$I1||9XtF7Q-fB@qe%DueN6kpqkQxeh)DnHQBDl_ z`0MjY_xI)NCs6#HCvai)wfa8Ge5^nm!B?kPc=u5*bn-rnKJz!1AJ5+X`4b55QPlq& zeqRH5^bSWT>9_!N|!yP^?)@{lArz2dnq8P)D8LE{J|n;Lun)m(b#*ON@hriXLL{ z&mB~BpuvO05$;_dz=XhPX6&r}s_rpkuE>Sd_tqn_;B=V+Sx#IKeuxMvu7(|{t~H%_ zwJgdM2~uc)Ixe!AK6ns+)cS z-MgD(<>Y=>D7Dwm>3wr}AS*e>kw@63>i&dV~fdbhDJZvuR2*I@Sn!HY`j;qM z@4*o=#PA0nQGei&Ni^-)k2cVelix>s-CCj z6sTmvfVX4$x}0|RO{M}b17&12ocZ^<5d+t47lhNW$Y5B|B5i_gQ;H9dvQx{g z7he9r?8nR?bzMN<>*B8tQ!q~;ElaxkzTC>+EZVf#h|OVNYXnm4Ly2^IRi8fvD--OJ z8(mfOk_BkuhOC{+BVH z@c``6H;@g_sIZsc8q!6X2pX_N6Nl?jf6p?OB(y>t@R68x5B%`~T@~ios0J!BLuLB) z7g8IYO=BxqQuq?Mdn*RecSxwC32iO!T*&?pzF;xnEFBeypAax`^OXw-ju}6c*4c&G z{#K_y({KujwG3sx+~zgZM=DvaqENwRcam%P3}qqqdVmMFcUxh+P}y`S@}aG!EVvj< zf;GPr0S}c8+Olq)#TFu1>PHRwnZ$P++8_%n4lErA4e2H=c)3;^MtaImphydgy;rn# z#>*|tLqjd~P2M^2G+dEWgqQliTST~s9|_uh%~a+E_=nqSkVE`;qzTm9lc3U2T4<`#SUO6E{sklhN}2iI*E zU{g(f7skeYWlfVxn^L(uL{?8%@S0t!q%u7Dy!6c_i{av(aDurWxZXvRSb89mMRP4& z#|JSm<3QDqqbD+bSc`Ssj^`bHe5W_a>+CD?ZhkR=n_%=}#B!)YQOj zh~`(t=j?c|myGA$0%AikYx+eq>M7E5HvXksGR0_Jy=WQ-<2F;EKXagVCy9O}B+(@u zMl0GE8g;u>*#6=XC&N=@q0-7KGMaOc(tRJoeL9(EYbBJYD8z|&9)~sJQYy%)Q=n!l z<8r`4eaPUw&fJ+Xqu!TXp{l!y<`C|srC7q(li ziiKWjV{OH@dtu1bAl)yBDTEcmb z5zi5B8dvy?Le{rxV^mt#SndM&QDWCqTX72|%^50JseZH8pd2ykj0*{0RbTo1T)|vx zUnPICv&f`hC+U?&PHDjF{qT|I`Ltm0^X3Rmxg{G8nT-gZ*-~ zqO%qGD!XP*3wMZIvN`Gp}fUQ7U7T6!O2sY-r|d5-d~fIz)Wd`QgsK zO*IuYKrMDmH2;cn9I1tDDfme0rvo--vZG@%Q?-UmRBjq1MXPK;h(@u^m(I1h;Wjn% zV1c7sLi&R)%*&1C>dzP7>GX0eRVPA^-)dJtI*a4EEo0JCdx#q7@)i@Yo}>puw{gFB z?**%@&mQtI;A1tO>uZq{6))iYoN9!Rlxn&2deUsfP+RZ}H`{R&{jT=Y5nW%AMqOUA zg>xWVse=_>DD~zio+!2_ko=_ANQt!(c=#qu`sa$g`W#A8jH6_OTYP_BV%$a8L*tJV zMR>625xorrpZL@uCb-#R6zW&j7~%zc0%-CpjN4Lz47R;Hwl=#`#%9(O(&SF_AmqL( z&UwaDLeQb+^CI9Gm5u2+c>f->T2~aK92Lusp!UBA^HIMssd}@$=edD6yKM3GHF^Rf z)ht5!=d_F~q~<0zO=S=)oNDLJd5?!EDh3-LEQ1w|C`GAPfvi5%e5$JVR*6?Ropm~^ zz|l`@p|uzt_UIz-aqK-#fQSaa$p@)Dspm{;_N8;}xs zMLDM|W>zD^O0D9D!e$?5zZjecPkk~#e8=z=YP^Z+G3oD=L?TC+z|Ri{z`t{LI47Q?-`d#-!!?c&*r zE@(y_U`~v3C!PP1oQ82t!;>h|TbD2ds#L(qh`kai#_rIx9S_g!2bCVwo-;)l*h+PGZZKd=Nu#TBJi&je<7X$~3V%;?Y zItJ+7=}6=btV_6v!4em2Gw>#N$Gx~Gkg#(2aSzem>@um_1nlU$E%9(lva>FcHZ7w4 zmK#tSB7)}_G!Z8uTpq@d=Y2`r@-D^r?Yh|5%#Hi#+_E|gB9}lbDN{2{p77Bdh>#Ap zs0I3IkNX)cEB-B|?2~yiVvTY`i}mYwsnGXG7$GH9FueIc9V)eSFEcjq9Yv7p6nF~T zutlNLcJXLw@$xIh2KtPLjI0z~KHp|$ZL6oD?{(@PFg%!Lf&p7D2-Qw?D>res8|2N9rQfurvPWxuh`j`V+*{HDbR$I%y9 z_~7VQ1r`q~Yg7}j6v=gxAy53P}@Hl#Mm^+bh0k4hcY6Sh*qk#T+JB}A3I z6Jr;1-N36+4^qGvsIE(OdZSSZ{F{8kmH1l^o;xoU{x|g%-^3W^SFJ3Ds%{@F=wfyA z7CH`3Ny+Mc5$#Admcx-i_DZt?bDZgCsgS|tXmZBsYK1DGHt42-_aP~m;;K{8qVhD$ zolPtOqCPms4ij}(JVv>Z9^$V&!z@3{=3c+ax1;}V-LGFA(2*L$Lk8oP*g)N=4p(!) zNi-T@I)XR>BS`;&igar~ionD0kTPtgA*TZ`ZiMk%VDmLJ;y}f(?V)dtC@mmXjr~c^ zvaTJcjPmemipC`~wq(5-?_vtSI0xe1Egu{x>?1?RgF(^Gygq!vP-gLB3q^msp6~K4 zk)}VHqc!Yy+Y8UrXjXRO*UX9w##%kebG?N1`)2roZ}HQAeA3XuC3v@^V_ta~DqJW; z!n$*WC_3pTi!h~SBOAZzFsUi5f>4;#>R+QB>2ky_Rkjs)U1{JnoEkc9Eh{h3QgfOv zp6P@nf^eQ{Is^QLaxOdg2*LD0y$|@V^_%#IfvqxwyE?6V*JSF7viIv$IBHRc0_k?j zlibd;4F!i^``*uyVm=OxZ6v`G1nXeCs&u0Vcv?08T*gfhABSO=I~V=RvjxL|h0cLH zAE1Va4>t94E&4JR#a6nU^Yx@Sr{YQlvN^4&F1;a4+*L@oRaZ1$G^s-s`fv4qy5I2d z$C92ayNvEGAI6Uye)a|vvgy*y?QI#sp#|+!tmREYFXaBP(|d&vGkax$GI2?kbZo-= zLzHvj1jDF}Alco%rav*|zM11x^(U+7WWmVL*aAhLk>L_A+BhFt`jy_)*Mshp74aS0$mldg;$KY=8SiYe7QFjB|X)d&<2r%cVj zw&|`v=nmMM(K(@9N~fDGYc6-9PCw*UFIS=Ku-sY)J5<;E89jbEaakvr_!ef0!g&&N zRQLq?jx%fmk44#OrDsXSq8+A|P)l8)HjA=qSZehxa1-G^@37#@J>{E(XJtH&o^)Z} zkYgU2Py6@&Vi^uP@Iehev|2AiFI z>%7Z?303wwzo95*^ezUKeHO7wzZ_{v^CnyCbj4gtWT$!l0>bZco%cC# zpLw~Lv7bQ2Cp=q`&JW016@&4Vn~ZkmN4*f$L1p9|*6HEnsRGuxWGjWd48Jwr1vqZycXa=?&H-8gIzwN$eH(FqBVHQ)T86;C z7-p>0vhgp-;Iy<=WPs%!Vp1u}Jdi=+2W;$}oDCX4*n%8D&-n)eJRT<$*#cK)a??hV zoTWKRa*d54S4iJ!**hm>?46Ucc23FJJ11m1U^~|uO`%n8d Mc|fE80GGf2*_0Yq*Z=?k literal 0 HcmV?d00001 diff --git a/img/p/1-2.jpg b/img/p/1-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b5948802ed0eb5b55d6eb8e8f7e34fcc8e2caf4 GIT binary patch literal 17621 zcmb8W1y~)+nl`#{cM0wg++Bi0aCdhnxCVEJ;O+#MU_pbsyM*8_!GgiVSLPpVdRb@9CLyaqs)6q67GfPer1Aix9gybKTqfP;a(`~eFD1ULi~9268J zBorbnEHoT4A_@vJA~F&xIu0f(8WtK7GA7|0EL>cCe0&s4A`(J85*$2yycZ=P5D*Yh zkWdIvPzZRa$f$V#zsqwM00kOk4b&G5gaiPJ0s@8t^4tT!1A+ttfW6@TyMRDKfr3MT zK?A8cz;;lu|3U*=1r7=Z3GuuHfCsjNB7-3Vn^rsimi>QR!_ax4c1Pno%6|6yb(QvF zoIre{saD@;g#L0?DIyc6wGlyG3z4bjKUD@NJuBKWv?uSvfh1I7wO1ZI;`>kCVCPSR z(bgH6Z^k?Cj)&(rw=3jI2s8;Y-18^go}^`3V#M=e9AhNtx13S%8>I#klM~JM3oUb2 zi@jZN3M>%3IJpnOD-`PirJUu z&M)X7EdD_i)b?Wx{z4Nq>%ESg)V0eDcN#yT5^bZ%$>R?Ab~sr=M{Fz^MyYpvx?;9% zm`5&9S z^Uh{}4eQ7*{x9fW6)smWs9&@1WVRuCNsP5tSg^>RvwmXEDryhQQsCNv0U;Wy*Dg(; z%hxq;b%}CVRIa~zBkUsZPkTXbeT@3q-$_RCtL3^qWsMpn@L^UDPILEcO(WY7Ppu~vVIA`LkIKRGpwmzc&4_SEC9b?U#NEoA4GgkkfY?HQ@A#)0u=A^LF^3PC1dVF7GdU^IK>U4p`GLaO z1b7BlF$sj~x4D!wLjrBzEQGis-kb) zrbNq=CbyC3585AEDvdo>$;Hd2jxRr6>@@ux-nLIRFy|N#ySN@WCtbkTok)&4s*Vg< zFE!Op{18rHieIWSmuSnLZX&t7sEyF%`%k4%+oO&o^IX(?^f9jayKO6QCCf+0L9M>r zD#uvM39DvrzR+%ge$%&#H1ryW3n^JD(k^LXTB56``C#J2zV%Oi0K%kSBQcs=dzW7P z^lM`S+{*$~SxG8e7TaU*T6@j7cB>d1MF+}%Tph0MbNH?8w6JrH?%hw*E3eXsO~2UA z^B-()tk_DMe=9yV$x^}m<7Bz>z{#_MfnzFcnC2;2D!ky1Ysz7lP$_wd2Ny?ee(ch- zrBHA43*Dk>Zu-sA!;no^_PFX&1rWB`e}r8g4}^VtN8#$Y+R&3MV@SsQ3_y|?};dsYareuAOUpNpgA*NBX=}nR4G@QuOS=FFrsrqAV&t~8c9^t36!e*}- zoZR>LAud~RWLss`_!U*rb`)##n+;9huG6e1CZQ!c>HYv+CFCnvI-}wVT!X)R&bPZt0n(?1Pl0vup-b8pa96RyU?ZzB=F1LH@Rm_aZ zW3-`}1?USZfAx9e3%YIcVZ#cC1Uy>`z=nB z0?vrQfm0-KFyPebw^|S|a8L*~NE8ev7I{=ObRuSCMpgk#Vs;WiQgS=sR0sb{ zeFltU)=N*j!gu7+iUgBF_vB(FkfH_}iZD@%y@l=>Fbrf8!penL4yJ+bHNYw-#RxR4 zj#Nbn?_#19ju2ZZHs9x{xOP4)wji7)(vV|4+QxO&Z4Hil6dH2>Y(}}<5`KW=*vM3G zs%r1Z&^JdIMaz$)?#){LU}11G)v5I^k1=nM{JS@Ewf}od?gtBno1y%(MDb1PfLciu zgX3U=?-XfYZfi_T>Z+ep7Q3O<307Scu z4gHo4VX2-zcJ^@vq;Lg9IzlnpM>F+tcE5>bMeS}k|H~`(Iv)zn+ewbL;ip71a=TJ! zK;W}!t2dD$#W%AUUxKmKh`cLuwT8>#u3`1vjOAb8;gR=5sqHRCnK2zqKl|1XRG!fW%UTVn}6R+d?X zSrOWwx?`Qeg@dx7b@lW@Y^}8|MLK;Wt zj6i!Lgx;LXQE)g7QG3E+Cm@*>uPJAH6pG%QlOn+XrV>#BtGQwEo8>#GsEAAZx^UauIaeU$15;3Au_AAo)bPJkn=Z!PBjW-dG3@5}~r?pNx zE2GX0pPH_IpbDDwpsF!}#-?U|e-eAS$GXhZJ!iv>Zw{FEb+LwLGG z8n>8!w{z6b4V`s{Twf=TUgCSANT1MC7g`J)hv>?8;G^iWb5o3{T1^h8`YfFe?23O- zZu*fcB22T!U3${XtkVYC%>1JLOn_+{(b81KKBdJ1X{g4q#$dnso`9@WA?I_h$-nU} zhAF+v)$=ePE|HqT`;6oAB2(EgrNvAdO|d7mNHC8$X{oRT4lQi11TBM8={2po!jp@r z^onIg4TvQpmB6TSv0(F)sTrP#(7K%wvqDKx0d?mhhj`kE(A!rO%|MNMT+|=wcqo2) zu=hZ}DS?rS7uD@13C#;gMkld<^+YMq6Bhpt zk=&8M-7`8}eo=YoI$^^=yh7 zd}L9$&T5r)R#w~_(iR^%MRxl}6N( ze~C3)?OqN5^}jIc*c7z;NC&=ldzb(A=LGU;V}&S z%NbRIVXHe;v8Z2~%3hl2flbg~JJld4)Ol;g)(T}L;t_sO@^6zo;*kd0MWb|aibJpe zvx@FZdMD?~=`*x$_f?zz4O~#y|ENIcB75hqoLv5y3Kz8M3Y-Vfpa4KX!JxoF|DFW^ zS6V>9P?(TW(U=7U6)=d18Nm%86w&2#UuOWoB^Z8?r)7*`l-J|sit+Dbu*gWG86i8- z@mTv_?cE&VQqxtXS6Q~@-nI@dx)LQ@dhuirMT2M6Znd?Vyct|EOVCUT%0oJ*ju_4X z+OT)JO8wt&U6;%Gs`7cOxen)-*8w0AlD?fpX@-Pq`WuEqqa0ieMAE$UPU9s)dvE3MmzPX=kjsi-#CyumYih zIJE}oj=6yk3)gMu^$Ea7XuL6_zT&1tKQe)=p09ROk5;b~?U{ce=^0V71-JLfzrf9T z0WMh1*wqaOPs>={)n)m5z(LazRd?YGQvJJlJ_CTsz>Wd{Kmed$r-gqlrvZ}#90COu zgPBFa9$7#U4V{>gNsx$y)xeLGOejvirt|bQFF;@N;u%0k;W?myDy{3l_9i1rbeB}Y zePBk{!TC)_rs(cl1rLcC-A^w!LR3_cUq~6JDu@z3Znc_JM~Kr)(#6fti*pAJ?8-Oc z9lW8w`@2S(DMHV|9WWymMKo_U!Il!+r|GgwVMG@MK5v0{jXx-UBHToy@I8UY-%mg_ z|7*D`h9!R9=(rMEuB%(L+cV%GKqCy^n+-2u-zEB-AG z;!_lqk66IBe8JVpoI>N=fiaXfjSmQ>WK2m}FG320a<`bG+0nK_SB!Ip!q^te8L5#C z=;G5)qOqc9qXW8q*dyLGOX{dgkAENy7SGQg1>MR;`AEU=yejZ5l7Zt0I_x4uulC@NgAr| zg*iF@mXk(J?GwsPPxTA{{DKS^l8-}K*i{PZW48oa_~Kvx!1v(^EmW8A;=(Xr7VWCS zCz4@@B03b&-TQbXy1VEtg}H!yo3b4PBL~EYOk(D-+S;+xZnN?t4cgqFD(M@N70uOh z!{E~qam|iMObb|m-n3;sqU>vtATvAO?E92q{glQhlwh`DSR*P`KI= zmKHk(H08n@hIF*_~tA{ zXL{B$$mJdH{*F*_;~#eEM51c2_Rg#cK)xyX?avwMQ9RJ&S4i=`(ce(lNw^6`gF?*B z6n#E#;O6NmJp2HqWffyco{yq^23S6d?!_Uo1^~@_Yb4vLn-`X;;R5&Y(J68&I)bX_ zBk?Y>86EG|k;MYd49X0#5@F{v;E32lLsMeDXRHbhb>EodymrIDN-4Z9|7;zO^Hq_d zY^Qgtmb*=+Ik&%s1^EeL(kJirMZ}gUl?UY7&==phkR4$hZVQbOz1V&eU#(V^_-|R= zc4gX)7c;WMcpyA({{&F2F?&`)3Jro%$jr_BX*a*4|6PL|EPl-Nf^aod3eYC<#(q?)ej2y`4W=R z^sqSB*W%oKwLkH8uEtv()0f|!jeW4b@0Ht#o^bWr%zg%})Qmp^P8J?MWh)KPEtR&o znK-`y8}S3{Bj&DJmNG1Ow{-ps!XQNTuo6mmoO8$q4w||G;}BMg_DRJjv5C_*_1BC+ z=dUhLL!0%tw_-ZN26RhM!?F;#wyv7%)wIz`$rW*Qp#9$(-i-lMk6pr zkmogow&_q<14JkZ29-Ak z9HxoJ^iz9cO0xm9WW+Ot%W3}Fn#{OfKJQi8%DKe#+U&nmyCf-Q2hKO3`UtKk&A0-? zh6hc+Y2%2%?%N7l-(}cM$6AjLWpCBXXFsTPh#_5TiJ#L?E?(}S?D2oRFb^%-(DP{l z=5bSw)~Wm{?K~pqaCPwy(8-!+>g_j#pUXyO*x$z;|gt^`;g$ z|0^x}LHR#=6BHqzSITOt^a{|zk?EI9@i?SB6xX;2tzc$w+E=^iS6NH2HsIM5={U8B z+c9i$If!h}eqNF~4$n<|8}p$I7rJO6S!%SfQOLZ2YzE1r8$*)(Sj&DqQt3A^Y#VX! zl$5iMm{n-46L7K#*k379p=?4yf`OA3>|YFqVVv_V>W$ys7OAcwwrIidV-UIXGB>|; zqRqhmpJ5KcrkEFQ@=eZwqEVjp5Hs}VduG*HN=Bo%Q4iwlL5i|IeO|*(j>TK@-SK3e z0>2iUBuST^0Xub`_rwh|h4dCmB8lubqYJDuX=|VFlQ5S@6DHjXKRUyjsG^1ZU}8|t z)17U6a~5t~yI2Vo-(jexuv$dHJAiV(4(HXeBm=0@@DEP55Tw$Z*jh7@&_-A@6AtW`T2VrPOZzl*n$eiZsF*e|s2@ ziN2hG+1VHIDb=p#Hd&iq2Le5aY{I168&-J~zLo~j=uE{wd*nT_;7nnIe4Ilr9VH$= z@{>VhL8_aK1`HCpMAKBON&uY7=y1j4RO3lXCA;94Seh~wVzH^%ASpJNhDSPD8Z6}u z3@qYpN!Ej@)LIAIJ@jx5SqNMW=B>e#koa!8-#r%k@ibHDDG(INS{?v6AUJ#m$iY|s zov)#?xf3BkcWAx3!;V;na=NlDPVPKn5$~WaZmjJ8blC%P0tNQI?uzzv)5G_4Z|{~b zmK?1o{_cK=F~7$SPJDvjUbo|B3e)+WEqmv`Q^0R>`>z4)e^&az@`nz1E_?b@!M=M^ z%;YXHi!s>{YW87Ag+?np19}Xbm+IFdX+QBOgse!uGDbuEQlwlRE00s8k2u!*)p3G$ z^mW1?G^$2H@C`3}`BET=w($~94iy)?r)no(o1JoJ^V@A+^Pg{Cv9N6VdElkuq(A+n zwh+owDXmBDRnUSV@+}pV@31Z!tAQ^jnUthWm_rUou$vG6sn~=0T?V85?$xr7rjTVl z?R)(D*eQ=Zb6o>-Z%=TK!*?llCFXFHI5ZLD2W%m|dqa>7K;Z>RMul*b7&`x?Ef$(2H zXn%2nR-Kvzl5V4~=MHw#ci`j`J@e33Z8i2$`}!3HIA@SY_7jPiy=n?&Ab&|8vwko?8aZr=JmdohN<9_x zzT03hteEWYDP1>r6ilVN5fsDsFdJ+Ehx6{QDfx~Qj{_q^91(Hz=b2;K#|d3eH7EDKlI3?714iL@&jR}BcZV8J{kvyHLy5n3)okY9l@L=D4xvKT zp}2=$x}1LeuVWkyEK$din_5PkKNenZY+i5X7RK0sl>gVwjL|4LPQ1EBV0ro5^8J7* zs7Lpgcm3D79wZdVOL<-M2LYfEGbtbo+UM4s63H9*#Z8`dGOi2!Yqg)B7`WPxuT~6j zO?ZdWT+%$J5aXP1kGT=0&S>4m{lr5lX+_AId7b0qf%<4J_$USvU)`T!mR9bcvT!wt zMWx~VNm)rzQE?p&b5Mzce_D9OP1dkhqzy}7Jp-^3AA@6WLrG+bz zSqLT(DdVyX)1~6m$&ZL2DSCMczVL(B5|@Lo$Npt8)dIkIuz>8)0UCj2fJ8lZYA?fk z>-|=#?bnoX=KF-ZnLFh>Wm+)gDF3o0Tv4FUJ5r6uknNtM6VlakTehMq?%CRm78T2aJDa;7aO`XRA2zr ziVj#A?2X!a+ZNbctun@9qiiAC;HQ{3rT9g9O!_8_1ZwtDV9xdfvP<5bZp5AkT}a-7 z2Sfc{dr00LL4@;Oqi%%#%gJD`eeE&@k`_BNUT+0tD~BAEL$ayI?bw>Kae{L3Vt`w@$Sc?FIn=}*Ob*H%?2fiomt8tFkYp5_l z2FZT$qeGm)N;*jiLSRSj;Ywo+r{|zuhpb>6WkE%wvlb`Lm&Av05gOssK$qtIBrO>I zp@(z8_h{h`M%P~J<9Mfu7HBsZ9%ND@L^LvS9}4w z(el-eizR)6tN=VB7$Ptb{U_AwJ?o;424K9rN(YL?jbRr{9#;4<6>_ViUU0I^8Y`r< z`dYPs6C=QAfGZO|fnk9nM>1Keq-bqarKLX<$2x+VN`#xzm;;9b?o!-1v8YdCu&Vr8 zx@cbxO^Y&*{F)3(hF^*0rM~5*iSb{GSFFEMlok~E38H3)F9G{{RvC4Xol9+7l|@u# zq49)Ll7$V1W8}C>VvRG;%(2rIYTuS}{AZoG7=S$Lj26TzD&<+SlY{WBqm~l&ZBc`x zObHp)!7piDwlw;{xNDY&XJtxAa35v$%ds9?$0^m!BtbCA^;!ef4y!0R9H{S4x5fCo zC|B>Vl)K8(7?s$;+*IUM+NU1mL^xzx$Jg&qQj>>?FFNs6CGZqf$e?_^&-go}M>zK|xT$XNx!6HS;3G2ke}+E@F!T6l(A~7G@u7z& zR5$}=*h|a(jp7$&c%WI=X=p`iT`c8^1bnNJ2P2jro!6r$u-2m3NsqM7B=9EU3oa&j3lj1kCAY@S{g)ybPw( zDzRUj`7M}mPGeC-z{J+?7e$B{!M_6bD9*%Pwess8?0kD#DSLK&m=8pYfjgD@j7lRw z;S=5l|}yi{FE0ve4EKwSMQ3Gx^L zA^AM|&i(hDp<+0hY58y@ib=P?pA%;dDG)J6#p%tJ>#AR5UJSB+gw6WzDY#EJ+a6K(kVCBDTBp@*SC&XX+w54@zj1Lbm}7wEu;{0uJo&Abh< zI8w?tPOy_?Mr&JplYdrHX(#e1%^0Qc=Vq7-sx;t@yN?OENJk)gzt>h|J}$^dsJg7lK5mo+OZIO*ae(}W> z-6{mAnO3J5D>~ieG)I|V)Q^FU^D3eak#UMotZR9gs}{>I!VQ$efv3a%+Gv6jW(~mP zUQv~h7QacSmorXOQBba_Yyf)3vor=qR;hYa$H;C{F8EUAK$O@9sO>_Fb$s0i{cC~Z z+3RpSH#4?$D!V*$)FwH6WE&1a1!M}fPb=+ZW*=KT<^C3|+Cr+B1e~H#k_P#BAZ?r! zIqsu!_fOq1ynhCiUbbIM-BcJx<}Cw7XKDljx4d+7(Vj=^On!H&okh@kx1V$-3Pb>4>~sF zF&ns)__|&9C4m6I{VD&a0s`_5d)Hz7Ls7a%#~%a`u!L!g5JetguzdeO1(%x^ZwbI_ zIIjK^6~GAvDj1DcDpB3>2U&p9{ZPKvJjn9Kc>I|fR(jBQ2`d92f{$A-^L%Q z9`x{nfdBv^L_Pl_6*0*a`yB21-C)}P5PQ9aA9h8y zRU81f2>1O18N8Agh1i`49PsB5aurJ5q(CO=m;Ol>6x5;G5*o3+Y3~n;0U*}*XL7)G zf54+N>YwPaHmuV!z(4lWe^Y@kj+7_>P!Qn11^~Yh{JqN_1O=HXmsr4nNKj#tF;0Hn z-mj+fUtfrkA8KQFxT1}KCup9G5UMd&S0daWJfTx|0s;b5R6-=6#6<_v>B8ZRNoU`Q zP#VTaL-8bLHm_LsmJhES+mmakVE7AnStHuj+sqeiFF6`c#`Wca|I=b=7W5o zN5ZC~pIn3&;oj?z#$h zvs8qoLz~7YNPW8P&a{YO);!3f(oo>;ym7x2IJXn*;@0RHWF1sn{b2eqM{OmbR1cW0 z1_OG0A^1ku-ZKCeDA%pPNm4KIQrPOaia>v87sOAqnF6m^2~n^$6C)60u+yg6hfTeNe2)c`4=I5I z@ge?P=|9S#!{&nR+n5aes7F&F1$z=x6WEwca|Avm$#z6l6j!lk(@6i?#*JN9MD9wM z&>BWQxq>C-?znjpN#5EtbLW{4^MPK~8*#5oYd9f0q!}2XWJdc8Gwl8}JSdPZy9|o9 zKnb#Mv;ab2T2R049e@V?uX_hj4B~Q;iJ5@ki)tqAJBd#H)*0o`{`H9%`DuX_Kzs^| zC@45U$pryLJmnX=FEHQ~JttfUMwDaBE&m1D2rJW{f|Uqwn~5EZhY}ljXpk`X80Q%0 z8h;ylEXGE6^fRi(gQU(?;vAEY8v=)!HdaDnLb?60VB43gLzYPN`Bo>I~SMRnEW1L6kE4MB-U5_g}Bg3QMbd0dVqi}hQ z5=$0!oGYqIZP4cs=!<*bMq!)UOh|&-p0b2@-f?Btdo18lVA8Ju6?zl!YVr4R2Aimg+?~$C4Pr*xM4rL+vw3qbkGX zj6TbjVjypFNvcm$9pO4QJHb{0*?;2iB^(7^A(dN0yuh$i?5n25$_(+Ose)`ti8qR0aM-J(!P*wCx%65t3BjH~!~ImV){{BD zT+u9|`yq*{cyRG&9r;&mqa`IATnM5~ZqQCpA6f{R9Q3=x2r38guTabQ(0cBUk2p?rzY6yT%UVkK2aI4|D zBsQ1!LKx^ zONq~h@f<`{c&vTqh{zlqM0s^Bur*t&tLFwO3|d8!a}0|Sa*JfR-9%KnxFivuIj>0B zX(&2XVVauSM06y_b0JI!TAwB889?}9cs(xxXlIx3A>z1L*e$Qd>W&FSdMosR3|2(_+De+PITf|)oKhiJ$ z)JNI+?MLxTqyrzcJHJQ08L4BnU;LjQC4XH$14tGrL*8Qw{cq}$?(;)&ja89C=DdtG>xg1W@Iq~L0r zXHuuEh6i}HwnqCV7oT_Z)Vzp&SW}rbt=hPDteKUk?6Yon&s%p3O)JDiV589sd)+EC z*2X!k=Bu`ky;_`1F~JihA;$cYXp`Oj&G7U)!nxVR#6vPHt+S}9jc59&cgC|xKBEIb zEN}E-7aT|iNps@_hSk8Qi?-ol6(j<=M#y!@Ee>1<2!nR1DjJXRIZZ!$HO^D>BK_)Z z3CEJQ>~sR{6T8}DmSWm#QNcPLLGQx^czr0o1Et+!f+clI%&`w^W|GG2tfVoKAXDXzS#1&v)eEinx& z970E2zagOqkxZX>`3BMsn7A8s5h;GiZ74Y)@%@mM6PuB8ClC?JS6FTTye4TsB{J1%}$!WkjT89q=YQ)dxN zaLyg|CyItP^hcAd1&dG_?%^Tmy!&CKTu!W9hWo=W1sOBHUaikLW+JAu{nqHbb^8JA zD&zKwaOORwk$@&5IkPz(qyK0hTV(``g*Xj;-7JFwq#%`(zw!5!%92q-${7OwJ*zf# z9LT(4EgBalJj6k@@t+w!JVS2=_ObP<7^UfH(%`>CSW0t}1&F45rXNBOhZ`=8=X*xyPmjAhyuwkU&#uCqnDL;|O11|+Y6&A&nSE%+JZayZWRKh5xg7Q1Brofjt%p9$e~iD? zbzC6T7A=2+P)}9x)f_~=9;D!@(t__hCsMTc&c$8Rqx4g>t-;y&-sUsFj6=7`O+4E9 z1F!phw2#(ZHr!pJqrK0}%G=ROR~L%Su==0rgi*UF>-^?AZjMxs0;03@=Svi7J5GG0 zn{J}JHWD7Xksr78j@0sK@Z~Q^YxP>canN4if98OonMKMCJMr9(={`@BP06$Tsj3Si3Re4*A3qPwaXWm~o%$ z9*f4fH}rORY|tYvm#Fld#%wvZ@!X=bct++UtCa2{Z8>jj=o60_hOr~ImM|}V;w8(q zOM4?FTxHkIM}Hi#>{2)yseNDD&HYGPkqylcNy>E*lP{*qa~*+1s$RIsB$;n+ciX@J zE#nc~-7E9L=0RuD-2Ptd*QRDuN=1S86Ux_);WL!nH)v@@;_e5c?xJjB0n=`FKd6`j z-q#Or*O}_xF5eP3E*N<~j8<$fM2Dh0P0mIV=Pi5&+RZc7#j&3Ooacr-+FYS4;{^`v z?=D2V8EYL!Tu*vq^Fmh`x;)7*z&1_;#!S?gvTmnuekiQ(UuCz4A7Tt%Wz|KL?y+%; zm$+yY5}KR@BjZQ9EBvHcYh^hZqwbsiTo--`;$|Md;GyRaW5LeBtuq+? zbw}C3HOc)~;wo)lInDS@))Gs*oe$I)KY3Kat&&dN>B^XzE`?;WbiIC48ADfeEw-&C z$PJcmt-!*>hOKaX|L0G6ZnLD}Eeyz@DfS&qY*I*b;w+$ zzTmNP;d=UUbI*t{vkt{|DwPl5qqxRM!odO7wplU>w_Ws9mSpE5*cR8t&8YO99EmD{ zYct%B$wRX}t}Vk+2jtKUe%fQ)r(O1mCgbX7-5ItP<9x*}(sX)Kx;(*TzmUUjKSSCT zDFIYD;Vo8JMP1QZhg{H|h^ON=`n{aJXd1#dFIP{7^n~-T(W|9cZX;*x*LM;|rg$Xd z1`8f6Vg#|y1`03>r|FC_pOAg?WqqH#)4u0c?Hpomq!HY<+`Lng>1NlQRx&EW(s#s| zprHubH|89R-VcFR8zujo8azLDkEZIW4^?-)5u7FeEe_tY+L7RAZSSIooFBQ-a;@4O z4JAQICF^O7kjlJm$&9m?sg%~>RzmIQCPoan_tWkC>Brrg#~jRyN)BH*_aE$hYoOGW zm~%;^YAxk}i{S-ODx|9I_l8(bM>a-em%Cs?bf3rS}QS_}wdj1*&&29K-%sW3r zN~t;fB}7M$sfQCH69I({W#Cd@`u+Upm=H!=sxci7x&!moFo8|6LTANoS(W*Hrb88+ zwS`kApMeNIp2Nf2cMi8_3`vFrk=z>kmrfoc@yHdr;Ro#eDlSw)B?o*_-FBi#C09cF zu3Fx|u6%u)My#Dce+iR8fcPQ=9B_+7neTs~=FKc9+xVH89kz|TeRQ5xE7I_EHY%pk zz0vH`42MkmT~#>3C{0w>y|umCkrw}quwwO{_lJZ^HCyt_R?}9StH3w3E~e8U&89!m zbg_57O@qpy>d+o|MGkjt)XPaVcsBgRnsr>3LCn0Uy=dL7>;G&Jx~jh2M;>NO5x5XQ z;>h$KwqOs}qq&*$4&8t(IvkFXI#{XU0bZ@lYLU+A2Z|Bb7MRV??0m_*zB9eA=MB8S zm_3`bUDdp!+sH?6BFu0{>2Eb|pB#QjTqU0^4eywe?oy*}Dn;d4!NY)!UNCfWyFi&q z&!>zP)3VmHfme-ycPXV@SZrh1hf>uQZ6hNfH$z}F@bE%-e55Grh^$}dsO;Q?>YF>r zoE^rbYr#!C#FY!2I{TUI12)EwSX;p>PIG0lQ%!Dmu^>E#41vcLm_}QG2XQzeD9+h3 z4WoV5@pzy-uCfMNMFVJCO=-_qA3S%)J1!z}O7Fy+uYaL$q6%CXaKhIi7rM#1S*W07rN%PsHx5o?hVzF__ zYx!!0N&NE*udPf?m ztrN@{j}BL+7$jW4gIj@Jmdy;jDoR4TYH|&fMVp++Lqt5&Luf+c>I&Wrf^BCmL5~M zs@3D;^=Lyld9121<(c0?x4`2%G|i6n#WMXW1>x7@OOx?gm<&6E#S!iHngwbeLbDLU z&~#m}g8n@A)mwF89inT+wfZW)Q`WR^t>s5F1Tbq^*lR~OCgkKitib>CDBw2Hn9RMu n?l{>|eFh9Y`GT;`T5oc0bw}w5(~#dkuDwi_E@yl=3woi<<7z^%@00b z6fO_UPX(1{yLY9@h1t;XyAP$D{`3&Tp2A&Y44j-xbhdNLKEeNj7F>AFJLf=Sf*@bxC)$bSX^`h8Q2bO$Uon_t5E3pj5lbXZ}#e;vW1`6)J zCB&9%H$f>bBm`X62{&A-J7qSSsT!--X7~F@S*~9$aRn{S{ATDy?~u+ypqdf-bHIm1 z>HA$xC(f;!?T&ffZfJ%UQm^`IWg1=2a$ToUU2)L)P7u z1j7339qRk4XAMC{$ZSFmL*j0D#Qj+AP-lQ^ZewNXjlFjXu{D{?LrZ?4(I)Z=%)5Ef zUCT_K_k#Q21GhU?jc4MjsGKnyKWUb$lOP>3(B#ILVvJAvE~eS@0!R$&9{IZ`>K*bO zl-2!pHbr`>7hHB71fx8Ol~T_t&r?l8-XbK<{w8jc!qwVu5S+r@NdP?9&P zbfY*&9qwJfC_j-kLpFDBb$$MPVENWLqC*Oc@M!u|{!r%5byWp}FS{J%Tuv_D6gDQ> zpL)Bh@A~|V( zBMR7h6wA%`DtX6V=rT2eOZu1ukG9&aF&wSZ*0ZQuN#cxpf3~_s7fQu=kBd&C=}DHY z!Kd)^Giol8HM|Y{)Ypp)!Vk&E|98i&_a*`-Dke)L(OExL$f;2blA$tVutrBb={ld@D^a zDS9bmcYJqEGPO|xwm;ARNX%HIk7k2X1~xi0ehm;9&zs!bUP@Z35`KL9#7xrpOu->8 zDele<97d(7`yFxRegs#3yXN*rcwoCUWkVT#xue}uH{8aGo9%YO7L{chBB1SDk@MB! z<`-OQt&98?lYrnz1tr>hku%m3UR9>HJRfHBQ})svkDIIbv9e!Xhm)%8UGc$;O}e7h zZ`v5N3sPJ>(N%q0ZsCFK{>G&pCZvoTX~&$YNUB1 zeJVRGhgrU={tq^RH+&rmNzBd3-MP{`MYeIcX)4_@AFixe`(4cQVXugLqrXy zOVG$18^qiS3Y|Rrbl?D zy*cxh+aNSz)SX`Dj%^B?ZmCSGHe=dDWuA;B6`861?(}DmqrT z;eh!p7W{1bu>U$+$hLkka^i9aQrXg{WbEYWeKbkx_6sG$ZdVmQm#-MP-`3c|To(HS zx6ia7u4}XwLnJ@Xpghsb8W@D0SB0y;p0|2mx5?-ds&^N^m{|UCC*^R2smvpE!uZm) zc#g#uM0c3D0j6b^z>Yab#u^=&&TtS(c1!WG8%f=zv4s(0qj-qSkU@O?S@IAM!zXY| zE+THUY8vetGefN%68Y&gA^|&@q7vSMY7mkvixu3y$EoCD?1^9TzdGs9Mw38zcyde> zwF-;v<_KprEeA6`>z99tqUV5Y%bmQ13<=>tb1(ZR;*#WNnii3obXZbA-}i+Bz@gcK zU3jVsG0&FnvV&a6J&(xJh2`RJ(tGBGE+0=dPHa}<+1k904}nBHHEvk$`sIHZ%Gh=s z)LGC6vMsMh`afT;u91*75h~{ z$t>AFFv&y)lNNpC%5aE}sk=XQdfD(nV_I?ZS$T!nnw^DDdSBnn8FMbDDA44 zHhbY3K&o?{>#H@-jm;chOzJC)*mY#0{X%E-7kgba%iWtV>bd(gzPQ`enwAyMJs>lA z7ubJV)v8}3b!7~4Tz~&&Cz?Mf7kzrrtDrq_edAebZ##Qdahs zMVXoH`N(w-a<=)e$skQFMP9?7YOVS5*Wz>^b4|yU&pXbku(A?i(sXd@4HP1J$|@pE)iR)FW+$O3G8;?a!OOH4ap;=IHdkLI0Xww{8KP7 au6jRrsO26Gl*D^z%ToW&?5p6lfxiGpro=-4 literal 0 HcmV?d00001 diff --git a/img/p/1-3-large.jpg b/img/p/1-3-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..048ff8e78f45f686ab496fa2cb17e8a16c549784 GIT binary patch literal 7280 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 M0R_H^7VJ8mJPuvOrC<810YjGE88{CS5$` zrmW(u-h>ODv>@DO{n8&JT-cfI&gL(XDEmFq1&c=+CyXM;vpKTjVag=brq>h!fa$L= z2|@esVNwF7VNS(yA17-L#oNb@{v%Ez-jL||=0Ntaft5fuqh|NDft3Gwn~O*xO~0jC zH2O@`VZ!(IvdN~daPb4Y`9QS(Iw{D-@BCoC@8XlqOq=Vk#=&1H`_R(E+qWID$q^&9 zK|?dv*Y7;?-27^Yp;ZFCl>CsA9Y));#Cj@dlW=woDXy{R{$*qmlELQaf!8jp((b|c zr=QeopG|V3GG_Rvy*yW}+M{Y9nicqvl0RL@Ux;UDMypiM08zIpKT^i&YIo0zsXRev zf)4um@osfMioCK(4pKK4ZS50&KT&p|jh$hjol8AVX)S)<5zr^ zSXeUDnpsFSa`IdX_4p)KEl!R}pQ}AktcoXfL7*W^t*4_6{mmNGgSN`r7+w2Z9l~5o zoZ0pm6mNC#8^Q{CXiBzsrDq5f<iQMi`O=hJ=qRofdme{Ivf4r67{1+>utiyNHZuAB z0^VzT9rtqsbt3VX+_nSEaU3g>{G!$6TYwsBT&v{v@c4X1+>_#@aElqv^O||XX}aXD z?Q2QC8@C;*4}wZ)^{oyZN8N#YgV&3Ey8^34_{*70f=BA7sR{bQnM7${{PXcIBU4sJ zFW3?s#OFL$*a`CM{g61x%w~@iyl4l0s`*uX-Bxt~{S52i8|HUd!#0S%Au_tq7U`x) zK$kj;Oj+xla#g`ODn0nslRgNxin0V1CS_hKwNzQ>C@GtB`1fOQVuIw^)k%*-AdxlA zgm`a{h)a5nq5B_|Ov#TpO~{Ox!@PIu4l5Uo=ESv-z>}Luk~PRlvMGJS3zw8nr?~xy z%0|Pp@eM@r7MKg8p{c3XqelQvKQ~(i*WfXYVb)TnPN>d1?x8)4Jk5H!yHT+LWx#z~VEH2kRweC%32i<5NSo|Uzdy5g+b?Oc_`Dxv2PJg>K9 zhRa*Asx_B%`B|b8r=cipMhqdFU#E29d?DoB$Oah)B%3IMjoFLY&@!_o{Tp1}OQsp` z^0VIf=;;?Mn}o+9y@L}`b7_ztj1T8^OunSYu*-cjE6%AfMbizEMh(HT>kpqzeG?+o zP)?CIw(;N9cy!rB#Z@dQ@XdvLi>J5UbQ@nHqOkW5?m0h&F~y9)?_v_1krp zGc9ZXk=4WPB{wfNVJ&FDa*AND=Iv1YSB4&rcJ+m!1>e=m3B{2_KYa^hInpHG;O+&~ z5vK?YV;8iCRgxN3@0}i$I6EF=J}c0$Zzyl+x$$Y|`JuG`AStK6{|ApozP3MZ_)~UW zm23tIm<=n#>KaYIy);Am$G|aM4IV@F0nOoHrulZmE}dtJHSkW_kg-Jzn?sk_tZ>dS zwZ!JU>mmV4XbN1VOeZ$XAw2<3ZLsF%uqh|D2(HNcPEfXnthY8eT-Gi($SG1Lie5K# z@!H3(Oy*!HI!91NZZxSW+x}KDlr8@nU}SGc!$+0&HHF@w8)|-}iJ)+uQD>7N8gym~ z3?GXYK?zckSMz`<*Jy0xd`^8+Y2ot3f`yV{3D%{c=@%fYrTlNjJsA>uo`0DL-y6 znExXehZAVgs?xe58HBP@mAQ1=UBbA>SxE<)nmyw9n`7#$0Mw*xw0F=0-do$$Owl>+-t|zJ|4|B z^jUX6ywCab_&Z?fIsJ7NqNr54fp3c?{6;+{!!=#8RJ78bz-?Z7>n6EVEmKb19FYh~ z^b|d=|FG~0{NlviroU*}fZ}b*8$jK=VV^f?R*5ddwi0c}u-)9bT30@qxnDQ2ij5Op zkI7n4KS7y@@-cx~Rbr_as_K+9$K2C`B1S1Y6V2B5eu~GD)}D#0$z15}2W2tR`}T-* O@4aFY^DX@D`+ouF-rLLo literal 0 HcmV?d00001 diff --git a/img/p/1-3-medium.jpg b/img/p/1-3-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82b56de65a18fda6275b7aa22994d86094bdcd3a GIT binary patch literal 1712 zcmb7^c~lcu6o+RrGYOIeW*|{GE)bA{z^McT%4P~E#Vstd9A(kSCL&eb5cEJ$F+tW) z&1&lI)y@3qp8zqRCOwquAzm~H3$tV6<>%G z+6*R>Nz+`Uvyh>q#b7d2hrkH<2E`U&*a8NfN@x6UQ{I9IHOLe4L|_AmM8F6ED{n(f z03->4RlM^?roae>lGK2AF<4i5=Uw29pfCv|Q4Ryw;|1?HtVI3#CIaOTt+%4sk5(2QM1f+sPDf6sgib4p1;ab|PTJ|chefpN( zyd=@NIc88>4$N0iM?*Kg*DD_=mhz2mxf~vru*4UH{Mj|z zKD5k<9R0Fdk4jJbK4Elq{J0@4I4Ck`HOf7k&)#gGH)*;Dfan1bptr9zQwfq}iQrl+ zLR;T^E;>mSy}|g7U2^{H=9hcc^A24PjI?)qe}19);vXUk6TvB#I79;ZU}R*$mxRC! zB2X4vOMjKu6-=Aq9COSf=_dmhZ{EJ_;@X>Eu7b=VO_toqHMo%<9rcGUrJLF8`~jn+ zKUrgMnV+tJ7Ph-qmo6K!*k#v$v9F5mLhYvp*F3F$5<6{|am+hPm^C4DNt6{>uavZW zKW%;TLqc8C@tI9Cetj0%g=zVkulTpugxnCcD2Az{!wxfIT^ss}0L5jhh6WptN);6` zt)6>ECx=MvGVO0oe{P>;hKROw%APH0_NhIT<1b1W4=Uw|4?C(egfH8o!dlc-n=a?i>@y)T$c|~$quZ}ezINsGbmDo6`gc@VFpX2s(ZLSk%N?Hy0QB`_t4Fjl+ zoj2^%d?kDHP!GiWXKA%=Z)#l5T~>Pgq2tlsv0;k{C6vGUnNEo0ue9uIC2PAh-%thVKrQ91JKgdle8>4T3Hs zRCWF@q)NgB3)klrv%N%f0aXgd`PYo8S0?q74PVObFS&cO!W+eRx6-ClC&u%x$$PGD z11GU?)t?O5*M0!_EH+Qy*((XRi20WuB*?*ME)Tf8WSaQcR(ND7u&joimo6Ew3Hi}m zJ5rd=1U@xv5}4=S6Tc$*HA^JF-8qtQwb}G(RL%FYB%cx8tsS07SfGEzy$7@%hSpfA zZ7Tc8j5_n3dCPCC16z{(Of>uAG?s35sOyN2bb>klDDQ;j$L@ClC4-OMFI$h=lyZNu zTAIk(%V!27#%Ym3*K7mNkhHq7N;u=8u>%=%e9hY(s9B$PzQ5h9Z0KX0MR#4q^4qR{ zp~C}ioIB!KqN=9f)ALPT@Z=|9XvYh+gWT295c!D3%zecY#T41usVq?}*!Z0*I{GP5 G`R6|kn|Xr( literal 0 HcmV?d00001 diff --git a/img/p/1-3-small.jpg b/img/p/1-3-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..79e2636f601f394e4d909b78096781277764f9a9 GIT binary patch literal 1072 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 Hd-Z<+7g!fH literal 0 HcmV?d00001 diff --git a/img/p/1-3.jpg b/img/p/1-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f511332e89a7d59a57d317b33ba2ca58d09d8d8e GIT binary patch literal 17009 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 literal 0 HcmV?d00001 diff --git a/img/p/1-37-large.jpg b/img/p/1-37-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bb9f9b5b6e4abab6939382345672ce01b4c80b2 GIT binary patch literal 8818 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 a*g9J5ACeqW3Ww|&oCKT}xyR_wtN#bA-U(y? literal 0 HcmV?d00001 diff --git a/img/p/1-37-medium.jpg b/img/p/1-37-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..77c82cc2dd04bbfdc306b0d82cce931e9cb7e3af GIT binary patch literal 1751 zcmb7EdpJ~S9RALki_460X3Q{AxvWYq8Ok(@Tw|%#kV~Q(w@PI*JSCfQE!B3R!IIpH zP@y#$_k=|gsk-}9X3eBb-~zW4Y3-tUNBi24CyYh_~v zAP4{meSoM3SO5$Riw7E5bl@a$I4l+?Eg^xIBuW#B1Ze_6hD1SRNMsU$fXE|cIVz1t zBg!h!<*9TEl|~hB0%6b`EKUlClcLHHWT^i;L^Xgc3D|&*fz$v@hA?DE^Z+P{sbU~8 z-^GxGaCi(>0$r3x=f7JJ10Yz`4Tu;Bzz7CGKX01WdEdR=T3nxXFo{&rK*jRhtOP;b ze!FV}Z9J_y>@;lQ1C^g$djk(O#P^~ToAWc}qE4{#yUSy=W&!rMom|UXqxPIX z)k+7Cb7awT)e!(;VRT>?IpJYcH%LVSP~@lxO`gF-SxBPXARH{r(s`8DP*4|(lPO7B zhI{;^uADM6#M92c(Y`%;zU;Yb1=H{M+T4RNfvfslqfG11E&sGz*RTI}_Fc(c>z9lp-; ztRtqmk8MBe&p%`33=6M-h{)KP4k$P&V)86G zK27OKtxiAZv6Koz$@|vJ#(KJU(suc7&t9#(qozSHx8wL3FFVC?FYHow`@GxXAwJt! zdqPN98jw|R_o0Kk;4{5zLI)=Ch6VG_PQIy9t4_=_-_Vu5RVR1c=R%@zF4d~9n>j@+ zG=3P}I9-&3B<;>GQe*nPtY@TgizoZ|4QiA3d&$8=hv{7+@aSXD$-SB($=Sx5ov~w? zM|CC@H_FdmpiDZbyBTU(RbIN5oQA5s0zpj%L*k3Os5Tj>>ZzD{*mJ`fu^Atb>Sv2q zG*O**+&HW+l(|g^kR5A!rWr-3no_Qy>--6hB6Yrh zYqTWy$B#2L$6oAD@r$eX9;pi^(sFXNo#&2xpx-bmi}sin0mdUrm~k*Eh5NR{lqOf2 zwhl*Xw0p;795#2Cc@sP&u=1+wEi{VY%Gez16b@?i8T~ovX+Yw;I+~5D@M>IA+Xy`m zvL7@ClC4wAyYB1Kx$1jU_5Js)u^w;cpZa29Q}jgy6pZy}%}q#3%I!c|q6P6RJCK7v z?N3)w&KNZm2#o_{)7Xx8`KQLvS{E)q5X*r~3D-|GhkR|;p4($|YgffoPRA6gnc{+( zzc;QM_eF*^YZF34o&Rn|Kb6JkX7~m#*5vLPzr|}$A6LcczN6FqlH^3 zdzj8b6IBgj1ROQiNPk?GcF(fwYyZWHrqLm|jRCjJ zJjn4eXl^9c1PE0Rg~H(<8ZUoZ!G0L-5GQFjIeIBKg=7hI1~>!3{@eaYUgM7mx4cTH zJdvo|p0R~DLCM#EQ=2&^yvFm^i696cUMn0qYx{I%9^_&eYNWMqOHu~WdY9n^DcijL zFK$GX8_oBgjp*qpT^08>K|pN{>ZI{P{LHCabNszxOtZk|x^t|Mr$-NZwr#tfTm==3 z4_B{$S3Hu)gkG?)45sH(wTiKRDq#lS;JANLQM@J_^|D z9CDXUxD$?1!4j!6iW_EXS2!O~NyNt<4Vs7~#i+sb^#x3Y!T39x*&7|Ke?{yOGb||S jFF6#_5LMmYK*mMpD`EX3H%-Ma_rBAMv-f^qE9&|Sf3%8s literal 0 HcmV?d00001 diff --git a/img/p/1-37-small.jpg b/img/p/1-37-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1db05633685c0d42c54d318748f224228eaa8e8f GIT binary patch literal 1091 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox>u_zWl+JQH-`E=UEctEjbf0hBJn2PnxUu$~_6Hm}Y%eU{$*fQ3?P;3u$5&%cx>R!%&_Yo` zbcZVlg6&~uWVB}#_|E`TBQ6N?ISLREQ~;}D0;y8o2~?y5ayb(-8w)#3A&|!)$igb5 zplIk=vPoD(X_A0bU}E9qgHV64*)y$iQ*BIbGn>$O?$DP>m7WtUc3g4TvBr$~w71OU zJF881GS$zPT<)!(xn?t~v7lh6!=vlEr>FCWrp}Yx%~~6G?8cd2k=4G6$xD{*F$($R zo7kr`l{=y|k4z_U`6=cspejMl}MFC*!F|shS!hFQQD5%JwVCXn8 zP$04K!$(+r*ejlW`79zuHob!7gg!sJ!~xZ$G+Bj^yB8TUJ}_6#K6G3?WUsxFvX(28 z^7d_9P6cKk4dyC0GVfvfSHRG$b}RNs)2kP6ZFZh2?6NO+T%1@TFgGP4{ra3~{c$Q? zcR%dg53~oIkidygU~|5X_9?Z`K=+9O;|1?ly=3CPG}jXOpGK?blQP}~U| zQ8tl{2da}70Hy;bVAg|2G@~GcBG9iOuNK06DsVEv(>x$+5qGEY-4CUXZe?j_7P1GJ za7c>&`(R@9y!ies34xTXrHT@hnH*fS?)tO6zb=p|?=kIyyTjhsn@{?>YA~`kGToHV zeNgkmB5bcUr^ckPvV;}UixT~#g=!1$Bt$NZ+Qq1q`RTQEn8B(o_JQ-_xKq|Sy834t UY!qAA?m6>UpGHpne*6D70lEz^S^xk5 literal 0 HcmV?d00001 diff --git a/img/p/1-37-thickbox.jpg b/img/p/1-37-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e378c3b5bd49f2e7dee0595b1f3580488723604f GIT binary patch literal 10475 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 literal 0 HcmV?d00001 diff --git a/img/p/1-37.jpg b/img/p/1-37.jpg new file mode 100644 index 0000000000000000000000000000000000000000..262687ad67c7df3aba9f14ae569c9ca5c42c3211 GIT binary patch literal 7783 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 KkAR8Cx&H!y7-;eU literal 0 HcmV?d00001 diff --git a/img/p/1-38-home.jpg b/img/p/1-38-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..483ad0b83113539229b47794751effd438b9c00a GIT binary patch literal 3619 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 KzqjR_bnrhn+Dsh) literal 0 HcmV?d00001 diff --git a/img/p/1-38-small.jpg b/img/p/1-38-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcb9363326d9122e835462f8b5ce24eb0fc60403 GIT binary patch literal 1269 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 OAS3ngLCf@U?tcKB5kk-a literal 0 HcmV?d00001 diff --git a/img/p/1-38.jpg b/img/p/1-38.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ae301a6c501ec936e3e1a87273b72dd882f3248 GIT binary patch literal 9207 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 PP<9=l?j-zQ=hFWJ{D%bA literal 0 HcmV?d00001 diff --git a/img/p/1-39-home.jpg b/img/p/1-39-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d01d08f4842b806ccc158ce7e86114253e6e219c GIT binary patch literal 3349 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 literal 0 HcmV?d00001 diff --git a/img/p/1-39-large.jpg b/img/p/1-39-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..097af0de721d941b4377b959ecdc7c79c964d0fe GIT binary patch literal 9503 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 literal 0 HcmV?d00001 diff --git a/img/p/1-39-medium.jpg b/img/p/1-39-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f9855ef8cec98a39513da32038a863f36ad8b92c GIT binary patch literal 1999 zcmb7Ec~ld567J5ynS{>4A;=K|4hjr3atxw`B*-Y2Tp|MqqH^dHH3$K5Q3Hq^BN$~+ zgh7rtJBSM54kB_YgM@pU0aySUg_0k{Fv!6wVX+ttRz*=!K?$dV!>OvMs^SSG2u~mqR8=7j zh)AZWtE=PGG_^D+S|o}(MIHo1BX=-ZWh_>if>*^;{%@1D14Jdj3-CgNh5(8PqKTla z6WEG?M4>@B-c3_f0G+;Hr`mo1Ipe2I5gse&=68*oq?9!=G#!f!@H}Ovs12ykwaxWRjh&N(dj@28%)NCx>@*|;5I{x{0Af%e8v9?o z7!(?-02%;_L=r^NpxIg?*p!fRKrCv#-nuCI?d=nl*fvom(M(sL^M+;r+#CFU(5;e+ znSAQQG2PRYJHD=J{@!X|X5h?fC_gkyn6k$tlyK*#W4R{`jm;ki(bBHhkm`3V za3W-P!m8sy+55*SVpyy7J#5sQ@NQsIP|3egn;Vn<{#4BK7i#xbTZZVrqb=w0I@a@| zLo&cy5cg7KF@E$|{=bqI80Ve^@=Y?z%tE8L`}COKWCWnV{oqQx)i_wI6b8&vib`_8Q+6RX(HtvxlQW`2sgh zuy4<36#tisUw58PJF-&o@3UgZ_Q?YMxs*$THa_O6qMpn6s-S?9U7PI+$)@x#ek{gt0uOj=|BEiy49 z{k%(EA5EvAOV@waxhW%N#qUWrZRFHlgg#>kQ8yYR7tbbrM1bmT05jO!lCU<2XDRr* zv&e6B>e>UpK^cI(^9Zl(vTpH&|Sn2oO3Eb_LnC<%Tk~{l|$7-GM5L24J$cR+??V|q;!bpegGe_d^!yQ4Xeuw;l#6NmvZn;ao~iU>e( zSR2)V%^l-h?{%^)WA{Bty5W_pHgv%3r%^)8ysCb&>>Z-AAYPJh4 z8GYsMbR)To+q8AIGLY=;^b|h4pgkScjcv5M_VF7deQS58V!TxMBj+*u+w@$bf2y$8 zLg&@fajh%AZeg(;g&%nO;X^$aqo#`UVD92S)QeU6Q;r3yg47K{yH*QTzL1TY`f$qGv4EEXQHGw%kSZ@pa8^GN_J z1?X7Qlp~`h7^S>-VP$0N0oQU+HDQ-pL6jj=bNGY#?xG9p?&!d#1!zIoDs|!<_cvDy z{rzmKd9+6Py@tqw-pf*#0$shtZckob28v-%Z+u6$WR|%-o6fTJ(r z##@uU3H=%hKXvwM=gHeMB~%+0Q{6hF=z s-TSgR%Rk9IVp*CqJB-Ik7yAKwJ-BO`W^%usRJXUS7jsr0aa1_4FCWD literal 0 HcmV?d00001 diff --git a/img/p/1-39-small.jpg b/img/p/1-39-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ea3d1ca8c5f9d49e3d72c780d2136e147278714 GIT binary patch literal 1208 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox89zC%!_LL9trgMsy)h4 zm213U2{ckpfPo1Z5=a)ZurjkT2`~zqGKc`pK6`f#$IwdjjNcK|^Lm$Aw_)fKIVzEH!;Q*DPz&R?b-a(Sl={?cJneS+ zUGujqh9=%pM;h4z_iCL~Z&B!fCU8KmGI-PP1%J2lY}YAPc(VA?j%?+uF5guD2W9ak z^4k`6J=eI%!zLdXW2zM6D!0MjdE?{4DTPb=vktWXGMT)@Vyew-dwHNA6a_$m35q_r z9~cA`4FeTEIBpb}`0*et{_GVy4;!+G{&T2fbuT<}|9F7+b;-_fCD(%<6)z%Lb9a>f z_WGx{FoQqfSm-yi9c8~Av(~A^PZhSk+@8JVPo=^v{*_ZxE$fY2{V#9nQqgoP`OG~v z^|4pS&r5&)GXU)Xr#%K{pc@2U)Z4P3p7$B(HaT!a1A`O}7=iJnXy_Q2SO|$NP)rL1 z%nB9WzJA)>m<@autiP?13a>==Q@g%9BYC2-={ zQR8XCL31`ncLoV{ZB#b%IrZD;-hp*znVk0=Hwu}=b8F_~bZ&{1vWd0!do#9a$v*!a z*uc}z+CR-v?xp(qUL|LzCPM~R?S_+wenq+W lv^v&02$w!H;SB%lxJtGwA<&9h{iWXN>>= literal 0 HcmV?d00001 diff --git a/img/p/1-39-thickbox.jpg b/img/p/1-39-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..782173a2626bf808fa7f1ace75f546147df4dd6d GIT binary patch literal 11099 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 ZT3?&xd6y~%UQ5mP?R7sn1gd#I|34_PjOG9U literal 0 HcmV?d00001 diff --git a/img/p/1-39.jpg b/img/p/1-39.jpg new file mode 100644 index 0000000000000000000000000000000000000000..743b8289a618d2d4d9c52bcc15c4a189a7195030 GIT binary patch literal 8425 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 w#r=cJA+=$NcYrMi_@% literal 0 HcmV?d00001 diff --git a/img/p/1-4-home.jpg b/img/p/1-4-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..949fd90822ea8317ee6032908339994c0c400dbb GIT binary patch literal 2989 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 DXX@|J literal 0 HcmV?d00001 diff --git a/img/p/1-4-large.jpg b/img/p/1-4-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c2fe00f495c8c8ac137675a0fea329eb85900b9 GIT binary patch literal 7836 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�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
    g1m1$;p7syXJt=-nY(M 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 YYF-Du=X#?vXx$NLm0!o*?$iAL0w3M8tpET3 literal 0 HcmV?d00001 diff --git a/img/p/1-40-home.jpg b/img/p/1-40-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ce18969e5ae15c7fac41d36482b461569907900 GIT binary patch literal 3503 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 LznN{YpB(%*5I)4@ literal 0 HcmV?d00001 diff --git a/img/p/1-40-large.jpg b/img/p/1-40-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9586b4d0fbe7f8a12056a808b5cfde3cf0ae1529 GIT binary patch literal 9863 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 literal 0 HcmV?d00001 diff --git a/img/p/1-40-medium.jpg b/img/p/1-40-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa41664b5cce6a00c07cf404f8d55c96700b4852 GIT binary patch literal 2105 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 literal 0 HcmV?d00001 diff --git a/img/p/1-40-thickbox.jpg b/img/p/1-40-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c4316aea33c31b117d5c3cf5c0412bab12a52eb GIT binary patch literal 11533 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 literal 0 HcmV?d00001 diff --git a/img/p/1-40.jpg b/img/p/1-40.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66f4e1147993194b3df61c677d163f8d396f2e74 GIT binary patch literal 8809 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 literal 0 HcmV?d00001 diff --git a/img/p/1-41-home.jpg b/img/p/1-41-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f7dc71ce6db78169c0589ec56c3a1f8b22e2330 GIT binary patch literal 3608 zcmb7Gc|4Ts7k_89^A2O|nL)_bkR@6yQ#8oFQ|<^^G7L$gMUq{{lBHzNl4y|SRtlvu zhNeqlE+M+2q(KVh_o`p__xJC-&*%B$oaa36Ip=%MbI#`Q<^%v*nv=}|7z_Yl&W=ICkq27y{BkqWDlKKCF;{5cdD3%`O1L3&a6&2$%u@$G{L6*ydwEcFR-*3?kq+ z@uJW?NCXTHNu?n+9PvL9bOeEfqtLL;Q9uyl!$AZHIa+H1ylBij8_@Aw<0H#zf|?P* zF2A6C0g_0$Gp0E^l?NFAM2rNSzEQKWo+xtnEmMTw6kP|2Wrx}K@9oPgUkZH|LLJTH z2vRiKdRYw6v2>U>xkUnjx>4!0LbJcy{B5&B&xz^ zTa7Zr7E6}(jpSNo-1VXtt5}focC{9VR(9lv9#YDBp6#=+UQ7Sz+c)IKGmcPDfVItvZ24G6B~bWU9w%*uH6cui2})kd*&FPg5X_kq(Ni#S*1gSP zESEWC9$t^;%&E*g{m@%4P|@pXrRtK!J->}C7To@EMHU&t4sj)OdpD{W0f7G6WcW(k zsrHZ+o1(WUHaFhgj6;U%h&U^^X?jh)jmL-r$?kAlTJL_#ZqV5Gs?!>DGhx>=^rpn za$P2>x6eY9e2oY)LdK$lq?>!^rHselai_)}{6&4wtZhsC*KOQPROBqn7Vyh{jw0^qF1AoBlt4*MXWQ5M`74d>Oqqd+8}Ay zW2q^@&*;;nhfAAV(Ko~Z016I6fC9f_|2zB`yeL5%Er#8tYij1`LyM!AGCJ8HPJyUn zPYJ)+IQbJ02r^^XvhK@q7c0LA9yB@7^kTfySF{|ZN4Q^kxb(PzK=zbrn1|`Q>%0tK z`Pa}_$~a3ITjS`d_{#I4$$TQ}8r*p0pu1Q0Jt4(^JNGn2isQB4Hkrq-rH(Tx>QFSf z!~Jke{kaV%r|l!?gxqJ$XNP=pC8%UDV@TP>-@#S9C6k#%^7Cm?!_CctZfbRRYnIkh z>U95-BhmZcbb7gXa9sNscCFqPnc3F4a!YhxJ?jF!sZ-RrTA_B?;S%Ps&3uLHHio>! zsECv0)cS#MRffJz>Yn32BcqG~UsGNl-dU^g_oR#E4_$Orsoa~gI&FS0p$&L6?ewui>G?2yN&POyE9c^YJ<^vU#2qR zV-g5ZyQ8W(bzHB?KawsECC{0EFgSD4Hn>Tfw^*@uC8cdlW|`%x_c_8Cn-wJe;~@l@ zF$ft3L-3-}Jbb@E`)L?blpv-+)YdVjH=?k+%qTQP`|y(twvvg1Pek10G2e^vS*2x7 zFaKLfXk++V^HoD+eNj$zaM)vKM7aGsT;KIy3#%Vwt&}^Z|8CMDu%h5%`#_RiC`+KR z>T_-prr}b)nr~6eXE6Osw35^1fCnXW?m=~x`KcAgc-f!2vb=Yn^y^+7@Vj1WacaS4*5%f^J84a0 z?DpW{&gPqHtSDFS8Y;&LP`E#G&$>0p7 z(YMC$bgw>ChLH1#KGw5XKl(?*cp6(aq3Csn;f$a1*|%*}f%1KGTC|G0d(BpL()xwE zeYIGB3YDt8Ym(P?SC#Q!xf|NKKoUVe4FsiaBsu0&O7ara7>ac&Z; zO#O&;;5Ciw2ZF{sGNvc%L9@?&7LL(Z$xXUC)n%3>&3k^%*!a<5TwVoi{ENcyiXQYELODT-*S)PGR%!4>rB)EIpBj zyO`P1C?#fo%hsV10@$Mq+I`RElL~iwNXxjeX<9FJ=27{@ z`~M*6j}v`z{-{sAQAt+izd3W}<|Ysq5Ln`Ww>(*5NQ81(k*Q1i)IRVvPt>7gkhx$Tb{rU!OX6qKTETL1(27n0Vce1U1h$d?idiOoH(HIl=%4=qUo1 zdJkg;_AU+Vwn&8by(Law(9V6kCkkRRr6O!0rlEer2E<&!xo(Np-$X#7XR@o%4rR@D z4AkSH;qHIa5)1ooxz#+ zQx|%dKikJ&c+*nTy=rGC7IRW{I~@1HKeO-g+%~0Z!X>RuK;{+h!@D5^s_|;ACtStz z1tz*Pa^itPiGJJSKi}*Hu{;Gs!7)E9!(Uh{;}*qUR6N*W<}Vq_E_$D*AW`Ig|3|>= zj2lRPE|fhyo`scjup1VXwFCCqR17Pn`R}imyWUabX?WI|p>!_Z7II1v162YXh59|- zY_(Vno}f+J>Zn9}N~!5jm$teHI6EcfTii4v-}S^JrgZmib{36dIPctabX(WiakMMy zBf8b&&hZl})w{*%i=hrTQZ3LzhZt&fyjco^J3#`t=Gk*~v2E`w9fjn@-Kb=~#F`w7 zt#VY{D#tDQcglic2*A&B-0JO%_|AU|5!?jSvr{kAvZrqoV*uEreq0_}&o|rMhe#Xi zWjT%cNP}L{0tXJ_MvY0{%{p5_{V2KBXJMZ$~Z6e>M?%bHO#r&~%rLMu`INs)ZpVu*O&>zWBOma}|9Y zFYksD=#yx-zauJ3)l04k7FP(p<+z7gca$MmhnRI2oXJrr5CszA%yYG89<#OLM0@1z9fKRT zt0tV2LCzd|SZgodVl?Kf>--{zAe57e@(a85*M3Z(j@H^p9X8+lb{ud=03Ug}r{I82 zLem+ps0|kIN@n(m=isE0ibN#szUR9tSe%y4iR@2@O_%xACO4{ld6hmDor&$iNdd1# zW0+n7l(V^4n8G(T5=*LMDOaNCUWKdvGMQpI!W9W0mnr0-=nzeZiPk~Ny*v;!nk5+R z6y)pGom)Fu6e~GDbhgBvOEyYG)0zNKQUNBtnq;2X?7loSr)>^Oltpg)$IvWC@g*|$ zs5Hq^ZyM{Td?sKAJ_ba6h#?}83VbzXcBPnv5fkDQhx4^ z)9x-iA=3Vb`8YQonRI^7o>|#QM2r!2+22XI#h(U*{=9)5lW##p`Cnk~tE(IA(;bI`9D%4)$LJ}qFZ)l-8=616?RgCVP%N@?{ z9{FQs%USO`L;IQeVNcxldBwntFan7`(;@T38;b~=%^&*dlvy*j-hFM=4ixC~^5zM+ zT_zZM0OU4)xTs-~^?U$4Pd}jdt4H|;V7Q6wcm$P-5 z(a*}RM^(1&`d{qzeygDvll(eW=dC0TRcgfjq$iS)1^VxO1>#l=_|4`I7T5xm{2I=@ zUfyTj+_VUvQoL%vH}O9)`_Y_^hZ$Oxj#cz^{XcHk-)GQLid7g~=#N@ARgmfDQ_Q-| zWQbLW$M9I_iq2L=aBB^2pY5MQBbxs(`Tx58GHDLDK_UYYkU$7Pq(5d2M1XHQ$SC~q zorOmNmw=EP%u7v0Ln{EGhnq1f+{S@O2oHdgXRnInRNvR`x`_MC&~lz53@P^y#=gq@ zb;<3j{RI3nl}<4oVrl--&__JYrM{I}tx)of2o^!YajRgxTgkNPlo*Z}7P9{)g0}$$SxET#13w zqtFSvq!+JU$xa{I>#mc6#d_8905F|&egH5mI@B!IJl{?>>RS^u+9^f#x6|w=Ky#eO z78u^>a!*27p(prw^65X)l8TnaCs-ezKD{9_O0n(jj^1H$hcG)>(W}lYdT5juSA}Pt zwEiZabEsV`;F*p_rv4}(8a-zhy*(ED*nQcF;Dw~c4~pFi=k^y)?s8MJq@yWb*8;6C z(w7q+09G#>jUpfwarkv)+U1K(@w}vu)4=%yv@GbuW;&kv}I< z6iVBl4O_*jSmqdKI!H99QarbchA8>+UbajIJZm3ews`>**RqRJb3HWu4`O*Sxik|byxslIWf99yvjyV?$i?yU|E%nM& z2lNQ@58~Kc^1F^SaAxt9<7V=s*E!&IX z#LTIY^opaee4p&2K0W}JG453D!~;|88uguO-t5f@ELNgqW>98=<$NBq|GZ(k{%K64 z&#F^Pzl0yb8j*4dAJoBhf;pnbn-wWa0x5DXAyW6>8ruD>t40VU_A!&b`0ifi?E?B< zP@>6XA=Yb)XSct&Cz=8R>8xFAK29oB??^YN)<05P4J$zjc#FyS{fCplfQbrmdC+-o z^ib5ft#|6%cHCIL=QrtLEiqrbN|ZwMCIjH=G36A#NS3-$`VB`DgYsC_c&`5akF4}W z3#Jb&*F3*D^mF7`VqjEvl$d^|(mR!2d5kI4NLJW*snEwGl;c9N|X$0+3adjUHk#HqYSMR>-0 z8;Uo-IT>>bKTpt0vw{Y&pG=P#?6Q#xdDlm#Q9N_kG#p8VkQmfQ>v555}@9X~obG{7;6b)p>Lito*)G?SF>V`*L zQb(6fN*6XYMt#T|SwBiKBkHHMeyABdHO5sQ&}({PsGXj#{^gxG-TmvNAu{MN85Dl~ zT@#1ID1W%XwyA1!7-&+z6E*GC9G66NWl=?9qjfQIy7@vn%%`CWv zke1Hv_tpgWOvHgV7T_wGpT*PmnPY&NB-u`WN8K>|O13NH(zs(3QcV^DWu-}n z%kn<}q-ef_9rKNK!BEjZGDr24B%1BoH(^u# z1u-+o&T(O%AH!vFnwvh_X}UrSO3BUF$5~$WGB6hGNuL>*-GY$wnQ0FOV&`C(#46~S zBJAkjzm&h~88tgnnGnYbZ*J1I^HV0pqWVyr85ZY>>6ydTz4zKSPi_-W+57=OS+-2M ziI;)t8cjQ3`;&%9FFehznd!Bxm6QWUrb3F8pbN><^&BOa#B2+qS=|=#KE~K=nu;wb zLlzCjNK*hFmNJx7w#@t~(9}h(v+Nl->s^SnnsOL zBQknY4XUQ$;)X#5Gz?LHzc!qKi)647)m_Rj+y$C2#G{)3bScW=vW<@ab_JK@?ns9J z+ftN_s4G@Z^w?epT%{Or06;__3eta`>n~3g2ZW1H&BZGT#-rg@=TZBuLI}T9=-xta z=jO%hr);8c2q~V&U^Dj4r)*HwkMDQc&Z&EmpBpFX$QYj-ycIitT-sry!`Yp-q6X0o zmO-ImlFEVX_g=Xj>C$_=x*20j`Zzr7eGOHw`R1v`(oQ)8)fcU z6IMk=8e0YeU7GZOa$@yX=C`g7{@rC(UsdhTtxccGs;MgvClu&dB%wL|YBeC;(FQf~ zFb#CFYSVsi`7jC-_=jAf^Ei(*XHrNh-WCmw`4T>Aem%L(l1R;f#aRu#Ia&`vlv~e7 zvAMXw9Jm~xfq%&ngn)^P3PM8qWt)HGNX?D(ON=}c>SnI)p~*E}w7h)5A<&6+d=0mx zl)}%)R8rFB1YGN(h(6U_WE4X89 zamvZ_MCnWX+@Mbq?AMe0Pq@px+wo?r9j)DF(7;(@7lX*bd$ysfJKWHh=#rLJ?i-t? zaUXgl4GAIpPpH)qIwwTmFJyR$Q2q!Vc!Z8xb^tOI0{&D|IyZhw;IwP9)LsB>*$(zH zSZ(m>dn>y|Hv3iQ1ONEUC@9)gMBqaLImi#HKHwm!Z=LR@{{r(c^+dFHrlWhfC3wC>w?P{bG%~ zL2MP&aRSyu`?1Cj1|Z`>nz*&ZKA|oAk-*vR=-lYJu^V>I8Sg9YI%uHVMMy2_2oLuN zGH>3a5qS(J$J1IbS$A3$nKBH|obQo9hH+N!;Gj#UWvh5YUPJa-Trw7zuEB)+p;P_n zE;nxU%7)JF0w=TrFIFbrM3 z1*Mi~e8oN7o|C}WyK%8FM3Ml;w15hk*iba;Xz^mlkKE;a$ya1xs8pr|^DH!c62y7a z`eEv$9`^Vm0rcd$=I3>pp-s)FM@LhBA5|Oma~Gc!#qWhzl*sweHt26>#f^;m!^%{V znzs&q{IB*|z}D@S@|LIKnY#?*5>j8Od1O8wam7kRvTa^vrqfmMsd#k7S?Dxp@hW3! z+&0jg73>6Ub!2m>BG=o>!>4s}Y~A12>s+yCc}@zgl+8kN#^AR)z%KnqH~rzdSx=BX zI!|_4^Kk`#gy<<_2HBun%I>WEpu4|3FkeCP{;@rG`h+}&fxrYS%pJ09qwH_5q&HE? zPNm&hpL=u}?)Ou~l-WebV_R1xZ`5}9B~jrZ49zEd5qcHmVfwEK2mA}Nfn6~k2`rG1 z7nOJDrIlGs%MSoZPj^z>;V^b`_VgjgFyEw_;w0?57ft3I`>VYsz9||u_Z-*H#llT> zln|ktq!2N>MN1;V&qbF;2%lHZV`h8^GxpnFvCK_8`RFHU+&l<0bDGoCD~wLJg*M;L z3t0r=Uvi!~QO>)34lLTe?+!radjL#{uusp)Z628%`V$>pabEOAU%nzpma~l^kCim2 zr437a`?4@y=paeTlA|p22PpKp8>Q7BY2me|&oQvGk~cN{&>va6=KSXQN$F;}A@^79 zNFH@w9kda2+3Ki(U2`(}!TA4KMiZI)E%D*s25oS|=tW%%05xwRH)!;At_Umk%?{lq zWdCsMgWQvB;QEl=3R`%@2%5eH*YC~r&+tv)A%AD(ez_q9C30KsCG!O=Hy3SFr72^ z0FS$Rhoq>tDCVnH!iWa|FY^3~YfZ^b6(w53nd*_G;d0-0*qTM+-21y* zydgJB%iBi2--cKT7YLKJSI&xf=0O$|678PnRjGBu?Zs-uRAx(qdKJOJTqCoX)I?o# zX8NkQpR!iqKb#{^x2*@AGmhv3fNNuCfuS(i)S=osYu=t@$vfoL59@QyCH47Mk0FUz#;Zgn{w;G58 zpyrl@f3S}wlAz$=n$HvKT#%E0+#q<6FHQ{)K+&a;j3k70HG_R##3#z%Nk!Gg(FX~` z+~4Hqxpt%o3B&MEJJ-gCF8nN0tj~B}=q8T=&4U6KqoBB;dsL1sY2=lx|FnE9?} zT(@shrBUL?yDKEAW4b1=K{2*u@;}Hy^Iy^B@QpjO86E(MNI(wz#i!fJlVV1nt**`k zHhD*#Blx|+z!or>>^q{^qE4i@Z?RG}X>sOdmlsse3_z$_>b~KQpBF=%HNPm&D8?xT zfhtj|``IZUZ=dTv&Ntlj4wW&FO+>L};9}*s4K;UsLbG-R7)MWP^B_RcDCnHxQQ(SM zxi6st(DWb~Z$uyl!61kdEG~L1LSUSj*{FVnCjNRg0red2t8=$)-XR~?P{ZOF^T`i7 zb#&a}W`3Vbz02sdOAJc&koEaPv?&qr-${U3N;O&?Pz_Zi8zNB@q?AE?vS~sHLM61- zL2=6%4nWKX$imEU&=~tEG^n=?10jsBxRMn`ai9sdS++wD1{M8d>|e#9;tg+#)_R zx(rBQBE)jHeZcQTz|iLj5hF|j@1qgBAonAv2jYUylAARE?|kAR+CbVb!nN=3%@ZAi zB)4q|Tl;ZaWs1s(aNv@Y2C1-M*qeVvbEAPiAsUE0-cNibj}kRNP9;S|tXI29Pt9QZ zmOfHAuELZN5VWrhE<)GKVp8oX`_82h!2mRynu*CBV>^KcQ;o36B;BUfO*5>4IjGUm z$^~lPZ0)e@1^kYf1)Z86_H9AUQMgFk}70iTi%lE zeN;XT9_V5Q5W)b-K~TXkYL=}gcLi+2mc2#-CyFj4*EOc>UiHF~hJ889#QmBlp)+U! z>|$h?f}~Pu1y+{xeSj4tR>~?}4s6kep@_%0hCyGdj0I#(JQd%wpoS4ZInEzFy) zent|x*wk&f7GLXN{5j2eBJsvnI@NXxR87i9Zrtp6x*=H*jKGg%3XTv1w3~YPuAh!k z5K!yj&=h2`gB)q<8LP{UBdK@+6a_X7Ymz5TL3OhT`$KD|W0aGqVDnGkD8HCnRF?%( z7X+mPEfw_?Xe2_|kHYCKZRu0T6@A--vAE>+u^GEqimS?4W5z^@HKE)zOsJ8=6@3?k zU?~t4;4wqWN<`ubcDQb3Q$%$VggHp6k>iWZdx{F96`!>zq5?OP8;KwtHV}jP&~5S8 zut%J{T2Yyzp2*eT_llp}Egi4d4VUQ(=A)Q%;vMXEo98Nq&+y*#J?34Y3ZObek|>`j zpA=VHGqX!k@+Kq5WV+|Hg~FFi^wdsar8^YvJ%qMTdWt7zi2wxCb|KH!jf*Um#?S$-4E}VAN~21j%>=Df z5Pl~Y9ikb2+GhoG z^UkM^XQ86x?Lp6S3Agqu7g0HR6vWh1?QCeH#TJo7xmMt>2~SBJ&)s0d!?WM%8UP|Z z!ULa2`{{`A#x9imZr4*Gu^Boubml6k2%hCNW<>@dcsL$|U%2RN>Mc==a zqDPNHx7q)Fq>XPr(*GAYD6)jCcKP@5M>hsn_rH|?^9TMdWyFDpy#NsMf5|Q&0Ee2} ztcFWc-8C4R1pksAtDXFNBn5r|aLaVb40jBY;T@K1x;d=({db5G7GNHrE& z*-Iq)dai?Nl~{>()A5{aY8^Ljs-w6JIu+~R^_1C*$|oPIRE~0}Tj4gUjX#9|z|uVU ziik7hRZh7kAFR6`n=N0Zb@Iz$0es@V#NIoRz32kl-Z+pJCKn+Wg46M`1{q}K`!xb} z;yF%u#@|aGMMtXm^=?`WW?C1Jm@o}NqO)UO=YT0ls8OixteM>*DoJ8_fEJ1Khl>p%(sOl>KisH%Jqofey+k-iT?L0!805G9V5b5iHlpZ=9kZ-mP921 z4gUAc2YfYxhu!6r9CvJ8*dTdaUniS)d1PPgF2v#6X2Tam56Fg}ojjWL6Sa;x>6|xB zM3~k?=9_u1OxousY9qjw@fpc@x8mn%?uGZry|7|CRIO`&pQqX?tSR>5YLt;cVn2KW zhY4?CQ_$x%z=FpI7TS2xBy-ZNC?Ui-Q^bD?JO()gt^#;r>3m`Qrde{L#U#H!wEUP{>ICkesTJ3Irc z!mHOGWxigU%PlTgQ3ujzPja%cs9ir+XFL^sU5*$`!bo82=39(a&GE5n@N2h&jWOe= zV}%W5zr!wOtu?Y0{^Bs6K-OwiG(ikiOp#q-1J)kq!4>rZS%r1mF(T$g~dh85`7d^Cz2z_G6yzV(u#18iTbF4Dg0W&*seKZ*syT#Z{PXGvj>WKg_E4(s)U;SlmC$g!GRl~2Fxc4jgeFVPL zo|3tD+=vCx)%3}cRGTq`$@_(N$iTkH;|}8Z)2KWeB`wwx)p$)p@V6ywVjn<>L9kF; z8;=>kBVPp$XY)o6*FLmh8qH{*;4|+n$+=2x9e?0@ysV;{m;GxSKOo?vqnv;; z4v+~eMuQJT+Aq>$nN4q<*s%0nI7RUsX}`fxEM7og z&t8owKUfyi%R`2YU-vDa3(Yg0%tV-{P22+@mUk6C7sW>z3*eHo#P~%%#7mI5Q%3Rw zKRUyydJ0R;c&fXnl0}rRI+M`+W3PTOZmGWg?QVaG6X)ZB5;vb`AEi`0jNQz)w+>*q zIIxyEqc~4mPlsfv*Xkz4mRlQONyy-2UlzI)rVB?&6lOiC41? za~_r1hec$x^;SS6!JyB^SJ%w0Nn6N8p6}eT?#rE_B2h2UHn@i;5M@RsBtdQA%k1E1 zkvNh#y3dv6Uc3*7e6z7x6}|TQDT=F16_$JHa{9*N?A(%5X-tV(lp;?3y4U%W!r(;U zrH|^uOmJwTCUjq9R89e9ksV!iPiGue<>)d+IvZ=hHuNSLBL~sWbQ;1cfx!!q13yZmAd6obQQ4Hm!zr*3bL3|NM0Wx%%-3k zcG0Yhj^{dl^y+LulX6eoV%#f%R)()xW-={Myh>AbLDvb6@(@N86s+Kv9QLEtuXcc= z{%_`H$dr?2vde<_ythv?sLnsL)O>rb=8A66dEL33lhLO@PVTpkukQEdJ|RIT8|P8i zJy(3p!Vos6W^5e@{VlNJWD1jvCcaIDk~)eOp0s&`vTgo`PMElcr zJz-obsrME%q0f<&Qtg7-=@7Flyz?MY=|O(9&dkJoFqj*;>Z=&G71USf9p!jLaz}wS z{bgc)MDIcu**o1dfk(~2FR0TVuTUgbj$V2UMd<}$X}=(TEm3p?RP_6f&#a^JPM-EV z58_;R48xq=s^)n)TQ37*!q62Og!ueg|{S@vx1l-VV0s(sq;-D=MvYxcno)W z_%2Nu4EY4VPZ8K}>$on@t_})b>t7<87qmPQ@!evEhybRysOMySU8n_%K)g)?5%-!m zqk#6Yn)^F*Ut*#h6fJ)9Y0xudNZZ ziM{EVqq4)$l;_93W!g@`+f2>$EP?gx9k04ZIfxR&B9Q~`^M{~{)_NQ8!!qXS$#>~a> zMhOG%lgWEuPw97x>xVD$7h00hJu~s(Yp==xm#d{;*7oOBY44sGR9yEq#BKJMCr9M1 zFfO9M8zn|Qk83NQTBLjHs>(g*^6YE_?;bZHgAgY616>3rG!syx@1XZvEp`w(lr!zt zPqL#_4!T0GR~WeGK2cL+3nib#zRW;(uM$?%2U-#l%WQLZ2*c)1YhC{o&g2 z4KMb&`lWauXp#1FB39+ay=a;Ho_Gu{up1ZJakdxRQtK$*M>qTZUaNcMUJ-{WX~sLm HhlT$GF@lwq literal 0 HcmV?d00001 diff --git a/img/p/1-41-medium.jpg b/img/p/1-41-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32bb8fcf57d47e0309f0064d6705dd101504985a GIT binary patch literal 2087 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 literal 0 HcmV?d00001 diff --git a/img/p/1-42-home.jpg b/img/p/1-42-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ebbe9961daacad7bf4617ed0cdf6cc95dffb830 GIT binary patch literal 3471 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 VzJ?cU4LjE7(eI6X@O+y6zW`oA<2?WX literal 0 HcmV?d00001 diff --git a/img/p/1-42-medium.jpg b/img/p/1-42-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ff989892ba3c8e050722a4ca1acf6bbf67c70e2 GIT binary patch literal 2022 zcmb7EXIK;28lFiq^fDmfY zaUsz|k`j1HF}yf_uL+1ozQI8J5X6rc78J(+-^G0jVEF(CzyS@)0Vphp#)4cnAiW0_ z!3O+Yd>{{+7lnb4)5FLa8e#E2g+d5`+$lf^d5?n8Fv7FiL@QsFIdLr|jZuAi&^Zu` z5ddzhY{&NuPtQet3Js>V*u1p94cgVCjO!I>4_B^+Y}?KJiOF_*8fR{TQ`9q{KDuZW z92wq0G#D*JYnh0J`&KOJk>{HKwL98!>!-)h9Yz)rF!C?}q9Fi;4gg`$5Dx&Ncx5GE z9G;-7iNNAR=ztLFOJi5=*>^zN;9z=(d2sb*W?^S*(8INVd#n{%aDk|?G8Z@h+IwuP z^y|515qf?8;hI;R3%utD>Qfofbn)Y+E3Dzj{N!s+ggIZ_S&L+u()bFsz6Uqz=IU+r z^*@$ME5y2Zug}&;YPO>%wIzu5?TieU9llzj$usAGo<5+88w zimk|sO?{+Wu!1l-hD9VtL_Z*ckN~h~7()=l$&vP1ph3_WjAeu=mlHnSeo|H5DJxuL zX6g5bti?`YvT$zwl-PZ?&w5b0A+9>bd%S_a<42_LaV*jZ1EF{i`~neYF=99vizj!> zX^9g|Ng>&P>|cP|yCAustvH~W+R5yqaDIlhsHQ5ehM|PE=8`b>;JRZ+pYq|0L}CkT z-ZCjl2YYfjP0A?YW_ldqyvkdvG}ngEI@VoE|nLti271Hy{oWC>bwTgM#;DKJ zuL!x-)irZQWlS0mRmWXJp+<7(#W~jH7puCTxxo9()iBo!#izp=ON~`W!zq)@xwjup zegxM0e#mcR2)$(c7tmz*qW$%^tH&HMLF$DOQkkD;p350Fs#13OKbE#O$CaZ~%#7Et zQ~|f{?)l04MV@1YFLQ4e-xgvG=u7FY%yvzcME`S__I+CaV2p#U&v~80TaBvSKDOvB z!;G%*U=d<7!zkkpr##Veq$k7Zeno2EZ@n2`T4=#nm$bcibOV?R^ZF#R)$)+Z1;^?4 z`4%}9)!Tj^Y@W`ExpOG8C!lpYh(xzi zyCAM%TT7pMy)mX=yESs(YXM*>vd_(DaN?C5rsl$D-DPB!J?Ob2yJaMIb^}q~218T6 zF>J^3xRsdOws`7wbkoTOAlN*j=C>%G;P=)N4zv<%the^+$@m>quf0J<+c++E`vK}n zzV(@#t_mR?=D({N)owZZnJ?^yQEW3$T69?Ph-Nfk>-a+(k? z0&JeBpN3*)hwVRnp~idOyJkHmrICg3+>a$-FV5i2-R?QR(Td-C8C z7oY&g3cWlG2JYfnf(kQzz zITk)^MSU8n6(>-e)jSkLKAZxO#!=w}K2qD^v+JuS@fNeZcS7xk%# zQ7)7bx>{PI0ZTGHGyEf4#@bAMm-3SH$()D29rB@k>PIR1emHYcJJFV!EAiuQh8x_; F{{k+03?%>n literal 0 HcmV?d00001 diff --git a/img/p/1-42-small.jpg b/img/p/1-42-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4466ebc692ee8b56324a0e8cdb160b9bc35dc53a GIT binary patch literal 1224 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox>=$)68J7I~Pq2W{E@?dbDst2tbqR$nbWy-nY4>#WCDIj*Uh%S~i!IoQ>;Cc*30 zgRbX53uOg?7BaFTd4Z9MSwNA2MNl{pY$MPy_Ka6%`|UU_JYV-orqQvVqCjm5f(*dW zW@1L@18Ngw5D-#iaWpDy1nXo1>2#RN=*TNF`R?q`A{IT{Ehex0y;|kbg3Op{iV@BC z*WLyir3>^jBQql#Gbbz{fkpxCXBARVbS&8<99Srzq-T=j#GPpy69x@E=Z+{D=u4~%!ND%tdH*7oGa57VvVrY;fguRi*p0V>+W zsc4{+#pY;fW2^1m`6%KNqk`|8KYNT17YDygeQTOqSg)MxXVkGTbjcR~N6}|gQu42r zo7zo_yBu~QOFGb#;n1$nqDzkF?H2pM9&-M%^(1G7TYauthtEj;4*VG= z9mId*?fyP*L#bv)rA1|8_eIN3lm=RCP_0jV_2JmTj@N1%zU_`o?>F|D#^j{z?R3LY ze3FpRw=9Ppk9p+wIIdVYhl$zYSmzg)72H1^%}@MNY~D2Q;U~?@m$)p=g9;Mc7>~bv QUNB?fqJMw>GyJ~^0E6&=TmS$7 literal 0 HcmV?d00001 diff --git a/img/p/1-42-thickbox.jpg b/img/p/1-42-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c96f186b1ff61735e96c19a45b2caca967f39101 GIT binary patch literal 11398 zcmeHtcU)Ax*6yAehF*r=VdzCbdau%}bP!NLrArkQ0b%I9H$hZDdX-+KcTjp0PfVr)E8G7=&( z0wQ9fpF%(oBnAbF0fk}^;b7qq{U2X9Z2&$x*br<80nr0sd=La5bkhM)A(aF}KtJ{U z`$9uUfuce{VB}K@WIpog-%oztAt)d)6!qo{fQ`%t!yqtZL#yEbUgAIL|4Rl=+qc$c z5y06oHslY4DiVmZ+3_@eZgBhfT`^y`>z z!rux3fI!PU{Z(6mvi$14$)~H`2RpK_FTRgH`u@_iq|`pQtb|nJaprO$Sr#eAbR^JfoMm?`S_m&z2XRH86e*@P-X4y6zADMqTu;=r{_Js#BBAE* z@pq2oZa)`jNFQ~h>9eXft$ZR?*Zk3FkF)u$k-Cp;!E}%DW}xGXR3(Ofh2IN6wj*$N zwf=Z^P-e$+#_f%GVatfr;QD19{=x9&+14Z5x`G7y8$k6ogQG2V(QoaA7oPcILb`p(=*IlX~FDPTja^|GyKo^u#tW zV|Qmvk++++V}$7H^6LD8MtfUT>d^I~x5wF(gnhwble2zT86N%LXhhzSy28~VR(fBc z?KqlIiWrS{P`P%3FMqwMU~9$5bKPpF|C4cju;XJT$R8Q9vuyK8;qwqn`eHqtzyg1|`2`A;(j0wYZ@Dw-fZ0ih-lF$oVJjFe7*o&nCE&Wp5a=tzqPf`V^= zaRV@TgN`Yo<n_9gocX=1>_+HaVorr$|kr~3RKBfmLpH;8KCxyH+@vT#_m*h`M3DEA3&zda_X`+^zzPix+u@&4l7mDHP4t5f3 zf6^7>Z)6faAkH4bPP=frS2=pABI^BD!NVKC_4ujHkH>lOOGI~gZh*%rY{tE5+G+j* z-B}++dInbZMZl8S5M<^0GksU1JDe?AA)`d2)ZZmH3La9ws7UA%ktFYKKwL}a+^>x1 z@1;crRf_#6v|qX2V9rWmJS`0C9QaOH#I2-z1Hdi}BScuD5^`1*`#0YN<2U;QU#Kti zs*y@OAH6p5Jz~u}Ue3oWi+ar6$(7a@^K^S@Ouph1rm>@C;?rBHH-PCs${*+A6v}Nv zGg6=SGZ0kR>@gEH$oivN9J6q(&6TetCTwWvuN-a`Zu5qc-mcjMvqn;V=SyiFxY$iWdq@K`nv<}OgvAOlV3UZ$ei~W#I=|G^wB{IG9DVWO6?T9 zWqFB)c6b<%KtH+pv2AJ@jp#av+X&@RQQBuTPpW6kiW`l4^!35rzlv0Eo3@&Nm$x$S zjvndyL2VQ+82!oAj%1k5MrAa{;Dug58Da`jZ7WcD!=?Dk z|0PAb%SCq@E?jQYOg5>yk?=TQn_8+P<8M7H%;`(H6Y)7L1j@Aw>nqgKnm+nf_pVH5 zU8NBOL4FOdsf-WOzN}9nntWKe7!3c=e%ox?k7qz67{7x|)2So+37YlE_UF)hINJQH zMqnql4hbA_51N+$5=fl=N6&1rMxQ4ct~kbzoU9RkzK=gbO*cx-gAB;T2sJEjSW-Z_$}LA(F_Z>i$r7(Gg4IVu70U{aJ235l=lLaAVoXScR&e@o7rF{6sWX4G})Z3 zHL2XR6s1!;9JnTpY9WRCeFe+(ii;{Hhy2nt0*f&4YCgOM31P<#S9ej<7qO=m(L zJ}qsXVHg81g3-L}7fs-wG+j+*lZbREs|$!LEKHwp7U0>~b9>s^_Wr*f~bnCf1xcHh6|DBzcwjM3Tz>H1T}VV&h=w!Xeq zYB!A`MI7!nt`H!4h$$h>7Ml9h>c}7?SuDj~VJ|MMD%yGMob3Ga=d)XCv$o3oyA3AT zBVrcU`8`iNJ@1Sn!HW%ddK_uO*M3-x4(; zG@sub-#0FWzaIlvQSO8n$eN|3H6?}e$p?oQsI3v(o-+KR;x3^YE^byt1_z^GiS-N? z0X>74{MVv$E4+H!U+~N^up0**pUIQA1JV9@c^TnirRPRXSZ>QiS*_f$oYi>RGw|=6 zCA7b8<#^ha>%@c#`>0d8~5)44vWiT2h1}5r1`W^WfKtXmo6viW? z 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 literal 0 HcmV?d00001 diff --git a/img/p/1-42.jpg b/img/p/1-42.jpg new file mode 100644 index 0000000000000000000000000000000000000000..331e3b93ca5432e6c89e851243cce08ba7e5371b GIT binary patch literal 8790 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 literal 0 HcmV?d00001 diff --git a/img/p/1-44-home.jpg b/img/p/1-44-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daa72999876dcb981b689a17cf06c752bfb6adfd GIT binary patch literal 3080 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 literal 0 HcmV?d00001 diff --git a/img/p/1-44-large.jpg b/img/p/1-44-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40feb42311accc1fa5c00fcf77df08b17a9f561a GIT binary patch literal 9088 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 L&L~v*asGb*(t^Z6 literal 0 HcmV?d00001 diff --git a/img/p/1-44-medium.jpg b/img/p/1-44-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5b387d4d620cf4aed801a951e48b592f28a5e29 GIT binary patch literal 1798 zcmb7Ed0bP+7M^==HWC8&LK0F0O=QQ4M5U}spvn(WDIivCfd~j9i)@O|q7W8El=Xp2 zL%|;f8)*$ykg%0aw%3P%r0_t3CA116QVLjbLDL(pcKPp}nSW;Hd}sO2Iinm=Dgf&4 z;^qP%2mlCQKq&_w0tALt8y5n;i4-D{Kp;}dWD-T4s;*9>(r9!IEtIZ-Y0zjW3&pe< zOeRxZQ-{rBu(cRWhRO(p;1~i?jYw2u&}nqW|1HW}0HXj;;E6zM0gOQi1}QthDpjZm zq>A^gkRc+41S9w(3%~!%gGvE{m7_o%fdGsmD1LmD$16#)gLIx(^SqGcSy@|40{;mp<$&-RtMF|rfr%cqw zB%8MfMjFvNGp-YUE#DzrZ{%ifaP#;{Gk5p-tebPMc1g!;qiX$jhtwT8JV2gy>#eC- zk+)_pi+zS9b;b-IA?Mkgc+GL?s2`y{h;&Y#ERmP4@Yr<;+mZOFu#V|VS4HMhY0U|G z+z@Z)S3~L7nVT|}iktHrGQDFaR@-dbJ^bE){_@!P^e)F@BmeHAdk?oCIXUPOw8x-J zefG)OPqZGnv-10Z_-<34{Oc|~_ak3?J-`U9Q~v2fTDe1aOJ|3fFh(~n+GhW>%XlMZ ztCRa_Fi)miZ=KmN==+W5N)zwjS7ezIO+vNiynr3iGc)|%#)J0+Qa190dF*n_7}c() ztiqwM%9pBrDt9S{FK8}lZ>c3`9TXME+pcKn8Ie*I#tylkx|q>+6pT*ZT#$QSokg-X z6k)z1|0`3&)50r3n2VtE8K&Q=`*_aW?We%-4e!6?Yg$`Jf9rcll$V&kvVYr)ONJjA zyB3=^7L?(6zy2S9iW_ucE@`o+E4kldMhP4gvkr@0dW$%Nt1z6vzfA@NFqFf!bb2=$ zXy?PueRSjp4SUBo033n;JMRPsa8XO%8-Qv^(Cm@oxI{JjPbcqRPO%8+$5GtZg;F{C zvrt?faN>9crsSis6Ypw-zWTTa+b8f7R~Hs3N) zR8OWjmBkti3$p2@-1%QSH;l#K>&$Fb|3asjlPTL8F>m80^EzP5IlN#SQL@=s3mH=E ow9(7&hcA}hZi$0RZL0bA^Gt~U$ra3Y2b5QO1%_VyR#SQRcPd_?{{R30 literal 0 HcmV?d00001 diff --git a/img/p/1-44-small.jpg b/img/p/1-44-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40e9cedf1f0352a2f40d32818c7d3aa076f66504 GIT binary patch literal 1107 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 E1$1VU!2kdN literal 0 HcmV?d00001 diff --git a/img/p/1-44.jpg b/img/p/1-44.jpg new file mode 100644 index 0000000000000000000000000000000000000000..81795b2f9d8132eb34f1cadf190c5bf214568ab8 GIT binary patch literal 8156 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 HUY7n3de!6r literal 0 HcmV?d00001 diff --git a/img/p/1-45-home.jpg b/img/p/1-45-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f19e48d3916d40e6b72a68f64714ea33f70420be GIT binary patch literal 3624 zcmb7GcQ{<#_CC|JQDzujn9(D8@4Ze$3DJ9(NEjt*)T;y`q67&dk`Ub&JxU0XB4Pwl zB1HT2Hi!`1BRBVczkh%0>}NgaS!?g}to5FE?{}Y$oz4I#ysm*R0D%Ai1bl$gNk9vL zL7`^@G&ndA6bJ+yj-VnZC!?UIqNYYtA(1q+^e7ryG%XT|VnU%AFpP|h)O5@&Oc)k= z3?t_3BM=z429BUaASf|3NE*!l+fKUyGzAa?#K0ij02B>@p&_R|00&qk402|`e~pZs z0s)6XpkS5_3`1f6q`)a~1Oy5rJDmWi!8jBJLxGKsU;*9cbw0m#nJL9I$4|7~VuH1U zyk6k!4{Sx^7H>&6J@=YaBRdluPQ%o$)>-N7FHx`p3R9OO{n9hwW!obKZd>qH66-nERmN7y6( z)G>>N|BF4Ms@LUaR@WCtErP|zio9(wF^?*i-n&n-OuMP8zhF*vV0aJ^5UE-mx*V%{ zt+$MY?OC))Tr#VG!-UpD!X9!UcKOOUpJ|Eh6)TmQ{4eUrV^Vr~^_bH_;U3#X`5{Zr z?{|V8)x747Xi^UCwF_q24xEuO9xbl!v>`9u{VF}eh%wKJ2qmwhPCk}xx0$Y)dh8O2 zpBC%8dqgAnoMoPogDrY#fe=?LA)_jCu*2mP=PzB9%@??kseMGwskMe#;GILUds!pWkAmHcG00ag>Q2fJ87yyC7(F|CeBt1q#O7pS{0VQr4^BZ%J-D;47R0nGvyUYe~ z;OP^d^>EhUeTXJ?JAs!Zz<2!?#e^Fv-D+PoR(6xDl&qHA zhAM^$ikH3Jt(oFp=rJU`8L#s1yMhr$fim%lV808Nq; zwm*`m+e|-3tepbBV9|1CMZ*9%5^b&?Q_)lthEM_gfL1ty7X1sOqb7fo)4i0FZmnha9fvaLk z$j=%Z&;6!vX&G*md5t{xTI@?0S?`r$5g`vzo6>s_k*lBjI9$lEVpn7bqrOss+|c*F zq39pb5cN~FwfViQJOw&|^m4TFKH{4-Ax}%5Q~{N_-kj#z&`p=QTGo^#Id{a@x3#t_ zy)ZH576klEVW`8V4F^Ntg{f7GG0sh&l8XvQ(;#fh zC;$q9Lg7?ol!*Vq2B6{e3^;KOZV5?ELSRPSUql3twCUv-l)AHjKx}c>76!{Jwf$$y zk*PrsUpP-az_$%Hgp2>QIC(!kZnyD1jpJj%nBdH&lCJ((g@Ld^*<=vo2mjXepK=X0 zhFu410#nwyw{UD(pBx%^k&zx)Dmx{qZ0nf|1*8>T-wCbJN0qi;4_jznZ1NWI=z6_L zp^LO-cO2*}dp&1_Ev0KfDmV`bpLOKOswSS^=l`7+$VdP8yi5bWJ zGV#0LNsoaNM=p}%mU)I(tee1t@Z{ap+>ox%LXtHov+&wuUlK-ZtT_`I9?^Jruj~Sv zsl^v3JNq|*cBT7JOP?TLB^0mcmt=G!y|7j41GShy&z_W0UJ4DG}#2dDAZkfSvjvX{r-=} z%w4e{KqkMfny1E6(AC1()k>@{y+`&eOi3qlRQ|E@DBfnAZc@jXbIwY&wh&ieR2*I| zUhHpmt=%9hYOoD`{cx3TG_&_C{@k)Kze0|$d@aB_wt)}_I#9dYBHv55~;$IVh%r$9S6F{=6$00}360(I@|GzS&?58(hbPC~;} z+?lWylYvq{+ob>H7DNqq>=}r=(&FJ<;_JC3+Mn9UI&)`7@Z>NqfY`p=Qf6$B@#8|8 zSHptMt3;+W=GhI|5p1>PhpJ&{j74QaE>U_VtdQcTx@det@=kD1Cw;%_n^i@v)Jx5X zE?Z>QK}dSvE0e0e+|Q;j6Cf+$4iq&=r+aA2syoJel9h2zzL`bB<1F(z79Q;Fua9Qx z^JAba@T=vbOYtj!OG?ETv(H<`qU?n7aGLttCH)42qpyZ1N0_+K7XzQNbBEadyayGJ4S9f`CUqtCV4dD?<9Nepxhb1f;qk;v zD<(`?l;j*f*GEV_K$!I8Jk^&2o;{P-!R&JbLj!BaPe)e8G#4h_!*UXz+TWgDgnCEk zW0nDrde&#_&jh!ESHe{#2K@m4+$jJ?RqAVgfzi@q z2hi`VQ~dyQZ#m99$Rd6;sP#|;c;WjGhrrVwKuch8gt{*0j4hM~@%#VPC)BP(yj8&$ zFSVETE=ekc8*+RUj6pFgJeATS!M)92<0M42w2_7#7n}dG9BC20GaTL2I?(7(5L8T_ z_4rqClF9u;jl=kJ+YZE8^F_;pBoX;1tES2O>FAoyuRpQBYDwHE*k1DcYV*P?hv3MQ zz(>O9z#{q1iiAPQK#BZQB?JxNB(NI)(IV$AB1-&!0)#rz>|}L%QoJtY`wp-3hIPd0 zUKAB=T9Am;M#9`j{EYCrPk{q8fv~U8m%8}W3rlXc!RG6gM_3E_P1Sf^%Q@AR{pjMozKg?3(c191T+TCERt zr&rJVL!I4Uf7_p{!teex#7&(+vBh?witC7fL;|9QI=L2iB9`G6l?br0GjxzPUZ@@V z-Js6+o53q?WX7oAJ&sRaaQd#4V=J$TzVHWTENt*7!u2DkOq{;Bt+o6n3l)n-kOq@Q z_$WlXSY4gfOknbB*C0;w38rj$9!=s;WE)ljlJMAaR!HCUptdj@d9o zCaty5*s>(=?1U7W+yjWg2)Q%)I~Nc6EQ7EnUZ#iJwlROd!^1wCR6-wIH4cGjHm7w} zGc*Yc64U1OHGH}U$HyEDiitkT55LlA^gq2=_Na$wAKk3wWfYc=h?f?!ntV|X+@?v^ zMq{X{y0Ab*qW4-YM6XYw5sySEk)cLw{z-;L{@UhfpHe}n z3`1MA-i4_WNA1KpAdw;)(yP|iMxyPz`0-Vi&A=gbMAGKf^t+ee&T1bQQI6-E-n(=- zc0wyF#CbRBMu)`lQ-bl#$+qQ=*>cvpLn1|PhaFeU&)4#i+t~m^ dJobEZ?Ad+n*&7{!WN?B6XDC=GC`d>s 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 NK0JDGe585t^&jX0Rw)1g literal 0 HcmV?d00001 diff --git a/img/p/1-45-small.jpg b/img/p/1-45-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47c8f3bfc52884d406209cfb5f2f0b742fccfb3b GIT binary patch literal 1254 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 TP7-!fPJu6hPk`Ihr{(_zcZ@xi literal 0 HcmV?d00001 diff --git a/img/p/1-45.jpg b/img/p/1-45.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96b6abb2ce5e318a1db25414c9a763f05d0ac000 GIT binary patch literal 9490 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 literal 0 HcmV?d00001 diff --git a/img/p/2-46-medium.jpg b/img/p/2-46-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fdff1e7f90d4ddba8854e0404130dd394b17d75b GIT binary patch literal 2644 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 Dv3W$r literal 0 HcmV?d00001 diff --git a/img/p/2-46-small.jpg b/img/p/2-46-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0abadf72d096581394630656aeea9a3e1ef6b5a1 GIT binary patch literal 1487 zcmb7DSx{3~7(RDPLK5P=Sy*IC!lITXhP{f=fKowRf})^O4Jo4IFo?<`j38hs6%~U@ zp<*SpD1-{eCaf-qv@%!~3J#)!EGlReg%$;?G`*pUKJ=ykJr8%zne%Pu|MhqD{QwUR z3* zvbbM{4=6;JNnN%CfDjnNX3`+vkkrK?*j%v`bCt-{)1nXv@`KVtE7_lx2Gj@coolQr z>dCX_wdJV7UAD+;LM6Ev#o zF!7;@ZP(*|&eww&`@CHwxQNUb0aOY~eeVP&H&BAj5xXgb5^09I0~dtu)lwQS4=xw*Q#9Vr|h_bjs95|IDDXNsK2$i5913*-#3~yOaSg{u=gBT;+J` zh8&UHFK_lQK4msw`QRT%%;~poky@t51sD|LXkY+C5?*axppCuOW{+w(k1(Cgb?++>jvuDKwQZDw`P>Av&BwlVn0 z*gStjO8<#1kqX4J_>6bhhUUUIPy-%buyprqNS&%{6QP~Se;S2+-I}pa^?dlGL|3?d z$!PG-+-S~f!_eB{2E8z#%=9co>J>|*B&Je5z*mfR%*2j!7JMgE86K4o8pjNbTnjTd2+X zOD+qlH`_1q(StUtBTiz`K93Pzn6N+AE3?4eQF%D=(r=$}rnCZtVHhr~H-}4XYl>1cx literal 0 HcmV?d00001 diff --git a/img/p/2-46-thickbox.jpg b/img/p/2-46-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e38056f4621a1e81274026bcf0097a3efe4d5fae GIT binary patch literal 7778 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 literal 0 HcmV?d00001 diff --git a/img/p/2-47-home.jpg b/img/p/2-47-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb63c3e3f7d9f8e81f2bf8705eacb67686544579 GIT binary patch literal 4130 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 K5piGSVB$ZM9uWfo literal 0 HcmV?d00001 diff --git a/img/p/2-47-large.jpg b/img/p/2-47-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67472a981e6f7ea3c32058047940a915ed1a72cd GIT binary patch literal 5675 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 Qk+6&8x&jDZ0j{S12Wu?E5C8xG literal 0 HcmV?d00001 diff --git a/img/p/2-47-medium.jpg b/img/p/2-47-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4979c2573474399295512eca842d10b8ddc82ed GIT binary patch literal 2486 zcmb7Fc|4SB8-8cC%#7Y)3>gPw;!MidFxHTLNm<5PmdV({h(E{&;`C`+1)0y6)$C?q~Vc@>>9OwA*Y4z+eCX zgFaySHDC=O;P90J1ri!4NfZi+L`h3Xpe3==SS&^wgTcwjf;btx3qp_h9BEVK#^B0y+^@!u1Mf(oA+B%s)y_HWQR z`ySO$rCI;2Z0Nbv)bfn)G$c6K7r2oB2gw1mur5wL+pPD(gT3*|Fgx9nHZN?WkN0se z0VZ1EBWhjDcw;-w;-X}V(-2p3>Q!@DRt_(1;1KOmk9q#%w5r2pNA4Gry27FwV&gXM zVvUp>_)tDG$S;xl_zYsJ0dbLl?v-p^P&Y@{>2q)WzSo3U-csC??ay!v*F9lT(IMYC7CL#?mkc;TP&)ra!8UKhKq zUs9e)-q=jd+_mpgsOrNVN>P{nXXXxr7rvq|ZR_aJTvuO_wWoVKg3NU!Iaf0lk-eq3 zI@y>HT$PvNV)g27;p~CN=GEByFGH#_*m>Dr&4wOfPpm!iw~U@Li@nhudM6eEhFrjw zRz&&IV>WZP4*TodAAIPSggQ57!kO#2;%{le-#l&U?vt^XS$;$_>GiCGUs9x_V)2s) zk5rUs;$r*sJX55*L`9y_qR!*N>{;=fu;R8q4hnjuC@05pX7&M-%YZplEmb@KM?ho6 zsy_k_nF1+G(6v<4`KL}$&Ky?ZZZkM)RPVD4p!a(ZDwhiGRG!~&Km^Qi866WA#X z4*2%cqfco~eM9(U=H7ZC@dlfM9AyR zJa}2Mj)0KL1Lbw;3^x`>{0}yK1-p!HqHGcNZI-zV)O;#pPSickSXjAn z(!L9V0cdl$rfHQC=3uU$g=k&wZ)Z4^+RuKjqD=|}6aPVubzT3@A8^mLtB|uw23?BA zI}Hj*Oi?Pk^00TJA2FqL!(>6RD&NMSjY+pJbSW|+E8wb4)370w!c=_8wbS#)Y)a7U znV30seU;%iI2j0h&KBuCI*_~9VY~G% z2}XS*^Yo)@1qttR@843E(+KD*d;g&@o7g4f=8Z1{x6igXN!I4Nx52!6CQkFAd9SH| zmD$rS8x#el{img}=93xwT#)Z4ruP}iYi3`#?`d5IBGc9)*%PXQZGCaKoF8tc>`Bh= zN@p^{Ih*E-Ypw$aF3w;F623c7Lc1E?3gq6PfOlyKg|_ z3Ng?v`qjlX^AkxI_aC&)^tjwyS3#A3wtMT@%5vtVs?VN^`(y>B1VfE{3f?@~Mq?Od zARjfnYj+6hbD7ytaGf0eqShvoH~mxAVz37NfKx<6MaGyRZ7W$bcCu&0*=NJ?T$dXh zpYZcC5mJXc{GLNwI>vXb5}BhkFX#F1H+ouS8!VOC0jNuWsOKD1{EIA zIm3}v*Jm#-1ON7LsHXz}NP3#B$6oW#B{N7@xE=PA}1TKa!E;+HJUX{=~7% z?Jhf2Zs5#H)Y>o9jAV{UV@hjx+eM6TxM;hOJ;N2wDJ*R|Bi=}IDTpsrHnh2`ACpJk zIA_G=rYPmcR6-;*!SB_8-tr$!6RHN}MTjL&oLUUlsL}3yCknkV=HSE0ppW#5GJC4q zgoesVj>Z+SXKucB0dcj2eC>9jOV4WcOrb7Km*Hb{x9Llja>`XzP|>Kt5)Nr)py@KudKYt&R@&D4c__R)6#fgB;b?Rus= z-?QGU+bUK(*`%2|XE$j;y-n$YjkDH2phuMYGLEC90aRiWhIfi0d@*lHU@3)f~r)68%TWT!>H8u==dpTOB=^6i#m{C6H za9E^~gl-#D5r2LR$WUdzh;Uh+%+a_+l1JTFo?y6Y{hiJs#x#pG!N#7CejD<> ze}`7&hfx3gwK|)2$+=QN%rr9J>Ua_@C}mSXeA?1_vT(#xOBCN7Hs(3s&t?wLHbhSu zZl_qi+n&i)k29D3=pR$U`b|F^sTRR+U30}nPTQ*0(bLJ{#kTZHb?-Uo67>8H5RKmA literal 0 HcmV?d00001 diff --git a/img/p/2-47-small.jpg b/img/p/2-47-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47e09a44b4735f5c9e7318fcf78573da9431cffa GIT binary patch literal 1392 zcmb7DeKb^Q9DeV;bFYsX+&dpQjWRQ3MOfEP+pdo^XdIl_L9uLUYAM>iztO?RhCV2vTWPg)9gFi(*C*6`~LTy-}8HZ&+mCPcQs>x z^p<)_0fGR4zymb*fjhuZRC^&9@Z!2S&S2pBIy!_dOP|GJ>NA-JhHTQnkTPU4Nn?`Y zaCtl)%gDskm}|=B^0-#QHbUWFarRE z(!e5c0_dO&1k;7DOW+JRoMI6;Ku`vuqqzrI7y?idBjKPwiG24>uBy}VwrYy-P<>*b z-Z0uQ7$19e(~GS)e{&z=4f6*IIE5m&zbrXN+iv?n;uR!77$|}*lH&-9F#y4(ENC`| zClIZMEp(xc2#!`Lhfh~r|X2Tn< zHQ0AJr~3{L%s(2ksx0?C5J;iv#I9@Ak5u-NcVu7QWNl9`{65djuRoHm9IyL`euA2f zd1jjPTQmS_T1IKD_>UI|%BF;vgd?IC)L;nWip=`C`UC{zby{`!BswikNUlr0{_%=N z>oi3f@K0u` z*gYzTxnh@#SBvz1Hyz>)CGYL;IyrJ>e=O)mK?`r(}sK-ew^1#MX?7E}ZRJ+&lsk-MYU0(ieKVkB4JU>`ryzPK(`Iw2Qd-aZqK&3dec)fDO zc&vBN8V_g8@678AzyzSgJ6=&hNJq=mq(q+8J1!`yeUkxKp+RB3UMo8JKC>!8u!kT@ z`5A3qDUagf?1x=T9HkpT%GnybUniG$p2=Ms9#!z;1I|Nqq&Z@)FSY(0Yj4zmI4EQ=fPNgJzor>g?wgZe2R=Dr!Na-;L^)7k5U zpUy%J3sGO#DQSt@t_dEkfb#hiOeYFI!CN4Jq9yWZ;eu*yR>+u)Cli@w>xfZ?tKtCA3UlTcj35r)Ir% zl_cZKx}Iwc5K` zJ?_@`ngug=`Hl?swe&QLDRHkR`eD83JNI5ALbo?RfL>rGO zf;;6;@2fmO$eoxaA&H)q4@QGGUM3>97c|OxDaPG{hm+ThYw`2N5;%|ujj8lc_hK8LD4;9>z(@|P&4!ox%tpO literal 0 HcmV?d00001 diff --git a/img/p/2-47-thickbox.jpg b/img/p/2-47-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..274784a9929f351320ebc0a43eaebbfc89c73ba0 GIT binary patch literal 7464 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 BU55Yw literal 0 HcmV?d00001 diff --git a/img/p/2-47.jpg b/img/p/2-47.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f684926bbea6bdec4df5f4da6d04ad6df7376bc8 GIT binary patch literal 4670 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 H7nA=3XPHwz literal 0 HcmV?d00001 diff --git a/img/p/2-48-home.jpg b/img/p/2-48-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..110006570b23636cce798a4163fad1e65684f15c GIT binary patch literal 4141 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 U1^eS?B~p$~Ra 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 U_m>#mM&5I`oo{hS(cByRH#%b4kN^Mx literal 0 HcmV?d00001 diff --git a/img/p/2-48-small.jpg b/img/p/2-48-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1b502ab1577e3aeb51d4d40e8a11012358518fc GIT binary patch literal 1390 zcmb7DYfuwc7`?lj%{#c8Y=B81Bp?+PlpqKyNVkD7LUBltL7-4luuLh924CPPh*k?I zL`wz5SCLx93K+qbL8zeETCHGOl<*uBXDYTRRpwshfFW`kCt^g$wj6|$$Kniu@ zHnp>Z1C+sJu`#$Qffn$8?*RrtFr3M<_5ePH0F=N8h;LlwKW2JTzO{69u7G3m&)J%J z(Z?;|r0j-qz>7$Gw7+dEU)^W1c0ruCokM&xb%J3dv^AMNk+G6NpKckDth1 zuJDD2u%R*pN7b(;)YE_NDyk9I#yC7679Y4+8Je_JLSMQv<;2;yL0Hvh-!G3zIxG#O zzS+D{R`8d5b;iEOSyi{*@^>tp>M$SAn) zozKdm{f1H(1YtTu;IW2n>ssc^RnqzgaU&Z}!B;M%myrNP|C=U)l0uO}=|gK~$Wa^l z&&C^0jTIhOS_f;Sn#ec0Grmp;hUg^(6o=qAYc?+w{va7brRK26C(mS7xGtl$x=ezS z`@Z*2aLizoBjW`{bWheYJ1WN$0z41h&i1|*Gg%t8H1gTN2Sep|`0o#dxZlS;|43`P z-_m$K;N`lEMD}je+v}|$q_)$!**~@q{FIz#xO>`t-c9=Za%`+*WuX~QC7!2Qrqj#9 zm>J}qAi94bqKR_BS+ZR9eqFXAV_|;vrB+#2kL*Rm-MUXaJ6-U|qfeTYX1(13Lw&;D zGkwm%Hc##ZKw-elxx^6?C^Sl);V@lcGLQZ)Z+-Z>1HlT>UJr+ZL-Q?tQx%$l2o7@!0DS=Iau-AmPFG4DHin*2$ zQMVE$De6YwCHb*gi%aho6&WFJJ^{7Bj?H!0rbVNqb$J!0QMsYjJQpVs1bW2FWXIa* z&(>ev@lkT%dDUK4OwhM4^Aj(x+$JmGGZ)ZO$68Lb-mOS};=;Y~zJ(7H+)kz6V|iT< zpCZdm6QRi_%DB<8*uv4C?w`0Wb&G#t1YPwxWO+e+;$V#vcQkDHv7upP1 i4^M@78_#LJtb0B+WJwwB+%@hvU8O#oL#5|hyZ;7`e8Nfq literal 0 HcmV?d00001 diff --git a/img/p/2-48-thickbox.jpg b/img/p/2-48-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82f8d50bc022aee280ddce7e4e8227b921d31326 GIT binary patch literal 7431 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 R!q=|iNThvsDe!#izW^~PRiFR> literal 0 HcmV?d00001 diff --git a/img/p/2-48.jpg b/img/p/2-48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67cf9de335c5aa81f21deb9b1444aaea1e55fb32 GIT binary patch literal 4639 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 L`bGg*m?QrN8}nZ5 literal 0 HcmV?d00001 diff --git a/img/p/2-49-large.jpg b/img/p/2-49-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15847b08873f5a554fcc45c4b808a23f8e8ebff7 GIT binary patch literal 3948 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 literal 0 HcmV?d00001 diff --git a/img/p/2-49-small.jpg b/img/p/2-49-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c6191a37217ff4196008facb19030914daf75880 GIT binary patch literal 1041 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≪ScszsOXV+vAFz!dcP4N9ohrUnh!RD3+KcX=>#XzZI+AbO5g_w-y@#H z6?TO#>-d#%zR+wwsd8}>E$<6${&|X|Juus=UHAYOm(xW_vcl=6oTZjK`dMaKm1rjZ z?s(icD9fsJ&hblZU8KzIa!hIH!*_mkJ+iAHW;8q9GQOpFzDQ?$4E6Tm^OxFbCDHt` z@kc|QyXbQZo}o5@$@k0(E%DD*R36f*Z_gj6=nKepZ|I*=$|j*4kS2JyWsa^YzYJQ~ zZTPo?l~2`PGg~CKKqJYkn9VO%8|j-havLeNA1qX~RyJGMY${#z6dfPi?(vJo(|HW9 zp;nlwf%3y+^w&*oVuDJ>6wW>5h}jkE9|hU+aW!_2gSr#Ev(5HZ25bge szF;*A9V=8by6{8mwap{Ee>U?5l2@8;j^~au*_`_!gYL+m>e(9oJB*^Ys{jB1 literal 0 HcmV?d00001 diff --git a/img/p/2-49.jpg b/img/p/2-49.jpg new file mode 100644 index 0000000000000000000000000000000000000000..754de07394c213ea82834c4fc74cbe0f9b695cf7 GIT binary patch literal 2988 zcmb7Gc{tQx7yr(N7<|W!oy?FD*|$h`#u7D_@Ix3&wqyy}5)sN0Wl-6&C3{h+C`*xj zk}`HBp$KUtW!|s0_kI6)pXdGD`#kqN-+Ruz=Q-zd&iyim8B+jgVrXm#z+eCXg9gAD z1@r&}9KJmvAfbt3L7|XH6e}|`6APLZjb>wIV`Jyw0@*n*9BgbL4~W6yxVgE}oV+0-#MN4D*ju{AO<) zMNOmVQ5bh(&}?O>Ag!+P1RWjijK50;vQfc?!OFbO$2=dyhj^yzp5(emF{(bgHzLK4f4aP%xx^>6uy}#reC>GJT57SVdi1%y zGpcZE>|qNoBV)p@xD03!yLeOA2ny0}5P%_}?7*R*{00n;Kw_AV!ip z-Rj&@=F&df5w$J`knQ_GJZX+jarx!}8G98)HpYLvF^N8Vu)2fZV; z`)_**3`xJ`?zQ`<6q+T`lqvF6x@C0mgRik;T<&JB!%$uuF)S#gp{qlAZpJ|TMw+mR zo1o!w@D%-7%^5buL~ZYWm!in>h#b*cx6UFr5!Vm=uHl-k1m(*72E6j|TIz(=<7v7Y zXH#q67v7*aKTV&jHN#$8@ml5$yJRerKVN`G5~2Olbf^E!{y-r$4qO7OUOb`o(zKDD z^`iQ#>vd<=(5=~W&MoJd(0tnqoS>*Mt13MF`;+|g?7Qd$kq#)4ILzM!{?4QG&$J<6 zFfAD7e<;BJD9A!ofWvn{b&mSO1OSeZ2QgfDf(|L54yh1?b%_y`3l!5nVo~^;6HHq0 zG(WM)Z>dYcVN~U9D3n@ts#$JxupY+)tLc z8FJkK)I9A-Odp%5Q5E297-cdq5M~D<)v~UolX@IX6+E>%1p?hCESH+S3(Lm!T`TIT z|0H=>lMq3z3mU1jpV@7PEUu&rkYX8tr)w1TiL27085sKODxUAu1hF+>jNvS4=zSa`Y5%GEf;MF_tS=q zjmh2*nS)xB9cB-f%)A<kfweTX`@H zL7oKaq%XS!6w1ZaQSs9&+J8zN_;4UT&@;$ggt$-=vJUwUqXto-R}#ac?N@rIRysQAwH=*D7$}NO8e?R=&!?PXg zDpoa}9YsQGt%PF=(s2UjL#o0aME7+6X9s1An+-}yb7l=5!3e=eR}DoD6wBhTiRafz z?7n4u)Ne_;?+)RieF9%c1;4dVTs`^N400iIKrHwT7hmkV+wP&su4ZpSq0&+uknvoF~v4N^@;rp6{$AbCU;s`me;o_YuGQ{{m4WINWhcsToltUh>b7fT{GL2KL z?Ux`z5WLdJw@RyP%2}^{{Q?^vy{An7ybcm14#K%ak@c}G__RVKsP%Oc%Kgu`3P3>h z2nq!;faX`P$LbjX`GFu->+R0@%^s=#s^!;*)HZ)Cw~t+&Fzdj}=}fkq<%^92fE{SL zHlfviA&6@N7^sl{>n(&~01!|3#jfoR0k)+c#4?i$vl22JkqWxCxvz?lT=RHr@64K7*90m-g>-=iV3Js|YP!nQlfpL<~d#BLpuOF#^m zURc+Hr%o^bo7`Xo4pks2Ezf>BTWj&~`c2MHCiM~XTO}&TR%KT${WJQ|O6bA)~+J)}{%-J6|Inj?Ni~)8()~&P-+w$&pbQ$`NYPLVx8fZ^cYxdtL29vsoYs>I z8yB*$0&d^5q6)sY_0K8CdtMzqU+}DMw?~$_VE($XSI^U&k6+^5>_}H`FFt;u4qra^ zd2g!_;?t@d0PpRN_BE8u&V(Hx-CE%>sX6sNv4y6X{Ud4Lpo$b9d3LYe&Hht?!Rl?& zB{Nj@-Gd%_0vnS3mX|RmC9C089h)L{S=YJ?+#^itCdP?$=W~g^?@4(U?5Cq7HC>qs zN@iIa6q7=LP~bQx70r&uqT)r9OZ67o?z;Np0CpNYtfjVSK@ zpmx4~hHa*TT9bHX&&I2Pw9GcMlMU^@~P%}Ja4keQ++!=qrOYuH>8xMGoG^ZhK>;}oZ5o;_Py4BEc{ D-<{#X literal 0 HcmV?d00001 diff --git a/img/p/2-5-home.jpg b/img/p/2-5-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a91c78790c866f40211ea540b09bca146a273a46 GIT binary patch literal 2902 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 U10@nN%)4t8J5nGy9kDdz>02_=8eo+Dg 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 literal 0 HcmV?d00001 diff --git a/img/p/2-5-medium.jpg b/img/p/2-5-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c42763f57e69cee3c7faaeba10dc147601b4d482 GIT binary patch literal 1790 zcmb7EdpJ~S82`?kb7sa|IENX=Etg8O+Nl|Y#WG1kqei(lYd1+Xs9b6i-J}bZY80W& zmQ7eGA=-`IWkn`YBTvFgbeY<%$XcFtnLX@oJ==f#e%~MGd*1gu-~0aF-}}>aYWe`? z0kGm(&f4R(5J5JrZ#hX_3`LBxlwDRSV9nP_$VwTUCIzGs!-m5ihOB5rQ z8{ywkeQA~2=GNIqkCGJ&$lHa)b2>y8Tns=kOhOU(-%MbLgaDL`;ktTr=GswM7PI+_ zghX0YB3TF}O*}t4%Z4_jy~N_nIv4d*S+!*NiE^|$BF&QB*(!50{oUF0B(2#u)u!jz z(_01lqDdR?xhE2}6l0Qm9)(FQ+--*Eq)txSWpCX?rAam0)ec1(;NiMZVSUTbL~BD@sPqpWY@DwWiiPb_G9Pcx0L95W_#-msVlmm=UZskMT`M#M+XZ z05=Tlxm46JF-86oiNh^yB<;MLJ1wKtmHG$w^dsaE{-a5VbOc!?R8 zmvttF?v*;UsY=l}8Q61t2h-r?hM~w}W23sB`yx?b_F21)*P2VCc~E|e@12#MGw@nr z#PGlfAir+~gaeDkewZM6kRKK+zi>@hcmH2nx>*eMqN657b8Y?C+?I;H8QlAxTR~vq z2JDc11nlY7u|T@PDZmAeboOK$E_DceVCu;h*&7`Jz@;v!gr$(WzLAg3@x$YmPPHw znLB;%q+R9BmxPwJxeOC@G{On?{fFTMUYNjq@q3D6Ros*5hL__SZh@8ZKI--|Aoa?PkIxsZ?51F+bVY>F7Yi`P*9BuNn~5yyp$;Rt6Wj1}u8f^m3_y{7FDh znGU`83pp=nk7Xr$wM5VzzNR{;!mp`)PgJJB`CZUEfkAe^ZPMYf`Zv_7@sY&3+_~aCrRTRrO2&mX6ns9@-#IZWQv;|> zs{*6Dfy~XW_NRJADE$juQVYw?FnL6=--GkR9DPT0qDG16Wy#hI8P^7v4GY_@{9s)p Y6Xj*ESFgLY?@@|RB~7P~n1)Ax0b-tzy#N3J literal 0 HcmV?d00001 diff --git a/img/p/2-5-small.jpg b/img/p/2-5-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af4f06eb127833e4040d97bd58b4f8fabd15dd0a GIT binary patch literal 1147 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox{Tx4)-7e}|`Mw@m{+BoFKg04P(=*}6LqxEXcs-_EZVwPz!4n@lk{ zS4l4s{h=QYv#FK)*9C;MK^!ndQR(ftLxS${Bx6oXFM))jabL| zp3^>;>&9a>Q+`8(th>|Yg>DtRlztr;^*38B`1M=|!5<&&fzDTj!~`oV+^39!3<8RQ zhK`AajSDv#Og#AT11uu!6<0SfHXRkbCAhFz5u{Cj3=BtUsE>ldg;Pscx`IwODV6~_* zIN^)NVV5>{jc3`6N7*yi#Klhua%_le2U-eFS`45#5YWh+AmxAG7#uB(!1#l^7RX>^ z5Hu8kN1uSBw&-;8Ge=~n6hk5rOJpm8Rf8f?z-x-B>17?gdZ1cG0bpul0s^@4z@Shx zbPQ}vTqs~rI1wHU0y~QyG3`3U;3u3Gv-PD#&yxnPMF|IsYPYb2M@nj+EbWU;(5VqS z_RDnPYK7;yZoW5~-zL1&nQHzsK$Yjv@5wHT%s2m8I<1V(e^`A)texZbWbem2UfZS$ zUNaRv@~^JL>ivZ$2PLO}EGqr@y~9W)(IDi(itz1vmRU*6#nlXz0zO_RYXzn(Dt;^~ acR>Dv{GR@Rhikq^6xesLFaA>h|0Vz=4^`m+ literal 0 HcmV?d00001 diff --git a/img/p/2-5-thickbox.jpg b/img/p/2-5-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15292f0eb58e8c6efc02ed8f6c250ff7e24afbcc GIT binary patch literal 29936 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 J0Gj^*|JkiQiah`T literal 0 HcmV?d00001 diff --git a/img/p/2-5.jpg b/img/p/2-5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68815f07532a59bcd3062aebded4e191a2e30069 GIT binary patch literal 43743 zcmcG#WmH^S*CkxIySrq>R9tw@nFl4+mZ4d_v_L-_Mo*Z!AjG z9%GK!>y~pK*lc|o%wIZ>5;?_fCsX!bOYg5Bttq}JgR`4(xrMcwegUvQ=_a3=OSoKo zN1^RC(KYoTn`+Y9UtMT46e!9+#VH<|#Mjt5P)wdXsZ&czDUQ1O`~nc+MEw7I&Mz?? zv22(hFUy{xb2OXa8Z24jfoufnrzYiQ)&+d}9 z)%dz}{l5diUSh|`RkNMhC{mCj!kJs%{T*F7i2_m*oAI0oHd39x>wvQ>-e*pa;E#}N zZYpTE`Z2y*L}N8`kJV#!nECqx_V{45(L+h>SS;kAaip)sOV(C|6$=1e(rBQaGh+99 zyn~P*WtATZW6JCRc6q)PxsBU~v57OeVQG;zB=xW*bn;$o?`J*`=0Bi7#8hrzwe+5U zvz^qP@l59QLM@8y=U{}T~xr%4YTUC%U({W3ir(39V!8z6RolT2?7dl z#D{KxVB_Hhz;P2$wqkpIp8`)Q!b+o1drZ2N+Ex3(dPWbNWkq_Kt}T^~6}-iA4UD?< z7j*Fmd36RY860Q{^#T>X`QwvMo`ZDWMZ|rdE;9-$zb(74HFfLTG&z&!s~JEiCaGac z;Hc`(pKuLCq#W^iOx~;Qb>=U}=KK=}AsXTh8njjNwGqL!OH~nER$b%d-A_nCU|HW2 zYAcXgMxo3Nsqw(y6ad2ojSz~34oHQh76wo&ugw=Z*2E`H%Q7%V321JLOE^iZ>Em({ zEu(5y21x3vu_1hw@0M49$@J|7OgTRZF|+jkfk62`bwD-idivR=v-gxe@IJW})je-7 zA$VbbLvH?_F3St^lZ*U3P5R;%ZM>;5G`2^&bQZ2>;8^ z-DjVBxc&K0q?23E-yK^fA~NcNx+c3*DlXp&T)yEKm4Cxij{OCOOI4m)IF25H5i?K* z^9vBCrN~9}tLT(QD^m)6o%v86u0M-z0QbjZ_T#=*a}CSdE6vifI`KH$D_H-57eIEP zhWslnc?oW5LtYE9=tFm5G#v%`<)1=0uM0lGUHlMu0n~eR))PHD=I@nnesuX*aO{IN z`5uLzFRc6x0X_(tJReh;mNuyrT^1M{rX!9C>qe&~`t^gkP6Uj{r5PTxb|3qx%Ey5+ zV^%tT_~EYnA8WHG^1zc777YmveewQslBk6A%2Gt@(iQEV@vbPcw=);8y@x{Sg8wFG z^4-OOQr6ObM_&I^#sS~Ag!H<=?ul1Sl=v^j4^_B=Vtl*ByHZ8y69c6SEleQQXT`fP z89qc6Tyf#<4Gm^Eh4R3uA=xEWLe`w|=65)ASW`3@qq zK1gIBKf-^%AmL%P|CV@Hbtw5&_#a649J8JS?+!EJ>TdralDBuVS?mI+B6IWPR9+Es2 zLj(KA_ql*-1PmNyooUC93KFGukv_h?MuaRzMSEIimqp`7vc>fOgaF5UG5NjoJx9*9 zAMSO6-}vR{-3%63U*rx)kmmxZNDjW7$@_Mf15>;YK2{h4{!O?oJZ4mb!z3hU2N%^jz$35A8@_$+-CZi4< zNLNbLrO+!aEO5S>KKV1mh5{5g5a^S{LsR2zPzo;$s!Km;**BP;29UvVXiLoYX-KEa zAizV2sLw=Nh)<)_qO-GA(dkq!xh%KbPZ(LIBNN*dDzYeYHgf$yanofnE7)7GxNI6H zlVb|{r!Ih(ypQ*Fey(u&}T6*ow(bQ4TuZVEkzl`F*&L zR_*AQmdf~_f~jqs&X$>u8wnpz)<+9GuI?XGp~BPMqJzqw+V!J>@h4^_?1I17c+<5)+WnSU|m>J0HLmpM5f!I z5h1Ew;hvVo<>1)5{J$XD6?DC)+qe8=I0J^r@lO*6^^W$YlwTV0U8)}z;(U#Yixhzd zA;!{RVo*SuGEz|yQBI`C9Jh=Ne7~n<_*!suTG2szBZc=puq#oToKjX;93d2gGeJT< zZuP=|Sw+Gv!i{A++4auL40cytqQc?tP*754ggAWIXa7~LZyxtluc1tBt<5^zf%Qa@ z2#yEAYf|DOTT&4yJHKtdjXfrVB_Cf1qD`Yk*T8}7}4$AC8N+ zGqV5frQy$~ms%6$2ViCEC9v2_x{Xw9Bu-QplG}<^L*(uiGm(I1T5vzRk8} zSrzW7g@6U#uxjdYe+sKCaK4U=4!h7M4hvcq0Z5%H10Tl*z2G40?qxUE8H)Lp15-l- zXTD8k&UE0bL26~%m#^}DFhm?W-%rkMZNgz1;+Yf~@EhzRZ7UYwfiN60R&XX&QD|>x zosaA9?e>fc6aTvpio5%9ke#VB^&l1TAk(_X?_k6GnRtxr=!s~;2Zz4_XTAxK3O^7Y z0$rMxTwXXWU%oF%uh@aT&YC-gVlAAic)+30(uc zIj~KaaHAqNV-1}jUsQ!pWhiWw1NZVbPJuzCQI>_n$<*hJ|4|l4kf1xbEP`)NCAZTK z?-KtmizDx)`4Pypp}9rd)Fu|buo#093mSwF=5H$OU$%I;AUS70QdUQER3YP4#-(vo zK5Lk+hL>#K+F(5tsatxATY+c)qXuXDM=y(=7P+bnjEaH;G;YHWluy=o4%w*&MKhgj zKKwa3|A-s0`=pTA1RZ^ziYt z(9#m>;UFNGk0Xd2H4GIOGWG0?H8l6X^G7mlBa;Qvh_83`=L}G2+9R+fjy0K5YRZjM z$`@Ee5xxk^!h=fXz&mC5?=J79nA(hr1kLVUMTGx}gAXlBFzD`gCS3h(XC0BRT>+RR zJ!3tFb<+Yrre@0g8$6bH``OenSYaqdfjP2av^D@yV+{#m{}1}bZJDJFdM&fN1a*<@ z+PyRpB1w|W3EcCoOX-2FI_(nl@eqL2FbYTpAR<`gKily6=BZZ|d9Yml%e!BeV9{Lx zZ>QC7KP!b!j_C`AUXwkODy>7(4+n?y6uRa5kxuY{)KFT}_+t1{2=M+e9E1Q_{FRk< zRaGbbyIw?{_JuDMspE7kZfYrfcuwGVY79;+o{K24q6uEF4kB(N?y;W*o{I5z|H&8t z(d*9o+2F*7B`V|D3Y>3f&seWv+0^6q)J%C{afKqcA_E%)j);60ErJ@QF$6pgSP|ou zX(`3~;=yqsCJxhoWfL(#3Tj@mM|FG0bO^pdeAijL&Ee&IcufFF{hz(>ABZ9L1T**S zH!t45WzUc#wWPcfjM*oR&eXvvc^zHUKv7z1N(Ab#Lh0B-QCj05(bQCG|Kf0@#JLRP zrj{bcGnbTr(NkJOt9KvSYN>PnsoH-(3k=S*Pi3%x1pq6gf27Z_XzKBJO0C?#LA!-_ zmo*+ywnSQ*5-|=sR+N#!(uz<^Eu)>=$lHxKW39MV{;?b3KeO$>CSSjLHM^VX4({f| z-p$>uw;Bh}j)w?y{p#~&girqH7@YAIsZj$?V^Vfm?YNE~*hcn#$_1pUm_ayOMlMZSoO8z(T{I5;^Km92j_^^Zv z9RL9hfP#gEgn)*GgnIS&=O_h(4Hg{}i(D9+m4l00go2%ul1kYahZ>iL_Dd}IECn8X z!U6#U`2siwwxI7zQkNTDwf855GAENae%DjP^~BcVlS`L?@ieHP*?j@TExq}mwxutG zQxV4VB%?pecY-@3QNJZO)ZLuu^5*Op##Z8vGm8(rt|8G%FOVsphq{UdDyj~zV%%hl zNf2O4T`FRN~$ zi#YpYc(l?*_;pSr749@C&5?}zmjr^+9);Y(X@x@SWjRHf0p=mW(JU85n{g7>I~U@u zKqT86$vo|g-Z#N>L%+r`amk~^58GUNxY!1*bU)SM9xg}u*znT602oU{nWl2Lv^~oE zt1qehK#>U~`BM*a2Kng<47A@3JXxqr)qpNRi8^4@e4r5*>5`RdsXFcad_6pqJ|YYa zM0^r^fnR3=tg)=pi&>5g=}D&|Gq`8HDy;1~x5?l`pBNo&|0Po-8#K%->Xt6K$T{n$ zoZ@MP0N*0%{@Ju?d(# z`Ki0KG0VKlzSAT5saJ!T>p&F?T(du}BIs))Sm!?HYfIAb;SO)9qMxXizz(R|ppL7A zMn{+_p-xel!l!vYe&8#1kw}uL_Fpt^jKTap-67wPoggy`JMuZ=5!G~@5Xphffnv*? zx;0X0CpYf1aP351y3bDiTY0&!daCy9Csg^Gr6WwB5hifRL7A}BGZ-7%<$c~1p#mYM zx?(l;_+oXJn*=KOStS1AeHRzvd{KNuF6uh9BqpFm>qhn8Xt+`g*|B-UuO4H*#cPVj zboR;E19F=ea;YOukb@)c;!V;d&UQWtMIDz8DjpQZS-(SThN^)U z;|~&hJzMVO#NT{n{0MyC%Re{`nG6}nH3&R&XUu}xvuTOzMoIxwy=m!{R;7A3!a%`i zyd)HNlU!b4UAeMJn`!Qn#pFNa!aABQrdy>IwYimceD+J3q=L7#TvGQ{xf+#&f*9IlM+bo&>$CwM1oxrY(@?QNu@d6TK#2ZByi8Mu**)5Ip z^JAkP7wtmTlHp86@vUCI#3;VF0NgR$aazXEmS^jA=dv4U^pD-kjdW-_+v|GsOebI*mwTwQJ3j?Y(7p+(mF5EaP()vNR;g5oK_wO2M2q< zo3@@SC>#+!iwyiNhhPDda7%;A_)4K@H1#OMDD3cKOk1Ciw_rXP9Hr^`WG>74a3F^S z$;z9!0^N3`skF2{OG_tQ?K*bc^SrHB6RX*>$!5D%+s;2#MNR)oN@%F==rxd2W?Wax z`jI>-RJ`iR68$LIq}qcq4IGJ&l{h`kTfEU!p|2K>Rg_)$-r}9J?5c|Xjf!tWwyF!{ zb(4*q92gY~1wvk@o8_4RVA}za{sgK%&b^Xxr!Cz88YvKcIGt`n|G1fk z2F%Ll&XA&g_RvGS+`?aRJTco?Y1&B_^GKnd=7#hQce1Jf6~!P=nCIJ%Nn4I`xlx12 zkyM#DLmjpZ7VVhyplGuEoxQ)%u=|6C;`Gw1k&-;lkDC%F3t^i0deGiU;BYjEH}wVO zlPI*Z1JCtmy|~W4n8gjx=1=8EnwA0Sw?seu;qgz*tCRbLRI-LPIewiv;PiZPckhEP zhA$6&DPwqE248PRrKWh~h3=Ucuy_ZoCm*%JdHfwghqvKtJsg-1%{1-gi#b(#?t~2N zTH-vy+>1*Yqg6&2%U0&|i1vk_wQlL`k?aDgGz;>71uWD)fN<(Cy?*=}aVZ#hyxQI+ zAR-u76-hs5vExz06rQMtoqdt-dBc9V>i?mRZ$r$Q8T9oaZhcJ|SH3zSuefe;}?TA@(fxd2fT_`3O_+CMmhk$Osk{WXiNB0;S5q0vKg;6e%t}woi&%C_S8C`4BGW zogw?T8MTFMa5(R4`a533N#eAOCVp$eSj9lpH6?+qqO?4yY0CHx^5-J4kp^Q<;2Hy!F4wzGx@RBBo}Zn+(wHM--)r#)69d(Xf6NF*R6V$q`S>4+W_ zx!^ay@0(}kjFMEjYIYNGnQ(J&7y}Boa`6i1tvLqM*15aZ2&|P#hLa_1{tspmUfOfO z8AcT1cQrvAbuCgI_;a+?iz}_&hgU*ZgmX^B(&O_&)}1nbewF2HotY!_d0|4_*x-)- z$IRf*S2LrwU^CN<$ixDMJx%A4s#1+M`xb5r7T099KM~0Gj9Q;#)LsDE+gee!Ts-`o zULf-{y10lV# z(r!LQ3PrqkR3s8K+IC-;EzPs*-P~9K)4i{(pD!mr>^8O9K4$n`yNX}uUrzf$1K@tF zzqE`dTLk?YUii@Ru1twLP~h<9wMou~ENxduUIQh2b$8C>dx6i>$Xox49zzsaUc(8^ zW!#F)9H;(b>KXSn-r5c!)W5#RCPk*#SPB#E925)F| zXej^W*mYt;|B3I+u!D#3R{>%fAs8Q(5kASbs2_>W;P&9FB?Fh=$gt-Hpg(|iTE%Sh z+RBBjAD_Gl6^Eak`w}F>K}9Lq5`^vjE1=?1J}Cx^7eExc!2~s}YIm*BAMW_AnZbga z`30c&s^cO+fsY*#2BYaib&%~+R0(-P6k35La_Qee#k<6LE1^;2gKPe02Ik<&PX*R4 zoU5XzLRLR}x8zH(7!;~c0R=q1sX9*P4)-ljUznUTX>6;z@0Umz+*jBVzv%#Lx)gn> z{Fz-7%N5NuSQmW3^Yt587tG+U7Y^-f%3O;oM1Vq4ci9FS>!aDjz&bkWaBbwFU9mnf{aZZq}kZd5FIdpH1&8W5y0pqAOU-K|t_zJ@x4KC!6Lc<%H9C3DP zY+qS?EMe$nY(w*Cu+QDx7vTCzzxZ*CEnj&M(s2wt?!ZCGF|rj$WL@F8gmM1M-k9<8 z^46abdsQrzHyE+^R%&f;c*xf$+0xP!EbQT+=6G>aU&FHoQhCL{q5!KyV)s+Sz1|R=4ARt2L%6u?0T3T(%TM>48CyJNSKnCnPg0aV(Gz|VXN-d{MMUZ7$tlCB-ETGDz!q5b-0@fO zkCh}*$rj&A?Yl2zW<9n?MhClVbUy&7b z(1BHdJ_{W6!*j#I{p!{Cwz{<}H}7vrekjpWk-aCpmY7#WL81XR!c!PnkDrH=LJqC7 zHIJ2a&AkLXZx*r>vM$d#4rVQMvUrd)B{%7LP`>6Fhh^_tJ?J>el%!3#wX`+%dqRc9p=QpnO7{=MCRK`_Qp+Jy#nc%k|wV<_ja?e44JV_M1 z_;H2YfdEQUBPja-%a7t-?@zF4WJkYO!!3W;p9nbMaRhHNi8TATMTJGa03^~EJi$5u zHpT{&7OD~i|A;AA2G-=7mwtYl6f7QKE8LBN^<+4KrZ{D0 zS~^lzT`3V_UJx1pryV>inMKG(Y3BDR3_iXg#Q-0~fX{9I`@jnZ074mEn1c1=7xF*n zG~kznAa1cZ1b~)~0vLth4`ic12W8T-;OBsk&%F~dWYsn2@(1wI(ca=xdhbQ4TCzPc zawqdcqxiZp$lkp^ZG!=J0Ri)`qbLl3vM~hML(U%$kgp!LLB)aG%aHgb@!W(SZ@q%R z>mnHYaCjbnvh4SlNX|R7_OA#?@d^afq7w=XOsi z$8T~PyNK2Pq6WdJnSF`v`Th4<6RZ&Utm#Ll$%mjup(cip`m(vDUvL-vmudL1@J%}k zrM>{Cg5c3`3*^c2h<6ytGhLB+N+Q3%P+R0rGm@h7VFIVRLD$iU&t z?&y;~0=lC@hVdRL`sj->dub&mZ(9oa;hN3wzi;$Jz^-r?)yYnLa+;IG@L-qge-)eU z87}>-W`;-OiA)aURk*LR*ZU-6BjH`)Tp=9zejbfjHFTie`6F z=6Zz4=yM)y4D`kD2q}fNq{&@!!WV6EYi()~RBBNX-zX%7?X;?H{=-1I3Fr81p;_F zDMQy9*Tf7vx*uUTGwz$_=9l8vZ`CBnmh^PD$>vD-eM%|o9vs`vJ6JN);1zoSCoo#U zA3mGTLmDx+;S}0NlRxyas>5rAEiaFVEB}O&?sF18F~{d|Yj*5+73%StBRMEOW;iJ7 zLvL+1I=1Sy-_3SVSl?Q!aVEinRY@j)_yg*0?XDOOACs){E)5 zmd492Ax8O_IH|*EBc^5{f;3Q&{FnKDIS5_8uWrr)dqP1{f)Acdg~=nBVu92^H@HB@ zji5l9VT`0DV(C?X0c^4SioYHUvthJ^pxP*q{_eFu-=U5l)4Ej3%G3CSG%xWL?VH_# zNsPO+y?Rds=EHn297KmSFz1UPdP$ldm62|Rx`u2DpmA88+x82NZ3>Bra;4CyU-~L} zhxSiKr#x8HLb>JC6x|L()NRjcU8cab!zu@fW%K})$#>nc*6v-FF4J50T7ZhaA5ijYf)~6*1iJkS}c|Z)h!LR24%p) zJdSOFu%0lZ5m#R+pugT-q*)33P0Tv6M|rjv#l5KmQD75O+fwx`92br7f+il0um+4= zeu)#~7tJA~Af1&Gc2%1ZApj5rZFrAYn^c9g)O1s2jy6&96|Y%Ax{dl#-9bXM`31oI zJ1ERfS)!31oJ_OuXHT$*6hmc))RWuTFFgz5C zc}Bd|da2QDo$|2&wNFb(DeXUdP^~OjUPD@B z-^6Of+ntP?I7EqdMlh%lede8?U71HRi4&I@fHtvNb<-S71{#9|J*9^05`u+9CiRNXl6_$@@v}hqOrmJuYAG0DKOLibVfr|E{(0Ad8 zQ@+YOFMyHZPs?Xg>SW!^EDu&-&3g5^1_mfC&(n^GsYw~#%$CeRzJ!Gf(DA|Gt7>eq zt@$QvN&4oK)Gj0gobnzpe0mw1f8~~kY!?iY;LK}6$8^nJ&I}$2UOacRJGC`B8#q|h z^V@^E`rPmLo_bRANkn$heWV@lCX>O|PIjTyVl1k~Cqa!=XruxwV`lidJ;h&#Gsh5{Py3?GT3BA5sQn zB5pr6ffLaKM*~D(O+)%xFmFqzv%!~WB^PDoY}T=0{qD3lay{IaF9iFK@x@FBCfq&i z)h)?W;^al4v?KPX`S0s3E2Ex;LSfiHvOTk;?j~MkV4I~#4_p)=j~R0%ZlM?sr<@Q? zn^Fz~VsKO8XG=FDA+lSSO(MxpZ(c)wwTk!Xy~5Vr>WgDbe1UJz~UBPtOJ!Y{J#4G$=@MTdN@|YAg>J!Zg$vO-2=CGr(p$Ad33l5B4eR^0%uj> zww7O-qJ5R@clNvgf`9h-^}ST7JksxF$P~mymLb+ZOq(Wjxypy=2hpWX9&}&5j^|gV zyMmb>z)8_6;!Yp%yBK`JC-|-?{~dbgYBq=J2q#`f`QL5yS3%HMNf^6;sl_u{*Dmm+ z0#Z~hT;&C4>=4{U9!~pN6xYXfD&UFnhvv{P0Q}Y6G_>?jpXq0nR>Pi82Q2eV`$%gZ z-%%+aWT2q@^;UN^Fd8p_NXw|1X!`Q~LV*UDkQh=qnjR&ad;nr*@fbVV$Sm`OQst9koW9v-7?xk2+e!@5wyr9jsP?wS1e9ICi?stad06H zSm4Vg|L_TYRhkPOs5qzCq;^O#`Zn~GO8a9uDPi@z|9)&5B>ft1bKp9&!rkZiQ}l)yw3dX4i52kuhq9kVqWb{&Z{*4 zuT*S+DMic$iBPs8^kL6@2%7karglyHaPF^`#QD>b$W!e*X;o5Kj@fob`5Vk?c3%lD zZ(Veh&WP)d2JHHr{>OWze2!=Qhr*h=e!10*h47(@sHLoF(Bzu$DrTG{M;6^NBqTn2 z{h^0w%^!MX@RSgWCd%sk*tN~t<{^L?Ao490{aVTUswj7eM}Me>F@U~Khbp%D?hVZ{ z>W=G-6Mz|mV%dFDF-54}rDXg#8_b_E;^l0Qt?teNE-RxMHA)B)&47cG*4X+*DHUm5 z7T9sgxTG>+Jnb@M5(Y-+v^|@5*?HZYeEUVv2UUC?>aqwpoX$jh+Lc6wAiW6KW;WvP z)={ne@0t-?sCQMiC>2JBKANLK?!P)`NEuTDTFPXpCa2^%m9j}jB?<;})I}(-z&lPm zsb1OiUQl-E_gd}m^XE`LpLy(?W!^_u;Uckgt?>G$aEm#e=}|N$72s-#7BS2xAaFa-#llIQXAL13+apGK;7{x|T z?JQ$E(b9xQA7xHteXx%>P%V|ti3-td-VVhql%xbpO1*Itx)WeL8pwQt&J-|1JYxPu zwHl_6&|j1!wc@`NA5AMlS&YS=QAO)c=JGi-LEXnd?ki|EKqU-O_v>@B5^+KT;l(}$ zLNC%TE7idZ;MOvNnTlqQ(-&g6e&QsNvtlr2(HBMjV!cctt7wru+f{y8-HV>0evg1$ z(nkNJQ9WrJgp&U4r)nezw-9A6t1y#lwyBc;haYDXdV_W~g;d&0YAp2{tBi9?Paa+Ra8#Ed|h zPq4mymQqD4eI+qf+tQEm@AViq-;;ZRwSiX9q;VTvAu7LiKwz!2z5vB z?~QMCW5;`{tdPNV)%9sxQ{FDTa7tbkx~8bWz{xiF-l;TJ$fEY0jA^^TL) zmnY6;b4_RP1L32&(Qo7FTFAW?= z8xHEp*UUb@FjtE{Z#4P|#R^0=b@`-w)wrfj%N&fp0QkM)e`F2&z+=uN#y%piW=yK3 z8rNKeuLoOArrlz&qVA@2M08j_hg$NJ8IGWbYv5O)wL?_R-AL>{q09xFRB* zT=$ro)-yz0+60j}&B`y1d`wsJrtC6?miYJZz~ggAO-h&1((62yaQgtaOHp3_&?<>@ ziF!E@PSHWX6i_hj4oeX2G94oNge>ldpU-t*<)BiVnH9$T16z`i-Xpres&`II zgs87H9fw=zFxoOsrwNlrZC6s#tkp($%me5C7^m&J$vzc$Uqw#b0m-ZK{KdZal(tyf zQ`ps$mi`BICRw)`8mjMQ|JOSa;xp?j~`@VG={nZ}KIAMW)veT|2*9l4~y zyeW#dla)uTH|5JZv_-66LdTuw`|2}0sX%nHmJ}_e8)hcJMv0OMT65EaP^B~1He7!= zMin4hu3#sV-1=M{>^uAyKqVKUph=Ot>Ecx=w1+p_xHmLe28X|(^bli^1Me7!`$TPBGx}3EFJl&C-G5Xn#79K=edfLU=SzuFO5W?L3>xCSPa+aT5&- zVhG$I5H_`hZi*~=K9tZ!$br}eMfDuUjwR^31=f*mDQSo{qRpKpt+oS;Iqu%EEjA$^ znOj=HDsb@(?H<`BDpB!LWyCCwj&O2m*WF{#4n-Zj;Y~PfeBQwWwT7$zZetg&rKe&q zfGg7E-q)&S4g6X4EBkh1#4|Wb4@6P6lOn8YawcXJXO49gh523{Av!?wY`gJ9hm!QY z0{rky@FIzAXr{_)uh~0K)=M`0jTuhb({4(|-uK0`&({KgK2Hgfm1( zP&f$RwI>1jDLt=tzOm-HBcfrthtDCk9q`t47|e?8FQofEI>U9*~u8 zgI7sH9qHm_^-c)C$tNJy^IRait)`%TAN!T&l^Nqp=4^iA46Y>UBL@_vA#&Cu8@J|A zH!edPrCKb_z4gzHC^GjalFqmn06h6udjAW73KX_?ZSD3DuZh08kAw2KX~f zD1nWf{h7$kKhIUUJZQb*k7CL%HkOH4mFRkjd-v>%!H+nh(Yc87p{B48NPZHlWoJ=- z5>FO#NC$VEc_WA^iHyb`+yTOK8@1g1blcF^&xatNfV zhu}`*U388YHmI3xf3~G~*2isqrM}ad^C|r^(x?6a(K~`rBG&IgaqC?t26*urGaS7P zqilniI@bJT?966IR$|@lVGKH9xtluZAF7Wxsvt>X6%K?wjyJu&NiZ%^VzTwfY<+@O zPq6wx+yMVkfP2U5oQMH|@a+bF*wz%ezXi}*|1tX;h*qsm#pVe3-5YnbZBM7)lX>we zIlOiy=$rAZy`R<%$;=JasBgRuW`B;Al+DXe65;Kd5d}UDvpRU&a>~?}xYRoi3Bwy|Oo0DlN|jf7 zu@||v>vJ^_mhMP(B~%+_#ZV4>qZu#5&IXrLC33eErs#`whnvPZl{i1CB^oECH4M(^HPq!x%mWnOw0I7VZpLvnHNn~zS-Ednxkua59@7M{dZbLz zOn)re)B&#~;(a2IVc0Uqg9Q`>3)G4>qNbK#>9cROXa52)k?B4h@bfR#<_l^-3ug)D z-6;QMmm4*fHi+6k#e8DbGIkt*LC3z}qOZat<>Jlqgi;XW6g5OV^4qBB=n#nctwhwSk2FrJ9%_VUls_}2 zDLxW)(8zKeOn{Dxxr0G90TjeJ@Iappn)~+2#jQ!iGwrK9A{1#TVVkh|!O{nhj}igd z>$|v>28W}fgEmeE<`q~TksJHRUwa(Ww>;aY6NY>YQFL@^W5}2tJ?NY|5;{{JjXw^j zBrBLx*^_l_xFzrz;RPV|eUw!-ffnJb`p1bKV3T+K<2vK4dNa4s1{@Eea{~4y{|1wL z>|-ZXst>IFF8JBQiD39>kq&WP+qF)#u~0-u!Y9&>FzC12CbI5iYFgW^%(v9@DA?g_ zn-zD=J+HugySHF^3J^~xf%^g)J<^%5iOuQm)?vVP!;C5(*g0dCzt~d*5=^B=V@V>* zapW>5(2}2+M>MU2hS`2pF_#_P@^l5<65xWAft1NFfC-C61tYbEMdf@NRTP$9x5>6%_mE?I_&96U+{8G~BbomK?ntz!DZv=_OurWO zlk}ac=EZ{d$bkb;tf$ll)~=bskuu>4ajp_g&jgZ`W1n=%oQ<792%Btpz5Mr4(&H+z zb%twa?Qu{=A1x=G$1=y&(NUkYX7X;1 znEY^!C*s<;F6~{x@(TH;Qc7AD#cvgJ-iM8<>V}!Rc2m9|&9~4Hx&hJFFo48tCZKjV zri>tr(%JfV_xeFv`eq}tqV!;QVNfpO5UsV@_qqCuoZm;cY|SaGLsZ|cH`i{_3-Wk3Xztp-cVBB@Fd}a~MpdBMTtH zS@@p2h3YWSd6stV3GS;~PXQrnEUy?e1Nk(TcCubpwzu>(nUhW@8lpJkSp0}le0gMf zEiE^+J45-yF;j9z>58A54Q|;Y*&rz1zy)+sZfMTdJ|mL3C>nTJc@Wtt84_%^uwVMC znB@xw^Kcp0q_kS>fp37}dLd{freg3$%u?8(3FpudaHnYBKGaIC`Kh$O0DKAe2NkW9 z8~sm_kCKK;HF|1fK;G0y^AZUcxR~3Ay_DJx2W1{ zPpGRADgpe+w&q&+91k3w$ii0~GbLfHdPZuF{zfd4+>DfwLGq_#$@5`HSK>|<&FI}9 zM$b38AMrcShK=gz%DpoS_~gz;iWIsfK~?&Qejw#)1CrjgLRuxt9=0l!gDmOp4qgt@ zjCUksBLVzW_CRM+fo~0OHH{_SnzQ}l?S-eJnEB9lQm(73PBZk7h25|jUu$Kgh!GP| z$5GRk6?|=zGrSz4OIWkAQ>bJH1yX8#hBfK_YPFo*b@g?`4ny6f%D>jO>TC%)=7!L# z%0=ZsQfM=q2ER)Mk;cvV9m0;7P@df-t+{JaZs5hn2!rpSUA9^)r5l$31{SQ}XOh9; zajqxQqW8^$u=r*w4*@RE zXZCy?3c~C?D033h?Dby&pTskSTE=(J*fywvJxnSkiDJTjAY_#YX6|=h@n#OFCnqko zZTM05_$lH8#t#9X2@E~MgNEzgn*=4MbJO5=g#IB+&)wdxrXK0zJHlus>xRJx>wjcHS3jBxxsN>5QI z4Sv|^lcLx)-q6ivGG*y^Yx`SveEC`$loUwxy8Yn(sg2=ecXsoYK4XcN;l;idwu+Bp z8FX4kaoUs#;6vWn=d|QxT0cv#xM+ejc1;@sjzm`;>T^>RDHDTX1`skq7(@5|u=D}# z&NJGMc>ue8qWSzA*6W@3DUK>I6vp(J^`--f6F&iup+PD4A|nAhS9*Rf8BgJF(^uM; zKBp$i59vh56~V%>1u)Z4_bsL86<4HrO7?K@v2kmdcUw%w$vwr+h}_*0fbYS=)*S?- zHYC{@EZq)FknSTL)N=ZkdtGuN3G*BMXypk|pnn`OOUhue`bd^OAzS}{#Jy!$TTi<_ zngk0H2=4Ayg1fsFYbg|WFD}I)KyY^`?xi>sT1p8}ym%=TN^y7h{(0Yh_WRpsU)MPw z&X<$xN-}Hm%)Mr1CRsDj+|NCf-*+0_efS&hdE)~m(VM1V=TrB`vbM3cR}{95Pd>-1 z7nMKKv@=aNQT6ZDDo?E|jCIsoPj#?r2wDil&uFh-4kZ{a>KDEEgT(KBZmTsJBaxTA zX*lSL_UI>tu8{J6Ih$`Pp&i2hSeztah438O_ZRY!2Qw!Fy6!398gkKi-3P?Zr_Y0N za9sEQDBuL@58hCgXJtL&93*kJ_59R*3YqD27&=wv-xX#T5>7N9BJ{Cd-gqQYneI;3 zduh8G_#k5Ikfg`2#P`lq0?QEbn1T{xb*E&vp5uFHG%w0i0Ku@HR;t~Pw-y1vQZM8F z_4?B**#$`3FZBZ3#LCk9Y~NnX8@%eA_=1@HI6Vf_K$upBJ}SK}DW7u9x+Qmx!8w&t z5LRts8NV<7j46)Ne{v;mzAx zb(-eo1UYjPV{ES38GV(_ui*4-Y6O#b(Y;{HnIKfh^!vm=9beQ4Nc^d7Sml}@{!kQt zmX!Yk&#}%JOz* zw`<<&>S+2Y#HY4Pc^VP2VAQMS{kP{DzETsm4mm}i9K}e}OrI1ee6-3(H&3sYll5P} zVzeI?1|?X}y+YBAM)lSt6iQ+q}{uDiIWZVT4((9 zZ8|l2m$--g53gJ~va`lCyXZK;B2$4q*zsZMtXO<&B4JiO31b*_^WQ(+fwIoS=M( z@5^GuL(RY7VU})JiqqZMeEnd$NdT)kK;XCWG{rAXLnB>cP3oLKgq4WwBK0h&Q^W+T^Gh~jvp6MZMw2ys7^^L6*WF<-V zr|d)HqIIA7uXxS6ChGw`v*R$iuG)`*nE`}=**2qBKN{oT@FvIBeuPU?4`fLx^qIRu z4xL8#4Y>vwF;1<=+ZOH;h#s0T@)lc8kV->YaO%|Y_VAn?al+@RK|J_ z*54={q!DNdr~cWNpU2MR@nw+dfF>w1Z75G}{@9Zs(iIsl*7uQjp$l{JUAvVPB+nLySGvKE<5WWu z4L`zFzA@9wWbtFu*|)y{Qi|DVBl{6d83(Q2A)xU+nevR<^Jpho`=yAFSjs7vOcAn9 zMk}+7RWk!QTp#OQ#UaO5IXxrYR>~5Zb!#V!-SPCwMMoTax+7#_0TlcxCEVA18Wasd znST}yZ%_RPIvk{@$^LlKr?!*8(cat;4VIADt+!A=V3;V|`REbZ^08#?ch??F#hN@H z%m|LU5ttrwo_=Ja*DsB}Wwk_gwJrI{@{wyx68)xewvSYHwkygG<-_Pp>ztfuBBr;S z3eKvE9mQ#Vzp}>iJkF2_3HNl4mJNRxSaTE;L`-M{LG)vunBSU0F`jf>f>svX8B8 zEU#~um?e<%y8n>-{Z)7zDM7hPew~5m`xN%hA7G-f9zL<)zLp|9t($OwUdi}Scz8Ye zBcP!8P)Cd>afI2SL-l-Zj6w=WNsc>ljcJRqoHpF^tKQH>&cwm4&9;(6e&P)kii3Em_Je!J)J-+%CRD{>5D3wv=jo^Ig&Th8g*IKRv9f ztGFZmFlwp%+&&LZrOt@%O8Tkvu1egavC*(Bd>jH3${Fv8b(J8hhbGqLJ?a@fIvf;x z%9@)qR5`|MSq`k9lc;8g(X-5J+B8eONLDeyml{{TXN~eJ7NH_vsNVe3o*N{E zv9%oF7y^@172Y)&JfaIxh+y2V;F*b%HZVG>mSD0tCinYHl*iPx6z%I^IHGcJ?j&^a*@d{=Q#aDU%$FdjD1Ys9nw-{1PJ=>S%^T#98 zwfzfVp`^*=BzCmen#o5ljXJ-EXpF7emip~$i8E~Mi}?h25oKYrUbCn&rD`3g`jG|7 z;^F1fl?;Ao_#!Q3wX^s^hb!nlakQn$HdrGlV%EHKYe@C+FpoGS$G%fv(>sL|u{fF%1q2r} zdwdsc6W{SU^RrZTmlkN5=VvqF(f(K!m%0A;Lmm}Y9{JN@A7Tv{9jG7s>p4c5EqNWW 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

    fKV`xC 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 L$}S999Pj?f9cA>{QE!GNcF{26l&l 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 literal 0 HcmV?d00001 diff --git a/img/p/2-6-thickbox.jpg b/img/p/2-6-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e715a39aa8e3cf8d79ead2b68fad28b93c6b0d32 GIT binary patch literal 32409 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 N^@5Ae2kzI!{|5}qZB76H literal 0 HcmV?d00001 diff --git a/img/p/2-7-medium.jpg b/img/p/2-7-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75e6d8a16df0dc8427e7785712e089bfa5cc2ddd GIT binary patch literal 2122 zcmb7_X;>5I7RP6j3^t0AkkDTiy>GopcV+5KtRG`sTvS1 zizsRYjVqdnAS!4i8WwAb><9=!7G)6-*^y4@rQWai%==;Hd7t-ve*bg+=gdO$LMMQA zad373Ko9^x_yHE)0(Jlrflw?sQ1F7#5QIWO%aoOs(5lN+RWZvj7&UcGteQGb9fQH@ zU~yX7csyQJW4W%5wyvf&UR!Yqh=k9eAQcEw(N@E#Y5(7`@EpLQ0S~|f2^s+i9Eik$ z3ld-j42fJ^z*0a;$|w+lM8muKAb>zBw0sK?1t}qv7g_;T_!t6<#KJ=7cP;KSj)rB< z6^pYT-Q$$Wt$i;ZdeU-oC?+yHeEi9-lQCD;@`75-_$S`j@1RymvJD6=1bX0&_Vu33 zy`LYbPd{twJ;F49;uq0g-Y&}eGA*bHJjW#qf2B-QhmMXBbpZwK8Y}>!5C{N*mVl5T z0tEp|SPD+d$dan5Lo~5~+0ZaE2qC8a5}lA%w{|%&O9f8Snr64-TdvtA1!W4?Z`5hL z&l9X-5LAZcc6H8N3Dng z$!%m3XG2wrc%aTXvB5rPgRZSO*?(t6Mb|M{kO>YJ1eX?pToR6&D4?F|_F>rg*#u{uurs!Zlehqst_!ccH5~jVUY_5fLo=79sZSCn?uU$a zzl@;V%1rB95xG1*&?eMvODE$VIpFYPXOwJS;If){;Lq#o%IoJ3lH`;thu=lPENgK9 z0z`u7|6ze&Q8-OVi%6n{@`Z+EyajiW2BDzoihOhRrmqN>u=W!5hd8<5$z!L<^I6i6 z?Hajrk{MBw-f&!QdjAGyWBW~+&ep8KQ#tkf%S{iyYp;pPy^!Z4b$Rq3Zvms{?C_PD zO-|%w#&YvuHr36g8eCQF6h%FcVc(7^*=ecsEayUHXY^HlhPpWnxdnCr5(z*m%1ahd zBuoK`H6*dMjL59eutcHAc(nzU#^u}6{r8Li>jxzp#I%1MeWhKjU7;Gb*d%6J{KtmyV9y@O9p>=@o@Q7x0kz8vA><*5_6 z@m&=w(~@1a{m!MmnZ4|XvI*(a{LOTC)w}Wb1Dvh9d z7&bWB*(3S&_DjpWq@D#pQC2LRArJw5^B4%=3~6*MDKvvmWXVRTVy>`jscCEs=Z@e{ zStb0IJ}{wwePY!oQ?A#wrXl-A^q9|wJb$97aYW=vVvue7y~*WbCSzBar2Ov%2nS~+j`CC_QkNb)E> z!5f7qdK8gl-A7IdUnLsd)suuf4#tn{%dHyyY#o=>V?m59+I3F2@-$C&ECp7zIHmwa zdtob7H$MyGuUws<5!6UlGv3^-Y60hGH4e@Xpo9RI3stq6 zN3TW%S+V!jZr=9Z{JN!nGxG#mMBH*YTqA@_DDMlORKE^9BuCZTQ9>GG_Mhi`vd|(- z)N=hFc|UVpiXHL4d#+sHriZH1Xj0yjMjHuEWW=16#xER!E9t*6*g zJMg`Jso}%l$D{Axeg0L3QFhBihSdX@S&AT3JNOu2~Os@hQGfP|f>G z@%dgA8yOc<*9{YLxtmUGy&6_v8Ibu$u=Z>HA`cATF*);Ga1cMP(9E{F;r*#=$d0dW zbLLNXzuM#fi-2C}+fejfNLi(Cb<188-I8V$=aSq%Za(SsE1!hD-hwklbn|7QIKqTh>~ipBHYOC^SRC{3I@DL1wz;QyCPNy+gx-1q`m&w%AXOnvRls=P58j+L% z$I#G_wab`m#No0zh8(R3g26X9p+gWl96hEU=YN;xGN2g10XSfYB|s?zqY%w6z!U)J z3>w`o8cs)01_3Wk5b&QnoB$XN)l32we1no031j|ItsA!XE3fx(RIQcD%u{toZ8jz^ zosF7Ktjo(;-JhB~%4j>nJLDnvJ#)n%6v|qW0KqVnzKz5X6bA&2Er8jLc$Q8Oz<@18 z2y}VT>5BtBLz$jSHhzsOfm!o8{q*spbN1%0`;Q#Gt^vV6ScjQL8BfL)*)O#Wq|F_d zIyEW7`TE5i-ns^8VH7|S9MG^AG;JiD5)dTYz}Z_ey0i(y5X1{1t8Wt3w-o1E)KTuJt_#|CYOI8a(iHqd90~&_2GoT3wsJzJ4iY zFexOodyiCfK;1kqD|BS}&O??n36o$5j!|1M1jPWw#z_d{WXgD!R!+_?LUF9Lut?FU z?C5*mMVc47I4P2x7WK8~hr9lCBhok!tTiQie70-YV>LHxD4WL1sSa+Eyw7)xduxyg zcq}=8aLxSwNMHD6g_T7_z+n@8%bs^NAZ{Whwabh?b?A<5<#^sZp?sn^qt=ExmJ@kp z=A$puTho>!az_ZGOCPG94yepTb>h39ZVnqR3W6}U`;P!hz$b;UGX*jQ&uM0B*k1f6 z^%)#y!S&|BftQwxT6OlGtedEkpZXEdHbx@i3O)fTXEJwR$ZO0le|s_KLY{g-;k-8@ zW;W+Ri@Q(%wMWbHUeRgW=){4^6d7GlY?s#KxDhJSS%GWtd|!dq1ewob+fKc95qh(r zwBGO?>kqvN`BIsZ6o{X-PrDanO68oiJbm}?t#7(>Z=1gn?8=C}YSgdv>}ckWliap( z-!YlPce&9PP?85F;jg+=k^+38KrE4wQpK~Z+EpOYq0Six&e=a-UUhj?q3Swe6`Zg# z=}rIIW9cF1l!-T=Ay8R6mdTrADsTADltq`<>z1^q8r<&jf)Gm*Lhzl&5eN|oC8SuY z;K`I*lZTjwn#m@M6Pf7UbMCpNqlN9qzqxp_WZwcUA-#j~n<@;Ys$|9Si92OvX%s)MS30wDr`B7=NF2Kg8S;QWCJ{s-=VHV{xSa0tjx zP{3YnUG8ncx!rkwJOxBQK)!BK@y_B z4FL8(j}jgfG>uc5n)uuqpf_xFerc;vt}=ZGp7H~$CdXIHh>!1ztHZOHeQ4scR-z+zWAM(I}jJXzfG^@PwbJk})CcJsc;mA_uu?0KqoO)(>W!(m%(HW?bO zde7LP)qh-O{@rySsYmm`yWU?cNmr+2&HVJ0S{-U42n@X#eD0eeYvnb;q`8206y5*WlQ8?d9F{CZejXO>TeE za5aob?1te0o=MTzP?f=WTw`>f{5wVmW<<>`U*klVtKy}YTivqe(1sT4=Q1A4FwU82 z+QWX}4e^QYhIIz7hsv_2QM1DQ_|^jP>sWp~%7G;3-O77<&Lm3aI*c2?%87dlg6 z7So+gZY>e;l36O}Z^3-5Zq=QyhE3`DiN=XUf`TZ5#({~G%zR(0yNR|CJe$wB-F!#9 z)wyISK%og@p-2D#C;$Kp;ccjqTQ2=U*Jib;rNebP_dLz&`PrbkoUXJvUA6qSoX4by5ihV96$KywazY}gj|##doVX}G z9gWWz(h`z&(Vo42hroSS&&5j;D+!kSw*~$&$kYCbZwBY&G{`xRXRSgy| zR*at;KAr~#HgWi@NmG#wZDv{EXjr=N54HLW3d>dA{q@@8d+Ms-tfda{!&-%m;hM-T ziae{VmMFKRZNvQZHt(Gnz9Li#e-lQi)X;lY0jRKi(?~WgR69i8wR_%%6CAh2IL6si zGBW5es8kYv0YL0`AR2sDZ|Yk)?zSE8kQi5(&rYvSbq*ME?(c+=mCakuX1 zL`1t%v9lqtuW~FkzdqpMZg>sfhfNrAR=CD7su>H)EKgWG;}hZ`o2)ryC+l+D+)U%f zFyndLDNomX{KVTbGk+M+)2@m8UEi8C1QRJ*)A7?QL?ov0Y1srS?M{&lnKCp@n3AXV z$y%oq3u3;)hW7#Y-dd_)E?-z&P*_|zkOcIPpS-5;Mt*Gk-uHLK<6WW9nZBMH7;#xH zX|;dfJz~#PRYRTFY!+Vb!R(ZiI&0MJMpu7hkBIbEPh-?opEOz9JM(c_d0NWCn+iq$M{Qi;pYyosIacouyaaP@F>*@l z(R!?Y#Ou1IDPPYO2ANSni5agn3-v>eqnnZ2)PRDNvFQzC#i zam-tfN@bCnnnWl(QhGgf$jDY}o}pXP^xze;IOpu49t#RQr~lM_0Ai|7_LFbU`mgAo zQLcOHv?+lVPKfrOE!POU(QewdQrP3x6{lFb+jr4g{liBi<+JMgPF!!;e609b&zfX- zaaTWo;%3l?rH0@7q*+;&W`2$pqHeQTubF@3vodS*xJ%cO$ysXiz8mMWTQ4REqL=up zgs5;BF}8QUJk#8zW_iVlUom>pST8_=;zxoCLV*IT(|}KhSEW8WGd7QEx(B?jQ9q6e ze!hn2xvW2i*bQ-aGm}RgvT2d|!e87^5giS8vaRd=tk!mS@+>#NXShNkJGvP^=B3`C zy<{Rcy6qJ!El-PNS75O2utjCR&&kqU(KBknI@fKewem8P`-#khuU!aZwm@Wv4E2D= z(OFG41&<1JUG-Jmb3YjuElsQhSga%ok@&x^b2{TszT@^mUw%T=DRAN(0A;o7&vsl>#A!`mznbV(z4ICJy>fL5+h3dGraQ!H zp#6d9XQQ3z6QsfZ^Gh@kPcY|Z-8ULD;-;u&f%TUx^b3m1HgWO(pD({_23<5CV|^_|%>Y4s9@&LtUoCmQHl19PzqFT^`6=e!Xu; zyIGsceIB*Bs821oo4Utf=Qnt2X?#*im>eky$%|O>fNWuJKVo&J_HlE|7ZVsg7|FYM z;^)f{y0AO6>ReJY5@m?QRqw)BD?iFfbBkjLD^EjPMoUtJ3cW{v`XQIYqpO5&gb>ke z>8a;3=4}Ff!ZMop9hd0510$nT!EBS;rRyAMaU`?w?l_smHJ2P)xNbZuf@|SKUs2tK>n0< z0LU%=d}fK3(*Z)=I9G9kUG@R4TkKpDZ%@eYbKRCmU8&C_msPu%G~{Mx4)@MqIDnf*LBO1mEYW;)fAM@~whdqrbJs(FqzFc~a zd2ACeZ$)nodfM`94O5dx?z_1b&<3$85}Bt~Of3GKj#$e|qNnm+s&${YFEX35Qfv{P zw7P|>onK^LV4Bj^qOEP(e_k`i9)}mUSY5ra9ie8px_Wd3J2qOUj`wkTS z=X3&u=HRg}K9NJuT4)2Eg72Eu66U($(_(EZhCO_Fk#9sBR%|YuK#_W%dTZjCOl|2f z>%@(PlR>6(72le%?mQL}Wje36AuFOhM-CmoCOhbaJzOq|3Y*uDb(o+D_BcxIo+ zx$!=QZrbCC-1*{+)GfT2QJm{~U#M@!S34P$j0ldO*E&|lXm_kxJ^2`URM=E6JGN9c zA#xqsfl7Z*1@io71N;8>^Y1>~D$>cuEIC}mp(XoAwnbWo50L~|F8}}y_Lt_*4pe~< z6>PANkwID-MS$SHkN-D;0Pt(z4{1~sq&N_UxPSBUf4ZT89wGtOjo7b1Rs{b!{D03E zMBr?Y4d_X5P~h|r0yvrdQ{#X!4ho#lB114TK_a0LFryN(vV9dmBO+!Hlt*X55F#PX z)dx-#p@0)e5OB~Bz+hWx{AbRk$#rOayH|*l?=E#63~iR#b@{ z49*&dLJk)(NXBYnQQE~%c6p{$(EkDfN!&GDQjp< zXxr-qud=8hbe`cyQ#u!VVjTwd{h(PBU9%iMlTe!~oA`~juQHS_54W~_0t|mp{A)s_ zCQuD{Wd5iqfek%cfmZ>>nYIdb_Wm5G3w$9$Tjp7c6g@jYAKLW1JbOyqF(ugwT{wTA|>4)1tcm0O&c`TM@x#4;Z+No+26w6Yxi2fAz&77X6+o!WRf773uktafK_eP!ojzIw8=#~PCr>y69oR2GlF+`< za;ZJ61yjxP7%T3(CK0ZF`hVBDF2Qw>rGnJVQ4#3XCJZ6 zH8nd+6#QBSpY#;6XhcaC*i{0~X~`lPz8746PUGclf*2hcucP4)Q-PaV-kw|bQ=ap) znr#6@1EY`Da}hMA^6>cUz*${Kj>vhfTYwyYyo#U_LT{BU>pV%-V0^b&lGEoG%BQGy z=MWGDX|mWc#J&9>#WYB9gsc_38B?n%uweh z3AhmOBKt`HM6}wX0DGCB>*)LhOpxTYXliPVzHeoR<^X2Pu!o>75g(`oGEAQ5LR6C=s?v;K^er_ zgh^`UN;1^cTkA+v*omkQs`vyY5m$%M))khE2l0RgMp$k(el9Q{Up3k8t6AVec!!ALA~A z1e#D&XWETwbC0Pl#sFc=VCv`W=Uck=Ws{GPM@- z+KRY^mF`(S&`DiAOgIMom;9v^$G$CiZt2TPgd*}{ol!SN+?X)0(Dp8dYWiCG)(Yw%2+jW`XDZ7=n*J#CQC`VK9$^ zVL(YjeyNZ$gxA{_QtwpLz4vmnmHX>Y-~$JC{u#(}f!ZGHGRNf`ke020_2^#C(17s8 zxep&Z$2GD-vX;S0qTD%pNY2+Rc|FGA0UUBj7#O=g6}ShN>im5r7C8$6)d{(coSAGL z-%Jfe(SSlzde>0I#a4FIAW2C+0Oz`=LzR4^nN2uPxLsTC!{>cB+np5rNq^X6SKx-! z_r1e&3ts}mh`cxp0fyR3QQ1Ji6bGeaadezpjHF?OlQxiLvf3dRCQYMSl2Nzt%yt7t z(;%gvkcpHn1>WofKw;MU@&u>#$C#qyuVZI*J8pl@sz#YJfo1U-O&m1g)dqQab$i~o zZ1J4cvJZe^-mJwUQ*pTkQ)z2bQ^$t9g4+Tb1|Ec)Q$j1=Ys(j3s?b%vG+tF+gu{SW zEC;U!k3R-7nRnvizdM=~W~34%W(zx2R-Z?w6Y5zxh%`<)ZcV{YqR0{Bg|CK^ghBY? ztqQ*}-}#WNwU_|(@B|MK)RFBUWCgK5yDAW7?^?|3PK;2i4?kz$>0>S{IO!oZK%b6+*QT zHWX9L2z5;8vfYG^?UZe|HW(ZuSH(z*fpCOUaW(9a?Vbp?+UYofH&(ps`e`PQO3$*5 zTHgTKdG<0`9b&QP%|$W2c?SKy*wTWNw-{gVC1wtXa5N=gD3tQm>T&egH@^;xoHN6~ zj-8i(GRZc+SAS7z)BgZKvC322Yf|5ZicHL9XusBJi#PssXe|`>qQm7OYTO?Xd}YashT2d(R5*Lc7Jd zLaIVgDM#(iOX%a`C2xyfXAAP>Z-(6ed3YzD4={h|NQy}}wxxHB6K^*92%_#{Q*}LE zZOau<_Qg>OSR&AH?Zh{@2)-S+zh-ZQk6o~W{1xw8^~V6yvwsax^4OMI!n@i@-|6=y zNm43r2{*c8+hqhPN-~Z_xR@CV>rZOj_gfYYc@&Qb?5gV7TEF?+1~);F`&erBk2Z^L zG=w|zcQR)}%i{bA*G>$EEIDE3+Q-x|^a(1jnw+Fu{LafH#nWb>=vU zeIiJ3Qr){cxZJe&D#l0u1MRuebLqc$37#qbIWJS`e$9{I_Uj=#fXWkt=|^g#gdpu9 zmqW*&RyqW6paE0m?JJ3zreEZPrjR=XqlXU6w z=9d@9xf{?!X8V#%+TYLK`Ouk-o3|%W+5}1p1w^_AG~(8>`{%$W3d0|^LW4UvIBbr^ zwzf)1s@tYN53oSOv4$uLlvC3N3JQX-NMO8y6eg{(6XR=;A6rv~a~VQ#?ay&|gW^zD(dZRv(HZD`!hXT+a?MKW zk|D)X=Oe4I>bQAYx|`VAY2WTW3n}=ygH{=X$8H&DYaPIthvQP zA3!PRF#HE@aM*s$2`N)t1n)Mlkf>{Y0KV5MQOa|OGo*$RB#-ewDgtLktjGY6PoF>_ zz`%h|_x{d`K!FFqz!{N|P*4e(1PB;d9MFga75#|6DliKfd`Fj$%lkVi0zOyc2l)Vq zuZY)9>=wW1aC7s;yc~hjFkwkdfTjn&mze6oL)~MQ6qh8uE4Uf6%s_yn*_5b;>u1iHX>{EC-xnSKI+v4VY57;E=rg%>_ zeI?2k9HX;Mhn9j1-sW@_FlRq=#`u1DLR$-I%pl5P+&>w-N``K#H)ZPRjR_0>nZD{X zo{uHUquZO1v70(1&a4h*+c1?>;Z?N6#oPW6Ex&J)#A$X=wiGWq0 zSdd1_ZPh>*Tg`fUku9$nzl)BX;tls<3XELSjN%XP*tJ8N+=jQQ zf<~nfV>J5^17j0wq^DOT4zi`v8(H1XBa~T)4NLt$_uq!=__@3%Uyd&8QX|A zQ-y81PbU6zW@e7swSqQG)`MITNMuweA16bF3#G zOG=X3S}SduRC&z$c-#;At0tb7UZu{fx=VglQ*DRH-&?n<{1OW0^ln^;SHTDflCcd& zSZg;hJ(v(t5P}zSvb8KuJe6~9X1?sMEF-hnHM*7v(gK?1F=bV&OKw+Nr3WEzoJs#P z`FT0nw*x2d#KuD<;!hL?P>{~p16s0+j2sWLYkV0r@!Vme@5Cx?zFYw)p44uCb$gIM z)H&LSaOk*bR!8~P5J|Xv^Ac|FXx=bN)c8Uy&jk;8SkAe@D$n!6!^4&%k%;Srv`2d99C&V zg}7}}+G43SqQ)!$jpgR(t!I)?JIdaZgO;k2^?HVv#+%f!K<(f1pkSf{=~~(|HA=E8 zPX0ZkswN>z|8fJ4-WT8gEd8~O^ zyMF_d9}iw-_-Kts{sVBi&P(0k5HUiAZkHuAPyQbZV5lhLxMw1N^5fuho!2o5IHa=< zzDLMh#l7UuRS_Asj8?a4L^DzJ=tgDxX}-nWUwK>FZv2lO(18j~O=Ll0w$>e56r8+s zQ9CT~T{{{B7@JR?Q1~LtH@3O(`yu$3CYL{8~3Blujub!xQhhbX3>R1QZ(O>f{XI#EbAVtN~sVN(i~;f!0c{O zxSKfk)8lVG0AI`KlE}A(okqPyfd9;;?#`!S=)I8x6D#+h#0p$B0SjD@0RA_z{#lFw zyxqjegoHu}fr>^z#K0n;;NZtB_%$xC51m-iz>!2q$?$vK-}DOlPkJ4+OXs-n0Dl$C zc<#4ayN;0C&tkD&ICv={=6m&y>!^KWLut1$PA3}JC_h_kS9l!*kk3$3pW&AsiYfWc zARd)jwhZI+Jwj)ZbL09DU&&=n&T%(Kkg6~JN8Fj%>0gDo;^Lc z-6Q|1?5auec)6D$C5Mp=sEZ~X+$n6G8_DR8{{Tq-sH1$%^L!MZo>b^H%~X+faPtwz zETeO-%Y=RW0GQCeL)};?I>vnfF6t!QDxD1;cVqHRjL3Fbq7{_ndqN3{??mnGPSW>$ zGQ~asp<>Ecjfk1@g;{Hbul^Xn@k{r7l+4Ta$NXHss@l?0Jq#`E(iXBI}98zv;G zAj~l+>XaW$p3aNEiCJ?73B+Dy?(}LOygTl%IrL>`mlek+)QYR9t3(oo<^)c_D`$%L zu_s*G!>7GM=0_ylMJ^AC%wW>9tUMMsRpCHD-y@4v^-|KKIlMiVaf(3AYyc%Co|wZ( zZEEK@dTY;FIc|}+hOh#~)F2W8`W}$b`=(0r`}y!B7uCLw2FO7^?X@d&UImfP#nWsR z9>O!Tz$teYkP9hYu|kT0lX?rMZ$xZ(o;az#hIqS8Ap`B>{ws%SVX1?my3*Q1Fm1(e zv9Nhz3IDLgzvN)UW}mrEreT)BT(AG+1F#RH1y7O&hpyxA?y2A!a+V1z3kk$xH^=?6 zxs`uRmxp}3v7$ePuo2W9+^WtfaFIXWNVBhft7&Q$SD)Stl9Je&j>gBR2E%eY_Nuyl z=L10M1{6M510x;0PFpC-CA=S#qA1x)#9iYK&eoi^@u?pSr+M3^U)4GE7T3Mu4`!ET z$S3Naz$ewDZ)5y~^&@ttOit5tY)czNd8T(EyQ;cWmQ!DL79=>&3)+=uvnT5C!o%CS zRvuRCdO0wX^yFsCaq%^27JCS{bzJ%`tKU%%HC1-S3yg~Fjl33dnJo;gg-l$G%=4IV zUXx^mlN2#Yc(rVdN{*8Wlc5-R)KZn>wB3<4x4V5)%n^wu)EJ=hYbn^WDO- z*CVE<187H=nV(sN*rV4W1MrT`C=j2u`FsA6rhWgfw4{AW$0l~iXa-(3y$vm4vFh0n zw(QF#Ld;C9cGoq-qtX?GDTSWeVVC?#tsC6?=`(?=7wVROOvb4d%@X%w-NWn=nj_nV z&RL#S7q}Gs9b)4A^+NUP?*5-46aPKLeJ-;yW;@^P_o@maKWxFhBE#^_$Tt@!RVoCN zEW-V;RRsora`7ut>K`@qeBS1NedPEY`|>`1vCF4Yq|1`u#?IF&yS`c5d6z2IdS(y< zZrQ*&C?n6|LBp`>Q;k5B6|!B4_SZOV-s0ZCfOP#6kTqBe$|?}auA>F+NqH9&HYU+9 z37u18vIiI9a{>xCjz;%*poNV}bH5w7ZBroT80y-?Nm{S)IyEYMAs&`#?STM(0s)li zI$t#CaB&`y&B@!_54v2ko1Y3;dubQO&2@M`C9)YTMzD$y4pk0xSH*Z&xxYxZyUQh6 zszvcixoqBLgI9iX{BhrE?jlTQl=16vW&3B3yMY{@9@^{7znv^WdF$kZ%oQyJ;2p?+L6#ac+ZXFB_)o{&A< zM}5~MW>MxFZxgQ9TC84x6&}4TJ593Yz8b5J*oW?(Io79{v@fQ{GXAY_ZV|V*>|LGW z9Fc3IpziCYwzBJ)`;DcwwXM)K!kD%N-hQ7}p|Liey_yl|1~?Xq6i`Vd0+tw4Fv@b3i+Rk zf=md8f&{E3j0z5pPN>98Uj+>O`j`df6%C!^>d^cH;`6{~fptYcH^2V+-=`T6{J^If zfnCx`hAn4}Db_HBG2k3_2&?aXbM^U+?&T;Ke$M<(h4p}6sJb1^;xrK~{0os~AXU3z z)jlMqHu;re-tu0sLc1NUdB)8VbzSPY3gdNJ_qvJnk{D8JUfxwor0P}5oj@*Mw;U_o zZB|uI4f&mk9g(>&wKqpSK|>&~=`+Q2Q1bDQMeg$l%La4F4LeZKhD(C@`bQ6pNh zIV3i>xj@x!umSy@PNosyJ2)`jmH*(_s{M!zX+TB8QPchCflwRZ=dzpEQV28NzU;bL zUI={Zep#OnCW49BG^Ma3z`wiOH-Cj0W2{_0WLb1<4J)M8d8qzty+hdqh4{CEaewwp zvdpkGOmm1kO-VxI&Rh|EbXfapWdx3dm$H%@IqZ}6otuvW38zHQxA9oa7kT&)ky$Gh zEH6;&RPHNIByiG_IuoAYmpsuB(}rm66Jp6A`0aTksMu4sAQ*aL3{;S+o4hq03|RdE zG>9T$CmkOeA$CsV0f)8HFN>$X<|>`8iMC^<+n$+KUiggXRB2R$mW7+Obb&45DYVcX zRApGi59X11)86wMpEYW!M%)%v=KG3_8$0v`594WKEKpRe2rrnmFLI-gnq(=xWFCMS zK#GTcoxgp|a4eWHT|CV;@U-nJr}OZP)k9#XbQwKy?_>Cy0unk zVAoO&I;@J!W-pd0AB9sb_ub+;-k$Bx+BSX@+v1H~&l49u$S4c9B^~JkrTBgby;eS* zKjRZV3ExH=f+p<1<$p9d8-%`x-LZHzG@#NL;$uNsSLu6GuZdktG`6frz)rompuC>w z-M>IdcP?G>y z4JBvxZ8jK9JgNihvmh~rpqHvwFOFh_KQg~iT?g9I2#%)$$+yoB@^nG zc759*wa&+K@M6i5YM`#)qFb!p+Q;5FWzAg|J)r3y5g%0Y7ChoqyMe}Vt)|Zg={`^pfLlDC!r?#2U1DJ|w9rsUM{Q%~ zG*XQ|cWi%h!}b1}U*(0!xOAbd$Mea1G~XXH%3L^-?1C`8E+A5I2CNX>j^9EtxOX!3 z#85)E$w3m0y;;F+#=TYBt{Vi)Tcu@!B5#fhZix$T1pcoj)PQrA_Qn!#2l$rj#^{ z4P{`X2rCC^Hc~(&M11-mt6S{t*dYVu8a89Iw6R9bK+r5~idtS!35n{nZiRdRIDYta zW?ugd2G?vhh^san5I7~=HNDx(FNFyNH5~;j%w7S};k6HzL#|z%dsW(hRk!}D`IpF$ zD~qr2pFZ!{-8e;gIyX+T4hWzQb(E*g{X@s|FI`Nen<(wLMxVE#yz3hJiAn58r>tV>q z%R$Jc;`^i!EjpEuWTsqxNDG=9LkUP>koT&B%b8qM(dF`rpM9Eb5b6MzO2y&yhD(PS zHelP4A~*QU^wJKaD?0|>22#?|sfOX{5-P0p&j{S-bZnqL&J}VKIjuh(9#$qPYkQ%!cZiD&MdcdVq_C3nj3{SK24`~bk+s?R3wlZ+br<*Nr;c0S6+CBq7{}wwg(cX4y=0F`fv`c7-pUjgQPntCalFrgh_Aj~KBl zl>k@szVE&>=d#FLGJ&umU2{!Q=UnN}XHw1I9A9#6=<YP#1NqN*}9*}ze zSQjbdjLq!567&z$un`VOq#X)Fv=P@6j*Ut}4&4S9Q=Zr`3luYBUQZPYh)P|#hNUy` z|4{QQ08g?n!T3gJZ2MaQ6mp9z%K1XHj~!^gMwQQ$Xb;k^c;)7VA2y>TvwJH_8jmSM z|IxMOIvS`zelRUubZkI}GlwN-WGURQ{1Xlz!!G!X!fIP=%vz%#6;r2{iy@-$8vRxL zbUyo4gZnu6r3xZojCSFTcm80?I18!}$u}O?SKOx+@E$?s^K|BdZG2DBEuVoJ0H~5MBdW8mSJ2#q0uA-39JCx(;xT0xYWQkiOiP3Lgo(V6*g~|;+BYc#zfVNs z+R_hdzT%fE#R5jvhs+4V%t&*!&Q>LV$6oQn54q|zk zh7xr?Mo__u0&UJbru(TE;(3Jb+z3=P7HP)c=1NG^)i8_N z*|L>+pF4LEWaAG&e7p#n8{=~5L2f$AsAn18*dbR+5%Q)8rgQiuvZ(?hw0B^EEH(-s zIXJhqU^uop0UVpaiOL4~rF5@H&kUQa81pxjL~7%xcU1GPcw?o9T!}~VX}O6h4r8#M z0aFR`!Z%1Xy7TPN-*M0yp*l0@dR-DK>*Hh9rkf3%Yx6igqO-qP?Ye?Au-iZlAJSkk z?%xWX`&2hH*_du-1URP^J2ZFUz1HbRe^kiNo|AirRzug=-+t95qc=K3M+AS4BAgx- z?8MWIJ*TDEs-N&okdSkY>m>NCI_`M!82?p<-^uj@05f(XMj@4e%*}~E;`ufCGo$%$ zQ6UPxu}|zbMtB_1J62!c#scn*IaM~gmZp#x*r}f4qJ$3XpjNf{iCid6)%XT&x<_tA zgIJWw``08<$_CkgWc13Dmd@#g3YI31#=|b!g-r=-pNhm;$+wm_5ugVeUlO>XEwqdn zxOjFUCfRBfWP+b~1ayiAd@}uc6`Y-bi^h2Dge^GTmflIei|Q_RsTLWiJ1XKRv*~Bd z6qa5wt|0uQY9cP`@Fm0VmHXJ_%o;KQsb@SC!4m7i*b^Z?CJ1Zwk~s0j>kILOpcFW6 zh_NqUyyb#e?w0h;yrxbl(@QkmEl2HW7XtE4G%DI2-UuC7wc_E*6u~Ni9rgXmb#If( zSp1R5%jxO&1lQr9fN^r?7D+PUw^*j|UHN0a*JrYIofF&PuT-p1MzIAXx}#`!o)_oC zyGE(yFHzoX+a@G}uH(KFWHP>uM8@fwZJlAnv*f*!1vlpcQ0F={MwM}jHgx;tHC8Z1 z5V0pAxP7TrSNdhN$0X^|gC-DsG1Ubp8p-{Jc*c6}%*KtgoCeF>D)X&=UF)4Ok&(@D z!)$U?p`)&?K{{hbLFXg=rM22o86j2WpDzz#`Zb4zk@;4z1K8sOdO`cMCRBR+Uba3z zkd_;;_YP-Pk^Od<^FWy{gDJnOXXJYjSfpHFYyB+_|I`#Uc1}#UpRDyjBSF@MuW|Bh z$>R}Tv$;CDNX&OZN3u@4u{q|^^TtN5XVuq2b(HdiTuwU~D&a#7l0@woFP5aQBL|MC z$vRD{|4BZ@Xa62Fwdpq&PXB07>2Ze49A`S!g+Ul;7{X_yktG>J0~YVz?j_*+1eXmw zW7f2Ft=TcL#u+oFHt}*A&rO)bNMmt{!kWMIM;ea0FZ(I@=I{pGU(BglhL|x5H5DSj z?7t$#$|O>6WN9(TbyO@f)4FO`gHe{J)EK;X#8GYygG{Vj^D1Iw94M==_RP$$ht~uk zrh8jw2?hk}vOcFrP1&9L3VUlNT+GImR@S}X6-Fqj=AZK%Z_Y7MzxZ|se(|WPC6SKH z7!fTahqooet`Er#olCKi_itv0KJ>KzOq}Az*e2fz_xvV0nK1jCqITrYs5&^<_mO>0 zBLCS)V844XLm>7B-%Z4%=ers8n>xE17INqXb5bTQ?u$^K{Ue#_OVn_Is5D=6&>fS! zZt19{Eyv|iY4Xbfgia$@-k_(nvXUpgp#{FNY0s<5owuRbhA!+DfksNOnUv6!_vYCQ zqQR1K&w`~yDV@)^6Da1HBO!0j&$D7sa^TwrwB*>1ymAWG9yly);OkRLJg%lJCpioiHh9i43D;&{opBD2oFjqd& z5u(5ox}w!L0u~DaSJ)G0j4j-+Q|zTs2IzRoqEHgP$x+vTOb#+73&$D7lDj@>EKBp@MRmy zkvy%~I*E@aZeDp0{*~CgAvnPj2%NV+Q^_~dJ938`rzdzL{7A@m67bAdpC@9&B)(lV zjzff(lQ{Lm!1vFHk-y1tlYo!yxz(Rsu|mAOE8~J-5;J}xT6vLu8!0^%n+>)O%uv$g z#+E&2y8?XY&AKOfe+RZ%}MD z=_d3AG&n*uZgvEIh0 zr(7=&&p9K1ySj^5GW$IBf~#hoK>2bRh^Pl=r6!ww7~sCA2sw{7q8R!aLwL@S)n5zy z1CZxFBHBeo^h4tj>w%RF`oN*00E48K9d4Sqd?Pvv(Q5Pqkap00>EWAfN;&ozqlU?h zXJ2bE$41i5+=qP^S92t8R&`7yuVp7pIR;#&Ltpu(226GGXAliprmSzEI$vtB())zk zQ3$7$t20n>;O|VKQwF1~aWoI3vo_&YnwjvVE)N>)erQGEPX_d!@H7zP!s-}Rly|WOPKkKP(2-_X>;|YQ>($Y?dOa>nk!&%!MSlTJjJIqI>U=uTm zd^wXjXX2B)e2BOWDcw`4IYrG-Xa0uAg^3`W$l7vpCNdfu)WE6H?8qMA&8+wt1TK3+|15QzvAGS{Uzy%s$u5#1K>t9 z>DwYu!15kv5b+RLZrzCcOMItp~LJ zWJ_)#SMF*u*G_YTVN~9jqM0;C86DP`QvFXKkrHo2?gvj_+7U$5_BXL+9$={%nj4i} zns-%OO7i|96yj89fK2EtVpRND!>^2hJ8-MSNTGqkQTOK~%e|dnbMGselmbSPzOcVL znlLAR&nNidZ)~Z43YOtU4)eCWfeDVfbBdb?dU;4c#{}|PXn008KLE=;B1PyQ0Kx*_ z+#C4bw6p{^;`afvDXJAcQ6b@d z*H?r|K@m>hg4&#gGhdM8ojQ7$+8cM|q!SxVbdHU05s3%EiHzwx6Id9AHCKSOi#Jop zBwz6c_fzaG0_mksTKq?AIp?Vk?Yb}2zqzf`8Rxzatm3cNNpZ(P_}UA$R?Cki>R)2B z>Xm%s#6j(|br{;YC8V6(cNK9ph3BluFU?gWQspAqr zcWmj&3wR-b@yHLK?>6}9gbGjbOcJ>jC@-=bQS@RHHN){sS6g)v} zqX@59&;6MHxJMG+WaJqlN^s}^%FT)3129m>Li!#WD8=w6&20A{E{G6RycBhPWh)-J>fZg(Ga8U)Lw#2k3j!G+vqR;TF37F z1(GvwNE&mrU)~p!OP=$WhJ!~R0EylE3~>r2iox)eS2$w^c7&H`7ztMzRuC_1xk8g! zsnfVPn-G%0xD(!fXcc~{jF_>+`+ID~fj&p+*4-FZO)!q;>M}51O{1UXcx$OwsZ++e0D=S($cv(rp_DhV|*c4Bs9c2bk ze}}F$(2mJ@rF@tkMh_2v8 zMZBAi2>H0#!w-P41gVrr{poPzfsH-yv{P;<7W{8UXu*DanurxMet(0n$&V;mkO}f6 zWl`Fff}Uv}@7LLC*QRje%h!3Atvu0jc?^uBG(C zL;VbnI9R(PYc}k8qNdF1aX@Km`S>8@4|=v}J^)qIGNnC_Y1Kb--6`WD_UJz4;c|Q? z`=PiZ*()9ddV;-@&$7A`eGg6l$( zt(c_alVQj6`?hP=GwWMd4B9QkclGaT z4TbNbD~!aj5k7m_@hF+cdH8~s;J8#CQJO4lt0#;oV_0LRB6TgRc6}f@!td&pQmKC3 zvZCdsl||4*s?e(fjAXQe#-m3h5)BAHD0QX8Mq`UZ&xjMSv3x{*_%5kz4MPSJcKWg% zB3ke4*>gvICYd1*3>2+Wf3%!anMx02CO$I@z@S*{*u&w-V4D$R-6(3|6k&40fHc4` zHgKz-6FM@n6ixdzU(x%s4~xrSj{5v!tBj2T7furs@~JhqCrgbAbd%H|XRTeh;>KQ( zmVvnP?I@&#G>=I%X8-v{{0w!ANO4IaLvs3!RN53l*{F8zso~~J`k_JTsP>?|h_2|W z>`h&iJ*EOD5zY{N;bM!>QgIiocifjEu9jqyN;^IOT?*2ch*u0Ll?_WeJMXb?{+UE> zsGiuxp+ke_T0$*t5Oy<9M7Y!WB0rgv>2&MC8T`)$%)h>0>VAU|(Uf7Om7l_&f?)SR z&~?~>?(2djyT%RMUrFJPa0}F~?)?C)qV$CIHq5aS-Jg^Wh7i1`t)y%FJu<^E`nigb zCVZcZ-TJ;R;T5$FX2KGL5?KIQW{F&ehqNg~+G-arJ-@(^;21QHHbR7w&()i<*-Dlm zN0~rket7#FF=8NOIZk+jr*PyfUX|GfvD#&<% z2e0`c=7U~-5Z%?xdJ~nLOW0=XSYRlF1U+!l*vzmaOC=FfQ`d43DUD6Z+EXh_q)j#y zpMb2XRe;t#3=UQyK#0Ffh$tXMf;S6Kcz~8~`*qtlh84=%C+&cY#g{$OSI z#3IiS{ajJfN?;Yvi#srNW)bx6THMzVYPlC4)vYf;ZEGkt|6D&-OBm_{fC?RdhX>;3 zO?7c|0Ldn7e@9#Dl1g)WN|E&hOq&y zdjUjDSGc9CD6(%XV|QpFFC-_Qa9!Y!od>b_p)fOo?H3f8(S>W`>Ve@evy$hb?l?1j zM)w5ZeieCpgwPCvdWUL}HE`0F2EUB2=G^y&vU@kxi@;hXI*I7%75zz{Qw!$yXm-0C zAnO9FpnTKJ%kh&0Co;fRiq9~?vIa8fZs1aCwU4qOZfy#4a`XEgwyfG<}e-A?oT|J(-P82%sIpWjaqfW%P{{bDeJ z62>1Wd%U4Fl5p>%QGPt{IaCZngXo9;t!QCymI|(vC zfZ!6G;O-C@+zA#49vEB$d6Rti-F1K5^?ts!db)eMs=KSIt50>Ez4wv(<;*r96a`fJ zD;taiynU4ldX*{%l=OjQS5TsihR;p3@S?jT;=rSDBc>X>`Y4^)Vdl?Gl8RPxdQ^Yg z87;E@_l^Jn>}nQdiD5P|8&kVq(gZ%02%G^XKN|xOabVsrIS?Wt4sdLC>gVp(OFx!= zR`VG3=QpxAu$uoX>Jb{4t!B&bdAB(?oHUkUm~Wj{4o6)|3`ht<#C=ue#z?(vI`Ok{ z1rqy;;_FL!azn3(6Bh3VUd2iS<|OncSM>26mB53eKe&^=VFJ^ zLk(ZmicGPlNpnp`w>qqC5C9-q5{pkqZyAQ~KeLmc0(N>Pn+UATVgXe>YI5K}*6+~rXZq1lEhOJ_nr{MJLg+IZ{GfLq( zAqG?jMdCVFrdCnD!+R@Z*v7GG=vobRC6hvgsRlJha4g0KI}r0D4UX^~S`q`+)|OZ7 zDgQkxWC9Q(#p8vOfFLoBHpf0K}QM zuRh8f5`_|IfB>+h|5|WhJr@V?pT79t2Vpy~Du8fhN!(*F_~&6KzD0yhpLIYmk>|e! zg!mu1C-(pEclG~m8enc;R$Q3w5&<3&>Hj)?0dTNzHas})FoHt^w+4(ecTO|=Ln`z? ztcJgIWE>bf>@@KgXgoi?EJy4QU?VFpF5~qYc8^|Dc}-B9MMV63GtB~ie&EE7OopU7 zXW5IBX+QQQ!#Vc)Te)lM1p+SN2N3Xd$1ecMB}aK+3FvI zbaRS+^D)#Aiz|O2RELuFX+of;AVYiOWonjnv?Yp(SjcfLEukLk>Q%rL7pV&25s#P4 zIG5EOF#F`Ls|%^?rSUt4uoO@EuP!T~P9%Vgv($bpeqH0}cZ$A3hQpK8kzS*4lPQ~l zrLC-fLZ#AZGW*2Y(7=30$gj2zYM<;kH&O34d%5ES@d@Gj(giS4emqifpIbiCt}ab? z7^fiRVzYXrqZzM)EseSuDn!+v*V0geXj0)6rNr=MlveykORqBdKJC0_5zH_$a*t-F z4t+ljCe;#3Ip#8)EM*5-c8GkSsS1#OtEK6lJ~IaubFG5pEstazLe_-)1O|*5{{YI* zcn#}d-hF&FQW%kfJcrSn{nRr|2UNL`E?N?dZnMJTLT5C`XfS z{69Q>CbLU6NGindIy1x)CvU(%(C=rZcsOdm?ziQd&36V?N~$*_SxYFF z(WKw`1K=-9D)d+C@Bj38*o8_+|Q(F5hR_HWAi#v(>@1A!b21W3^i%9^t3YJ8`7 zkiR?u%ezs@N4I_`M^QYsx#+1A*_7j1<%6O9yjPH zgpk@Ue)QRj%m2`$lgk{`bm@%?Xwx+-O}qp6uV7$+g5wL3DBOLYIVtEG_E&fB$x&yq`i9e~*`HrDb= zO>!(0xns~;DyzvU7}c(?om9Gxq@mz*rSqoRkPeug-{Y&$=fO-}_R|x*OfR&ixLGa7 zfN>Z~hC+ZE9-U4XUd1g`J(-b@8RUWTzds(4jnaIFsZP zVP2xS2ll+F-tki)X#C>L`$VK;9WwgX<8ZQR66G*4Jqx_lxN17^VM(IKhO0#BdxNUk zHRg|f1g0i|7UNSA`V)465!{=u`aHTcMsfYB&v&|M+)6uq)c;6Tf2|CRYm59pu%&-i z28J%V7dCK*edwR1k@|7|UsmQXD;H*EhJ?5h0QD3z>AT$+xWb<|+El{Mlz|dz_~@tC zzB!irk0``$z>N(?lTmavLJ|q*{1dbSv6#!!$pgsy#C76dk_>1RjZ+T{85f@(MgIUQ zy{i$BHC5h;b6mvja;9Y3>1kcQQ@(ssQRvlJ6X_2=@N4bWI3wJI+v)mB3V8VPNE1HW z21s#etC?DX!@vNm>86K>NQThYuVdO|o@~haZf)aX1Lwc;1f|=1Xom{-M61b&4CH4a9x6FuQCbUr0 zgf90R<|+;MLbtyrJm81PH+3^oVq5yYdxI1d7V<5`R+IWGB}|c~S0<*MBXKcik|DsL zn1N}N2u(3E`E2eDmR_Q`Ti@L1st0fFF z_n!x$&rbKyl8Ke4@Iv7&GO`ZY<_4Qi2@t=8wdUq||I?06_zk4%v2c7k?FPa9x5NjH zBA-<~{tUM{Q6TC117811Z~2+$a;VJ`O{twI~xe>d#zPGRGf5YaIm(7w#U8{^$1cw53>0{6lv?v z#VxMhtKm`FeBx5qOW39E6hV>X(Qx#IvZ4-l#93k}mSsoBtqAzyl6Q@_8wtrEH~+md z3}~?Vz$N7xO;@`mvO+gYW$t7F?r}7Mz3jHa{VYlkt2&c98JJ;NDk8f91CLqfjL~+J zuaI)71R0NIwp^LV5G_yOADp282!o;;1tSH;daBURV36n)o zOH^h1Pn#rnlJxqjB1z^VMi2WETKUg7BcF(?*eOIBma51tk_s_YNGjR_x?iXr?9E3+ zD)qxz`uw;fVxf{zzvg++FY>IK+AQL-I4)Z-$d>3Rfa$H^>c{YDXHsy(9Y3F{TlBc+ zRVt2aMBN~ok{~nDXj}?BxCvJx_+)b zmb`0j8Hzitd>QGbK@JycjN929do#v1eLJ;%-?P=1kGi}wK5PgwkBSKyMy)qMd}&wu z5<#sZNBm#Y?Pc$i)822dg*I!Wy|n3Qpt*2wQn;fh9zu-my>hO3`Mu~{?PmS};>t&x z0P|0kD{WC_`(E3ab1A?7gSW#>A`EaxgvH7Di@5)d2=y0l$AOu|un&ba4cz@w{{Z*Y z{|=Aw*C<|o*_&whI5Ted*qZ=z8n*|*e*d-mzivWCyd;q|d)Xn7Y5)A}qx|gN!QS2c z>|Dq-S6PVIHDuqmFo^Hrpe$tIIheiT+IK$x(;vX7$;43*SLt;Rc<%A!4`4@a`0$0| z`rxyP%%(ezU`|qYh=`Kqi+;KNT%B(|{2RmnX>Z zE~LPjFSa*?(<_(_n^ef!eAl4O_2LJ8+?pezI!v5Y3ybMrrMKxQrEONna37O-FoIPF!oYRDMFA(qUEEBR3t=j9FT%HlR7nI3b^*NUt=PzS6gP7h03T zXww-x)s;^@n4fzsiC_lqRSWqk39M*1=5)r91zxba#}cM&)0l@;6&#Hr4I&bSgVw{YWGCreB)N7T1xKR1xLSbn4;RQU~Eq! zlg7}B6I5u`6WsL<58b8wfM5?Fe%@}d@&A~gk_Aa{D1xsgsR{u$^v$ol&xuRDFu$c| zj;^sj;lkHP+rqH;11QY^zA?SJ?9cV}GSi5#X>#0)o5B(Wsc>175MQSprj)G9-pT;? zRk&8z&O}!GsjU+~35VXo8&ovvt$)QLwnJE{T+fDoF|JQgYQyfKE68L}bK}~<_{OWL zTXC1u#2Rt4WAe(TBPpA+C>$YUZM8j3DOoVuv%*Qv#&}+>t5cruvpEJr1N%`UL+}rz zkt?syB#u#c=$RaII{hF_eT7Z!2e-#S2cj-g$q&l5e*gjU`KD3NG913QnERH%osXG6q6IK|CE!i0~9a&!FHRN18~|q;vr*82eI{6-$i%3J{0k6 zgrcr!q->eFqi**U{{gfyZNy2e#*6b_$J`O?T_gX4w*d^1?JE6s8+3_a<@uw^=NtahJ>B-@gwGGCrl4vw_W8aKau#g3E9 z539P%V)UtQbuHn4h*T&*3PdJmF^7Id*tcQ9M^||-M z&*GF&n|h@)oaa@h3R}*l&$?x`I@M@QLN*r-)ZkW0RLug)-Pym-P2~bimj>do+oI8P8CGYJzM7Wx?N`MWyw-q*e9ZG z*x4-e2MjTxg({ZR7)&viIqJTYt}@a<{{T`#U}j~o@ZMec_}Xl{z(`|bTijStpnX0% z8H!l1L!{eNUFK~^vY3or=+4uBt+V~ycaGBY4Tm3z7*F$J^cN>md5&wT{97-)9}%zH z&um0#Ip7Y7`LH6SaEnqp6Y<*Dnxr;F;x)`U;`dhV>$uhAKp)4wkoGZ9>3;Fa-*Fa* z(|E?;$8n%BS#1fBoE1>E4Key5rUp&qla~dd#21`aZKPyuJl;pPrYwHWl0)(9d(0*l zGjaz>$CJa&GbQSk+$GWzILvca1H|RJxe&IeaDTk8Ak~-*WIN10RvQ zTyRxGWTYw}&iBtP8^tmsBALg}?RY9*qh4z0bbG(&pFXI>^E%8fj$HBMyJY&Gz99 zt_q2uWR$NmoYQXvBI*dLFzxG6o{AsFMSEIr@8u`DOKQOR9ZN3wCyvmc0WWnEzsAIA zxdhRCqVUf&8qDqfu^00K@rpK|Yukn*JwfqmF>NYNF~##h@)x+hckKH|S;*)RqJdpM z@Cb*+dM%xQd@@7r1vAtWt{QJ1ar`zz^*;Lbfey0?@y-rH-hD)>#pXkjQ_&;g0ZTfpYzLR2$qBeFGb-ERHP&m!@25i@_EQ$p-SsMD2if4)_LJTCNPz|t zZqjN}Uhg5>oiRrkt(Uvx0lLq90tax^8Y10s<$+3-VC>C7TKxA(#m5j2shT!xdaB7LN^r8Kmh7m%OO31|P zVUBF1Dc=aA2s}g|!o09l#Y?AZZt~|Plc`;DuWye|7hkL_FGdUDtlb4j8yxL-H_ogM z8T1-vH4~f%)a~e3t>iHG*=*3sN9~|&acL=hVtCu7psovYvRC$gzuxbYyrYQpXz6Jf zjjUjB!^RDLFn^#e+dAH}e<-kRn$J#07LI*QBh0N71uDO?l1Su*@3o-{O!GD3j&#?7 za+5=GYo1hL;%}0PWQOrUE=sH!1ycRcDutUdRuhkAn)zcWiS#CTqt+HYt5iJgg)muu|d36Kvhd1%YsNTSeO_e(^J&1`rx`W^jA5C8jQKB*3)f z{6xKKqiT}<-yiyP$?NjU2bJV+Cr&XW;w6fP58R1JM0AR}_dasb{!IR2CcwkY+Lp84 zwT06w4UCT!RRx@FXUJMmhC42IA|S6f4Ao^>wV`vJ8QSvY5&KGzdU_v2=@XRi6o0}oq2<3$pmckc1;;9QPOnjHekY-qJdb;uk?bN+ z$wR^UEfmDjj_vPXfd>^lVHQ6R!l$Ch9!yPNB zQCq>?T=g^2-}N&DD)|}TY;bxz{!-#=Zk{jL*HUrZJ>^wngLGfq50ZLboLTeg&-mPq zX=^NdeKOu&W;_G;U{{@H^QrHc4L_OfGX4G2d1-(c`oQerpR@jEIQsM~A<*}Do87g4 z0Pc6$MrXsn`%TztEy?(dCytvnJj!q^LYzsZ`{&JIpH10zPRp42eBU8{yb>S!O}x(F zgG{=}iLI& z!x_E}nnHwjwDqY|na#8+>$`;w3J}^AHu51K;ISot@5W+V0M(F>&Dh=@iuvuQ$p+UG3%}{l+O(ah&}4LpcPEZ@b58O7*)nmTzp-J zYd%!Y+|oz*)11UfXXO+YiU6?`*F8wDBOXZO?q1m!avUz8Q>@31)^WNSrg*_O+$D$M#F}t!whDh|1Jo~^;Q+vg#V`apuR>avqtfm5c!nMosKDlW4M>-D? zA$WmWNB|GP!&{>`{ZG}#Mmw}uES;HgYU3CLv67BDpvSz4oiIQ-4)4 zZ8uD9UPa1Rq4!wQaME~w@jrz&4S&YEQb15hT*;?Gpxj0jHfKGIKswW)z1lU^btOCJ zs4J>L7mY>PQ27`iMLII3tynlq-D-$(Tg`c&CZX)aLy}~ChqfUZ`h)!UsvOKViC4Nt z&EPqQBck1EAxm5$ZBMeIMOb|7g)KG83*Kl~HW! z9QSD}k|WiJPwLhEctBumop0r)X!3(s$&|2NguOd}t~r{sUM!d8@niGF0JOSTLY} zK14!Dg}#Oe=-?c~yRbJ_Y$sRGyShQDQQUOpV+3_sqNM93WK&|Wk`wKUuKREkY`ufO zWwFa5ZjI()9#JcSereARmN_X-F5d|OdgF_5nIu5=zKEr~2bnpST~%COq&F@{)+!Y{ zfoe#z8qc_M+za+*pJJk=#jb80ggN$gvJD%rtxYA>ldFO{S*QxZ(|%QNs~~Rrw4083 zcaPaczG^<1Om3@e7#G-^x>W>cw~diqgIS;zxnwc) zr^JqfewVh096^e#)n7W&k;S+4xqN1eZYtuK*G8Obr9?xP0rJgWpeik+iJ=ZrooH*- zHjI-j7r~~!EbHh<6PCoqs4{`J)4kYU?DjtZs* zQ-Q8=)SKMi(g3FqKS=N7jF2S(!s0PfB$Oy`x6 z#@IR0%@rHJ+dWc6CZa$6CCz#Elv#Fmfpdy^x2v*h$8w0PKNHaS{E=ZqkyT-w)VG;w zjr@X&C~iz%r-gyBh4ye~M^{IvMd=$RXR$Rcaj+#Xu)3_EAWXT~gNC&tB{GR33ntGl=)Y{BkcO8;9_*0 zydPlwjVS~-;P)Zosu6d#Fvxa&RQ{RXn}E5{X3I3p>iuqWX*l)mFDV>CWMwc{SzIca zm<<8iZZv#Wjjl&RyZ&TY)f?H-Nv;9Wha|CQCqSKV7I?F^XuEd(N*5+30C@$90#{Uq z$9D1`ryN!8%4Ige?pxOGt|#(}&G6HUj~OKDX1hWjFu>m1zc_^Ji~ z1L*^j{;`gwRVxlLYVF%}9s2&bF>#IDBQjQVT0T{cM?Fw;5)%^-gy#s6q7_n)q%eac zTQMqzT;0S#4vtkOakXeW0*ZwL4J^ET{b+4LC9w zRf&o>Z^xv8m-6l!&UW7`kos+d`qmgIx@+;-GMVGR$R$D(kg_CV-_Bqk(XUC4iX=08!xA7|^X@I&cJH%t zc>FBehIHSPm{z#ZSs8+*bTlzy4as(nkU-^$3J(~0kR&{xk# z3L|@_?cSiZ%HXY$C27f8b%wmVrd5wcyc9Gp zRRzBv5+B6}={Oq=y+P|hmFlGMu=FslqiX0$YJ$}x%Q8d3g$rbxAV#RxVQF{xqN8Q4mo;P|SEaT9l8)RH zU`7KV5s|M&{Y>)49e3g1kLb%QPYbXi=kmkMBYmx>8uI!#^>!_Iv*^*YYqB2NJZd@@ zMy8z@aQHBflE|*XE|x=Uj0O=ikK5JzbsyojVfosUy(*kOCo8m_MRKj?IuwWKDYA&O z2Q@mpV*X1Kn&Vv2@rqxPvu%@0Lep?0uA?%d6yBf^ek}q_IxF=W%NyEr&Ye}jybUid z0?v+VbnFs+rBid5Nkh_!V0hLZF`*)$KC)083r{rNb8dLRmCWEW7{eYIr!ju0*P$2Z zFQx=EV4FkG{bom5j2Wuuo}nD4$2V%Vx3z@xEyHl4;Nrg6b1~9l=0)k);o?@FgK(`- zWf;BR-ktl~6ss!}-k?;mto*%trk24zytaYNFbq_EQaZBwwzO4a)>T!u(<*9RdpNQb zDJ z;)D4vj#4U7`uYGG8+LXSdk57hpLHfjZa6ty0NQeP7L+q9#bI$+fQTKg=L+Ays+Y2$ zPeZ@m>EkI(3MJUFu&-wV!;t1-CVIDH(4-Nrh7#E*sKLFMeEPwD9dI`8#+U-(=GdZz7_uBTO&XDf=7Y zjRrA;_u~?ohX``w2~wK;P*sR(_aV}Gla~2nAUVpjhwu#@#roeg7$mw&`mPxF(BkevsH(Z9tbOV&zVCn0qX6)P#T6aTh|h;;K+|A zc=4qM#zykbnxz|?78V|=HvQSY&8uO~SPV&JTuA#*;C8J8=irY8y{uW5bv=3|1UP-eTQ9#) zwixP8ZuO~4-@tGX{?LzALqG*FAE~uj{|vs58=EUDmGj?_mP+(B-1pFDjUGi)ak} zdZIPJ#_)za#R2Z1W3{qUj8EA#F}v`>CnOHO<4yWL6QC??;P+kgu?OF+79ro2xXnBK zklf5Rlbf5-JL1KKF3HI9y9_gYv!L}N?mB)6iKc|L`L;UAJ&=a5tO(ZCVp9> z`Sh&r#@Y8*XZT_*<_)ULFw_zglZ`bEZt7kIPz)raJ<^p%k+SA(3{M^?&+J;cx8tZV zh3&_9Y6S^#dUE3Jm&ZCtLI!k*o-oVLw7;kWOcew)ok}zYw-e3YSs#_cyQ10?E82LQ znC#PpCWN4r;-%3Od=+XD4H;U*3;)&;GC;v^Q7@V(nw`t{jYWvpg;R*F@k#bTuJ<4y zysm$zB~f%Mm|l~eP!H8)Ez-Ql>cH^vl(o^sUlj_6JPdF!iS9Nv@84VLXD-qN?l2>T z1*J)N!Sn3<8vGPs{faKitxFhqnjOQUr&_Ar$m3E=LL_#p--a+SuFEDS>x2b=A2=b1 zet?7XrHqH7Lbyx(Nu_h6^L>CEpFB6h@eT%s`J9g%%`gT0rtGPnM~9x_@3_%(agn2G zkbJdov*V?g0vv)`PNrt%OI)nG9rQ!BjO8munmWE9PdM^=4p+^EYZDwJeQ5wW4IvwQ z-3`}UA$3tE?AX{W-N;`Fv3fvvFr;L39EbENTk;MK@;nZ(7n?}(Vzeix(d)y?rSr%qL)}aJjgl->9+h#@ zH9~O*EzYTC>-kyBX6t^{^6O0=dX}naVL71z+%3R&cUPEAHc1plju&J8{*TFTQI4lylnom_&w!MOB>b#(!-dU3W%c{gfrd;c9BL*hpYzmsq|1{TDtXDA{^5Uv#_` z^6r^dkiB+*sBjt3%xa{4c6$Y9=Q(V{{SN8;J9C41p`SrCFd+U%wC)`rCQ>vibG0>k z-J5q28JbMm`N*2X@kmke%(YtRk(k7S(f~bkrb#K~bK5R#L{tq_R_`TPq^cB^n;!5( z>aCRi#~0wpUTad|Z$_~WYECBM>m*)AoeLDX@n2vRjv{nHo6d@bz>G+4l=|=Pz(dk+!3;GV`Xe)66z4~% zp5g%7MpkR&puE?T>jXBesS>4W`=ivd`Udr|(d8vH2Y4!A9=aVWoG!&cS;)hDWESOB zH<2>@LY9*cPf|@on`2~2h~ex%)a2Hf^jKS5{6WMZmRzwD?4%_?Si}h)vP9Dv>ylrL z&N0>3fd_vGlAU=I^>CL7U#YT;^Ho4(H_Kr8#|f{4j5aSZB~}kR{5luIzL}gYhin1= zcuxBYQ>V30+=3V!@0&evJFyo}+Wr^FYiM{%dotWR!$rA19?tG($*KbZ_4d0lC6)=Q%xx3oHbdh zs#UnZITVGVO{YUq%!5qKve5KNIq}%6@@OY-vz>J~9|Ap(5YQ$%t<-UwP-HWQt<&DS zScT@83z8ma?i0zsHM-;r|@m%&^0)D@3QyIMQp5492ZBve&0&aYE>#C5R zx#b~C7jjze29@~pT;krpE(1NwIP|SN7kj^~uOaphM_~|fp2UQyLf}IKq;j<@mCLlT z$2;_3SQgt=ZN^-O-Ual0_rB_~#aNdbXX$bTQ=Ik3Pv-!ER-zZpwy?;Rgb z?x}LG56<~!QWPFUe(TKaCQUN%#hKmvmaV8XJ{mJo3Lm~0{sHuzl$C}sb~xzmTnD_s z=36tl!PvVVd)MtA+y59r|0@mXe;zb54Y-;)8dZg1RX^%RL&9bby+g1<`XqCYhL(4y uRjyy-_udoUFDo8R|0~+RmDk^zX#cAY>^}?|*DQrGzW!}soTRirtN#bA7sqY@ literal 0 HcmV?d00001 diff --git a/img/p/2-7.jpg b/img/p/2-7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7a2d38e2742bded4a4ae1c7aeb048b16e002f61a GIT binary patch literal 28632 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 Uiq&NCPecb_{wXrBKmN@B*}eyY>i_@% literal 0 HcmV?d00001 diff --git a/img/p/2-8-home.jpg b/img/p/2-8-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8603e61f21df38b811e05aeeb4fab2dc2aecb268 GIT binary patch literal 3708 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 L5f!5}1M}$L^I(!2 literal 0 HcmV?d00001 diff --git a/img/p/2-8-thickbox.jpg b/img/p/2-8-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..40809fc56544059e29de899e946d0d5afcbf2f35 GIT binary patch literal 31409 zcmd3NWpo_9(xzi(W@ct)W@dJrF*C<8J7#9KV`gTin3OaeWet{s%O3FxreEI|e@(K6{@@EZ13DDWh=K?Qhm47gf`*QPfdP+%g^h`hjf#$e{z2pu7_bjG z1PlZO3_1cF0{Z`R`O^!60u8DSstxvu6a*CI6Bx>;Km8#1A8bN=u=}6#2^0(h5(*p| zSc?a&00sMBYr#OlAt9jttb)LU0V|Qgkb#mu7yPI9|0n+tqe6o~O9uu@i-*RBLB|G$ zO8*~^{~NcTU}AyQC?uew|GgEmY@E7q8U4<|`kYE5A76oyQ(UPoB?~yI3~;D_4iF$L z|5YR?tNpxF6NGt4rx%n2H zsqMc$-T6q_^!2TFZ2GFZ#U)(rVxKQK*{<5JKnhxbe3wQc{Y3ozUt@^Eh-1+2Qm&6% zanm=q=>?srwcj1E?XAO~zc~jy;i2Ifs-ED(ju}^eap7;9QlztAbI6aY>uPu|`cGfY1bfJ!nxv|TP2z)=*loPVot{n1_kaJu7djtD=wJ-J7) z4!Wav73>Jp8Xy%V|AdM{0t51w7x86TLy7LaV-QDYZ+8v#WW6^s)`kji|!P7_CY9@om#!N~}hs`*)5@>Qvf@mDUgPCN7 z&OUKcWcSO}!GG})2A-jRsPRip;y!ZLH?MNoM2|(SatW`s!SCiDJllB;fv?r+g1fz7 zTBB7DhNvvRTaW#IhnkH@_SWl2+PWHa*S+_W)LXkv0^HoSQ*y;0BBvEWhnobEYuFLr8nG__u$+CC;yh+|5;6$?{RJFVgcw;G zE0g?MT`nK$!E1o1+O=GDKr4;lA&W~oS3kND1;g@r8#ilVURS*Ak6 z(l+T1n6fx3Ce5@?Ni6Mkb&_`B3Wxa{eMyZC1BZbIGV2AmN zf|s=O$E&WVh2hO>4sSoq@gUIL(Y1o-Of3 zAU9!vK2mXMQE_SUKyuIz?RW*WR#y*3{saX>;hMEuYIOE2O1fg%JR1VsEha_nDZ zt{<0$2v=sW?Gh%Q`Eo{Xf!F%2tj^)KRS!iZj-a+nRDrnW>2F%udb^8`kF~AVPc=SK zEbYcqDBl*XipUrmIl#$_G7_Us#k&ooR?C|`x)Wy1XTB^v6&vpHxHj}MUhMg&6``nx zhZa#pMVcw$VOYLlWx5#nD4i~+R)+vp^w+Tp$9@MQLqzx%biJR+gmv_~o8JbX!VSC% zJe_ugRLS2(QkuhjeYf+Q^la)5y13f9mYVWPjd8{QX_ZyYXs8fY#CU8fg3&LcN`ZM= z7C1^mAZ2x!Nu;-@>GhtC|CB|jHru*>r=4z9^arF^UOJo-g_=YJj(a?dk!HS)>BEAv zKg$>*paPKrGC~Zrnd`0PYp*l@)`ZTCYTa+XXiXqyg7Ue% z?#b(D1Xkr#g0c2$NyP8*&$YfQlnHcd=t*kqXsDEl7;j)jm(Sg7&D-5EV;Q#qfmPje zy-|Y)7}e3I&@yBZ6yQQg6Brkq)QBiW>dMPUWS5JdmCa;#+ zazkxQyhjNad#y{7hddsPwIglwQ&K<89k?zQmbnc-FYU4>=5ZfM&$n)UJ&f*_Pp4ge z2A7vLO7llUiM;5#$gb|w*w4nlRyVrXfx{o;sn}nWAK-krm6xG4LDoQlPN&U9H)hoy z@W_@t6d(dl?PqxIu{Eri8)#WBJdaNLr+K$OI&s^EC{Iz3 zmhm4tUH^at*v~DitkVp<96u2pH>&R*wI8-v^FKBl#5f2*(SPN3&qmdvSB@#ayWut2DQTB?SZq*4!>)P^@IMoczu_-LJ3 z)_Zi38c72K3F42a83aU-<%MsT{#j9My7f}j^NH}=bnAJ>1rVEF4^A+?@9on=bL^aT zZ(@;$M?237KD_w>kLy~EIlr!d?l=yh)F;a0e3}+Ai*j~zLQtOAgz|C(x1bHwr#P8@EiQd zx0uho_*z^G)w>5rI-SWKUS~q}8{Eh4RiDdf>orCq874+jn-%u>7nankp-V)FfqZ}i zKOkYZtb<-}D{f6g_IbCHAyX_51Zqk5;&%$3UzY6e`B^AN%>vbBpt~aIH;p)4Qq-4O zZht4MwR_gya(8_zSt7Jc`Y}04XeKmw{Nt<5l9N&SSN&wpgKcz$K3vMu&?1x2G|{v) z8Vv|G7TRHPpcje#Ctd;p>$$w9pKp0|Tzud|`q8@Ov#)Y)wV{-Ccc0PK-8y487@(vw zXiw9i>tRfw#Gn<&sb$j0rG|NM zLb{=41(0xtS5XcOl|jKklg&l_CkzI9K1!Is!9^;$zwpNr`jL%<0<)2i^T*eZ@;81L zH3PPUmj0e9{XOw-81lF3;{^U4gcubB80iD&1a<7ko&V1Y6fi~P1mXq(3d~JElG}eW zMPLF64uJxR%)$zVN=$;r!6__)&c=>Gs*Fh{Dn?Gh9Ge5o9-)D4KS6;00lB7gbZA!f zcP&TBsgOb-doDu3=S_4Ud3V~`+1XYiAz7`E6l+N)1&=fe9&sCZ1iN3k2szNeM>Sc3 zmMKvpZs(R#IB&Ke!mxG18p}D8~8yD;PBs#Z9wUT#;xl zACmcudYgr;<};}@_wy|BF@rPlo6b_rj$vW9LWzt~kZAc(wst|8fl-#riLf&=yU4n9 z%>$Xc$n)$Xg@!?+tXNEWU|0U*5*8NhR~kf(od$ybYgBS$a!&Hy8<~-zA3d*M3PT*_ z3!%zcKf@*#g1O=4L@weMPIyW7-1C4kAyD#?UX{k9aDP*b#_m%#PH_1>0V+dPC{2M& z7BBxw*_T8;0kO1Oz!wHD5W2;D4j2MGNFU#C`LeDliAiqB?2t0=bFGL9D@hjIGcs6e zLCESM(yE<$#if~B(yvs-A%K!0YFH!@OTJBsNdd4tOPeXyMB%po z6h{Or5{*|lU_sH4Pv^4Pzjt&Fu|$UKj2u#n*0VZS4wr6bm0VMtToH-gWk?B6*D5`0 z)OW(8nQeaoXquL=UxW1g8tA1e%sT$=J%9VceBoYEGXqB0H;cnntkuY5J%d8mZ1F*+Hwc{ zMlf$P^zw*^{VJ{TXAVecLP>aPK}tl_=a>y+ccD7tcfQ}6(PQT-r3k!Z7Ge_0<#|77 z77FGGM)M`3)SQa@?kAE$n9Gh>4**A~S)u6y9ECfewv0Pei3AnAzw`&NpHtvzB)zHP z{(x*>A?ZD09`PrNTz@Dp>lA=z<;#7U zJl2|&D2;feZvc1KM{Ze1qJa8K^QFSUcgq2gO`o~K`o3pyCoJ_sG(T=gdJG7m;6s8( zHo{X$u*(1=p~O>FWBp##vmV2^L@*^Faq}A!DmMsf>|q?A;-0B(h{$__c_>L?R`YlJ zQ5)va%~HOwcMz-p-Zmkb3La#R736+E5+okVVI#G3wBtBZ3oF`j<%E36MZdGkt>bl0 zm&EeBv?1SvO2}P0x7>;0*J#1#yFNh;J{i58%RK)V`xAG=E`xDZ=4*C#SY?hNdOUv@ zri!oVsl)J1^G=8OyQ$7_0VJ%n6kL?7J3?`5e27nkT3Aqd4Zbn~fn9}<+J~3b@+|w# z4M|;`C&Yh1pn9Tssa=E$$oRmtReOKHy3kA)heY!$r+lJE^}{9`5vN5?U`Zlh)98tS z^T!%}3+f4I(TuTV2WqwJ6#rc;9gt0z*`x>*_GiqCJ=pNLKHx+sSQ20btF7lZBo-4S zh@T!jbYcOaE^SpblVNv@s)?E-l|D;X3o$f&ZqqnEZpEh~Dw!Y!<1KelJGDm-h@s1@ z`v9*9&iHwMU703Z_uWqx4oGcDEC%YZka9Pg7ltC;AG1lEc3=X^;m5e(3-*_JIx(0OFK`h7f-#w_%AP>nH$QN{Nh!j) z8EH4UjA)C>wefWbLOvLim4VR-D&elV>0cpaeL1X_IhZSpJXJ)S2!JG_3(D^^e3wNE zGydEE^k(UAfAY(yws1J()kr$Dx|q6gZonJ{3?Z6V6MYN=YnOS_3!wN_8xs;pT#M~ zi)ObM5N`)tiF`6lavnZZuW(Vjb-+`Echd@lI;txY&UhD=bQ~uLA_T&~@Fqs@VUAiT zMd!7wd$*QEC3yeTcErxC#U8ry~{n5Y8G%#5smtsyydBzl|p;^ zUKU957lKZv_1=r=)Mq91eZjO-ZjS6&m{> zO-*ME+$=&J&~zL{7Q*|hB!iv>MNEDAlylzWhyE(^@{p$p_d}5vQC-n+CQ+8vZyaJp zol0Ek^Iq#%BC-56_s|CwFQ}0WA_F1owKBdZ+09tglpO&}5V~5NT2OIWnq#}U zx_kw-y@qNp6`oHQmcg%ecEI_6ksosvmrRthE#&Amj1nG9V5gj<6bGZ#WxD=ryEQ?A zGYB^oL3k0pX4h{?{Ha@UrDWclh;vHh%J>&GKSeYeK`mF?P4(?uiA9jjKmx7vec~N_qS}o7D@9dHQB+JayOs0l~emn$m$1SJCOaaO)2|dt5 z?TiS(%}HZSAL3T?Qw$-zq}A0C52KAg&m$Av0#@bN`{O*T$e3+3Qh*Z_=nL&)+9Ki3M>b|4^Y+MM zI9jO>@OOW>1@sdV*YW(KOIqMXzjBpTR<$bn^#_D8COX2@CXQeTp^Uy*4BKD;lDVE7 zJGW+7oV>t|T$I%2ux*C}LIax-BbeZ3rE`wV#d{v`j>_edYh^opU!^?1xXI|agM{q% za})Bnj|VQ2MwEyh&D`)*+0Hh6<fUB!<>+nu8aKbMt`twKkvZd)g1wTT813$Py=v>VQ3@_A=-d!ha0_WU&=x)WZ+#ta zzb{N7K$t1y#qDFFUg;f%pT@D_QjirTDe#jbB}73K8KwVQ@R&9(SsbxWon4352T!(?n44afHzHQhc0yFK zsi0@b3<~PLdU{l%OJYUpbh}i^tOHU|>G5tQNXiUu#g>zE;E+nZGKZ7aHisb&!1iDh zY4bpaN4$YlKOJ?>j2`5M+p&mjZs2|J=~44uOkLfU}$ zeeFvsDIpG`3gDyIR3-&=N4ZrITJ6(jDRHRx!6~N&mm!q0AIn!o!Q7*{tT2*28_A7Y z1IOjIV*`{q+XfDif-mo5Vq%Vm0@(*b$nY9IOoK)E35N$hk``2yxaeF`2GpuA)(KJn z>;qpIu#~3&{G526PYp2n;1O_ez+OC3)Ij9+G5>&E9s(0uE|iai78DX19O~aceEv;n zSx{J!f$1!>2qYRXn-z8RBUMoakdX_2kISva5dWLe0`p&?Pj7LBjny=W15`)M1*K5_ z5%(jO)}tcm$8tB|GgHHbx#bi2htRv^fm{3VYq-D(6^ z-QvaxEOg-Y{KHV%CXAgo3xitz{PkVmQ--aTE>Z&nD?`IP&i5`uj0s;IND z{m?aQ20?1=TDXz^>XpVf$s~yhv&_n+;^}tjRas&s9;?N#;3Bc@#2k`|oQa@8nrE03l>jY|9k&7&NCC zG*n*U=a;;njQKR~KbTdw=;-@2+@sw8fW)B{FtlC`(}QBB!0GTqENk%9?<(K&9g+Ob z2C(*0M6#q}22sarm-QCvsr~_h<=lA+U=uiOR4Q$S&^8bv?mLS0cdXxN%2mIJi4q&X z%n8})4D3N2#Gc4`#3Zd&=Yc)Z6$*J<7DH@}qXeiJN}3Q3VCFbxo+KsdSz#!i{hpVf ze1`U+Tb4(m2Sl#YH6oS@WMT=hkhF7nM1{I&Uq@gh*ZHd^CW8wVT$bT6d z*PNSac2He;TvaanX0@xr_91dLfLW|Im<=&b`ecPt`m!hlseb4bBTersWm}jXaf7l( zU@t=q)w;6c*8sb`{71Ix+ zG{aGR9GVhoGgq!ln!inpU4QQV67ppdAfS8mL#Qhp^=nbFZ0PgN9X#1pqdF`tYMrjj zyuqm{gG7FQ$)IS;&3_;D47)Wfi(*P`MohC{{_Wv}HJsj*n`Q8sS8y^Pa{Kl}CiB6( zjV%$R0Z$lzf&iQ#4FdfkI5ETw#)P0@_MOin+!=%mR=!rw%(_@mifva{#eBymF zHm$bQ8hnk8|6wy2d)&Cd#;Psl-NT}h)%@mSEw(FxRmRASwlQ9lUP{QD9a`vF>-@t4 zrlKU;yZnj5AJD*=C&txDABIotQ&kmc*)#9@%ZJ0RcEf$P1<0+DqCQQ=7bEovC#l9U z@m$O)6qi|N+$8lPOUqDjGBm=*83hn~wlr9`ACbCM8>4{}PfSTzC0oCaQJnttlXo(z z6&QI6y`I4VUo&n0UQdbvg;L_#lSMU9#H-Nhcf0WEWdUfmW{}6 zxHx}^(}Jp8k8C}_$Pm}a0BX#?s|Uw@g_vKK2uRAK4r~){xI~`zlsCs$Oow&bZ z3Er zMX|?u!(be5l-U}$4<(dsV~}*nA)i%R^D;J-IQZ$zIH-4@b<-4zc4qDoQOhSVXpu-G zlF_=#KzN<)qeH*(Gv_TdYW&P4D!O7a4T>Pb2?R^<^`Z{MLVnR&U(z@$IgfU1JK-m% z4QE!rig9ZMKm|uI8PQzqsRML!-T{7mp)>BT_TSsxCPKg^f))h?^b;uLCvf1-nSVW! z{RE1FiVR#GSVUOC(1cYS!68Ti-$nnf3ZNgW!XFTnndG``-pIye^f2@S-Eh>ox|X>e z;Jw~?U(^$Kb}0@TErojPXkUF!^Tt zqbcuqDQvMz{^k_;kT_BtwX!O!&C^I1o&Am$6aFydUj3cSRysw=%U5FzgD`tW z93)b4=J>MVvKFS;L(-(1q0E#{!eMt*lE@_PW!*3})5<-u;W+qc^aYHO-wdULR(Ur! z2VC8VGRR}1^SZiq8dxdO@>R00(0L|o>MhPpjHW*FI;0RPj_&Txbhl;t`dY6FK)p*M zgM0!7g@A;E1U~VG`p`UZ2NW0zI5H{;DKRsPilY-687rHx2*BCJuU1r9)juvC0^KOL zhuv6A?Mn`MUfs;>_VvG>eM1TXpM9HjUVJi&-YRQpT?6fCv4wRo3ONI=`ox6rZrqEKLth5J+0ry9^@HbS z$pdoEwTA2$oO_&iCjgOshnF^rU{+mxUded&H~PWN-eb?9wi}(!GluO>eXyPv+Vp+P zXe2&>ThGEmm}p!keW|TD2gcwJ#Y?B>f-YGa#MpG@P zNg_bTAtAd)h^f}-|7L+wp{3`pZu;$kSQFs)HTP^amJTDh{cf`=Yo+wL!twixM-6w2 z=%c`!6+5+5s0rACnZQg~PrK{@K{>SN1BA2o#$)vfNmLKJ+j8}aQy<)=Q=e%D=l}um zp@nBymArM9Cuom&SVI_zv(8HuD_KWi?6wTwr2d-ELNIC@9&Sy*9&!SdZLth8#O&OB zEr0MUiDZamel-3OnQRckR*0mHqyaNJbqBn*JmiacsaQc5JEUkZBjRixPc64}E&Tev zKU!wfzO(j3q4VrI?2Fy1N)|6Y>x)#1F$ zO3QbSL}6d(bNNnZTYI-BMn-a!HnZx;ONy|)^U@Byiq>l|N@R;Kv5U1mmN)w9TB2)i z+F-^pv+CVcc<1_afJ+`Ydm%C`T>WoZfvbJ{9L_>PE|^ah3}9czI*lTG4r*3?jlZ|nB+JY|1trX577#~^x3$v3>JAW;NVqT!O?i(0nI1^!wqO`%C(M+PM! zQ|UAc5m?CG1gLD+$W%o1@(d8dB*z6|^y0l}xmgoikRAB1!=cnLY-4EK@gSJkGrfm!Eo=vS5pDeY03_Lwcg$U*s)`4)l+bQ|fMRD@E$*USG z1}jlzCTY4X|+-% z)B45!9mUc%1u;L-`fNg#pXZ){F=NY@1K}o0jKiZD(;?^mLL@d7dvpAUN;+B#8;_|` z?|X3+T|g)&-{)_N3S@oRDznF(_hN4O+GFt`pD%I(t&|(lq(kP{b9T`iKG8sU7oXEA zFXPnH*Y521biGL#XdNE^wGH{pGQ5L4f1EFtysZjLpQF2V3LqogJa z5B~+jfUT>^d|GIt>BcM(c|~d{Jm<#XBxfag(7#~RJ%CmCi8y`U#{re z0>Vu=HAzyRxIG&D+YqC|;Ke}Lrh?WdgA<2!-2k#*LPVM>mK}Hr+u0@u946_d|1&>! za>RZ6{6!+c%nc^-^8T^CQ|smR2qEZ`Fw;KxC5~UWdFC|!CH0$_S6-AD#e8$5Bcr{s zlMJPZ(kn}j^+YjlIN16+fB zd9H8{aJne8*A}Pey*{&g{@9UGtDjxRo4LT>3XZitE4x_#0g(-1aHp!nQ3R8LU8|K? zDi!2RX*X1b=rwIadw~Bp8`mZF=++psMqWx_4;CQOZI{K6X5h?r>ItLB(Vx&gkE{Fx!5syu}0BWZ$aNoC1RuNucSGpis9IR=kQO zyMy*3JjIG8Nrgl0kdYgeEUsYotFW9~<-?2W%^n*(0j)1eM6ogsKX=s;6aHd2_@bCo zM|E5OL~*f-F(KJJ$XLb z%JfDiD9}*KJ^qezt5Tw=PMzr#x0ZM!fv+Gki=~`!I3~jzW#g2 zwYcW@ZDZfm*V32I!;4{G_l^Z1CqrFP3tvMV{+&I) zV0mC(@)a?_X=j`JiP)0y*Gg%d76e4HE|gr%^FFf1ZK5@f)4temp|eVsxv>Uas!A!= zSjyHE5cHg*-!WH3GFhH*_+BZblM7)t%e4xlM(u=fshs0)J%R58X zuqq+r3qe2kcii;Vyw;16Q}83|C_ZCixigA4RVZo~?Yl5HFyKfP#@a&&X8bm00Q3BX zASgSQuKVkj87P89iG~0KAlwyiVLSRQg z)fu2aEpTw|pRYUtu;jy-4qdHn;V^b|Iw)=gR$OSooMkmwW29F>jKQM@)hzG24oOW&`-djPX%OSVU9+$c}!%Cw*7KJ;XEH%Gb;GUN$=K&DONJ&0uzFILWjq;2=3it6V*KiOKyE4??|$4h@D^^9iquQutcD}wGu0(;5`>{1vFjH1>X z7#>M0Ir!%)zwS=y(TW}Nak@4YHhzxSQ)?=5spJbAlRQ)O@0#kl_BF{li+DTIRe0Eo zP!c*Y?sf30uqU)W10m~=CGIX=Z_lBa8aF^XZ)rc_MY?|-9ZpU8iB}iJ zgC;{DDz^a6x9&8iw*Vf%cW^#FY(A+RTS~fJxz4*s&q-%&m9clj3dM0kqKiP+Km-~e zbxPmdN}BixpgU6_dB9A7#_^u=c>DtrI=EXZD6%Zb-%9hejMaMTQK05ZEC%^dV4ji8 zY9*yKsxNHfy+6F@gfbCDI9$eL^2jtMsOO1T>vKxjyui*H<>dWtp5%}Q^1fz zc6xNpMDO;+;i&ZDZs=S|mx?lv8x6&CkeQOC`D%O2nG0a337?TZ`U4TqvfUT~xIKT3 zC)RNap+BVHsSEt9bl>Me8m*ED9PDXJ2PK4~k*W@r+F;L9oY+;wUwnaQ0>*8{vXXH) zK%g&xCSMLw_e>T!-pq2HsiA+%+7TPqc%v}%`azn&d4HTCV|byC`~~n+Dlx0}+|JI-{XRP0#c@^bB zLSX(aaER-`STRqJjQW%>YH>BP#!gY5Vox*QiKK2PMl%S@(F@dw)d#>sG4(AVUT{8h zpi=LW+-cc%4HtE~5r4t&1f)+V>}+NP%O*mc#UjBqu*g+KsRf4KEB+xqr(xk@kUzx_ zW;wHO!GYW75xbK`Dz+WUR@#!QK04kBeVAc=n{0Q@ETH+qkB?f9+CYd8`;b{a0#UB( z?8RS|H*;{Iw}-7S07aeGqerH;mUAMgQZjkmjSZ)pIRh$erW*|LOT#p4)0;Tk!{YMy z3<2wNF-4V#PKndup5vU@9`TJ{8l2S>HL%F_B?=`mYCTtWN`*byIpN5 zHf1G<-d$9MczkZ-{&RLrvK8#ajlyZE{UTzwtnBteyZdSq2MY5; z&O!>{>{RLlVUs)%D!T%6F^^JGIZN>ynuRgCDy-|=xGm_HIo6)BQmxkHKt(4keyK`O z47stN7cPIO%=J_LJ z$MMF=vT>zSpMJ&`vR}e?i?sM~4{SD~5?w?U3(kZCu8F5ZHQVpVITcWUlQi+FARv8- zFNuavKxaQP6)+S}k3+1{0WQX*A@-|8BH|8$)gopNY_GjO6`v2_O&_^A3YJ6yT4pdM zvVsfp#8mba+Yxlmv9m5k_6oSX^;0A3c8Ej3EK!4}=kgJjKy3$Z+SL)LMR(!+=wvxX=q|B~pQ)p7Jjg_aJoGq&vYZl}_KVe~fzEQFGoJjdC z+{@)i>WdHTLj;%eC&y6l0E8ZkbWQl#z|_EK6x&+KHognHckuXFEMzN#IF3j3l<=t{ zXk9{4YGVJ`BH6H-dnFga_mp)j2DUn{I05S1Q4MN)^aCz*){5kt#d!_2;o6*%Alfxs z8C8?>;hQb8@pq&9uKFi71iI(x=JOfPod8HX+59**C)>o}^;}MF>B_56(!{#i^YwsN zTIB{RCnOb|uaxhI;|aMFQl5TESvGdAo>{kM`3-E;ZX_NsTX!mZDU`7<;WAMgB@+Z# zE$>mV7aZ@#9*@41qJKcN!1S7BE~LieIN7G_j1?GgxgbmRTK&KR-$F4xQ0@R3NAkQa ztCBz5MBPXPp>{!)XUP^|-A-WA3}EBEZ@&dd^5w1x$hYWhB$V= zI3AWJdt_onVQ&62MM_i_r|`8v*EwM&S$5x*T6v^0%(j&BGwZzN9@p}_RK~L9G3wUA zH!Uir1m@{KAf1GLMR|{GlE+18KcJnkB1*K7rMFS;5(^qKJKpe72`Z&keEf@`D|k#i z6SU$qd3B#$JRC()jN|dAIUbnINW~AImlecZrikpTTXw3QL z4+!VQYTLVffBEyzrZaOS75M&yuu=)ElptsxROBXe?7fFSAfBiab$FIdDdh9QH^;(d zB$K;MI^5$o)RK_r9m!od31R;BWS69ti?2?>$hxf9h|q4N>Qt6W@#?@0e1T^{`8+?j zE2GAv(fjUMm|d-2M~;$T-{k}5&i$heJ19KwbgjiiY>K_0V*)$U-pQ`uJ42Y}?bZ;Q zgSlX{4vZ`rcXAFx%=~9)l($VGaR}JBO^2QbSz?pw^&5ZbLE8VsYKIIJ7|f4gs92#f z3Z)O5Vy2=zrBJIoeIRcHZYN^)1io#>Jmc-F^W_nea4#FB%_OyO*U?DFo5E0%rANxS zKulfQzLk=nkl64`K{!KghXJC&9o~HSTb=5Lt4GwW*q%!hk-sORFDPhww@AFYM5#6k zF(CvBqExvyKEsV91vN$yvGhHj_8n@S!HMd+lkW_QP+dB*LaXmM!y_5INat5yol)KMX8$y8p*Pm7;$W%?Q-I4IiBk(IIX;aW z3_!_ECWIeUy2a{VT_5%ChKQjFD7veJOx`DY+G&1J48bcpxAfVO#lx#=VvEC>tZ3mOUh2w3m<*o7c$^ZAitA@_yhg*(>S2q({R4uax>uMXPK%O# zSxCQpoNC600}sU5ch-64xe6RUSTM^Vyrsyl*Mbxjsa?S8x1>*0DZ`a?xX@evm~1}q zMJHzssGKkbaS>sNia8)Xf1axh5F0coVoZvJeQYYRlH) zc(&uNc)Gk*J61sgWN~CXu`>rQ9N-8=bqw>5=;^l6m~1@6Q)`5$7xpAWJ;r-lx3VtI z>nPLDoA4nmEZ=BVWkI9U=l%3RA+hm7yoVsj+g%6%*L( z!CN`=M^S0iLiLEhL2J38rgZfkh#Qvs%2k?CyV8nw_p+bQu~o-4Qb-JEUEmaq;K;}@ zsqETQrcor0r855uJps*BfNs5knev}dqb<*ry`AYBRL8P z;&j7UM}$Gd6hB!u$+Nw(nKmD0D#vYT+-vp5FA^oQ?Zp$wUCCM5-jiuV_D*Pv>>M@f z#pe$!kt4-TIjYj6M=(r%@8o2u| z^{@WmG}J*le?VAnqfC_d20|E*EF`C2k(kfEf=*&0gs(eQ1t4?iZaw3W(8|W^x$H_h zB5=VuzD2^&L8t1m=mbYY(83?yQO0Amuu;V!z(N%Z7MQn|-$KzlBZ?hy(@fVyfxOS2 zqu8r-&oavRBFJaOGxln)^B#DmfKRgA*q1Dj53hA_^hkXk#4p2>zoAE7b7MQ=4r#^z zeWjY5PEFplTR7^3EQ3?G%YI#xINNIv!qNnZxOb>OdCi))Uv7B9=)(vPs%So zwIA#am-s>m)hrUzQm2Jl*`a-1dqNxRC324?E>>)d&+vwPFhS!L+c9NEqlH81M$ls+ zLLYv=vW@)ti)q2!NUzk;LT zFtP1Jzj-#QY5DBEt|+-|wVsl;JSH_%5mLN*;t8LC`9b)7gDebMC=yfk|$e*)P;*oZxSe7q*C-y_O0x3JO5~nx{mmLnU=4 z5KpFxGI9*uQHKO}Q-NrN{JfhtYDB}*2760U8QF34mf3G7tLyyge*ytY>k;L4j?m-* zFJ32EX9oq`G|N@DCtCRPimoMYt{=ZT0X9!vKa5l>0lSAmCN4HX2MdR-}QDJy$25X-y6&zJ-Ty=wr!f&`|HEY=b^x112&2)?B05LF<3i=#}G zEvFuNz*_{LyWjxk4aurHi0J-pOI&w!9%uHh!udDF90~{2PX^>=&(oW1G$F0f^Mf*i z;wz*Mhn%vh-@u!DqE}<#JJ)OPa}wjN8kOQBCB#KA-0@8LMhCfmnu_m*dJ-<`*v`;s zjtK;`f|+*IvDIu8pGAaHOfub3@WsySZ@#3YVjeo_{n}u+=mtyP9@`6X?SYC&vt1)0 zT#1Qm7h+gIwFK_HK_ycVBX}c#N=kzl7)JlKk$$v=vbncmbY82A2YfXz!PW=`?*Cypou2 zj5}wB?xIs3L9#{AG|=L%w4dFi_DdQ?ic1qpFJn%a$tf^1k>L*n(;Klkj@T=v8vxbX zHv=NYdm43q(5om~SdqZu)v2Z8I^|9saeLtCI_Z>6AJY&I_gKrKUP*rOJR(`(g)F@a zlOEyv9PH%rKYDx1s5qYJO?Z&OJ-AD7cMlFhgS!px?(V?}1h?Ss?m9rQ;O>JHoCFA# zo&5fL_S3%a$L&+oJ*T^>rs`Jpt?qlD`%J`Q=@9NLO%b*(eu#_*!7VHjq3%mF3*S4I zZ2X{6DZn#)p+G1*G0}0jK;~j3FFN|G438)x#=)oGl}M9iB~hCrcFdPD$+n-7qwV=C zvSb`m6Eqx8q`)t6g@{PAk?=X5=8s5}CNI>$Ken0Q?|({D(y8RYAl##Ojipc1#=WC) z9X+r**bCo1_s9MKZwkE6q=bBD52FGRd852?5^EB}05WR2qA5c?Xlgu+Xi7X+Zr8uT zSzs3%O3A)Q&_ISo(I*eNF~{PF!nB}YJUcM}{x);+0U{aE@pme(VJAtd52V?6{i+Mg zED(?Iq)a;Mhe+e3GIKQs;QkV#bh@Q#bQ|_U^hF~7rSEqw|Fk#c5_qY8UqUqySqLnM zJ&}Mjj>t?6CC?v1qN(9RqIr{Uo@c?7Qb6AO#j{gTGKhmJi4-B;AELX7Lybh4vrUr(raX|IhRi*sllu93cQms z%lB94_{V_}0g!+HMdJMz8DO5rESi2_bbu;T_dURy79I;0i39$N-uo2IR??VhoUi_H ztq%FhX{twX75{z_0D#s8BKZs0I`!0@5G;A;^NJiX7JJ=x0D#AW8f|4H;IXaYX;vWa zZD`d+y@lf+YL1cFrLmx0|F5kA)F?P4cYy>hS^PXz?d?C9n)hU|RK-Prc+h$&qmMCc zpwTdsB~2Ui+|yh|!6ec!GFajRYRiP6Mc^52gS5mUKkRzJ58kTN%PB{A${{2UAcbud zA^#G)O4@0uPP>ps)Z>PI*Xt}aY?BfWAR$c%8YMe6km+inocsjQ)N{@csBy*nCnz)^ z9ta-KrD53Ez8zwJa8zCx_SLDMnS(OqU(_fJG>aDDaW`%(kp~?N)JtNU$m*wgAOX)I zhXy|nm0YO{2ks|>;RBAi0cvu>=iLmLR4fT3nt^}v4o4)3wdz5xEF+BI#9H(k)gS;% z{TqFFRf#AOLs~RF#OJ;MMybX=I8Yj=tVt?fHI4W=JnU93C14sy2!R`q+e0si0(V`qd8d z4b}hvNtE9n_%~XJxDxQV?GHj5LqDFnOljrQ9rv@xOp$m0U4u#oOG0-T>L&a-NhZb^ zThh>6huQ;s@E^1a9#=vdJ88fycsv&Rs0PKj|Q1smYQ4tLVQ3 z?STZgG@acJP<$yXY2IsCR#rIr7{trMI>n{L89O0FA!a~?QVY!cq_?p2z#H;X& zsEDRc^vJ%;kOlhy8`ad=1Sk$LJbT^aQ(KMR33!$9&P}*?<%hfcKxFzsXC4*B$?44L zFM#~3aPi`mgjE-r&BN3KOPiI`iGqRO3WRj%;sIZEjOL8s;~A#nWAy$B>TiCX^uR`d zUz#JYIoJVb#~ zdt|j6Q~GhV<$*cubLz@^fALJ7w^W=&MB`j@%a#sgC}=Qd0foSR{%|5|1+ zUZ4F7dE6)&!4Lndm`o;~i5q|wc>R2j>lIrF?&wu|WlB@!Wig=x#tV7U=!?jab@e`!Outf;c_$e1{X@;d-WBs%sc+E@VU+0HuTV%<7iK@oK-(D zlIuIV3}|7cr+3CSy6mY-%DyBCIg2F5@LZb2-79hI_Ha?C2em3ULum$hi0ByIM;955 z+13R&trVUA3gYv@MWYvQn8Nx8Bac3O=LV@ezSIX1rpTmA*0Er=4t{{;lS zpFew`i{|*1BsdsCAto$9o#Z1|g14?o;;=M9fZ%yZIt&@Jcb9_-OxKy*794IzJVs%MW3Y_->5*}I=?J&jG9oR`4_&B~9@x6rPbfaiE= zEo{Ve7@~AsMaB!8Hu@ol)>75D>AW;yD~V7DcDJ@|K6EI0#!HtjmEWnOWyEWvKOE;} zhfzHzT1F<_?z5f1`Td9+gAg(y+@~tzjs!kIgI27vif;OyxokWGl;0`BbKw zV`_XcUI4!l?lV+~JoQ+mT>WuHnpD5kL(aT05=ETu5)mU-e&-X;(h*+cOY&>;Rrd0H zW1fjVyTLOW*$G{^d+!!bJaM7|cGZiqmdzMzDD{-L_KN(jdlc6pHF0sqT`z{$0b>+d zLNJ4@kz6;B6VYBW-Ft?E18@kij0D|fXBoDkVpNwb>u&2N)?Z&3^L~+LtC-_ecC7(n zS8B)x9HALUBcS$KeF#rhtG4c0SuNu@-%!k8GfAxA$bk|hU2?k!f?p*KwnB%0OpSQ~ z6@QYSFJ;y`(b0g`SURC7;?c?uswhOYitqI-)zyrn8u8NFC)I4m8yRo$7o866e*u9| zjmZE7@BWXA_doCMe<~B36N`$HLqbg)sx%Atu9F+*{zqT_gYH80WwarPEBPEfqfV)W zKL1|A!Lvl7g7{Bp`k39$Rp+~pNengh@)oHPd%j#G7UgC8xJi&T8pU~>8 zesV>Q}wyCiiS#?y9zZkuVPhcf68c(wDPodjR3GRRYT6~}aKj}ut z6DF@Zaj4Qs`@Py_+3Sg-1+}5%+bhOFfv@?7cKQ|Y?Z|UTwUe*!vT*6BoG$zKOpr3n7iz8;` zqi1b&YJLq_u{-!#rxVUh9LWr|NSr%%Ad5m2Y`SqD%X?J8t7fV zX~#BG7x-SFG(1|>bL(MJYbcb4_YHU3D&xt`v(dnqvx-yG#k`Vzc?&(k-N|V0FTf;M z(vC2dVNdYwT+huzUuYT?qoY>7%hB5znK5&j#{F}N!^Y(3^`3x-ejvPkQouCQ2mK^! z)hMB4+MaT@s7*hl6{1a4^}M|cn>hvai8#&{ z`a)AMeYfnBHh!gxc)iCOagU?VCZx@aj>t4pT$78;%{(!;E}~C!m=AhijgwB7_c=DF z$--i+fR-h^;DiTDv0=RVeGEg2D?Ij!wwH`kgxzQulp4c30Q%tZKE-ven_(aH^S{6TUl0BJLKNYZCh1mI);%*yzh;zn_I7S&lzv$G5iE%1`&qej z&-P`#+%1Uh1@+@=`U#)TDE|fgS#f(ZQ9KP~Fa6cm1;s$hKlV}#=jZ+f#2GP{29tTz zrM>9n=jS0_cLqnkdCx=h{sq9i5me5`HyN(TESCEk-{u{XTheX{k(ulVQ;WUHymLJ_ z6|@vi!x{=d@}aMxthVT(|LuwnGal?Ra0$RP1Rr!VpOJ*jnGIB0^w0dPenbD&m+`ps zuMLmGuAtOXFxi9x*f+Gr8XBjZ3%pjew{4*CljdRj^iyVV=pE)pMeLxIgmZUBr7ym7 z!?(^1zsDrmW$xoC>qcpLuFlrXdmf5M#Q8#t*jB1yW5qJIsB<_I>kgh_A@SVL5g)Q!l?RJm3eK@1E#MirD!x+ z=g40`HfHS!hbxZS@9!oq`28%+g+UJW5}8c0eNOWOCN`#D0kWc1FqWY+!(#S_m^NZT*O@yAsF>+m0|*Uog;?ZVYb>MQg9LTE7U4sZ>%?(z({}uHc9rSy z!7darL@Qs%_GVQ4C_?Kecgp*3DZ<0pr7puPM;kEAm>|l-sdt`VnD~PYDdFP2urDVw z(AkM0KBp@5W{J6!1?lc`U|*)U1A() zxNep^L*BTFxnrp%nxZu;h12TjXN8vuIt+;}Xi49bMe5~iIucr=wIuj*p*ld@Y=Y?g zjzp0dMe_POUdCJA?=>@zL#P`?M70kzCR9@Yag8O9pjAd+&(ocGQ~t;VHAKJl5<<;m zV&_BiBJGb3Gw8CM!>VSW5rSzk(RXxN7QM#3Gf2>%T+WI1Y5&SER3?`}5&bsAhp+A?mdV*YuT!}C0qV$gYy z!az_&9rF-vzPSF~Pa-5P^nQ|rqzrL2)$*m}w;2LD9;Tz@XOf-q?2kMejRqd z=Oj+!27mt1PkgjH>YG+QIyau^5*>@8s8M*Azx)KJS|vn}2c$?wF5?^bWNYaAIU;fm zcHis5rT4o>y_Q){C;E0L1n=UAlaIhW;I-$ohx`y3K%59FA|=;;6x;M=hvRErdZnVl zz!!~0({OXXB!|r|`i8Zo{_6f5#p~#coX7KN8@TaiQPvTH(6F;UfmA6!ZGE`O+A^{6 zDhH&v#dc_*rPuPiQS@9Qe4#PQdXbwIX6T;@)OnVzlW#q{+0X=3y67=4}0BnB& zPjgS<2!)!cw@H-|`Cac;`#ZFdOwMD&DPgOBsbWk4-wr?KW6le1+)4}Wu%K9T9T(I+~z)ZeXIt;|<|XmT1|l!p8th4XjX z@qO_~OtQt7h0$Ifwz4angXwUHn>s%*Z60Z!=rZL>7e(~k+@}Dxc`F$_69R;oKWX(5 zpLINC(A7^>vTwa2mrBH|$TkTo!1(5a(27I(dr+YZ>rmhrmisnajx`6e6q0|_Z^ zt<3l?Ip^lEj%Hcxg*R|&Km_=~G1bhPCa{&iTHBCi5@yDSp(;D%T+U_KumCwMsXIZ2 z7g&UFI%TM*=AgrlpPc{(I@9p#qK^*4^_^KIEP*|eSYb||GO0qTMQ_1a1gsw#k+f;y zpZ6~CKy~-jFc32T(#Iw>(+_i{obj=LEJxgG1_Bji$ZJPh33~_i*|tp3>@qCf>ahwP z6TAdtTU&uyoLC2}o>}&)555^LJ|rJetDWhb2=NoRwZEcgw$pMReef(ah>5Uis9>4s zO~mACAaJ3Z(GwSd3o>r3mdV@KBEe^9k4{ObG3IB0#WTgMO|C7{aH4M08ow%ga<1z# z3MP3hDTxoy;d&svshzwTcnpj9tPjiPrN(`)Tg+QbKFgQ`FIEX&B@q^#Gv7Vr*b8ID zxMm1CI&BY=ab|UNO@d7EA7+rxpXj`#sQUh^cET?caD9kfdM00Dou^Jy{C9W7C6Yo z*p9D-C`JO=i;maPsty7QUxyqsb!@_Wy>5`SersHI1Qn{9Q+{x<^p$l$K2MqH;p;=X zh&njl0{i#ECjPR*!FBA*KQ~@?Q~gF1zjj^M=o(UibnIdw;{|g#W2@OxZoN4!N3`8X zT`ev=MV1~#M;qVQC`c({b%?c2XLH0@X5ZaYYGe*isG3E}pE;O;!T!ys2GUk70fA|z z<4#d+wNTwsY+=^J(Tl3}NpE%rjb}&|;QNru4pQIgN7%H-rB#vDaV%%MY#LBjQ%%AY zTIUTQdw?7*U9d_+NKuZEvD<+;ab{`K_$hXXN>JB=>}42jJw4@;rbO(!z(TITAjt>b z1tVl5<_fvT{K2N?QHsSOvWNoWL0i%f7;j1JgkU0fvf|=?PO#LRSc- zIi>yx+B(+=DpP%e6<_Rkmj=ks=}*)>zOkAIL7Cx(=VF`EdkVd4sDiCt(?_jWcqulg zKZr9ZTff3>B_fQ8ok+)ckF!bcvjz+!sVoL0o6dLiULbvM4bt&wb-Y=cumD&)DRlm8l&L2l%Hw~#d@M23+o_lG=2 z@;rb36~ghwMQ9OD7Pt0{E?m)lT7(J#rPu`#`qFhEmvhCS7dvbOiT{f9C!KnI`(*;} zI3|^a3Fc#@Kog&UiP;01XBC>$?!-4^ksVm}V{X-(!fP`uabgm`Zu7J$wJA+3ceev+ z`nYuDi<-Cbuj?8rYlH(1_37`v>2gs!uvkZ@Yp+$=%7rnQ;1rus&4?|&k0c+w zBCRuK*x2Tmt7KzCS>`c$lco_-^~%~14>^wU+P%EMF)ekWe?Y~m^$PvCwHI>4gCuUb zbw2zNL3{64u3=5k&VKMlxu|HDzh`jf{7v~5f_iCahdmt)r>0^@{Zb`(>q~dFjBx7g z&JZ@tryA4poQgJ2&qPao1admk^r?N<57o&P`YkefR*)j*ZkvbC#vU(>>kn>2mcRp@ zul7GleH6lU05`gr>6j_Rj&F6^-?9<>l|=#W(cwjUmTDBdxlEr#XV7rHz3&p=W!k%& zSC1qE`1hu8Ae-ESQ^xe>Jyiu`ixU&HMx>KQ^g;^Qc!x)-IA7Eq`lura?7R#T?qL|H z)v+xa4F~C>@H$xd@RXf|d!3?imzU}m=z7WS1W%{veLNwq!g5B=kIu#XF0cEKG!5g^ z@TzO=U?$JhhTn|9Q`S}(j285V2c*~3?o!)>*Nj?(xZY`m}ef$6Ji##i3zR%=j(U=VfB=#?Pt zkb6wqB@2oC5R?>z1ocz(ZtfS`EM24puj;MlGdbBM9-=>q_}LT2uTF+}19cyS6=L0Z zBS$lZ*;RpXVQe!GToZ!cm7d1(C5x>Fg#&gk1HE=j+HoVWQ+FL_M~4pMKuoWtCHRegaGFY~~?xgfpCm zmplwvaOy8%h57so{l3FgKS-+fR);3T9w+DZH@XGw)r!qJnLBO96Ft>T#qI8Eg&&K+9^aLuMZsU2I{zzW{)d!W-GI-Y-f5 zcTn9F>JleFczr&aSh_W3igaoC_{GOn^X2H8KXL+A^e0QbWJ*QHSu**xw;} zDdFL?z-Hn$Rx%WoWj5=p1S9f&n>|g8`B^`4Vvv(U0Npg7ld=)#J=?ff1vCC z{B78Ny^L0tng{THw~Sj$Wje19^`z*BXd5`50y>-JV$0ZtYZ3$&;V(N?n5jV{EkUbzcRtVC(RYNqV|tW*jGojUMEgri)GR^w97EpAiVvD${6@l(JpMe-G~ zq&`3YUssQTKZKx0!6%a=EoI6iPj`!;npa5}x8ih>e7)>@_=eK2aoGvlFOyX1-ma{U zXc~8fcqhb2@Zr+q-48nr3YC7j4-7p+d^Ivm77ZkNF&W0|yWNivw5o;f*AaPbDVVh> zhsb)6f{gk=P5PNSzGz;UfCXL9o+WV}8wA9!+ZmzHW=P1&fleATj+>DAC*jIDHbHfq z@sM+toCshs6;x_(f;)W!goh1hn5vROx0%9)$(@7VU%nAH{N5(;%aSM&Ug z$W)PFN`o%tFRSVK*S2$t0bn|uc;pmdH`$HSz`fWvy%(+da>qCm53VCb>Z2u_TQX_dL;AK(oex+;9ha{_>A)0VPfq;x!mk&)^8jG9>e zqR&$GeDC8ZBKG+3W|P(K+8P@#1krXUY7eCJhY5w(^9r}(5rnc|bx|pef6wpg9B1%Q zGp5vPTdeAUC+yCRpydzN!YxcG(nW}C%}lV|?Gqj>F?4H~MR5t-d0jb_6zlF~5h%UlJi@Sp=^#VOLh$Q%yG8gUeI1`J3 zhtd8Ni$`WdbV?nO?a$OZ>O><&6e(IjQ=A>4PZ$FniPB;tj2Fg_`rkwnltgl`_zK}c zujmM{ReMn!A>=ig#K3)PEGa#u1u>lI$Pkr3k5P~l)|w5xiJXzV?kVc9>jrGqaG=sU ztyS@CrDhCqnPCg1eTdW5Se7bD-W+ zc7)4vFxT=;%;^_1TAinwx|Kq0-cyAW^qUU`#`DR}Ts0GE9aWz>mT>02SM)mgOSzl< zq&jvHN%KV?(E$a<99hNZux!cb*)v}O`8xQ{Xe$QWA%J89wRdXx<3kx1g`BQx;}X;6 z{h1Xt3yvKb7F6BkcpdFSUoH#!(K-$Ueq}ITRfcn8$gS)A9=%D|hK*ozUI$pF=@>+* z)$r9iagxCk)G8DpEQ=PPv3mRw`x%0W(v>-G&w4{-SDP!LA&q{+MZ#N^KBU`HMy-Up zT-tS+e0(VYcu? zc&6c`WwqLudHC9>hDi`4B`pp$wQ?5 zG~jh#8lT@+MQ)nf;S%aQEY=gGfn3mb%8-*H*#^P4cZ48vqkXvW1#1fDMQrz~ZOXbx zP~Qz;3B(PXWmHB0$1GW=(QAX+uFB1iQfF2g0cZCYutFH2zO_gY0l22X!G265-Sb08v>ST)hi1bN0k@TR?@gWh^&;76ej>r5 z>XPA8$W{Knke}zYVv04H!i9#&qvzdeXk`c@4oaSFRxhT;S=;=9s z%zR|r>a&zGcnitGX7W{lmFNgtST4CwMQaPEn!5D^h=T^k&+{j$0ZTKRkKjdB~ z7M3iulD)N0X^GHT5P&4L6;>n}ev>0+MX4B##+2q?1}6!#N|#b0yIPj9ltQQ}U%I=D zpQ}IwA=OW%;?;{aVg*(kjHl*NeyOjp5XYkz)-lRv54MkU@_<4aV(cwGEgi17qI2Kf zPz|cCx!Aci@DH;;5kS~J)|mXL+>~_%+tnP+*cbY(Ob;=K&MDCBm=qb0-0jNI)jEgm z=X>!;*hHtt6ufQXkA2#KnjpSNCfyyo?u)FhnqoL-wig;exd?p;n0mCk1A{aBy?XBH z9;`fBGC%XQVR!7%Uh#l=dYS6{#C>99O^IE>q;b=TZu*LkBT0{+W*co1*pa2wXsiLf z&yKOiMh)lt8ruTiI&%T5+W{>u5BQD*Umxav@&bJ@56`3YPmU;krxLa=dEnt&{Iw~} z9#UJCl`J->Axd>gOEx6O#_YOUe$0lio50hsh!03uSg}iwac6-uDdnSR*#Zs!OvhW# ziY=}JuL-|Mxi5ShI0XkI-t=Y6Lktm1tVCYv4owhS@~A;zZ~i42FC%j_Dyh*AXX>*( z-0^J!?JmINNOSlsBH0ptoZ{W=rTNeKj8vu zzDx4Eb#PD7(5YeT2Jma~pOj;~C2JNgc_~KT&K)quU^_{uQpS4G710{>at&Wtky0?8 zedB~dm?0A?stI4l){1dm-~JPsqX;bQRe(Kjwq3W0T_6(2#n0W~Cen1~P*1A~Q=6J^ z;46I{^Z{%=Y)TFp>8<__OJGHtoq0+q=ybH$v~gfnGp4a?7?FD$rOs(L}G5H3gCk5a~;+-=hJ`v-qnB-MoHVfQRP7)!b(ct*CbrNc4;g5R` zq-<9+o9n=VDXlHlH7iiFS!%Uh`%?_+k1WS4w?Ut*lbK2+Q?`p;nrF1|ko{jlW~5T5 zY{s945oL-5aE#VlV=uGtne{&TuvzGQA|PckEIa+3;Tf7uO{DGBqYT)hAU4$*tN`}l zl1|cpal9kL-?{By3}&5tNiS@<8!APo!ku*0`W-lCZBY^HhFaU8IKNmk)Nh`NvX20V3a(w2Oe&V$K{l!E;`5| z7BzHH(142;60pJ+8TBrvg6NqoTby9*YnBs`=d(j=mPLha^E_+$rBs(y$brjuxupE2O{ z9H&rX%V)_S5J;F^B02IC85mf=enA(i_i++mgL>4M%f<47Ft0TgsgG4b_L*5~?Qh?; zt0mzlSIkPg#)%@DdkV=3Bane)qjB!Wp`S`iCfH7u9BJJd_#0!iU7^N zDW0_Q3qSfN8my%BM}LPicWxP8w%(#0LCaNYm4ORvM7LDn$V^8a13}&u=!+fLy&mbu zZeFB!7o!4*r$y50U*c_YcfH7-Ym>0b?wlS=s$o9!kJWq^TKNm0d^dDncU7Z8Sr{o( zNJ8kX14OBGJamoMF|7)AMywh9qFV+@2*^*Ff(3sDaHK7OcLp-HKnP{|VKvKo{dkT(Ni+pzV8O1>?2r78k6IgvjO`GW^8FG+GfpJW{+9tBt8{4bn%+;=N z{1LAYxm-erFMeq!akex)yCZz_s>ac?a;mQTjlWz}FkAdOqxbhIQp$3DG_Iol2K%L~ z^%5K89 ziAF|=g?{y#&#>_wWq1`lZB7WD`XFZjVFg(_U+oD24prQe@v{@Cm`n1>qy>MocKQyv zt11ojC{D=1y`v^v|6A+a{q$W**jbEGu#16^>>12d+l_|3{8edPlqvGd2d*Z=M zu?tnUM_*ypx60xtOTf0hTa7S{4v6c-&O(V_$62&Dl{O|EJY>}x^@SBzna$jSr;78s zzqm~9Dmdtry0}6AdS&x56K#T(DT|+3|KnwL#mJs`i!Ui>nI>~{pOq;Zg+&mACe<1F z#uJk)xP|HMFt!iU@1JH7$JjGTApc#8wapVl9?GQC;5I3NFSUT!J;?&Q&<$3?8P)W^ zfkg@{5K}Yqa7mkzSQBz03L8%L#A&e~1-pA3YjQtSJ4(0<=rl*r>Z+6XcEwqqOanOk!kl61y>9r4dBcfIqRDQ9lGC@yJs5w^=FlNWZxA z3@W+V_5FZkTmCTEDPc`{)^VasT~@ilQS@_#DMRULigHZK(p~R~d4LQ|C9Zzo#31pIIw@tCs)6Cek|Qpa^fAc>F%*r_Sy7eV9q#MUa|Q}6XR8NGbRIW> znIZ(~8smHtYN}m0E8STB6mjb{%7BT>;{F1_M5A`69i75)gaOSUwTNwY6B`fwX0N8) zYLt>nBl}x=ih*Cp<)SF=u8^5Evbt-09=+d4k6(p_8;P%wPEKkJ-u(8;^_2Q zu5}U9G!7_Fh@Y@*M}5OBy2~1yJJqbF2GgHd5ZavtKbsA>vOYnr0M#)l|;)O8<=D9X^TQa=q{rmi~lALIJT0#TcSZ?KKLNO15@1-y-i z^7riYeE4IOR8b-9wC>*sQ)|`un5y_&8|8Um4@TTn8EdHW)9b_=TX25i0D9f@+9AG= zxejcMejr`B_Y)OE%7njM5O3U`V$Q8%p=}kjl9n8DW^6z2^0?dof3%9}-Q`<8qH9|y^Fyj6WwTw&C&Gla2tR-i>{5h_e ztzbBgvypI^pUTf;9^_(o5d}>vyfM8z_A#J{JI}zwLm=%O66t5Z4aRK*@<}cLYL<7X zH&_|9VPK@qtQu4ykjB-KG_6>%B^}!W&-|QQa#@D(u$zX}W?^A)gpMYN}Bl9U` z^e{w8C)fG-YBgmP2rsi5x-7$3em*CFVd8p62YM3z#K>z~yQr_nqc^RG^Dp@{bGW{f zxNjzB7`+qYFjYUh4k|1&@e^nm#!GLEB}67bgXqEzsbsS(?(M`lzOo^ba}`3orKDoFi~ z_Z$LuUxXSSlv0e?B2svRS|X{12kVMlWd(?xYMknOd|@sPG7MtBUaS(af>*7(EN}z^ zP!c*06E_F=w=Ft4^PZYi9UIa(7~Kp5CQLA_fDQy;Y+za`#6XVv`vyQO#Dl{|H*%qK z1SijBkSM!zKhu-%`ga7oHm?dQ#1x@-Vzb1E9Rn0U(BdzlzG{zgB>$WBSy6RoTDED7 zrT06P^p@S8zju`D1!nCZ53W_dxz9B$MtjBQl8P#-^hf9zHh?r9EeMYR90NeKl-6=H z9CuEXYugTwwmg+`*hFK2sLmuvgqdK$+_m(Skg`{(jA*kkCksPV1#P6(;G%_ zWa(nvSXqOI)ZX(W^m@`KMY2ri4>Uj3{5mh8!T7ViIkZY|wx|!NN|!TFA^wzNX8={q zj{xA8tuOS5;y)`3;f~&UpcPi&tt4iU7S`WRPI4#?e*Mr?YB%mZ%s?(9cto?ESbZt^ z88l^p--wOhpPkyB6(Fbb!28)1#-H^wGE5WP5wOWI?o~lTO~;x(ONwFc?8nDhm!`B^ zi#Uu94}ZB@9Rl@3y@nw@UN^B85zN(S01hmIDcDs4BUVupS43CFpZh&myWX`{pCzOpIlPbI#d!9Wv%$clT<=a`8cr^%=AbODznv$sQ8nvviR z4wl`SImSv%d2P!6-=S+C{gDl}$*w8QdLi0nT_G2K|MRxO9}p~15i1(d+*r_U}pb?RCU z2iyrPoTfTwurw%zRJv9ydV|rJu$mlK0;yNb+dfC8tmsh%(WDn^40f8kL*=$*U9f5x zixf}^s51V9g3dhZ_jmTjZge1UomtBMl2WCU&qOz_$_idp5#K(MLdlJ)XJEAkjpxpj zB_zV?v9{Fuv6$3R{6H1lI0A~9IP>$fMCzqvV=UM%>N~?G|FpkYXnusB*!YanZK(}c zYz8Pm1@3`vBHvWbXUip8T||`{aifIOG(GL58}xB%=TDMyLyqOI4izESxtG=#JmyM6 zGq`OXIk8MU=9Nd!1@-=~M!d{7exkt|-v&-p#1LU!FlkD}P zz9%00~D_Cp2(1QUQk}_OFfQDp|HF8|8`wE3a3U) a|8`Kp)TJ?LR;rgmQ78Wn!7n9$*Zvo>rcKQN literal 0 HcmV?d00001 diff --git a/img/p/2-8.jpg b/img/p/2-8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..446931592d34b21ecda46639f10af99236506198 GIT binary patch literal 29726 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�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 c_>z;vPZ2ys@e{;P5j;fk5{{)EfBfVB*b%7 literal 0 HcmV?d00001 diff --git a/img/p/2-9-home.jpg b/img/p/2-9-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0511c80fe6ce3feb24706bc9f80264efe1284196 GIT binary patch literal 3620 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 literal 0 HcmV?d00001 diff --git a/img/p/2-9-small.jpg b/img/p/2-9-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8c3977f955bf402f0915833719bcc9d7e9f39dd GIT binary patch literal 1255 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ÎJ$ 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 literal 0 HcmV?d00001 diff --git a/img/p/5-15-home.jpg b/img/p/5-15-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5af00dd93c018eda426b33c379a360c43fcecd67 GIT binary patch literal 3535 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 YKgCP~@|hdq6Mlm?JO;hK+&LWoA4;>ozW@LL literal 0 HcmV?d00001 diff --git a/img/p/5-15-large.jpg b/img/p/5-15-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1c9a858d189d6b2d5ac2be8448c014cc3e58ddd GIT binary patch literal 11546 zcmb7q1yo$m(&yj~gF6J9V8J~|@Zj$5?oJ5q?he5vxNC3??(Xg`fdD(n|GoEpdv?FG zXM1Yes{7vlb@%P6TXo+S-!=h2NihjA00aa800I61-c|s@04PYvKLifYV1j{%fq{mG zL4<>Yg-1q2Mn*zJLP9~s0HUCxqaq;zae(NUSlHOu$Y{8DI9PZXSlC#9E&>4s?gI^j z00V=7g@S~F_5U5-dI0F~5cClAP!Qw*NOTA&bcnY;0MVae!u%QTe*z5nRvG;0u*>L!gO`dK}LLq*ehNxOAtH(1B?douA6{rA(k7unBb6$j(uVp(oDPNeYx zL5rK**=RVXN{u#O-z%){99&>?%Ok1T;C`Z3hL>n2-x%u@b=(kd70>F0nqH|IQyk>O zPqkA-zhibIHZvHLE(o@cCQ?V9rCF#hHazgcvK6aYsy3!P%|>oYUC9`qE4<)$8@HJw zQ%6$1G%l3~05PAgNUt|$^w6JF?meQ>(oPT0T_0~VUu0fC>LrBaHl1m=T1|{B6uRq4 z7Q={snV_B2zqoZHTt>;@xIJ7q!q&^0x;x|O*A_V8k5Zm_<$8Jp9HjM1tbD!G zD*H8WRx={x!zbaUopHFOp7jRcgv;&P>F}#7em@@PBX6XT@4x3pimTMO^_t#^;B{nl z#Pf|p>?`AN!8u=Bk_$m$0|2J1am1GfQm!RZW3fR732UUSGAd@3YFcTPO5(!va`D9q zZ+|Q#7*yy&*1US)HXh`ZiJIb;s>9>rkqj|^>5-D($;B6Ni0ELGbEsOXcqEil#Q%9t z-}BSnc@B3-M=Ez!Wh{5UC({8#lyFun^#R*qZ>Ca#@_vV>396ZFI`>ze*uA-lFG$=hem;GXOr(a9@vpR??PGm48E|OL>>N+!={V!($T=3r`G(jA5t7cwHJj4yB0Is`19~8=0GL^6cj{-lCYE&b0vNMpAYnZZ$Jt@Gnjw? z2xtgM7)Tgs@X_&y3kd+9C@>f}u;`fB@5q?pfLN4lxD>4HJ_Vm+u8OWTzSPYR#C)1p?@h<@j|)Vg95fB+L?n zfwE}$F+F@Wk=X4CwQUV%-JBA4hnx;2C zRXKmmnY$fJ6_Fv6E#u-hxc`U8?bj?)-Eeo{!1kqdI9Xaj(2hH4!aRx~k$1kH)}TCu z=MtJL8bB zu||&Fo{tcgMDsi$3v{WwaEpcWQRmH8u9=E?W^=J~Av+YO&DIUj1s7Uue&6`AsTkTO ziJbQ9*M27!=`{UlbtaMI?*MM(h~w=zAVet{NPCqeD!>JQU;?|c48bSTvFHsz<>>xB zSc>N!;nY%);(aZ7;Rt}{ro3oefH6dgFH^_#c>>B;x+9&!00-xK+#3%!chNQT0}o*+ z!?nU5B^GxY@#~L#`Q4pbg%tyWmW3+IWMTE7>PSak1Kk|$iDBn9--r$wiFgM^W9hg> zH_`WOii|;3RY*`@H$uO79QeQ^O{>1_4oL_j0AJK(GKW_(>UIho4U4g^dQ;D)cAJx> z#HngIPd*ChxXgwWW*c9>XWQ+-c-qYU-3i`U6R!Y_WX83l+VD>02Gx?Hp_;f|!n6%? zw|d*)S^w^13R2u;x3+)Aoy&(J zx!`e$N6lS!OtP`r@J_up6ZZ?c5?MFS5&ziGSLJpDYe$UBuZt13n%ooUrrb5{EWhxM zFRhcKn_$$l8~91n*TonxlC`77gDQ4vlP!t4M_U*JNtyw_H^2kkmOJr#VNSIr?~w`E z{2gjSF)&7S=Jz~QLgd(hpgd=mO`BvrCyNs$EbDoAHJ>R(Y@e9=#gt{MQu3?6qfB&j zhyO|--gE45e6A0<$2xjjT)%gg1LC7YP@7*L6!^3N&*c^4UG8ZrcjdQ{l!=s|qb!o7 zQf`^-r--|$N-U<*!wG2YxsI~_V&~puXE#5H50v!A=0*D(bF_|Gthd@zA!r@AmfAEUAKAr8KxSG|$y+AP z8n!rEe#x6A&G>HjTE42A*v+D%ebC|?f^JyS~5JVj2ZnR!iYJzY|Ndme!ax>e3(glD1AiR|_5eXPsVPr70SUWhm#V?~kZxIb8io0VNV5Iy+ zM0%=FvMCE4&R&-|wDrth+4nM$+btp5hErZ38CGmuy^+o>9Uh4?d0oI;Yut9rL}$1} z^z(e&6UY2_46R5lx4T{dsdu31&SJF4%xYvxcK^1-1M>)#=Tg&-%Q?{j_Pupf77qot zT8Yy?sHDL<2qYvlJOVr%4E)~}1i!05p<|G-ut5XKnOXhf6ENRVFbOK;)=Xg;7&~!%7k=$EAgC4AsM4Ha z^6$iZNp+)MrRfa2zvm%ox1$e#M~SaLa*D^}Ot>fBmK z-#m(Pg6!tc+h*~F)18dE>+ah2Qg-h}JEI*(SsyMf`cf>@0*#HuTk`sB>QXJmHpaib z&DjfkZzX@TieZfu#>4yYk#6KcyjxeVjUVv_)71+-KagMX$YA1JF40kZZkQk8CL$JA zBChZ0MNjQ(w4W5r zK~a!wy!bgKA7FXfc-rDs#>D?xIDr9xDxi- zuBe};gP!N|qOe_bph#QDo~67;ey4d^o|L}vtSXCv*srEC8f==`v;4fVmzMbK{HvZ^J0p&vuYokI%|pZ&hiovnLBic^zhJ` ziFUp)rBg}c*!$MD1fk*u|E^)tUQ)Pwjtey4>Vq^!+|3iYUL}Of*<2EL!T2hL@cJvD zraB6EG|Kxc1=&6n*f&Hr^S#A|I+a3q9!D`#TsBG)2XU30uylIFN=E@<5vg_?c6#_o z8%sOkKx4nUa~%xy)54z(21cqb?S%wm%yq$njsgedona>nG-&3-sbiRtUd_UaXTL&33A2W1PML)M?QI55n2R$@WqGcy z`U1xK6#FkFnV%+EpZB2K$v z7o5^bEUG5dSbV`rsWBF@`XNffh=eQ_+MUW0mYi48@9h45+IQ+&t)#7pZdGRn`<&q@ z`~law-z%ckutRi>S&#fYwW`MLgW6C=a@ncOh{`=^@B1^R}&}~W=(vg5~ zN5Ui05p%OxG9iaEPB-Gy*^t_Ttx!jsBlguwY*qAXkeBN&-A)sk9&roeqZ^qcm$2@I zEK%H6enatO2)p~o*bwNUiQ6=&{nW+&fp^ay^D-VU$BpcW`fx^Zn27Bd$WMnb@mvC} zwMNZ!BT0wPNk{8@o^CC=nN_k6bTe~D$G3N$ov#aFPis@$l&CWVkEB^Agz`y4K zCfdurB&-&b&5F>kG?jAD{=NJ9uPB{hjf4&efP{dAhK2*19{;V8pp!8RDi~Zk#C2Z* z-}!-s_7;=8z3;zG2Lfbo0JmYvcnQkKzj3@=S~I4q4}29w>a3_k+ju1c;fDP^YW_M; zjQ+9BOMuDNNLnrRxQnKu#NHl_Y=x8-`ZA<0CKWFe`755^sa@RZMS}YsN%t@8-5)-R z_V4$k8oez^BMu&I@R7tg6&tPfyGs%MHa5sJN78AL2R&Veg3Uy==}!3U5hHLK!@Id; z%?pbBGJ4fNahHTJ?)ag=z5!5qD40reW&4<-^FBCbCLzv7RBVIFABYRCtQB-mhsf1( zgsiq3XE3p)SdENs^p^B?dM8^LuA~FH^=D7zu_CE3LVQb&C~4$dXk!@>Aw^GR;+KA8 z2PRb%vZ}Z1Ri>dP=WB@ma7zcv+=)wfwpk7iN^-VTNN8+qM4;6`lt$cQXqs>6+$K38 zU$MB^?f0UAhu~F_=DICzuO%Naw9H#^mfw$_V(=2V`drk*S@N|Ugyd4^h#7B^zyPITpZeQ82UR+ogj%YF}$OC>>6;kFVo{BCO^RB_Mj-V3QA!csnO!YvzkZzyD_0#~aNd;+;H6Z#o71M@y02!37t|txRBw;hGPWpr-9kb~sWUo6A z?lq;!P~QnUlm@^8a5Ui<7s+hc5=UX;?3t})L<7PmMZ&pfB}!oK z*qnov=Shtl3^_dFPRF8wd;IkdslqZx^?!U`bn8=B zVaHI9JM2#`i$KNQq&2H8k(14zsp`vQ-|=nI?1yE?Riy#8L&+f!lebR}`GEL?rZe+4 z_ogDJXqEh!W}{J_J^svu`c1`Z?#QJRLzzY2R?) zdrK>5@?lG2=w_qDWL-qe_;U zYSYvut-3ofz8r;1a$;dJHhc|~^@j4Nf5gbu{;hkh3j_TDRZ#si7qnA)?F+b=HaLQ^qYo(Y}}r0yOu@k1&k z!^gxcVYDG@Os?AqwjV2$XpJ0+ZsAtQ^qkr;un;IESHJi?1c@ItmO%Yw74_Fg-}7y> z=JyX`noY*_EByWSE*y5X$qUVS2E~M@*37K~BM4+9wTE^B!b6SITXcyT7bS^93NP^yw^uQ_Qa<-=pepMFOA;T5%bP_3Xh^AXxW;6fK z);0A#7iq=&V*<<_12L(SH>Te*IJ7ucI8&F545Ie&WFCX7($EeA;A>dwgz{R4s9xD~ z=j6iHQ7_#B+KD$W;M_lU|EB<{oVaKHzM-IKxywK7Bl#!;{r}GYcVqu!xsaq9IMrp~ zIVr#gooRpW(3T|dS-{BTmXlQ2=9Xha*ut43McBZZosf+^gN@L^dUEPuVKE*Q!~K=u zCH)^F)Kh4<`zPA?CzrdFo4fzSwz?s#GLvzbD=>^9l)-F8*B`yeWY>&U>$D$CXgwsm z@&(Doi;ym-DW$7vp{sGByWW%VA-BepFePW9_MU7-M<77BO;}>&Rwf|j@C+@NRJb{$ z*`| zV!^ah{Xua0Q{3zg!gY58VT&)S5kSfXFuhShD|h zFaFg4fHxDo|08w%+iC#-0^kAA0Kkqk(~JmLuQVkzzTi6uvIixNr)bzTX>hxD012*5 z&ArcfIS626%%l^A0jv*Gk5`YEx1mK6khH+sp5bpMc0W$?0apdk{__-zFAwB^h zq^B!##g944KIZ@w001RG*6cmDg2K8w_@=$kwS!D7a6sl^-mQLUun`3ko>F)ms}7M# z7y!RB!FDqa-;2i7JI0$63OYQg94@QHqiDsq4fF-y1Rn4SnMoM_9XQL>i~Qf{f5r=* z3b2kuf&NE1`eUK`GuA%=0`NyiVv18R(6@K+o7(!1aSHgGPq~UZaERuoh#{K(zh4wDpj&_oHj zEsB{nRd0NW3HvvDek3S3+>iFRc%aOfLIq2E!(OO;6X6OIMqVVT7GcqG5c;&v_8`5{ zFa6a1J*3j2b~Zh{dc=$0ulk+hj)8t(s&JoOJ)a}>x(ZFO<_Hlv(vO}lR+ma1ULjgYc#x=C@{6!j? z;lBbDazKFo&`K4%J!AW|Bpj^AWgJplHjm=kC( zo`jC6m|}{mQ64rQt}W*8YM@^6+vO(3U)o9Uv$wolz5yt+mKJ`YXc`vSaPl6NJz|o} z#L#7SI5)psD;epcZ2x+v*wJuut4~<@1`zPvIqLQ*uiBiyzNL~&~9~p@hjn zuqw%v`ID3La2u8se3|7#TUW=!I*Rc81>1#IdofMuqFtw{)~$qmST&7lpcFu*jnt!z z?tYzUl0Rc~qW=x>c>r!Et)E}ujN?JDr^siN(%TPI0UE|3$Z@eS-dsGXn)X-J0KCgL zJGk}8_H^LP7$_xxu|}_8(r1txr1+JC<3?oBPV^39!EkP>gJzm%Kk>fV#%viYx*-B5 z&EiYS6|Uo49U(&d{AFlbcfSYbLuKj%{TZH9;sCeN^OOFAy|_d^YF2p-Mg zAY$BJw{S~i2G1W>b2y1+uCzHqJnJ_qFkEg8LyjBfkGQ>f;T>}hW1IkV-yydrLCKJ zAPxEb)T0Qy;@O)+=Ra!|=6GMw6Ju}nGIUGJg(50U@QH@&AS?$@%hy+1$$H*cNJV`e zy@+c7-nI)yx;Z8H(^d-%IPVPfDh|ex2$$XiM|x z4Nx_A>~YIucIdM48uHn-_r5T3-kYLCL;XSQqXqgvY`zGPcn$uJWf)0}8#WAM(MN;_l!hh}iVJC+ zVIvMykD#{2R>K+)8dwmV%GFxCc_E{~A85Anj2ysrV{365u#@7#gsdx%=9uH#K)_H- zak_~=$P^2JSBU#$-(l{1@*+S+v%U7ZU^gh18MnE|bw^RP4K_bk-VUowT_jh%L8*=) zG>09wW}40Ua~aV!)4p;EOR`+>2DdjzhH5w|IzabFeyhJTdR;K~Ui6if=sq!oT|35yX3A1)Q}l9{ zM_Pzwe)MWo9cq^zs`FsLPeo;#I2UJFE)Z@9iXo-av#4jVO=tv^A&F@;m2gK55}GSE zl~i~baQzKXt3|f#bnA)gl=gVicf&hoKyu{nYhXCFo@3V?Lr)x9sTpaJ4UBNvVcCDc zQ&2l5?7|!HpN{YWLjRntqvE#gyfxIaF|WMb;Eg*zk6-Lht^gTlLV6s~=Fxv*%G%bH zdkj7A^|XLua}a~+xV}iBY0{sV?|SEdH3G zdgk5e&i97CbD}dCKi_tyFl%$?kR$W_D*M>^qFxoEz8o78Dm-~tV(ZQGlU!T!Gi@Xs zd#k;wFmrct(bm48+R6_WR`~0Kz>Jm1>ggbVD|&0&#yqp`{%s>#LKJk|6o#z{09W9= zRjgRT5rS}?%=bDr=eI}H;)=b1S6|v@OM*Ch9!?kZuKvhhBP2BP5pfAdo!mrDO zrCVVte5KOwWReD^W7(B*2&*0R33y@J7;EoA$n9+O49$p@NLq!pcUV0J_rAD^c4(

    i=T>}@Av=}$tHMQCRSbD}YXn#v{L_}jkoaO=gQ7P&z2ZmFRh|-rm zbS(3n18N`582RpE(x)Y*o#Tf2{g|0ZPF3` zxq?TsZHP~|*qYe$H8|A(S39rm_rqgSPO-US!-opwB9$XwcY0DIG$^d(PE8hM`kf=v?gvdOfY?{J9vNe;;O&t*DA6hNq@G_DuAYJP zD$k(UC|~Gj83}vr$Bq_{b6PuoXA^BWOBGv>M+EC@Zm1zi*8t;hc%z`vDa z6CuAxw7Z&i1-q@I$|Gx+n%b6oZJWJ3YsgP#*%|fJB+qgT-}KtgD!H--1<$t`JHs}) zPUTlgbAplR<_FD>RU<${`=8R8R)Hy?-|^Mj&K`$1oF|9e<3_}w7tSM}ETsabvN`_> z$aB%zEiqU=Qf06_c7I-6A&>53!Q6q)xZ<_ZAUQ)KOMYXnjl5 z_5~BK#XhMV;Ar|TKOc(fS9~h7z!X%E#n#b+G-7bT2G)8wLqYsR!j*z7=yvebs_xpA z#`Tr2ZHqXp$#K-n+;-y3kTnAz50TCp2^O8AqTiUmh$g;2F#FDFdT7}*(6XIbdCCWQ zuP-(bXj!kg!$ay`8CUK#?8yf)Xq7sRm_$vJYX*&v3t^&r!M8@c+89VVHEW{6-IKfu zwaeJ^S?}dTNb}M6$WOjP&3(GbKZQtyVp}&kja$8HnpIIO%Zu)s!=HwsYGTKiA;idZ zQ2U*Di;j%sF@bcL8gy}b%mgI_&PJ_tJ+Ug#Kzq{$(Slar9$5KlRDIeL z28_zK+8`)}9#obEDy4Sdo|nP2{DtVHD8uA2Picv@FkbK9i)XfYi?JS8z6t)m5j>Ka$j6eB=|1av&nRfP|~zj>H~SUFQmM{kJ^n4@F6 zh~@B^yobt`hP|kMizhyHPA44+*E(3l0jQ~b69b~j2m}Q&epjSDRey7Y>`-SHN}O)S zp1ybkWR?%+FRK;DygFGkHcoo6p46KqxQLr?^Y!i#p^ZbZ+Wpi@@)^OD9ca?SYU{Wv zM!wzlV$`K_Z@K6r)${4I>V&+qhn)w6*EUCxHE@t=2y?o3&NLM zr)?=vb)DucS9PF_c*u19`sDHC1j$F5*7NL^-S9ffKe&!m+9`9;?o&72x!890b*Jm< z4Pf4uztXNH`Q(Iq@8e)|P|VtXdx4$Dn~#S^qx+DF5Yr-L*hkQ(cN+4p1pYNFfE|S# zwHiud)Tm$s{PD}!zQ+?-tsr(wt!y9LpGoW6XP%~oHo#!LYx(xu>8|Bz^~Kh^NkHpc z#l-x<$$u(v(9*O4Y++jyxe01`u6XfU6q)l4n%m?^typsZz1{!O5k)~-v#yMo!VvnM zmaTdVch%!OO{gDRN~`s>*!6hWB(EqXYqxo~YxMVg{*?+2cGRQ z_J~bI=PGzN*vAjhMCsB?8KEh!0Mgx1^}6Qnic*1`^0y&Cef-% fCebRFDi;2ew5r)=Q@I}Lw7MrPtJ%H!ye<7NohnlA literal 0 HcmV?d00001 diff --git a/img/p/5-15-medium.jpg b/img/p/5-15-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ac000dbeb1e0240d6bcae9312e8a7e7d022acb4 GIT binary patch literal 2043 zcmb7Ec{r4N8-Cw+X3SuQccwAaVKRKjKAN#qQkLw}VK_&JX|aY+*@-I&mE}WB!V!t= zYmLHDjxAYI`UsUJYZ%$Hw8{5Q=St__?|FZJyw~-+e)n@f_w(G()~l^i05&%^GX_8q z06^pewgv$M00lw(g9I8m7#s$JMq`AqSOFYf2#*&Q5*8+ikYIucQAAi6rohAE>HCSH%l%# z!Fn@bI;-P`YvyGOaSOAA)}?PrMG+SAND={r5{TL60YZq50;C-jERn1)28+uu^bk%s zqz(`RZJxeuI;=OW_vTCpL6n}9Zc+5LrbnDqTemQ*A79<~Li-(NZ$^3-wk#jcx$76u zH0R=4!Yz_H6w>NjQbn)&?I*#^uE@s@^jL#ePh2GJ`zu?ABv+e#S>{TNt(fQ{8ly6KV5La)o<*&!-u>$!>gWyS#&tV6I*meGwo>Z zyAA|~hQRR0Z(Bh=3=u`5p7oG|V?5T6VYO`;`ZcF4#wHCW@Yw3@p9VJF`R&NZ@iTWF&v`O`OJv$cdlh~c8FwF1cQ`$=1 zq8)+QNEM%*l;>@+=3WB_S*zAQ*Qh+6HT3Ucr4ue24P_d^%d#!I*pPC4oR$eNe>P@U zi~6vSQK7Uz*S-5NH^An^@Sd3^!>E^GJ;nMxU{ce)hD(-cTV~ap4@5n8o|@6CI-7T< zwk~r6@jSnU=+6tk9jfh`OMSgz$1+`T*#ZsD1X|M|v#RXgD=|Hsx5=RE1XXU=iRTiGXB^<3&jTuaCtGds+-FFn^e zQOyjrDW8Znr~X`_iXe-1I2Q9?->qnNB7rL zi24dJqBi2bA4UKHB8{mJvm7HhzB$}(X@*|Y((-pB=+ZXTRHBbXG(0u0FS9&FlD!iR zHq2lyVgjf}>GE|F>spCJT6Z%?e3jno`nr<#)eMy&sReg=t3<5^nQRb@ z3HCfLGwP#UakC_0NZC%}U}sa*+E=nrM!z!YbTo&4zdZ90iT5%{$kCvC^tRXPD5px4 zdD~{p_US@smTYLhuebauURtW2XOP{(>REA%EGhA5v!v>k`M_5CJgdWpYT!+Hp(LA< zcuj5S^U5YxVVCBoiR_KWN19%Lc3uFiZf3bCdo0Gkz5U{ip;h0kgQwzsN|3cKK})`k z!e&Xu=-@I+{B^SA?$wl*er|C(9!aTD9$9ZdWcaqD0RE`L@8dPbTQVxHc6U6$O++&8 zKEnGWitZ-z6-E8nD*#BO0Wfn(nxW5%*!C7YtFi|luOPNd9q-DJtDT^>WGr6X?;1kA zBJ~_Wk>sNwOZ1=KLiz$rGyb+G-&XLfyR55WjG(DPLFR#--cAlfo2j`cZy~Sczjt+e z3vYMTH;2>Iy~K#%j{RsV{KYN#28n)ad4wsNKXo8tapkDkxsRtWpZ~(uCCEyK`!^aL z>1ZytYOF1Ii$5C5?)&0I6Ny1R5@!e3<$e9bS^2O1H+{-VsrG+K_a=(j6A-l|dO?GpZRH^YPs*fDLhFw)A;yuFlsjw<+6mvZbbb0@`x*MA+(CwiSNx=S zX=<@;LU}nEnmrkxO3zR%t@)*PHpb2|;VQ!A`k1-M5*4z*_mX)b+PPyGx z;ej4Gwya>-q3#*Y<_KpkmW*z*psj08J+Qfy-9~c|m|$}sV(W(<+QwCI?E5rzs(0IE zU#Q>=o+?y`;@&7&m`r#Io}9p)NE^An1-Ol-J>gy!e7=9xaS5N)8o-!7uJmiMb-sBD IvZi1E59(+UQ2+n{ literal 0 HcmV?d00001 diff --git a/img/p/5-15-small.jpg b/img/p/5-15-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e7b475bcbac9bd9e1b1e51f2f6078049166c75f GIT binary patch literal 1222 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxC@1_d3iQ+Q7E_J0$2A9QaOjSZo z3dE!r^Um4yT<6BEO+T}3gI@z}mK6kgm5~*0FVO8w41xl}A_|6qV0(dnwP$3Qw`_7^ z?8Ro4yY>@in^n{UHOdJBos6oHfr(jAQ9wvo!4RyI38a%(?_=&I$%^$Hr#N@H+u8#) z8UX#u42*X!c9^BWP-A8h6jHpX6qv{=0Mu^c*tqDRX<_rkg_j;dJl-%6a9ix(`aq3U|Kcn0fc+v*2ze)p@*uArE2sBPyco7zB_KH8Pt6l{h&APSkY5bfFrHl7&rFO=y$!b0yJo841Wr!K~j2iZU zC0~SIS!<>5bQ159Kh*l%K(sUI{H=&pnrYXoXB!pdiV9pcSKXy-xhXR0sdu=3;IHSW z>NuHh*DicxH-$m-JpMiFQ6CndLFl+@l3bRkT%WMWZRz?u$ScFS~l0e5A zDkugf9t1lR6v+Z^EiPL+dJP54p6s0Iw70UOcj85$Rw+S7VA?}UnGB4A3<3&{kkkQ+ zV}YF?r&SebnwBVs>igpk8OOlFiH!mZ3paj%hm63^qNk^)%N#qn)$b|)mat~-j|$aW zIV0s3{M_l-^+>AuMa6-e-pt&4&2^r0zn-zk>x=l5to7A#3t2>&m{;BXq^CW{@m-Fm zjm}^B8SEOf1bItM&G`yl9g54YOf3_w?c^d!# literal 0 HcmV?d00001 diff --git a/img/p/5-15-thickbox.jpg b/img/p/5-15-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..876011964216a084c9e84499bac2066dc1c63d00 GIT binary patch literal 31270 zcmd42Wk4OxvM9Q+Ai>?;-Q696yM~~_-8I2ovv7AOxI+l;?iSpGJAu34`}RJ2pLfoC z=f3;nz3G~o>gww1YMGjzo}QP5mtO#6SxFg502mkm00s(xmt}w$00JER6+j0h2%un~ zpdcZk;Gm)3!N9}8!@q}n{~iGm6&V2$1@ZlRWK3ifG;|CM40t3gY)o`)RCEmVS0!K& zpgfRJuuxF2=m_r-(EqoOm!AL>7;r6cEeJ4D05}R51Pa(o4*>twOsH3L|9L=yfkQyO zgN6a6;(`(&!2T^2ln4p+?qvx84*>=MM}|NKRrDeMpPB#vLBPD3Ax->WTLY&~LHh+j zOR$?147vcJ-Y$Q~K$kBdElQ<85T-`0p#6fWKUSDH7%yxs z+59~RJYione+jvSSxhDeCvlp9F~^23ve~~-m*u?3!VG)6)kx<<10tEBZNs#wZ5c{a zt)gLbqr63PVP^1VYAT+UiyCMBjM@ob%=@dna*)-SE2Kj)#Gs-80Q`Q%5j^?^6NTLM zj65B|_@Yrh@jnoXnU`{pC;Y7B?H8Fi*8MHozjSfD)H_HT1$5R~hB>by_;)a`KDhIs z2tS6dttR4U9|ha#Li2%JTod*F6oquNbvrQ@NWvZrE)| zcCdD^K(1N$jUyApnNM?+ZZCH(o%U4dHLyBl!lC29>cNgEb(*D}dh2WIINZz_c>n~8*QgMXB0KgXj z0Ge*r(QKX)zvNDXvyaLKrzDQNbzN zB9(;=TVk4`8W+ZZcnxRaQPPJg`m`dIxQbXCT>kX;zj|q%P0Pm3DtV5BXz94mw~Zyo zSNXYC9m`ybRyFv(|6B27a~H77CcUwDY4GJA^A~-+qnJ%b<6A`Y@9q`g8%kIUtxS4O zimY7OEO3s;>Qfj-_34-(S5CC}xH+xpG9Pn?DqToxS9Od!BxS$%r@(Q9uqw1$KX`C2 zh}S5<_TlRXH!wsXN*~$$+3RY5NT2)7(W*7v0J7kp-5`x9RJ9e=A*YQLc{W_s+TMIJ zvYL3WT#m=7p|WJ$7wzOq#OZ=TJQ;o_Mv7KSJfEL@PlsEvIwzhCr2TNQ_8RL zR0#{hlZ;8+c9)sT*aOA{6lQB;1?COe0G(f9sT>T!BiCuxe@=URetIx2TQ;1JFM><} z=MTMjb!Px_IEVHmOj}mNVWgM?E~1Gexybp$e%cx5W7fVU$us6F?u$+q`4xT|I2Ts4 z3_8Sa4ilNt^q*NWlZDuPhy47#=|lP6y}Z3~z<{`mdOwNkQoZu5<9l z#Q`;8T64P9E%WoooVo}%{YM|Y_M6X^8|IELwvK*)ybYna$J=l~g$O%o3b0BPH23Z| zdF)7#M(}U3DyiuwV5ZWDn{8gWOw&G2D_u3Id@5Mhw^i@7Do>GK9}jEphEXY_6L2UT zEa1RHsPw+Kx7rm+`I1)E@SRO@ZZ7p0jW(I3z>+SCqp>IQ{8xv@qhuDH@#HMDAs0de zaLJ>;;M`s7CYBTX%;giPL1IYxzW{^*09deYH+-7vaV(y#YPUDTBwj)1br1b@^{fVKenpeR>vFw!gUeIm0jXXr z-Ahz?G7%0{nZ>NkhQq#jZavO=$-i&DAH{H4*aldP57xvX3F3$8gt_F8xNpn-3aj3A zUXy|@oN)DQrN_Nl3%tj@$LJWkLs_&r-mS0gp6}YKce&(~_d}`LyKEOaP>l0!-~72) zZDvY<4e}*QjcOdsw~Ny8KR^!-aAA)ZK(@yQsW>cEAEwpTA80NSvh?v;+ZZOEEQQQy zJBHL%{lf0?3*L4jsx*_RKkuF$laCfQHXlCP+RV)-kB1O$Rh|!Op5Bc1r(WNmCi;d5 zsvlTiz5uw3gmUipXkz?6IQj7ew>r;kSA-q0TzVckUEA{<<2c%oboC~o7vIqru@^5K zOL^RI^$A&+M#VdrjkSXe1CYspyfBD}1r%j^Ql)>3L*hB7x2P6CVmzG7z_0HlaQ-}u zMVUG>8sKL$?d)J&WP=2yTh%M=A^?pyr-R!uc3fd+x?8>1+I+bt^dWP3^kXX#r7m6l z&5lo+fn+Nl@uH_fzZQIfahUaIDts@Ty;`Vhx#W|6t<&e#JFnmTRnetWSvn~FZi#bFsO0jTF~Q}2bCt^2@~{Q}>FH$RkRz^awJjz)CP`Bn zEwd)=ceOgJiVKYnO(^2>iX09XKYil<#toQZI}cM_UG<>}>Z@r708 z`iDuk#4PCExy{}E?SoT(g_Qf{g{I_ADueu|5WS|KycyzFbp)@HA_8|%i=I)T+kUz+q$$d$mR|c*L5QtX;ls* zY@28?_IS1WQd{2-;K8EGHEI+z>U-E64e9HKgWzL{&T4G0t4{Kf&bNj`YzGaTHBhY~ zU!RV!kTlBB+I3rKo#Q)g8>c*iR((F~_qkgKABhHS1u#!}ny#?2X0Gl#q#TYk?j`o} z=EtP++O|Cfyq7`>^mkn|(=Xp6&O7WZLrj+J)d`^Nxd@(}|w+oxN*$bJtHh(r%ownK)n`q1wiF^=>Igg~ObtPiy7tE>M`BQyG z9)o`}_AE{ljDuoIj0yvQYE-*FJ@@cwSS%5 zNQ0X3-w$vgx*9l*GBE%^j0zwI@ACXwV&PyaW;^cScFRPvzi z>8a<06~%WedAayhbDXZZPN4d(bMfXP?Qlg}E#95v<257(zv5WiC6PAsp2#?AxzUP} zwpw{H*Qtrsx&YTHgk@@cnx7R^to7@>rOUEpLS;({j1qremxhQadagT5)02b3rr;QQDa} zq#2$#)T^jDNXNV&K;WRUu_$X=oYq%0npavd+pOvS?szj?Qp6advSaDO0XorlrQ{Wi zLX;IOL*#Z<4oXIKoaZjuQV#1b82t&>goL^o*EL66igK@4_M~8DTJ_|C<9f~rhImRe z$}v(CI++le*CSG2oL&HOl7fa^SHIDAEq$28c0;By1Wl`^HHlaau4em3fDevEBQCE< z{S`44Ll4h9gnG9s7K28OVu{qST?zE?>s7IY`Y*;S(X3d!{}*a?o4yh>ESjFnV$r?2 zE*hzS_~boqP*CbUsaViIGW8rYLPHa){Qq1@3WTDEymlLvQ?OmCZ5;0at&zNTVdq8;|sP+(iCHS|_F^N_{*`z<}! zf>&_biSlPlyiu+tJN7k;wrQ8bOGsd8p;Xu(ymPkS-k|3!ZDw*vits+QN0gjy%^kKHM|-#HOy-+v(d4B6B1`J>LCO87F5bmr&_^K`aR5-YEA()(}n zeCbq9fp*C~xgO54e8Za}-a}|DqHbCWN3g4geEFcX-%1&MXw9N-FcE~B=+&)*hAv(m z5*izJgT&uQKH!BvF2%1$)vw8*Unqus5YTEXrI+-Mj6uI!ycP8FOH};O zdFfm!?N1y^3KJ}uAQKzPbqJyoWb%y=L`LzubWAKz3gd7=bBY)?>j^pu!)z;DI&lkp zM&MPU8I;{%TcVt+HP$6zCf#}MTg~Y+lZ1A&Cn2vy5QHQQi%4);-epI!6nm7O2y@CM4MNzVjz$^E8{V&(%Top&+bIVVE)szl4mnfs(leix55Mk z%Sh}19Sio5I| z#+xr!o@zYx6fY)oi9=0H4+GRhkgdecdsta9@^m<$%&+kM*{8@LEn=h49(6ibN>kvd zL#x!Q2#iLHMgl_MX#AfI1^A7(KCj&W_SF|)@Ea0mPZbxFt{9$Ysl?5L6hR&kBZ(Zb z#PJ~)Q9X(cwRo^##hsKCFO9*FKBP;1v_Rz^cmaq7p*xy<%1UPCw|dhA(#b$|FAXZ$ z0;M^;OUHCSltp^RC<=K%BtU6+|6KQaicEkN)ap@0S9oa00-Tod1NZCs8sPz9x&@`Q z(W>B2LnLuqen*?Hc0HR4&{N&>;Jg5A(*w=pQYFlclPyr*H6CGi<>DZSlw4cFWl7~E z&6A)_B3sE*X646nqUs_7*;8;OM7n3(_ux!Zz81XzzGr6gJaK^d=#YeG+ zuIGu1*|ABA_9j=SLVoJoE*B~0KpA*Z@5%RXea~UjPk|^1q{NdYDUB)hv3E}FxR4geGbp*t#u$+1eW}oW zHlf{ihp~~BRcgW9GJ1RQe(gEBaoK8w0?^s#s%*k>W>R|HhSPr2{V#x+9#FroKMng( zm^tmEK(by%_4p~1jW|QbraH1C$c6S1_u-0v>cf?YT;dEpDoxlpdXIm4B8i6Q2^^is zIv%j!Cgj)HrF++%f)7DDP&|HdarHy!P3b04id}x(XU53}8(eu(ADFB-v`e%@Ui`sN z?AtApJ}}SuLaNr1@P^qFHgVGf6$zi5t~hW~sBQ|QEXyb2{T%l(pi#L!!>Jc8aggUw zeoD@K;K9L0I=@S~74(+6L}0^TKOLB|U^lZ#^GFj@*O8*`k2VsZ_@XvNf(o2ww=`QN zm$o1aa2N?@x5~q=ti*vCkUk2-W%k~ms(VZh zmXw5gYw0Ysr*5oC8cQh^HO!Wr9JwgU#YD;U@l95}&>ac6$)4}2>`@QE_4psnxpfr= z+WHl%u7w<9Gh}j68=2MAO1BuqNdbGQ&^s})jKge*qrt_qR_TYLQs@#lJ$lc0yHG`XL}v{+d%$}ziAn+BZA4H=0;4I2`z zji*5cLDrDVe_$zV@8+r}d49Imyo6U}NiOXt=l)59N!p(_U?qV?GAcoUykCPqDIvQg7k<@qf>{|Sq$Eo2(%SqQ37`mVuLs=|VjD7Zzf3bET)&*0+ZDpT=7mp6x? zpFIZ6OZwa)xmNANsC^=e{L1)={l2o)&tjgk0|OrN(*7Jw;%=SKko&pZ#blT{CS zJ<7;>v7O;H=&fPpW7EEwc%dx#lo=g@~2c5*~_ zPtwP$ms>o_+=!Gq$#dc*GSV&RH)~Mr;Unh1wTtZ z1!j@oE;CiQkehJ&*6?w1yZ}~avGZ?nARLIu7>t-wh8c~`CeoS-f89zm%!u55IU3rS zQY=1D~2r|P|Ho@3znlZEFAVfcYDiL6g*?N6)-mULw6`G#jFZxFID5Fck zY*x_FH?H+cn?})AVRTbD$<6^KY1=6)ckoB^fBru0hu@!D>%-A!*s^sHxE0Xo>L@%f zV`Eb;)`Z*8v*dV1pi<6E$A>`$T)!1?x}$sG_H6M2C?6Ra=~00(ttFK(Kw!{M-RdZm zwP4Rlklmj`unw+IRtSByL`EtmLM^}UiKd}F^l^wNHnOTG(tUQ;vtQmc~f zk03P2^IrY*dvhRLFMw~B5Be{Fl(_r}n=~WQd~Stliq=OSb|7a)i@YhDE;a8I;r@rx z$>fpHzRg4bEk%{lr$q|Ta@&SF>k1cwS*`t?6-QcW)Qp9Ez2rePW>05MwUwPe1&`8ynk|H)AyY zs98<>{H*6dspY`P42!DjEXq=pWR76b1MVNXVyAkheRY0<$4tY6KyT~EETLFm^+MBv z7XXz~O)k9SFj<-|0^^p-3g*uU+SE}=v%ii!&HVw5RJq9DTuZg9fhkJ!vTFmqkw0o@ zM33%;h@A$nMqV%tvy1-8;9R;lquV%jmhat&vZsF+Or`SzxcVKWM;S~Y$$NYDVEZ+b z!oMHu+uaqmrO2-d2CHX225-rbtF@%+-ZSj8NFAd0KT_Zc85^qS+;J=XP|w5fdiAV& z>}i{%qTEf~m>+#H!vd(HUI39#jJ9mh=MkL823_Rc+8+aN^70TqUKg9Dd8vhr7&|A%fhS?<;3)`fiE)?<3j=4}<8h^X{VkR-IR8Tc_+sb~c zPREp~`jw3SeX%)Y&`kE5E)@2Kb!2f>cmowZdo{ek9Q8!%I8o5DDc)?g7IjCRZfrwF zv2pZcnc*P*tcF+oM5b36TY3G%PE`WKN(5R_sCvXgbGc8`5$CXWkggY5bWN>}PBgXE z0D~o)?36~r+*0j#tHwF<@7pFcuKe!c>zdk zKW7-RX*d4i?_}@1TSsM%AxL_k*QdZpKwI{`3=uC#%c4(<`;mu|z!Z^p@|eM-$)#6v zqhV=Ixo+O!Moo@$Su>(J3GK5Yl7(hqP1#Rv?hm5B62Ixe{b(X6Q0O#f|3ROf3{}lc zr(FnP0duBnjRsz4&v|JVvn+Cl(8%F!yIJOKyQN5c#@Ezq_w*qm>n;h4-}u2H?9;-2 z=_iBnH%pT)M*i^lMz%X%4Gd2+OGtbxkoyrarVo5lmbOTux?|jB*jnX-nt-5JO zw9eA16F#}O8~$$9lT*-0uM1(mOz{|L+a+{j;weg>9&;4Sh}|>cIY9JO&3q*m6ovuOGu4KD$)aZ3 zv~U=d89|^G$+mmB?&d_GR?&JIM2rfwiiaUjnZ5vSPNakDIC3fw%&o+9a3|*e2N4yT zhl?s>T8~%sUN$gPC_aV9Uv-+f7 zn0o{oJ;zc1)2!1r|5i@u3m|ArGC#ROE5!IZ_L!N#A0q3^UN+AHq9a85m)&1H#fY{L zsb6+K@gyUfL8Ju!gZPVM`I?jslCgwH`Lb)3KI)WG>7+hp**vPrQ@Y2Yw_BDz>y-L8 zYmTS1pF?Z641d-*wcJTP+Om37}#tHKO6lV>kZ0?fafE`cBN-N)-qf;>#p7iG44j}4OeT(9Kj%M7IEbJtwH66Ao6F;rkf?g zg^c7qy}t+B*vMr~+i^4>S@ghG4fk=lt2!TT22f$B$W*l^!y2HN6CW9pcXkNNl%My6}ok5Bm6{vrlk zo%whPG7v{XOvP$)7L|^RnG#4GdpM89*fDn9zP;apWBSIeNRlX}yi<{EO2_QUcHaVh z?4TgNwNfA(p?lTB?jZ;fvOsy(#wyw$s3AHY@d1_+!;)n}+wgJU>f6e<)!4THqE^1m z(^RVJ^)*L1;TCepStif2r1zf^wfUZZ>r=&%^F4q3EB4s`JFDe0O{pr6yh`d0$AHzh zd6G&o$G?MGp%YP?%~-ycOG#p9n0AfW9|29|7l5KgT|oEuVi;=8(iBhHZOQ2IO^paR z>U!MVjq~CrIa$W{aOwC|P+(oc_DcBp(6C@Xf7nmp^FyP6^$0sKr^`{H!S;$eD5a}W zVZ0IeYS19!hl4%-E2rnjUov1I0vVJG39MTfl${;=J=jlS`&f`dD6k(t?3wY=p`l^B ze%jlolZ)9WFR`XFTd}_Y&bC0SfHWuoaBy%iNN~VAh`-k&!N5@

    ~_gNQ7BL(1}S| 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 DM+?qI literal 0 HcmV?d00001 diff --git a/img/p/5-15.jpg b/img/p/5-15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1960498eeac63b2e4c185e87e439fec659721756 GIT binary patch literal 33661 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 literal 0 HcmV?d00001 diff --git a/img/p/5-16-large.jpg b/img/p/5-16-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df53cf7e1b3b0851d0f6ed8c46fe3a504714c303 GIT binary patch literal 5343 zcmb7I2Ut^0vpxv{LJyG8L4x!is`P|Nk)|{$0#XE#B1J`MN|W9~R|KR9NDUwm6s3cp zB1H{Fnus(hf*^=+1D}5XcklE3_rG_}JX>ex?Ad*HcJ>?+52pc`p7t4S00aU65a|I9 z#{n!r1_mE7i6A51gQS|8F{M2Nzt z(9wAR5C}{Lp&+M(l6n#Ut>ah#bT|gkl97~PWH8b<{xbQa_MdYY{ErMw7Yz-2b(N&8l_D(e6Kk!(>(}@`O6f93LW&JWY;Ipi3clbqh#klRz}?;W67$i;0MbBW7&~raKk;}?$`8bR+B+b8`;|NOM*Zfe zUnjcMP2U8|vaeT45&U)fQ9CB4UxU6B1k$@JtvbAZ`@l}4YKyX`S?VEiz1iTrLKgq4 zV$zrq`5E%1p2KD?#bAEdAKb3H-)~2%>-XOdKf$~lxG}evfv_}pFu!{qVX3vGQ0qD| z;n=GO>5Tor+h&U^vn9%vTzypWr7Y%_D2@vD7vDQ7K8g4D^c`k8niDYpc>-^bVYK|H zoAI$FYdsmuuAmf?p`%_B!E|9MPnvqz$pvQxPwSEvH2Juh56y^Vf+qi-*W;%DOF~Hk zpco7QK}gUCgCHc#9nle7A>6U1X%#$r6F@`OkcG$`rB#Qi5-w|+&PLJ??6ggnD9 z!FG90?LDKcE3H+HH<$%Oc|$geFH{`@mnD+f_6F;lB48Nv3J>K@>G#-qw)k(TFomB? zy+kL1=ct$=1_Jk#x`q|Sisx8Sc6T0I&cUWE_ja#Hua>gg(AgudlVm{k-{*vwW zp6gJ-hf!Ukzi#eH;kmBto?^?%PT+d_Ac2reIQ4KRLMT~iDhT!3d1oaE0>jA5gYzBg z#61}6mNVvHWwKjYd1bRY#(G=(uSfo-Uj>IQ&kJ8;uJ}nq3 zG*&b7fA}DvL}!?aQ=iz(1nv*LC8HW{Ds*ujZ@o&8tbvZXp6z||ScQ39`pSM~F-5%S z^LsrXj5T{Xw_jR|;5tl2h~9a3Yw}{7-bpCd&++xxI&E!d<=m;>*oNoDUv^E!%$48U z$~EG9Erm-q_KR#I|N90 zg){!cksjkURMm-~h3CV|IJ}E7OHg@3k zy%vhg$CJb0vKUQAC!e-Kek?*RBrG{)=J!sZ&;TFA`dGKQlgAzcv9BLLeHGTNZ&`8H zE05m%rn`z8VF^i`RK0%VGK^*QZO}nkBtC@@k{aFM=rx!oO?EPTRbF zqa*U2;NBPFRNuYMg>r7~ofV7R!S_!dRW$^=^@X}`OI-G=yy;iz`(Q`CHQqG`>pf`Z zWi=6g!Jb2ZBWs{Mv$Fa%^&IQd97lY@;_IFYZgsyQjwK-Z z)6jXc7TcGd^QXx#fQ9zTF+5j5vTe$=t}}S6icwC+=rIYA^%C(ay_scm2jl6sycSqf zKf&yPmuooj%oB#s%uKRVLsqkooMpRfYgifsZFwtb?+oF^q~I$29oN-rvom?L#Sp?U zN9}n9xAzLbZsNYwh$+`CtVibKzMKu(ca|RRoP+{vk2yh&2czY@b9*vY(^V#A;s<+^ zvKCj)lc05J=lRB(2@73`3Yg0%5On@+exmccdr5kQTR!LA z`vy<6OW$u0XZ7*WoT|OVg6*rHla*$p4N)K#WKf#u(;+%SZc!;@5el+Xgp6&iz3=NCSBYz>N!aO!p{v7-p3Q zN(=2omeKw#v2KO6sN3xt+g#oI#PI?pqbMY;Qj%|=Lf~FL$1Uw{KXu4t>ToEfUYeE%3J(l`1A`ji=gQF3t&z16%4YtpX z#vplZjZd2474u^K+#bu{$rtg-q(1p66(LS0S^&M&nUo@>6Kj~G=-F{zpwly2(@#Q4bLpsfN|ZM#Ai^=AX@29v=NnB3@WZd z!UY$vb`%cbQtLdnMJ8#sIURCtFSNcTFkKAa%wqQVc-n3zfwm8wqFdcJ^|0h2v(DtU z8iHr9De|?MziJE94%|ZgmC-34!}(t@95oUp%IkGX_HBfp-RL#NhlN(Jd&d0P?2YgT z`B#NBJis9c;x#0)cnJ+1XN9$e|;L~wP;-$_@y`6>RA>!l0r2tt|qLhuOgJU zbC=jnURv74vR}z6e%qC`@~nE4dbQ@lu&T*G{=fyr4&i`A4%@Vvn`+9**|*DEgm0^T znBv|RR9Jks{h2t24htqqMf;PnnR=~7_*s7$Q@M6~ujb9*k5|Ub*FJCXuzfB5?0Tgk zT0MadBe#>>Px&RO^^(A)vTY3?RJKU!0^PtTj%z8G=gyYiCBDUPGGdBVV{S|l?az8? zbXwjNXbjYu5ALC=ZMN-0AVt{u`Q3O8_|kL*oL{)L!$zEIKCT;XbeM7kHfz}Ly%@q% zeKRlISiVES(dh5T9@$)(a+YS{30&s&r<)Otn`{r$`|_S@5bQ@pGJZ+4#bIhDE^=&{ z8U2E}ZE;d@(pj_ABcYnGh<_$3tfLXQc4B4pKiZ+9Fym>Y3X@uR*l%G*4ExOeLdhd# zA+YcOTgU8!Glu|$_t}k|KcPK9+IIkKb3paqa_e8m(vcVd1t5Rd&=`KEGrXi-OS&77 zVzn?;nO;)un8;K^wdF#Niy$aaYpB}x5(c1;>Y7w=Sg4%zZ!5I2-GB@^l+-1S5g%lL zhWA1`NT#5|=nk%#XjQ&&RTxPt9QrLvJj8&6S!pzy77c}mfoY{XXr;qxnfs1x0(6jq z4z81ZyvG#)K(nDjfe=!DTt`EBF~@}?m4ETS|6bBm{D;#W_McDp-y$L~fE3PxAfy}N zAIEm=*Fs5-%?HPuFO5gHt$WW5{)uQcV242b88xAzt&}tT|6rlbmC?FOJ3<7tm#b%e z1G5!8M(bQ&A7^)x?r@}wy>AiQ%!@w+7_<|D4qotA8E)k!AjY&tZ=Z8-zQIv@>%6?< zwv*k(6Z;e|Pg)qteR%#g^6x!$0HwzIBodi6nJl zt(J@#*o`r zDZAR7aoiG&;A}kvY{S2PTe-Vzkin`o^r9kUooNv78nXtG3WYUcLppB!en zXTJOGAY;$|OVt~VC~pfokE$1SLvzLgFjH>PqBCqug^nHAwAxF0RQ!ID4Y-PmTNhhm zG?xcDVmTJ8-)zG_)Ny7~A7too%Tjsxjx)uGvsQe+dgGm$ZKinDd4YmGt58_#0{@wm zihd2TZ|ee&`K6nu=k}J{{w&z>x)Db{Ih;=KQh0AC=J|1#sf_O+Ba6j=>1k~-lj8g; zvHelnihfOIsW670)}$=3p-ZHCTM&`i!K$=unl!Bly{AxUEjh`4a~)01+w`>QbM#}& zb4CK%L2>EBu0(o%SD%xb79Ka?P5NG$drChxKU{2mxb+mPy`0*u^24!vcxY(cSuJkZ zY|)@6ORKlS*j}N$$f&>PZk`Pen-@tRpu( z+g{Y)4{zD^)4YBNL|+?D6;%F)BK8gn)M`7}#tr+Tt_Y>BGX3OFt&n?Ra7ysI4#Nt% zYv$3ry~0s7`1+`t!XT$qhrpH@A3@9DOK(=FdXOD8$TEB2UVO5sV$@>__-CyZ_m2V> z@)?Plg^WKL6;H>GhLj4{$aPiSJY}H7*qzW>T4YZD)xey=iAxT-lXCHrl{qGA z=(POMxi8N!ZO9=+qyJAB-nn2zUfZg^A^VEi1X5;|ZHbtEdBw}1+L7SCV!2S_(`U@x zhli$l3Fmv}WUa?to?y5@-PVkWGS6eVq0;BIW^MUUPPrj zJ9owp1qtV{k4(_z1?5U%U50iu?(5)v?tWGk>NDhh6@d*c^(=<#l?Eygd#w56zPpCh zJdtlNjZB|Sy*QRYA7sV%UE9)A9~TqPyc$sR!z4aHAuf$f&63t6cKh$5x*so$gk2Lh!z?x3txuaKf990;J ziJgADhV};nt&bX+h`!#ws4^#E?oM`0UHN6fJ82J42@8@ld<#x^dI$o`PUch?O0J!F zP9^&KlH30v_a7R9t%WA?6e{eCdEq*@IM*X5JEl87Qap%RA7HV$diAR3Ab~(=)Sf3% zS2)`Wc?H#7NItEfOg#HOis-hkU`sK9>E-mn%=z=!^622^{DWxNh0}y%bj}}{%%$DO z`7&RRw7``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxWncGqIl&E*@9|6KXiT>qIY&!l;McQ~cLtbBIP;mB46 zrT1w+3?uD&a^{DEv;i$p5@29tVM2BQGXo(ER2RleN2mr&2Sx`~PkVQa2DKJr3*~r+z zDe0h!V{qfdjTfO_WV2`b7%LLKJmYuPTb+FC{kp5m*KKy%d-BY}Kv#c_vjM3a%eQ~( zKGVBkU&g7|JhLoV#KkSydgJ+i%(BhZ-osLrA$V|c$)Eem`#T==NjUscUH4t{{N*hx z)27^T?pjdWbmw9myQF!2_S(4FE-`-Gsr~K;Gn9m;^ zo@#74^_gR1(&_GPR|*bjWU!~H+Bp7_o!9Fybt|t$g59gyKYR8H|5mB7KUsF8@UyXG z+>7gH1U^l;-jw#Yhp#YZ^$*3ztB>S3Jz0M`@WGk=o&gf(7iEI9r+8<+d8XGVG~03W z*BeY$F1tOGFYz#Zxes&>I7KpmTrBYUybTZ;@W^avl`-bw0deuf87NW(2t_Jbfif^$ zfEj}cr~?`>jDie`hK_-tFad=PB3K0eEq-nkKAGLHe8auw<4dmX4cgRlxbxMQ6WcnHC3Vj!z2CXC$>X3; zLS*K4RkohUcMnTXiEKZ2s->J+FjINjQa-ch6IEI#r)%Hwa6jzUbx@`40K?zATLl#? zew>~s`ftOvH?Ow7o5;Rws!KO#se||V%cp1A1YE29_3ZGjX7PnqVT(32)SLgm2>?sR Brl|k` literal 0 HcmV?d00001 diff --git a/img/p/5-16-small.jpg b/img/p/5-16-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9b64a4b3d11031ded2a937570f8e917c62548b8 GIT binary patch literal 916 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxv`kSsvAqv^L=cld?i5Gf=mp00ScnBQq<)04AU(SQ*%a z4Fm**L==EVaR4n~WMz7|VdK}HoH(8So!i_RTCFS|-)fTJ&ad1ZFDvun51YK^FF)2M zhl`?Lmz<4BGZYOLe!QI@D&N-S)gxDe`4HhZQg+bmw}-}6h?ZtBS^C1H=)cYU1wA=k#;T4e^$Vs?{w z#ZA6byQ)gwY(H?^y6SAmMXPQ6nm;Uh`99rx*t&i9j{f)d;9vn-0t^UdBufPifmR9_ zEWB8_@dGSa>=oba?Ra|g9qSA(;bJ#cfjz5chW;_s>2AFKDaYlSU)Z`3!5uTIv{LSW zbM+{6QWih`?ds2N?l$I=nK2TN76k|Gx_au=y5m68!12WZvJMz!9D#>*Hsc8!P~Zs= z3Ouj^MFEgMfJp@&3ychcg^GrOiH-{u8Ygaq`$J%7(bLn@wS_in3(T-OoZfT#LYX6% z`4I!_1KJPHygIt@*Kxtc1ry&&uuo{c(6(Ud`fnY%-*;=Ty!d!g#I`HD=FF9|KCHuae79(M^xDW?}v>((`x-pXIPj7P~n?G0Nyi^!r!VX0{fK{3~N{c5}s LvgXf!hW|GKs2KQj literal 0 HcmV?d00001 diff --git a/img/p/5-16-thickbox.jpg b/img/p/5-16-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ccb830ecf02974e41733ac4fd4ac1cf4a38f2f8d GIT binary patch literal 13142 zcmd6NbzD~6vhaS$hki&AM7p~K>6Q+qyE~LpK)R(HL>ff89#W7l=|(`5mTpk;+vqv( zdG9^BO@UpqobmtKrzuVF)`3FFtD)kU|86=*cccvA{Z_{0U;qFCeA%#A_8JO0z!hj zLLi7B4-zsOGBO$g76ul<|2N!r0Ju;DZ3JyZ2o->U3qiz%+;#yEKp_zjA$Rir6Cenn zj3}s35KH(U5Wfi^w{rj{BFF?ogn>Fz&7Op6J-)%>Nz2>e$~irwLG`8iXmd_`FbvwGtn zr($;_5rp4*|Goo=_m4Y=mZ!GwyJ&XrDOSe>2Q1^^)RMq(=OLkegFU_P(mm= z6aWwcKt=%R^~B`sG#A%H`;-=zG*-R)ta@c-dI_GZL=pIma

    (Sw?gBOF=>k06+(s z?s)!i^SXahZ^mr8Mx@<#J}VeMFB{OU*E1A;+&i>+RaEk-5-!Juu2=3V;0JQtRR>=E zvccnby?IjKUw>q4PZ8!KYGE@xY4j*dpxta}sSr0XOX`E;TZGfdW5t++8iTz5&=v9z zMFBwKlk}E|t^JAGB5{CUA(hM}g$o(rdb?Y6UhWi`5Iv~S+;!Eh&W_HXgQ zs~>=vHuiJ;sIJO^2rg%**3W+d|Zj;>txpoeIV4Wa@r3#IpR;|yd#LbNI zYn&tt-6%&F={Go94Fob~(S4G%qK`kOpZbQfMxOV}H__fF;OGYN^TYk%_F+zoHs#l6 z9P?yDzAxG?Z6-FCKO4S?ELFA2&?Oxk>~QBifRD%p4me~O7>*Q+nE8J6#9tE0+6wHy zD1pX;+Jcr>3<-etCN>*7l|E#@*GT?&<68aoOS7$aX1yDWYwyZYOWK~Ti^_JrHcGg_ zcy(1ac%4z{LppyQvw<_;E$Yx7u@=#Nh4-v(>Mz*J)e4N;bIkUY`2k1(0cau#^%zlP zyCsF})W5uka!m)gxj%V(d<#gEKUnvk_3`b!fcf~Ih-!X+NE*C%qLOuRQ@D!5YE*S8 zdEEQq^7}8Xl2b`+9U9rYW(|kMcZgxATMQM^?bbS{X~at)_(3%>WSH1IjRSdKv|Ib# zQT=D2L(y-ld$eIhnWRIDhd?DI9n6^8bTS{P%x64d-(L3ExCai4L;G(MVH#l?E)gyf zEKVmjHU8Ig3$7u1aJ+*vJRDaqQZ3c4r*G1}y>tYHNIpq6DD2sBGzA zY)j!V$Iv7Xs$FTVQQ&9+EL%05@sbM}%>|c7MF+WNwos&(&rMR;Pf292nu5Cbh84770n!AgP?NVZg8%>cMaiR7+`|3x4QE&y0S4}gS#@cTsm<3xTh4{%ZN@Ci7?RACgT zgj7V7)W+GI;JN?`E+Zhw2)95t+vpL`5&W3rxbhf&iX|-Z(DhR5^X!PaXOggFjNl0O z2=fT_@SY(5x0NfE1JSm5Bab(PHr^d)nhkoy zaIOm#CLU!<_IY4$#JV;qnqyQ{w>ZG<>IQa(NQXCE8dn7~qI=COhteN8oz4~rELNK< zdB>MWPD?vK%CU@V#Vyst6UQ))*=c;J($z;zJSIY#B2AL{RRh@}wbxkG=Wp)v3yPzY*U!Ec=}mpk+R3u$J2J-1@^-OjNNO^!iW zg$oHieELjdykc)!z=JZFB4(#ld2Vz8eifWLpMyVl5`S`{a#*;x#xMnzn?=!o5uR%q zq%tO|ehWAk&_p`tk(zdvvhS4Sk!jhTdF*861w1;_EUb+wyXlcPI>J9IGMbVN&%b1L zPk)NG;XRM(7<6VQy`F?GXWD63yRTz($s3(1OKFdLoqS?d?NisKIGWYuV>3LrY`*w- zIPP2GRiiwwx1h*KocXnoT8$}vWme)Dp{v=}uFnXi8{AHgx@>sz?AcL(&#B!-5iakU zqq?o7Gjm)GsoQRLfX}Yo`*`Ab;+qWpC^BcF=zf{NYFjo53t{sP!&HT%@Yq*r5O(;KkO-JfanSANN8E*D5)WWXY$ka-A&U_S>l^KN_M%T6H z+vlMcZYC^IBr4R~wN2jFq;VtOV(ZQt{N~Z7a7(%%S@cHYQN-h@@#n~vryCqGKYi9wt%DQk{nF7X!k8oBOArtU+Q zBPL!0cFu6L$8IU{R!)i{9(3yBNNNP)NcaZkO~_ocUVarSmYWdb+^Ujk1u*d$!Cdf!*&va1o_hrV7v5<6+I3{94|E62r%Iaj6AX0mND(H`ddAG|Fb0vhQBeZB6Ui zijF@vQ!dbEGq);yDp1ME6EXz0Zg-+iaHYU>=)&lB7ccu)=7XKcHAggq0!P8<51dg} zL#_@UY$S=D4MUvI@hf#7e+X^mB)+^>*?qpn`!hUbWn11?N#NeA-ct3YlN?t}3vSBJ zf{&(#XmL-pmm0(RpX)%S-*lO={6f_XF%^k@T&bH>5~)>~CyP6?b#^kYtxv?HDE%sZ zN|0=LBT*+*o6Op6QrOBZ@Lqg_){+)2^Ydag!YcJmP)^W>RLy>A&3?@in+}PtROsZa z#$GZ&ZnNBe)BLt_?@400Z>b$ab0K<=hdr5p+<59umA+E19;Ya@S6=5ke?MAlj49cb zhsE-NP$I@X{DFDdp9cC|(o~JF=Y*DL$?UyX#p8!ej91d^%pVZ$F+aa@a3*=KsbXb0 z+-p{~u=i4sEb1!b&V*I9b|o#RW<{;ABpe8-=ePE9M1TLqfV2IWm-=$}iDJaNuTS_A z>%@P(mrYpR+Y-t&*l$VDn|`_&+#LLhO`rMjK}J9;Vpv%ZXRVA>U&4z06X=RBj+I&C z!jAj7MH#{Bg4w;t^r*cJw}6C%?)MK#Hoj!5G)%taYC%PTIZrn3=zZ4jMvtyqwW3>zSD!V|g;4WTFe7ei#9d><{mIx8&hdF|UPgIhyDynt$x;`@AIG~%m=Fj2r!#XSF6dgh8u z-BH9Xzy>`3@#Q=Qx~rlYx$vkV^N!i;X<&x?140#Mck)&WYDZcWKFFM7+j_8}Cx90IH z|5=<-6Ju*hEzoP$#&n{8e1kg|owO+Fp&YlKpBdrP)?3Tu2vKXEclTt7YDgpzq&h;_ zK#gxIu&!CJXDxWM#ca$PT&<;h`YLL}E_a`)d;?oJ)FXETp{ZQ!iSkk1tYFenQvIp+ zk@UvHe8atnEZ+_RxAix_(pSsbgxjrqUQd0&(qH)mYvpcMHV`*Fsvz9IOs90*W48Im zTdNVK>j<%9RjUut(DX|-q=a9O4QUUnsJV;=Jea3Rkj~~~nBrpG#ep|F2+v=zs&Fm5 zIw^ZRD>OCCzK5X&5ut)h-e0XqThwBu$6wUM5>dE%#cS5LD5k;o(Q^XM^|89RR?#(6 zc0I=o^^+~U%v1!k(M;(2RDaQ_SL0_7pI@Uk=P?=xoXAxS7CR%(M?&oidA>w22`Z}F> zOS+Wj0Y$o5G#5^0`U%h2>=f8Zz3lHV%mX4>e5A`oDweKVUP#Z6jo-QqC zkt+DYaD+7DX59Q?Y0u+cJGx>)AqvYc5q|S8b=Ej9c^}E?^R14u+O7D#oGhNBk2k~` z!_cy@c-eF+1Lt|Z*`$R1Kr<?sF3~Lgwd{}D%$S-v)P}X) zhk;4WI-b+gyzdS%B<2&AbxU45?(5=le(kou!4C-p^6e?ceJn{DB@6TOeGN<(#al4UQBW6E9!I22D=pN4nBsiGQLirHS2 z#4L2177?h#UX~TFb5p+#iI`*cQ48YA`JM4ysAftj}=wvUhwu| za!hW@)b7)!QN6r(0!(!gQmR-(C^^N|Oej=e_{Zh6i&c#sa4a1f|8ZkrL?lWHMnue-9ptGtSF=yVMBK0NMHRkF zD~_*)Pc6RTt5ecRTiddd5}g*Xb-SiNU7jmGAYW&1y9N5&oHvdW+&8!3NVqnOs#@`1lTcn~%!kk7v!R7)FLrb+ zA8hH1+@m54JKd+VKOC-mv98Ql!c|FW97JjS5d(e|t{<In_kHcg z!2vsz7=*L0tRgL|7r(eH+LtrUKjiU{%;KUElh}z3qP-HpE^j*J$E9S6-)EAxJ*PyT z3=5((m4F4m*|p1_I%tH^JgM*~h+8lBz#TnKij^>@gvv_vNx*`XC#d7}<0Z*&$#-NSNf^{6o%8T;V@V?mE7~gX5i!A^z1NNynQ~Kg!r`sgFL&@ zK!kRXDrC28<2$2uuDM;@iJO_(rx|h6s!8OMB`7-W{-Ogf=CZuw*D#G>4CD`~Rg{9E z<^ci~l^@yNDe;lo-_WL8M@@}53cSo<5_>mbwDVx9gpLO6FczpbEGQ_5hK7=vE3fPF zJfG9ST+-Ok{tX@x+V@Nh1R^RBt<62;XoR3f8*i{a{)5@cWUWG&zMq7ML7Nh4;1@)R zfkTKN+}C=fcl;HjMJ+vii^nRN?+A5Z$0W1 zCqJf50u3fB?@n(vyG0jJw@JXF8brw%#3Dlqfv!rDnys$2oL_uab5{vZ-(9MhmHAcd zB&roU#Fk}|ZQF;mD^#mAaM1VO+Lt3KSD_smz7ydCK}|Y@N{<=l)YXSm^62yy2d7LX z2kR;Lw-C}1EUZ8qNFMpf=A$LcjN7HXi(0IA{UJfbqn*Qv7Dg4o=t1eILN&eOy`7$d zFc}|ioiZ`TtS9Ft{Gf(g>$qev+dTZ@*|}vx3bDlU_-E$_t8+oNR?9!~Wa(C=($HdK z1NH8UWDg+<^cWVX&)FB&vd|mQe|^Ibso4pZerDlo+U?SJP8!9#t>QN$qFb_%KI3r~ z76PC4S~dKN<|R+Hyhh>QE)>@{5y$NEiYT*F_e2Wg{z(jtb>h&v;pR}vs*OI6-x6}( z-bWZ0rC%qZzljO=tMHV>M&5f3>p7E8KACaVdy_XFSR*TZxJ2D%Cnw>iB*2N=VhWl( zui>QkS|yT9d0kQIeD)4YafKS^G_`W#$NVhbhEJmN)N6Z|jzpDe?!I`z z2)!`9aJ@JBC}YR#=9(9bXZNGC>L1bSkT0V{sii(8FsGb@iIVk;F$8JYxefPB~4d0CB^pE$* zoaJMl&6f^3WI{7AD@Yvd;h z7ZnN~cZ`4Lz8yu5WaInIudvZsF;I%o0$7UlAlSJU>5azR^Yg1(xgFODH;zB8mcXDROG)UvoHckAD>Aq_< z2`knljinJS-*zh8331kL@4A*msP)Q!W>iOids5D}byUXC-@?tIP^;vKD3A^1gLOSo zJ#JqR!9DVz+Bi~F$vtt2@4gVyHsK$^=vzylax=Tc31}p8Q?{0n)SjT5g?w>H@XTE? zoBCD2yOF+&MJ=6sb@=|HZx1)Mf#ZU(YBlMl)n0@~48DBH>JYmR`+;|OewvdElii7u znpY2c^h>6#tzSeVZGBDdHcWiAu9n_nry(Ies$Si&`-oNa%&uzivg&7Q6;ztb$>;{V zxz7`qK8jlA*NgbrvEje;G7Q*Ku<*UFT~hUw<|3)BlcoAwT$PzZ7Ab+%Eub0b{;lm2 z(h4y4{l^w*stB@|4`?dTXk-=ooZa6Ibd_)DC>i0(ub z34ke}UqB_E_*;C>m`8$%BcD<$;-LI&7fd$R4iCEc@@0+{f7>|4m`38Ipm-?FMYumw z75z)%zn6v-CIQP>LHYZ;cELqh5dA?1nE8n3;#Yyvh<>-kuR^;8aKJN+{GT6Z@75>) z?07`ze>hEG^LJu$+$EKNtGW#WwgU|WlEC5!gcDG&s7jTSs39GAc;DM_;#NSo_g#myUQ52Qw z#Aev8egIH+CnqF?Kn(?|CPhpsjmI(B!$F|STL;pUnB2(;gMfwq*6X$Elr};au8Rr< z$g&!H$4C<=jT9ga>iaYps~d|Wpq;`GWO*p}hY|SA2q^I%Aiqw)B*?kLLEx~v8~{}Y zHNqu^soE2WKet-l3 zPz7Rgfa&)L;~IGIeBeR6A4F^Jui~JAQsQ_0@<6o%%0J-;0YzQ^3kgsd-;EY=q;vuV zuu%X|REmEg0gCo$jxi(-u>Ao*9At$1{S65KZEY0)e1>SvgCCmz4gNF^%p^z*p!hfB z?-yVXiv8CZ@Gbej&6of2$@_O(0Y*CaaX~Bcdo%5yLPKy>0l(P4cIRMI?Zi^rA20te zTXeABn|Q1+a7zwy_Y2JL-%Y?t1_5xvu*n~$X7VB~hk`?_O0|7#>A*Pl@cBP>;~=82 zTVRd#7TC|qb1M9Ol=!xcOpI)_#=*bc0z}*Am)F9#K=Qoo_Icxl$BmJLS;gYY=E~2c zLhbS=Q_RWp#qCS3+G%&y<0?4MtF-Dm_B zp#nmyo=9#a4sryeExzN7g{`*$uF~THqTbUO>8HytCc?Y^b4C$C>^?hs^6{m`6sj-HEr1e7wiJ?&>in$QGu$NT4PS(bR_U<{ zjaQt(o`)G>dQC$F$G1|i!(uUZ4lMs)81IzsU+zzQ+uT2KdAvEe{+}~!8KNI;8PoJ7 z@du=+e(embW)mz-Q~Rg{rr*DQ^H}v>S~O0tl+@H&)Em5)%FeZDv9`9{qX*A7$dOTf zmhC$aj_ho7oHn1#TR_FPkKPzV39*^$^qpCPWN&FVdKa(ShhV;dF4-hH%zMq0{#c$r zrd>{W?Z|b$l~#~$nei`bZm;^eU& zc_|j*rE%h5vEfQHIk_O-O}TKxn&vTt%MML|ouh*__ZB$$s7z1Bf3*l^@9ysY%22(C zjS;2=YwHAg4c$D|CrIR%6(v{}Nd4N{?6Rp8;o;9oD7dm|kVArAMmYZ{2|%Q|Ha>Y7 zK#UHwc`tf`Z9H;-?KY>suIA&F_2qkjyhTy~Pe`Cm953Fd*l~;q$2fal7b%`V7cEKU z=!CZ^EhY8M+4K}g^+qi8+-ZXwKi33~B|90KLocF~6Mt#czFxrVD(23b!>~*w8JyzL zCm8ZZ=`%qfX=@;G9eemeu7tTj+Wgs$7Y-8oW@g$AKXOwBkc`pC{iLL19U#j_Nl@fz z=N*b2Cng9Ip|Fx=2zr!c@W7R~UB_=zM2x3C#Trt-dVF&HGeT*luC@a5p47JdCXOI2 zX_u3^P)p2`jB?<*J@vIDzSO;SObK<&lXd>j%U0UDr4Hg$Ibx&q+?nrA)?Lm=T6!nI zW3(3T%F+8Gujg=GRDQB|BTc3}88#x3YXVq71*>znTun81?cJ$M8f*|q z5_A;v=R7bn_|gn1%eURYe!#z*2>kE7qkp&Nx`4u(p5sSUw^3?XTT|C}PoG(;GFk)y zM;)w1lhkg-e%hWYKi=nLYvL^|dSQXJ&Dcxfey(Ity;lU15-73+!=`>IZv&cOHZiPc z&)*GOff9pR)^Y}M@mII+m7m^p4s|}YPlTRqqSJ+z+FD{!0BU0Qwds{i`)`istTV#n z0)4+O+`Mlr$?njSvJreF%CQ$N>t z;;B#!+)R|t6PrL)U1=lPoirBi2f5ZsP8?El;sgio z&sTR*1#>tYL(qg&-pPmN}PnX z{2s*#?~Hr_MNE|hRq=G>F5Lpyjej;}7E1d52!6tXEv@ zLh46HGA(_dlk?*m(6eZrL{70E-yE>6bepp8w?--`Zrbj1zLkeyS@f2UF-m=f#mQ4u z3k{Jy;~gmL>rx-neP4=XI24-y=*s7}EfL6`hWyYq`zTe}oG$oU;n49Ui=(77>pLwR zGTV3=>Ezyi5j-OB$udtwl93I=lu4X;A;RTFxUPgv{kuUqsa9>97}~v>uC_^HUM^2E zTqRjV+!x(yPd(ckI1o83NZIZq)FALx?tZ+<2|NN@^{2f4M~OmU+DiLct%7#rI{$$8 zDg*oI{sU5~k#osFb%Gb;F=q7r47 z=-VEG8Nh(k3ssroJs*$%$|pGo9fnXUIT4H zig?0(tCNm7t{)z1gJ}gK&~?tZmDuwt#$YFNgfc8Q7cn}*nNhoQ zBHgb#?GI`^IfTrBi42U9YJbm4?)|4j6bo6^cDcS&YJ|w{@<{@*y&PNY&=Y-TiI?Jg zll03*NZElhPqeHbTUrf`*^BN`EhLZW4@k!?(atz_>oiWUEm@+nPPt08Dfc}MZeu!T z58u7+`I=^f`ktJ-B^02!RVe z--DkO^mds*$HzI7Rh?$_r;T2{XHt{=lpi{WiR=|b${a@PMPZ;SkGF0h96D%jBBuVF zfoOPCb}5eiY3H))SY*cpJk($se^p(AbZhn#L*e?PAULl`D8uJPF~a5g`>VQ?`mN)S zNSHdk`x&up0^H#Q)rA6+Ig1e}s6%Ls!(M`j?)PlZ6A8S!UJ9=W3{{~#512Qs5s2}4 zY3^;oWf<)UEssMEZ5h|anzTMA=d4_B%rZMi<5A~ca~gCJLpA;&7$VSSSjn!bxR=@Yzg04 z$b+LG;SU+&*v1CFx!5dxQC_*E?icsHOM~+|Da@D5s^``yOq)8d{rqv2sLvf2wHxXV zur8==gY1lnP%(Yt3Tve(StSDULe=R$(Ykh=Diw^{rWV>??79V8wi>>*i)^Y?pS3Ds zmn&{NWAd0*JTvML&h!nexp=!$J$Ye$P8aVid?4RDzCe(C9;k?$U*cir4*iG?rF@Kz+q^L4kGe1WQUdwWBz)sTetUyo(dODSlm52`{|XW9E%L zKSaVGo!JaO*r>`(ZHtVF{eRManC3A~Fw5SHeBuFqYPk+-DM0CRDfc$j-Aa)^i+?J&pyei*q{_$*p_-=Sb)_lRRWG@rxeGuMr-YwP2|sNf zQ9o5tKb1eedwMp7P#>sVneR1|t#!tnXB}!?Hzw=JCY*x2t_OcUuIXwaz{ohJ{6^l# z7%ZXma}p@y(*pUsivbEJ9j3-JrxvL~@YAOW6Y`U4KB+Vt>!e?MEqt4c?whU3$Muqi z>1^~iOPiycz}b~86<)FGIPIMI8#3a_wOtkmVay7=X0B%WL*}mkx0`}jNz3XLc;JO; zO)-bM&J=(tg@_ztaPlwR} literal 0 HcmV?d00001 diff --git a/img/p/5-16.jpg b/img/p/5-16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f0877bac69b713e0d02fabeed7fbd5a1e038f78 GIT binary patch literal 13867 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 literal 0 HcmV?d00001 diff --git a/img/p/5-17-large.jpg b/img/p/5-17-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b5f88bc3f98b5cf7d24d4e6434c271f8c86558 GIT binary patch literal 12173 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 literal 0 HcmV?d00001 diff --git a/img/p/5-17-medium.jpg b/img/p/5-17-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f7565101b4fd0eb0d45d7ea0ebe1616b33545e6 GIT binary patch literal 1815 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 H?$Cb$7akYz literal 0 HcmV?d00001 diff --git a/img/p/6-18-large.jpg b/img/p/6-18-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25b98137cd178518a50d0bcd43b49b6430f14568 GIT binary patch literal 9889 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 literal 0 HcmV?d00001 diff --git a/img/p/6-18-small.jpg b/img/p/6-18-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6a562e157d17aa4c1501be97be42d52f9c80e57 GIT binary patch literal 1121 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox=uTEfkaOVx=t6c5Hby3(tOO$i6Ej=_%wS|< zX8C`Mfrl9=CBQ5I)P7ZgA!x;o_e?!o9{G2g^%PwXHx}IO&c9rPS8=ZWkBDW{R-E89 zD||5@Xr7V)10xF)BMZVzCZNAq8Q9o?o;Cn_6=*UC&@qgxOkd*i{X=i7y*Frl`zYJl z)#OcfRqRa{>s>!fJDCoBVs2gk?N3pOyI8;~`{PqL#Z`AF?40ytg-z+1zZLN;=cV*? z3S%OYb_gD@l?PfYC&&P_24N{EZkU(_1ceNR6&%4R-H-&lJ_B`%5KXHD*>(#YSb&t+E7rOE{ zk7%|_>2LNOYd#xo3ulY|vW#7KXPL|nP%tP70KE+ajI1!1F)|1$8af6RPHYrVFi6}8 z3w?XVKb#vI&+zKr(NjC)EMT!EirsCm`=w|0{+s03AB9XRyuaRFFz|NM8KEtTmnFAu zZ#l-mky^FqTS@zrT_XP(0>l44oi}?*UiWpuu$Q&Rdw$QB`N?@@QM0IO?SBTK9pJPB z4pae#kIKd6y2U`pNeVImBLO)bGB64X7%l|62^2j7mdRb3LYgnDI=Yq412sqp0+pj^ z0Q$yI0IVJqF9NM*aSI}vqMQupWxWNeR~7&&1|>IO%7p+%K?X&`z{Enw#)%6RHXghP z_rAc+qNk^)tM|+^*csxq$x30)lS%Wix7E`it8dAm7Rxe)KC zx;Zjc-Og8Be`oLGyJO3t(EeI*b!F4OpXY1#f45k^^FM=;%cZ-n*Voj3z0B0du&_no K;!j}6-2?!V&PV(J literal 0 HcmV?d00001 diff --git a/img/p/6-18-thickbox.jpg b/img/p/6-18-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb56e5a6798bcf9a25ef1cdbeb132f566351f057 GIT binary patch literal 27010 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 YrFvAUQoSlvsa};TRIf_^0P^eq*^f>@UH||9 literal 0 HcmV?d00001 diff --git a/img/p/6-18.jpg b/img/p/6-18.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b29f3fe55596270a9d617bfcb8569aa49bf6b910 GIT binary patch literal 29036 zcmeEt_gfRq*LPGDML>#xG!;UxQbH9`dap_7ASLu7UAlOK5~_goCOsr1)KEfG>0Kc7 zCLKbN-j$d8`&{pPJ^(_RP-J#MMs#g_@G865z&-8vvE- zAK+>lAP*oWA|kp?M11=;F$wYYPI`}+_#P?Q{rjZ%?~_rI{f8*Y9#BwHJRp1cke2r0 z!^h0b%#T_BAN^g(jl0CeWTa$|C@3B=&`{DaJpJ#)@?RMimcJ9%$N$j(yZyfsS6=~? zcW*M?{Bi3BCEzCIja!sAuG#=hfE$2Y*R8#A1Mq+8#?4zqx9CkT`WK;K{&CV9*nLvIFVgk+%W|t^ih{jK{tg4_~`Y zPUI8$sRz(){a(7k!_e3??-9)a>MHTN`SO31`oCuG_RakON=xh9ITp;!{s9c48`QQZ zyOfo@b9X=W#hY)BA;beG(GU2F&svH6Tx16X?(P$Uhu*)SDBeCH1>KJrxdNa_MNgG( zz!9fvlppdJBwB{A05?A5-0Pfph7aTz_;!6xR8U_#>wEm1E;<U=NnIq;(#XoDle`8ciYTN z-VIqLQSR836h-D4X7~c3P+$^udLGYbAHzHqHUJgTyPGdR0RY$A?VH!*72qWWk?Gw! z3ZjQzy6gw1Ceyj>=4s*o0tazi+>3*X%y_{~5I7~%<#XuM>!x4hd=Eer`t-VJ6)K_$ z9>Aw};LxXm*&|-BDooU4HDeZCQ2SFKl$kbe%jd;x!-Z?M70iw83!WH|>b8=;k(>F{ z*3rpGooJY5oL%se4{-11OTgbvy|zu)8vt+<@b2l|n*u}+Us4c5A7>ggwUpYb_$wLz z&HD!;4v%U8c{aq8jiz~|%Y9X$0^ECg4fD&V*NJj!*iDay@_R}Rdh^|gRry3S;J-9)a64+K!R_dm_U4~q{V!k@$Je%*|MTe=*exDz|< zuK<0wgCBj}C@i@GTz(DVdX{qqu)YGQ>z`~avO7%rsb0-;_Fq#VY-csqn*v#&l& zk83t5I^PK35(;bZ3{yIa*{iPvR-(*gs05s*`D-s-NudpH&wB1LGP^wgyf54DoG`+A zI{mgr>*$Usa{3Xs!)2boBt3bue=pU%IFT#F19w?U3T3X0^w;M5kVG3#2^o>{0il)7 zCNWtio^?W^7slr)DpUR{a}|;dSAY%)p2CqZM^ZiJN*6hvk;<6$h*%S-ATj$;uyQ(k zmsOI9&AD4jWPFz9+NB1{$3noS`hJkXC!x;`Zz{Sf>Z>DG>tjr`c@srTeAtH>9n)ik zvdrh(RoUY4&5_(J24c|C1SGc4$$WVzQ@2c!!8)(ZzQXZs6;3K}GJ_H5>MJ?uKZ({f zX;(_c(*797znsjfx8ff%u4oYEg%~eeMAt+{igp%%grH&6JP=Bnfh3&6z6VbFVChqN z%;&s^fq_rZp8?BO0cO!T^NBQc{dl4jURydD4>> z4>3@5M8~805?*-HZU|?PPcg~bjaGES$C127%+Cj$SRvqnlV7FjwV_!~%n~)TMKo+0 zNJDD>@fMNS{`n>hSS03jlTgXZ{t0LOK_IytjttD^iI_QobtlJ~S7p}pM3mupc=Gsv zq+1WSi{VfYoS1o24?S=fbta=q;==W=sG?*BE3TSmwLZzwJ*|@ax+jY7#c+GY#*-Ns zoGGquwbf@w?Yygm%E&q}A|-ey2S{U#0YePWjK8+;X;zlB5~w))AwUndw7kf)DIU~Y z*SE9MuVS7xArWoX2`Wg(MV0vmaQY)41gw6f?~C;P>yc%KrG=T;ifxH?CF%fXB~)W# z<5B9oc|85nng?Cp$5q%!=NNQ>SWoSK-!EGbA93Aqs{Gd0v$;2m~jaP#6^zt0DWiov^8QZ+&wk-%~vD z1Oh%1{kelpf=s#Jk>MM(&_Z1SbanrDEPTX-n2rcGwUR34u8s?i1*FX7lPWKAqjF<{ zYal1lrn+FothiDgp4pl zTbr`0>(jrTEgI{rqH0Ve1~1fNWXs}CQjj7(^Ul3*7x5v}RVOKk?pfBY1osZED?p9? zCRe||#sq#TdN{;htCFXQYfCL;TC}C0rOrE%#yrV~MRxnGjL{XKN2;sr!e}Dy5(?V2 zX<6npqG;mZQvSmhweYa_f~ZY*R?t~5WKc5jX~tzfA|Gcp(RKyMNDAa$`Q2KI%-N2! zKGW1|emG25kcvF)tqjb9ww(C}?;j?0rhPn2seBYH4qq%a-mq<(y`MeL;RqDx?}>;? zKTjD+e8P6-b8lMi()&oFm0-csQ?WAy+!R2>%;j-p{PC%xS_#%s)Ejg# zAybC@d+p`vgek}Rz`Wc6FJ0auMMdQzWp9ra^{0m;j6+`E!hYbq{~|#{5W#yr8&+GD zoCvSSPGToExx@U~$liVwxK}VX>YGj$Ws|a6oy~Sk?APMib}D(s=V*qA4)n-h68oIG zREKC~z76SJVjOf?357frlU{L&&vtDjU39vKQ*DJMjmX-vdX@S3){hF}nokCrETqkW zWZqz}@rZ#=WdY**6Tc+OvU;*w#H&-&*NQgcsPc-{9G_EVKVramTF>_&(o%${s~}Au zI9gmLkZ_(F>3gW8h;GM{483CxM3hu15*~taq#=|j%1Q6y3ALMo4X0_zxpT0W|2&|C zo3MX9o21>B3;?fx{}M>2b)gC0`qR5`Bw^K&6jxU1W|CEJLKLxs9$EYH?R2Jz)1~0Z zxisE>49QmQaVBg=NxQM(p?3(XJS-cgJ{`UG)i$gwf_g{2?+u5j&<)qnmN_}R)}Cah zk=+(4P`mQn%N+fKV2 zl>NCZQP6x_A#2n0w4H65zcJqR(xbv)^9pdwJX3_PV5+~?H!Ida@TkW^i!xyxv_&t0gBoiuRQ}}T; zH>m@zN!QO3LzR{M(^j7jCL&E*Io_SG)ylU}XZPALlsg^u6%{k7f>)myG31vHAgRk6 zsVzrE&))Q*aZmW36{hH`Isr?rKJ`|F?mdl@YG*7AsuxPHpE{;w>Sds$nPujT+ zrRHI;KR!);RT@L%S$H@+)a|d787t$D?hpT2=t#6`!Z#1W53*OiUY9?K3#P{UXxt2^ zi-c$`?-@?adn6MtQ?#8uo|s6>Ua8W@f`0h$g}L)nN%N=879 zP|jcrAGC=eypBO3oLRS;EQ977#Zbk%vWnU>(Pph-@%um;aPOOq@XWiInyOcK3o6#Z z9_o+7l|_~+bd%+BKWP-Pmp(&Nh6&lg@I7KS#`IRuE(NM*mNa{(wkyOhUmp3-VBMkFbX29QdnI^x z{kt>q!jrHXMN$ zymO48v3WVXu4w-Ql?!RqlZ;q>qiiDVGp&QlS9=gAQs(5#f~Hu{ukx4&;ZCq+!RC2w zQDQ*<*oah`@rTw*-H(gBv9+o}O4xgbDg52&mlNG+T&^XtKJbSVS6Y^i#Hyuk*D;*} zo4hV#lPa>o^5z-eop{CEWM~&Gtdjj!rG!VV&KSEfV;hiU81qudJ9<&ryJ&_V)(Wnn`c^z$N-6e`AvN)sua59H z{0#yqsC?I0On&T?;aF^HswVVIl%u-xS^DsF(;e)sN184}q_*D7&URo&ZV@km{8;E` zkNR+`_;m_roA@eV%@?I#I-=b+!hN}q=-r6K^>{G`txX1s3}VtokC2#}tY)bs#Os(k z7XbwYo(eyjD0oSP`FG*GFJp#vB77FX3YH09l-x)wyuY^pv_)$L-iV%|d!jt_Tvbq2 zg4f_L+rXU3?%CN ze)aqujzU_fJy;zmEIvC~NTbq?$Si>IMd<-^(LKXFHMkf@1~xyv6^H0Thk+AnNH*&0 zdrT!|nr?rv=`mq$vZ14b&-76e4axUdYhS;zv6hV4DTUXETI%KV3lv zVefKC5fd?5HsoM2xdQkUATkbFJ)3`)t#F8SMFdn7MGQsao>`SfbAX~iVXbsZiF6dl z$L!IIi^(GIRZuKP zIJOAV=z{O5wW4{LHRqkswWAo?%IhU69Fw9iH{d||HXj$}e0&4q$m$zU5xv$GF(z@A zrci&kg3Lr~eb#|ecQ)$FSfZIIIdms~mQ@JtVP=-ry(Vo=x3%m9ee5+%=J;rep!5kx zNmFhM_Jjo9%0!?^k!W7N>{-Bfg*%eVU@~iBE>q}UzF8WL**gEJ6Z*o7;h9H_&`H(} z#SCY{%F5#>g4hwcFpt&K;Gs7^--#Bg<3-wdXNt~fPd2ylYy6`Bg6U%!|5ap2`HTo3 z$@9kv$i|fXJ|BxLmGa`F9hDa6Q6S;{lYXwz7azoi5VfpJLDL!e@wx#IK~Ze5j%1bY zs2FYp4mZ5n)4IrJ8XQ~jbNTiA0qao_|X+n(xPj^CH>6ptOdUf3C zcVM8oS;ku&%i#Q^6r-& z$7)vQDtCHKLZ^abk;aJF{m69t{j%G=97pjRmTwc%yGyZ4`{Gn$W^V37GJoejr+ zU12x2hHdA4L5?E0_l`PCX2+Nni@Q5gNvPE9aL@|WldN1gJ&(SYW<;xmRa`{hw`eo^ zf!D1pnN%?%Q87y~9&0NBzMneHB#8sLNWGQrY}-_9p5E#{kCihb3`YC3iXH)L0E%#ks&w&mZ~Y+ z{33Dv4rK3XOLOTG;hPCfrjn#uU>dHoU-O=c^?WN1IiVl*=vs6vkKfpQ+76LJl$80} zQzn`($sdJ$JI`R}5SJYY5)H{qXgKbF{ztj@@axa0Q0$YQGEcJ|Hq@M>5hCjY!@n3| z`Q(1c*30Lh#iB_PS;j#CXis^u^h#rJP~z|M|i&I zM>F!yX^%^BQgeykio3#NQa}Y>T{7K>0w=QWOjEgbPmz1kHeqewt!2iFo{8H&>xhn< z&@lD>I&dIiT|@iHTWR>wdd!#h{W}%5wUKu!s_0ATnBA+8A9VA|$&DrvOgpZ*#!ABl zX#%-IB(rjS6Q9Y9C@HI~Sw&}0Zm8<>P?}N`a!YOEDb&hIc>QS7%wlFSt^!(2BV(Z- zTpgW4bd5aK3Y7U!R^+PCWu|?5nCY+tsc9G(Hhg);qQC}gHv-ldc5X2feQTIBK9l9P zaMOPpciHauJg)u(=KhLU@uu0Y^O|EcocF=o)|dY*nRa?Lp?_`?M}Jh(e=W;#$y(HS z%FKT`L4bJ#`6}UmE6N1Z^AI8_xQ4~1KtP?1IDO%1+YVSM?Nckv z`*np*>7SLUsdg0c^r=F&`TNT)khjI5nWj!8Jp9ppj}BQhNf)h)#Hi_*b%j){&4w60 zl-j6_=Vzq#BwLp`Id#k&{s2WOKmO8b<8H6e5gWswOX@L5i&X5CYDdsH`xCX5zHY0` zUeR#;OrUq{x*Nj?VBj;-iC8QllaH~6n8fSjenjL?c9W1rl&YYC0)8&AyUVE&%Sm@7 zVZxF&FQ0|D)0l>nOWG6%f ziQ`Y25t2{I8--p71sdkeiSRyn^KVdEns4egG?uIPi1oa@v?wmAZLrfO=Hg;e58~_w z{vME@UFfVv{T!yAz^iRLe)0Z*CjV5~q4ZN}Qe`BMjy`!|n##1TmTZ^}EQ01CxEBd0 zXK&1bQ!N{oi)`szJ?!Xcog}GAee^k5t*mhz^zEHCLXVW?<+=U+wVBp$LcMN?2cP25%{MEFvt2f2X4(NnoM*}#4|e_FNfB!5Z@eSKM!RJTj^?nGFux{ zLT&Y5S^W@_qD{F)I33U(;zC1nnjVR&WDwnwQZ()~1=}t%bP}>2x7JVKXfM~mEz|m( zGav53%==1Cy_1>Yq$c)yl8`5qigeT=z3T=?cL2n8mjuO4m}NK93EU^X0ZyK zrfQ`MwxPTpkNww%_kimL{d`)URnicBTyZys0j{*7Bdt)#P~a7YQkfwglGoWP_JezU z%q2@A_rOb0v3bxte6Fq$z({fw*A!ue(nUEqSt;F{q`a|g->rXy3S_Oabq4Y3>Noa% z*O1O2n}8+xDtLW}{#Xhs)@S|E9aUg6Y)SrM8J3e+LR2XB#eqhwmTO%t;HeeFuoV35 z(+mecd-@1p<5ajogPZ`Ro+nA6Ts~D7O?$f>|Lf?PFj(T05-cnRNG=%>D_NQe(uuWG z!YrB^>RKy+XxwOKc`zRqQLz!+ROh?mG)~NKhBG3uv523JZ$L4MCKXxjUXd-DlN_+g z=e!$wmD<~GoZF9816?g}A+>prUJ>X2#erzi4DPrBP>UJ*ul~#Q!mX%>7DD&IDU{Vl zF@49iSQXiuQ@9+SsXk*@F2YolpoiMBcEtnKQimSnNAhi?x2ZUrhKWaHC?Z)aR3~;c zN!)UbvH_@5CCXMyPB1F zE)(I7Q%f08T((U6SazRMr>%aGRz_umjQ(*EtXNLzl}`ty%a2!2@%A-~-HVzG%4F{a zj`N->ODBqyLOS}bK)Gojne`9&KZ!&y6yjzz@*HV^F7FNs75xbiJDl9jayVc1kG}GF zUDEQUtPKKCcsXr+=$3#TD`O;<#^y+z#+3&tBAgN7#7wE5(SgHRhf|DQpBzhf<(cDx zX!K!YJLQSo?Oe`F8`IEhoOa#~8tcCqi9fo(x7-zcRKh)Z{tWv-2Jji}pN z*%V&LHkUyEFTwTam#V>%)OC2a`pBs7h)Ls>pL3Px*js0lx(7UX>47BQ*u4;=ptbSh zY4UQQvqRxfQ|8^e%BOZzrOHnYZPxE@8X5R@w|T?mMvke?p2DUIT$w)~OsqZIAV0NL z6yg^*ks(DT6y4J0m&jqrOCN2k{OWRZ#huD>+tPWiD}EN;LM-W=)u>_AGZJT&*e}`3 z+f?Ju5WeJEWb9SoPnjGY!O*O!l3rzf51kyVV9jPBbka*0l9!p{bFb~!l*|ho=evCC z|ChHNlh3GJA4+GF{Zo0gRjBD^NkQ^344$=Y_ZXsqJXtq&qBpdJ&)RFK!Z@IN!mY7> zLw9@M`-iQD1 zv0@@hGMA*rq!tUbY`t6~I#?)s;iH_Nz`($jnDuN)h0dxRwq;qv_!7oihi}P_!H$MM zPaOfb#=ngq=aDT=Eum4M2MRs^?4sRR9p@*2@oeQhk`?LUMc;%-!VdBZvo;pv(ak?( zxqKcl8ls)_COrzz-umX~8<*B`erJmM+LUG4%T7Jrg`4J!eT9N69EY`6hDXTf0pASr zn4Z$oUG%)FembcrH!1==IyC)j9+u zZ)|0)eq<2Ge)o_IRugG!y88I{tzXuk>nA69HIg*=HsihLqJQ-A)6<4#nRtYJ z50#P<23*6K2BJhF=SuifLoIva>vwQTMVrYScg(#_2`7elP^{)uNnr;XPTdCQb7Z%s zZnS>DgDi{1T^sDjURARJ-SAl7o=mL1E`+d_?j-0}hcYvAUGoQ))*HM(PLITnR)fbD zy&_z>He%VeZaea<$7X^1dJPGY$uk;#s9efuIiMsVDcyL=0$&)R{BRUC}s>pGy2VOej%Rjp- zevtcq^NWs@a{1lUlGAs3#+&AxGMLmC`1)dkI~kW^s;N#@)~plZhqm-^_4H28Tjbaj zQM_)$domyR8?a?b`+an4teSXjymzT>+MokN9?D(hU(bzyn2(L z%q#^U=%TIVFmw6nqf{qmF2pgxMrpH}4RPurb=;sSJSDd4@2ak}7+gGP zZA`0?0xw@6NhRK-2|}CDf`L-Y=u#U^up%BW*Y;cudD+`BySnG!xHf=UT1`ZH+pM7* zD7>Z00}6bJz=}VY%nWF4=uD8;Z_;H@i)z zw#5S^;DIlxy3((H?VaLZlD#^ctpB1%%aX1uVm*M8#yTx&+PJjt=2rIboiRA4}BoegrM zk|i($UeYcUIyKK@B>f3DlB_Z_Vmu}}2hB~)R9aAc?>jcoA8qO-+LxFy>DQ z1B4?yY6xYlxIQOl5t?O=iC9#)wr*}qmelmB5he?I>v1wPDELVss! z>33{UZO73@YS~HVm#S?-qrR!e#`BH&a0_8gOLa!>y>_ajGxku|IQ(hm&~sd0=*pg6 z!psV;b2E|GS=|UmQq!3iGCLMFkb8myK8xf}&)}F=nYIYVHejGkN`dS4u{lu!Y-dOs z+>O$SmIkUni&p10kNk;=NNRM3=iPyMdr-1`9#p@x5N&@UN!{<8 znN`D6nNdMfzG|#2Gb6yT)l-PC*63%QZGSIj!5ily=9DKbkF`H^-+KW?QF+BKdPn%@ zVIZ04#VBD+=o`l`rY?^gNipIvrJAO%ij#ySsHy3j>wCY}rMBC7?CBdO#4Nb?j6+8G zv}|$pnv*Y@XUN)3ZFl_K$q&p-(LU5*t@wh-aWV0E;3(}tEfeaSvjKMsX;Ki<&b06- z>%MWmTfRk?9=`W?|NQC4jPBa1n3aoHE3a=_t9Rjl$vyazdjW{p?&>%5j?`wN8u@IJu~Cx9B<&hLy+3=zCMv> zhl^Arr1x@8XBOKP$G833h^pztm(tFLw6f4ODrtCRy%tEbqIg7~7#f zx$dRvYzBTMxpa&oJe-C-ShZM9xz{M9G`Nn7@P3J!hhG(g@w9a{0uD9$?c#(q7wE`0YvOl(bzp%To z`qekdvIB=<_9%N|Olr;r9S}+OlhyT@-btUna7TfmGV*xan0Sq)0(GcXi4!%$b-2s| z=$Dp`Q=I*@NXYEdWCq4h(mtDZ$F~jDHTW#XnA@z+7`X{5Q={Brfw@s_spD3A^=j$E zG|*EYQmZk4(JO!h2NTB*!4HC(vwD5RJb-Ep^cERK;6A6~lwT-wr{z}%G$$uiiep7u zcnzZJGHvNoeRK>8w>?Ejr^=uXzi#){wFNY`@S3f}ShpD1K%^)KEJsNr7exe4Df#DM z12!e-qM{fJ-qQChtf2h>`IO7FPEasL(X?%I6Qj0CYt_|!26W|NztqeORdRL-i9hasYI zJRzC_3#3njI8xNL^~9na-9fRQ0)Fmyj?+82t0iG=8B=B+*qMXHm=S?=r;EN5_gY|r zspf1kuScEnfCKMLLR zN}vYz%Db)#oK@&5NvEmH`n_!o@i`uyrWc+ zGOzhD8`^Q!+IwqfrKX@-qJ44@5>L{c--BwK8qZH0&|;5l3Va?{@U@}9;2;v$GVd9i)kqW+9{i_!fq4_W}_y?1K>R89EIud2~UTo|0pas+9UYq@LTxu zgjG?#vDvP<(efvqvq1crn~KD5HU6nfB^2xLhiP5&6%0ga+DT0^!0{GZ0X zwrm7FD;o4pq&aE3*f5~U=4~p2VxU?24o-XOuPS%1U#_44 z@dB8cLbkRxY96DWuj`SAsjalPg$>s@PaW$*N5&Q=t6JkXnw^;U5LvDmG;}_^PrESy zE8fY9M;{0ZO~RMmv?Flh?&bKMV?;%*BqhyTpLl-16ts2(vbwJ|vs=ahqOs`Ij=uiT zBDc|}FgvzqQ5sntt4OFz!8Ab{HZ8JAYU-Pvu=0bkM-A&wQ63}bu_8CCE0r0?lo8)y zS?2f=#X*H-!zHQb8tMfaXejGsvGHz})e~TpO97S~tZeVq6~42_-agMtXwH|3C7d}T z-7D$0X3QX^R>4Oiv%``Pz5U-N))SCZbK)lUHG9k{cw4M1b0Xdt5+AS3n>nhg3qiyx zf-9#>;i$Ks41KdrM5lVKVC-O06`KW|O=VPBJ54nCl0Ny8JYK+OIj1%J$T%&7ZJ!Iv zJ7w1(;^U-aS0#ftir%D#(aJeV<#oZ*l4usPAOoa?$lY{gBL}jKlu#e(bS|=MSFCa_ zg-DXngljCDjtqtd6|)XU2ohyO@tpi_*e7`Np9 zJZ`N&y6jYe66Zex&3cQ=ow)LISRH#s0j0=X1&~d0#}MLgvKO!uS~B zfi>Iot)K~#dgX)LUI>0-*@-H%3ypILe3PG7>|ya9$?VitVb^8g@-S9gTE9qvZ@+*pI~6PW)r z#K?*8JnyeS8q36XY*IR}KO@vLw5YOpHxEBpDsaq3`_XpgS8}q(e)qMmWW+Lu6}VzA z?oWujf~feDX8OOE#+TFyImbcj^Qm#}P->jc49hMrr3ibxx7OhfpSng0HyUi`NanyF z-~0uGGh%HquL=e1HQ{fRqu`4-M`O7_oqt1BsCMkfw77`I35puDn}7PDgn&oEn}QYXkF#S zaGABgenr#0Nyg!<=mn7CClO&}7d_sMf&*E}LJc;ObBy9hxr-`bE(|&^nQC3G)0#$RkJ~?fGJ4r0Tm_b92&<;hw(8GrLGhO4^C-;5)WS|)B~PzxHQ%{$-6&6u?sU(t73R! z3#~j+n%6Fm_f-}_>i7yJ;B$i%sZjdndDSorzq)1S&l1}(rUrsT&chn;AY&4yDxoJu z3;$!2=`Z_=TG4sb9qHVu5^GH+t=$2!IC~+6(SX;^iG0ppm7oYrFXQty+zbPLvB;&{ z(6xFz>4lIkt7Jb83-?8OXwjMXgI8RA@*X>%M$PvvxI(dgRXimf&baVTj*boA8SLuG zoY<|IH6LUVj9#?=hBxmEFR=tEU8kgZBp?x zwWZumzc)ry=WmvCpUvMwiZ5v)_TO&|J=P1`YN9c&W=-4Dv6v z?-zxb&LuaYX6&jA+eg*xDwjYAJs$^1ni7)fXjRle;zysTNJ@E)H)uv{Z{-({+x(Qw ztG7-_tNw=gzJXEeN@U?wqpnLkU3uRmqDI8X%zIp3%CSCreLLu;$n7|){Ro2qkuUoS zAxrn-5!*{?-BIaXO+~)5<7G8<1RiF#xCG_3q=C_ZfE_bW>#VmiR0)DC2vC3jc(b|B zBF)_ufhfN8>`OA5$=hj%0U6==wCiyj|+-0RuVP%fva_3Monn~Owk7_9+l;KH>)TQ z*VilUbn@w?!Y4YNh;kb6Q)DiUqCD^-Au^5o&AA$Q;r4T(;4l}r8G6UtYBEghQhUD* z{*KbaJ|h05?;d8k+`j}IP>0s&5iiSzD*i!Q zYh@IId^PEh#M(1T zfZXXne0Y7mTdild583$BDQhR|7BLV)I2BPw#)qhZ%>w&T#VF47`XsktjteE;l(*A+ z6@$8ry@?Q#y*v?akWM8xolfLv)7X^5TvHg?Qsqhu^rV(GPk?CVc1H~Ac^dnr*<`+_ z@ut(LM^WiGq<0EbVx8&4VVRqX;}pLF$iD)a5A3p&L~U3rVf{f-No8|Fy2wp4&?0)g z!s|YI9f^9X7G9Y4TDfgiBgVh#xz<7cxqXZ1jJklyBhhkA&3CZ7(O>X9)HFr@kbJ`v z^%W-|q-vE=;OAUAJ000zIu7*5lHD)tc%3^m5V#eELh{tF&q}Lu{rOp-6&v0u$gS-_=$knG9W;6h0UgHiFHIn$P( zwCo&DB5;KP>XT9k?5&DX#mw}&lNz9vdr&0`Rn*GE?U1ERrOms^=A{8eRZh~NgNrtd zYFovt4OWhx{UMv>1m_PYcJaWR_F0voGpJEzsh&fZQ4#h&6YCY^ax>3gwiW&}dd1|L zGg^5`uTfb$jT-S7C`{31lz<%ViCO9ll?KJ>+v6lU-Z(-^RF{xW*7GkoutpreBAd_+ zL+fzlrkAF(R>!l+ftZ>L2QJ2lpLO8G1&n90(FHebLcTN6`2ZdTn_ zAJ;N_Ay6KSpF{~up{O@mtdO+9AOK~p9q=6hIU2vPvSb~SeUOk>h{B*^V`Dk-5Ve}v zN9kn&XiSXDcxZA`y5z>17md&h`pLCcUNgp#c1&exMuC&wj>$ttAoD8vLcjc;(W7k7 z_~&56hhE0Uan@5uqE!-8d+Jx}>sC@+iZUY+A}+3=%T)}KOM4V{DV;a^NR z&wTON9hd&k>hA1gfHdGf0P*PnW-IcQ!1JX$w$E$D1BF7>6#dS3@Tj-py|Yyc+_N>X@urnR$LLqUdog+uGk zWB2vrtaTQC92xI4?q7CgtV!=^?aFF@+vR%z+qCnh<}_Thrt(3rn%0_l>k7J#Z2n2y zHtD;#eE!(C-})jrX=rs~;a~w>)O|Wjlu#qNWHX>_>w2upbRtwjbLf)f$0T?%aM56} z{c-Vhsd&;?m`TcK(7=FcxSR9`sy5pUILX#^Xo?PWU^GnG)?ZT}PUqNu@ud1mcb|bb zjh8nb9bn_H4vcq>Vq}U$l;Aw(X7d=Do!45o%Sm#UTa+hUDPmpZTJ_BwD5cVSIzgZd zZMQqh#B6=5&u8MV0D72cwPsD^1X;m%#3&}~(7ir|fQ9nZC7%-_N|2`G;-Vg>N7aE_ zZolqzsur`g=Hy*c<=EOgAhPaf#Tay8K?mPEyBZpM6Q1{t0~w}Q6xA_EkA;P){Ds)Y2eEW7F99z?U;7ZrR3_+2|C z-7m&Jz8b=K`6B1bK$JbVeVXW-k-=(#@TyS=m?LQHp#K9ub8>gPwwvJXx4aDd&f zLQg)5YhAD?8dV)ZAfgqDu|JfiA~?gTrBg9A+mnII9&Z#u>(EP2p$qLxcE2LQIN+D( zoOZ}JYVDZsC62s#UKaHFx1O+?VQ}6l1 zJ^~l4t*Sk-UB^e1l)4ZG-0owt;>OP1Y)EiwO8der)tN1gqCQ{cr4Po~7MQ)9JOGkeq)? z2F!9LyMj@8d7~kZKXC$`n%lPffXg3OQ9bGj)^0pl3_vIH>f$Qb8wZ;Bsdv^)+Vdw@ zoO52Ce&BsyBoYh7(5Qo?2_;XRO}Y!LO|p=eJ!74XnkF;8KYt#*;CSKrdoIAQ(cQ0j z6=*IXQm*y=nPi27nLZn3p0VbbVU?smq6~}O(I*`IiO~{}Hue)6jTy8{{OgE!e-2pC zZnwXbVUwm3d#X;~YQJo4xc0Ry*&*>Q-cuh4#BS}3EckyqpQV(qnt-xsny}wtk9xEqzmUoYBgf%Qch=1r=2Rp}fntMoGMD~20vHoKmg=w%qFCVnRfsQce@-x6}ax8P=2k|MLq>jO1%U$r76KXe%rIO%~Qn8s2GM{icOCO-uSwUELzlEL$#F& zF7>9NdoEak)&V)=*1E>ABZ?MOmSuW(EJZBw+o<$Py5T{+)pqSWXJs~%bf5zvhGl4W z3tjJ_@3ePk#>eJ>r7|+iB&ih1#O^5yio`wO3>@Ws=w3KCKJV4$F}HQr;n#Q_5Zyrg zggi+qrnBhleNN5X`V;9QCMX*}$Ve;oT$#7vy&+_>R?ns(^%yw~uFA+AY2QbwY`&e^ zsXH^5`SnY+mmh9Lxd@82eT*QmZE71H&Yo#>B|BML9VKv>K{wk2K4rV55SEp(z=c3r zx?%Wyfco?V8d?0Uyl$+N%9{a`Et-Dcej??POr`3ed8%rycjU z@jM__=1b?37^u?cT~%fxsM*%J%8^@Y#2nYyNwynsaLTKAZDoD0Q4-x?bRc~@(u%_R zLM7RI>}?f)a&LYe_gM?x*IG7ZcK3k&m(|tv~t3~yM z4nNa$+kujVg-Qd-LR&bKm5i8OnaDHihpV0hYIpw8?~Ft4xz&uGT>)A z>(yZr^C_L_#z0@0rWV=3-MwezQO9PfMNDUfIlLD4kx(P!QDt^)R9{Tj+WO3lV9B9d zzx_q_N4PrW-`U86l|0?i(r zBI4+(^-Zxqc9YrjbFw0ByFm$4v5D?#M~?Cpr=~*PIz3>O#@uea4WFl%=H__m@}aK! zi@AQcnijAvV^#mRK=@|~X?>5fQ|hh-s7-g4@e1@8okq3?3b4)r2`KQidAiPLkH z(;irg4QDITT>`W4P<$GYAR()$h@eq#Bj`<&CimGn?ZXB00kBLl23 zjwtfvE9+0t+)?OB!;SqIK&^^h0rF$QzSUSzwY}*=mFyYQ>0>MU!HMmDMJl5-sQYyN zxV%+y^?-sF5zlzEfgllntM~9+_S?DFSFQ?EJNl>x-e3ojY1^`urj*3Z}S|eA~=gn@1xVWSOgW$63Rr|hp>!#b1drJMO`*C4r z|EIn0j%sRK_YGAPP$>avf}t9kfDu8FsD$1j^Z?Qcy(1mnAVpvY482JW3B7kv=}m#q zt4OcXJHEK@KIgtS#<}<0@y7e}t+B>jbF8ef%KXZ2mhbxoEVp<#EMksg%d!Yq7btES z_|`5Vd>UH98n{;d3-CU`mReAGOsJ^+Ps3u8QxU6>8f(Y}ek#$51%W8NO0$Yags_;8H1JW0v-I zhek@KoDxzpI({rxsx+@(+>bC5OfSzu+SFXv%K6%CT_=%yAOl;OwCmb;@{wb2e-$lE z8QoaXyB~P|m`%z8qL!RgMhHfc+M3qm2pf$WXDx0`-ssUd_6&LvB#f_46zB3kPH4{ zPK8249NpF|qq~aj;tJ5ZQ3+26flJu({Z!aCXj5&zaXmHV>F07vMJ? zL1z)`Y1#2|NU8j2}vbD{E2%!QHG!VH~z$WLY5EbRMaKTj9J>lY8)o#^(bjh{{> zkIft>IMK$<>>G-Q6rOzj{AA)zm6n=jiJL}r??e40tDmDiTQ?g$XT3uu_MC)@-+SJC zNAv{95^SDhR?;m|;~U>qWVm6z)eqW_U3nU(<{hvTrZuef-QL_BCGLW|vx>6E zM+h?Lx+3}g^Z9HqK0Y735(~k93i~R^rXqGXU4ts@qFfF%vE^o;0F(1fb8xb9IV@SN z$*w~qb)w73g$=tu7M@i8)W35)HEIsu^=@wefrglDBT1EcxMnoU$|1Uf+e=2hNpOT) zuHa_uDcU#NH}Rli5<3Rkg{c5-BWKsltm}H@xi5umKM;xJE+V~xH`Omf&W(NnMzvCFs9XPAKTXnK?Dd0x z8cC}MLNnCTIWq!CLjXh^0;J;vu1fY&}?M-9>7Oh8Vtp+)g^UhY#=(D;Zf)&7p*h)}to6p@CxfPgzjrU`G?% z)(7n!{Rhe6)=TJ^nks`(Uau1;b5>3JWxQ7YkH_wPHI8cgY`zk8nsLB}68b_JLrzz# z!!?&jFuw%anH6_Y2xR|zps3pf7rNV!aw%*NVGaZGLepFMQHJAPo(busHX+y1XsTGHaidt)R6x->{ zXvYbja(qf1837U|sWhK-OLmK8hih!d4Y>_ASqowHV7p07AlWF7(T&x<5!J8g^N1%} zIa1Ab@aXm&U)@N{P{#bp&oIz4=4d6kFBzwXQBpY8bj6*BSO$sv=H}xQep{2(6HfDH zvr;^RwlUt;h$$vRn2L&V6+|V});f65iG_2rFg$wDD^NjwgYNw#gCWaxc@n*DL-lOuB)TkHb5cLpN+eT-k4{JvEYlO zLZmfUyi{+-bC8^VnA1If$vTANbsXxog>5R^IGk>66%@Rqz|L$a<}Eze_U&RgSDD(m zKT~ma3TXsmP+d%_mrrkbTpxpS5B1Ql1Cp}WTwTN0m2G7fUZk;#n4IZX1pc9?5cu+b z4ir{!rQgiqgTH^0`)M$ajLqWVU7C*NI~in&J}n;eOp)o9~b3z7IAr!j<=a0a8tu60#BRT(K3mW^lDQwkvm+2V<;hG@DxEg}v$>;Msn? z+I;Ca*tt?@UEZpl)u>E-dU4);t^RA9had3B<0>*-w#%O-mOpFV#!15!jx}qrbFem_AyT7Q21Ru#HGx<>9WdF}GbqYP(5UJH8WL?JX4msi@H0w(|RVC8C0N zJseNYUwO2uz>eY^G<2ipW+f^vpB>va1_ZtcxTZb&r8*h6q98{r{6=}FiSoMeG=2z7 z;}eK(u^ijHak!?5ALKP>*_Nop|7*Rvy;4@-1qOKqzumndd*<~M|Eka=vVB!Vw^MD_ zNX6{J;G-X&pjCwkUF|Dj6R+CZ2u`D=9pW{Tb9!o8^z_yaiA?AW7G`T%T~zKp4yrZ} zaBIr&52{86AS_j-W?M1cv`4}i;^8XB!qI%IYG&SU&`Q3mU`N=V?9pS2Y0;}>!zyC# z`x>)$l{-*uw*pIS&!Uo>3ZT*f$&KpwS|Q4l^TQtn&0LZZH8?$V^$B{9Iw~n8-4z}JUDK3Egf4D1=Kk<0m4kGZc`0Y=OV%4Vs46lCIv9C2$ldjvuOd(}e0tNc4YZG~vGT-eCy7K{&K}2Mfx1Y=C zkp<~dl+u`jT8TlePynb^)tZ;AltE$nln^jPTSW)fN4W2d&0c$o{~&hJ^pMuy+uW-u zr~Nhh33Vx2dY45yr1ua*pfc-vFqWnuk-h%{S< zIpbBDik5VH=@;Ye4*Q!un+P@-!+@4#aynKf*{WH$2fLi7J#sd2yEeuqi=Gm;R$|V! z&2coDWDq|7uhLzKbfw-a)oIW*QkjGeRt&>_%a%RrMY=iA&;4>~J-Pj){beIw_A+s#Jei?I>a} zTjD|%CsPdv=WSMvLAlu&ZD|nu-c9{xdwtlJR&duEO}+fslQkkM0EkrWSeXmG@z1B?|| z3cKUaEU!2az)2qao+bj)haj=5qn1BmCN|VdvPyCc@GX=2F^+m%ZJppO&g}gRcZSst z@QH>!{wUaqKdJ`qo93u8HvQa*uP-eBRJ{*23ALzdjmN?LMyINeh~1zyvKtNz zJRQKrE>~G>Smr$M6YAEEGiG1ccru z$Z66zuQax~?83rCCw*bT4yX&B(OK7ifz9`(Nt*@Oj9a=nCZB-GkdwMDI!`XWZ|jGl znvW`qzMceI#tRAAG44a-zp8zrsq=#lvJ;>2ud560KHW}lr6?`Ab{V87QN7+3Ia5Fi zv5eD}8FU|LO5FrzRbwa1N)9=gu<|YUm8Xcr9Wha|4F_lf8Bo)~#)>tl9G;7U7sbmG zLf3p+2OkT`HEnd$sa0aeiX6C=POkR&pT^b5?}1$mi!SG%J(|1IVLapb`K^h2A8Lm2 z&64(u8!Ot#Ld=rVYE(UUgFq1T39w10u3#ebc>%rcN)uhxy1Ie}Vx*kYZ|vE|rp)|v zzH)@FZ~8@XJh5AUASCIv!Pt!i`CkCBe%B4F)6qjxS&QbfqK4POMuSe$sV&DZif3l( zG1#WmH?%k)O|&NrVc$D983Y@l?L*OZ%qub1RY)53cKZs?1MPd3i+A9Q#pS#eVKC+x zGb=ZPOd?g+>Z>V%t(3mjX$L-f|P$^JeR4ipEx3{@iSkc7cUV* zN)`Rb*XLoJufaat)aS#4>YP0dAKpAI$R)*^GAJgtrtLE(Qgx9Z_>`phz8>saLqp{Z598h(Dr#6JE<7KleRcKcu zo;wNnoc5VF8jx|Lcbb)Cu<;Gh26iPB^Xhc5j8elRY*VI*l<+`ObEW#d{pti^s| z_1WclEvD`85l!&=``$wj@VyF96M`2}T`u-ks|EUSPAfn~>ytcoGGZMQ14F##1NJ3N zhG$Fh7B@4z$Tlv?);OloI2mv(dg(9`5Kzj`)r0Tn99DTa0{4GTnvbr}VT6wuUFvSu zj%XrSMuUwa+X>leuQjOTi#$6DU3XPYtq!ery9K7I*U+dbY5x-pqn(+|kQ~UL>xx6k zD^(w!^aN0SmMvzGlv@0=+#4J0;b1l;nu~I>(7qzouH%&%;tCA9z1&gUu%J9!o+Vx+ zdtvC<*Z{y5s)jS<5lCDmOg;e`7}E52l|~jZe=s_xvSNX3LbjVI4*GVAO1`~JFj=oVX=7$f+NuH)Gmss|Q%{*tR08MD^5H+eQ zIfo69n$%KM_}(U#OX+uPYPDl~n0f#$`kBC=+IyxMfCb0O`&u#o?MYvsL`$g2@oaGB z#2y(HjKHcki?_-Xu8}s#8STV{+(|ojy=-4kUWub`=la1P_XW3I<^p-MbGOC^TY}sL zvs4jx-=X{SdKc*uu|07sfzy?zRp2ka*xb(mdF^SkRwD|1LeMt(ep$^q;Qhch^aiF; za~|2#J&q^PZ^{f3RH89aC=qQCC=o~xyTkjPNs6azR`8DPQdvnFRRAuNVJ{i}gE)W0 zn|kS%MZu;zFLN zgZF!#@AZW@Sz>ka(mhk3P=L<}^OI^(eRUcv1QKNz**g9a8YWJ?wgY|3;r%e7r~)+@ zVlFF0uG7a}X7d{;lGX~I)>E{^EM(~Wc&-twQ5iOyXLW3&ZB?L3SnO-wm~lS`RHPr3 zZz>NgCX~{4<;5X>usNzMZIKv_h*w8$z(ANYwArLGCew6NmD{J2)G=9m0hNX2jra+E zsNmSEJYu*9ufcX_l40J(N?!J4c#}@o(VoUn9u_vwgDa}A@gurvTNlvgy?oINU$_M1 zF>etxB)%lJYPLEUZjjVi#9`M^dXH0qLi&iD4Qcx|k zXtMQQxmSo28>N;m@_D^1UI|2`@Q~>3i@G1%eZK$=N8y(5O8-G%$Sxig*xvmMaHRDM z5FCn)-N`C16VmqNx?Kk`_y0q~#+I$)AxHl>g7)l@P-50Rej2TA`+nw4MO;T>cB!p| z6lFoglj~Sj28}#1qh|$DL|Kt4k}hV!aP#3<^zGluP2e*TA`JnucLOZrS}AmRpOl2r zeF+VM5mXXREJQs2JAA9v==wmW7=~(IEZ8Ec`%_PPsSw(YcR!k=B>{hNev)}hC?Oqo z2-wRp77>BI>+5{fAIaaK0bO>yJQP%zYsl%@Sll0(jlqSnT?Y~)C*ZirqWa5BeY5ai zfPE^jQ5)Jnl~%iHFM})v4e#$Xd6e%~HxGP!)P$@O7z2S3K%EQUKS|xblE5*Y+@tGt z!hznm{t#Y)w50Y@U4xg=Zbv_=sXih}*X0^@+}(GeuOw$U(`}t8@34r$9CXlX7ZBVV28mhs}dFC^GpQ^E4*dUkm)l~3F(Iv z^J)5nQi^jfu<{WQXr~_cRrGQZ7~6a&PG84*Pd3YN@|xu6sMJH*&Opg7GSL~wL)|A; zioDPu1`FZ9g=_g*nqlR*ir{3YpmM?LORUe_a(<=h z_qV{#UFO7#^oRMm0}+QZ{UfS;C7#Kb^g_2Bt%}3@-hRu?v!|-bY1Hnh9RJ&g-AbR7 zkzZ$SDzBOyKZyTPo~#C;%!0-~$k2@tedrdZl&@xt)S?^BW@Amo?qN z(m~kg`NgFdYY{^9sp$|A*yrWNMP@VHJA6KuM&A8J4~ix$!Mbsq@^)rdUq8b@*I*`d z0<-a8_c5R=^3$ftz~#K^vav!S8T6hx`f=54E4XRtb~SOeYAe45v1le$kSKDqK` z!}QWSf9`aNpk1v=L==(n1fDSL+2*&r|Ir@zrFCT7ed*Z@?&9{jVJe_$!vu4pnm zwQ+R5vcMzO(xDvsev?y%9oWt+CZ zNjBYpTLU_bh#$K(X3n+UBkQaSTP7vO9&9k#<#X}r15=}w4{4245nLo;;WU`l}pR+eUWQU4&RBrdJ#zei2 z1NvCI-2LMlo#ZpS!dj2RWq*b z^@t+Cp^*ajTGG`mZj_86Va=qS2AVZkGI#{`jo_;kIxSdthB1T(*fn7?HEfIaFZh|OFR_T{u9lF8tT4UG z<6xbRj-OB*DPZu!urxZZk$OU=ZNI(;<~UxIPr3W5!9(|`N(Z~A zk4t7@I`)bT(jJV)PKo%w9RuE5`sB81;o2LZ9IDOzxhtK^Y-M+?@A%RNNgmrkzU_)8 z+%c1`mH~O|-_{Jk&7g&@p%HJ@;Y}8P^4*9I`Lk#fphNLB;?3xq(E8l8v8e9LW$GrMOvhn?l(#19LJFX)CTla}TZ$v@$}u=_yM| z%Vd@hlY`uf$UtWR4d;4e1+&$dw+_pSi-(v&%I8`=b|>o)ruxv5RpA2i_h~N;QseLs zJ5+P9%Ojc*g_^usnY!8w1gs+cN2C08bF4-uKYEQJ z$Fz!I3$t>50m9ICwv`tSFYx$VlG!#qu1h)Z1W%qJ5bI|C>qbm9*V|pLS>xQ$Er;Gd z*(!j8wMU+@TriY)w5sFxv!~awTYi-vc4vCRI!-vXwmDW#UgTvfK1O$+!q&wm>q`m% z@!ws0i!6E;FH*hC{R3jpM%#wjoQJL*#)!vK*1GguB74$b5AsZFzpn%hG9_GUe; zVYbeY<8IL6Y#OK?WWUw(^}`#h6T)Ns3&{xMKk& z*-$xfnJm_OERn9!l&Xt#mADlUNyJhu%#dG7G2J;%;yOEW6l_&Jji&@pQviYpoeL;{ zfq*D>?HDqh__S%gAgfJDv_DN&^yh+8@JII!yFbL^I`a5xWg1f-b~t`sk88Ba#$dGu zNg!`57Do86Wozy96hzKJzZ>ZWDIf@-$eG%tUCYu5<3Cvi4g;xFMm#uXn4@6Y4x8yt zPF{sK*-{-J*2*|_pff1CR=T-dPRp{>Jli6_f^1#+zm)@7^*-w~^Zm#fh*VczJ?EfB$0yfEXIYkBV%+O<~}zI|$`l zzX3mhW_{Pj^|TMBlzP9GP)C}JoA!49fU*6d)~zA?ekN3hH`^r}l8se+uEj*mf>$ijxs z^q&^?``!O@qcLS5`ase1+uA6)NH}Qz{JY*m?mDC;A0Nw8_be6^+;f@ni7>w9XBM{8 z0$&DMG>CT$uIM@3DYtAw=94-MES7tfORQ4y^*nHIO^@3@Gf zyMto=(_I;e{!6q_-aX6C?EM1P?IWqk9i6CKAsgnW2DVd|1`UT|0F}Iar=A9{OAx=b z{%z`oNoI+s-OM}JKpz~Zb-0%w*d)GJ>Pr+tql6y_#C1-R#mWjl;1%@@=J+iRB97lX zp`u4+(e_|Xqm2PelR&Ugh}yRgkmoQHyOg(6Bc_Ziqj7&h%|eTT*Qlr@B;_ud3j=YcqMm&kh6}mr($|4=C5iQX4Nso@hfnPEMP+Nz8?m!kr)W{7^>m7F z_3gO0xBI2oBwgUu)Uv_9-C{>#%>9n+{ngwW!W!bS$mN-uJ@v~yq2^vXW%ptAp<&RrUQ|nJ<5-h! z#93F-Ua*BJK`xJoq5l-Xzo~#)3E(ao%mgKL--&+9=kJnm2KUjtaXITGleK)_TL$;~ z{yq3sSCH9O(r2kVGwcVhQq4;w;`Y;l{cvr$)2?5DF}eHh8sj%XbFoD&2dJzoY^kR* z+O3EJ*_b)?a1pWw z6jmTUR7b?7Ah11QN&%}1V3E=H;wnNe*Oy*euF*%5(p~K zNpMEwzsnEgP|^5^c&m|ZClvJ;R-0yZ8T>CbN4Bj3@w(K{(I>fTI?VTr_H$&Sq?<7-YY3!*I4N2P6P^pfWr|&0s=@BS_q9677`Z5h=^e^A~+FYVJrcQ6UR$PNT5X} zi3B`R3@?FSRRV#57&t-@fe^%FgfaO4TUK5II26DJ*f5AJ0L4LIILJy3Kmv_~!XT^m zZU_Vcg(G1CC~%hmZv3*ddIADn;Q?qEh{D3K;ODZMhnfL811Yp>*@ z-05Co+ju(vR-KZk$`L6(o#O01*eo){R124=;{xg7#<;xBx9W@YE;lM z6zDGK|F>-fm0tZS`YvOY-?e)XWy0qOT`GkRPGwadP#&UW+ZZD5H(JBR&frEMK59O4 z0>2g5$w{bui!9VW-0&#Id3$uSdTKQLnQ~s!n(WsNZM3(Kdv<)f`P8L82c>GuPMxfr z+69A*o^!ks%diqlPVf5+jycBk1kWt1mfp1g6GQZ(gr2dj&8(x;E|sR1LEOP6lfk)Z zFZ>VPgC=_=uiNlv^(A5LUZjgh<8)89c-v`tA9}49bgSfgKKaF&Q*MIIHKZvyomXLE zPSq-fNm>(=<2CPb-JzieQLRvA%-j^n$z~kr?tcgYiNOI7GL~w+#sruZ`jGKGI1(;h zLzg(c0{jmInF_&D))3HDM3>s>)2>iiS+xsO-ASvrXoJjy$uEcyK&(^0dMQqfqVXCo zuD(;#fF5%TPnK2lqB=3zv8nxrHZFx#>#;!ULl+2VFYR#J@gYC5*1z-D;n%q~ItDA7 zTKl0~=kIB5o(fi>K@SgHk_X_Br)CV?^bd@KC5?TB=i-AVaK-OAmBlB)5Tz#HPW)UH zcJr;oI&rOHIow(KE?W@|(@e(DnFR5Z&x0x#c3DUW1dkDO2+xC3BU`@a_8+dLD|Egr zjJ#he=_yKl;J~;6@FSDY?@*8AM0Kd!(fz{|aUv9fMYL^)V``-MRXnZ5IWl~UzF=Qg z`3Q|+TgPV1S?=~N8@|rYRrI0RET-Ne4cms_?#__lbz>Ia%q+{9TMrtB;`b&LN192M zXEU7*B987ok`}A?{D-tNc23_DIjrOmSv(-A?(lftShi_ z#GYpB)R20iiJ|vS)r(i~wYMKN2v7C8oyt}4ea)y-0VyIkCljwPIGyU`1 zWB23UBD}JR5)%x$vQq%7$=30%#{BnEy9%a*9VNwY1t`9Psm~GG2a8cKzHF@#`EoRD zR2D<}D~uLA3Ua>QRDsp@gq>~E1Lw35_>P~g-HnE!PV~W>&@rP5OIT+V9=VH;p0A20 zc~_z;0f4b~_$Op_T`N;i57?uB5eN=Tru=MitA&l_cN_wR%6Vk&IAn1ipEhZ2+>o)` z4JXL~@mp{p{+Ct>>H+Z-GF468`JYP1eyTGC#ZHZPR*n^fl`d-6e$BBmpHAcSfhyKA z2m%LN?1mky8H80gpgS|!F{!Wn`PPNg8)XjK^F#Pa#{g6J?`)cazqg3yAnhX~qGrl5 zRVV3Fvkv!~?&TxG=a0ilQTMDwuN7AeunMdbX>%hax4NX4n=T7Q0R<*KD9D|#;Ng^V zg{kyKvpY9Z;)4Slzt8B$D4+rxw3X*WZsuz@X#erNS79@2yXv)1B?1WyP5B&ay2t5g ztLaNK^2SEh^QnEzM?@gI^%J9)W$QNy9ri&;8tjzLr3WWF_==h>$oIS^AYWb!3mU+& zM8k!ct)McoCYK5;F+XlyvL^rDlB_3OP+OH0vs7;p+wBn0w%PAybqJuY!!0j0DKrRj z-AXk2{Nle{i}F;z|0Y=4J8EQ)A%2HspewwAlyZpLI$7)8cx||$u)h6lvUak&{KL_{ zk^?+d7asb(&0W~K=YMx zi0>g=P|8F_fiJ@LX=J?~zul~e^8IHc!cfoVYl_3CVi&G1%1mC0SpkZcAY%(@&-?7nfaAKyD+XyJ zZTy088=<@fKi(d(iFY0r!Tt?(f6pip`)an|m6PD;Cgcsi(Gv9|!BhjS{xr4Eh}cZc zk{Zz-JRlH

    gTk=(H*~vYs1x6>}>3O0Yahxo(fa`nTk&64&Im?BW6JRdoAIXh}d( z6ptPa2EH}(hw;vR&1l9W*g$&7upxrQL=xJ}8v5Dw(Go#{uK#36YnFIK?=wTDE;pW; LCDQ~}Tlc>KBQo16 literal 0 HcmV?d00001 diff --git a/img/p/6-19-large.jpg b/img/p/6-19-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1726b9711201f6cd7d05b466d00ca0bd5b8235a9 GIT binary patch literal 7234 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 literal 0 HcmV?d00001 diff --git a/img/p/6-19-thickbox.jpg b/img/p/6-19-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa86db11abcae608f1ab4438263a389faef52d59 GIT binary patch literal 18894 zcmd73byyv{*C@QPA_WQ?cXuf6?(Qxv#oeVq3lwJ;DelGH-J!U(I20}JEiG1xb7#|Y z&QH#H-{<@OxzAmbNtR|MGm}gv$=uK1uYoWWWaMQ)Ffbqx3~+$%mq3yrI9OO{0015c z2uKJB@bCyIh=`AnP*G4(AEP{ejD`-zKtsnwfBYB&7XuRu8wUpm^$8w6E;c?G8wVSj z2@D)y1CM}=fPjpR_81NO|2N$CfH09@^)qf*)GXk9yY6N9o5F7fP%|x? zqi^+mq=Od2LkF^K?`7HCmwV2Zd)$|6W?aLxM}jJdV?Vpf>JO7xk$VzD1jgjP@>7*> zqn9N!O}o9=ZwcOS$;;n~j!zMAG$)Z|M6ZiSd^QkNzix}0%vr<*0>OenNEtfsR!bb5 z@brsmno22`iz8ffSw_N}7@?@UR(2C3bz`Z-5)OrfR(?ZijG;CIORQGhe95q#HgyAI z?&s2^nbHvh+6tN+UED}JHvQQE%eO;y(stm{5IZ8~j1`rFW?!c5dyrE9Pb@JI5(vaT zf*W96zR(o?+&49mtwaKb76Cp@c)0{32g2`XGN_ss54_2d_kBx@w~#IGrzU+XMke<9 z#uwJ_72Sl@Zr+~i`**pWZjiIE(X}hZo%t-qcWF-w21mE9xUAi=NYLL2l-z^lFRP~A zs>I)eK;$40gay5ScVLBu^W#t6MGZ%8TAs8#n{pn5JPT-KQ-;$x6ErjEepgr}{Cx~PWz3mCN=`0(3~7)(*hhTlBbG(kTSqsJtvROsL_-~JN^9t2fQ{ zDJa1}fTk!t3uk7zZgC^A+4e~IEkO!5`M1sN{D>kE-JL0h{dFi@W_E%W?IWZ zrg};Uw zjI>WOel`1coGw;5zK#}2{(AC>>P(cV?DC^(#j88@Q`JSGMc(qcN>TbjqU-+6Q`LoE zQ6x@*^QyJaKd}2{ix6*6Xz#W3uE$3vV$~oM$&^VUu_;|o6h5&RCm^3+u zdUghbcDh;nR!xne<09|Jhy07}ZrLx1-d!US+jjVjH?-d%l68y=Pl(hEMW+-f&w<~c zU5yQJZ&q~HC4V?9>unt8ED{`h*ElBZeZCu7S5jm6YrFG%6H`}hv&$UGax;cUW9gDm z(+g+1O2O&pxX6_e;7(?gqw2CFJ=$hw7sI|fTjzmy6MP-*2U6M4R-SFPeZalBf^NB+ zw99fK{Ke(dm*eH_56I^p0|{5VAH7uTDut+Cxc(CQ#qVU`N#asfG&8;3zVx*H=cajU zMXqZT+w%6bp=w#7<$}jRy@UM7Qm~*b=WE?5gINEE;o|6 z5N4>LJ5B5~Y?j!Es5SKSsKjQwF7Bn-{z=Z3j>KfISZm-GPz+9De{#dH- z4G0OAx`rHREZJ{B@G{b$e+`)qnXwl;w%@14NIS7;d?+Q>3ENtNamNW1${yzj{ zz|e&Y0~o42f(3>vi14s*4~2t+hk-@F1Y=|2Ji?$vq!7a;r()yad_m2w=FF8%BQ6Py zYmk7^4h#b9J*aMaVJ7fY^Emc;UO zCcelL8EQVaeAav zC&>xz1>39)-ijm7HU1Lhb|@s+C0;U8>(mqoSs`d#dai0sfM z8P)bLs=W=;1>Co+q9RnovyLaS4NOj2qX(%Sn!Kf!Kb2NW(q}n+3jarz2B38)w^Bkh zOXZXAI1{xP+or*5D|0CKrG%&f%kzN+X;bI5rTxvK`pt@M)8w@U43_~dPR~NenbF16 z-z>E+r9_D)y4?KPbH_TWXLmmSr_*<{)@?xsiec!4cLrm&;ac~gzUEue+t}Nx@#Jl_ z_Vjdt`sR=4TnNzu*9$59o?<=GZOA#H^ z1#M%OW>i*kUvg8ml#t9yeJ_>u&=7nJS=Lf`1zB!5bGb6Ru9cX&^SK9wXvy$P^hcT+ z(9*KALm-h#rh4^?xDe|kX1%8T(dkS92;rYc3E}Sp@{kS_4!_M!bDov^{KqjXH7oTQ zIHAXk)Qs5gBP83XdB@2t-xlN}RuUcapXBzx zk(91dTaaO_I67(-xzxTfS{F`8hSG)=X5aB3-yd{>Qezw0kgRt*6&T}bRe_&9uN{!S-sfL)KJ9AAoX*h2jo2znWOa> ze*Zem2+FA?v4x6;0L0bmfm8C{)+`h(@w|q!LhdVApf9?Hs$A|Xra+%c4OY3-Zv?Jf z>|jD5AH4*w*ij;SUcNm%<_iBxug0`L0+;!JNK9sg8~;mYc+;CTeM6z}_M%Ehy%n8t zgj1g|a8loPxnyjy2vNm9a9q`~{7O#Z88roU1!k;XjRbX+hJxtVwtEngx(cuBSY666 z!L9{DLK1Sbfdtt;Ls4){MEwg#N=HhEeBhw|eb^WNe>(oqx6il#%krP>|I8K0Ki82` zA;0bx>(_)Gqej0?K^z9Nsj2C|*B?KL{ZC+HV`uvl{^GH-@eSoNuk_*_Z(X58PNro~ zUrT;pZgJg_fr90qU_~+HN*wlQM34~*Ff9M#q&~n96LIz(v3a}&-R>;iu$IkOp+HfX z(K&qivr*E9b5T91P*i{DfJj1YdL1(t&^?vgQAynq5`|SMmJxx-rJp4_<8)O z0vL0<1~*@ge>0#upFjN8Srz-56|b3v#j9Uh@_PE_*FEUOz%Th7){Ds3IS|%3%>t_J zNDG=YtdRzjI`5ei9~C)oWgZ(nt%(vvqZ6Lz!jzrj*+k2t-j|vkW;?^XTIzYJRuQsv;XPiLy2&LR&p8#9 z>-Wc|;^P@G;tK9Tt=xX7X6KpWsx%>;#PXz~Z=Z4#NsgGOT+1`dHXzLwg`Ho#mw%;I zc*B}6T+~&`qyL4h@5Z(;Ird67ozGh)xyLqEg!JNzLZbE+!`tLN72NpKgW${y({Pw3D}f>PWPyc``wG+nh^Qwpz|ZaM}wxz&$DFQ z%g+>$ilQzKstXzmCN;kqqRbc`534(cna+PRB#F?hwI{!Auk~b!?yu>b|3(x|)|A?L z?dA>V4d>g^xx6Cg_!HUiM-%T7L`YV6MtMtl3+?RDkBLOm;g$tnL2UHlnuSI|ov`wN!pNoov`y;aLeN{T=S7&ZyyTQ8!+tmpE?Hv$(gY>nngFVH!L#@q-3V(%w=-=LjD zsPkQPe=x-b&@EPvkxkA2NB3zswJPav7)#WP@6&RtcGmo16uVQy_&e9_2gB&~bUnPY z7S~O=7c}oCkGBJ@+KlWX>?^-E6bYrqQbT}j`>)Z*nNbFUP7n$U>Tua&RR-*m2 zgvn-}Qy*~4f(s9)An8@!6bIAix5jPS2+73)ap;--3~8O}J`l~kOG&-a0(Ex?3?yO)Z^s88QxHvnaavD5fld3o{l^% zeO*#U8G9D&dR@j!3CK2=elcWhvv3Ql;*B#(j;tE}+)v{@xU2qG_; zjvnXdiMBCYwCpu)odyvy*Bso)*UDANC#0%ex)4^c9b5Ep;&_p;$8irTQ3VE#^q9av z7X}6q4&l$yEDXTG;D95iU}G0k1HY*emoRlcdKf4IlV+kYztT3N`TiC}(S_K)?+^4Q z33g=Wte2|$=VW-f3=+SJ<~ss(Z{BR5_4aHby}*Y{;-|wynWrMw91Sb%lVvio1KFJl z`@b7=DjqrG@5~z^Zae7SV?VdN8sqU9*qPQ(-1F~j>C9VVle39&aJo>itG%h2#1fa(a1QAH zT^FFvqA;gv7~=4M3r`SzCx$R2Irkbz^4g@o)UUqO4Y(mxhJ>xX2t*63c2y?t*v2`@FbaVWq=Y-gg`%-1Z#jF2I!Tz^SqT7|sA%iS?%7Rt0Un6JD zRQXr#&4iO1iJe6UXDu!b&y8Bm3qHP+7PZ3=9NDo7O=$s}dn1Y=n4xW=cHXZ|u zoRUjiLftiCaved;#3iQ&n@UZ?ts93;@B?Eof!zwJa$S|@!}N}Y0-vG?<)`Ascl~*BBu!v7NUvFL2eHc!vaXoqSGzpQ ztkDb0#``KfY3yp4o?JjzrWY(7^A%oZ8cf7N;aU#y13*~;I--5f;p zeKoq86KNO+va9s9%QD#g-0~C17oZPq=j?Ra3>xMWD<2#;ls$ty_oQsDqMP56o{KO% zU?su#Krmin_S)gT?vNg&3FgS%C3N#3WRhue6vB;k@*;gK!wbb6ms#*vj{fAdBjgdS zAO=oG{eZC^IP3vZxNhslUjb|NX0N)A4A|S8p@;!X$C?+^>>(#0qxL6&UDIDV0%?<2wJ&al-at>1th5e9tDP$G?my0j%d!bizXyc}WvBt5)QCPlYKVxK z)&cjgv+)s>XSGui5HxBC2Tkivb-KD<>waS+!?{K!wVlTonx>Spwi~To6RlMv%^|wc zzN-I%mVcdO)B3*!hd-qbt?_;(4b6{n0eyh^JN$!fT9VB}ut-Y+f=yaN`I_Pnj8%0^ zid~{(4Iy0*GNY!SXopR^2XXa3S+3|~_nOLPnn%%fpWP5^zZ=k1C3q%e;eMPrJ)nEY zo_MWfVTeVb(>I`9HK1L?o@oCU{hN3Wi7cCBPxPVXeh4%^w7{fRt~0DsPmDSSd?&dT9~=yIdy(&_E+NG_Y?${HcqBfq@R!7jJE zfM3siQLdH=f8RZQj^SObGA7~3({K|x1Jro0=tPb|I9s-KZ?-h;%SG$cN;4U-$v zs1V4|7irx}F<9g_bW)fBmE)1J?^fMnrE>f#U(=oa>1zx`-p_RtxBrJ|_J0y2LT!7- z5c-`(erSMnF+U?HP!#^Ktvj^C?w2iR*0 z1IenYdqc`%lZIF|LxYNB8Jn6gGnh}hdLB|hx%OB=YN0`U-->Lz!A35fr-J@AT_?eB zv{ZI#ENi_%$wzz3j|gB4mnn!^&hq+bpWKiazf<;>M(UY|L^hR+TUVCV&Y@obEn~PXLqI(HN$)O_UyF@qHb$DwZtyJwa z+o|XUgaVRU+nBSwb8#D4`@laKj}-*XX8{2;#ZB-WVxhl{F;KrIFSycPqOG7md?4x{ zY`#HlxNT&=rPb#F9@POi|4PMm_jR9aBNRLXauPMi5z1ra*P^iJn7}fpra3@AY;$`Z zA;6iaAp3fzkns2h?~pB9I<$VLJ+*N$;S1QZpWcbqsEaOzI*nGwM8Z>V7wv2~ASz!W zJ~ip*Yfhw+4wDhxOYe;XI z%QyB7@E~rgBtwyJM4#vv2K*XN`AJt<{!yFQeCnLOkCeDPRK<-FZj8+}p3*`;YRr{R z<*Rf0Bji$bQNQC^sG9Rp*6u~e$k0j?5?ecRw-S};wsn|an$u6FvWwSlqHP#`(qXb`tqvYyWAQc5Yak|CJZgU)};HC65IN0x54c@XW}i%+Wr1HN^c zJBEmRYI#}tLQ~%7r5!}^b|(hBG^D3n9n@C^U^ZvCw1T~qddaY?lsX!w#)O0P{ zT9phz3n>p)T9&U**bzcx?~yKg&(}SY+ik*$3L;?e6?mGRGeBT3mq5mk8*N%4!@GBr zB28M#a@&DHSW(V zChC>DAH2hGSG+WK9g&7VCO8~U7TuY2%CzXP^sRNi%cRy!5r)CeqQ)CFu`D+jROpmx zm(JS$g@mEHwar+!=6(8JFyKIYyHg@S?$lwmR3Z8`-K+dm$BRxX0-b1OlS5N>GADIL z>wSE0g$Svv%wr=)I-Lk1y^l-%zLvRk4=O$~ zJAd*q46a(lutnDCE-&bD-MNzd?THtLDAtJ(Vt{?T?=ses|4&j>%eTWO#C$B=7+t(( z@ne^fR6(eO;bf+0M*=~licv(PynfPLDfT9`+GovEC4`cGkWK|(urMShmm`t4Ez-8s zT)RZtw;Eo7_!VM<0PXpZm~hmlYE}T;u_#qrA_wuWmbd6=wPJX$XCx(Ffa%8V3Qp8I z8zy$)o3-s)V@*mXhFHsfU{ai}kv^1~lDkkdl=p*Oq17c_0N4p#=!Gt+;p0-@d!NroJ1FT&&H7YUK*&S8w!(QV|La*_GuPs{l>fr+=}3+hx{-qMKG zvuAD%Cw0M$aS0Sg5T7dqIAB`w1_oihC7gGEY$-ue1J64HmpaS9z<ax!MU?OJ#Fo1uhH5aPjpsjCIPdH-eAow_a%;yuV1l&ioDc~53Vnmkf~ zPQaNf>Pmu+6(ryI`mS#QGWmhdiV5d6N)S5DdEQTq}tN6@L@>Lg*-a;Y-KfUA~CaZR2 zuip8X{?xIh6-X)_o39sIcfQ75o8K+4Hu7AXcMh}Gsvbf*7l7njdNfq+E1>pU+wJF= zU(5I$f9o!<(HFO@O1GawU+1W*06e`?@>`V1aP`h6QKUWFbqQI=i8V96g0wf@#Q22S zqP6kl3su!Oj}Zd9U)1X{;{u2~R(`EYY@L7*%4lC|d-|9SZ@f2eoaKol?S>1^>{f11)YzO(qwVX%@S`9|FFJF1&@3xTbNztf{DV*i{kphc;M;%{ilp7QmmT!lo-`*~8!=J?=?rDTQ#PEvNih<#D5Dly3dTv7w@L{e~g z_4&r=#o_>axM(-91dh$Op?rWyN}(1yy+QG@dTg9*N?viX$o_q;cwl=j4W(SQVju%@ z%${EPsXy#3JiaO#AsQ!Rbi5=%gponW#=3L!^QU;C@FY&rO!e{5_$DWQgeRHapfu$|^aYPqA3NJC2VRc6Zx9l&A+(?#RvM&$5Bw40; zz1fT`BED)wKK_NTot7TsaeiBio7EPtpXth%(e>|6s&4kL(wUaOknUXk;wftR;5#t7 zT0&{)eG@3k9k6?*k?-F}b`OFc*Q|60{y=L4hh4G#!$i)XQ#(#qNWhfMzd|%7Fo#{s z8QtTcSIMPKj$ly!43_~JpGkYl=@CcP8jEeYse)ti2u7)ia)F#?#xDFiT8G%TiJ$t9 zpBzO#t9z%1EKyFM3Hy}#F^;tz5rp945I>%IPwOw=xOLMT>wAOwzZpN z<%d(ay=b&$8Lp7=W4K=COdeWg5mMadW_XG|T zwJZ@5eKmVdg-&@6L^kRB>DH^#S&|M!a*Ik!N=bpp}jq*x` zr;RES3UuOzS4{VyQ@RokDF_y=QY?pgJ+)FSr4$5AEf*_Fc2h+6I7u>9bfPDAT|BZ< za1ZNp{)k_Bit#x-t-J`#2(bFXFcPihN)_XZEa1Z_6_Bs|#bYkGN8>ckLFb8&l54-+Z$WP8wQijhKaGUUwN*v~X3-^?PJ4!!Y%e zAWpCT_$io&ql}yOsoFh=kWx-9r`++9@lif_?z7S|8j*sZr+3(m3{q5V*m3O8#g?pQ zBHh&|omYWf-crDKM2ibuv@n1y8ffUZy#H^=5x#0OE>R z%Np*e?iLrkCv)}PC~H8WMO9-YdiYr{0&+$ZgW4FyPfViXFx^Pkb;Fi39VG6hQih#v z@zSF}ud@F9EqO7Q)F|W3!|tOV1-~9 z_vBb!H)NwyspK;({cJ`3;B3odQ_4%064eZXLYiF>N#fIxV9F9}Cfj`SI`uKa7Npx} zHj}5sK6dhGiYPJl*c05AUwFMJkPLF*lafu8ze~)7l zLShmV3TsSNxtW^As*@)3r8Oo2+`7If$6Q50a^?_EIv>Fjk#5?9zD2P80lnE{kGB<0 zm~jY^RBF$OVuW_=I&I+vFe11ETUnt$1KyX-{| z3gT@YX2q_V7pCobGR&KP?={G7-V)TrGJF@`p`^PFFVG`3hHWQ)YTU5DJx%_`EoiPu=%3B6+!1v={! zyu2wBgtCBe=Kz>c`i~07J#aA;j2mGKabjIetk$f%Fn zY~}a)2~*-Kgv=5Jv{Tn4&rpK3kszyGp|Zlb1w*ChuF) zrox)$xU(KI!U5O|u{DY52cfP|A@{6UyKCrTi;p$4t;a<0$b78)6gR^su{AkXwJ0^= znHpnnl&|rGezx$NNj$S3r^U@Qi>qxDY?9BAS=qVXwS{p}l6*oP^q?%_Q!$e$x7OWg z3SMu|iBxcBTX|Bk$5><7nvmZk=Ge@AFUbCDr$4DtLT!S3M1063mg`GmYtopB{eU&!f2vaxCb@qY4tKl zNynKFyfukLE!O<{sK-4rUp+|div#mLNHwKXjli}cZZMu|I3^?iu7^1iAz4XE-L#mt zGuM^MfgzVZBSePLvfd>t)c!yXJ(T{HKK#s%i(Gry9LAJ~o3!>sYwF3QxjR=e_nRX{ zw>uIDZZrXVIwQosiZ^zoMgx~N?>GTR6E|b?9u!vv4A>twZG)f-Bp9dTLjRY;G&)}| zDjPJY{>^n43@|u(gnGA>VFadJiwj!q}V?T;l$wy`GCEj z{|Jp3Vs0Cl@M7}Vc;4eD%3K=o)N1lGeRf8GHlYc;3fHCz*U2EsPp}6~9Ma&JNtD3c z{4;c*W?M08CtuNTf2@{nHf5ame*5)RH2HSMWj47B1R|A(M|ylNy!)Z!w)^ZfZ0TA1 z@fDu2^?Wt(g$7fP0ZMWozX!Rk-U7QOK0x~lk@Iok>($%qRa(F+kqJB!xg;@rFRJq( zu}d$p^SgHd&en@W4j6x)0yO>wFsPs|fWiPyF%XV#eE{meWdDJ|=q@4kLDl{f{xr;% zdvj4ydHwx*#Wa+~BwF67SLo>UX|)qP28`~C^L*CEa!v0&i2sU(+l-lWPB_`u(-`IX z8r0>6Q`nryXhQ+qK*XS**oA30bE1|OlXe`{BVQt*N-+Zm>9rz19EZooEou! zSQD2w-AB%o4_6VoPLFZ(Nxnl2M*1rVHe$-~;adF}A@>B2E(#@Om_xw=Gd3poEfp12 zx1-bKryMQ{K28P&w#ccq0t=>oim=38M z9upHo91~tj#-y-m(!O~exEav<@NYmtbmoc1ukN09cfJ1T?SwZ{%i1ztUhP6;;L7g2 z9rrZq0&ykj<}Ww-bMQBppG4>RD_>yhUS7aQh8&JHb3fn83{A3Ug&2e+#JHNk}dYzY3h2`*rM%On7p;F>%l&*?s9s}WOM ze-ZQMuL&-Ud(epfJ*d+!Qkc)j`E31Q@YHF4_43ChbPI5Q+uiG1;M3M2B+P&GLy`aC zQS*<>#UHxYx_h}lKAn{ZVCm`UN6X8Ad}n6|Pyv)$T0We;o6af{y};X>AD^tr z`W0315+0X6)OzNbydt(FH`Meri=^3M(2>YxDRkL$y=lXs{%}DVmG3b_V(z23>iEH! zua>G3(mY(#?gf=}cC(LWwbmB~s36)2@EJ6cJcEcb@+68+q(|c2qitARZ`z2Q=jZ>S z^dH{02-uXMYmG1#MKBhIyn13(Nw8c*o}@0m%+32$ql!Jw22GtSI5_#I;NR+T<9Z+$ z+i1i=OG}sFvKuP|*;1wSc5d3C8+mjo|Hl?cA;@;`Zvoa&rql^(oc=>f_lGtPcwh=J z0uMRUS9b66a8^GJPa>U& zM@2~UZ|*@0qO9j$g1bST=3WBvNB(9`c<0`tLlfcCd_+jlAFqmY^B8fCRZnWeaMJ|2f=wcc(1CbbM%ks3Tc$a%*T7C$ zy^^?zFsI)+-I9PtPkq@95uKVKevK9Kb1D0cq7DBb-|iW; zshbbFkq;sDmSqsp(7?9T=9|6h{pxP4>OgUm^#pSryO8~7VX5WmN5I1e?2pbxNP{I{ zub+s1tAq?E(xcJpqJn9ck%p||P=u;qY{Tc5{#7^cZ(1!r7asoMw&3P*D|-(>U%o@F=H&2 z-;i5B)mTeRfNV>+Q)}2Ot@orl&j*(x!_WBICaaqkp&yO}^vx${Rc}@L^}C&uJM4&v z+hSRUroY7A88&m+)6z03ZlNTi;-ZldidD1EG~?Z*j)nMfC~RL-vBouz5Rcx2%`3FL0jh>8Sa$8}x zC3*|x7oStH1UzzuSk~o9&m`VkHp{1JVJg+{4O7*t@blx%F0so{4Swp zWH^;+h|E%`KrLcGevQHk8SRZ_M3k5Au?d+Ro%cdv#Ca;}L9lsbOwA*;$u-VL?=Uzd zbu03Rt+DXd;znzq&s-g!Z6YpZ$>3e)1`2Q_`fwhYJNl-QSj|h$XGzi=4x5Fh>D!;j z(#$VPE@A2mB9I*BcR=9Q5=CGfpZ`=B>KDLjZi6o=8{%0W2)lx{G~c(#x%nl^0W|g20IReu%u>1mB$v2(yHQmYEWLOvz0auasM37zFhwD>B-Xgi z6X4;Qci1*)6xoT^>Xcvx77qMgH zjp{Os1{}s;$a0Yw#j`1DLoDEzcRw~K^@~#6re;1b1ojky=Tc|nPdf%yi<)UJJ9po_ zPG!F^)o*I+ReWVko4lU7ZcHg1QLyt9-|JSD=n|~Iy(;u>>zFM5rg9%K>$_Lh@P~3O zb65CqU#5{VeWonkW)7QZuNcOLWFWDeGyTyl{MN&Z1$aXa$Ib-6QfdIRn}1AlQcAsp zmplH82p=tEW&b_>NhupD#7@;qiXThv3XbMpH~wlGF;j@)V&NI9))Tt?41M@8yfI2K zJuVsDR!gQI<(ijTGU=;iaR)pRO`GCdgal1?=Il!kFI)4_Go4wABO}U;VVj0H?}rsV;*Yp7kS!x zMPR$!BU^OB2unV%2${&Yg&DB|QK_}G#|j0~9-Jgek(0noH9QN_mc;ZOkx6}qsg10J zhpBB-w~4@tWnk?o7l+UH!O70S+0MR>f@J3ZLcPAJE_-r4d-e|F0*IsVLW7>&pglpl5Hef4(w)EJowxp=d`?(d z={DaL?T9e_aU!<)4$hgr#p6XvXLw4U{Z~V3Oh3``f}L*i4nlbQcmmBB5{7Fi z>(jADcR7XRUFvhxk+UR=Par%W*=igvKfiFm zS3BQ(CJ|UbwC9R1Z(g0ukW+s2K}v*#4&x;bDnpT-uCf9SM{n9>*=J|G+HkO*o86nh zwH$1kNIJe{?R^!;QHAV@D;!F7bNT~baV=v z8p#;Jv)tVbGOjfHCZ{>HpEdesaoJzO&u1SW@s%bVNE8wB!14q=$${WN8+9y$s6}yg z{`mSt2lai7J7dtYrINOkW_FIQIgsB<5u2JL+hkJ| zJUcWVa`wVH7xPe!jkmr;N2^my98v`+UWAcTmX!XsDK>h=@o_l$O)+H&%%VuZoU@f~ z*+8aTq|{akt|2GAeloUgnTC-1qvXy$>z{`f zpQ;U)lTqT=DD(`qKzP~ZY+C|{c@VrTs8172P-AMTtzB%GKc^H1zHH#)`P$bPxvfu~ zwl=Fx#025q)t0O)7-IjSk&_<0ltF}3D=aAGtj~bWttSB1kg%@#LQ&I5odQ1`)Agyi zh22qpyMWQWGTb`mNieXw6ltO1;j@daX%;K#CSxGbiWAls8Zkp?j+^Vq-QsLRpCmrf zzWxD+wn9%svp5kEPHjp#fiAezk@s=fs}?Rg`n5vy;t(8++d9kmzCuooBIMZMY}>WV zQJH+p#hOy9k~1HQn1M84jgTr516b{8ozRqVV0BB}ANKPsL^M=u(s7`_>-== zasu%0$wlQ}FgFgkFwzZf4&1n;;Lvbl%OCoZh4HPn@XwZ1v*Z;61x8!e10sXa;mM+y zvSyc){HlSzIYy&SvKvI+`awuXZ(B_eFB&DpQFmt(N!lyCT$$Nyt zKSL7p>uITZ4obV#noGQ1ktlf=rNdyYiC7ynDn#{fGiIvHbaw zX6`9rGIw?F4po%9K>|X#ZC<+9nyPLXm8Nk^&rXV4o?c9Qxc!L!QNq&F(<0DfObDS# zO!FW5hF;aFx_zCsma0-0+}ap7t;o0;dwHFScp@Qg$|B3yQrJjc+kQ&cqxu{YGR zGj-FL@?hrkCC+ijKz<<$UUOn~ol3ZR5SHd>m!~@IIg2VT>ly|zgT2|ZsjEBTNDlu{ z(%UWMay$u{fVY`oxt-`BX*r49Aqi8dS>>KDa2dj|R@PU!&xiciLL=;=OA23HVTopA zCHIRC_IINzQx|cXZ4-Y$RncuJGO4N;$yFX2;YD?GplPkP` zz-#GCeAPVUkl z5}~s&42UF@EW`?NQ!2`>jSz5#46+M~v3k0h>tgS_TJ)#5T7-&b1%@SVT@gAjN?L;{ zl{NFe^h9?!*qYjJvq;e@TIJ~^7`^RPF0WN#*yY-Tc9)X0snK;LyyFy5dM(~ys^`qqM{1FA)17@o| zS@%c0+5*@MMEKaV2n+pR)U|OUkTv1x)%nO%9Rz43mP;gDc~MIyl>_$~%1Wdq_FmfJ zY2(S9#LMesuS*ero#}NO&>~65X{z}a9%`5&^FbC`^cg#R>HMv9W4$ zY6WPK3fRO$L&ek-noqISu_HqZxTxtXa%G~L3}R-C>IjPy7<^clKJD0KC#FDTL??Sp zM;pJzG-_dI)EBJBBs)H@RcK^tV-A6J=E^hW{LvmKlK~rW{#-i&YO8#)->fi7OA@;7FFWVF;Eyo{9^}DVf#z|%sM1`? zsL#6&;)8*2zZ^V{SVUPZtz(BPn68>WO?1Mz9$S2JE5(#&I*F3DGmPXIJmSSMar6pt zN0@v9>*OWr$~P!ak*0L0x5DY(|ME*wP=0hEU~4mCWD~i^-IFW z?=62AI3_fe$9>v-Si#*9`|-%ja_(~0sk^y{k-ncnJXM+LOH4RziRW5<>OVtDgdGGi zO>2~DOwC@6;%7hx=&l_`FB~16fZxeE??Duhuso_KDx?{rEvwNtyz7a;&yQs-TR#X{P(SQ)_rfSd#bv=`f^oQ>aOYTIiEjY0q|87RTKdT1Oh075jbB2 zXO01Q|!gMS%bajrqM066(yI&3(2@#p-uvUuMVuFhT*fmBB*Le2;Fa2QZ-kOhI4` zWdLRj{%5b-oG#Tc=vnow%_5mlq%WG_vK5p8l$wW6OMwLZLXa&h8zF~%J^&idqiw4jnp58b6 zgCN8SxI~dX_P2oLb7#Nh4-V5G$Uk%9&ofK>|78AyMm3&g6W|lp(DPmRhvXk5l(N4V zm61q*_aFTKBV;fUe~|$E-xMXfjqRo?R z1`a^r;BWzuBLq2|{?tb$(qS;q3;;Rc)Yc@)NF}tkRe^U?1XvrI0qi^g2`Q8<7^N2? z;|8y;19gzI7z{E@ltZ&=e$p2Ndi{&mZPJ=TOI!Q4fmW43s}@HkiSqVcgK(z4!7Y3b z)o9%0t*dP1{Q~Coi8bcRY*zt7dTB_1TAAGn(t#WE&TFg6^pR=p3wMwjx0(kAF+R!z z#yqorMdsWRuOHj*cBxu$xi(t%c06-3%GB7H)3R=FS$mxrAsNxdrE!$}K2JuB^Ame* zrNDf_C(N$LX7^;q;*+2Fd?mFHxbO-fa5VHIAN-n;oFZh``TN(I-8byQ-5xn*>zU>M zP(A(}niU!QP>oN*$@B?p3$Hm&i-~iakz|gqjBRo7tjUAJ&kr6T@C@(j>B_K#Xx{5+ z|K%F!n^I%m`n5h#Q(bLz;^%ljd6rJ-EfrR;^A=dHE%ZvbUus);n)oP;zgy)qv{(5&{r7vRh@)6ob529s`%5d!nIGT@=(zQ09H#CT0zQ z=3*-lG~cJUzzJTPy89s#3K)%e-Rnc?1Q!)3p^OFh>p5_BMy_U<@F1CtCp_K1dj@Lc)5IB!b=XozR~t<<#+yN z(U=z_`~oL-U;60^T*9K%k6>*s;Uxzp?nYP5FU}?ZSKTi&NR6eft-h@tg+cd)CVHSx zjDoFmfX>MMqi&QU;|7*S9-$Ep>#c!iTn~}LW*p_KLPZ>d#qBdZJbz!p#@YDz`GsTU zyxV~b<8@Nflq{A(H0r1RX5jTfce2RgwO|yChfj5#U z&ffnjz&~%QEMLx~|4QwDWdHA50D0Fhhz~$eQBhIQP@xc1vwU_ zARvv-Z^_8Zr!7dz9Ka;xnvf4}31Hwx0fL5d4s6IIb=;gTiOrfGBKg#8_ryv31&7op zb#6M%QkK}b*%i4`%fa1qV1R;=f50|oh$1mec{GNfcknqQ&hHtMy&?sJX)V&%|F0Ucw_2u}Tb7^7|_Ew*U4Xw`a zt#ZXgiE!lS;0+9d&D0Ja5B=2|@aEG?zTeAxCvytlEJEaIl?7QWdFTw`p5i|%FHp;Oes@+USc&_w{7fM zEoMl=sF_%%JXP#CDY#AP=^`eaL!}v8rZ`pPI3c)|2{M?(1i>hrL!=prcNrtL62Lf) zj76n}8f%BvY2Ux=3U6&Mz3!y?58=@{;Qu&_!GE=WK zeS1^PCx(ceg;(7&y+<_21G-5OBaqI@`_d}=xoDUT&H%-zK>96^On)vKWkY;HmLaA6 zqEQ~io9v@{~Q7%1e(8A-wg4~{W6tv(AvVjg@#t^16^Qu}V^w3WYdmiRUlxeX~ zse3lymc?jvLGtEL?fq>&WhCAtTbt3X*54nUldQaxsZttcs3sAvzaA&{p3$)cq4%>TCX5U(HqMN9KjyaoYA*-dd!bHDE+>w%wZYonS<#!QUhzj<3u@aR&w)UG z)%hvGT45h6E60BsE~f48;GddSR!&(Wo%V^EbG3aYh9(q0e(yHYEYd70($xQrkcHHW zx8hXwaqmBU zPV(j^d;etiO}_rAEBQrEpFCfXsk7or^`sd zyo^NMO&^K<9q?o*hW`iVKXlym3%8RUKqi^0N~vzLJ7?0W{txW^0nsrVA1r~|f+Zm= zCJGDXZ*k>;l{?Rv37dm9YKvrQl!U9a3yW!Lx1zFV!~Dwyt=Vl-`R>K?L1#QiT61`# zj5lnL@O$X46-QS);<kHQM<-9*^>g4( zGvzi@Sv<8=n+cj{qwEL+^O@i|5U#g-wT;3sYf5#XAU3GJJfU8!;aLZT5z}Iattd;e zzQyVX9exeFn|hr`4Aqr>5?K!CfUXuNdxfJD%PleskF6a`4aQTt%C0?)73!rXVw!GB zdmiVKo7c*pN=wa06;B>)XMO5-p3yUOXc*ziTGiv$e_|@%FjD62)HsHoGdWBM@n7s3%dd z@T-HCNKXSQqe&F3{F)Y`7ezj54KiQ|Ogzny{K!T70zvn5IQJaLlxiDeU0Ulr2U4Zl zeqc(T0~fN!OIg<#>++?n>q5pYRlgp-dsx=B8UOLK%D3;eT^sQq&ni9-4B1o#DRx%o zgxR~$*j{0-u+=oF7|=&sT7Gdp*x`rGt)PA?biHdRdx zDQ;5{V^W>!Egz~8WuFCNIXUC1in_@WWvuF`zJ4=IR#<}a5tpMbF6tFll;O)w?G6$) zGH*vN!qCCGDK1qlwNypzDneB<2|u3wl0Xwi2g-rwz{io-7Eez6ZN4TgpE4iT2b<5~ z={uP(<#4&!8)wi(ad7yUe;t^;9%pp@u~<3TL1bZ~t*K-BtoAggb-{zH%3lf*ksm#p zzEwSgQpvEWI?QtTbE~UyT`hcO9;C0h{mPLgdqb-~?fVYv5SoHq-Z{|r3cTOsA^?9? zMni$3qoDq}frY@`P*C~!djJAnZOcG>LLz#ddWL+fx`T`ROz_ugDacs@rj2*FhH8tH zhH5*QkU5yt#O0-Q#)UTKl6?=nW*4s0Y^>1&i#Kk+#<+{Rh9dlRN#28;?FM6*)$1FN zq&}{qFtFE}N+lsvd1-&$H^HH~$8;A-otQfz(8?`EN&2-!my1g|+YNd>rS+Qvob!Hc z^VF+u7U&=*z%7%Em79AZk+f`JeGimTTi3F8m6%u1I_N;oCZORHlWTCooImQtS$yq1FbZ=zFbZlXS*bLf-b(M@}(a2Riq<0@k>$N0qR)zAe95$1!m0fH$T;w{)}F zj#5lXW-lky+QE?J|1ZE|yy}F+U$$P5<1F+~oRdhlmOAAfVyhkRha_9@&Ycax_-Dip zgN%)h-v$!D-4LSWzhaQ}X!?HJ>dxJbKt)810c*MH^0IWT`oN4^jC4v@OH)NCZ!Ow? z-gN&tSBUSGKhod+QG?lh(rk^x|C3nv#Ypg9MT3A!vEx@Cj~`@ZHTh+(u|SS0m%U%i zTxYyP@s(3@#NX{G@9<lq9-|3_3szjzv{+|Y)(st_6KmKndi^{&kYAucna9^wZh)av3 z|FBwv^lFOr7Aa5QAAo(3%O=721-w2^!?=v)z_@0pos_fTE?U%XR*#K1$auk0ZIfik z2dX6*3N$!vd$yee5UE~&T&dnibYa=hL8;JXWtIsN#btG^V&P}FKk6I$z6pLwUy!@u zq8yl6W!^}o-=40BC*%_5K%}BgN-1NR>>S^!-QGw@(v>P&L}2>(GhO@P1Y}>~72uh@ zD3#LZ+l3`JAxs4)Ad!bvD%tlLlXFlslhT{S@+QlojX@(7P_^Y%`WNllPrr1!B_xoUF{Zv*>hXV=;q$txU-SA-bxz~V?Y#To?5Q zW9p>6cJ-6^gFAoe;onr5$kQ11%-Yv0UUtu6`H}WLRecWWv`nRQLrmiv`{dnLP0-O_ z8p+$&{t$AS{XG2N(ffy!C$E+{kp3S1NPF6@b9X6#wsigBF{ju-sK0EjgTYTMoGaTD zS_r&*RmB@NeTJ<47}zohx~9n}vB{{w6SaFQ;Xe(6yMoS`pB=~|B4^5%Sn<@|DtW$4 z?MjgH&S0qun1nxmpn3~kz|o@bn*Q9CV&RuZcPFVTD`Zq@_p(Fd%3SQ{WyAMyXCObM z8*9+~@t3qcTpXKddnryt66S?4iauR%j@iH53r2y z6A!c)2+tes9_^5aV`!@4m15XJ$v)vMN$AA#KAr*e94pu}4;U?-McLVJXmWJ)k8>}6 zv@p^H_6Q88_-TpyJslUQ>Y7S*6oup&2ie&j3cpc&l6j2pkg!p!qChF<_{~L|6f)Xv zubiq~U*nigliQ#<_n`QClIv+}%*SI|JAwJZa4M|cvz_Xz`>=TFHQ`YCIpdWcf_?M2 zlqZ?Rduzo%-%S_kKcmrPigTpVrjxv-tkhw4NA;aM=1=rjw=9jQ5G`+7t3Ub1^K}v( zzL)AhR;o5|9>#gSlW?!VlV+b2?|L5>QM$%SO-GTHv1w>%IS9hbjUR-(4ROwveLl^_ zE!!&^8sdSCGkO$T1>1bfiTV0zRF9X-THVc!ixfX2Ci^n}u2awbw5UH)FNh-(lDez23uF2kIxc$}ndKKn^o3Z9p6sV(p@>F?uchC6F zRMhjoS(N$dmA$U>s%G`^t|kK$G6$VlwvGIUWF`Jjp71AQo(}vnl!UPEx1kP2mRf;mU^h8wn_s5=0MKu&kRpUCm=ln;t_S zg1>%jcv90~_IR3K(LWit^yXoJd$~X0W!Qd3({)f~el?m{vx<2w_1H(y~#8~6|Ua`@q_2wi2Uq`(b3vq}O z9O4zxiDHAUtA4vt$eomPqdat*&LttdlTG2PFp2X{4c(o^ijT4Jp}AWgCSYUh-d?bo znKipfqt}0X=2_?G555zHcug&xybCAW6aKR;LA20<`AFyd*}&CJu!|!%n-k+IzXov= z)Q|7ar$Yd~CopX=+RflCWe2rx0SY>H z>zums>aU&EIC7h?^WYPfp|N;W{u$)YSn`WVWe3iIVH$Q)3crEp2}aieSS43`sFQMJ z7I&nb-fW=9Iwco=eZlj)pBYUiqS0uANUt2r%=CNB;BLJ}AF!4h&6tceoECP+kcZuS zUeZx7Ty^3iOina|ZM{GJ$^3=k&W|-J9S?PGM^e8T6=mn@2e|XB6&!H|w5jn6419I* znZ-qqAH`3+kmPv%GyfIr`=hTv5af zwu7a=wz>(Qnk@F{s!r#a4to;d!;#3T)WIJUfGy9JHUd6Uq$DqY8OL4MH{AU8NCo9O z{gawKylTcfcA#cvov27a z^l;@`r@)1+&5E!jkAW4Rud!EdXgs*J`)1+!ixY-n4uo5Tu7%v;YZ-Xwt+?n-`h#lMrM`V&k;>WSX{7K7 zm|Y7&GJa51JJ&Z1jL=w=zqS?!bFK0Zeo6)(#JY@Y-q`a=70FbaW%d1#Y=-p+$lDR? zDExIOUIg2i%MirR&o98Do|xWj+dj!}JCwxoD0)@Z0!ufoH#ry*JQAN!%S!d>F5TRM zBtydsGP>?#V{={;J8xngb2L&DyHxP7SkMO`1_n0GrldL-MH%WgM6ne{ae{%0NM1O% zwh%w0*YxTWA2PS+C&u9Yts~Xq{QRSVcVESlK8)0!Xu5~Y%lY8;9SbL|ztu`A{^FZ+ zwP=0&>u0g+?Jx803Y0C5ZhL(ezLNJ|8t)kd2VV|{H<%~su0YY^=oY9%)80=xQ)0LA zSy*rVjaHJ2M&GB|XKSG2>rZ!`rEF||P~BME;gt&qsPyI+-VS{GdhLE)%a6DqGp)`{ za)#cGZ@kF)=KarU2hKvY1=qjLMEtz_zfa5y6A5|=dYBfujKbgTrB)8JBd-db13Y;j zDm+iW5DDC+*BDf7nS@&u4#){qNd?|zQ4Y?8J~<2LQAW8VYNj#XJ9(pd((!q8WWPFJ z9+zlXMvk&aAh*lAh>~-F#Zib>Z-#)nt+1395=Oa1sb0?{#&484erMFpQ*>PbWlny< zPn5>Gmc+>In1-L?fZgKSIWQIaq;hIJ(tXui*D+F|_Bu3+*8kRN!^q5?Fe(XAL0Y-u zCWW!!x%4M$z4yZ2q?OStU{^0@m~p5@Dh`<5kifViC+<>kGwIVgFrKM5#BGu26>oA5 zc%OxQoH_@vekNIs{OkqkuD4geMgM%~7yI?v{F2SR*wkyrum8yGVpD}d>LROM5H{{w zxMsX$eGWKuEg+57{xtuEeZAm;QqHeYKMT7YkT$=}kv?ay&0m(b*5zIMmhL0;%h8MC z!=yD5jeR>7& z9f-{4Vr*^g)e|!q85u7|zWR4C%OjFx@ee?M6qtwZOL580_$yPC-glokshxYhQ`dT& zs~9->MK%^~5=HaHi9lq>8+nq9J8RCTFZ3Q(OuyY>(zp@&mfcaHHRtAjnbE_FnYTNZ z4NsjkSaIc8Z#=AM?HC)|zjN1(KqM{UeUit+EUGsPZ#QSZ;Xez(F?-?{e4U_QOcSM{1sHESwc>dTtN1qTeXAzk*-goqxNz_DwjgwXS0< zbl>@^ht^Jk~AoChoYayLf_8)jl$5{XVovR)fwr_qZTrfc^c}aiKx{epET@%c; zRdnm6jMS2^PR?-i{rvIA;sadD^1j2?LMU#3VlZ0yTBu>DZta#5Mz8M{a)zrz_HKor zyvjp;bVRW#b5$o!Zp%=4VvFTwU1GgjdM34Mhe&ME*<4*rv{Z=C)3m!VRNq zESZTn))vcRolCY(Y#2{cKiP6@`{a5=A{K5tWncZwWqn{Kw>FiSN0pvi(R+rm;vc*_ zc|7&QK2W(cZ@W)m(CLoZ;V}W03n}gD&1PTnSM2QFnWD$=+XT-ueo|efmyWe7EsSA$ z>P;~`HFQjddt>8zoE>9w8*}#rgNa*h5A%4c4dG0QOqvm=;_`@0XO@AZ4^B-X^vQEN zv?s;4zfMe+JzwHauuB@9D%LDu$XmCrqDV;Y>8~(Ii+DxGiv1Z?W54bmwPJ(8bYp8? z_CZsBQhU4-n;3e;Z9XF3Q<^xt133?yvKmt!?R(sjRWpOJG z;uUOvi!ZY=$KtBhD}VpI10_6K8isSgbfjP`cm%b!!ZUnh_uVT=^I(pIJ5|OZ4Tr=M zp6?aM$kPIjm}(`hy|_yYYut@x4T{jy7`CibHe8Id2VdUnj=!4dCa4`f5ogb{&pMOJ zyz`1*(W6qur*bO@HPwD0v$^l^cD!_Db-76P%e=HomYe^jLSk9coF98Y`Pn|-VPcb1ha@pE~d_y$L}AkDY_xjDVHknK*JDc`iMMS&?KBMZ$_!}Pl=wrZbSHUXGio}uqSr%StmcN` zC#%uPt-Dp+ySw^DWX%Yn_tckTP?Q?GUbFv1ZEjg!IGzp*1`lL`2VpV=!5ELFDJr7q zRmccs6J2l5#V^QCQ!R|#(O#5lTaxqnkukzUdv#N+s}MPU)bizq#McG;)%Pci z%f8=p3f`Z^msh6V*fq#j3-6<>y^nWzb6ULoTjIxCZOBob-(UK7$#1DbD;jw^MG3b|I@TwK`pyw9@o||BG zc^T6p2QOMDfGq4<@7F$}Eep4wb8ooi z-~BY2JqPZcYSHa<9WFlpj`whfhe7nQj{j{15yQu2Thpp{+$CZ=6PwNfG*X3ZCJ%{` zNL7jCl+6=H_Vs7cYa7n=M@(N@&(IS$Wz!VZ!I(Q7R8XFI&SNT|d!qyd+lk{#;EGeo=c- z4L6=d_cQd&>ZHl^tjZ?wRiSp$_p5;cAzFRRW}Br%wt=pbH5#ARt~nnoSiCy;q`^Tg zdWDRmXq?D-;kprV@I)11?xb0+1$B%F*XB^QM+u)qcuSosZv>+2^{Uwu(PU0NGmac} zh{o1J)Ld?eo~t*Lo9&EwWYA>g2YeRu0MYLw|5B|nctp;pf88d#ZBQ-3$BhRWe;f18G?}=x30wn5pmiH6`$l;kd5uE^}Z}3(hqeS-VB|7g)sM!XQE0#zw?D~ zW%*Pd*Ll}lTtA9(i`ZcmJIA!{F!=gCyO2tIjdgby%o{o6OYgzD+&*?ZPI<=xrsObVWK9e88XC1yWsQiY-cR^%7#?usS4qgR zb^!wbKpKglsK8PFaPH3r5UMZ*r~n8Veq8`SK$sE$XljyUeC_&W*CfR)x->7kbe#iB zOkn;^g#~;iWxW&pFe!*ShyT)zBKVOK^7A5u3IHMr!Q24=6d?^oU@I#QU7jU*HuxD6 z0A0akLV>^uAx!z0a6pAA0m9rG{;L`4ZrC*s*)|O^0V?1xO<;|fh#ZSmFyZ(EzLymV z=;2Nsa!Gv+>hCr!Ix-_ggW?=RWqmw+e_d8)y>+RA)s62LDu!-rAm^;DnfPgff7l4N957 z5sSb?iV{>tFUv|ieTV`>_YVYul;w#b;FxD2yzw~o1~X!Y)%~&*B}dj*mG}oGVYgM# z#T8st85xI|n$=uVZ%F42U6i6MZiqs;fUzE8Dxa$SI9bIuu;N!Kh-<&9LDG_dyNXVz zJP@_)93X-Lu=QP>I8%@_h#++ma3p|n7s<)n#mY1QeqX9GBZ{nsFv78P%JxzLoTrum zH6b4p76h)Xj7rD`;D8N>3C>L@{$)MEnW(~asIrc5WJ*$D%2X)^kxSbknO_J(0~E0! zK#>L$!tnyREFJTgLVz?cLIV!N1Vy~~KruOtAxQZT+e=NbB~=82kp2OLG85Rg3BcbJ zE=!yQl^y>R{;zXUfkFnM2$hgO$p5GbProQG;sX9_HKt&b|7iO^od5n7xO}w{ydOfv zKt;WHFAOSS$qMO{xuBw}cWd_3J zl1re5xWro7)k4|t;U04MHn-Y4(kedvyg?efe)rMxFgMluy+N4FiE!IaYGQ57cFqyI zW5Mq`B5=#}8+r9WJmGf+0ZdbNE9dxj;r)$b-k(Gk&&JlpSWE7vnqwy#A`bZ{+EYkK zNbb;M#`b|zYz0zJ_cNDav954rB{e0^l8~%SDJdW z+`d(hnG;1N@q=J5s&wLwca|%6kQE+bkg|f8bARl$9`g!Y4fDRqk7stplfDK!bEngf z8E*s;uCY1O@-}|aI@ZrHmHSp(cn+9ccb%I*4VHqxJi?KJzZ$$gM2i|$r!cK9Pk=nD zmbQctcqbkTxT(y=r~^+-1`2ZFLG&=zz+LdXVGMsieGMNPy-o|pt+6!`hY*4_5#OyK zu`=IIrHQOQ*9jP7pX>1i^q%IiZ+y|Uh}A-TrHIwTHJ&@I%bfSG6|FXkwSQwCT^>1l z`J+qe`7PFG@BNlRZqlgJPxF278LSl8``iS`yJ09ADk}J(3EB6^-iJ%;9N^Q-Xj}5~ zC0Z4H3e4}Ba7(CP{qvnn{GX$GAhToZ~Xw6T)wbp+h zp^K7$*$nf{f63j>>m8+!XUl`h+7@6Yzik?Qn)++B{55X=#Ml;VLVp`is=6s@-OYOv zx9?01WF{>&{P2HLd_d7XcgvjkU;6;xuf^&Ko6TLs$tPb{8Xg6@Yh09XUOXTX z{iMfS>6dlJE0|lF^*!$`2a)~{*3(UM9Vr?6W88*%3Bs8w3p~pZihT8B|M3v|K^>tZ zDM~3y!O#M-cS`S!XG6&DPrt+u!Ed4$=_NuAXQCLe>o+RA$)B*R^^QFPe;LNoO}^t% zp{g6-w&Mu4hV?Xfetb^9$QaW2VJ*}Dr?%Jp|2yet3d*3}5TF-NGC`?1S$;DqXJC*5+> zmv0@ulF6(M8{7RIzV2r|{+ACQQIO9bFUG{h3(w%+anSRD&mIr(-2xMP;L`QH1rwjN zEms46`>;+5AAF1`O>D%+%P{Cc`IY`Hq+h~mzXpf zMqPmA51C|^giKi;9WMqy(bb}XSXyD7hFD4v#3yfL*B2?p(gnU7h^4%S>IWxdQZL*f zVrzvVV}=H1K0QOhynKn_wKoK(*ugc%xAU6H>*NM+R68i%8z|@XW59I(tduF@zA=)v z6$OGX;;m(Zo7tapJv1H1MBj~xmI=PUpnP75zL$8PJ(cO9=`)5zPqc?+3-BZLh}#qo zdew_}U2`jTd!hkAwfk&x?8ut}AKpEHiE&sX^7*BRN4&`AI3)63)B9c+wZg35yZGzx z-`@P#ym+_%u(GlUPvisroLp_V1zrt}zF5n>gAc2s8TSy`eLT)F9}k_-w1es!I6jY| zz){J$Cnae|lM+H0(ybWO^^++^lZYGZf`8KICo%z)NocXQ&Rm9pHV6Tkg-3N7tX5Le zEJ<~F)kF&OTCds4=%JJ6p%UNylD!2qHJz*;3g1tP#EJskwM?fYq&soCow4q6H3 zgiLx7X)HL3V;1iTE`>~Z5y{Leq%3gN^g6U*7K&pQ?lKIEW9IL&L^qjWI5gn(as}^^ z$}E6T5CaKGLG^^cqE|HhGDg@k3^GtCAoS?j6OsoN68s7W#bJs{R#NitWG^VMF@_Zm zL=ZsbrX8hYKUm|)!o`glUc()%!Gq$7kfMGdi6B%gAm`$Bu=5**xZ9!N0QvsX4J^)( z!*GA!v7Akpy8?H8veZVwfjRkEI4z^8eQas-E^=Uk%(qD9wX}@7_OX&paI{+aWJSNi z35j+C^U*gKL)i!v{v-|>*{%v%QbCp6Q;}b)ErOOv7e7 zp@JM%xbi}-?Kej(%vPv;BR?spb573A%8ShIC{|84(oY!(q?0W5$eTn?!^#O-Z%?@E z>v&Igk@QRq@I<%1@RiLx(|0{lccC{_&~TIf-@=fEprsjC=H z-|~_D+xbh{1lMLC9goO3{{7QViKoRK)A31c!G=v{JYVK zWD`bjp_`>!krSZd>6yA_GIE!5lY4wNswPq=RIj$lUnQVpc&~R3P&2$ICBaGDl})xj zX~_<8rH9i4P7Y#O@`qwLgQT9&bHK3T6A%Z@m(PN=Xuc6R2pMF2Q%I8rQ{5t!)0x#X zABnO`peBuWm-zVnv2r<`Cr-t^8e7WS5oKqX1K%sxYzZrp12D|G(W?^afMCzlf%((1 zxlP>V&s$>KxstEmXLaSeJo0&Ry!q{YmPPKJztFpnd^(Od-@nhI%N2gL>HNrhu`7MC zE2H6bU_U}Glv&eXMI+ljivOCVI z9rauO=i#zE>T(W@x^#`cIrAe>cUw6`J?=l;Fhk+B;EKj_`W_f*vxhetFf^{#U;Zdu z&jT%--4zIUlqWG!q!{1rJ@IZJo>s!Y|x50hr3D5!XObFTM*fiZu6i@{R+J~(v~OvmE0aR;Bim0 zVot0~|3i*mC5X=aiMGy&y*DcA02NN8EUuV+Sbgx`>_hhF+K?EwdCVZp-QJ&!FcZsa zHl>t|KudgXfKt*a+a`!5K%SkHjxr_ZKp-m1S^mMP7Bw#fn@@a>&6Z1>d&`lNx&x;_ zi3z2w(o@1oE-b~@-+GEpaOT`$KH2JIBWLGU35{W{JVO+JgWu?nqkH%`&D16}k z#Ez2=u3sL0+jUK+1}I1(3#!S`P$}Cz9cOwI1Y+$__1TYbCTx^Kv8cUyElb;M&$@oS zdlHC_W2|F{m&N+|d7o%f%G_~C_lcfrn4LN=?MuW*ou2BRDo7pXn%f;40HP1iI?3!p6C zYt3Fwc!s|bn~87Yx>^Cg6P?c+!3$7OK{7&k6v%-RHksf_GqJHvyq;k_T7I*UCw~B)FUCNGlh6~o z#?dU_@Ku5LCWSpZ>^(7;uB8J6NO$C`hJ|&9tGc--5I(oURqKDimuZi0_5cIY#HXa9 zL#mGzi>=!|x+{uK?q?oFFLr*B&GtK3I!RU_qn1MQC*6d`>30>u2LO_sWRS$qlah%-ZtQSO0MhmgaSE->u z8}VI{SAb~0q3njf$%lEVnkjC&#pl=%H@u-YP1UZ&Io;%vc_@$;ArCDe{SN6Zhj5PA zlgSGe#)E(Tz*|g|t`M$=Rf-Y;*Wk{_R#&0dMf4?*yoeBKQ&?#grj5|I+u!|^kLgYU z6~>R|Cb7oL&>5dv{P@xxviS3%*dWA%i2=Kgw*1i=rnP7{$yU(bB!RuM2m5_xrcPU! z)5H3(Ad;DG2s7-R7fQ|G@UzW(YM({wvJhi{h5GGU!eQVz=a&exCo%Y zlAe*y7w&tlJy-v3s$`KhvXW^UuAj!Mpa~7MsF~lvj@b|#fSM7`Tp2?c6U%HE0j3Q0MEjz|DEhKjgA@|jjT$N@}ZGc%8#Bq!!g{Z5#$)! zvf2T-3vfK`0>)c&Y-lvo#+DXdZP>+hi8+Eya!tH*Xj!s()P;#_`TA&j5>&0dWNd*7 z+uZ}&pQHgGA2p)oHIXX0RRltw00A!z_=43(jXqb0ya>0G@+y^^QvJWwV# z3xS~lq^JM}s!}NB18qW&ay(j15=Px_V0Xf2tZmIX9=|6U2;@W=FX2$hD(hS7WMx{< zZbXPwE@Ox?*b%W^D<4W8&m@v{RLp+9dLpfjA|FY}q@2jm7YS1jaSOant5+6zfHu@E ztNqcQBTZMUiJf+fj)L4%royL_A%!o&_W%p0be!3P9!-Iw#!Mdeme%sMzkm_5YUWpu zl*bz+1c`k0%|}N@mt_QH6&)HAVN>GF;5yRM!|a{(-&0i=M&SF(e`qlm&Nz=?K7;fqTC zon5-ofN?D8OcV#=AU5!Ssn|+#zZ;Gv9Y^XZU}dr^>?yn62m`o!$A#kAf>|Ikg7DD$ zc(&w{(v!Mt2V+=$TLBd@EWFZkSHy(5JjD`Z>XVOgQt5%J3``yw^xHzu8sNSqYyg8c zumfW#nrgINGels}7D9u|`L?X|arBZA7y48@d*4E1kkw89LqpG6ov zMVW`>@5nGbkl49N8JwqZoY`@!c%GopDBirqGa^S}0;4EQGtxj= z_U_v6`Qdb7lvp}Ne&4b1#bmW%s7wjg3w@%n7FByCTV6DG*nRb(Z~^Fg$n^-RjljR(h2FWM*xvp(_P6jtpiI_|*eCGk2Ka7=rtl z!Zs47fNF6lAs~P&juq=Qks=GPl7^vTwZJQ*82Y5w4XUc@z5|$u7-D(E6N<-#xO_I- zuN&OxvZtw&mCUcOaaKPn{d^zuIjZt=Ky`Q{;eJ?qDX~U|a_W(Sw8b9Oh?IZzi+y}0 zp{gnxy=AMG8n5<1#tmHtFUxM7{edD`;;hH!B;))L5;M$%&3n7rL{1VsX-%8xt^r(7 zlin6X9Aafk)08S)ZI|W2=S>w3z6QWaJc0ALEfn|0ZMpoV13K)IJ<-5yI5vdTwT2`Z zjSxMx#Ob*{)%`=>Jr2{Ga(r{vbN0b-xUZ8f&<7yU@lokfH(=TkmL!24*i)fhZ&*rJ z@e>wFlPb~b2qyDaDlp7lA=4k)wW0jpz0Az|+|snbiflNgLqPqCY!*2yiXE{*iW>}~ zR851++Z~BjqLL^ZL{CWaj#`-^ut;jq`L$H#80B{{CWaE?dRc;=hy+LZ$8rYFR;u!} zU(hXiV+|T~@^!2oQI%NavC;up5Cm35ziebFjVi|&3CCoHc%YNJnk4GuEA$-cmGr;~ z0>CvJ&c^sArb3pagh26%_VHLy7dvNfA7Q348(j6piHuT*hTA99s^Z$~kByAPtckme zUs(k;y0VMPHZx`aWRAxzA%L2`W6Q@OK*9P3=nM$gg+z#maS;ws4**th{wL+UGPk;y zZj?tI3Wt!{@Y%A(xO-K=OiJ}O8 MKlt_g^7-rk1pxdR`2YX_ literal 0 HcmV?d00001 diff --git a/img/p/6-20-home.jpg b/img/p/6-20-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f45e69d593344629c360d9242f9469dabe83596 GIT binary patch literal 3409 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 Aj{pDw literal 0 HcmV?d00001 diff --git a/img/p/6-20-medium.jpg b/img/p/6-20-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..99303fc10f8b7f6ce46ba5ee503f81f3a6753847 GIT binary patch literal 1823 zcmb7EX;>528lIWVkU)UUBw_OjkN~m>v_wF#hD+FDrC5lHR7lyBiu{9Ae$p zpJFIRav#Kd%+zn3oLf=;bUM@O z=604E~;iyr`UGM$dNoNyU_N z+m3PXBIT|{pS#|h7;VdcX_Niv#TnDOOGhPf=~39%nKl`xHkYn>qslE+1RBmi>a|R> zfAywWYTtC)j@zZEdR2B)wyQ;yQ|__8(7PtF!>q`aCGeDV47#;#_>i>=@4H>HUYsT(%+H5Ob8O4gW?Rf%U?K%7UxAf@g75d5JDIy}j>Td7kt?d3;I z{Pdvb&g(MgzL_OC`N}}`j)t9wyaMxQN4Bc4HP0KHH&qJ`i`O*%=uL@CV*e>(hFDamU{+kbdJ8up6M z=c)4)4MBZ+`?kNl4n)5FmzrR?UV0lUlzU>CUP-epO9 z2NGN#oXv?TSq?S+!rz1*xysS6tjd0<{o!b(Amxbrw-;1#fn{R=!<2xv^&Uct!REeg z*Jc@?k~;cDD`$0&=Jz9YzI47akhMH41Vfhzzyt^43UQy9loE-&ch+Tst-QHB zEPPRnOzq9tu{S5C#%jXkwkh_AJpA=Ri zR{?y6@2Y`M?%nX0NW-c-6Ap5GYyH2dSDV*-<(SubO9RCZCW)@~bcPG#Dlb?K1h6KZ z9f$=rO4;q4`&DHgzP)Jcq*n*+?8srav@_wMA+(?Zy9nqRJ!>jMwm#9K#jiW3`G%#1 z@RxKk+4J1I*J!fHC(&M*o);x5nc3~T+vWt+aCu_BRjJ3LU-qY8m|o{eNlaV)bu`!S zVsDTGdk=xDR=d~b$MlKa(b`tM%%>JV6xevKG_~{Dq1v2Seqw5cVw<2co*UeMet|_< z)P+9UBQxd{X`lsK&r-^c;tb2R`o1iwcUxGL$z%9>*}vqv(TF=e$jwG1F^q4@8vj*) z*!nSrnLYLBwQFRRB}-CLG^Y5+@gva4{IE@7``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxcIc10ypV6AQb5u!5kFh`1rpY!0B6jI2zb&CBkH#Yr!F zcO<{?UXIpt6?1-XOIr(_#-8q!xLf)86+Rw`X$eV>(uV(>#L94 zpX72$zwh*h(;H4cNRN2@HeVlTwX7fm6B8rCVxY^J7zBj`ghdn_!IlDjYR@=3cbU(! zYely&N^UZ%0=XEd4d`Oz@Bw<9Sx`VoSOMZzCXhCU-A5N5F)EzxH*v{bb!l6Bphisr z2B1e7*%5wa1RBEvvQa@%$rW}dg3-2<%`hvnXi`BZ1WtYeA{*aK5$E{~4s)O*8Q9@z1eBKq6@ab`Oq>XhDgoAvndX6l z%b3H{4bslO&R4SA+ziw!CCCU&KETuo2N1mwjiAU9C{~hNe$z-j?d!B!N8xs$9u)yd zpddvRI8cDr6)yY$43~|FP!ZT!^z`&}?MrIQ9N(-qICS1A%0IxU3 zi9GNAh%GiRzT)Dn886neEM%{03l$9!*%>GGe%85!h}Ou`sT%Kobi`^ePSkpCccHyB zS=8OrN9w{Vn|CP{ol}|K&0UxKOoRFA{O=4c4ofbD{VebMxAwAQj!4Bc1xDwRD?9JJ gWw<`^m*~FqKaGFnGxmmjS^Pxdg5%M@!0@~Y055)FkpKVy literal 0 HcmV?d00001 diff --git a/img/p/6-20-thickbox.jpg b/img/p/6-20-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0f73e88120c8c8ce54e1a4066a2e0115b85b71c GIT binary patch literal 27873 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 literal 0 HcmV?d00001 diff --git a/img/p/6-20.jpg b/img/p/6-20.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a53c6814c6213b39c83357acccecd4530d63f16 GIT binary patch literal 30294 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

    -geq6Z_txC|##WxXGnffGbsG4U+aj6Q; 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 literal 0 HcmV?d00001 diff --git a/img/p/7-24-home.jpg b/img/p/7-24-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61e14a4c6cc8e7ad5fc43d969b87535e8acc39ca GIT binary patch literal 3322 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 Fn*b6tX0!kR literal 0 HcmV?d00001 diff --git a/img/p/7-24-thickbox.jpg b/img/p/7-24-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..868fdd3c52de8f5c269f716080886ed1db9823fb GIT binary patch literal 28642 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 literal 0 HcmV?d00001 diff --git a/img/p/7-24.jpg b/img/p/7-24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a3f0cc3c8ec89a93327aaf50e5b937c5d9ccfe7 GIT binary patch literal 34942 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 H^UMDO3SJ;> literal 0 HcmV?d00001 diff --git a/img/p/7-26-home.jpg b/img/p/7-26-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1801968340ceabb41d003c1a6119046e70fb17f GIT binary patch literal 3079 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 G$bSI)s~8Lb literal 0 HcmV?d00001 diff --git a/img/p/7-26-large.jpg b/img/p/7-26-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e2357185e545876121a1e71ac5fb8567c1727f5 GIT binary patch literal 9486 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 AW&i*H literal 0 HcmV?d00001 diff --git a/img/p/7-26-medium.jpg b/img/p/7-26-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d3b8d85073e831c692e8d2e1ea7dafb85c179d3 GIT binary patch literal 1775 zcmb7EYc!Nw82&Ev%?xw#%@{*M!$f5yqNb}UMAV6?CXz}~IuQ{@IhJ&hP?@5R%KZqd zB)OF6f+iuCF(ublbSR|ga?<6Pvu9Rn_4B-Yul4=d`}y|sKF|BUigv|w2zPdHa)4kM zf?%*9MHgfTp$MYfAP8V%WDFw^Fm)1%NT#Y&sT6ezg+^!MG&+M$q2O$sp~=$H(xPf; z>#$imOqLc)`4bog7y_n-VQMTIg~s~dp{Rx!WXKhAMPVZdVZbN@R@{g50ZBkj$#*hf zGLZyWB5L4R8&<~TiRufZh@umsq5y}ZI7qXU1IZRh&xX23+DeUf9EqKt*{*-CHdwy$ z0DBYZa-d1dL1Jv*NC35>Dpdb;i{9W4hjC}bThBSa`>{^)M*lf3uk)jpYY%mF}N3#GARlaf1TZ=`|z?t$geuKHsOO=NeP)KI)&;u--dtw%D!Z>5WWB z&*|xoDQTP0!8Zk`hR=A?PO6LQqIT^Z`LwF3kQO{l8q)B%(R9F4q%R}#&fOp7=@M1xYfiSs{mtWZ&f@3Xo3^ zq?aSF%Ljzdc@oFAa`r??mzW(*%X{Fog#Xo*8%KBSUp~cfYl8!Z*3!+M+0x-J)K<_77dDgGCZ9N%*-?O0T0pLZw!v;6#g z>GhY!(;I2QPD7^hPfimj70>}k&#rI7FIJR}x}h7?meBe*UtWp7dRYu$PnRz16^yJ} zBZ*D!-`m6MVm8}P~%8eN?WzI7G8Zw80)_7*we5}ukn=LOQ)ZJgd&|Jf==9$tdV_ex0 z5Qa`_2RejdXvtYF+!hoq8?}&RR*g;8o51i(=lL70A?dP+=Aoti;>cTH$K?(^qO0AP zGEVfYes*RmN2{<~TJ*#?`H#0_)(fu0Z;npgdU(XjhI&urzOQcf@|aZ$C_m!C%{8@u zSqGs9C2oroK89g0U+x;1ZFJ>B0`EfHuD+`Ig^$?513JMI@ZlyrR4x0s@3ip3&|2&4 zIZ4`y#WVbOPVqHAI8xSeXty!@VqKH&f<3+J1zV==7cmX!RRbHn*adOqT>Bkiw z7O$a2yr8qhE=%4#q2A3U&uwnr2jtQPh5gI;fM5oMa}0l$HJ)ogM_%;3Yq}PBcZRpS z&`pI>jukLNeuN5TX{b_GS=adUHCGcz4m0epRqlW2*?gm0YcMn%AWc;EfN6-TSOL7s z9^lR>&WX;n2r81ue)@xd+sdqP9^sWpjXGl*85M$r@Z7YS-gS4(<{c{2x2d~h9F`W? zzM=Y-@UET4`{40b zyns~0h3VzvtO_J!E5XOWw!XEdkUwTFIE1aemlao`IecJ${y^^ewB6+ETIM6QLt8%Q z2sK5)esK7`(wESE5;w*wj#i%DHn`+z={a6+e|nwU2}e%Uh=eHg@@o}0H#zz2QJ>oU z(dI^R&3>rgAc8t+kG!rM)`L{FTkFWZFrT$Ow~`*8dQ4sY#<+3t8~!A;wZyi;)?crM^r3@r5MCBE4n}jwe-T2A AC;$Ke literal 0 HcmV?d00001 diff --git a/img/p/7-26-small.jpg b/img/p/7-26-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..657960993070093543aa4fb4fef066de5a5304d1 GIT binary patch literal 1147 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox=uQ@9phFRWk%^synU#$NC@ang0thJ}i;;=> z|1Aa{pcWXbLo#185y1E7PG(o&xTL+#j{Byk2tloXCR3 z)AI#-r2}RyvTF_S@jNntwXj3-ezu;usoCTGlP4dGuJLnv{ZZcEy2Rn3oT9E|q;ADl zR_}Fl_XBN}5@Y~|J;F|~9~1=y6~MMJGcwvUntYbr>b(6pC^!Te7@1j-6$AY#$Sj~> z=m=KM1X3PkT^`JGO6o9By&lj@%*;&8EZi_XK>r9bum}k&uqqll1{PivP*OHBO>CaL zc+*3u_t@;2zNp09*>W)4*R|2~BX|BTZR_&cwYI8T{SGW+nz}G+s>4Tp0p&!8+uW@yml*|e4I9MhFWd3sUGX zG6({ltq_*L#pESUdb-}%uz98 z@`99g$K5$Z58Uiv+?*`ErsLs4lf%hV=JmbuxO?Z~Y@5q*ACG8%;&a;R_H3hm6vMeV zVHKWdr^LE1tH0n{+H@>xE6_pEWW@lAECHd-0_V5$Zw5yoFb+_XC?kWRfP!Km*ma-? z6le;xievpK(YYL~9HbgK(J~4$2pB3NB2b|7%JV5lZ)h+sj|Zxk696h^W&mn|=>e(- z20~(Epa3L|08^yBz|I1Pqz?9gE{W+y^Nugi=SqHgdcOVS#51!#hG@73^p^#F+t$$P zE%5p9b56EqpCf-Q{mv~pKl8iYBT)~fmmCW<0tHRGSw76V$hg^u;YBJ7ixfxlck|gt zbV?@X>?&T&HZ67KJEfH|AI*)+rsT6N*tzHWGbd4%ez}j*`Kk}Oljb!<#LQz&xHs!j b%GQft%DgrjGGAR+FiY+DbLdf(X`R=`M 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 literal 0 HcmV?d00001 diff --git a/img/p/7-26.jpg b/img/p/7-26.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf547f5144772de0b16275e753df5a9c76e34233 GIT binary patch literal 28689 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 literal 0 HcmV?d00001 diff --git a/img/p/7-27-medium.jpg b/img/p/7-27-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab04c2c16a07dca0b74faed4069a30c5fcdc3705 GIT binary patch literal 1751 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 hE13RBt$G$&rr@)+H%ln9X-Yb^2>>O!MRouH literal 0 HcmV?d00001 diff --git a/img/p/7-27-thickbox.jpg b/img/p/7-27-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d05a220394087debecc7a2425053c9956023f560 GIT binary patch literal 34555 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 literal 0 HcmV?d00001 diff --git a/img/p/7-27.jpg b/img/p/7-27.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a09ffb56587764e6670db5e1f9461672f655934e GIT binary patch literal 59782 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 literal 0 HcmV?d00001 diff --git a/img/p/7-29-large.jpg b/img/p/7-29-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe6b353f9b27f60fe54b71ef3389fee36aaccea2 GIT binary patch literal 11884 zcmb7q1ymi+(&xq9H9&B8hv4o64Nh=(C%8+n;1=BF;;sQM?(V_e-NWAe-}m00Z})s> z&-U$^+tt<6GgaMF_3P?+UwYpJpvy_gN&z4s000Q^5AePU5C=d(LjKL*1P#tG@GvmY z&@hN_aIo;mh{(uDh)75%sF>&|s2He7Na(oe7+BaiI5@~?c=)*3_?Xx@*nc~LfC66w z4TAs!gMf{Kgo6G5o!)x^81N8`5R6a|ra!ViN9XhyWjQ4}QJekF(Fk&@?oXE-g-m8%Y_oit zxrKG=$Gq{&ecAhyI}QT@|0@CzB941NT)n$~ptQZpuWY{Yrp3VEeD=qGRoLQY=`E3J z&`0=lM!6yniDch+le8b60j}4PmFZWrs|(W`1KYCHXztY*nZnY-fvR_aoREPBs9gs` z9zFyEEEn{r%;Ltc^^wvPKPN1tC=#aHTN| zckVR-W4h#ZlVkY?_jEDOH7_ax0EoggUZvVQHr>RWoB_*S#Psi`^~9(Aa!}{yJQ$U- z-MHG`0Y1O)?%a(inwZ?`XsNpO8`nB698H#>Mo)&y?XoWz25Qz;NGmJ>y*_aW9=?`W-E0vZqJz7W$>t3vKJk-0iZNqx7@cUOa$oEy z&Z%Bcy%AgUqW|NfFi`;1M-ld!D^6@XTi&mmJQv!#`Y=mX9Al85VEPU)eaaRL0BaBe z+5SyhXZtMOlWEp^T9o+&bMp8AGR({(KXqLRd}tOH-+jR;N#~=iRwI|cJEkOuga&H~ zf*gxn_A{mtA6#lJ&Da&g+)!cn*KJP)mNd}6Uq!goJa{jf)chU{XbE!go&F!`uccrG zzv!@F+W-Lx0}b`B_Wv>k7?{{_=vb^cxNM|kb%ikZ=yw2?=WCBLT&$OwO4+ebMP5wZ= z2ENUS41GYjBIYSkQ>yXX<^gG$%#7%J-O8G(<|!4kPYqyLU45cy+W#aQu2CSWKe)Z> zPBC?f@cOFO{W3>K5Gy|>F{4tw>4Mp@0#-X-KZGtWt#`oEL~LL*Mb`?Gz$1q zex_2BryVhsAd%nSQS+QJ>h7s}3>^5_E&G{@8o0o2s}ePYO?glROnI|JBs7d|#L#`U zf>7SY=Vd;=^>|eTd8o=#Cch1=OULv`vu^52`V>jsn>)6;&X3Zh`xcm;4+&NbGF4Vu zrR`>zihaB3jNXM^R?x)!TvSWG+{t*3-3anh{5d@RGsuE8dV5+i8+6~|j6){z4)`=H zhr1G5p-bt0w3joyBQ%Qp8Z9l2XfHJxw$ZI*-{N}7yj*KG_>*(@Fr{>~)+aAkN-%OXQxENBOi9Z-Ve! zGVbiaS3RY--l|7)kv%B8L7PbxnGT*~h7CsWqf~MezR_Ju+sDsw^gXehJxbLh3;YLF z_ZBrRi;+t7aPD7fSAur&ex!T#e-$+^ZW%~MKsz(_C4)O_ zbQOnd5qlMD7uv+#A?&jCJN`c5_Rmp?KB2JZ8ljHljI`|r=}zdz00wgZuPddY!^qHg$)lV9@D;WmnJ2I~E(w}}sTk8a|DMy==i@PSDg=>W^W7EZO zW}Hxk)ecuBdS>T!$Od8L4TSx^Y8gCcYp{d<5qEXJua(b^uas2&iQZ2Dl!%UwLDi6{ zVp{}TD__!wkGvPg=QASC>!wSlbte~DepuU^N7W}`EJCe{0A)xCDT~w=2q11Hl3MT;yZ1#iFZ4qEprN)++ zZ5w(S4S$6@CfE{u3P|8QE4f?{7tNir1UH2EF=b0Am32$t&;L)&JD^h->>L;{01!}+ zV1x?uZ%+coh8R%j(3oVbY@$YaSfuQR@#K_ZDqH{f1t7}P_C4HsTi>Ny)WI?HVO*@inbFk zI8Orl3lA=zSowg!zO{L#g>qT8>`-z#L^`ZA5(@XX-_9)|3ax;;(gx-TTf%ub?ueSh z>;s;e#uA+*YQQZ*}2D|Sc-T5>TMeuR-*nKJC9 zle;Y?Grp?F{Pgw~O|{C8Z&)$Bhv{11K~b?0(#b`f#mUMk=9%a%#eKV$?LS};iXgKx zUBoH^Le5COj0b4R#VfJrD7QjJP7{9R6AeLtPmcOA5T#O&CN@ykSbdxI@lTIoE>GE# zKVBH|&61yr8~kud_wj0RcK$kSi56puM%0$J<#|o1GOnC@ncBVqSVB2;03_ItL&71$ zK_UG!dSD8G0UkJVHgqge6({FF3RZRwPNSgsyxN{=7;I88)vZf4;{+T^E)j7Pmw@2J z842aO-hW9C0e}?-JA9gtGwN}b3&8XO`>=OFoe&}90-|$6Uur&(%<MkAz?m)_?7_ z0yLJT0i@|4Tzy)|k(uE8mGLLhK#uLYnxR)%r`f3RxcNX=i`A>n?@M#=4_8*MMqDyq zj2ob->rwP#3hfCbgMuGPlL&(e29_%?5ak_EJ~8AxG$NKg`Vv@pJUcXSI`GO}u{YB} zaH;6YHNqfkN*rHJoA_8UNIb>Rt2WbEKH$xumC_*AsR>N4rJGM$NP9J~`PyAbG83uP z+Xw=!TiVzh+ntaQU~K;o^*^KV8C@M0O$t*hrRX+Fyc$tkB#euZp0>_l`L*XMDV8-} zV9?g*>okJnI`YM}6RWs`u;SOfX5cAMDw#|{4zoR+x5yPl`C!c0!T;#FgB20C(ex7! zb}+j;!AZ$aOZLIzsE`;N#+*2^(>QlGRuxW~N~TYgJp9e8!e&v&riW1pQ$7u%Orp<#9Wz)=>e!H4G1KLKE}=^q^8s%^ca)lF&0r8{NiK+0GSMOVOsRHN zO_6kqG%L6CA;cz+ib0R#9nh@PD_x*dRH0&B^RPJ2d;i>hdV{2fiY!Eisv!+~hkUX* z6xe3LaO7dz07jYE*GB_A4xA5KfBc;56rEXgmeDyQ;ZK>3w4;x^^ zTvW#hug>gg`j6?#MZ@S#HEEKoOgG;(k*0~C+b-{gN;UbQf79Hy05_xgtCq9f!Md(I zPf@VJG91N*ZY~o zZl|pPERT>~!56^>1$op#h|Z^S@lg!4=exIPs__)H{_J(Z`wIuG3R!6Mt70l4)&#rr zGRj_l!^?B=h(*U)eH4=w1vQE5N2*j-r}2GZzUO_W8LKQtNMJII4YI{F4lXr*GO~mD zP}9`qb`7Je+Zdnp;lrtTU_(>F8{u0rr$Iw>oSAMILTaxRw7MEgFnQR=&LcKn;|}NO zA_Es7zxn=Fb|hAXg3K;t!ty&P47sng?G=~bPCl^t{E27X4yr% zjsIrAgD*)izpgo?ow`=#+Je&cqo;!wZs(XyKk?+q`n7;PJ}Q^Ho*%QdTOx-AF70br zx^_?;*GIRKn@ftgHU}-b3uo2ALaPnkaiB@w?hZ%ny7ec2%j}EV=w7VtB^iF#N7VaS zteUpp*;Mv>Hn!KZ2MX7FOE!;u3yWmH+bTX3O96IlJ-Y(~utINh;BEmF+8I!wd2wCj-9^6r2UKio9p?QO@+XA@KE`YD+8 zGs`xVxBk?K%k)5aa98rnEI-ao2(0{&t`DT{qm8FTNm;8Dx=>=mkL(Hvl5CEeLbNN^ z`4H=NGs~gxy4)-XyX)jf#PRhslcwwb&zFe4oYO+n`?g}O7mR-sHR0h%d`~=zNSXOeb9c!K%=YCN7@bUDw!*m%{ zz-~vOfX^Lyj5!{?B5gb{G5(vi%#8s9PBr`@ldX|OV#NopVo0Y&y{_j~E#s4k9KO{7 zBdl4PHG1d)Uj{tv&ocw?G!1i+5zpF=I&0$8br8eeh)ILD4K2|!`T^wJ-Q@v|L)^LF zZM%#>5f4{Zq6-{X#6s8y-kh*cT2BKIubvMUszbGfa8(|x+obbLgt&jW*Y-c zMyC8LTtX8sw*gSH*b1Gb8}9(~viw&WyL;?8^G!XKgHbU_SCJ9?vf>#!II5m}9OKUs z8XYbrnx@_iZ3^QvpeY-J;>gD8ah<8A=^Kr5X_;JH<`qOnK*jZ<%XjnRyoxJmwZXX(BMvQEuO|$i@^#jhPb^N;_Y~0Dt)r@m zwA~pg>|^?}cbbBhv;njbHi_1jBlT^Wgc=hVFY2#0Ju>Yg51MZMq<4)(k0~Y&ZB2P~ z*RG8oBn1jNM=4bYK^Un0z*ghWtBbDvwa35;2Z2uWr!TpY6kRVU-Zw0Q@>scp=XUJ^6&8p12Y z=<;T)D*YTUXHuuo@f{FJ`>3%%igvke{-m)s+j^w_wD=v_zr)=jnO+i+S;Y>w*84lzlwwGtE{`H zzlg_h2QbL8A(UNo5h23nb7As;*ASMfI*$Ezy^!H*bq?HE@NB)DHimnM^y{U_KVO!f}A>Zi7G+v7(*g$?n)^ynL}sj4tgp_z{CPkQoY@fnBS z_1^cRc*nEerI7-4Uc0xQi^Bf72sLOPOI91v=ZTLq0AqWlpX&;<|CXMBs4% zXR#O#Rz5iIZR0?sCKlNA!ZjvaqLJ)6?E?!D`UHmuJE^bvs|c3d%Tcy%GEoKIa(#wgf#Wa&Wnd` z#hBD)zu;IFG0pe!)%T_vrDES}BZ;icf27bkCap%@2YvP#8n$^X>X|BFUcg-n6km^C zUyoaC2=L`dk}g-dJ_=`%E&6Kn#NR{yZOf@#veoRc7*ktd)v|S5rifr@ZEV&~Q2wn1 zCc;rJjrS#arHI=hJ1|Opw8kr*osG5*b@1EA;EOFf2_32D4)byf-Zi;-S#i<0x{~MR zZ6Ts>rFXj9SkMj&dz)9WjW^k*J^@KJo<9a0Tt9c=&e2UmL0hD+7?&@~U^ev4s_Eyi z`jIy}Gis*;c5SY+gq_*))Yq0&zoA_yIrJ#h@agzbO{+>+IsYk#5^I$~z3k#0Elgif zlg&tdLm~@k+QGgSEA+i{5$)XIfAOaan&|DR&=dbHl!>l3clqZKV!?I752F-4yG6n* zWUwMpR!?f;3ZtnDaQ+^R1)l9l(C1h%tQtQ9B@Nw+7#v1+=9~x=X?wD3`*E zEz}}Kxt`swTd`=N;G45%@9lZ|ScQ^e_2O-Jn$wE_Ds}pxh7EtnFVtwF(qga8mmv(< zOTa%QHXLN}%GEbBUgGJre8zzs-InTSY~rPchHxGNgh3q2!_tmM=Sn>mFfdphK3{v4 zo)rvu2dH+kx?lD6`w?`YY%<-ivY5w-% zP~R_e&hN3HrMGUOSNnn$#=5;yRa-I7SSB+a!%uAl(j)Tm?zV=&e?}SZtlwAbZ~lgM z^=KH>IZ*M?z3@@15qGaY$~j06dbNgvF(rw+3i&s6;rAIROe$26IaF|Ly}z4ln!Ed8 z<$#SeCY48E^zUJD-ERNx_ON!*SwiE2XUA9UlvoAG`<7qwMDg1M4TKgpHLozrK#3nc=awOtG? z?7sj5<0fQwC}*x0pX?!um*We3_ZrOMrvza$gNjIo-}wBdiiU$6y6^B1y^KP7<#OFP ze!l~dDu0a;v94jl>fC9*19m&s8iMdb#8!9ApVLi9k2$uLOQq$h+i`X7%=+!h*W)N? zYq~#P!f`r?EHeOO04Qo|%jO+cbr8r-T_g_dJ=i}?by6?%g47Ufn+$jXRO_>QE5wLN zN43di-@{q1?(Q)zUL15{tfyLSN$ou1J6p|Uo4zV$`$PTmYToA6)<~n`Rm2* z7eiftz*!0-4vvf=VVIt_yb%D%PMj<7TD-ODUxw-|^G9{@^u8Hgc28MCxjatQ<-_c&}@DUnW!)1t=a!R(t8`IaYCRR!P5--g??eLS(l(i z4YBq<|1>MMPxJF8$TOS1dF1oF)n&SayU)Od zl>b~vM`{CIZ+^pr@R_+W-t9u-N&sGybELJ?4galIqV1#D&h&=)ulVH@x==Y%LM z9g9kyRM5yef9zp2ULL5T$}i;22nC_O2GzBC!;@;Bvq_~aYbN)SH#ud4RCN>!UrP`K zl!Im64W%|ft4zV`hj3F2@I;i`f$Q*s9J6Ta5^9`MiK#O>8uq#rirInZA+S)cyrfx1 zXG!by_hR&#uiWahk1oQZhYs+Sm8h6Gs@;3eBgypYWvZP7op5;uw~ITfMRLjSfCm46 z?~nriZkC|mObYyux%c0(rT_c~K?5L2mF2)RGys5>KiC6v17Z*O3qSxU!23m`2@wtB znqLqifIuS!fe8Elt*;wNq*DOE;yZZL1x}f6zhDjA8i18LI5fG>?CmDN2<``fb939O zoBKxZ0tY4l0U9-zsm6CyK=EJTjxjAdB%m(0a?`#&ih!Bx282R_oy=}%DFJ`UOuNzZ zop$VC+FURJAVmkZ0~FO0CP=|sLI8MH#~~;nfD~M0?L%f8^r;&~1{YZS{%3)~x&Y%V z8jQdA3K{|m>fb@bzxWCr46s;9oq9wJYmEZq^Dh4rFGPP4I@W7--WyHb^+={yp-ske z&X9J68k-D;p2>?V?F~e<4w=Ajgx8DNzRKWcBf>*HHRzSonS6Z+w>xEe2Uv`~SxKia zg$J7oLem8y{$_xd&@ihiDBl)psLLNnk02jjM3KgF7EQBdc2_kAqG^XUaATe*lP5$# zRKyW%+TJMCy#6szvgU)#P5b9$ zGYRE$Tt+wM&>5(1&esCNlCkx>R)A@W3qz9%zzK0P<&Mtd(jF*pZpIgAAn7k@VE7N_ z{FhE3VId*@yG}@1!I8LHL!)?+Kyaw>KY>Q{M^C+*St~0mg_0akd2e~KB^vR=C>|;d zhB!8gFl2RCy};VxHoG*#f=Vj$`uQ6`Tz`&I5{9#=W530F z$vp2iU%0ihXlfOd$9Yz_X$?|cwo%MsD;45sz*=d|YP?ZOj=OILt(>LZDF0~cv-cw! zc)HO21INLtfdu36f4*1v7aT|bi^tB}w0f5#yqgwfvt128FLqvmFRkGkKg z`<{ADx_tsHp&cB(```*SfugZdv%2MMa6xWsHOx%m)#dW8k3(s5l4vBEA<&?3FY5syauA;FXPYE8=pHNWpQCNSZw|G8WshOaio`!d95C!qyuZLN$ z9z<;OVNdD4VEi(gYQOEPZs1`F9ZhA4xoUOMcD`cP>yS@n22bY4gB>?4V^SuWvp|gB zF(!24%8tLkH`-`>eUWw#!c$FQw%=GY2Uw!UIc#%kI=?2tLF#fn!JVt95nDVbJ06^{ zScl5^nF`GnpYX<+!sD#N-^+Oq+LA~K;4R-9E52UKPbnyVTU;slY#+?b*!AHLwjZ%4 zr3#(%507|se$tU)I|d)Zh*7`%>OY=ITdGokda1Ya9#4-xl7%zddEe4~JZFlBvd4%c zy^?dbXyIcGOX1U2HJBBpO)^ixh0&|O3j-R0=rz2GtJGfIvDGTOAs5dURTKeMg zAGpeYFBbUIk(~R*lUCJw9i+xYz&neW%K(^XMsVMA)a~(%V?EtysYv)HS$X0AnEC6% zU{0z8_Y=xtJ=++Unx%nP?Z;><`)eB>=wY#&p9Z@%R7w=|}jA+g<+CD#w>^R*r;SIBZCUVI| zwn?DN>u%uZ%xLF@VkM5TAIc|6%18t>pJ<^zEXuXne#k3=iqtPJ)6_^v$qQYk)6r_5 z;$bLHE=pD@12D0<>qGjaQ3Xr6Ku-&L93gMM1Na$V34}R_9vzArpp2##?yzoAnVuhR zC5CwdUovtk1N%OArn_K&m3>N0rk;T#r8@4~L(4rn94Q#)Sr;kkQ;ICgeaLmaa@z@; z#Uf&3>%+n#LYrY~i$6+R37%#Dcq+JG_~kJ8B540vp||iIP$`)Ru>Mhj0a_F+PBKYm zIf6d#?YPn4tm10GO{2Fkr4pJ z>zpi#cGQ(}MNOsb)o*{=7kzhtY1X@oUT8c(*As777+Eqt(Q^9`#2l`i-sdM()q{>J zu0Y^`{#F?P{WK(?4ovV70UQB7!kSutS-PmPCgF{KRSUh0WD#FD15C zY&QuBYF$fCu<>17%?-P6V;%H!xQL0}Ggj1g(8uA@JDB<4`)@lTp=!`9l+%Ci}36K2IpfFYF0y?W@Kx)gkjC3MhC9OI3CUC%YrHl;lC} z8yCla8Bn9K{bEmt0F7JHiI zc+cQ%ErX~_You?l$U!}H`J$60imYVTrwqcQdQm9R;2aIpQiyRp)V>K`EQ8Q15Qv>o zP9}`5NuA-)GhN4(`_DU|eyfVw0^#+$NTlku3st}#9kx01;c{fdnibOzBu!(6PI4xg z7a|W#GucmH>T~UgJ+Lv8K9$IIO>G#N_v~a1gf@E=$iQW;pjK-)kQNc93xa5STdp;+ zvxevmX=2==kUraBed6uUvxIYfR`i3B-|=DAGvoRaB3!FNKW+P5e<|JLHK#b_6Sz+V z1#i#Cdi*&$g(QSZf$J?8BjQ|h3S`?CGo~82zyvVF0U&5+S!-2_xR%;tV4)L)Fah|}0D>A)-kH8;4bjvp7*i<~&1c}9Hz zxUMjby&cWL<;O+lcXR}mM5PYA147H==i620l}bgOO!7&6YlsR;GFS$Q6*KNzxYe3? zVrPJENeuO5O19$z_*dgKH7SQ)eXvMBh_aZAg+=W&%e77~PSX}fqXFeehD;j4{Nkbr zWz22g^AZf1T+PDIa5Bmc1;pCSCFzPOet#J$I_vXp=i*A$3F~ z?D1vY>|C&gmhWYYT$}5Wd(!d|$I{dOv~~XWOZkUo5%(atw448Sga0L&ao743Z!Q4{%Ow8vsD z1G!YeRXCeO7?sCKI#Zi;Gmv$Q`v7s~DMaialrI8ptAR56MboW8p@R4~{v2!+M&(Gd zArJd&jsYAkk@5D7mECaVLIDuu9t7kg_{Gm&6MzJ*el9*l>JF96T|baWzzRhUwOo;r zCU~svJ%yv4@L~FO8Q@0i^q^i!yr;q+dYgq1w{*^l)w)bzNN(H)rfZxENKcij%EuDsX}J|zoSN3M4_NsKClvjOr+M$E4mpo{&O&+aG9 z{Cq2*eTRzK41J}vMwPOWJ2=wtvr)Wg4p8cnOCtSI$lJ;G+gSaPeIMc))k2AeTzD0^ z5#(2YpiRpafy4r%okp03#z@;00WDSv>Yc(Ebd;s_b)UBbw!4$vABrK5k#0-lkPX@m zI&s%}c^xh%?6(T+hIybDNMcZY(h-`5|If(S{T~*uw}iB77@+0K@pdqCDv1K%$)T|p zX1k5Z-{?7raV6k4qHj;ibvEWZ0Fpp*-T0E!7ytoR{(?`AMcMV?@nWFZn!sy{r|UOG zI}nlip5ZXMf0?%J{4}PZSj~qsky)D36S9=)h`VMhN5a(Z;Wgwt&T4d=hPEbu#l<6L z{_d_rl(2IvCEtoC#2s^Y26VfNikfuV?i{3ze7^kmRo~h>k=UooySM4|Y%`ahSl=nZ zarav^OXtKyfKF%?X%p%xi4u5`wgZx7@2W4t55r_Qb*kce1+-|W$TI~T{iNofVVTjd zV<{YwMug4|C)>x>vVb}&Y_JKQ4cZhZLMzX)e6HZkTkcl9g#u#rqP41Dkl`&q!0L{j zYzY+|t-pX~o(usA-=77{9?&96kx^(3FBK5Ju|8ucbiX_rA}fEwK_XBe;k!<*6X9fI zLXmTKJrGk)C`lW6?8b%!LQ`*!>Tg*@^wcdk8xogLz}xH(`Rs_71W-2!E4lxhP%D<3Kqv0`jksizc(lE?RMG8ll&ASF(Twb=664a}wv}&!Q zW<8=wz11z0{e3Drz4nfU2ckz)9M1 ze)Mm6R5uwML@KZeCE~T(qyJ7N`kaEYXNZW;Vp&y)qybg;ixZmvW1gK6SD*n22^tB~ zqt(DulX*s9oPucuJV%@ah8;)csNSzmUV6DIo<3P0&2Vl1q1}-k<f HeP8}xqGeX54ZM>7wRP#wM|eF?6+EYN+;hn?$4S(v(~5 z_GU+Igv?GwhEVPaHDxGwDY_6*3TJWZw9lXCTi-uxeZS}VJ@4~=&$|}87W)C1wSDJy z00aR5L>^$V2iO9jAZTeL3yo|H4ue6XF?cLi21mdX2y%EiIpPWhn7D$pLQW2*!Xz?9 zQBjc~ucS<+C@WADDN7_E3c;W;vKWjkg(yd){NHP_79imOC%_2>Y5@=lM3KP7dw?3E z6OBTIeqSI4i-XWIvdF12Qpf)u0w9D!FLnb2-DaCKUW|jRSx5247#%Ia zLeKQgJd?1B6&=QN!^QUlvez(M8AfO)Kpv5@7Dj|ZAPT~MQ;J!V0$^oek^*8FRf)!6 z+9Jwuh-MH2EjTNASf`3h1Irq37UgkGAMbr2vRqjPS!zlFonsnO)%NE>C)NtfB`p)@ z!pxOTp30EbYw-1_?ON<2?PNZ7XJ&|mgW|CDs}8%dNYeuI=c29l2aGa)cDC3*;9+re z?vcsUz|P5AHL|)@&f&9lf04VYLZ9su-#MZ^e1cwW@V=za>n~r)vS-uuhTi%F5cCrAkUU8n#-M%H53_=dN~@5B+XFbg6pd zQin(Y1Y-W#ArJzPnrTe-a|leHlMFKxtHk5OE)5kvRkqnd2wH=LxPkg7 z9O)ZP6NL~kH!tI%C49v>&q}-BJ03Z_o58y8DHyEHeQ$E?%_4v>SRuwEcNaszeRCdp z1<)h~O(uCWn_r57DKsr@LuXFN(Mcm)yO^Asfr%}?r~a(%==|CZ85`(>+kUD(Om}3A z`?B-U`so>R`(C(WEx76BCB%@HveJfdReMo!!%gG40{l+=&PviBkw0A<3+Pm{ zZi(KIS$#YF`kKRM@cQos&VjE<31`J)i$E(SpQyLV#o^IMTmPou*x$^@Z5O(J`V`MI zmIS!!qx&Kz()JXT>xv}vp7wnQ;04zrl~PqMZ*_cmecfgD)rS!?p4zdQ?xmfpc(IJn zsh}Ci>eNVK4?C6}vR*weJGh?P%~F5bVWWGV=ac7`JXV43^rBRZ$91igy^vC3-;DX! z-_&>dEPSfB8ST~unYnB3*H{j2=UWD!p0TNmH!w_*=-Xv@+z92+6|<-OXw2Nk8<_i z#&SD~BBoW*c-Eh9Of0!s9Nb$64&uRbHjt(w1LFHV0RfUGb8`;N<_P(v6EucxNXO*2 zY}jZn&;uH>Zper97%`gY1?#E`pN&RGHC9<^j~^f!Hq$pfM!i_;Bem!({{&tb16w0b zw#2AZ)#?jI>LXwDRHEN$<*T(-8isGSH&V;)cPseVy@;g4>)!zT?y*GPAt((@YbtlU-W#Pmr z!9i|tTyFiFj>&bJqUWWd061V(NDUH7fD$Y`^Qd_JR&VDvRj z5Hc^nji99=Ptt^G%*`BO>9W5|X@t95h9>B}&OYQ}r*&=lDxs<~Yq+T!i?*H3rJl;( zvoQ)`T7~3tiRpW;zcO(`_`;fHs-~WC?}n48Dq2Cs?8W`ueHZS_Chu57b;t3>Lb=| zsOA28A16;|;MS+IVs<2wAC0OW!OiMLBo6rwMkp8_)aGLAFGZG z37mvWbTWolC5)+w;DDN zXC7}zAnGZ&qkrJ(UB5R3q1#;edM3Tpna{h!wg^pryqBun5a4r9A{9?&O>t^PN#_%} zZMz;SmPp+%U3XC>OPpVkIlEi?Ud42QTZI$xS=e8R(X+l$ar(Do2jk8!1j~az$OxjP zlKZSsS%Z-9VzZSs0O(0DooDvCOpC2VU*>|$*b@HL4s=ATJBOoc(Kjo+U8vK2e88sC ysZf{8kP!X4E-)jeANA#F3cgZmi`+Fl{CZv literal 0 HcmV?d00001 diff --git a/img/p/7-29-small.jpg b/img/p/7-29-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4105bcdbaf9e49669bce5a8d6d96a01eaca93cc7 GIT binary patch literal 1184 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxw2{1A- zv;4osz{AYQz$Cyd0Q6>-k2bF<)7f2@B|^UKxzM?{%VXxMX_K4p&q{pe7CWcPJUQiP zTv>Pt-@Zy_ppl9K3_!0i0ky*bki*Kr$i^-pA||e205qEeXeA>n({JN+FJr?uFU_Xs zuJF(m@|_U$ifQrV znsRkwcAY%XT4_O`Kang2x|<2;7C|8eu!TTh+B44O*|b@@+d0l2s-Bqv zIb0ZlCI|^A7=qO^fzRD7 zEt-4Oj z64ECmKHk5?^+3Cje($HRSAruArZRVbmrYtIx1`Wfg6;ULYv*t2tn^uP$Sg!m%x3wC zpZUvI9-pv0|M}Oes!Bd5b<7yt_+m`w1o#`O{W*63EUSo^~{0vk6TG?@7C z!$(+T*(=Vo%rpGis5N^aba*-&#CP^+%&KO1V-?aZlUy))ueWoF@L6rHc#&0w22y-|71L(YU8f8(j~ zVy4d9L@w^-2igZtc;JW;U{PEzozGJYjxAtnL`lVr41&P83OopQAt-hQ0(6@`JiGje z%PJG7K~fNy#!!<3gP@`zBr$*@S3s;~zPCh2^R#EF*N+1=$OA)znE_}8JV^j;P&5p5 zOl(w`2(bkiT=oLp)AeF@Y%$Tka&y*V7R_g@AGfo}yFHq#V6WbG{L8_AfmS=^8Xky; zX68ONio6o&wwd+77nkI&c%|7dd;*Ft__4)J^qYQM>HXTiZ|Z5&=Vzt|s~OMSpjmr4 zJ}~+*^QI@8jV7`39&%U}+9Vpuzu0Q-!mU&0<#T3!w^|VM;f9x0)6C_J9g(M|Y?>9^ YIyFY<_oK)uSNJE~;$dJg{`~(Y0JF$qJpcdz literal 0 HcmV?d00001 diff --git a/img/p/7-29-thickbox.jpg b/img/p/7-29-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c9c7acc94f9dea3f978ce16e2982b47999a698a GIT binary patch literal 31419 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 W@l^U$Mm0vw0?pcg01B~xYyS(I7#P?9 literal 0 HcmV?d00001 diff --git a/img/p/7-29.jpg b/img/p/7-29.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f77be18d1ea2c875c7018e7c8427eb42119b1132 GIT binary patch literal 44471 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 J?flQf{{sv*N#+0m literal 0 HcmV?d00001 diff --git a/img/p/7-30-home.jpg b/img/p/7-30-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa72ad43171813f12a6f4acaea08ed80f7424d38 GIT binary patch literal 2480 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 literal 0 HcmV?d00001 diff --git a/img/p/7-30-small.jpg b/img/p/7-30-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7d794a5ef96b37750aadbbd6e9cd7f905caa304 GIT binary patch literal 977 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxHjST z9%djdz$^gd|5~DX_3&|-iwB}o1<~=s=65c;{37Y);vn}WJ zuiXW@_sF6pqG;#os>yr2Z1UHbc;8wX5hzi1O6RS=R z!{A^Q5O_Sn++3#^=nzRkP+Ebz0>}^$WMEWqgom|2zvzW#ph5|dLS%IejKI)_r~?JJ zz=}tcfXWmF7=czWvLMtl0z=!;FtM;P@Pop{k8qy}>@0eEdb+Lqk|RM3dCbd;Oly1v zGuv)o?N}GbC>5~FRe0jc<)Ky*I~Qj^wV1bj$Ikk7q1HMs&+ER*?hg|!{G|Tt=e%d9 z<=qP#mitBKzFRE!%jf2N!6;6-T`uSE$a!#|;m!ZTloOJ1dNtQ;xx8MB>PnB##n+$z GzX<^GF%ZE3 literal 0 HcmV?d00001 diff --git a/img/p/7-30-thickbox.jpg b/img/p/7-30-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5fa11a9165ca1798112bf08c7ae17c3f569686e2 GIT binary patch literal 16029 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 UAP6=NH{)@v%QYzY_Vw)l0;(9;;{X5v literal 0 HcmV?d00001 diff --git a/img/p/7-30.jpg b/img/p/7-30.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fdd92a611787e82c51585fa2779fe2331a3346b1 GIT binary patch literal 17755 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 literal 0 HcmV?d00001 diff --git a/img/p/7-32-home.jpg b/img/p/7-32-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..88fb3e801acb3e8b47c92d93faa761c28b49bf7c GIT binary patch literal 4131 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 PTWzZv1j84O*M z00>`zcmOa5kO+k2h64rPXdD`iLZR_kECxrw6A03HX=xc*IY>s9C@U=uDL_Pd5}8aU ztXQe2KvI+=kx7!DfJpco6j}<6mLkbW%aH!>5I+QnIKUBbM1phxK?IRRQ2Yo`0RRLN zl$853a3C6kMWW!O5-3UjOh_J32qYR5_X7m@Jpw{Pu*@J+fLYDq8^c*@CL#8FUcuS^ z*1^lo#Z4jOI}RIqlxobxx>IH7DXzM2@$MdTCD^&PW1cJO&M){570p;AI$Zq zRd+Eu&@ff2j5BLDwc<2LuE4HT@m{a7Hd}9zDiG+FxvwcNylmDtKgek`&4?yiR_Ih; z>-M+7{%K2(oEvm=Z*%}rKUXTwQA$+37qWzB_mxx%Ht%sQ33_dAz|Ag5+q`Ga zu{`*hYMIi4ObHMGZG{TL~YH1e;#nlA^r~b6!#fam|c(W!r6X zY_4owx;Eg@5%46aMzi-&86_&nqHAaq*0EjGsbbJ?7@4U4GMDazQ?6XCQF7^ouZMEw z#>ia-Zd2()C+RgrK8@Hu+M*GGa-b#)>pFca#g*%`Q!NZII5oi?h zM+X2RY(C2eqUy4*#_)yj8#+Jym?#t4d_=N73Xekb${54Rk)=rRpp-uL#7Khy726j-K)`?A=ykfUvEsJ*x$ zC&&2MU`OCXp3a-Gc=MrX^~6lkz0QpDD8`#yT&8l*{^VYf?}4^_&AjoIa@psY`Q7!a zj^4!WR(@XiIQg8}*FXJ-Hk$6AUz5)y#+ijG(N6W+8J!Pk)XO`N zu*boA|DtW)3u3D6#kdL+3p}fuTvNR5^BEKCuaS;E9}is~8acQ<`n+Gjxc0|Z#Ms2x z?X*w+5l=@>ozxRWKWBZ((rW!Ce~`ONUb(J0yqv>@9a-LkfW$Vak*V8g`UO3_rPR|d zTwP1=afsw}(}}RRAOibq#e&P;LM$Kl)z0@+{<5u-frX-PthyK+z~A!r8&$iiZ(OBl z-L(S1d5*b}aKKji`U+m*NZ-Jqw)9~a!A$6(X}`10pBt33bFKu-GuRa_B7@x`)pi(2 zTL!|r@z;ugfe^!t3Iq9_qsu(W$U+H9oPG52`9=IjDoN%8``PoCnOoYUGT7|#iD`YD zb4-0!x@$$QhDdPNF1_8{{Z)Kc6R;;9Myy#rF9iJk}z|2!9J-SG><=dYAL87$E!8?^YhUVD^;*)m0-k4joCEdbq-IM)si> zJ8r&1wpC{&*d<^0;Om29UT>Ftt^eKf@mtmIp)mZtW^-$2bKAwtlL(@_>S*LWEB92_ zumrRh9*ta=gPz39Xf{Zh8l|neRxPZ(@9`}1ck71L9>9d5mr*w-$uckC>}B;KGmDRG zQfJk>(4?%R;rRaG@Sf}vD=gFgeIC&@HoaF{ShQ&pw^xQ4(!VP!^LW-1KrKVSW!1X+ zc13qkK~q)p`~b2Th&}`P9aZ3RQxr@EXKbE%*GmmHRs_2|HWXfp)3x(g_>?6Q8mjT+3Awd<>mBN>?BC;FNI6s% z?ZCU;HGkr{Q)C>YyUwZQsp5h`g3i&!;sxi~>qDkg4QtBqnT1cc_eSV{z%)^(7@l!A zMQg%#U%JuLH0fBTOsUj#DR#ONH!7uv{YI(!SKlo_35t(OeYfRl>U_EDbNjf_l~a$Z NfiRy>-?-ww{{YhwY0Urt literal 0 HcmV?d00001 diff --git a/img/p/7-32-small.jpg b/img/p/7-32-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61ad554d0f0ce492766143e23c576ae08452c77c GIT binary patch literal 1283 zcmb7@dr(wW9LLYOk9`C8!Y(fn*hK|lh+PC!;?aUZvJh_Zu)zj4YfLm4&`JYMkRYA` zHG#|+596UM@d|LQ;q3sTV-ygw>wvOMkuMAp0;cWk8ZiCY@1DQzx%cz^-tYHZ-Gpu$ zP$5D4g8+m8Ky(3}8Uz9y!}JRcffmUkNrE6bOeTZHM&T6t#)zST^G&_uYt&EE1<`}qKLkX1Cp_pp z(YCWOy)6BL*YeF4YaL+8hU&N0xEA^&sE`5}8c1#kqC^-FV^a2jHWQd5JPV}F_LZ`*o3V}^L1xA3QpZD8nA`hjd)wJ7^H&=ZV~eVd>NzXlM@ki3@mu*`p97Ub zamkK;wD`8HpA+G>FVQw?a`>R~wK)fqS)^@8BW+0F8`1z`05_wB5-CB+4azu#{xD10 zb>K2*%R^=U=#p5X{bT!FzTixx)-xt~`>(S$;fQ2Q1BjFQme)rgBW)&>$SG3;2-AZC zbK15!o^;7i$czYIP4bh0FP-;%aIp~qTu=-UhYW(b0l;uTn-Y{zBypFLX7=)30g9xe z=8=B`VfbT zX6&?Uu9qw^UQ_>)ETvKt@9QDI6R>tG&ZYnL$F?(Ff>)iNUCZ3!-empN+~KJwVKytN zmMJ;QN0*iIfRf+hN7N<7$_a@OY26+_1R@~DKN%G)8y&q-^Gg1Fng_vd{-1Z>G? zarYS6qDF^czbou+rg{M>8V)AV_e&8)Ox|vvR%BI3qi)devst^rsx*y~qkt>#8Jy~S zr>gnlFk$EK6+e&l4|*hMPtX%Jqmikhb0@pb@Kn=jZ$?jP5zmg+pHI~OdUF8MKwrEx zsk!F`OHsi?7Kf^WNj#u`KJ3U=3H$;ehA!D1M7rx|*H2b8= z=ANe;5mKt;+2Il&>DSY1(m*FwZs8@zkb{HXb>lm}3ud+V#aO;OTykz}$WXAI_;~BK z1=?K=k7V6gx+=3fUa|9j$7yC1x24`mQ0N+2)q2CBY^hH?Ir+rul!iVsU>~k3E!Y)Q zJ~lF=GV#sDRgn(8dozq+;97=ecEsaY?Zf@uN-U?qJ5*Zy=-TM&g;U8NA8V-%>^=H& ZVI4NyVf}Z{A*+>%kNCb1zKGS``3D>HoxA`5 literal 0 HcmV?d00001 diff --git a/img/p/7-32-thickbox.jpg b/img/p/7-32-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c6dbc048bd378b377fa611f84f98904c34f90e5 GIT binary patch literal 33248 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 M{C~YQH2#18+0?9`^8f$< literal 0 HcmV?d00001 diff --git a/img/p/8-33-home.jpg b/img/p/8-33-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1296372bc15c454a0c7526c46dedcf9b209ad3d9 GIT binary patch literal 4217 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 literal 0 HcmV?d00001 diff --git a/img/p/8-33-large.jpg b/img/p/8-33-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b598030d0035bf64b392899254bf4d13f6b9fbe7 GIT binary patch literal 15199 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 literal 0 HcmV?d00001 diff --git a/img/p/8-33-medium.jpg b/img/p/8-33-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed4a6208b6d3f1c380d65524882eda50e08b7944 GIT binary patch literal 2235 zcmb7EYdn@$FSS*ZBD!KEyQ4JwosQ$2FXzK~*7~s4Z~gwydVbIUB7ZC&1t1qEXD0vz z0RV&-Ab$cl0!Rcxv0Ad(EqTLC((6NQ9@ zE&~f7F*p!`Lc_1>paRQJiUWv1%0~bq9D;z55PZL7qJ{6W&}|{UHY?Zc<=$MM&o@c7 zSN(A4)uXb^vc&Ea^k2Pd5E{N3g9m>zG1(YQJb0saSgWn`4DUhA&Ki1YP-C=TH;N(f zTf?|EyEde==CGS5ZOdSA41bIPkq9(; zSsSbig~njX6so$a9&@b~MAK(k!b)+leh`hAt0w-#%KFme-Id)5HWz^y2f(vf^1P1B zeVgl!Ev=%kI>!T|M=nq0d~*@rbzwRj&eI-B5mL0$$>*oXP1%~t=i`6!Xt+n7e);~4 zIo@|nNF~=TOYo8=Y9~8dO>5 zwr!7nkMIljQ}eL9%t%C)V){Ed~jU|k(Q${8{-n}ky zvosHON1F^FU?7*hQDluwVId)u9`m~;ND$QP)PLXSNtH?foOGUM%Gd!$Ev4iF%*GbB)hx zv!QkJn|I%$+j@5LB}3m2sq}6cL3rUIO~QU?b~K#n`-r|dIVZ3ta$NexZYZ$yby62G z2paP@+do=?w!xHHpA&Cq-OpeYry(<*U}IxTk6L8ELcB}=;u78#r-&KEc|Kr&sH>ew zT&(|+wc8?a<%b#$qocRo>`MHCS)&2>_O+MU&n+wNixC%OmulH{Tg3Su(aZ}!N}^Xf zhWxCBlWHA9Tl$@w^=N;jH{8^2m$9nuJ?-!5e-3j7ccIGXvl@C>(={3uZW$w-lDi^gb3Z)e@7^9Y#ujEGN<%hnp-$*GGj2L}XsqrZB&i;c7#lP~2Uan+5KaySX~%81*SeeKq5kUt;J&FmF|3$d&(1wI8eg%~ zYQj%*q)g>uK}pU~L5k=3oJEpB$w|R zMN=uZ246K1CNMUCB?k(%8p6l@B`IoKH%Ox9?sV)xBqe#fm|{xid+;wd1RW_J!|yB| zXUM$V?4CV+<{~m~EvDqUh?LZN&-G)H2H=AIJ`Mpz!$Dtc*>|n~7~F}A3&mg2ZMr$& zBZi%)lNECm@n3^h;XD`O3t7tz34sOi0Zpze`bX!pYAYvnG~bMTv3(!0;>g_|J43Ik z^r7Dgk*ln}W_6lYcP>#X82>Y#|CLN3q`Tak5cleQg6vZ(F*@|@Noz^(%6%N?C~xng zl}sdv6b1%}!#}}HhLA!V3=q9U29g0qSqMclhaqNqRde4`Q-U05v5?Y%dYk}$WEd1@waT01L~K|$!CfMZio-!I1_e*-`+~+mPQQ2 z&+`}lK$2DF0cmaXP2aA8VVlVWG4ASF!1SxnpW2ni1Z<^MYGVZD1oG^<`zrhQwI}-| zyI4>gEG|_U9h@?=dKu^E!fH))_Ssci?w>z-$}=1nmOe8s2h8o=HhR!IzaFDnZZ1)y zKw*1|%D1Txu9(+tqny4ymP;UsxvaRC*lZJ@yk{45b}W8;!0@f|9Pf?kR_e>oGp$Sm z1k-ubCZc@RA7^cCbAmqm=N68=u zvAW}s4WmzoP23x*-yg{`9IaMK83@OTlE*s60uO>ms_!s;cF7v#z|-S%tNnU9T9515 z>x%3JV@M1>`J|N6q<=bBn_9gROc?nJLE`Kx8!<7^djlxr1*2k*C{DyT~YU- nb8h#w2w(e(&?t<5kKogarKQ2tY|*A~thcMu!p_S9`5%7)*M(!` literal 0 HcmV?d00001 diff --git a/img/p/8-33-small.jpg b/img/p/8-33-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d81d87046aa220a7830f9b5a68ec9b0ecae1761 GIT binary patch literal 1290 zcmb7CdoWyA96smny>{(G@3nU~Ry=kkv<7Q7LPDg*vLtASX_%OjvFka~R!p;vN2bb( zN1IWK8W9P>L^>fzJWIn?64huKAtEEB(Fh_zUXw7kXHB9>|LgCZKhDfK-*B+rO4;&4bI zN%3icK)`)(lZlWvF{TByo&+)w1}6*&!jR^1c=Z1+ofc3m-~b#L&nMoikH|)kWborA-Y( z9be2^&$W(Mm3%M1V0W5dOr6Ke)dP*mqUpnHAE@SkYMt1@YS&6_Zd40C6$I=li&{xT zU71pV0p2kIK#Ve$iPw8!KKjSM^nj z_g<+Iy_b>z;s9eZi8p>?08IclCit{ud(aQ0%t@Kp*d(^{%qSRo?SO#?R+X<?_8v{p_$hIUtHRT^?&rsk2;J{Y}-y z_-o<YJ)$-{n=|e?aMisoIPF;0arPgZWG?kH*B?KePtZE~pA600b+%=? z&1tRaE~hqa#O0!ozdN62(tO~NpV^0&ijTM;bnR8Edb3$Hydqhfhr1w9}+=RJJ()>^C4n`cR`h}g@ z2J+Kg8j74!pJw1ZPngfcPk(7Kti3XtEmWHCyEOPsc;nIGIF2vB*jz3hw0n$(0){c|rDN)Se$8MsdLZLLXcQY$b dF}5y7+D0AYRv7mACHKvRYibe}R&_vk>mNO^o#y}m literal 0 HcmV?d00001 diff --git a/img/p/8-33-thickbox.jpg b/img/p/8-33-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80b3c0f5561b7cae75dd0fd0a515771cc62b60d3 GIT binary patch literal 24333 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 literal 0 HcmV?d00001 diff --git a/img/p/9-36-medium.jpg b/img/p/9-36-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad8a49beaf9781158f8d28499f78e2dfc2e50208 GIT binary patch literal 2388 zcmb7Fc|28X7vB2}&dD+C!x0(JL1oPBax%~Jlw_XCRAw^dGvppu0}kpSWXO#}qUcs4 zWV(_eQ^{~p7a@wPk;r006=d zur~qd0!Rd6f5C==7aEI3qflsO42B8I!py>gW5(fF**G9pHar^+2OWm+oCGc|E*5rf zp2Gwl4gwcp{}K=h$Dq)M(C9-1Rvatg|F*q00FMQ%04pRY3?T3z5)bY@2lxR1fdr6n zraugeX2QT!`{!0Y6tsF% zW7$gyn1z?&`K!g1Pbn6WZ)4OwvI8Y%0|qu(Jv*Fq^4DGgw-r^zY4wM$?Ezlc5@nTy z^AWF35G1^AM_5J$9g}EF9&0g0$2f+TENWCWj>aAJ)+GY~JDig!1b`?I1=sWM#Lx&N ziU|ZTL?sRa#D(V+hBL&%d4p)g$mMe6P&|M3B8A?ysTFc>Bav(_Zm(mS?c0BxXT1x@ zZiFl!8Q$7-)2Vo)G9IfXK&tnL6l5x6CsZ^n7RL%aqg5F^^szc>KPX8WYD3sy*xmU?+zV=sZUlp+OSoOC2V6U!dUPU~1HKYHw zyP`lrztl(uwYkuZEc;0t0|CQ4tGaMA#aYX`WMth`&R%A;OZD>`TZBmyQof^dyYRju= zXHYuR)P*86hlbCQ4JK!<&1?z!t+mp%DXHeM*``Vb{9aKijK5m+4awcsJJGxsDm29? zF<;xORvuRIr|kHj(q8VvZ)Nn<4!z4|q?V26i8z}SF}2X{Vy?KQ%ILqbm^>aMm4fN{ z*(G{NTs4h{)8_R#q_eWhtv@5?jN1hQR%hnw?LT>KWPh>!ya!mw?=tjzo;Ns5@|%=p zj)zTJ5`yYyPp)+3YI&t%XHN7Pw$-eVbVX}!A!=5V zx_o#mG?0y^4$q9|?sF9!DHT$3vutcO=Z;_SKIilhX3tRw?n7Ak&_DPH;sFv&oFs@C z>XB7ax5gO!yInO&wT0hmpG^!8c&mQYcz&BT>>4%NdFNswyY>b^_p7^We_SEK&mDl6 z3OjcM3Ximf39>nE+h(=Z(f=jIzjb*%$`*OA*sgtwYHeX{%k9oRxGi#BBOq*qMp_w( za{MET_>;$egK%4M4 z`j##}5t11253MFyrs|BUFZg|Y<1iL`6=E5aWRy^~aq|vpcHV6rYu)N^R9rpNhGd+8 z@!cgY1Dxe8xkZBcl+US5_WWL{;3{*+xtR1OTPRIx$iXFXs^IFGV`oKTOs90nWrBS| z1791uSM%enOpY~R(FN^&#`Ei!{cz0gI)S(%F|Um3TgO|7YL8;ltq37mvp7qdiG`Q{ zD_CpcS|5lvu;2R7roHXwo6d74i|ws(gK_TAQ03d`X%4w4hklL3J zC>DCRz<4M%FL!|vVIyWtqKh*QBH_944^;sHJVb=?K8W0x6==FlbPF}_aYp)jhrN=R z|96fc5b(%>Z~m?@coMMBkt~Sl5n9r^R=56xBT%d6YqRhVU-TWscr3%CJM$B*2HdDm zpH?JH>~v^4Es}Uk5J%4>%5BMs<$Z#K1{Jwtme`Ox)_<1mhNTS_B@UB}!AlCV z0&h9Rj98X~`8b@hm_V(N zN`a@4-Xjv#^bfY#6g_HoCSEZ;Je$?YhcruDS#1e=uj4K(i@Ph^jaOyLbbT@fZ2uyf zVpA%6A4RCN)T*ih?%ua;ms5qm?bqmdZ$!&*4&EekUGrP G*Z&52w6dB2 literal 0 HcmV?d00001 diff --git a/img/p/9-36-small.jpg b/img/p/9-36-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b52411168323215e59047b065d30987f0d04e722 GIT binary patch literal 1371 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox*TRjy=s9O*DiH)Yy5h0;YP>Q z@c63*$uqf1mRQ%V`LH0@?zPR0<*aA&X32R=z3%w>9OxbqL3FPffSth1$Y{?fk4FI$ zOo0K=M~uvjESya2P(Lv;F*C3T3JEJ32C@n$C^;53PTZ($q+;w8lz8zY)PrpHOsn(b zCttlJ-u&t25sk{0kKffd=D+@wal@^;^WKclPqwCSRoT35zk;88%ypNn3+DR9K~GI= zS0)^`smaPMJQ905xK7dH_odYf+bZg&Y?QxrAoy^7q1@!@or`5J?F-#@Ku9^Grg*h> z&f{#g#ZT;S?QeS*Fwu|w?qP-b?|SyiUJ^LX{60`8d*bWfFQK!uZQ5ftZTvlJ$*hNq z=E$CS^&>QXme{XvlMJsb*PAlzYR@CfXLEaJy?Q!%`K_iET#E~sHv)rCMF1F?z{Cy=5?JU6GAJ54CN5M6 zENm2*c<|x}Sd`l zOLUmzE)}f4Hfd7f6zOYwB#Rlg9ZcXms%Gio9npT+OX;L@>%rUxjbF1k_vJp061x}P zSH8uu_m!DkzVpl%dt(@nAGvaHsr^3pHG#J!G?+JD1iBZT^cg^25?J<63{?vX$3TI^LWM?n5DJ{rZ=JZ!G>Ea~_&vo#g-*izA1~vvDC>VD z{&4*d8;PQnpA()puKxD)bgNtQ)$4fyyPh8Ube)mK>cWfs?RTX1Oghx)yJud4*`(V~ zIl3B>q~Dp$;hS*5ux+K_>gD2JOh0f}G{-4-#O}Q(8NZZ|VHuaKi-6i1TZ{haT^(Fr zZry8b4+%erZ&Cne;jbrmdfHlPwYneAJ@mut!U^#r);AFm=1Xrc;p7#$^tWKsJ~^k! z5^GxnR-KVvyW-Zp?-u`-Tsb*e&7$2o_cfc9Wz!MUuKjc4kAG|zT-2t(*1*Yse18A` Fn*fQ+-uM6j literal 0 HcmV?d00001 diff --git a/img/p/9-36-thickbox.jpg b/img/p/9-36-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d18acc958d02fd3e70bf7ea14ad13048b94dc6b4 GIT binary patch literal 28777 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 literal 0 HcmV?d00001 diff --git a/img/p/9-36.jpg b/img/p/9-36.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aaf80c7c155b4809495d9a8810778210cfca3098 GIT binary patch literal 27319 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 Ww$8)pYr?t51^zN^^Zx+ifB)I*b%j&_ literal 0 HcmV?d00001 diff --git a/img/p/de-default-home.jpg b/img/p/de-default-home.jpg new file mode 100755 index 0000000000000000000000000000000000000000..2a3f86bfb8d72c55355e1abcefc3cc260aa71d41 GIT binary patch literal 3528 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 H`uu+bgPCz+ literal 0 HcmV?d00001 diff --git a/img/p/de-default-medium.jpg b/img/p/de-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c0ee666461c87378d46070c5c514857386e472c1 GIT binary patch literal 2010 zcmbW%dpOkT9suy)%x}hR1~X&EZNeCXLdk6;Qphz7x=6#O!nkEC2D8}`ty{{@Y-pt{ ztxIx^K_fygAxRTuTnm&5rgw=RD8Zf6h7I_xpYSc`wiR^SsaVZob_d15i$O zj&=Y90ss)v05-n@<~AO-R!1lvdkHkZox$h)X@p3FUAqa}>ES_PG=ig(J;BM%)}9ba zHr$~{I8Q$n8Wh1G>?4@%mf9QwYyc1n-AYlwL7bOr{Ogu^AV(gy?uv{u?g99kJ(_{MDZl5|ffsSijs%&&a&>YgXR9-}4I! zi|!Xctg2?$)Yd)Xv^;HXYwvj0+4YM1x_{u!+d9 zTo3^KizS->g8hdJEpkC&Fc2ob<$^$?LJX#Cu9 zHB5BazBXK?5}1%)BRZoG3BF0wolNp5sn z|6~jqcK3FQ`R*m@bylAxZ>gh5MJJ>$a1)><%sv0u>MCr~6hJ0px>=^ko+a%L*)ek$ znVExH32R3a+TApQ)XqG}VS2JYy8+W?vj&%V#cvaGVp9qb1#&`19ans@q&%7a^EXN z>%5;D)h*R`;M|>>+Hn$+oRrjfassl-lHKOX@OG(f!#jS+u&-v}D@!`_I)h&rvNQ~6 z+8d2dzdjjh1I}O46xtSZzB_(=sO@6zi4gaYb$T)mSa4DtI3kEK zZhXY{nvdBp7B^oORGXkwo;5LEIzNeQ_tfjI&*T+TR9q>_s`A2>LSg2yzC8KWirMwy z>#8}%Kcrq5maDuIGXp%gN|)SLBLl*O5COERm zcUAjM=6s+&T8i3rT$4b$d;-Iwl4!^BxA7fgHGwZ_+WFz@8ISf-h1VkUOJ+YtQ=Jng zrW6YjDAky}u`fMJ-KVuu?_M?A^FqSHYl*et%w^yId+T+5cIR9l^}0Pp*eL5?jf0MTP= zClFCpie}bF8go=j_vN=&VOP=KM1#1G%e^-a(pnbqD3rta4MRJrr%U@=IphcYpk2nz z6Vj&E8^+6>VRNCxq`@{)qcy5WBh1jU<5cW{VOMyFu$R9>aOd%Q5_e}npD&x*%l3ZH z9CD#6xl9gOTN$DnZWT~KV+dPN^>n>FF#;i6x%FGz`r^@sCxP?78xr-n#wj4mDE94) z?!&TO+zBkN@Wz6Ld12tI5t{(!Ax2Sk7t>~2WoBxuoli3CtO`J4Htov?aLwf{&n}Pq z1*?)+%g-z7Yt^f()Vg-1=us>`tn4l>FnAx{6Lr%~{C2eVcunOvxvxZd6L3C@x2NbR z#8VIqx^k|=fG6onwQt4&1Wql&4=?`&L8=kb$DbfC2RhY=cSbKaJP@r&bHm>J&cA8&atl4E`w8@u!6Dr>y4$03BHaKDXE@}1i YC1-!5?Cfc?)wQy}|AyawNN{uTPg1vHga7~l literal 0 HcmV?d00001 diff --git a/img/p/de-default-small.jpg b/img/p/de-default-small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..11e9c36886bc33382cc8a795c4f7d4ab4863facc GIT binary patch literal 1220 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6Cz%mqC}AQHg;`kdaxC@&6G9d7vj*8Nq-73K*GyZe(NU;N;>4 zD%dK(z{JSR%*4VBay3wOEl{3;MUYiU(a@1iI53f2sZhkIapFP_Wv7h?MT0JWP%%y_ zYU1P)6PJ*bQdLve(9|+9H8Z!cv~qTFb#wRd^a>6M4GWKmj7m;PO-s+n%qlJ^Ei136 ztZHs)ZENr7?3y%r%G7DoXUv?nXz`Mz%a*TLxoXqqEnBy3-?4Mop~FXx9y@;G&P778mFHFAhJOi*hHi=1j?9ZhleV_)E}1i1ED_o0f%I-y=hnAeD{tdU_|+OZD8l z-EpSvkwTNd#>T?l-`n1vUsrK_y$EBnh~TV7eT5kgK^1fSc0ba3@Uy$;X{{Sy#mbHa zJoS<YL{ziZKCa(AdkAx^4_VQ4?b|p_7;4f&ue;O-P#3PuRNRV+f@0q z_vnqj2Yc2E|J-EQdDv*f3?_rJ9WuqS{XJjKMh9L_{C9Mh+4hS*9J-1jDXAGZwpqR9 zf5v!saopVOi5otccl>AA@>D!(-hyjutKx$HE;yLle74M?q2@40pr6Ni9b`Xpwm#+XPSW^zL(Y+g@I3uW7`i zd6I#7%ZKp8Z<8Iae(7A_yXACp{*$ezVs@sK!Xt99*|4jh7%h`?q literal 0 HcmV?d00001 diff --git a/img/p/de-default-thickbox.jpg b/img/p/de-default-thickbox.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c37db26802e3267a1cb4b278991ed9d4dffd9df5 GIT binary patch literal 12500 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 K-Hni^t^Wl!0L!ib literal 0 HcmV?d00001 diff --git a/img/p/en-default-home.jpg b/img/p/en-default-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae66584319cc1119a251037135a73c106c4f9b34 GIT binary patch literal 3026 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 literal 0 HcmV?d00001 diff --git a/img/p/en-default-large.jpg b/img/p/en-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d08a055e03dfb8462820fd6709e102724d0fa868 GIT binary patch literal 6819 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 T@Uq{`&V9IOyE+`^FDL&8dq?EY literal 0 HcmV?d00001 diff --git a/img/p/en.jpg b/img/p/en.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d07b871d2d2968a7d8e6a169fe808e4fe1f86e8 GIT binary patch literal 10859 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 literal 0 HcmV?d00001 diff --git a/img/p/es-default-home.jpg b/img/p/es-default-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a047358b8dcd9e1c419a3aaf6419f35254664d16 GIT binary patch literal 3155 zcmb7FcRbwL7XM9S7{&~vmy8~X-igjKIuU{>ql87YL>H?>4T&)uJS; zj_9ii&gXvaIrn_dx#xS%IiEP62T%sO`nmuJ1OOn)0?wxa zZ2$rWUu+6NDH{fd!JtqWEj2Y2oQ{@`4nd1R&?6a9^hh)kfk3gK&`cO+W@b7DRyGz4 z8zY7pb72Gop}c{@XkaiJ3_XG#^MBKM2Y`kH(Lgi=#0P-UAP5?C-UV<`oP>Zb2>6>o zFe)fD7y_qAG5>Y_m-u`Npo4$_FbaaAgm_j-xsFPw!3u#j06q;cjYe*+0P2Z!e64=B z$Kv}6;^lCJkV9{i#ZiIixQAbDBb+I5di<&5pd)q8x9wvjS8Z#1PUHJl8P(t-H_jI} zAKi}vgNmUyxYgBs%jHd(#yOW6QuY(Ftn;2ZDw6vT3aRvLPe&*bRy_nS-JLI1ZahLvanvh!OOpKu|E` zLP8-*RzP4X0L93R#o(Ew+tpOMN+lRj~Qf(sm1M_B93zX8g=>Rgs)k< ztvo(HACtLie&M{FAby6bUw=sdHBUoaL`yo8tmRCk-Vf~;uB>j}=$SasZGsxH-5O$> zI~fmNavRG(UPx+O?5)I{T3nkRa&&XOX=Lhv_Evq}@%=`aqbUp;Ys6BFusq!ZPj zl}tS|TE7>p#pIbRSp*i|v3BBEMm&^!gc%NO)-ZW}-+M40H-@XNpNThoi?06|ZZvm` z*Q6#=C@xCmh)?TkWPRiXV$lBq(w|?8|Kl$y7*hxF|APYfZv}Z200u!oR8R*Xl%_d`-^m}#mqsNZjc=FK(!OqSHz2xU;jesAse{S2F3k~~pGtKPFpHsM z(uCf1eWhmm=^ZZQ4_S+EJ}vAPEQgrIb3Pg2(TI`J6n96z{WjxDWD~N{B3&JM1KyNd z;r2gxE?nTk8#sShCjW{?mc*4rA61OM}QChfl?L#syA<38qX*f16z0~C!MjC$1 ze3;Sk1HGMW(E7;`eK5XBP`&)qIpF1%gv)uDb}VI)n_YL2p9J%J>wdCI&e+SUgZfQuwbt~^2*5=sqNdRO!1-?M)Qu=+T*{0|(n$db|bJC3vao@%g;TV;WZWO;hJ}swd6C zC4@e!akjmY=>U^3;#5EE<-8K&p0K29wR5}Y8u0@n%Js{Ph=lK$;u`}iMHi)&U-Hst z`>}*3Q6q1Dd|CMCQm0rVqQPJ0?on;wZc3v27&**p`pS!KgBUfH9g(2>&*GvgtO(T0 z#A)ue0awR&ouJeLeOSKV%ruJ_ds@APY;~ag*$;Qx{0_gxDu}8~MAP1zBQa1)NC-t~ zO_UmeQfA7ZH3mWh7q#Jp^^YzwOKaGX#P9yy!PI%lbmUr=A^aE-#{TlhneSH;B|pwiolRSO$Bt@fp*0MbWdaBVxt>4RYj+)Py!|3yvv}K()2o z;Z8YBTQUTktW=o41cj*=lQKh|Di`K@j5_*NX4LGttdyjeUx|LdZR*SBphUe^ zD4B{?eZ+kq&)g(ediHK6lXf|3AXH3c*~9K+aN&u1NncRMuh%B)_VBssmptCP7grzH znFzD9cQ`AKsoD~6CUo1rwaA{CO_7-69ctwXyT~<)x`f$pgUjN; z-%aWs(t(}-*W=}oLSgmC{0WJVC6;D=7wk-xmq>ft$%}VG=48^&9;58H`p79pEZW;N zV)@`eSawXnml#={F2)pnY5CB0w_54nre{WdJcZSW(LOP(B`q?=sAODp{6wF~V;8)- z@2G>Jar$*WYO&)cqY{DJRp3p)v4)8g$Tt#+a*F4xf1Rhx404%rA|~DzQrQ>{s&TPf zq4K8JBc#|1=aWIu(|8k8k#3DcOYpIz&Z(dFbA0K8wyN?_q3y~k@3xLklSYI5B#3y_ z(aU)nctxT@umW@CIwC!zyyUa;4VUNQ7$^7xP_nukl3h$2MAKmIvl5c|TI$kkHgJUB zdui+Xx4e7F;*;+12t4nc+Ua-G+YHv-Dv4Kr-#qFH4`I7vV{gnUR@U&F@kq)8?eKPU zK_C%(9B@16pi#@Ua#XRV`rZ&GcHg(92s`n}D4LrB8gn6RXXui=RNb(7wk1e73s7NsHpwUq=^Qlx%S)_OG?EYT ze1?Wj=fDKgfvYA)#L!u`%g7a1THPgMo~IJ5#21gncErB&vMbPSe5W-@OQi|79j=Sjvb(;)M1b(rk46<)V6>x!3A4O~fM|UXc1Bm@ zrJ8NKtFd_ueb+)wHndSLN^`9RA2T&??HxDl-I~42IT;e8`&wXi&jci5miB-!+#=*DS)W=N)^t$Aa>x9kCRi)( z&9QVu5&aI9FfS^eQW)5`Qxr>5-w7T#D z%0olNKt)ACLB&ExN5jCu!ok7D!p6qMBLL&#;p1UrgGs>ngha%|#5j*g$w-LE2#AP@ zeuIFJAJ(9tVxppA65(Rw68)d$egMG70I`GEkwFXq51zc9I&fVljI zvY8ihx4mLtvKey;w~6HmUg*l16uIc+S=DVCrfOa7F{+b2z<<9e)FewNL30l*9p!umCAA<1JRBwvD$+d=%IxLP#)T*edgbWND^(J(H)UwHL->lX z*+z7JY7O= zmLZF^_Mdw1(%ijx>dMJMoGwnMjWJ1myo=t1LV;Gw850bSv;m40=2D1~l<%T3+AkiT zss-EbeOX#4igpov=Pn56XkEIA;nt6G_3UkV(}-MFnpQga-SiRZWvXB>lgXs#X02!G zaoR7M+@boO=N~BxwK-?CD{S{DyklnyZUULTxc-7K&7%mx;-MA_G zYfEUnsgoanHkpRrjE0ToMC7@T6I@Opd-n53hg3p9kjFBD?PmM7FGm`}){k}=n$hy3 zNVdCKnI_FC8#c6TWKry+&y^6QGl7Mb5w&M=~UdV%g`HqYROk zHKjpFlg);0ph+=5W_ZGoV9t`)^XnwjI@uB zo2(~oRDQvD51n86@-Kp1^mFJSPJtqt8utK(HEe7z9pf#<>(8=-q;N`a<#QNbK5m@M zj|-OEV=dn)!@4wM!wYQJFoosqpm)uCgN`#9xtGEE+iz;9b*f$KcDX3`t4MfU6NpVi z?WAqfjAlze3K!3WkesXw9CP^`BjA1?NoaJuPfQcP<91tSHHT|-P?PX{I5w$+R4^V| z)t-E4-5GSCG2V~=c<0=Q=&e5H=W-=~n_Q7$Z{AdZOWfK*BBf10W!+t^%02B$ncanC zu*ayzmKb*m%OEm+pAbj2DJSX>=qP?$vq&;QWK^EbtERwR+oGtj+T6>M`2~YYKE73yWshVO);yO znhJ*?xH|X1PjIWWfDLheIqR?0Oh32oaq*G+>yPL*D$HU3E0C$7&Zy8HHu;r%`N|XJ z&3&i!P=0n7+f{SFoaZ!2TJ2qlFVG#?-d!T9->mQ}r8ukMWzwuDZK=Oq%hfv|Ze2bX z-kr-k;=jDYKX7N<>^XmZ5a-(BY#UYG+A-Npi6Q(7t7D`sRN39D&<*T7`YH9R?b?$e z;wI&g$yfN5ebncVyQOScBK7At-xAOH=no@;pY7Fl&`?W-2PUQM9U)~LZ>$Ui58N&m zx5rj|ifx`ftK6rB72LWgk=YT%BFfNX*lri|Dfq~Izofpi6FNRFYVFRO z`uuu&9n~w+x-<@@-tT4`J6===XGt(`M@rU1Z{G(7y+2B?JQ2DrsuE zth2n!!>NL*NjlooCiQiSPpS{YyPv|u-||CW)w=Qe`_sjk52rJk9%ES$2;bL)Sp3Wt zL%*GTq3ad?gppx?s(`QLR|b=xnnT90fD;`Tge1dfjAxTu(#xW*8}l@v&{udkhB`J#zaT_r@u z&?>msoGdb|T)$$a?70%~W3k;;OETELaqF&q2Y-76-F(v6R;+lp>*x-ZU7HRnutpr7 zixyZMO+%@GoxP&WFhV~XyxsAu#HBgRvZ&gma! zTv2;D{DN0iF`xeu-dl2&pqy@B{A%ryfwNP+JFS~(MU4Qh#!ZZy%9|X|6+xaG`0`f9 z6h`JZ}o<>0BT;B{gS*_;m$~Tk}ZTe)X4{cND#E+tTcso*kOr ziB|k!{B<>QK+XD{3Ji11sX%z#lcDtTmrC2$RoSv&D3j-~$J6aPd#B)eK+nKkaPh-d zZ1GO*ACm-kY|Haiwq^nPRoBC6$yk~2yc2`Y#&YSYP={;_jZUqO?}8UJD~74#t2>md zCgGbM14)?tg3sC(^74z5hu_e!e@8VvTF39nsumYdOdhUR^;k|dTs~Z}9VofAJtDdX z%$?^Cs;>6AhC8%FHce^2oqDBL-Zq~&XRcneeP*S#gH>^MKd0RP5qp>avx@yR`w)Z! z9_hXZhR)_pmD`2Tj`&@RTX(ds+hz6-h8}Ojy_ER`Gh+CsUR_|pgtwfS27HL@PKb$1 z2l#`E+4^HJK09r`#PbG;kf~eU_`4IOnn_P`4BBn`JQ@is#`0yHDIP9rZ_@B}<%ZkN zS1WG}LKIn^RJOKi@DJbS94+M>nM>UYC+M{&W}8NJ6VHeVXXj0Q zB5xVcmm+7HFPRnNc*~-e7}clC#M5108}x+Nd4ZaoO7Ue4xAU<(O3K$d!30Aw=bLZK zk6$`|%H!RSxc%W?>@+b!cWxYQ?|mqVwY+0i=lcxnwKvL3+@&C)$&ryKvIr;_ydKwiodwO-+zvwJ`z%Xkob~ppwt|Krtuzzli1h$R z`x2Zo4>XeqY#cq2?N5gEJ~a*LWr77sm`+gyL#unzrP*^qDz!Mu5M=JYHFcFZ`H2qs zEm;+d^v4Uc!Hrsz2y1>`N0^7zX}mxL?2W%n)6M6CfH4aQ-XX3bk%N(+LVXL%G>sx> zx_qjikeck`8)h2Yg)qCHp;jK`kY%on!p@g&ukVNyAM?=Uh@dDrf`$5dK2FM~DplPG zRkN=b>9iOaLLA3;6C_bRFfAh1>9wO#h$1x94WrY>bENHp*tQNSU~M20?C!zA?}8-^ za;9jS{hLYeV^ieHyfAaizH}my;USD9LT1=gsrgjNUtK7K(Pl|nS}q^f*G^k(MRTy= zr;lzsmS4(ISa@*E)rAnmIe5F(DxyJyTqjK=JNt;zMdE_8vy@ey_&Plr`Z_9@^XyQ* zkSgVd>*tx#JCeT!Z!25rk{DsubAho40u_4V#1CepR5N!DaeMQ<%HzV-r9PiZu-c| z7!hO^=n^L?1*&x@1ZrzkiAKK88ST(b4(hp)(O%59>UzQT67KE?pz~Bhzgt-%HSScX z%(*Cfsp5F_aDH*{c1kwG(TjeJW2>kepOm{YI!>VsFW`amLEUO;sK7*oDIIbNS>&Xw zJa@jM6Ku$JJ-e+7$TOicWN(xneQV8lwM?j%Y@@)J_%_+IO)5Xt>UFaHx1+e)Ezu}a zv^8xKyS|q1`5OfK17BQ`pL;U7Xc@vIny3|>$<^YC1G~{KK+T*ICLzH^676yyS|s^2 zW4##nBe&NuZp&rKtwTKK;?=14u8(x`C}1Y3@~bK`44$BOxNHKpGtIxy^b~&zx8O{B zGKKT;1FPAWXbId7<5YC^P9-sCGa(-80{ggndq_p^O{j32jONNk9}__LqFVG$u-o@a z+TWZ=_so%Q2L(3!2sBy^;d4qApm*sWZ%(!{n<6_VP%@?3JsY#jNtGEDZXlpN?&0M@ zQ;kg@uv~N|)%fZX0jVbXC82s-U%Qe3F4%RuA}LSKF*7xi(4!ox;v<}hKIxmrW!l98 z_SnZi#NewASj6>y_lFTSyhh_!V9ER@iW{|{jhF{<$vSGKr^y;|UJEnh1j|8G%<&1; zmV^ZlS@>I~>ox6qhn61Spi zl%I;E8z07i(`fg6oeX{2TY=%_X`B`vS5ZdJ5r!=G#?cWueZ*Wqo#B<@P=ow-OgSEr zSq!-Uito;{cJ&^RI(YXG*#5k(0e;6n@Y%H3zolvZH&|^ACMj95ruSr9zqcdW7@$H# zu%9OWrNck}FgW?Q{%IW1ATD=53jh3{2s03|*+Hs^n19(x^>4BEw^e_(|DkUBU0Q+v z_tNTb6;|-W-Nx_B5R`wI2J{!vSc4yk2EkoOC-uNGjs5?k8Sp*Oo0@c!E_3&8W8_X~ zPs{@)bm|b@B>1eR+L0a*5-FFGe!E8SO>GuGwILdy=KoM%!37^q%LLljP|f8E^g&8B zhPp_d5s?kV7?m+&rH?Szl8pW+uib9dcyj>#@X|oTkF234g6G@OX`^M&9Q7}kG^g2e8p-YrI9JaP{Z<}h$z@Is=cxfsNvX7o18M&*?{ z4Vobe2XKsx4hm$S0F6ThF!8qI5khfYmGFp&G+@u4wse)=p%1$RoP+6PYD$0+?qD$N zEmwF>s)yd)=~M_FJt|QRCPlZfMt1u{&*2_WbFTV?IwJ-V6U)}z{>hR&yn#~V^T%=O z)$o>%fU$)CkA_QPEQX3rTi?OUiC>AVE==5%Yt;TPrsBSl12eCH(GyG`*ehbRb-O+D_MIcmgn`#(^e{$aC>#`xkVvyGl#@QhC5G2J4 z$HI4S!z8u0BT`Mat87RQe}kBXlo z4nRw8I}hjD6AK^o(t4-8CF#Az6<7RhnwTL{ntp>`2x9Jt9#IEz75+5=eO|J@|KyKY zCXODllZ|svQf5tsLb|Rx+K{VTN3;?3_Mgf6Ec&7;~cNk?F1q_9$z4(kRO^A>Z67hRPaX+ zXN|Wv)5iG$fZX}lvT>Vue*8M7;3?!O-$U7qL%*xcq0gJ@0z>AI<4u{R^%Pf!$dQ3N zq%k?D*;iZd@2s;T<8HOLzS0t7IV2q_`ntF8gJLN;=s1?dHiW=%k1m?AU%lH8=@&7T z;4Zznb%t1zi{FLr_uzOG=_fzYJL{d_9Tf*W!XM4jT?7vGW{CRVA_tdY_~X_LQ&%zs@VfiGUF)}N{6ZWcPxcY1Yo7`#UESYdo<6gx6Dv3!#o-_BD^uD zkO*R2Ht`hAtp8AzE0x;zAfKOHGf=jm9n6VzymcDa$R8OT2BJt`Mkdv*Uw?V}`(A<_X_z0W+06S#>o1yaW|axLn+QnBoc>Z@f-yU(Rp$#mJMhj^GkjZQL-I2<8Q zx)f3z8{+4w6}}?Yju1v zvVn}wr4e@{OD2P$NJTeyppT_O)X0Zkb^}z(Qwyg{;E8S_F{{k5!5m0%F<`wItg6go z@2MCWUah|Q+#c?6egdWet+y|7IG#n)i4P&H%{=l3%S~d~&R9-MUsA0vb3ej$XX?#Y zV~&<9i@OLHL9E@W;e5Vafvv&6@#YyD`4Vx7uEPAC^nFb?XX?e?EK5zAumvmRyO^RQ z;<(y9O5_b@jU$+ojVnVXuQu1f+0m>Qq{qSUD+~!OcltHkNSAwmfET8RGk&7?19{kD zmGgicz}91*WL#Okrx^HPB#qG==mS=l$U8Cs=_zy$1{=A~^<-s(Pi?v!lm{dfM{#K5 zwrM`)@K$`rlcI>pd5wsmG;y@bl&X7675FWSE<&!LJV~2Yem6pzt{97IR(+0W(|IkT zK}6h(X(Q5r)nd^dv$c|JF{NQqTp*6Qg}HS^$2YeV|G9Fp+Br8%H192Y|BS%nDE=ua zMi=VzY*&W{y?Ox;2pde&>A>p+t7T#t|D`Qg6Vx@syBQ!s1~s zr}4m`N2OOKB7p`L^J|3_aB%r(+w&QmD=Lt#33pe0AGE-1dapjYpXZzGg#_a*hP?D~ j&tNihrI*d!e_i+bQ>1+Rb~jQRb>*Pt4=OO|e)&HD(n=L@ literal 0 HcmV?d00001 diff --git a/img/p/es-default-medium.jpg b/img/p/es-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89043661550cf408a514e73af01f85112fa63863 GIT binary patch literal 1802 zcmb7EdpJ~E6yN8}jHWXlXUxzL!g%B&k492rkXLDjrd)ccl$u20hDk}2Jm!{)x{4k* zy{4k1`cU#Hlm;c!m_iR4$weMhdMI<*qVnLwCKRU@fU|Ftxka=wQL0EdTQ z0-&mBYB5oYDfS!@0|61>(VqSzXN%kI5(ZkbGwSqvWxL;Vyn@2YPZljIq2{*QgwQiB zbmvF%Dz5O? zo&L0Sjq5|yIFTxpzTwlpI$36n*Eq5IOw=VLGsn}%EV-+xLpn42kY$9|=HCp+!(WFi zvW!#cl2fta2iB(U_ABdZx9%KvTou9Eo1GO&(4bq-q8+?{B#Rdc9vF+$!bkgeRY%27 zBW^3%*!6x+!iRf-)-jCL+|2 zub~aC_2igTQ9GnHz+c`S^A4`oxlC>90Gf3Tx%|cUi^_-eOBxfxWBf}rc0`1PKsFYn zsE@UE|MZ9$S3d{e>hLqn7o5pxUYa*WZ{tvN|Gb52N8$==s!}Q0L-2Nii5t1%iXt{JtIrhTod8$gQS*k|4`M%d@P7{$jSW@ctgledg_YFO-HfH#7Y;!PZTdi z21a&n0c%jEe>6WcZ$d!G)#%GeQ2t5Pz-lM6SeliZ{-K8vsiV!OEw75xk@FcI_4WI7 z`zD#&n8abX&b8e24}X#ja`3optfLu z12#Dx^j*58_*%utc^>2-yB)ooRXI0N68psd>*ln+(x&-`?s(q@Q;tMg#~*ak(={YL z9yB@UE_AQDNfW!jWiPWyT*K5qxl(Y&*7H0>{&-wxnxrOvTg&yM9Tz-_-dh>0veM(> zH*2mB_S6~lY!2u3OS@Ou7eI&XA2dF{pT9cj34zgfG=978&@9V&a)D8v&l1|4m)|zH z`AX)Rd(D?kWuMWDsO_$|-#V+1O=AmvlFV+keHhW07$QJP94de0EN@`Q571yWtKoWQ zbWSxVWNYJWYzA2z4;j6}B6A zU!5*$vSqa=CnBb#rm{=RqNNQ^2r^<`SU$Uvux_<%Ufv6;cPG0%%Dw%fHAjkL3wcTDLWGk`J9rhide>-n zBQ@+$H?y;ybDhQxN3K1$oBPy&)feQ(^xx-a%9B-cjEUl~7Tf!2h7$S)!_?vdsg7B> zbP5x{qTy<>zek*kj@yq!dpXq%{bTTDyH(Z$@e&7 z{3kr@;LYD!hp0c1umo*;_6%QW^}3iDoVaP1T}TlUXt1(3!^a(*)~?SJ52U7865Z`B MY0Qmd$%<$H0_qf|3jhEB literal 0 HcmV?d00001 diff --git a/img/p/es-default-small.jpg b/img/p/es-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3118b097d6e8cc4d6576824d79d203337d28f71 GIT binary patch literal 1014 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxlccbI#jOlU5{m6Wz48JKj4VJuBaCHcWMW|zQ4kao zRx$t@!vQp$k(KFYT*upVr!zqpKA9{tl;>M6(zo;*!ym;BiE-*&hcpC=cMGXJ=lu9) z-+hpK1X0`xG#X+M(Eav|@^}<5!4&8UFfaj~!OY4Da~C6%AcGLIqLQJ4W1_He;KYT> z21Y@JlP+F*2z4WyJ<}s@tG>gX#teE7KA)-6oXor7g4v^!Kldj-_3PzQ_#I?@*5Ubl zFZUhd>=jQ_Tw|<_bt0!;bAERF@4cyQ(_^z53!i%#th*oJ#MohHo3u2A<#0|*h5S># zPq(+6*6H1+AG?~z^hdk1S+?<%<5Rs1gX&to%=!Br=o>`=U_gTaJP;WL6&Va26BPmr z4;oDT01HHW#ZU1};Wwo}y)+W$RQ`F++fzu8S?UGL zP2Bsk`j1oZyC3!Du()Rcxkq3jht8sN28Z#4Iw)EM2t^B6fr0=qF@QV@PjHNa42p)0 zj)ek&6B8BS9u@e{;A$68mh2z$_xzbZr;kh4rhe_NW@&P*QZhIruN-u96{8u0psK~+ zRfcS_&J4>qTrMA9xyo5rU25s+OOFB>c$H=gsx3FlQ{}3UtUmNXJkKQ~WAfhic>=aa zKVMa?VEbaACBpr;t4sU+``Fh#sc@^hA N@A-A^bA9Fin*g)37PtTa literal 0 HcmV?d00001 diff --git a/img/p/es-default-thickbox.jpg b/img/p/es-default-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3db0c85b31976681d993e19baba88af2e33e7bd6 GIT binary patch literal 8105 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 literal 0 HcmV?d00001 diff --git a/img/p/es.jpg b/img/p/es.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28d7b8c81516e80cfc3027882a806825d27fc2f0 GIT binary patch literal 6828 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 Ax&QzG literal 0 HcmV?d00001 diff --git a/img/p/fr-default-home.jpg b/img/p/fr-default-home.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b69c6bb700a9e3d7e7d3bc92e5aef60a825d4a59 GIT binary patch literal 3648 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 literal 0 HcmV?d00001 diff --git a/img/p/fr-default-large.jpg b/img/p/fr-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70c8ca6b7938871aa95e2f9337bf346693231b35 GIT binary patch literal 8272 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 H9~S=$9s;s( literal 0 HcmV?d00001 diff --git a/img/p/fr-default-medium.jpg b/img/p/fr-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a216e5ea41430cf5f13215ef83141ef99f1347ab GIT binary patch literal 2223 zcmb7Ec|4Ts7k_8od2NGPjiqAjvXi;hwar|2GKy4)Y0)qUm27P!Y9d$2SZ_j%5F&pF?7&Ud+cc>us}-sG?e zKp+4B0WV;=53mD3BywfLf`T_B1wkkjBqJ#)Atfs#D~pyvqvhoBSUGu|JQ|H9VQ~ba zf`Wo9Mp21GRKgP#h$}xqfUpe;l7=8@q8wU|_8N2mwkUrQk>6f8BpoSndU6LD&QfV&M!I3gAnmS;Oy(?OR@GC>N1V7=31w ziJ!V=;zql9#w8n1-M)viapn~m4%y%M(H2*zVm1Eh_}E7I``NG|26mx=h1~-P6ny+6 zAPRwm2mltRK&0YHWZ0n;90meHE;QRl2K0OSU-4wU+wJM4Q|2LewLf+%zBaap>(KR^ z%tOigk+-5(Ns5@X{5PF>Iw9)u7jWYGkn%;S1{lNEm-eSbwv=pZKevC**EyxpTql8& zf# zzbGKTDNtZ&5Fm(vP*ReAV}pQELgDZPbu$f3bJ})d2)7nXUPs;GefkBYW#^SQIQb7+ z61K?2yKTb2Gasw8A}aRUsKrZ^7WJ)Z>+=wJQs+Bwp!C}77K7U6wC0C~b_mKW6<2K# z{2|PGtYMI5vH9smozbDdpD1(x~b4rsFN86 z`nfL~x8@IbNbd`80wyEJ9n>rRd0fszFIo$qxTosz)Q3X@$M5Alh*lj`?dn`oZC2Ay z-5r^RNK3MP`;>#B8r%9o>9;@RHBdN~bDGgIf865fDS4}#KRNLqcMuj|)_53r2 zqxDp)dY@d1$EQDL_{WSsF;e4ydM__zTL-!si}QJfqB*ZEDP4HlvZa)PF8iQi_Cpd6XdF!5OY0NHX=F`bq+Y9_NwNW-Tb6O z!xgNyo=!>SCnb9etLYCykN8ffZ>aq&%+NgC(*ey4**>D8b-mmAu12dpU>eoa%l$2N ztcH`b-SUJ`LrN3d=VILn0g<1-VHq&=RI6GB;0Dyh!gGa0B2eGQAAtkZ&1l=bLQZqB zWa^#TZ?k8szO=u0%-w$tbKYF^tLhX>g-)cM9bG+rnX*2|eqj&sPqJ7e^n^F}sa=)y z>ywpRb&JeQhTQ>$gXv9;m-5(xqlf!d6{7Adw(e+qS=t6DJ=|ujudr@>UwUC?8~*O> zYP1s}p6aQ5E76O@xmeSlw%w;wG<)C!q@XO7i-FE_kZW96)=C4pY44$A^U!+Fymn`r zbakAC@Ujf~&6hn+JjLT73l9K2#s&2BpVS7$*c*H<#qjbka{;w}NZ+6cgx;X|#cu?M@Z+ae^AFdFOr4QOm`v9j+m3t&9^7c${b8 zp(wu^LHDYk!CdlqC*fSng)+_T+{+0CL3!>3%N$l-X;lH^&0WTAi-^U36{}k}FI4f)7N$zCKtA60% zCc>JFyoi$G;+(W2F&t@}Z_rGSt!tFr7Rge;<{D_I@nig1z>M*1Q0>>|BP4%)U>Ptc z_*5YIC&ccF#{N2 zXGQ}r#GXm5lQ7O=JImiRsnrOcdrKU9qZ0PzmVlBp5N`0CO5rj7Wb>OEKi)iZ=tbDt T554%Ek015M9>BbY383dMnILVf literal 0 HcmV?d00001 diff --git a/img/p/fr-default-small.jpg b/img/p/fr-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c3ae1720997765aed869fc50d1e00a75466631f GIT binary patch literal 1259 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTox3wDFX5aD)@hkfd{CZ zNq|`Z=)5TAceZfKN(SyXJUerW*vpG%3XdwdHrx;~nqm($LS6u9K8g)M+gKP_ zMHK{ugq4A&aRBXLWMz71{zmuC>}8UhDrKc}H{BOocecFPe#*P#o4nJtb>pOtN^_m* z->de}Xac`l%c&SMkylyO(ks1LN>>QYO)cWQrc}TrCc7WxWI=Q%8-OigW@NNyl*glh z38ugR=we1@MrKYTP`jT0AcJji0?6qJ}$*mUV4)C+9(OfT=0 zxjmcHG?SO9t@+{FSS=AJYo#g1McnQa-Y+)`_1${nWbhU?`Gb^^Q1)#cXdT)bEa||EIBgQB536{ zi44>2yMtK1osId{UH0?LlsS4F6Fc+PZ);*adz<0hnWVA=_ct0b&RQAPJ{@;18l(g; zt7*tl>bEW+#+zfXAG=oZnIJN@O+j}oWY#4qnZn!;e|-KanJ zzQp&NjN#nd8`AcseA;oeWB;Djhoe>Pl>DR_x}t)cY>2C12ZuB3J5fEIQlRg z#uNLXPiog&`EQAM+!2F`xli$_+ciKI1mW%z7A=Wli zX(Kzc{zL{D4<+qyM>%q4raExVQQJ`7(2=)9pgch7m!OR6*~hEx8Kb5ra|6; zlh%b@+DaMgcpIJun{ut6G-pw2-%HmU9nIHPWMv$CdM%;D;e?o2wB77mO&&TeYZO1j@B5*w#vsMN ze#f#T-s?}62wc3mJB{a7qZbf5IO_lnbRUg#1Eb<+=g9UG*usBWEv OxnAtkdphU;-vj_5sEUyQ literal 0 HcmV?d00001 diff --git a/img/p/fr-default-thickbox.jpg b/img/p/fr-default-thickbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f932656b54d1e0176af2bc6b75b6dc582d48133 GIT binary patch literal 10087 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 literal 0 HcmV?d00001 diff --git a/img/p/fr.jpg b/img/p/fr.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ed443472f6457de2a66f10fed0c34e25d4620b0f GIT binary patch literal 13454 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 literal 0 HcmV?d00001 diff --git a/img/p/index.php b/img/p/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/p/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/p/it-default-home.jpg b/img/p/it-default-home.jpg new file mode 100755 index 0000000000000000000000000000000000000000..54c4bd95b69038e31ff0f26a62a3acd4def700fe GIT binary patch literal 4601 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 literal 0 HcmV?d00001 diff --git a/img/p/it-default-large.jpg b/img/p/it-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..97bf6f2f08d6cd8c84070bfc470dc5a22dbb5347 GIT binary patch literal 11828 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 literal 0 HcmV?d00001 diff --git a/img/p/it-default-medium.jpg b/img/p/it-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..461031f99934d59dbe75a84ed825b9b74101c174 GIT binary patch literal 2607 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 JLI?T(Hvtr}PZR(E literal 0 HcmV?d00001 diff --git a/img/p/it-default-thickbox.jpg b/img/p/it-default-thickbox.jpg new file mode 100755 index 0000000000000000000000000000000000000000..96fc64a4ef431d6003e3f329b69541edebafe655 GIT binary patch literal 15175 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 literal 0 HcmV?d00001 diff --git a/img/p/it.jpg b/img/p/it.jpg new file mode 100755 index 0000000000000000000000000000000000000000..94802add7e6e15673d950cf943b205f6b139eefa GIT binary patch literal 35628 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 Ksl9)th5rG(VF{}M literal 0 HcmV?d00001 diff --git a/img/s/index.php b/img/s/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/s/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/scenes/1-large_scene.jpg b/img/scenes/1-large_scene.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4e31adc1e3beaa4560a8d3f22f8ae599f281062 GIT binary patch literal 36207 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 literal 0 HcmV?d00001 diff --git a/img/scenes/1.jpg b/img/scenes/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d5ece377f908ccb0149a06ccbd3acc8fbb66bc65 GIT binary patch literal 34152 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 literal 0 HcmV?d00001 diff --git a/img/su/2-large.jpg b/img/su/2-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee4eb5fa8140bc6e8b240caa89dc6068a2b197fc GIT binary patch literal 4222 zcmcguXIN8Nw?1j~l13Fm@8Hm)0mTrJP$bfe6d@ETihy(rO(cl4P()M^5eOZFbWs5j zX$n%MC`E=M0s)*6m2!hK&iCB=+(q4$-5AWRu3j2#AJM{{#>qyOL7YXcB$AZ3s;1SAQ75g-TxwAT)Z?z;+x z01)6GFx>(}VIT-QbDJN;#6LSfUqIl!aexcLl!8Ox%�z{qOt#$_zqLiBxbV-srdW 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 literal 0 HcmV?d00001 diff --git a/img/su/de-default-large.jpg b/img/su/de-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..dcc29c8f14dd0455ddb3b39d3176e4f521c9933d GIT binary patch literal 8343 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 H`uu+bgPCz+ literal 0 HcmV?d00001 diff --git a/img/su/de-default-medium.jpg b/img/su/de-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c0ee666461c87378d46070c5c514857386e472c1 GIT binary patch literal 2010 zcmbW%dpOkT9suy)%x}hR1~X&EZNeCXLdk6;Qphz7x=6#O!nkEC2D8}`ty{{@Y-pt{ ztxIx^K_fygAxRTuTnm&5rgw=RD8Zf6h7I_xpYSc`wiR^SsaVZob_d15i$O zj&=Y90ss)v05-n@<~AO-R!1lvdkHkZox$h)X@p3FUAqa}>ES_PG=ig(J;BM%)}9ba zHr$~{I8Q$n8Wh1G>?4@%mf9QwYyc1n-AYlwL7bOr{Ogu^AV(gy?uv{u?g99kJ(_{MDZl5|ffsSijs%&&a&>YgXR9-}4I! zi|!Xctg2?$)Yd)Xv^;HXYwvj0+4YM1x_{u!+d9 zTo3^KizS->g8hdJEpkC&Fc2ob<$^$?LJX#Cu9 zHB5BazBXK?5}1%)BRZoG3BF0wolNp5sn z|6~jqcK3FQ`R*m@bylAxZ>gh5MJJ>$a1)><%sv0u>MCr~6hJ0px>=^ko+a%L*)ek$ znVExH32R3a+TApQ)XqG}VS2JYy8+W?vj&%V#cvaGVp9qb1#&`19ans@q&%7a^EXN z>%5;D)h*R`;M|>>+Hn$+oRrjfassl-lHKOX@OG(f!#jS+u&-v}D@!`_I)h&rvNQ~6 z+8d2dzdjjh1I}O46xtSZzB_(=sO@6zi4gaYb$T)mSa4DtI3kEK zZhXY{nvdBp7B^oORGXkwo;5LEIzNeQ_tfjI&*T+TR9q>_s`A2>LSg2yzC8KWirMwy z>#8}%Kcrq5maDuIGXp%gN|)SLBLl*O5COERm zcUAjM=6s+&T8i3rT$4b$d;-Iwl4!^BxA7fgHGwZ_+WFz@8ISf-h1VkUOJ+YtQ=Jng zrW6YjDAky}u`fMJ-KVuu?_M?A^FqSHYl*et%w^yId+T+5cIR9l^}0Pp*eL5?jf0MTP= zClFCpie}bF8go=j_vN=&VOP=KM1#1G%e^-a(pnbqD3rta4MRJrr%U@=IphcYpk2nz z6Vj&E8^+6>VRNCxq`@{)qcy5WBh1jU<5cW{VOMyFu$R9>aOd%Q5_e}npD&x*%l3ZH z9CD#6xl9gOTN$DnZWT~KV+dPN^>n>FF#;i6x%FGz`r^@sCxP?78xr-n#wj4mDE94) z?!&TO+zBkN@Wz6Ld12tI5t{(!Ax2Sk7t>~2WoBxuoli3CtO`J4Htov?aLwf{&n}Pq z1*?)+%g-z7Yt^f()Vg-1=us>`tn4l>FnAx{6Lr%~{C2eVcunOvxvxZd6L3C@x2NbR z#8VIqx^k|=fG6onwQt4&1Wql&4=?`&L8=kb$DbfC2RhY=cSbKaJP@r&bHm>J&cA8&atl4E`w8@u!6Dr>y4$03BHaKDXE@}1i YC1-!5?Cfc?)wQy}|AyawNN{uTPg1vHga7~l literal 0 HcmV?d00001 diff --git a/img/su/de-default-small.jpg b/img/su/de-default-small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..11e9c36886bc33382cc8a795c4f7d4ab4863facc GIT binary patch literal 1220 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6Cz%mqC}AQHg;`kdaxC@&6G9d7vj*8Nq-73K*GyZe(NU;N;>4 zD%dK(z{JSR%*4VBay3wOEl{3;MUYiU(a@1iI53f2sZhkIapFP_Wv7h?MT0JWP%%y_ zYU1P)6PJ*bQdLve(9|+9H8Z!cv~qTFb#wRd^a>6M4GWKmj7m;PO-s+n%qlJ^Ei136 ztZHs)ZENr7?3y%r%G7DoXUv?nXz`Mz%a*TLxoXqqEnBy3-?4Mop~FXx9y@;G&P778mFHFAhJOi*hHi=1j?9ZhleV_)E}1i1ED_o0f%I-y=hnAeD{tdU_|+OZD8l z-EpSvkwTNd#>T?l-`n1vUsrK_y$EBnh~TV7eT5kgK^1fSc0ba3@Uy$;X{{Sy#mbHa zJoS<YL{ziZKCa(AdkAx^4_VQ4?b|p_7;4f&ue;O-P#3PuRNRV+f@0q z_vnqj2Yc2E|J-EQdDv*f3?_rJ9WuqS{XJjKMh9L_{C9Mh+4hS*9J-1jDXAGZwpqR9 zf5v!saopVOi5otccl>AA@>D!(-hyjutKx$HE;yLle74M?q2@40pr6Ni9b`Xpwm#+XPSW^zL(Y+g@I3uW7`i zd6I#7%ZKp8Z<8Iae(7A_yXACp{*$ezVs@sK!Xt99*|4jh7%h`?q literal 0 HcmV?d00001 diff --git a/img/su/de.jpg b/img/su/de.jpg new file mode 100755 index 0000000000000000000000000000000000000000..43716f65318bb486962929a0530b495c72153c52 GIT binary patch literal 11205 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 K-Hni^t^Wl!0L!ib literal 0 HcmV?d00001 diff --git a/img/su/en-default-large.jpg b/img/su/en-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83f20252e1df995424cce5269fac77d43a3a7c83 GIT binary patch literal 5919 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 literal 0 HcmV?d00001 diff --git a/img/su/en-default-medium.jpg b/img/su/en-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13546aa40c2e127b333becd0277c132a8544046f GIT binary patch literal 1845 zcmb7EdsvcZ8-HKUf`=DDQ_uu*Qwt5U`dlGInGPxsUCw#TG}F)4rlw0xXQ0_unPN06 zrb$zxX{Oc^n31|HQ)l9AYB~>DQ0f z_`W<}00aR5G#$V=1Z)8iaQNai2@;7wqH$<63Wc`BVlg<#5|4*0AuDSl$<~@+N3eoy zotD{=$&QYWcv}k1$$>_4aCBI70wR$}Gzx8jMq4;oL)H%eT8!TVcnlB@gu_7^0Kcy(-{HypZ~Avobc{Tm9QLr71gezq0MxCB}67Y>J`FN7uNV_C!+Hcf{lr z*0IU-(&Z*RX9$1;Fc1z$z6CQW;Rp~(gscewKG4Sb9R|~ck1??VkuZH^Na>FX__iJe zaQK35g_1r~evLUCBpM7&0&?!%w?|%!xt=gmRbMp84aA|G0h+VFkJNKq-uiwR^U(ZH zU+z20E{fi0-zSc3UVpA*F2YQfUb1&`mai&RR;Se+@Z~2oxdcSWR<2RUXEg0#LsMY` z$@r_ErP}_lucz&xqU+qLG0v&QB;o&(yEnW8-;gxrlmim}#sIctz<>bQV$?7M-0W@O zAPkNN5Y_}LjTsaJ5!VPQfj!6-49_h-JL{kQkpdJ4_Ug1w@mh}?I<@kAy(B4@YLTSn z&0WwY!SID#9JFJRQWGqkJ42SF`ZMC29sz}FFAv>2f zO371q-andX9*Od$_xm`#S2=XAemiM?*Ne2KhQyy8{byfRe%4BjUbvdMA}lk+7vpof z+V6HkG-sK}@07#k{a=GBYR-^T6whW z$`mb1w8FRfoTzL%e~>*f=X2uKGP`ZR9h5RWY0tmP@3<~}Dmij|9V^&fl0Tt($7c^V zY`|dm;T2f5p_ZGY7xC*Oa{b7|A6}uCuA0?OD`#dFiXsg%&rfk}z5N$4&f^VH&8;tQ zj^^4%ogwe)ca*P7zT27FFw?_5WYvp^-bXV99UwL!=3A z^6r+^byFIeZctjqAxV@kA0F}AI7xRu8;VGiI~EbVgva)ZT`j(#d2F;QCAQm0vFRiJ z2LiRxmpu%p`-tPz-jrZOI7RDGP`0gVhT8t9*7<3|y_KYIZ!~T%)bKXMnteLtHHzM{ zp)gz3U3WY)&q~A0jCAV{BlZlU@_zimIeG&wW2~q&bmkU4AVp5tcVdD5DDFO88Q5Bd z|JGhea=Aje3z_o-*^dXKFv0wqQH@d-&EKkTmP$R3uez4sYbisx>{vcfTyaT|H7-!B zx4)I@ZBfY|o4}sj6z`Dr3rW)+CRabU!R&JBe3=ulv_VXx4gk=jZm-!Q#-nbE6iM8D z0(f?mGS|(TEn>}eyZ+7SEY246PqX#LfCeqDH&e;rZ}3czAReGHxiL@>B`}2{EM8hD z9LPXV&f}`;i**;2Vr*UH?H$_v`T-eHRPy;xQ?E%6O4yY*YYp4Qn}z9J&3qJ-r$bX$=VK9>OiqQ~^}72#o%IZ1G&$vY z!IsG2^N&>#C)9;2T{rCAABV7tmjaUVcd>OFb>ro;%H8cXcPm>8#ZwL?ppbi;M&0x4 zH)o*;NPB5@f&FfEQmi$MmHwOlgN2hHN#}yo9b(ta3yx=qbIhH@;ZKeZAMs}TY+aY~ z-P)wH+LprN|75q-%vrsgfWMzr%}V;X6Z19VSh$T=mUWqjPEs{%H+5g$KU*eQfAI^J Q_e@hrw$tjCa^r*F0bzN*$N&HU literal 0 HcmV?d00001 diff --git a/img/su/en-default-small.jpg b/img/su/en-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8cb9417b6f37f4d3290d585930de0e41f2a29663 GIT binary patch literal 968 zcmex=Ur0nsOh{Nlm|s9lUR*+2T2@w8P)tEdUPehuMpg!72qP;iD?1xIFFQN0jF5nk z49VdCAqGJX23-bSW=16jCP7AKLB{__7^H!YWMX1wKmyFHj7%(S>_ABokT+1l|62?^ z%s?#y%mP3ket$O8ELlN@>vdI8u0lum_6zY13?PlN0t`Sik&R_!Vqj(wQVCL&-jJ%BO%hvomv0nC6{;_YHlef>c)Z4VPUNLCy9;eLA$B|RlP2K()<^vt9BmfLW zMqs*tdyG*~k-^Y0P$98#qCw%pi?DFASA6v(nPYm7k-#ON0FG61cZIq+@}4@Ci_|0? z43+R}ym9=y!V|VV6Rx*fc!V$)2>YIV9AhOVzSDDSy3J;b$ygaxm|FOX|%}Kj*_Dl>w9v1U~y)82a0M#uKQZP!}K+>R<)(0>G#S zr7w62V-#diG;~x5Y&1wLgnLoolaGp<=@s$me)}W0bzSz-m@jCT65lBoko-}8AA?Y$ z@ydBThk0gC5S3^wHOXT*9K9xV%{hy55#NvO_6bd<89eeyJqKUct~Us=*k$S}p&)ba z&gHg7hDI;7u9K0xXPOw4Zq@{3UA$2yQK7++xc%Rpy>GT_x%^;R%J6Q2-Z-wP%lu|9=wzV%Y&7 literal 0 HcmV?d00001 diff --git a/img/su/en.jpg b/img/su/en.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d07b871d2d2968a7d8e6a169fe808e4fe1f86e8 GIT binary patch literal 10859 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 literal 0 HcmV?d00001 diff --git a/img/su/es-default-large.jpg b/img/su/es-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..83f20252e1df995424cce5269fac77d43a3a7c83 GIT binary patch literal 5919 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 literal 0 HcmV?d00001 diff --git a/img/su/es-default-medium.jpg b/img/su/es-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..13546aa40c2e127b333becd0277c132a8544046f GIT binary patch literal 1845 zcmb7EdsvcZ8-HKUf`=DDQ_uu*Qwt5U`dlGInGPxsUCw#TG}F)4rlw0xXQ0_unPN06 zrb$zxX{Oc^n31|HQ)l9AYB~>DQ0f z_`W<}00aR5G#$V=1Z)8iaQNai2@;7wqH$<63Wc`BVlg<#5|4*0AuDSl$<~@+N3eoy zotD{=$&QYWcv}k1$$>_4aCBI70wR$}Gzx8jMq4;oL)H%eT8!TVcnlB@gu_7^0Kcy(-{HypZ~Avobc{Tm9QLr71gezq0MxCB}67Y>J`FN7uNV_C!+Hcf{lr z*0IU-(&Z*RX9$1;Fc1z$z6CQW;Rp~(gscewKG4Sb9R|~ck1??VkuZH^Na>FX__iJe zaQK35g_1r~evLUCBpM7&0&?!%w?|%!xt=gmRbMp84aA|G0h+VFkJNKq-uiwR^U(ZH zU+z20E{fi0-zSc3UVpA*F2YQfUb1&`mai&RR;Se+@Z~2oxdcSWR<2RUXEg0#LsMY` z$@r_ErP}_lucz&xqU+qLG0v&QB;o&(yEnW8-;gxrlmim}#sIctz<>bQV$?7M-0W@O zAPkNN5Y_}LjTsaJ5!VPQfj!6-49_h-JL{kQkpdJ4_Ug1w@mh}?I<@kAy(B4@YLTSn z&0WwY!SID#9JFJRQWGqkJ42SF`ZMC29sz}FFAv>2f zO371q-andX9*Od$_xm`#S2=XAemiM?*Ne2KhQyy8{byfRe%4BjUbvdMA}lk+7vpof z+V6HkG-sK}@07#k{a=GBYR-^T6whW z$`mb1w8FRfoTzL%e~>*f=X2uKGP`ZR9h5RWY0tmP@3<~}Dmij|9V^&fl0Tt($7c^V zY`|dm;T2f5p_ZGY7xC*Oa{b7|A6}uCuA0?OD`#dFiXsg%&rfk}z5N$4&f^VH&8;tQ zj^^4%ogwe)ca*P7zT27FFw?_5WYvp^-bXV99UwL!=3A z^6r+^byFIeZctjqAxV@kA0F}AI7xRu8;VGiI~EbVgva)ZT`j(#d2F;QCAQm0vFRiJ z2LiRxmpu%p`-tPz-jrZOI7RDGP`0gVhT8t9*7<3|y_KYIZ!~T%)bKXMnteLtHHzM{ zp)gz3U3WY)&q~A0jCAV{BlZlU@_zimIeG&wW2~q&bmkU4AVp5tcVdD5DDFO88Q5Bd z|JGhea=Aje3z_o-*^dXKFv0wqQH@d-&EKkTmP$R3uez4sYbisx>{vcfTyaT|H7-!B zx4)I@ZBfY|o4}sj6z`Dr3rW)+CRabU!R&JBe3=ulv_VXx4gk=jZm-!Q#-nbE6iM8D z0(f?mGS|(TEn>}eyZ+7SEY246PqX#LfCeqDH&e;rZ}3czAReGHxiL@>B`}2{EM8hD z9LPXV&f}`;i**;2Vr*UH?H$_v`T-eHRPy;xQ?E%6O4yY*YYp4Qn}z9J&3qJ-r$bX$=VK9>OiqQ~^}72#o%IZ1G&$vY z!IsG2^N&>#C)9;2T{rCAABV7tmjaUVcd>OFb>ro;%H8cXcPm>8#ZwL?ppbi;M&0x4 zH)o*;NPB5@f&FfEQmi$MmHwOlgN2hHN#}yo9b(ta3yx=qbIhH@;ZKeZAMs}TY+aY~ z-P)wH+LprN|75q-%vrsgfWMzr%}V;X6Z19VSh$T=mUWqjPEs{%H+5g$KU*eQfAI^J Q_e@hrw$tjCa^r*F0bzN*$N&HU literal 0 HcmV?d00001 diff --git a/img/su/es-default-small.jpg b/img/su/es-default-small.jpg new file mode 100755 index 0000000000000000000000000000000000000000..8cb9417b6f37f4d3290d585930de0e41f2a29663 GIT binary patch literal 968 zcmex=Ur0nsOh{Nlm|s9lUR*+2T2@w8P)tEdUPehuMpg!72qP;iD?1xIFFQN0jF5nk z49VdCAqGJX23-bSW=16jCP7AKLB{__7^H!YWMX1wKmyFHj7%(S>_ABokT+1l|62?^ z%s?#y%mP3ket$O8ELlN@>vdI8u0lum_6zY13?PlN0t`Sik&R_!Vqj(wQVCL&-jJ%BO%hvomv0nC6{;_YHlef>c)Z4VPUNLCy9;eLA$B|RlP2K()<^vt9BmfLW zMqs*tdyG*~k-^Y0P$98#qCw%pi?DFASA6v(nPYm7k-#ON0FG61cZIq+@}4@Ci_|0? z43+R}ym9=y!V|VV6Rx*fc!V$)2>YIV9AhOVzSDDSy3J;b$ygaxm|FOX|%}Kj*_Dl>w9v1U~y)82a0M#uKQZP!}K+>R<)(0>G#S zr7w62V-#diG;~x5Y&1wLgnLoolaGp<=@s$me)}W0bzSz-m@jCT65lBoko-}8AA?Y$ z@ydBThk0gC5S3^wHOXT*9K9xV%{hy55#NvO_6bd<89eeyJqKUct~Us=*k$S}p&)ba z&gHg7hDI;7u9K0xXPOw4Zq@{3UA$2yQK7++xc%Rpy>GT_x%^;R%J6Q2-Z-wP%lu|9=wzV%Y&7 literal 0 HcmV?d00001 diff --git a/img/su/es.jpg b/img/su/es.jpg new file mode 100755 index 0000000000000000000000000000000000000000..7d07b871d2d2968a7d8e6a169fe808e4fe1f86e8 GIT binary patch literal 10859 zcmc(FWl){Vvgn7qyD!|`T^H`|?yzu|;O_43PVf-i0zrb?0)mAg34s6!AwVws?0s(C z_v4-S@4o)3rh2-2dZub-y8G*%KbwE{0c>S?C3ye_1_n@k`G7xAK=!ZR{}o{W=D_|Z z_)Ez@3jUMWf9Cxe18|Um2jBq?1_yw}fq}z;`7;4f05AY7EZoa-{~M5y5mDga5n%sf z0j(JQ%Ub>gOx*hOLxo!c zj+$Bf!*L;zbE{3&wra<8uJA3@LT26oYeROfZiDTBqX^q8YjHIYQn|fRIjB`o!fR@m)Xa#o z+vpI@yt?yI(u+{|yId_#c*_Bxt-2?KAiO6ARov@G@dS;%EuC>>Q`Q@DoQhQ31npT$ zeOgO9ar(%Qe=qr^g-t3|V$03`r!P;JD2)&f#Gw%Xl(v}t7g0i0byh>@HcjY~cqS)j zrxe4EOqQFMok`ds0sC&=j10^jMI$T)0I2=)_QaO8>uSb?Tq)?q$th`t^Xw!f`BvG) zBoSmP{9`J0)YwHbFFIL-W3dCRQfV9gK46bXzrHc5N#Pp9VxU>a#$mwUpPa?CmY)~_ z01PW!D~uvBJ_h&nb!x8sz!BGwbBUm&1+xA_9W|`z+hZ(7Jzcp(43=?nn@CT9a|RRc#L^EwfV+Nc?0j z?Y9*10pyZIw>W(o_E|6$isgKA%3*Y2QeR&8)l4u5s!#qVz!3R$@iF)Dr9DJl*kZOL)pFvtQ#&BJY$q1%QJAJA!#ld=)e6tfW%V%UZWtM7Bn?@{p z`8ea;)SDfk`~a-6>?*d|1xIrsi8+E~Gq#BDY9k@W34q2qt<#FHfWQo;$Nk2V;xnASR zxTmy+&=GJ!QpanliB zAyzaN;S=t72(><_;QcTo)O-kSVV#rIeyG!LjlS~({I%Sv0-CcYV$v*u^A@36z_<0# z?u-3_uU=?9m2M_{(R{BaVo8sNjp`7``3%Ufb*N$k5xDtZokS$rE~E-+(dejkM4AkT z!a+ag$@OMLKz-J=hg+o)Q9Lu0ssJNM*XX}eZm z0>mYFxjSYnXide>n_h`rWEk5mUB7HpbIuXg6-mgzRQ}{1p$6!!Gr?AG>sc^q%a&R> zx&H+lymEivQ-k+KP_3J`!qqmLvOMDgC-(=|GR#iaC^ok#tx%@{qp_x&byJp=wm_BW5Z$!Lk;>`(DMe;q z5u4p)^xmfwO|=*-|H2v{g1UG5sTR6-1VBm$vIpjwN>TTBoAmP!ONm|hR&>VUS2Rq% z_WTyKovHoJ7`t^+it5_I)HjNc4T)`6<9j3|7hecCN+k=U`2+mrv~d21H~W{-DgW2K ze(`dWFaXtmka%&%|4696SPVE=cvu8PBs5f{zx2Vvyf{T101+3Dnj4>nM_LP;fY!>V zlS@Y1(>J0EiH@FE$J#40wtE63B`fC_o{?G6LC7cIon1M)`j1sXl!Sdg_4qs*M{4u^ z91csh(v#Fx0OPwjI}1yj{>&sdPl;v%C4xR{D04-!eX~kJlXR2y*BO*ruURimON44ZLUf7Ot^E;xlCc6hnOz;aCqj`I3A4{F3o#Ks?^`$ zhF&8d-=2M<$hr)c>w|9L4#% zPTedzzH~(4x#P8Uw5;kk^SxGQA1Y1ENF7#h4<*EIoM28nSq zbZ4q#FlaGMo$6XkTqx(g#iNgfCb@}`$ypeP$uzH+?!*aa`wp6-6FyMbt*Xl-CL-pU zcW@Gn7dWTM6q&d3u{EU#HXA`KENy#0Y)Ppi{m4q1ayn^lKULBDf5;eiec}W2S~nnW z=QX0S-+Ex@^&ddNgam-;q5efZ%d;(N*Ji-=LqF{@z8puz>~mpTPSqH=eT@{@k3mBu}zKsVPw(jXVV=b6NJU1*JkaF zXXcyO6$sBfrbDnvw}+t-Uo=nKHkIXd%ZnBA9tKXFAi@OSiVR?TxwI)CbvrO@On52> zna{n|Z=8N$Xg6s50q_lC@ZyegA7AGW)^Udo<8PbDmFGAoHYZsuD}?V|E5Y%SCyPa~fh_K3*>g3Z*P%0yAO-rkW=vptHGFWhXqQ;(85|DmCOSpxZ4pO5Pg*nfabp_LMc8FKI?v!VE08ELc`EjSqTgn4QXi@$MmIL_pG+MnG8Z)#xykG2V6=+e)#>3Kv1|#o@(P!> zM(QwEPzar#SFzhk$&ov+5JLf28PIPbjF*M-q+}O!3^~Dd`&uX#vPc$}7U0mT? z)Zu->vSALhca-eko@Bj@k-KH+FhqHe+;39fUKTub$T%6=rN48jM=5CFDbYHO2U#s@ zo+q5``lu-9?Kje>xG+)|1SAB6 z>3u|CC~`9U0GeZRh}=@3$@Ioby2QdW&%33FZ)ha5+urWqR=?Yq+1CVbTo(>S)rXdN zYCo^2K5bwT7{9U?B#%+g(o4gH5rIU_EmLfz5ey3G;>j5yRlYZ~8zwN-qo1Dr<&3Ab zue3yeu8T1mP^fDKbA-UpFA6f!&2f!NUir$`=JU*;)mfwTUL3Q4VmkZNF7gN_xn^K5 zs_b+*S+z<33|l>W&j5QYH2AW7_1uP`keXkw`a#qS#@E~f2eQBHJzI}W=x(Aj=>ywM?l4egj&Lo*dN6%qC zl5vIIPh$^FsAs>K5Yz*Og8`A+4t%LQ0Vy;?B|p?*3ic>h$d%i4_Ox-rmw*dCJ1&F4 zEZvoJs>2OZ+Yy?jGgXVSGFgr#{A&IfXuMgy?C<}$p&Ft7ajAE3u`(I5`?j^j*xjXN zzyQzj4qGQdJjZFC)dpdxXV1wXBZ7vwjk1G&DbUL0Rj6N8tyugQ`I~@=#k8x{8|Z>d z`#rMf(fLF?UcQ^IFa(c>*p~xSz{!r_4{%tAZ_fMIlC07 z75fss`>6Qlpt00z&fA+crIAyfKTNjYKpVawv)FS53x{HO`6M5)5P;N5|;-=!omfDDjt%g)JXP9Mh>91l(l@9q|eoEBCvGu8`0~24+y4z9cnkg&p zzTbH?AQ;%`w#p>1Y3#$+Chbyf(e_f)W&DZyAS#}{_MvHZ#=z%%T<0cz(iPjP*{mX2 zov`w4oUd8P+m?Ax{i<(1?!qHkD0Gm^FHK+TX^Z^Hpkrq@hhX}dBQ0hE!E=@?1;a72 z*99qE;kEvcdf$A$8t-rnUlWiv-@*31wLfZ!z~dB~K6R7IqQm6*l)+(L6KtX0l=&{B z)ElC}^Df@ebw$vQ&RX}e=|f+W-LZ)^{BZW9QB@;`#)8I_hoUu`S$Q%8a|6M6f9r7L z?tOzy{b`EAEM(RN5({;M@5+c=|O4>4HkUBf_BHawTBS2%|*>6V#GvaVbl zJ(o61W;x{`eb%xF{Xyk8gMxya-Ho`*P1z{+{*IhmdMHbUhCOTk&VHVt(tt+QN{)Wq zHvosnHZhk&o+XifJhqwuoFe#{}Q_X`dc8*x|=!3O=|M!>yGd6J?JvxnOucJf{L|5O$~nGG!h`M(8D)4Ve}kS zu{b&}iP!&3#$Bf}{`eOEq1w}fxIsEWJi-@&g3z9ehm1&5Pe(5)B}e<|;!^{^T7qU` z*Q({beX^$ltP*i#?0DR}hDoBe$ybCIqj(flA9PE8Lv0o`f3~?m-OV0j@ag4+**}_k zhIWLof6!6v&w3O~dFQ9<_tF1am25t0Vb`??lDYe;8K+MMVD{qG#lgR(G4=6d<*Pfk zP#@<(8CG7}h!yrnVSvCzk!!OtAGJ-t! zgPsGLeN|*t6zu3p&FGjwrpyom@$5MSmD%Pgz7mvdpS>*3U~S6xPOe#M83bcy-74`M zHKV<_HOBUSG27X{m#AF)b_A=?s6FpcP@nx%yy;iX86$I7I%py?sAPq_anaXF_@7f0 zM>PX!D(mYEU#rboou1t(RDB54>FlPx3Uw5>gJ^_YVsaE~dGgfv`V~oq9PO1Js{~xTBooRIp9ttn*DSv<2$1m&_LPZk3Mp*B<{|o>o99s)_n^BBER<`oWwc zuc7V613xW-^l@ThWr_79(b>drxXtP{-WqkEATeVfrof;y9wXi&E2=&9nkf zl-N78EYyN~pLl1mo^xjuy@4Q&~YLt~7D3VWO7 z&rq~!ah*ebJ*nQ2vDq%tfHiLlX;OWtzem1J^_xz7fkItIa*sEN-FWoAI`5_gjjf8FlhuQq!RUdympnaUo{kiozQu``ujr(+2AGC3qp6U7bcT2^Oyr zJ!7<)a%G}5$oeTSJE>;f1%&h=!lV1?+ZY#fjNDMuo6q`d%uD2)xVj7bjQj!7eDto05PqC>q2O>10KZh5V#vkZ>xKvDEUUXM;* z57z}_!R5F6HS4i1^Ylf2h8vaDaVB!u`wG75^;h=|v;Sw5_pbUYyLD-@_oG`L0py|Z zI@jO5sY0m1cesk#4Nvj`N>aDgV1D-qPE*ate~2n|aLePq1v`tz;P6p&mAzZLHb|Ac zcyM?Y3A?|RZ#_}{pi*DLBZpvs(3|m`fa;*S=?atkt}stB=fm6mhQMF>>gu)BI=g{# zDv-PbECnyt1yqidsU?C=&g7c!9ylG7h@IMP%4#@P;uM4BfjR}Z2IPY59~4oYt>#_^n%<8+;_E#mL*yQym&zus}sJuNJs zx1QMJ*!V7?)-Lp059xe za&~_oV&Uop~)6P?Y=r3Ry+5N$l$1DW;6~?989jUXa>+hn0mJfjXT39}N;bx--YzT_Z;8aC*iUcHVAK?gm4*W5=GWrD zYRm+B^@)&1^mnY>ztZHd3)t1Q2cFk}*E|%^2{$h&habwuhsLyh4=}C#LhIG->=&>?0BPWyE z>guLwBv6tO^|bWO)5_Gi-F2@8Z~Sv6v~O~aAsf!Cy0#Y9T$jq4NsKk41q9h&i{xwS zU8^grY}+~DSyz?2oRdP8;M9@Z+SRe(=txpKtlk}Rw1{Fdp>V}@P8vr`3Ih{;lEU&c@~i6nkZ#h3U?&vfH`qd-EW zCV;@d8U#kt3aRWBW7vl|Gm~xBY#w3`qjm%^RO-7>F>9__t+cdH2MCA~SvdK0N7)QB zs+fPQi(>H9JScC|U#Wv&NuXNgwH>|e;3Og7(EJCtj7nW-9_q?hf#2Y5$UYIwD-Q`` z`Kpc;3`T}6S5o+4QNZInVK}hbpCna&Zh_mI<)upOMgCZ|RN(Umm~-rthLOfUriqU) z<6-rN~6hEv;pR?a2j_im12>&-iz4U6T3_kUn+r(9psW zo!FAauw=;`i~-8j;=X+?MA_rSPx}z|jYst&-v6o%W@S_0e$hb!) znP(g2%p@a_O(4YGxbMPV90|c3MsrF?B4}B##xU{dJSVEIGH=2a9$x`AoV;8k+>LWG zzFfA`9zdQ(FHmxMWHGgeSFWs1KHSVHd(haq?MUV&jc&Q03bTJ6DU`KcqY=w(tPXol^V zQ6uQIGwD@g4HPMCt}=Tx&j5!siGBHxiwHsPo1aN*bu6a_ z2iXw*(EXh5uTIS;U4+z!`xW9h9gYlHr}!vIttQhp_FDOUL=7~o#i?1QkkB3`%0=Lj z11>{O0^hCn5l=J#>W4F{~plCUgph zdrH+{r1kd?hu0|!5Hs~PePMoXgKMC8aP0Hn9Uv#n(~yNB0BS9D)_S{4!|P?v6SNcO<$a;Q&1UwYoDC-!;lsyH`~@(GRaJw>YAJ z&fo0iv&M`>hh-)%zf%jGu&5i<(rF4^bj*fmK?q~DJkp=@VdF-2w}#~3fNj55fvoW; z;0AmP3Bf3(V_H}?n&GnvKeV!oQrHJO-dsejUaYtT;^8j|TJeCRxiEn)ZY(K88jpwX zP_Gp-sbJ&pHl2&JA)1>iN>5t@BqV603MD(lYCCH@ErDO0w@fDSOzPTbCnDg(x=nQp zijgPbIVdI|Cb>bVA5pAWrsrD}O=R-}i!|<$tLQw`<0}^*0 zsUM&0v1D`KgyNNWU-Px*eO6CY)SpPjS+fRrM;o|@q2i+gdWJCF29jHgty^z|_As_y zZr+10?r6aksF1|MC665(OCRKBNftG?lSBH9?!!sX)y33KN zfAB@MSbfN**t@eWhrssdIBdsjwBKvyK17rS3ZNt-*&odxNH^=4J22JC`_a*OOFim? zW~ridQK!Jx#6_N}>W?{^Vx=;_3(>hys0RXc__8o|%glv>{0!fq;irDIT-PLGUzyF) z2kM%iPFPkswUN#IN)~`0yfg2$LQ~@`s-CPPawQS#36c{hxCIXLOMbDG2a3h~ig6XoX@=2;3d5_vxE`Cw5h*gSb~NKU3xd6tV`yd*T2vq3X;TS z%(aY-BZv+^e+|i4z{&ao=Zq0_gP9^8^Zj+%e5Oaz5K^r$US-_th2whG@&mheY*gN# z5?iK6Syd}$#^D`xIN2038;fsS(G-2f3@Nbo{O_ROOjph5(NSG|IQjy}6F%irS4>)g zM4C-(y`yb^1KUyN1LIX1Rw2zH&Q;s^Ut~m9mx(`no5lxV-(T-@V!3f&tIVM7;jf>X zd0Yvtay4GDjMpfmA@oI)ZbMB=)kD05slmz#w_3`NQu(Iv?}oXI$fzR#{V0Q8{hCm;)~z%QfwjusSORWP`oucF&p}r zAYzF*Pj;Dlr5r;2=tT8h@Wn;_>um!7_fqir_mhJE{j&ATyAkAn&#D9hVCZla>B3(K zN+4Wh_((;%bg37dE)yAep{KvlU$`$g41oKB{{x`#zY!QZKnngZ6a|DW1+!+>xVfxmRVfHXXS4F5lL{!RVgYyU%`?ypiF_W!e# z_qW7LZ1S?7FmQ1H4ozO3yx>rCV@qp+xU8f+BQmbSU;lS(g8c`et|iK`N04C75#7SB zb-Q!Uc#gG_<=jKkOAsm3tTNhbUU|AyOftw%{2kwF`4D6?@5^iejr@&H8?RL(qP0|) zakjiIPwSmPSR&Q$#bgXM9h2qgzObP~t&J{qdfyRO)EuKeAgb?MI<0w)dj6ao4BL$nK+s7lM>N*kB@hCFb8@v!R;waVhWxi#5;~g%hOgwZszYgO4sa7Ioh+5 z1g-g0{QXJ{@Sw0yDif3UHJ5%F5B2L?^ z>O)rhibwXNpMJ_XtTPcL)kJ`e-pL6`{d6fw7ZZ&F_{|x=-^ctSyOM$hu-ipwOt_uGqcdT^vOCArzc=p3f1>&|`#aE;XQ7loH>t-j zN%@w=PwMIt9asw}n>{2tb{~B)p)w<<3Cq?@T^LSb#D=f_0B+XX>cGYLDXX^&r>GSw zOt*{~$|TEysAfXdSAhq?k%n*u*AA5!HU-x>A{Zv&}3ioKxR9^LqS%xOxB z(fC3}ZnWK}rgJj>-6X9RXoi6|m9`lhm9Jgq{HkJyyD%m31JA9^89Q#vPzs9=NRbx8 z8tZ0nmTiWZS!3pUY3 z`V~ozPPaIh9if%7k-q6qYzVJ*zW$1_4rM5GZ$?6I@X^a^)6!4S<@}^S z82gUj;t6`STS}K`5`P&?bpcNT3)jG9$kaUJ!KpKmq%j1qP5aaMN(Q?zqm=suLGQP# zlDg1q(Lv(}m9MIh06TL9y7zJ35^pdlN@K%Kj*8B5bq%Un9(nL3bRv)8{`t%M+bC&I`4w><| z*nB+^*^Ff}x@oLEPEz^ul2sfuqV#?b^&9lvck63zpc4V$&zz zmPf@_@@ZF-SUJ;E7Y5O=H14!)Y6hUrv7}ikeXdlRQD~43{hBs+bU?KrQ-w1zg~A5+ zDuJJZ|1B&WiK?$5zz~i}zm{eMlaA(`Yoe3a1-}uQM%YMgE-N!lJMuS_ csx%q}aFpgPrw9*V44!J;UX*})O!>3*U+#febN~PV literal 0 HcmV?d00001 diff --git a/img/su/fr-default-large.jpg b/img/su/fr-default-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1fb7b9e6d1c052ba75d45a60934217fcf9dbbd6 GIT binary patch literal 7302 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 literal 0 HcmV?d00001 diff --git a/img/su/fr-default-medium.jpg b/img/su/fr-default-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..485a36c72001bb4cd7317d1ac603ee609958aab9 GIT binary patch literal 2290 zcmb7FdpMNo8~(mIXT&!%4pTl1615nIa!N5yp=emOjf6=$poB1K zhpba1g;36N4k!$Tqj0we;762&%35J_Z`C?p{(NtTk5mX;<+ zP~>G{`HiqNy!Hr)Mx(J9?0PJAJxqj%@c)g~T7ZB98~_I-C=VbAAd&#C)&Wuil1NYh z;2(f!3<`ljYt_P7~bZu z`#Wn|4p{IVw~pff>f)(HnmH}5J!WC*JN}z0p@d5v@G@QJd^So4M5A)8^;m zH5KtmJC{~Y`0u^shIQ$SP4Com3L3M5vWJbodMP@YWFNNKs8GTyo9S6(yi6Vf|XM3IFQBw>j~X#{Y-jC|oqW@}p#B4*idVS}UIo)59gPXU9b2k! z+A$y5YN_Hw$~?CFQU7Po2geb~4VF@und68K{d(aNKqj5DI8A?E_=271sp(f@aNx3k z-}YPUB*y#>Jk&d6FY(K!Q=4h5RX{9~>LxK!+x!Z#Y*!*bvdo9;q@XMO1L4~7M)?_y zY!A0y4r#fretuTmrobpT@y+ydO^kS%TdcUvR%of|3CIrX%j&$gcPWa2FC})ze#&GN zj88T`(p`uwq0F2lQ@@RUez7YiFG$uf2~llgOq%?|OoX8-3^c z*bKXW?DlE>v&SwYe3D%5rMOla!Y&_Tp4_PB=9L;Z_-4$W&vw3%0p}{f#QwnM<2Y_= zRh$^qx^;;e3Ie8I?>(!9B076^Y_p~64C*}h85Z8xhdzFCU3UjH8BRZ+wcC~SY>$(R zh(}NX1|0?)wc`hax1z)f$ie1UVnrC|=lvEmB)r(&9Zw$>o!wPbA=G(iJ1>*3c?r1O zJyV8^8Yg|^%sB!Nlro?3sLcLne8u->gNkCVIX@Bwy}Wl9be zw)^*yFX+Zrv2@D@JV`a)om5q6oRg@G7VYAZ#{FM3;kO3*SC^KFbr)>dItb;7%!^#L zp<{ME5s0}2>s?I%PbTo@M8M>*lX!dXs1B~_eF7n`-4FW#^&Ii0t!EU~r&n>8G#!4o zLteIOX7Gp20&7izMqla9UN@MfQD$)}wZiH&Q{}mr!jG;S%)L_n4_{a_4(NXw$F~4^ zfhYvufWSS_-#rK<$N_7jfG9@Ztefip=mA=3b=|37B$_rTyBQVE3Aq!>)#&J_pdH)b z5%pGb4+|ekV#SMam<)|oz(!S#qO!$D;dM}{!+Mhy!nP$CpgAa2-5;Hr3bp$Q6(4A@ z%WDs%hG8$W2&zk7#l8uqk|*%h_y=q|(MG!D)f{C-7~C}7;C5YDaj&tX6)k76Wx~n@ zM-dXEDD8OK{|H{+tuI%m$;w!rOBF?)N+-%c7wWB8Hc3BPKW3}tjN??z#H+k;tXCK-o98qQZ`W?iDSzpRyoRk ge3woqr72l<@>sQ-jW9V+`nh>4yahw*(8OxbUxyu)-~a#s literal 0 HcmV?d00001 diff --git a/img/su/fr-default-small.jpg b/img/su/fr-default-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..335ddd86fb08d99c16a9cc4816bc3d7689a975f0 GIT binary patch literal 1185 zcmex=Ur0nsOh{Nlm|s9lUR*+2T2@w8P)tEdUPehuMpg!72qP;iD?1xIFFQN0jF5nk z49VdCAqGJX23-bSW=16jCP7AKLB{__7^E2(n3$M>4n+V~MrI}!Hg=$-2*?|#;QuWK z9-wk20cHW955GTn?$_a{{4m)db}p-M(&NQjy@lqcH7?{~tb3OTG(b^+0jQXfnH6ph zBNHs>D8wx6cu_z>DKN2c;=+vw8=F2roy}&?^m@0^ zwzm(~Jm748TUErcX=C7$Z=X*D=N+07X<^=Lb2b-f)K^(Wr&lw!KhxOuiicTv&L@-P zG_P*|{*Mc8d7WpzAjX;GzO(Dfp+^Slr<$g)w_Xk)GO&)}1= zXX)Y#`*vF=PrkwTc=zMuYt}Fcb-Ue{xuu}{qMG-K*at>y1(DiYg+gw}IbU-195CUT zzWlMGquFUrKbd6)&w@l&GOoHfP2{D6{t25O>x>E`Se^=1D)#g{Jh*y-<&@{M4?8Vg zRyf%Cuy`rmJH&ljffd3Swm} zloN{&S?w$u&KdVm1z8;w#3Hyxr4ZXMJD_qn3N;ZITZeB<0YR+c0Y9Jd@wSt*1-%g{ zZ8GT2?-gykf<_tw2&l z$Ek#%xI!G>jtOxS6lM}MSx3|pCC*XOr2PK2*q^S0uJ)hE&un3rTcG#uM4bOtaNvI?9|`s$OylA zu&-wZ0DwlBlKEK2eILmGnx1~r8AC2NE2Vi>OgSvSg(6)ykzNI{HLC(N%3gQY`1kR> z!U^pxZc=3D3=Y6IgXFxi-Ljx!3+6mSMD2}ce`)tO!zT|yf_YekKU>f$chH-{_DEVtimX|RC z02IkgF`AQkwzSA1X}^Qt#(uk;D2f@`As=!Nn*v>idSRK;TG# zum2j*|0eJ~n203otsAxS}Mdw$pVD_dN{se~8GDTV7*aeuh z+Fej2$ceraIiqc)q@O=tF7QQEZs9Z=ID%H$B+ARH)s{arZVyFidU*T^e%D})*_>aO zl=1jeWSK~=UrbuTT~++%eP2O8b>%DG0l{V3VSvc?hm_Sr68Os3r0tDArqe6va)bIL zO>#=`U_c4nN(79u*ijJe7?g!r|y zmq&L_@nMh8$JcEz5MaoKFiGWvz`+E)x%LB6}q2N#0nBNt@O&8iwHsI~h8cu}xuZN!t zfX6})4{4=I?`#U6e_kOlSftBo(pNsOlB3;c;YVFx=ND+j6X*L~l{BUvmERmR9ykr? z1NBP$w#b4_UOjW;86S!zB}!K%#VT0 zXx=S8QLo-|;@31LB<8%4_Ml5;fTwt-66(Na$eyYm)3<54-wYzB{?>H6v%Ngf>~EzXKO4^tbFQf~d?e`LE~nxLU}L zun6>lAWTn(^y4%r<$nSILXum=un|4jREj0q-fSX22RA-+B(w>7Y>Tw++YFaK0c_TX zqiiM{;s~Xs{t9xnmFvCEb{a|OWqH+RlxMRFLkN@-pa=`0Hyc>)%XYttU1K&i;Q zM#V>T&~*irO5hOMQv9wx))WicuCd};u38ELdJD+v7w(a-cej12*sGSLoC|B{8HDd` zsBPA=&UO8*y-Rb3(lc4!?7Np0XsOzsCUPVur3y4Tlh9~HG#16vr6QrXgJ?(#&*^(M78e2Aic`68!pQhPx0}}pg)W~ z65)#Nc4+WSyk3zT-x?nVRK23FW@?>3TpweWB#v;QV0Skvf3DNpnsfzOj$(?7C|X0 z$ZMt-8m357e^QWJXxt(HvPjq9a;Bd8l~PjUXE!as<&G*6vR471Xk-@sC_qt^?Fx({ zVi9{@{A-U#{I7d_?%%HL3l;DK0r3Bg#TRz@$3pSTO9BG{gMtEqLqbBqd^t*B5Fk)6 zL?i$>G9d~PqaYJ1v5t5QHhZ6lhzzFlxgQeJ-l ztYcte!Q4O26rBIdnU=fnALEp0GU<^{2=~oB)Au{K^WfW$&lD(Y_U?f@75zc!^&HF3vB?aCEyThvW^uPO0W-$j?ASq!{|{W%-7 zXcVfTPi0cb7yoN$^}$a0hptJ+SQf4vP7cb-C%|Y@L49&9ar4p5+MrTGL!hTK`sW|d z2&gQsET%KzDhq;yu(YtWXrn7!>Sd%FcbyD5ykCublRF#*-~GL3IOywwr^?(L=$dn> z7e|OJ{{*H@sTTJq?3FCJUeKH8?6&+!IC4MNt!0+HY@f3a)5W&O=D<4RcmQ6SpDd&E@hez1{_!xz=A-xPAg2+Z{5{L|`=?Ou?D!{RV~!2`L_9z?tSK z&2Anbe1t9}fSkP@FANk^4fRFIkB{g0!%C*afNof1EZNU?D&X|fC{(12Y6tbou}ikI zFbR>bP7#k02h~XB8+8d)sKhSX(6OOT;a95HdR|32s>V6(@_d<7$kjLFjyf$CPmz+S zAx`tMvxIrsW#3zmahJ!{>vxY$7-N6U@%V;{tX7$J&!;-X7w;f35b{S5k@4Y6 z(f)B!sqbBM#QnZ6tL?~FXouj)ui;a*>xg-wNb;0v^m0eDoW2fycPi(fFT@tKNFsa~ z7N7kZxxl*nb|3W#xORB_1dI$)GymbGX!4jG#e`T$ai9l8OQq)NzNW#MavGcvDF|4S^tV;`iW+`OBH z^`7z}Ru}ul;S+Fnw3}|Banrc%NXlZx?V2;17Y~Jzqcf_U=Vyz~U3RN*FDsLw^KMwK4HOfiq)?EAR<1YEl9|M*kewNY^8 zpm(s=@(Dmv-!6xov)H#^z5u;G2`36=MuQ1lFr_K0J6rQh_>9&W&X zE2!V;K3Sd{?}sBoxaqpYA2y3puc`4AFkx2d(p8>{F@^v`bsaQHE8sLi6xaCdmDApq zt|VNj3Hp2&E9d+&oRgZyj!_pF!H{EM5^^F^5ac!;{Z8p9#bYKPixz(P*wS@gxGWdu zqL-NtU*yhAQGP z)>3N6xfYdqJw`ae6#L}^ycNjNfrRwT_3dZ90S2&aLaHbS8a8IP4uFkma@Aeo;KFzD#tH*mQ-$|S) zm$`;9oO7GCyF_z;d{Y_UWh}D7l;F^Bvcy+03@FKPZo}>=0b4dDT_M*KT=2AaMfLX9 zbUm%D>zi?5Vp#(_6TXIhM+(cPrT&{0Y!pteW49GLg>e!i}pCt+id7i|k*~%++2W+HlS( z;*#(f7x@HCy~Q#ZGqcjp)uIQ0!8N;FxTXBi&_xGCSzLSB+fM3KkA$q99zMN=Dz2rqd zpw?XE=BI>L`A12(b;4D)77MNS+;EY0mz+8!dGWi)I~x~BE)?j!t-_~k8KAkqH&(_JlEc_=zymr;>oXI z2IQ`Bu9ql(ItR`Sk5R^X4ShdPWN}YQLgovTT(MOi_3`-wg#Ap0B|}T9`Wgfgd<5#g zA(c43ARE(+S5TK!ESx&e^oOix@!cEPBeulezE)~B4NIt+!<+1dE zSea7|>X8|>?S)x~4}k7*@OexRGV|&m-h*9t+nr~%>3=0tg{k2o&87{Tkz_suEkSM!3;LI;cLh$Zc|y|t<>k1TTd~@ zS#a9#TfJ+@>Qs8qTr)S^5}_;XPK~ErV!rA-jUdeKZe{8VtH;}w^8uVI$=9WIY&k2nR0o&Y~q*SLD z;tvvwvL}f*rUi=F2dT1qc`6cPRJkjso4?VqBCh!@Y&`~H=P_7BqVxLrVKkAG;fVhx zp%+DeJpAsz=8$r42J%{=?a*|vtaqvK#OZpQt@8=+jWSY#V2MvfYHOMjKgBv}$T6)I zt}5QexKG`Mr5ZQ5?i0gQQKMRF(kz&^u?TCT6*h%7UT$tW=GDkD(#Ynt{h-2Tp@IsK4m~I z?#wi(SsNHh*6_twK*hEFX;}wPIy9kal3N{$cC$8uiL^?}?Y!H)L;ba%_qanQmK%8x z>?{ggvn$Hv+^1`aZ5VQl8Cjg$q^PO1`^U-GpWqbQXy4ncBWE zJkx|O?`nZG)Y8xH=NwwL)`Hymp5fJI$lc#Bl{LPUA|j?gv;vzU=^cU|dm{I6jIZ5q zFGVl*Yn#3pFQ(dQwbs+UuQT!G6Og*c+&n50l`TsH*CbOWgM_VWxE=;tzbEDhDpl_? zD>%b#m(Dp_WCB@(mI!2UKa2}RwcY~CH^5l|;~ZmVMN8s@s>dcAaT zwtD1l?YN2&Hm4y#>7_Yjf;2_kOyPRbrp5kQk%U0+6!z-(eZueiDd5697*tX!$Q2mH zK5@jbb41*N=h>PT&4@P1e)Bmla)}vdBqUrCNnVi<{SeRoAtdK2GfLR;x8bGV_we&T z^wK%6qS|z`h(DO_r7^t9_ZyotJ)cB?ySs=9ahpd>(-W&PPRi>jw7WB0ya>Vg(kHv>U1!{eI~mO)O*xMhe%lO8 z=`TT%rg9foerPPPxtwn}pTAkTbJ$giu4+hH4*%)lJs$|f7%}0?v_=X>%i&V0TsP`6 z7~Ki@wZapv>D#+tqh66ah$%o5*p(=!=YBqj&S8k=Vnxi$$VnM1SLqAS zuzf={6fEs<)>u9-m3(w$OjH`4R-Nxvx7k$gQ?;WLH?k^2V&}D`b?h>4|`pYzhwgwHsZh(P2jm9+~_U(Pg zQ_hD8tyYLMrb2W+a>w#CXjX`{Q9r)$GCH15hupO|Q{9(h_B$43vqW{o)BMg*|6OoK z5fujJoGH&5&8<72a!9naw1#}m?X>u+vcl}gCT(7o&C0_Twai%Rj)4Hp4J)ZQ5#2P> zo)oAr&Z^UdQSz}ORzPGVdsB`ETjHq308x$=m ze*8W;=M;W$ zy&g?W?}GNMF%&P1r$*Q2RgAt0eu3ZQ{hDRxZMT;ueA&}66Jz7DrymH8N6>a7RZcGg zBRwb&7&$!?_!-9hUZHR`CS_GR1k#R~h7FVkSn)NXD@1%PJMw5hHdmQQPFRfN%U#Y~ zpgg-M`uktyz}N5uXcAnWA_mDKogck;HP2_9UZ+dtYJ8)|yrOkxe)l_>bhdffDh`QN zc0V4KNZ=pW@;>26J6tf%Z`;+`MEo{6luegP^OUW8elsAPJvxsjj?o)bss2%5L>M$Y z9WrsKR{qvr(#O)VCu3GPR60EV+_0PBTgG|0ZnMk!;^3<Q18 z7<}Wyni{po6&14HtS?RGoW=`mFldEnbHbop!j`l;T=|kw(yTh%GeSaq{XLTCl{6raz@@}8-9UE{Rq? zvSP0EQB^+_ZUy2Q*13Z352*bXBvJ>~yjV+P$~Jjwq7ebVtyODv2rNjs#N;vSgu=p8 ziPkFvi(x2@Uy?JF<1G@oGH4Xt6|FQLGON5k0a7t`Z>xl_dmQ_nqQ#$pZ~a85qY0VQoGGEte`CSh~(D=72kul%i{7{1v3^P z3IZ)egG(e`#@EIIUW60&xm`V!xQmpGkfcd%A6J=+J3rbTQGIfq-<-vqT*cIiDB?n_ z?^mmAyjgelAIG67RcdVdl^O|E=4m+--r|Q?*0T(hZdBy6xUq>V7hGR!h(8u_W<@vS zo1{`th@H+)Q1(H{TK+ka$O%lk`swwM=cH)IX8~^Pph*MG*HHuUjuif{w`st~G3kA4 z0`in^G>cX(?N7N=T$uaoe|!y28z(30PStEb z*{okKB=t9yh>q$p9Y~=sBokk5|5oYv74Fgd1Ox_k!Z3|U30A|lSEh}Qxy&w=X7P29 zk)MA8uqw_pDmd5lQ_0J?(OqiLJ^`>cFC@&rC^~V)bL-ceK_G5O73_kD_uC@NcF>5i zJ&JzxyE&%D`XoYjcnu6u?WxgCE}P1Bils5>I7P(kJ5bx7Uz5Ud_^&gKgeS{(DxBds z!a+x#tab#BDgCbK#g#%cXQb49kQT92LM$H_@tnluS{@}8d|;Y2pkm7_l(>pi{ep%> zv+dHZm#a|?nTiU3IIx#tR8Lf^d#arjOl}5L0Ay6%PD3LIO#LFFHHej&3T5LQFPRO2 zr62V#VmUvgv$l)M9Wk4nz&lu6NOG*Ya3vM1Ef6REb{>Y?$ty ze&BP5w4&~$B`mbf>qZ}RTs*gAc?)*2DQw!s4R#Ue^r`eI7y$G<9u%ee%@)Q|A2Gkx zlt-Je$yAVr!<@CaowGAoaE*=Z;=)B_6F}S5hE*I(%XzUDtO1+Z5qExJHIluuMsl+C zKVIIsjcgB>l~S&L(pC=qhD^^@L+J`fXuUa@_ykCVvWW6ggwL>kFmnZ!uN)fOSSltn zSsP)B_oD%L4@^BpJg>8&f??`OTd;0QzmBp@;#lh`A)Q29eHWX)A}tgMf6+1iilu-8 zf&Cqp`66o&G72gn7}ygq2*lTXg-NEb{Qnhd<|q6F#J}l)`@1II!5`KloCf6c2zuTL zCs}3M!OIRm-$-+B(xN80;Xk+#|FrmFBBCIm3wKDA>9bgyhBuw+aIiAX9xrgMlc${+ zTve)uB>vqGic=0se_}n+7{-78UP#c9&nx#d#ev5K-vG>xSio&#tGSX#*6)P{^29q3 z=f2%UVhN&uGU|!gjIm=LmEZMv*OMY%>2154tyhm6qW~!=$cunuEgYY(>J0LkObaiF zmKh-}&KZ7P`aFmVf1t*!)&QHx5b(NoYF;s5?+-pv8F25pIRm3Yjm$l~&4DPq78SH2 zAL{D}I{cezKBzAVHVE1pDJSn`Qt{Z=VhsV2jnm2WV)dkuXpS8s-aEl+pE;9^f#WVqQls)W~-j6Cp zbT2Y0CMee!Vow)z45-Ppget(iN*YB}_$-6Gy@m}>q>Kz>eYdW0*))I^{qUL*?Eg z`*r+%k7;Iopu`E4#%eSl^a(I)rc5hda8ycCdIvVP>S1lk2ZsiP*L=l>Ouvi#g!$Rw z-NlA-aN>6}cKE%oW;j^M#_zdfYEP&@xqDk?S|kixu(I0?^(NuTv~E$tgqaISA=hI9 zQc#(b2O_*<=(7Ytqw1YA7OgnjRA+ z&`piOgB7`dC3sfcF!sC)5sbh-3MggQcFWvs7P?1l`8e&Nu*KP9PjI`|h~ zqes~7MPO3@Jv`okSVUq@6c%V;m~9ozgE3Dby(5 zzT=BKkt@lL2-6n1Wxh-<=qFaQal{8$;_-ji*&d_e_UkcjW5EUb(<=t5APKr&W|YYh zNrZir5D(=R(`H>)t<2G70N;!Sf(Qu;sx7|M?Aa!|n#D5GQ(}-!Ne^5t4Y?F6^@e{D ziFj?HPf%KYwQLk_nV})blU0n)I3V&{XTM`P>$vgVD6bj0A_kNqx+s;z^llFc)R-rI z2C9xHvYYQu-W|ROtKXAR1zLfO5YIc6NMFpB@mol+mCQq{{n170RaT^n<%{%c4f+KLYbXHPJytUftTk0!|`$hR~E$U&jlbMm~0BDVoQ|VJfc(3cXa9ZR$YgTg)Gk1O=ek zqU6-?6k7sN*^B8Dqj4u(8X1Lxn6j18I$~*TqMK9%L9!rFFj!vsvyUmE>`)}O+Iewo zSG_|x=dxj5nTEOFU1@N!g05{WW6&DMJ*ll4>(B|XT_HafSoLE5; zgGw5xM1EsE<7tJ_BRfU2s^7x41n5&=l331pBr21#hn2<Y z73L!`zaH7WcId`g@S@&md#&>C+x5goKATHUorgW0fMN*rFEK?-Z|iypQmrOS+}e03 zI~j~7i9#*z8}Y>_%TI|Zstyz!7j|sA7QrvAL5&phe3d*}Dd{^d`LHaX^I~`g`+e#~ zRbou#_uUSGXzs>dAhiI=-cvapo>U0PNc@l8?4}*E@dp02IMY+H zo9${Mqgs1N2j%JIYeREF9uoS(X%2q*qR80G&H5R2hbT*Z%;q0j>rsVNuYMzw@?s#j zKB>Ar3RK`%Gd`5-nX-s8BAQ&20c`riHE4$>e2u#xUORX6BYTy!sJ@WI_T+Lw5>*%* zm^>hdz+a=99I;UVO#{V*2C;*T4qK=e)?NJFiX{#$c)oA`-S`5b4PjKhZ}#g9Ul1Mk z*cfHMD!W*aoQqSnSUzw^9@HI#&P#b{{mqc~^$%ND6^E5GP(Ffw8-HB4%M5TRYIs34 zV+G5>X;1K@%&ZxA#7XzZ$y}oLMx-Bf98=0f!{b$)Vv62v(-&U&o3r@^EdYSODS-cP z7;~WisTu-+1i%jn;P-b{0u-np6v1EjUpbI}WySq7i%38OasOhiAOT1MfJpvT0`M2>_DlY5^qUg+*kfrub=>bnf+ZH_@9#hUw-}#qvkKp4Z{D(x%m$Zk}s_IC0|1V z{VMiXPyfb>2!aY~m@LfJcm=#q6V_0&K zAU|7vht>D;<%0B{_N}L4SWaldR<%BvH{em#+Y^XjCe5*d;oeaJ?ydrINC2UYY7x@j zt^D=VkmH>2W+=|!;`IB+G{0~vWv^|+E9fTxn!KNR|ElZKcysIltUmE#LVe`pjwXaa zx^}5?Gg9HbE<_)wMT%ZiDqCPTPJkXw5kFUZBENjez?Vg9c+4`LjfO}~M%B;^#URp2 zsh?!A?Zz~sVR7C~yl@McrT6_Hta)A+#JoC}ibpMwGCpIICi_Yd97TwBAp`M_6umO!FTEp zt)c!xWvW@dMtaIM{S^dW*g?ZS*16pqzQ2jsT2MKdH7`Ys^u0>lzec#l+0pJ6Wbh!Q z8T%73gtiN=^g)6F{{{pegr0n3D3ynD;+_!n7QnY7tjxCJMJ)dlS6J7yq4ze`pi;v^ zgIJQT6Br-lX?c**(0sO4DF6BK@?r+gJ%)@QUb0L;Hvn?97{DtxzHLY0Jmu02dzHOCG#gkm;Mq2 z28Wakxo$p}cGReBRzy5K%wr;Yu*C4U?F-lb@J|39iS%)wK1FH^d?|Mn8?pwZ3@zML zum{!*Yk}ewE)g&e733!X6#GaF1*$Nu?ueiRq@|8yg>~|gj$l`;&VLTX%?@)Zv`?&m zBZj6<{E`S$yrL|>Mo2(0U%)@At3`z(xSfMefOos>xU61%vS>t_13n3pboTN!lgL5h z930(}?_m~m!RX}e7e8m_sL3!BZgBGKD2)K91M?{oeAvgL$?zE@#HffJ*suV9QX;3j zU(FO&Nb2iKWhZi$GRaY73KMRC{D%DDQqY%M0tM;@c|yaYxyw+XP49l@Nd*W*EJ4C< zP-8Wl3BC@8NA#QsZ#z>|rm6L*Nl;FVvegNT{_sYMP$t5s^A;QUR@G4CTL)AWHimA8 zbj~*s6jjG1d^ydx{{Sq2T!ghmAiOzOe4x+Xh?nQ#Pkhc6N>nSIE4c`rIxy!I_SWF= zYejc-4$1E#kf2tWRa_17VC6ibUB6EL+Y&&kl-~*=3Htj(T>()P5ofCoExU{B*RsWb-KH@;lH;5d3w1H_$JW_42l5jrjg_Ff#P;+pC1l;55n5&0!3F zM4b#X7dBdlZ;i`Gx8`x$6b2eMYxDaDiGvhDDh#X8EceIOxp6#jiFR?7sr>^Wckk%| zv!>Zz2&m#9D-sgU*2x~+qYXD=cLDZ%UNC94<(=;V4kmd|{xpv;BdeVl{J~+vYdL}M z+kf1*x=ZleD0IsJzvGLme87uQ5MR&MUD{KH z4{r@{Cfg>u8y`8jspGIRCh^<(5qzhczPq@qP0q!T{2Owg0v<@`=9lw`#+1-*1 z7uTbMUryN(rjW(S1xLOa<~8>TD8O}0VE`BSq9<)y9Sgpso;IUt$R`nI4~+u|=D(gV zi?ADGuGg6Q?Q}f+T8#m9k>d8tC6b{@uyefvbMFUV1(Axl5{lkjQ}>i#9D5*AH$c5? z6c+>Y%9bI8GTE^bPxuPj`}czXfgK!Kc1|&muIprEXW&efkSc#!5qW*04)%^W^5}PG z`%i%4E%jGRv>1lZCTPRQ8<1AD_$r3nlwJ9RL6T literal 0 HcmV?d00001 diff --git a/img/su/index.php b/img/su/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/su/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/su/it-default-large.jpg b/img/su/it-default-large.jpg new file mode 100755 index 0000000000000000000000000000000000000000..97bf6f2f08d6cd8c84070bfc470dc5a22dbb5347 GIT binary patch literal 11828 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 literal 0 HcmV?d00001 diff --git a/img/su/it-default-medium.jpg b/img/su/it-default-medium.jpg new file mode 100755 index 0000000000000000000000000000000000000000..461031f99934d59dbe75a84ed825b9b74101c174 GIT binary patch literal 2607 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 JLI?T(Hvtr}PZR(E literal 0 HcmV?d00001 diff --git a/img/su/it.jpg b/img/su/it.jpg new file mode 100755 index 0000000000000000000000000000000000000000..94802add7e6e15673d950cf943b205f6b139eefa GIT binary patch literal 35628 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 Ksl9)th5rG(VF{}M literal 0 HcmV?d00001 diff --git a/img/t/0.gif b/img/t/0.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8847824364c22aceb6dbe5c68526a2f50dc2131 GIT binary patch literal 597 zcmZ?wbhEHb6krfwc*ekBUTU;@_3CY9Ce_u|;k|(kUOF4Pqu;-O-?X#3xVZSv?VC%N zF5TDR6jc(DvpMn1nKPGG=BK5l&73)NUcU3e>-)RAyDRP079Uu+q2B4iy*oEg96Y|H zEOu_#w{PEe^@Q{$_}1(zTwCumEh}`-%q-7x*C(GJ^_^;-5M!~U#roClXl2!A0J*=;&!mheMgmL;o3~! zR`=kl7;y;FiNud96g@cyA5 zuc*$5xSHtL#UWFotlr!?zPH6Gc}jB8j?AT{HVgv_6o0ZXvNOms=zv@SiW3I*O%1Y5 z&9X*DEgdcTOjfR)9aff(j)pw_O>RB{v%RMF&lE6paWT}Dljv|W^q6X9W-ljgY}XuQ zI5&u&ot-OGQQ1OW)@i%p&fUAYOoZ7?lmeI7OP)C4&8jXYC9CP=F3ZmOkds|jRQ^`8 z>26LTA?7EXdL5#>ncr%E_#~@p&cPzi&ZZO5(C^wW>#Py5km(R3kGM7y%Zd#wEt~@W d3Qt;J_B#`qtFc{CKqf+9a)?SBpzaOJBZx`QuE~-o1PO zd^~$+N94?zGgmeGJX&h<|M`^5&62-f?mBbk%)9O8lP6F9|ETlfVz2jGz2EPN{COes zVzuC(4@aLZG3%*K>Fw=ZKEM6{x9dlb9{q6GKBFI8*cg^I8AzS1(<<^lG=# z|92~|FL(WUC-33G_sNojC*k7}{|Eb`|37TLKhN;z{gPXYY<}F#yuIA%&+Y7ohZ5c&jsI~i z<^TWx40HsFKUo;r8KN0~UXGq+5xs)`QHgm{pYIb)n>|tKe9HAg8&%@)+akV z0hNYkF&@bphC+eXP7!HqGY+p$kB&`M@G@HDk#Lxevom^)gr@o#z$mJvlq0cA(T#^8nu(FY8UUt_`~Cm` literal 0 HcmV?d00001 diff --git a/img/t/AdminAddonsCatalog.gif b/img/t/AdminAddonsCatalog.gif new file mode 100644 index 0000000000000000000000000000000000000000..2104e0bed91fad53006e5889705b14bcd36ec799 GIT binary patch literal 1461 zcmZ?wbhEHb6k!lyxN6G~RLB{a&+eDS5s=5OW5?u^#bM#c99Y2Vk;3km%^{`E=$$MU zkS*+&pyeH_>KCu4Vaa6X#ZuJfo?2}ll&YCgZ($$7np|b>p1>NBW$v257M!JGAI=_I zuIiP_8JNc@smACM$7UVG=AXmvmB#KHr)})P5}3!6P-5;AryiYQYwjWuk|$x{!mOan zY~smc?9S{Q!xV%Qmue&kg&dz0$52&wylyQNJ0T* zr*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|Tv zNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-h znc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&` zn+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b( zKe;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A( zn_hEcV^cFzBXcKbH=r3VZWab6#xBN2POh#-mWC!~aJ`;+#U+V($*C}VGlBL(^_t<; zYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf%3ciWSnRy^SD0(2ibxAGCEK5ysE6UGR z0Ee$tCKme*ObPiLqBn({Fw+M*MjwIxnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3 zVE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($KCu4Vaa6X#ZuJfo?2}ll&YCgZ($$7np|b>p1>NBW$v257M!JGAI=_I zuIiP_8JNc@smACM$7UVG=AXmvmB#KHr)})P5}3!6P-5;AryiYQYwjWuk|$x{!mOan zY~smc?9S{Q!xV%Qmue&kg&dz0$52&wylyQNJ0T* zr*nQ$s)DJWfo`&anSp|tp`M|!iMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|Tv zNwW%aaf8|g1^l#~=$>Fbx5m+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-h znc$LIoLrPyP?DLSrvNfBF)6>a#8wIDQivCF3w(Xy2Im#)fjy*`oS&;-kyxN_sAr&` zn+x(6SaoqpP%6S1SXCE?R2HP_2c;J0mlh?b0+lPnGy}s9zeOO0K-XCL7i9t?B{9b( zKe;qFHLt|e#a0O@qnDDIVr5`rVPI%zZen0=WMF1tXy|BR;A-LK>f~%`X>93cU;;A( zn_hEcV^cFzBXcKbH=r3VZWab6#xBN2POh#-mWC!~aJ`;+#U+V($*C}VGlBL(^_t<; zYvo*&npl!w6q28x14{t`8Tlpo#Toep3eLf%3ciWSnRy^SD0(2ibxAGCEK5ysE6UGR z0Ee$tCKme*ObPiLqBn({Fw+M*MjwIxnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3 zVE(+hb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($XyfM zZ|{Bc@q2Ff^4%BS%-MWx_rVKirbetxS8bWrf9b^fKMxKcneK7z$%*G2ZaDj~ zYsK}b)|1zFmbNEo{X9N-Z>RVFPY=HT{PXU{hCOYrf4?1kzPD^;hm&u|;U{mtE?GGH z{M_`fPdB)h9=v|#LVV4t8&f@>@9)}n{m0e_CooMnZXPc z1I3>#jO+}S3_2i_KykvrzO%uyskx=KtW>_;vIJHH8A)04ps6!A|k75 zXP05%X>?ZRg0EI08znKr;&ajz7v<@!sj&I0{b)yv_vW66-8~_@rzG#0 zTXi(+357wT1vF^;PwdX!;IQeAD`8QiGz1w!-?f#2THedd-{o1!(*FNvM{&~;U z4|{;*jn8{;e%^oU%l_M6udZ#qyQSmFfjKWuuR3!5`GH$s4&MH9=+2kJcfK6C`}OGE zugC9wJ#qK*iF=<<-UE_fPu%}{^8VNJ58j`8@b&b=Z)YEVJ@fF}xkum5Jo<6=(a#GH z-(Pt2^}^$C7oUE=^yK^Hr{AwV|9<`X_sh?ITzmfG=8GSgT=JKkvW!dGF1y z2iFchx^d*mt>X{h{(J;P?|wdh_lsc^4Brq?{K>-1z`(|!1M(s$PcU%IWZ>nH@z|i? zsH*QbL&EX!g9CD&n`%A=xw>++J56Y4ENbBp)>g8R$SGv)ny6@BBoNtja6zY@Thp5Z ziHDC);bL=4U|jUrtyfHY35&rG#jc67bb@Yta6Fj6DHKw-!6ET*XB$ThPuYinC!WG` zl6nU$HXMDx#?8p!GvPx5TMJW^j8Mq|2RCM>B2Fz20cVG}CJr{8AKp7QG&V3;0{|Kh BAr$}s literal 0 HcmV?d00001 diff --git a/img/t/AdminAppearance.gif b/img/t/AdminAppearance.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e5f79e9b3bd6a1e8231aeff9823f2016bdbadb2 GIT binary patch literal 1025 zcmZ?wbhEHb6krfwXlG!k+F?_@!$y6^TJ;(0jApF#oIc-g#=NZA)1tQ>ot-4PAXRor zj>hs_jb*u7Yl;ommYS}qve{H-vboH3OS#$hDyy9}cDrirKR7ymi;jAm9r>*^|DV{0 zNmFYZw>$K0aht%^UowCeb>nzM^auP-gXwyfgLlJXl%DsC>Rys@n6=E|Bo zE9<|s2fggielRuR(VX;0bF+T0a{RO=_T&EOpPQo}FD!bpsPM^>(r2qHpRK5QzP9f9 zx|-+fYM-yKf4-sq!~XQ&=dAx<)&74~=ig<+-xr;JUyb{JAou^H+;b}%&TpP@ZTFm; zJEq^?HS6x)xnEnG9ZTWnC*Z=?j8Abs(1QdU=Ff%Yn zGw6VLpgh6AagV{ALuLnKkdR6}ht{19&pqb*PJQ)d!^Q$;e(PmtIy8g3MCME9u(5Ro zyS9oLWgNTn^3q8m*2WpnW<(XbvCc3E@niUL;H1YaUOlnIj6+GM#PuSrmT+uvJE!f``Zo|B9vxhr*{9m=$I{NhuI|)y^tAosY+Wfi}Jkr$;Lft>m1{p&+23 zJh92la@vK3Q#jjMq$c`^Jec6l$Z%Cc~Bz4A%n#K3)m)JF{6IJ3p({8rmzYaEWO@i@B9HSNWSFb%@zYhKO&f&{DkI$d|KYxk*`Zf0R z=Y-E+Qht2T?d)vn>2B%oZSCvp?Cb08?3>s#X~u;9<_Qy;CQJa5of9VXPoCU6X;R}oxfzs zoSnP2?%%(=dF`uXNA@2&bm-{OqlZtNJ$drvsnaJ#o@I~WodtNBVUko3x!VWo6vhN}I8Bbl4oGFU~GTxu)?9esr4i(j4SWENrW zTq$Ma!O+~|KG&x76+`WWMa=EIYDy)7iw^tEv#DrkTTqbL)Xc^`%i!Qbcm8=tLVnz7 zT-183M^>+D&xcRTi~<@%&M9aFEM;$CV4L@*(SvpCY(|!CDF=;Q4={Fa6^=Ohd9%fQ Un{bx4jZGUYr)noMF)>&J0PYiWr~m)} literal 0 HcmV?d00001 diff --git a/img/t/AdminAttributesGroups.gif b/img/t/AdminAttributesGroups.gif new file mode 100644 index 0000000000000000000000000000000000000000..897dc0a633f63565e65181c5f877dbe21d453458 GIT binary patch literal 612 zcmZ?wbhEHb6krfwc*ekRt&idHfsPmZ(ylLX`Tu6|t%b&)HZlCa*Yf2;`M2XPzdqjm zerM+M<$_-iX#Bbq^YgIctG%KB@AbU8xa#-2GoOwIe0#k6@4cGW>jaNC3I4w~=i3qE zzdzpnx)A+*i_8DpSuZvkKU%8%|90}fce{UG@cDdW=C3m@?{-x z|Gt{~{o$&AFIRm!o%UxR!-w-7x2G`NUE%UuTQTBkrG$#{awM@@S>?yQ{0d?GpTbz2x81wm(;sJ|6V>x|QMo^{5{g zQvQEG_vN7F&&R8No(p)oT=K(a!8hBCzwb4CajfJ2`+I*+D*k`g^Z(h*hjSPnu66l! zqwxFDAO<=D#h)yU>eE*;PY^ol~#fq*;UA#zxz+Sy)(=-@}j_;9-ysUyDgHfxvn46-E@m7|( z9~K^EW0g~9x#DzSNe8D8Q{RdihD!yyW!O6mZUiv4aH(o$2_zkCIK(N@#Px@x$AJ77$Si4U7PT_FfN2(Z>#~*3 z5JW9v8k;lmHb5|-K!Fe;I80Dbj)Nl?k$~e#e?b4BXV16y!@IrPi#?VS7mvdL7@!OQ zc3o*cfd6vn7ArZAm0Z9+_q03Xnc&nj{^b(xX_D~F^Y7y`Q+g|%J19?J-%9&|5lp+UUlb#oKT}6)T-{+${$d* zg>^$kRMkVO=3%|2uwGYG2NqNr3u)R%G;I-G|CphB!Z18-0+Ai25^ly^`3K4E8p$0x zo!->c#AGsAELKZPOKWQ@o6T-(Yiny<9H0xKT}P z21^^j($662lachvRQ`4BO}pj&H>ma-T*HCr+&N(?4{j5Ub`8L6nM-6Z6WPm$-3`N@ z1|E;c=kxpe`UC=jP$=y0?-z^35{X1AmC9tYfq{X+!9lrPu23kHN~KDr8X6i>tJNBf zMyu88bUM9W4}zeaBkN5(Jf8N+wGL{jFSs2f?YQ^S*rd&aP$l+ABE zLF9Xq(5U!K_n0OoS{WXntEM^jTtB{PzM3F;nHOUVuCYkYsjYM zXOCoLgqcYzu|*~hQ*bpkCM06piEAbrmT@po&BI4*`PF=q8jDZ8OB9{hhc~1Vou;Fd zwcFF)C9;z$8T(&F?!C|;TufQLIdP4gzzC*ct3%_CC5zMPhsh}zq9drhVtrh2!r?Vp rOIC!Hr7zOtSgVS+-)p_DD9&CLx?n?C%K3uG(ig$&b_N3&3~=x-){fS- literal 0 HcmV?d00001 diff --git a/img/t/AdminCMS.gif b/img/t/AdminCMS.gif new file mode 100644 index 0000000000000000000000000000000000000000..176c99a23f6d8391aa7f0629805dde422eeefaa1 GIT binary patch literal 1026 zcmZ?wbhEHb6krfw_|5Zb7=dSLpv@U*>>f`uIC53 z-(73`d3?&xlM^3bTKoRenkSbxe!INx!=)`BA8q{bc-POzn~onpe(KnfGsg~`J$~@? z>CZb7=dSLpv@U*>>f`uIC53 z-(73`d3?&xlM^3bTKoRenkSbxe!INx!=)`BA8q{bc-POzn~onpe(KnfGsg~`J$~@? z>CA$L}@A3J?n>TMxPEI~@ z8L9Ky+U{zCh92BX{H(G}s;ZJJ7!3_IjQIJ@1Z36Kot#uu82&S~ qanyWt65wFv)3KPaAmM^zTa%Q5&jEuY3Y}a!=Wda}Vb(I9|HqM9IoC^-GV{Z@K=l^m{`?Lt|rOb8~Y`OG{f@TTf3ezgJ*7}1R_n+Lm|InU;M-Lu6c<9ifBS(%L zJ9g~&@#7~?o;-Ex)alcw&zw1P?%cVH7cXAAbm{Wt%h#@5yMF!pmFqWe-MV$>&YgSr z?wz{%{KTC%C-1&J|M30&r*9rUeE8_mqsNaQKY8-x>C>mro;`d1{P~L)FJ8TR_4@Ve zH*em&ef##^yLa#3zkmAf+lLPyK7Rc8>C>mrpFe;7`t{qlZ{NRv|MBC;&!0d4{Q2|u z@85s_{{8>|pJ5aX%@9!h$->OQAk3fxay}?eFmN1YQ0I`bNbHqr;^4IEOlWqS+`=;7 zp~AqKiA7C7y{1sXnX!+}NXVhFL**EgP)?RkLP2uERAtweCl8Dcv3JSHbX5p^bUY%W z<*?<;jgLxP-KuIaEecJK4$YKLztUj%nDy*5>?1)(8bh1-fp(BSQ zXwgv?g|tf*hLfN2h#7|;i{W%$aH2&^d(je)q(dGZin2{H4+;|!I!$8F1Skr(_DnGd gs)~@1IMmF>BO)N7Vc@{fz#wU~D(>v8QU?ZW0IbwJT>t<8 literal 0 HcmV?d00001 diff --git a/img/t/AdminCatalog.gif b/img/t/AdminCatalog.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc48e2e06d5bc56d0e24584acf037f84d2b1ae5d GIT binary patch literal 570 zcmZ?wbhEHb6krfwc*ekRv)lOF%abp6wthIR`fOv_w}-25FSGjh=fk%L)sGJ+J=h=m z=ktY+mkK{!sr!7{`Rjvu&(GJ~>a+NABl_R3_h0W#{{Q#KtJB%S-(Q*h{c+3x|Nnn~I`i#L_Rklyzg!Q#y~X}`9|;OD;~F}S$({a{pIfR@7G#>zFhqM zVZ(zx;dj>B-`VW&=i7}RPkP^<(|mcL=*5NR@6Yz$o8tBB?WT9<+8KrpQ2fcl$j+e5 zpaXI;C{7sIr#C1!HMg|3wRd#3aB=qbatX6fn$)b(DkVQtUcgDR$yU@}gr9ZdWOh;O zCL3W95neGd2?^b;QnpRfQi^VljLWA;H?b*;9uu|GS2ENSvOA*8CTe7$pk~jZDx}WG zeL<7m)$-ICbrV?~70o77VM}|fr_XhmRZN>)WX#P)jE#ADC2njmJkq>?o5hA9;>3hR N7RD|mFCG>KYXEG{&A9*o literal 0 HcmV?d00001 diff --git a/img/t/AdminContact.gif b/img/t/AdminContact.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f85b96600197d73fbd783c08a64af98ef9b7e17 GIT binary patch literal 354 zcmZ?wbhEHb6krfwxXQrr|NsB*-@m_q|NhytXZP;iyL$ENk8=w?pO|yz%$cJ{kM^GV zbL7zao|8ZJ?%msd@cq`UTYGoE-?3%kmJOTAcYa>Ke*NUFM^kqHFW&m5Va@sCbx$(a zKC4)DrF_--n6=+`&TPzB@np};lIW%X)qmoNfr0?fynv=D0U9>UH`avBmS7O+ z6Y5&5!JsE~k@La_EgQ|NU4bXeZswgl$e_h8*TA2{!oZ^<$gL*K>f6h}-y$s_rmQI0 z)7UhDK~!E$Oje>NAWkUFyO){CWf=oAM~f>ff0_s@2L}TuC-2@y1|bn%uOmks8LR;x C0fcb? literal 0 HcmV?d00001 diff --git a/img/t/AdminContacts.gif b/img/t/AdminContacts.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e0b0e373c7d21176e9d0a72509af5711c9e5ad3 GIT binary patch literal 604 zcmZ?wbhEHb6krfwc*ejG;VAy~e$?Jd$^5Ao4&M6VRCDm+wtm~3E$42%esVHo>XyfM zZ|{Bc@q2Ff^4%BS%-MWx_rVKirbetxS8bWrf9b^fKMxKcneK7z$%*G2ZaDj~ zYsK}b)|1zFmbNEo{X9N-Z>RVFPY=HT{PXU{hCOYrf4?1kzPD^;hm&u|;U{mtE?GGH z{M_`fPdB)h9=v|#LVV4t8&f@>@9)}n{m0e_CooMnZXPc z1I3>#jO+}S3_2i_KykvrzO%uyskx=KtW>_;vIJHH8A)04ps6!A|k75 zXP05%X>?ZRg0EI08z1kb?=;mn_BkPUVgR3?qZqi zh0M4W>pZ*Mnon<8cYWg7=j&EpIGla4|LXgzWowH9mfk8nnzG{E$*vRE{bsvouS&{X zakT$p>zpIAYAzPdzqCJX_wLQNj-+lV51hH9VbhVc+of+lzbQF+I{wDe)z_C^es$sa zi?vNR8qyX;Mz6b-HZ?MJ!rwZn-x-b@SP-Tid5xzP0TBnXG;B85^!o zI9@sBTzAgl&H0OSijQWuZp%-Z*HCb6X6?b^%qP9NO#OGUeG6~Q%-wx7 zV6xBB+gBaCZTk0BTz-3Q%Fz~vkpvWfvM{nU%xBO6c^Z@_7&!hj*mM5*qSndIEheWr z(_llQ7I#Nc30I-ItC$|IeWAjWltbE5O&>%$8M;p%Ftb|rWoAN4sHCL?!`+)r4GUUb zf_P?T1wHOk_U5Z_IKiOKIn~u(@5Bs~m0TQ#?q|+KIv;dya&quGS-|qxrPHEtnt|h% zQ-?&v=5Zu+x*X@?V&$&MXqa$(4Lj!?rJWBJuW}b>V~%pz@R7qwBgDU8M}gqdNezO{ zNj!>&pB~gy37GQ0BDhgxwqRmRpw|z za~=+yccvy^e`7YIWRypWlD(1DwhUacaO`LW6;uomLeq7`t_QX_u2E3rG zu0YE*?V8{*XCbx|Y!sMGBq&R(1a(*D7P7d8%z_DHOC$``C@cvU6XHAS5(7mu+K*_+ z*$&6M%nqquU{2Fg^Qsn@deO2f5H^J4M?8^6NX(KXfwXH#wnXmJthvQ-1(6*Lw}40} zsI=!|&}B5nIB?W_o0~?_+uPqm4IVvabVpL(GuI3f3(JSZ7hsc_WylkchYZ)T8A7xP z?1nTq3_C#HK2?1HOAwX0RR>-`XiJh1dvWA6Z7*QjvIaJV9W!+)XO@Mw#z`m*w_Wbp z&B&=EyJE4B=xzjKq!+kVv1Cgg92_YBysNp(hk|6}jatv9V|SAP2IQ=^re zwd%xVPv^{E;Nvgn?DYALyT{U(H*e*8z618f>hDtnql-629?UE1+SnBMbvyfLeytPc zuir*P%iWiTSBJa5`tYJV@OIbU>Gw8LeXo6X0Uf#W(xLUU6N>)o+-~ag(YKyo8GIi# zj&_WH)6;)>WF<9uYP~vpx-0$iSkG;vm)!rU@9ZI^e_{ETBdGtHa`^h}nNL0#SH}JY D1k$Mg literal 0 HcmV?d00001 diff --git a/img/t/AdminCurrencies.gif b/img/t/AdminCurrencies.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8672a6103b2de37cbfb6fe47d7072793375051a GIT binary patch literal 358 zcmZ?wbhEHb6krfwxXQp#yfbgfrFn<$9GrZj=f>-+Z3mlYpPjnl+PaE8CFh=;op*lL z%g-;S9GTpGq;1oUHA^nc={?@H=kE5k*OoUQsGWMczjSx;)YFqrK0e-dxar!nb4$-H zs@qq2^#0+UH+Q`L`fBO5rNw)*@4dhF|Nnmm+5p9$ER5_7N(?$6<3WC6U~6`mSTG|{ zL+S96PY(+urUW!C%Dkwv!0DXxp{X_+{A(PA7DTXdF{@ZDt#Fyw|8(t_9??c_S?x_4 zc5EWNyfQU%%)HDZnJqO=l2XDVBEkW3V(iYG5^Nk^+`J;p66`Y40s^e1yaH@uyb>#< fIU{7HdD+;6IhgvCq?wsT_c^gMFz^I8GFSru9^G*O literal 0 HcmV?d00001 diff --git a/img/t/AdminCustomerThreads.gif b/img/t/AdminCustomerThreads.gif new file mode 100644 index 0000000000000000000000000000000000000000..2194c59dbdfb95ed058b5a8a7c7ebbd580f939c8 GIT binary patch literal 587 zcmZ?wbhEHb6krfwc*ejGVkl6u=!|vw8msi_ch@&8&(?W$X4RHSg$u;wc_2`WfKa67S<O)OxmKl} z@Z!RdmbI7XrRrRW^7JZSl3>ced+XstlhV>=9uMx_zy8#t*O#|BR;@c(uJ?9(?TaJx zK7Rd~)3-i<($1b$$GtoEo?TG9CDy6kgFnMU==+s*^Y`A^ykXtkO{d~4L|$zwFKC>4 zzR|eYT+q67MMa?5rFj3iiiM8#n=6){`*CKrSM$~v=Qpoyj99w=#{1n(8M9A3e(`o@ zML@ib)Z3GbY%12Ct5Of|*;}{j;ZJ=K+P5{h@V&pj z=l#}}zSXC)odg!`ybxg_{p{M-+|)BHmWd1c*9>ifi@Ia0)R{;&PQ0)evb;2v-vq=azRca54xAv}g*ja+VE> z;+Jp@S5?u{eB-Ig>&&Rv(i3=Tp@$G}lb?g8;u7XP+g$u;wc_2`WfKa67S<O)OxmKl} z@Z!RdmbI7XrRrRW^7JZSl3>ced+XstlhV>=9uMx_zy8#t*O#|BR;@c(uJ?9(?TaJx zK7Rd~)3-i<($1b$$GtoEo?TG9CDy6kgFnMU==+s*^Y`A^ykXtkO{d~4L|$zwFKC>4 zzR|eYT+q67MMa?5rFj3iiiM8#n=6){`*CKrSM$~v=Qpoyj99w=#{1n(8M9A3e(`o@ zML@ib)Z3GbY%12Ct5Of|*;}{j;ZJ=K+P5{h@V&pj z=l#}}zSXC)odg!`ybxg_{p{M-+|)BHmWd1c*9>ifi@Ia0)R{;&PQ0)evb;2v-vq=azRca54xAv}g*ja+VE> z;+Jp@S5?u{eB-Ig>&&Rv(i3=Tp@$G}lb?g8;u7XP+gsy$-o3qh_by$!w70kS{rmS-RaIxsoJmVd`~Uy{)~#Eo zOqufR*|VcZkADCD{o1u_fq{W**RCxtE}l7aW@~G!r>AFlczAYpHUkcz_>+Z^oq>}< z2P6-&lYw*^fRH%#4wFb0FB>f=7j|)TPp&pM{BsjZs*H zQII3ukH0a4m%D&PfTxy~)s2gZOGHGFN!W;$mw7ca+p<7mCNUc~R$&2lZZ=*~Ax9fA J237^s`nDuvH7P*9>ve4RbMw zbTf(eG>`SRiubj3adC-^jEsqiNk~XYNlD4c$;r>pR|%V=5xqb+aj8-IDzn`6*2P;~ z%C|aH?sTl$=~T1ZrEafl!#?-sgY(i9m*i-zDKXhxZU0yM(XJ-XLtViqCd8bZmU?-1 z&eiobTefVOz31WL1CN#-dc5)Y!(A6&?Y;DR&*gXfue{!W_1(>_t#|iNezJG&qmv7t zonL+S?AiPG?;p7G=Fs)`M{m46b?5!XXaDcN{r~9Qe}+*o8Un81T-9AU}R)*S`fh4 iz{)Ai=66)&HXwA61DpXp4!5RSPiJvV1 literal 0 HcmV?d00001 diff --git a/img/t/AdminDiscounts.gif b/img/t/AdminDiscounts.gif new file mode 100644 index 0000000000000000000000000000000000000000..f61d4f7bdab8288fd16b0c267ac486bbac973683 GIT binary patch literal 248 zcmZ?wbhEHb6krfwIKsfNe*OBVPoK7){k!ww-!o^2>({TpfB*j4o8L!{9GQLXf6tlkTeohVdgVV5bf5pf_uhX7+(7Xs3nM#&2!jqt z3CKpT?es7y z=k-cdoZ+)fq)qgy0*gkU9t%^N$E@DtmbQ`MY!A&N`@+JNSo6YpIg6P@x!9U?TZ)An cs|Hq)$ literal 0 HcmV?d00001 diff --git a/img/t/AdminEmails.gif b/img/t/AdminEmails.gif new file mode 100644 index 0000000000000000000000000000000000000000..94ba79d858a2395433b01146ec15c269dc9d3ac3 GIT binary patch literal 582 zcmZ?wbhEHb6krfwc*ekBo3mxx^*?RP@4Wf=eZ`Siv7OuQKK~xpyfwDx)TYy~u08oV zb<5+gKmR+`9Q3a_a_-jaXYYRIPrWdI-^;_df5g|UaxFdh^Ur_Zj>Grg{QLO*-<-|Y zp1l9(UAV4g?Y)Su6MOG{Uv>0t^_Capv<5Hay}?d7}ys#C^t2? zw6?XkNEzB28*}u_$(fp}n>vX&ib;yinLAICnN?Aen@v(>g^IK^51Xu!hM<_$Qb~!` zYXo$ZbTy2{w70PF=;?{=vS!??c|co%NnnluleLY_UcLjWoEA&jxGgM%&Gw3laha%U z>kA3#Yu^@T)-d4F;*$8ea>Z={4H;d96p0fH7C5po%gtE8z;LXWjn{9^4u^@0`k6%p NGVh!yOjcm91^^RL!pr~w literal 0 HcmV?d00001 diff --git a/img/t/AdminEmployees.gif b/img/t/AdminEmployees.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1ca455c7f667e9a60e910196f04862560ef45d9 GIT binary patch literal 586 zcmV-Q0=4}|Nk%w1VGsZi0OkMy00030|NrDqP~J{a+D%a2Pg31YQQAyW*iu*6aC5^$ zO1nWw!9`8ePFB1}P_jZzs6R@sMNh0kS*Ar@>a%#$qHXQCe(t)0@4SQf%$)YmrS{OL z=*6Gz&8O*A_f#kP}_Ry&9 z$)oPdruWpZV_sQyJ`8g{42nq)fkh68Ne^>A4sbsaVKxt2H4(>jDav;$UpW<;VlG)Z z9K(}mk4X=9JPc_$5>PM{eLf9(KNG%iH+@YgwUc<7SuC}8OL# zXkAv)Z%Y5#*8W{k{9RD~VpjiYUH@)l{%~afab^E91vGAJ;PeoH_xGB!6jLzqoSD?d3rJ|dVU zAT1mzDjz18NiH56EFK*_m zZ*OdAXJTGjb!c-Df+G}QWo2VvU0GIgR~9;gBo|X_VZLy|LT3w_I~aBh3PHt=nTHSs Y5I9kx&;$ep1{gTdKmw+Zg8~5nJGu`CuK)l5 literal 0 HcmV?d00001 diff --git a/img/t/AdminFeatures.gif b/img/t/AdminFeatures.gif new file mode 100644 index 0000000000000000000000000000000000000000..857f861f642b30ed4b4857c67a0851c967e0dcf9 GIT binary patch literal 998 zcmZ?wbhEHb6krfwXlG#H6OvH>Czd?vUiS3+1=DZl&w5-m=V8&Dr&S9c)h>Oytt)4D zOX7~!ltZlvXZq3)POZ8$yW-*0)W)V;zp3m9!Zo!U+i}$}@arpg);a`~AgRFYi40^z7P^=T}cZzkTlY&2#T>oqTxf%Cq~|-`>Ce4rT|< zpq7rq+U!deJdIM^y2TwE7;ZXU=n#|;H!8RhaFD4@#&QKmOOZ>nkg%#-3&X>QEj&`z z+ai8mT+H1ygMp#KUBr3yTQFhsBrxNL0nx&?K#|)+B zQl>-^(=H=sc1&H@ydtMN^qsoBy1hHzWAF1kR{ubML0>*Uet!DEclREVaP!eHEDXDY zVTY0vcI-$JiFT!@in0!-Nis9eWgotFUQ%ALar|Z^iYDdvwv?CT)yqyOYx75>@guU; z1Eq;S@2>w~jx^yoO9dQ!w|jVD8f`@AxT*Z->_1Uds_`@(g9V zM456a^JU6>g)(2I&DUu>m!7y;R#{VfUnXy8dZ*^qP8UOFv`nW~V+dc)!oy!x5j^87({0OHU7R z4n1&wfL;yoeCEhL;Q9tUy}+vl)E7v71MU&v8Gw`?(nF9Q2F{<5GD3C`vcr%WMeHbK zjmT#}$Y8VCIdXz?TRE= z0uIQ!5pW_v&m(pofq4Y6|NCbF0UO|tVT-W%zt-PRV7yUm32%R)O2>~)DUW`={$fnr zhD^O-U%=h82!3o-i061Ao>pyjIY zR&m3ML`yRs94JljeQ#4QtZWpXf3yEbbxM&YG6xWHzoO*Qkc z6jv--#mf^4oczUcvb6@eKv`0}NgNZu^hQcDKVs9_!AA;(R<efx*{#&fNE2^IxLiG&9I1rI&w{jjaS0sbz|tN;K2 literal 0 HcmV?d00001 diff --git a/img/t/AdminGeolocalization.gif b/img/t/AdminGeolocalization.gif new file mode 100755 index 0000000000000000000000000000000000000000..1d5dcd2fd93629e435424559e2179e0af340159d GIT binary patch literal 1065 zcmZ?wbhEHb6krfw_|Cv!Tx~FOf2~vVwy+gdGoS8Dot>1kb?=;mn_BkPUVgR3?qZqi zh0M4W>pZ*Mnon<8cYWg7=j&EpIGla4|LXgzWowH9mfk8nnzG{E$*vRE{bsvouS&{X zakT$p>zpIAYAzPdzqCJX_wLQNj-+lV51hH9VbhVc+of+lzbQF+I{wDe)z_C^es$sa zi?vNR8qyX;Mz6b-HZ?MJ!rwZn-x-b@SP-Tid5xzP0TBnXG;B85^!o zI9@sBTzAgl&H0OSijQWuZp%-Z*HCb6X6?b^%qP9NO#OGUeG6~Q%-wx7 zV6xBB+gBaCZTk0BTz-3Q%Fz~vkpvWfvM{nU%xBO6c^Z@_7&!hj*mM5*qSndIEheWr z(_llQ7I#Nc30I-ItC$|IeWAjWltbE5O&>%$8M;p%Ftb|rWoAN4sHCL?!`+)r4GUUb zf_P?T1wHOk_U5Z_IKiOKIn~u(@5Bs~m0TQ#?q|+KIv;dya&quGS-|qxrPHEtnt|h% zQ-?&v=5Zu+x*X@?V&$&MXqa$(4Lj!?rJWBJuW}b>V~%pz@R7qwBgDU8M}gqdNezO{ zNj!>&pB~gy37GQ0BDhgxwqRmRpw|z za~=+yccvy^e`7YIWRypWlD(1DwhUacaO`LW6;uomLeq7`t_QX_u2E3rG zu0YE*?V8{*XCbx|Y!sMGBq&R(1a(*D7P7d8%z_DHOC$``C@cvU6XHAS5(7mu+K*_+ z*$&6M%nqquU{2Fg^Qsn@deO2f5H^J4M?8^6NX(KXfwXH#wnXmJthvQ-1(6*Lw}40} zsI=!|&}B5nIB?W_o0~?_+uPqm4IVvabVpL(GuI3f3(JSZ7hsc_WylkchYZ)T8A7xP z?1nTq3_C#HK2?1HOAwX0RR>-`XiJh1dvWA6Z7*QjvIaJV9W!+)XO@Mw#z`m*w_Wbp z&B&=EyJE4B=xzjKq!+kVv1Cgg92_YBysNp(hk|6}jatv9V|SAP2IQ=^re zwd%xVPv^{E;Nvgn?DYALyT{U(H*e*8z618f>hDtnql-629?UE1+SnBMbvyfLeytPc zuir*P%iWiTSBJa5`tYJV@OIbU>Gw8LeXo6X0Uf#W(xLUU6N>)o+-~ag(YKyo8GIi# zj&_WH)6;)>WF<9uYP~vpx-0$iSkG;vm)!rU@9ZI^e_{ETBdGtHa`^h}nNL0#SH}JY D1k$Mg literal 0 HcmV?d00001 diff --git a/img/t/AdminGroups.gif b/img/t/AdminGroups.gif new file mode 100644 index 0000000000000000000000000000000000000000..213f3a2c72ad919fa008c1adc9e88a9b375c0137 GIT binary patch literal 1004 zcmZ?wbhEHb6krfwXlG#14k@;a+iaYFI=W1%~VeR*Pru`3@|2J&e|EOjEV%Pr< z-TXgx|Nqpc6D6GoN+v%^*!I6@-Sf0F|NEmHCdN3mRfJ7VbeWauJu}09a%JwaN{1yy zAuDPV*VZTf)qd2`6x=bnW^P~J>Xw346Kl8kWjCG9Z$Deucdm5Wxw6UUE9PCOzT9GZ zb&kRP#Y#_?N<3X_{A`WYu}NO{rurV9o_%;(*^vcR#}-#yTU>N)Y4x*N-j8MnK3`Mx zY948s#Ib<{feEQ|>x&&f= zJnHS27pSjEwD`a=K`o={&kM)E1%jrTx0VDdFL}(Z<#BCCVshKDLk1dNa|{+Xc}l9g zNC?yvH?{Z+8O=MA(V)uJ(x@A>!{dV|f;lh**UKGxo4BGci~L0C0UEUjP6A literal 0 HcmV?d00001 diff --git a/img/t/AdminHome.gif b/img/t/AdminHome.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5c8f1b7eb3db30aa84f5b817b72a862ab2d7c00 GIT binary patch literal 604 zcmZ?wbhEHb6krfwIL5$GW2X``FQmmwXV0vhC1o~e&Yjs(X0oTtrDRvmkw-^N%1pL2 zxx|#k9GRCgXV#oMr;hX_`7AlKrF|dGhE^Ojpd5tdJvJEqyL^ke0TVE7z{9sq@*=71Oe-#;45X%Cej( zaW+e?Eh$--GiBP8J#{uq@@&3*dUIu6O-foy%B++%tJW+jb2)NtPtCp(n<|?vO+GPo zF-Mk_ELpZ>$+0;(n^LCq^*nj@BxO>}oIIB!eLf+5Ay4kzdGqego;H`7s+ue7O5WT% zvZc;tPhZHCB%3{TF8}}kXBad<@h1x-14AH#4#-8IIALJl*$~*&9B5?J($NyYChFPQ zAu6Sm` zxlSPO+C3gdr)2$IH2fu%6~ugHPoLT+&ZNV@AE?ah80ew+OtD>6;C{3IDMdbgFONV) zrw);QUVMD2U%oZjsCXo*H1Vj~)%?gdJb08}hC|>9gV7TwPH8iZm=hlr**RG?nXUvJ XbnxWl(#SNp5#Y?;<~^N>k--`O#F@u4 literal 0 HcmV?d00001 diff --git a/img/t/AdminImages.gif b/img/t/AdminImages.gif new file mode 100644 index 0000000000000000000000000000000000000000..c33d0e62bcd952d0a38b7bc06386827f035474bc GIT binary patch literal 585 zcmZ?wbhEHb6krfwc*ekxG}Zd$`%h(au4PVLRJ%Ly;GKOlt4w+}U+6tp5Zm8zabEEM z|NrOhdfvPCLD8H;Z5#8BUwmA=)U#?;R^6rr^Uv0F9gMiRF89ON?^8BEK6zqxX=7|_ zuk)<+7Z#kEG-vCzx;^0&j>b$`eW7jJ_VShU-oF31@xZMkm)A8fyYuDi_oWvaCmn2G z*J@X}(s$;Ww6}ON0Mq5-eedwK=CIF13SZi1|5)#KykvrzN~?}skx=K$=pFk zvAd^7Mxe<-MPtg;X^b*WGU5{KuCkh%KGu9prZc$}H6)Z|Ep#1?4Vf+NS15|xxN15o zh>CK!1#WBFVIwSJWNXXf$9Z`BP9?1X78ZFAX7wX0O?jM^`91Z7Obl*szjt3sTH4N^ zm-mjMsg8~yo4dQVl@-HhQ!WmZi3bk}HL@}&#dJ)V%`POat+%&tF!yWl2x#>R>kbT^?jJPQD|}{P)V!eRxgpWZ17lYO zr%#VhnHQI^DlB1rSjy(8w5`$EyW_J~C1$OyLN8b zvuoqt-JAC8-qv}zsq<)K|H<|Vr#q*e>z{Fc!n{jU7hayR^xB+rXAWIFfArFYqtBi_ zd;a|S%a<=-y?XWf_3Jlp-n@PL_Wk?!A3l8e`0?YXPoF-2{`}?3m#<&He*5C^Rx04xHm)XR*P+$)%Nn=ftBghK)`f0_+Sb dPYx{3Zf0TSDDjxl)a=;I%u?bp(LjO08UUyF)1&|Z literal 0 HcmV?d00001 diff --git a/img/t/AdminInformation.gif b/img/t/AdminInformation.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8c2fbc90dd4cbe205228b26b73e5a4bfe16f0a4 GIT binary patch literal 617 zcmb_Z&ui0Q0L?~Qf1tI~NrxTl)OFOl!KOG?mW^V6$RJ3uKd?1U)ZjtFKnWg34{O#A zDOEItA|q5Rp@$NSl+Z)@D6@RzP=W{f@E~D`e0q@LL5ippYxh6+j*s^q@A0mzh8DfI zZG?@`2!f2~GgUCfl^`tu@E&I>I{w;`8iv}&sR|0* zlf^osizrowN()nhPUlqWk=p&)lUqh$O=JZiHw`i=i8Z8XMwC~%B4i6NdSBv7h^m6W-OaF^l=!He<5f@I>q$-%22BT38!#27}k^Lx<0AB`hzG&zkN2>rU&b z5O4O4(6N}~Du|6!2lUKoX zi<08M+K*b>+S}UNL7)QyIy*W$yMUm(ySt~Sx3{;aw+{&V`}-$?z@&+jCQY6^dCHV2 zQ>RXyK7IPknX_ijnl)$cyt#Ad0m1wQ3l}U{uz2y}B}C&akmoHzxe*MOc8@F!Vx_$fhojZ5#-@pIh!GnhnA3l2Y=<(ynPoF-0_Uzg7=g(if zc=7V(%h#`8|Ni~^&!0d4|Nmzg1tT>C6o0ZXGcfQn=zszMlqVQC4lzh`$arjc;2^CR zb)Z90nXN}mJLG}Fk3(HYyCp&eViH*!j`z#0opU2YwV{ELl~2J#;D8rbla`l|!2+Yk zrfC`pVTMjF924a2s@@cM8nlW^N_A~m!O(J$NlTf1)`m+doRgGY+ITpVma;esg=G{Z zC?zusiA${LQII&~C8FUs%OG$POXpMp7VC(ej7(m={Jv=g3m!E-VAT#@=26N0^rW!1 nB!}07h0gAMr)N|~D4a+<#LOY6;WI(tVI#93Td+6}2ZJ>Ly?OaE literal 0 HcmV?d00001 diff --git a/img/t/AdminLanguages.gif b/img/t/AdminLanguages.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d5dcd2fd93629e435424559e2179e0af340159d GIT binary patch literal 1065 zcmZ?wbhEHb6krfw_|Cv!Tx~FOf2~vVwy+gdGoS8Dot>1kb?=;mn_BkPUVgR3?qZqi zh0M4W>pZ*Mnon<8cYWg7=j&EpIGla4|LXgzWowH9mfk8nnzG{E$*vRE{bsvouS&{X zakT$p>zpIAYAzPdzqCJX_wLQNj-+lV51hH9VbhVc+of+lzbQF+I{wDe)z_C^es$sa zi?vNR8qyX;Mz6b-HZ?MJ!rwZn-x-b@SP-Tid5xzP0TBnXG;B85^!o zI9@sBTzAgl&H0OSijQWuZp%-Z*HCb6X6?b^%qP9NO#OGUeG6~Q%-wx7 zV6xBB+gBaCZTk0BTz-3Q%Fz~vkpvWfvM{nU%xBO6c^Z@_7&!hj*mM5*qSndIEheWr z(_llQ7I#Nc30I-ItC$|IeWAjWltbE5O&>%$8M;p%Ftb|rWoAN4sHCL?!`+)r4GUUb zf_P?T1wHOk_U5Z_IKiOKIn~u(@5Bs~m0TQ#?q|+KIv;dya&quGS-|qxrPHEtnt|h% zQ-?&v=5Zu+x*X@?V&$&MXqa$(4Lj!?rJWBJuW}b>V~%pz@R7qwBgDU8M}gqdNezO{ zNj!>&pB~gy37GQ0BDhgxwqRmRpwncV{U+gv=l@V5dnEWMMSc5lK31rJ0Cm$iGA+#`{$=mLSp2*3hB zROR`LRTrS(pznUU{6l>-1Otx8#(qz~mV!@4K29qqr{=b1Bj~v>PFleqh`YluR2RIm z8&SbV776c_4&6ZsixE?01ykik(wt%`ym&0PbPQ1{%R`Obuaw`fR+Rj#Eh%qpK@1K3 zNF7V-P-ZZtnVqtmT@x8>TP8;j=PKbmRYAY3fUn9IO78uo&eswO$LfnrG^AWn3qON_ zg^5rny7NMD?Wt`|F%%{gBPgsFRzKn2?P-jCfdLObOcdg;)vB)7D3Ew@8BU2JtMiC5 z6ir;s5SPdszL8QAHDrj19A_rSY1-mVv{(!6r^)sl3lpkiWSgI58wXJO=g4_c`J6n} zJCp9UXL{|oJQD@;igLHH+M{`}q_6N8sy1e_ebf0X`ifOU<(dh#F?(afmHw~mW&`u# zuY(l22wlTwHNC8_v!ID`Y|CULN!?5xK@)Tsf}xIPBDR@Hv>8&ng_O+D7z=oaf!&1C0{vPUz@o>6xg46G^R z?+!c9CgnR!-Ai(TXGG+b3SJom9>Wy3K`S7LCkSFYOEu3{FL0D^_)7N+y_>IF?4Mp1 z*;hpKV%(;Tv?(Vp>w10qKUZ|T%~yRg$EeJ$k-N3(1&!V_X>e;zOFHAS(dIFj)?|(~ zv3=D#y=q%@J6!AHzrCt0=jgUivh5q)-jFS>z45Fs?yfm^*I#?zdVPEPwsy9*cea85 zk&sRQ{Q#f@&h9n$o&XN+0@On}tRyw)*okO+*kw*u$WaoU86J?R-GB8c)%fAuqJ@*f zf>i8#zf%$eu5Ag4`Yiu=cQPg7+?SF%Yvd7CcruvT^Im7rS>GHQ>HMG_(ihrxn4G9T z92nW0l;wrUus4W1z59G%>5+H9oPYWT&WvNy3nPHHrINTOCvR2Fy1Yr>9!UQb<{wGC z?f=mQ?RaT7xFH4$E!%>gL`#x`?_}ucXjhN;<5>Ldm9Rhwj(09kd2vAt_v0SmeVzm@ z39toU%B6=s2yh1WUx9#TIl6FM(D|g}nnn(cQTNH$J#k#_T*A8vAW#k|=G1Qyr>`6f ZIg}E8D$4It&D_CYSdHH^jGrIy)qlM|F4q76 literal 0 HcmV?d00001 diff --git a/img/t/AdminLogs.gif b/img/t/AdminLogs.gif new file mode 100755 index 0000000000000000000000000000000000000000..e5df19aaf2db300b653d232adaddcc758780a56a GIT binary patch literal 1027 zcmZ?wbhEHb6krfwXlGzx)Qe^|jAJuNWH(LXvPk8&Oyjl5{Tu*(**&k=OU6?G{T zb14vWEt2vmk@6~+^{JHetx^c6RSc|E4zAaWs8b1PQVVaIBP-$rhQ@EwX3W7R-yPo$XY%*tvYEXYFdQy48No8~vL%#I>&u z?%W>Iu`Q}|V{G^4*xs!Xy}Kg%_QXuwm(;yJzh`OMge_T9c4ST6UEIH_WWws0$p;gr z9!i*gG-<}MF{VmoHzra^>pPtJkkzzi{K)#hceJ+`M_=*3FBzZe6-@_r{GIckbM| zckkYPAb9%v&8vHlA3uKn{Q1k5FJHZS_4@VeH*em&ef##^yLa#3zyJ90bZt;<~DY+w7@PX;* zY5S^2AAT~wI6udpSz?2RBa=%zk66WUSu@dqsemBSV>Nkhb4}ekAst$vC6)liHVDgO^G)qMxcvBKz{=B yM3eS*CPuCqycNtWEHQnvganj1*w}c4+c)qr@Ea)!H}EOdXen{C1npO3um%7GB3L{C literal 0 HcmV?d00001 diff --git a/img/t/AdminMessages.gif b/img/t/AdminMessages.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e0b0e373c7d21176e9d0a72509af5711c9e5ad3 GIT binary patch literal 604 zcmZ?wbhEHb6krfwc*ejG;VAy~e$?Jd$^5Ao4&M6VRCDm+wtm~3E$42%esVHo>XyfM zZ|{Bc@q2Ff^4%BS%-MWx_rVKirbetxS8bWrf9b^fKMxKcneK7z$%*G2ZaDj~ zYsK}b)|1zFmbNEo{X9N-Z>RVFPY=HT{PXU{hCOYrf4?1kzPD^;hm&u|;U{mtE?GGH z{M_`fPdB)h9=v|#LVV4t8&f@>@9)}n{m0e_CooMnZXPc z1I3>#jO+}S3_2i_KykvrzO%uyskx=KtW>_;vIJHH8A)04ps6!A|k75 zXP05%X>?ZRg0EI08z!jY^=N3$m%%bR*UZ`z5XnWsu-o-CVlwtVin>ID~S z7hSAhdik&RqjeiMZ`--MY2lgH#b-N~oo`-owRPpSo)s7RS6}Q}ce8)f-6`uXPv3BL z`o^o%x8Iw!`P!T<*XC`zK5yHN`P*+y-Tq+Kp2rJ!++4Kt=Hgv9m+ZQ=Y!49KUcUGC z%6)fM?Z2~n|K0fqp07Q0Z{4AL>w)O-y$y%&Z#Z&)Ird=d@rT<^JluW~h#u`Y`Do{<$Gc8H-g5?sp6omKbmN6jn=gIdcIE5#tKW9t z__6Qyul;v^9X)#V#EBE9PMtb^`t-ST=Pq2haPi{BOP4NPzI^%0l`Ge-T|0Q;>7k3y z4_|tI^z!qgS6&>y`r^dZ7pJbhJazrmnH#Up-FkiS-k%G1-dw!%=F;7_SMI&Na{t|l zM}Mz9cz6BbyBm+*KX~xq`Sa%=fZ+4@KY#u(jDn#M0*XIbm>C#&8FWC71?33_jy(+0 zCJoI?yF@hnS48Z5At+%nA@lI0 zv$IUn&-4fiALAC+6%IS4sr0;kj$~2T2}MQqzKN{9*LXM&Ek4FArr}ldg2CL~I45F@-<0!RbFWVM_UCKBe6Q>+DNV<#3lF43EDLm= zWZ!YBDP?nP&FP}dJ+TElGZx>N;WO1UX-!P^q0*kSEeSh9v-Tu5U8tzsUpVc0pW{T^ zhI6GJ(_E5wMJ&5HyZUH$%&O2S=UNtApBb{)&#~VoYHL8ro*dsf?hMobia%Kx*%??F zbU=oI{KUZ4b)c!hLr2O~=J<(>CpC5)X%mGdd6r1@92S%i^iw~P`0I-h$2G?lFFITV z8e41(14JAdSseep2^ux>E5YqoIeuy*dU@oaYXZguhPaP#l>@SN!AH{C6$%O|kcE2!T)tluwW zl3(~#|B(4U;S&NPrvye$4~(528aX2{c4k=2tdN-5Au)49qL&B8EC^1VADJ{iI(J%H z-qf`G=^42*QuAh~70k>in4M8LFEe3bMADMT)P=FBi(=B3$0e>0&sY|pu{JJkTTIsC z#OxJG*=rJWRwU)ENX=WFlDjrJdrv~af{fyYStU!eOPA&rtWGanmtMFkqhe)V?&>BUDLj|rej-u)A6#F)0J&!DmxC;c5QFy+tV_8&&1jLCiEX{nQ*vu(&6@L zC%R@G@1J?HcjlSi+2{M`9hf}t;Ns>)~tL4&T^*^u~^( zH+LMnwe#flJtuDOK6!i3sT+Gw-`aQL&hC@<_ME=E@6`RhXKwF5dvE{g2m8+6IdJao z!E^Typ1*(S!h^#XA0EE==*XpqM=m`&`snG^C(o`ueSZDf^Bd2f-+cZ8h;F?AqL;TA zMjlZ7$->OQ5X+zg@;WF_FmOC$*v%p1u_0l4&{DTfF4j}Q>b_GoT$N6ooVq$pB64li zQm?BDO*11nxmZs4%iC3ddZ3ux-h04%^}7kbS~4#!cJ1I=Yxu-l?Cv6zsWMKGErD<_+fmG_m$7wv%G`+&^yl8mBs2rTnC+aA? z?9?QA3zwb^2`-I`T;gASX>d|;?-iCaYgiz_+~{E1QsN=GsoAwtK*q?VA<-d0%0M$` zfx<;c=T=TWi7g5aADXAC`%aQsXy|;5Tbzj_X@>&ip(Yj%J`o84hK7TWPfX_K;b5=^ E03CFPcK`qY literal 0 HcmV?d00001 diff --git a/img/t/AdminOrderMessage.gif b/img/t/AdminOrderMessage.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe8e87068617dbd21e81bab80b1234007cd2f2e3 GIT binary patch literal 1055 zcmd_p+fP#m00!_gaHJ;71`&-}oPh_J8=J{c6f$&z;<$9IHAbC0DBau;GKb2@<^-7{ zv<^yv0UL8zC*lPY3$;ZTSTCHGmVzKuMO$kJZE1T->AAG$9C|K0{vG@B%lH00e4iHV z&CDu|2jYQ70NDAhYDc9e`}D{sKWd6j-91{4OUC{qhz~g-r8Z+i+F8`sA-8d3B@t=SK_cLB1ILObixF zz|SS1P^=X;jR~4ef+n+|*(7W>l{A>YmQI{#)0TJ4R&{E>@6!FyJ$mM{;io^1wO7U} zJEyBJThI2)o|BvCwD}jc66q~-kIH`W_I#_t*`;!Is@=a2xjKeJSBG8KG>dYLuSXZU zruFyfeYXt$e$Y2ySWt{ZN|Rs7wZ*TrEU7Jil_j9EEIpVC{5`ciFbNM%z{Aslp{JDN zQm4D2)g$ScZ~o2Q(#;Nm?8uni;m})y;N##!8>D|uXl)c|BaAO8vjd;BBa?P?(n(DJ z%OPhL$XPf2#6?;?^pi#Ush57{f}gn~&pDpRoR^;S(KbJAgBUx+yzny)hg zK@k*%F&x2g6vIQ|D2zvuNEGGZQ8-K?ID_I0hSMm)Vnj4dQel#bkQB~Yp@u&1uJ- zVdw4{USj_oU+3H=JM!W7`u&ov^WgiLC*+6nb(wh=(?wu>v0_~McFJ*kS#^6~{`&OR z!u0}GTw(Y2KQg*<(me?hp!eoI-{?1Q^<>npyR`}%7B bg&1Jf8=3Ob*v2z(=+UK1m)^T~ucxPH+qP}*-@mV_s=9XV+RT|VfByVg zQc|*a@7{Im)}1+XrlqCj`Sa&frcC+&|9@6i76TDL@h1x-JA)8|4oEG?P6pPt1uA_h zne&_`DL9@saJ^&FB%m>2?VB2XiH;WKh6WZk_hSnhGECT&+zuRAAjLJoO)pWvaB6F+ zuwsFL$l_yH7hL61=w#-6C}F{x(jMUFrK-fj!r#oxt**w!T_eQCDA>@%&(7V}ro<;y jHA9()okv(XjhBy!eKI#^U$;^-qY4iLL;GeWMFwjCH11XL literal 0 HcmV?d00001 diff --git a/img/t/AdminPDF.gif b/img/t/AdminPDF.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5d9488f3a535ca01398e602f01db56b75abddee GIT binary patch literal 616 zcmZ?wbhEHb6krfwc*el+|Ns9F|Nnpg{{7v%cTe7ac=qhs`$tb7KYINB)}4Fz?!CBu z`}O5(SFc_@bLPyeJ^PLxJ$m@?>3#c-?cKZg#;nHh#4Q2fclD#F0TpaXI{C{7sIk2Wwh@rbpy zwX!#LF$oC>_KQl$af)#^Nhzpm>FVkm7?>+Ea7s**)i*Y^w6U?ZbI@d1EXJx}WMXEu z*4ExxPF-C|j>p3J*zseIti1d}XS)P>czHQ>I5~NE_<2Mx+?b}#&dkcm%Pw|-os*f% zP@L&859^C2LDo(g7D*ANC!a4cv*{E#Ha2mKYnbsYP*-qr5atu$;c!Se)KUMHXTk}F t^$a_UrYxxaVep_~R}PPgK#&R}!=6I*t!qV865A)twkUkJLV$z88USl4vTy(Z literal 0 HcmV?d00001 diff --git a/img/t/AdminPPreferences.gif b/img/t/AdminPPreferences.gif new file mode 100644 index 0000000000000000000000000000000000000000..be9175d6f9cbd54c6c7346cb43c21edbd97e6cc5 GIT binary patch literal 265 zcmZ?wbhEHb6krfwIKse?mX>z(=+UK1m)^T~ucxPH+qP}*-@mV_s=9XV+RT|VfByVg zQc|*a@7{Im)}1+XrlqCj`Sa&frcC+&|9@6i76TDL@h1x-JA)8|4oEG?P6pPt1uA_h zne&_`DL9@saJ^&FB%m>2?VB2XiH;WKh6WZk_hSnhGECT&+zuRAAjLJoO)pWvaB6F+ zuwsFL$l_yH7hL61=w#-6C}F{x(jMUFrK-fj!r#oxt**w!T_eQCDA>@%&(7V}ro<;y jHA9()okv(XjhBy!eKI#^U$;^-qY4iLL;GeWMFwjCH11XL literal 0 HcmV?d00001 diff --git a/img/t/AdminPayment.gif b/img/t/AdminPayment.gif new file mode 100644 index 0000000000000000000000000000000000000000..de6b152045d7d43764f21c99002b3508025ec8c6 GIT binary patch literal 1042 zcmeH`{V&u39LK*yoH9?-I!lEfre$qy*0g9>Ia13!Ka=ZWnAMy-$2oD_8K#&OC(lIk zoMImCWa#dDT<)18jv_JP__*(d&L7clz4rR~{ljZ}ySO^rUm+PI#z;1TJYjT2=l8_C z?29ex56R=j6|>@BvExey6PTY9%Z3u)3@2$UA10Ry(#i$Nl_TKh2JY_Q;Q^kW;N=D0 z-r(Z{zP{k+2mbyL5CDOJ5EKN#!4MJxp`j2K1|-sYeEbH5vU@>+ex&@OM=jT+0{F&F(8ctSqe<0!c^McWWt_2X>TUE zudlDazdxg5lv*XER*BMUBpG$mjCyHigDkUQlJ;(j)+En*FVAY8&Tg5Zx6aVpzP;|2 z(c5Pk9dkLIb2%RrIbCx(UGp^q^UcFQKJk8{-BeyLZES$CNuw$2>$e*kprvK2w@Hqc zC?!;we2yu~KvB7^sK*o)*g_Sy*vMkB*lhOD&=7~i;c~esit>28@$qqiKp+$f#bU8U zB9Tg^)6>&~!WDFCO|011;&MU4QHn%!8kVitICZP_4bldsoc`A^9S49RH;)cIVqB8IiWvDVxY}VG=1l zxxXhyP{R}9x@{)awN6Ze6(MD*m1K~A{IZa>j@Lu=j4bS!6&^QrbM46ZG)694i)MZ) zxRp?-B3WEBzvx{MrXU_UYQrfyXX5gLu5V(QY1Ls(G`!J~hQFVAi!USQ8tfJvUbrh> LBva)2IOOVIo7Y}zT63>` z-ObkZ_j}ge=-7CxW5fNP%@6ywJe;uY(X{Q4X6<=8XV24l`=2e?|8&Wr=PQo9SaFtReMX54USToA`2$rZ<;GsEEU KVGd>{25SHfncgq} literal 0 HcmV?d00001 diff --git a/img/t/AdminPreferences.gif b/img/t/AdminPreferences.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2e2f68e5ef240f250a9d38b20d736984b8944ec GIT binary patch literal 991 zcmd5*{ZEon6h08dC=csg%POFvW2L&WQX!$`VnP!SD6)hpAL>K!fI=lDooadhNJm+rbM)4v;!xHI0 zhnoP$xeSZ>VQbd9teU}D+d}f4jxj^r+_))L@+d~Eo*HTVsI4=q(}$G2md?S3lz`lN z^Zamvwv2G-6yIlT;);l< z^QFeibwd-amkc?a?#hTynjG7Q21!+~xiWg{UE1tK>sa68q}#8J_u^eYzZE~T*c}Vg z{Zgl0XMNw4sxa6s{k_#G=5l`FslapD6$AH0HgoD|b@Wts#&~}t{2xYAUbq|aK>HBd z&c#rYwuYqn!^U_#ii7ii;CyNEB;bP802t1flUyn@A|EHtk~EI8A4sl_yb}Vu9Uz(o=_Af!!E56V?(HO5fB>yqLm_Cs{>S<0U5C% zJPb!AAiN0TR5-6SqLOncL=vbLC%V~)lS&0x#`a_&zq3V;6KceOdPWVCR1A#)NuSE88jD&E1l@RIrt4^X0k!j!lUP{m-5Sf%wiB2~nsD0C* z!Fdt@U!cJFQz=3Kydrr~^u(}npmUGIL$d|VvTb&-<4*EioIw(6Qj23gHjb!`bv)%z z!(eB9Za~8Dyn`s4`L5`x5HlULWdOfmhg-@0Cjfg1lU{y=W^=gb_7qnAlbVrL>qF#{ z3ml&gc>!aO=<0#=YF&}Htb0RSb*(`W5L7s(5qT7s?Ku;zvdRvw@?#M#X$}%(u=g(3 z<9ph(t19Rgi$#v++-2|!{mqkGZsctXuPjj=8#yi5bfoZLzMR6xFNZ|`!I-5#$gP-# z85S6kvwZEY`ys*YOqo!zVuvP}&h++ql|5--0ZorFcG3tdP-RK$Ja!*aUid0&zYf7^ LC#~ftII!<8C@gYE literal 0 HcmV?d00001 diff --git a/img/t/AdminProfiles.gif b/img/t/AdminProfiles.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b909d4a5259478a4e25517a125d4e7d16221402 GIT binary patch literal 932 zcmZ?wbhEHb6krfwXlGzhu2oQ}Q&6c_jE#*=NlD4g%`Go4cd9$0)~KY`q@>oYtktfj z)uFE6qh-*qV>a2qY>I*HEHnE#7Oo3zJr>*ht#A!kYoM@hQrf<#lrR#32SbuZn##?Kq9{953@T&u--yS;q?&OsZ z45MH)1h9pG;!hT41_mPr9grj_PcU#aGNf|Icx+hUDCyC3q@r+xf`FQLl!*$5v*#pH zVfI}K3m-Wg>*p|EN_;cVO6Kf-%goZ=H zqmGFJOy)d-N{$bhcqLgTXgED-KEP!h(Ml0(G{g#xD*c3u`P4h9B?v)fsj HnHa1AdT^-5 literal 0 HcmV?d00001 diff --git a/img/t/AdminQuickAccesses.gif b/img/t/AdminQuickAccesses.gif new file mode 100644 index 0000000000000000000000000000000000000000..d876e5e9c066ae926e6125ffd1ca9d58de9f2c9b GIT binary patch literal 971 zcmZ?wbhEHb6krfwXlG#f#c=laa-BOXwC}CfzPm!_?rPn8tMu-#*S^0__x?KlyQ>WD zt~R^3*7W`ctA|_kUvJZYu)*-*W~0YDjUVqYeX`s5$u9G!dw~q=C%bK*?zMcj-}>&p#~7e^D{o=$pktm567 zg7+t@-d`yAaHi(txw?<%>px%3`*<_u^Y!{qw@SZ1EP8#W`OW#xkLMabU26Vxx#jcq zwlCK^zTE8mdb{iE?e4F4y1w4&`F6kW>xkS{xCTws>Y&+0y@$5+9VYc2G`qp|jA}idw<|sR-?BJN}a>%XG{8otKr^l=_ z)Fk}4-Y_or5ReF5c3}eN0k@gPPDv{`4kz>Y%jWkme4MzbyO~2kNJL-*g9D#d_N5t& zk6XLNH2h}da42kO-+Z3mlYpPjnl+PaE8CFh=;op*lL z%g-;S9GTpGq;1oUHA^nc={?@H=kE5k*OoUQsGWMczjSx;)YFqrK0e-dxar!nb4$-H zs@qq2^#0+UH+Q`L`fBO5rNw)*@4dhF|Nnmm+5p9$ER5_7N(?$6<3WC6U~6`mSTG|{ zL+S96PY(+urUW!C%Dkwv!0DXxp{X_+{A(PA7DTXdF{@ZDt#Fyw|8(t_9??c_S?x_4 zc5EWNyfQU%%)HDZnJqO=l2XDVBEkW3V(iYG5^Nk^+`J;p66`Y40s^e1yaH@uyb>#< fIU{7HdD+;6IhgvCq?wsT_c^gMFz^I8GFSru9^G*O literal 0 HcmV?d00001 diff --git a/img/t/AdminRangeWeight.gif b/img/t/AdminRangeWeight.gif new file mode 100644 index 0000000000000000000000000000000000000000..3583c03038df3fb1425cc446125327df58db9235 GIT binary patch literal 1062 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 literal 0 HcmV?d00001 diff --git a/img/t/AdminScenes.gif b/img/t/AdminScenes.gif new file mode 100644 index 0000000000000000000000000000000000000000..4221ace66c1768651ef582bbf09c47164fca26f6 GIT binary patch literal 1053 zcmZ?wbhEHb6krfwc;3v=9wFNqCD$Dz-xsGaDN$)^iptD%wb>cEbF(!T=4mZ0)LvPt zyS74qL$%?$T8k}p#@icAcGS7N&^-|eHZ%SLyX-GM$|!`-&pd+iVQ``WB{qP@@l&;;MZ6MYX)_B%4w<;WEOqtgS7 z_D(V0H}&|;;N!D`JPw4Om>YU>Zt%(Z!KW97MDAO8c1ifzrQuO$RijRM#BTo|zvKV; z6_GI~vlDjyKff|6Y1jV?tD-Nij*35>cX4%0%I^OOrwdXK+`PCpDt+(&OY34TuZz08 zE+%8&|I6#6QqGlJ*${nYV|3Pm|5rA~WFLB;eei$oq5s#m#OEFUpL^m)!IA%kNB);w z4JbPLzxdeylH>nNkN>Z};oW}pN!f}2H8*|gZu&Od@^88ou>Qo%&O2ezm2%?iKvFm+<`I znx9YGem(E`^}O%Z%Y*+%!9aw7;y*#>qSVBa)D(sC%#sWRcTe8{2F0H&j9d)=8FUzc z0F+S}IG!^6=ali-@L)d=hj7{khKG*KY}_I$4igl;MKuHF7#JEIVds-J%{XH)A@LMf z3y-YRlotzJ8+m+!N%5ZF`e*RUw#HN9Btrn(Q&bK zJj69s-TTCfo6Zg`4Lptt3YttxE|Zj<8ooR*eBjK$Z7KIh;$dn#pQO1@#RG)}%nTf6 zQX3){tMkt@$v8JdQrLmHf!#zxVqfy|zBv{J_jWKkFgi3#h^r_W1T-9AU}R*FnZeM& p$RnodHATQBy>C9Rgo?`w28Bm1mzD)GOZeSc@bU2pRyGy}YXGt`wVMC{ literal 0 HcmV?d00001 diff --git a/img/t/AdminSearch.gif b/img/t/AdminSearch.gif new file mode 100644 index 0000000000000000000000000000000000000000..6ddb543b821d150f6a9208c6d80097e648014929 GIT binary patch literal 989 zcmZ?wbhEHb6krfw_|5RtP|Z{6e0O;39^KbyGz@x%>JCU1T+W%JW1Tb@qa@@)FHXEU}vo4Mopter3B?0PYG z&x?6`UoP19YSDpLix0kDeCYMk!>^Yed42fs;iE^79zTBk#EBCpPo6w|`t+GIXU?8I zd+yx13l}b2zI^%W)vMR8UAuAP#_ij;@7}$8@7}!!4<0;v^yu;9$4{O-dHVF}vuDp< zym;~R=g(iie*OOa`_G?0fB*gkdwP@@4FOOHDE?$&WMKHupabH7@&p6NE{5qEj!8>S z2q-!>{P=NvL!yv|fU;fXrNxPdl>_Evlw4YJaw1ehkTrfDnFE5|8r{JIyYnPCc*oq?`j8|~3kP}+5<-!-2 zPC+?~9D@ZyOkBdsP9+Z(Bsw*=a7$VpI91lv!ojQ-mU1GYk%@(!OF+Rup}~EEqPtz; kp(83@Q+2Fo*;G2Kp6i^Uel37=J3GIuMb4E4f&vWI0J2~I=l}o! literal 0 HcmV?d00001 diff --git a/img/t/AdminSearchConf.gif b/img/t/AdminSearchConf.gif new file mode 100644 index 0000000000000000000000000000000000000000..63b11643cf20b43ded1dab4a9a302e73504a625a GIT binary patch literal 355 zcmZ?wbhEHb6krfwSjxaKB~E6_raOCXeW_V=<;lB0d-_7|Z0ou5=*yZ@Z_X?#*>dU4 znOk3`Ok48j*Pk_2E=Oji+*OL=l= z&Xs3hwg3f}m2A28WzM2CNA7+3^6tr;G?h8K?zAksvgX{EEtkHWx%cJIzdw80e2&b^ zx%2MNm31w9t^rMZa^}&WBhymeoLY0`*`G7ZYNo6@a^&8h|Ns9p;0B66Sr{1@%oub) zNd*lET?6D3#$I-asHb-KIp zKRhzehef()(hABZI+}XZMHy9? nRpdDhjrl|ZoOwA7r1-@*Y}8_9W7x4#Qb};%#%YHG92u+u%DkrU literal 0 HcmV?d00001 diff --git a/img/t/AdminSearchEngines.gif b/img/t/AdminSearchEngines.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5dd1e7b247369a3f7394fd079fee02bbc954fc9 GIT binary patch literal 1013 zcmZ?wbhEHb6krfw_|57n&Tt@98);%IN-2yKCVs8E7UK3@UCu+D)(es{a z95`Jue1=B!Y|Xg&Rxt}~lIQ9t&o@k+Z?t|jZ+m8<-StN8 zTN4cK&M>;a(DK}5ha)qBkIf0cFvI!k0ury(w|&3f_55}R$c}w= zB>&aXvhPn)zdfw~_N4mzle%dK8>Sy>nsKOk-qDVQ$GVoD=v{GY!m85~*PflS;oP+A z`}^)4oBsNA_qz)dKi}$pdVb;8hfUufwSIrv@cn7y_oq!io_GFu-uwG~>-T5#f4rRX z^Yy%+Zx;T1wffh)HNW0%`0;YjulKwEd|mhZW^M89dJO$Y2X$GI$ zvQs&YQ(l~_@QWvNG1n|5hgU5D6303v6@5(ter$AW;c2s+cSLd#%c)jDzNj-29m*4A zH6;x~CNLzOW@q6kJmC1~u#>o6^p+I|9wi>ImuYw+^D;4oX}XAp&jgJ`)g}hnlBN#{ zLC+ee=|rrXv*MED!B|_DNfRP3DjZ~F7Fbabp-|vHPa`LyLNOwNxw$bp>q5szSH(sK J7G@>}YXFIfOm_eP literal 0 HcmV?d00001 diff --git a/img/t/AdminShipping.gif b/img/t/AdminShipping.gif new file mode 100644 index 0000000000000000000000000000000000000000..482ceea3cddf5a48431d1f910553c60ea5683cb5 GIT binary patch literal 583 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 AhX4Qo literal 0 HcmV?d00001 diff --git a/img/t/AdminStatuses.gif b/img/t/AdminStatuses.gif new file mode 100644 index 0000000000000000000000000000000000000000..f15768f1336a06d62e156e19f94f304f34fb15a2 GIT binary patch literal 618 zcmZ?wbhEHb6krfwc*ejmz0B?2)%iL7#}BWnTC-#CnK!>SOp9E1<^ADJvu>Z?R#w;0 zzw+X~Q)iw(x^wI4^C@%Z&2LJ2@#p{f!&~;Qp0arDhWj^2={tAp#k-e}FCAX~_|vb8+Z*p*-c~j1Wc$jSJLhB{-MaSd zmaKKl1tO*Qsl+RxY}E@B8<6FCMJw_PcO!;(^;A?!EnZ zc2CWsZFk;%_;7CboKHV~Ebq=Jop|Kg_y0G}Z`-%HV8_wZk8hrszWL7Kix0b&U7S}N zK7I9}J7=anynEpNpZ`Gc?)AeLkMCW3{PEnDns;xW?3$l@<-q)DB|%GCV=C$!uAJC* z{{H(LXBM8@)6zQc#E!#Eym`_{kw_N!;@ zwU%Yq?|=P&d3O~9xj^wJ3nM#&AA=6a08pGTupe*mYie$3Z8Z&5Q3(pNHEr|b%yA8{ zvC&luiEQQc_Lr10GO|_>)tKF+sAZ}zl`1YCXf5RwuGnPDxxmkcPiMcIyR&c;v#xcZ zjv;@%9gBsBl6{kNut!FMPJ{@TOR__nXOo7hm~w`t9#@JWE0fP7KUr073rA%GOTlb* zHFJR`0UnDYC8x>F?CAoA9~7@n)s^te`1sJdTS_%%jf130<6$s eJP=ar;gi<(lWO|Jc&JNMz|N%M$mReA25SI>dNZp4 literal 0 HcmV?d00001 diff --git a/img/t/AdminStockMvt.gif b/img/t/AdminStockMvt.gif new file mode 100755 index 0000000000000000000000000000000000000000..2a85c456cf8fff5023155d8bd8aed23ed6ab7e1c GIT binary patch literal 1709 zcmZ?wbhEHb6k!lyc;?UGk-{F3%Wf0GBCo>~RLJR-#vYYx;GW1Dl&RpK!yZ?z;S$HD zY{cl1%7m(3BGW8j&}?w-Kv8L4UM&uSgW>Kf1H6wMlxuAykaSk&eon9rWy z;^Z8|mfz|msm5sJ%IuTDrl89dmZ|TP#ZlbhDXYaOtIcQ~#9|-8Y8%3$W5*Pbs%+rG zZ0yS6n<^2QA*b)a**qyJxz-@4fHS^KKRnwYvP@Fj7N|@$BugbQTT;P*F}_kgC{@QP zRKh<^);5$Sq)5myk~O|cJ-$@mF-$17RKp{gHLgMHY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C z$yM3OmMKd1b_zBXRu#Dgxv3?I3Kh9IdBs*0wn~X9`AMl(KsHENUr7P1q$Jx`$q^)> z0J76LzbI9~RL?*+*}%*|!OT$4(AdP>++0V&$iUD*-@r)U&`8(N+{)O<%D_MY3Y37h z6{VzE1-ZCE?E>;_l`=|73as??%gf94%8m8%i_-NCEiElUW*8ai0#)c1SLT%@R_Nvx zE5l51Ni9w;$}A|!%+FH*nV6WAUs__T1av9H3%LcpzHo!{iuJ%A(o4?I)vrh_&^OdG z(9g{U`3tPNxFjeQ;S8**i$f|4QuTvUi}Op1l2d`om0_BJVTa!$kV2qqto(~IfsvA! zP;G0~2ExV$P$&N=+=uFAB-e&w-_YfQ9{rvI$+t)9jKYjf0{@vR*uV1}<@%-7-CyyUJd~pBX-8;8$-Mn%A+SMzU zFI~KF{@mF!r%#aDv3%Lm zC5sm=Trhv$+&Qyn&73iP+SDnNCrzBt-`CsI-PPIA-qzaE+|<}mUsqdGT~%38URGLC zTvS+)pO>4Hot2r9o|c-DoRpXl9~T=F9Tgc79u^uB926Mf@8|2|?d9p=?&j*^?BwWR zZ)a;`ZDna;Zf0s?Yy`}fdb&E=TACW_YN{&AN{R~daM-~o)MomJ27c}WbT%v!nIiiThfYlX4dX6 zs@qf6=&d_3)?z}u)$|mLDJeFK3+$Ga*={d4*;#G2v)XERolS3|@ARzD`2{YEO5JzW zIc;vR+tqBnyTN8xi`C9no4t*8dt2=rc2qX)tX|jPyP?5pOS9vycBftK&bvEZ_H;V# z?{wPK60or+W_NGso{6D*XJt1WEIHWjcBtFqaIg1~3BHG>h8>y~er#gEvB`nQCI=mx z5_D{8@Uf{ON2Z4!nI3jzdibF^X(wkV9ba00eogI#Wmy+j=3QDmENjg5^>O--$>t?ljYot>RsU0vPX-M!siJv}`W`+Fx$m@sqZ%sF%B%$qlF z;lhPWmMmGeY}v|{E7z=9(|@XE@$vaf4lY`8ZQ+^Ir!Jg7d-ckt+qZ7sxqb7&y*rN| z-hcGy(bK0--@bkO?%lih@85s;@Zsafk6*rg`S$G_IC4e_+J=DQPZmZ7hW`vYAZtK* zf`Q{S!+%a0j|~eB*6aDqF({g#(4`!?#pLJ35Aj?o(K{+Qjh7xjDB-!wrqR%ubDE+h z*QJC{s$KoI)g>G|nOcqeMRMb# z`8}%oe}0s_`f|QqfSD~UvbiIGiIrPIz-o${tD{*Phi=B>V+W&H+0Kh7U3tJOW0)-{ zvPbZt-$M4nClfSV*qhm`|6Am|n6S`kfno8B8H`UB`U!F|=J@PzSkTaHly+f-WdcJJ NE2EH>91jPBH30b-JO}^) literal 0 HcmV?d00001 diff --git a/img/t/AdminSubDomains.gif b/img/t/AdminSubDomains.gif new file mode 100644 index 0000000000000000000000000000000000000000..8554b38b5d8ef0443b0620522c94c726f7eba902 GIT binary patch literal 1071 zcmd7R?NibR00;12C)ZhelWs20Yipagb=T@e+j-@xyHc3CfrdTU!FTSt8FTUTr&vUar z#lrzO@F%b%2a%J5Kq5ZN$wubBhC-uI=mJ#n7loG!i;9ZSw@^i;n9I~+EUES?sUFX{ zh{NGZ38e%Ap`xOqvbwUWs)|IZCR4~13WdbMGdN@_l}e-0=uA4Zo>^aC&tkDCw}q#8 zC(hhGea6c~^0Lo$=3`pXn9-|P!==mGFLB_NG9muvJw|nV1@Y0f>TzsMe;G+fWc8FY zbhT`#mNP=n^;8vv2nBQHH+(h32!j-1Qf)VBHUiyFtg{nYHVWHG=1kSn7T675I=1;6 zG*_3$GhnrP2A9v^3fO!hadh-TyS+r?xY0XRV(?Y=n9GM|%8f4469>uUs(~!zQ9Jqj zS;{1@#w(#md9+{$$!f%f)wgXB+pE9joaRFf-08ZO2?pq3^Y}b|Q=>p2;5CcHpcn)} zsZ=VH$>ef*cXzj3-K-tx*XeYFgM$zR2`&7_@SO)<0qAT3UH4>ek;LEF9*}efTf0LK zJC|o`2Hggs0_C$=i2olsVUkv5K`*{kTI$- zgdo+**P6|tffuHcAA5|OCb8KmdKzk(4Tz@aB(BIq-+X6yPU&%LmS*}qR{hef%I{Z4 z0{zhiTT4hkgzCG}uvKRhD$eQ)U;X{EqPXXx z`8cg_#fp+=h~Ru!yE7p*+%Sns>)Msc(C*7hun0=tfTdy-inGA(k*wse?r>e5 gC#fg7+zT4_fxXFZ<|p^!@YzYp=|_?AG&peTUjpaoQ~&?~ literal 0 HcmV?d00001 diff --git a/img/t/AdminSuppliers.gif b/img/t/AdminSuppliers.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5cb1f263cafa5c94545520fd8d7dc129be0eef3 GIT binary patch literal 266 zcmZ?wbhEHb6krfwIKsg29|+Ez`G02S|CvCPb_U1;@_A!vh=Dc=Ffg#T zD=74(WX@Ar$m6wI$7{(HuZ9~;N-7>9Lc10?Oq`t3BXodgsild8)KZrw$Fx>_xpP{!W;##QSh{rS*|W!O zx&`08dy%owq<&Mv)C2Wv&Q5;z?C#pNYrUr$8@7oYJ$f{HzIEav*TCsYOHTAS_ls4p z3%Pvxtmj0T{@ul!Hf?(P^l8#u!-h?f*-M=sK73fb%FnEw>&%%m*^6wZ9c*mbni{vj zX~EIX-ko{NPxq_Wvsm|trY><0o38HOFZuufe+EK8@h1x-JA(;>4oD%$PYi4o4zmh8 zbfo%EED7TLB{A>9iWZeA8cH|TOq(pA#xZq6L`|2(9+sm!ilkaB78t*+=9>RbeTv7i z3F=A}8XCNc(t4`K>1>QVy*#`E6ZPbD4AlYy6a{p3wfOin#q`}+^(1w4*fk9~+$ChC WxW)Lzg}qG-w6|>+VQ_I|um%8vSAN+5 literal 0 HcmV?d00001 diff --git a/img/t/AdminTags.gif b/img/t/AdminTags.gif new file mode 100644 index 0000000000000000000000000000000000000000..a01d9ea439b1a44e5e42da66e419728130365bc6 GIT binary patch literal 981 zcmZ?wbhEHb6krfwXlGzZOG_&)E&V6+arW%lbLPyMH*em81q+reS+acj@>Q!=tzNx) z&6+i9*RI{LVZ+9a8#is*w0ZO9ty{Nl+qP}{_U$`%?AW<;=dNA5cJJQ3XV0E}`}XbM zzyH921BVU)(V@eK4<9*l_~;QJdF1HPqsNXNJAVB5$rHygPo6q;>dcul zXV0EJckbNz^XD&LzI^2h5M8-?_3E{2*REf`e&fcCn>TOXx^?T$ojdpL-Mx43-u?Uc zA3S*Q@ZrNpj~+dK{P@X}Cr_U~efI3x^XJcBym;~Q<;z#EUNMY<(GVay1QdU=Ff%YP zG3bDFfbs+b$0i0=4jGRP3l27Our7;eaBw~(ZlShf0b_D=W3#E6N`#>DQ4V1t1(7L* zO>R75ibeq)3ltA9HVG!J@$h7H;^YyHkWnz$;Mgr-p;+)Cu*HLqn}KcB41q;#9sCYW zUtTCaY2#>84!9#>q|(tZYgH!T+0giaRmryO2g4=j_C7i13=fHnrVf5N+qx~Rvz#}&7XgMT7P%dxkqQ0-C7VaH#Bp3+U#@FrX8G8xwWKiU(=TR>lWRZbL#2w zIajCN{d_ZTZPxqm?>1gt*Sx>BX?uOpOuw|XNk9I4?>^Kv@o4wTJBwx>nzrlSwzADd z(euOazq@3XD36`9iv4j4Iu|ISLB- z%DT*&N__GPA`&dplKf&~x<)KQ?3{c|Ox*md#gye)c{JFZ<@H$9)>w)Oo9Vc-F=-l# ZF<7vNs+bzfDsdjXro$s}&B>9$8UUw#}&7XgMT7P%dxkqQ0-C7VaH#Bp3+U#@FrX8G8xwWKiU(=TR>lWRZbL#2w zIajCN{d_ZTZPxqm?>1gt*Sx>BX?uOpOuw|XNk9I4?>^Kv@o4wTJBwx>nzrlSwzADd z(euOazq@3XD36`9iv4j4Iu|ISLB- z%DT*&N__GPA`&dplKf&~x<)KQ?3{c|Ox*md#gye)c{JFZ<@H$9)>w)Oo9Vc-F=-l# ZF<7vNs+bzfDsdjXro$s}&B>9$8UUwot-4PAXRor zj>hs_jb*u7Yl;ommYS}qve{H-vboH3OS#$hDyy9}cDrirKR7ymi;jAm9r>*^|DV{0 zNmFYZw>$K0aht%^UowCeb>nzM^auP-gXwyfgLlJXl%DsC>Rys@n6=E|Bo zE9<|s2fggielRuR(VX;0bF+T0a{RO=_T&EOpPQo}FD!bpsPM^>(r2qHpRK5QzP9f9 zx|-+fYM-yKf4-sq!~XQ&=dAx<)&74~=ig<+-xr;JUyb{JAou^H+;b}%&TpP@ZTFm; zJEq^?HS6x)xnEnG9ZTWnC*Z=?j8Abs(1QdU=Ff%Yn zGw6VLpgh6AagV{ALuLnKkdR6}ht{19&pqb*PJQ)d!^Q$;e(PmtIy8g3MCME9u(5Ro zyS9oLWgNTn^3q8m*2WpnW<(XbvCc3E@niUL;H1YaUOlnIj6+GM#PuSrmT+uvJE!f``Zo|B9vxhr*{9m=$I{NhuI|)y^tAosY+Wfi}Jkr$;Lft>m1{p&+23 zJh92la@vK3Q#jjMq$c`^Jec6l$pckkY9JM*?12v*!! zzI=Jtn#Tc6R~wh!ub6jl_O@qh4!_!T;%)JidlNT2`Tzev166_IPZmaY22}EBI#)}W~M>>Qw?N|gZCb;)9>3co-QMlm5Lx2^&UO87Vp52@_$+7%3$GOq2ZJ>Ldmb%# literal 0 HcmV?d00001 diff --git a/img/t/AdminTranslations.gif b/img/t/AdminTranslations.gif new file mode 100644 index 0000000000000000000000000000000000000000..af91f09a4c9b8f1d5a19ddfef5604e2a3a557cf7 GIT binary patch literal 919 zcmZ?wbhEHb6krfwXlGzxW@ct*XXobT=HcPt=jRs`6ciB=5fc-WkdTm+l$4g1mX(#2 zlao_WP*7G@R#8z=RaI3}Q`6AU(A3n_*4Eb1(b3b>)7RHGG&D3aGBP$cHZd_VH8nLi zH@C2`u(Y(ava+(Vv9YzawX?Icx3_n2aBy;Ra&d8Sb#--fbMx@<@bdEV_V)Ji@$vKX z3knJf4i1iph=`1g3~$?>JMCcQyrV74PR-hOW#jR?d(J;Pe*O8S`)^*p|N8&`e}+*o z8UhrDfZ|UUpc(%ebU-G7@&p4%2}3o9jK_ur2b(#H-#BCxwDmR`CF}@DT$Io!Z7gOa z@?*lW!*V(S6MigcT+kHLziHC~LtsJ}}G8zU9nui2r^n5A~C^RxMF)=Z0@cNeEz+epkgkWV= literal 0 HcmV?d00001 diff --git a/img/t/AdminWebservice.gif b/img/t/AdminWebservice.gif new file mode 100644 index 0000000000000000000000000000000000000000..a37e6ddce98b981a1b72fb78548d2266ae7e82e5 GIT binary patch literal 613 zcmZ?wbhEHb6krfwIL5$W;x(mZ*_kufp14$PS+eg*O z6VtS3$)+ndK`kw-u7m*HaOg=%-6g$t<8Vp2W26S+eVnNzj~- zx;;w{y?OKL&yjOL8~^weZAs}nQnTpF|Ns9PXaE#{vM@3*Bs1uM%m&2?1N)(d8KlZ7J!G$SOrOM2WUS?^6h}r q@v-AFr9>BpO2@;^V$ve)KM!nb<=~c)4_G4O(%9HOb3GFygEat-F$%^2 literal 0 HcmV?d00001 diff --git a/img/t/AdminZones.gif b/img/t/AdminZones.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d5dcd2fd93629e435424559e2179e0af340159d GIT binary patch literal 1065 zcmZ?wbhEHb6krfw_|Cv!Tx~FOf2~vVwy+gdGoS8Dot>1kb?=;mn_BkPUVgR3?qZqi zh0M4W>pZ*Mnon<8cYWg7=j&EpIGla4|LXgzWowH9mfk8nnzG{E$*vRE{bsvouS&{X zakT$p>zpIAYAzPdzqCJX_wLQNj-+lV51hH9VbhVc+of+lzbQF+I{wDe)z_C^es$sa zi?vNR8qyX;Mz6b-HZ?MJ!rwZn-x-b@SP-Tid5xzP0TBnXG;B85^!o zI9@sBTzAgl&H0OSijQWuZp%-Z*HCb6X6?b^%qP9NO#OGUeG6~Q%-wx7 zV6xBB+gBaCZTk0BTz-3Q%Fz~vkpvWfvM{nU%xBO6c^Z@_7&!hj*mM5*qSndIEheWr z(_llQ7I#Nc30I-ItC$|IeWAjWltbE5O&>%$8M;p%Ftb|rWoAN4sHCL?!`+)r4GUUb zf_P?T1wHOk_U5Z_IKiOKIn~u(@5Bs~m0TQ#?q|+KIv;dya&quGS-|qxrPHEtnt|h% zQ-?&v=5Zu+x*X@?V&$&MXqa$(4Lj!?rJWBJuW}b>V~%pz@R7qwBgDU8M}gqdNezO{ zNj!>&pB~gy37GQ0BDhgxwqRmRpw +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/tmp/index.php b/img/tmp/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/img/tmp/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/tmp/order_state_mini_11.gif b/img/tmp/order_state_mini_11.gif new file mode 100644 index 0000000000000000000000000000000000000000..57abc204b26d3135ce3d3d1371b3536abc095ff4 GIT binary patch literal 608 zcmZ?wbhEHb6krfwc*el+|Ns9V|Nnpc@$22szaPJTfAQ`6qxat)zyJE|^@j(q-`{!h z=Kix+7hin5^7QS^Coj(5e|F{0v!f55oxA<;^opTwHVb!urEkHXOLHZ1=^byH3pCd}7w7a|<^fp0WN|@6v63OLle6-`+cK zee1jpRa4g0O<7*nvox=7Np|PFvi6y|jnmRiSHr7B(=%Jnqg2{CUCA*~-9A#$E<(vRM%+4;&oV*WEJW7C zN75*m&n!aRAd=rOoYOE$Kre`2CsIHom{m29K`okD-HTntn?>25LD7>z%8NnLg+a_3 z7%U8Q0g69a7}*(O8FWClf#QULeQ!f-6RV&|TRU4*SChPttBZ^KBu7K;?pWPm1vzOM z8AUxWZ{cnmJBAf28F<|+S(@1V^;XE3XtJ)*ik9q&kzQdI6{WU9HB_oeJDiV!*(1tR zVugNyK$C?7BO`}_j_?Ye0Q07E#;aBeJB5ff2}h`|5S5ixH;oLs)}#`BpTR0Ja$C;J zgMJfv)OYYXylhNzX=UhU`Lm&MRkN7jbdlH!CYQDzg|JVlB8Dj*BI>?nA}2I78e7;6 NR5cn-7zr>~0{~mk+2;TN literal 0 HcmV?d00001 diff --git a/img/tmp/store_1.jpg b/img/tmp/store_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8ecc881103a94eeb2b8b5a912736016c9f2b948 GIT binary patch literal 8711 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 literal 0 HcmV?d00001 diff --git a/img/tmp/store_2.jpg b/img/tmp/store_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8ecc881103a94eeb2b8b5a912736016c9f2b948 GIT binary patch literal 8711 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 literal 0 HcmV?d00001 diff --git a/img/tmp/store_3.jpg b/img/tmp/store_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8ecc881103a94eeb2b8b5a912736016c9f2b948 GIT binary patch literal 8711 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 literal 0 HcmV?d00001 diff --git a/img/tmp/store_4.jpg b/img/tmp/store_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8ecc881103a94eeb2b8b5a912736016c9f2b948 GIT binary patch literal 8711 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 literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 000000000..47cef0884 --- /dev/null +++ b/index.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +require(dirname(__FILE__).'/config/config.inc.php'); +ControllerFactory::getController('IndexController')->run(); diff --git a/init.php b/init.php new file mode 100644 index 000000000..ff61af756 --- /dev/null +++ b/init.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$controller = new FrontController(); +$controller->init(); \ No newline at end of file diff --git a/install-dev/classes/AddConfToFile.php b/install-dev/classes/AddConfToFile.php new file mode 100644 index 000000000..00aeb72ed --- /dev/null +++ b/install-dev/classes/AddConfToFile.php @@ -0,0 +1,91 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class AddConfToFile +{ + public $fd; + public $file; + public $mode; + public $error = false; + + public function __construct($file, $mode = 'r+') + { + $this->file = $file; + $this->mode = $mode; + $this->checkFile($file); + if ($mode == 'w' AND !$this->error) + if (!$res = @fwrite($this->fd, 'error = 6; + } + + public function __destruct() + { + if (!$this->error) + @fclose($this->fd); + } + + private function checkFile($file) + { + if (!$fd = @fopen($this->file, $this->mode)) + $this->error = 5; + elseif (!is_writable($this->file)) + $this->error = 6; + $this->fd = $fd; + } + + public function writeInFile($name, $data) + { + if (!$res = @fwrite($this->fd, + 'define(\''.$name.'\', \''.$this->checkString($data).'\');'."\n")) + { + $this->error = 6; + return false; + } + return true; + } + + public function writeEndTagPhp() + { + if (!$res = @fwrite($this->fd, '?>'."\n")) { + $this->error = 6; + return false; + } + return true; + } + + public function checkString($string) + { + if (get_magic_quotes_gpc()) + $string = stripslashes($string); + if (!is_numeric($string)) + { + $string = addslashes($string); + $string = strip_tags(nl2br($string)); + } + return $string; + } +} diff --git a/install-dev/classes/ConfigurationTest.php b/install-dev/classes/ConfigurationTest.php new file mode 100644 index 000000000..c150a67f4 --- /dev/null +++ b/install-dev/classes/ConfigurationTest.php @@ -0,0 +1,215 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +class ConfigurationTest +{ + static function check($tests) + { + $res = array(); + foreach ($tests AS $key => $test) + $res[$key] = self::run($key, $test); + return $res; + } + + static function run($ptr, $arg = 0) + { + if (call_user_func(array('ConfigurationTest', 'test_'.$ptr), $arg)) + return ('ok'); + return ('fail'); + } + + // Misc functions + static function test_phpversion() + { + return version_compare(substr(phpversion(), 0, 3), '5.0', '>='); + } + + static function test_mysql_support() + { + return function_exists('mysql_connect'); + } + + static function test_upload() + { + return ini_get('file_uploads'); + } + + static function test_fopen() + { + return ini_get('allow_url_fopen'); + } + + static function test_system($funcs) + { + foreach ($funcs AS $func) + if (!function_exists($func)) + return false; + return true; + } + + static function test_gd() + { + return function_exists('imagecreatetruecolor'); + } + + static function test_register_globals() + { + return !ini_get('register_globals'); + } + + static function test_gz() + { + if (function_exists('gzencode')) + return !(@gzencode('dd') === false); + return false; + } + + // is_writable dirs + static function test_dir($dir, $recursive = false) + { + if (!file_exists($dir) OR !$dh = opendir($dir)) + return false; + $dummy = rtrim($dir, '/').'/'.uniqid(); + if (@file_put_contents($dummy, 'test')) + { + @unlink($dummy); + if (!$recursive) + return true; + } + elseif (!is_writable($dir)) + return false; + if ($recursive) + { + while (($file = readdir($dh)) !== false) + if (@filetype($dir.$file) == 'dir' AND $file != '.' AND $file != '..') + if (!self::test_dir($dir.$file, true)) + return false; + } + closedir($dh); + return true; + } + + // is_writable files + static function test_file($file) + { + return (file_exists($file) AND is_writable($file)); + } + + static function test_config_dir($dir) + { + return self::test_dir($dir); + } + + static function test_sitemap($dir) + { + return self::test_file($dir); + } + + static function test_root_dir($dir) + { + return self::test_dir($dir); + } + + static function test_admin_dir($dir) + { + return self::test_dir($dir); + } + + static function test_img_dir($dir) + { + return self::test_dir($dir, true); + } + + static function test_module_dir($dir) + { + return self::test_dir($dir, true); + } + + static function test_tools_dir($dir) + { + return self::test_dir($dir); + } + + static function test_cache_dir($dir) + { + return self::test_dir($dir); + } + + static function test_tools_v2_dir($dir) + { + return self::test_dir($dir); + } + + static function test_cache_v2_dir($dir) + { + return self::test_dir($dir); + } + + static function test_download_dir($dir) + { + return self::test_dir($dir); + } + + static function test_mails_dir($dir) + { + return self::test_dir($dir, true); + } + + static function test_translations_dir($dir) + { + return self::test_dir($dir, true); + } + + static function test_theme_lang_dir($dir) + { + if (!file_exists($dir)) + return true; + return self::test_dir($dir, true); + } + + static function test_theme_cache_dir($dir) + { + if (!file_exists($dir)) + return true; + return self::test_dir($dir, true); + } + + static function test_customizable_products_dir($dir) + { + return self::test_dir($dir); + } + + static function test_virtual_products_dir($dir) + { + return self::test_dir($dir); + } + + static function test_mcrypt() + { + return function_exists('mcrypt_encrypt'); + } +} diff --git a/install-dev/classes/LanguagesManager.php b/install-dev/classes/LanguagesManager.php new file mode 100644 index 000000000..e381968f0 --- /dev/null +++ b/install-dev/classes/LanguagesManager.php @@ -0,0 +1,105 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once("../classes/Validate.php"); + +class LanguageManager +{ + private $url_xml; + private $lang; + private $xml_file; + + function __construct ($url_xml) + { + $this->loadXML($url_xml); + $this->setLanguage(); + $this->getIncludeTradFilename(); + } + + private function loadXML($url_xml) + { + global $errors; + if (!$this->xml_file = simplexml_load_file($url_xml)) + $errors = 'Error when loading XML language file : '.$url_xml; + } + + public function getIdSelectedLang() + { + return $this->lang['id']; + } + + public function getIsoCodeSelectedLang() + { + return $this->lang->idLangPS; + } + + public function countLangs() + { + return sizeof($this->xml_file); + } + + public function getAvailableLangs() + { + return $this->xml_file; + } + + public function getSelectedLang() + { + return $this->lang; + } + + private function getIdByHAL(){ + + if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) + { + $FirstHAL = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); + $iso = $FirstHAL[0]; + if ($iso != "en-us") + foreach ($this->xml_file as $lang) + foreach ($lang->isos->iso as $anIso) + if ($anIso == $iso) + return $lang['id']; + } + else + return 0; + + } + + private function setLanguage() + { + if( isset($_GET['language']) AND Validate::isInt($_GET['language'])) + $id_lang = (int)($_GET['language']); + if (!isset($id_lang)) + $id_lang = ($this->getIdByHAL()); + $this->lang = $this->xml_file->lang[(int)($id_lang)]; + } + + public function getIncludeTradFilename() + { + return ($this->lang == NULL) ? false : dirname(__FILE__).$this->lang['trad_file']; + } +} \ No newline at end of file diff --git a/install-dev/classes/ToolsInstall.php b/install-dev/classes/ToolsInstall.php new file mode 100644 index 000000000..4561dd953 --- /dev/null +++ b/install-dev/classes/ToolsInstall.php @@ -0,0 +1,189 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +class ToolsInstall +{ + public static function checkDB ($srv, $login, $password, $name, $posted = true, $engine = false) + { + include_once(INSTALL_PATH.'/../classes/Validate.php'); + include_once(INSTALL_PATH.'/../classes/Db.php'); + include_once(INSTALL_PATH.'/../classes/MySQL.php'); + + if($posted) + { + // Check POST data... + $data_check = array( + !isset($_GET['server']) OR empty($_GET['server']), + !Validate::isMailName($_GET['server']), + !isset($_GET['type']) OR empty($_GET['type']), + !Validate::isMailName($_GET['type']), + !isset($_GET['name']) OR empty($_GET['name']), + !Validate::isMailName($_GET['name']), + !isset($_GET['login']) OR empty($_GET['login']), + !Validate::isMailName($_GET['login']), + !isset($_GET['password']) + ); + foreach ($data_check AS $data) + if ($data) + return 8; + } + + switch(MySQL::tryToConnect(trim($srv), trim($login), trim($password), trim($name), trim($engine))) + { + case 0: + if (MySQL::tryUTF8(trim($srv), trim($login), trim($password))) + return true; + return 49; + break; + case 1: + return 25; + break; + case 2: + return 24; + break; + case 3: + return 50; + break; + } + } + + public static function getHttpHost($http = false, $entities = false) + { + $host = (isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : $_SERVER['HTTP_HOST']); + if ($entities) + $host = htmlspecialchars($host, ENT_COMPAT, 'UTF-8'); + if ($http) + $host = 'http://'.$host; + return $host; + } + + public static function sendMail($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption) + { + include(INSTALL_PATH.'/../tools/swift/Swift.php'); + include(INSTALL_PATH.'/../tools/swift/Swift/Connection/SMTP.php'); + include(INSTALL_PATH.'/../tools/swift/Swift/Connection/NativeMail.php'); + + $swift = NULL; + $result = NULL; + try + { + + if($smtpChecked) + { + + $smtp = new Swift_Connection_SMTP($smtpServer, $smtpPort, ($smtpEncryption == "off") ? Swift_Connection_SMTP::ENC_OFF : (($smtpEncryption == "tls") ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_SSL)); + $smtp->setUsername($smtpLogin); + $smtp->setpassword($smtpPassword); + $smtp->setTimeout(5); + $swift = new Swift($smtp); + } + else + { + $swift = new Swift(new Swift_Connection_NativeMail()); + } + + $message = new Swift_Message($subject, $content, $type); + + if ($swift->send($message, $to, $from)) + { + $result = true; + } + else + { + $result = 999; + } + $swift->disconnect(); + } + catch (Swift_Connection_Exception $e) + { + $result = $e->getCode(); + } + catch (Swift_Message_MimeException $e) + { + $result = $e->getCode(); + } + return $result; + } + + public static function getNotificationMail($shopName, $shopUrl, $shopLogo, $firstname, $lastname, $password, $email) + { + $iso_code = $_GET['isoCodeLocalLanguage']; + $pathTpl = INSTALL_PATH.'/../mails/en/employee_password.html'; + $pathTplLocal = INSTALL_PATH.'/../mails/'.$iso_code.'/employee_password.html'; + + $content = (file_exists($pathTplLocal)) ? file_get_contents($pathTplLocal) : file_get_contents($pathTpl); + $content = str_replace('{shop_name}', $shopName, $content); + $content = str_replace('{shop_url}', $shopUrl, $content); + $content = str_replace('{shop_logo}', $shopLogo, $content); + $content = str_replace('{firstname}', $firstname, $content); + $content = str_replace('{lastname}', $lastname, $content); + $content = str_replace('{passwd}', $password, $content); + $content = str_replace('{email}', $email, $content); + return $content; + } + + public static function getLangString($idLang) + { + switch ($idLang) + { + case 'en' : return 'English (English)'; + case 'fr' : return 'Français (French)'; + } + } + + static function strtolower($str) + { + if (function_exists('mb_strtolower')) + return mb_strtolower($str, 'utf-8'); + return strtolower($str); + } + + static function strtoupper($str) + { + if (function_exists('mb_strtoupper')) + return mb_strtoupper($str, 'utf-8'); + return strtoupper($str); + } + + static function ucfirst($str) + { + return self::strtoupper(self::substr($str, 0, 1)).self::substr($str, 1); + } + + static function substr($str, $start, $length = false, $encoding = 'utf-8') + { + if (function_exists('mb_substr')) + return mb_substr($str, $start, ($length === false ? self::strlen($str) : $length), $encoding); + return substr($str, $start, $length); + } + + static function strlen($str) + { + if (function_exists('mb_strlen')) + return mb_strlen($str, 'utf-8'); + return strlen($str); + } +} diff --git a/install-dev/controller.js b/install-dev/controller.js new file mode 100644 index 000000000..84694d42b --- /dev/null +++ b/install-dev/controller.js @@ -0,0 +1,1032 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +//constant +verifMailREGEX = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/; +verifNameREGEX = /^[^0-9!<>,;?=+()@#"°{}_$%:]*$/; + +//params +configIsOk = false; +createdBase = false; +mailIsOk = false; +smtpChecked = false; +validShopInfos = false; +upgradeCertify = false; +dropdb=false; +application="install"; + +function nextTab() +{ + if(verifyThisStep()) + { + showStep(step+1, 'next'); + } +} +function backTab() +{ + if (step != 6) { + showStep(step - 1, 'back'); + } + else { + constructInstallerTabs(); + showStep(1, 'back'); + } +} + +function showStep(aStep, way) +{ + step = aStep; + + //show the sheet + $('div.sheet.shown').fadeOut('fast', function() { + $($('div.sheet')[(step-1)]).fadeIn('slow').addClass('shown'); + }).removeClass('shown'); + + //upgrade the tab + $('#tabs li') + .removeClass("selected") + .removeClass("finished"); + if (step < 6) { + $('#tabs li:nth-child(' + step + ')').addClass("selected"); + $('#tabs li:lt(' + (step - 1) + ')').addClass("finished"); + } + else + { + switch (step) + { + + case 6 : + $('#tabs li:nth-child(1)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(2)').addClass("selected").removeClass("finished"); + $('#tabs li:nth-child(3)').removeClass("selected").removeClass("finished"); + $('#tabs li:nth-child(4)').removeClass("selected").removeClass("finished"); + break; + + case 7 : + $('#tabs li:nth-child(1)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(2)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(3)').addClass("selected").removeClass("finished"); + $('#tabs li:nth-child(4)').removeClass("selected").removeClass("finished"); + break; + + case 8 : + $('#tabs li:nth-child(1)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(2)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(3)').addClass("selected").removeClass("finished"); + $('#tabs li:nth-child(4)').removeClass("selected").removeClass("finished"); + break; + + case 9 : + $('#tabs li:nth-child(1)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(2)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(3)').removeClass("selected").addClass("finished"); + $('#tabs li:nth-child(4)').addClass("selected").removeClass("finished"); + break; + + } + } + + //title of the window and buttons + switch(step) + { + case 1 : + document.title = Step1Title; + $("#btBack") + .attr("disabled", "disabled") + .addClass("disabled") + .show('slow'); + $("#btNext") + .removeAttr("disabled") + .removeClass("disabled") + .show('slow'); + break; + + case 2: + document.title = step2title; + application = "install"; + if (way == 'next') + verifyAndSetRequire(1); + else + verifyAndSetRequire(0); + $("#btBack") + .removeAttr("disabled") + .removeClass("disabled") + .show('slow'); + break; + + case 3: + document.title = step3title; + $("#btBack") + .removeAttr("disabled") + .removeClass("disabled") + .show('slow'); + break; + + case 4: + document.title = step4title; + $("#btBack") + .attr("disabled", "disabled") + .addClass("disabled") + .hide('slow'); + break; + + case 5 : + document.title = step5title; + $("#btBack") + .attr("disabled", "disabled") + .addClass("disabled") + .hide('slow'); + $("#btNext").hide('slow'); + break; + + case 6 : + document.title = step6title; + application = "update"; + if (!upgradeCertify) { + $("#btNext") + .attr("disabled", "disabled") + .addClass("disabled"); + } else { + $("#btNext") + .removeAttr("disabled") + .removeClass("disabled"); + } + $("#btBack") + .removeAttr("disabled") + .removeClass("disabled") + .show('slow'); + break; + + case 7: + document.title = step7title; + verifyAndSetRequire(0); + $("#btBack") + .removeAttr("disabled") + .removeClass("disabled") + .show('slow'); + break; + + case 8 : + document.title = step8title; + $("#btNext") + .attr("disabled", "disabled") + .addClass("disabled"); + $("#btBack") + .removeAttr("disabled") + .removeClass("disabled") + .show('slow'); + break; + + case 9 : + document.title = step9title; + $("#btBack").hide(); + $("#btNext").hide(); + break; + } +} + +function verifyThisStep() +{ + switch (step) + { + case 1 : + if($("#formSetMethod input[type=radio]:checked").val() == "install" ){ + showStep(2, 'next'); + } + else + { + constructUpdaterTabs(); + showStep(6, 'next'); + } + return false; + break; + + case 2 : + return configIsOk; + break; + + case 3 : + createDB(); + return false; + break; + + case 4 : + verifyShopInfos(); + return validShopInfos; + break; + + case 6 : + return true; + break; + + case 7 : + doUpgrade(); + break; + + } + +} + +function setInstallerLanguage () +{ + $("#formSetInstallerLanguage").submit(); +} + +function verifyAndSetRequire(firsttime) +{ + $("div#"+(application == "install" ? "sheet_require" : "sheet_require_update")+" > ul").slideUp("1500"); + $.ajax( + { + url: "model.php", + data: "method=checkConfig&firsttime="+firsttime, + success: function(ret) + { + isUpdate = application == "install" ? "" : "_update"; + testLists = ret.getElementsByTagName('testList'); + + configIsOk = true; + + testListRequired = testLists[0].getElementsByTagName('test'); + for (i = 0; i < testListRequired.length; i++){ + result = testListRequired[i].getAttribute("result"); + $($("div#sheet_require"+isUpdate+" > ul#required"+isUpdate+" .required")[i]) + .removeClass( (result == "fail") ? "ok" : "fail" ) + .addClass(result); + if (result == "fail") configIsOk = false; + } + + + testListOptional = testLists[1].getElementsByTagName('test'); + + for (i = 0; i < testListOptional.length; i++){ + result = testListOptional[i].getAttribute("result"); + $($("div#sheet_require"+isUpdate+" > ul#optional"+isUpdate+" li.optional")[i]) + .removeClass( (result == "fail") ? "ok" : "fail" ) + .addClass(result); + } + + if (!configIsOk) { + $('#btNext').attr({'disabled':'disabled','class':'button little disabled'}); + $('h3#resultConfig'+isUpdate).html(txtConfigIsNotOk).slideDown('slow'); + $('h3#resultConfigHelper').show(); + $("div#sheet_require"+isUpdate+" > ul").slideDown("1500"); + } else { + $("#btNext").removeAttr('disabled'); + $('#btNext').removeClass('disabled'); + $("input#btNext").focus(); + var firsttime = ret.getElementsByTagName('firsttime'); + if (firsttime && firsttime[0].getAttribute("value") == 1) + $("input#btNext").click(); + else + { + $('h3#resultConfig'+isUpdate).html(txtConfigIsOk).slideDown('slow'); + $('h3#resultConfigHelper').hide(); + $("div#sheet_require"+isUpdate+" > ul").slideDown("1500"); + } + } + } + } + ); +} + +function verifyDbAccess () +{ + //local verifications + if($("#dbServer[value=]").length > 0) + { + $("#dbResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtDbServerEmpty).show('slow'); + return false; + } + else + { + $("#dbResultCheck").removeClass("fail").removeClass("ok").removeClass('userInfos').html(''); + } + + if($("#dbLogin[value=]").length > 0) + { + $("#dbResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtDbLoginEmpty).show('slow'); + return false; + } + else + { + $("#dbResultCheck").removeClass("fail").removeClass("ok").removeClass('userInfos').html(''); + } + + if($("#dbName[value=]").length > 0) + { + $("#dbResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtDbNameEmpty).show('slow'); + return false; + } + else + { + $("#dbResultCheck").removeClass("fail").removeClass("ok").removeClass('userInfos').html(''); + } + + //external verifications and sets + $.ajax( + { + cache: false, + url: "model.php", + data: + "method=checkDB" + +"&type=MySQL" + +"&server="+ $("#dbServer").val() + +"&login="+ $("#dbLogin").val() + +"&password="+encodeURIComponent($("#dbPassword").val()) + +"&engine="+$("#dbEngine option:selected").val() + +"&name="+ $("#dbName").val(), + success: function(ret) + { + ret = ret.getElementsByTagName('action')[0]; + if (ret.getAttribute("result") == "ok") + { + $("#dbResultCheck") + .addClass("ok") + .removeClass("fail") + .html(txtError[23]) + .show('slow'); + $("#dbCreateResultCheck") + .hide('slow'); + } else + { + $("#dbResultCheck") + .addClass("fail") + .removeClass("ok") + .html(txtError[parseInt(ret.getAttribute("error"))]) + .show('slow'); + $("#dbCreateResultCheck") + .hide('slow'); + } + } + } + ); + +} + +function createDB() +{ + $("#dbResultCheck").hide(); + $.ajax( + { + url: "model.php", + cache: false, + data: + "method=createDB" + +"&tablePrefix="+ $("#db_prefix").val() + +"&mode="+ $("#dbTableParam input[type=radio]:checked").val()+ + "&type=MySQL"+ + "&server="+ $("#dbServer").val()+ + "&login="+ $("#dbLogin").val()+ + "&password="+encodeURIComponent($("#dbPassword").val())+ + "&engine="+$("#dbEngine option:selected").val()+ + "&name="+ $("#dbName").val()+ + "&language="+ id_lang+ + (dropdb ? "&dropAndCreate=true" : '') + , + success: function(ret) + { + var action_ret; + try { + action_ret = ret.getElementsByTagName('action')[0]; + } catch (e) { + $("#dbCreateResultCheck") + .addClass("fail") + .removeClass("ok") + .removeClass('userInfos') + .html(ret) + .show(); + return; + } + if (action_ret.getAttribute("result") == "ok") + { + var countries_ret = ret.getElementsByTagName('country'); + var timezone_ret = ret.getElementsByTagName('timezone'); + var html = ''; + for (i = 0; countries_ret[i]; i=i+1) + { + html = html + ''; + } + $('#infosCountry').html(html); + html = ''; + for (i = 0; timezone_ret[i]; i=i+1) + { + html = html + ''; + } + $('#infosTimezone').html(html); + showStep(step+1, 'next'); + } + else + { + if (action_ret.getAttribute("error") == "11") + { + $("#dbCreateResultCheck") + .addClass("fail") + .removeClass("ok") + .removeClass('userInfos') + .html( + txtError[11]+ "
    \'"+ + action_ret.getAttribute("sqlQuery") + "\'
    "+ + action_ret.getAttribute("sqlMsgError") + "(" + txtError[18] + " : " + action_ret.getAttribute("sqlNumberError") +")" + ) + .show(); + } + else + { + $("#dbCreateResultCheck") + .addClass("fail") + .removeClass("ok") + .removeClass('userInfos') + .html(txtError[parseInt(action_ret.getAttribute("error"))]) + .show(); + } + } + } + }); +} + + +function verifyMail() +{ + //local verifications + if ($("#testEmail[value=]").length > 0) + { + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtError[0]); + return false; + } + else if (!verifMailREGEX.test( $("#testEmail").val() )) + { + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtError[3]); + return false; + } + else + { + + if (smtpChecked) + { + //local verifications + if($("#smtpSrv[value=]").length > 0) + { + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtSmtpSrvEmpty); + smtpIsOk = false; + return false; + } + } + + + //external verifications and sets + $.ajax( + { + url: "model.php", + cache: false, + data: + "method=checkMail"+ + "&mailMethod= "+(smtpChecked ? "smtp" : "native")+ + "&smtpSrv="+ $("input#smtpSrv").val()+ + "&testEmail="+ $("#testEmail").val()+ + "&smtpLogin="+ $("input#smtpLogin").val()+ + "&smtpPassword="+ $("input#smtpPassword").val()+ + "&smtpPort="+ $("input#smtpPort").val()+ + "&smtpEnc="+ $("select#smtpEnc option:selected").val()+ + "&testMsg="+testMsg+ + "&testSubject="+testSubject + , + success: function(ret) + { + ret = ret.getElementsByTagName('action')[0]; + + if (ret.getAttribute("result") == "ok") + { + $("#mailResultCheck").addClass("ok").removeClass("fail").removeClass('userInfos').html(mailSended); + mailIsOk = true; + } + else + { + mailIsOk = false; + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(txtError[26]); + } + } + } + ); + } +} + +function uploadLogo () +{ + $.ajaxFileUpload + ( + { + url:'xml/uploadLogo.php', + secureuri:false, + fileElementId:'fileToUpload', + dataType: 'json', + success: function (data, status) + { + if(typeof(data.error) != 'undefined') + { + $("#uploadedImage").slideUp('slow', function() + { + if(data.error != '') + { + $("#resultInfosLogo").html( txtError[parseInt(data.error)] ).addClass("fail").show(); + } + else + { + $(this).attr('src', ps_base_uri + 'img/logo.jpg?' + (new Date())) + $(this).show('slow'); + $("#resultInfosLogo").html("").removeClass("fail").hide(); + } + }); + } + }, + error: function (data, status, e) + { + $("#uploadedImage").attr('src', ps_base_uri + 'img/logo.jpg?' + (new Date())); + $("#resultInfosLogo").html("").addClass("fail"); + } + } + ) +} + +function moveLanguage(direction) +{ + + switch (direction) + { + + case "al2wl" : + $("#aLList option:selected").each( + function() + { + $(this).appendTo("#wLList"); + $(this).clone().prependTo("#dLList"); + } + ); + + break; + + case "wl2al" : + if ($("#wLList option").length > 1) + { + $("#wLList option:selected").each( + function() + { + if($(this).val() != "en" ) + { + $(this).appendTo("#aLList"); + $("#dLList option[value = '" + $(this).attr('value') + "']").remove(); + } + } + ); + } + break; + } +} + +function ajaxRefreshField(nthField, idResultField, fieldsList, inputId) +{ + var result = fieldsList[nthField].getAttribute("result"); + if (result != "ok") + { + $("#"+idResultField) + .html( txtError[parseInt(fieldsList[nthField].getAttribute("error"))] ) + .addClass("fail") + .show("slow"); + if (validShopInfos) + $("#"+inputId).focus(); + return false; + } + else + { + $("#"+idResultField) + .html("") + .removeClass("fail") + .show("slow"); + return true; + } +} + +function verifyShopInfos() +{ + urlLanguages = ""; + $("#wLList option").each( + function() + { + urlLanguages += "&infosWL[]=" + $(this).val(); + } + ); + urlLanguages += "&infosDL[]=" + $("#dLList option:selected").val(); + + $.ajax( + { + url: "model.php", + async: false, + cache: false, + data: + "method=checkShopInfos"+ + "&isoCode="+isoCodeLocalLanguage+ + "&infosActivity="+ encodeURIComponent($("select#infosActivity").val())+ + "&infosCountry="+ encodeURIComponent($("select#infosCountry").val())+ + "&infosTimezone="+ encodeURIComponent($("select#infosTimezone").val())+ + "&infosShop="+ encodeURIComponent($("input#infosShop").val())+ + "&infosFirstname="+ encodeURIComponent($("input#infosFirstname").val())+ + "&infosName="+ encodeURIComponent($("input#infosName").val())+ + "&infosEmail="+ encodeURIComponent($("input#infosEmail").val())+ + "&infosPassword="+ encodeURIComponent($("input#infosPassword").val())+ + "&infosPasswordRepeat="+ encodeURIComponent($("input#infosPasswordRepeat").val())+ + "&infosNotification="+ ( ($("#infosNotification:checked").length > 0) ? "on" : "off" )+ + "&countryName="+encodeURIComponent($("select#infosCountry option:selected").attr('rel'))+ + urlLanguages+ + "&catalogMode="+ encodeURIComponent($("input[name=catalogMode]:checked").val())+ + "&infosMailMethod=" + ((smtpChecked) ? "smtp" : "native")+ + "&smtpSrv="+ encodeURIComponent($("input#smtpSrv").val())+ + "&smtpLogin="+ encodeURIComponent($("input#smtpLogin").val())+ + "&smtpPassword="+ encodeURIComponent($("input#smtpPassword").val())+ + "&smtpPort="+ encodeURIComponent($("input#smtpPort").val())+ + "&smtpEnc="+ encodeURIComponent($("select#smtpEnc option:selected").val())+ + "&mailSubject="+ encodeURIComponent(mailSubject)+ + "&isoCodeLocalLanguage="+isoCodeLocalLanguage + , + + success: function(ret) + { + fieldsList = ret.getElementsByTagName('shopConfig')[0].getElementsByTagName('field'); + validShopInfos = true; + if (!ajaxRefreshField(0, "resultInfosShop", fieldsList, "infosShop")) validShopInfos = false; + else if (!ajaxRefreshField(4, "resultInfosShop", fieldsList, "validateShop")) validShopInfos = false; + else if (!ajaxRefreshField(1, "resultInfosFirstname", fieldsList, "infosFirstname")) validShopInfos = false; + else if (!ajaxRefreshField(2, "resultInfosName", fieldsList, "infosName")) validShopInfos = false; + else if (!ajaxRefreshField(3, "resultInfosEmail", fieldsList, "infosEmail")) validShopInfos = false; + else if (!ajaxRefreshField(7, "resultInfosPassword", fieldsList, "infosPassword")) validShopInfos = false; + else if (!ajaxRefreshField(8, "resultInfosPasswordRepeat", fieldsList, "infosPasswordRepeat")) validShopInfos = false; + else if (!ajaxRefreshField(9, "resultInfosLanguages", fieldsList, "infosLanguages")) validShopInfos = false; + else if (!ajaxRefreshField(11, "resultInfosSQL", fieldsList, "infosSQL")) validShopInfos = false; + else if (!ajaxRefreshField(10, "resultInfosNotification", fieldsList, "infosNotification")) validShopInfos = false; + else if (!ajaxRefreshField(5, "resultInfosFirstname", fieldsList, "validateFirstname")) validShopInfos = false; + else if (!ajaxRefreshField(6, "resultInfosName", fieldsList, "validateName")) validShopInfos = false; + else if (!ajaxRefreshField(12, "resultCatalogMode", fieldsList, "validateCatalogMode")) validCatalogMode = false; + else + { + $('#endShopName').html($('input#infosShop').val()); + $('#endFirstName').html($('input#infosFirstname').val()); + $('#endName').html($('input#infosName').val()); + $('#endEmail').html($('input#infosEmail').val()); + } + } + } + ); +} + +function autoCheckField(idField, idResultSpan, typeVerif) +{ + switch (typeVerif) + { + case "required" : + $(idField).blur(function() + { + if($(this).val() == "") + { + $(idResultSpan) + .show("slow") + .addClass("fail") + .html(txtError[0]); + } + else + { + $(idResultSpan) + .hide("slow") + .removeClass("fail") + .html(""); + } + } + ); + break; + + case "mailFormat" : + $(idField).blur( + function() + { + if (!verifMailREGEX.test( $(this).val() )) + { + $(idResultSpan) + .show("slow") + .addClass("fail") + .html(txtError[3]); + } + else + { + $(idResultSpan) + .hide("slow") + .removeClass("fail") + .html(""); + } + } + ); + break; + + case "firstnameFormat" : + $(idField).blur( + function() + { + if (!verifNameREGEX.test( $(this).val() )) + { + $(idResultSpan) + .show("slow") + .addClass("fail") + .html(txtError[47]); + } + else + { + $(idResultSpan) + .hide("slow") + .removeClass("fail") + .html(""); + } + } + ); + break; + + case "nameFormat" : + $(idField).blur( + function() + { + if (!verifNameREGEX.test( $(this).val() )) + { + $(idResultSpan) + .show("slow") + .addClass("fail") + .html(txtError[48]); + } + else + { + $(idResultSpan) + .hide("slow") + .removeClass("fail") + .html(""); + } + } + ); + break; + + default : return false; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//upgrader +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +function constructUpdaterTabs() +{ + $("#tabs") + .empty() + .append("

  • "+txtTabUpdater1+"
  • ") + .append("
  • "+txtTabUpdater2+"
  • ") + .append("
  • "+txtTabUpdater3+"
  • ") + .append("
  • "+txtTabUpdater4+"
  • ") + ; + $(".installerVersion").hide(); + $(".updaterVersion").show(); +} + +function constructInstallerTabs() +{ + $("#tabs") + .empty() + .append("
  • "+txtTabInstaller1+"
  • ") + .append("
  • "+txtTabInstaller2+"
  • ") + .append("
  • "+txtTabInstaller3+"
  • ") + .append("
  • "+txtTabInstaller4+"
  • ") + .append("
  • "+txtTabInstaller5+"
  • ") + ; + $(".installerVersion").show(); + $(".updaterVersion").hide(); +} + +function doUpgrade() +{ + $.ajax( + { + url: "model.php", + cache: false, + data: + "method=doUpgrade" + , + success: function(ret) + { + var ret; + try { + ret = ret.getElementsByTagName('action')[0]; + } catch (e) { + $("#resultUpdate").html(ret); + showStep(8); + return; + } + + var countSqlError = 0; + if (ret.getAttribute("result") == "ok" || (ret.getAttribute("result") == "fail" && (ret.getAttribute("error") == "34"))) + { + requests = ret.getElementsByTagName('request'); + $("#updateLog").empty(); + + $(requests).each(function() + { + $("#updateLog").append("
    " + $(this).children("sqlQuery").text() + "

    "); + if($(this).attr("result") == "fail") + { + countSqlError++; + $("#updateLog").append("(" + $(this).children("sqlNumberError").text() + ") " + $(this).children("sqlMsgError").text() + "
    "); + } + }); + if (ret.getAttribute("error") == "34") + $("#txtErrorUpdateSQL").html(txtError[35]+" "+countSqlError+" "+txtError[36]); + showStep(9); + } + else + { + $("#resultUpdate").html(txtError[parseInt(ret.getAttribute("error"))]); + showStep(8); + } + }, + error: function (data, status, e) + { + $('#resultUpdate').html('

    Error during install/upgrade: '+data.responseText.replace(/<\/?[^>]+>/gi, '')+'

    You may have to:

    1. Fix the error(s) displayed
    2. Put your database backup
    3. Modify the file settings.inc.php to put the old version for the line with _PS_VERSION_
    4. Restart the upgrade process from the begining

    '); + $('#detailsError').html(data); + showStep(8); + } + }); +} + +function showUpdateLog(){ + $("div#updateLog").toggle('slow'); +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// end upgrader +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//when ready.... +$(document).ready( + function() + { + //show container only if JS is available + $("#noJavaScript").hide(); + $("#container").show(); + + //ajax animation + $("#loader").ajaxStart( + function() + { + $(this).fadeIn(); + $("#btNext[disabled!=1], #btBack[disabled!=1]").attr("disabled", "disabled").addClass("disabled").addClass("lockedForAjax"); + } + ); + $("#loader").ajaxComplete( + function() + { + $(this).fadeOut(); + $(".lockedForAjax").removeAttr("disabled").removeClass("disabled").removeClass("lockedForAjax"); + } + ); + //set actions on clicks + $('#btNext').bind("click",nextTab); + $('#btBack').bind("click",backTab); + $('#btVerifyMail').bind("click",verifyMail); + + $('#al2wl, #wl2al').click( + function() + { + moveLanguage(this.id); + } + ); + $('#req_bt_refresh, #req_bt_refresh_update').click( + function() + { + verifyAndSetRequire(0); + } + ); + + //set SMTP pannels states + $("#set_stmp").bind("click", + function() + { + switch ($("input#set_stmp:checked").length) + { + case 0 : + $("div#mailSMTPParam").slideUp('slow'); + smtpChecked = false; + $("#mailResultCheck").addClass("userInfos").removeClass("ok").removeClass('fail').html(""); + break; + + case 1 : + $("div#mailSMTPParam").slideDown('slow'); + smtpChecked = true; + $("#mailResultCheck").addClass("userInfos").removeClass("ok").removeClass('fail').html(""); + break; + } + } + ); + + //preset mail step 4 + $("#testEmail").change( + function() + { + $('#infosEmail').val( $(this).val() ); + } + ); + + //certification needed for upgrade + $('#btDisclaimerOk').click(function() + { + if ($(this).attr('checked')) + { + upgradeCertify = true; + $('#btNext').removeAttr('disabled').removeClass('disabled'); + $('#upgradeProcess').slideDown(500); + } + else + { + upgradeCertify = false; + $('#btNext').attr('disabled', 'disabled').addClass('disabled'); + $('#upgradeProcess').slideUp(500); + } + }); + + //autocheck fields + autoCheckField("#infosShop", "#resultInfosShop", "required"); + autoCheckField("#infosFirstname", "#resultInfosFirstname", "firstnameFormat"); + autoCheckField("#infosName", "#resultInfosName", "nameFormat"); + autoCheckField("#infosEmail", "#resultInfosEmail", "mailFormat"); + autoCheckField("#infosPassword", "#resultInfosPassword", "required"); + autoCheckField("#infosPasswordRepeat", "#resultInfosPasswordRepeat", "required"); + autoCheckField("#infosPasswordRepeat", "#resultInfosPassword", "required"); + + //fix PNG for IE < IE7 + /* + $(document).ready(function(){ + $("#dfdsf").pngFix(); + });*/ + + + constructInstallerTabs(); + + //show 1st step + step=1; + $("input#btNext").focus(); + + // hide next button for licence validation + $("#btNext") + .attr("disabled", "disabled") + .addClass("disabled"); + + + + function checkLicenseButton(elt) + { + if ($(elt).is(':checked')) + { + $("#btNext") + .removeAttr('disabled') + .removeClass('disabled'); + } + else + { + $("#btNext") + .attr("disabled", "disabled") + .addClass("disabled"); + } + } + + $('#set_license').click(function() { + checkLicenseButton(this); + }); + } +); diff --git a/install-dev/img/01-gd100.png b/install-dev/img/01-gd100.png new file mode 100644 index 0000000000000000000000000000000000000000..9734819977ea19856c5b9d9c44778afb2e9a5b48 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^oIotd!3HGxMcSSLDajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MLwP`jv*DdlK%YvZ_h0Dfa%E7fNxoB6O?o+zSpy89AB33 ztUe^*9FvJ3XNU8|3`d^Rjasq)9wmC9V-A!TD(=<%vb942~)JNvR5+ zxryniL8*x;m4zo$ZGeg#JY5_^DsCnH`TyUZSxSR_vI3_{%s+W9iN+fe8tYk(=sC<` zyUsr4#$S2v1jbWyU5(;7y9#d~Jkr3- CCNF{j literal 0 HcmV?d00001 diff --git a/install-dev/img/01-pt70.png b/install-dev/img/01-pt70.png new file mode 100644 index 0000000000000000000000000000000000000000..ad00a8ee0d6c5dc8fcbaf17a3749045051cfeff7 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^Y#=rVi0tB)?*>wmC9V-A!TD(=<%vb942~)JNvR5+ zxryniL8*x;m4zo$ZGejGJzX3_DsCnH`TyUZS&D;EuqQ)E;b6s#7On}?7?NrgzBR05 z@HAo0WG?v}(eQ&$D4waS@b`)J BF0cRq literal 0 HcmV?d00001 diff --git a/install-dev/img/02-gd100.png b/install-dev/img/02-gd100.png new file mode 100644 index 0000000000000000000000000000000000000000..48eb1bb30fe99332e21d5fa35f7ab07223610949 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp@KrF<;1|%D@LyUlwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8eV#6kAr-fh{`~)M&n%|EapYLQw@8J$ekJZpEiJu`72oT9 z7=(%&S2|x4_%+|a!}*#D$C39NX4J8DyQ$7tR%F7NtRlW-;mOhiDieI?bUyPJ*w_7r zNiCy7Lb>&@&%7)X4DlOTpq#cJ*RZRabf1Dj=hJM zG0s*Cs9Eb2{D)8KBhL*J$;GU1>sK%~z0f;2UFlN6Pw`_neAlqeP<#A;31dN5L85}7 ff#C#31|}Yc>HQ(o+~-Gw{LbL%>gTe~DWM4fW5{cq literal 0 HcmV?d00001 diff --git a/install-dev/img/02-pt100.png b/install-dev/img/02-pt100.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6a27c007b6105f1e24f7556ab0804788ea9654 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^U^WLEkTt>lKP!-uEOCt}3C>R|DNig)WpGT%PfAtr z%uP&B4N6T+sVqF1Y6Da>%hSa%q~cc6kN^MenMI_TKd$=EQNY%5I`Pwqu6uuv^Q9?i z-|1DE$aX|8KsfP$#1aoq&jrjUHBUTx>chjsi#v1}ph7KL5K5{^v{$M3Nw3H+7o txV+GW*^6U=rHnX3`(g!VK?a2b3~ZdPrzJP3&jY%W!PC{xWt~$(69BW|Ro(yq literal 0 HcmV?d00001 diff --git a/install-dev/img/02-pt70.png b/install-dev/img/02-pt70.png new file mode 100644 index 0000000000000000000000000000000000000000..d84e1b7ec756ba229bfc3de95b43e24e548e108e GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^U^WLEkTt>lKP!-uEOCt}3C>R|DNig)WpGT%PfAtr z%uP&B4N6T+sVqF1Y6DcX)6>NwSrQu> zwH`IzG7`;_V&3G$ze0&k#k}6}I}iV)YKKYL3k4f^;u@0JZa&;`z$w6@$XI}pfr*EK Y_q7)5e?K`dpeGnSUHx3vIVCg!05^DAM*si- literal 0 HcmV?d00001 diff --git a/install-dev/img/03-gd100.png b/install-dev/img/03-gd100.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a20bafbc7eedcbd496e3209f49673538d887e6 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp@KrF<;1|%D@LyUlwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8Yo0ESAr-fJf*A!58SwB}^IUP#J#%ORgHYB&u{1{Rh!-k6 zoC=8^94|fGICP)B|F>xs zR-RJ62WIn`G_h=H%P47DDe?Wop}8{+9l2Yhz4N%l)}Ac-@idP8|6|85KhwAW`qwLC zBP3hDw`*?HtOoOk$<8T!ot9xji^Z-Nax)u;e6h%`%#Z0}z5TT-_DIK(sSdmqkGKwo zSY>Q9-X{3wazT#E%SsiwA647Tmd9-^d3rFfg3Ew`?}^FnsPb|Xpbr^5UHx3vIVCg! E08zbkJOBUy literal 0 HcmV?d00001 diff --git a/install-dev/img/03-pt100.png b/install-dev/img/03-pt100.png new file mode 100644 index 0000000000000000000000000000000000000000..1b74f7d6a789bfc3612415afe82f9bc88348f5c3 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`NtU=qlmzFem6RtIr7}3Cm{gP5<_9|I?zJ|L+PlTfQt`xqhovhJc!4(q8V>0l!wMas}_b)|qc>_`o$-Oz4D` z<&7-nvI37~$E;B%iZJaMo25jysuYO?jB}aEK={{((0s#)E{vBc*>k)cVgh$nNQWTIn2MPB0BiJ62Oc$7{( z*zO6xnVHty?+MSWRLiOw69y(0y4D%rj0ZDwXB9INv$p?B2fjdhnJP1tFy;#{qr${x))GGR;c(SHXYeWq{QB zWqd02ArC%rZ(0_x;(6k~8Alx$HZW`y61p$ZQLg-PpCNIAvEq^( n$MngQzDaPj%GH`MvPdv+{>eJ})h?C==sX5bS3j3^P6lKP!-uEOCt}3C>R|DNig)WpGT%PfAtr z%uP&B4N6T+sVqF1Y6DbM>gnPbQgJKk&;S4S%whsuN4x^c)Mv10x*R^{@aLU9Q^V1V zqMS@0XZ~Nou=>!<0M9*Y%N$i5)TTWS;wTp9&`u0K!StnHL12B;r9_7s{%8XO#zJ-z z4TpmpW-*F0NbUY@pSWRmXJbTz>H*0Om2DZqonagT2@IPPe;zh7xzG%B0E4HipUXO@ GgeCy&Vn^%% literal 0 HcmV?d00001 diff --git a/install-dev/img/04-pt70.png b/install-dev/img/04-pt70.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcd74e8ca174ce6416167d980920d36182f3b9e GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^U^WLEkTt>lKP!-uEOCt}3C>R|DNig)WpGT%PfAtr z%uP&B4N6T+sVqF1Y6DbM?djqeQgJKk&;S4S%wh@5M}z{tNeLWma-GN}kj`w#zsX6> z#MLIF>j6V-qRo{f`aeXf96rh_#C3ZwXbXmSADVoXO1g=K+&2^TY;0_cJXHb6J@7-8dwut`Mc@(7?zbRVDt=?5x8*pfeae MUHx3vIVCg!0ENUw^#A|> literal 0 HcmV?d00001 diff --git a/install-dev/img/05-gd100.png b/install-dev/img/05-gd100.png new file mode 100644 index 0000000000000000000000000000000000000000..7613288415a96fc25bf1d1616042542d35dbb476 GIT binary patch literal 302 zcmV+}0nz@6P)>4o1i4U6h)AJ#S zQ&tcCv3m>0a4>?+m1?+SslL(AP5Lyku?fCF!uHo*WKo<1V-%z%3*m%UPZmTo3EMp7 zK~03Oc;xv%LWPnibAddAcZX9>;%=$Z0saaw0C>a^$Me+xEdT%j07*qoM6N<$g4q9g A1ONa4 literal 0 HcmV?d00001 diff --git a/install-dev/img/05-pt100.png b/install-dev/img/05-pt100.png new file mode 100644 index 0000000000000000000000000000000000000000..efede94542af85d487e9679a44c5bb54f3baf805 GIT binary patch literal 259 zcmV+e0sQ`nP)@D9LMoqL>w61Ii4P2$o%{f`YXl2y6Nq%R2?%% z*^$^ESR8MxZ`|+fU-YVD!f}-&^fgyLBPQca9r>iri`#K&KPo2?BoYnEzOoJKzRt~-b3;-xc@`BhrPObm|002ov JPDHLkV1kN9XaxWO literal 0 HcmV?d00001 diff --git a/install-dev/img/05-pt70.png b/install-dev/img/05-pt70.png new file mode 100644 index 0000000000000000000000000000000000000000..97b6180de5fca3f8179459a2e4a348fcbf56826b GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`NtU=qlmzFem6RtIr7}3CCgZF_RJzJ1`pV>B^Gj3HdI*3weHgiXycml zkLgJE#+5GN73?XzcCC**xEyEkEcnA6V8}K@diKIe`VA3GXE(H-n0K@1$uZf0ZR}Sj zD+F){onRJq*~pdkDMzE4T{*}iiP=CsHlcA=8t-N%U&S-8^nC)_7)6wi_pt|Uh;7-q zQBqgu;^A!qmRye~+ORTPFF5#_^{%l^hFWc-Cj*NF!}2hzl5?TA?12tu@O1TaS?83{ F1OSY_S;_za literal 0 HcmV?d00001 diff --git a/install-dev/img/bad.gif b/install-dev/img/bad.gif new file mode 100644 index 0000000000000000000000000000000000000000..adcfa44bb1c0c5e7d25234940b80213f892cf80f GIT binary patch literal 594 zcmZ?wbhEHb6krfwc*el+|NsBruU~(E{`Bj!hkx(f_;cm#&&y}Noj?Ec^x;3pcfLP$ z?A?jOKMw7Eeq`s*9qWE*JiMzh<_5pH%yHQtyWebzgcLesq_9?5%v)-SDBi>_bcbyXKm2 z&DpP-Y97_qJg%#GQCae`D*tmu(xcxZq=1!OvqNuEhtROALM%8F)Cw`+7{kvvBX*pbr6`Ga8Gt$SbKTD5%VE=w}enW|dV?*V?CL zAml62q$?z%?s)37p|YM+lNFzWMw_RloL`fT$i8cKH=B&q6ihsyzwp#Fa&Hp$61TN| z>FFlvFVnv)rDTVWq=ARyM0xR`9}<(2n1wWWxpWy09dYdtFkPh6nc=~}rszFK P=AnbYBu}SC1_o;YGXm6g literal 0 HcmV?d00001 diff --git a/install-dev/img/bg-body.png b/install-dev/img/bg-body.png new file mode 100644 index 0000000000000000000000000000000000000000..ce9aa4c976a3ad579dd4251357bc21cd59f3bda7 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^AT}ol6Oe2{( zJaZG%Q-e|yQz{EjrrH1%8G5=nhE&{2veA$}dHCqhr?<=5BpjX@J)Fqw`FJ98(aaAg p7!>s`;Z_b@WQx}80FKzAUzDmwS?JU03+W)@y zB!1`Wi^Dg@Q|8n0=(|$tMcQLeFPi(U`h)pKUU0TB=-;cX9s8YGvuAmZu|9ilcndSN zoYRT6pF07*qoM6N<$ Eg4R-r>;M1& literal 0 HcmV?d00001 diff --git a/install-dev/img/bg-tab.png b/install-dev/img/bg-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..20d2f2c1ab4236edfc72ef6fb3f5920720d56da3 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^Oh9bS0V3}$JR=6ABuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%C3w0xhE&{2nzP{9=>rE29ARJ!SsEdcDAIB8P|KlaPNPMq z8a2~qu!(dD&OFYuSVE!6Cqb@jQvUXN3ae96oE~jlFzXP?&t;ucLK6VD6h#IA literal 0 HcmV?d00001 diff --git a/install-dev/img/bg_help.png b/install-dev/img/bg_help.png new file mode 100644 index 0000000000000000000000000000000000000000..f87116b86b09930b9e8dbac7b20c9bc32f0d6566 GIT binary patch literal 908 zcmV;719SX|P)uJ$KMP(B4t2M4#|f^wT- zs@&$fsVw*ILZ(0Z!jzM%i1YiAK`19*^Gx#18o!*}TP2F)wQ@PR%s1pO-}Z8HlX1vj zt+3_fz7;XYI24on4$fVUxz|Ll_CIc}C-+pibC#8=n0yjq9fmAS#~>QMuAUQ@#PmFW-Wrmv6$c z%X605uq-nt`|i|{2hPPxU5vKIvr@)HvIZsf4MgNhbu{B^0+>`Uw5gv$m7=WyPg;<^0+PkzRv-Re2#%XT#X@-$CR~CEipLcF%8rDsh0*=o$-~ z+&9gaGh(@~@z^QM^5nk8=5o*0@6M>@L)t7yARklvj+@Ip<<^<1T$7bcR4V~ zZpq38%US-<$PHP!WI3I%oaHQMIm=o8pUb&!VL8iL&T^KsoaHQMIm=nj@>F@tyl?)2 i#b@A?7dh4Z6kq^ZpkntGQ?_>i0000k~= z>SQJwi8A#;!I&9i<{KtH>@V;i)Hn7f8Z|MFnHVLS8I6X`DGbJ7vn_4u^;{G-O?-s% zaK3N?EpOkC@0@$NWyP5S9MO5K9M(y!IFQDn4%T<9a-mWDG`PwCyc<||W7)Gg^VTA? ze;$BsJJ9odvTcM?H4dg}#1pZpxc#D%Sxw$6RCF5wSf^g!_} zTkmZC&|yB+p1!z{$K+HMIa7=~SD>@K6D26&NqWDJ45G_d<>hq=X13LAf$zAS>dg7gVz^x9xH^zU z3SW{#FaV=sQZyhi6S22J7DF%+icVlALXw3y1cUKuK7G?9Tf*1z2Zh5KBhzAHh)CgU z(7A@K%wPm&Qd-$xU`(L><-~!}amJXGn8|2m>?jznfvIW$fgoqX6l0*PdKOws$Gu8yxnd3_d=8 z4Hyu4=3na1oBuo|a~f-koEwV{u)e`RPs#ieU;tpY#8ev7&R+lk002ovPDHLkV1iI= BM_~W} literal 0 HcmV?d00001 diff --git a/install-dev/img/boutonpt-on.png b/install-dev/img/boutonpt-on.png new file mode 100644 index 0000000000000000000000000000000000000000..17106acfd54af76f8285909d9c96d2eb19a0fe68 GIT binary patch literal 714 zcmV;*0yX`KP){D)P$b%7tgW zNr}L4APyhjOU+KXRyG5#UW4y95q1J$+W@6#DlE%{lNy5ms)YK7^*o=x!vT5f{(tVK z7caTnT8OPrU%-Npn1QiKxHmval8hP{%Bq6l%ml`!C*AVn7i9jDR2a?O#|yb-P>Kqqfq z{R@WL#}pltn5FCh7z?U!C23%EzOGrKV-g|#K*p#VEJXt%CY*`&;4eW})IJzb)pf_x z4X|cMm=h-#LxX0TG^`Pr_ZYFWsbixEHg<$Nai03e(}<3C!4wHhe&hLS_VoNLTEE^Q z+VzD)F-SgQ!I+=H+R9sc%=fOA?@wJ{xP2nD(RsawXxjs8v_$3%oQ4F+HXx5V&@N8n zyVAh=qm>7_a$%{rM_%R=ikCU%PA<-2xWS+{10WDr%Y$9JWCW&)-?oI$FN>&_zS5ol wayM`O^Onp7UgN^KL(vajtN7WPXGV_ literal 0 HcmV?d00001 diff --git a/install-dev/img/boutonpt-over.png b/install-dev/img/boutonpt-over.png new file mode 100644 index 0000000000000000000000000000000000000000..851be19fe9e14d395149ed2d81e703f1b026111a GIT binary patch literal 701 zcmV;u0z& zxql^hb80v{fbHNLloGAKDsr!*vUZ-9gB0sSrThtV3y&UXFt@Dn+x87zDYN-&fEQs6|%VSaiF_l(o+UZTG||fn|>$BosegabbXVgS+k6SK!+e-!f$90*3O%73yf+8 zDFSFLwF`_;2nb9xz}UONa0SU}zC^ELbhT90O5{oeG%`5(FBtAoD~m+M1bZrm`_#%J z2Sx@Gfk$AXAj5(xCh8TVq}|;4D@Aa^-S_LAzh=<}Q?-<8Nar^qT$zQ=5%_dST+)|Bo1~R!O-!n9wh?LU(YsAFj?z2 zGkU=}(LY=`HRCwC#o6SnYP!NUhO(uV>Hd;jt zN)b2i)UDvE2=ys^6J7W&`V6k(rqG?}(p?E^Koqfx(W=!Mdmq4M2F?ekxpaB>7>4H7 z9-2+#SmW$)GEU0?P%lQDk~28|xf;qB*2%k@%(wQ_PL@Qo4f4alLsy_qe2+gTA1`lT z&qY~PPopyyxKA>1lXlw6wl`8#1nP#I%F1GM0L?TWlh zK{Fv#0<_?KT^4y`&-W}U0a|dr#^f7oJOg)uvK^S6rNDZIEaU~sRtNDm;JND?{4xfV z$;-}C$R7dL2B3`aPhRUA;@Jy;DtX1*hz))?zj#C)KojCEMHW*R=!9ad3_z{Cn7lx% zyjU9m)&>BuHURM7wE>eCDBgMB`5B`Mpp3D+q`2op2VDSV+{x?VoDT;a+|B`7m~e8r zRW_6ZXAhkKCFG0MX+bo-QP$_&nCV~NS2#212h@yL&Mjv!SDnbfHNOH300hQ5dTOk| Q0000007*qoM6N<$f(ba#U;qFB literal 0 HcmV?d00001 diff --git a/install-dev/img/bt-hover.png b/install-dev/img/bt-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..9e682dcfa7fc624e63b83b181062bfa566ec4bd3 GIT binary patch literal 752 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 literal 0 HcmV?d00001 diff --git a/install-dev/img/bullet.png b/install-dev/img/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..1da7af138e3986c3cdb20c0ceaf3147dde4e3e03 GIT binary patch literal 1265 zcmVPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy7<5HgbW?9;ba!ELWdKlNX>N2bPDNB8b~7$BH8Ae8p8x;^OG!jQ zR5(v%l#5RkR}_b*is8>_+JZb5ide;(f&$f6Tcb9OtraE31tM=2$bty+SfB{Hi;ION z3&^sI3xWu^`q&79Nq)nSNC7@sLodi>LlF7{6Ilu2b?m733`T2R2 zSFY#JpDQaXE6UQ+lCr$KtUP=6Oj)~jt+H<2I>p`HU2$`BQ`W3m^QufyBy9D5`0ydq z)6?9(eVeYH78={jscp-_(wd5;MUSbWqSiDNV!$5!4^qjwyfa&^| zl=SSOsCO47eY-K<*pFp2lB)hg!`eOh?5;* zq&YT`Y}+920MeZs$-K0Qyzf4s?AmTjefvl=2h!Hrpz77y%cw?2M@3z9I0We24+qI< z4<@xSkh3l=ZQ~`Bw?z?Kr6KwJyJWO%-@-Q4kWvMGpG7LBGaWLfrhhNTFKrR&1rTS^P~o#{O!N0G%VwC=&&eSj0qTSylkQ|dItp7kQ4z=JIF0TzCr zR6#Qf6BN`RBv!zZYc*sxZRAv^gl$$gK^Y$($58VH#?JlZINv8#cucDCCC2DQj^#6c zd-_NP{qkgvr1Eegi#<4I_9jKZj*HeQZQIF-%1@9S<^KKqSR5xY*u%(g4nb$t5P!}K zZJ7t7Ke|}vU!E*3kX5;li2S#RKE0lVZ@oyh`jY1irobM|Iook0N12_S<@!KBsir`R zo5Ru9i?*orCg!v!XD(yc?QADRJ%)knJRyd@wg;sP?O%mtd1{Y7(GSzdy-ZWq(;--*TKDe_g(_M29pai_nDa))mZk<(9jTrgM;c*e#`X-4<5XB bFiP!z&_mQfi~x>_00000NkvXXu0mjfzA|AG literal 0 HcmV?d00001 diff --git a/install-dev/img/ico_help.gif b/install-dev/img/ico_help.gif new file mode 100644 index 0000000000000000000000000000000000000000..511538f8ecbee4bc19127abe59ec4f3dcff1254a GIT binary patch literal 1246 zcmV<41R?uJNk%w1VITk?0OkMyG;nTltQS_A)mfa@9cH$o)A`u%67-I~qxn!@EVe#MKz@J*D_X{g+c!t6GK$a%Eo zcC#An^ZG=M&RdHVWTo3ijL*pN|6QQiVxQSyqS|w-+cSa3SBfP|j96`~;2&+fON-5( z(D!bp7Hg&6N|De+k zut9{%DR{v_ip)@!(^r?#8(^EX;{QX8%|wdLFMh_o>Hp#F_hY2nEPBI7kI!MG+_2yM zxa9vXc*LB}`%jV4d$s2+b-z}f*bP>zVxruq+W$<=4W;ZDugprbiJvRnZ4G=9-6A%_JdOkNjlapv|1}|Ap zNg}Qb3rSBc76JxsXr+S(L_1PYA`l}LE5$2F0~t^)4OM*yy1XO_3po`sGC)k*+dwjG z5D9fGThNly2_j-LOkGG7@bO(0Ofn!vRC>>mr#o39OMp~hLoi-Ef^6uGcv3?FE6w0UBN zSgL#fYE(&qCXJ34P*lt?V&q5=4K^dhWH83;pA$hm^bG^T!j2nh)R?ibz=n|~m_r0H zLE+8}4`CQYu&LoPW+N9095J9KfEhU=!oZk4yNQR}P55@OsboeI+AyrH4&a)y5iJ*z zCr1tg^KP4SnjlZ!yuc3w#Letk(8Pw2??P;Nzu@6{2M{qXfDaF&00Zo<5iEcq1dRRr zLN1uF*#Y_e|27oB27G30ki-ZABsf5V2@2tWO?;FA27>}DD8K^~bm0SWItUQQ1{Xdc z;s7EFfQL;cTu7pb4-7Cs4OA#_LjY=Uv4b2F3^2luJdQ9x88O6Ah7~>X_`n`u5Wt21 z8fm=YLjzENFhU7bQaOSZ5B}i*kyTnL0R$Spkp>zr=)i&;IZV04njm0dg;Q3Pz~&NI zlwbh~E9l@tE^46Q0|{{;u!IDJN&vzGPCWoZp&)>e2LcNCfPxw*xd4Cy5+s0t1Q>LR zffHFe;6$fhbV>!71OVWIIeu`k1{phKx`!8Dh#`g-AUNTK1hlH4f){l_zy<+!tO3a& zXas-*tQaz*0uRvg;A;&v@X)|dQ4otm0J#uyfU;z)5W)rpK!Cso)Hcw-1_)RH!2>J! zV8^zsdaEn|K6DWR76`OZKmjeZ06_y&$UuM(0MHvv0BfM2g8?g4(M1>D$e_SG3J2?e z!Wse8YYGQ0;P3$#5Bp%U$vSZH0S+#3(5)`JsNsSeB7b1B%{aK>f*KyfjBI4Y1x@3a IFb4tvJ2E36-v9sr literal 0 HcmV?d00001 diff --git a/install-dev/img/logo.png b/install-dev/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3dda499e88ae89a87848d3187b85ed4de86b914b GIT binary patch literal 15664 zcmV-0J3fR?h zqvoJi=FlylW#^<+MSC&`)f^ygxkI)5W&-t%4$@+9YOCN}EkC3Amn}LnmVawyv~3Bv z%zw)kfHE-c!C=t!=}-Ue`&HHb&R8tftte7UES9mq(R(NqiiSd=Sa@t~^y=BOXD=m_ zbKzW5^*7HPp#Rs{8tFAOTPyiT<@@R8OwuYpkI%_puhn9yly8e(_7c6cE@kRps-vfSS&IYDHRAM;W?m0#tyL4#$HJ z{y(>G+O+xi`uf_tZoPGzy{)ZPayaags;X}qai?k8s?1+4uSo}=JQjW|9$UPc1FH$xOfgW4okNNRpsvq+<_n*xuMa$M&po?+ z{r$c2o3$fXLAqLQM3E#3sZ?t5<(FUnyN`V2H!sXDj1Qzz@qY@3rjIe6=}49Vs$T3M z5&(Vgd*9o%Z{LAG>F@7(%RTq(b-P?H($prk(pN#cT2{+7g4Fz+nwmQCv5$Z9FOMHT z+Z+x}yc7z}yi9+J<$!9^Ujb4Dg&th{o;`bf_ucp4uXc2F{OkMfyUXQpI0P`?jNr^$ z5BjPPX|>$g;`Mr)-*(`ho1T64xkn}^r}q(XN7LzK7=<2RST(6hb6sEh(wFyLz8wF? zCqD7My2i!^F@agrm{Q=)ShCsd>a1BUH@wKQjFFL%^Y^~v17Dq+y;?UvH~zor=ZHn4 z3fgOiQB11q+`s?c|9rd z!>KqB^faK=zXh8bK86m@%}{06>nh1iL9|*{%g>6%9XN2{E&uhuKJ-P^X4^25yk;&umm-~avxKe}PV8l=spy~Hi{!NU&8t6@1VikfwvES1#9c> z&Hr7MoaplICxPHWG&6-J_jZhie~Jv5%|ZJBWXZNlcUQ}s*3?o}Iri|w--!_JPHGx~ zWy!;vwWjqE`&0c*O%1O@NJ1xy`!r_aub|%Dg$+%=gl5OOvS$v~y&Y|yy+~#k(C)nx zW09X?DtQ*GS$wPI%~+VFGEiGuS{fxuhN7x@C) z@x_?G+BHdoYGo#I1~$b?;Ta^5R1hyHa3oMBn*+#nCnZ`rgF>*^>uaJQ6&?e3j<_q zd>ji43y>96bd>P6sS3PwO&wk9_4%MGC-I#^dPi>OymKv$$_94#LZkXEC(+9n3~gkf2@=ImSG}J&phZ zt~Kbddk{U|TP?yD2&Jy#?7}}FMkY^-dpDUx_ZIO5tj9<-9m~cGGWmX znw}!NGeI^hNjp76lW>N_ghrin2qSZk<*uK{*up_NFN1hGf_N%H*C)w#O(L1r5ZJyR zo9(|)Ra(u=&f?K0pTgMWqyVX&F*K6R=|HgFkG7T;tnKf|nt=gu0*AFQIG=j{1)Lum z%3aIiCJTq^Ktr7mO>NB>?CZzingMv+?vm$^j*j6+k3NRQP=tD164w_@2>Orj`_2Pz z6#|2`BbPV<S?x54lCBNB<=*%uDsq2G6RZk)0h2|s~{PyP=Y*DSWQJ%Vn}9i;UFmV2jhcJX2S;LK+bOJ=dX z{TXzv-(Lb2E>|K4@%YFmacum2ndhIv>H5d;b8G$(8|vR(q8TIUX*_fJw{T)&NC-te zC(Kj=tj}pjv$p|#!Tq?o=~JY5`mWjMQG_=crE9iv-LvFVWbF%Q~)7X++`% zxc>_h8q~ zo!~Uef<8&7sEsKB26hGT^|HPson^K~=y`UkkEx}2&`z8>jUPS!Wd6K50%3pzipt*Z zYzE|oH7Aic9k@tglIA&%pMjXKRWm8sNdX+ zcF)a4nlvdC0%Ir3R9}{e9xKo_9doe+9b-5%_4o977Wei2Exh)&Yf@xIf8&3ZY^G48 zNz0;pMGrqX@w?RV7YKBV1i%=9E{^HQtk8T}>dY)JU($Fmu1^e>r5po)IccRRGMsih z7U_G?AHeplo6r~xV197{XU|^1=){E37SA0#gyzOZba!_xJ%a&cH^M+prxUxjZbo}+ zo1n4hE)8RNbW}{}r=B~EAkoi_8#WZs9=pvB8v%huM0-OsHf&f67fEC83#OfEnz&x4 z3te5E0;F8uP$+~Kj~>f|sG^rAHK(Sg;PLvlihOZs7}N7}qW){Tx``gwfpN*8QEBq_^z@YUA)5#j#6V1d&&)3h%H7b= zP(_PoaA@?QJV3op8}@V`z+nCR;j{Jf83?B@V>I$O*@{uD@x62Dxx!uy2tYAnZNm0b zi|Qp4E32dNl&Ife*p<3ma1LwRm#6_elvXeE8 zhZgb5^ykpv{4(qo+Re7EQ*{ea*l0|)v~56l;2vUpAzYaKDK5^AlQPlp!sS=c?*Afg zYyI78(x!#ULVEGi(aM_Cnh3m7L-?_wzY>z_20F13N{rNSmLUsa_Q;q!DEjxgrB$$#!i7yer zyWu0+x-@B)Bz;?Z3u)W!!v3vRre|glUW^zZcR8_d?=9lF*3#V6g#Nxh0W?zsyGe_0 z-MR&vHfoi?w*UrH5e>0(_Wdkpu_Zx_qrk$xAiZ zFcxAn`R_YB_Txa;UloMVT3nm4#(%E>bg?a|6TmFya@obQx`h=8En2j$bCzt@q1ngt zW7grX$ASLOk?s0+@qJ_9LwH!fAEzdU#WT)N9mLHoBWQMRu)3y%(BQv2Nr-K0{RB1z z-Y5RHDR>6o!_VXF^q8pLk+xs`k0{yOPuVcDqgdjah{0)JjW+!;8-mw4Ki5f0w)O3<-*8C|Y2< z&dx0eM_Q%2%##_zG}SC?>wl3%g<8JeP%4g5xw&ZVPpQf|vx$?Kip=G;=*E`2$?kny z{_lQU2e!3*3?8R3W(%npvA>H(#328SB~hT~XtpNkw~i*~I;?GcCmgELr&ku|R)i7j zVe$G`REKhC!ZBCt?N zn#n1|5fkymve$4O$FEM3ts5mMDfzycnwl0gyV7+or5UQl2{RUbyz1B#j#D8}4XhNM zr|H6;Tw*DO=P;P26R!v#fUx6zt;xFN*G!$Ja^p}a@$oKZghzx<1{$6XGrO)1gpYlZDUhydCHf{ zXkwC9w8e|R%S(O$$37dE$?SYX<4G_XNb8ZD*9ezsW3IwNwzJA!GPUtSeB)`LOSJ~Jhey% zm+HFVAdQm*{4{*Hx6(xd|XNdJWgiFDzg&5);>Swl<@;t4D;F*rPl@KQDw> zx$B5nV@(55!5qE58V=!^(O)IaHeXXci~EwtrSzPPWjwTk{$yuVBt4VgUdc`K(J2Q? zo~1|*`kN=OjiV_NNLsw$Ig(|kq2f8u-roX^USr#;nq%4x(xfh%?}mdkMM5N;ox0}h zxf7E_LzxyD0c)kAW290>j_CoFR7E&zDl!e5RMWj#db4w@rLob_Y$S-DKJ>guintMF za(Whv(U9;gH#Ie(wYdpyhb`ySnybn*b~OAd)--kJzaPHx5?+{oXhm#Ccr|5vN&Hih zY;dZLXjW%f|$IEik zz$sD>Z*U<|7)@QNUN=kQwTvO5txO>j3Fqk~gNQ>FRwu#|BPs9XVM;25l-(t0RH1`J zw`35du}E~052lT*mH4xqoyu86cig%sA9tOZoySv8KZm)wl{qS4mC|X03RF9v`(tuy zLS#F!XSpE|M16goNZ#NwFuny$%cO9Dhu95l&oWuM2HZKmbH&tgYi0aILZxe8CT z^>2&GbBN`HI$Jxh(P@-t&E){UYzSs0*+)j;Iw%6h*&DpFWHEiY=5uW}1rGa?jlqck zE2UQJw_JC z@x7r3Nu%0?P?dzmLI8=)ljhSZ$m=8lE^X1I4!W*<9Xaz&rTVAYxu$1PiEnbUiBoCJ zhl?1#6X8Qh<&rKM+^^kPDm?TRbh5fkno`x@%Y|IrY6onpjBNVGZArpa3JDi_<$$qa zmo3rTc$~C^JtjUmE_!)<+z7rC!1{Z;3u45&#WO4`n$Vm)kyA;Ii(bUg(8V0U6?Cf> zVk?gh|2w>A%@0Hvq}(`ZrcU9|8Ug!s;_|X%Z)JL%l4w;B3OjuC^6~zHoZXW96pmja zGlj*}7}YO{q0o15e)eqsoXySqmQ`ex!b?lZHkG}3YPB0yoAi~6TWy1l1~hR4LCVrK zvJ6PAl$E`f2VXo4kJF0<(o!R&-O?FD`t}a=3XN7A3NRf%>`Xaw^aO@Suh2ve>_TI*ql4^JlGF{k1o?7pV6DDy_ioG+P%n*K5$!#E z>=gv+z1XyIr!R1OT~LL7Pt+bcBd3}-7pF`mxgg)3jc1urM{M{s3vjOJT9r$yb^*7WPI8KhPG zLxt%coRsuhv-O;6Gtmg;#wRqSXO=xr)=g~|6A9?WW%J-#?AfuSBGolxmgh!Db6S#| zSi5w0wPW8cJB7BXR=V0+aLdk}LPP1Mr;)S~1Gn1h6884qwRbPVk)H_LRHQJz@RGPs zZ%@zlGw-QB>@?zbvTfed+L$*D0(E|Ro=f!K^yG|S6y9Y(%F77v>HG@j;`d@`c0&Ai zZ2Tx1-M@o<&3`ByL6v+b9sUOF@BVFg)J76!3859)`E+{jD+Kyyk<4mkE-iemN;T*x z78ei`5~^?MIX*w&_X@!` zA6gJvO}5F{Od74TqocgUv|R6YdC=0_EHvs$7z&rRwl>_p=T%@u=I3zerI$qF zy_w=zQHp0OYbr`iJl^G&uK9>vy}jpu z;UAM9B+45?nkN0BD-WZ=xf2`xA1E}R%(=!?+wQ|!-vhjYv*3R7$&-+jgNz;nTGsaH zh56}xZTa@eZ|0@9A1rvuL?whjJjTr3?=AV{vf-k3D-( zd>ynZ=OZMp8qVdX{dY=b&hh2DkMIye?_&y=1(upJ{r{+YuqTRlH zB(KfA8+Z2p7kvNRZ;?RFhy?s26Mv2Y&%HEX$_p5F=A^Yq0WD@PYf6h(oPX@xQ7r^f zcx6#uaHe>rRxY3_%e+olF3Zw5clYM@yU^)7AT}bXSNjoku7gdwemMb>xoA~dMw1%O z5xpkoQKe2&6&GnJM{N}oaV;{+Q--E<*d-c}Yny1%OhT-@FSc{c`erQy6#-CQpv{x_>gCOTV>Y!@9L4nx%}?yyktC*nzWg{d$ZLI4=wj zi`eeS_$byct`U^DCVQxglTfVJ=L9=s0W+1$x$S5?&df$om1Nr>Bre#H+@I zt!0z{moU=ueLR2VkoZ0t8plZN2@HB4C~>fv;V!Mno)o(!(9@5Ml^2`Ol17h4qsy`ft61LJ_(>d}dP%I5N{~jKiobw0 zo_Ce)7j2pOm~TxnNaZCam(Ij!=u^;TXOW4dA)bj^oK)`oLV!H=#*(L3Y`vmo%WU`Z z+CiFcdxc3aFAt`b!G#0F4x4v*fM$(K?(W%$kM@5LztVdU_pCiY*GfocS3ZG-U7ERC z)46hPf23=6ROPN^o3^{F4W3+%Eo-;g*|{5Hhx_aNdCJUz_*Ck(@9r21g)z4f$~#rq zCS|X4qrVP8IvN`S;?toRvOPoq<#_5!_EYlN`p6co&-Y|JJ#}6CMU{9#{!-jBl_iFy z#Y%;`&O3a>auivD+tx_*)m~-Hv(WK+zcZ-TIH^>+^r=#4pxkfVP`4TsSr}DbPl+T^ z-2QGK?rHlI_k6Fe zk~ySn*+T85XDxcy2$PgE7p!fw{-%%ely{9m_V9KiY(` zpMDSV*>PTpSvxf`jp&+a0rf0+P8QeY1z5b~EtZSV%DH5NiXgSLos%&t*`&fAjT_p9_k7~r z8k}XqQ42(KFOG~5WlfM>IwulBYRz@dWTRL}gz_*{6>o`0b$RnETg0N4+M^KA{H_he z$es`ms@eD=rjoCq(XpxEn#-|AX}%b3byD9o*>B0G51NBs9LRY+Kx%G6SC#qIqHfDk z-%47JIlD`3fmCHVlyRwqXd;G~G7V>Q02%&oECQd}MUs}JV2<*dek2{GZ#*s@s95qc zZgkFW)yek4P87pBS^xMVDBl!gZ9-H%;y~TOZleV0l zTcWxwct+3$XT=eg-klQbc$JT4_z0M;dAz<4G zPi{OS$rOebzb(AHR;qh$_F~7WdQcY>qp5>@-@pq@(C>AUy zmU;MMEQa~^2?To@ffJ;MF2~?kI*66>mMEN0nakJANlLMTghrMD$s0o{QlU*6$xK&W z-LF}^*ejyD7U8AprPAHwCHCO5BNoGJUNJPi=K=+i2U026q#tV@Afw>6zp3+CG8xbswgyvv_s( z|Hs9-k^Hdq1#TgV++O$`t&n_XasB9SIr?7Bv{Q=}siu{`QB^Ko0@5H+RlarQQyyNQT0=G=3GWt@Q}_nlLnc0TT-;D5PnVNewPL z(WRWKWmix%HD48^at@}vd!DvJo74>9@PhE-HKbyzl3Z+#wHt$!SMi$*t&O#+#vT~C}iE3Uh6X%sFJ0=zIF8B1a&9LlfQ;S8X) z1HJi`H)ZS3J09e=@Dw(&R@!z>nxC99Ket{>>|zJV1)`Vi(KX9p!)^p^8wx?1O90GMPCZisQqAJ{ z%L?81eBw#Ga{io1+2VWgS;i)pR`N78 z)r+K!suaII2#xpnA)z!gJtG7zgH)C5@Yv~E0%FmrM|gM2iD+Rb2HkG#@A^$N+P9SHvn0~l zbS^Zdt!S<3HI~{E>>0(HR$fDzpsmHzYnObv)W8apK4Ww|$4SGPQ7D~G(vBX)LX+_7 z4M;wk#QFd9w`l)`ec1KT$8q`7|A6tM-^cd9`7pM5K1_d~g#E7Hf|9-qhcBInk~3J7 znFN6-PK|Pw)XnSjV)K^u!VBBp)B=~sU9%=-dv9=Xtw@0j1c>VS3#ldFd&{N`m>Qpi z!|4!PpTN>j!C(M8w{0Zwrpr1BI6lc~ie_q`h{3kDVDDY~F??}YEV7P8V*=>xiS*IA z!PX{`v)k9vAy%SPYYT&_zrROl+qya_P}FjX@f}+7NK5Jn zI&Q+2*7X9SUH-dh9(jvQ2L&yT+p)FvRk3C4K=1*&x1*%4cFB)hoBo9C^*9N{< z)e`GVD*qmlT9&F=-QW(zS#0hKO&v>VBnfq4XC_i?mtKM1tdbp6hg5Wqjwlu`T*TD$ zaX6mwpjwIHJ8A(2$IhzLR$$*3^{qk!Wu>gFo!9pCp`*D4v+)SDXo4uKCU*L>lOXVUeek$kH8CE(@8G}y z`UuoKA$S2n@in|PXm?i^B>sCYoKo$+40LW&Cd0e$D{$D%drIhaz6~wSyD;By9+C7g zlKMRN3enycG_X^L=qSGjru6<2njJgvmiDjlZp1`DIc>ABuX%^TF8dv5YQ0HhB-wcn zUfo{SR`e*%*j4`!2E7+BsUN|Daz$({+M;bmi@XJ%+&n4QP8JS3>i!E-{;+tpghTcj zOWv-7O={w+*8QzZ^SQL;>1}bsz4b*yV!}yoI4ubcxrhf6X${Rm2R5$RMiR}A!zZ4{ zSm-Ju{&9GMjfj)|89RT4_uPb+4FCA_9LE0g5#f+gR6D{)&p~Yul17=w(09IvEuZ)_ zTKx4G%I)*Y_DMWDQ5K{eqHrnKwmOH~R&8aB*ouR9j%*4K50n-cu|`-o6l`jHlq=nSLh=q z!K3&&pz{Xv?p6$^)}~SO+h@Q7hw9I3PZ1s=UfgzvmDq*B*p8oAp5S< zE(yG=d^{=YB$h)sZIE2$O$RMS_Ho3pBPF7#vdi&0>{@kWis;K|+L$cVpM-D`|Glok z8TJd1iKRPa@#3r-*0z#G_k|eBy|qrOU6Zarl9tn`;+1>^Qnwlq-c9zB@zNyDYgpTN zGqx=LD~$Zgw=p++4s9Q~18YC^RkBI#nCSg3a9Bg+;wTLc(M8@Gl*1;e6y4J%z>}Dr z0^yPVM)XF@AUn2*z;=$SUZinV;Hi@JqRmAS`|HCh9pp!n@@9#{+8ZDiBgSJ0*0DMj(*kRl-0$8D z``zpEPN=+tWoQ!dzdwpJ^#S*@eRl_(@7ZzvgvE^nXgGn`|9%ds6O$x_?NI8yaQ*Tw z$bAjh^*PDsE+TV&2F`bFhTQCXqjf{=J2U8#UJ}1qNot_jFg%&LumWl18}Tu5*}VYkL@Df;$P6{Tu@r1rLi+gm_4$X z-_i4CYapxeUpx3YoNHfNNa7rv^bH8hi@m!jynjwz!VTtUiaV-A9cC|1Igzq7?g2)X!-5GKThDo=r6PvGZIN8| zrEC+kja2vixp8AtY-R&So~ULBM~}lgfsh@ULF}1}aP8@ZeP^feq)PR!QVqoS&g~k{ zeWg?179`E^oaMIjSV;vzbfb+fg_DP&DMnrR9>O_N%vAW^vb6LpvrvC=W*eB@@N;=? za6c>~7?<0MD7PtDZJJb!r><4J(MqVVUGW*g=v=sk`{B&RDSX@UKD_&(Z(@DR`*8kG zzlBRb{2|bPuAK%t zMc{Bgun{UvitO;LpuQ|&<6nIqQosZIy_;wvk+z-)A^GEz(B|W?-#!3!XSY!YF|lT$ zGnW-G-+%|J$VkP=ZE3CpYGjShwzsVA$?_D z0NX*&g~hen}pZGq#h8wtq7YR*q0{lXR4_xD3t--`5$BS;+_ zhD_~peRPkY@2MXiM|Ls-8}+-oyGMY4ftR^R>?Yub>w~)?HF*UPxPP^yBe31Rmij-2 z%;8}u1N8hvM*J;1vOvN>rh08Nt|4ul`pIdePff$IzZ6TH+PHR zyt=(Z2!IUD#neBY;e1lq@7n~Wr-9C!fi}K??Ad7{%pLF80J*nOFrLiO%Sb+Q4zk|` z=P%wYa?4XcJ&VkR8Q5>_g>CYx4>q`4VjyiXO%GUwbdsL^C-1zrKagBPZa0`$i}>Co+iUcJi*_?b#&dZMt17 zO1T!zqPDni?Gu`8;rD(5=Z-F6pGE%hDCCYh z!6X()JF7uA95=Ni{Efp^8D^hwnJ&f7#EOQhMe#HP4ExbNi7 zdIEVHbQ-7V*I$7*EbVDPYGcnlctRR z{V{k+cxBH`BlOJ|;oQ;#8ws2knFo%$28aPT5dX$Yu=Um>Jsd&g&!2<$6Z;UMG0xDq zy7zV?M)zjexIVH6$?qRW{GZQ3?I9Dc-ACgTMdCZh1(Q&Fso(zSF*H>GseT=H%`8d_ z)Wzc7ato7JqDi@QI^TkOd)AZiQt2T+W7WHEY}YSm6)eUgX!!I2bWP1->ZeDraQHm3 zB&FpV7mPE&lm?QBQl{h`B9)DjG);&Fj&A@Smq<{^92=*J;}ABG?pBea385{-k^RX@ zBwiVX_d~mY<5xN97P{S_lL*Ddgy8#RX!4{;`a0gR4p{S zPc}78{06s?FkuR;a}$XD(af|qS+p#|L20R*Y#{h)WP|{W~jIHKp|kWkg${1fL%gngoGJg8~gDY*w;1+&Cdr@ z)6^^DP=Y>qfBWZ{_=QRR1+qkywMtFYXc4(8#QsSKGjQHQYNZ?$AZC4lc3k#4vDl}pkJbs?H z55oSQ?IZ}&qEAwXFCj+ekn62$U?bMRPQ282jv{{eGCU7#62eQ$nHkqgb#u<88tJZH z-X>j6G8Ai5k!LG;(O_R+HYOytNF+_MC`HimNAE%A!(m)K_%dv67ZlaGd>kmZoXNGe zS-kVK<~&^1VB=wu{`3s5P1rA)sSq4nNTSoEz|b^lHk+_r(l1O4+c$G^f__us{p3Di zO_O0ikR;8rW_kApD7Ozn`THY?KQaXSg*k%?(|}738SeYnL%nM)lwCc@lJOpg+b1-- z@@^MI0dE232l@BO#&t}Ni2ZoiTf9CqH6=l&Ygne)-FgL^+mAUhL*_x(GF;;%FE$Ei=mcA2bYNo(465PKo| zoqg&&)Mg*lJJ*uHB%v8jim8yfLiLJ}z#U&C;pc?=qq{g*k1T0;=UWD$6P3;$8Ybr9 z5Pgywnlb)`XJID zieUEq5KT^g+qG1M?i#tLoHpkgXhuAfscq3Q3m~FYnQ5}gwzUaKu9L09wAD^_3a=~3 z5RK%)mdKvd5-G!8`?vdykN^uS*=V0elYu9Q)D;x2{M6|g0dAdB2MHX`pC?=J<{kkw z(J#$jxIc0W7C!X@IB3w>t`ep{(Q6$!!<}d-+sbOIU#!s+6NQ}@BpB@7!JPk(=s8X5 z%=A1_SfXFI4dz~tofg2=lKhz#piPoiWk5(x9%PSQg&OFDMhqZzn(V(IO*V%@cIv!1 z7i3#!E-euKc8bZLIZgDISdCQgCJjS0bYvcmy`*)bX|ge?-+yrjWU@O&eU6Vqn@vEz z%gDmg$oAAZgv2}g)4c@f5?Mi~?H}8dck1XlN0N4R0T~(xiOd6?Y}5)G&N_88e! zne)@Ua1>I2J^L9r@8~0zuq)^1Ai#d_m@s!FVpST=1J>^9)>i1lS!mNy5f+nmBlfS6 z5K~AvIe&RK=N9JYMJ>wA`tK5;O0}c~N=v!B*Rl#Go6Xilg{}YQH(D!A0n(@sAn~!U zAu&S}-sQ>Fqg<`o*^q?IbuUaG_v{Zr}7r*~g(tdQ$2e(1q zPFlpV?W?G>jO6l+g3|yhTtKP zvOO$sZZ_IGA2n=77ElWb*tZ(LGk7JxonJ{tR5&6gwbT(LdQ3Jj*~`(dya-#DAGZ59 ziF+`GM5|9+>$ra%VqZRt2(>{X``h`U9YScu|L!P~Uw)oIK-%io9;!pT0A!Y!j20&Q z^J_<-JT?S{o~aBrAn_F4)OqhZB>w3%5`X=oFiqIOByDV~*~425PBSe~lFfIV z7bc`BV%C%F=ELdq_TG2jeLvsZ+m(M&?n+agmIG+H-*|TcUtb&C)JdUd&eNo#iIm^j zK*7?R$t9t=vWYlcZOv%-r9B8`k~MGN!IDxT%Ef6b=DDGbwcg&)5P2)G#-d*sr>=6xd{|>e|fM`*nK)r z2BJmwcalvr&_sao!A9Va+Q?RC&B>aYq_NuWH||TeHhX6k4olS)CA!;HD8vL*qF&61 z`COULqx&jEGx^yvO?1b*X@akB5g=wpAhBnZuH|RQq#=a2n}rXzm-=08_mXyOAv3^X z^ureJ2hu`hcdMk0_lP9YO*AfX67a+TBr?0q_SBjLRJ40Nubf)= z+E>4RIg?4B(zGnU^MqF#aHdK|$^n!OL9f5AY4;z0_K&~&o_F0RmRnV_IaiWRQ4OfY z%e|U{4Ve1v|AWzQJRvBH!uhqDu>wICZ&_jyBO?)+N6Sr{(f6(YfXT#Se(`fHl-JmP zLR!jI)KU7~jQz3wXYNKJOG~jgW9^cN>55$-87bKIa!_iLzN2Y zA&S~$=|7`B@{;nh_L-&4Ql@-+^3SWV9<&;hG@s84ASNd#FWz_mJC7z}v2PMkFVHFc zG9KPrHKAJ6tDeoI7lwzX(gZvktKf3<)y&#oPIImVp!{#%ZD4M30nPvUUc`vHOdfg} z8O1JQtUOpUZ%jVv*ZaFvq-MmL0d_~WetoKFbC3U%bYDMQ2Oi*h(tp6^m@6!A2^}^(bO4sDT zp;zhCl6utKmu1?{lbN)o^SUh`oDoJA@Z6&MOWrbzCiP(!!V^+YsFW zXq?UTFKE1%)1$20{YFRBmOD$@ejEo~vGSN@| z$6tRjnMwsxsiX-~6R4W$-8EgO!qaP0m2hKY#{g-p{=vaM$x3r;i3MFtwngzLZ}q{B zE7qEsTpYBP45-)AnXAX@alH@gye)pSH`82Fg6W4IdgvcdpFZVHrBlykGwE}ja+CAy z=7DO`T`l)R`k7~*nQ3cl|FdVF)A|YN0|yS=Av~`PmTJ_p768_|!FDaS?DYg{Hk(}) z`>W-KXj5|mK7A%W``OQa_mM{)b;c9POQ~eyg&a5&)ii1T7#<#uwzdRMjE*jBip3&L zt*uSseILx9O*_@xjlp`DzgPOK^_*JoQLQd3IaWcsT3&CEG9zXD@NO2<)6;Z!pILl|4lnOZbybskAYbeChM9F^slY54Z-+t=-Iw|*cPY<};(_wDoC zvU9uG+os$ep|xtga!#mPlOLAj`qx^_o%B}AYPsIUR0K4~;!{&od>=OjgmvZ2Y6j9x@sY$Jy!pjz*a&iN2QSPDQzy0>RcLW0M?@p)nZFHKiskOn) zyPJDlUQ*pzi$R>*!ZLR^@k)bSQOkiTdp$a#@V*)ATHiGE1og(;^kQgoa(X@-o((O= z4Ma+oce{k==OWg+EVr|UBx(62ed4=bSP99D%*)~>ePX3YUZ|j`!e$U(D*v3NN)=v{ zfAe2f*YbU!EibUR-UauqrH|!GZ!1{-6=S;CnoXhNOfYl790)2{a1@3tI3Wy>{h)WN9)Qk41pmpvg?%NuzP z>J|W|EgIAOOk15r)_JN{m|P~3HOoztIdG~u5L-d|Mw6_13Ck-F+Es9^mK&ucGz*@x z7Qk8)7qoILPpU#;BnuGLqEDp^K;H-;)tC8wB>-Io?P_^Fw5e7ESgi=0C3Elp3NQdl Wj7199(4xWs0000|bLnZm9UU&Mk)+~-5!pw)YIdjQA4p0);!(FfqilD4&9>C+y+P53Y>Kx{_f; zo0W{K4OHutG%8ip3Y8fK6Hxrg!pIJEkPgUEpg3V*-`~K{)ZEhA%FLr-X{j&B(#F7{ zuP4ICCt_yL*~(!q$t@})Bg(Dd%GJzlG+#+oeZ4xjnloz?j~=&@y6zrbP8Dtk*(QAv zQPsWs7+A!`-J9(A literal 0 HcmV?d00001 diff --git a/install-dev/img/ombrage-bas.png b/install-dev/img/ombrage-bas.png new file mode 100644 index 0000000000000000000000000000000000000000..0451e3be52db1d686177f106c056d5368dcfdb4f GIT binary patch literal 342 zcmV-c0jd6pP)10000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy_(?=TRCwC#+`Uf2Fcbz*CoSbil^B?K z|A*_uPzeDEA?056M#?+*9O-l7!Hc&~aXhrvUMp{r_j>01CGyY!008>&8~KV{BOj4V zJ+H?YZjryp5}6}YB&GW0%Xzu_3 zfR5zJyzQ5!pDIy#jBg&QByD+Y_e&xUmBHQt0014??u5wX%Ra40BHR?xu-spBme*a07*qoM6N<$fEaktaqG=FU#>$20u2|ptZaI4iMfI)TyM|+m48-V zm6X`PvF`4kM*RskLYJbmXJ_=ZX{Eo|_-66H-pYa%(R*v3O`ZMt)y_Gp-WF>UR?g#m ze)ZwvS;Bf>kI2L>j(#L^T5p&8?Tl6aJjuDs-s|_jJr1-IFZjol&&bBmyiLUTipU}z OkWx=qKbLh*2~7ZBuTwPu literal 0 HcmV?d00001 diff --git a/install-dev/img/phone.png b/install-dev/img/phone.png new file mode 100644 index 0000000000000000000000000000000000000000..862e85be933076c3fcf555727b1c8640012bcb76 GIT binary patch literal 697 zcmV;q0!ICbP)gqbQ00wF@&i@QA*QHP1$jb z4lp=kq4)D^IzF~BH0|=s7eXLRRYLL-%YwJF_s~r$c4iU!&$W$UX|3j3a|2&zrKQ9& zjhWNc%@jq?huhjKx!p60T%pA6n!)95N+?ju1+F;>t)Z5RR2=|wU#@Vju7<8jH$n)H z#v+QWl1DyL09|4X{k=cQFS$$#!`PfwY)&gqS zIP~$Fd5_CV*ZaG?Y=4MIK2N+d9z*FH%zo{EB5VCPP4yK_WS3z|%OnEOuFF6xf6J5` zuM`4xtQlkE2p@U|Sd)8;Gy9K_5CqKjVYR*B`h5#I1`S%{C5&1PDuBsOTARzb(P1ZH z%MMl#J>#8y0s@BzGQtgw)Rz~{Ct|1V`6-%4cX6WNI0-W?JbqG(Bkc}nv-KVwzw@dt ziK{(h_{QMV*oP1{W$yEk0?tO-#uC|Mt|TQwOIYktO7nA&4LqRR?G1{=n7)mmfVUDr ztVFF2UNGh1#3iL6`!VBljX725lQ*MYl&J~{S+Z#gKT8ChhVDk!Re;6qV!Ur0wKUAH zRo`fLm^qNaviQqNM`1d7k90=^EuGyU8>HWTj0?rt$d^wHsQ8ap>&Yv8N}k6wFB`l7 f@!$P!D@Obqdg{q6o(owq00000NkvXXu0mjf(ZD=O literal 0 HcmV?d00001 diff --git a/install-dev/img/puce.gif b/install-dev/img/puce.gif new file mode 100644 index 0000000000000000000000000000000000000000..d32f60750cb016e667add2888efa321a236080d6 GIT binary patch literal 683 zcmV;c0#yA+Nk%w1VG#fk0OkMyoz_H;wioR1%$~hNl+`1h(_NF*9P{(Y8O^_m>*InuE*}lq@ z{{Q#I<#&SsrrTd=raY6%Sf<@oq1auk%~z-0Uzpf0;Ejm0PJwhfD z2X$~`DJVN2JUT!P1Q$aI0bK_SSpybD1PwqZ1qK&e39cY{!r)IBEG!HZIKj`~y8vJW z{JAsdp28CkHuULcVv2}APRNwo@n*vV4huXm^PvTbhyl~8d060p#*8W%c(uu)Bp8bu z8Pv?6;fKSSCV05Gf(2tm5;kWz45F}L1b`z}N|Yer0Ye%JjT}^1f&q;iF&LIqaL`DQ R3JOLDT*x&-K?S2g06Wl5Bn$um literal 0 HcmV?d00001 diff --git a/install-dev/img/shadow-left.png b/install-dev/img/shadow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f3122811fdbe6ca82162cd4689c03fd98a64f1fe GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^> +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 +header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé + +if (function_exists('date_default_timezone_set')) + date_default_timezone_set('Europe/Paris'); + +/* Redefine REQUEST_URI if empty (on some webservers...) */ +$_SERVER['REQUEST_URI'] = str_replace('//', '/', $_SERVER['REQUEST_URI']); +if (!isset($_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_URI'] == '') + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; +if ($tmp = strpos($_SERVER['REQUEST_URI'], '?')) + $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], 0, $tmp); + +define('INSTALL_VERSION', '1.4.1.0'); +define('MINIMUM_VERSION_TO_UPDATE', '0.8.5'); +define('INSTALL_PATH', dirname(__FILE__)); +if (version_compare(phpversion(), '5.0.0', '<')) +{ + echo ' + + + + + + + '; + die; +} + +require(dirname(__FILE__).'/../config/autoload.php'); +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); + +/* Prevent from bad URI parsing when using index.php */ +$requestUri = str_replace('index.php', '', $_SERVER['REQUEST_URI']); +$tmpBaseUri = substr($requestUri, 0, -1 * (strlen($requestUri) - strrpos($requestUri, '/')) - strlen(substr(substr($requestUri,0,-1), strrpos( substr($requestUri,0,-1),"/" )+1))); +define('PS_BASE_URI', $tmpBaseUri[strlen($tmpBaseUri) - 1] == '/' ? $tmpBaseUri : $tmpBaseUri.'/'); +define('PS_BASE_URI_ABSOLUTE', 'http://'.ToolsInstall::getHttpHost(false, true).PS_BASE_URI); + +/* Old version detection */ +$oldversion = false; +$sameVersions = false; +$tooOld = true; +$installOfOldVersion = false; +if (file_exists(INSTALL_PATH.'/../config/settings.inc.php')) +{ + include(INSTALL_PATH.'/../config/settings.inc.php'); + $oldversion =_PS_VERSION_; + $tooOld = (version_compare($oldversion, MINIMUM_VERSION_TO_UPDATE) == -1); + $sameVersions = (version_compare($oldversion, INSTALL_VERSION) == 0); + $installOfOldVersion = (version_compare($oldversion, INSTALL_VERSION) == 1); +} + +include(INSTALL_PATH.'/classes/LanguagesManager.php'); +$lm = new LanguageManager(dirname(__FILE__).'/langs/list.xml'); +$_LANG = array(); +$_LIST_WORDS = array(); +function lang($txt) { + global $_LANG , $_LIST_WORDS; + return (isset($_LANG[$txt]) ? $_LANG[$txt] : $txt); +} +if ($lm->getIncludeTradFilename()) + include_once($lm->getIncludeTradFilename()); + +?> + + + + + + + + + <?php echo lang('PrestaShop '.INSTALL_VERSION.' Installer')?> + + + + + + + + + + + + +
    + +
    + +

    PrestaShop requires PHP5 or later, you are currently running: '.phpversion().'
    + '.lang('If you do not know how to enable it, use our turnkey solution PrestaBox at').'
    http://www.prestabox.com.

    + +
    +
     
    +
    + +
    +

    + +
    PrestaShop '.lang('Installer'); ?>
    +
    PrestaShop '.lang('Updater'); ?>
    +

    + +
    1.  
    + +
    + help + +
    +

    +

    + +
      +

    • +

    • +
    +
    +
    + + getIsoCodeSelectedLang() == 'fr'): ?> +

    + '.lang('A question about PrestaShop or issues during installation or upgrade? Call us!').'
    '.lang('+33 (0)1.40.18.30.04'); ?> +

    + +
    + + +
    + +
    +

    +


    +


    +
      +
    • +
    • +
    • +
    +

    + . +

    + +

    +
    +
      + getAvailableLangs() as $lang): ?> +
    • getIdSelectedLang() ) ? "checked=\"checked\"" : '' ?> id="lang_" name="language" style="vertical-align: middle; margin-right: 0;" />
    • + + +
    +
    +

    +

    + http://www.prestashop.com +

    + +

    +
    +

    type="radio" value="install" name="typeInstall" id="typeInstallInstall"/>

    +

    > type="radio" value="upgrade" name="typeInstall" id="typeInstallUpgrade"/>

    +
    +

    +
    +

    Open Software License ("OSL") v. 3.0

    +

    This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:

    +

    Licensed under the Open Software License version 3.0

    +

    1. Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:

    +
      +
    1. to reproduce the Original Work in copies, either alone or as part of a collective work
    2. +
    3. to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work
    4. +
    5. to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Open Software License
    6. +
    7. to perform the Original Work publicly
    8. +
    9. to display the Original Work publicly
    10. +
    +

    2. Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.

    +

    3. Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.

    +

    4. Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.

    +

    5. External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).

    +

    6. Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.

    +

    7. Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.

    +

    8. Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.

    +

    9. Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including 'fair use' or 'fair dealing'). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).

    +

    10. Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.

    +

    11. Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.

    +

    12. Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.

    +

    13. Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.

    +

    14. Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

    +

    15. Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.

    +

    16. Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under Open Software License ("OSL") v. 3.0" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.

    +
    +

    +
    +

    +
    + +
    + +

    + +

    + +

    + + + + +

    + + +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • /config
    • +
    • /tools/smarty/compile
    • +
    • /tools/smarty/cache
    • +
    • /tools/smarty_v2/compile
    • +
    • /tools/smarty_v2/cache
    • +
    • /sitemap.xml
    • +
    • +
    • /img
    • +
    • /mails
    • +
    • /modules
    • +
    • /themes/prestashop/lang
    • +
    • /themes/prestashop/cache
    • +
    • /translations
    • +
    • /upload
    • +
    • /download
    • +
    + +

    +
      +
    • +
    • +
    • +
    • +
    • +
    + +

    + +
    + +
    +

    + +

    +
    +

    +

    + + +

    +

    + + +

    +

    + + +

    +

    + + +

    +

    + + +

    +

    + +

    +

    +
    + +
    +
    +

    +

    +

    +
    +
    '.lang('and demo products'); ?> +

    +
    +

    +
    +
    +

    + +

    +
    + +

    + +
    +
    +

    + + +

    +

    + + +

    + +

    + + +

    + +

    + + +

    + +

    + + +

    + +
    +
    +

    + + +

    + +

    +
    +
    + +
    +
    + +

    + +

    +
    +
    + +
    +
    + + +

    +
    +
    + + +
    +
    + + +
    +
    + + + +

    + +
    +
    + + + + + +

    +
    + +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    +
    + +

    +
    + + + + + + + + + + + + '), trim($object->{$field.'_'.((int)($_GET['language'])+1)})); + if (property_exists($object, $field.'_1')) + return str_replace(array('!|', '|!'), array('<', '>'), trim($object->{$field.'_1'})); + return ''; + } + + $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); + $content = @file_get_contents('https://www.prestashop.com/partner/preactivation/partners.php?version=1.0', false, $context); + if ($content && $content[0] == '<') + { + $result = simplexml_load_string($content); + if ($result->partner) + { + $modulesHelpInstall = array(); + $modulesDescription = array(); + $modulesPrechecked = array(); + foreach ($result->partner as $p) + { + $modulesDescription[trim($p->key)] = array('name' => trim($p->label), 'logo' => trim($p->logo), 'label' => getPreinstallXmlLang($p, 'label'), 'description' => getPreinstallXmlLang($p, 'description').getPreinstallXmlLang($p, 'more')); + foreach ($p->country as $country_iso_code) + $modulesHelpInstall[trim($country_iso_code)][] = trim($p->key); + if ($p->prechecked) + foreach ($p->prechecked as $country_iso_code) + $modulesPrechecked[trim($p->key)][trim($country_iso_code)] = 1; + } + + foreach ($modulesHelpInstall as $country_iso_code => $modulesList) + { + echo '
    '; + foreach ($modulesList as $module) + { + echo '
    +
    +
    '.$modulesDescription[$module]['name'].'
    +
    +
    + +

    '.$modulesDescription[$module]['description'].'

    + +
    '; + echo ""; + } + echo '
    '; + } + } + } + + ?> + + + + + + + + + + + + + +
    + +
    + + +
    + +
    + +
    +
    +

    +

    +

    +

    + + + + + + + + + + + + + + + + + +
     
     
     
     
    +

    + + + + + + + + + + + +
    +
    + + + + + +
    + +
    +

    +

    +

    +



    +
    + + +
    + + +
    + +
    + +

    + +

    + +

    + + + + +

    + + +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • /config
    • +
    • /tools/smarty/compile
    • +
    • /tools/smarty/cache
    • +
    • /tools/smarty_v2/compile
    • +
    • /tools/smarty_v2/cache
    • +
    • /sitemap.xml
    • +
    • +
    • /img
    • +
    • /mails
    • +
    • /modules
    • +
    • /themes/prestashop/lang
    • +
    • /themes/prestashop/cache
    • +
    • /translations
    • +
    • /upload
    • +
    • /download
    • +
    + +

    +
      +
    • +
    • +
    • +
    • +
    • +
    + +

    + +
    + +
    +

    +

    +

    +

    +
    + +
    +
    +

    +

    +

    +

    +
    +


    + + '.lang('New features in PrestaShop v').INSTALL_VERSION.'

    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 literal 0 HcmV?d00001 diff --git a/img/scenes/2-large_scene.jpg b/img/scenes/2-large_scene.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7567634e690cad3aa7313be3c17ffd278ca1f81d GIT binary patch literal 17003 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 vVAgTdx#i{d8j5b)4 literal 0 HcmV?d00001 diff --git a/img/scenes/2.jpg b/img/scenes/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..19ba0dfc804dcc4f5e57155617b0cce4576a4305 GIT binary patch literal 15334 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 (?d5dHwl5inUo;}*sU;oHnK zAHC5`SYiCCF=JqJWU6Rk2MVwufLI$jqFdmYb7Z{X04bw zxyWMS_Bg?O9azTDQVbvsy&u$=vO45mBs3HuA19(MP;$x(V{V$jxCN%0ypK8DSHNN9V-;sb(2NsX5)B`@y<>U9P@mQ1E{Dt{3Nnvu<7au~QU;qv=<04pj5 zMC9F*7B==ZFBPER(5&5`mLKB~3$3g3EM_L8hLv zLx`gxc)3J2N?|-s!YJwaZ|-5YC?**Dpi4(l0WdBxC^crLC|UGIISG~0XMp@Yt4)Pu zUS#PZDUo)SfDDgz3MP=7}u$QV0tx9Xw@p+K{71J=khVwC{T|mP|29diek{YMzb~Ng(BOR zKY-EqiV^Rs5N1t}2P;Y|qS%OH#4(70f=G~H=n-#9VfH3N!6fFC@|@s0W^AQ%QRd>M zU{1(L76S)Nu(W+D&by8)PE>H4BjP^O#MtJ010N^>^&~y7= z#WUamVpi$>#O;XEtnF6_ir;AACUj7f1^vgRodtPI%Ja-Exy{@JQmH^VadjE^qSXAE zB%rc5(Ic}ooRgLVGL^vcWUD5{XyeL?*3g9HAy&~~D51sGgINUCK$D0N&jwP=A`tm? z#Hl-yz!?pH6{}G*0(B3z=CgcZ1QrkoH_r19uH1ZrewAGCSZVMP`x;aE04MY|C?XGC z6R^~uC4?GS%s_Q%*mm}T6GtwFn`clsVtF|8uGwS5f+1S)QQUOC?~Sj_=nOD3Bx6BS z^G;OAnPnp?{T5jHs6_J0%TRcA>5+GwhGMD%gdooA)gYY01(s4+*gzl^;E)r5lRe8c zf2tGomozHuen+bOEN`nE{@>j8@_omg;2xdgZS;kl&=%5+#vv%|A#YUxNhV7F_E;B2 zye4*_pVf}2R1<+Hg|t_itP}ezE!#f~cnMOC)6nMz_(Q&s3<_BHEoTNWM^)6w$%u63 zNoQe9c*Y9Lpgoa+7%qGS7tK?kW%jU;MdD)%V&}jmk9bmj5ngTLoQZ}Z!HDWsEqHce zDf`$V3!?Eq04VakNExircfF_Pe8yi~!OD0^H?Xj0Fek*Ik{F^<>bS&hhVLDuim?)b z6v2>);(TnQD68KF3IIf;8w{0DQF&$I#?gUY97a*mLg&Hl>X5Dd+U!J-A=3O5B2iEv zfVQRjnmSZW=6xX`!it7Q!=4sSAvVQu!61LtN6~9f*K=qcn)z(9Jh-xxYK;et=BGgm z%^>PxONAC8**esplrLhh(BmVM!x{8u*i<`*3W`aL5TVEgkAfrsIuKt?Mvib5NQJbj+K6&)$2SbH?|_cW-sl0AM5_5G0__K>*%gm|#GE@%}r2e?f$R1O|fo>c;x&0Qv8o zU)uuy>i=8^z=8k)fDu6uzgo@`{yq2qDuq)-q`>>(52(?3>4Du)=E-$FC>Gjmb))OE4x$o?e`7 zG_SHZpUwGx$wmLtnjxDe%7UrvrhoTty{A^5(0atcNOS&)qX}2*Emq5XZ!6b$-1Cttc{C2gN7fg-4Gj!{e0VTsikyQIp6K_HJC#>Byb7h88OI~6|;KlSrdRrojV zuGEcb-kg2T@%CS3TKh9(;VxAarnE-`Fju0sxr#P+R#2roj_PR-@mv&c78nq!b~RL; z&pxa8xtpDjjRsV)X$2=*FD*CmCGN~oQqOneE8{!2e++0%IXELe5UyxsYZ_H6P9=FZ zG;CpcJo9+(2>6X>CcXdUaS<%GluaJNy7t?neF9MEJJKGsf)8XgumM~g9h z8*snqzWKFOMq?Tpxf3ntm+5Epk>mNnX7B~xXZPx6_fYhx^O5Sp*~TZe`p3!H>NB39 zT+WXd>zQYKcY$Hgd6ucx^~PmAm#fuP$j}xK=kHQawf@|#k7kKm?aK(0?=0iGoNLD| zOZw`(rOPX7zt@=GAs8lXZ*pca;dQxa6i;U|?3<|0t!>>icZ=>=ZXdtNIF+e6J5Ahy ze*$JX#qnkKnC*qLcoQR+@2q*+gVl0RH|r$L8&~XRT-egs-+`){Q(#?J7xVdSS6Bzc zEk@v##)mifX!sXC0TVrod^%TOI|2F=%smrK2Gbca^Ww?G>Xs^JTV#2M*Q$Mzm-TCL zI_SBR&bd3^9=f$O`KIRvJbCDlN#TlatJvMn8TzQZ=*ZV8P$66XaX?V>u2zWcNGgZL zJ6@dj`E=7}gwt~;W4$A_O-hk-Wk%MrN=Y_ocIRO5^-%t0aJLoCjt{f^o?_tnRBZPfkj%f8l23N-b?yXafTyXf#EApn4o zPV#N=CsbKUspYX%Kg)x^!)UzXmhzZc8!f&)oV~HK z`dZuO$Q2&zv3%ocPuIZRN#^Fl8J^J5Oyd~?Puty@efEgVsrMyH3tV4;doz6ejJb)K z&0e0aY8g?@$HjP9oy~8v_Kxfqw!EB--Q^v2RTiCAJYns{)%h_?goQ0UV)k(o%1{Hq z&F{Y2ll8R;el6a+@7{4xaIl19FT=1kIt)qQ^f*ZUNGi-P8d_&3hnZiwG;#gJ5mfXz zY3?Zr)^_G$lAd$s#JW%z`9kh>DzjWxpA**+t1Tyogx_we<8J@5Y+ zp8w3=-tqiIU=W`8cj4gV>E(Y8`u|(w|Kbp=Ukm^o2nYfc7#Iiy>>oDr4~GCpfBNLruKiQ1JTzXCiSa7?9_AMLovug03Fr*$sd`D)HqzID`V!{nPq;T~( zo|(cq^N3a|*JR(a8FUt#tip!*fXX%JV1pW`RWKNQ{s@(l91D1QzqKW-OQ%4T6dQ7- zB{G*SA$6zVJQdLV0=BZWf?4IuKD|^kH+~E3C*Y=T<>{gBQR~FDPRy<{d!k4gQZP~kIl3!F zwbf!${l`{mesyy{a|>-Wg<#x~VDPAdBu@z`N=h-hLO^xQqWSmozC(IMHK_t!H#KI; ziC4weo{$^0zmSk1Vnz0u z)QoGH6R13+)kks;8DDY82!{yT;9yLKiwfyi!PcIjGCH%8{M6y&KoO$zbKDGe(5rnY;3I2OeG}y#$%c;S0sV<&OE4({?M9 zi?vzU3xtiCv3h!L|j3@YaHwo498AonO8l%1cP;&nIiS4Jlw z^O}CI5QDOqx2Yk=ixR1`w-(s_9;Yv`QM$@Ive0Rpjy!5o68T95xhOd8lNV zxAgST@Tfy~QYKJto30I>&|@L9H9KMHa{hD7v<}L8Am)smBcg=ZvAdWw2BpG=m$Q+! zR8XRQ4P!Cn6Ofcg%p|WOmMRrz3GXdLmSxx|y#Hgp6dTfdqWU+Kb`9zeVwZ_+yzzP>#CPHbHw^ z?F3mE+iabdNubbw5&23&!Rucot=N@wbB=%xojr{D6;k-5no@)&ve+FM{`e)t041or z>LBV%-g*(+dTy7MAUpB6W-?c`!1e5`b4E#`dP>Oeu^+pEp@YNi?)T94^&arG>2>3V zNHazb3;tju{pQk$r|-jJu>FTc5=`Iwt?Lo30}EFIvUx%$7k-MQGIX<=*PtbIlm(u9 z58}7+o!?*dNdEBoF%%wTRuTtS)U?ZZw$WkKQWF$@Rvj(yHqNBR@#WuyQVkE5vr{YXvaCW!Ach?eIMyUnn z-n#NY6a-20lbE5kL|q=TVA8<)b5dzSE{?it4V;BDNch+bdg}vO~&kDw^_Af9iDQ*f@MRl83DgxBLh~r~ggo#oEtOd; zIdHo*C}BhkC`t_OmroExDJI4DDy0BC(E$BBO+prg0K3b)d<10idh%3T$rR;N3vNp4pP*;iKDpp(~jw?eY z_lAMV9xz=hh>ElsZ^bc@tin3d!~HSfD&jxNpWsjUA@~*;JNE{p{qj1}W!2Et(3LN# z6d$lFOm9E*3Bb9YYPF(FeTyb;YHwhx&0Ko)V#~-_&>|C;HWN`*6E4xRoUiV;x|mO1 z(xh~mU`?!|&175FWGDf!I|{&+IoJn0_P^@Q!$vOh+ie$i5KZ%nk)lU|zW@Tz>#``O1hpvfC-_|`fs&CwiY8wUba znXn#dF_oThNv9KLbAal!LQ$FA+~G_m;?68f-Ja5370F%MmMn3uq?FW=C|n~cc%MOs zZChOYGFS|zJDaSF;e}Www40YL=Cj(3eHWQ@1`o?k5Zjjytm{7YQ$FaZC!OR)!}6s0|Y%- zn{u97f0p2T;#^0ZTwU@~wr$@SqxooK5eF?LE;uYII3)GY@1xC}r-5@y}{aILmdfL!uDzJs)y2pW(E7hw@4dnke6>EF0fxQ;48X) z2ymeb{a57nC&cSXfZrK~us;N8`#Th%M(0*igx=;m{sgBsgwB}41XY$RI!_Uo#N(22 zP_hc2VZ>$o9ZY>4UTM}THBiA8wN_}qrriXFm{nLG0PCT!fE3HdRzbj>hyM@%8ju#&E8!-_VZYs2ye zgj?V;B3|>3ka?Xma>NT{&pRA=uweddSO_ao0UV@-un;!lKb8E24@Cd3(=Hhj;O{XP z@TJZ9_aXV~w2MRpiinKDgvuzWXyD-Z&++z4X~GZm!D}ekRFkcRs*S7lqFz!<`7vF- zdM0A2ldQzjMC?EW_Ke5MWpOTvti8T3voEMoKL?p44)J>qlH4UKC$3crSdFxHyrJ2? z@h+A-N5rzJ+JP*@k-AFSf|*I?42`8a8J->AQidGdXEYRyESYRtH50kGH3oKjO-(R%e0Ggmh$ z+X`7lau<<)TCuel!@#jIn5;<2>G&r=r1>W42O6gEpfKO=&s>O)G#jIJhYKCi($FD% zK9V@dR;iQGh3yjj5jP(z>qSlBK2f%@2A)-SO*4%vvUkgW(fY4Y0s5tA`d0t~Mgl=b zL?L1VCHzZkL*jpE4g8nZ?^02eg;A8XN=;%e#XQVhPWV(LrBm3He)niXA%4@@a74y2 za7Jtd1+~Q0OVEtC29&*46wlbg2e`JVL*(HJnh+$$hVeVFmP5!R!p+>Yjni*luFc^Q z4h3s2?3(VoK3*oxWT+f*6!AvEuLRx53+a^R#GwVF%*Nu;tFS@FS* zkW0tQCn~ChX4#X>I?Cj-y2S^(*^FF^)9A)knH(SNZZ*^94OpRm0!VXipe!!Vxti_$ zjV5R)n53r5u2+48$)n<${Jc2)K6Hqn|2nr5S`IlG+&i^IWS=dGc6)Yg>8m89c zmVW{~{NXxNpZ?zb-`LMIujjrg&1e_emE^LBEakEY{gZNBK3hg&j!sUIt;(P<~Ns7-W`b5SdTd;&eQ?< z3*whNr?ADimW1MJZA@22yv6Rds_*9Rub;gd3{gIUG!CS$ZJ|KE3qte+dJiKFH)1;_hsMft+P4e zvR#ZOYn6=~{Zp*Uf6j0*hO^bwg5?M`4U5L=#|F6!6M4{@vy0EsMNSaZseAA-bgZj& zU~BfBb%!i-aKR_Vt?F)vETc#ERx_))hb-fV^sPXnO0z>S3PInulS4z@l`(ar&MCe{ zzj*l;F7&>JOsy8HijRZmMoI6hLC*Lmj5|58KOSSXA^h_h`{F*HLGH^0Yl+_kb1J`y z_8_3iq>TS|^CRNl^kGJ=xcz3F_#TA<&aQi{-qy8SE9LN*>UVG2PHp6*SNEDcm4MAo z;e(>g8U7D)BEfLffR`Wpl_T^#$sE-6Rq$Vn4t=|3b8@6^uLaaqC2cb{Vto9w9eb;2 zXga#BYgOYk>^>*z=Iv^3I<)q<#%VzLMrNHlm}ecKT-Z9aFxg)asb3&)4SNy#05_tJ z(EGJN9jSQ;A2LG_MuTFeaH8KBR1q*wS=t98E=wwA^nTV*(*;%Xf|=% z1dT=8y%0ER#s*cWI~MJ!8IMN2--~t8$#mM6uw&02Q}jeX0R`_F#CJIBMQsn7FG3xM zG~3WyV1sS&s^r%h9^Hp$nb1{4{iLc^Bv<EPoaIxrVSlKN%FtZdzTGh9 zS?0CvicrX7vLi%r3e}=xv1WKAxJZZ-SU8w3TlFNxordiPX)Nlys6pbGKcojK3u_(8 zp+Mqz)B#)>{tpsxw~DA&+IJ$OHsZ>fb_Oby6kn-5l`%KnWu6XVU)>$V`1TK*1inT- zF#Vy_-P#UMO%Ao=eCMY`6wgJzh?^weuV+Hy6hKw8Wq-{l)Ov_knSg^Tc@KNoMe3(=G;J1zV6ob3uF z3laqmYCoF=>8!3C84HF<5DwmQE~Pv#N3w*2(M7%BCVz|x{`-3diHqiXsnNukcr0i` zvNus8{2^r$ic%6{_PC9$Gu*FaM{-d_T?X{tus`5v(@=@i!I-@v!Wjt0okgKynd|69 zBBsGsNZN|?Gd@+uHdA)P{t?(f6z|7OZ7>2|lkS1<)rK?P>_2o_GIOnmb zkgtmSq#WLO*Hd`YnI@*CM*R`%?T~gIAuVS*x3JC4j=maI1_PI+5sXS_()ag`&ZQa7r%LTrfJ% zUL_0qj>#(1zKjD1orjOzN-$sn!@^+)<~W;*7D$-B4RWmWTi@H1V%aK=_O*2;guTym z3@$vMDqF?JdU2w;aU|(}jiBK(!A0RyuF6|B&a_vo$^m`fK6lt>%M~Yf8N_ax?J8Bl zzDaRi!Qp&Ncj%TyHnqUxuu#ud`4}Hd4EC(nrtM8 z6V%qp=9zjXL`h_$xN6uX?sv3fCQ-;L*55p=v;t4V6TBig>06o&2_3rY8$BKROXyF5 z=W(I-7B_KANrFXa_lZqca^W;)Q<(2Lhxzv3%o(fpn7TG*IgZ()sh!s$uYS-*VHG1a z^ZGCVP&bcrO*6$`*|qRe1^kojltI!DtcZo@h+8KqeB7MGcC)1 zGi!G%9yxRlpE|f-q9_p?>G=&ft-zBZ*NvZ2C!T?RZ~pi;DFz$ z9mIH*EJ{FHX2C8TnTXv=1}?s&9FCTSou#uBiE;Gd{;UJhx05Cg9W7{-x%DT}Zp*m# z_;vYs6qgHZgyJJundhfkCfzZe@5F;>wP^cF*9My5$Ygp4CTbD=Hiy!uLcI8gYzFh7AFkI9ukVaFHE4LOLl{}`gC0L|(-W>3 z*?Ly>W^Xv0?0qO(@xy#C+MDYS?_*Qjq`6`X8CcB}-a`q6CI8XD*fP5*4)oO$2#)7i z@Rdgg?*++PHZbRb{!+s~xfU?1`tIOO)bn7_@H1-i4t%oS=$Mslpy{^|X|>uHOOn~V zd0+s&?Yp?97B@}0WYaPZ4#)hxj-z4gY^&VeKIbV7S@coHpjqfvBD=EzH_+fIjTSXn zEj3sLZW!y|s6(A8>n=80$fAg2CL}W#%a`;CsGSUt*-8-03^E!l$=q;|F-%6+)Uw;E zVMkxwWK9FIUCnE;(N=b}T1maM+T^sRFFvs6Da^-CewC#m}F~-h=qTq;2Lgof3atB-yh)|ApdmVXXAk=sr%UA{6 zsfUJe0p`+0hpE}ji>TT4uk?e}P-Q~+OT>cC(n7LF3PWSBW~2!WL&DKQU~u*1`PSPXZ0AU7Zy3d057k@Q90;rwrj>Z|;}6P7Rb z4wfzQ|5s`?H<|cZ#NcI+dDVmiSK1AZc3Mvu#p<{(C)hB|h|lOs^F;fA^ed>Tor@rI zI{(Dank%sIx%vz|`najW7iqaE|mH42DRp#|vlyc@CG!xgcx7NG#iK zctJM~l}r6{RO8077M1Y2e2&a?e%YS3^i03ugg!ke+k-yY;v1Gk&eom7K3TKp;E+OIrWW=&4_fSxf z?gn$GarMUMm@V1c`7pTlfDH8+ycsuc{6i;sC;VjiMbL?gn11XzFx<(8fIr(7;vaM2 zuSDnG4fcE&y#8(&zn1eA72Q*!xl9Z}1J#xyriy0)~crX5h`9qW>Df(TKjzh zB2AarpB1lHT(Jjg`I-D!t_cVxA~}Q>^zIw|O9VXg<-&9o&ST?PftEi3eOUH>1|myQ zr%2Z<%DA_-#ammuh2SBVt4q?lz;!{JqXyVj_7QMU>kOKUuek}6N;q3cMJ@;NQ^R0~ z`OrL7jK?6|{GIBy7G+$X`V;=nc{1#U14E+V|BuLV7#D;?>rEk*vbZ5LR5vT%7JB?x^i#5Uqm8!BkJ72qfdT z2Vc7ru5@loek~3{T08yZ5NXm3S!~jD8a%3*2xX#PG6;=VVTl~qV5GW^ANBb)i=Ezr zP7@=VZj%F5AE0u2)LRi0NFcZr4AyxJu9;4~|B5SG@#G(W_<9vt>U=9V2xPKb3kKVU zNloLC;W#-Q>=b-EV9Erelmx8WWPadzSgRxk6GP)piK#6%B{9)d7s!`izr_p~U#WfY5Ff)f9+LCR zDfEG18nHj_{DPDJvBN0)3DDW=2xXac z8MKWZL|jKv^aHY1_K-COZBUh{DMHDpuvBz4u4c0N1n@&W<$aN%HiF^uS?~ddDz#@Doo;8N%|AlPAuj%b@Yl(RM(&yGg7;~x*4blpSMo#>}1lYYzrCF6Ex zr%l1iAvUA&dlLF_#<;uCZN1vE-VW9=#EnKn z*1W)H(Fuagm{`|xoR`@gXF7RWxg^nZBCd#Nj~HnbN}_}#Lc(rLKj%r(JCj@yQqRN)m~wG3qFGtvWfkrx{x zvIjd7@d%@kIG;1lLpN^3GKb>$-QXB)z7hcO4V2x!jC=O#vouZ*oHJwYxr1qKPa-@I zWy%D@z_cTDDWpSQJxjUvXf|RxPpXwQyE%~6JlW0!Wn}b%@9i-CG$fd*)<3Tx626d6KPo;25IGU~I*nvTm8dvR>+{P|&a6oZ0@_U1~X~@1O6H25fmgmym zHx>?9_jZBvOWMN9Waq(c`?(C@?`Ky)>GP-4rZ}D3l{%jQr34qVQl&?Fd#6O~aF;H( zW0jmwz^Myj$$&w5+Q#Y7^P3PZSug4e|sy>5l(lO5E4`uUY z_H2>aO2_yl51#;*%T9lsy$GCBG045RrLaca-#0YnXi-wA2Z&L9))tm=367&^vs*3! zXp6m(J8^O3hV-C8-wy9P=6aXexR#K#@;hx*fzua<6ttoDPDLG2RH@htvQx8Sgee0a&eNtTm(^e@ zT(^q|%?=@K?ET{sZm6@ahFhwl1{{g?P?c5g1QLzx8}i&*P8HoWB&A#kIIPZ@N7-4? z$}|{VU=9@p;d%2%w-r;jC!E&_g9!09NK(R$#8{gWuv~NJS0gsqJy!UdEPU1z|U2C@KcnzQk9iz~D zojB7pnXLxd@h?j{zE^4rM+KQRRnbw&X44eU#x8QMN zJoLG?Hpxw1bE9jvRNrnQskTDVsUEu~B*sEy@!_ZFtWSVH|C$_@PsaV^i<$ab%A=|8 zT2Nn1_|zaBq&viw!duGL#Q9sv{c8!&YsN<~-7o^X7SJrqy9~A=xGLX|vg>;EPkTU~$`F@DxcTPW8`{z9G*xCf1x(?l*%;!nKn4duVni#(gtu+qk%j z_Pq}lgsI#ZpW(PQgG_%GPIyCYgi8l=c<0l>F}M+uL+;bKe0?1AHYqK7L!L5t&ZXS@iEoeP z{?>B(7r&{nU-c*7&@yi(jvdxXSuVGYk*O4j9xJJLRg?u7TcKAxSV2V>sVkq{f=2`# za$;~+*rUMy!A0^oI5D%i}FnAwB`3V3$Zq z$r)u;&|f|(T@L|0W8wS}yzV(-GkOzVg;QH3;~ zwc#tW0>6Sg+(dWZ$il%4Bd%<_RA;GzQH0iZF)(r9KX@?igqwv@sR=%E|7i- zoC|8@kHFCc<&B&dZ&mO*rcS$hFBzn1ycHf)Lk3w>-9VR(pIZAT#e}HpA~)r zc0K_c*gZ>KKeeztr#L|V{BgwwUVgyQ`+z921^rc-{F^)N*qwpHzcu)ylz(eTA%HS_ zK1Ulrct~qmyKva^3iLf;ZTI<1Jp0dK6>ZVtkEhIBVge)lL9hh7+EcA`frWm=Q`qDg zhVScLrAk*vyG47yQsvB3d!;~T*W7QOjAc_K5rM!!y%;eEpiQA7x`fR#g>tVeepQy$ z2d3JTn7Y~`m3;#8!-LcdE@@^TQck?(=D0;JQJVjIhWrysE-~)!mGBAJoB1+_{o^7J z_-iRf{4>Mz{}2aYIS$}C4klR-WLOUncy7>0aD7iVet-QGYVyyqIF6ik1gGAUH}(`> z;Uv-IWEStQRfa%*7W)u=Gt$VkO_^V~9|Ey({sgeWzy0;-p~QKKQ8XqNuE2rQi4CfOHs9R_g!AE@(Z=C1=P8PY!@=a-@Q%P#*<_$zxNG6@ngep!ee z9ljSd^!>*qkND16&)~x=6CKI=gwPy)WM0S?26YOadbhCR>#;Jlg0*7mCF&tEx;pwn zBJYRZ0rQ&xR~8^^o=+lvQyG2Vo4nODq2C$BkN zLwn=CiR1<$!!lO;&$W8x_xGdcw(>{&^cJsNrqLQ1lRI#Oew24<-D{$T>J9T!Wy2Wu zla)UVdp|3^eM8?{Nh~5i0V=x??C_T5=ALkeEV(ek1W@(3{k@8pfh$-ve?9>e`s~4@ zXFfvH-v{}J#%9*-c%~k4#RALq1(T zLg0m>Fa5edPgCs)wsd}Vz$bdsjY)VPmJDtLd9GSTdvsDl5YGe{U77M)6_RQPFTPq3 z{#JE0wY^oxsEZ8e5wcf8IHAm3b1!z>yWu`Y7>9N+cHR;H0$27NbPtZ{`uyC8M+Fc0 zzNy@pp$Txv-0XcJMoI*7r zD{fYl*HErz7w1LIZyKN^&OydD1a!Og!lC|?Q`#DczS#)dh< zy_^50LHV*Y9daS_+FslNSEUS&IhMg*b08k$H@eHK1Pqt}icA7;z252Z*UqU!c9w4U zkCLPAFM;g+t%*0cs48EwNkexNz)!l12Qi8emZCQ`DoH$b8Upglm6Cxc$}q#m`&Z)m z{NwG>(vgWtRiRY@za_y;=(Qk@2+F$Stxp)ow>wz;K$f{Xsq_+s(9g4dT`iWcy~a#* z6=2lHD+5cE7oU1G(WOf9w*?u$oJUMzt8&ale8yF~%y8|L3xR~9hHemW11WC#DELo2 zE;zoJfp4*{d;^G16$x7ZU23zoFbfhjS_Db@FrMaR2*YKx#j^-*fLFbRK4bcy@`j6* z3~Yq-t{}JkjD73M8+ysnly)WN@W5Itk~Anop9!c|3)pTqzTZs5zHlkHnH!h5o3#~l z#?1TJp)9D1Y1IRK;_n%iC!O!G1{ffT1V@M%i@>f%pi>$jS$$^n&_61B(?J~^kouh# zXix{6W$l`zcrhkh63MK0t>bn%&E&KP7ig?o95E|*tg52E4tEF#XSkbcz5TjHy3|X$ zo7Ki#BOR9lT?-X_Pb>8U@Yde#drHLbs}Bar&yx%5&lH^L^m~5k-^#y_RpsdKrIc=W zR{3qIcli@*KXk>vj04#M?wH%Q_f)i@0v_nE_|<@qei5m=&Md-2a#-i|wn=1@qp7Cs zKp6 z2qbhl^?1!p8_ELFk6$<7SAIRsj#+OJl{Q8y2}DOA^{5Vugidyl-@YYP`#_y7o4Hd@ zb}${K6sQEz^p6jKc5+=A3>o=dA7SXLD&PO)k6oFSgerOevjGXzy6dulJpLuvxyPE( z_h>AdH`97^nmJAlDn8rZ##Cw%ASuO~yp1Dn{T`=DILVE2kWEx3l%5IcYEvrQiqK>! zcj26D(^NXh2yP)*Vvq=9+RIc9JSC|99@Afu2L3yU^TbzxQq>7rcaJeyV7(IPSUeA@bny4;-*sz zjG83Tv{+ijz()uu#ZW2$X{eaN09{c7011@mbI^~9G$pd3iNNIOuziidkfRUqyIU#4=MCo7RV9kekm1XCJuuD7K1$!KTl z6#gW43+qnoDiEXgD=WLXztf8@VVp9xoxo5kTAiIl%SPb{W}I7CHt!hZa~H2BbZVo? zg%s(KErLWHw%mXP-e^}+c!s8Vua++E8T>MZgsbdTXi<@AyFX$->Q1=fiP2f3fHv#C zP9ff4=O&k1zrGmaQw2r4qk)Sn&{ZzvdLO_~6>*_TPS=PKnV3-8 z7}Kn;ecTDZi#uZ_a(AEjCn_pKRENr zE7`;a_gf%a>YnY!%F~cNf?52@$v66Z$gm8FuGlM0>D)Ha2V8sY`XjipWT?=XfjR=C zp&3_XhNUV6U&MD#|I|pAqV1#$I7U9ClwWJCF#He`vZ~l&3VQ6ig}NgQp<5RlgkNPI2odfMc1%7<^Isg zJ>-2w{$Syh>DZ=nZ01U}&%|yRvjI_jYI{D$V`UJWO?w->04O?nMAnalCo#b0mI3+P zE-#8oBX ztX7&0+<2lL@fmP0s@q)-JV$6DIM^^;_jEz4&PJKie&`jSY1vd~&mcUg$4GM}Lk!5V zDJ_uUX;|zkpr_7`;OUQWz!ZhSf^IF4rgC35jnlOoLEz#j{7oMK4!d)@>iF)GaJ-z zJA~V+KL4Wu^eQY&k;7efs<1sGalEhxa_!!0+PEFEMxTEXZKPFzdvZ}F1KsO=l4h#y z+eO;SA;OgkT(*$G&M|IwfPpTPbHMWNFpYed;O&o9XDByiTe#s48)-eIg6DJ-J+w6( z#jnrHq$uqN0YH@#8>HMXu-Sf(0I+}){BQWDFOiq!XgG-lyK+E_-(3EnUgF;GtHPyU zG3-+lItyRDYcAK-Kow>Bm(WCl?u-_DsN>NkBqp_`XGVLU8CI_aMA^}1H!ejIxZrTt zgtY#SW<~pv-H<#1cyPY^bF5ECuHO&ZOpWe;rV7i?#94C=`IFu*b(gG!p$QDB=Z@lp z%O9twKoDi(J>9@JA(QswNZ?=}SXS=L4#70TzZ-SU%QWAVch|UCLyNXMTTJMVa-VC- zb|DLqIgN(Li4`vjbhG6orjVq1NV(b6R{WSd*(C$Cuqra2z$E_ww7z>RJbi1?^*I?# z9i!FqR1xmUBN>6rE@D@mdG!xE%uw5A$yqa5W*d7O>Ml}$+V_$&5V?a#Y&MA?9dO`3 zv3vob_WoxW>tNKn0r8P$2EMcNoY$~xk^N10HC@k&6 z%M*hgL+j>U*-RYD(rZAK^CEp!0>sIf?6li^G#8$>_`;CrzxAk4DW8j=!5=y}x(*i6 z7cksnm+x85i7zc;dMo1x)U%V>DvuQ+8>Posjts&<80L5VI%aC+WqB89{%%y|4xGo~ z;JcP#s*vJQCozOp8~U3BNQO~Je^L!L=KUj%O9<{AOHRPtD@ttL$&?a(fKria0Jcgz z=rxLcMJ#^}KlL{YO;em+k%)U@@o>weB>8Je9s|-b@AB)Uj4saQrcp0*c?x=s>Q5d- zGD`(1MRjMd^ybbE6C2zJ<#jk;lF%1P4pLYak%bBc^PdBKtr(e6jhluJb6(s(qG}NV zRuh|waruqVcK0^eOP6O~zSYC^)XTEg>ly}SBz`E224z7;ncvCd=lV@w+CKsKb1SKa zEf>!%(vzKHtF}r|Hb9rqapDggrYcf(UdhyDPvNtntr42mV2p~6#FbIHEm_vgNuE(L zQY}n}&e&zhV1l~DikgP>p`(4q*CmzLRg(qZ9l8!>DOX?2Sd4T~XPHeWR!Qyx_M-um z0662AD%UBEF&CFph)O%T+cZH1=rXTOA{wB|4QPOx-x*URAmRdS{gG$%pn2}{L)^?i+h0r ztiiL|Ga5HyD?>I|2y5QyG0vvpkB)$dA6F&0c%N{F2RjumTaf~;#y$~-#gQsvYlh9U zn|pk^FR?8*hGD#iuECsclgA+UU_D%xK9PG`#CTf;Egfr}8kFK<@8lIQvt<{t)`+){ zEDaNpG=Oo?_faVx@R!?;keX1pq1x z5am(vYT>vjD1xeB@7tJ%?EEkx`e!xDxs+lMFnQg3KzFxe(izm)8KY9IP}mup&)W9MWi!rR=1d5?O#8 z&r^)Pv2Y4SFz$qYqe-t3gi91{sB&9EvT>W`KXfibwB2>;9}{6UVo3&+UU#9> zfwnnes4^ar#2lJ$RG!Nj*xQbHKOjQ9j^wZGN4*-!)xg~E$&R3 z=s+aFwMKdYO=yCi$)qHreM9{?cSILp6zPHzonqaDn$Yj}9HFl_)G~SlH#klj*PJ|3 z-QI1n@*!Z*lF+CMC*6PkNKbzP0^?sD+EA7v*7ZV8fAf#-8!T~XzXU>yvXwzQAB+Jo zDI=ryO;11pR0sZd(`T@U{3wtZLr?_o-7)0F1W#daZ~4$_DYDnFnSO zGcVMx4US+3;~a_}Q(TCp*J|C**?59P+oX)qXodx|hQ$O!o516M5c`Ie2{&ktgWOTZ z{E7*l9blQVz!1$iSO?C7l^SiQpx}~?wb_|5YtXzrU8lhNB1K(lO@58LHt9kHz=5%7 z|K=s;UHq%0w!>RPgez9H&dEzVVS>W@a%; zuMTi@Y0x2Tl%npujPANp!woZ6o2)OYlTZS;Z%Y7IVTf;k>oa59wHN!bVdmFBB$Sv^ zr`sD)n@olp&2+}tXrkWn7PNeE0BdX(=vx`Y61}%1H)13MTGN)F!7V2F(5!5NZ;1B; zEB4a6!I+2nP;(3o3GydOSLt;68aOO^aPSr1TFg{Any|s;SSJ$vVE)AgnpCuNQINt) z6eyQtdDjrl#)audaN`x+>_MTl-j&XC9KpeRh$GIS}VC2%P83Q<%?OvHC#Plm|5G*?1rIa~Gp^N7X&6KVsM{Ev7|su<5j zaSVX7D}!>1P!e!`QsZ##{bO=bJjx5-?T44pI%AWn9;~B&j zz{L-{u{F{}v)`x0HU9t-bg;E|<395p6Z)6Sz@!wEsqy1 zF6Ws}3?cw^u%m|%7{A)n$!6#W!#Wn>y@#Q~+w=X+gH%UPKqEi^0K+}GXhtwP{vGO8?Cq7Fe5k+`4% z*o9U4LM~R>$LW6a3q>Zh_d1L0e_;oN=KP$@tFhsECz}i=KRCLD0tF_Vd zI*9#3Lb@mv5CXg^dVne-i@>$Vm|Juifvb#kwXh%>WbX&Ia;+!p)>GZ$E)Oq(e0`gY z*6bmCw}z0F3@KDAoCWxd%Rq{94QaXEcW62wPizuzzq;4W)J3V3gv&Oq_D1w=tNYd#$z`T;3>E%}_6Fg)F8ALdK=M4ISycuAqqu%ihxW zj0QEz8HizvqR3uD4M9iCagXC*3RhzR6RuJX;JQ7j)S?6_5GEZpzM=as_Ymp*d!A4A z?r@LU{L2{qe>43*`^B;Qequ9GRbKBfG9{_lt@I+_=FP>BK?LUi0P6;_H6X`-+`nl3 z`IPrRzcCG2?fzvi%>HH=Pfz!NS$xDm*R_4mw7?h^xmW=E!$j;{gEjyu&5k8&TBG{^ m0Q4EPA0__)!OnO76@ML7RaI42PsIS??0>>Y0Ks4UIse&Ezt)}r literal 0 HcmV?d00001 diff --git a/img/scenes/3.jpg b/img/scenes/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16de52e68817086c02a7b7328f170ff79e7c8589 GIT binary patch literal 16080 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 literal 0 HcmV?d00001 diff --git a/img/scenes/es-default-large_scene.jpg b/img/scenes/es-default-large_scene.jpg new file mode 100755 index 0000000000000000000000000000000000000000..0c8b30dbe1def114bf933c4a6b0d1b58d2d16bb0 GIT binary patch literal 4298 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 literal 0 HcmV?d00001 diff --git a/img/scenes/fr-default-large_scene.jpg b/img/scenes/fr-default-large_scene.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b68f5ddca45ffac46d6a9eef80ec6a6feb09bfb2 GIT binary patch literal 6215 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 literal 0 HcmV?d00001 diff --git a/img/scenes/fr-default-thumb_scene.jpg b/img/scenes/fr-default-thumb_scene.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91d22f97f0069cfe5fb63f00e0a69c0a57333b7e GIT binary patch literal 1734 zcmb7EdpuNm6#w0OXUt%RnZY!|dbJtkEw98--jP?e(Q7KSvPssX?S&Fb@-C0{Sej** zB*m7=qev{KC}AiiM2czTRhqq{^lATTKYQ-E_jB*L-{1Xx&-a{j1>J%HKytKoumunV z0E8Yuzy<370>eT_4TCxskHumzSTP(<1Wynn5X8mA#fcIW5>bLIAudj$lE_lhGBPp* z$z?REG>sxHBQ5+0grI9MSWzriRGKJGl>Xl)xDCj7U%pAF@N!2*huv@U}z z)c!pN*IJPf3)g?MSqb3sSC}FTpJ|3yw!Y(tFkGI{kpS(NcTz1a0G&ip5 zeKn&4WzGX9d&=+I%v9KM40y#E?eq33k?6jaL)Pel9K0=0{7@@jZLI&Rez)JufG(iY~F^CB6bAk{| z1_(t;Sw+vvO_jmK=<2)Y*BiJVicBhh_BmYDzZp z-K(GPvK_cfr5X)kBYdr&dg7i({V{ zS`{97?C0Koly2g}I5yt_{VZZu9vl;{DmyASRjRc=&BooM@c1iYX|+k1J7ORB;fT;lcxX7tocscgWcqn^q0l_ zP(ky#q@RirugFY!2ckN!jM$yre1jlmuI%r8&kkE#KQPD9=O$CvGGAcHM z8L8_Ul$2jyztmNh%J0$@+FzPBf#`}o^UI82C4MAPB(2NQP9$6abw+tiF;wLUY0a~_zb1r zEX%csady^}cpApe4eBvFxA#p^@LhdkYO14U(!5Vpf9`eB=IygN5g9<^*51-bJ|PC( z8;z-C!^|u-NnCvVz0=yKSG-g(j`uAL4i_^E==reAG;n}sa^H4gGBtM3KAVWa6Er5n z&E$ARRJ_#16xlKF9XeTAylnbVuX9s)UiRL*RjYS2iEitYs-G*g^qrW9Qc-B>xJAg} z58Gl^#&|^SqTord-t1f&Z6Fkk#ODBAV9w{5^BXWqlERy}POE~^M~*qT1JLU?+Fm#p zr2m?WMS!BPO32rLpv5ZbTDb*9GV{L_h%^~!oYgiw$v2Rw!oi*kNcGlE=W}14 zcf|Ih#NsV%jTvjI9Ve)EsPPw8PtXgl71mJ#IauhTNA8Y|9bX^Hd}@$*jYY$&=;;q! zUBjpCyqb9i&%P7x6fsVe(S7io8Pc3*bh;Yv);~d@*V6JC&*)ZVdUcNV?zi2G{Wp2D z&D)O;4Xc!{ds#;h5iRLg&=P=65p<-{(Fim zZc{_YcN##3m*Aqzrh7&fSWh$j3pGnJ!+fRi)p>BIJcwMKe;J>sJ^1!cy>Xtlr00Nr zo7=qN`ptDfQ>}unR=CZoJFc^>)w +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/scenes/it-default-large_scene.jpg b/img/scenes/it-default-large_scene.jpg new file mode 100755 index 0000000000000000000000000000000000000000..be32f833b2de480b7c62788bfeafd2974de4df56 GIT binary patch literal 8770 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 +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/st/1-category.jpg b/img/st/1-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c85876e0d5e60e55cd0d2b6b769408ede924efc1 GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/img/st/1-medium.jpg b/img/st/1-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad01d54a345ff630e031ee26adce3a5e22bab615 GIT binary patch literal 2674 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 literal 0 HcmV?d00001 diff --git a/img/st/1.jpg b/img/st/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b45eee64d8a12615a4f9482980b71ffa24f950 GIT binary patch literal 8072 zcmb7Jby$?&x}6zj=on%E>5dWUl8_+=q`N~xknRBmk?xjG3F$_V5~RBu326|JMnH*+ z=XcJz_usp}{m=L8{k_kA)_(U|d%fTN{QW8bsvs*b3jhKE0N}#|xL*WF1JFRAzx|d>kAoDU^_y1O|iQ5|ELTl8_UTz)1cE z0ir#81BPHhAXp@LICv!g?{?n_AjAZ?0V>ge3;+-z5RDLc-wmL8SSJMdce(#*5C9q& z9Rmc!d>Eww0zhd0cku5k7y>}Q{|3NCdl-bGK_3FdFKzALbjvZdK)X{mi#J4h6*3^# z%O!!$OzN-J)?InecLgeZ=JM(N>sYv8J8HSch1^KL$4PU>9$RjVC8o-4XFuFrMc*i| z^-(Gs#jBL(t?bT?n6mBO8l!CzviZ&mIAt#zJ}YqB`j9VJ-4Ct~oE-2Hi_)o&<}lF} zC3c;0&&?eB+WtJnD%+LIk?r#ug!84HVX5*&YEy#r=@wS;aPYjO)_6LZG@1G5E&~3q zziCB<;AOZ23-xkkZ}d~BF&>FXncPOBm*jqR^W&GUx=52jRz%=4bnV**oPNc0ue8-+ z&Wb>R%ZT)UsXl$ws2}Br>$4st(0?XZix<;8G3C%@Dl9U45|XDe16Z|57v8aVmz~yO z$RE*~0w07ONos_gon$1TArkkl%YMrP4~Rb$h)kL=Uo0klvLxK{^mLSW z8S{N&J+E2B3A`DBmKwNl_M(Jj};V z*W1U7)(YJz-8=$aroPukeRZ#0Ln|9IELj(*_wei4XD!|eAo(1^Wq29az~NM zT_y((X+$rQQzklw$Yy=WfC_}2Ug3~$#6DswcFD!ki4uv|in4s&WE88~IVko-QhmIN zV(jxA|Jgg%mrCLBwZjD0dCz{+PB#F$IMNUIpOew|>mHS%1UM~9Tq)70bbhv7l@ZB% zFpZAHUDyV+dX#Z(a+gQXwup1YPk=@ZnBLgM#4?)6$Dw9y^uNC5%t8tHWx94Q&tlNJ zKbafYhjh zmyo^E%bE%Q?ExQP)En+=ZDr-lN@zRLYcen+e+&znVfHJ+4=Pko@K7>Iy=w2FDZ#x#4hwKQmOL2D@u}46!n7Sv{UpZSs26w&FT9Wf*v1BiKC-9;}>96JoTje<9h59~`%?O+`%M(?^X zC0f{t2c8i&G^IIIE#~M`*6K#cTX=?xB_vGMp>)NR_UxbGqc}5iew@z=Yc;Eq58{cP zWg1AclbcMvA=5A`1nUhM;wjSkv_vKOlDH@>ZDu!RgUW;7Ik4L?v)M?M@Q}5JyGq$a zW99M_$1x;Sj;Z9*1({2`-YCwV=0x&Y_nyBWVRfo4qxqo4{sU=}%+bl_1z5M8@(#bf z)7f_)4d!b$cb}w>N0F(|sk^${t$AwlJ^u;!(w5%{W03aRRMI~vV_@C$Sr~67LbVj4 zn!k4?RH_7jf2TUMMHV!A4|wHN7xVSu{4x;&Kp-IaL0|qu;y@4pjSx&kOwS_;C1K=M z=l<8hec*8k;1v|XP^qMaEfR~cNOjMjNYQgO7r(XyPT{(Xh*R^(!O1ZHLL&gRP=iN0H1VFZp3{CY>?OSPwk{qID$qbpRhN z(LJD>%$~H)^y`bao7R={hq}K5AJMO^RHqhu$hLR4% zlf)FL2>J_E@o!!aFGHf*aCdwUw(g2Ehkk-bWOj&8Xx(gS@$No6pu_%v&I7rDz!?A0 zHvkZXMo0vvmn7zak}#Mta`W=3YsCKxBG6xm7CWNs-Q`~3H4(PQeYD*6|St3=elsB3B)7-cCen6Rc+X;!Zp7;myQXrlKN z1;B(kv3!&wTDaF3}pjT>7DP8xy%LlONuUq-|um zqVyz`Z(7-0Lw%~jcvko%HHqFM(>T2K8+El(R5{zme1gw`xQ_Ub{-ToLpRaCMh3}B6 zbMcW(X&Ri{T!m&0(UIi&Bo>G6w`0Z?u9HI7e?gFcp!mPK4Z+3*;rt7Szqp3)z7wO1O=@`=x4X zl<2b17f!ZqRPousaZ=4I>17J_b){Qoljzd~uTJ#7?%)b0hc%7*BGy3NDNmwGZuL4$ zdSVkEvd(3#zip2xU_BmL)6z4J{FsXpaWj~Fen^7Tv2vQJQ%)G$nSb_fvgkCl z=Y}4W77KKi~dqt-@;Suqo)~(%tiZ#{(4ahu?lsyLpJst4qPSOp{>iAo!h~T5DsK`iamdc*ssBGT5@UxdHLS8z!Q7G7j#c>rj26_oMnjmTfAIUgkAccEy}7w z@=CbAz{m2`&8}J9#mvraz&7yDJz&~MZ%zF?Kq&g;3tas!(S;%E3n`EMO~;`LNOe1Q zFg*D-s|9a=clTN+REuI2No+*%5@WaVPco_Xz>?8Dzzc2F1^a63re9|aMzDZib(2sK zDa~^?Dm>tPQNo5UpiX9GoyBwzCrhcZ+rKyFuN2d{A*LVCNy7Gg7wjq7%!R?fFBfcG(BJ$ zTakKdn@;Qo;K*uJrT;d^n;c6?yT zP*r{I!7+@RXl`p}l|MeAXUN95>p!`=5^nI!ea=^gVe=NXtyyG7l`<2Q&xVko`C5o*Z2z{dxcy_-4)f{@m@-G= z@*BH8%A3aYBlF$?JTLf4CmGAW5{>!f_OBUNofK^=iw#x+0z2^?$>D*8usR3o{Q2`dRwt8>%!t*=> zu|nCz<2qY#^!b0Zk|MRk(r~PzvfMD4-@_`bYl{jX@kacSf~(as){YallQS}kT?8SH zG`Rxk8`=Q?06C`qZ=M^XcZ3q0d^tupqr7)S`>R_hAbDll60GZ|;7W8-v*7a;w5-!f zhbrurXvPsfxc$d8K?+pjM<;EaOqLQkkH8wiIut>1ENy6%>X_ys!8l}g`EKjwfMB1^ zI@VW?Z@!V%-^uB}=C4=?PbMc_nx&HMce-2oSf;*b@C*18C18Wpno{o=mJiD7ZMB%) z&ykI3ph%A{lye#Ra+=(0n?%`NnD2@OOO9KxrWtfUhOhBh%^F*1QN^Su2`39@Sj+_ zV9wrFteCDvv5CMKHvb(PSZH?C!0HNHVAk$abMVq@2n8|W0zhjaRLFtbpYnbG;Es05 z3Mb38TA9vdFJr`japY{}S1WdkajLR+Tgmekqb%g4oj40&bzuOVY@Co4JY|D*jn~MZ zAF=Xu)*~^H&d(ow#2!I>+Ig2@C?r2ekt6z?dbjyz&NjOvqueBlchY0Gvu-h#I; z2+KFK#4Y-MwXQ+!X-4hMtu8%ybRiTLc^X%SN;4`7dm}c8+GwXD%*rB3MeR_ZD;bq) z_;{WtawRqB_2j%u>Pjqh@X7jEYMm_!K^U~d`q-MrLb@~VNe!Uzh`dIc#OAY7GyP`c zpK$LUJ^wc*aX+zMa({D@jZNL^Hnzi+<6Gm88%|njCY87D9JusUEvlAk$-iW$743yz5w@Xa;9=zdw}q{@ut7ADX!bh03x zTMS$6gI+ehiYy<^lRT={I+Qyjbbdt`1$YXC4pA*&q_Q;Eym(r^{36X`sAvLj-6d0I z2f4vz&~fOu;zpOOSHMLqYvFFrJ_KLWiSM9BeR#Nx{;LE9_*=DrqRp+$oChoWNI3k_ zs9E%~L%;C-+IX~o_UwhosEy(o?Yx=jsv)h|2d-PYP*Ga^dw_ug!NwX0>n%sGa2~am{o&tHkdaKD!Nv=$~jqWLf%r|xrk{VREzxURCwcpt5* z7D^tO2_aB$$Ft; zCxjMBUqW3`X8WzyH{n%>E#zP<_& zc=L{KUDKE{c?iR%spjVoy8MpxAka_>h{aOU5eEWR-ewhOaJ>icy?y0(qb0;9dpuUu z{q*^XZ{yv>2fmbCtfBGD{QU=nSRN31@SA^2ng4cF|0ovpL9+bg>1x)F9~{Jg-4ql? zu~aSzv|ushE2)82;R+6m=iqkq4Aua4{Xw}gdP}N`VUq=Iz&p#Jk=*Ym7)Asb`|!c* zruX9R`q`{+5*^Z?H=^gW7n>k{#mLbx*Og0U7ti2+>GqP+KX7}p7|Px8$yti?k%~4^ zV*c0#dZ3#5ayJG!oc9Rqq_c7i@-0^wcFKs}V|7-?p9z5zI%7JSn88`AZ`1MwPYc7` zu402(nP8bkM=J&bTvL3OPg9fFi4HklCfOPWb8h-_qxUIXjr0&AtGu!ab594A zPRRjS&7aW5y_haqZeRCI$+b0|WRQ*L=6^f(?kuJ#M_0~J)fj7e)Is9fDZf#OI1Jq%rPuq$bTL~)HXjg{F5~fx+m7xc^OXVmLCT{~wJt%dho|%%AXGW8 zWO_HN8&UsK#$ z3B&Pb^U~Unn%L=a)KBn)A?hUYqfmtgX?UB>zKyMXJ-o`;TTkc8Cx`Lp{90z=SdE%DR4ThM8=gmy z2IiU-aS03MbI=Vw*%-}In%p=9beE*jZY7JM=I&Q+3ZTaH>sKg+NBr!JY69$RJhljW z*T~kPnbgP9@KD{;;Wdof*UO{sZQ_wZY+e z)y}F7A~IoVf_8}}826(jn5}Wk4&f^qRwc->@gvMbsVS@7r0zo;cEm^L3u1Gu=>aEH zC>&i6s?3C>O8HbZYM|A|yMiwAGku<^otOd8p#a0j@{C8YG|IX2sMPJe2#~>41COIu z>Ed6G(6L&6H;Iub$ulFfkwjorROqMjw*vA?{b1wdgr=U)e?2*0U;na|drW`*ev*o- z4td+Z-45_TlO@gY=tQl#JqmJMZKXcvv*yYzCn9=+-)NX8TNAp1p$U~gya&AITc-o& z?b3-0c~5RTgR`)udXVWIs>V#JOcji4BuKmiP>z7$XocG-c-}OQ4e1QTGi>sE3Q%jQ zQS({t6E?s@tlC!Zx^R1PBVZJWkgK%;Cquv6uPaCP29yYp)@Vn_Xjef~#K$dO@St)r5 zL$|0lR64N#sw>UuwJ#sQ()Ihb@F#;KPygc={Qyd z5O8sU=`!Y;A!c&^fumsB zT{$Ic9N);EE#VIwyP8HQkr(GYPnYDE30W?`HhpivBdfq&Ub4yzru?`Ij+`TUIn5tX z1G(wS(oi59-)PgIVW=>}s*q)WU5E)t1p?9i6%z5u6d4&CsS)ttvpJ9{Ho%(uN5Gyy zUab`VZW*RMv>q`PrXjn`Te#l)r`RX#$;u3pG6NqwgoRz9%iOt8yzWE3hV!X5nb&IH zh?>D;t>vZ6lTqaLnp9BnNO5rCGC6&*A5bQlWW(^x&A1Fbh-h%^rjyDvEMPE835e5P zziPG;3AaXAGqYoju5WU3CV-bdg7~L*$j^8{@Q64A9;xHCudYbVwm-M+&wGT$fBYF~ z>}4Ab+urSOlnM*0v1I$@j8mJ42K*5snLDmy*a}!Q4x#v4brk@R*;LlFlK9=A%IP>zl4psr9qx=-*=s!Q4!U zb=-v+Ts%#=Xttq6GzbzWEb{Zg14VhumhF`{ih2i7A&;X{2L z=Im1@V~;#P`n3>gqZQY@eH`RzzWej;sU9Ht4-550doU;?OLHF=jt4X;Ntd9w2i%HV zkb0>QQWNHdO^~m%i<$VrumIRO=okef?bk$K%7iuD3%!v(ESTlEIijk+g-1Hpgx(h8 zU3QLtYzG}QxdTdDOX=T+AixZC)W&=1M&ZgAXb3bpw7Bhh*=r(NM-4@67}I>FMffqK z&$zt*w{t4cK<}iNC(55f3E6BTzM7P{sDKX`aSN0~&WNU}Q`9P0Vq%x#ei6*8n?ojGGykgKVtN`NGi4jn%Y4=tD#Uw#wrJ27i*cx@iDtw zi=mhM`3G&h5lg=we&_I%Ga4wq(5t+z!FwxgiM2*2ibTbH{+Y8=I(A4Zxc0r8bz3oe z>PPrPfy=f-Ccl>Ax>3IOE?xakPbBAMvPo|r31LQ8$_g$B^W{wwuiQKC_a@BWJm>IB zlD`$i_S%IIM}dy+0Z&<;G&j9=Oz$Xq@@2iE#l6Fj|MU$nLrNfK&X4Hlh1rcdMH2T5 F{{uwqhIRk| literal 0 HcmV?d00001 diff --git a/img/st/2-category.jpg b/img/st/2-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c85876e0d5e60e55cd0d2b6b769408ede924efc1 GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/img/st/2-medium.jpg b/img/st/2-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad01d54a345ff630e031ee26adce3a5e22bab615 GIT binary patch literal 2674 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 literal 0 HcmV?d00001 diff --git a/img/st/2.jpg b/img/st/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b45eee64d8a12615a4f9482980b71ffa24f950 GIT binary patch literal 8072 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 F{{uwqhIRk| literal 0 HcmV?d00001 diff --git a/img/st/3-category.jpg b/img/st/3-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c85876e0d5e60e55cd0d2b6b769408ede924efc1 GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/img/st/3-medium.jpg b/img/st/3-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad01d54a345ff630e031ee26adce3a5e22bab615 GIT binary patch literal 2674 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 literal 0 HcmV?d00001 diff --git a/img/st/3.jpg b/img/st/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b45eee64d8a12615a4f9482980b71ffa24f950 GIT binary patch literal 8072 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 F{{uwqhIRk| literal 0 HcmV?d00001 diff --git a/img/st/4-category.jpg b/img/st/4-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c85876e0d5e60e55cd0d2b6b769408ede924efc1 GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/img/st/4-medium.jpg b/img/st/4-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad01d54a345ff630e031ee26adce3a5e22bab615 GIT binary patch literal 2674 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 literal 0 HcmV?d00001 diff --git a/img/st/4.jpg b/img/st/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b45eee64d8a12615a4f9482980b71ffa24f950 GIT binary patch literal 8072 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 F{{uwqhIRk| literal 0 HcmV?d00001 diff --git a/img/st/5-category.jpg b/img/st/5-category.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c85876e0d5e60e55cd0d2b6b769408ede924efc1 GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/img/st/5-medium.jpg b/img/st/5-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad01d54a345ff630e031ee26adce3a5e22bab615 GIT binary patch literal 2674 zcmb7Fc|26>8$V|@+hE2FY3xfTYBZKRxC#jokx?Q|lBGnsCXqx4u@nMldn zjAn>mc%jIp)WxH`%tCWyrkj&5d4;7|mrsKlfmPYm`07Qi`i2%~u8+%uGWUy%RdTh` zqp^P2eS@}^cIj{%N)Lzh;gCSwBUSgg>wclLZ$Ek?iyt%Hlfs>Hb}qa<%EXmC1ul|J z6k?Nrn*G-=Lr7II0Eh%&kimaog##cAfka8+B(W08WW16#gjo=}3y6e$qy427=-WFK zzpI~}`EG=2|1w{X5(A7Z$9?(a@Ie?oY7XX!ns`T*9)US1s^+X}HTIm8byQh0ZpN3t z={FtDnjq@56LuKf&YfI&XdnNCR9KlEKJ8+pg!Db48*JS}3X;3n-WBoj)H1KXl71(@ zr~e+6Rk_9Ma9JxeU)EkSbX)Rsk0dwIYvEaEsk>sE%f?!6_ANVO_UdYMGq$hc(o@iL zo|XydkS(Wp!-S}cea}Zyv$qk>Og%9EvS-Zik{@|MMq1u(PA$NY>S1UZreFPNvX}!7 z81%9f?NCCMn!dX^{)a6e?{DO#1*}H)(hu9W(X7=2R-gPpm;3n{!vZjf%>NPw z=T=zaT|i&h7I-O{5oQn++BC zsADCnVkR7K9MGT`AKE*mC+YP*4}K%#ZGE$Tf#12~k$w@{0#a#t4+#X0QpAiR3l zuiBM23T~8A`j5^sjjV4P1S<|&X9d%vzdagVaZUN)Z}in8ccDspJhJu*ou=kuNNHfI zZO`sBz3en|dn@A(>k?;gIeOt{z0H-vfEQ)H0nN&DD=!U7sm!dY?R9B0FQ|J(HA5L@ zTIv1TU86c4eXlwO4%y)|lCHq^W^BTqHGlK+uM;5}orI%LX(2{4%ouvCdS=_S8F72c z;qI zixKDbx6`GM!Ig2;vW{8>@hSJRhk_($@=HZ2i9OXro6MI_uecv-MR&WTGC;!hG?p8w zPi(j?^ghOSrT^R(`sTZlI(K>Uie8T zXsooh!v%9^f@2^`B<5Xt7Z?*h8bWL?ypvI2y&wdqx4K$h{PUTzXPb>f^l7PJ!^kk_ z8?W?+b;pw};e+OwR`NixYs?^*NB*YsntJ?K_Y2X}UN^nZbzF~n%jWb}H%`w!^?w)s zt#hd(B3QwxgzbO6BYNbB=ak)$YLSbucSmSW6YMu|=sud&{Ruzp5+ygI^R z549PZMEC@Kngb2YS4twYG$~E;Q$^z5AtzJ!`f6PH6`z&dSjbM2U3fUFU9}Ea_*yVz z_SMbuaK?A)Mjtpjc853cgcxzGoiSy%UcYe`l^xIYtjTG0%%>$}-V&u4{|<5Tqg?>} z;*5D-yEa2#EEGJ8B4|nP3|#s$Uk#C_jD<)8|EC^pkmi<%@we}0G<+wFUyU&1fwsmT zY{}W!E`_w#**I$HQNP{*{VAd2(!5lg_&IlDG(bIvbUZZk%frNS@1dZ>dEJHYBSzBm zKgXVEb$yzL(<}W9<`mW>%uFao8muTYH~;-y>X~PqF$6VvQ6FyF+Oc$e@m|#VquQ&)G!x-@8JWdo>7H135+zKfR=N3VR7M6*ACSz} zevK-Tqrbn)*5_IoDjqaJc%^g2expk}AL&l1P``1; zU<;R)YBY}cOR9nwrA%Y4iO+9)6`(K@g~Ai;-eV~bxd0v2-oe^Pn8{hp_q~XwKBWQ4cP@e-M-YgsmJzQkefr?74qdE< zfTO!p4GCF@NRBAkwX?~$LA*rU&!(~V<{+7Ht*x;g-&tkeW!|?uTp!L1RD`D$i|e;q zDV^%*9?^IZV~*r>5Y~ZW;LN^5(u0BAd;!{m*F7mSe2jeBpS_MK%?dZCRJ}Yv*SWta zSTB3a1^-+ggH34kE9r?^19v=bA%RqJ;rOr3dj?aItUupwSz2xVq9q`=c#6o1s4lW{ z!JhGnlApdVwNh?)>yl@|eg=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vToxn!L{(S>e_*FflVQ3JNK)C>lBi zf*k<#w>{&!^>!Omd_EYiF}cT))HeM{_7?Sm6&Kk0xYF|C)4tmSO_BwhgdBd1%)r1E zVo`E*0-M7GGG{vn|B9nm>yE0em0Y`6BCl*?V{K2g&f;q zBNMYAi;%Fgf}){g;G~O6M#e==3ooezB^7Rj1`wM))1@0`oCTL!J_a5*9Q{UP`y{^i z57Z`H?l8?#&o%O_dm`|w>gv+j>6=;CnATSJE~`$NzTjBYN4ekAidUp=idpD)%xgPS z(ve+lm%?N(6j;w_Jz|x;v^c)x#PSNG+SW<+CQLKGvc54r^1ChEzn9C=M{wT5$Co~@ zeq>V>ms;cUDCqo*U)*88x%Ai`?c$l95%_X`wPX5))o06nL0(c80HzNnV4{V`F(ZSZ zqG6z8;zWgo2QL;j!o0y~ulO~IO-$#<+^rwvA_Uf)t`|2hIpy{;^&`ugBUxc0OFqb+ z{8-aVQx<2mPh!k2}MWjoWB7K?e^ zH#Kv-H2uxN)nyxd3R_)|3OsnXGeTJ~p3mbd_eA-)#m#d|%6I;q{hnK5Ze8{t3s`g+18|Vc^L7*2HfO!F)OdwuJEL`Y#u<_vscsda%ch6s$pPs)WY3{q< zs%ngfA9r|cd-O2xmiiIVCE>5nahzhElJ~_QXe4IB117sf#fOHDg^dd@!V`>u^ZeKe zlkKIYcZhBl%Ds2o^Y)@27F*YBT>NCs8jvXh!2AJBz=&kWD98XzCy9j$feR7gD)5uZ zOn!~zqR)*=yX!k7oUVoj&oaI(x#HI43lk#3%C|gMUDtDcO>xCk*M~imu1~l4P?`|z zc6hp7K{3aI#%~fc8nSzTc0D&bqfpYGdi;Rn<*PqFDtI#RTo+K!auEpNireH;T{_3G z`q~P8j}?+f`-E9bG(K3#el@zo!XoN@+38S80{@cR_cSA7U$I5#Y;Wf7;=E^MI?q48 eGP+bN=i^~njv1%#MR(kjQ1B0~tNG9H|0V#k`@%c` literal 0 HcmV?d00001 diff --git a/img/st/5.jpg b/img/st/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b45eee64d8a12615a4f9482980b71ffa24f950 GIT binary patch literal 8072 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 F{{uwqhIRk| literal 0 HcmV?d00001 diff --git a/img/st/index.php b/img/st/index.php new file mode 100755 index 000000000..189b03953 --- /dev/null +++ b/img/st/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/img/su/1-large.jpg b/img/su/1-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4bbc33c2ea0ecd23c25b89fda656a03f309f0c8 GIT binary patch literal 8179 zcmcJUbx<5#v+#FWAh^4`ySuyV0>Ldf1Pc}{cyK4Ud+-Dg5Zs;MPOu=01?Ss5Pu^SK z{qt7cd*;+kjr8>IOr7pN-Se{evI)RYl2eoe0D%Ai5V`?gRshlf5Dd(p4sEc|4u=2- z2MY^_^y(En0tyle3NjKhGAbGt1}YjR8Zt5l9tI{h4lXV(3OYUk9u5H(4ld50mjFRf z8CW<(I5$XCJ=-PeCY#_Kp|m3z(2hIY4ES0h#(*g z^ez$f`hUL(eHa!92mi7RKmkD|F+dp5fgUCNNA`dF_$sbQbtF}}?ge0ElZtqQKOs6M zU(?yLzWo)y_LMiw$&H-|A8A>L{&FnS-s3tzo>W!qP&A(NYF_{?=pPm!{9Zu$UdPva z@8@s(jkDCI&JJZnPM;^PAD8&kN4mJge~&WxG~GXTApWNJ+ses$!>;E}t|qPFp8xMq zBwD4b1#NJjb8|l#RA(%@#-2^xk>|0vG|vPN^Rzh4Ir_f6jd``@NpW{vBqqpic#-A4-Sb2WE*e>E=AFf>Fy1JlL-(lrBi!hPwy)?;E zOK@fFs;?WHLzzT?4IsoL*j@ z1wVavg0WijuAYqz-?VC4NKO3LiqW{^VB5dS?E?#Cbw63P6Q#o+P^vti@>|OKtqqN& zJ$MK%+nkJ~GfoO;@4~-#>sI(z;D3KF4xNLn7yuwF5NbOx@SuM+z(8#Q4jvN=8}Ld3 z2N$1`29JuGmMe&xhZj065uj5R2nX|gD01n#LVVP#(^ai)xI9PO`C0n+(YXInm;Oz{ zULrxzQ4Vg3gsFG%NZOR{ZcC85sGlL}FkW3DiZVkQ8K2$NfO%XaWl-@2)w}u5xRoN< zJEtDP@Jh)ewqNCxi1SqvrtRwfRmq+27+MFtD+)>pE-pTNS)uL3Un#}kzaK4y`I zQ#2GJ;k3k2C+%c*JjrtD72`fc(WnjPP*#@Gmf?fZv)nNyoSZW0&fE@a6nv$(gpp1Z zk_E}5v+~F|Mn9_b-HQUHb87^uD}~q{;hs4aB##x%`jFdq)8}fhf08rL3cy>>I?MSw zHyDJARpL8m;Bigj3mdmo3b1sCRqzv{Hhd3;5lE*ba&~c^D2uy|ADAOo|C%A^xKv&o zee+fLjr1X-(H;rvH<8-@36Dn>2@n>@VvfdVADc`^=t2j>*u!Z&n#wPVDBRU3rMyE_ z)tWdWp~dimy#nk0BM~XW`9RA>7e0qs@lFZB&Z`of5IP1aOA=K^1#v|~W9);5z}`@v zWy{|OvBSwP0Cq}Li&ec=HXi$4B5w}r?@G94jvYoVf}D2~ZED{jf`mV^ncA+Nnj)@N zRSUZktnCgV#8H|%9keXLX$xO|F9>6gWrfauyw+vz9hb`ccH6uirb|a%JCTL?Lr&K( z7=~w|V4>BVSjx2oOJ~8}|1&}#ywV()d3Mg6xP2uB!9yqN8>)9Sx9f$}7l_+FZgqfc z8_Ds?cfkhMGL@hKxpR)S@GE;?9(IGaS$2cWYC?s&ReyufB!v3S^fuPE&pNSPPnqQIzST`fKXWe33m+MmD z;fDF4##aXPIY}kJ?Q^N?P=nL_Ok%h|nfdnaRbUiDZxh3q{Vx;>DKBIYObp0Bwg)hC`UYYRm)_J=t{K16;Ak_F}@2;EsS1;T(ZDY39QIH@!-xXdK~u_dVU7Y9DI>G2RLzNTxE>s(hZn`))_Mo){Ql79Nk4L+D}Jr}*bui#Ckv`YMF(&r%biHa+_aN6&} zlb}T8>$i9+`%h$*8q4xEaw_rE4JZqO(Q%5cjyfA2B3v%@hsA5?B#8tcSu;sfjnYPW z#fe#;_o2*6P`?F&MoSn}IJAGc|9oHo7Az$vHWb+06%GfNOTsNUv7o-8=bV~b%3_6CL-NHQ&A@0|&;BI+W%dov!*c4(o|^ zrPSZk?pHVtv%(7WN;uvNpnrwVUbrYU*U)3`-7`_3NamLqLv-e3XOJGF1igXyrc}L3 zahx-fvT=LFGIOWgJePw7XNKGF-J8NQUPn28G~7+C}J5qkI zGK+y58z?<{SlXC9S1U_TQ@rl}s;1h>-pk|EHP@7+%JE#WuPSm{@Vs;)K-B?@H8v!@;?uT~xGa(@dPL%CTAr z@h&oUI+5>g59;hMNKs`P5Lleinu~XYVFA|3wEy0nW1+AS|2n=_B?zT6gv%^ zGkdWw>>4{sc#8FD$8HaE06(MU^81ce1QxOU!85a^_niZ|Bz0Bf-{Rp1hG?8sybnwH zN+ei@R9wr9&3A!Ks#R3jVkVhkXUlMjgWkC~C3w9uZ55!MZN}b%qHI}uV^j+*1;$0@ z2w4&E$arOjqk>3;T(+GP4tz?+8UN?Zo*rgCnOs3INeH&T*$`O9^#V-lnnHi4-AEAz z$~Bc(U{f;>+j{}<-10Ft0d$nO!~{wWSy!uAF}r6HN>`PwS3cl;0*5nWWQC8*(t^(u zM0pmTE5R2XmTERR%(3)r@b%;;^Jk?g!T6u8O{?YG>WOC*k>YeiW8KNxzGu19vvX9# z<=hfslT>t2Z9^)sC+xrssZ4abqC{wIu80cgc&8k>iJOa|Pj9Xuvyuuv0|<&3N!q=s z=2KxM4vMOK3P^dP?+Xn*FE_MXWm5yGVztw3+E{^v|3H+7YZQjDoKe%%tDw3(!*?L8V&dZAw0ONU?p zb8XE>>BF`cfWO*OaA9GbqX|GXF zB_ZOo05HEfGQet>8zxhdF&G2~>!mX(Erb%sK_a*GN}3pzlj*#*z~LufILt-twvBYs zhC~Im>&l50=8!^JD4be7GQZtX`UYQD(44(ry3$-d(>tqHQJApsWlVIv+vMG+s?pm; zKZmX#;QMKd@k!P~;|ajFTDs&%NCMf0E_@g1h#N!2a=uz1`@U$|1_aK7avR5HHOVir zs>|9AV9c@KS{iIynERy|D-N!kdhXOZ`vYM|y89j>lV0qq!ZZxOoM)Asui;E!9#+3p zXnE%qsRuhBUBnY;2-^N=a=@r=cCS{TKPcN!2+lN-YJhZgVh$H_Lpq3wjt7Vlv3wL^ z^1Lv^?G{#vvO~;?XGEe(A&So1CB!bxEKOlx)ujsE0_rdYrCM=Aw%aT4CGC1_q0eno z*;GW?A?E5ty$qwUjQKPns{#PGwqUvC%mUX_3(PF?L7Snr-kKi%4m!1)I=PG( zdPoJ&4l7!J8(I3crPXfAl?q@zYeUcd)O&Lr2j2i|l&4i8DKMxlGS~R1`@8$Ova6=y zS6)tPpfP$IW8&bK=Xrk!dE--MdzYCEvvd-8?IC$RVU+@WIB(*QwdYg)KLJ_81xy=`o-=BQ%gh^WeXc z9EeE?;DkoQVAsR~iTa-N=`Bdm-+%`cr+fi4HAQ)%vARpjDF(P9*l9Wxo4>W7<+)l{ zj$lZgR2*s@b9{nuS~GYc`keahd*KE~-~q7|Ks8=5S+EKOv6p?H?p;{uAOtc)VX*CL zbsvx5?Xl9b6-?{mkrQw?+pbc7ZQ0VIsjeGOmij07G|u6E1S2PAyv+>^xUHkIk}3%< z2Vbh7;i}Se(&ZW~peLk$)d(b85^74G73Rm)H5_Le5r7(*(O0yj25ecnjR}OqTp1-_ z&ex3cRch@$N(!p#7sE5Qp);btM`_AKAH`!zhA$)gxCNe_u10<`c#cR|edQW+sJR0z zBo#j~ z3OU;=hMq5okO1H{aDxL2Y$S`Hg*PMWYy4ILwn4=9sP){p615h6*K_yqH~V<&pD){WT2zdGBRe^V(4U)bXJbG@6LZ-efe(fS%|zJ8T^pq%7_CKF27YB* zY>aDw3N5baX=G|e1`mNeI9NLxY~kVO&(VcapAse4U}@yNL)pZkq*Dy0fk{GAU4jtA z5fX9WbQ*>S7f_htMb!<&86ij&`J=a|h_vHL=ZKy=C-scULxRKmvIfyf zQH)|>`&M`dsNJk6rPZ@ZF{{S9boXgIftm~KjWKCY>4)J0gDxZnqqAX^A!Km#Td`(> zD%PP|Z{E1)PbS4iQ8d=Zye)9I#txBnKbX>~tT7l#h}?^b`)GUfe4%gtVV0V#MY&kw z&|7F*m4%B2hAiQj_a$Os__fJr;zvuFZ(y)@a~w$Mnh0)SxAm0fYSGKKvn@z z7cKxr@)Y~av5|;5zAa@~WNg8y<puU18iyhja;E-K_g?~aoC;a9?=S@l^}&E?&9J?F<04m*|a z9t-+3%v&K3LutTvk|j`?bWXd~JrN0o<|ZT|W{yTvYzeW!mPEL2SB*gsZ~DOkc$qX^ zlT$a1$-K)jfc3#-LzTFNZ0!X=;9F%yDB3fZT;A(TlJFtYC)V``Oeb@ZAM6VtT5rL=w#?Mr{hI$;#u>eu2Xnv6c#sj8SM^j zvB^Wioe0ujTOkF{x6?xs<{r;Z>#|emF!`SYvdmZ^fdi`MF3ie^JH{MxR44Ky-~3tx z`&?a1z83w+25*0YC1|RX$_zn7$Rn}3@F4Q`bi2kPQA2rnZgFg0h#ZYUE1)>|-6tJG zOMhU7@9|T6g@U}8IvfY2KwsAUJ{{)+dg|kwGbchnm2^pln%Y^FTXpM*M{C6AFk?<* z*Yr1V*QgQVd?#2z21jw(w#24UiKjXY{@wMOAS7$3ZZmY`(3UnvSMN(qe#LG@F?j>kZ zPWuWV9E2cp@5Xv|8-r*f#DuoXPSUP>=F8vVziK=QA8OTdethD8V0Vtnbjh~pt`lZA zYg~!b08gw7f5K8q$zAej7|Zs1Ja-^ZeCRl?`|5d?r=j->;hu=6mwFmUpM{Ym#@W?n z?WdI?Nb}k6qIGVd`OeB#PB17Jv)E2NK*OK|w(^bX?^&qN|EHh`_*3J-xSSOEzv+1S z+`mv7@&CTOhe^A0vH<`6zo!uGxL}^GSEheevqasTuz4B&C4ozZ$mG0R|0~$XbXO+- zbn;j5eDIX(hq34j;Qt6(2ik#5GEhZ%gr=*!{eUGO3^!Yzg^H08x zaot^FJjka`8HEjy_+FawDA{oP3(pL;(_|bs)Y3qrK$kF}<9n6BFI$g5O&pG|9a!74 zvy93aJd!#)w4Iv^Vst~XDSb+D`8+LVmhG+!$;}7pi&FM6nGmc)Mg7gz`W%sfbG6$! z{bme)2T=gg9LrdWQDK`9J z=al3y*EGW@==q2IPv(yC(0LS1R4zP2UpMS`{R($XcSEL9z9pqB9_DrPoRk`c8L_kE z0ta&3Cx_-iV+AyFj$as4G18be<#u>;`tL1D8}A44W4kyixeD_2i+{5s<7|8SM(KOs zrvxmFjNzjcMYiF>p&<6Ug-c+y$4!!(SdoJ9#aL1iiZV*TDmV6XEj9_;aD5#&YStKX z&+3*vW|Iucs92!WZ(!11W`Ejgtt%1dE6D?dNq>A*;( z5W|~jav@hs;{mL~6i=}s?P2k?$Su3-EC1kPsVjaR zj!osEvT#(uwi9UFM7n!xISpfE4!<;_RS$!IUoMpxS5vT^fF_?L{5vj#oT2iEwzzEd zL%T~AV4;k#WR6*fGjfXl2CN1y?D6mvA|IO^m86D?q@Vj+7#ZOktvuVEP3$(w`1`=X z7@s-B??EnwA!W)FyY*2CADVJy8yAqLZs&*3ZJ#@TBBAJezNIui`E~dhO@j&T-vEY6B>j^6foV4p?8aq^cKU><*yzjhdr9Dh^BkvMo?C5AlM{)pmVN^ko zpi4SH0?^Lum~k35p50Yvh`fLzY>4&@RM!3@aeL=OP%Dgdt;yPDOgTxcs{M~_(^*Wb zZH{n9WO9&Kdi407&w<_TJS_IQ6;3)Nlf!oP_361#6c0Crt_FQGS{uW4u~KUOrP@Aw zzaH9AXjp;VNHCGJnccb&d49m~S4KhT0|u{BexsseWsycebt@0|)ajfVmey zGaHKUH}vP)9WJkMbc-B~8r=3s11?tG&73;Q&{>%TMHz-%2#qbhMo^*EXsw7lC_l47 zUwc~^F>DPnu>)WJy#+M8&x!(~ZZehPr;EuE<_+)}^>l3rm)5qPR3n0h~s34gBn` zzgedK8q#cIUSLdBz5t!;a&XO;DF} z8=!~sRsh8Udri(v(CIiKaWD63d=oaS1DlyWv34EijEaJW52rZ*R6qodwbjaVvlP6Zh8ggTnKyfD+<_Ej;lKdnBScDX@o;^S6svME z@1E1)M6`ieyi0#5Rb~{rLY?feKM6P7ToT`yP0i1R=|(z1_qf2a4(8jw<&}MN8}Y8R zzv*pR3vVgCoGos`Ms-E@`?j3$r_BW287c2r%t?Y2+H@7&yRK@bDbu=$A3KKq>anV~ zg^!jH15{b5)CG>LpbkF{kIM6}%>g@YHe}bP3Sjt&2<9L~3>Y4My>2mA0UjzTYR{sG zfJq%-QvWIAI6l877tw zUs4&!i;nd3X*uJ#1a z6nmbKlWHsD;{5WC_ZhGQ07`V+{_s!~nK@Hqf6HnE*Jw|ZPOGq_NMEnXvK^8|6kfCf zAlt0~4=2_Jwl!QSgyiEyw*ZLhdJHgJ{fkGPz(!WRT0(84FM7Op*F2K#C?k^$9Kk0= zJ(Q?(U6T5R5Uzs_S5qH(@A{)`D?O5*Xdd+f-i^Mb8y^)Xs^yxRL<$3HZNP%@CgwP5E_W_LX9pkOUE3f+AjF3S#)VQWK|F4<1u0z!HpH9Q9;@tXu90DiZbceG5!UM$GYJ zez+Z&A(oZDbxd{|icQiaVeZL!J>$gP$AjdInW$(pLHVZKoO)nWm6@3gQ+}2(h%NL( ztqp8nIP5z@U5IchBUi(T{Fq4pbfFGYm($MiDveX%0@DND2jvegj{}ZpUxjyvCBcF=o(MH;|-pUdEIStE@5Zz7P$L}gUJ#7FauSg2v;y)6AdI?{;! literal 0 HcmV?d00001 diff --git a/img/su/1-medium.jpg b/img/su/1-medium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f22b458258784e4c96e055c77d1e3cb6ee610a8 GIT binary patch literal 3040 zcmb7Gc|4Tu8h&TBj~T{N$TmZUG{`CBV=QASOR^N%QuZ*GY)R5*&6X@#BfD&2lu%Q) zBw0qJ>{-VkYf_xi_w}7~{yg{d{CEG}>$&dxxt{BO_lNf<0Hi)qj|hN3003evVE+@K z2|&Q$gUtviW5bwXFentp%ESa`W@lw*XJch!<3MmBIS?oW8yk`riQ-1{@bIv6^6~Sc z`MJ?Y9Dg001x@u>DUk z7{ZyD!3WvHAOH;cpDY*xfM8Jg{s_PhVI+|dB%{zl@l!!h`d%w7 z)3C8-iDcap^_ucXEX})Ln>$V4yKrVm>)X=Vyu(oU_^rWwp&@-#Ae$Ml!3O-?d{v+9 zt!VF^oKeH#4Ii5DfgiMW@zm=g1rJ zAJIj9AtNAhWE*;cO9;nA!O$nN7}`l!YGVowp0 zy-KJ@<=#D=WztfiU_hsJQm@D2)M{&DR|ZQbCaeF{{PPTn@+C2-LuC#X%SkYo>U*Uq zUq;RR*(sf_tQ%1s%pViyx)Ve>T?0DnFxV_S7)mdj6qi0zdTsNJn;0f4@zT)Ib|uu8 z@_Mjl!BCMt>={Cnz0cu`_%k3kQzUJq1vN$rh%B^NzF2<6F z#v5LWuLYM{1MhkII% zg_Sa9PzLl71~lU}{I{$? zU=&0Yisa({>w>@sz~9A3j*{HUKX$afFp<p2CgC!00S^E1O|sP{lyvt1|U$BD3=_!*g1kdDXbqRZ<18ghsJxaienTs z!YQx*)&pD({G*hdq}NptZ@#HjG|``SU7UHWqy%gr%C$A)(Sk3f6j8NT;|4Z~jiuiG zPI~^r7qU~Puqz>vx{k@R*_k$pthr6WS}eZPVaKCo@F!2vyN%5;8JC^71bN&79i=ds zG9ROphWTAX+Z7)qxHP}<7Xt#ed-)_|O01PY_JpZX_bwY}gs`DPx)(5{7(-ibGU|&( z@ersH55)R#x*?a8ie757|HNLz4u6}H_rErRA%_Fr9(mw;;%gm<``FH#V(#1wHXLzclV))VxsNdR5)@>t4Zir=9ji^!0 zw#H43)L+zcoB1jc=Yl6Zn^a5&>T1VU4+-3n^{}J|OsXt6&04&Be4Oja@RPa6C*{ZJ zZ=Fj|osN_(a9WMP!)*I@ZaZG#gUN|)5C0Fl)<&;C+bv|C?vo;ny2T1WEhcUu%{#ydvWHTKM% z4|#E%p*k#*VS^0kfxv$I4hTSr$`Q`lhmn$M@RYvE)x6)XqbB-Y`=#I_vKuFhI?Kwr zi8kf2xb8GA92lbQI`B%eo*h7>Ia*LRtj-R+=jb7y_FZ-@=v%kB_6k&^e793eM(xBCWe;0mYdnMrNoi?&A zua$hL%AL`p4WR@tb3oUr%FM9Y}TgP=IZgDYqCy% z5tpD_!K;|kYT}^`I#Q^7b19S=7QjO6e0$L%;fzD+r%0$xdipzxF=BZu%8s7*Wwz`q z9Qt6gP8|MFqT=dIAsNx9M+_>3@t7qj7*DkCzCb!i>cCVr4T|=GqRKJ%`}=?v8z+Cf zX6&C)I>7^Dmzfc5cS94`Xi(!WVYvv)7>+WL1}B&A1{#+A^|}|})ym#?uA_4L5f@Z( z7ccF3FvE3_Rm2JX&#x=FgY0pvuFILS{vy5)ytcB&xO}0FP?){N)!bsn4gZ>lzx)#U zI=+_X(r&fXU-^aHlPf{x;QLQn61$5=j3TDw0cogJ0D)oJoRS zR%yxfO6K|62=nb-IER`ssCi74EKPIq^UvkuNcKE`bHZ!oyoq_qZNLRkyT!!8k%3c|iRjejfrt0l$P!N(#%v*Yr*PBXi`QbcuTWLtIm1 zyQM6{zu-ht9^d9-Pp*sP&l4e%fPBG0Tt) zmGB?w-gJ_PQe>)2yNE#;8bEK$D!ca-9_o{?X#N^&#|bLcvCPzqtHD0Z3=`_c<%yyUz1s7^IJH zCT6en#EBh(=lDYM05#lBH>q%lE+_hRF(w~F+_8l(<$H=1MFxLw)kqq!!|(0`>9vQs z5%4IQq@7_LvgkeBZb>E*uDA9)0(Z~ew`iaz-gY*`qG0)3v;9!MHz#ja)?Rg7vVWdn zfgqR412lT#3fQh+275lsoc>UQeEX9Z)_`JJy3;YJ{;154a&7UL>2f*t#tfw~-?For zyuv-MM`&fKuUzQiA3X+9uBhOw3cTn`aFe{H>6tXDJ`pm zJP08i!wp;9uIO#;rOa?+Q~5Q*e?Q0N^`8L qiAO~Yg033hiuD$uHcrfUM9xa3*-y7*A;!QXd@ZZA$`=XyAO8(QAxRFDVKKH zYEzOX*=%SVNfaA;C`=)&U7l{X#xsv<_KaFj{kgyMo`24JexK+2e$V%J)DP7|0Q2|u z^9B$E07P6sJpeoa0>hd`6iO@-l|({Ok~W1xrqZ-&G#zan9bG*-rmKhR>F8hv7|vj_ zSS*^pA=`k-rZZVg4Fp1n9+ad-B55&ob#$5kyVOkprvf`*hd>qp#vufU)Xl(@(1{|1 z(7B?*Br*jcsAks)0`MoB07d~qg4F$hMm&cx1S9$zTv!n?Mot;LJrkl(A9iQ()5!HT zroSi#26EqR?T8N5ixWInZ8#O)M%%YEE{~l|fXy)g6ZH`rMhPw%Fz8GJ4uPi<4nib& zX8Wd;s%7}KRd@K+fxbtg&p~!gWxN*Y$l8FNFO4K#J|~rZ?I{ORw3J?(BzMHEK_T`Q z6Z~8`hqp{-XMO2Pd_`+h61t=^GVV9qf?Q9l&S@UsGA*p9>V96Mw5=oS%O*En_q&v- z_^=hBbt2bljWiq}0Fa4$t{@meaXL4UA(YHYLme5w9Sc;GmkBz_sUMI&KZx*J6I!i+?=1~vp?oD zg2E>(0z_W4NLn9+Xec-x<=R^a14)eemJW{6)N&?^ayca%8}w-|@C1l~Z8nCvY%^{UtC z#D+sOp&)#>5*G;>W}Cfj+?)b3Y&@>yM~saG-&{$l<*ic*%ScsladTq{TagkjHBYU5 zk?!W%;t7VumHWV4?8jjPr0|`r`{fzwP*g#F%Pjy4f?U!H(4zL=P2F1!alfPZ(A{ z@)339$Cs{}h}D~3Te`AwuPfn^<@*?Y^tB)yaP5VGsT_$kue?k4;^lu?a^;e(Q-nW7 zy;bOsxExkIcN^Abuu21NjNU475-9gl7d6+gofECdT^so892Z7S(9L(XbH!%+mZG-O zAF0>5a%g+^pJeT6i3OLn8m;@# zpplCa`fgBa_*LVE8cA-vf)TpUAhqOm4kvB<;ERJ9hTG~^xQMv<4;)mXXS$a#6qcr= z@7A0-Jwayf%oFI-{Jxe^6K)gwXGcvFN`UpC)p4S?^~BLlabo^H9w6dxgA+$D@5-A! zvL>V0HF~C}Jn{e~F;hNYw}TYB=!cwp7G@h0HQt$M0K{8!DSr;e{fz>F5^h^w2XF zF{Ls$cG#`-zXf5uG$8g1%U!&&y|34=xZ&4bCeOYa6(-}!kNU7@ zSh)IH7~10%vf${zB71Fd;g@P~qPLwq79f6A*HIJ`l;E(SxMBGhHUnc1V?8Eqw*jE7 z1vBI7yQA(RB@OOC`?9&yNWEU#p2d1~@50f(0QU#Ej+8$v9WX9t6e)g!NE4)ph%^!OQ;*6WeD3+~y+7}sB$H?MTJNm2X0LbFUR$GE(*S2~Y-S7~ z2mlB^z}5sX1SlkO`vVU&8inTB!NY^W@CfqpVRzsJ@pzmdPKY3~YbQaNC@h5Axm%1V zAt5Cth2Kdc@0KL*l9ZC%27%CMG!KSHfQLswl7J&f{=dgo8^B}132+GskpTh^A@R^w z2ao^&32hJX&p@FuNCd@SJnm=J|?+V~tZtd-O}m0qN)O$j=IbmL%#I%HJt3_dYMl@EM&oRZH7s zMw3ML_BFh0Dv|Teifw(laid^aU_akgs!;*>r2s#9aiyJrZziJ!FL{Cpyr zh~8*l!YoGWC|-&_7*>O=�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

  • + '; + } + + ?> + +

    + + + + + + + + + + + + + +
    + + +
    + + + + + + diff --git a/install-dev/langs/de.php b/install-dev/langs/de.php new file mode 100644 index 000000000..bf2cc0dcf --- /dev/null +++ b/install-dev/langs/de.php @@ -0,0 +1,233 @@ + klicken Sie auf Weiter zum Fortfahren!'; +$_LANG['Your configuration is invalid. Please fix the issues below:'] = 'Ihre Konfiguration ist nicht gültig,
    bitte beheben Sie diese Probleme:'; +$_LANG['You have to create a database, help available in readme_en.txt'] = 'Sie müssen zunächst eine Datenbank erstellen (Hilfe in der Datei readme.txt verfügbar)'; +$_LANG['If you check this box and your mail configuration is wrong, your installation might be blocked. If so, please uncheck the box to go to the next step.'] = 'Diese Option kann hinderlich sein, wenn Ihre E-Mail-Konfiguration falsch ist, bitte deaktivieren Sie sie, wenn Sie nicht zum nächsten Schritt gehen können.'; +$_LANG['Mcrypt is available (recommended)'] = 'Mcrypt ist verfügbar (empfohlen)'; +$_LANG['Your MySQL server doesn\'t support this engine, please use another one like MyISAM'] = 'Diese Datenbank-Engine wird nicht unterstützt, bitte wählen Sie eine andere als MyISAM'; +$_LANG['Adult'] = 'Erwachsene und Dessous'; +$_LANG['Animals and Pets'] = 'Tiere'; +$_LANG['Art and Culture'] = 'Kultur und Freizeit'; +$_LANG['Babies'] = 'Baby-Artikel'; +$_LANG['Beauty and Personal Care'] = 'Gesundheit und Schönheit'; +$_LANG['Cars'] = 'Auto und Motorrad'; +$_LANG['Computer Hardware and Software'] = 'Computer & Software'; +$_LANG['Download'] = 'Download'; +$_LANG['Fashion and accessories'] = 'Kleidung und Accessoires'; +$_LANG['Flowers, Gifts and Crafts'] = 'Blumen und Geschenke'; +$_LANG['Food and beverage'] = 'Lebensmittel und Gastronomie'; +$_LANG['HiFi, Photo and Video'] = 'Hifi, Foto und Video'; +$_LANG['Home and Garden'] = 'Haus & Garten'; +$_LANG['Home Appliances'] = 'Haushaltsgeräte'; +$_LANG['Jewelry'] = 'Schmuck'; +$_LANG['Mobile and Telecom'] = 'Telefonie und Kommunikation'; +$_LANG['Services'] = 'Dienstleistungen'; +$_LANG['Shoes and accessories'] = 'Schuhe und Accessoires'; +$_LANG['Sport and Entertainment'] = 'Sport und Freizeit'; +$_LANG['Travel'] = 'Reise und Tourismus'; +$_LANG['Main activity:'] = 'Haupttätigkeit'; +$_LANG['-- Please choose your main activity --'] = '- Wählen Sie eine Tätigkeit --'; +$_LANG['A question about PrestaShop or issues during installation or upgrade? Call us!'] = 'Eine Frage zu PrestaShop oder ein Problem bei der Installation oder beim Upgrade? Rufen Sie uns an!'; +$_LANG['Invalid catalog mode'] = 'Feld Katalog-Modus ungültig'; +$_LANG['Catalog mode:'] = 'Katalog-Modus:'; +$_LANG['Yes'] = 'Ja'; +$_LANG['No'] = 'Nein'; +$_LANG['If you activate this feature, all purchase features will be disabled. You can activate this feature later in your back office'] = 'Wenn Sie diese Option aktivieren, werden alle Kauf-Funktionen deaktiviert. Sie können diese Option später in Ihrem Back-Office aktivieren'; +$_LANG['the already installed version detected is too recent, no update available'] = 'Die bereits installierte Version, die erkannt wurde, ist neu, keine Updates verfügbar'; +$_LANG['This information isn\'t required, it will be used for statistical purposes. This information doesn\'t change anything in your store.'] = 'Diese Information ist nicht erforderlich, sie wird zu statistischen Zwecken verwendet. Diese Information ändert nichts in Ihrem Shop.'; +$_LANG['If you do not know how to enable it, use our turnkey solution PrestaBox at'] = 'Wenn Sie nicht wissen, wie Sie es aktivieren müssen, nutzen Sie unsere Fertiglösung PrestaBox'; +$_LANG['Invalid shop name'] = 'Ungültiger Shopname'; +$_LANG['Your firstname contains some invalid characters'] = 'Ihr Vorname enthält einige ungültige Zeichen'; +$_LANG['Your lastname contains some invalid characters'] = 'Ihr Nachname enthält einige ungültige Zeichen'; +$_LANG['The file /img/logo.jpg is not writable, please CHMOD 755 this file or CHMOD 777'] = 'Die Datei /img/logo.jpg kann nicht geschrieben werden, bitte ändern Sie die Dateirechte mit CHMOD 755 oder CHMOD 777'; +$_LANG['the already installed version detected is too old, no more update available'] = 'Die bereits installierte erkannte Version ist zu alt, es ist kein Update mehr verfügbar'; +$_LANG['If you do not know how to fix these issues, use turnkey solution PrestaBox at'] = 'Wenn Sie nicht wissen, wie Sie diese Themen festlegen können, nutzen Sie die Fertiglösung PrestaBox'; +$_LANG['Database Engine:'] = 'Datenbank-Engine'; +$_LANG['Installation type'] = 'Installationstyp'; +$_LANG['Simple mode: Basic installation'] = 'Einfacher Modus: Grundinstallation'; +$_LANG['(FREE)'] = '(KOSTENLOS)'; +$_LANG['Full mode: includes'] = 'Komplettmodus: beinhaltet'; +$_LANG['100+ additional modules'] = '100+zusätzliche Module'; +$_LANG['and demo products'] = 'und Demo-Produkte'; +$_LANG['(FREE too!)'] = '(ebenfalls KOSTENLOS!)'; +$_LANG['Shop configuration'] = 'Shop-Konfiguration'; +$_LANG['I certify that I backed up my database and application files. I assume all responsibility for any data loss or damage related to this upgrade.'] = 'Ich bestätige, dass ich meine Datenbank und meine Anwendungsdateien durch ein Backup gesichert habe. Ich übernehme die volle Verantwortung für jeglichen Datenverlust oder jegliche Datenbeschädigung, die im Zusammenhang mit diesem Upgrade stehen.'; + diff --git a/install-dev/langs/es.php b/install-dev/langs/es.php new file mode 100644 index 000000000..b42c3fcc0 --- /dev/null +++ b/install-dev/langs/es.php @@ -0,0 +1,271 @@ +gracias por corregir la configuración:'; +$_LANG['You have to create a database, help available in readme_en.txt'] = 'Debe crear una base de datos, puede encontrar ayuda en el archivo readme_es.txt'; +$_LANG['Discover your store'] = 'Descubra su tienda'; +$_LANG['If you check this box and your mail configuration is wrong, your installation might be blocked. If so, please uncheck the box to go to the next step.'] = 'Esta opción se puede bloquear si su configuración de correo electrónico está mal, gracias a desactivarla si usted no puede moverse a la siguiente etapa.'; +$_LANG['A question about PrestaShop or issues during installation or upgrade? Call us!'] = '¿Alguna pregunta sobre PrestaShop o problemas durante su instalación o actualización? ¡Llámenos!'; +$_LANG['Invalid catalog mode'] = 'Campo modo catálogo no válido'; +$_LANG['Catalog mode:'] = 'Modo Catálogo:'; +$_LANG['Yes'] = 'Sí'; +$_LANG['No'] = 'No'; +$_LANG['If you activate this feature, all purchase features will be disabled. You can activate this feature later in your back office'] = 'Si activa esta opción, se desactivarán todas las aplicaciones de compra. Puede activar dicha opción posteriormente en el panel de administración.'; +$_LANG['the already installed version detected is too recent, no update available'] = 'la versi√≥n instalada que se ha detectado es demasiado reciente, no hay ninguna actualizaci√≥n disponible'; +$_LANG['If you do not know how to enable it, use our turnkey solution PrestaBox at'] = 'Si no sabe activarla, utilice nuestra solución PrestaBox en'; +$_LANG['Invalid shop name'] = 'Nombre de la tienda no válido'; +$_LANG['Your firstname contains some invalid characters'] = 'Su nombre contiene caracteres no válidos'; +$_LANG['Your lastname contains some invalid characters'] = 'Su apellido contiene caracteres no válidos'; +$_LANG['Your MySQL server doesn\'t support this engine, please use another one like MyISAM'] = 'El soporte de este motor de base de datos no se puede soportar, elija otro como por ejemplo MyISAM'; +$_LANG['The file /img/logo.jpg is not writable, please CHMOD 755 this file or CHMOD 777'] = 'El archivo /img/logo.jpg no tiene derechos de escritura, por favor efectúe un CHMOD 755 o 777 en el archivo'; +$_LANG['The config/defines.inc.php file was not found. Where did you move it?'] = 'El archivo config/defines.inc.php no se ha encontrado. ¿Dónde se encuentra?'; +$_LANG['All tips and advice about PrestaShop'] = 'Todos los trucos y consejos sobre PrestaShop'; +$_LANG['+33 (0)1.40.18.30.04'] = '+33 (0)1.40.18.30.04'; +$_LANG['the already installed version detected is too old, no more update available'] = 'la versión instalada es demasiado antigua, no existen actualizaciones.'; +$_LANG['Mcrypt is available (recommended)'] = 'Mcrypt está disponible (aconsejable)'; +$_LANG['If you do not know how to fix these issues, use turnkey solution PrestaBox at'] = 'Si no puede solucionar estos problemas, utilice nuestra solución PrestaBox en'; +$_LANG['Database Engine:'] = 'Tipo de base de datos:'; +$_LANG['Installation type'] = 'Tipo de instalación'; +$_LANG['Simple mode: Basic installation'] = 'Modo básico: instalación simplificada'; +$_LANG['(FREE)'] = '(GRATIS)'; +$_LANG['Full mode: includes'] = 'Modo completo: incluido'; +$_LANG['100+ additional modules'] = '100 módulos'; +$_LANG['and demo products'] = 'y productos de demostración'; +$_LANG['(FREE too!)'] = '(¡TAMBIEN GRATIS!)'; +$_LANG['Shop configuration'] = 'Configuración de la tienda'; +$_LANG['Main activity:'] = 'Actividad principal'; +$_LANG['-- Please choose your main activity --'] = '-- Elija una actividad --'; +$_LANG['Adult'] = 'Adulto y lencería'; +$_LANG['Animals and Pets'] = 'Animales'; +$_LANG['Art and Culture'] = 'Cultura y ocio'; +$_LANG['Babies'] = 'Artículos para bebés'; +$_LANG['Beauty and Personal Care'] = 'Salud y belleza'; +$_LANG['Cars'] = 'Automóvil y motos'; +$_LANG['Computer Hardware and Software'] = 'Informática y programas'; +$_LANG['Download'] = 'Descargas'; +$_LANG['Fashion and accessories'] = 'Ropa y complementos'; +$_LANG['Flowers, Gifts and Crafts'] = 'Flores y regalos'; +$_LANG['Food and beverage'] = 'Alimentación y gastronomía'; +$_LANG['HiFi, Photo and Video'] = 'Hifi, foto y vídeo'; +$_LANG['Home and Garden'] = 'Casa y jardín'; +$_LANG['Home Appliances'] = 'Electrodomésticos'; +$_LANG['Jewelry'] = 'Joyería'; +$_LANG['Mobile and Telecom'] = 'Telefonía y comunicación'; +$_LANG['Services'] = 'Servicios'; +$_LANG['Shoes and accessories'] = 'Calzado y complementos'; +$_LANG['Sport and Entertainment'] = 'Deporte y ocio'; +$_LANG['Travel'] = 'Viajes y turismo'; +$_LANG['This information isn\'t required, it will be used for statistical purposes. This information doesn\'t change anything in your store.'] = 'Esta información no es obligatoria, solo se utilizará para estadísticas. Proporcionarla o no, no cambiará nada en su tienda.'; +$_LANG['E-mail:'] = 'Email :'; +$_LANG['I certify that I backed up my database and application files. I assume all responsibility for any data loss or damage related to this upgrade.'] = 'Certifico que he efectuado una copia de seguridad de mi base de datos y de mis archivos. Asumo plenamente la responsabilidad en caso en que se pierdan los datos o se produzca un error relacionado con esta actualización.'; +$_LANG['Upgrade in progress'] = 'Actualización en curso'; +$_LANG['Current query:'] = 'Búsqueda actual:'; +$_LANG['Details about this upgrade'] = 'Detalles sobre esta actualización'; +$_LANG['Thank you, you will be able to continue the upgrade process by clicking on the "Next" button.'] = 'Gracias, puede continuar la actualización, pulsando en "Siguiente".'; +$_LANG['PrestaShop is upgrading your shop one version after the other, the following upgrade files will be processed:'] = 'PrestaShop actualiza las versiones de su tienda de una en una, los siguientes archivos de actualización van a ser tratados:'; +$_LANG['Upgrade file'] = 'Archivo de actualizaciones'; +$_LANG['Modifications to process'] = 'Modificaciones que deben tenerse en cuenta'; +$_LANG['(major)'] = '(majeure)'; +$_LANG['TOTAL'] = 'TOTAL'; +$_LANG['Estimated time to complete the'] = 'Tiempo estimado para realizar la'; +$_LANG['modifications:'] = 'modificaciones :'; +$_LANG['minutes'] = 'minutos'; +$_LANG['minute'] = 'minuto'; +$_LANG['seconds'] = 'segundos'; +$_LANG['second'] = 'segundo'; +$_LANG['Depending on your server and the size of your shop'] = 'En función de la potencia de su servidor y el tamaño de su tienda...'; +$_LANG['You did not update your shop for a while,'] = 'No ha actualizado su tienda desde hace algún tiempo,'; +$_LANG['major releases have been made ??available since.'] = 'hay versiones mayores a disposición desde entonces.'; +$_LANG['This is not a problem however the update may take several minutes, try to update your shop more frequently.'] = 'No es un problema pero la actualización puede durar algunos minutos. Intente actualizar su tienda más a menudo.'; +$_LANG['No files to process, this might be an error.'] = 'No hay ningún archivo para tratar, se trata sin duda de un error'; +$_LANG['Hosting parameters'] = 'Parámetros hosting'; +$_LANG['PrestaShop tries to automatically set the best settings for your server in order the update to be successful.'] = 'PrestaShop intenta configurar por usted los parámetros de su servidor para que la actualización se efectúe de manera correcta.'; +$_LANG['PHP parameter'] = 'Parámetro PHP'; +$_LANG['Description'] = 'Descripción'; +$_LANG['Current value'] = 'Valor actual'; +$_LANG['Maximum allowed time for the upgrade'] = 'Tiempo máximo autorizado para la actualización'; +$_LANG['Maximum memory allowed for the upgrade'] = 'Memoria máxima autorizada para la actualización'; +$_LANG['All your settings seem to be OK, go for it!'] = 'Todos los parámetros son correctos, ¡adelante!'; +$_LANG['Beware, your settings look correct but are not optimal, if you encounter problems (upgrade too long, memory error...), please ask your hosting provider to increase the values of these parameters (max_execution_time & memory_limit).'] = 'Atención, los parámetros parecen correctos pero no son óptimos, si encuentra una dificultad (actualización bloqueada antes de su finalización, error de memoria...), pida a su hosting que aumente los valores de dichos parámetros (max_execution_time & memory_limit).'; +$_LANG['We strongly recommend that you inform your hosting provider to modify the settings before process to the update.'] = 'Le aconsejamos que avise a su hosting antes de comenzar la actualización para que modifique los parámetros PHP.'; +$_LANG['Let\'s go!'] = 'El proceso ha comenzado'; +$_LANG['Click on the "Next" button to start the upgrade, this can take several minutes,'] = 'Pulse en "Siguiente" para comenzar la actualización, esto puede llevar unos minutos,'; +$_LANG['do not close the window and be patient.'] = 'no cierre la ventana y espere.'; +$_LANG['Your update is completed!'] = 'La actualización ha concluido con éxito'; +$_LANG['Your shop version is now'] = 'La versión de su tienda ya está'; +$_LANG['New features in PrestaShop v'] = 'Nuevas aplicaciones en dans PrestaShop v'; + diff --git a/install-dev/langs/fr.php b/install-dev/langs/fr.php new file mode 100644 index 000000000..f8720ff8e --- /dev/null +++ b/install-dev/langs/fr.php @@ -0,0 +1,270 @@ +cliquez sur suivant pour continuer !'; +$_LANG['Your configuration is invalid. Please fix the issues below:'] = 'Votre configuration n\'est pas valide,
    merci de corriger ces problèmes :'; +$_LANG['You have to create a database, help available in readme_en.txt'] = 'Vous devez au préalable créer une base de données (aide disponible dans le fichier readme.txt)'; +$_LANG['If you check this box and your mail configuration is wrong, your installation might be blocked. If so, please uncheck the box to go to the next step.'] = 'Cette option peut être bloquante si votre configuration e-mail est erronée, merci de la désactiver si vous ne pouvez pas passer à l\'étape suivante.'; +$_LANG['Mcrypt is available (recommended)'] = 'Mcrypt est disponible (recommandé)'; +$_LANG['Your MySQL server doesn\'t support this engine, please use another one like MyISAM'] = 'Le support de ce moteur de base de donnée n\'est pas supporté, veuillez en choisir un autre tel que MyISAM'; +$_LANG['Adult'] = 'Adulte et lingerie'; +$_LANG['Animals and Pets'] = 'Animaux'; +$_LANG['Art and Culture'] = 'Culture et divertissements'; +$_LANG['Babies'] = 'Articles pour bébé'; +$_LANG['Beauty and Personal Care'] = 'Santé et beauté'; +$_LANG['Cars'] = 'Auto et moto'; +$_LANG['Computer Hardware and Software'] = 'Informatique et logiciels'; +$_LANG['Download'] = 'Téléchargement'; +$_LANG['Fashion and accessories'] = 'Vêtements et accessoires'; +$_LANG['Flowers, Gifts and Crafts'] = 'Fleurs et cadeaux'; +$_LANG['Food and beverage'] = 'Alimentation et gastronomie'; +$_LANG['HiFi, Photo and Video'] = 'Hifi, photo et vidéos'; +$_LANG['Home and Garden'] = 'Maison et jardin'; +$_LANG['Home Appliances'] = 'Électroménager'; +$_LANG['Jewelry'] = 'Bijouterie'; +$_LANG['Mobile and Telecom'] = 'Téléphonie et communication'; +$_LANG['Services'] = 'Services'; +$_LANG['Shoes and accessories'] = 'Chaussures et accessoires'; +$_LANG['Sport and Entertainment'] = 'Sport et loisirs'; +$_LANG['Travel'] = 'Voyage et tourisme'; +$_LANG['Main activity:'] = 'Activité principale'; +$_LANG['-- Please choose your main activity --'] = '-- Choisissez une activité --'; +$_LANG['A question about PrestaShop or issues during installation or upgrade? Call us!'] = 'Une question à propos de PrestaShop ou un problème lors de l\'installation ou la mise à jour ? Appelez-nous !'; +$_LANG['Invalid catalog mode'] = 'Champ mode catalog invalide'; +$_LANG['Catalog mode:'] = 'Mode Catalogue :'; +$_LANG['Yes'] = 'Oui'; +$_LANG['No'] = 'Non'; +$_LANG['If you activate this feature, all purchase features will be disabled. You can activate this feature later in your back office'] = 'Si vous activez cette option, toutes les fonctionnalités d\'achats vont être désactivées. Vous pouvez activer cette option plus tard dans votre back-office'; +$_LANG['the already installed version detected is too recent, no update available'] = 'la version déjà installée qui a été détectée est trop récente, aucune mise à jour disponible'; +$_LANG['This information isn\'t required, it will be used for statistical purposes. This information doesn\'t change anything in your store.'] = 'Cette information n\'est pas obligatoire, elle sera utilisée à des fins statistiques. Cette information ne changera rien dans votre boutique.'; +$_LANG['Invalid shop name'] = 'Nom de boutique invalide'; +$_LANG['Your firstname contains some invalid characters'] = 'Votre prénom contient des caractères invalides'; +$_LANG['Your lastname contains some invalid characters'] = 'Votre nom contient des caractères invalides'; +$_LANG['PrestaShop '.INSTALL_VERSION.' Installer'] = ''; +$_LANG['+33 (0)1.40.18.30.04'] = '+33 (0)1.40.18.30.04'; +$_LANG['(FREE)'] = '(GRATUIT)'; +$_LANG['(FREE too!)'] = '(GRATUIT AUSSI !)'; +$_LANG['Shop configuration'] = 'Configuration de la boutique'; +$_LANG['Database Engine:'] = 'Type de base de données :'; +$_LANG['I certify that I backed up my database and application files. I assume all responsibility for any data loss or damage related to this upgrade.'] = 'Je certifie avoir effectué une sauvegarde de ma base de données et de mes fichiers. J\'assume pleinement l\'ensemble des responsabilités liées à toute perte de données ou dommage lié à cette mise à jour.'; +$_LANG['The file /img/logo.jpg is not writable, please CHMOD 755 this file or CHMOD 777'] = 'Le fichier /img/logo.jpg n\'a pas les droits d\'écriture, merci d\'effectuer un CHMOD 755 ou 777 sur ce fichier'; +$_LANG['If you do not know how to enable it, use our turnkey solution PrestaBox at'] = 'Si vous ne savez pas comment l\'activer, utilisez notre solution PrestaBox sur'; +$_LANG['If you do not know how to fix these issues, use turnkey solution PrestaBox at'] = 'Si vous ne parvenez pas à régler ces problèmes, utilisez notre solution PrestaBox sur'; +$_LANG['the already installed version detected is too old, no more update available'] = 'la version déjà installée est trop ancienne, aucune mise à jour possible.'; +$_LANG['Simple mode: Basic installation'] = 'Mode basique : installation simplifiée'; +$_LANG['Full mode: includes'] = 'Mode complet : inclut'; +$_LANG['100+ additional modules'] = '100 modules'; +$_LANG['and demo products'] = 'et des produits de démonstration'; +$_LANG['Installation type'] = 'Type d\'installation'; +$_LANG['Upgrade in progress'] = 'Mise à jour en cours'; +$_LANG['Current query:'] = 'Requête actuelle :'; +$_LANG['Details about this upgrade'] = 'Détails à propos de cette mise à jour'; +$_LANG['Thank you, you will be able to continue the upgrade process by clicking on the "Next" button.'] = 'Merci, vous pouvez continuer la mise à jour en cliquant sur le bouton "Suivant".'; +$_LANG['PrestaShop is upgrading your shop one version after the other, the following upgrade files will be processed:'] = 'PrestaShop met à jour votre boutique une version après l\'autre, les fichiers de mise à jour suivants vont être traités :'; +$_LANG['Upgrade file'] = 'Fichier de mise à jour'; +$_LANG['Modifications to process'] = 'Modifications à prendre en compte'; +$_LANG['(major)'] = '(majeure)'; +$_LANG['TOTAL'] = 'TOTAL'; +$_LANG['Estimated time to complete the'] = 'Temps estimé pour réaliser la'; +$_LANG['modifications:'] = 'modifications :'; +$_LANG['minutes'] = 'minutes'; +$_LANG['minute'] = 'minute'; +$_LANG['seconds'] = 'secondes'; +$_LANG['second'] = 'seconde'; +$_LANG['Depending on your server and the size of your shop'] = 'Selon la puissance de votre serveur et la taille de votre boutique...'; +$_LANG['You did not update your shop for a while,'] = 'Vous n\'avez pas mis à jour votre boutique depuis un moment,'; +$_LANG['major releases have been made ​​available since.'] = 'versions majeures ont été mis à disposition depuis.'; +$_LANG['This is not a problem however the update may take several minutes, try to update your shop more frequently.'] = 'Ce n\'est pas un problème cependant la mise à jour risque de durer quelques minutes. A l\'avenir, essayez de mettre à jour votre boutique plus souvent.'; +$_LANG['No files to process, this might be an error.'] = 'Aucun fichier à traiter, il s\'agit probablement d\'une erreur'; +$_LANG['Hosting parameters'] = 'Paramètres hébergement'; +$_LANG['PrestaShop tries to automatically set the best settings for your server in order the update to be successful.'] = 'PrestaShop essaye automatiquement de configurer pour vous les paramètres de votre serveur afin que la mise à jour se déroule correctement.'; +$_LANG['PHP parameter'] = 'Paramètre PHP'; +$_LANG['Description'] = 'Description'; +$_LANG['Current value'] = 'Valeur actuelle'; +$_LANG['Maximum allowed time for the upgrade'] = 'Temps maximum autorisé pour la mise à jour'; +$_LANG['Maximum memory allowed for the upgrade'] = 'Mémoire maximum autorisée pour la mise à jour'; +$_LANG['All your settings seem to be OK, go for it!'] = 'Tous vos paramètres semblent OK, foncez !'; +$_LANG['Let\'s go!'] = 'C\'est parti !'; +$_LANG['Click on the "Next" button to start the upgrade, this can take several minutes,'] = 'Cliquez sur le bouton "Suivant" pour démarrer la mise à jour, cela peut prendre plusieurs minutes,'; +$_LANG['do not close the window and be patient.'] = 'ne fermez pas la fenêtre et soyez patient.'; +$_LANG['Your update is completed!'] = 'Votre mise à jour est terminée !'; +$_LANG['Your shop version is now'] = 'La version de votre boutique est maintenant'; +$_LANG['New features in PrestaShop v'] = 'Nouvelles fonctionnalités dans PrestaShop v'; +$_LANG['Beware, your settings look correct but are not optimal, if you encounter problems (upgrade too long, memory error...), please ask your hosting provider to increase the values of these parameters (max_execution_time & memory_limit).'] = 'Attention, votre paramètres semblent corrects mais ne sont pas optimaux, si jamais vous rencontrez des soucis (mise à jour qui se bloque avant la fin, erreur de mémoire...), merci de demander à votre hébergeur d\'augmenter les valeurs de ces paramètres (max_execution_time & memory_limit).'; +$_LANG['We strongly recommend that you inform your hosting provider to modify the settings before process to the update.'] = 'Nous vous recommandons fortement de prévenir votre hébergeur avant de procéder à la mise à jour afin qu\'il modifie ces paramètres PHP.'; \ No newline at end of file diff --git a/install-dev/langs/it.php b/install-dev/langs/it.php new file mode 100644 index 000000000..9e9cf9086 --- /dev/null +++ b/install-dev/langs/it.php @@ -0,0 +1,269 @@ +clicca su successivo per continuare!'; +$_LANG['Your configuration is invalid. Please fix the issues below:'] = 'La tua configurazione non è valida,
    correggi questi problemi:'; +$_LANG['You have to create a database, help available in readme_en.txt'] = 'Devi prima creare un database (aiuto disponibile nel file readme.txt)'; +$_LANG['If you check this box and your mail configuration is wrong, your installation might be blocked. If so, please uncheck the box to go to the next step.'] = 'Se la tua configurazione e-mail è errata, questa opzione può essere bloccata; disattivala se non puoi passare alla fase successiva.'; +$_LANG['Mcrypt is available (recommended)'] = 'Mcrypt è disponibile (consigliato)'; +$_LANG['Your MySQL server doesn\'t support this engine, please use another one like MyISAM'] = 'Il supporto di questo motore di database non è supportato, scegline un altro come MyISAM'; +$_LANG['Adult'] = 'Adulti e indumenti intimi'; +$_LANG['Animals and Pets'] = 'Animali'; +$_LANG['Art and Culture'] = 'Cultura e svaghi'; +$_LANG['Babies'] = 'Articoli per bambini'; +$_LANG['Beauty and Personal Care'] = 'Salute e bellezza'; +$_LANG['Cars'] = 'Auto e moto'; +$_LANG['Computer Hardware and Software'] = 'Informatica e software'; +$_LANG['Download'] = 'Download'; +$_LANG['Fashion and accessories'] = 'Abiti e accessori'; +$_LANG['Flowers, Gifts and Crafts'] = 'Fiori e regali'; +$_LANG['Food and beverage'] = 'Alimentazione e gastronomia'; +$_LANG['HiFi, Photo and Video'] = 'Hifi, foto e video'; +$_LANG['Home and Garden'] = 'Casa e giardinaggio'; +$_LANG['Home Appliances'] = 'Elettrodomestici'; +$_LANG['Jewelry'] = 'Gioielleria'; +$_LANG['Mobile and Telecom'] = 'Telefonia e comunicazioni'; +$_LANG['Services'] = 'Servizi'; +$_LANG['Shoes and accessories'] = 'Scarpe e accessori'; +$_LANG['Sport and Entertainment'] = 'Sport e divertimenti'; +$_LANG['Travel'] = 'Viaggi e turismo'; +$_LANG['Main activity:'] = 'Attività principale'; +$_LANG['-- Please choose your main activity --'] = '-- Scegli un\'attività --'; +$_LANG['A question about PrestaShop or issues during installation or upgrade? Call us!'] = 'Hai domande su PrestaShop o un problema per l\'installazione o l\'aggiornamento? Chiamaci!'; +$_LANG['Invalid catalog mode'] = 'Campo modalità catalogo non valido'; +$_LANG['Catalog mode:'] = 'Modalità catalogo:'; +$_LANG['Yes'] = 'Sì'; +$_LANG['No'] = 'No'; +$_LANG['If you activate this feature, all purchase features will be disabled. You can activate this feature later in your back office'] = 'Se attivi questa opzione, tutte le funzioni di acquisto saranno disattivate. Potrai attivare questa opzione più tardi nel tuo back-office'; +$_LANG['the already installed version detected is too recent, no update available'] = 'la versione già installata individuata è troppo recente, nessun aggiornamento disponibile'; +$_LANG['This information isn\'t required, it will be used for statistical purposes. This information doesn\'t change anything in your store.'] = 'Queste informazioni non sono obbligatorie, saranno utilizzate a fini statistici. Queste informazioni non cambieranno nulla nel tuo negozio.'; +$_LANG['If you do not know how to enable it, use our turnkey solution PrestaBox at'] = 'Se non sai come abilitarlo, usa la nostra soluzione innovativa PrestaBox su'; +$_LANG['Invalid shop name'] = 'nome negozio non valido'; +$_LANG['Your firstname contains some invalid characters'] = 'Il tuo nome contiene dei caratteri non validi'; +$_LANG['Your lastname contains some invalid characters'] = 'Il tuo cognome contiene dei caratteri non validi'; +$_LANG['The file /img/logo.jpg is not writable, please CHMOD 755 this file or CHMOD 777'] = 'Il file /img/logo.jpg non ?scrivibile, ti preghiamo di effettuare CHMOD 755 oppure CHMOD 777'; +$_LANG['the already installed version detected is too old, no more update available'] = 'La versione già installata individuata è troppo vecchia, non ci sono più aggiornamenti disponibili'; +$_LANG['If you do not know how to fix these issues, use turnkey solution PrestaBox at'] = 'Se non sai come correggere questi problemi, usa la soluzione innovativa PrestaBox su'; +$_LANG['Database Engine:'] = 'Motore database'; +$_LANG['Installation type'] = 'Tipo di installazione'; +$_LANG['Simple mode: Basic installation'] = 'Modalità semplice: installazione base'; +$_LANG['(FREE)'] = '(GRATUITO)'; +$_LANG['Full mode: includes'] = 'Modalità completa: include'; +$_LANG['100+ additional modules'] = 'Più di 100 moduli aggiuntivi'; +$_LANG['and demo products'] = 'e prodotti demo'; +$_LANG['(FREE too!)'] = 'GRATUITI!'; +$_LANG['Shop configuration'] = 'Configurazione negozio'; +$_LANG['I certify that I backed up my database and application files. I assume all responsibility for any data loss or damage related to this upgrade.'] = 'Dichiaro di aver effettuato il backup del mio database e dei file di applicazione. Mi assumo tutte le responsabilità per qualsiasi perdita dei dati o danni relativi a questo aggiornamento'; +$_LANG['Upgrade in progress'] = 'Aggiornamento in corso'; +$_LANG['Current query:'] = 'Domanda attuale'; +$_LANG['Details about this upgrade'] = 'Dettagli su questo aggiornamento'; +$_LANG['Thank you, you will be able to continue the upgrade process by clicking on the "Next" button.'] = 'Grazie, potrai continuare il processo di aggiornamento cliccando sul tasto “Successivo”.'; +$_LANG['PrestaShop is upgrading your shop one version after the other, the following upgrade files will be processed:'] = 'Prestashop sta aggiornando il tuo negozio una versione dopo l\'altra; saranno elaborati i seguenti file di aggiornamento:'; +$_LANG['Upgrade file'] = 'Aggiorna file'; +$_LANG['Modifications to process'] = 'Modifiche da elaborare'; +$_LANG['(major)'] = '(maggiore)'; +$_LANG['TOTAL'] = 'TOTALE'; +$_LANG['Estimated time to complete the'] = 'Tempo previsto per completare'; +$_LANG['modifications:'] = 'modifiche:'; +$_LANG['minutes'] = 'minuti'; +$_LANG['minute'] = 'minuto'; +$_LANG['seconds'] = 'secondi'; +$_LANG['second'] = 'secondo'; +$_LANG['Depending on your server and the size of your shop'] = 'In base al tuo server e alle dimensioni del tuo negozio'; +$_LANG['You did not update your shop for a while,'] = 'E\' da un po\' di tempo che non aggiorni il tuo negozio'; +$_LANG['major releases have been made available since.'] = 'Sono state messe a disposizione importanti novità'; +$_LANG['This is not a problem however the update may take several minutes, try to update your shop more frequently.'] = 'Questo non è un problema, comunque l’aggiornamento può impiegare diversi minuti: cerca di aggiornare il tuo negozio più spesso'; +$_LANG['No files to process, this might be an error.'] = 'Nessun file da elaborare, potrebbe esserci un errore'; +$_LANG['Hosting parameters'] = 'Parametri host'; +$_LANG['PrestaShop tries to automatically set the best settings for your server in order the update to be successful.'] = 'PrestaShop cerca di impostare automaticamente le migliori configurazioni per il tuo server in modo che l’aggiornamento riesca con successo.'; +$_LANG['PHP parameter'] = 'Parametro PHP'; +$_LANG['Description'] = 'Descrizione'; +$_LANG['Current value'] = 'Valuta attuale'; +$_LANG['Maximum allowed time for the upgrade'] = 'Tempo massimo concesso per l\'aggiornamento'; +$_LANG['Maximum memory allowed for the upgrade'] = 'Memoria massima concessa per l\'aggiornamento'; +$_LANG['All your settings seem to be OK, go for it!'] = 'Tutte le impostazioni sembrano OK, procedi pure!'; +$_LANG['Beware, your settings look correct but are not optimal, if you encounter problems (upgrade too long, memory error...), please ask your hosting provider to increase the values of these parameters (max_execution_time & memory_limit).'] = 'Attenzione, le tue impostazioni sembrano corrette ma non ottimali; se incontrassi dei problemi (aggiornamento troppo lungo, errore di memoria...), chiedi al tuo host di aumentare i valori di questi parametri (tempo massimo di esecuzione e limite di memoria).'; +$_LANG['We strongly recommend that you inform your hosting provider to modify the settings before process to the update.'] = 'Ti suggeriamo di informare il tuo host in modo da modificare le impostazioni prima di iniziare l’aggiornamento.'; +$_LANG['Let\'s go!'] = 'Via!'; +$_LANG['Click on the "Next" button to start the upgrade, this can take several minutes,'] = 'Clicca sul tasto “Successivo” per iniziare l’aggiornamento; potrebbero volerci alcuni minuti,'; +$_LANG['do not close the window and be patient.'] = 'non chiudere la finestra e attendi'; +$_LANG['Your update is completed!'] = 'L\'aggiornamento è completo!'; +$_LANG['Your shop version is now'] = 'La tua versione adesso è'; +$_LANG['New features in PrestaShop v'] = 'Nuove caratteristiche in PrestaShop v'; + diff --git a/install-dev/langs/list.xml b/install-dev/langs/list.xml new file mode 100644 index 000000000..a41934cd5 --- /dev/null +++ b/install-dev/langs/list.xml @@ -0,0 +1,53 @@ + + + + + + ../img/l/1.jpg + + + en-us + + en + + + + ../img/l/2.jpg + + + fr-fr + fr + + fr + + + + ../img/l/3.jpg + + + es-es + es + + es + + + + ../img/l/4.jpg + + + de-de + de + + de + + + + ../img/l/5.jpg + + + it-it + it + + it + + diff --git a/install-dev/langs/us.php b/install-dev/langs/us.php new file mode 100644 index 000000000..e8a1ffbfd --- /dev/null +++ b/install-dev/langs/us.php @@ -0,0 +1,85 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +@set_time_limit(0); +@ini_set('max_execution_time', '0'); +@ini_set('memory_limit', '64M'); +require(dirname(__FILE__).'/../config/autoload.php'); + +/* Redefine REQUEST_URI if empty (on some webservers...) */ +if (!isset($_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_URI'] == '') + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; +if ($tmp = strpos($_SERVER['REQUEST_URI'], '?')) + $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], 0, $tmp); +$_SERVER['REQUEST_URI'] = str_replace('//', '/', $_SERVER['REQUEST_URI']); + +define('INSTALL_VERSION', '1.4.1.0'); +define('INSTALL_PATH', dirname(__FILE__)); +define('PS_INSTALLATION_IN_PROGRESS', true); +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); +define('SETTINGS_FILE', INSTALL_PATH.'/../config/settings.inc.php'); +define('DEFINES_FILE', INSTALL_PATH.'/../config/defines.inc.php'); +define('INSTALLER__PS_BASE_URI', substr($_SERVER['REQUEST_URI'], 0, -1 * (strlen($_SERVER['REQUEST_URI']) - strrpos($_SERVER['REQUEST_URI'], '/')) - strlen(substr(dirname($_SERVER['REQUEST_URI']), strrpos(dirname($_SERVER['REQUEST_URI']), '/')+1)))); +define('INSTALLER__PS_BASE_URI_ABSOLUTE', 'http://'.ToolsInstall::getHttpHost(false, true).INSTALLER__PS_BASE_URI); + +// XML Header +header('Content-Type: text/xml'); + +// Switching method +if(isset($_GET['method'])) +{ + switch ($_GET['method']) + { + case 'checkConfig' : + include_once('xml/checkConfig.php'); + break; + + case 'checkDB' : + include_once('xml/checkDB.php'); + break; + + case 'createDB' : + include_once('xml/createDB.php'); + break; + + case 'checkMail' : + include_once('xml/checkMail.php'); + break; + + case 'checkShopInfos' : + include_once('xml/checkShopInfos.php'); + break; + + case 'doUpgrade' : + include_once('xml/doUpgrade.php'); + break; + } +} diff --git a/install-dev/module_tools.php b/install-dev/module_tools.php new file mode 100644 index 000000000..1b4b7a224 --- /dev/null +++ b/install-dev/module_tools.php @@ -0,0 +1,37 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function moduleReinstaller($moduleName, $force = false) +{ + $module = Module::getInstanceByName($moduleName); + if (!is_object($module)) + die(Tools::displayError()); + if ($module->id AND ($module->uninstall() OR $force)) + return $module->install(); + return false; +} + diff --git a/install-dev/php/add_module_to_hook.php b/install-dev/php/add_module_to_hook.php new file mode 100644 index 000000000..8c86d9c22 --- /dev/null +++ b/install-dev/php/add_module_to_hook.php @@ -0,0 +1,58 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function add_module_to_hook($module_name, $hook_name) +{ + $result = false; + + $id_module = Db::getInstance()->getValue(' + SELECT `id_module` FROM `'._DB_PREFIX_.'module` + WHERE `name` = \''.pSQL($module_name).'\'' + ); + + if ((int)$id_module > 0) + { + $id_hook = Db::getInstance()->getValue(' + SELECT `id_hook` FROM `'._DB_PREFIX_.'hook` WHERE `name` = \''.pSQL($hook_name).'\' + '); + + if ((int)$id_hook > 0) + { + $result = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'hook_module` (`id_module`, `id_hook`, `position`) + VALUES ( + '.(int)$id_module.', + '.(int)$id_hook.', + (SELECT IFNULL( + (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `'._DB_PREFIX_.'hook_module` WHERE `id_hook` = '.(int)$id_hook.') AS max_position), 1)) + )'); + } + } + + return $result; +} + diff --git a/install-dev/php/add_new_tab.php b/install-dev/php/add_new_tab.php new file mode 100644 index 000000000..04657035a --- /dev/null +++ b/install-dev/php/add_new_tab.php @@ -0,0 +1,59 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function add_new_tab($className, $name, $id_parent) +{ + $array = array(); + foreach (explode('|', $name) AS $item) + { + $temp = explode(':', $item); + $array[$temp[0]] = $temp[1]; + } + + if (!(int)Db::getInstance()->getValue('SELECT count(id_tab) FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \''.pSQL($className).'\' ')) + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'tab` (`id_parent`, `class_name`, `module`, `position`) VALUES ('.(int)$id_parent.', \''.pSQL($className).'\', \'\', + (SELECT MAX(t.position)+ 1 FROM `'._DB_PREFIX_.'tab` t WHERE t.id_parent = '.(int)$id_parent.'))'); + + foreach (Language::getLanguages() AS $lang) + { + Db::getInstance()->Execute(' + INSERT IGNORE INTO `'._DB_PREFIX_.'tab_lang` (`id_lang`, `id_tab`, `name`) + VALUES ('.(int)$lang['id_lang'].', ( + SELECT `id_tab` + FROM `'._DB_PREFIX_.'tab` + WHERE `class_name` = \''.pSQL($className).'\' LIMIT 0,1 + ), \''.pSQL(isset($array[$lang['iso_code']]) ? $array[$lang['iso_code']] : $array['en']).'\') + '); + } + + Db::getInstance()->Execute('INSERT IGNORE INTO `'._DB_PREFIX_.'access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) + (SELECT `id_profile`, ( + SELECT `id_tab` + FROM `'._DB_PREFIX_.'tab` + WHERE `class_name` = \''.pSQL($className).'\' LIMIT 0,1 + ), 1, 1, 1, 1 FROM `'._DB_PREFIX_.'profile` )'); +} \ No newline at end of file diff --git a/install-dev/php/admin_stores_tab.php b/install-dev/php/admin_stores_tab.php new file mode 100644 index 000000000..3c844b033 --- /dev/null +++ b/install-dev/php/admin_stores_tab.php @@ -0,0 +1,21 @@ +ExecuteS('SELECT * FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \'AdminStores\'')) + { + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'tab` (`class_name`, `id_parent`, `position`) VALUES (\'AdminStores\', 0, 11)'); + + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'tab_lang` (`id_lang`, `id_tab`, `name`) + VALUES + (1, (SELECT `id_tab` FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \'AdminStores\'), \'Stores\'), + (2, (SELECT `id_tab` FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \'AdminStores\'), \'Magasins\'), + (3, (SELECT `id_tab` FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \'AdminStores\'), \'Tiendas\')'); + + + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) ( + SELECT `id_profile`, (SELECT `id_tab` FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \'AdminStores\' LIMIT 1), 1, 1, 1, 1 FROM `'._DB_PREFIX_.'profile` + )'); + } +} + diff --git a/install-dev/php/alter_cms_block.php b/install-dev/php/alter_cms_block.php new file mode 100644 index 000000000..ded5fc023 --- /dev/null +++ b/install-dev/php/alter_cms_block.php @@ -0,0 +1,40 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function alter_cms_block() +{ + // No one will know if the table does not exist :] Thanks Damien for your solution ;) + DB::getInstance()->Execute('ALTER TABLE `PREFIX_cms_block_lang` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); + + DB::getInstance()->Execute('ALTER TABLE `PREFIX_cms_block` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); + + DB::getInstance()->Execute('ALTER TABLE `PREFIX_cms_block_page` CHANGE `id_block_cms` `id_cms_block` INT( 10 ) UNSIGNED NOT NULL'); + + DB::getInstance()->Execute('ALTER TABLE `ps_cms_block_page` CHANGE `id_block_cms_page` `id_cms_block_page` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT'); + +} + diff --git a/install-dev/php/blocknewsletter.php b/install-dev/php/blocknewsletter.php new file mode 100644 index 000000000..1c8908275 --- /dev/null +++ b/install-dev/php/blocknewsletter.php @@ -0,0 +1,33 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function blocknewsletter() +{ + // No one will know if the table does not exist :] + DB::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'newsletter ADD `http_referer` VARCHAR(255) NULL'); +} + diff --git a/install-dev/php/cms_block.php b/install-dev/php/cms_block.php new file mode 100644 index 000000000..13a441d4f --- /dev/null +++ b/install-dev/php/cms_block.php @@ -0,0 +1,33 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +function cms_block() +{ + if (!Db::getInstance()->execute('SELECT `display_store` FROM `'._DB_PREFIX_.'cms_block` LIMIT 1')) + return Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'cms_block` ADD `display_store` TINYINT NOT NULL DEFAULT \'1\''); + return true; +} + diff --git a/install-dev/php/confcleaner.php b/install-dev/php/confcleaner.php new file mode 100644 index 000000000..d251e8889 --- /dev/null +++ b/install-dev/php/confcleaner.php @@ -0,0 +1,48 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function configuration_double_cleaner() +{ + $result = Db::getInstance()->ExecuteS(' + SELECT name, MIN(id_configuration) AS minid + FROM '._DB_PREFIX_.'configuration + GROUP BY name + HAVING count(name) > 1'); + foreach ($result as $row) + { + DB::getInstance()->Execute(' + DELETE FROM '._DB_PREFIX_.'configuration + WHERE name = \''.addslashes($row['name']).'\' + AND id_configuration != '.(int)($row['minid'])); + } + DB::getInstance()->Execute(' + DELETE FROM '._DB_PREFIX_.'configuration_lang + WHERE id_configuration NOT IN ( + SELECT id_configuration + FROM '._DB_PREFIX_.'configuration)'); +} + diff --git a/install-dev/php/country_to_timezone.php b/install-dev/php/country_to_timezone.php new file mode 100644 index 000000000..741bce232 --- /dev/null +++ b/install-dev/php/country_to_timezone.php @@ -0,0 +1,39 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$country = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $_GET['country']); + +$special = array( + 'US' => 'US/Eastern', + 'RU' => 'Europe/Moscow' +); + +if (!empty($_GET['country']) AND !empty($special[$_GET['country']])) + $country[0] = $special[$_GET['country']]; + +if(isset($country[0])) + echo $country[0]; diff --git a/install-dev/php/customizations.php b/install-dev/php/customizations.php new file mode 100644 index 000000000..9735aae4f --- /dev/null +++ b/install-dev/php/customizations.php @@ -0,0 +1,44 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +define('_CONTAINS_REQUIRED_FIELD_', 2); + +function add_required_customization_field_flag() +{ + if (($result = Db::getInstance()->ExecuteS('SELECT `id_product` FROM `'._DB_PREFIX_.'customization_field` WHERE `required` = 1')) === false) + return false; + if (Db::getInstance()->numRows()) + { + $productIds = array(); + foreach ($result AS $row) + $productIds[] = (int)($row['id_product']); + if (!Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'product` SET `customizable` = '._CONTAINS_REQUIRED_FIELD_.' WHERE `id_product` IN ('.implode(', ', $productIds).')')) + return false; + } + return true; +} + diff --git a/install-dev/php/database_structure.php b/install-dev/php/database_structure.php new file mode 100644 index 000000000..c52dbd3e3 --- /dev/null +++ b/install-dev/php/database_structure.php @@ -0,0 +1,47 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function group_reduction_column_fix() +{ + if (!Db::getInstance()->execute('SELECT `group_reduction` FROM `'._DB_PREFIX_.'order_detail` LIMIT 1')) + return Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'order_detail` ADD `group_reduction` DECIMAL(10, 2) NOT NULL AFTER `reduction_amount`'); + return true; +} + +function ecotax_tax_application_fix() +{ + if (!Db::getInstance()->execute('SELECT `ecotax_tax_rate` FROM `'._DB_PREFIX_.'order_detail` LIMIT 1')) + return Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'order_detail` ADD `ecotax_tax_rate` DECIMAL(5, 3) NOT NULL AFTER `ecotax`'); + return true; +} + +function id_currency_country_fix() +{ + if (!Db::getInstance()->execute('SELECT `id_currency` FROM `'._DB_PREFIX_.'country` LIMIT 1')) + return Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'country` ADD `id_currency` INT NOT NULL DEFAULT \'0\' AFTER `id_zone`'); + return true; +} \ No newline at end of file diff --git a/install-dev/php/deliverynumber.php b/install-dev/php/deliverynumber.php new file mode 100644 index 000000000..04dfded4d --- /dev/null +++ b/install-dev/php/deliverynumber.php @@ -0,0 +1,55 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function delivery_number_set() +{ + Configuration::loadConfiguration(); + $number = 1; + + // Update each order with a number + $result = Db::getInstance()->ExecuteS(' + SELECT id_order + FROM '._DB_PREFIX_.'orders + ORDER BY id_order'); + foreach ($result as $row) + { + $order = new Order((int)($row['id_order'])); + $history = $order->getHistory(false); + foreach ($history as $row2) + { + $oS = new OrderState((int)($row2['id_order_state']), Configuration::get('PS_LANG_DEFAULT')); + if ($oS->delivery) + { + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'orders SET delivery_number = '.(int)($number++).', `delivery_date` = `date_add` WHERE id_order = '.(int)($order->id)); + break ; + } + } + } + // Add configuration var + Configuration::updateValue('PS_DELIVERY_NUMBER', (int)($number)); +} + diff --git a/install-dev/php/editorial_update.php b/install-dev/php/editorial_update.php new file mode 100644 index 000000000..5e5be356c --- /dev/null +++ b/install-dev/php/editorial_update.php @@ -0,0 +1,73 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function editorial_update() +{ + /*Table creation*/ + + if (Db::getInstance()->getValue('SELECT `id_module` FROM `'._DB_PREFIX_.'module` WHERE `name`="editorial"')) + { + Db::getInstance()->Execute(' + CREATE TABLE `'._DB_PREFIX_.'editorial` ( + `id_editorial` int(10) unsigned NOT NULL auto_increment, + `body_home_logo_link` varchar(255) NOT NULL, + PRIMARY KEY (`id_editorial`)) + ENGINE=MyISAM DEFAULT CHARSET=utf8'); + + Db::getInstance()->Execute(' + CREATE TABLE `'._DB_PREFIX_.'editorial_lang` ( + `id_editorial` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `body_title` varchar(255) NOT NULL, + `body_subheading` varchar(255) NOT NULL, + `body_paragraph` text NOT NULL, + `body_logo_subheading` varchar(255) NOT NULL, + PRIMARY KEY (`id_editorial`, `id_lang`)) + ENGINE=MyISAM DEFAULT CHARSET=utf8'); + + if (file_exists(dirname(__FILE__).'/../../modules/editorial/editorial.xml')) + { + $xml = simplexml_load_file(dirname(__FILE__).'/../../modules/editorial/editorial.xml'); + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'editorial`(`id_editorial`, `body_home_logo_link`) VALUES(1, "'.(isset($xml->body->home_logo_link) ? pSQL($xml->body->home_logo_link) : '').'")'); + + + $languages = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'lang`'); + foreach ($languages as $language) + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'editorial_lang` (`id_editorial`, `id_lang`, `body_title`, `body_subheading`, `body_paragraph`, `body_logo_subheading`) + VALUES (1, '.(int)($language['id_lang']).', + "'.(isset($xml->body->{'title_'.$language['id_lang']}) ? pSQL($xml->body->{'title_'.$language['id_lang']}) : '').'", + "'.(isset($xml->body->{'subheading_'.$language['id_lang']}) ? pSQL($xml->body->{'subheading_'.$language['id_lang']}) : '').'", + "'.(isset($xml->body->{'paragraph_'.$language['id_lang']}) ? pSQL($xml->body->{'paragraph_'.$language['id_lang']}, true) : '').'", + "'.(isset($xml->body->{'logo_subheading_'.$language['id_lang']}) ? pSQL($xml->body->{'logo_subheading_'.$language['id_lang']}) : '').'")'); + + unlink(dirname(__FILE__).'/../../modules/editorial/editorial.xml'); + } + } +} + diff --git a/install-dev/php/generate_ntree.php b/install-dev/php/generate_ntree.php new file mode 100644 index 000000000..2bfaf107c --- /dev/null +++ b/install-dev/php/generate_ntree.php @@ -0,0 +1,31 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function generate_ntree() +{ + Category::regenerateEntireNtree(); +} diff --git a/install-dev/php/generate_tax_rules.php b/install-dev/php/generate_tax_rules.php new file mode 100644 index 000000000..59f47fb69 --- /dev/null +++ b/install-dev/php/generate_tax_rules.php @@ -0,0 +1,87 @@ +active = 1; + $group->name = 'Rule '.$tax['rate'].'%'; + $group->save(); + $id_tax_rules_group = $group->id; + + + $countries = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'country` c + LEFT JOIN `'._DB_PREFIX_.'zone` z ON (c.`id_zone` = z.`id_zone`) + LEFT JOIN `'._DB_PREFIX_.'tax_zone` tz ON (tz.`id_zone` = z.`id_zone`) + WHERE `id_tax` = '.(int)$id_tax + ); + if ($countries) + { + foreach ($countries AS $country) + { + $res = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `state_behavior`, `id_tax`) + VALUES ( + '.(int)$group->id.', + '.(int)$country['id_country'].', + 0, + 0, + '.(int)$id_tax. + ')'); + + } + } + + $states = Db::getInstance()->ExecuteS(' + SELECT * FROM `'._DB_PREFIX_.'states s + LEFT JOIN `'._DB_PREFIX_.'tax_state ts ON (ts.`id_state` = s.`id_state`) + WHERE `id_tax` = '.(int)$id_tax + ); + + if ($states) + { + foreach ($states AS $state) + { + if (!in_array($state['tax_behavior'], array(PS_PRODUCT_TAX, PS_STATE_TAX, PS_BOTH_TAX))) + $tax_behavior = PS_PRODUCT_TAX; + else + $tax_behavior = $state['tax_behavior']; + + $res = Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `state_behavior`, `id_tax`) + VALUES ( + '.(int)$group->id.', + '.(int)$state['id_country'].', + '.(int)$state['id_state'].', + '.(int)$tax_behavior.', + '.(int)$id_tax. + ')'); + } + } + + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'product` + SET `id_tax_rules_group` = '.(int)$group->id.' + WHERE `id_tax` = '.(int)$id_tax + ); + + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'carrier` + SET `id_tax_rules_group` = '.(int)$group->id.' + WHERE `id_tax` = '.(int)$id_tax + ); + + + if (Configuration::get('SOCOLISSIMO_OVERCOST_TAX') == $id_tax) + Configuration::updateValue('SOCOLISSIMO_OVERCOST_TAX', $group->id); + } +} + diff --git a/install-dev/php/gridextjs_deprecated.php b/install-dev/php/gridextjs_deprecated.php new file mode 100644 index 000000000..2edbcc84d --- /dev/null +++ b/install-dev/php/gridextjs_deprecated.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function gridextjs_deprecated() +{ + if (file_exists(dirname(__FILE__).'/../../modules/gridextjs')) + return rename(dirname(__FILE__).'/../../modules/gridextjs', dirname(__FILE__).'/../../modules/gridextjs.deprecated'); + + return true; +} + diff --git a/install-dev/php/invoicenumber.php b/install-dev/php/invoicenumber.php new file mode 100644 index 000000000..6e05b8461 --- /dev/null +++ b/install-dev/php/invoicenumber.php @@ -0,0 +1,55 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function invoice_number_set() +{ + Configuration::loadConfiguration(); + $number = 1; + + // Update each order with a number + $result = Db::getInstance()->ExecuteS(' + SELECT id_order + FROM '._DB_PREFIX_.'orders + ORDER BY id_order'); + foreach ($result as $row) + { + $order = new Order((int)($row['id_order'])); + $history = $order->getHistory(false); + foreach ($history as $row2) + { + $oS = new OrderState((int)($row2['id_order_state']), Configuration::get('PS_LANG_DEFAULT')); + if ($oS->invoice) + { + Db::getInstance()->Execute('UPDATE '._DB_PREFIX_.'orders SET invoice_number = '.(int)($number++).', `invoice_date` = `date_add` WHERE id_order = '.(int)($order->id)); + break ; + } + } + } + // Add configuration var + Configuration::updateValue('PS_INVOICE_NUMBER', (int)($number)); +} + diff --git a/install-dev/php/module_tools.php b/install-dev/php/module_tools.php new file mode 100644 index 000000000..de5de2799 --- /dev/null +++ b/install-dev/php/module_tools.php @@ -0,0 +1,37 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function moduleReinstaller($moduleName, $force = false) +{ + $module = Module::getInstanceByName($moduleName); + if (!is_object($module)) + die(Tools::displayError()); + if ($module->uninstall() OR $force) + return $module->install(); + return false; +} + diff --git a/install-dev/php/move_crossselling.php b/install-dev/php/move_crossselling.php new file mode 100644 index 000000000..44aefb5f9 --- /dev/null +++ b/install-dev/php/move_crossselling.php @@ -0,0 +1,14 @@ +ExecuteS('SELECT FROM `'._DB_PREFIX_.'module` WHERE `name` = \'crossselling\'')) +{ +Db::getInstance()->Execute(' +INSERT INTO `'._DB_PREFIX_.'hook_module` (`id_module`, `id_hook`, `position`) +VALUES ((SELECT `id_module` FROM `'._DB_PREFIX_.'module` WHERE `name` = \'crossselling\'), 9, (SELECT max_position FROM (SELECT MAX(position)+1 as max_position FROM `'._DB_PREFIX_.'hook_module` WHERE `id_hook` = 9) tmp))'); +} + +} + diff --git a/install-dev/php/price_converter.php b/install-dev/php/price_converter.php new file mode 100644 index 000000000..2979bdb54 --- /dev/null +++ b/install-dev/php/price_converter.php @@ -0,0 +1,48 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/* Convert product prices from the PS < 1.3 wrong rounding system to the new 1.3 one */ +function convert_product_price() +{ + $taxes = Tax::getTaxes(); + $taxRates = array(); + foreach ($taxes as $data) + $taxRates[$data['id_tax']] = (float)($data['rate']) / 100; + $resource = DB::getInstance()->ExecuteS('SELECT `id_product`, `price`, `id_tax` FROM `'._DB_PREFIX_.'product`', false); + while ($row = DB::getInstance()->nextRow($resource)) + if ($row['id_tax']) + { + $price = $row['price'] * (1 + $taxRates[$row['id_tax']]); + $decimalPart = $price - (int)$price; + if ($decimalPart < 0.000001) + { + $newPrice = (float)(number_format($price, 6, '.', '')); + $newPrice = Tools::floorf($newPrice / (1 + $taxRates[$row['id_tax']]), 6); + DB::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'product` SET `price` = '.$newPrice.' WHERE `id_product` = '.(int)($row['id_product'])); + } + } +} diff --git a/install-dev/php/regenerate_level_depth.php b/install-dev/php/regenerate_level_depth.php new file mode 100644 index 000000000..ab16f192b --- /dev/null +++ b/install-dev/php/regenerate_level_depth.php @@ -0,0 +1,42 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function regenerate_level_depth() +{ + $category = new Category(); + $cats = $category->getSimpleCategories((int)Configuration::get('PS_LANG_DEFAULT')); + foreach($cats as $cat) + { + $category = new Category((int)$cat['id_category']); + $catParent = new Category((int)$category->id_parent); + $category->level_depth = $catParent->level_depth +1; + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'category` SET `level_depth` = '.(int)$category->level_depth.' WHERE `id_category` = '.(int)$category->id); + } + + Category::regenerateEntireNtree(); + +} \ No newline at end of file diff --git a/install-dev/php/reorderpositions.php b/install-dev/php/reorderpositions.php new file mode 100644 index 000000000..8560a08bf --- /dev/null +++ b/install-dev/php/reorderpositions.php @@ -0,0 +1,71 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function reorderpositions() +{ + /* Clean products positions */ + if ($cat = Category::getCategories(1, false, false)) + foreach($cat AS $i => $categ) + Product::cleanPositions((int)$categ['id_category']); + + //clean Category position and delete old position system + Language::loadLanguages(); + $language = Language::getLanguages(); + $cat_parent = Db::getInstance()->ExecuteS('SELECT DISTINCT c.id_parent FROM `'._DB_PREFIX_.'category` c WHERE id_category != 1'); + foreach($cat_parent AS $parent) + { + $result = Db::getInstance()->ExecuteS(' + SELECT DISTINCT c.*, cl.* + FROM `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.(int)(Configuration::get('PS_LANG_DEFAULT')).') + WHERE c.id_parent = '.(int)($parent['id_parent']).' + ORDER BY name ASC'); + foreach($result AS $i => $categ) + { + $sizeof = sizeof($result); + for ($i = 0; $i < $sizeof; ++$i) + { + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'category` + SET `position` = '.(int)($i).' + WHERE `id_parent` = '.(int)($categ['id_parent']).' + AND `id_category` = '.(int)($result[$i]['id_category'])); + } + + foreach($language AS $lang) + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'category` c + LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category`) + SET `name` = \''.preg_replace('/^[0-9]+\./', '',$categ['name']).'\' + WHERE c.id_category = '.(int)($categ['id_category']).' AND id_lang = \''.(int)($lang['id_lang']).'\''); + } + } + + /* Clean CMS positions */ + if ($cms_cat = CMSCategory::getCategories(1, false, false)) + foreach($cms_cat AS $i => $categ) + CMS::cleanPositions((int)($categ['id_cms_category'])); +} \ No newline at end of file diff --git a/install-dev/php/setallgroupsonhomecategory.php b/install-dev/php/setallgroupsonhomecategory.php new file mode 100755 index 000000000..63d7605e6 --- /dev/null +++ b/install-dev/php/setallgroupsonhomecategory.php @@ -0,0 +1,40 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function setAllGroupsOnHomeCategory() +{ + $results = Group::getGroups(Configuration::get('PS_LANG_DEFAULT')); + $groups = array(); + foreach ($results AS $result) + $groups[] = $result['id_group']; + if (is_array($groups) && sizeof($groups)) + { + $category = new Category(1); + $category->cleanGroups(); + $category->addGroups($groups); + } +} diff --git a/install-dev/php/setdiscountcategory.php b/install-dev/php/setdiscountcategory.php new file mode 100644 index 000000000..7f61d7605 --- /dev/null +++ b/install-dev/php/setdiscountcategory.php @@ -0,0 +1,37 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function set_discount_category() +{ + $discounts = Db::getInstance()->ExecuteS('SELECT `id_discount` FROM `'._DB_PREFIX_.'discount`'); + $categories = Db::getInstance()->ExecuteS('SELECT `id_category` FROM `'._DB_PREFIX_.'category`'); + foreach ($discounts AS $discount) + foreach ($categories AS $category) + Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'discount_category` (`id_discount`,`id_category`) VALUES ('.(int)($discount['id_discount']).','.(int)($category['id_category']).')'); +} + + diff --git a/install-dev/php/setpaymentmodule.php b/install-dev/php/setpaymentmodule.php new file mode 100644 index 000000000..2ed4f06fb --- /dev/null +++ b/install-dev/php/setpaymentmodule.php @@ -0,0 +1,54 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function set_payment_module() +{ + // Get all modules then select only payment ones + $modules = Module::getModulesInstalled(); + foreach ($modules AS $module) + { + $file = _PS_MODULE_DIR_.$module['name'].'/'.$module['name'].'.php'; + if (!file_exists($file)) + continue; + $fd = fopen($file, 'r'); + if (!$fd) + continue ; + $content = fread($fd, filesize($file)); + if (preg_match_all('/extends PaymentModule/U', $content, $matches)) + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_country` (id_module, id_country) + SELECT '.(int)($module['id_module']).', id_country FROM `'._DB_PREFIX_.'country` WHERE active = 1'); + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_currency` (id_module, id_currency) + SELECT '.(int)($module['id_module']).', id_currency FROM `'._DB_PREFIX_.'currency` WHERE deleted = 0'); + } + fclose($fd); + } +} + + diff --git a/install-dev/php/setpaymentmodulegroup.php b/install-dev/php/setpaymentmodulegroup.php new file mode 100644 index 000000000..a13082677 --- /dev/null +++ b/install-dev/php/setpaymentmodulegroup.php @@ -0,0 +1,50 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function set_payment_module_group() +{ + // Get all modules then select only payment ones + $modules = Module::getModulesInstalled(); + foreach ($modules AS $module) + { + $file = _PS_MODULE_DIR_.$module['name'].'/'.$module['name'].'.php'; + if (!file_exists($file)) + continue; + $fd = @fopen($file, 'r'); + if (!$fd) + continue ; + $content = fread($fd, filesize($file)); + if (preg_match_all('/extends PaymentModule/U', $content, $matches)) + { + Db::getInstance()->Execute(' + INSERT INTO `'._DB_PREFIX_.'module_group` (id_module, id_group) + SELECT '.(int)($module['id_module']).', id_group FROM `'._DB_PREFIX_.'group`'); + } + fclose($fd); + } +} + diff --git a/install-dev/php/shop_url.php b/install-dev/php/shop_url.php new file mode 100644 index 000000000..7d4d06ac3 --- /dev/null +++ b/install-dev/php/shop_url.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function shop_url() +{ + if (!($host = Configuration::get('CANONICAL_URL'))) + $host = Tools::getHttpHost(); + Configuration::updateValue('PS_SHOP_DOMAIN', $host); + Configuration::updateValue('PS_SHOP_DOMAIN_SSL', $host); + return true; +} \ No newline at end of file diff --git a/install-dev/php/update_for_13version.php b/install-dev/php/update_for_13version.php new file mode 100644 index 000000000..488be28e2 --- /dev/null +++ b/install-dev/php/update_for_13version.php @@ -0,0 +1,16 @@ += 0) + return; // if the old version is a 1.4 version + + // Disable the Smarty 3 + Configuration::updateValue('PS_FORCE_SMARTY_2', 1); + // Disable the URL rewritting + Configuration::updateValue('PS_REWRITING_SETTINGS', 0); + // Disable Canonical redirection + Configuration::updateValue('PS_CANONICAL_REDIRECT', 0); +} \ No newline at end of file diff --git a/install-dev/php/update_image_size_in_db.php b/install-dev/php/update_image_size_in_db.php new file mode 100644 index 000000000..014dc40cf --- /dev/null +++ b/install-dev/php/update_image_size_in_db.php @@ -0,0 +1,42 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function update_image_size_in_db() +{ + if (file_exists(realpath(INSTALL_PATH.'/../img').'/logo.jpg')) + { + list($width, $height, $type, $attr) = getimagesize(realpath(INSTALL_PATH.'/../img').'/logo.jpg'); + Configuration::updateValue('SHOP_LOGO_WIDTH', (int)round($width)); + Configuration::updateValue('SHOP_LOGO_HEIGHT', (int)round($height)); + } + if (file_exists(realpath(INSTALL_PATH.'/../modules/editorial').'/homepage_logo.jpg')) + { + list($width, $height, $type, $attr) = getimagesize(realpath(INSTALL_PATH.'/../modules/editorial').'/homepage_logo.jpg'); + Configuration::updateValue('EDITORIAL_IMAGE_WIDTH', (int)round($width)); + Configuration::updateValue('EDITORIAL_IMAGE_HEIGHT', (int)round($height)); + } +} diff --git a/install-dev/php/update_order_details.php b/install-dev/php/update_order_details.php new file mode 100644 index 000000000..8cb6c8d0f --- /dev/null +++ b/install-dev/php/update_order_details.php @@ -0,0 +1,39 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function update_order_details() +{ + $res = Db::getInstance()->ExecuteS('SHOW COLUMNS FROM `'._DB_PREFIX_.'order_detail` LIKE \'reduction_percent\''); + + if (sizeof($res) == 0) + { + Db::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'order_detail` ADD `reduction_percent` DECIMAL(10, 2) NOT NULL default \'0.00\' AFTER `product_price`'); + Db::getInstance()->Execute('ALTER TABLE `'._DB_PREFIX_.'order_detail` ADD `reduction_amount` DECIMAL(20, 6) NOT NULL default \'0.000000\' AFTER `reduction_percent`'); + } +} + + diff --git a/install-dev/php/update_products_ecotax_v133.php b/install-dev/php/update_products_ecotax_v133.php new file mode 100644 index 000000000..f7dc552ae --- /dev/null +++ b/install-dev/php/update_products_ecotax_v133.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function update_products_ecotax_v133() +{ + global $oldversion; + if($oldversion < '1.3.3.0') + { + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'product` SET `ecotax` = \'0\' WHERE 1'); + Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'order_detail` SET `ecotax` = \'0\' WHERE 1;'); + } +} \ No newline at end of file diff --git a/install-dev/php/updatecarrierurl.php b/install-dev/php/updatecarrierurl.php new file mode 100644 index 000000000..03e6184e4 --- /dev/null +++ b/install-dev/php/updatecarrierurl.php @@ -0,0 +1,43 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function update_carrier_url() +{ + // Get all carriers + $sql = ' + SELECT c.`id_carrier`, c.`url` + FROM `'._DB_PREFIX_.'carrier` c'; + $carriers = Db::getInstance()->ExecuteS($sql); + + // Check each one and erase carrier URL if not correct URL + foreach ($carriers as $carrier) + if (!Validate::isAbsoluteUrl($carrier['url'])) + Db::getInstance()->Execute(' + UPDATE `'._DB_PREFIX_.'carrier` + SET `url` = \'\' + WHERE `id_carrier`= '.(int)($carrier['id_carrier'])); +} diff --git a/install-dev/php/updatemodulessql.php b/install-dev/php/updatemodulessql.php new file mode 100644 index 000000000..ef7c57b3a --- /dev/null +++ b/install-dev/php/updatemodulessql.php @@ -0,0 +1,41 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function update_modules_sql() +{ + Configuration::loadConfiguration(); + $blocklink = Module::getInstanceByName('blocklink'); + if ($blocklink->id) + Db::getInstance()->Execute('ALTER IGNORE TABLE `'._DB_PREFIX_.'blocklink_lang` ADD PRIMARY KEY (`id_link`, `id_lang`);'); + $productComments = Module::getInstanceByName('productcomments'); + if ($productComments->id) + { + Db::getInstance()->Execute('ALTER IGNORE TABLE `'._DB_PREFIX_.'product_comment_grade` ADD PRIMARY KEY (`id_product_comment`, `id_product_comment_criterion`);'); + Db::getInstance()->Execute('ALTER IGNORE TABLE `'._DB_PREFIX_.'product_comment_criterion` DROP PRIMARY KEY, ADD PRIMARY KEY (`id_product_comment_criterion`, `id_lang`);'); + Db::getInstance()->Execute('ALTER IGNORE TABLE `'._DB_PREFIX_.'product_comment_criterion_product` ADD PRIMARY KEY(`id_product`, `id_product_comment_criterion`);'); + } +} diff --git a/install-dev/php/updateproductcomments.php b/install-dev/php/updateproductcomments.php new file mode 100644 index 000000000..68f3e929e --- /dev/null +++ b/install-dev/php/updateproductcomments.php @@ -0,0 +1,58 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function updateproductcomments() +{ + if (Db::getInstance()->ExecuteS('SELECT * FROM '._DB_PREFIX_.'product_comment') !== false) + { + Db::getInstance()->Execute('CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.'product_comment_criterion_lang ( + `id_product_comment_criterion` INT( 11 ) UNSIGNED NOT NULL , + `id_lang` INT(11) UNSIGNED NOT NULL , + `name` VARCHAR(64) NOT NULL , + PRIMARY KEY ( `id_product_comment_criterion` , `id_lang` ) + ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8'); + Db::getInstance()->Execute('CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.'product_comment_criterion_category ( + `id_product_comment_criterion` int(10) unsigned NOT NULL, + `id_category` int(10) unsigned NOT NULL, + PRIMARY KEY(`id_product_comment_criterion`, `id_category`), + KEY `id_category` (`id_category`) + ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment ADD `id_guest` INT(11) NULL AFTER `id_customer`'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment ADD `customer_name` varchar(64) NULL AFTER `content`'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment ADD `deleted` tinyint(1) NOT NULL AFTER `validate`'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment ADD INDEX (id_customer)'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment ADD INDEX (id_guest)'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment ADD INDEX (id_product)'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment_criterion DROP `id_lang`'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment_criterion DROP `name`'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment_criterion ADD `id_product_comment_criterion_type` tinyint(1) NOT NULL AFTER `id_product_comment_criterion`'); + Db::getInstance()->Execute('ALTER TABLE '._DB_PREFIX_.'product_comment_criterion ADD `active` tinyint(1) NOT NULL AFTER `id_product_comment_criterion_type`'); + Db::getInstance()->Execute('ALTER IGNORE TABLE `'._DB_PREFIX_.'product_comment` ADD `title` VARCHAR(64) NULL AFTER `id_guest`;'); + } +} + + diff --git a/install-dev/php/utf8.php b/install-dev/php/utf8.php new file mode 100644 index 000000000..869a547d6 --- /dev/null +++ b/install-dev/php/utf8.php @@ -0,0 +1,135 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); +define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); + +function latin1_database_to_utf8() +{ + global $requests, $warningExist; + + $tables = array( + array('name' => 'address', 'id' => 'id_address', 'fields' => array('alias', 'company', 'name', 'surname', 'address1', 'address2', 'postcode', 'city', 'other', 'phone', 'phone_mobile')), + array('name' => 'alias', 'id' => 'id_alias', 'fields' => array('alias', 'search')), + array('name' => 'attribute_group_lang', 'id' => 'id_attribute_group', 'lang' => true, 'fields' => array('name', 'public_name')), + array('name' => 'attribute_lang', 'id' => 'id_attribute', 'lang' => true, 'fields' => array('name')), + array('name' => 'carrier', 'id' => 'id_carrier', 'fields' => array('name', 'url')), + array('name' => 'carrier_lang', 'id' => 'id_carrier', 'lang' => true, 'fields' => array('delay')), + array('name' => 'cart', 'id' => 'id_cart', 'fields' => array('gift_message')), + array('name' => 'category_lang', 'id' => 'id_category', 'lang' => true, 'fields' => array('name', 'description', 'link_rewrite', 'meta_title', 'meta_keywords', 'meta_description')), + array('name' => 'configuration', 'id' => 'id_configuration', 'fields' => array('name', 'value')), + array('name' => 'configuration_lang', 'id' => 'id_configuration', 'lang' => true, 'fields' => array('value')), + array('name' => 'contact', 'id' => 'id_contact', 'fields' => array('email')), + array('name' => 'contact_lang', 'id' => 'id_contact', 'lang' => true, 'fields' => array('name', 'description')), + array('name' => 'country', 'id' => 'id_country', 'fields' => array('iso_code')), + array('name' => 'country_lang', 'id' => 'id_country', 'lang' => true, 'fields' => array('name')), + array('name' => 'currency', 'id' => 'id_currency', 'fields' => array('name', 'iso_code', 'sign')), + array('name' => 'customer', 'id' => 'id_customer', 'fields' => array('email', 'passwd', 'name', 'surname')), + array('name' => 'discount', 'id' => 'id_discount', 'fields' => array('name')), + array('name' => 'discount_lang', 'id' => 'id_discount', 'lang' => true, 'fields' => array('description')), + array('name' => 'discount_type_lang', 'id' => 'id_discount_type', 'lang' => true, 'fields' => array('name')), + array('name' => 'employee', 'id' => 'id_employee', 'fields' => array('name', 'surname', 'email', 'passwd')), + array('name' => 'feature_lang', 'id' => 'id_feature', 'lang' => true, 'fields' => array('name')), + array('name' => 'feature_value_lang', 'id' => 'id_feature_value', 'lang' => true, 'fields' => array('value')), + array('name' => 'hook', 'id' => 'id_hook', 'fields' => array('name', 'title', 'description')), + array('name' => 'hook_module_exceptions', 'id' => 'id_hook_module_exceptions', 'fields' => array('file_name')), + array('name' => 'image_lang', 'id' => 'id_image', 'lang' => true, 'fields' => array('legend')), + array('name' => 'image_type', 'id' => 'id_image_type', 'fields' => array('name')), + array('name' => 'lang', 'id' => 'id_lang', 'fields' => array('name', 'iso_code')), + array('name' => 'manufacturer', 'id' => 'id_manufacturer', 'fields' => array('name')), + array('name' => 'message', 'id' => 'id_message', 'fields' => array('message')), + array('name' => 'module', 'id' => 'id_module', 'fields' => array('name')), + array('name' => 'orders', 'id' => 'id_order', 'fields' => array('payment', 'module', 'gift_message', 'shipping_number')), + array('name' => 'order_detail', 'id' => 'id_order_detail', 'fields' => array('product_name', 'product_reference', 'tax_name', 'download_hash')), + array('name' => 'order_discount', 'id' => 'id_order_discount', 'fields' => array('name')), + array('name' => 'order_state', 'id' => 'id_order_state', 'fields' => array('color')), + array('name' => 'order_state_lang', 'id' => 'id_order_state', 'lang' => true, 'fields' => array('name', 'template')), + array('name' => 'product', 'id' => 'id_product', 'fields' => array('ean13', 'reference')), + array('name' => 'product_attribute', 'id' => 'id_product_attribute', 'fields' => array('reference', 'ean13')), + array('name' => 'product_download', 'id' => 'id_product_download', 'fields' => array('display_filename', 'physically_filename')), + array('name' => 'product_lang', 'id' => 'id_product', 'lang' => true, 'fields' => array('description', 'description_short', 'link_rewrite', 'meta_description', 'meta_keywords', 'meta_title', 'name', 'availability')), + array('name' => 'profile_lang', 'id' => 'id_profile', 'lang' => true, 'fields' => array('name')), + array('name' => 'quick_access', 'id' => 'id_quick_access', 'fields' => array('link')), + array('name' => 'quick_access_lang', 'id' => 'id_quick_access', 'lang' => true, 'fields' => array('name')), + array('name' => 'supplier', 'id' => 'id_supplier', 'fields' => array('name')), + array('name' => 'tab', 'id' => 'id_tab', 'fields' => array('class_name')), + array('name' => 'tab_lang', 'id' => 'id_tab', 'lang' => true, 'fields' => array('name')), + array('name' => 'tag', 'id' => 'id_tag', 'fields' => array('name')), + array('name' => 'tax_lang', 'id' => 'id_tax', 'lang' => true, 'fields' => array('name')), + array('name' => 'zone', 'id' => 'id_zone', 'fields' => array('name')) + ); + + foreach ($tables AS $table) + { + /* Latin1 datas' selection */ + if (!Db::getInstance()->Execute('SET NAMES latin1')) + echo 'Cannot change the sql encoding to latin1!'; + $query = 'SELECT `'.$table['id'].'`'; + foreach ($table['fields'] AS $field) + $query .= ', `'.$field.'`'; + if (isset($table['lang']) AND $table['lang']) + $query .= ', `id_lang`'; + $query .= ' FROM `'._DB_PREFIX_.$table['name'].'`'; + $latin1Datas = Db::getInstance()->ExecuteS($query); + if ($latin1Datas === false) + { + $warningExist = true; + $requests .= ' + + + getMsgError()).']]> + getNumberError()).']]> + '."\n"; + } + + if (Db::getInstance()->NumRows()) + { + /* Utf-8 datas' restitution */ + if (!Db::getInstance()->Execute('SET NAMES utf8')) + echo 'Cannot change the sql encoding to utf8!'; + foreach ($latin1Datas AS $latin1Data) + { + $query = 'UPDATE `'._DB_PREFIX_.$table['name'].'` SET'; + foreach ($table['fields'] AS $field) + $query .= ' `'.$field.'` = \''.pSQL($latin1Data[$field]).'\','; + $query = rtrim($query, ','); + $query .= ' WHERE `'.$table['id'].'` = '.(int)($latin1Data[$table['id']]); + if (isset($table['lang']) AND $table['lang']) + $query .= ' AND `id_lang` = '.(int)($latin1Data['id_lang']); + if (!Db::getInstance()->Execute($query)) + { + $warningExist = true; + $requests .= ' + + + getMsgError()).']]> + getNumberError()).']]> + '."\n"; + } + } + } + } +} diff --git a/install-dev/preactivation.php b/install-dev/preactivation.php new file mode 100644 index 000000000..245bc3029 --- /dev/null +++ b/install-dev/preactivation.php @@ -0,0 +1,122 @@ +'), trim($object->{$field.'_'.((int)($_GET['language'])+1)})); + if (property_exists($object, $field.'_1')) + return str_replace(array('!|', '|!'), array('<', '>'), trim($object->{$field.'_1'})); + return ''; + } + + + + if ($_GET['request'] == 'form') + { + $p = addslashes(strtolower($_GET['partner'])); + $c = addslashes(strtolower($_GET['country_iso_code'])); + + $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); + $content = @file_get_contents('https://www.prestashop.com/partner/preactivation/fields.php?version=1.0&partner='.$p.'&country_iso_code='.$c, false, $context); + + if ($content && $content[0] == '<') + { + $result = simplexml_load_string($content); + if ($result) + { + $varList = ""; + echo '
    '; + foreach ($result->field as $field) + { + echo '
    '; + if ($field->type == 'text' || $field->type == 'password') + echo 'size) ? 'size="'.$field->size.'"' : '').' value="'.(isset($_GET[trim($field->key)]) ? $_GET[trim($field->key)] : $field->default).'" />'; + elseif ($field->type == 'radio') + { + foreach ($field->values as $key => $value) + echo getPreinstallXmlLang($value, 'label').' value == $field->default ? 'checked="checked"' : '').' />'; + } + elseif ($field->type == 'select') + { + echo ''; + } + elseif ($field->type == 'date') + { + echo ''; + echo ''; + echo ''; + } + if (getPreinstallXmlLang($field, 'help')) + echo ' '.getPreinstallXmlLang($field, 'help'); + echo '

    '; + if ($field->type == 'date') + $varList .= "'&".$field->key."='+$('#".$p."_".$c."_form_".$field->key."_year').val()+'-'+$('#".$p."_".$c."_form_".$field->key."_month').val()+'-'+$('#".$p."_".$c."_form_".$field->key."_day').val()+\n"; + else + $varList .= "'&".$field->key."='+ encodeURIComponent($('#".$p."_".$c."_form_".$field->key."').val())+\n"; + } + echo ' + '; + } + } + + } + + + if ($_GET['request'] == 'send') + { + $context = stream_context_create(array('http' => array('method'=>"GET", 'timeout' => 5))); + $url = 'https://www.prestashop.com/partner/preactivation/actions.php?version=1.0&partner='.addslashes($_GET['partner']); + + // Protect fields + foreach ($_GET as $key => $value) + $_GET[$key] = strip_tags(str_replace(array('\'', '"'), '', trim($value))); + + // Encore Get, Send It and Get Answers + @require_once('../config/settings.inc.php'); + foreach ($_GET as $key => $val) + $url .= '&'.$key.'='.urlencode($val); + $url .= '&security='.md5($_GET['email']._COOKIE_IV_); + $content = @file_get_contents($url, false, $context); + if ($content) + echo $content; + else + echo 'KO|Could not connect with Prestashop.com'; + } + +?> diff --git a/install-dev/sql/db.sql b/install-dev/sql/db.sql new file mode 100644 index 000000000..e26fb12ed --- /dev/null +++ b/install-dev/sql/db.sql @@ -0,0 +1,1639 @@ +SET NAMES 'utf8'; + +CREATE TABLE `PREFIX_access` ( + `id_profile` int(10) unsigned NOT NULL, + `id_tab` int(10) unsigned NOT NULL, + `view` int(11) NOT NULL, + `add` int(11) NOT NULL, + `edit` int(11) NOT NULL, + `delete` int(11) NOT NULL, + PRIMARY KEY (`id_profile`,`id_tab`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_accessory` ( + `id_product_1` int(10) unsigned NOT NULL, + `id_product_2` int(10) unsigned NOT NULL, + KEY `accessory_product` (`id_product_1`,`id_product_2`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_address` ( + `id_address` int(10) unsigned NOT NULL auto_increment, + `id_country` int(10) unsigned NOT NULL, + `id_state` int(10) unsigned default NULL, + `id_customer` int(10) unsigned NOT NULL default '0', + `id_manufacturer` int(10) unsigned NOT NULL default '0', + `id_supplier` int(10) unsigned NOT NULL default '0', + `alias` varchar(32) NOT NULL, + `company` varchar(32) default NULL, + `lastname` varchar(32) NOT NULL, + `firstname` varchar(32) NOT NULL, + `address1` varchar(128) NOT NULL, + `address2` varchar(128) default NULL, + `postcode` varchar(12) default NULL, + `city` varchar(64) NOT NULL, + `other` text, + `phone` varchar(16) default NULL, + `phone_mobile` varchar(16) default NULL, + `vat_number` varchar(32) default NULL, + `dni` varchar(16) DEFAULT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + `active` tinyint(1) unsigned NOT NULL default '1', + `deleted` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_address`), + KEY `address_customer` (`id_customer`), + KEY `id_country` (`id_country`), + KEY `id_state` (`id_state`), + KEY `id_manufacturer` (`id_manufacturer`), + KEY `id_supplier` (`id_supplier`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_alias` ( + `id_alias` int(10) unsigned NOT NULL auto_increment, + `alias` varchar(255) NOT NULL, + `search` varchar(255) NOT NULL, + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id_alias`), + UNIQUE KEY `alias` (`alias`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attachment` ( + `id_attachment` int(10) unsigned NOT NULL auto_increment, + `file` varchar(40) NOT NULL, + `file_name` varchar(128) NOT NULL, + `mime` varchar(64) NOT NULL, + PRIMARY KEY (`id_attachment`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attachment_lang` ( + `id_attachment` int(10) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) default NULL, + `description` TEXT, + PRIMARY KEY (`id_attachment`, `id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_attachment` ( + `id_product` int(10) unsigned NOT NULL, + `id_attachment` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_product`,`id_attachment`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attribute` ( + `id_attribute` int(10) unsigned NOT NULL auto_increment, + `id_attribute_group` int(10) unsigned NOT NULL, + `color` varchar(32) default NULL, + PRIMARY KEY (`id_attribute`), + KEY `attribute_group` (`id_attribute_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attribute_group` ( + `id_attribute_group` int(10) unsigned NOT NULL auto_increment, + `is_color_group` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`id_attribute_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attribute_group_lang` ( + `id_attribute_group` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + `public_name` varchar(64) NOT NULL, + PRIMARY KEY (`id_attribute_group`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attribute_impact` ( + `id_attribute_impact` int(10) unsigned NOT NULL auto_increment, + `id_product` int(11) unsigned NOT NULL, + `id_attribute` int(11) unsigned NOT NULL, + `weight` float NOT NULL, + `price` decimal(17,2) NOT NULL, + PRIMARY KEY (`id_attribute_impact`), + UNIQUE KEY `id_product` (`id_product`,`id_attribute`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attribute_lang` ( + `id_attribute` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + PRIMARY KEY `attribute_lang` (`id_attribute`,`id_lang`), + KEY `id_lang` (`id_lang`,`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_carrier` ( + `id_carrier` int(10) unsigned NOT NULL AUTO_INCREMENT, + `id_tax_rules_group` int(10) unsigned DEFAULT '0', + `name` varchar(64) NOT NULL, + `url` varchar(255) DEFAULT NULL, + `active` tinyint(1) unsigned NOT NULL DEFAULT '0', + `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', + `shipping_handling` tinyint(1) unsigned NOT NULL DEFAULT '1', + `range_behavior` tinyint(1) unsigned NOT NULL DEFAULT '0', + `is_module` tinyint(1) unsigned NOT NULL DEFAULT '0', + `shipping_external` tinyint(1) unsigned NOT NULL DEFAULT '0', + `need_range` tinyint(1) unsigned NOT NULL DEFAULT '0', + `external_module_name` varchar(64) DEFAULT NULL, + `shipping_method` int(2) NOT NULL DEFAULT '0', + PRIMARY KEY (`id_carrier`), + KEY `deleted` (`deleted`,`active`), + KEY `id_tax_rules_group` (`id_tax_rules_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_carrier_lang` ( + `id_carrier` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `delay` varchar(128) default NULL, + UNIQUE KEY `shipper_lang_index` (`id_lang`,`id_carrier`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_carrier_zone` ( + `id_carrier` int(10) unsigned NOT NULL, + `id_zone` int(10) unsigned NOT NULL, + PRIMARY KEY `carrier_zone_index` (`id_carrier`,`id_zone`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cart` ( + `id_cart` int(10) unsigned NOT NULL auto_increment, + `id_carrier` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `id_address_delivery` int(10) unsigned NOT NULL, + `id_address_invoice` int(10) unsigned NOT NULL, + `id_currency` int(10) unsigned NOT NULL, + `id_customer` int(10) unsigned NOT NULL, + `id_guest` int(10) unsigned NOT NULL, + `secure_key` varchar(32) NOT NULL default '-1', + `recyclable` tinyint(1) unsigned NOT NULL default '1', + `gift` tinyint(1) unsigned NOT NULL default '0', + `gift_message` text, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_cart`), + KEY `cart_customer` (`id_customer`), + KEY `id_address_delivery` (`id_address_delivery`), + KEY `id_address_invoice` (`id_address_invoice`), + KEY `id_carrier` (`id_carrier`), + KEY `id_lang` (`id_lang`), + KEY `id_currency` (`id_currency`), + KEY `id_guest` (`id_guest`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cart_discount` ( + `id_cart` int(10) unsigned NOT NULL, + `id_discount` int(10) unsigned NOT NULL, + KEY `cart_discount_index` (`id_cart`,`id_discount`), + KEY `id_discount` (`id_discount`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cart_product` ( + `id_cart` int(10) unsigned NOT NULL, + `id_product` int(10) unsigned NOT NULL, + `id_product_attribute` int(10) unsigned default NULL, + `quantity` int(10) unsigned NOT NULL default '0', + `date_add` datetime NOT NULL, + KEY `cart_product_index` (`id_cart`,`id_product`), + KEY `id_product_attribute` (`id_product_attribute`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_category` ( + `id_category` int(10) unsigned NOT NULL auto_increment, + `id_parent` int(10) unsigned NOT NULL, + `level_depth` tinyint(3) unsigned NOT NULL default '0', + `nleft` int(10) unsigned NOT NULL default '0', + `nright` int(10) unsigned NOT NULL default '0', + `active` tinyint(1) unsigned NOT NULL default '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + `position` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id_category`), + KEY `category_parent` (`id_parent`), + KEY `nleftright` (`nleft`,`nright`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_category_group` ( + `id_category` int(10) unsigned NOT NULL, + `id_group` int(10) unsigned NOT NULL, + KEY `category_group_index` (`id_category`,`id_group`), + KEY `id_category` (`id_category`), + KEY `id_group` (`id_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_category_lang` ( + `id_category` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + `description` text, + `link_rewrite` varchar(128) NOT NULL, + `meta_title` varchar(128) default NULL, + `meta_keywords` varchar(255) default NULL, + `meta_description` varchar(255) default NULL, + UNIQUE KEY `category_lang_index` (`id_category`,`id_lang`), + KEY `category_name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_category_product` ( + `id_category` int(10) unsigned NOT NULL, + `id_product` int(10) unsigned NOT NULL, + `position` int(10) unsigned NOT NULL default '0', + KEY `category_product_index` (`id_category`,`id_product`), + INDEX (`id_product`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms` ( + `id_cms` int(10) unsigned NOT NULL AUTO_INCREMENT, + `id_cms_category` int(10) unsigned NOT NULL, + `position` int(10) unsigned NOT NULL DEFAULT '0', + `active` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_cms`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms_lang` ( + `id_cms` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `meta_title` varchar(128) NOT NULL, + `meta_description` varchar(255) default NULL, + `meta_keywords` varchar(255) default NULL, + `content` longtext, + `link_rewrite` varchar(128) NOT NULL, + PRIMARY KEY (`id_cms`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms_category` ( + `id_cms_category` int(10) unsigned NOT NULL AUTO_INCREMENT, + `id_parent` int(10) unsigned NOT NULL, + `level_depth` tinyint(3) unsigned NOT NULL DEFAULT '0', + `active` tinyint(1) unsigned NOT NULL DEFAULT '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + `position` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id_cms_category`), + KEY `category_parent` (`id_parent`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms_category_lang` ( + `id_cms_category` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + `description` text, + `link_rewrite` varchar(128) NOT NULL, + `meta_title` varchar(128) DEFAULT NULL, + `meta_keywords` varchar(255) DEFAULT NULL, + `meta_description` varchar(255) DEFAULT NULL, + UNIQUE KEY `category_lang_index` (`id_cms_category`,`id_lang`), + KEY `category_name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_configuration` ( + `id_configuration` int(10) unsigned NOT NULL auto_increment, + `name` varchar(32) NOT NULL, + `value` text, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_configuration`), + UNIQUE KEY `name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_configuration_lang` ( + `id_configuration` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `value` text, + `date_upd` datetime default NULL, + PRIMARY KEY (`id_configuration`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_connections` ( + `id_connections` int(10) unsigned NOT NULL auto_increment, + `id_guest` int(10) unsigned NOT NULL, + `id_page` int(10) unsigned NOT NULL, + `ip_address` BIGINT NULL DEFAULT NULL, + `date_add` datetime NOT NULL, + `http_referer` varchar(255) default NULL, + PRIMARY KEY (`id_connections`), + KEY `id_guest` (`id_guest`), + KEY `date_add` (`date_add`), + KEY `id_page` (`id_page`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_connections_page` ( + `id_connections` int(10) unsigned NOT NULL, + `id_page` int(10) unsigned NOT NULL, + `time_start` datetime NOT NULL, + `time_end` datetime default NULL, + PRIMARY KEY (`id_connections`,`id_page`,`time_start`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_connections_source` ( + `id_connections_source` int(10) unsigned NOT NULL auto_increment, + `id_connections` int(10) unsigned NOT NULL, + `http_referer` varchar(255) default NULL, + `request_uri` varchar(255) default NULL, + `keywords` varchar(255) default NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_connections_source`), + KEY `connections` (`id_connections`), + KEY `orderby` (`date_add`), + KEY `http_referer` (`http_referer`), + KEY `request_uri` (`request_uri`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_contact` ( + `id_contact` int(10) unsigned NOT NULL auto_increment, + `email` varchar(128) NOT NULL, + `customer_service` tinyint(1) NOT NULL DEFAULT 0, + `position` tinyint(2) unsigned NOT NULL default '0', + PRIMARY KEY (`id_contact`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_contact_lang` ( + `id_contact` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) NOT NULL, + `description` text, + UNIQUE KEY `contact_lang_index` (`id_contact`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_country` ( + `id_country` int(10) unsigned NOT NULL auto_increment, + `id_zone` int(10) unsigned NOT NULL, + `id_currency` int(10) unsigned NOT NULL default '0', + `iso_code` varchar(3) NOT NULL, + `call_prefix` int(10) NOT NULL default '0', + `active` tinyint(1) unsigned NOT NULL default '0', + `contains_states` tinyint(1) NOT NULL default '0', + `need_identification_number` tinyint(1) NOT NULL default '0', + `need_zip_code` tinyint(1) NOT NULL default '1', + `zip_code_format` varchar(12) NOT NULL default '', + PRIMARY KEY (`id_country`), + KEY `country_iso_code` (`iso_code`), + KEY `country_` (`id_zone`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_country_lang` ( + `id_country` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(64) NOT NULL, + UNIQUE KEY `country_lang_index` (`id_country`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_country_tax` ( + `id_country_tax` int(11) NOT NULL AUTO_INCREMENT, + `id_country` int(11) NOT NULL, + `id_tax_rules_group` int(11) NOT NULL, + PRIMARY KEY (`id_country_tax`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_currency` ( + `id_currency` int(10) unsigned NOT NULL auto_increment, + `name` varchar(32) NOT NULL, + `iso_code` varchar(3) NOT NULL default '0', + `iso_code_num` varchar(3) NOT NULL default '0', + `sign` varchar(8) NOT NULL, + `blank` tinyint(1) unsigned NOT NULL default '0', + `format` tinyint(1) unsigned NOT NULL default '0', + `decimals` tinyint(1) unsigned NOT NULL default '1', + `conversion_rate` decimal(13,6) NOT NULL, + `deleted` tinyint(1) unsigned NOT NULL default '0', + `active` tinyint(1) unsigned NOT NULL default '1', + PRIMARY KEY (`id_currency`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customer` ( + `id_customer` int(10) unsigned NOT NULL auto_increment, + `id_gender` int(10) unsigned NOT NULL, + `id_default_group` int(10) unsigned NOT NULL DEFAULT '1', + `firstname` varchar(32) NOT NULL, + `lastname` varchar(32) NOT NULL, + `email` varchar(128) NOT NULL, + `passwd` varchar(32) NOT NULL, + `last_passwd_gen` timestamp NOT NULL default CURRENT_TIMESTAMP, + `birthday` date default NULL, + `newsletter` tinyint(1) unsigned NOT NULL default '0', + `ip_registration_newsletter` varchar(15) default NULL, + `newsletter_date_add` datetime default NULL, + `optin` tinyint(1) unsigned NOT NULL default '0', + `secure_key` varchar(32) NOT NULL default '-1', + `note` text, + `active` tinyint(1) unsigned NOT NULL default '0', + `is_guest` tinyint(1) NOT NULL default '0', + `deleted` tinyint(1) NOT NULL default '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_customer`), + KEY `customer_email` (`email`), + KEY `customer_login` (`email`,`passwd`), + KEY `id_customer_passwd` (`id_customer`,`passwd`), + KEY `id_gender` (`id_gender`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customer_group` ( + `id_customer` int(10) unsigned NOT NULL, + `id_group` int(10) unsigned NOT NULL, + PRIMARY KEY `customer_group_index` (`id_customer`,`id_group`), + INDEX customer_login(id_group), + KEY `id_customer` (`id_customer`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customer_message` ( + `id_customer_message` int(10) unsigned NOT NULL auto_increment, + `id_customer_thread` int(11) default NULL, + `id_employee` int(10) unsigned default NULL, + `message` text NOT NULL, + `file_name` varchar(18) DEFAULT NULL, + `ip_address` int(11) default NULL, + `user_agent` varchar(128) default NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_customer_message`), + KEY `id_customer_thread` (`id_customer_thread`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customer_thread` ( + `id_customer_thread` int(11) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `id_contact` int(10) unsigned NOT NULL, + `id_customer` int(10) unsigned default NULL, + `id_order` int(10) unsigned default NULL, + `id_product` int(10) unsigned default NULL, + `status` enum('open','closed','pending1','pending2') NOT NULL default 'open', + `email` varchar(128) NOT NULL, + `token` varchar(12) default NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_customer_thread`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +CREATE TABLE `PREFIX_customization` ( + `id_customization` int(10) unsigned NOT NULL auto_increment, + `id_product_attribute` int(10) unsigned NOT NULL default '0', + `id_cart` int(10) unsigned NOT NULL, + `id_product` int(10) NOT NULL, + `quantity` int(10) NOT NULL, + `quantity_refunded` INT NOT NULL DEFAULT '0', + `quantity_returned` INT NOT NULL DEFAULT '0', + PRIMARY KEY (`id_customization`,`id_cart`,`id_product`), + KEY `id_product_attribute` (`id_product_attribute`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customization_field` ( + `id_customization_field` int(10) unsigned NOT NULL auto_increment, + `id_product` int(10) unsigned NOT NULL, + `type` tinyint(1) NOT NULL, + `required` tinyint(1) NOT NULL, + PRIMARY KEY (`id_customization_field`), + KEY `id_product` (`id_product`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customization_field_lang` ( + `id_customization_field` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + PRIMARY KEY (`id_customization_field`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customized_data` ( + `id_customization` int(10) unsigned NOT NULL, + `type` tinyint(1) NOT NULL, + `index` int(3) NOT NULL, + `value` varchar(255) NOT NULL, + PRIMARY KEY (`id_customization`,`type`,`index`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_date_range` ( + `id_date_range` int(10) unsigned NOT NULL auto_increment, + `time_start` datetime NOT NULL, + `time_end` datetime NOT NULL, + PRIMARY KEY (`id_date_range`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_delivery` ( + `id_delivery` int(10) unsigned NOT NULL auto_increment, + `id_carrier` int(10) unsigned NOT NULL, + `id_range_price` int(10) unsigned default NULL, + `id_range_weight` int(10) unsigned default NULL, + `id_zone` int(10) unsigned NOT NULL, + `price` decimal(17,2) NOT NULL, + PRIMARY KEY (`id_delivery`), + KEY `id_zone` (`id_zone`), + KEY `id_carrier` (`id_carrier`,`id_zone`), + KEY `id_range_price` (`id_range_price`), + KEY `id_range_weight` (`id_range_weight`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_discount` ( + `id_discount` int(10) unsigned NOT NULL auto_increment, + `id_discount_type` int(10) unsigned NOT NULL, + `behavior_not_exhausted` TINYINT(3) DEFAULT '1', + `id_customer` int(10) unsigned NOT NULL, + `id_group` int(10) unsigned NOT NULL default 0, + `id_currency` int unsigned NOT NULL default 0, + `name` varchar(32) NOT NULL, + `value` decimal(17,2) NOT NULL default '0.00', + `quantity` int(10) unsigned NOT NULL default '0', + `quantity_per_user` int(10) unsigned NOT NULL default '1', + `cumulable` tinyint(1) unsigned NOT NULL default '0', + `cumulable_reduction` tinyint(1) unsigned NOT NULL default '0', + `date_from` datetime NOT NULL, + `date_to` datetime NOT NULL, + `minimal` decimal(17,2) default NULL, + `active` tinyint(1) unsigned NOT NULL default '0', + `cart_display` tinyint(1) unsigned NOT NULL default '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_discount`), + KEY `discount_name` (`name`), + KEY `discount_customer` (`id_customer`), + KEY `id_discount_type` (`id_discount_type`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_discount_category` ( + `id_category` int(11) unsigned NOT NULL, + `id_discount` int(11) unsigned NOT NULL, + PRIMARY KEY (`id_category`, `id_discount`), + KEY `discount` (`id_discount`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_discount_lang` ( + `id_discount` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `description` text, + PRIMARY KEY (`id_discount`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_discount_type` ( + `id_discount_type` int(10) unsigned NOT NULL auto_increment, + PRIMARY KEY (`id_discount_type`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_discount_type_lang` ( + `id_discount_type` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(64) NOT NULL, + PRIMARY KEY (`id_discount_type`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_employee` ( + `id_employee` int(10) unsigned NOT NULL auto_increment, + `id_profile` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL DEFAULT 0, + `lastname` varchar(32) NOT NULL, + `firstname` varchar(32) NOT NULL, + `email` varchar(128) NOT NULL, + `passwd` varchar(32) NOT NULL, + `last_passwd_gen` timestamp NOT NULL default CURRENT_TIMESTAMP, + `stats_date_from` date default NULL, + `stats_date_to` date default NULL, + `bo_color` varchar(32) default NULL, + `bo_theme` varchar(32) default NULL, + `bo_uimode` ENUM('hover','click') default 'click', + `active` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_employee`), + KEY `employee_login` (`email`,`passwd`), + KEY `id_employee_passwd` (`id_employee`,`passwd`), + KEY `id_profile` (`id_profile`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_feature` ( + `id_feature` int(10) unsigned NOT NULL auto_increment, + PRIMARY KEY (`id_feature`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_feature_lang` ( + `id_feature` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) default NULL, + PRIMARY KEY (`id_feature`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_feature_product` ( + `id_feature` int(10) unsigned NOT NULL, + `id_product` int(10) unsigned NOT NULL, + `id_feature_value` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_feature`,`id_product`), + KEY `id_feature_value` (`id_feature_value`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_feature_value` ( + `id_feature_value` int(10) unsigned NOT NULL auto_increment, + `id_feature` int(10) unsigned NOT NULL, + `custom` tinyint(3) unsigned default NULL, + PRIMARY KEY (`id_feature_value`), + KEY `feature` (`id_feature`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_feature_value_lang` ( + `id_feature_value` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `value` varchar(255) default NULL, + PRIMARY KEY (`id_feature_value`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_group` ( + `id_group` int(10) unsigned NOT NULL auto_increment, + `reduction` decimal(17,2) NOT NULL default '0.00', + `price_display_method` TINYINT NOT NULL DEFAULT 0, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_group_lang` ( + `id_group` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) NOT NULL, + UNIQUE KEY `attribute_lang_index` (`id_group`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_group_reduction` ( + `id_group_reduction` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_group` INT(10) UNSIGNED NOT NULL, + `id_category` INT(10) UNSIGNED NOT NULL, + `reduction` DECIMAL(4, 3) NOT NULL, + PRIMARY KEY(`id_group_reduction`), + UNIQUE KEY(`id_group`, `id_category`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_group_reduction_cache` ( + `id_product` INT UNSIGNED NOT NULL, + `id_group` INT UNSIGNED NOT NULL, + `reduction` DECIMAL(4, 3) NOT NULL, + PRIMARY KEY(`id_product`, `id_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_guest` ( + `id_guest` int(10) unsigned NOT NULL auto_increment, + `id_operating_system` int(10) unsigned default NULL, + `id_web_browser` int(10) unsigned default NULL, + `id_customer` int(10) unsigned default NULL, + `javascript` tinyint(1) default '0', + `screen_resolution_x` smallint(5) unsigned default NULL, + `screen_resolution_y` smallint(5) unsigned default NULL, + `screen_color` tinyint(3) unsigned default NULL, + `sun_java` tinyint(1) default NULL, + `adobe_flash` tinyint(1) default NULL, + `adobe_director` tinyint(1) default NULL, + `apple_quicktime` tinyint(1) default NULL, + `real_player` tinyint(1) default NULL, + `windows_media` tinyint(1) default NULL, + `accept_language` varchar(8) default NULL, + PRIMARY KEY (`id_guest`), + KEY `id_customer` (`id_customer`), + KEY `id_operating_system` (`id_operating_system`), + KEY `id_web_browser` (`id_web_browser`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_hook` ( + `id_hook` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `title` varchar(64) NOT NULL, + `description` text, + `position` tinyint(1) NOT NULL default '1', + `live_edit` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`id_hook`), + UNIQUE KEY `hook_name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_hook_module` ( + `id_module` int(10) unsigned NOT NULL, + `id_hook` int(10) unsigned NOT NULL, + `position` tinyint(2) unsigned NOT NULL, + PRIMARY KEY (`id_module`,`id_hook`), + KEY `id_hook` (`id_hook`), + KEY `id_module` (`id_module`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_hook_module_exceptions` ( + `id_hook_module_exceptions` int(10) unsigned NOT NULL auto_increment, + `id_module` int(10) unsigned NOT NULL, + `id_hook` int(10) unsigned NOT NULL, + `file_name` varchar(255) default NULL, + PRIMARY KEY (`id_hook_module_exceptions`), + KEY `id_module` (`id_module`), + KEY `id_hook` (`id_hook`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_image` ( + `id_image` int(10) unsigned NOT NULL auto_increment, + `id_product` int(10) unsigned NOT NULL, + `position` tinyint(2) unsigned NOT NULL default '0', + `cover` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_image`), + KEY `image_product` (`id_product`), + UNIQUE KEY `product_position` (`id_product`,`position`), + KEY `id_product_cover` (`id_product`,`cover`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_image_lang` ( + `id_image` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `legend` varchar(128) default NULL, + UNIQUE KEY `image_lang_index` (`id_image`,`id_lang`), + KEY `id_image` (`id_image`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_image_type` ( + `id_image_type` int(10) unsigned NOT NULL auto_increment, + `name` varchar(16) NOT NULL, + `width` int(10) unsigned NOT NULL, + `height` int(10) unsigned NOT NULL, + `products` tinyint(1) NOT NULL default '1', + `categories` tinyint(1) NOT NULL default '1', + `manufacturers` tinyint(1) NOT NULL default '1', + `suppliers` tinyint(1) NOT NULL default '1', + `scenes` tinyint(1) NOT NULL default '1', + `stores` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id_image_type`), + KEY `image_type_name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_lang` ( + `id_lang` int(10) unsigned NOT NULL auto_increment, + `name` varchar(32) NOT NULL, + `active` tinyint(3) unsigned NOT NULL default '0', + `iso_code` char(2) NOT NULL, + `language_code` char(5) NOT NULL, + PRIMARY KEY (`id_lang`), + KEY `lang_iso_code` (`iso_code`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_manufacturer` ( + `id_manufacturer` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + `active` tinyint(1) NOT NULL default 0, + PRIMARY KEY (`id_manufacturer`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_manufacturer_lang` ( + `id_manufacturer` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `description` text, + `short_description` varchar(254) default NULL, + `meta_title` varchar(128) default NULL, + `meta_keywords` varchar(255) default NULL, + `meta_description` varchar(255) default NULL, + PRIMARY KEY (`id_manufacturer`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_message` ( + `id_message` int(10) unsigned NOT NULL auto_increment, + `id_cart` int(10) unsigned default NULL, + `id_customer` int(10) unsigned NOT NULL, + `id_employee` int(10) unsigned default NULL, + `id_order` int(10) unsigned NOT NULL, + `message` text NOT NULL, + `private` tinyint(1) unsigned NOT NULL default '1', + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_message`), + KEY `message_order` (`id_order`), + KEY `id_cart` (`id_cart`), + KEY `id_customer` (`id_customer`), + KEY `id_employee` (`id_employee`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_message_readed` ( + `id_message` int(10) unsigned NOT NULL, + `id_employee` int(10) unsigned NOT NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_message`,`id_employee`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_meta` ( + `id_meta` int(10) unsigned NOT NULL auto_increment, + `page` varchar(64) NOT NULL, + PRIMARY KEY (`id_meta`), + KEY `meta_name` (`page`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_meta_lang` ( + `id_meta` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `title` varchar(128) default NULL, + `description` varchar(255) default NULL, + `keywords` varchar(255) default NULL, + `url_rewrite` varchar(254) NOT NULL, + PRIMARY KEY (`id_meta`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_module` ( + `id_module` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `active` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_module`), + KEY `name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_module_country` ( + `id_module` int(10) unsigned NOT NULL, + `id_country` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_module`,`id_country`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_module_currency` ( + `id_module` int(10) unsigned NOT NULL, + `id_currency` int(11) NOT NULL, + PRIMARY KEY (`id_module`,`id_currency`), + KEY `id_module` (`id_module`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_module_group` ( + `id_module` int(10) unsigned NOT NULL, + `id_group` int(11) unsigned NOT NULL, + PRIMARY KEY (`id_module`,`id_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_operating_system` ( + `id_operating_system` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) default NULL, + PRIMARY KEY (`id_operating_system`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_orders` ( + `id_order` int(10) unsigned NOT NULL auto_increment, + `id_carrier` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `id_customer` int(10) unsigned NOT NULL, + `id_cart` int(10) unsigned NOT NULL, + `id_currency` int(10) unsigned NOT NULL, + `id_address_delivery` int(10) unsigned NOT NULL, + `id_address_invoice` int(10) unsigned NOT NULL, + `secure_key` varchar(32) NOT NULL default '-1', + `payment` varchar(255) NOT NULL, + `conversion_rate` decimal(13,6) NOT NULL default 1, + `module` varchar(255) default NULL, + `recyclable` tinyint(1) unsigned NOT NULL default '0', + `gift` tinyint(1) unsigned NOT NULL default '0', + `gift_message` text, + `shipping_number` varchar(32) default NULL, + `total_discounts` decimal(17,2) NOT NULL default '0.00', + `total_paid` decimal(17,2) NOT NULL default '0.00', + `total_paid_real` decimal(17,2) NOT NULL default '0.00', + `total_products` decimal(17,2) NOT NULL default '0.00', + `total_products_wt` DECIMAL(17, 2) NOT NULL default '0.00', + `total_shipping` decimal(17,2) NOT NULL default '0.00', + `carrier_tax_rate` DECIMAL(10, 3) NOT NULL default '0.00', + `total_wrapping` decimal(17,2) NOT NULL default '0.00', + `invoice_number` int(10) unsigned NOT NULL default '0', + `delivery_number` int(10) unsigned NOT NULL default '0', + `invoice_date` datetime NOT NULL, + `delivery_date` datetime NOT NULL, + `valid` int(1) unsigned NOT NULL default '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_order`), + KEY `id_customer` (`id_customer`), + KEY `id_cart` (`id_cart`), + KEY `invoice_number` (`invoice_number`), + KEY `id_carrier` (`id_carrier`), + KEY `id_lang` (`id_lang`), + KEY `id_currency` (`id_currency`), + KEY `id_address_delivery` (`id_address_delivery`), + KEY `id_address_invoice` (`id_address_invoice`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_detail` ( + `id_order_detail` int(10) unsigned NOT NULL auto_increment, + `id_order` int(10) unsigned NOT NULL, + `product_id` int(10) unsigned NOT NULL, + `product_attribute_id` int(10) unsigned default NULL, + `product_name` varchar(255) NOT NULL, + `product_quantity` int(10) unsigned NOT NULL default '0', + `product_quantity_in_stock` int(10) unsigned NOT NULL default 0, + `product_quantity_refunded` int(10) unsigned NOT NULL default '0', + `product_quantity_return` int(10) unsigned NOT NULL default '0', + `product_quantity_reinjected` int(10) unsigned NOT NULL default 0, + `product_price` decimal(20,6) NOT NULL default '0.000000', + `reduction_percent` DECIMAL(10, 2) NOT NULL default '0.00', + `reduction_amount` DECIMAL(20, 6) NOT NULL default '0.000000', + `group_reduction` DECIMAL(10, 2) NOT NULL default '0.000000', + `product_quantity_discount` decimal(20,6) NOT NULL default '0.000000', + `product_ean13` varchar(13) default NULL, + `product_upc` varchar(12) default NULL, + `product_reference` varchar(32) default NULL, + `product_supplier_reference` varchar(32) default NULL, + `product_weight` float NOT NULL, + `tax_name` varchar(16) NOT NULL, + `tax_rate` DECIMAL(10, 3) NOT NULL DEFAULT '0.000', + `ecotax` decimal(21,6) NOT NULL default '0.00', + `ecotax_tax_rate` DECIMAL(5,3) NOT NULL DEFAULT '0.000', + `discount_quantity_applied` TINYINT(1) NOT NULL DEFAULT 0, + `download_hash` varchar(255) default NULL, + `download_nb` int(10) unsigned default '0', + `download_deadline` datetime default '0000-00-00 00:00:00', + PRIMARY KEY (`id_order_detail`), + KEY `order_detail_order` (`id_order`), + KEY `product_id` (`product_id`), + KEY `product_attribute_id` (`product_attribute_id`), + KEY `id_order_id_order_detail` (`id_order`, `id_order_detail`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_discount` ( + `id_order_discount` int(10) unsigned NOT NULL auto_increment, + `id_order` int(10) unsigned NOT NULL, + `id_discount` int(10) unsigned NOT NULL, + `name` varchar(32) NOT NULL, + `value` decimal(17,2) NOT NULL default '0.00', + PRIMARY KEY (`id_order_discount`), + KEY `order_discount_order` (`id_order`), + KEY `id_discount` (`id_discount`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_history` ( + `id_order_history` int(10) unsigned NOT NULL auto_increment, + `id_employee` int(10) unsigned NOT NULL, + `id_order` int(10) unsigned NOT NULL, + `id_order_state` int(10) unsigned NOT NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_order_history`), + KEY `order_history_order` (`id_order`), + KEY `id_employee` (`id_employee`), + KEY `id_order_state` (`id_order_state`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_message` ( + `id_order_message` int(10) unsigned NOT NULL auto_increment, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_order_message`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_message_lang` ( + `id_order_message` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + `message` text NOT NULL, + PRIMARY KEY (`id_order_message`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_return` ( + `id_order_return` int(10) unsigned NOT NULL auto_increment, + `id_customer` int(10) unsigned NOT NULL, + `id_order` int(10) unsigned NOT NULL, + `state` tinyint(1) unsigned NOT NULL default '1', + `question` text NOT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_order_return`), + KEY `order_return_customer` (`id_customer`), + KEY `id_order` (`id_order`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_return_detail` ( + `id_order_return` int(10) unsigned NOT NULL, + `id_order_detail` int(10) unsigned NOT NULL, + `id_customization` int(10) unsigned NOT NULL default '0', + `product_quantity` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id_order_return`,`id_order_detail`,`id_customization`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_return_state` ( + `id_order_return_state` int(10) unsigned NOT NULL auto_increment, + `color` varchar(32) default NULL, + PRIMARY KEY (`id_order_return_state`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_return_state_lang` ( + `id_order_return_state` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(64) NOT NULL, + UNIQUE KEY `order_state_lang_index` (`id_order_return_state`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_slip` ( + `id_order_slip` int(10) unsigned NOT NULL auto_increment, + `conversion_rate` decimal(13,6) NOT NULL default 1, + `id_customer` int(10) unsigned NOT NULL, + `id_order` int(10) unsigned NOT NULL, + `shipping_cost` tinyint(3) unsigned NOT NULL default '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_order_slip`), + KEY `order_slip_customer` (`id_customer`), + KEY `id_order` (`id_order`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_slip_detail` ( + `id_order_slip` int(10) unsigned NOT NULL, + `id_order_detail` int(10) unsigned NOT NULL, + `product_quantity` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id_order_slip`,`id_order_detail`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_state` ( + `id_order_state` int(10) unsigned NOT NULL auto_increment, + `invoice` tinyint(1) unsigned default '0', + `send_email` tinyint(1) unsigned NOT NULL default '0', + `color` varchar(32) default NULL, + `unremovable` tinyint(1) unsigned NOT NULL, + `hidden` tinyint(1) UNSIGNED NOT NULL default '0', + `logable` tinyint(1) NOT NULL default '0', + `delivery` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_order_state`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_order_state_lang` ( + `id_order_state` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(64) NOT NULL, + `template` varchar(64) NOT NULL, + UNIQUE KEY `order_state_lang_index` (`id_order_state`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_pack` ( + `id_product_pack` int(10) unsigned NOT NULL, + `id_product_item` int(10) unsigned NOT NULL, + `quantity` int(10) unsigned NOT NULL DEFAULT 1, + PRIMARY KEY (`id_product_pack`,`id_product_item`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_page` ( + `id_page` int(10) unsigned NOT NULL auto_increment, + `id_page_type` int(10) unsigned NOT NULL, + `id_object` int(10) unsigned default NULL, + PRIMARY KEY (`id_page`), + KEY `id_page_type` (`id_page_type`), + KEY `id_object` (`id_object`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_page_type` ( + `id_page_type` int(10) unsigned NOT NULL auto_increment, + `name` varchar(255) NOT NULL, + PRIMARY KEY (`id_page_type`), + KEY `name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_page_viewed` ( + `id_page` int(10) unsigned NOT NULL, + `id_date_range` int(10) unsigned NOT NULL, + `counter` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_page`,`id_date_range`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_payment_cc` ( + `id_payment_cc` INT NOT NULL auto_increment, + `id_order` INT UNSIGNED NULL, + `id_currency` INT UNSIGNED NOT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `transaction_id` VARCHAR(254) NULL, + `card_number` VARCHAR(254) NULL, + `card_brand` VARCHAR(254) NULL, + `card_expiration` CHAR(7) NULL, + `card_holder` VARCHAR(254) NULL, + `date_add` DATETIME NOT NULL, + PRIMARY KEY (`id_payment_cc`), + KEY `id_order` (`id_order`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product` ( + `id_product` int(10) unsigned NOT NULL auto_increment, + `id_supplier` int(10) unsigned default NULL, + `id_manufacturer` int(10) unsigned default NULL, + `id_tax_rules_group` int(10) unsigned NOT NULL, + `id_category_default` int(10) unsigned default NULL, + `id_color_default` int(10) unsigned default NULL, + `on_sale` tinyint(1) unsigned NOT NULL default '0', + `online_only` tinyint(1) unsigned NOT NULL default '0', + `ean13` varchar(13) default NULL, + `upc` varchar(12) default NULL, + `ecotax` decimal(17,6) NOT NULL default '0.00', + `quantity` int(10) NOT NULL default '0', + `minimal_quantity` int(10) unsigned NOT NULL default '1', + `price` decimal(20,6) NOT NULL default '0.000000', + `wholesale_price` decimal(20,6) NOT NULL default '0.000000', + `unity` varchar(255) default NULL, + `unit_price_ratio` decimal(20,6) NOT NULL default '0.000000', + `additional_shipping_cost` decimal(20,2) NOT NULL default '0.00', + `reference` varchar(32) default NULL, + `supplier_reference` varchar(32) default NULL, + `location` varchar(64) default NULL, + `width` float NOT NULL default '0', + `height` float NOT NULL default '0', + `depth` float NOT NULL default '0', + `weight` float NOT NULL default '0', + `out_of_stock` int(10) unsigned NOT NULL default '2', + `quantity_discount` tinyint(1) default '0', + `customizable` tinyint(2) NOT NULL default '0', + `uploadable_files` tinyint(4) NOT NULL default '0', + `text_fields` tinyint(4) NOT NULL default '0', + `active` tinyint(1) unsigned NOT NULL default '0', + `available_for_order` tinyint(1) NOT NULL default '1', + `condition` ENUM('new', 'used', 'refurbished') NOT NULL DEFAULT 'new', + `show_price` tinyint(1) NOT NULL default '1', + `indexed` tinyint(1) NOT NULL default '0', + `cache_is_pack` tinyint(1) NOT NULL default '0', + `cache_has_attachments` tinyint(1) NOT NULL default '0', + `cache_default_attribute` int(10) unsigned default NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_product`), + KEY `product_supplier` (`id_supplier`), + KEY `product_manufacturer` (`id_manufacturer`), + KEY `id_category_default` (`id_category_default`), + KEY `id_color_default` (`id_color_default`), + KEY `date_add` (`date_add`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_attribute` ( + `id_product_attribute` int(10) unsigned NOT NULL auto_increment, + `id_product` int(10) unsigned NOT NULL, + `reference` varchar(32) default NULL, + `supplier_reference` varchar(32) default NULL, + `location` varchar(64) default NULL, + `ean13` varchar(13) default NULL, + `upc` varchar(12) default NULL, + `wholesale_price` decimal(20,6) NOT NULL default '0.000000', + `price` decimal(20,6) NOT NULL default '0.000000', + `ecotax` decimal(17,6) NOT NULL default '0.00', + `quantity` int(10) NOT NULL default '0', + `weight` float NOT NULL default '0', + `unit_price_impact` decimal(17,2) NOT NULL default '0.00', + `default_on` tinyint(1) unsigned NOT NULL default '0', + `minimal_quantity` int(10) unsigned NOT NULL DEFAULT '1', + PRIMARY KEY (`id_product_attribute`), + KEY `product_attribute_product` (`id_product`), + KEY `reference` (`reference`), + KEY `supplier_reference` (`supplier_reference`), + KEY `product_default` (`id_product`,`default_on`), + KEY `id_product_id_product_attribute` (`id_product_attribute` , `id_product`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_attribute_combination` ( + `id_attribute` int(10) unsigned NOT NULL, + `id_product_attribute` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_attribute`,`id_product_attribute`), + KEY `id_product_attribute` (`id_product_attribute`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_attribute_image` ( + `id_product_attribute` int(10) unsigned NOT NULL, + `id_image` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_product_attribute`,`id_image`), + KEY `id_image` (`id_image`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_download` ( + `id_product_download` int(10) unsigned NOT NULL auto_increment, + `id_product` int(10) unsigned NOT NULL, + `display_filename` varchar(255) default NULL, + `physically_filename` varchar(255) default NULL, + `date_deposit` datetime NOT NULL, + `date_expiration` datetime default NULL, + `nb_days_accessible` int(10) unsigned default NULL, + `nb_downloadable` int(10) unsigned default '1', + `active` tinyint(1) unsigned NOT NULL default '1', + PRIMARY KEY (`id_product_download`), + KEY `product_active` (`id_product`,`active`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_lang` ( + `id_product` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `description` text, + `description_short` text, + `link_rewrite` varchar(128) NOT NULL, + `meta_description` varchar(255) default NULL, + `meta_keywords` varchar(255) default NULL, + `meta_title` varchar(128) default NULL, + `name` varchar(128) NOT NULL, + `available_now` varchar(255) default NULL, + `available_later` varchar(255) default NULL, + UNIQUE KEY `product_lang_index` (`id_product`,`id_lang`), + KEY `id_lang` (`id_lang`), + KEY `name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_sale` ( + `id_product` int(10) unsigned NOT NULL, + `quantity` int(10) unsigned NOT NULL default '0', + `sale_nbr` int(10) unsigned NOT NULL default '0', + `date_upd` date NOT NULL, + PRIMARY KEY (`id_product`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_tag` ( + `id_product` int(10) unsigned NOT NULL, + `id_tag` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_product`,`id_tag`), + KEY `id_tag` (`id_tag`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_profile` ( + `id_profile` int(10) unsigned NOT NULL auto_increment, + PRIMARY KEY (`id_profile`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_profile_lang` ( + `id_lang` int(10) unsigned NOT NULL, + `id_profile` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + PRIMARY KEY (`id_profile`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_quick_access` ( + `id_quick_access` int(10) unsigned NOT NULL auto_increment, + `new_window` tinyint(1) NOT NULL default '0', + `link` varchar(128) NOT NULL, + PRIMARY KEY (`id_quick_access`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_quick_access_lang` ( + `id_quick_access` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) NOT NULL, + PRIMARY KEY (`id_quick_access`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_range_price` ( + `id_range_price` int(10) unsigned NOT NULL auto_increment, + `id_carrier` int(10) unsigned NOT NULL, + `delimiter1` decimal(20,6) NOT NULL, + `delimiter2` decimal(20,6) NOT NULL, + PRIMARY KEY (`id_range_price`), + UNIQUE KEY `id_carrier` (`id_carrier`,`delimiter1`,`delimiter2`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_range_weight` ( + `id_range_weight` int(10) unsigned NOT NULL auto_increment, + `id_carrier` int(10) unsigned NOT NULL, + `delimiter1` decimal(20,6) NOT NULL, + `delimiter2` decimal(20,6) NOT NULL, + PRIMARY KEY (`id_range_weight`), + UNIQUE KEY `id_carrier` (`id_carrier`,`delimiter1`,`delimiter2`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_referrer` ( + `id_referrer` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `passwd` varchar(32) default NULL, + `http_referer_regexp` varchar(64) default NULL, + `http_referer_like` varchar(64) default NULL, + `request_uri_regexp` varchar(64) default NULL, + `request_uri_like` varchar(64) default NULL, + `http_referer_regexp_not` varchar(64) default NULL, + `http_referer_like_not` varchar(64) default NULL, + `request_uri_regexp_not` varchar(64) default NULL, + `request_uri_like_not` varchar(64) default NULL, + `base_fee` decimal(5,2) NOT NULL default '0.00', + `percent_fee` decimal(5,2) NOT NULL default '0.00', + `click_fee` decimal(5,2) NOT NULL default '0.00', + `cache_visitors` int(11) default NULL, + `cache_visits` int(11) default NULL, + `cache_pages` int(11) default NULL, + `cache_registrations` int(11) default NULL, + `cache_orders` int(11) default NULL, + `cache_sales` decimal(17,2) default NULL, + `cache_reg_rate` decimal(5,4) default NULL, + `cache_order_rate` decimal(5,4) default NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_referrer`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_referrer_cache` ( + `id_connections_source` int(11) unsigned NOT NULL, + `id_referrer` int(11) unsigned NOT NULL, + PRIMARY KEY (`id_connections_source`, `id_referrer`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_scene` ( + `id_scene` int(10) unsigned NOT NULL auto_increment, + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id_scene`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_scene_category` ( + `id_scene` int(10) unsigned NOT NULL, + `id_category` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_scene`,`id_category`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_scene_lang` ( + `id_scene` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(100) NOT NULL, + PRIMARY KEY (`id_scene`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_scene_products` ( + `id_scene` int(10) unsigned NOT NULL, + `id_product` int(10) unsigned NOT NULL, + `x_axis` int(4) NOT NULL, + `y_axis` int(4) NOT NULL, + `zone_width` int(3) NOT NULL, + `zone_height` int(3) NOT NULL, + PRIMARY KEY (`id_scene`, `id_product`, `x_axis`, `y_axis`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_search_engine` ( + `id_search_engine` int(10) unsigned NOT NULL auto_increment, + `server` varchar(64) NOT NULL, + `getvar` varchar(16) NOT NULL, + PRIMARY KEY (`id_search_engine`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_search_index` ( + `id_product` int(11) unsigned NOT NULL, + `id_word` int(11) unsigned NOT NULL, + `weight` smallint(4) unsigned NOT NULL default 1, + PRIMARY KEY (`id_word`, `id_product`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_search_word` ( + `id_word` int(10) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `word` varchar(15) NOT NULL, + PRIMARY KEY (`id_word`), + UNIQUE KEY `id_lang` (`id_lang`,`word`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_specific_price` ( + `id_specific_price` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_product` INT UNSIGNED NOT NULL, + `id_shop` TINYINT UNSIGNED NOT NULL, + `id_currency` INT UNSIGNED NOT NULL, + `id_country` INT UNSIGNED NOT NULL, + `id_group` INT UNSIGNED NOT NULL, + `price` DECIMAL(20, 6) NOT NULL, + `from_quantity` SMALLINT UNSIGNED NOT NULL, + `reduction` DECIMAL(20, 6) NOT NULL, + `reduction_type` ENUM('amount', 'percentage') NOT NULL, + `from` DATETIME NOT NULL, + `to` DATETIME NOT NULL, + PRIMARY KEY(`id_specific_price`), + KEY (`id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `from_quantity`, `from`, `to`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_state` ( + `id_state` int(10) unsigned NOT NULL auto_increment, + `id_country` int(11) unsigned NOT NULL, + `id_zone` int(11) unsigned NOT NULL, + `name` varchar(64) NOT NULL, + `iso_code` char(4) NOT NULL, + `tax_behavior` smallint(1) NOT NULL default '0', + `active` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`id_state`), + KEY `id_country` (`id_country`), + KEY `id_zone` (`id_zone`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_subdomain` ( + `id_subdomain` int(10) unsigned NOT NULL auto_increment, + `name` varchar(16) NOT NULL, + PRIMARY KEY (`id_subdomain`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_supplier` ( + `id_supplier` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + `active` tinyint(1) NOT NULL default 0, + PRIMARY KEY (`id_supplier`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_supplier_lang` ( + `id_supplier` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `description` text, + `meta_title` varchar(128) default NULL, + `meta_keywords` varchar(255) default NULL, + `meta_description` varchar(255) default NULL, + PRIMARY KEY (`id_supplier`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tab` ( + `id_tab` int(10) unsigned NOT NULL auto_increment, + `id_parent` int(11) NOT NULL, + `class_name` varchar(64) NOT NULL, + `module` varchar(64) NULL, + `position` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_tab`), + KEY `class_name` (`class_name`), + KEY `id_parent` (`id_parent`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tab_lang` ( + `id_lang` int(10) unsigned NOT NULL, + `id_tab` int(10) unsigned NOT NULL, + `name` varchar(32) default NULL, + PRIMARY KEY (`id_tab`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tag` ( + `id_tag` int(10) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) NOT NULL, + PRIMARY KEY (`id_tag`), + KEY `tag_name` (`name`), + KEY `id_lang` (`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tax` ( + `id_tax` int(10) unsigned NOT NULL auto_increment, + `rate` DECIMAL(10, 3) NOT NULL, + `active` tinyint(1) unsigned NOT NULL default '1', + PRIMARY KEY (`id_tax`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tax_lang` ( + `id_tax` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) NOT NULL, + UNIQUE KEY `tax_lang_index` (`id_tax`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_timezone ( + id_timezone int(10) unsigned NOT NULL auto_increment, + name VARCHAR(32) NOT NULL, + PRIMARY KEY timezone_index(`id_timezone`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_web_browser` ( + `id_web_browser` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) default NULL, + PRIMARY KEY (`id_web_browser`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_zone` ( + `id_zone` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `active` tinyint(1) unsigned NOT NULL default '0', + PRIMARY KEY (`id_zone`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_carrier_group` ( + `id_carrier` int(10) unsigned NOT NULL, + `id_group` int(10) unsigned NOT NULL, + UNIQUE KEY `id_carrier` (`id_carrier`,`id_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +CREATE TABLE `PREFIX_stock_mvt` ( + `id_stock_mvt` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id_product` int(11) unsigned DEFAULT NULL, + `id_product_attribute` int(11) unsigned DEFAULT NULL, + `id_order` int(11) unsigned DEFAULT NULL, + `id_stock_mvt_reason` int(11) unsigned NOT NULL, + `id_employee` int(11) unsigned NOT NULL, + `quantity` int(11) NOT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_stock_mvt`), + KEY `id_order` (`id_order`), + KEY `id_product` (`id_product`), + KEY `id_product_attribute` (`id_product_attribute`), + KEY `id_stock_mvt_reason` (`id_stock_mvt_reason`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_stock_mvt_reason` ( + `id_stock_mvt_reason` int(11) NOT NULL AUTO_INCREMENT, + `sign` tinyint(1) NOT NULL DEFAULT 1, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_stock_mvt_reason`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +CREATE TABLE `PREFIX_stock_mvt_reason_lang` ( + `id_stock_mvt_reason` int(11) NOT NULL, + `id_lang` int(11) NOT NULL, + `name` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id_stock_mvt_reason`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_store` ( + `id_store` int(10) unsigned NOT NULL AUTO_INCREMENT, + `id_country` int(10) unsigned NOT NULL, + `id_state` int(10) unsigned DEFAULT NULL, + `name` varchar(128) NOT NULL, + `address1` varchar(128) NOT NULL, + `address2` varchar(128) DEFAULT NULL, + `city` varchar(64) NOT NULL, + `postcode` varchar(12) NOT NULL, + `latitude` float(10,6) DEFAULT NULL, + `longitude` float(10,6) DEFAULT NULL, + `hours` varchar(254) DEFAULT NULL, + `phone` varchar(16) DEFAULT NULL, + `fax` varchar(16) DEFAULT NULL, + `email` varchar(128) DEFAULT NULL, + `note` text, + `active` tinyint(1) unsigned NOT NULL DEFAULT '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_store`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_webservice_account` ( + `id_webservice_account` int(11) NOT NULL AUTO_INCREMENT, + `key` varchar(32) NOT NULL, + `description` text NULL, + `class_name` VARCHAR( 50 ) NOT NULL DEFAULT 'WebserviceRequest', + `active` tinyint(2) NOT NULL, + PRIMARY KEY (`id_webservice_account`), + KEY `key` (`key`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_webservice_permission` ( + `id_webservice_permission` int(11) NOT NULL AUTO_INCREMENT, + `resource` varchar(50) NOT NULL, + `method` enum('GET','POST','PUT','DELETE','HEAD') NOT NULL, + `id_webservice_account` int(11) NOT NULL, + PRIMARY KEY (`id_webservice_permission`), + UNIQUE KEY `resource_2` (`resource`,`method`,`id_webservice_account`), + KEY `resource` (`resource`), + KEY `method` (`method`), + KEY `id_webservice_account` (`id_webservice_account`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_required_field` ( + `id_required_field` int(11) NOT NULL AUTO_INCREMENT, + `object_name` varchar(32) NOT NULL, + `field_name` varchar(32) NOT NULL, + PRIMARY KEY (`id_required_field`), + KEY `object_name` (`object_name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_memcached_servers` ( +`id_memcached_server` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`ip` VARCHAR( 254 ) NOT NULL , +`port` INT(11) UNSIGNED NOT NULL , +`weight` INT(11) UNSIGNED NOT NULL +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_country_tax` ( + `id_product` int(11) NOT NULL, + `id_country` int(11) NOT NULL, + `id_tax` int(11) NOT NULL, + UNIQUE KEY `id_product` (`id_product`,`id_country`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +CREATE TABLE `PREFIX_tax_rule` ( + `id_tax_rule` int(11) NOT NULL AUTO_INCREMENT, + `id_tax_rules_group` int(11) NOT NULL, + `id_country` int(11) NOT NULL, + `id_state` int(11) NOT NULL, + `id_county` int(11) NOT NULL, + `id_tax` int(11) NOT NULL, + `state_behavior` int(11) NOT NULL, + `county_behavior` int(11) NOT NULL, + PRIMARY KEY (`id_tax_rule`), + KEY `id_tax_rules_group` (`id_tax_rules_group`), + KEY `id_tax` (`id_tax`), + UNIQUE KEY `tax_rule` (`id_tax_rules_group`, `id_country`, `id_state`, `id_county`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tax_rules_group` ( +`id_tax_rules_group` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`name` VARCHAR( 50 ) NOT NULL , +`active` INT NOT NULL +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_help_access` ( + `id_help_access` int(11) NOT NULL AUTO_INCREMENT, + `label` varchar(45) NOT NULL, + `version` varchar(8) NOT NULL, + PRIMARY KEY (`id_help_access`), + UNIQUE KEY `label` (`label`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_specific_price_priority` ( + `id_specific_price_priority` INT NOT NULL AUTO_INCREMENT , + `id_product` INT NOT NULL , + `priority` VARCHAR( 80 ) NOT NULL , + PRIMARY KEY ( `id_specific_price_priority` , `id_product` ) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_log` ( + `id_log` int(10) unsigned NOT NULL AUTO_INCREMENT, + `severity` tinyint(1) NOT NULL, + `error_code` int(11) DEFAULT NULL, + `message` text NOT NULL, + `object_type` varchar(32) DEFAULT NULL, + `object_id` int(10) unsigned DEFAULT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_log`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_import_match` ( + `id_import_match` int(10) NOT NULL AUTO_INCREMENT, + `name` varchar(32) NOT NULL, + `match` text NOT NULL, + `skip` int(2) NOT NULL, + PRIMARY KEY (`id_import_match`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +CREATE TABLE `PREFIX_county` ( + `id_county` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(64) NOT NULL, + `id_state` int(11) NOT NULL, + `active` tinyint(1) NOT NULL, + PRIMARY KEY (`id_county`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8 ; + + +CREATE TABLE `PREFIX_county_zip_code` ( + `id_county` INT NOT NULL , + `from_zip_code` INT NOT NULL , + `to_zip_code` INT NOT NULL , + PRIMARY KEY ( `id_county` , `from_zip_code` , `to_zip_code` ) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + diff --git a/install-dev/sql/db_settings_extends.sql b/install-dev/sql/db_settings_extends.sql new file mode 100644 index 000000000..342231116 --- /dev/null +++ b/install-dev/sql/db_settings_extends.sql @@ -0,0 +1,1078 @@ +SET NAMES 'utf8'; + +/* Carrier */ +INSERT INTO `PREFIX_carrier` (`id_carrier`, `id_tax_rules_group`, `name`, `active`, `deleted`, `shipping_handling`) VALUES (2, 1, 'My carrier', 1, 0, 1); +INSERT INTO `PREFIX_carrier_group` (`id_carrier`, `id_group`) VALUES (2, 1); +INSERT INTO `PREFIX_carrier_lang` (`id_carrier`, `id_lang`, `delay`) VALUES (2, 1, 'Delivery next day!'),(2, 2, 'Livraison le lendemain !'),(2, 3, '¡Entrega día siguiente!'),(2, 4, 'Zustellung am nächsten Tag!'),(2, 5, 'Consegna il giorno dopo!'); +INSERT INTO `PREFIX_carrier_zone` (`id_carrier`, `id_zone`) VALUES (2, 1),(2, 2); + +UPDATE `PREFIX_configuration` SET `value` = '2' WHERE `name` = 'PS_CARRIER_DEFAULT'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('MB_PAY_TO_EMAIL', 'testmerchant@moneybookers.com', NOW(), NOW()), + ('MB_SECRET_WORD', 'mbtest', NOW(), NOW()), + ('MB_HIDE_LOGIN', 1, NOW(), NOW()), + ('MB_ID_LOGO', 1, NOW(), NOW()), + ('MB_ID_LOGO_WALLET', 1, NOW(), NOW()), + ('MB_PARAMETERS', 1, NOW(), NOW()), + ('MB_PARAMETERS_2', 1, NOW(), NOW()), + ('MB_DISPLAY_MODE', 0, NOW(), NOW()), + ('MB_CANCEL_URL', 'http://www.yoursite.com', NOW(), NOW()), + ('MB_LOCAL_METHODS', '2', NOW(), NOW()), + ('MB_INTER_METHODS', '5', NOW(), NOW()), + ('BANK_WIRE_CURRENCIES', '2,1', NOW(), NOW()), + ('CHEQUE_CURRENCIES', '2,1', NOW(), NOW()), + ('PRODUCTS_VIEWED_NBR', '2', NOW(), NOW()), + ('BLOCK_CATEG_DHTML', '1', NOW(), NOW()), + ('BLOCK_CATEG_MAX_DEPTH', '3', NOW(), NOW()), + ('MANUFACTURER_DISPLAY_FORM', '1', NOW(), NOW()), + ('MANUFACTURER_DISPLAY_TEXT', '1', NOW(), NOW()), + ('MANUFACTURER_DISPLAY_TEXT_NB', '5', NOW(), NOW()), + ('NEW_PRODUCTS_NBR', '5', NOW(), NOW()), + ('PS_TOKEN_ENABLE', '1', NOW(), NOW()), + ('PS_STATS_RENDER', 'graphxmlswfcharts', NOW(), NOW()), + ('PS_STATS_OLD_CONNECT_AUTO_CLEAN', 'never', NOW(), NOW()), + ('PS_STATS_GRID_RENDER', 'gridhtml', NOW(), NOW()), + ('BLOCKTAGS_NBR', '10', NOW(), NOW()), + ('CHECKUP_DESCRIPTIONS_LT', '100', NOW(), NOW()), + ('CHECKUP_DESCRIPTIONS_GT', '400', NOW(), NOW()), + ('CHECKUP_IMAGES_LT', '1', NOW(), NOW()), + ('CHECKUP_IMAGES_GT', '2', NOW(), NOW()), + ('CHECKUP_SALES_LT', '1', NOW(), NOW()), + ('CHECKUP_SALES_GT', '2', NOW(), NOW()), + ('CHECKUP_STOCK_LT', '1', NOW(), NOW()), + ('CHECKUP_STOCK_GT', '3', NOW(), NOW()), + ('FOOTER_CMS', '0_3|0_4', NOW(), NOW()), + ('FOOTER_BLOCK_ACTIVATION', '0_3|0_4', NOW(), NOW()), + ('BLOCKADVERT_LINK', 0, NOW(), NOW()), + ('BLOCKSTORE_IMG', 'store.jpg', NOW(), NOW()); + +INSERT INTO `PREFIX_module` (`id_module`, `name`, `active`) VALUES (1, 'homefeatured', 1),(2, 'gsitemap', 1),(3, 'cheque', 1),(4, 'moneybookers', 1),(5, 'editorial', 1), +(6, 'bankwire', 1),(7, 'blockadvertising', 1),(8, 'blockbestsellers', 1),(9, 'blockcart', 1),(10, 'blockcategories', 1),(11, 'blockcurrencies', 1),(12, 'blockcms', 1), +(13, 'blocklanguages', 1),(14, 'blockmanufacturer', 1),(15, 'blockmyaccount', 1),(16, 'blocknewproducts', 1),(17, 'blockpaymentlogo', 1),(18, 'blockpermanentlinks', 1), +(19, 'blocksearch', 1),(20, 'blockspecials', 1),(21, 'blocktags', 1),(22, 'blockuserinfo', 1),(24, 'blockviewed', 1),(25, 'statsdata', 1), +(26, 'statsvisits', 1),(27, 'statssales', 1),(28, 'statsregistrations', 1),(30, 'statspersonalinfos', 1),(31, 'statslive', 1),(32, 'statsequipment', 1),(33, 'statscatalog', 1), +(34, 'graphvisifire', 1),(35, 'graphxmlswfcharts', 1),(36, 'graphgooglechart', 1),(37, 'graphartichow', 1),(39, 'gridhtml', 1),(40, 'statsbestcustomers', 1), +(41, 'statsorigin', 1),(42, 'pagesnotfound', 1),(43, 'sekeywords', 1),(44, 'statsproduct', 1),(45, 'statsbestproducts', 1),(46, 'statsbestcategories', 1), +(47, 'statsbestvouchers', 1),(48, 'statsbestsuppliers', 1),(49, 'statscarrier', 1),(50, 'statsnewsletter', 1),(51, 'statssearch', 1),(52, 'statscheckup', 1),(53, 'statsstock', 1), +(54, 'blockstore', 1),(55, 'statsforecast', 1); + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES + ('myAccountBlock', 'My account block', 'Display extra informations inside the "my account" block', 1); + +INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook`, `position`) VALUES (3, 1, 1),(6, 1, 2),(4, 1, 3),(4, 4, 3),(8, 2, 1),(3, 4, 1),(6, 4, 2),(9, 6, 1),(16, 6, 2),(8, 6, 3), +(20, 6, 4),(12, 6, 5),(54, 6, 6),(15, 7, 1),(21, 7, 2),(10, 7, 3),(24, 7, 4),(14, 7, 5),(12, 7, 6),(7, 7, 7),(17, 7, 8),(5, 8, 1),(1, 8, 2),(11, 14, 1),(13, 14, 2),(18, 14, 3), +(19, 14, 4),(22, 14, 5),(8, 19, 1),(12, 21, 1),(25, 11, 1),(25, 21, 2),(26, 32, 1),(27, 32, 2),(28, 32, 3),(30, 32, 4),(31, 32, 5),(32, 32, 6),(33, 32, 7),(34, 33, 1), +(35, 33, 2),(36, 33, 3),(37, 33, 4),(39, 37, 1),(40, 32, 8),(41, 32, 9),(42, 32, 10),(43, 32, 11),(42, 14, 6),(43, 14, 7),(44, 32, 12),(45, 32, 13),(46, 32, 15), +(47, 32, 14),(48, 32, 16),(49, 32, 17),(55, 32, 22),(50, 32, 18),(51, 32, 19),(51, 45, 1),(25, 25, 1),(41, 20, 2),(52, 32, 20),(53, 32, 21),(17, 9, 2),(18, 9, 3),(24, 9, 4),(9, 9, 5), +(15, 9, 6),(5, 9, 7),(8, 9, 8),(10, 9, 9),(20, 9, 10),(11, 9, 11),(16, 9, 12),(22, 9, 13),(13, 9, 14),(14, 9, 15),(12, 9, 16),(7, 9, 17),(21, 9, 18),(10, 60, 1),(10, 61, 1),(10, 62, 1),(54, 9, 19) +,(10,65,1), (10,66,1); + +CREATE TABLE `PREFIX_pagenotfound` ( + `id_pagenotfound` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + `request_uri` VARCHAR(256) NOT NULL, + `http_referer` VARCHAR(256) NOT NULL, + `date_add` DATETIME NOT NULL, + PRIMARY KEY(`id_pagenotfound`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_statssearch` ( + `id_statssearch` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + `keywords` VARCHAR(255) NOT NULL, + `results` INT(6) NOT NULL DEFAULT 0, + `date_add` DATETIME NOT NULL, + PRIMARY KEY(`id_statssearch`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_sekeyword` ( + `id_sekeyword` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + `keyword` VARCHAR(256) NOT NULL, + `date_add` DATETIME NOT NULL, + PRIMARY KEY(`id_sekeyword`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +CREATE TABLE `PREFIX_cms_block` ( + `id_cms_block` int(10) unsigned NOT NULL auto_increment, + `id_cms_category` int(10) unsigned NOT NULL, + `name` varchar(40) NOT NULL, + `location` tinyint(1) unsigned NOT NULL, + `position` int(10) unsigned NOT NULL default '0', + `display_store` tinyint(1) NOT NULL DEFAULT '1', + PRIMARY KEY (`id_cms_block`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms_block_page` ( + `id_cms_block_page` int(10) unsigned NOT NULL auto_increment, + `id_cms_block` int(10) unsigned NOT NULL, + `id_cms` int(10) unsigned NOT NULL, + `is_category` tinyint(1) unsigned NOT NULL, + PRIMARY KEY (`id_cms_block_page`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms_block_lang` ( + `id_cms_block` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(40) NOT NULL default '', + PRIMARY KEY (`id_cms_block`, `id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_editorial` ( + `id_editorial` int(10) unsigned NOT NULL auto_increment, + `body_home_logo_link` varchar(255) NOT NULL, + PRIMARY KEY (`id_editorial`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_editorial_lang` ( + `id_editorial` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `body_title` varchar(255) NOT NULL, + `body_subheading` varchar(255) NOT NULL, + `body_paragraph` text NOT NULL, + `body_logo_subheading` varchar(255) NOT NULL, + PRIMARY KEY (`id_editorial`, `id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_editorial` (`id_editorial`, `body_home_logo_link`) VALUES (1, 'http://www.prestashop.com'); +INSERT INTO `PREFIX_editorial_lang` (`id_editorial`, `id_lang`, `body_title`, `body_subheading`, `body_paragraph`, `body_logo_subheading`) VALUES +(1, 1, 'Lorem ipsum dolor sit amet', 'Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', '

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

    ', 'Excepteur sint prestashop cupidatat non proident'), +(1, 2, 'Lorem ipsum dolor sit amet', 'Excepteur sint occaecat cupidatat non proident', '

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

    ', 'Lorem ipsum presta shop amet'), +(1, 3, 'Lorem ipsum dolor sit amet', 'Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', '

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

    ', 'Excepteur sint prestashop cupidatat non proident'), +(1, 4, 'Lorem ipsum dolor sit amet', 'Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', '

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

    ', 'Excepteur sint prestashop cupidatat non proident'), +(1, 5, 'Lorem ipsum dolor sit amet', 'Consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua', '

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

    ', 'Excepteur sint prestashop cupidatat non proident'); + +INSERT INTO `PREFIX_range_price` (`id_range_price`, `id_carrier`, `delimiter1`, `delimiter2`) VALUES (1, 2, 0, 10000); +INSERT INTO `PREFIX_range_weight` (`id_range_weight`, `id_carrier`, `delimiter1`, `delimiter2`) VALUES (1, 2, 0, 10000); +INSERT INTO `PREFIX_delivery` (`id_delivery`, `id_range_price`, `id_range_weight`, `id_carrier`, `id_zone`, `price`) VALUES +(1, NULL, 1, 2, 1, 5.00),(2, NULL, 1, 2, 2, 5.00),(4, 1, NULL, 2, 1, 5.00),(5, 1, NULL, 2, 2, 5.00); + +INSERT INTO `PREFIX_customer_group` (`id_customer`, `id_group`) VALUES (1, 1); +INSERT INTO `PREFIX_category_group` (`id_category`, `id_group`) VALUES (2, 1),(3, 1),(4, 1); + +INSERT INTO `PREFIX_customer` (`id_customer`, `id_gender`, `id_default_group`, `secure_key`, `email`, `passwd`, `birthday`, `lastname`, `newsletter`, `optin`, `firstname`, `active`, `is_guest`, `date_add`, `date_upd`) + VALUES (1, 1, 1, '47ce86627c1f3c792a80773c5d2deaf8', 'pub@prestashop.com', 'ad807bdf0426766c05c64041124d30ce', '1970-01-15', 'DOE', 1, 1, 'John', 1, 0, NOW(), NOW()); +INSERT INTO `PREFIX_connections` (`id_connections`, `id_guest`, `id_page`, `ip_address`, `date_add`, `http_referer`) + VALUES (1, 1, 1, '2130706433', NOW(), 'http://www.prestashop.com'); +INSERT INTO `PREFIX_guest` (`id_guest`, `id_operating_system`, `id_web_browser`, `id_customer`, `javascript`, `screen_resolution_x`, `screen_resolution_y`, `screen_color`, `sun_java`, `adobe_flash`, `adobe_director`, `apple_quicktime`, `real_player`, `windows_media`, `accept_language`) + VALUES (1, 1, 3, 1, 1, 1680, 1050, 32, 1, 1, 0, 1, 1, 0, 'en-us'); + +INSERT INTO `PREFIX_cart` (`id_cart`, `id_carrier`, `id_lang`, `id_address_delivery`, `id_address_invoice`, `id_currency`, `id_customer`, `id_guest`, `recyclable`, `gift`, `date_add`, `date_upd`) + VALUES (1, 2, 2, 6, 6, 1, 1, 1, 1, 0, NOW(), NOW()); +INSERT INTO `PREFIX_cart_product` (`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES (1, 7, 23, 1, NOW()); +INSERT INTO `PREFIX_cart_product` (`id_cart`, `id_product`, `id_product_attribute`, `quantity`, `date_add`) VALUES (1, 9, 0, 1, NOW()); + +INSERT INTO `PREFIX_orders` (`id_order`, `id_carrier`, `id_lang`, `id_customer`, `id_cart`, `id_currency`, `id_address_delivery`, `id_address_invoice`, `secure_key`, `payment`, `module`, `recyclable`, `gift`, `gift_message`, `shipping_number`, `total_discounts`, `total_paid`, `total_paid_real`, `total_products`, `total_products_wt`, `total_shipping`, `total_wrapping`, `invoice_number`, `delivery_number`, `invoice_date`, `delivery_date`, `date_add`, `date_upd`) + VALUES (1, 2, 2, 1, 1, 1, 2, 2, '47ce86627c1f3c792a80773c5d2deaf8', 'Chèque', 'cheque', 0, 0, '', '', '0.00', '625.98', '625.98', '516.72', '618.00', '7.98', '0.00', 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', NOW(), NOW()); +INSERT INTO `PREFIX_order_detail` (`id_order_detail`, `id_order`, `product_id`, `product_attribute_id`, `product_name`, `product_quantity`, `product_quantity_return`, `product_price`, `product_quantity_discount`, `product_ean13`, `product_reference`, `product_supplier_reference`, `product_weight`, `tax_name`, `tax_rate`, `ecotax`, `download_hash`, `download_nb`, `download_deadline`) + VALUES (1, 1, 7, 23, 'iPod touch - Capacité: 32Go', 1, 0, '392.140500', '0.000000', NULL, NULL, NULL, 0, 'TVA 19.6%', '19.60', '0.00', '', 0, '0000-00-00 00:00:00'); +INSERT INTO `PREFIX_order_detail` (`id_order_detail`, `id_order`, `product_id`, `product_attribute_id`, `product_name`, `product_quantity`, `product_quantity_return`, `product_price`, `product_quantity_discount`, `product_ean13`, `product_reference`, `product_supplier_reference`, `product_weight`, `tax_name`, `tax_rate`, `ecotax`, `download_hash`, `download_nb`, `download_deadline`) + VALUES (2, 1, 9, 0, 'Écouteurs à isolation sonore Shure SE210', 1, 0, '124.581900', '0.000000', NULL, NULL, NULL, 0, 'TVA 19.6%', '19.60', '0.00', '', 0, '0000-00-00 00:00:00'); +INSERT INTO `PREFIX_order_history` (`id_order_history`, `id_employee`, `id_order`, `id_order_state`, `date_add`) VALUES (1, 0, 1, 1, NOW()); + +INSERT INTO `PREFIX_manufacturer` (`id_manufacturer`, `name`, `date_add`, `date_upd`, `active`) VALUES (1, 'Apple Computer, Inc', NOW(), NOW(), 1); +INSERT INTO `PREFIX_manufacturer` (`id_manufacturer`, `name`, `date_add`, `date_upd`, `active`) VALUES(2, 'Shure Incorporated', NOW(), NOW(), 1); + +INSERT INTO `PREFIX_address` (`id_address`, `id_country`, `id_state`, `id_customer`, `id_manufacturer`, `id_supplier`, `alias`, `lastname`, `firstname`, `address1`, `postcode`, `city`, `phone`, `date_add`, `date_upd`, `active`, `deleted`) + VALUES (1, 21, 5, 0, 1, 0, 'manufacturer', 'JOBS', 'STEVE', '1 Infinite Loop', '95014', 'Cupertino', '(800) 275-2273', NOW(), NOW(), 1, 0); +INSERT INTO `PREFIX_address` (`id_address`, `id_country`, `id_state`, `id_customer`, `id_manufacturer`, `id_supplier`, `alias`, `company`, `lastname`, `firstname`, `address1`, `address2`, `postcode`, `city`, `phone`, `date_add`, `date_upd`, `active`, `deleted`) + VALUES (2, 8, 0, 1, 0, 0, 'Mon adresse', 'My Company', 'DOE', 'John', '16, Main street', '2nd floor', '75000', 'Paris ', '0102030405', NOW(), NOW(), 1, 0); + +INSERT INTO `PREFIX_supplier` (`id_supplier`, `name`, `date_add`, `date_upd`, `active`) VALUES (1, 'AppleStore', NOW(), NOW(), 1); +INSERT INTO `PREFIX_supplier` (`id_supplier`, `name`, `date_add`, `date_upd`, `active`) VALUES (2, 'Shure Online Store', NOW(), NOW(), 1); + +INSERT INTO `PREFIX_product` (`id_product`, `indexed`, `id_supplier`, `id_manufacturer`, `id_tax_rules_group`, `id_category_default`, `id_color_default`, `on_sale`, `online_only`, `ean13`, `ecotax`, `quantity`, `price`, `wholesale_price`, `reference`, `supplier_reference`, `weight`, `out_of_stock`, `quantity_discount`, `customizable`, `uploadable_files`, `text_fields`, `active`, `date_add`, `date_upd`) VALUES +(1, 1, 1, 1, 1, 2, 2, 0, 0, '0', 0.00, 800, 124.581940, 70.000000, '', '', 0.5, 2, 0, 0, 0, 0, 1, NOW(), NOW()), +(2, 1, 1, 1, 1, 2, 0, 0, 0, '0', 0.00, 100, 66.053500, 33.000000, '', '', 0, 2, 0, 0, 0, 0, 1, NOW(), NOW()), +(5, 1, 1, 1, 1, 4, 0, 0, 0, '0', 0.00, 274, 1504.180602, 1000.000000, '', NULL, 1.36, 2, 0, 0, 0, 0, 1, NOW(), NOW()), +(6, 1, 1, 1, 1, 4, 0, 0, 0, '0', 0.00, 250, 1170.568561, 0.000000, '', NULL, 0.75, 2, 0, 0, 0, 0, 1, NOW(), NOW()), +(7, 1, 0, 0, 1, 2, 0, 0, 0, '', 0.00, 180, 241.638796, 200.000000, '', NULL, 0, 2, 0, 0, 0, 0, 1, NOW(), NOW()), +(8, 1, 0, 0, 1, 3, 0, 0, 1, '', 0.00, 1, 25.041806, 0.000000, '', NULL, 0, 2, 0, 0, 0, 0, 1, NOW(), NOW()), +(9, 1, 2, 2, 1, 3, 0, 0, 1, '', 0.00, 1, 124.581940, 0.000000, '', NULL, 0, 2, 0, 0, 0, 0, 1, NOW(), NOW()); + + +INSERT INTO `PREFIX_product_lang` (`id_product`, `id_lang`, `description`, `description_short`, `link_rewrite`, `meta_description`, `meta_keywords`, `meta_title`, `name`, `available_now`, `available_later`) VALUES +(1, 1, '

    Curved ahead of the curve.

    \r\n

    For those about to rock, we give you nine amazing colors. But that''s only part of the story. Feel the curved, all-aluminum and glass design and you won''t want to put iPod nano down.

    \r\n

    Great looks. And brains, too.

    \r\n

    The new Genius feature turns iPod nano into your own highly intelligent, personal DJ. It creates playlists by finding songs in your library that go great together.

    \r\n

    Made to move with your moves.

    \r\n

    The accelerometer comes to iPod nano. Give it a shake to shuffle your music. Turn it sideways to view Cover Flow. And play games designed with your moves in mind.

    ', '

    New design. New features. Now in 8GB and 16GB. iPod nano rocks like never before.

    ', 'ipod-nano', '', '', '', 'iPod Nano', 'In stock', ''), +(1, 2, '

    Des courbes avantageuses.

    \r\n

    Pour les amateurs de sensations, voici neuf nouveaux coloris. Et ce n''est pas tout ! Faites l''expérience du design elliptique en aluminum et verre. Vous ne voudrez plus le lâcher.

    \r\n

    Beau et intelligent.

    \r\n

    La nouvelle fonctionnalité Genius fait d''iPod nano votre DJ personnel. Genius crée des listes de lecture en recherchant dans votre bibliothèque les chansons qui vont bien ensemble.

    \r\n

    Fait pour bouger avec vous.

    \r\n

    iPod nano est équipé de l''accéléromètre. Secouez-le pour mélanger votre musique. Basculez-le pour afficher Cover Flow. Et découvrez des jeux adaptés à vos mouvements.

    ', '

    Nouveau design. Nouvelles fonctionnalités. Désormais en 8 et 16 Go. iPod nano, plus rock que jamais.

    ', 'ipod-nano', '', '', '', 'iPod Nano', 'En stock', ''), +(2, 1, '

    Instant attachment.

    \r\n

    Wear up to 500 songs on your sleeve. Or your belt. Or your gym shorts. iPod shuffle is a badge of musical devotion. Now in new, more brilliant colors.

    \r\n

    Feed your iPod shuffle.

    \r\n

    iTunes is your entertainment superstore. It’s your ultra-organized music collection and jukebox. And it’s how you load up your iPod shuffle in one click.

    \r\n

    Beauty and the beat.

    \r\n

    Intensely colorful anodized aluminum complements the simple design of iPod shuffle. Now in blue, green, pink, red, and original silver.

    ', '

    iPod shuffle, the world’s most wearable music player, now clips on in more vibrant blue, green, pink, and red.

    ', 'ipod-shuffle', '', '', '', 'iPod shuffle', 'In stock', ''), +(2, 2, '

    Un lien immédiat.

    \r\n

    Portez jusqu''à 500 chansons accrochées à votre manche, à votre ceinture ou à votre short. Arborez votre iPod shuffle comme signe extérieur de votre passion pour la musique. Existe désormais en quatre nouveaux coloris encore plus éclatants.

    \r\n

    Emplissez votre iPod shuffle.

    \r\n

    iTunes est un immense magasin dédié au divertissement, une collection musicale parfaitement organisée et un jukebox. Vous pouvez en un seul clic remplir votre iPod shuffle de chansons.

    \r\n

    La musique en technicolor.

    \r\n

    iPod shuffle s''affiche désormais dans de nouveaux coloris intenses qui rehaussent le design épuré du boîtier en aluminium anodisé. Choisissez parmi le bleu, le vert, le rose, le rouge et l''argenté d''origine.

    ', '

    iPod shuffle, le baladeur le plus portable du monde, se clippe maintenant en bleu, vert, rose et rouge.

    ', 'ipod-shuffle', '', '', '', 'iPod shuffle', 'En stock', ''), +(5, 1, '

    MacBook Air is nearly as thin as your index finger. Practically every detail that could be streamlined has been. Yet it still has a 13.3-inch widescreen LED display, full-size keyboard, and large multi-touch trackpad. It’s incomparably portable without the usual ultraportable screen and keyboard compromises.

    The incredible thinness of MacBook Air is the result of numerous size- and weight-shaving innovations. From a slimmer hard drive to strategically hidden I/O ports to a lower-profile battery, everything has been considered and reconsidered with thinness in mind.

    MacBook Air is designed and engineered to take full advantage of the wireless world. A world in which 802.11n Wi-Fi is now so fast and so available, people are truly living untethered — buying and renting movies online, downloading software, and sharing and storing files on the web.

    ', 'MacBook Air is ultrathin, ultraportable, and ultra unlike anything else. But you don’t lose inches and pounds overnight. It’s the result of rethinking conventions. Of multiple wireless innovations. And of breakthrough design. With MacBook Air, mobile computing suddenly has a new standard.', 'macbook-air', '', '', '', 'MacBook Air', '', NULL), +(5, 2, '

    MacBook Air est presque aussi fin que votre index. Pratiquement tout ce qui pouvait être simplifié l''a été. Il n''en dispose pas moins d''un écran panoramique de 13,3 pouces, d''un clavier complet et d''un vaste trackpad multi-touch. Incomparablement portable il vous évite les compromis habituels en matière d''écran et de clavier ultra-portables.

    L''incroyable finesse de MacBook Air est le résultat d''un grand nombre d''innovations en termes de réduction de la taille et du poids. D''un disque dur plus fin à des ports d''E/S habilement dissimulés en passant par une batterie plus plate, chaque détail a été considéré et reconsidéré avec la finesse à l''esprit.

    MacBook Air a été conçu et élaboré pour profiter pleinement du monde sans fil. Un monde dans lequel la norme Wi-Fi 802.11n est désormais si rapide et si accessible qu''elle permet véritablement de se libérer de toute attache pour acheter des vidéos en ligne, télécharger des logicééééiels, stocker et partager des fichiers sur le Web.

    ', 'MacBook Air est ultra fin, ultra portable et ultra différent de tout le reste. Mais on ne perd pas des kilos et des centimètres en une nuit. C''est le résultat d''une réinvention des normes. D''une multitude d''innovations sans fil. Et d''une révolution dans le design. Avec MacBook Air, l''informatique mobile prend soudain une nouvelle dimension.', 'macbook-air', '', '', '', 'MacBook Air', '', NULL), +(6, 1, 'Every MacBook has a larger hard drive, up to 250GB, to store growing media collections and valuable data.

    The 2.4GHz MacBook models now include 2GB of memory standard — perfect for running more of your favorite applications smoothly.', 'MacBook makes it easy to hit the road thanks to its tough polycarbonate case, built-in wireless technologies, and innovative MagSafe Power Adapter that releases automatically if someone accidentally trips on the cord.', 'macbook', '', '', '', 'MacBook', '', NULL), +(6, 2, 'Chaque MacBook est équipé d''un disque dur plus spacieux, d''une capacité atteignant 250 Go, pour stocker vos collections multimédia en expansion et vos données précieuses.

    Le modèle MacBook à 2,4 GHz intègre désormais 2 Go de mémoire en standard. L''idéal pour exécuter en souplesse vos applications préférées.', 'MacBook vous offre la liberté de mouvement grâce à son boîtier résistant en polycarbonate, à ses technologies sans fil intégrées et à son adaptateur secteur MagSafe novateur qui se déconnecte automatiquement si quelqu''un se prend les pieds dans le fil.', 'macbook', '', '', '', 'MacBook', '', NULL), +(7, 1, '

    Five new hands-on applications

    \r\n

    View rich HTML email with photos as well as PDF, Word, and Excel attachments. Get maps, directions, and real-time traffic information. Take notes and read stock and weather reports.

    \r\n

    Touch your music, movies, and more

    \r\n

    The revolutionary Multi-Touch technology built into the gorgeous 3.5-inch display lets you pinch, zoom, scroll, and flick with your fingers.

    \r\n

    Internet in your pocket

    \r\n

    With the Safari web browser, see websites the way they were designed to be seen and zoom in and out with a tap.2 And add Web Clips to your Home screen for quick access to favorite sites.

    \r\n

    What''s in the box

    \r\n
      \r\n
    • iPod touch
    • \r\n
    • Earphones
    • \r\n
    • USB 2.0 cable
    • \r\n
    • Dock adapter
    • \r\n
    • Polishing cloth
    • \r\n
    • Stand
    • \r\n
    • Quick Start guide
    • \r\n
    ', '
      \r\n
    • Revolutionary Multi-Touch interface
    • \r\n
    • 3.5-inch widescreen color display
    • \r\n
    • Wi-Fi (802.11b/g)
    • \r\n
    • 8 mm thin
    • \r\n
    • Safari, YouTube, Mail, Stocks, Weather, Notes, iTunes Wi-Fi Music Store, Maps
    • \r\n
    ', 'ipod-touch', '', '', '', 'iPod touch', '', NULL), +(7, 2, '

    Titre 1

    \r\n

    Titre 2

    \r\n

    Titre 3

    \r\n

    Titre 4

    \r\n
    Titre 5
    \r\n
    Titre 6
    \r\n
      \r\n
    • UL
    • \r\n
    • UL
    • \r\n
    • UL
    • \r\n
    • UL
    • \r\n
    \r\n
      \r\n
    1. OL
    2. \r\n
    3. OL
    4. \r\n
    5. OL
    6. \r\n
    7. OL
    8. \r\n
    \r\n

    paragraphe...

    \r\n

    paragraphe...

    \r\n

    paragraphe...

    \r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
    th th th
    tdtdtd
    tdtdtd
    \r\n

    Cinq nouvelles applications sous la main

    \r\n

    Consultez vos e-mails au format HTML enrichi, avec photos et pieces jointes au format PDF, Word et Excel. Obtenez des cartes, des itinéraires et des informations sur l''état de la circulation en temps réel. Rédigez des notes et consultez les cours de la Bourse et les bulletins météo.

    \r\n

    Touchez du doigt votre musique et vos vidéos. Entre autres.

    \r\n

    La technologie multi-touch révolutionnaire intégrée au superbe écran de 3,5 pouces vous permet d''effectuer des zooms avant et arrière, de faire défiler et de feuilleter des pages à l''aide de vos seuls doigts.

    \r\n

    Internet dans votre poche

    \r\n

    Avec le navigateur Safari, vous pouvez consulter des sites web dans leur mise en page d''origine et effectuer un zoom avant et arrière d''une simple pression sur l''écran.

    \r\n

    Contenu du coffret

    \r\n
      \r\n
    • iPod touch
    • \r\n
    • Écouteurs
    • \r\n
    • Câble USB 2.0
    • \r\n
    • Adaptateur Dock
    • \r\n
    • Chiffon de nettoyage
    • \r\n
    • Support
    • \r\n
    • Guide de démarrage rapide
    • \r\n
    \r\n

     

    ', '

    Interface multi-touch révolutionnaire
    Écran panoramique couleur de 3,5 pouces
    Wi-Fi (802.11b/g)
    8 mm d''épaisseur
    Safari, YouTube, iTunes Wi-Fi Music Store, Courrier, Cartes, Bourse, Météo, Notes

    ', 'ipod-touch', '', '', '', 'iPod touch', 'En stock', NULL), +(8, 1, '

    Lorem ipsum

    ', '

    Lorem ipsum

    ', 'belkin-leather-folio-for-ipod-nano-black-chocolate', '', '', '', 'Belkin Leather Folio for iPod nano - Black / Chocolate', '', NULL), +(8, 2, '

    Caractéristiques

    \r\n
  • Cuir doux résistant
  • \r\n
  • Accès au bouton Hold
  • \r\n
  • Fermeture magnétique
  • \r\n
  • Accès au Dock Connector
  • \r\n
  • Protège-écran
  • ', '

    Cet étui en cuir tendance assure une protection complète contre les éraflures et les petits aléas de la vie quotidienne. Sa conception élégante et compacte vous permet de glisser votre iPod directement dans votre poche ou votre sac à main.

    ', 'housse-portefeuille-en-cuir-ipod-nano-noir-chocolat', '', '', '', 'Housse portefeuille en cuir (iPod nano) - Noir/Chocolat', '', NULL), +(9, 1, '
    Using Hi-Definition MicroSpeakers to deliver full-range audio, the ergonomic and lightweight design of the SE210 earphones is ideal for premium on-the-go listening on your iPod or iPhone. They offer the most accurate audio reproduction from both portable and home stereo audio sources--for the ultimate in precision highs and rich low end. In addition, the flexible design allows you to choose the most comfortable fit from a variety of wearing positions.

    Features
    \r\n
      \r\n
    • Sound-isolating design
    • \r\n
    • Hi-Definition MicroSpeaker with a single balanced armature driver
    • \r\n
    • Detachable, modular cable so you can make the cable longer or shorter depending on your activity
    • \r\n
    • Connector compatible with earphone ports on both iPod and iPhone
    • \r\n
    \r\nSpecifications
    \r\n
      \r\n
    • Speaker type: Hi-Definition MicroSpeaker
    • \r\n
    • Frequency range: 25Hz-18.5kHz
    • \r\n
    • Impedance (1kHz): 26 Ohms
    • \r\n
    • Sensitivity (1mW): 114 dB SPL/mW
    • \r\n
    • Cable length (with extension): 18.0 in./45.0 cm (54.0 in./137.1 cm)
    • \r\n
    \r\nIn the box
    \r\n
      \r\n
    • Shure SE210 earphones
    • \r\n
    • Extension cable (36.0 in./91.4 cm)
    • \r\n
    • Three pairs foam earpiece sleeves (small, medium, large)
    • \r\n
    • Three pairs soft flex earpiece sleeves (small, medium, large)
    • \r\n
    • One pair triple-flange earpiece sleeves
    • \r\n
    • Carrying case
    • \r\n
    \r\nWarranty
    Two-year limited
    (For details, please visit
    www.shure.com/PersonalAudio/CustomerSupport/ProductReturnsAndWarranty/index.htm.)

    Mfr. Part No.: SE210-A-EFS

    Note: Products sold through this website that do not bear the Apple Brand name are serviced and supported exclusively by their manufacturers in accordance with terms and conditions packaged with the products. Apple''s Limited Warranty does not apply to products that are not Apple-branded, even if packaged or sold with Apple products. Please contact the manufacturer directly for technical support and customer service.
    ', '

    Evolved from personal monitor technology road-tested by pro musicians and perfected by Shure engineers, the lightweight and stylish SE210 delivers full-range audio that''s free from outside noise.

    ', 'ecouteurs-a-isolation-sonore-shure-se210-blanc', '', '', '', 'Shure SE210 Sound-Isolating Earphones for iPod and iPhone', '', NULL), +(9, 2, '

    Basés sur la technologie des moniteurs personnels testée sur la route par des musiciens professionnels et perfectionnée par les ingénieurs Shure, les écouteurs SE210, légers et élégants, fournissent une sortie audio à gamme étendue exempte de tout bruit externe.


    Conception à isolation sonore
    Les embouts à isolation sonore fournis bloquent plus de 90 % du bruit ambiant. Combinés à un design ergonomique séduisant et un câble modulaire, ils minimisent les intrusions du monde extérieur, vous permettant de vous concentrer sur votre musique. Conçus pour les amoureux de la musique qui souhaitent faire évoluer leur appareil audio portable, les écouteurs SE210 vous permettent d''emmener la performance avec vous.

    Micro-transducteur haute définition
    Développés pour une écoute de qualité supérieure en déplacement, les écouteurs SE210 utilisent un seul transducteur à armature équilibrée pour bénéficier d''une gamme audio étendue. Le résultat ? Un confort d''écoute époustouflant qui restitue tous les détails d''un spectacle live.

    \r\n

    Le kit universel Deluxe comprend les éléments suivants :
    - Embouts à isolation sonore
    Les embouts à isolation sonore inclus ont un double rôle : bloquer les bruits ambiants et garantir un maintien et un confort personnalisés. Comme chaque oreille est différente, le kit universel Deluxe comprend trois tailles (S, M, L) d''embouts mousse et flexibles. Choisissez la taille et le style d''embout qui vous conviennent le mieux : une bonne étanchéité est un facteur clé pour optimiser l''isolation sonore et la réponse des basses, ainsi que pour accroître le confort en écoute prolongée.

    - Câble modulaire
    En se basant sur les commentaires de nombreux utilisateurs, les ingénieurs de Shure ont développé une solution de câble détachable pour permettre un degré de personnalisation sans précédent. Le câble de 1 mètre fourni vous permet d''adapter votre confort en fonction de l''activité et de l''application.

    - Étui de transport
    Outre les embouts à isolation sonore et le câble modulaire, un étui de transport compact et résistant est fourni avec les écouteurs SE210 pour vous permettre de ranger vos écouteurs de manière pratique et sans encombres.

    - Garantie limitée de deux ans
    Chaque solution SE210 achetée est couverte par une garantie pièces et main-d''œuvre de deux ans.

    Caractéristiques techniques

    \r\n
      \r\n
    • Type de transducteur : micro-transducteur haute définition
    • \r\n
    • Sensibilité (1 mW) : pression acoustique de 114 dB/mW
    • \r\n
    • Impédance (à 1 kHz) : 26 W
    • \r\n
    • Gamme de fréquences : 25 Hz – 18,5 kHz
    • \r\n
    • Longueur de câble / avec rallonge : 45 cm / 136 cm
    • \r\n
    \r\n

    Contenu du coffret

    \r\n
      \r\n
    • Écouteurs Shure SE210
    • \r\n
    • Kit universel Deluxe (embouts à isolation sonore, câble modulaire, étui de transport)
    • \r\n
    ', '

    Les écouteurs à isolation sonore ergonomiques et légers offrent la reproduction audio la plus fidèle en provenance de sources audio stéréo portables ou de salon.

    ', 'ecouteurs-a-isolation-sonore-shure-se210', '', '', '', 'Écouteurs à isolation sonore Shure SE210', '', NULL), +(7, 3, '

    Cinco nuevas aplicaciones a mano

    \r\n


    Consulta tu correo en formato HTML enriquecido, con fotos y ficheros adjuntos en formato PDF, Word y Excel. Consigue mapas, itinerarios e información sobre el estado de la carreteras en tiempo real. Escribe notas y consulta la bolsa y el tiempo.
    Alcanza con un dedo tu música y tus videos, entre otras cosas.
    La tecnología multi-touch revolucionaria integrada a la magnífica pantalla de 3,5 pulgadas te permitirá efectuar zoom hacia adelante y hacia atrás, y pasar y ojear las páginas solo con la ayuda de tus dedos.

    \r\n

    Internet en tu bolsillo

    \r\n

    Con el navegador Safari, podrás consultar sitios web en su compaginación de origen y efectuar un zoom hacia adelante y hacia atrás con la simple presión de un dedo en la pantalla.

    \r\n

    Contenido del estuche
    * iPod touch
    * Auriculares
    * Cable USB 2.0
    * Adaptador Dock
    * Paño de limpieza
    * Base
    * Guía de inicio rápido
    Título
    Párrafo

    ', '

    Interfaz multi-touch revolucionaria
    Pantalla panorámica color de 3,5 pulgadas
    Wi-Fi (802.11b/g)
    8 mm de espesor
    Safari, YouTube, iTunes Wi-Fi Music Store, Correo, Mapas, Bolsa, El tiempo, Notas

    ', 'ipod-touch', '', '', '', 'iPod touch', 'Disponible', ''), +(1, 3, '

    Curvas aerodinámicas.

    \r\n

    Para los aficionados a las sensaciones fuertes, os presentamos nueve nuevos colores. ¡ Y eso no es todo ! Experimenta el diseño elíptico de aluminio y vidrio. ¡ No querrás separarte de él nunca más !

    \r\n


    Estético e inteligente.

    \r\n

    La nueva aplicación Genius hace de iPod nano tu discjockey personal. Genuis crea listas de lectura buscando en tu biblioteca las canciones que combinan entre si.

    \r\n


    Hecho para moverse contigo.

    iPod nano está equipado de un acelerómetro. Muévelo para mezclar tu música. Voltéalo para mostrar Cover Flow. Y descubre juegos adaptados a tus movimientos.

    ', '

    Nuevo diseño. Nuevas aplicaciones. Ahora disponible en 8 y 16 Go. iPod nano, más rock que nunca.

    ', 'ipod-nano', '', '', '', 'iPod Nano', 'Disponible', ''), +(2, 3, '

    Un enlace inmediato.

    Lleva hasta 500 canciones colgadas de tu manga, de tu cinturón o de tu pantalón. Presume con tu iPod shuffle como signo exterior de tu pasión por la música. Ahora ya existen cuatro nuevos colores más llamativos.

    Llena tu iPod shuffle.

    iTunes es una enorme tienda dedicada a la diversión, una colección de música organizada perfectamente y un jukebox. Con tan solo un clic puedes llenar tu iPod shuffle con canciones.

    La música en tecnicolor.

    iPod shuffle presenta nuevos colores vivos que realzan su diseño estilizado en aluminio anodizado. Elige entre azul, verde, rosa, rojo y el plateado de origen.

    ', '

    iPod shuffle, el walkman más portátil del mundo, ahora en azul, verde, rosa y rojo.

    ', 'ipod-shuffle', '', '', '', 'iPod shuffle', 'Disponible', ''), +(6, 3, '

    Cada MacBook está equipado de un disco duro más espacioso, de una capacidad de hasta 250 Go, para almacenar tus colecciones multimedia en expansión y tus datos más preciados.
    El modelo MacBook de 2,4 GHz integra 2 Go de memoria en estándar. Lo ideal para realizar sin dificultad tus aplicaciones preferidas.

    ', '

    MacBook te ofrece una gran libertad de movimientos gracias a su exterior resistente en policarbonato, a su tecnología sin cable y a su adaptador cargador sector innovador que se desconecta automáticamente si alguien se engancha en el cable.

    ', 'macbook', '', '', '', 'MacBook', 'Disponible', ''), +(5, 3, '

    MacBook Air es casi tan fino como tu dedo. Se ha simplificado al máximo y a pesar de ello dispone de una pantalla panorámica de 13,3 pulgadas, de un teclado completo y de un amplio trackpad multi-touch. Portátil al 100%, te evitará tener que hacer un compromiso en lo que concierne a la pantalla y al teclado.

    La increíble sutileza de MacBook Air es el resultado de un gran número de innovaciones en materia de reducción de tamaño y peso. Desde un disco duro más fino hasta puertos E/S disimulados hábilmente pasando por una batería más plana, cada detalle se consideró para que el resultado fuera lo más fino posible.

    MacBook Air fue creado y elaborado para disfrutar plenamente del mundo inalámbrico. Un mundo en el que la norma Wi-Fi 802.11n es tan rápida y accesible que permite liberarse completamente de cualquier atadura para comprar videos en línea, descargar programas, almacenar y compartir archivos en la Red.

    ', '

    MacBook Air es ultra fino, ultra portátil y ultra diferente de todo el resto. Pero no se pierden kilos y centímetros en tan solo una noche. Todo esto es el resultado de un nuevo invento de normas. De un sinfín de novedades sin cable. Y de una revolución en el diseño. Con MacBook Air, la informática móvil adquiere una nueva dimensión.

    ', 'macbook-air', '', '', '', 'MacBook Air', 'Disponible', ''), +(8, 3, '

    Características

    \r\n
      \r\n
    • Cuero suave resistente
    • \r\n
    • Acceso a la tecla Hold
    • \r\n
    • Cierre magnético
    • \r\n
    • Acceso al Dock Conector
    • \r\n
    • Salva pantallas
    • \r\n
    ', '

    Este estuche de cuero de última moda garantiza una completa protección contra los arañazos y los pequeños contratiempos de la vida diaria. Su diseño elegante y compacto te permite meter tu Ipod directamente en tu bolsillo o en tu bolso.

    ', 'funda-cuero-ipod-nano-negro-chocolate', '', '', '', 'Leather Case (iPod nano) - Negro / Chocolate', 'Disponible', ''), +(9, 3, '

    Los auriculares SE210, ligeros y elegantes, están basados en la tecnología de los monitores personales que los músicos profesionales utilizan en carretera y que los ingenieros de Shure han perfeccionado. También están provistos de una salida audio de gama extendida exenta de todo ruido exterior.

    Creado para un aislamiento sonoro

    \r\n

    Las almohadillas provistas de un aislamiento sonoro bloquean más del 90% del ruido ambiente. Combinadas con un diseño ergonómico atractivo y un cable modular, minimizan las intrusiones del mundo exterior y te permiten concentrarte en tu música. Creados para los apasionados por la música que quieren que su aparato audio móvil evolucione, los auriculares SE210 te permitirán llevar la tecnología allí donde tú vayas.

    Micro-transductor alta definición
    Desarrollados para poder tener una audición de calidad durante los desplazamientos, los auriculares SE210 utilizan un único transductor con un armazón equilibrado para poder disfrutar de una gama audio extendida. ¿El resultado ? Un confort audio increíble que restituye cada detalle de un espectáculo en directo.

    El kit universal Deluxe incluye los siguientes elementos :
    - Almohadillas para aislamiento sonoro
    Las almohadillas para el aislamiento sonoro tienen una doble función : bloquear el ruido ambiente y garantizar una estabilidad y un confort personalizados. Como cada oreja es diferente el kit universal Deluxe incluye tres tallas (S, M, L) de almohadillas de espuma y flexibles. Elige la talla y el estilo de almohadilla que mejor te convenga : un buen aislamiento es un factor clave tanto para optimizar el aislamiento sonoro y la respuesta de los bajos como para aumentar el confort durante una audición prolongada.

    - Cable modular

    \r\n

    Basándose en los comentarios de los numerosos usuarios, los ingenieros de Shure han creado una solución de cable separable para permitir un grado de personalización sin precedentes. El cable de 1 metro te permite adaptar el confort en función de la actividad del momento y de la aplicación.

    - Estuche para el transporte

    \r\n

    Además de las almohadillas de aislamiento sonoro y del cable modular, los auriculares SE210 están provistos de un estuche de transporte compacto y resistente para guardar los auriculares de manera práctica y sin dificultad.
    - Garantía límite de dos años
    Cada solución SE210 tiene una garantía piezas y mano de obra de dos años.

    \r\n


    Características técnicas

    \r\n
      \r\n
    • Tipo de transductor : micro-transductor alta definición
    • \r\n
    • Sensibilidad (1 mW) : presión acústica de 114 dB/mW
    • \r\n
    • Impedancia : (à 1 kHz) : 26 W
    • \r\n
    • Gama de frecuencias : 25 Hz ˆ 18,5 kHz
    • \r\n
    • Longitud del cable / con alargador : 45 cm / 136 cm
    • \r\n
    \r\n


    Contenido de la caja

    \r\n
      \r\n
    • Altavoces Shure SE210
    • \r\n
    • Kit universal Deluxe (almohadillas de aislamiento sonoro, cable modular, estuche de transporte)
    • \r\n
    ', '

    Los auriculares con aislamiento ergonómicos y ligeros ofrecen la reproducción más fiel proveniente de fuentes audio estéreo móviles o de salón.

    ', 'auriculares-aislantes-del-sonido-shure-se210', '', '', '', 'Auriculares aislantes del sonido Shure SE210', 'Disponible', ''), +(1, 4, '

    Immer eine Kurve voraus.

    \r\n

    Für all die, die gleich losrocken wollen, gibt es jetzt neun tolle Farben zur Auswahl. Aber das ist nur ein Teil der Geschichte. Mit seinem runden Design, das komplett aus Aluminium und Glas besteht, werden Sie den iPod nano nicht mehr weglegen wollen.

    \r\n

    Tolles Design. Und viel Köpfchen.

    \r\n

    Die neue Genius-Funktion verwandelt den iPod nano in Ihren hoch intelligenten, persönlichen DJ. Es erstellt Abspiellisten aus den Songs in Ihrer Sammlung, die gut zusammenpassen.

    \r\n

    Passt sich Ihren Bewegungen an.

    \r\n

    Der iPod nano jetzt mit Beschleunigungsmesser. Einmal schütteln, und Ihre Musik wird neu sortiert. Kippen Sie es zur Seite für die Cover Flow-Ansicht. Und spielen Sie mit den Bewegungen, an die Sie denken.

    ', '

    New design. New features. Now in 8GB and 16GB. iPod nano rocks like never before.

    ', 'ipod-nano', '', '', '', 'iPod Nano', 'In stock', ''), +(2, 4, '

    style="font-size: small;">Gleich festmachen.

    \r\n

    Tragen Sie bis zu 500 Songs am Ärmel. Oder an Ihrem Gürtel. Oder an Ihrer Sporthose. iPod shuffle ist ein Erkennungszeichen echter Musikfans. Jetzt in neuen, noch leuchtenderen Farben.

    \r\n

    style="font-size: small;">Füttern Sie Ihren iPod shuffle.

    \r\n

    iTunes ist Ihr Super-Store für Unterhaltung. Es ist Ihre optimal organisierte Musik-Sammlung und Jukebox. Und Sie können Ihren iPod shuffle mit einem Klick laden.

    \r\n

    style="font-size: small;">Die Schöne und der Beat.

    \r\n

    Das farbintensive eloxierte Aluminium ergänzt das schlichte Design des iPod shuffle. Jetzt in Blau, Grün, Rosa, Rot und klassischem Silber.

    ', '

    iPod shuffle, the world’s most wearable music player, now clips on in more vibrant blue, green, pink, and red.

    ', 'ipod-shuffle', '', '', '', 'iPod shuffle', 'In stock', ''), +(5, 4, '

    MacBook Air ist kaum dicker als Ihr Zeigefinger. Nahezu jedes Detail wurde abgeflacht. Und dabei hat es immer noch einen 13,3-Zoll-Widescreen-LED-Display, eine Tastatur in voller Größe und einen großen Multi-Touch-Trackpad. Es besitzt eine unvergleichliche Tragbarkeit, ohne die üblichen Kompromisse für ultraportable Bildschirme und Tastaturen.

    Der unglaublich dünne MacBook Air ist das Ergebnis zahlreicher Innovationen zur Größen- und Gewichtsoptimierung. Die flachere Festplatte, die strategisch versteckten I/O-Ports und eine noch flachere Batterie: Alles wurde immer wieder überdacht, immer mit dem Ziel, es noch dünner zu gestalten.

    Das Design und Konzept von MacBook Air ist voll auf die Vorteile der Kabelfreiheit ausgerichtet. Eine Welt, in der 802.11n WLAN heutzutage so schnell und so leicht verfügbar ist, dass die Menschen heute grenzenlos Filme online kaufen oder mieten, Software downloaden und Dateien über das Internet teilen oder speichern können.

    ', 'MacBook Air is ultrathin, ultraportable, and ultra unlike anything else. But you don’t lose inches and pounds overnight. It’s the result of rethinking conventions. Of multiple wireless innovations. And of breakthrough design. With MacBook Air, mobile computing suddenly has a new standard.', 'macbook-Air', '', '', '', 'MacBook Air', '', NULL), +(6, 4, 'Jedes MacBook verfügt über eine größere Festplatte, bis zu 250GB, zum Speichern immer größer werdender Mediensammlungen und wertvoller Daten.

    Die 2,4 GHz MacBook-Modelle haben nun 2 GB Standard-Arbeitsspeicher - ideal zum reibungslosen Abspielen Ihrer Lieblings-Anwendungen.', 'MacBook makes it easy to hit the road thanks to its tough polycarbonate case, built-in wireless technologies, and innovative MagSafe Power Adapter that releases automatically if someone accidentally trips on the cord.', 'macbook', '', '', '', 'MacBook', '', NULL), +(7, 4, '

    Fünf neue Hands-on-Anwendungen

    \r\n

    Rich-HTML-E-Mails mit Fotos anzeigen sowie PDF-, Word-und Excel-Anhänge. Holen Sie sich Karten, Wegbeschreibungen und Echtzeit-Verkehrsinformationen. Sie können sich Notizen machen und Börsen- und Wetterberichte lesen.

    \r\n

    Berühren Sie Ihre Musik, Filme und vieles mehr

    \r\n

    Mit der revolutionären, in den wunderschönen 3,5-Zoll-Display integrierten Multi-Touch-Technologie können Sie zuziehen, zoomen, scrollen und streichen.

    \r\n

    Internet in Ihrer Tasche

    \r\n

    Mit dem Safari-Webbrowser sehen Sie Webseiten so, wie sie gesehen werden sollten und vergrößern und verkleinern sie mit einer Berührung.2Fügen Sie Web-Clips zu Ihrer Startseite hinzu für den Schnellzugriff auf Ihre bevorzugten Webseiten.

    \r\n

    Zum Set gehören/h3>\r\n
      \r\n
    • der iPod touch
    • \r\n
    • Ohrhörer
    • \r\n
    • USB 2.0-Kabel
    • \r\n
    • Anschluss-Adapter
    • \r\n
    • Poliertuch
    • \r\n
    • Basis
    • \r\n
    • Quick Start Guide
    • \r\n
    ', '
      \r\n
    • Revolutionary Multi-Touch interface
    • \r\n
    • 3.5-inch widescreen color display
    • \r\n
    • Wi-Fi (802.11b/g)
    • \r\n
    • 8 mm thin
    • \r\n
    • Safari, YouTube, Mail, Stocks, Weather, Notes, iTunes Wi-Fi Music Store, Maps
    • \r\n
    ', 'iPod-Touch', '', '', '', 'iPod touch', '', NULL), +(8, 4, '

    Lorem ipsum

    ', '

    Lorem ipsum

    ', 'lederhulle-belkin-fur-ipod-nano-schwarz-schokolade', '', '', '', 'Lederhülle Belkin für ipod nano - Schwarz/Schokolade', '', NULL), +(9, 4, '
    Mit ihren hochauflösenden Micro-Lautsprechern, die vollen Klang liefern und ihrem ergonomischen, leichten Design sind die SE210 Ohrhörer ideal zum mobilen Extraklasse-Musik hören auf Ihrem iPod oder iPhone. Sie bieten die genaueste Tonwiedergabe, sowohl aus tragbaren als auch aus Home-Stereo-Audio-Quellen - für ultimative präzisen Höhen und kraftvolle Bässe. Darüber hinaus ermöglicht das flexible Design optimalen Tragekomfort durch eine Vielzahl von Tragemöglichkeiten.

    Funktionen
    \r\n
      \r\n
    • Klangisolierendes Design
    • \r\n
    • Hochauflösende Micro-Lautsprecher mit Single Balanced Armature-Treiber
    • \r\n
    • Abnehmbare modulare Kabel, die Sie je nach Aktivität länger oder kürzer einstellen können
    • \r\n
    • Kompatibler Stecker mit Kopfhörer-Anschlüssen für iPod und iPhone
    • \r\n
    \r\nDaten
    \r\n
      \r\n
    • Lautsprecher-Typ: Hochauflösende Micro-Lautsprecher
    • \r\n
    • Frequenzbereich: 25Hz-18.5kHz
    • \r\n
    • Impedanz (1kHz): 26 Ohm
    • \r\n
    • Empfindlichkeit (1mW): 114 dB SPL/mW
    • \r\n
    • Kabellänge (mit Erweiterung): 18,0 Zoll/45,0 cm (54,0 Zoll/137,1 cm)
    • \r\n
    \r\nIm Set enthalten
    \r\n
      \r\n
    • Shure SE210 Ohrhörer
    • \r\n
    • Verlängerungskabel (36,0 Zoll/91,4 cm)
    • \r\n
    • Drei Paar Schaumstoff-Hörmuschelhüllen (klein, mittel, groß)
    • \r\n
    • Drei Paar weiche Flex-Hörmuschelhüllen (klein, mittel, groß)
    • \r\n
    • Ein Paar Triple-Flange-Hörmuschelhüllen
    • \r\n
    • Trage-Etui
    • \r\n
    \r\nGarantie
    Zwei Jahre
    (Einzelheiten hierzu finden Sie auf
    www.shure.com/PersonalAudio/CustomerSupport/ProductReturnsAndWarranty/index.htm).

    Mfr. Teilenummer: SE210-A-EFS

    Hinweis: Für Produkte auf dieser Website, die nicht den Markennamen Apple tragen, werden Service und Support ausschließlich von den Herstellern gemäß der den Produkten beiliegenden Nutzungsbedingungen übernommen. Die von Apple angebotene Garantiezeit gilt nicht für Produkte, die kein Apple-Markenzeichen tragen, selbst wenn diese zusammen mit Apple-Produkten verpackt oder verkauft wurden. Bitte wenden Sie sich direkt an den Hersteller für den technischen Support und Kundendienst.
    ', '

    Evolved from personal monitor technology road-tested by pro musicians and perfected by Shure engineers, the lightweight and stylish SE210 delivers full-range audio that''s free from outside noise.

    ', 'klangisolierte-ohrhorer-shure-se210-weib', '', '', '', 'Shure SE210 Klangisolierte Ohrhörer für iPod und iPhone', '', NULL), +(1, 5, '

    Curve mozzafiato.

    \r\n

    Per te che ami le sensazioni forti, ecco nove fantastici colori. Ma non è finito qui. Accarezza il design sinuoso fatto di vetro e alluminio dell\'iPod nano, e non lo lascerai più.

    \r\n

    Bello e intelligente.

    \r\n

    La nuova funzione Genius trasforma l\'iPod nano nel tuo DJ personale. Sa creare delle playlist andando a cercare nella libreria musicale le canzoni che stanno bene insieme.

    \r\n

    Fatto per muoversi con te.

    \r\n

    L\'accelerometro è integrato all\'iPod nano. Scuotilo per dare uno shuffle alla tua musica. Ruotalo di lato per vedere il Cover Flow. E divertiti con i giochi adattati alle tue movenze.

    ', '

    Nuovo design. Nuove funzioni. Adesso in 8GB e 16GB. iPod nano, forte come non mai.

    ', 'ipod-nano', '', '', '', 'iPod Nano', 'In magazzino', ''), +(2, 5, '

    Sempre attaccato.

    \r\n

    Metti 500 canzoni in tasca. O nella cintura. O nei pantaloncini. iPod shuffle ti fa avere le canzoni sempre addosso. Adesso in colori più nuovi e brillanti.

    \r\n

    Ricarica il tuo iPod shuffle.

    \r\n

    iTunes è il tuo superstore del divertimento. La tua raccolta musicale super organizzata, il tuo juke-box. E puoi ricaricare il tuo iPod shuffle con un click.

    \r\n

    Musica coloratissima.

    \r\n

    Complementi dai colori intensi in alluminio anodizzato: questo è il design semplice di iPod shuffle. Adesso in blu, verde rosa, rosso, e argento originale.

    ', '

    iPod shuffle, il lettore musicale più indossabile del mondo, adesso anche nelle tonalità più vibranti di blu, verde, rosa e rosso.

    ', 'ipod-shuffle', '', '', '', 'iPod shuffle', 'In magazzino', ''), +(5, 5, '

    MacBook Air è sottile quasi come il tuo indice. Praticamente ogni dettaglio è stato semplificato al massimo. Eppure riesce ad avere uno schermo LED di 13,3 pollici, tastiera completa, e un ampio track-pad multi-touch. Incredibilmente portatile, non soffre dei compromessi tra schermo e tastiera.

    La sottigliezza incredibile di MacBook Air è il risultato di moltissime innovazioni nel campo della riduzione di dimensioni e peso. Un hard drive più sottile, porte I/O strategicamente nascoste, batteria più piatta: tutto è stato ben calibrato pensando sempre alla sottigliezza.

    MacBook Air è stato progettato e realizzato per godere a pieno dell\'universo del wireless. In un mondo in cui la norma 802.11n Wi-Fi è ormai rapida e disponibile, le persone vivono connesse - acquistano e noleggiano film online, scaricano programmi, condividono e conservano file nel web.

    ', 'MacBook Air è ultra-piatto, ultra-portatile, e ultra come nient\'altro al mondo. Ma non si perdono chili e centimetri in una notte. E\' il risultato di una rielaborazione degli standard. Di moltissime innovazioni sul wireless. E di un design rivoluzionario. Con MacBook Air, l\'informatica mobile acquista una nuova dimensione.', 'macbook-air', '', '', '', 'MacBook Air', '', NULL), +(6, 5, 'Tutti i MacBook hanno un hard drive più ampio, fino a 250GB, per conservare le tue raccolte multimediali e i dati importanti.

    I modelli MacBook a 2,4GHz ora includono 2GB di memoria standard — ideale per le tue applicazioni preferite.', 'MacBook ti offre il massimo della libertà di movimento grazie alla sua struttura resistente in policarbonato, alle tecnologie integrate wireless, e all\'innovativo MagSafe Power Adapter che si stacca automaticamente se qualcuno accidentalmente inciampa nel cavo.', 'macbook', '', '', '', 'MacBook', '', NULL), +(7, 5, '

    Cinque nuove applicazioni sotto mano

    \r\n

    Consulta le tue e-mail in formato rich HTML con foto e allegati PDF, Word, e Excel. Ottieni mappe, indicazioni stradali e sul traffico in tempo reale. Prendi appunti e consulta la Borsa e le previsioni meteo.

    \r\n

    Tocca la musica, i film e altro ancora

    \r\n

    La rivoluzionaria tecnologia Multi-Touch integrata al bellissimo schermo da 3,5 pollici ti permette di zoomare avanti e indietro, sfogliare e far scorrere le pagine con le dita.

    \r\n

    Internet in tasca

    \r\n

    Con il web browser Safari, consulta i siti web nella loro impaginazione originale e usa lo zoom avanti e indietro con la sola pressione delle dita.2 Aggiungi Web Clips al tuo schermo per accedere subito ai siti preferiti.

    \r\n

    Nella confezione

    \r\n
      \r\n
    • iPod touch
    • \r\n
    • Auricolari
    • \r\n
    • Cavo USB 2.0
    • \r\n
    • Adattatore Dock
    • \r\n
    • Panno per la pulizia
    • \r\n
    • Supporto
    • \r\n
    • Guida installazione rapida
    • \r\n
    ', '
      \r\n
    • Interfaccia Multi-Touch rivoluzionaria
    • \r\n
    • Schermo widescreen a colori da 3,5 pollici
    • \r\n
    • Wi-Fi (802.11b/g)
    • \r\n
    • 8 mm di spessore
    • \r\n
    • Safari, YouTube, Mail, Borsa, Meteo, Appunti, iTunes Wi-Fi Music Store, Mappe
    • \r\n
    ', 'ipod-touch', '', '', '', 'iPod touch', '', NULL), +(8, 5, '

    Lorem ipsum

    ', '

    Lorem ipsum

    ', 'custodia-portafoglio-in-pelle-belkin-per-ipod-nano-nero-cioccolato', '', '', '', 'Custodia portafoglio in pelle Belkin per iPod nano - Nero/Cioccolato', '', NULL), +(9, 5, '
    L\'ascolto con la tecnologia dei Micro-Auricolari ad Alta Definizione permette l\'ascolto ideale del tuo iPod o iPhone. E\' quanto ti offre il design leggero, ergonomico ed elegante degli auricolari SE210. Ti garantiscono un rendimento audio ad alto livello di stereo portatili e fissi, per un livello di precisione mai raggiunto prima. Inoltre, la forma flessibile ti peremtte di scegliere la posizione migliore per indossarli.

    Caratteristiche
    \r\n
      \r\n
    • Design di isolamento del suono
    • \r\n
    • Micro-speaker ad alta definizione con driver singolo ad armatura bilanciata
    • \r\n
    • Cavo staccabile e regolabile in modo da poterlo allungare o accorciare in base alle tue attività
    • \r\n
    • Connettore compatibile con porte auricolari sia su iPod che iPhone
    • \r\n
    \r\nSpecifiche tecniche
    \r\n
      \r\n
    • Tipo speaker: MicroSpeaker ad alta definizione
    • \r\n
    • Gamma di frequenza: 25Hz-18.5kHz
    • \r\n
    • Impedenza (1kHz): 26 Ohms
    • \r\n
    • Sensibilità (1mW): 114 dB SPL/mW
    • \r\n
    • Lunghezza cavo (con prolunga): 18.0 in./45,0 cm (54.0 in./137,1 cm)
    • \r\n
    \r\nNella confezione
    \r\n
      \r\n
    • Auricolari Shure SE210
    • \r\n
    • Cavo prolunga (36.0 in./91,4 cm)
    • \r\n
    • Tre paia di imbuti in spugna (small, medium, large)
    • \r\n
    • Tre paia di imbuti morbidi (small, medium, large)
    • \r\n
    • Un paio di imbuti a tripla aletta
    • \r\n
    • Custodia da viaggio
    • \r\n
    \r\nGaranzia
    Due anni limitata
    (Per informazioni, visitare
    www.shure.com/PersonalAudio/CustomerSupport/ProductReturnsAndWarranty/index.htm.)

    Mfr. Parte N.: SE210-A-EFS

    Nota: I prodotti venduti tramite questo sito web e che non hanno il marchio Apple ricevono assistenza esclusivamente dai loro produttori con i termini e le condizioni contenute nella confezione del prodotto. La Garanzia Limitata di Apple non si applica ai prodotti che non appartengono al marchio Apple, anche se imballati o venduti con i prodotti Apple . Contatta direttamente il produttore per supporto tecnico e servizio clienti.
    ', '

    Basati sulla tecnologia all\'avanguardia, testati da musicisti professionisti, e messi a punto da ingegneri Shure, i leggeri ed eleganti SE210 offrono un suono nitido e privo di rumori di fondo.

    ', 'ecouteurs-a-isolation-sonore-shure-se210-blanc', '', '', '', 'auricolari-sound-isolating-shure-se210-per-ipod-e-iphone', '', NULL); + +INSERT INTO `PREFIX_specific_price` (`id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `price`, `from_quantity`, `reduction`, `reduction_type`, `from`, `to`) VALUES +(1, 0, 0, 0, 0, 0, 1, 0.05, 'percentage', '0000-00-00 00:00:00', '0000-00-00 00:00:00'); + +INSERT INTO `PREFIX_category` (`id_category`, `id_parent`, `level_depth`, `nleft`, `nright`, `active`, `date_add`, `date_upd`, `position`) VALUES +(2, 1, 1, 2, 3, 1, NOW(), NOW(), 0),(3, 1, 1, 3, 4, 1, NOW(), NOW(), 1),(4, 1, 1, 4, 5, 1, NOW(), NOW(), 2); + +INSERT INTO `PREFIX_category_lang` (`id_category`, `id_lang`, `name`, `description`, `link_rewrite`, `meta_title`, `meta_keywords`, `meta_description`) VALUES +(2, 1, 'iPods', 'Now that you can buy movies from the iTunes Store and sync them to your iPod, the whole world is your theater.', 'music-ipods', '', '', ''), +(2, 2, 'iPods', 'Il est temps, pour le meilleur lecteur de musique, de remonter sur scène pour un rappel. Avec le nouvel iPod, le monde est votre scène.', 'musique-ipods', '', '', ''), +(3, 1, 'Accessories', 'Wonderful accessories for your iPod', 'accessories-ipod', '', '', ''), +(3, 2, 'Accessoires', 'Tous les accessoires à la mode pour votre iPod', 'accessoires-ipod', '', '', ''), +(4, 1, 'Laptops', 'The latest Intel processor, a bigger hard drive, plenty of memory, and even more new features all fit inside just one liberating inch. The new Mac laptops have the performance, power, and connectivity of a desktop computer. Without the desk part.', 'laptops', 'Apple laptops', 'Apple laptops MacBook Air', 'Powerful and chic Apple laptops'), +(4, 2, 'Portables', 'Le tout dernier processeur Intel, un disque dur plus spacieux, de la mémoire à profusion et d''autres nouveautés. Le tout, dans à peine 2,59 cm qui vous libèrent de toute entrave. Les nouveaux portables Mac réunissent les performances, la puissance et la connectivité d''un ordinateur de bureau. Sans la partie bureau.', 'portables-apple', 'Portables Apple', 'portables apple macbook air', 'portables apple puissants et design'), +(4, 3, 'Portátiles', 'El último procesador Intel, un disco duro más grande, con profusión de memoria y otras novedades. Todo en sólo 2,59 cm libres de cualquier obstrucción. Las nuevas portátiles Mac cumplir rendimiento, potencia y conectividad de una computadora de escritorio. Sin la parte del escritorio.', 'portatiles-apple', 'Portátiles Apple', 'portátiles apple macbook air', 'portátiles apple poderoso y el diseño'), +(3, 3, 'Accesorios', 'Todos los accesorios de moda para tu iPod', 'ipod-accesorios', '', '', ''), +(2, 3, 'iPods', 'Es hora de que el mejor jugador de la música, al escenario para hacer un bis. Con el nuevo iPod, el mundo es tu escenario.', 'musica-ipods', '', '', ''), +(2, 4, 'iPods', 'Now that you can buy movies from the iTunes Store and sync them to your iPod, the whole world is your theater.', 'musik-iPods', '', '', ''), +(3, 4, 'Zubehör', 'Wonderful accessories for your iPod', 'zubehor-ipod', '', '', ''), +(4, 4, 'Laptops', 'The latest Intel processor, a bigger hard drive, plenty of memory, and even more new features all fit inside just one liberating inch. The new Mac laptops have the performance, power, and connectivity of a desktop computer. Without the desk part.', 'laptops', 'Apple laptops', 'Apple MacBook Air-Laptops', 'Powerful and chic Apple laptops'), +(2, 5, 'iPods', 'Adesso che puoi acquistare film dall\'iTunes Store e inserirli nel tuo iPod, il tuo mondo è un palcoscenico.', 'musica-ipods', '', '', ''), +(3, 5, 'Accessori', 'Fantastici accessori per il tuo iPod', 'accessori-ipod', '', '', ''), +(4, 5, 'Laptop', 'L\'ultimissimo processore Intel, hard drive più ampio, moltissima memoria, e ancora più funzioni tutte inserite in 2,54 centimetri. I nuovi laptop Mac offrono le prestazioni, la potenza e la connettività di un computer da tavolo. Senza bisogno del tavolo.', 'laptop', 'laptop Apple', 'laptot Apple MacBook Air', 'Laptop Apple potenti ed eleganti'); + +INSERT INTO `PREFIX_category_product` (`id_category`, `id_product`, `position`) VALUES +(1, 1, 0),(1, 2, 1),(1, 6, 2),(1, 7, 3),(2, 1, 0),(2, 2, 1),(2, 7, 2),(3, 8, 0),(3, 9, 1),(4, 5, 0),(4, 6, 1); + +INSERT INTO `PREFIX_attribute_group` (`id_attribute_group`, `is_color_group`) VALUES (1, 0),(2, 1),(3, 0); + +INSERT INTO `PREFIX_attribute_group_lang` (`id_attribute_group`, `id_lang`, `name`, `public_name`) VALUES +(1, 1, 'Disk space', 'Disk space'),(1, 2, 'Capacité', 'Capacité'),(2, 1, 'Color', 'Color'),(2, 2, 'Couleur', 'Couleur'),(3, 1, 'ICU', 'Processor'), +(3, 2, 'ICU', 'Processeur'),(1, 3, 'Capacidad', 'Capacidad'),(2, 3, 'Color', 'Color'),(3, 3, 'ICU', 'Procesador'),(1, 4, 'Speicherplatz', 'Disk space'),(2, 4, 'Farbe', 'Color'),(3, 4, 'ICU', 'Processor'),(1, 5, 'Spazio disco', 'Spazio disco'),(2, 5, 'Colore', 'Colore'),(3, 5, 'ICU', 'Processore'); + +INSERT INTO `PREFIX_attribute_impact` (`id_attribute_impact`, `id_product`, `id_attribute`, `weight`, `price`) VALUES +(1, 1, 2, 0, 60.00),(2, 1, 5, 0, 0.00),(3, 1, 16, 0, 50.00),(4, 1, 15, 0, 0.00),(5, 1, 4, 0, 0.00),(6, 1, 19, 0, 0.00),(7, 1, 3, 0, 0.00),(8, 1, 14, 0, 0.00), +(9, 1, 7, 0, 0.00),(10, 1, 20, 0, 0.00),(11, 1, 6, 0, 0.00),(12, 1, 18, 0, 0.00); + +INSERT INTO `PREFIX_scene` (`id_scene`, `active`) VALUES (1, 1),(2, 1),(3, 1); + +INSERT INTO `PREFIX_scene_category` (`id_scene`, `id_category`) VALUES (1, 2),(2, 2),(3, 4); + +INSERT INTO `PREFIX_scene_lang` (`id_scene`, `id_lang`, `name`) VALUES +(1, 1, 'The iPods Nano'),(1, 2, 'Les iPods Nano'),(1, 3, 'El iPod Nano'),(1, 4, 'Die iPods Nano'),(1, 5, 'Gli iPod Nano'), +(2, 1, 'The iPods'),(2, 2, 'Les iPods'),(2, 3, 'El iPod'),(2, 4, 'Die iPods'),(2, 5, 'Gli iPod'), +(3, 1, 'The MacBooks'),(3, 2, 'Les MacBooks'),(3, 3, 'El MacBook'),(3, 4, 'Die MacBooks'),(3, 5, 'I MacBook'); + +INSERT INTO `PREFIX_scene_products` (`id_scene`, `id_product`, `x_axis`, `y_axis`, `zone_width`, `zone_height`) VALUES +(1, 1, 474, 15, 72, 166),(2, 2, 389, 137, 51, 46),(2, 7, 111, 83, 161, 108),(2, 1, 340, 31, 46, 151),(3, 6, 355, 37, 151, 103),(3, 6, 50, 47, 128, 84), +(3, 5, 198, 47, 137, 92),(1, 1, 394, 14, 73, 168),(1, 1, 318, 14, 69, 168),(1, 1, 244, 14, 66, 169),(1, 1, 180, 13, 59, 168),(1, 1, 6, 12, 30, 175), +(1, 1, 38, 12, 30, 170),(1, 1, 76, 14, 41, 169),(1, 1, 123, 13, 49, 169); + +INSERT INTO `PREFIX_attribute` (`id_attribute`, `id_attribute_group`) VALUES (1, 1),(2, 1),(8, 1),(9, 1),(10, 3),(11, 3),(12, 1),(13, 1); +INSERT INTO `PREFIX_attribute` (`id_attribute`, `id_attribute_group`, `color`) VALUES (3, 2, '#D2D6D5'),(4, 2, '#008CB7'),(5, 2, '#F3349E'),(6, 2, '#93D52D'), +(7, 2, '#FD9812'),(15, 1, ''),(16, 1, ''),(17, 1, ''),(18, 2, '#7800F0'),(19, 2, '#F6EF04'),(20, 2, '#F60409'),(14, 2, '#000000'); + +INSERT INTO `PREFIX_attribute_lang` VALUES (1, 1, '2GB'),(1, 2, '2Go'),(1, 3, '2Go'),(2, 1, '4GB'),(2, 2, '4Go'),(2, 3, '4Go'),(3, 1, 'Metal'),(3, 2, 'Metal'),(3, 3, 'Metal'), +(4, 1, 'Blue'),(4, 2, 'Bleu'),(4, 3, 'Azul'),(5, 1, 'Pink'),(5, 2, 'Rose'),(5, 3, 'Rosa'),(6, 1, 'Green'),(6, 2, 'Vert'),(6, 3, 'Verde'),(7, 1, 'Orange'),(7, 2, 'Orange'), +(7, 3, 'Naranja'),(8, 1, 'Optional 64GB solid-state drive'),(8, 2, 'Disque dur SSD (solid-state drive) de 64 Go '),(8, 3, 'SSD (solid-state drive) 64 Go '), +(9, 1, '80GB Parallel ATA Drive @ 4200 rpm'),(9, 2, 'Disque dur PATA de 80 Go à 4 200 tr/min'),(9, 3, 'Disco duro PATA 80 Go 4 200 tr/min'),(10, 1, '1.60GHz Intel Core 2 Duo'), +(10, 2, 'Intel Core 2 Duo à 1,6 GHz'),(10, 3, 'Intel Core 2 Duo para 1,6 GHz'),(11, 1, '1.80GHz Intel Core 2 Duo'),(11, 2, 'Intel Core 2 Duo à 1,8 GHz'), +(11, 3, 'Intel Core 2 Duo para 1,8 GHz'),(12, 1, '80GB: 20,000 Songs'),(12, 2, '80 Go : 20 000 chansons'),(12, 3, '80 Go : 20 000 canciones'),(13, 1, '160GB: 40,000 Songs'), +(13, 2, '160 Go : 40 000 chansons'),(13, 3, '160 Go : 40 000 canciones'),(14, 2, 'Noir'),(14, 3, 'Negro'),(14, 1, 'Black'),(15, 1, '8Go'),(15, 2, '8Go'),(15, 3, '8Go'), +(16, 1, '16Go'),(16, 2, '16Go'),(16, 3, '16Go'),(17, 1, '32Go'),(17, 2, '32Go'),(17, 3, '32Go'),(1, 4, '2GB'),(2, 4, '4GB'),(3, 4, 'Metallic'), +(4, 4, 'Blau'),(5, 4, 'Pink'),(6, 4, 'Grün'),(7, 4, 'Orange'),(8, 4, 'Optionale 64 GB Solid-State-Drive'), +(9, 4, 'Parallele ATA 80GB Drive @ 4200 rpm'),(10, 4, '1.60GHz Intel Core 2 Duo'), +(11, 4, '1.80GHz Intel Core 2 Duo'),(12, 4, '80GB: 20.000 Songs'),(13, 4, '160GB: 40.000 Songs'),(14, 4, 'Schwarz'),(15, 4, '8Go'), +(16, 4, '16Go'),(17, 4, '32Go'),(1, 5, '2GB'),(2, 5, '4GB'),(3, 5, 'Metallico'), +(4, 5, 'Blu'),(5, 5, 'Rosa'),(6, 5, 'Verde'),(7, 5, 'Arancio'),(8, 5, 'Opzionale solid-state drive 64GB'), +(9, 5, '80GB Parallel ATA Drive @ 4200 rpm'),(10, 5, '1.60GHz Intel Core 2 Duo'), +(11, 5, '1.80GHz Intel Core 2 Duo'),(12, 5, '80GB: 20.000 canzoni'),(13, 5, '160GB: 40,000 canzoni'),(14, 5, 'Nero'),(15, 5, '8Go'), +(16, 5, '16Go'),(17, 5, '32Go'); + +INSERT INTO `PREFIX_attribute_lang` (`id_attribute`, `id_lang`, `name`) VALUES +(18, 1, 'Purple'),(18, 2, 'Violet'),(18, 3, 'Violeta'),(19, 1, 'Yellow'),(19, 2, 'Jaune'),(19, 3, 'Amarillo'),(20, 1, 'Red'),(20, 2, 'Rouge'),(20, 3, 'Rojo'),(18, 4, 'Violett'),(19, 4, 'Gelb'),(20, 4, 'Rot'),(18, 5, 'Viola'),(19, 5, 'Giallo'),(20, 5, 'Rosso'); + +INSERT INTO `PREFIX_product_attribute` (`id_product_attribute`, `id_product`, `reference`, `supplier_reference`, `ean13`, `wholesale_price`, `price`, `ecotax`, `quantity`, `weight`, `default_on`, `minimal_quantity`) VALUES +(30, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(29, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 1), +(28, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(27, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 1), +(26, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(25, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 4), +(7, 2, '', '', '', 0.000000, 0.00, 0.00, 10, 0, 0, 1), +(8, 2, '', '', '', 0.000000, 0.00, 0.00, 20, 0, 1, 1), +(9, 2, '', '', '', 0.000000, 0.00, 0.00, 30, 0, 0, 1), +(10, 2, '', '', '', 0.000000, 0.00, 0.00, 40, 0, 0, 1), +(12, 5, '', NULL, '', 0.000000, 751.672241, 0.00, 100, 0, 0, 1), +(13, 5, '', NULL, '', 0.000000, 0.00, 0.00, 99, 0, 1, 1), +(14, 5, '', NULL, '', 0.000000, 225.752508, 0.00, 50, 0, 0, 1), +(15, 5, '', NULL, '', 0.000000, 977.424749, 0.00, 25, 0, 0, 1), +(23, 7, '', NULL, '', 0.000000, 150.501672, 0.00, 70, 0, 0, 1), +(22, 7, '', NULL, '', 0.000000, 75.250836, 0.00, 60, 0, 0, 1), +(19, 7, '', NULL, '', 0.000000, 0.00, 0.00, 50, 0, 1, 1), +(31, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 1, 1), +(32, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(33, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 1), +(34, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(35, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 1), +(36, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(39, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 1), +(40, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1), +(41, 1, '', '', '', 0.000000, 41.806020, 0.00, 50, 0, 0, 1), +(42, 1, '', '', '', 0.000000, 0.00, 0.00, 50, 0, 0, 1); + +INSERT INTO `PREFIX_product_attribute_image` (`id_product_attribute`, `id_image`) VALUES (30, 44),(29, 44),(28, 45),(27, 45),(26, 38),(25, 38),(7, 46),(8, 47),(9, 49), +(10, 48),(12, 0),(13, 0),(14, 0),(15, 0),(23, 0),(22, 0),(19, 0),(31, 37),(32, 37),(33, 40),(34, 40),(35, 41),(36, 41),(39, 39),(40, 39),(41, 42),(42, 42); + +INSERT INTO `PREFIX_product_attribute_combination` (`id_attribute`, `id_product_attribute`) VALUES (3, 9),(3, 12),(3, 13),(3, 14),(3, 15),(3, 29),(3, 30),(4, 7),(4, 25), +(4, 26),(5, 10),(5, 35),(5, 36),(6, 8),(6, 39),(6, 40),(7, 33),(7, 34),(8, 13),(8, 15),(9, 12),(9, 14),(10, 12),(10, 13),(11, 14),(11, 15),(14, 31),(14, 32),(15, 19), +(15, 26),(15, 28),(15, 30),(15, 32),(15, 34),(15, 36),(15, 40),(15, 42),(16, 22),(16, 25),(16, 27),(16, 29),(16, 31),(16, 33),(16, 35),(16, 39),(16, 41),(17, 23),(18, 41),(18, 42),(19, 27),(19, 28); + +INSERT INTO `PREFIX_feature` (`id_feature`) VALUES (1), (2), (3), (4), (5); + +INSERT INTO `PREFIX_feature_lang` (`id_feature`, `id_lang`, `name`) VALUES +(1, 1, 'Height'), (1, 2, 'Hauteur'),(2, 1, 'Width'), (2, 2, 'Largeur'),(3, 1, 'Depth'), (3, 2, 'Profondeur'),(4, 1, 'Weight'), (4, 2, 'Poids'),(5, 1, 'Headphone'), (5, 2, 'Prise casque'), +(1, 3, 'Alto'),(2, 3, 'Ancho'),(3, 3, 'Profundo'),(4, 3, 'Peso'),(5, 3, 'Toma auriculares'), +(1, 4, 'Höhe'),(2, 4, 'Breite'),(3, 4, 'Tiefe'),(4, 4, 'Gewicht'),(5, 4, 'Kopfhörer'), +(1, 5, 'Altezza'),(2, 5, 'Larghezza'),(3, 5, 'Profondità'),(4, 5, 'Peso'),(5, 5, 'Auricolare'); + +INSERT INTO `PREFIX_feature_product` (`id_feature`, `id_product`, `id_feature_value`) VALUES +(1, 1, 11),(1, 2, 15),(2, 1, 12),(2, 2, 16),(3, 1, 14),(3, 2, 18),(4, 1, 13),(4, 2, 17),(5, 1, 10),(5, 2, 10),(3, 7, 26),(5, 7, 9),(4, 7, 25),(2, 7, 24),(1, 7, 23); + +INSERT INTO `PREFIX_feature_value` (`id_feature_value`, `id_feature`, `custom`) VALUES +(11, 1, 1),(15, 1, 1),(12, 2, 1),(16, 2, 1),(14, 3, 1),(18, 3, 1),(13, 4, 1),(17, 4, 1),(26, 3, 1),(25, 4, 1),(24, 2, 1),(23, 1, 1); + +INSERT INTO `PREFIX_feature_value` (`id_feature_value`, `id_feature`, `custom`) VALUES (9, 5, NULL), (10, 5, NULL); + +INSERT INTO `PREFIX_feature_value_lang` (`id_feature_value`, `id_lang`, `value`) VALUES +(13, 1, '49.2 g'),(13, 2, '49,2 g'),(13, 3, '49,2 g'),(13, 4, '49.2 g'),(13, 5, '49.2 g'),(12, 2, '52,3 mm'),(12, 1, '2.06 in'),(12, 3, '52.3 mm'),(12, 4, '52.3 mm'),(12, 5, '52.3 mm'),(11, 2, '69,8 mm'),(11, 1, '2.75 in'),(11, 3, '69.8 mm'),(11, 4, '69.8 mm'),(11, 5, '69.8 mm'), +(17, 2, '15,5 g'),(17, 1, '15.5 g'),(17, 3, '15.5 g'),(17, 4, '15.5 g'),(17, 5, '15.5 g'),(16, 2, '41,2 mm'),(16, 1, '1.62 in'),(16, 3, '41.2 mm'),(16, 4, '41.2 mm'),(16, 5, '41.2 mm'),(15, 2, '27,3 mm'),(15, 1, '1.07 in'),(15, 3, '27.3 mm'),(15, 4, '27.3 mm'),(15, 5, '27.3 mm'),(9, 1, 'Jack stereo'),(9, 4, 'Jack stereo'),(9, 5, 'Jack stereo'), +(9, 2, 'Jack stéréo'),(9, 3, 'Jack stereo'),(10, 1, 'Mini-jack stereo'),(10, 2, 'Mini-jack stéréo'),(10, 3, 'Mini-jack stéréo'),(10, 4, 'Mini-jack stéréo'),(10, 5, 'Mini-jack stéréo'),(14, 1, '0.26 in'),(14, 2, '6,5 mm'),(14, 3, '6,5 mm'),(14, 4, '6,5 mm'),(14, 5, '6,5 mm'),(18, 4, '10,5 mm'),(18, 5, '10,5 mm)'), +(18, 1, '0.41 in (clip included)'),(18, 2, '10,5 mm (clip compris)'),(18, 3, '10,5 mm (clip incluyendo)'),(26, 2, '8 mm'),(26, 1, '0.31 in'),(26, 3, '8 mm'),(26, 4, '8 mm'),(26, 5, '8 mm'),(25, 2, '120g'),(25, 3, '120g'),(25, 4, '120g'),(25, 5, '120g'),(25, 1, '120g'),(24, 2, '70 mm'),(24, 1, '2.76 in'),(24, 3, '70 mm'),(24, 4, '70 mm'),(24, 5, '70 mm'), +(23, 2, '110 mm'),(23, 3, '110 mm'),(23, 1, '4.33 in'),(23, 4, '4.33 in'),(23, 5, '4.33 in'); + +INSERT INTO `PREFIX_image` (`id_image`, `id_product`, `position`, `cover`) VALUES +(40, 1, 4, 0),(39, 1, 3, 0),(38, 1, 2, 0),(37, 1, 1, 1),(48, 2, 3, 0),(47, 2, 2, 0),(49, 2, 4, 0),(46, 2, 1, 1),(15, 5, 1, 1),(16, 5, 2, 0),(17, 5, 3, 0),(18, 6, 4, 0),(19, 6, 5, 0), +(20, 6, 1, 1),(24, 7, 1, 1),(33, 8, 1, 1),(27, 7, 3, 0),(26, 7, 2, 0),(29, 7, 4, 0),(30, 7, 5, 0),(32, 7, 6, 0),(36, 9, 1, 1),(41, 1, 5, 0),(42, 1, 6, 0),(44, 1, 7, 0),(45, 1, 8, 0); + +INSERT INTO `PREFIX_image_lang` (`id_image`, `id_lang`, `legend`) VALUES +(40, 2, 'iPod Nano'),(40, 3, 'iPod Nano'),(40, 4, 'iPod Nano'),(40, 5, 'iPod Nano'),(40, 1, 'iPod Nano'),(39, 2, 'iPod Nano'),(39, 3, 'iPod Nano'),(39, 1, 'iPod Nano'),(39, 4, 'iPod Nano'),(39, 5, 'iPod Nano'), +(38, 2, 'iPod Nano'),(38, 3, 'iPod Nano'),(38, 1, 'iPod Nano'),(38, 4, 'iPod Nano'),(38, 5, 'iPod Nano'), +(37, 2, 'iPod Nano'),(37, 3, 'iPod Nano'),(37, 1, 'iPod Nano'),(37, 4, 'iPod Nano'),(37, 5, 'iPod Nano'),(48, 2, 'iPod shuffle'),(48, 3, 'iPod shuffle'),(48, 1, 'iPod shuffle'),(48, 4, 'iPod shuffle'),(48, 5, 'iPod shuffle'),(47, 2, 'iPod shuffle'),(47, 3, 'iPod shuffle'),(47, 4, 'iPod shuffle'),(47, 5, 'iPod shuffle'), +(47, 1, 'iPod shuffle'),(49, 2, 'iPod shuffle'),(49, 3, 'iPod shuffle'),(49, 1, 'iPod shuffle'),(49, 4, 'iPod shuffle'),(49, 5, 'iPod shuffle'),(46, 2, 'iPod shuffle'),(46, 3, 'iPod shuffle'),(46, 1, 'iPod shuffle'),(46, 4, 'iPod shuffle'),(46, 5, 'iPod shuffle'), +(10, 1, 'luxury-cover-for-ipod-video'),(10, 3, 'luxury-cover-for-ipod-video'),(10, 4, 'luxury-cover-for-ipod-video'),(10, 5, 'luxury-cover-for-ipod-video'),(10, 2, 'housse-luxe-pour-ipod-video'),(11, 1, 'cover'),(11, 2, 'housse'),(11, 3, 'cubrir'),(11, 4, 'cover'),(11, 5, 'cover'), +(12, 1, 'myglove-ipod-nano'),(12, 2, 'myglove-ipod-nano'),(12, 3, 'myglove-ipod-nano'),(12, 4, 'myglove-ipod-nano'),(12, 5, 'myglove-ipod-nano'),(13, 1, 'myglove-ipod-nano'),(13, 2, 'myglove-ipod-nano'),(13, 3, 'myglove-ipod-nano'),(13, 4, 'myglove-ipod-nano'),(13, 5, 'myglove-ipod-nano'), +(14, 1, 'myglove-ipod-nano'),(14, 2, 'myglove-ipod-nano'),(14, 3, 'myglove-ipod-nano'),(14, 4, 'myglove-ipod-nano'),(14, 5, 'myglove-ipod-nano'),(15, 1, 'MacBook Air'),(15, 2, 'macbook-air-1'),(15, 3, 'macbook-air-1'),(15, 4, 'macbook-air-1'),(15, 5, 'macbook-air-1'),(16, 1, 'MacBook Air'),(16, 2, 'macbook-air-2'),(16, 3, 'macbook-air-2'),(16, 4, 'macbook-air-2'),(16, 5, 'macbook-air-2'),(17, 1, 'MacBook Air'),(17, 2, 'macbook-air-3'),(17, 3, 'macbook-air-3'),(17, 4, 'macbook-air-3'),(17, 5, 'macbook-air-3'),(18, 1, 'MacBook Air'),(18, 2, 'macbook-air-4'), +(18, 3, 'macbook-air-4'),(18, 4, 'macbook-air-4'),(18, 5, 'macbook-air-4'),(19, 1, 'MacBook Air'),(19, 2, 'macbook-air-5'),(19, 3, 'macbook-air-5'),(19, 4, 'macbook-air-5'),(19, 5, 'macbook-air-5'),(20, 1, ' MacBook Air SuperDrive'),(20, 2, 'superdrive-pour-macbook-air-1'), +(20, 3, 'superdrive-pour-macbook-air-1'),(20, 4, 'superdrive-pour-macbook-air-1'),(20, 5, 'superdrive-pour-macbook-air-1'),(24, 2, 'iPod touch'),(24, 1, 'iPod touch'),(24, 3, 'iPod touch'),(24, 4, 'iPod touch'),(24, 5, 'iPod touch'),(33, 1, 'housse-portefeuille-en-cuir'),(33, 3, 'housse-portefeuille-en-cuir'),(33, 4, 'housse-portefeuille-en-cuir'),(33, 5, 'housse-portefeuille-en-cuir'), +(26, 1, 'iPod touch'),(26, 2, 'iPod touch'),(26, 3, 'iPod touch'),(26, 4, 'iPod touch'),(26, 5, 'iPod touch'),(27, 1, 'iPod touch'),(27, 2, 'iPod touch'),(27, 3, 'iPod touch'),(27, 4, 'iPod touch'),(27, 5, 'iPod touch'),(29, 1, 'iPod touch'),(29, 2, 'iPod touch'),(29, 3, 'iPod touch'),(29, 4, 'iPod touch'),(29, 5, 'iPod touch'),(30, 1, 'iPod touch'),(30, 2, 'iPod touch'),(30, 3, 'iPod touch'),(30, 4, 'iPod touch'),(30, 5, 'iPod touch'),(32, 1, 'iPod touch'),(32, 2, 'iPod touch'),(32, 3, 'iPod touch'),(32, 4, 'iPod touch'),(32, 5, 'iPod touch'), +(33, 2, 'housse-portefeuille-en-cuir-ipod-nano'),(36, 2, 'Écouteurs à isolation sonore Shure SE210'),(36, 3, 'Auriculares aislantes del sonido Shure SE210'), +(36, 1, 'Shure SE210 Sound-Isolating Earphones for iPod and iPhone'),(36, 4, 'Shure SE210 Sound-Isolating Earphones for iPod and iPhone'),(36, 5, 'Shure SE210 Sound-Isolating Earphones for iPod and iPhone'),(41, 1, 'iPod Nano'),(41, 2, 'iPod Nano'),(41, 3, 'iPod Nano'),(41, 4, 'iPod Nano'),(41, 5, 'iPod Nano'),(42, 1, 'iPod Nano'),(42, 2, 'iPod Nano'), +(42, 3, 'iPod Nano'),(42, 4, 'iPod Nano'),(42, 5, 'iPod Nano'),(44, 1, 'iPod Nano'),(44, 2, 'iPod Nano'),(44, 3, 'iPod Nano'),(44, 4, 'iPod Nano'),(44, 5, 'iPod Nano'),(45, 1, 'iPod Nano'),(45, 2, 'iPod Nano'),(45, 3, 'iPod Nano'),(45, 4, 'iPod Nano'),(45, 5, 'iPod Nano'); + +INSERT INTO `PREFIX_tag` (`id_tag`, `id_lang`, `name`) VALUES (5, 1, 'apple'),(6, 2, 'ipod'),(7, 2, 'nano'),(8, 2, 'apple'),(18, 2, 'shuffle'), +(19, 2, 'macbook'),(20, 2, 'macbookair'),(21, 2, 'air'),(22, 1, 'superdrive'),(27, 2, 'marche'),(26, 2, 'casque'),(25, 2, 'écouteurs'), +(24, 2, 'ipod touch tacticle'),(23, 1, 'Ipod touch'),(28, 1, 'ipod'),(29, 1, 'nano'),(30, 3, 'ipod'),(31, 3, 'nano'),(32, 3, 'apple'),(33, 1, 'shuffle'), +(34, 3, 'shuffle'),(35, 2, 'superdrive'),(36, 3, 'superdrive'),(37, 3, 'Ipod touch'); + +INSERT INTO `PREFIX_product_tag` (`id_product`, `id_tag`) VALUES (1, 5),(1, 6),(1, 7),(1, 8),(1, 28),(1, 29),(1, 30),(1, 31),(1, 32),(2, 6),(2, 18),(2, 28), +(2, 30),(2, 33),(2, 34),(5, 8),(5, 19),(5, 20),(5, 21),(6, 5),(6, 8),(6, 22),(6, 32),(6, 35),(6, 36),(7, 23),(7, 24),(7, 37),(9, 25),(9, 26),(9, 27); + +INSERT INTO `PREFIX_alias` (`alias`, `search`, `active`, `id_alias`) VALUES ('piod', 'ipod', 1, 4),('ipdo', 'ipod', 1, 3); +INSERT INTO `PREFIX_order_message` (`id_order_message`, `date_add`) VALUES (1, NOW()); +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 1, 'Delay', 'Hi, + +Unfortunately, an item on your order is currently out of stock. This may cause a slight delay in delivery. +Please accept our apologies and rest assured that we are working hard to rectify this. + +Best regards,'); + +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 2, 'Délai', 'Bonjour, + +Un des éléments de votre commande est actuellement en réapprovisionnement, ce qui peut légèrement retarder son envoi. + +Merci de votre compréhension. + +Cordialement,'); + +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 3, 'Plazo', 'Hola, + +Uno de los elementos de su solicitud se encuentra actualmente la reposición, el cual poco puede retrasar el envío. + +Gracias por su comprensión. + +Saludos cordiales,'); + +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 4, 'Frist', 'Hi, + +Leider ist einer der Artikel aus Ihrer Bestellung momentan nicht auf Lager. Dies kann zu einer leichten Lieferverzögerung führen. Wir entschuldigen uns hierfür und bemühen uns schnellstens um Abhilfe. + +Mit freundlichen Grüßen,'); + +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 5, 'Ritardo', 'Salve, + +purtroppo un articolo che hai ordinato non è al momento in magazzino. Questo potrebbe provocare un leggero ritardo nella consegna. +Ti preghiamo di scusarci; ci stiamo organizzando per ovviare a questo inconveniente. + +Cordialmente,'); + +/* Block CMS module*/ + +INSERT INTO `PREFIX_cms_block` (`id_cms_block`, `id_cms_category`, `name`, `location`, `position`) VALUES(1, 1, '', 0, 0); +INSERT INTO `PREFIX_cms_block_page` (`id_cms_block_page`, `id_cms_block`, `id_cms`, `is_category`) VALUES(1, 1, 1, 0), (2, 1, 2, 0), (3, 1, 3, 0), (4, 1, 4, 0), (5, 1, 5, 0); +INSERT INTO `PREFIX_cms_block_lang` (`id_cms_block`, `id_lang`, `name`) VALUES (1, 1, 'Information'),(1, 2, 'Informations'),(1, 3, 'Informaciónes'),(1, 4, 'Information'),(1, 5, 'Informazioni'); + +/* Currency/Country module */ +INSERT INTO `PREFIX_module_currency` (`id_module`, `id_currency`) VALUES (3, 1),(3, 2),(3, 3),(4, 1),(4, 2),(4, 3),(6, 1),(6, 2),(6, 3); +INSERT INTO `PREFIX_module_group` (`id_module`, `id_group`) VALUES (3, 1),(4, 1),(6, 1); + +INSERT INTO `PREFIX_module_country` (`id_module`, `id_country`) VALUES (3, 1),(3, 2),(3, 3),(3, 4),(3, 5),(3, 6),(3, 7),(3, 8), +(3, 9),(3, 10),(3, 11),(3, 12),(3, 13),(3, 14),(3, 15),(3, 16),(3, 17),(3, 18),(3, 19),(3, 20),(3, 21),(3, 22),(3, 23),(3, 24), +(3, 25),(3, 26),(3, 27),(3, 28),(3, 29),(3, 30),(3, 31),(3, 32),(3, 33),(3, 34),(4, 1),(4, 2),(4, 3),(4, 4),(4, 5),(4, 6),(4, 7), +(4, 8),(4, 9),(4, 10),(4, 11),(4, 12),(4, 13),(4, 14),(4, 15),(4, 16),(4, 17),(4, 18),(4, 19),(4, 20),(4, 21),(4, 22),(4, 23), +(4, 24),(4, 25),(4, 26),(4, 27),(4, 28),(4, 29),(4, 30),(4, 31),(4, 32),(4, 33),(4, 34),(6, 1),(6, 2),(6, 3),(6, 4),(6, 5),(6, 6), +(6, 7),(6, 8),(6, 9),(6, 10),(6, 11),(6, 12),(6, 13),(6, 14),(6, 15),(6, 16),(6, 17),(6, 18),(6, 19),(6, 20),(6, 21),(6, 22),(6, 23), +(6, 24),(6, 25),(6, 26),(6, 27),(6, 28),(6, 29),(6, 30),(6, 31),(6, 32),(6, 33),(6, 34); + +INSERT INTO `PREFIX_search_index` (`id_product`, `id_word`, `weight`) VALUES (1, 1, 10),(1, 2, 10),(1, 3, 2),(1, 4, 1),(1, 5, 1),(1, 6, 1), +(1, 7, 1),(1, 8, 1),(1, 9, 1),(1, 10, 1),(1, 11, 1),(1, 12, 1),(1, 13, 1),(1, 14, 1),(1, 15, 1),(1, 16, 2),(1, 17, 1),(1, 18, 1),(1, 19, 1), +(1, 20, 1),(1, 21, 1),(1, 22, 1),(1, 23, 1),(1, 24, 1),(1, 25, 1),(1, 26, 1),(1, 27, 1),(1, 28, 1),(1, 29, 1),(1, 30, 1),(1, 31, 2), +(1, 32, 1),(1, 33, 1),(1, 34, 1),(1, 35, 1),(1, 36, 1),(1, 37, 1),(1, 38, 5),(1, 39, 1),(1, 40, 1),(1, 41, 1),(1, 42, 1),(1, 43, 1), +(1, 44, 1),(1, 45, 1),(1, 46, 1),(1, 47, 1),(1, 48, 1),(1, 49, 1),(1, 50, 1),(1, 51, 2),(1, 52, 2),(1, 53, 1),(1, 54, 1),(1, 55, 1), +(1, 56, 1),(1, 57, 1),(1, 58, 1),(1, 59, 1),(1, 60, 1),(1, 61, 1),(1, 62, 1),(1, 63, 1),(1, 64, 1),(1, 65, 1),(1, 66, 1),(1, 67, 3), +(1, 68, 3),(1, 69, 3),(1, 70, 4),(1, 71, 16),(1, 72, 4),(1, 73, 4),(1, 74, 4),(1, 75, 4),(1, 76, 4),(1, 77, 4),(1, 78, 4),(1, 79, 2), +(1, 80, 2),(1, 81, 2),(1, 82, 12),(1, 83, 12),(1, 84, 1),(1, 85, 2),(1, 86, 1),(1, 87, 2),(1, 88, 1),(1, 89, 1),(1, 90, 2),(1, 91, 1), +(1, 92, 1),(1, 93, 1),(1, 94, 1),(1, 95, 4),(1, 96, 1),(1, 97, 1),(1, 98, 1),(1, 99, 1),(1, 100, 1),(1, 101, 1),(1, 102, 1), +(1, 103, 1),(1, 104, 1),(1, 105, 1),(1, 106, 1),(1, 107, 1),(1, 108, 1),(1, 109, 2),(1, 110, 1),(1, 111, 1),(1, 112, 1),(1, 113, 1), +(1, 114, 1),(1, 115, 2),(1, 116, 2),(1, 117, 1),(1, 118, 3),(1, 119, 1),(1, 120, 1),(1, 121, 1),(1, 122, 1),(1, 123, 1),(1, 124, 1), +(1, 125, 1),(1, 126, 1),(1, 127, 1),(1, 128, 1),(1, 129, 1),(1, 130, 1),(1, 131, 1),(1, 132, 1),(1, 133, 1),(1, 134, 1),(1, 135, 1), +(1, 136, 1),(1, 137, 1),(1, 138, 1),(1, 139, 1),(1, 140, 1),(1, 141, 1),(1, 142, 1),(1, 143, 1),(1, 144, 1),(1, 145, 3),(1, 146, 7), +(1, 147, 3),(1, 148, 4),(1, 149, 16),(1, 150, 4),(1, 151, 4),(1, 152, 4),(1, 153, 4),(1, 154, 4),(1, 155, 4),(1, 156, 4),(1, 157, 2), +(1, 158, 2),(1, 159, 2),(1, 160, 9),(1, 161, 8),(1, 162, 1),(1, 163, 2),(1, 164, 1),(1, 165, 1),(1, 166, 1),(1, 167, 1),(1, 168, 1), +(1, 169, 1),(1, 170, 2),(1, 171, 1),(1, 172, 1),(1, 173, 4),(1, 174, 1),(1, 175, 1),(1, 176, 1),(1, 177, 1),(1, 178, 1),(1, 179, 1), +(1, 180, 1),(1, 181, 1),(1, 182, 1),(1, 183, 1),(1, 184, 1),(1, 185, 1),(1, 186, 1),(1, 187, 1),(1, 188, 1),(1, 189, 1),(1, 190, 1), +(1, 191, 1),(1, 192, 1),(1, 193, 1),(1, 194, 1),(1, 195, 1),(1, 196, 1),(1, 197, 1),(1, 198, 1),(1, 199, 1),(1, 200, 1),(1, 201, 1), +(1, 202, 1),(1, 203, 1),(1, 204, 1),(1, 205, 1),(1, 206, 1),(1, 207, 1),(1, 208, 1),(1, 209, 1),(1, 210, 1),(1, 211, 1),(1, 212, 1), +(1, 213, 1),(1, 214, 1),(1, 215, 1),(1, 216, 1),(1, 217, 1),(1, 218, 1),(1, 219, 1),(1, 220, 1),(1, 221, 1),(1, 222, 3),(1, 223, 3), +(1, 224, 3),(1, 225, 4),(1, 226, 16),(1, 227, 4),(1, 228, 4),(1, 229, 4),(1, 230, 4),(1, 231, 4),(1, 232, 4),(1, 233, 4),(1, 234, 2), +(1, 235, 2),(2, 1, 11),(2, 56, 10),(2, 236, 1),(2, 237, 1),(2, 238, 1),(2, 239, 1),(2, 57, 2),(2, 240, 1),(2, 241, 1),(2, 242, 2), +(2, 243, 1),(2, 244, 2),(2, 245, 2),(2, 246, 2),(2, 247, 1),(2, 248, 1),(2, 249, 1),(2, 45, 1),(2, 38, 7),(2, 250, 1),(2, 251, 1),(2, 252, 1), +(2, 253, 1),(2, 254, 1),(2, 255, 1),(2, 256, 1),(2, 257, 1),(2, 19, 1),(2, 258, 1),(2, 259, 1),(2, 260, 1),(2, 261, 1),(2, 262, 1),(2, 263, 1), +(2, 264, 1),(2, 265, 1),(2, 266, 1),(2, 267, 1),(2, 268, 1),(2, 269, 1),(2, 270, 1),(2, 271, 1),(2, 272, 1),(2, 273, 1),(2, 274, 1),(2, 3, 1), +(2, 275, 1),(2, 276, 1),(2, 277, 1),(2, 67, 3),(2, 68, 3),(2, 69, 3),(2, 73, 2),(2, 77, 2),(2, 70, 2),(2, 76, 2),(2, 278, 2),(2, 279, 2), +(2, 80, 2),(2, 81, 2),(2, 82, 15),(2, 280, 14),(2, 281, 1),(2, 282, 1),(2, 90, 2),(2, 283, 1),(2, 284, 1),(2, 285, 1),(2, 286, 1),(2, 287, 2), +(2, 288, 2),(2, 154, 3),(2, 289, 2),(2, 290, 1),(2, 291, 1),(2, 292, 1),(2, 0, 1),(2, 126, 2),(2, 294, 1),(2, 118, 7),(2, 295, 1),(2, 296, 1), +(2, 297, 1),(2, 298, 1),(2, 299, 1),(2, 300, 1),(2, 301, 1),(2, 302, 1),(2, 95, 1),(2, 136, 2),(2, 303, 1),(2, 88, 2),(2, 304, 1),(2, 100, 2), +(2, 101, 2),(2, 305, 1),(2, 306, 1),(2, 307, 1),(2, 308, 1),(2, 309, 1),(2, 310, 1),(2, 311, 1),(2, 312, 1),(2, 313, 1),(2, 314, 1),(2, 315, 1), +(2, 316, 1),(2, 317, 1),(2, 109, 1),(2, 318, 1),(2, 319, 1),(2, 320, 1),(2, 321, 1),(2, 322, 1),(2, 323, 1),(2, 124, 1),(2, 324, 1),(2, 325, 1), +(2, 85, 1),(2, 326, 1),(2, 327, 1),(2, 328, 1),(2, 329, 1),(2, 330, 1),(2, 331, 1),(2, 332, 1),(2, 333, 1),(2, 334, 1),(2, 145, 3),(2, 146, 3), +(2, 147, 3),(2, 151, 2),(2, 155, 2),(2, 148, 2),(2, 335, 2),(2, 336, 2),(2, 158, 2),(2, 159, 2),(2, 160, 11),(2, 337, 10),(2, 338, 1),(2, 339, 1), +(2, 340, 1),(2, 341, 1),(2, 166, 2),(2, 342, 2),(2, 343, 2),(2, 231, 3),(2, 344, 2),(2, 345, 1),(2, 346, 1),(2, 347, 1),(2, 348, 1),(2, 202, 2), +(2, 349, 1),(2, 350, 1),(2, 351, 1),(2, 352, 1),(2, 353, 1),(2, 354, 1),(2, 355, 1),(2, 356, 1),(2, 357, 1),(2, 213, 3),(2, 358, 1),(2, 359, 1), +(2, 179, 2),(2, 180, 2),(2, 360, 1),(2, 361, 1),(2, 362, 1),(2, 363, 1),(2, 364, 1),(2, 365, 1),(2, 366, 1),(2, 367, 1),(2, 368, 1),(2, 369, 1), +(2, 370, 1),(2, 371, 1),(2, 372, 1),(2, 373, 1),(2, 374, 1),(2, 375, 1),(2, 376, 1),(2, 377, 1),(2, 378, 1),(2, 163, 1),(2, 379, 1),(2, 184, 1), +(2, 380, 1),(2, 381, 1),(2, 204, 1),(2, 382, 1),(2, 383, 1),(2, 384, 1),(2, 222, 3),(2, 223, 3),(2, 224, 3),(2, 228, 2),(2, 232, 2),(2, 225, 2), +(2, 385, 2),(2, 386, 2),(2, 234, 2),(2, 235, 2),(5, 387, 10),(5, 388, 1),(5, 389, 1),(5, 390, 1),(5, 391, 1),(5, 392, 1),(5, 393, 1),(5, 394, 1), +(5, 395, 1),(5, 396, 1),(5, 397, 1),(5, 398, 2),(5, 399, 1),(5, 400, 1),(5, 401, 1),(5, 402, 2),(5, 403, 2),(5, 404, 1),(5, 3, 1),(5, 51, 2), +(5, 405, 1),(5, 406, 1),(5, 407, 1),(5, 408, 1),(5, 409, 1),(5, 410, 1),(5, 411, 1),(5, 38, 1),(5, 412, 1),(5, 413, 1),(5, 414, 1),(5, 415, 1), +(5, 416, 1),(5, 47, 1),(5, 417, 1),(5, 418, 1),(5, 419, 2),(5, 420, 1),(5, 421, 1),(5, 422, 1),(5, 423, 1),(5, 424, 1),(5, 425, 1),(5, 426, 1), +(5, 427, 1),(5, 428, 1),(5, 429, 1),(5, 430, 1),(5, 431, 1),(5, 432, 1),(5, 433, 1),(5, 434, 1),(5, 435, 1),(5, 436, 1),(5, 437, 1),(5, 438, 2), +(5, 439, 1),(5, 440, 1),(5, 441, 1),(5, 442, 1),(5, 443, 1),(5, 444, 1),(5, 445, 9),(5, 446, 1),(5, 447, 1),(5, 448, 1),(5, 449, 1),(5, 450, 1), +(5, 451, 1),(5, 452, 1),(5, 453, 1),(5, 454, 1),(5, 65, 1),(5, 455, 1),(5, 456, 1),(5, 457, 1),(5, 458, 1),(5, 237, 2),(5, 459, 1),(5, 460, 1), +(5, 461, 1),(5, 462, 1),(5, 463, 1),(5, 464, 1),(5, 465, 1),(5, 466, 1),(5, 467, 1),(5, 468, 1),(5, 469, 1),(5, 470, 1),(5, 471, 1),(5, 472, 1), +(5, 473, 1),(5, 474, 1),(5, 475, 1),(5, 476, 1),(5, 477, 3),(5, 68, 3),(5, 69, 3),(5, 70, 8),(5, 478, 4),(5, 479, 4),(5, 480, 4),(5, 481, 4), +(5, 482, 8),(5, 483, 8),(5, 484, 4),(5, 485, 4),(5, 486, 4),(5, 487, 4),(5, 488, 14),(5, 489, 3),(5, 490, 1),(5, 283, 2),(5, 491, 1),(5, 103, 2), +(5, 492, 1),(5, 493, 1),(5, 494, 1),(5, 495, 1),(5, 496, 1),(5, 497, 1),(5, 498, 1),(5, 499, 2),(5, 500, 3),(5, 501, 1),(5, 502, 1),(5, 503, 1), +(5, 504, 2),(5, 505, 2),(5, 506, 1),(5, 124, 2),(5, 85, 1),(5, 131, 2),(5, 507, 1),(5, 508, 1),(5, 509, 1),(5, 510, 1),(5, 511, 1),(5, 114, 1), +(5, 512, 1),(5, 513, 1),(5, 514, 1),(5, 118, 1),(5, 515, 1),(5, 516, 1),(5, 517, 1),(5, 518, 1),(5, 519, 1),(5, 520, 1),(5, 521, 1),(5, 522, 1), +(5, 523, 5),(5, 524, 1),(5, 525, 1),(5, 526, 1),(5, 527, 2),(5, 528, 1),(5, 529, 1),(5, 530, 1),(5, 531, 1),(5, 532, 1),(5, 109, 1),(5, 533, 1), +(5, 534, 1),(5, 535, 1),(5, 536, 1),(5, 537, 1),(5, 538, 1),(5, 539, 2),(5, 540, 1),(5, 541, 1),(5, 542, 1),(5, 543, 1),(5, 544, 1),(5, 545, 1), +(5, 546, 9),(5, 90, 2),(5, 547, 1),(5, 548, 1),(5, 549, 1),(5, 550, 1),(5, 551, 1),(5, 552, 1),(5, 553, 1),(5, 554, 1),(5, 555, 1),(5, 556, 1), +(5, 557, 1),(5, 558, 1),(5, 559, 1),(5, 95, 2),(5, 560, 1),(5, 561, 1),(5, 562, 2),(5, 563, 1),(5, 564, 1),(5, 565, 1),(5, 566, 1),(5, 88, 1), +(5, 567, 1),(5, 568, 1),(5, 569, 1),(5, 570, 1),(5, 571, 1),(5, 572, 1),(5, 573, 1),(5, 574, 1),(5, 575, 1),(5, 576, 1),(5, 577, 1),(5, 578, 1), +(5, 579, 1),(5, 580, 1),(5, 581, 1),(5, 582, 1),(5, 583, 3),(5, 146, 7),(5, 147, 3),(5, 584, 4),(5, 148, 8),(5, 585, 4),(5, 586, 8),(5, 587, 8), +(5, 588, 4),(5, 589, 4),(5, 590, 11),(5, 591, 3),(5, 592, 1),(5, 340, 2),(5, 593, 1),(5, 181, 2),(5, 594, 1),(5, 595, 1),(5, 596, 1),(5, 597, 1), +(5, 598, 1),(5, 371, 1),(5, 599, 1),(5, 600, 1),(5, 601, 3),(5, 162, 1),(5, 602, 1),(5, 603, 1),(5, 604, 1),(5, 605, 1),(5, 606, 1),(5, 607, 1), +(5, 163, 1),(5, 608, 1),(5, 609, 1),(5, 610, 1),(5, 611, 1),(5, 190, 1),(5, 612, 1),(5, 613, 1),(5, 614, 3),(5, 354, 1),(5, 615, 1),(5, 616, 1), +(5, 617, 1),(5, 618, 1),(5, 619, 1),(5, 620, 1),(5, 621, 2),(5, 622, 1),(5, 623, 1),(5, 624, 2),(5, 625, 1),(5, 626, 1),(5, 627, 1),(5, 628, 1), +(5, 629, 1),(5, 630, 1),(5, 631, 1),(5, 632, 1),(5, 633, 1),(5, 634, 1),(5, 635, 1),(5, 636, 1),(5, 637, 1),(5, 638, 1),(5, 639, 1),(5, 640, 1), +(5, 641, 1),(5, 642, 1),(5, 643, 1),(5, 644, 1),(5, 645, 5),(5, 646, 5),(5, 348, 1),(5, 647, 1),(5, 648, 1),(5, 649, 1),(5, 650, 1),(5, 651, 1), +(5, 652, 1),(5, 653, 1),(5, 654, 1),(5, 655, 1),(5, 173, 11),(5, 656, 1),(5, 657, 1),(5, 658, 1),(5, 659, 1),(5, 660, 1),(5, 661, 1),(5, 662, 2), +(5, 663, 1),(5, 664, 1),(5, 665, 1),(5, 666, 1),(5, 667, 1),(5, 668, 1),(5, 669, 1),(5, 670, 1),(5, 671, 1),(5, 672, 1),(5, 673, 1),(5, 674, 1), +(5, 675, 1),(5, 676, 1),(5, 677, 1),(5, 678, 1),(5, 679, 1),(5, 680, 1),(5, 681, 1),(5, 682, 3),(5, 223, 3),(5, 224, 3),(5, 225, 8),(5, 683, 4), +(5, 684, 8),(5, 685, 8),(5, 686, 4),(5, 687, 4),(6, 387, 9),(6, 688, 1),(6, 689, 1),(6, 690, 1),(6, 691, 1),(6, 692, 1),(6, 693, 1),(6, 694, 1), +(6, 695, 1),(6, 402, 1),(6, 696, 1),(6, 697, 1),(6, 698, 1),(6, 699, 1),(6, 700, 1),(6, 47, 1),(6, 701, 1),(6, 702, 1),(6, 703, 1),(6, 704, 1), +(6, 705, 1),(6, 706, 1),(6, 415, 1),(6, 707, 1),(6, 444, 1),(6, 708, 1),(6, 709, 1),(6, 710, 1),(6, 711, 1),(6, 712, 1),(6, 713, 1),(6, 714, 1), +(6, 715, 1),(6, 716, 1),(6, 717, 1),(6, 718, 1),(6, 719, 1),(6, 409, 1),(6, 720, 1),(6, 721, 1),(6, 242, 1),(6, 38, 1),(6, 722, 1),(6, 723, 1), +(6, 724, 1),(6, 477, 3),(6, 68, 7),(6, 69, 3),(6, 725, 4),(6, 488, 9),(6, 109, 1),(6, 726, 1),(6, 727, 1),(6, 728, 1),(6, 729, 1),(6, 327, 1),(6, 730, 1), +(6, 731, 1),(6, 732, 1),(6, 505, 1),(6, 733, 1),(6, 734, 1),(6, 735, 1),(6, 736, 1),(6, 737, 1),(6, 738, 1),(6, 739, 1),(6, 740, 1),(6, 510, 1),(6, 741, 1), +(6, 124, 1),(6, 553, 1),(6, 132, 1),(6, 523, 1),(6, 546, 1),(6, 90, 1),(6, 742, 1),(6, 500, 1),(6, 743, 1),(6, 744, 1),(6, 95, 2),(6, 580, 1), +(6, 745, 1),(6, 746, 1),(6, 747, 1),(6, 748, 1),(6, 749, 1),(6, 750, 1),(6, 751, 1),(6, 88, 1),(6, 752, 1),(6, 753, 1),(6, 754, 1),(6, 755, 1), +(6, 756, 1),(6, 757, 1),(6, 758, 1),(6, 583, 3),(6, 146, 3),(6, 147, 3),(6, 590, 9),(6, 759, 1),(6, 637, 1),(6, 760, 1),(6, 221, 1),(6, 761, 1), +(6, 356, 1),(6, 762, 1),(6, 763, 1),(6, 764, 1),(6, 606, 2),(6, 765, 1),(6, 766, 1),(6, 767, 1),(6, 768, 1),(6, 769, 1),(6, 770, 1),(6, 771, 1), +(6, 772, 1),(6, 653, 1),(6, 208, 1),(6, 209, 1),(6, 645, 1),(6, 646, 1),(6, 773, 1),(6, 774, 1),(6, 348, 1),(6, 173, 2),(6, 679, 1),(6, 775, 1), +(6, 776, 1),(6, 777, 1),(6, 778, 1),(6, 779, 1),(6, 780, 1),(6, 781, 1),(6, 782, 1),(6, 783, 1),(6, 784, 1),(6, 785, 1),(6, 786, 1),(6, 165, 1), +(6, 787, 1),(6, 682, 3),(6, 223, 3),(6, 224, 3),(7, 1, 11),(7, 788, 12),(7, 789, 2),(7, 427, 2),(7, 790, 1),(7, 791, 2),(7, 422, 1),(7, 792, 1), +(7, 793, 2),(7, 461, 2),(7, 794, 1),(7, 411, 1),(7, 795, 1),(7, 796, 1),(7, 797, 1),(7, 798, 1),(7, 799, 1),(7, 800, 1),(7, 259, 1),(7, 57, 1), +(7, 801, 1),(7, 802, 1),(7, 803, 1),(7, 804, 1),(7, 723, 1),(7, 60, 1),(7, 805, 1),(7, 806, 1),(7, 807, 1),(7, 51, 4),(7, 808, 1),(7, 809, 1), +(7, 810, 1),(7, 811, 1),(7, 812, 1),(7, 813, 1),(7, 814, 1),(7, 815, 1),(7, 816, 1),(7, 817, 1),(7, 818, 1),(7, 456, 1),(7, 819, 1),(7, 820, 1), +(7, 821, 1),(7, 822, 1),(7, 823, 1),(7, 38, 4),(7, 824, 1),(7, 825, 1),(7, 242, 1),(7, 826, 1),(7, 827, 1),(7, 37, 1),(7, 828, 1),(7, 829, 1), +(7, 830, 1),(7, 831, 1),(7, 832, 1),(7, 833, 1),(7, 834, 1),(7, 835, 1),(7, 836, 1),(7, 837, 1),(7, 838, 1),(7, 839, 1),(7, 840, 1),(7, 841, 1), +(7, 65, 1),(7, 842, 1),(7, 843, 1),(7, 844, 1),(7, 241, 1),(7, 845, 1),(7, 434, 1),(7, 846, 2),(7, 847, 1),(7, 722, 1),(7, 848, 1),(7, 849, 1), +(7, 850, 1),(7, 851, 1),(7, 852, 1),(7, 700, 1),(7, 853, 1),(7, 854, 1),(7, 855, 1),(7, 856, 1),(7, 857, 1),(7, 67, 3),(7, 858, 2),(7, 71, 2), +(7, 859, 2),(7, 81, 2),(7, 860, 2),(7, 861, 2),(7, 862, 2),(7, 82, 11),(7, 863, 11),(7, 864, 1),(7, 531, 2),(7, 865, 2),(7, 525, 1),(7, 866, 1), +(7, 867, 1),(7, 868, 1),(7, 869, 1),(7, 870, 1),(7, 308, 1),(7, 565, 1),(7, 871, 1),(7, 872, 1),(7, 873, 1),(7, 874, 2),(7, 875, 1),(7, 876, 1), +(7, 877, 2),(7, 878, 6),(7, 879, 3),(7, 880, 1),(7, 86, 1),(7, 757, 1),(7, 881, 1),(7, 882, 1),(7, 883, 2),(7, 884, 1),(7, 885, 2),(7, 886, 1), +(7, 887, 1),(7, 131, 2),(7, 888, 1),(7, 889, 1),(7, 890, 1),(7, 891, 1),(7, 892, 1),(7, 893, 1),(7, 894, 1),(7, 895, 1),(7, 896, 1),(7, 897, 1), +(7, 898, 1),(7, 899, 1),(7, 900, 1),(7, 901, 1),(7, 902, 1),(7, 903, 1),(7, 904, 1),(7, 905, 1),(7, 906, 1),(7, 907, 1),(7, 118, 2),(7, 136, 1), +(7, 576, 1),(7, 908, 1),(7, 909, 1),(7, 910, 1),(7, 911, 1),(7, 912, 1),(7, 524, 1),(7, 913, 1),(7, 109, 2),(7, 570, 1),(7, 914, 1),(7, 915, 1), +(7, 916, 2),(7, 917, 1),(7, 918, 1),(7, 919, 1),(7, 920, 1),(7, 921, 1),(7, 922, 1),(7, 923, 1),(7, 924, 1),(7, 925, 1),(7, 124, 2),(7, 926, 1), +(7, 927, 1),(7, 928, 1),(7, 318, 1),(7, 929, 1),(7, 930, 1),(7, 931, 1),(7, 932, 1),(7, 933, 1),(7, 334, 1),(7, 934, 1),(7, 935, 1),(7, 936, 1), +(7, 500, 1),(7, 937, 1),(7, 938, 1),(7, 939, 1),(7, 940, 1),(7, 941, 1),(7, 942, 1),(7, 943, 1),(7, 734, 1),(7, 944, 1),(7, 945, 1),(7, 946, 1), +(7, 947, 1),(7, 948, 1),(7, 949, 1),(7, 567, 1),(7, 145, 3),(7, 950, 4),(7, 951, 2),(7, 149, 2),(7, 952, 2),(7, 159, 2),(7, 953, 2),(7, 954, 2), +(7, 955, 2),(7, 160, 7),(7, 956, 7),(7, 957, 1),(7, 628, 2),(7, 958, 2),(7, 621, 3),(7, 622, 1),(7, 959, 1),(7, 960, 2),(7, 665, 2),(7, 961, 1), +(7, 962, 1),(7, 963, 2),(7, 964, 1),(7, 362, 1),(7, 965, 1),(7, 966, 1),(7, 967, 1),(7, 968, 2),(7, 969, 1),(7, 970, 1),(7, 971, 2),(7, 972, 1), +(7, 164, 1),(7, 165, 1),(7, 973, 1),(7, 974, 2),(7, 975, 1),(7, 976, 2),(7, 977, 1),(7, 978, 1),(7, 979, 1),(7, 980, 1),(7, 981, 1),(7, 982, 1), +(7, 983, 1),(7, 984, 1),(7, 985, 1),(7, 986, 1),(7, 987, 1),(7, 988, 1),(7, 989, 1),(7, 990, 1),(7, 991, 2),(7, 992, 1),(7, 993, 1),(7, 994, 1), +(7, 995, 1),(7, 615, 2),(7, 213, 1),(7, 996, 1),(7, 204, 1),(7, 997, 1),(7, 998, 1),(7, 764, 1),(7, 999, 1),(7, 1000, 1),(7, 1001, 1), +(7, 1002, 2),(7, 1003, 2),(7, 1004, 4),(7, 1005, 2),(7, 1006, 1),(7, 1007, 1),(7, 1008, 1),(7, 1009, 1),(7, 371, 1),(7, 1010, 1),(7, 1011, 1), +(7, 1012, 1),(7, 1013, 1),(7, 1014, 1),(7, 1015, 1),(7, 1016, 1),(7, 1017, 1),(7, 1018, 1),(7, 384, 1),(7, 1019, 1),(7, 1020, 1),(7, 1021, 1), +(7, 1022, 1),(7, 1023, 1),(7, 1024, 1),(7, 606, 1),(7, 765, 1),(7, 1025, 1),(7, 1026, 1),(7, 1027, 1),(7, 1028, 1),(7, 1029, 1),(7, 1030, 1), +(7, 1031, 1),(7, 1032, 1),(7, 1033, 1),(7, 222, 3),(7, 1034, 2),(7, 226, 2),(7, 1035, 2),(7, 235, 2),(7, 1036, 2),(7, 1037, 2),(7, 1038, 2), +(8, 1039, 6),(8, 1040, 6),(8, 1041, 6),(8, 1042, 6),(8, 1043, 6),(8, 1, 6),(8, 2, 6),(8, 1044, 6),(8, 1045, 6),(8, 1046, 2),(8, 1047, 2), +(8, 1048, 3),(8, 1049, 6),(8, 1050, 6),(8, 1051, 8),(8, 1052, 6),(8, 1053, 6),(8, 152, 6),(8, 1054, 6),(8, 1055, 1),(8, 1056, 1),(8, 1057, 1), +(8, 1058, 1),(8, 1059, 1),(8, 1060, 1),(8, 1061, 1),(8, 1062, 1),(8, 1063, 1),(8, 1064, 1),(8, 1065, 1),(8, 1066, 1),(8, 1067, 1),(8, 109, 1), +(8, 570, 1),(8, 1068, 1),(8, 118, 3),(8, 82, 1),(8, 1069, 1),(8, 124, 1),(8, 926, 1),(8, 882, 1),(8, 1070, 1),(8, 1071, 1),(8, 730, 1),(8, 1072, 2), +(8, 1073, 1),(8, 1074, 1),(8, 1075, 1),(8, 1076, 1),(8, 944, 1),(8, 1077, 1),(8, 1078, 1),(8, 1079, 3),(8, 1080, 6),(8, 1081, 6),(8, 1082, 6), +(8, 1083, 6),(8, 229, 6),(8, 1084, 6),(8, 1085, 1),(8, 1023, 1),(8, 1086, 2),(8, 1087, 1),(8, 1088, 1),(8, 1089, 1),(8, 1090, 1),(8, 1091, 1), +(8, 1092, 1),(8, 1093, 1),(8, 1094, 1),(8, 1095, 1),(8, 1096, 1),(8, 1097, 1),(8, 163, 1),(8, 1098, 1),(8, 1099, 1),(8, 669, 1),(8, 1100, 1), +(8, 160, 1),(8, 1101, 1),(8, 1013, 1),(8, 1102, 1),(8, 1103, 1),(8, 1104, 1),(8, 762, 1),(8, 1105, 2),(8, 1106, 1),(8, 1107, 1),(8, 1108, 1), +(8, 1109, 1),(8, 1025, 1),(8, 1110, 1),(8, 1111, 1),(8, 1112, 1),(8, 1113, 3),(9, 1114, 11),(9, 1115, 9),(9, 1116, 7),(9, 850, 8),(9, 1, 8), +(9, 1117, 8),(9, 1118, 1),(9, 442, 4),(9, 41, 1),(9, 1119, 1),(9, 826, 1),(9, 1120, 1),(9, 1121, 1),(9, 1122, 1),(9, 1123, 1),(9, 1124, 2),(9, 1125, 1), +(9, 1126, 1),(9, 1127, 2),(9, 1128, 3),(9, 20, 1),(9, 1129, 1),(9, 1130, 1),(9, 1131, 1),(9, 1132, 1),(9, 1133, 3),(9, 1134, 1),(9, 1135, 1), +(9, 1136, 1),(9, 1137, 1),(9, 3, 3),(9, 1138, 1),(9, 1139, 1),(9, 1140, 1),(9, 1141, 1),(9, 38, 2),(9, 840, 1),(9, 1142, 1),(9, 238, 2),(9, 1143, 1), +(9, 1144, 1),(9, 1145, 2),(9, 430, 1),(9, 845, 1),(9, 81, 1),(9, 1146, 1),(9, 1147, 1),(9, 1148, 1),(9, 1149, 1),(9, 805, 1),(9, 1150, 1),(9, 1151, 1), +(9, 1152, 1),(9, 1153, 1),(9, 1154, 1),(9, 1155, 1),(9, 1156, 1),(9, 1157, 1),(9, 4, 1),(9, 1158, 2),(9, 51, 5),(9, 1159, 1),(9, 1160, 1),(9, 1161, 1), +(9, 1162, 1),(9, 1163, 1),(9, 1164, 1),(9, 851, 4),(9, 1165, 1),(9, 1166, 1),(9, 1167, 1),(9, 1168, 1),(9, 1169, 1),(9, 1170, 1),(9, 1171, 1),(9, 1172, 1), +(9, 448, 1),(9, 1173, 1),(9, 1174, 1),(9, 1175, 1),(9, 1176, 1),(9, 1177, 1),(9, 1178, 1),(9, 1179, 1),(9, 1180, 1),(9, 1181, 1),(9, 1182, 1),(9, 1183, 1), +(9, 1184, 1),(9, 1185, 1),(9, 1186, 1),(9, 1187, 1),(9, 1188, 1),(9, 1189, 1),(9, 1190, 1),(9, 1191, 2),(9, 1192, 2),(9, 1193, 1),(9, 1194, 3), +(9, 1195, 3),(9, 1196, 2),(9, 1197, 2),(9, 1198, 2),(9, 1199, 1),(9, 1200, 1),(9, 1201, 1),(9, 1202, 1),(9, 1203, 1),(9, 1204, 1),(9, 1205, 2), +(9, 1206, 1),(9, 1207, 2),(9, 1208, 1),(9, 1209, 1),(9, 1210, 2),(9, 1211, 1),(9, 1212, 1),(9, 1213, 1),(9, 1214, 1),(9, 1215, 1),(9, 1216, 1), +(9, 22, 1),(9, 1217, 1),(9, 1218, 1),(9, 1219, 4),(9, 1220, 2),(9, 1221, 1),(9, 1222, 1),(9, 1223, 1),(9, 47, 2),(9, 1224, 1),(9, 68, 2), +(9, 1225, 1),(9, 1226, 1),(9, 1227, 1),(9, 1228, 1),(9, 1229, 1),(9, 1230, 1),(9, 1231, 1),(9, 1232, 1),(9, 1233, 1),(9, 1234, 1),(9, 1235, 2), +(9, 1236, 1),(9, 1237, 1),(9, 1238, 1),(9, 1239, 1),(9, 1240, 1),(9, 1241, 1),(9, 1242, 1),(9, 1243, 1),(9, 1244, 1),(9, 1245, 1),(9, 1246, 1), +(9, 1247, 1),(9, 1048, 3),(9, 1248, 3),(9, 942, 17),(9, 1249, 13),(9, 1250, 13),(9, 1251, 11),(9, 1252, 11),(9, 1253, 1),(9, 1254, 2),(9, 1255, 1), +(9, 1256, 1),(9, 1257, 5),(9, 90, 2),(9, 1258, 1),(9, 1259, 1),(9, 1260, 1),(9, 159, 1),(9, 583, 1),(9, 1261, 1),(9, 1262, 1),(9, 910, 1), +(9, 1263, 1),(9, 1264, 1),(9, 1265, 1),(9, 1266, 1),(9, 1267, 1),(9, 1268, 1),(9, 1269, 1),(9, 1270, 2),(9, 1271, 1),(9, 1272, 1),(9, 1273, 1), +(9, 1274, 1),(9, 1275, 1),(9, 1276, 3),(9, 1277, 2),(9, 1278, 1),(9, 103, 1),(9, 1279, 2),(9, 1280, 1),(9, 1065, 1),(9, 1281, 4),(9, 1282, 1), +(9, 1283, 1),(9, 1284, 1),(9, 1285, 1),(9, 85, 1),(9, 1286, 1),(9, 1287, 1),(9, 943, 7),(9, 1288, 3),(9, 1289, 1),(9, 1290, 1),(9, 562, 1), +(9, 1291, 1),(9, 109, 7),(9, 1292, 1),(9, 1293, 1),(9, 118, 2),(9, 136, 2),(9, 1294, 1),(9, 95, 7),(9, 1295, 1),(9, 1296, 1),(9, 918, 1), +(9, 1297, 1),(9, 931, 1),(9, 1298, 1),(9, 1299, 1),(9, 1300, 1),(9, 1301, 1),(9, 1302, 1),(9, 131, 3),(9, 1303, 2),(9, 1304, 2),(9, 1305, 2), +(9, 1306, 1),(9, 1307, 2),(9, 1308, 1),(9, 1309, 1),(9, 1310, 1),(9, 1311, 1),(9, 319, 1),(9, 1312, 2),(9, 1313, 1),(9, 1314, 1),(9, 1315, 1), +(9, 500, 1),(9, 499, 1),(9, 1316, 4),(9, 1317, 1),(9, 1318, 1),(9, 1319, 1),(9, 1320, 1),(9, 1321, 1),(9, 523, 1),(9, 1322, 1),(9, 1323, 1), +(9, 1324, 3),(9, 1325, 3),(9, 1326, 2),(9, 1327, 1),(9, 1328, 1),(9, 1329, 1),(9, 1330, 1),(9, 1331, 1),(9, 1332, 1),(9, 1333, 1),(9, 1334, 1), +(9, 1335, 1),(9, 1336, 1),(9, 1337, 1),(9, 299, 1),(9, 553, 2),(9, 1338, 1),(9, 1339, 1),(9, 1340, 1),(9, 1341, 1),(9, 1342, 1),(9, 1343, 1), +(9, 1344, 1),(9, 330, 1),(9, 544, 1),(9, 1345, 1),(9, 1346, 1),(9, 1347, 1),(9, 1348, 1),(9, 1349, 1),(9, 1350, 1),(9, 1351, 1),(9, 1352, 1), +(9, 1353, 1),(9, 1354, 1),(9, 1355, 1),(9, 1356, 1),(9, 1357, 1),(9, 1358, 1),(9, 1359, 1),(9, 1360, 1),(9, 1361, 1),(9, 1362, 1),(9, 1363, 1), +(9, 1364, 1),(9, 1365, 2),(9, 1366, 1),(9, 1367, 2),(9, 1368, 1),(9, 1369, 1),(9, 505, 2),(9, 1370, 1),(9, 1371, 1),(9, 1372, 2),(9, 570, 1), +(9, 1373, 1),(9, 1374, 1),(9, 1375, 1),(9, 1376, 1),(9, 1055, 3),(9, 1377, 2),(9, 1378, 1),(9, 1379, 1),(9, 730, 1),(9, 1380, 1),(9, 1381, 1), +(9, 1382, 1),(9, 1383, 1),(9, 1384, 2),(9, 1385, 1),(9, 1386, 2),(9, 1387, 1),(9, 1388, 1),(9, 889, 1),(9, 1389, 1),(9, 1390, 1),(9, 1391, 1), +(9, 1392, 1),(9, 1393, 1),(9, 938, 1),(9, 1394, 1),(9, 1395, 1),(9, 1396, 1),(9, 1397, 1),(9, 1398, 1),(9, 1399, 1),(9, 940, 1),(9, 941, 1), +(9, 1400, 1),(9, 1401, 1),(9, 1402, 1),(9, 1079, 3),(9, 1403, 3),(9, 1404, 4),(9, 1405, 4),(9, 1024, 12),(9, 1406, 6),(9, 1407, 6),(9, 1408, 12), +(9, 1409, 11),(9, 1410, 9),(9, 1411, 1),(9, 1412, 2),(9, 1413, 1),(9, 1414, 1),(9, 1415, 1),(9, 1416, 1),(9, 1417, 1),(9, 1418, 5),(9, 1419, 1), +(9, 1420, 1),(9, 1421, 1),(9, 1422, 1),(9, 1423, 1),(9, 1424, 3),(9, 1425, 1),(9, 764, 2),(9, 1426, 1),(9, 1427, 1),(9, 1428, 1),(9, 1429, 1), +(9, 1430, 2),(9, 1431, 1),(9, 1432, 2),(9, 1433, 1),(9, 1434, 1),(9, 1435, 2),(9, 1436, 1),(9, 1437, 3),(9, 1438, 2),(9, 1439, 1),(9, 181, 1), +(9, 1440, 3),(9, 356, 2),(9, 658, 2),(9, 173, 11),(9, 1441, 6),(9, 1442, 5),(9, 1443, 1),(9, 1444, 1),(9, 1445, 2),(9, 1446, 1),(9, 163, 1), +(9, 1447, 1),(9, 1448, 1),(9, 606, 7),(9, 1449, 3),(9, 1450, 1),(9, 1451, 1),(9, 662, 1),(9, 1452, 1),(9, 1453, 1),(9, 213, 2),(9, 1454, 1), +(9, 1455, 1),(9, 1456, 1),(9, 1457, 1),(9, 610, 1),(9, 1458, 1),(9, 1459, 1),(9, 1460, 1),(9, 1461, 1),(9, 1462, 1),(9, 1463, 1),(9, 1464, 2), +(9, 1465, 2),(9, 1466, 2),(9, 1467, 1),(9, 1468, 2),(9, 631, 1),(9, 1469, 2),(9, 1470, 1),(9, 1471, 2),(9, 1472, 1),(9, 1473, 1),(9, 1474, 2), +(9, 1475, 1),(9, 1476, 1),(9, 660, 1),(9, 601, 1),(9, 1477, 4),(9, 635, 1),(9, 1478, 1),(9, 653, 3),(9, 654, 1),(9, 1479, 1),(9, 1480, 1), +(9, 1481, 3),(9, 1482, 3),(9, 1483, 2),(9, 1484, 1),(9, 1485, 1),(9, 1486, 1),(9, 1487, 1),(9, 1488, 2),(9, 1489, 1),(9, 1490, 1),(9, 1491, 1), +(9, 1492, 1),(9, 354, 2),(9, 1493, 1),(9, 593, 1),(9, 1494, 1),(9, 1495, 1),(9, 1496, 1),(9, 1497, 1),(9, 381, 1),(9, 1498, 1),(9, 1499, 1), +(9, 1500, 1),(9, 1501, 1),(9, 1502, 1),(9, 1503, 1),(9, 1504, 1),(9, 1505, 1),(9, 1506, 1),(9, 1507, 1),(9, 1508, 1),(9, 1509, 1),(9, 1510, 1), +(9, 1511, 1),(9, 1512, 1),(9, 1513, 1),(9, 1514, 1),(9, 1515, 1),(9, 1516, 1),(9, 1517, 2),(9, 1518, 1),(9, 1519, 1),(9, 1520, 1),(9, 1521, 1), +(9, 1522, 1),(9, 1523, 1),(9, 669, 1),(9, 1524, 1),(9, 1525, 1),(9, 1526, 1),(9, 191, 1),(9, 1023, 3),(9, 1527, 2),(9, 1528, 1),(9, 1099, 1), +(9, 762, 1),(9, 1529, 1),(9, 1530, 1),(9, 1531, 1),(9, 786, 1),(9, 1532, 2),(9, 1533, 1),(9, 1534, 2),(9, 1535, 1),(9, 1536, 1),(9, 973, 1), +(9, 1537, 1),(9, 1103, 1),(9, 1538, 1),(9, 1539, 1),(9, 1540, 1),(9, 1021, 1),(9, 1541, 1),(9, 1542, 1),(9, 1543, 1),(9, 1544, 1),(9, 1545, 1), +(9, 1546, 1),(9, 1022, 1),(9, 1547, 1),(9, 1548, 1),(9, 1549, 1),(9, 1550, 1),(9, 1551, 1),(9, 1113, 3),(9, 1552, 3); + +INSERT INTO `PREFIX_search_word` (`id_word`, `id_lang`, `word`) VALUES (1, 1, 'ipod'),(2, 1, 'nano'),(3, 1, 'design'),(4, 1, 'features'),(5, 1, '16gb'), +(6, 1, 'rocks'),(7, 1, 'like'),(8, 1, 'never'),(9, 1, 'before'),(10, 1, 'curved'),(11, 1, 'ahead'),(12, 1, 'curve'),(13, 1, 'those'),(14, 1, 'about'), +(15, 1, 'rock,'),(16, 1, 'give'),(17, 1, 'nine'),(18, 1, 'amazing'),(19, 1, 'colors'),(20, 1, 'that''s'),(21, 1, 'only'),(22, 1, 'part'), +(23, 1, 'story'),(24, 1, 'feel'),(25, 1, 'curved,'),(26, 1, 'allaluminum'),(27, 1, 'glass'),(28, 1, 'won''t'),(29, 1, 'want'),(30, 1, 'down'), +(31, 1, 'great'),(32, 1, 'looks'),(33, 1, 'brains,'),(34, 1, 'genius'),(35, 1, 'feature'),(36, 1, 'turns'),(37, 1, 'into'),(38, 1, 'your'), +(39, 1, 'highly'),(40, 1, 'intelligent,'),(41, 1, 'personal'),(42, 1, 'creates'),(43, 1, 'playlists'),(44, 1, 'finding'),(45, 1, 'songs'), +(46, 1, 'library'),(47, 1, 'that'),(48, 1, 'together'),(49, 1, 'made'),(50, 1, 'move'),(51, 1, 'with'),(52, 1, 'moves'),(53, 1, 'accelerometer'), +(54, 1, 'comes'),(55, 1, 'shake'),(56, 1, 'shuffle'),(57, 1, 'music'),(58, 1, 'turn'),(59, 1, 'sideways'),(60, 1, 'view'),(61, 1, 'cover'),(62, 1, 'flow'), +(63, 1, 'play'),(64, 1, 'games'),(65, 1, 'designed'),(66, 1, 'mind'),(67, 1, 'ipods'),(68, 1, 'apple'),(69, 1, 'computer,'),(70, 1, 'metal'), +(71, 1, '16go'),(72, 1, 'yellow'),(73, 1, 'blue'),(74, 1, 'black'),(75, 1, 'orange'),(76, 1, 'pink'),(77, 1, 'green'),(78, 1, 'purple'),(79, 1, 'g'), +(80, 1, 'minijack'),(81, 1, 'stereo'),(82, 2, 'ipod'),(83, 2, 'nano'),(84, 2, 'nouveau'),(85, 2, 'design'),(86, 2, 'nouvelles'),(87, 2, 'fonctionnalité'), +(88, 2, 'désormais'),(89, 2, 'nano,'),(90, 2, 'plus'),(91, 2, 'rock'),(92, 2, 'jamais'),(93, 2, 'courbes'),(94, 2, 'avantageuses'),(95, 2, 'pour'), +(96, 2, 'amateurs'),(97, 2, 'sensations,'),(98, 2, 'voici'),(99, 2, 'neuf'),(100, 2, 'nouveaux'),(101, 2, 'coloris'),(102, 2, 'n''est'),(103, 2, 'tout'), +(104, 2, 'faites'),(105, 2, 'l''expérience'),(106, 2, 'elliptique'),(107, 2, 'aluminum'),(108, 2, 'verre'),(109, 2, 'vous'),(110, 2, 'voudrez'), +(111, 2, 'lâcher'),(112, 2, 'beau'),(113, 2, 'intelligent'),(114, 2, 'nouvelle'),(115, 2, 'genius'),(116, 2, 'fait'),(117, 2, 'd''ipod'),(118, 2, 'votre'), +(119, 2, 'personnel'),(120, 2, 'crée'),(121, 2, 'listes'),(122, 2, 'lecture'),(123, 2, 'recherchant'),(124, 2, 'dans'),(125, 2, 'bibliothèque'), +(126, 2, 'chansons'),(127, 2, 'vont'),(128, 2, 'bien'),(129, 2, 'ensemble'),(130, 2, 'bouger'),(131, 2, 'avec'),(132, 2, 'équipé'),(133, 2, 'l''accéléromè'), +(134, 2, 'secouezle'),(135, 2, 'mélanger'),(136, 2, 'musique'),(137, 2, 'basculezle'),(138, 2, 'afficher'),(139, 2, 'cover'),(140, 2, 'flow'), +(141, 2, 'découvrez'),(142, 2, 'jeux'),(143, 2, 'adaptés'),(144, 2, 'mouvements'),(145, 2, 'ipods'),(146, 2, 'apple'),(147, 2, 'computer,'),(148, 2, 'metal'), +(149, 2, '16go'),(150, 2, 'jaune'),(151, 2, 'bleu'),(152, 2, 'noir'),(153, 2, 'orange'),(154, 2, 'rose'),(155, 2, 'vert'),(156, 2, 'violet'), +(157, 2, 'g'),(158, 2, 'minijack'),(159, 2, 'stéréo'),(160, 3, 'ipod'),(161, 3, 'nano'),(162, 3, 'nuevo'),(163, 3, 'diseño'),(164, 3, 'nuevas'), +(165, 3, 'aplicaciones'),(166, 3, 'ahora'),(167, 3, 'disponible'),(168, 3, 'nano,'),(169, 3, 'rock'),(170, 3, 'nunca'),(171, 3, 'curvas'), +(172, 3, 'aerodinámicas'),(173, 3, 'para'),(174, 3, 'aficionados'),(175, 3, 'sensaciones'),(176, 3, 'fuertes,'),(177, 3, 'presentamos'),(178, 3, 'nueve'), +(179, 3, 'nuevos'),(180, 3, 'colores'),(181, 3, 'todo'),(182, 3, 'experimenta'),(183, 3, 'elíptico'),(184, 3, 'aluminio'),(185, 3, 'vidrio'), +(186, 3, 'querrás'),(187, 3, 'separarte'),(188, 3, 'estético'),(189, 3, 'inteligente'),(190, 3, 'nueva'),(191, 3, 'aplicación'),(192, 3, 'genius'), +(193, 3, 'hace'),(194, 3, 'discjockey'),(195, 3, 'personal'),(196, 3, 'genuis'),(197, 3, 'crea'),(198, 3, 'listas'),(199, 3, 'lectura'),(200, 3, 'buscando'), +(201, 3, 'biblioteca'),(202, 3, 'canciones'),(203, 3, 'combinan'),(204, 3, 'entre'),(205, 3, 'hecho'),(206, 3, 'moverse'),(207, 3, 'contigo'),(208, 3, 'está'), +(209, 3, 'equipado'),(210, 3, 'acelerómetro'),(211, 3, 'muévelo'),(212, 3, 'mezclar'),(213, 3, 'música'),(214, 3, 'voltéalo'),(215, 3, 'mostrar'), +(216, 3, 'cover'),(217, 3, 'flow'),(218, 3, 'descubre'),(219, 3, 'juegos'),(220, 3, 'adaptados'),(221, 3, 'movimientos'),(222, 3, 'ipods'),(223, 3, 'apple'), +(224, 3, 'computer,'),(225, 3, 'metal'),(226, 3, '16go'),(227, 3, 'amarillo'),(228, 3, 'azul'),(229, 3, 'negro'),(230, 3, 'naranja'),(231, 3, 'rosa'), +(232, 3, 'verde'),(233, 3, 'violeta'),(234, 3, 'minijack'),(235, 3, 'stéréo'),(236, 1, 'shuffle,'),(237, 1, 'world'),(238, 1, 'most'),(239, 1, 'wearable'), +(240, 1, 'player,'),(241, 1, 'clips'),(242, 1, 'more'),(243, 1, 'vibrant'),(244, 1, 'blue,'),(245, 1, 'green,'),(246, 1, 'pink,'),(247, 1, 'instant'), +(248, 1, 'attachment'),(249, 1, 'wear'),(250, 1, 'sleeve'),(251, 1, 'belt'),(252, 1, 'shorts'),(253, 1, 'badge'),(254, 1, 'musical'),(255, 1, 'devotion'), +(256, 1, 'new,'),(257, 1, 'brilliant'),(258, 1, 'feed'),(259, 1, 'itunes'),(260, 1, 'entertainment'),(261, 1, 'superstore'),(262, 1, 'ultraorganized'), +(263, 1, 'collection'),(264, 1, 'jukebox'),(265, 1, 'load'),(266, 1, 'click'),(267, 1, 'beauty'),(268, 1, 'beat'),(269, 1, 'intensely'),(270, 1, 'colorful'), +(271, 1, 'anodized'),(272, 1, 'aluminum'),(273, 1, 'complements'),(274, 1, 'simple'),(275, 1, 'red,'),(276, 1, 'original'),(277, 1, 'silver'),(278, 1, '(clip'), +(279, 1, 'compris)'),(280, 2, 'shuffle'),(281, 2, 'shuffle,'),(282, 2, 'baladeur'),(283, 2, 'portable'),(284, 2, 'monde,'),(285, 2, 'clippe'),(286, 2, 'maintenant'), +(287, 2, 'bleu,'),(288, 2, 'vert,'),(289, 2, 'rouge'),(290, 2, 'lien'),(291, 2, 'immédiat'),(292, 2, 'portez'),(294, 2, 'accrochées'),(295, 2, 'manche,'), +(296, 2, 'ceinture'),(297, 2, 'short'),(298, 2, 'arborez'),(299, 2, 'comme'),(300, 2, 'signe'),(301, 2, 'extérieur'),(302, 2, 'passion'),(303, 2, 'existe'), +(304, 2, 'quatre'),(305, 2, 'encore'),(306, 2, 'éclatants'),(307, 2, 'emplissez'),(308, 2, 'itunes'),(309, 2, 'immense'),(310, 2, 'magasin'),(311, 2, 'dédié'), +(312, 2, 'divertissement,'),(313, 2, 'collection'),(314, 2, 'musicale'),(315, 2, 'parfaitement'),(316, 2, 'organisée'),(317, 2, 'jukebox'),(318, 2, 'pouvez'), +(319, 2, 'seul'),(320, 2, 'clic'),(321, 2, 'remplir'),(322, 2, 'technicolor'),(323, 2, 's''affiche'),(324, 2, 'intenses'),(325, 2, 'rehaussent'),(326, 2, 'épuré'), +(327, 2, 'boîtier'),(328, 2, 'aluminium'),(329, 2, 'anodisé'),(330, 2, 'choisissez'),(331, 2, 'parmi'),(332, 2, 'rose,'),(333, 2, 'l''argenté'),(334, 2, 'd''origine'), +(335, 2, '(clip'),(336, 2, 'compris)'),(337, 3, 'shuffle'),(338, 3, 'shuffle,'),(339, 3, 'walkman'),(340, 3, 'portátil'),(341, 3, 'mundo,'),(342, 3, 'azul,'), +(343, 3, 'verde,'),(344, 3, 'rojo'),(345, 3, 'enlace'),(346, 3, 'inmediato'),(347, 3, 'lleva'),(348, 3, 'hasta'),(349, 3, 'colgadas'),(350, 3, 'manga,'), +(351, 3, 'cinturón'),(352, 3, 'pantalón'),(353, 3, 'presume'),(354, 3, 'como'),(355, 3, 'signo'),(356, 3, 'exterior'),(357, 3, 'pasión'),(358, 3, 'existen'), +(359, 3, 'cuatro'),(360, 3, 'llamativos'),(361, 3, 'llena'),(362, 3, 'itunes'),(363, 3, 'enorme'),(364, 3, 'tienda'),(365, 3, 'dedicada'),(366, 3, 'diversión,'), +(367, 3, 'colección'),(368, 3, 'organizada'),(369, 3, 'perfectamente'),(370, 3, 'jukebox'),(371, 3, 'solo'),(372, 3, 'clic'),(373, 3, 'puedes'),(374, 3, 'llenar'), +(375, 3, 'tecnicolor'),(376, 3, 'presenta'),(377, 3, 'vivos'),(378, 3, 'realzan'),(379, 3, 'estilizado'),(380, 3, 'anodizado'),(381, 3, 'elige'),(382, 3, 'rosa,'), +(383, 3, 'plateado'),(384, 3, 'origen'),(385, 3, '(clip'),(386, 3, 'incluyendo)'),(387, 1, 'macbook'),(388, 1, 'ultrathin,'),(389, 1, 'ultraportable,'), +(390, 1, 'ultra'),(391, 1, 'unlike'),(392, 1, 'anything'),(393, 1, 'else'),(394, 1, 'lose'),(395, 1, 'inches'),(396, 1, 'pounds'),(397, 1, 'overnight'), +(398, 1, 'result'),(399, 1, 'rethinking'),(400, 1, 'conventions'),(401, 1, 'multiple'),(402, 1, 'wireless'),(403, 1, 'innovations'),(404, 1, 'breakthrough'), +(405, 1, 'air,'),(406, 1, 'mobile'),(407, 1, 'computing'),(408, 1, 'suddenly'),(409, 1, 'standard'),(410, 1, 'nearly'),(411, 1, 'thin'),(412, 1, 'index'), +(413, 1, 'finger'),(414, 1, 'practically'),(415, 1, 'every'),(416, 1, 'detail'),(417, 1, 'could'),(418, 1, 'streamlined'),(419, 1, 'been'),(420, 1, 'still'), +(421, 1, '133inch'),(422, 1, 'widescreen'),(423, 1, 'display,'),(424, 1, 'fullsize'),(425, 1, 'keyboard,'),(426, 1, 'large'),(427, 1, 'multitouch'), +(428, 1, 'trackpad'),(429, 1, 'incomparably'),(430, 1, 'portable'),(431, 1, 'without'),(432, 1, 'usual'),(433, 1, 'ultraportable'),(434, 1, 'screen'), +(435, 1, 'keyboard'),(436, 1, 'compromisesthe'),(437, 1, 'incredible'),(438, 1, 'thinness'),(439, 1, 'numerous'),(440, 1, 'size'),(441, 1, 'weightshaving'), +(442, 1, 'from'),(443, 1, 'slimmer'),(444, 1, 'hard'),(445, 1, 'drive'),(446, 1, 'strategically'),(447, 1, 'hidden'),(448, 1, 'ports'),(449, 1, 'lowerprofile'), +(450, 1, 'battery,'),(451, 1, 'everything'),(452, 1, 'considered'),(453, 1, 'reconsidered'),(454, 1, 'mindmacbook'),(455, 1, 'engineered'),(456, 1, 'take'), +(457, 1, 'full'),(458, 1, 'advantage'),(459, 1, 'which'),(460, 1, '80211n'),(461, 1, 'wifi'),(462, 1, 'fast'),(463, 1, 'available,'),(464, 1, 'people'), +(465, 1, 'truly'),(466, 1, 'living'),(467, 1, 'untethered'),(468, 1, 'buying'),(469, 1, 'renting'),(470, 1, 'movies'),(471, 1, 'online,'),(472, 1, 'downloading'), +(473, 1, 'software,'),(474, 1, 'sharing'),(475, 1, 'storing'),(476, 1, 'files'),(477, 1, 'laptops'),(478, 1, '80gb'),(479, 1, 'parallel'),(480, 1, '4200'), +(481, 1, '160ghz'),(482, 1, 'intel'),(483, 1, 'core'),(484, 1, 'optional'),(485, 1, '64gb'),(486, 1, 'solidstate'),(487, 1, '180ghz'),(488, 2, 'macbook'), +(489, 2, 'ultra'),(490, 2, 'fin,'),(491, 2, 'différent'),(492, 2, 'reste'),(493, 2, 'mais'),(494, 2, 'perd'),(495, 2, 'kilos'),(496, 2, 'centimètres'), +(497, 2, 'nuit'),(498, 2, 'c''est'),(499, 2, 'résultat'),(500, 2, 'd''une'),(501, 2, 'réinvention'),(502, 2, 'normes'),(503, 2, 'multitude'), +(504, 2, 'd''innovations'),(505, 2, 'sans'),(506, 2, 'révolution'),(507, 2, 'air,'),(508, 2, 'l''informatique'),(509, 2, 'mobile'),(510, 2, 'prend'), +(511, 2, 'soudain'),(512, 2, 'dimension'),(513, 2, 'presque'),(514, 2, 'aussi'),(515, 2, 'index'),(516, 2, 'pratiquement'),(517, 2, 'pouvait'), +(518, 2, 'être'),(519, 2, 'simplifié'),(520, 2, 'n''en'),(521, 2, 'dispose'),(522, 2, 'moins'),(523, 2, 'd''un'),(524, 2, 'écran'),(525, 2, 'panoramique'), +(526, 2, 'pouces,'),(527, 2, 'clavier'),(528, 2, 'complet'),(529, 2, 'vaste'),(530, 2, 'trackpad'),(531, 2, 'multitouch'),(532, 2, 'incomparablemen'), +(533, 2, 'évite'),(534, 2, 'compromis'),(535, 2, 'habituels'),(536, 2, 'matière'),(537, 2, 'd''écran'),(538, 2, 'ultraportablesl'),(539, 2, 'finesse'), +(540, 2, 'grand'),(541, 2, 'nombre'),(542, 2, 'termes'),(543, 2, 'réduction'),(544, 2, 'taille'),(545, 2, 'poids'),(546, 2, 'disque'),(547, 2, 'ports'), +(548, 2, 'habilement'),(549, 2, 'dissimulés'),(550, 2, 'passant'),(551, 2, 'batterie'),(552, 2, 'plate,'),(553, 2, 'chaque'),(554, 2, 'détail'), +(555, 2, 'considéré'),(556, 2, 'reconsidéré'),(557, 2, 'l''espritmacbook'),(558, 2, 'conçu'),(559, 2, 'élaboré'),(560, 2, 'profiter'),(561, 2, 'pleinement'), +(562, 2, 'monde'),(563, 2, 'lequel'),(564, 2, 'norme'),(565, 2, 'wifi'),(566, 2, '80211n'),(567, 2, 'rapide'),(568, 2, 'accessible'),(569, 2, 'qu''elle'), +(570, 2, 'permet'),(571, 2, 'véritablement'),(572, 2, 'libérer'),(573, 2, 'toute'),(574, 2, 'attache'),(575, 2, 'acheter'),(576, 2, 'vidéos'),(577, 2, 'ligne,'), +(578, 2, 'télécharger'),(579, 2, 'logicééééie'),(580, 2, 'stocker'),(581, 2, 'partager'),(582, 2, 'fichiers'),(583, 2, 'portables'),(584, 2, 'macbookair'), +(585, 2, 'pata'),(586, 2, 'intel'),(587, 2, 'core'),(588, 2, '(solidstate'),(589, 2, 'drive)'),(590, 3, 'macbook'),(591, 3, 'ultra'),(592, 3, 'fino,'), +(593, 3, 'diferente'),(594, 3, 'resto'),(595, 3, 'pero'),(596, 3, 'pierden'),(597, 3, 'kilos'),(598, 3, 'centímetros'),(599, 3, 'noche'),(600, 3, 'esto'), +(601, 3, 'resultado'),(602, 3, 'invento'),(603, 3, 'normas'),(604, 3, 'sinfín'),(605, 3, 'novedades'),(606, 3, 'cable'),(607, 3, 'revolución'), +(608, 3, 'air,'),(609, 3, 'informática'),(610, 3, 'móvil'),(611, 3, 'adquiere'),(612, 3, 'dimensión'),(613, 3, 'casi'),(614, 3, 'fino'),(615, 3, 'dedo'), +(616, 3, 'simplificado'),(617, 3, 'máximo'),(618, 3, 'pesar'),(619, 3, 'ello'),(620, 3, 'dispone'),(621, 3, 'pantalla'),(622, 3, 'panorámica'), +(623, 3, 'pulgadas,'),(624, 3, 'teclado'),(625, 3, 'completo'),(626, 3, 'amplio'),(627, 3, 'trackpad'),(628, 3, 'multitouch'),(629, 3, '100%,'), +(630, 3, 'evitará'),(631, 3, 'tener'),(632, 3, 'hacer'),(633, 3, 'compromiso'),(634, 3, 'concierne'),(635, 3, 'increíble'),(636, 3, 'sutileza'), +(637, 3, 'gran'),(638, 3, 'número'),(639, 3, 'innovaciones'),(640, 3, 'materia'),(641, 3, 'reducción'),(642, 3, 'tamaño'),(643, 3, 'peso'),(644, 3, 'desde'), +(645, 3, 'disco'),(646, 3, 'duro'),(647, 3, 'puertos'),(648, 3, 'disimulados'),(649, 3, 'hábilmente'),(650, 3, 'pasando'),(651, 3, 'batería'), +(652, 3, 'plana,'),(653, 3, 'cada'),(654, 3, 'detalle'),(655, 3, 'consideró'),(656, 3, 'fuera'),(657, 3, 'posible'),(658, 3, 'creado'),(659, 3, 'elaborado'), +(660, 3, 'disfrutar'),(661, 3, 'plenamente'),(662, 3, 'mundo'),(663, 3, 'inalámbrico'),(664, 3, 'norma'),(665, 3, 'wifi'),(666, 3, '80211n'), +(667, 3, 'rápida'),(668, 3, 'accesible'),(669, 3, 'permite'),(670, 3, 'liberarse'),(671, 3, 'completamente'),(672, 3, 'cualquier'),(673, 3, 'atadura'), +(674, 3, 'comprar'),(675, 3, 'videos'),(676, 3, 'línea,'),(677, 3, 'descargar'),(678, 3, 'programas,'),(679, 3, 'almacenar'),(680, 3, 'compartir'), +(681, 3, 'archivos'),(682, 3, 'portátiles'),(683, 3, 'pata'),(684, 3, 'intel'),(685, 3, 'core'),(686, 3, '(solidstate'),(687, 3, 'drive)'),(688, 1, 'makes'), +(689, 1, 'easy'),(690, 1, 'road'),(691, 1, 'thanks'),(692, 1, 'tough'),(693, 1, 'polycarbonate'),(694, 1, 'case,'),(695, 1, 'builtin'),(696, 1, 'technologies,'), +(697, 1, 'innovative'),(698, 1, 'magsafe'),(699, 1, 'power'),(700, 1, 'adapter'),(701, 1, 'releases'),(702, 1, 'automatically'),(703, 1, 'someone'), +(704, 1, 'accidentally'),(705, 1, 'trips'),(706, 1, 'cord'),(707, 1, 'larger'),(708, 1, 'drive,'),(709, 1, '250gb,'),(710, 1, 'store'),(711, 1, 'growing'), +(712, 1, 'media'),(713, 1, 'collections'),(714, 1, 'valuable'),(715, 1, 'datathe'),(716, 1, '24ghz'),(717, 1, 'models'),(718, 1, 'include'),(719, 1, 'memory'), +(720, 1, 'perfect'),(721, 1, 'running'),(722, 1, 'favorite'),(723, 1, 'applications'),(724, 1, 'smoothly'),(725, 1, 'superdrive'),(726, 2, 'offre'), +(727, 2, 'liberté'),(728, 2, 'mouvement'),(729, 2, 'grâce'),(730, 2, 'résistant'),(731, 2, 'polycarbonate,'),(732, 2, 'technologies'),(733, 2, 'intégrées'), +(734, 2, 'adaptateur'),(735, 2, 'secteur'),(736, 2, 'magsafe'),(737, 2, 'novateur'),(738, 2, 'déconnecte'),(739, 2, 'automatiquement'),(740, 2, 'quelqu''un'), +(741, 2, 'pieds'),(742, 2, 'spacieux,'),(743, 2, 'capacité'),(744, 2, 'atteignant'),(745, 2, 'collections'),(746, 2, 'multimédia'),(747, 2, 'expansion'), +(748, 2, 'données'),(749, 2, 'précieusesle'),(750, 2, 'modèle'),(751, 2, 'intègre'),(752, 2, 'mémoire'),(753, 2, 'standard'),(754, 2, 'l''idéal'), +(755, 2, 'exécuter'),(756, 2, 'souplesse'),(757, 2, 'applications'),(758, 2, 'préférées'),(759, 3, 'ofrece'),(760, 3, 'libertad'),(761, 3, 'gracias'), +(762, 3, 'resistente'),(763, 3, 'policarbonato,'),(764, 3, 'tecnología'),(765, 3, 'adaptador'),(766, 3, 'cargador'),(767, 3, 'sector'),(768, 3, 'innovador'), +(769, 3, 'desconecta'),(770, 3, 'automáticament'),(771, 3, 'alguien'),(772, 3, 'engancha'),(773, 3, 'espacioso,'),(774, 3, 'capacidad'),(775, 3, 'colecciones'), +(776, 3, 'multimedia'),(777, 3, 'expansión'),(778, 3, 'datos'),(779, 3, 'preciados'),(780, 3, 'modelo'),(781, 3, 'integra'),(782, 3, 'memoria'),(783, 3, 'estándar'), +(784, 3, 'ideal'),(785, 3, 'realizar'),(786, 3, 'dificultad'),(787, 3, 'preferidas'),(788, 1, 'touch'),(789, 1, 'revolutionary'),(790, 1, 'interface'), +(791, 1, '35inch'),(792, 1, 'color'),(793, 1, 'display'),(794, 1, '(80211b'),(795, 1, 'safari,'),(796, 1, 'youtube,'),(797, 1, 'mail,'),(798, 1, 'stocks,'), +(799, 1, 'weather,'),(800, 1, 'notes,'),(801, 1, 'store,'),(802, 1, 'maps'),(803, 1, 'five'),(804, 1, 'handson'),(805, 1, 'rich'),(806, 1, 'html'), +(807, 1, 'email'),(808, 1, 'photos'),(809, 1, 'well'),(810, 1, 'pdf,'),(811, 1, 'word,'),(812, 1, 'excel'),(813, 1, 'attachments'),(814, 1, 'maps,'), +(815, 1, 'directions,'),(816, 1, 'realtime'),(817, 1, 'traffic'),(818, 1, 'information'),(819, 1, 'notes'),(820, 1, 'read'),(821, 1, 'stock'),(822, 1, 'weather'), +(823, 1, 'reports'),(824, 1, 'music,'),(825, 1, 'movies,'),(826, 1, 'technology'),(827, 1, 'built'),(828, 1, 'gorgeous'),(829, 1, 'lets'),(830, 1, 'pinch,'), +(831, 1, 'zoom,'),(832, 1, 'scroll,'),(833, 1, 'flick'),(834, 1, 'fingers'),(835, 1, 'internet'),(836, 1, 'pocket'),(837, 1, 'safari'),(838, 1, 'browser,'), +(839, 1, 'websites'),(840, 1, 'they'),(841, 1, 'were'),(842, 1, 'seen'),(843, 1, 'zoom'),(844, 1, 'tap2'),(845, 1, 'home'),(846, 1, 'quick'),(847, 1, 'access'), +(848, 1, 'sites'),(849, 1, 'what''s'),(850, 1, 'earphones'),(851, 1, 'cable'),(852, 1, 'dock'),(853, 1, 'polishing'),(854, 1, 'cloth'),(855, 1, 'stand'), +(856, 1, 'start'),(857, 1, 'guide'),(858, 1, '32go'),(859, 1, 'jack'),(860, 1, '120g'),(861, 1, '70mm'),(862, 1, '110mm'),(863, 2, 'touch'), +(864, 2, 'interface'),(865, 2, 'révolutionnair'),(866, 2, 'couleur'),(867, 2, 'pouceswifi'),(868, 2, '(80211b'),(869, 2, 'd''épaisseursaf'),(870, 2, 'youtube,'), +(871, 2, 'music'),(872, 2, 'store,'),(873, 2, 'courrier,'),(874, 2, 'cartes,'),(875, 2, 'bourse,'),(876, 2, 'météo,'),(877, 2, 'notes'),(878, 2, 'titre'), +(879, 2, 'paragraphe'),(880, 2, 'cinq'),(881, 2, 'sous'),(882, 2, 'main'),(883, 2, 'consultez'),(884, 2, 'emails'),(885, 2, 'format'),(886, 2, 'html'), +(887, 2, 'enrichi,'),(888, 2, 'photos'),(889, 2, 'pieces'),(890, 2, 'jointes'),(891, 2, 'pdf,'),(892, 2, 'word'),(893, 2, 'excel'),(894, 2, 'obtenez'), +(895, 2, 'itinéraires'),(896, 2, 'informations'),(897, 2, 'l''état'),(898, 2, 'circulation'),(899, 2, 'temps'),(900, 2, 'réel'),(901, 2, 'rédigez'), +(902, 2, 'cours'),(903, 2, 'bourse'),(904, 2, 'bulletins'),(905, 2, 'météo'),(906, 2, 'touchez'),(907, 2, 'doigt'),(908, 2, 'entre'),(909, 2, 'autres'), +(910, 2, 'technologie'),(911, 2, 'intégrée'),(912, 2, 'superbe'),(913, 2, 'pouces'),(914, 2, 'd''effectuer'),(915, 2, 'zooms'),(916, 2, 'avant'), +(917, 2, 'arrière,'),(918, 2, 'faire'),(919, 2, 'défiler'),(920, 2, 'feuilleter'),(921, 2, 'pages'),(922, 2, 'l''aide'),(923, 2, 'seuls'),(924, 2, 'doigts'), +(925, 2, 'internet'),(926, 2, 'poche'),(927, 2, 'navigateur'),(928, 2, 'safari,'),(929, 2, 'consulter'),(930, 2, 'sites'),(931, 2, 'leur'),(932, 2, 'mise'), +(933, 2, 'page'),(934, 2, 'effectuer'),(935, 2, 'zoom'),(936, 2, 'arrière'),(937, 2, 'simple'),(938, 2, 'pression'),(939, 2, 'l''écran'),(940, 2, 'contenu'), +(941, 2, 'coffret'),(942, 2, 'écouteurs'),(943, 2, 'câble'),(944, 2, 'dock'),(945, 2, 'chiffon'),(946, 2, 'nettoyage'),(947, 2, 'support'),(948, 2, 'guide'), +(949, 2, 'démarrage'),(950, 2, 'tacticle'),(951, 2, '32go'),(952, 2, 'jack'),(953, 2, '120g'),(954, 2, '70mm'),(955, 2, '110mm'),(956, 3, 'touch'), +(957, 3, 'interfaz'),(958, 3, 'revolucionaria'),(959, 3, 'color'),(960, 3, 'pulgadas'),(961, 3, '(80211b'),(962, 3, 'espesor'),(963, 3, 'safari,'), +(964, 3, 'youtube,'),(965, 3, 'music'),(966, 3, 'store,'),(967, 3, 'correo,'),(968, 3, 'mapas,'),(969, 3, 'bolsa,'),(970, 3, 'tiempo,'),(971, 3, 'notas'), +(972, 3, 'cinco'),(973, 3, 'mano'),(974, 3, 'consulta'),(975, 3, 'correo'),(976, 3, 'formato'),(977, 3, 'html'),(978, 3, 'enriquecido,'),(979, 3, 'fotos'), +(980, 3, 'ficheros'),(981, 3, 'adjuntos'),(982, 3, 'pdf,'),(983, 3, 'word'),(984, 3, 'excel'),(985, 3, 'consigue'),(986, 3, 'itinerarios'),(987, 3, 'información'), +(988, 3, 'sobre'),(989, 3, 'estado'),(990, 3, 'carreteras'),(991, 3, 'tiempo'),(992, 3, 'real'),(993, 3, 'escribe'),(994, 3, 'bolsa'),(995, 3, 'alcanza'), +(996, 3, 'videos,'),(997, 3, 'otras'),(998, 3, 'cosas'),(999, 3, 'integrada'),(1000, 3, 'magnífica'),(1001, 3, 'permitirá'),(1002, 3, 'efectuar'),(1003, 3, 'zoom'), +(1004, 3, 'hacia'),(1005, 3, 'adelante'),(1006, 3, 'atrás,'),(1007, 3, 'pasar'),(1008, 3, 'ojear'),(1009, 3, 'páginas'),(1010, 3, 'ayuda'),(1011, 3, 'dedos'), +(1012, 3, 'internet'),(1013, 3, 'bolsillo'),(1014, 3, 'navegador'),(1015, 3, 'podrás'),(1016, 3, 'consultar'),(1017, 3, 'sitios'),(1018, 3, 'compaginación'), +(1019, 3, 'atrás'),(1020, 3, 'simple'),(1021, 3, 'presión'),(1022, 3, 'contenido'),(1023, 3, 'estuche'),(1024, 3, 'auriculares'),(1025, 3, 'dock'),(1026, 3, 'paño'), +(1027, 3, 'limpieza'),(1028, 3, 'base'),(1029, 3, 'guía'),(1030, 3, 'inicio'),(1031, 3, 'rápido'),(1032, 3, 'título'),(1033, 3, 'párrafo'),(1034, 3, '32go'), +(1035, 3, 'jack'),(1036, 3, '120g'),(1037, 3, '70mm'),(1038, 3, '110mm'),(1039, 1, 'housse'),(1040, 1, 'portefeuille'),(1041, 1, 'cuir'),(1042, 1, 'belkin'), +(1043, 1, 'pour'),(1044, 1, 'noir'),(1045, 1, 'chocolat'),(1046, 1, 'lorem'),(1047, 1, 'ipsum'),(1048, 1, 'accessories'),(1049, 2, 'housse'),(1050, 2, 'portefeuille'), +(1051, 2, 'cuir'),(1052, 2, '(ipod'),(1053, 2, 'nano)'),(1054, 2, 'chocolat'),(1055, 2, 'étui'),(1056, 2, 'tendance'),(1057, 2, 'assure'),(1058, 2, 'protection'), +(1059, 2, 'complète'),(1060, 2, 'contre'),(1061, 2, 'éraflures'),(1062, 2, 'petits'),(1063, 2, 'aléas'),(1064, 2, 'quotidienne'),(1065, 2, 'conception'), +(1066, 2, 'élégante'),(1067, 2, 'compacte'),(1068, 2, 'glisser'),(1069, 2, 'directement'),(1070, 2, 'caractéristiqu'),(1071, 2, 'doux'),(1072, 2, 'accès'), +(1073, 2, 'bouton'),(1074, 2, 'hold'),(1075, 2, 'fermeture'),(1076, 2, 'magnétique'),(1077, 2, 'connector'),(1078, 2, 'protègeécran'),(1079, 2, 'accessoires'), +(1080, 3, 'leather'),(1081, 3, 'case'),(1082, 3, '(ipod'),(1083, 3, 'nano)'),(1084, 3, 'chocolate'),(1085, 3, 'este'),(1086, 3, 'cuero'),(1087, 3, 'última'), +(1088, 3, 'moda'),(1089, 3, 'garantiza'),(1090, 3, 'completa'),(1091, 3, 'protección'),(1092, 3, 'contra'),(1093, 3, 'arañazos'),(1094, 3, 'pequeños'), +(1095, 3, 'contratiempos'),(1096, 3, 'vida'),(1097, 3, 'diaria'),(1098, 3, 'elegante'),(1099, 3, 'compacto'),(1100, 3, 'meter'),(1101, 3, 'directamente'), +(1102, 3, 'bolso'),(1103, 3, 'característica'),(1104, 3, 'suave'),(1105, 3, 'acceso'),(1106, 3, 'tecla'),(1107, 3, 'hold'),(1108, 3, 'cierre'), +(1109, 3, 'magnético'),(1110, 3, 'conector'),(1111, 3, 'salva'),(1112, 3, 'pantallas'),(1113, 3, 'accesorios'),(1114, 1, 'shure'),(1115, 1, 'se210'), +(1116, 1, 'soundisolating'),(1117, 1, 'iphone'),(1118, 1, 'evolved'),(1119, 1, 'monitor'),(1120, 1, 'roadtested'),(1121, 1, 'musicians'),(1122, 1, 'perfected'), +(1123, 1, 'engineers,'),(1124, 1, 'lightweight'),(1125, 1, 'stylish'),(1126, 1, 'delivers'),(1127, 1, 'fullrange'),(1128, 1, 'audio'),(1129, 1, 'free'), +(1130, 1, 'outside'),(1131, 1, 'noise'),(1132, 1, 'using'),(1133, 1, 'hidefinition'),(1134, 1, 'microspeakers'),(1135, 1, 'deliver'),(1136, 1, 'audio,'), +(1137, 1, 'ergonomic'),(1138, 1, 'ideal'),(1139, 1, 'premium'),(1140, 1, 'onthego'),(1141, 1, 'listening'),(1142, 1, 'offer'),(1143, 1, 'accurate'), +(1144, 1, 'reproduction'),(1145, 1, 'both'),(1146, 1, 'sourcesfor'),(1147, 1, 'ultimate'),(1148, 1, 'precision'),(1149, 1, 'highs'), +(1150, 1, 'addition,'),(1151, 1, 'flexible'),(1152, 1, 'allows'),(1153, 1, 'choose'),(1154, 1, 'comfortable'),(1155, 1, 'variety'), +(1156, 1, 'wearing'),(1157, 1, 'positions'),(1158, 1, 'microspeaker'),(1159, 1, 'single'),(1160, 1, 'balanced'),(1161, 1, 'armature'), +(1162, 1, 'driver'),(1163, 1, 'detachable,'),(1164, 1, 'modular'),(1165, 1, 'make'),(1166, 1, 'longer'),(1167, 1, 'shorter'),(1168, 1, 'depending'), +(1169, 1, 'activity'),(1170, 1, 'connector'),(1171, 1, 'compatible'),(1172, 1, 'earphone'),(1173, 1, 'specifications'),(1174, 1, 'speaker'), +(1175, 1, 'type'),(1176, 1, 'frequency'),(1177, 1, 'range'),(1178, 1, '25hz185khz'),(1179, 1, 'impedance'),(1180, 1, '(1khz)'),(1181, 1, 'ohms'), +(1182, 1, 'sensitivity'),(1183, 1, '(1mw)'),(1184, 1, 'length'),(1185, 1, '(with'),(1186, 1, 'extension)'),(1187, 1, '(540'),(1188, 1, '1371'), +(1189, 1, 'extension'),(1190, 1, '(360'),(1191, 1, 'three'),(1192, 1, 'pairs'),(1193, 1, 'foam'),(1194, 1, 'earpiece'),(1195, 1, 'sleeves'), +(1196, 1, '(small,'),(1197, 1, 'medium,'),(1198, 1, 'large)'),(1199, 1, 'soft'),(1200, 1, 'flex'),(1201, 1, 'pair'),(1202, 1, 'tripleflange'), +(1203, 1, 'carrying'),(1204, 1, 'case'),(1205, 1, 'warranty'),(1206, 1, 'twoyear'),(1207, 1, 'limited'),(1208, 1, '(for'),(1209, 1, 'details,'), +(1210, 1, 'please'),(1211, 1, 'visit'),(1212, 1, 'wwwshurecom'),(1213, 1, 'personalaudio'),(1214, 1, 'customersupport'),(1215, 1, 'productreturnsa'), +(1216, 1, 'indexhtm)'),(1217, 1, 'se210aefs'),(1218, 1, 'note'),(1219, 1, 'products'),(1220, 1, 'sold'),(1221, 1, 'through'),(1222, 1, 'this'), +(1223, 1, 'website'),(1224, 1, 'bear'),(1225, 1, 'brand'),(1226, 1, 'name'),(1227, 1, 'serviced'),(1228, 1, 'supported'),(1229, 1, 'exclusively'), +(1230, 1, 'their'),(1231, 1, 'manufacturers'),(1232, 1, 'accordance'),(1233, 1, 'terms'),(1234, 1, 'conditions'),(1235, 1, 'packaged'), +(1236, 1, 'apple''s'),(1237, 1, 'does'),(1238, 1, 'apply'),(1239, 1, 'applebranded,'),(1240, 1, 'even'),(1241, 1, 'contact'),(1242, 1, 'manufacturer'), +(1243, 1, 'directly'),(1244, 1, 'technical'),(1245, 1, 'support'),(1246, 1, 'customer'),(1247, 1, 'service'),(1248, 1, 'incorporated'), +(1249, 2, 'isolation'),(1250, 2, 'sonore'),(1251, 2, 'shure'),(1252, 2, 'se210'),(1253, 2, 'ergonomiques'),(1254, 2, 'légers'),(1255, 2, 'offrent'), +(1256, 2, 'reproduction'),(1257, 2, 'audio'),(1258, 2, 'fidèle'),(1259, 2, 'provenance'),(1260, 2, 'sources'),(1261, 2, 'salon'),(1262, 2, 'basés'), +(1263, 2, 'moniteurs'),(1264, 2, 'personnels'),(1265, 2, 'testée'),(1266, 2, 'route'),(1267, 2, 'musiciens'),(1268, 2, 'professionnels'),(1269, 2, 'perfectionnée'), +(1270, 2, 'ingénieurs'),(1271, 2, 'shure,'),(1272, 2, 'se210,'),(1273, 2, 'élégants,'),(1274, 2, 'fournissent'),(1275, 2, 'sortie'),(1276, 2, 'gamme'), +(1277, 2, 'étendue'),(1278, 2, 'exempte'),(1279, 2, 'bruit'),(1280, 2, 'externe'),(1281, 2, 'embouts'),(1282, 2, 'fournis'),(1283, 2, 'bloquent'), +(1284, 2, 'ambiant'),(1285, 2, 'combinés'),(1286, 2, 'ergonomique'),(1287, 2, 'séduisant'),(1288, 2, 'modulaire,'),(1289, 2, 'minimisent'),(1290, 2, 'intrusions'), +(1291, 2, 'extérieur,'),(1292, 2, 'permettant'),(1293, 2, 'concentrer'),(1294, 2, 'conçus'),(1295, 2, 'amoureux'),(1296, 2, 'souhaitent'),(1297, 2, 'évoluer'), +(1298, 2, 'appareil'),(1299, 2, 'portable,'),(1300, 2, 'permettent'),(1301, 2, 'd''emmener'),(1302, 2, 'performance'),(1303, 2, 'microtransducte'),(1304, 2, 'haute'), +(1305, 2, 'définition'),(1306, 2, 'développés'),(1307, 2, 'écoute'),(1308, 2, 'qualité'),(1309, 2, 'supérieure'),(1310, 2, 'déplacement,'),(1311, 2, 'utilisent'), +(1312, 2, 'transducteur'),(1313, 2, 'armature'),(1314, 2, 'équilibrée'),(1315, 2, 'bénéficier'),(1316, 2, 'confort'),(1317, 2, 'd''écoute'),(1318, 2, 'époustouflant'), +(1319, 2, 'restitue'),(1320, 2, 'tous'),(1321, 2, 'détails'),(1322, 2, 'spectacle'),(1323, 2, 'live'),(1324, 2, 'universel'),(1325, 2, 'deluxe'), +(1326, 2, 'comprend'),(1327, 2, 'éléments'),(1328, 2, 'suivants'),(1329, 2, 'inclus'),(1330, 2, 'double'),(1331, 2, 'rôle'),(1332, 2, 'bloquer'), +(1333, 2, 'bruits'),(1334, 2, 'ambiants'),(1335, 2, 'garantir'),(1336, 2, 'maintien'),(1337, 2, 'personnalisés'),(1338, 2, 'oreille'),(1339, 2, 'différente,'), +(1340, 2, 'trois'),(1341, 2, 'tailles'),(1342, 2, 'd''embouts'),(1343, 2, 'mousse'),(1344, 2, 'flexibles'),(1345, 2, 'style'),(1346, 2, 'd''embout'), +(1347, 2, 'conviennent'),(1348, 2, 'mieux'),(1349, 2, 'bonne'),(1350, 2, 'étanchéité'),(1351, 2, 'facteur'),(1352, 2, 'optimiser'),(1353, 2, 'l''isolation'), +(1354, 2, 'réponse'),(1355, 2, 'basses,'),(1356, 2, 'ainsi'),(1357, 2, 'accroître'),(1358, 2, 'prolongée'),(1359, 2, 'modulaire'),(1360, 2, 'basant'), +(1361, 2, 'commentaires'),(1362, 2, 'nombreux'),(1363, 2, 'utilisateurs,'),(1364, 2, 'développé'),(1365, 2, 'solution'),(1366, 2, 'détachable'), +(1367, 2, 'permettre'),(1368, 2, 'degré'),(1369, 2, 'personnalisatio'),(1370, 2, 'précédent'),(1371, 2, 'mètre'),(1372, 2, 'fourni'),(1373, 2, 'd''adapter'), +(1374, 2, 'fonction'),(1375, 2, 'l''activité'),(1376, 2, 'l''application'),(1377, 2, 'transport'),(1378, 2, 'outre'),(1379, 2, 'compact'),(1380, 2, 'ranger'), +(1381, 2, 'manière'),(1382, 2, 'pratique'),(1383, 2, 'encombres'),(1384, 2, 'garantie'),(1385, 2, 'limitée'),(1386, 2, 'deux'),(1387, 2, 'achetée'), +(1388, 2, 'couverte'),(1389, 2, 'maind''œuvre'),(1390, 2, 'anscaractérist'),(1391, 2, 'techniques'),(1392, 2, 'type'),(1393, 2, 'sensibilité'), +(1394, 2, 'acoustique'),(1395, 2, 'impédance'),(1396, 2, 'khz)'),(1397, 2, 'fréquences'),(1398, 2, 'longueur'),(1399, 2, 'rallonge'),(1400, 2, '(embouts'), +(1401, 2, 'sonore,'),(1402, 2, 'transport)'),(1403, 2, 'incorporated'),(1404, 2, 'casque'),(1405, 2, 'marche'),(1406, 3, 'aislantes'),(1407, 3, 'sonido'), +(1408, 3, 'shure'),(1409, 3, 'se210'),(1410, 3, 'aislamiento'),(1411, 3, 'ergonómicos'),(1412, 3, 'ligeros'),(1413, 3, 'ofrecen'),(1414, 3, 'reproducción'), +(1415, 3, 'fiel'),(1416, 3, 'proveniente'),(1417, 3, 'fuentes'),(1418, 3, 'audio'),(1419, 3, 'estéreo'),(1420, 3, 'móviles'),(1421, 3, 'salón'),(1422, 3, 'se210,'), +(1423, 3, 'elegantes,'),(1424, 3, 'están'),(1425, 3, 'basados'),(1426, 3, 'monitores'),(1427, 3, 'personales'),(1428, 3, 'músicos'),(1429, 3, 'profesionales'), +(1430, 3, 'utilizan'),(1431, 3, 'carretera'),(1432, 3, 'ingenieros'),(1433, 3, 'perfeccionado'),(1434, 3, 'también'),(1435, 3, 'provistos'),(1436, 3, 'salida'), +(1437, 3, 'gama'),(1438, 3, 'extendida'),(1439, 3, 'exenta'),(1440, 3, 'ruido'),(1441, 3, 'sonoro'),(1442, 3, 'almohadillas'),(1443, 3, 'provistas'), +(1444, 3, 'bloquean'),(1445, 3, 'ambiente'),(1446, 3, 'combinadas'),(1447, 3, 'ergonómico'),(1448, 3, 'atractivo'),(1449, 3, 'modular,'),(1450, 3, 'minimizan'), +(1451, 3, 'intrusiones'),(1452, 3, 'permiten'),(1453, 3, 'concentrarte'),(1454, 3, 'creados'),(1455, 3, 'apasionados'),(1456, 3, 'quieren'),(1457, 3, 'aparato'), +(1458, 3, 'evolucione,'),(1459, 3, 'permitirán'),(1460, 3, 'llevar'),(1461, 3, 'allí'),(1462, 3, 'donde'),(1463, 3, 'vayas'),(1464, 3, 'microtransducto'), +(1465, 3, 'alta'),(1466, 3, 'definición'),(1467, 3, 'desarrollados'),(1468, 3, 'poder'),(1469, 3, 'audición'),(1470, 3, 'calidad'),(1471, 3, 'durante'), +(1472, 3, 'desplazamientos'),(1473, 3, 'único'),(1474, 3, 'transductor'),(1475, 3, 'armazón'),(1476, 3, 'equilibrado'),(1477, 3, 'confort'), +(1478, 3, 'restituye'),(1479, 3, 'espectáculo'),(1480, 3, 'directo'),(1481, 3, 'universal'),(1482, 3, 'deluxe'),(1483, 3, 'incluye'),(1484, 3, 'siguientes'), +(1485, 3, 'elementos'),(1486, 3, 'tienen'),(1487, 3, 'doble'),(1488, 3, 'función'),(1489, 3, 'bloquear'),(1490, 3, 'garantizar'),(1491, 3, 'estabilidad'), +(1492, 3, 'personalizados'),(1493, 3, 'oreja'),(1494, 3, 'tres'),(1495, 3, 'tallas'),(1496, 3, 'espuma'),(1497, 3, 'flexibles'),(1498, 3, 'talla'), +(1499, 3, 'estilo'),(1500, 3, 'almohadilla'),(1501, 3, 'mejor'),(1502, 3, 'convenga'),(1503, 3, 'buen'),(1504, 3, 'factor'),(1505, 3, 'clave'),(1506, 3, 'tanto'), +(1507, 3, 'optimizar'),(1508, 3, 'respuesta'),(1509, 3, 'bajos'),(1510, 3, 'aumentar'),(1511, 3, 'prolongada'),(1512, 3, 'modular'),(1513, 3, 'basándose'), +(1514, 3, 'comentarios'),(1515, 3, 'numerosos'),(1516, 3, 'usuarios,'),(1517, 3, 'solución'),(1518, 3, 'separable'),(1519, 3, 'permitir'),(1520, 3, 'grado'), +(1521, 3, 'personalizació'),(1522, 3, 'precedentes'),(1523, 3, 'metro'),(1524, 3, 'adaptar'),(1525, 3, 'actividad'),(1526, 3, 'momento'),(1527, 3, 'transporte'), +(1528, 3, 'además'),(1529, 3, 'guardar'),(1530, 3, 'manera'),(1531, 3, 'práctica'),(1532, 3, 'garantía'),(1533, 3, 'límite'),(1534, 3, 'años'),(1535, 3, 'tiene'), +(1536, 3, 'piezas'),(1537, 3, 'obra'),(1538, 3, 'técnicas'),(1539, 3, 'tipo'),(1540, 3, 'sensibilidad'),(1541, 3, 'acústica'),(1542, 3, 'impedancia'), +(1543, 3, 'khz)'),(1544, 3, 'frecuencias'),(1545, 3, 'longitud'),(1546, 3, 'alargador'),(1547, 3, 'caja'),(1548, 3, 'altavoces'),(1549, 3, '(almohadillas'), +(1550, 3, 'sonoro,'),(1551, 3, 'transporte)'),(1552, 3, 'incorporated'); + +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) VALUES +(2, 1, 1, 1, 1, 1), +(2, 2, 1, 1, 1, 1), +(2, 3, 1, 1, 1, 1), +(2, 4, 0, 0, 0, 0), +(2, 5, 1, 1, 1, 1), +(2, 6, 0, 0, 0, 0), +(2, 7, 0, 0, 0, 0), +(2, 8, 0, 0, 0, 0), +(2, 9, 0, 0, 0, 0), +(2, 10, 0, 0, 0, 0), +(2, 11, 0, 0, 0, 0), +(2, 12, 1, 1, 1, 1), +(2, 13, 1, 1, 1, 1), +(2, 14, 0, 0, 0, 0), +(2, 15, 0, 0, 0, 0), +(2, 16, 0, 0, 0, 0), +(2, 17, 1, 1, 1, 1), +(2, 18, 0, 0, 0, 0), +(2, 19, 0, 0, 0, 0), +(2, 20, 1, 1, 1, 1), +(2, 21, 1, 1, 1, 1), +(2, 22, 0, 0, 0, 0), +(2, 23, 0, 0, 0, 0), +(2, 24, 0, 0, 0, 0), +(2, 26, 0, 0, 0, 0), +(2, 27, 0, 0, 0, 0), +(2, 28, 0, 0, 0, 0), +(2, 29, 0, 0, 0, 0), +(2, 30, 0, 0, 0, 0), +(2, 31, 0, 0, 0, 0), +(2, 32, 0, 0, 0, 0), +(2, 33, 0, 0, 0, 0), +(2, 34, 1, 1, 1, 1), +(2, 35, 0, 0, 0, 0), +(2, 36, 0, 0, 0, 0), +(2, 37, 0, 0, 0, 0), +(2, 38, 0, 0, 0, 0), +(2, 39, 0, 0, 0, 0), +(2, 40, 0, 0, 0, 0), +(2, 41, 0, 0, 0, 0), +(2, 42, 1, 1, 1, 1), +(2, 43, 0, 0, 0, 0), +(2, 44, 0, 0, 0, 0), +(2, 46, 0, 0, 0, 0), +(2, 47, 1, 1, 1, 1), +(2, 48, 0, 0, 0, 0), +(2, 49, 1, 1, 1, 1), +(2, 51, 0, 0, 0, 0), +(2, 52, 0, 0, 0, 0), +(2, 53, 0, 0, 0, 0), +(2, 54, 0, 0, 0, 0), +(2, 55, 1, 1, 1, 1), +(2, 56, 0, 0, 0, 0), +(2, 57, 0, 0, 0, 0), +(2, 58, 0, 0, 0, 0), +(2, 59, 1, 1, 1, 1), +(2, 60, 1, 1, 1, 1), +(2, 61, 0, 0, 0, 0), +(2, 62, 0, 0, 0, 0), +(2, 63, 0, 0, 0, 0), +(2, 64, 0, 0, 0, 0), +(2, 65, 0, 0, 0, 0), +(2, 66, 0, 0, 0, 0), +(2, 67, 0, 0, 0, 0), +(2, 68, 0, 0, 0, 0), +(2, 69, 0, 0, 0, 0), +(2, 70, 0, 0, 0, 0), +(2, 71, 0, 0, 0, 0), +(2, 72, 0, 0, 0, 0), +(2, 73, 1, 1, 1, 1), +(2, 80, 0, 0, 0, 0), +(2, 81, 0, 0, 0, 0), +(2, 82, 0, 0, 0, 0), +(2, 83, 0, 0, 0, 0), +(2, 84, 0, 0, 0, 0), +(2, 85, 0, 0, 0, 0), +(2, 86, 0, 0, 0, 0), +(2, 87, 0, 0, 0, 0), +(2, 88, 1, 1, 1, 1), +(3, 1, 1, 1, 1, 1), +(3, 2, 0, 0, 0, 0), +(3, 3, 0, 0, 0, 0), +(3, 4, 0, 0, 0, 0), +(3, 5, 0, 0, 0, 0), +(3, 6, 0, 0, 0, 0), +(3, 7, 0, 0, 0, 0), +(3, 8, 0, 0, 0, 0), +(3, 9, 1, 0, 0, 0), +(3, 10, 0, 0, 0, 0), +(3, 11, 0, 0, 0, 0), +(3, 12, 0, 0, 0, 0), +(3, 13, 0, 0, 0, 0), +(3, 14, 0, 0, 0, 0), +(3, 15, 0, 0, 0, 0), +(3, 16, 0, 0, 0, 0), +(3, 17, 0, 0, 0, 0), +(3, 18, 0, 0, 0, 0), +(3, 19, 0, 0, 0, 0), +(3, 20, 0, 0, 0, 0), +(3, 21, 0, 0, 0, 0), +(3, 22, 0, 0, 0, 0), +(3, 23, 0, 0, 0, 0), +(3, 24, 0, 0, 0, 0), +(3, 26, 0, 0, 0, 0), +(3, 27, 0, 0, 0, 0), +(3, 28, 0, 0, 0, 0), +(3, 29, 0, 0, 0, 0), +(3, 30, 0, 0, 0, 0), +(3, 31, 0, 0, 0, 0), +(3, 32, 1, 1, 1, 1), +(3, 33, 1, 1, 1, 1), +(3, 34, 0, 0, 0, 0), +(3, 35, 0, 0, 0, 0), +(3, 36, 0, 0, 0, 0), +(3, 37, 0, 0, 0, 0), +(3, 38, 0, 0, 0, 0), +(3, 39, 0, 0, 0, 0), +(3, 40, 0, 0, 0, 0), +(3, 41, 0, 0, 0, 0), +(3, 42, 0, 0, 0, 0), +(3, 43, 1, 0, 0, 0), +(3, 44, 0, 0, 0, 0), +(3, 46, 0, 0, 0, 0), +(3, 47, 0, 0, 0, 0), +(3, 48, 0, 0, 0, 0), +(3, 49, 0, 0, 0, 0), +(3, 51, 0, 0, 0, 0), +(3, 52, 0, 0, 0, 0), +(3, 53, 0, 0, 0, 0), +(3, 54, 0, 0, 0, 0), +(3, 55, 0, 0, 0, 0), +(3, 56, 0, 0, 0, 0), +(3, 57, 1, 1, 1, 1), +(3, 58, 0, 0, 0, 0), +(3, 59, 0, 0, 0, 0), +(3, 60, 0, 0, 0, 0), +(3, 61, 0, 0, 0, 0), +(3, 62, 0, 0, 0, 0), +(3, 63, 0, 0, 0, 0), +(3, 64, 0, 0, 0, 0), +(3, 65, 0, 0, 0, 0), +(3, 66, 0, 0, 0, 0), +(3, 67, 0, 0, 0, 0), +(3, 68, 0, 0, 0, 0), +(3, 69, 0, 0, 0, 0), +(3, 70, 0, 0, 0, 0), +(3, 71, 0, 0, 0, 0), +(3, 72, 0, 0, 0, 0), +(3, 73, 0, 0, 0, 0), +(3, 80, 0, 0, 0, 0), +(3, 81, 0, 0, 0, 0), +(3, 82, 0, 0, 0, 0), +(3, 83, 0, 0, 0, 0), +(3, 84, 0, 0, 0, 0), +(3, 85, 0, 0, 0, 0), +(3, 86, 0, 0, 0, 0), +(3, 87, 0, 0, 0, 0), +(3, 88, 1, 1, 1, 1), +(4, 1, 1, 1, 1, 1), +(4, 2, 1, 1, 1, 1), +(4, 3, 1, 1, 1, 1), +(4, 4, 0, 0, 0, 0), +(4, 5, 0, 0, 0, 0), +(4, 6, 1, 1, 1, 1), +(4, 7, 0, 0, 0, 0), +(4, 8, 0, 0, 0, 0), +(4, 9, 0, 0, 0, 0), +(4, 10, 1, 0, 0, 0), +(4, 11, 0, 0, 0, 0), +(4, 12, 1, 1, 1, 1), +(4, 13, 0, 0, 0, 0), +(4, 14, 0, 0, 0, 0), +(4, 15, 0, 0, 0, 0), +(4, 16, 0, 0, 0, 0), +(4, 17, 0, 0, 0, 0), +(4, 18, 0, 0, 0, 0), +(4, 19, 0, 0, 0, 0), +(4, 20, 0, 0, 0, 0), +(4, 21, 0, 0, 0, 0), +(4, 22, 0, 0, 0, 0), +(4, 23, 0, 0, 0, 0), +(4, 24, 0, 0, 0, 0), +(4, 26, 0, 0, 0, 0), +(4, 27, 0, 0, 0, 0), +(4, 28, 0, 0, 0, 0), +(4, 29, 0, 0, 0, 0), +(4, 30, 0, 0, 0, 0), +(4, 31, 0, 0, 0, 0), +(4, 32, 0, 0, 0, 0), +(4, 33, 0, 0, 0, 0), +(4, 34, 0, 0, 0, 0), +(4, 35, 0, 0, 0, 0), +(4, 36, 0, 0, 0, 0), +(4, 37, 0, 0, 0, 0), +(4, 38, 0, 0, 0, 0), +(4, 39, 0, 0, 0, 0), +(4, 40, 0, 0, 0, 0), +(4, 41, 0, 0, 0, 0), +(4, 42, 1, 1, 1, 1), +(4, 43, 1, 0, 0, 0), +(4, 44, 0, 0, 0, 0), +(4, 46, 0, 0, 0, 0), +(4, 47, 0, 0, 0, 0), +(4, 48, 0, 0, 0, 0), +(4, 49, 1, 1, 1, 1), +(4, 51, 0, 0, 0, 0), +(4, 52, 0, 0, 0, 0), +(4, 53, 0, 0, 0, 0), +(4, 54, 1, 1, 1, 1), +(4, 55, 0, 0, 0, 0), +(4, 56, 0, 0, 0, 0), +(4, 57, 0, 0, 0, 0), +(4, 58, 0, 0, 0, 0), +(4, 59, 1, 1, 1, 1), +(4, 60, 0, 0, 0, 0), +(4, 61, 0, 0, 0, 0), +(4, 62, 1, 1, 1, 1), +(4, 63, 1, 1, 1, 1), +(4, 64, 0, 0, 0, 0), +(4, 65, 1, 1, 1, 1), +(4, 66, 0, 0, 0, 0), +(4, 67, 0, 0, 0, 0), +(4, 68, 0, 0, 0, 0), +(4, 69, 0, 0, 0, 0), +(4, 70, 0, 0, 0, 0), +(4, 71, 0, 0, 0, 0), +(4, 72, 0, 0, 0, 0), +(4, 73, 0, 0, 0, 0), +(4, 80, 0, 0, 0, 0), +(4, 81, 0, 0, 0, 0), +(4, 82, 1, 1, 1, 1), +(4, 83, 0, 0, 0, 0), +(4, 84, 0, 0, 0, 0), +(4, 85, 0, 0, 0, 0), +(4, 86, 0, 0, 0, 0), +(4, 87, 0, 0, 0, 0), +(4, 88, 1, 1, 1, 1); + +INSERT INTO `PREFIX_profile` (`id_profile`) VALUES (2),(3),(4); +INSERT INTO `PREFIX_profile_lang` (`id_lang`, `id_profile`, `name`) VALUES +(1, 2, 'Logistician'),(2, 2, 'Logisticien'),(3, 2, 'Logistician'),(4, 2, 'Logistiker'),(5, 2, 'Logista'), +(1, 3, 'Translator'),(2, 3, 'Traducteur'),(3, 3, 'Translator'),(4, 3, 'Übersetzer'),(5, 3, 'Traduttore'), +(1, 4, 'Salesman'),(2, 4, 'Commercial'),(3, 4, 'Salesman'),(4, 4, 'Verkäufer'),(5, 4, 'Venditore'); + +INSERT INTO `PREFIX_stock_mvt` (`id_stock_mvt`, `id_product`, `id_product_attribute`, `id_order`, `id_stock_mvt_reason`, `id_employee`, `quantity`, `date_add`, `date_upd`) VALUES +(1, 6, 0, 0, 2, 1, 250, NOW(), NOW()),(2, 8, 0, 0, 2, 1, 1, NOW(), NOW()),(3, 9, 0, 0, 2, 1, 1, NOW(), NOW()),(4, 2, 7, 0, 2, 1, 10, NOW(), NOW()),(5, 2, 8, 0, 2, 1, 20, NOW(), NOW()),(6, 2, 9, 0, 2, 1, 30, NOW(), NOW()),(7, 2, 10, 0, 2, 1, 40, NOW(), NOW()),(8, 5, 12, 0, 2, 1, 100, NOW(), NOW()),(9, 5, 13, 0, 2, 1, 99, NOW(), NOW()),(10, 5, 14, 0, 2, 1, 50, NOW(), NOW()),(11, 5, 15, 0, 2, 1, 25, NOW(), NOW()),(12, 7, 19, 0, 2, 1, 50, NOW(), NOW()),(13, 7, 22, 0, 2, 1, 60, NOW(), NOW()),(14, 7, 23, 0, 2, 1, 70, NOW(), NOW()),(15, 1, 25, 0, 2, 1, 50, NOW(), NOW()),(16, 1, 26, 0, 2, 1, 50, NOW(), NOW()),(17, 1, 27, 0, 2, 1, 50, NOW(), NOW()),(18, 1, 28, 0, 2, 1, 50, NOW(), NOW()),(19, 1, 29, 0, 2, 1, 50, NOW(), NOW()),(20, 1, 30, 0, 2, 1, 50, NOW(), NOW()),(21, 1, 31, 0, 2, 1, 50, NOW(), NOW()),(22, 1, 32, 0, 2, 1, 50, NOW(), NOW()),(23, 1, 33, 0, 2, 1, 50, NOW(), NOW()),(24, 1, 34, 0, 2, 1, 50, NOW(), NOW()),(25, 1, 35, 0, 2, 1, 50, NOW(), NOW()),(26, 1, 36, 0, 2, 1, 50, NOW(), NOW()),(27, 1, 39, 0, 2, 1, 50, NOW(), NOW()),(28, 1, 40, 0, 2, 1, 50, NOW(), NOW()),(29, 1, 41, 0, 2, 1, 50, NOW(), NOW()),(30, 1, 42, 0, 2, 1, 50, NOW(), NOW()); + +INSERT INTO `PREFIX_store` (`id_store`, `id_country`, `id_state`, `name`, `address1`, `address2`, `city`, `postcode`, `latitude`, `longitude`, `hours`, `phone`, `fax`, `email`, `note`, `active`, `date_add`, `date_upd`) VALUES +(1, 21, 9, 'Dade County', '3030 SW 8th St Miami', '', 'Miami', ' 33135', 25.765005, -80.243797, 'a:7:{i:0;s:13:"09:00 - 19:00";i:1;s:13:"09:00 - 19:00";i:2;s:13:"09:00 - 19:00";i:3;s:13:"09:00 - 19:00";i:4;s:13:"09:00 - 19:00";i:5;s:13:"10:00 - 16:00";i:6;s:13:"10:00 - 16:00";}', '', '', '', '', 1, '2010-11-09 10:53:13', '2010-11-09 10:53:13'), +(2, 21, 9, 'E Fort Lauderdale', '1000 Northeast 4th Ave Fort Lauderdale', '', 'miami', ' 33304', 26.137936, -80.139435, 'a:7:{i:0;s:13:"09:00 - 19:00";i:1;s:13:"09:00 - 19:00";i:2;s:13:"09:00 - 19:00";i:3;s:13:"09:00 - 19:00";i:4;s:13:"09:00 - 19:00";i:5;s:13:"10:00 - 16:00";i:6;s:13:"10:00 - 16:00";}', '', '', '', '', 1, '2010-11-09 10:56:26', '2010-11-09 10:56:26'), +(3, 21, 9, 'Pembroke Pines', '11001 Pines Blvd Pembroke Pines', '', 'miami', '33026', 26.009987, -80.294472, 'a:7:{i:0;s:13:"09:00 - 19:00";i:1;s:13:"09:00 - 19:00";i:2;s:13:"09:00 - 19:00";i:3;s:13:"09:00 - 19:00";i:4;s:13:"09:00 - 19:00";i:5;s:13:"10:00 - 16:00";i:6;s:13:"10:00 - 16:00";}', '', '', '', '', 1, '2010-11-09 10:58:42', '2010-11-09 11:01:11'), +(4, 21, 9, 'Coconut Grove', '2999 SW 32nd Avenue', '', ' Miami', ' 33133', 25.736296, -80.244797, 'a:7:{i:0;s:13:"09:00 - 19:00";i:1;s:13:"09:00 - 19:00";i:2;s:13:"09:00 - 19:00";i:3;s:13:"09:00 - 19:00";i:4;s:13:"09:00 - 19:00";i:5;s:13:"10:00 - 16:00";i:6;s:13:"10:00 - 16:00";}', '', '', '', '', 1, '2010-11-09 11:00:38', '2010-11-09 11:04:52'), +(5, 21, 9, 'N Miami/Biscayne', '12055 Biscayne Blvd', '', 'Miami', '33181', 25.886740, -80.163292, 'a:7:{i:0;s:13:"09:00 - 19:00";i:1;s:13:"09:00 - 19:00";i:2;s:13:"09:00 - 19:00";i:3;s:13:"09:00 - 19:00";i:4;s:13:"09:00 - 19:00";i:5;s:13:"10:00 - 16:00";i:6;s:13:"10:00 - 16:00";}', '', '', '', '', 1, '2010-11-09 11:11:28', '2010-11-09 11:11:28'); + diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql new file mode 100644 index 000000000..62709cac4 --- /dev/null +++ b/install-dev/sql/db_settings_lite.sql @@ -0,0 +1,1028 @@ +SET NAMES 'utf8'; + +INSERT INTO `PREFIX_hook` (`id_hook`, `name`, `title`, `description`, `position`, `live_edit`) VALUES +(1, 'payment', 'Payment', NULL, 1, 1), +(2, 'newOrder', 'New orders', NULL, 0, 0), +(3, 'paymentConfirm', 'Payment confirmation', NULL, 0, 0), +(4, 'paymentReturn', 'Payment return', NULL, 0, 0), +(5, 'updateQuantity', 'Quantity update', 'Quantity is updated only when the customer effectively place his order.', 0, 0), +(6, 'rightColumn', 'Right column blocks', NULL, 1, 1), +(7, 'leftColumn', 'Left column blocks', NULL, 1, 1), +(8, 'home', 'Homepage content', NULL, 1, 1), +(9, 'header', 'Header of pages', 'A hook which allow you to do things in the header of each pages', 1, 0), +(10, 'cart', 'Cart creation and update', NULL, 0, 0), +(11, 'authentication', 'Successful customer authentication', NULL, 0, 0), +(12, 'addproduct', 'Product creation', NULL, 0, 0), +(13, 'updateproduct', 'Product Update', NULL, 0, 0), +(14, 'top', 'Top of pages', 'A hook which allow you to do things a the top of each pages.', 1, 0), +(15, 'extraRight', 'Extra actions on the product page (right column).', NULL, 0, 0), +(16, 'deleteproduct', 'Product deletion', 'This hook is called when a product is deleted', 0, 0), +(17, 'productfooter', 'Product footer', 'Add new blocks under the product description', 1, 1), +(18, 'invoice', 'Invoice', 'Add blocks to invoice (order)', 1, 0), +(19, 'updateOrderStatus', 'Order''s status update event', 'Launch modules when the order''s status of an order change.', 0, 0), +(20, 'adminOrder', 'Display in Back-Office, tab AdminOrder', 'Launch modules when the tab AdminOrder is displayed on back-office.', 0, 0), +(21, 'footer', 'Footer', 'Add block in footer', 1, 0), +(22, 'PDFInvoice', 'PDF Invoice', 'Allow the display of extra informations into the PDF invoice', 0, 0), +(23, 'adminCustomers', 'Display in Back-Office, tab AdminCustomers', 'Launch modules when the tab AdminCustomers is displayed on back-office.', 0, 0), +(24, 'orderConfirmation', 'Order confirmation page', 'Called on order confirmation page', 0, 0), +(25, 'createAccount', 'Successful customer create account', 'Called when new customer create account successfuled', 0, 0), +(26, 'customerAccount', 'Customer account page display in front office', 'Display on page account of the customer', 1, 0), +(27, 'orderSlip', 'Called when a order slip is created', 'Called when a quantity of one product change in an order.', 0, 0), +(28, 'productTab', 'Tabs on product page', 'Called on order product page tabs', 0, 0), +(29, 'productTabContent', 'Content of tabs on product page', 'Called on order product page tabs', 0, 0), +(30, 'shoppingCart', 'Shopping cart footer', 'Display some specific informations on the shopping cart page', 0, 0), +(31, 'createAccountForm', 'Customer account creation form', 'Display some information on the form to create a customer account', 1, 0), +(32, 'AdminStatsModules','Stats - Modules', NULL, 1, 0), +(33, 'GraphEngine','Graph Engines', NULL, 0, 0), +(34, 'orderReturn','Product returned', NULL, 0, 0), +(35, 'productActions', 'Product actions', 'Put new action buttons on product page', 1, 0), +(36, 'backOfficeHome', 'Administration panel homepage', NULL, 1, 0), +(37, 'GridEngine','Grid Engines', NULL, 0, 0), +(38, 'watermark','Watermark', NULL, 0, 0), +(39, 'cancelProduct', 'Product cancelled', 'This hook is called when you cancel a product in an order', 0, 0), +(40, 'extraLeft', 'Extra actions on the product page (left column).', NULL, 0, 0), +(41, 'productOutOfStock', 'Product out of stock', 'Make action while product is out of stock', 1, 0), +(42, 'updateProductAttribute', 'Product attribute update', NULL, 0, 0), +(43, 'extraCarrier', 'Extra carrier (module mode)', NULL, 0, 0), +(44, 'shoppingCartExtra', 'Shopping cart extra button', 'Display some specific informations', 1, 0), +(45, 'search', 'Search', NULL, 0, 0), +(46, 'backBeforePayment', 'Redirect in order process', 'Redirect user to the module instead of displaying payment modules', 0, 0), +(47, 'updateCarrier', 'Carrier Update', 'This hook is called when a carrier is updated', 0, 0), +(48, 'postUpdateOrderStatus', 'Post update of order status', NULL, 0, 0), +(49, 'createAccountTop', 'Block above the form for create an account', NULL, 1, 0), +(50, 'backOfficeHeader', 'Administration panel header', NULL , 0, 0), +(51, 'backOfficeTop', 'Administration panel hover the tabs', NULL , 1, 0), +(52, 'backOfficeFooter', 'Administration panel footer', NULL , 1, 0), +(53, 'deleteProductAttribute', 'Product Attribute Deletion', NULL, 0, 0), +(54, 'processCarrier', 'Carrier Process', NULL, 0, 0), +(55, 'orderDetail', 'Order Detail', 'To set the follow-up in smarty when order detail is called', 0, 0), +(56, 'beforeCarrier', 'Before carrier list', 'This hook is display before the carrier list on Front office', 1, 0), +(57, 'orderDetailDisplayed', 'Order detail displayed', 'Displayed on order detail on front office', 1, 0), +(58, 'paymentCCAdded', 'Payment CC added', 'Payment CC added', 0, 0), +(59, 'extraProductComparison', 'Extra Product Comparison', 'Extra Product Comparison', 0, 0), +(60, 'categoryAddition', 'Category creation', '', 0, 0), +(61, 'categoryUpdate', 'Category modification', '', 0, 0), +(62, 'categoryDeletion', 'Category removal', '', 0, 0), +(63, 'beforeAuthentication', 'Before Authentication', 'Before authentication', 0, 0), +(64, 'paymentTop', 'Top of payment page', 'Top of payment page', 0, 0), +(65, 'afterCreateHtaccess', 'After htaccess creation', 'After htaccess creation', 0, 0), +(66, 'afterSaveAdminMeta', 'After save configuration in AdminMeta', 'After save configuration in AdminMeta', 0, 0); + +INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_add`, `date_upd`) VALUES +(1, 'PS_LANG_DEFAULT', '1', NOW(), NOW()), +(2, 'PS_CURRENCY_DEFAULT', '1', NOW(), NOW()), +(3, 'PS_COUNTRY_DEFAULT', '8', NOW(), NOW()), +(4, 'PS_REWRITING_SETTINGS', '0', NOW(), NOW()), +(5, 'PS_ORDER_OUT_OF_STOCK', '0', NOW(), NOW()), +(6, 'PS_LAST_QTIES', '3', NOW(), NOW()), +(7, 'PS_CART_REDIRECT', '1', NOW(), NOW()), +(8, 'PS_HELPBOX', '1', NOW(), NOW()), +(9, 'PS_CONDITIONS', '1', NOW(), NOW()), +(10, 'PS_RECYCLABLE_PACK', '1', NOW(), NOW()), +(11, 'PS_GIFT_WRAPPING', '1', NOW(), NOW()), +(12, 'PS_GIFT_WRAPPING_PRICE', '0', NOW(), NOW()), +(13, 'PS_STOCK_MANAGEMENT', '1', NOW(), NOW()), +(14, 'PS_NAVIGATION_PIPE', '>', NOW(), NOW()), +(15, 'PS_PRODUCTS_PER_PAGE', '10', NOW(), NOW()), +(16, 'PS_PURCHASE_MINIMUM', '0', NOW(), NOW()), +(17, 'PS_PRODUCTS_ORDER_WAY', '0', NOW(), NOW()), +(18, 'PS_PRODUCTS_ORDER_BY', '4', NOW(), NOW()), +(19, 'PS_DISPLAY_QTIES', '1', NOW(), NOW()), +(20, 'PS_SHIPPING_HANDLING', '2', NOW(), NOW()), +(21, 'PS_SHIPPING_FREE_PRICE', '300', NOW(), NOW()), +(22, 'PS_SHIPPING_FREE_WEIGHT', '20', NOW(), NOW()), +(23, 'PS_SHIPPING_METHOD', '1', NOW(), NOW()), +(24, 'PS_TAX', '1', NOW(), NOW()), +(25, 'PS_SHOP_ENABLE', '1', NOW(), NOW()), +(26, 'PS_NB_DAYS_NEW_PRODUCT', '20', NOW(), NOW()), +(27, 'PS_SSL_ENABLED', '0', NOW(), NOW()), +(28, 'PS_WEIGHT_UNIT', 'kg', NOW(), NOW()), +(29, 'PS_BLOCK_CART_AJAX', '1', NOW(), NOW()), +(30, 'PS_ORDER_RETURN', '0', NOW(), NOW()), +(31, 'PS_ORDER_RETURN_NB_DAYS', '7', NOW(), NOW()), +(32, 'PS_MAIL_TYPE', '3', NOW(), NOW()), +(33, 'PS_PRODUCT_PICTURE_MAX_SIZE', '131072', NOW(), NOW()), +(34, 'PS_PRODUCT_PICTURE_WIDTH', '64', NOW(), NOW()), +(35, 'PS_PRODUCT_PICTURE_HEIGHT', '64', NOW(), NOW()), +(36, 'PS_INVOICE_PREFIX', 'IN', NOW(), NOW()), +(37, 'PS_INVOICE_NUMBER', '1', NOW(), NOW()), +(38, 'PS_DELIVERY_PREFIX', 'DE', NOW(), NOW()), +(39, 'PS_DELIVERY_NUMBER', '1', NOW(), NOW()), +(40, 'PS_INVOICE', '1', NOW(), NOW()), +(41, 'PS_PASSWD_TIME_BACK', '360', NOW(), NOW()), +(42, 'PS_PASSWD_TIME_FRONT', '360', NOW(), NOW()), +(43, 'PS_DISP_UNAVAILABLE_ATTR', '1', NOW(), NOW()), +(44, 'PS_VOUCHERS', '1', NOW(), NOW()), +(45, 'PS_SEARCH_MINWORDLEN', '3', NOW(), NOW()), +(46, 'PS_SEARCH_BLACKLIST', '', NOW(), NOW()), +(47, 'PS_SEARCH_WEIGHT_PNAME', '6', NOW(), NOW()), +(48, 'PS_SEARCH_WEIGHT_REF', '10', NOW(), NOW()), +(49, 'PS_SEARCH_WEIGHT_SHORTDESC', '1', NOW(), NOW()), +(50, 'PS_SEARCH_WEIGHT_DESC', '1', NOW(), NOW()), +(51, 'PS_SEARCH_WEIGHT_CNAME', '3', NOW(), NOW()), +(52, 'PS_SEARCH_WEIGHT_MNAME', '3', NOW(), NOW()), +(53, 'PS_SEARCH_WEIGHT_TAG', '4', NOW(), NOW()), +(54, 'PS_SEARCH_WEIGHT_ATTRIBUTE', '2', NOW(), NOW()), +(55, 'PS_SEARCH_WEIGHT_FEATURE', '2', NOW(), NOW()), +(56, 'PS_SEARCH_AJAX', '1', NOW(), NOW()), +(57, 'PS_TIMEZONE', 'Europe/Paris', NOW(), NOW()), +(58, 'PS_THEME_V11', 0, NOW(), NOW()), +(59, 'PRESTASTORE_LIVE', 1, NOW(), NOW()), +(60, 'PS_TIN_ACTIVE', 0, NOW(), NOW()), +(61, 'PS_SHOW_ALL_MODULES', 0, NOW(), NOW()), +(62, 'PS_BACKUP_ALL', 0, NOW(), NOW()), +(63, 'PS_1_3_UPDATE_DATE', NOW(), NOW(), NOW()), +(64, 'PS_PRICE_ROUND_MODE', 2, NOW(), NOW()), +(65, 'PS_1_3_2_UPDATE_DATE', NOW(), NOW(), NOW()), +(66, 'PS_CONDITIONS_CMS_ID', 3, NOW(), NOW()), +(67, 'TRACKING_DIRECT_TRAFFIC', 0, NOW(), NOW()), +(68, 'PS_META_KEYWORDS', 0, NOW(), NOW()), +(69, 'PS_DISPLAY_JQZOOM', 0, NOW(), NOW()), +(70, 'PS_VOLUME_UNIT', 'cl', NOW(), NOW()), +(71, 'PS_CIPHER_ALGORITHM', 0, NOW(), NOW()), +(72, 'PS_ATTRIBUTE_CATEGORY_DISPLAY', 1, NOW(), NOW()), +(73, 'PS_CUSTOMER_SERVICE_FILE_UPLOAD', 1, NOW(), NOW()), +(74, 'PS_CUSTOMER_SERVICE_SIGNATURE', '', NOW(), NOW()), +(75, 'PS_BLOCK_BESTSELLERS_DISPLAY', 0, NOW(), NOW()), +(76, 'PS_BLOCK_NEWPRODUCTS_DISPLAY', 0, NOW(), NOW()), +(77, 'PS_BLOCK_SPECIALS_DISPLAY', 0, NOW(), NOW()), +(78, 'PS_STOCK_MVT_REASON_DEFAULT', 3, NOW(), NOW()), +(79, 'PS_COMPARATOR_MAX_ITEM', 3, NOW(), NOW()), +(80, 'PS_ORDER_PROCESS_TYPE', 0, NOW(), NOW()), +(81, 'PS_SPECIFIC_PRICE_PRIORITIES', 'id_shop;id_currency;id_country;id_group', NOW(), NOW()), +(82, 'PS_TAX_DISPLAY', 0, NOW(), NOW()), +(83, 'PS_SMARTY_FORCE_COMPILE', 1, NOW(), NOW()), +(84, 'PS_DISTANCE_UNIT', 'km', NOW(), NOW()), +(85, 'PS_STORES_DISPLAY_CMS', 1, NOW(), NOW()), +(86, 'PS_STORES_DISPLAY_FOOTER', 1, NOW(), NOW()), +(87, 'PS_STORES_SIMPLIFIED', 0, NOW(), NOW()), +(88, 'SHOP_LOGO_WIDTH', 224, NOW(), NOW()), +(89, 'SHOP_LOGO_HEIGHT', 73, NOW(), NOW()), +(90, 'EDITORIAL_IMAGE_WIDTH', 530, NOW(), NOW()), +(91, 'EDITORIAL_IMAGE_HEIGHT', 228, NOW(), NOW()), +(92, 'PS_STATSDATA_CUSTOMER_PAGESVIEWS', 0, NOW(), NOW()), +(93, 'PS_STATSDATA_PAGESVIEWS', 0, NOW(), NOW()), +(94, 'PS_STATSDATA_PLUGINS', 0, NOW(), NOW()), +(95, 'PS_GEOLOCATION_ENABLED', '0', NOW(), NOW()), +(96, 'PS_ALLOWED_COUNTRIES', 'AF;ZA;AX;AL;DZ;DE;AD;AO;AI;AQ;AG;AN;SA;AR;AM;AW;AU;AT;AZ;BS;BH;BD;BB;BY;BE;BZ;BJ;BM;BT;BO;BA;BW;BV;BR;BN;BG;BF;MM;BI;KY;KH;CM;CA;CV;CF;CL;CN;CX;CY;CC;CO;KM;CG;CD;CK;KR;KP;CR;CI;HR;CU;DK;DJ;DM;EG;IE;SV;AE;EC;ER;ES;EE;ET;FK;FO;FJ;FI;FR;GA;GM;GE;GS;GH;GI;GR;GD;GL;GP;GU;GT;GG;GN;GQ;GW;GY;GF;HT;HM;HN;HK;HU;IM;MU;VG;VI;IN;ID;IR;IQ;IS;IL;IT;JM;JP;JE;JO;KZ;KE;KG;KI;KW;LA;LS;LV;LB;LR;LY;LI;LT;LU;MO;MK;MG;MY;MW;MV;ML;MT;MP;MA;MH;MQ;MR;YT;MX;FM;MD;MC;MN;ME;MS;MZ;NA;NR;NP;NI;NE;NG;NU;NF;NO;NC;NZ;IO;OM;UG;UZ;PK;PW;PS;PA;PG;PY;NL;PE;PH;PN;PL;PF;PR;PT;QA;DO;CZ;RE;RO;GB;RU;RW;EH;BL;KN;SM;MF;PM;VA;VC;LC;SB;WS;AS;ST;SN;RS;SC;SL;SG;SK;SI;SO;SD;LK;SE;CH;SR;SJ;SZ;SY;TJ;TW;TZ;TD;TF;TH;TL;TG;TK;TO;TT;TN;TM;TC;TR;TV;UA;UY;US;VU;VE;VN;WF;YE;ZM;ZW', NOW(), NOW()), +(97, 'PS_GEOLOCATION_BEHAVIOR', '0', NOW(), NOW()), +(98, 'PS_LOCALE_LANGUAGE', '', NOW(), NOW()), +(99, 'PS_LOCALE_COUNTRY', '', NOW(), NOW()), +(100, 'PS_ATTACHMENT_MAXIMUM_SIZE', '2', NOW(), NOW()), +(101, 'PS_SMARTY_CACHE', '1', NOW(), NOW()), +(102, 'PS_DIMENSION_UNIT', 'cm', NOW(), NOW()), +(103, 'PS_FORCE_SMARTY_2', '0', NOW(), NOW()), +(104, 'PS_GUEST_CHECKOUT_ENABLED', '0', NOW(), NOW()), +(105, 'PS_DISPLAY_SUPPLIERS', '0', NOW(), NOW()), +(106, 'PS_CATALOG_MODE', '0', NOW(), NOW()), +(107, 'PS_GEOLOCATION_WHITELIST', '209.185.108;209.185.253;209.85.238;209.85.238.11;209.85.238.4;216.239.33.96;216.239.33.97;216.239.33.98;216.239.33.99;216.239.37.98;216.239.37.99;216.239.39.98;216.239.39.99;216.239.41.96;216.239.41.97;216.239.41.98;216.239.41.99;216.239.45.4;216.239.46;216.239.51.96;216.239.51.97;216.239.51.98;216.239.51.99;216.239.53.98;216.239.53.99;216.239.57.96;216.239.57.97;216.239.57.98;216.239.57.99;216.239.59.98;216.239.59.99;216.33.229.163;64.233.173.193;64.233.173.194;64.233.173.195;64.233.173.196;64.233.173.197;64.233.173.198;64.233.173.199;64.233.173.200;64.233.173.201;64.233.173.202;64.233.173.203;64.233.173.204;64.233.173.205;64.233.173.206;64.233.173.207;64.233.173.208;64.233.173.209;64.233.173.210;64.233.173.211;64.233.173.212;64.233.173.213;64.233.173.214;64.233.173.215;64.233.173.216;64.233.173.217;64.233.173.218;64.233.173.219;64.233.173.220;64.233.173.221;64.233.173.222;64.233.173.223;64.233.173.224;64.233.173.225;64.233.173.226;64.233.173.227;64.233.173.228;64.233.173.229;64.233.173.230;64.233.173.231;64.233.173.232;64.233.173.233;64.233.173.234;64.233.173.235;64.233.173.236;64.233.173.237;64.233.173.238;64.233.173.239;64.233.173.240;64.233.173.241;64.233.173.242;64.233.173.243;64.233.173.244;64.233.173.245;64.233.173.246;64.233.173.247;64.233.173.248;64.233.173.249;64.233.173.250;64.233.173.251;64.233.173.252;64.233.173.253;64.233.173.254;64.233.173.255;64.68.80;64.68.81;64.68.82;64.68.83;64.68.84;64.68.85;64.68.86;64.68.87;64.68.88;64.68.89;64.68.90.1;64.68.90.10;64.68.90.11;64.68.90.12;64.68.90.129;64.68.90.13;64.68.90.130;64.68.90.131;64.68.90.132;64.68.90.133;64.68.90.134;64.68.90.135;64.68.90.136;64.68.90.137;64.68.90.138;64.68.90.139;64.68.90.14;64.68.90.140;64.68.90.141;64.68.90.142;64.68.90.143;64.68.90.144;64.68.90.145;64.68.90.146;64.68.90.147;64.68.90.148;64.68.90.149;64.68.90.15;64.68.90.150;64.68.90.151;64.68.90.152;64.68.90.153;64.68.90.154;64.68.90.155;64.68.90.156;64.68.90.157;64.68.90.158;64.68.90.159;64.68.90.16;64.68.90.160;64.68.90.161;64.68.90.162;64.68.90.163;64.68.90.164;64.68.90.165;64.68.90.166;64.68.90.167;64.68.90.168;64.68.90.169;64.68.90.17;64.68.90.170;64.68.90.171;64.68.90.172;64.68.90.173;64.68.90.174;64.68.90.175;64.68.90.176;64.68.90.177;64.68.90.178;64.68.90.179;64.68.90.18;64.68.90.180;64.68.90.181;64.68.90.182;64.68.90.183;64.68.90.184;64.68.90.185;64.68.90.186;64.68.90.187;64.68.90.188;64.68.90.189;64.68.90.19;64.68.90.190;64.68.90.191;64.68.90.192;64.68.90.193;64.68.90.194;64.68.90.195;64.68.90.196;64.68.90.197;64.68.90.198;64.68.90.199;64.68.90.2;64.68.90.20;64.68.90.200;64.68.90.201;64.68.90.202;64.68.90.203;64.68.90.204;64.68.90.205;64.68.90.206;64.68.90.207;64.68.90.208;64.68.90.21;64.68.90.22;64.68.90.23;64.68.90.24;64.68.90.25;64.68.90.26;64.68.90.27;64.68.90.28;64.68.90.29;64.68.90.3;64.68.90.30;64.68.90.31;64.68.90.32;64.68.90.33;64.68.90.34;64.68.90.35;64.68.90.36;64.68.90.37;64.68.90.38;64.68.90.39;64.68.90.4;64.68.90.40;64.68.90.41;64.68.90.42;64.68.90.43;64.68.90.44;64.68.90.45;64.68.90.46;64.68.90.47;64.68.90.48;64.68.90.49;64.68.90.5;64.68.90.50;64.68.90.51;64.68.90.52;64.68.90.53;64.68.90.54;64.68.90.55;64.68.90.56;64.68.90.57;64.68.90.58;64.68.90.59;64.68.90.6;64.68.90.60;64.68.90.61;64.68.90.62;64.68.90.63;64.68.90.64;64.68.90.65;64.68.90.66;64.68.90.67;64.68.90.68;64.68.90.69;64.68.90.7;64.68.90.70;64.68.90.71;64.68.90.72;64.68.90.73;64.68.90.74;64.68.90.75;64.68.90.76;64.68.90.77;64.68.90.78;64.68.90.79;64.68.90.8;64.68.90.80;64.68.90.9;64.68.91;64.68.92;66.249.64;66.249.65;66.249.66;66.249.67;66.249.68;66.249.69;66.249.70;66.249.71;66.249.72;66.249.73;66.249.78;66.249.79;72.14.199;8.6.48', NOW(), NOW()), +(108, 'PS_LOGS_BY_EMAIL', '5', NOW(), NOW()), +(109, 'PS_COOKIE_CHECKIP', '1', NOW(), NOW()), +(110, 'PS_STORES_CENTER_LAT', '25.948969', NOW(), NOW()), +(111, 'PS_STORES_CENTER_LONG', '-80.226439', NOW(), NOW()), +(112, 'PS_HOMEPAGE_PHP_SELF', 'index.php', NOW(), NOW()), +(113, 'PS_USE_ECOTAX', '0', NOW(), NOW()), +(114, 'PS_CANONICAL_REDIRECT', '1', NOW(), NOW()), +(115, 'PS_IMG_UPDATE_TIME', UNIX_TIMESTAMP(), NOW(), NOW()); + + + +INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) VALUES +(36, 1, 'IN', NOW()),(36, 2, 'FA', NOW()),(36, 3, 'CU', NOW()),(36, 4, 'FA', NOW()),(36, 5, 'FA', NOW()), +(38, 1, 'DE', NOW()),(38, 2, 'LI', NOW()),(38, 3, 'EN', NOW()),(38, 4, 'LI', NOW()),(38, 5, 'BC', NOW()), +(46, 1, 'a|the|of|on|in|and|to', NOW()),(46, 2, 'le|les|de|et|en|des|les|une', NOW()),(46, 3, 'de|los|las|lo|la|en|de|y|el|a', NOW()),(46, 4, '', NOW()),(46, 5, '', NOW()), +(68, 1, 0, NOW()),(68, 2, 0, NOW()),(68, 3, 0, NOW()),(68, 4, 0, NOW()),(68, 5, 0, NOW()), +(74, 1, 'Dear Customer,\r\n\r\nRegards,\r\nCustomer service', NOW()), +(74, 2, 'Cher client,\r\n\r\nCordialement,\r\nLe service client', NOW()), +(74, 3, 'Estimado cliente,\r\n\r\nUn cordial saludo,\r\nAtención al cliente', NOW()), +(74, 4, 'Lieber Kunde,\r\n\r\nMit freundlichen Grüßen,\r\nIhr Kundenservice', NOW()), +(74, 5, 'Gentile Cliente,\r\n\r\nCordiali saluti,\r\nServizio Clienti', NOW()); + +INSERT INTO `PREFIX_lang` (`id_lang`, `name`, `active`, `iso_code`, `language_code`) VALUES +(1, 'English (English)', 1, 'en', 'en-us'),(2, 'Français (French)', 1, 'fr', 'fr'),(3, 'Español (Spanish)', 1, 'es', 'es'),(4, 'Deutsch (German)', 1, 'de', 'de'),(5, 'Italiano (Italian)', 1, 'it', 'it'); + +INSERT INTO `PREFIX_category` (`id_category`, `id_parent`, `level_depth`, `nleft`, `nright`, `active`, `date_add`, `date_upd`, `position`) VALUES (1, 0, 0, 1, 8, 1, NOW(), NOW(), 0); +INSERT INTO `PREFIX_category_lang` (`id_category`, `id_lang`, `name`, `description`, `link_rewrite`, `meta_title`, `meta_keywords`, `meta_description`) VALUES +(1, 1, 'Home', '', 'home', NULL, NULL, NULL),(1, 2, 'Accueil', '', 'home', NULL, NULL, NULL),(1, 3, 'Inicio', '', 'home', NULL, NULL, NULL),(1, 4, 'Start', '', 'home', NULL, NULL, NULL),(1, 5, 'Home page', '', 'home', NULL, NULL, NULL); + +INSERT INTO `PREFIX_order_state` (`id_order_state`, `invoice`, `send_email`, `color`, `unremovable`, `logable`, `delivery`) VALUES +(1, 0, 1, 'lightblue', 1, 0, 0),(2, 1, 1, '#DDEEFF', 1, 1, 0),(3, 1, 1, '#FFDD99', 1, 1, 1),(4, 1, 1, '#EEDDFF', 1, 1, 1),(5, 1, 0, '#DDFFAA', 1, 1, 1), +(6, 0, 1, '#DADADA', 1, 0, 0),(7, 1, 1, '#FFFFBB', 1, 0, 0),(8, 0, 1, '#FFDFDF', 1, 0, 0),(9, 1, 1, '#FFD3D3', 1, 0, 0),(10, 0, 1, 'lightblue', 1, 0, 0),(11, 0, 0, 'lightblue', 1, 0, 0); + +INSERT INTO `PREFIX_order_state_lang` (`id_order_state`, `id_lang`, `name`, `template`) VALUES +(1, 1, 'Awaiting cheque payment', 'cheque'), +(2, 1, 'Payment accepted', 'payment'), +(3, 1, 'Preparation in progress', 'preparation'), +(4, 1, 'Shipped', 'shipped'), +(5, 1, 'Delivered', ''), +(6, 1, 'Canceled', 'order_canceled'), +(7, 1, 'Refund', 'refund'), +(8, 1, 'Payment error', 'payment_error'), +(9, 1, 'On backorder', 'outofstock'), +(10, 1, 'Awaiting bank wire payment', 'bankwire'), +(11, 1, 'Awaiting PayPal payment', ''), +(1, 2, 'En attente du paiement par chèque', 'cheque'), +(2, 2, 'Paiement accepté', 'payment'), +(3, 2, 'Préparation en cours', 'preparation'), +(4, 2, 'En cours de livraison', 'shipped'), +(5, 2, 'Livré', ''), +(6, 2, 'Annulé', 'order_canceled'), +(7, 2, 'Remboursé', 'refund'), +(8, 2, 'Erreur de paiement', 'payment_error'), +(9, 2, 'En attente de réapprovisionnement', 'outofstock'), +(10, 2, 'En attente du paiement par virement bancaire', 'bankwire'), +(11, 2, 'En attente du paiement par PayPal', ''), +(1, 3, 'En espera de pago por cheque', 'cheque'), +(2, 3, 'Pago aceptamos', 'payment'), +(3, 3, 'Preparación en curso', 'preparation'), +(4, 3, 'Enviado', 'shipped'), +(5, 3, 'Entregado', ''), +(6, 3, 'Cancelada', 'order_canceled'), +(7, 3, 'Reembolsado', 'refund'), +(8, 3, 'Error de pago', 'payment_error'), +(9, 3, 'Productos fuera de línea', 'outofstock'), +(10, 3, 'En espera de pago por transferencia bancaria', 'bankwire'), +(11, 3, 'En espera de pago por PayPal', ''), +(1, 4, 'Scheckzahlung wird erwartet', 'cheque'), +(2, 4, 'Zahlung angenommen', 'payment'), +(3, 4, 'Vorbereitung im Gang', 'preparation'), +(4, 4, 'Wird geliefert', 'shipped'), +(5, 4, 'Geliefert', ''), +(6, 4, 'Abgebrochen', 'order_canceled'), +(7, 4, 'Erstattet', 'refund'), +(8, 4, 'Zahlungsfehler', 'payment_error'), +(9, 4, 'Auffüllung im Gang', 'outofstock'), +(10, 4, 'Zahlung durch Banküberweisung wird erwartet', 'bankwire'), +(11, 4, 'Zahlung per PayPal wird erwartet', ''), +(1, 5, 'In attesa di pagamento con assegno', 'cheque'), +(2, 5, 'Pagamento accettato', 'payment'), +(3, 5, 'Preparazione in corso', 'preparation'), +(4, 5, 'Consegna in corso', 'shipped'), +(5, 5, 'Consegnato', ''), +(6, 5, 'Annullato', 'order_canceled'), +(7, 5, 'Rimborsato', 'refund'), +(8, 5, 'Errore di pagamento', 'payment_error'), +(9, 5, 'In attesa di rifornimento', 'outofstock'), +(10, 5, 'In attesa di pagamento con bonifico bancario', 'bankwire'), +(11, 5, 'In attesa di pagamento con PayPal', ''); + +INSERT INTO `PREFIX_zone` (`id_zone`, `name`, `active`) VALUES +(1, 'Europe', 1),(2, 'North America', 1),(3, 'Asia', 1),(4, 'Africa', 1), +(5, 'Oceania', 1),(6, 'South America', 1),(7, 'Europe (out E.U)', 1),(8, 'Centrale America/Antilla', 1); + +INSERT INTO `PREFIX_country` (`id_country`, `id_zone`, `iso_code`, `call_prefix`, `active`, `contains_states`, `need_identification_number`, `need_zip_code`, `zip_code_format`) VALUES +(1, 1, 'DE', 49, 1, 0, 0, 1, 'NNNNN'),(2, 1, 'AT', 43, 1, 0, 0, 1, 'NNNN'),(3, 1, 'BE', 32, 1, 0, 0, 1, 'NNNN'),(4, 2, 'CA', 1, 1, 1, 0, 1, 'LNL NLN'),(5, 3, 'CN', 86, 1, 0, 0, 1, 'NNNNNN'), +(6, 1, 'ES', 34, 1, 0, 1, 1, 'NNNNN'),(7, 1, 'FI', 358, 1, 0, 0, 1, 'NNNNN'),(8, 1, 'FR', 33, 1, 0, 0, 1, 'NNNNN'),(9, 1, 'GR', 30, 1, 0, 0, 1, 'NNNNN'),(10, 1, 'IT', 39, 1, 0, 0, 1, 'NNNNN'), +(11, 3, 'JP', 81, 1, 0, 0, 1, 'NNN-NNNN'),(12, 1, 'LU', 352, 1, 0, 0, 1, 'NNNN'),(13, 1, 'NL', 31, 1, 0, 0, 1, 'NNNN LL'),(14, 1, 'PL', 48, 1, 0, 0, 1, 'NN-NNN'), +(15, 1, 'PT', 351, 1, 0, 0, 1, 'NNNN NNN'),(16, 1, 'CZ', 420, 1, 0, 0, 1, 'NNN NN'),(17, 1, 'GB', 44, 1, 0, 0, 1, ''),(18, 1, 'SE', 46, 1, 0, 0, 1, 'NNN NN'), +(19, 7, 'CH', 41, 1, 0, 0, 1, 'NNNN'),(20, 1, 'DK', 45, 1, 0, 0, 1, 'NNNN'),(21, 2, 'US', 1, 1, 1, 0, 1, 'NNNNN'),(22, 3, 'HK', 852, 1, 0, 0, 0, ''),(23, 1, 'NO', 47, 1, 0, 0, 1, 'NNNN'), +(24, 5, 'AU', 61, 1, 0, 0, 1, 'NNNN'),(25, 3, 'SG', 65, 1, 0, 0, 1, 'NNNNNN'),(26, 1, 'IE', 353, 1, 0, 0, 1, ''),(27, 5, 'NZ', 64, 1, 0, 0, 1, 'NNNN'),(28, 3, 'KR', 82, 1, 0, 0, 1, 'NNN-NNN'), +(29, 3, 'IL', 972, 1, 0, 0, 1, 'NNNNN'),(30, 4, 'ZA', 27, 1, 0, 0, 1, 'NNNN'),(31, 4, 'NG', 234, 1, 0, 0, 1, ''),(32, 4, 'CI', 225, 1, 0, 0, 1, ''),(33, 4, 'TG', 228, 1, 0, 0, 1, ''), +(34, 6, 'BO', 591, 1, 0, 0, 1, ''),(35, 4, 'MU', 230, 1, 0, 0, 1, ''),(36, 1, 'RO', 40, 1, 0, 0, 1, 'NNNNNN'),(37, 1, 'SK', 421, 1, 0, 0, 1, 'NNN NN'),(38, 4, 'DZ', 213, 1, 0, 0, 1, 'NNNNN'), +(39, 2, 'AS', 0, 1, 0, 0, 1, ''),(40, 7, 'AD', 376, 1, 0, 0, 1, 'CNNN'),(41, 4, 'AO', 244, 1, 0, 0, 0, ''),(42, 8, 'AI', 0, 1, 0, 0, 1, ''),(43, 2, 'AG', 0, 1, 0, 0, 1, ''), +(44, 6, 'AR', 54, 1, 1, 0, 1, 'LNNNN'),(45, 3, 'AM', 374, 1, 0, 0, 1, 'NNNN'),(46, 8, 'AW', 297, 1, 0, 0, 1, ''),(47, 3, 'AZ', 994, 1, 0, 0, 1, 'CNNNN'),(48, 2, 'BS', 0, 1, 0, 0, 1, ''), +(49, 3, 'BH', 973, 1, 0, 0, 1, ''),(50, 3, 'BD', 880, 1, 0, 0, 1, 'NNNN'),(51, 2, 'BB', 0, 1, 0, 0, 1, 'CNNNNN'),(52, 7, 'BY', 0, 1, 0, 0, 1, 'NNNNNN'),(53, 8, 'BZ', 501, 1, 0, 0, 0, ''), +(54, 4, 'BJ', 229, 1, 0, 0, 0, ''),(55, 2, 'BM', 0, 1, 0, 0, 1, ''),(56, 3, 'BT', 975, 1, 0, 0, 1, ''),(57, 4, 'BW', 267, 1, 0, 0, 1, ''),(58, 6, 'BR', 55, 1, 0, 0, 1, 'NNNNN-NNN'), +(59, 3, 'BN', 673, 1, 0, 0, 1, 'LLNNNN'),(60, 4, 'BF', 226, 1, 0, 0, 1, ''),(61, 3, 'MM', 95, 1, 0, 0, 1, ''),(62, 4, 'BI', 257, 1, 0, 0, 1, ''),(63, 3, 'KH', 855, 1, 0, 0, 1, 'NNNNN'), +(64, 4, 'CM', 237, 1, 0, 0, 1, ''),(65, 4, 'CV', 238, 1, 0, 0, 1, 'NNNN'),(66, 4, 'CF', 236, 1, 0, 0, 1, ''),(67, 4, 'TD', 235, 1, 0, 0, 1, ''),(68, 6, 'CL', 56, 1, 0, 0, 1, 'NNN-NNNN'), +(69, 6, 'CO', 57, 1, 0, 0, 1, 'NNNNNN'),(70, 4, 'KM', 269, 1, 0, 0, 1, ''),(71, 4, 'CD', 242, 1, 0, 0, 1, ''),(72, 4, 'CG', 243, 1, 0, 0, 1, ''),(73, 8, 'CR', 506, 1, 0, 0, 1, 'NNNNN'), +(74, 7, 'HR', 385, 1, 0, 0, 1, 'NNNNN'),(75, 8, 'CU', 53, 1, 0, 0, 1, ''),(76, 1, 'CY', 357, 1, 0, 0, 1, 'NNNN'),(77, 4, 'DJ', 253, 1, 0, 0, 1, ''),(78, 8, 'DM', 0, 1, 0, 0, 1, ''), +(79, 8, 'DO', 0, 1, 0, 0, 1, ''),(80, 3, 'TL', 670, 1, 0, 0, 1, ''),(81, 6, 'EC', 593, 1, 0, 0, 1, 'CNNNNNN'),(82, 4, 'EG', 20, 1, 0, 0, 0, ''),(83, 8, 'SV', 503, 1, 0, 0, 1, ''), +(84, 4, 'GQ', 240, 1, 0, 0, 1, ''),(85, 4, 'ER', 291, 1, 0, 0, 1, ''),(86, 1, 'EE', 372, 1, 0, 0, 1, 'NNNNN'),(87, 4, 'ET', 251, 1, 0, 0, 1, ''),(88, 8, 'FK', 0, 1, 0, 0, 1, 'LLLL NLL'), +(89, 7, 'FO', 298, 1, 0, 0, 1, ''),(90, 5, 'FJ', 679, 1, 0, 0, 1, ''),(91, 4, 'GA', 241, 1, 0, 0, 1, ''),(92, 4, 'GM', 220, 1, 0, 0, 1, ''),(93, 3, 'GE', 995, 1, 0, 0, 1, 'NNNN'), +(94, 4, 'GH', 233, 1, 0, 0, 1, ''),(95, 8, 'GD', 0, 1, 0, 0, 1, ''),(96, 7, 'GL', 299, 1, 0, 0, 1, ''),(97, 7, 'GI', 350, 1, 0, 0, 1, ''),(98, 8, 'GP', 590, 1, 0, 0, 1, ''), +(99, 8, 'GU', 0, 1, 0, 0, 1, ''),(100, 8, 'GT', 502, 1, 0, 0, 1, ''),(101, 7, 'GG', 0, 1, 0, 0, 1, 'LLN NLL'),(102, 4, 'GN', 224, 1, 0, 0, 1, ''),(103, 4, 'GW', 245, 1, 0, 0, 1, ''), +(104, 6, 'GY', 592, 1, 0, 0, 1, ''),(105, 8, 'HT', 509, 1, 0, 0, 1, ''),(106, 5, 'HM', 0, 1, 0, 0, 1, ''),(107, 7, 'VA', 379, 1, 0, 0, 1, 'NNNNN'),(108, 8, 'HN', 504, 1, 0, 0, 1, ''), +(109, 7, 'IS', 354, 1, 0, 0, 1, 'NNN'),(110, 3, 'IN', 91, 1, 0, 0, 1, 'NNN NNN'),(111, 3, 'ID', 62, 1, 0, 0, 1, 'NNNNN'),(112, 3, 'IR', 98, 1, 0, 0, 1, 'NNNNN-NNNNN'), +(113, 3, 'IQ', 964, 1, 0, 0, 1, 'NNNNN'),(114, 7, 'IM', 0, 1, 0, 0, 1, 'CN NLL'),(115, 8, 'JM', 0, 1, 0, 0, 1, ''),(116, 7, 'JE', 0, 1, 0, 0, 1, 'CN NLL'),(117, 3, 'JO', 962, 1, 0, 0, 1, ''), +(118, 3, 'KZ', 7, 1, 0, 0, 1, 'NNNNNN'),(119, 4, 'KE', 254, 1, 0, 0, 1, ''),(120, 7, 'KI', 686, 1, 0, 0, 1, ''),(121, 3, 'KP', 850, 1, 0, 0, 1, ''),(122, 3, 'KW', 965, 1, 0, 0, 1, ''), +(123, 3, 'KG', 996, 1, 0, 0, 1, ''),(124, 3, 'LA', 856, 1, 0, 0, 1, ''),(125, 1, 'LV', 371, 1, 0, 0, 1, 'C-NNNN'),(126, 3, 'LB', 961, 1, 0, 0, 1, ''),(127, 4, 'LS', 266, 1, 0, 0, 1, ''), +(128, 4, 'LR', 231, 1, 0, 0, 1, ''),(129, 4, 'LY', 218, 1, 0, 0, 1, ''),(130, 1, 'LI', 423, 1, 0, 0, 1, 'NNNN'),(131, 1, 'LT', 370, 1, 0, 0, 1, 'NNNNN'),(132, 3, 'MO', 853, 1, 0, 0, 0, ''), +(133, 7, 'MK', 389, 1, 0, 0, 1, ''),(134, 4, 'MG', 261, 1, 0, 0, 1, ''),(135, 4, 'MW', 265, 1, 0, 0, 1, ''),(136, 3, 'MY', 60, 1, 0, 0, 1, 'NNNNN'),(137, 3, 'MV', 960, 1, 0, 0, 1, ''), +(138, 4, 'ML', 223, 1, 0, 0, 1, ''),(139, 1, 'MT', 356, 1, 0, 0, 1, 'LLL NNNN'),(140, 5, 'MH', 692, 1, 0, 0, 1, ''),(141, 8, 'MQ', 596, 1, 0, 0, 1, ''),(142, 4, 'MR', 222, 1, 0, 0, 1, ''), +(143, 1, 'HU', 36, 1, 0, 0, 1, 'NNNN'),(144, 4, 'YT', 262, 1, 0, 0, 1, ''),(145, 2, 'MX', 52, 1, 0, 0, 1, 'NNNNN'),(146, 5, 'FM', 691, 1, 0, 0, 1, ''),(147, 7, 'MD', 373, 1, 0, 0, 1, 'C-NNNN'), +(148, 7, 'MC', 377, 1, 0, 0, 1, '980NN'),(149, 3, 'MN', 976, 1, 0, 0, 1, ''),(150, 7, 'ME', 382, 1, 0, 0, 1, 'NNNNN'),(151, 8, 'MS', 0, 1, 0, 0, 1, ''),(152, 4, 'MA', 212, 1, 0, 0, 1, 'NNNNN'), +(153, 4, 'MZ', 258, 1, 0, 0, 1, ''),(154, 4, 'NA', 264, 1, 0, 0, 1, ''),(155, 5, 'NR', 674, 1, 0, 0, 1, ''),(156, 3, 'NP', 977, 1, 0, 0, 1, ''),(157, 8, 'AN', 599, 1, 0, 0, 1, ''), +(158, 5, 'NC', 687, 1, 0, 0, 1, ''),(159, 8, 'NI', 505, 1, 0, 0, 1, 'NNNNNN'),(160, 4, 'NE', 227, 1, 0, 0, 1, ''),(161, 5, 'NU', 683, 1, 0, 0, 1, ''),(162, 5, 'NF', 0, 1, 0, 0, 1, ''), +(163, 5, 'MP', 0, 1, 0, 0, 1, ''),(164, 3, 'OM', 968, 1, 0, 0, 1, ''),(165, 3, 'PK', 92, 1, 0, 0, 1, ''),(166, 5, 'PW', 680, 1, 0, 0, 1, ''),(167, 3, 'PS', 0, 1, 0, 0, 1, ''), +(168, 8, 'PA', 507, 1, 0, 0, 1, 'NNNNNN'),(169, 5, 'PG', 675, 1, 0, 0, 1, ''),(170, 6, 'PY', 595, 1, 0, 0, 1, ''),(171, 6, 'PE', 51, 1, 0, 0, 1, ''),(172, 3, 'PH', 63, 1, 0, 0, 1, 'NNNN'), +(173, 5, 'PN', 0, 1, 0, 0, 1, 'LLLL NLL'),(174, 8, 'PR', 0, 1, 0, 0, 1, 'NNNNN'),(175, 3, 'QA', 974, 1, 0, 0, 1, ''),(176, 4, 'RE', 262, 1, 0, 0, 1, ''),(177, 7, 'RU', 7, 1, 0, 0, 1, 'NNNNNN'), +(178, 4, 'RW', 250, 1, 0, 0, 1, ''),(179, 8, 'BL', 0, 1, 0, 0, 1, ''),(180, 8, 'KN', 0, 1, 0, 0, 1, ''),(181, 8, 'LC', 0, 1, 0, 0, 1, ''),(182, 8, 'MF', 0, 1, 0, 0, 1, ''), +(183, 8, 'PM', 508, 1, 0, 0, 1, ''),(184, 8, 'VC', 0, 1, 0, 0, 1, ''),(185, 5, 'WS', 685, 1, 0, 0, 1, ''),(186, 7, 'SM', 378, 1, 0, 0, 1, 'NNNNN'),(187, 4, 'ST', 239, 1, 0, 0, 1, ''), +(188, 3, 'SA', 966, 1, 0, 0, 1, ''),(189, 4, 'SN', 221, 1, 0, 0, 1, ''),(190, 7, 'RS', 381, 1, 0, 0, 1, 'NNNNN'),(191, 4, 'SC', 248, 1, 0, 0, 1, ''),(192, 4, 'SL', 232, 1, 0, 0, 1, ''), +(193, 1, 'SI', 386, 1, 0, 0, 1, 'C-NNNN'),(194, 5, 'SB', 677, 1, 0, 0, 1, ''),(195, 4, 'SO', 252, 1, 0, 0, 1, ''),(196, 8, 'GS', 0, 1, 0, 0, 1, 'LLLL NLL'),(197, 3, 'LK', 94, 1, 0, 0, 1, 'NNNNN'), +(198, 4, 'SD', 249, 1, 0, 0, 1, ''),(199, 8, 'SR', 597, 1, 0, 0, 1, ''),(200, 7, 'SJ', 0, 1, 0, 0, 1, ''),(201, 4, 'SZ', 268, 1, 0, 0, 1, ''),(202, 3, 'SY', 963, 1, 0, 0, 1, ''), +(203, 3, 'TW', 886, 1, 0, 0, 1, 'NNNNN'),(204, 3, 'TJ', 992, 1, 0, 0, 1, ''),(205, 4, 'TZ', 255, 1, 0, 0, 1, ''),(206, 3, 'TH', 66, 1, 0, 0, 1, 'NNNNN'),(207, 5, 'TK', 690, 1, 0, 0, 1, ''), +(208, 5, 'TO', 676, 1, 0, 0, 1, ''),(209, 6, 'TT', 0, 1, 0, 0, 1, ''),(210, 4, 'TN', 216, 1, 0, 0, 1, ''),(211, 7, 'TR', 90, 1, 0, 0, 1, 'NNNNN'),(212, 3, 'TM', 993, 1, 0, 0, 1, ''), +(213, 8, 'TC', 0, 1, 0, 0, 1, 'LLLL NLL'),(214, 5, 'TV', 688, 1, 0, 0, 1, ''),(215, 4, 'UG', 256, 1, 0, 0, 1, ''),(216, 1, 'UA', 380, 1, 0, 0, 1, 'NNNNN'),(217, 3, 'AE', 971, 1, 0, 0, 1, ''), +(218, 6, 'UY', 598, 1, 0, 0, 1, ''),(219, 3, 'UZ', 998, 1, 0, 0, 1, ''),(220, 5, 'VU', 678, 1, 0, 0, 1, ''),(221, 6, 'VE', 58, 1, 0, 0, 1, ''),(222, 3, 'VN', 84, 1, 0, 0, 1, 'NNNNNN'), +(223, 2, 'VG', 0, 1, 0, 0, 1, 'CNNNN'),(224, 2, 'VI', 0, 1, 0, 0, 1, ''),(225, 5, 'WF', 681, 1, 0, 0, 1, ''),(226, 4, 'EH', 0, 1, 0, 0, 1, ''),(227, 3, 'YE', 967, 1, 0, 0, 1, ''), +(228, 4, 'ZM', 260, 1, 0, 0, 1, ''),(229, 4, 'ZW', 263, 1, 0, 0, 1, ''),(230, 7, 'AL', 355, 1, 0, 0, 1, 'NNNN'),(231, 3, 'AF', 93, 1, 0, 0, 0, ''),(232, 5, 'AQ', 0, 1, 0, 0, 1, ''), +(233, 1, 'BA', 387, 1, 0, 0, 1, ''),(234, 5, 'BV', 0, 1, 0, 0, 1, ''),(235, 5, 'IO', 0, 1, 0, 0, 1, 'LLLL NLL'),(236, 1, 'BG', 359, 1, 0, 0, 1, 'NNNN'),(237, 8, 'KY', 0, 1, 0, 0, 1, ''), +(238, 3, 'CX', 0, 1, 0, 0, 1, ''),(239, 3, 'CC', 0, 1, 0, 0, 1, ''),(240, 5, 'CK', 682, 1, 0, 0, 1, ''),(241, 6, 'GF', 594, 1, 0, 0, 1, ''),(242, 5, 'PF', 689, 1, 0, 0, 1, ''), +(243, 5, 'TF', 0, 1, 0, 0, 1, ''),(244, 7, 'AX', 0, 1, 0, 0, 1, 'NNNNN'); + +INSERT INTO `PREFIX_country_lang` (`id_country`, `id_lang`, `name`) VALUES +(1, 1, 'Germany'),(1, 2, 'Allemagne'),(1, 3, 'Alemania'),(2, 1, 'Austria'),(2, 2, 'Autriche'),(2, 3, 'Austria'), +(3, 1, 'Belgium'),(3, 2, 'Belgique'),(3, 3, 'Bélgica'),(4, 1, 'Canada'),(4, 2, 'Canada'),(4, 3, 'Canadá'),(5, 1, 'China'), +(5, 2, 'Chine'),(5, 3, 'Porcelana'),(6, 1, 'Spain'),(6, 2, 'Espagne'),(6, 3, 'España'),(7, 1, 'Finland'),(7, 2, 'Finlande'), +(7, 3, 'Finlandia'),(8, 1, 'France'),(8, 2, 'France'),(8, 3, 'Francia'),(9, 1, 'Greece'),(9, 2, 'Grèce'),(9, 3, 'Grecia'), +(10, 1, 'Italy'),(10, 2, 'Italie'),(10, 3, 'Italia'),(11, 1, 'Japan'),(11, 2, 'Japon'),(11, 3, 'Japón'), +(12, 1, 'Luxemburg'),(12, 2, 'Luxembourg'),(12, 3, 'Luxemburgo'),(13, 1, 'Netherlands'),(13, 2, 'Pays-bas'),(13, 3, 'Países Bajos'), +(14, 1, 'Poland'),(14, 2, 'Pologne'),(14, 3, 'Polonia'),(15, 1, 'Portugal'),(15, 2, 'Portugal'),(15, 3, 'Portugal'), +(16, 1, 'Czech Republic'),(16, 2, 'République Tchèque'),(16, 3, 'República Checa'),(17, 1, 'United Kingdom'),(17, 2, 'Royaume-Uni'),(17, 3, 'Reino Unido'), +(18, 1, 'Sweden'),(18, 2, 'Suède'),(18, 3, 'Suecia'),(19, 1, 'Switzerland'),(19, 2, 'Suisse'),(19, 3, 'Suiza'),(20, 1, 'Denmark'), +(20, 2, 'Danemark'),(20, 3, 'Dinamarca'),(21, 1, 'USA'),(21, 2, 'États-Unis'),(21, 3, 'EE.UU.'),(22, 1, 'HongKong'),(22, 2, 'Hong-Kong'), +(22, 3, 'Hong Kong'),(23, 1, 'Norway'),(23, 2, 'Norvège'),(23, 3, 'Noruega'),(24, 1, 'Australia'),(24, 2, 'Australie'),(24, 3, 'Australia'), +(25, 1, 'Singapore'),(25, 2, 'Singapour'),(25, 3, 'Singapur'),(26, 1, 'Ireland'),(26, 2, 'Eire'),(26, 3, 'Irlanda'),(27, 1, 'New Zealand'), +(27, 2, 'Nouvelle-Zélande'),(27, 3, 'Nueva Zelanda'),(28, 1, 'South Korea'),(28, 2, 'Corée du Sud'),(28, 3, 'Corea del Sur'),(29, 1, 'Israel'), +(29, 2, 'Israël'),(29, 3, 'Israel'),(30, 1, 'South Africa'),(30, 2, 'Afrique du Sud'),(30, 3, 'Sudáfrica'),(31, 1, 'Nigeria'),(31, 2, 'Nigeria'), +(31, 3, 'Nigeria'),(32, 1, 'Ivory Coast'),(32, 2, 'Côte d''Ivoire'),(32, 3, 'Costa de Marfil'),(33, 1, 'Togo'),(33, 2, 'Togo'),(33, 3, 'Togo'), +(34, 1, 'Bolivia'),(34, 2, 'Bolivie'),(34, 3, 'Bolivia'),(35, 1, 'Mauritius'),(35, 2, 'Ile Maurice'),(35, 3, 'Mauricio'),(36, 1, 'Romania'), +(36, 2, 'Roumanie'),(36, 3, 'Rumania'),(37, 1, 'Slovakia'),(37, 2, 'Slovaquie'),(37, 3, 'Eslovaquia'),(38, 1, 'Algeria'),(38, 2, 'Algérie'), +(38, 3, 'Argelia'),(39, 1, 'American Samoa'),(39, 2, 'Samoa Américaines'),(39, 3, 'Samoa Americana'),(40, 1, 'Andorra'),(40, 2, 'Andorre'),(40, 3, 'Andorra'), +(41, 1, 'Angola'),(41, 2, 'Angola'),(41, 3, 'Angola'),(42, 1, 'Anguilla'),(42, 2, 'Anguilla'),(42, 3, 'Anguila'),(43, 1, 'Antigua and Barbuda'), +(43, 2, 'Antigua et Barbuda'),(43, 3, 'Antigua y Barbuda'),(44, 1, 'Argentina'),(44, 2, 'Argentine'),(44, 3, 'Argentina'),(45, 1, 'Armenia'), +(45, 2, 'Arménie'),(45, 3, 'Armenia'),(46, 1, 'Aruba'),(46, 2, 'Aruba'),(46, 3, 'Aruba'),(47, 1, 'Azerbaijan'),(47, 2, 'Azerbaïdjan'),(47, 3, 'Azerbaiyán'), +(48, 1, 'Bahamas'),(48, 2, 'Bahamas'),(48, 3, 'Bahamas'),(49, 1, 'Bahrain'),(49, 2, 'Bahreïn'),(49, 3, 'Bahrein'),(50, 1, 'Bangladesh'), +(50, 2, 'Bangladesh'),(50, 3, 'Bangladesh'),(51, 1, 'Barbados'),(51, 2, 'Barbade'),(51, 3, 'Barbados'),(52, 1, 'Belarus'),(52, 2, 'Bélarus'), +(52, 3, 'Belarús'),(53, 1, 'Belize'),(53, 2, 'Belize'),(53, 3, 'Belice'),(54, 1, 'Benin'),(54, 2, 'Bénin'),(54, 3, 'Benin'),(55, 1, 'Bermuda'), +(55, 2, 'Bermudes'),(55, 3, 'Bermudas'),(56, 1, 'Bhutan'),(56, 2, 'Bhoutan'),(56, 3, 'Bhután'),(57, 1, 'Botswana'),(57, 2, 'Botswana'),(57, 3, 'Botswana'), +(58, 1, 'Brazil'),(58, 2, 'Brésil'),(58, 3, 'Brasil'),(59, 1, 'Brunei'),(59, 2, 'Brunéi Darussalam'),(59, 3, 'Brunei'),(60, 1, 'Burkina Faso'), +(60, 2, 'Burkina Faso'),(60, 3, 'Burkina Faso'),(61, 1, 'Burma (Myanmar)'),(61, 2, 'Burma (Myanmar)'),(61, 3, 'Birmania (Myanmar)'),(62, 1, 'Burundi'),(62, 2, 'Burundi'), +(62, 3, 'Burundi'),(63, 1, 'Cambodia'),(63, 2, 'Cambodge'),(63, 3, 'Camboya'),(64, 1, 'Cameroon'),(64, 2, 'Cameroun'),(64, 3, 'Camerún'),(65, 1, 'Cape Verde'),(65, 2, 'Cap-Vert'), +(65, 3, 'Cabo Verde'),(66, 1, 'Central African Republic'),(66, 2, 'Centrafricaine, République'),(66, 3, 'República Centroafricana'),(67, 1, 'Chad'),(67, 2, 'Tchad'),(67, 3, 'Chad'), +(68, 1, 'Chile'),(68, 2, 'Chili'),(68, 3, 'Chile'),(69, 1, 'Colombia'),(69, 2, 'Colombie'),(69, 3, 'Colombia'),(70, 1, 'Comoros'),(70, 2, 'Comores'), +(70, 3, 'Comoras'),(71, 1, 'Congo, Dem. Republic'),(71, 2, 'Congo, Rép. Dém.'),(71, 3, 'Congo, Rep. Dem.'),(72, 1, 'Congo, Republic'),(72, 2, 'Congo, Rép.'),(72, 3, 'Congo, República'), +(73, 1, 'Costa Rica'),(73, 2, 'Costa Rica'),(73, 3, 'Costa Rica'),(74, 1, 'Croatia'),(74, 2, 'Croatie'),(74, 3, 'Croacia'),(75, 1, 'Cuba'), +(75, 2, 'Cuba'),(75, 3, 'Cuba'),(76, 1, 'Cyprus'),(76, 2, 'Chypre'),(76, 3, 'Chipre'),(77, 1, 'Djibouti'),(77, 2, 'Djibouti'),(77, 3, 'Djibouti'),(78, 1, 'Dominica'), +(78, 2, 'Dominica'),(78, 3, 'Dominica'),(79, 1, 'Dominican Republic'),(79, 2, 'République Dominicaine'),(79, 3, 'República Dominicana'),(80, 1, 'East Timor'),(80, 2, 'Timor oriental'), +(80, 3, 'Timor Oriental'),(81, 1, 'Ecuador'),(81, 2, 'Équateur'),(81, 3, 'Ecuador'),(82, 1, 'Egypt'),(82, 2, 'Égypte'),(82, 3, 'Egipto'),(83, 1, 'El Salvador'), +(83, 2, 'El Salvador'),(83, 3, 'El Salvador'),(84, 1, 'Equatorial Guinea'),(84, 2, 'Guinée Équatoriale'),(84, 3, 'Guinea Ecuatorial'),(85, 1, 'Eritrea'), +(85, 2, 'Érythrée'),(85, 3, 'Eritrea'),(86, 1, 'Estonia'),(86, 2, 'Estonie'),(86, 3, 'Estonia'),(87, 1, 'Ethiopia'),(87, 2, 'Éthiopie'),(87, 3, 'Etiopía'), +(88, 1, 'Falkland Islands'),(88, 2, 'Falkland, Îles'),(88, 3, 'Islas Malvinas'),(89, 1, 'Faroe Islands'),(89, 2, 'Féroé, Îles'),(89, 3, 'Islas Feroe'),(90, 1, 'Fiji'),(90, 2, 'Fidji'), +(90, 3, 'Fiji'),(91, 1, 'Gabon'),(91, 2, 'Gabon'),(91, 3, 'Gabón'),(92, 1, 'Gambia'),(92, 2, 'Gambie'),(92, 3, 'Gambia'),(93, 1, 'Georgia'), +(93, 2, 'Géorgie'),(93, 3, 'Georgia'),(94, 1, 'Ghana'),(94, 2, 'Ghana'),(94, 3, 'Ghana'),(95, 1, 'Grenada'),(95, 2, 'Grenade'),(95, 3, 'Granada'), +(96, 1, 'Greenland'),(96, 2, 'Groenland'),(96, 3, 'Groenlandia'),(97, 1, 'Gibraltar'),(97, 2, 'Gibraltar'),(97, 3, 'Gibraltar'),(98, 1, 'Guadeloupe'),(98, 2, 'Guadeloupe'), +(98, 3, 'Guadalupe'),(99, 1, 'Guam'),(99, 2, 'Guam'),(99, 3, 'Guam'),(100, 1, 'Guatemala'),(100, 2, 'Guatemala'),(100, 3, 'Guatemala'),(101, 1, 'Guernsey'), +(101, 2, 'Guernesey'),(101, 3, 'Guernsey'),(102, 1, 'Guinea'),(102, 2, 'Guinée'),(102, 3, 'Guinea'),(103, 1, 'Guinea-Bissau'),(103, 2, 'Guinée-Bissau'), +(103, 3, 'Guinea-Bissau'),(104, 1, 'Guyana'),(104, 2, 'Guyana'),(104, 3, 'Guyana'),(105, 1, 'Haiti'),(105, 2, 'Haîti'),(105, 3, 'Haití'),(106, 1, 'Heard Island and McDonald Islands'),(106, 2, 'Heard, Île et Mcdonald, Îles'), +(106, 3, 'Islas Heard y McDonald Islas'),(107, 1, 'Vatican City State'),(107, 2, 'Saint-Siege (État de la Cité du Vatican)'),(107, 3, 'Ciudad del Vaticano'),(108, 1, 'Honduras'),(108, 2, 'Honduras'),(108, 3, 'Honduras'),(109, 1, 'Iceland'), +(109, 2, 'Islande'),(109, 3, 'Islandia'),(110, 1, 'India'),(110, 2, 'Inde'),(110, 3, 'India'),(111, 1, 'Indonesia'),(111, 2, 'Indonésie'), +(111, 3, 'Indonesia'),(112, 1, 'Iran'),(112, 2, 'Iran'),(112, 3, 'Irán'),(113, 1, 'Iraq'),(113, 2, 'Iraq'),(113, 3, 'Iraq'),(114, 1, 'Man Island'), +(114, 2, 'Man, Île de'),(114, 3, 'Man, Isla'),(115, 1, 'Jamaica'),(115, 2, 'Jamaique'),(115, 3, 'Jamaica'),(116, 1, 'Jersey'),(116, 2, 'Jersey'), +(116, 3, 'Jersey'),(117, 1, 'Jordan'),(117, 2, 'Jordanie'),(117, 3, 'Jordania'),(118, 1, 'Kazakhstan'),(118, 2, 'Kazakhstan'),(118, 3, 'Kazajstán'),(119, 1, 'Kenya'), +(119, 2, 'Kenya'),(119, 3, 'Kenya'),(120, 1, 'Kiribati'),(120, 2, 'Kiribati'),(120, 3, 'Kiribati'),(121, 1, 'Korea, Dem. Republic of'),(121, 2, 'Corée, Rép. Populaire Dém. de'),(121, 3, 'KOREA, DEM. República de'), +(122, 1, 'Kuwait'),(122, 2, 'Koweït'),(122, 3, 'Kuwait'),(123, 1, 'Kyrgyzstan'),(123, 2, 'Kirghizistan'),(123, 3, 'Kirguistán'),(124, 1, 'Laos'),(124, 2, 'Laos'), +(124, 3, 'Laos'),(125, 1, 'Latvia'),(125, 2, 'Lettonie'),(125, 3, 'Letonia'),(126, 1, 'Lebanon'),(126, 2, 'Liban'),(126, 3, 'Líbano'),(127, 1, 'Lesotho'), +(127, 2, 'Lesotho'),(127, 3, 'Lesotho'),(128, 1, 'Liberia'),(128, 2, 'Libéria'),(128, 3, 'Liberia'),(129, 1, 'Libya'),(129, 2, 'Libyenne, Jamahiriya Arabe'),(129, 3, 'Libia'), +(130, 1, 'Liechtenstein'),(130, 2, 'Liechtenstein'),(130, 3, 'Liechtenstein'),(131, 1, 'Lithuania'),(131, 2, 'Lituanie'),(131, 3, 'Lituania'),(132, 1, 'Macau'), +(132, 2, 'Macao'),(132, 3, 'Macao'),(133, 1, 'Macedonia'),(133, 2, 'Macédoine'),(133, 3, 'Macedonia'),(134, 1, 'Madagascar'),(134, 2, 'Madagascar'), +(134, 3, 'Madagascar'),(135, 1, 'Malawi'),(135, 2, 'Malawi'),(135, 3, 'Malawi'),(136, 1, 'Malaysia'),(136, 2, 'Malaisie'),(136, 3, 'Malasia'), +(137, 1, 'Maldives'),(137, 2, 'Maldives'),(137, 3, 'Maldivas'),(138, 1, 'Mali'),(138, 2, 'Mali'),(138, 3, 'Malí'),(139, 1, 'Malta'),(139, 2, 'Malte'), +(139, 3, 'Malta'),(140, 1, 'Marshall Islands'),(140, 2, 'Marshall, Îles'),(140, 3, 'Marshall, Islas'),(141, 1, 'Martinique'),(141, 2, 'Martinique'), +(141, 3, 'Martinica'),(142, 1, 'Mauritania'),(142, 2, 'Mauritanie'),(142, 3, 'Mauritania'),(143, 1, 'Hungary'),(143, 2, 'Hongrie'),(143, 3, 'Hungría'), +(144, 1, 'Mayotte'),(144, 2, 'Mayotte'),(144, 3, 'Mayotte'),(145, 1, 'Mexico'),(145, 2, 'Mexique'),(145, 3, 'México'),(146, 1, 'Micronesia'),(146, 2, 'Micronésie'), +(146, 3, 'Micronesia'),(147, 1, 'Moldova'),(147, 2, 'Moldova'),(147, 3, 'Moldavia'),(148, 1, 'Monaco'),(148, 2, 'Monaco'),(148, 3, 'Mónaco'), +(149, 1, 'Mongolia'),(149, 2, 'Mongolie'),(149, 3, 'Mongolia'),(150, 1, 'Montenegro'),(150, 2, 'Monténégro'),(150, 3, 'Montenegro'),(151, 1, 'Montserrat'), +(151, 2, 'Montserrat'),(151, 3, 'Montserrat'),(152, 1, 'Morocco'),(152, 2, 'Maroc'),(152, 3, 'Marruecos'),(153, 1, 'Mozambique'),(153, 2, 'Mozambique'),(153, 3, 'Mozambique'), +(154, 1, 'Namibia'),(154, 2, 'Namibie'),(154, 3, 'Namibia'),(155, 1, 'Nauru'),(155, 2, 'Nauru'),(155, 3, 'Nauru'),(156, 1, 'Nepal'),(156, 2, 'Népal'), +(156, 3, 'Nepal'),(157, 1, 'Netherlands Antilles'),(157, 2, 'Antilles Néerlandaises'),(157, 3, 'Antillas Neerlandesas'),(158, 1, 'New Caledonia'),(158, 2, 'Nouvelle-Calédonie'),(158, 3, 'Nueva Caledonia'), +(159, 1, 'Nicaragua'),(159, 2, 'Nicaragua'),(159, 3, 'Nicaragua'),(160, 1, 'Niger'),(160, 2, 'Niger'),(160, 3, 'Níger'),(161, 1, 'Niue'), +(161, 2, 'Niué'),(161, 3, 'Niue'),(162, 1, 'Norfolk Island'),(162, 2, 'Norfolk, Île'),(162, 3, 'Norfolk Island'),(163, 1, 'Northern Mariana Islands'),(163, 2, 'Mariannes du Nord, Îles'), +(163, 3, 'Islas Marianas del Norte'),(164, 1, 'Oman'),(164, 2, 'Oman'),(164, 3, 'Omán'),(165, 1, 'Pakistan'),(165, 2, 'Pakistan'),(165, 3, 'Pakistán'), +(166, 1, 'Palau'),(166, 2, 'Palaos'),(166, 3, 'Palau'),(167, 1, 'Palestinian Territories'),(167, 2, 'Palestinien Occupé, Territoire'),(167, 3, 'Territorios Palestinos'),(168, 1, 'Panama'), +(168, 2, 'Panama'),(168, 3, 'Panamá'),(169, 1, 'Papua New Guinea'),(169, 2, 'Papouasie-Nouvelle-Guinée'),(169, 3, 'Papua Nueva Guinea'),(170, 1, 'Paraguay'),(170, 2, 'Paraguay'), +(170, 3, 'Paraguay'),(171, 1, 'Peru'),(171, 2, 'Pérou'),(171, 3, 'Perú'),(172, 1, 'Philippines'),(172, 2, 'Philippines'),(172, 3, 'Filipinas'),(173, 1, 'Pitcairn'), +(173, 2, 'Pitcairn'),(173, 3, 'Pitcairn'),(174, 1, 'Puerto Rico'),(174, 2, 'Porto Rico'),(174, 3, 'Puerto Rico'),(175, 1, 'Qatar'),(175, 2, 'Qatar'),(175, 3, 'Qatar'), +(176, 1, 'Reunion Island'),(176, 2, 'Réunion, Île de la'),(176, 3, 'Reunión, Isla de la'),(177, 1, 'Russian Federation'),(177, 2, 'Russie, Fédération de'),(177, 3, 'Rusia, Federación de'),(178, 1, 'Rwanda'), +(178, 2, 'Rwanda'),(178, 3, 'Rwanda'),(179, 1, 'Saint Barthelemy'),(179, 2, 'Saint-Barthélemy'),(179, 3, 'San Bartolomé'),(180, 1, 'Saint Kitts and Nevis'),(180, 2, 'Saint-Kitts-et-Nevis'), +(180, 3, 'Saint Kitts y Nevis'),(181, 1, 'Saint Lucia'),(181, 2, 'Sainte-Lucie'),(181, 3, 'Santa Lucía'),(182, 1, 'Saint Martin'),(182, 2, 'Saint-Martin'),(182, 3, 'Saint Martin'), +(183, 1, 'Saint Pierre and Miquelon'),(183, 2, 'Saint-Pierre-et-Miquelon'),(183, 3, 'San Pedro y Miquelón'),(184, 1, 'Saint Vincent and the Grenadines'),(184, 2, 'Saint-Vincent-et-Les Grenadines'),(184, 3, 'San Vicente y las Granadinas'),(185, 1, 'Samoa'), +(185, 2, 'Samoa'),(185, 3, 'Samoa'),(186, 1, 'San Marino'),(186, 2, 'Saint-Marin'),(186, 3, 'San Marino'),(187, 1, 'São Tomé and Príncipe'),(187, 2, 'Sao Tomé-et-Principe'),(187, 3, 'Santo Tomé y Príncipe'), +(188, 1, 'Saudi Arabia'),(188, 2, 'Arabie Saoudite'),(188, 3, 'Arabia Saudita'),(189, 1, 'Senegal'),(189, 2, 'Sénégal'),(189, 3, 'Senegal'),(190, 1, 'Serbia'), +(190, 2, 'Serbie'),(190, 3, 'Serbia'),(191, 1, 'Seychelles'),(191, 2, 'Seychelles'),(191, 3, 'Seychelles'),(192, 1, 'Sierra Leone'),(192, 2, 'Sierra Leone'), +(192, 3, 'Sierra Leona'),(193, 1, 'Slovenia'),(193, 2, 'Slovénie'),(193, 3, 'Eslovenia'),(194, 1, 'Solomon Islands'),(194, 2, 'Salomon, Îles'),(194, 3, 'Salomón, Islas'),(195, 1, 'Somalia'), +(195, 2, 'Somalie'),(195, 3, 'Somalia'),(196, 1, 'South Georgia and the South Sandwich Islands'),(196, 2, 'Géorgie du Sud et les Îles Sandwich du Sud'),(196, 3, 'Georgia del Sur e Islas Sandwich del Sur'),(197, 1, 'Sri Lanka'),(197, 2, 'Sri Lanka'), +(197, 3, 'Sri Lanka'),(198, 1, 'Sudan'),(198, 2, 'Soudan'),(198, 3, 'Sudán'),(199, 1, 'Suriname'),(199, 2, 'Suriname'),(199, 3, 'Suriname'),(200, 1, 'Svalbard and Jan Mayen'), +(200, 2, 'Svalbard et Île Jan Mayen'),(200, 3, 'Svalbard y Jan Mayen'),(201, 1, 'Swaziland'),(201, 2, 'Swaziland'),(201, 3, 'Swazilandia'),(202, 1, 'Syria'),(202, 2, 'Syrienne'), +(202, 3, 'Siria'),(203, 1, 'Taiwan'),(203, 2, 'Taïwan'),(203, 3, 'Taiwán'),(204, 1, 'Tajikistan'),(204, 2, 'Tadjikistan'),(204, 3, 'Tayikistán'), +(205, 1, 'Tanzania'),(205, 2, 'Tanzanie'),(205, 3, 'Tanzania'),(206, 1, 'Thailand'),(206, 2, 'Thaïlande'),(206, 3, 'Tailandia'),(207, 1, 'Tokelau'), +(207, 2, 'Tokelau'),(207, 3, 'Tokelau'),(208, 1, 'Tonga'),(208, 2, 'Tonga'),(208, 3, 'Tonga'),(209, 1, 'Trinidad and Tobago'),(209, 2, 'Trinité-et-Tobago'),(209, 3, 'Trinidad y Tobago'), +(210, 1, 'Tunisia'),(210, 2, 'Tunisie'),(210, 3, 'Túnez'),(211, 1, 'Turkey'),(211, 2, 'Turquie'),(211, 3, 'Turquía'),(212, 1, 'Turkmenistan'),(212, 2, 'Turkménistan'), +(212, 3, 'Turkmenistán'),(213, 1, 'Turks and Caicos Islands'),(213, 2, 'Turks et Caiques, Îles'),(213, 3, 'Islas Turcas y Caicos'),(214, 1, 'Tuvalu'),(214, 2, 'Tuvalu'),(214, 3, 'Tuvalu'), +(215, 1, 'Uganda'),(215, 2, 'Ouganda'),(215, 3, 'Uganda'),(216, 1, 'Ukraine'),(216, 2, 'Ukraine'),(216, 3, 'Ucrania'),(217, 1, 'United Arab Emirates'), +(217, 2, 'Émirats Arabes Unis'),(217, 3, 'Emiratos Árabes Unidos'),(218, 1, 'Uruguay'),(218, 2, 'Uruguay'),(218, 3, 'Uruguay'),(219, 1, 'Uzbekistan'),(219, 2, 'Ouzbékistan'), +(219, 3, 'Uzbekistán'),(220, 1, 'Vanuatu'),(220, 2, 'Vanuatu'),(220, 3, 'Vanuatu'),(221, 1, 'Venezuela'),(221, 2, 'Venezuela'),(221, 3, 'Venezuela'), +(222, 1, 'Vietnam'),(222, 2, 'Vietnam'),(222, 3, 'Vietnam'),(223, 1, 'Virgin Islands (British)'),(223, 2, 'Îles Vierges Britanniques'),(223, 3, 'Islas Vírgenes (Británicas)'),(224, 1, 'Virgin Islands (U.S.)'), +(224, 2, 'Îles Vierges des États-Unis'),(224, 3, 'Islas Vírgenes (EE.UU.)'),(225, 1, 'Wallis and Futuna'),(225, 2, 'Wallis et Futuna'),(225, 3, 'Wallis y Futuna'),(226, 1, 'Western Sahara'),(226, 2, 'Sahara Occidental'), +(226, 3, 'Sáhara Occidental'),(227, 1, 'Yemen'),(227, 2, 'Yémen'),(227, 3, 'Yemen'),(228, 1, 'Zambia'),(228, 2, 'Zambie'),(228, 3, 'Zambia'),(229, 1, 'Zimbabwe'), +(229, 2, 'Zimbabwe'),(229, 3, 'Zimbabwe'),(230, 1, 'Albania'),(230, 2, 'Albanie'),(230, 3, 'Albania'),(231, 1, 'Afghanistan'),(231, 2, 'Afghanistan'),(231, 3, 'Afganistán'), +(232, 1, 'Antarctica'),(232, 2, 'Antarctique'),(232, 3, 'Antártida'),(233, 1, 'Bosnia and Herzegovina'),(233, 2, 'Bosnie-Herzégovine'),(233, 3, 'Bosnia y Herzegovina'),(234, 1, 'Bouvet Island'), +(234, 2, 'Bouvet, Île'),(234, 3, 'Isla Bouvet'),(235, 1, 'British Indian Ocean Territory'),(235, 2, 'Océan Indien, Territoire Britannique de L'''),(235, 3, 'British Indian Ocean Territory'),(236, 1, 'Bulgaria'),(236, 2, 'Bulgarie'), +(236, 3, 'Bulgaria'),(237, 1, 'Cayman Islands'),(237, 2, 'Caïmans, Îles'),(237, 3, 'Caimán, Islas'),(238, 1, 'Christmas Island'),(238, 2, 'Christmas, Île'),(238, 3, 'Navidad, Isla de'), +(239, 1, 'Cocos (Keeling) Islands'),(239, 2, 'Cocos (Keeling), Îles'),(239, 3, 'Cocos (Keeling), Islas'),(240, 1, 'Cook Islands'),(240, 2, 'Cook, Îles'),(240, 3, 'Cook, Islas'), +(241, 1, 'French Guiana'),(241, 2, 'Guyane Française'),(241, 3, 'Francés Guayana'),(242, 1, 'French Polynesia'),(242, 2, 'Polynésie Française'),(242, 3, 'Polinesia francés'),(243, 1, 'French Southern Territories'), +(243, 2, 'Terres Australes Françaises'),(243, 3, 'Territorios del sur francés'),(244, 1, 'Åland Islands'),(244, 2, 'Åland, Îles'),(244, 3, 'Islas Åland'); + +INSERT IGNORE INTO `PREFIX_country_lang` (`id_country`, `id_lang`, `name`) + (SELECT `id_country`, id_lang, (SELECT tl.`name` + FROM `PREFIX_country_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_country`=`PREFIX_country`.`id_country`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_country`); + +INSERT INTO `PREFIX_state` (`id_state`, `id_country`, `id_zone`, `name`, `iso_code`, `active`) VALUES +(1, 21, 2, 'Alabama', 'AL', 1),(2, 21, 2, 'Alaska', 'AK', 1),(3, 21, 2, 'Arizona', 'AZ', 1),(4, 21, 2, 'Arkansas', 'AR', 1), +(5, 21, 2, 'California', 'CA', 1),(6, 21, 2, 'Colorado', 'CO', 1),(7, 21, 2, 'Connecticut', 'CT', 1),(8, 21, 2, 'Delaware', 'DE', 1), +(9, 21, 2, 'Florida', 'FL', 1),(10, 21, 2, 'Georgia', 'GA', 1),(11, 21, 2, 'Hawaii', 'HI', 1),(12, 21, 2, 'Idaho', 'ID', 1), +(13, 21, 2, 'Illinois', 'IL', 1),(14, 21, 2, 'Indiana', 'IN', 1),(15, 21, 2, 'Iowa', 'IA', 1),(16, 21, 2, 'Kansas', 'KS', 1), +(17, 21, 2, 'Kentucky', 'KY', 1),(18, 21, 2, 'Louisiana', 'LA', 1),(19, 21, 2, 'Maine', 'ME', 1),(20, 21, 2, 'Maryland', 'MD', 1), +(21, 21, 2, 'Massachusetts', 'MA', 1),(22, 21, 2, 'Michigan', 'MI', 1),(23, 21, 2, 'Minnesota', 'MN', 1), +(24, 21, 2, 'Mississippi', 'MS', 1),(25, 21, 2, 'Missouri', 'MO', 1),(26, 21, 2, 'Montana', 'MT', 1),(27, 21, 2, 'Nebraska', 'NE', 1), +(28, 21, 2, 'Nevada', 'NV', 1),(29, 21, 2, 'New Hampshire', 'NH', 1),(30, 21, 2, 'New Jersey', 'NJ', 1),(31, 21, 2, 'New Mexico', 'NM', 1), +(32, 21, 2, 'New York', 'NY', 1),(33, 21, 2, 'North Carolina', 'NC', 1),(34, 21, 2, 'North Dakota', 'ND', 1),(35, 21, 2, 'Ohio', 'OH', 1), +(36, 21, 2, 'Oklahoma', 'OK', 1),(37, 21, 2, 'Oregon', 'OR', 1),(38, 21, 2, 'Pennsylvania', 'PA', 1),(39, 21, 2, 'Rhode Island', 'RI', 1), +(40, 21, 2, 'South Carolina', 'SC', 1),(41, 21, 2, 'South Dakota', 'SD', 1),(42, 21, 2, 'Tennessee', 'TN', 1),(43, 21, 2, 'Texas', 'TX', 1), +(44, 21, 2, 'Utah', 'UT', 1),(45, 21, 2, 'Vermont', 'VT', 1),(46, 21, 2, 'Virginia', 'VA', 1),(47, 21, 2, 'Washington', 'WA', 1), +(48, 21, 2, 'West Virginia', 'WV', 1),(49, 21, 2, 'Wisconsin', 'WI', 1),(50, 21, 2, 'Wyoming', 'WY', 1),(51, 21, 2, 'Puerto Rico', 'PR', 1), +(52, 21, 2, 'US Virgin Islands', 'VI', 1),(53, 21, 2, 'District of Columbia', 'DC', 1); + +INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `tax_behavior`, `active`) VALUES +(145, 2, 'Aguascalientes', 'AGS', 0, 1), +(145, 2, 'Baja California', 'BCN', 0, 1), +(145, 2, 'Baja California Sur', 'BCS', 0, 1), +(145, 2, 'Campeche', 'CAM', 0, 1), +(145, 2, 'Chiapas', 'CHP', 0, 1), +(145, 2, 'Chihuahua', 'CHH', 0, 1), +(145, 2, 'Coahuila', 'COA', 0, 1), +(145, 2, 'Colima', 'COL', 0, 1), +(145, 2, 'Distrito Federal', 'DIF', 0, 1), +(145, 2, 'Durango', 'DUR', 0, 1), +(145, 2, 'Guanajuato', 'GUA', 0, 1), +(145, 2, 'Guerrero', 'GRO', 0, 1), +(145, 2, 'Hidalgo', 'HID', 0, 1), +(145, 2, 'Jalisco', 'JAL', 0, 1), +(145, 2, 'Estado de México', 'MEX', 0, 1), +(145, 2, 'Michoacán', 'MIC', 0, 1), +(145, 2, 'Morelos', 'MOR', 0, 1), +(145, 2, 'Nayarit', 'NAY', 0, 1), +(145, 2, 'Nuevo León', 'NLE', 0, 1), +(145, 2, 'Oaxaca', 'OAX', 0, 1), +(145, 2, 'Puebla', 'PUE', 0, 1), +(145, 2, 'Querétaro', 'QUE', 0, 1), +(145, 2, 'Quintana Roo', 'ROO', 0, 1), +(145, 2, 'San Luis Potosí', 'SLP', 0, 1), +(145, 2, 'Sinaloa', 'SIN', 0, 1), +(145, 2, 'Sonora', 'SON', 0, 1), +(145, 2, 'Tabasco', 'TAB', 0, 1), +(145, 2, 'Tamaulipas', 'TAM', 0, 1), +(145, 2, 'Tlaxcala', 'TLA', 0, 1), +(145, 2, 'Veracruz', 'VER', 0, 1), +(145, 2, 'Yucatán', 'YUC', 0, 1), +(145, 2, 'Zacatecas', 'ZAC', 0, 1); + +INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `active`) VALUES +(4, 2, 'Ontario', 'ON', 1), +(4, 2, 'Quebec', 'QC', 1), +(4, 2, 'British Columbia', 'BC', 1), +(4, 2, 'Alberta', 'AB', 1), +(4, 2, 'Manitoba', 'MB', 1), +(4, 2, 'Saskatchewan', 'SK', 1), +(4, 2, 'Nova Scotia', 'NS', 1), +(4, 2, 'New Brunswick', 'NB', 1), +(4, 2, 'Newfoundland and Labrador', 'NL', 1), +(4, 2, 'Prince Edward Island', 'PE', 1), +(4, 2, 'Northwest Territories', 'NT', 1), +(4, 2, 'Yukon', 'YT', 1), +(4, 2, 'Nunavut', 'NU', 1); + +INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `active`) VALUES +(44, 6, 'Buenos Aires', 'B', 1), +(44, 6, 'Catamarca', 'K', 1), +(44, 6, 'Chaco', 'H', 1), +(44, 6, 'Chubut', 'U', 1), +(44, 6, 'Ciudad de Buenos Aires', 'C', 1), +(44, 6, 'Córdoba', 'X', 1), +(44, 6, 'Corrientes', 'W', 1), +(44, 6, 'Entre Ríos', 'E', 1), +(44, 6, 'Formosa', 'P', 1), +(44, 6, 'Jujuy', 'Y', 1), +(44, 6, 'La Pampa', 'L', 1), +(44, 6, 'La Rioja', 'F', 1), +(44, 6, 'Mendoza', 'M', 1), +(44, 6, 'Misiones', 'N', 1), +(44, 6, 'Neuquén', 'Q', 1), +(44, 6, 'Río Negro', 'R', 1), +(44, 6, 'Salta', 'A', 1), +(44, 6, 'San Juan', 'J', 1), +(44, 6, 'San Luis', 'D', 1), +(44, 6, 'Santa Cruz', 'Z', 1), +(44, 6, 'Santa Fe', 'S', 1), +(44, 6, 'Santiago del Estero', 'G', 1), +(44, 6, 'Tierra del Fuego', 'V', 1), +(44, 6, 'Tucumán', 'T', 1); + +INSERT INTO `PREFIX_currency` (`name`, `iso_code`, `iso_code_num`, `sign`, `blank`, `conversion_rate`, `format`, `deleted`, `active`) VALUES +('Euro', 'EUR', '978', '€', 1, 1, 2, 0, 1), ('Dollar', 'USD', '840', '$', 0, 1.32, 1, 0, 1), ('Pound', 'GBP', '826', '£', 0, 0.8, 1, 0, 1); +/*('Yen', 'JPY', '392', '¥', 0, 113.14, 2, 0, 0), +('Lev', 'BGN', '975', 'лв', 1, 1.96, 2, 0, 0), ('Couronne', 'CZK', '203', 'Kč', 1, 24.58, 2, 0, 0), ('Couronne', 'DKK', '208', 'kr', 1, 7.45, 2, 0, 0), +('Couronne', 'EEK', '233', 'kr', 1, 15.65, 2, 0, 0), ('Forint', 'HUF', '348', 'Ft', 1, 279.65, 2, 0, 0), ('Litas', 'LTL', '440', 'Lt', 1, 3.45, 2, 0, 0), +('Lats letton', 'LVL', '428', 'Ls', 1, 0.71, 2, 0, 0), ('Zloty', 'PLN', '985', 'zł', 1, 3.94, 2, 0, 0), ('Leu', 'RON', '946', 'lei', 1, 4.26, 2, 0, 0), +('Couronne', 'SEK', '752', 'kr', 1, 9.13, 2, 0, 0), ('Franc Suisse', 'CHF', '756', 'CHF', 1, 1.32, 2, 0, 0), ('Couronne', 'NOK', '578', 'kr', 1, 7.90, 2, 0, 0), +('Kuna', 'HRK', '191', 'kn', 1, 7.28, 2, 0, 0), ('Rouble', 'RUB', '643', 'руб', 1, 41.46, 2, 0, 0), ('Livre', 'TRY', '949', 'TL', 1, 1.98, 2, 0, 0), +('Australian Dollar', 'AUD', '036', '$', 1, 1.40, 2, 0, 0), ('Réal', 'BRL', '986', 'R$', 1, 2.28, 2, 0, 0), ('Canadian Dollar', 'CAD', '124', '$', 1, 1.37, 2, 0, 0), +('Yuan renminbi', 'CNY', '156', '¥', 1, 8.96, 2, 0, 0), ('Hong Kong Dollar', 'HKD', '344', '$', 1, 10.37, 2, 0, 0), ('Rupiah', 'IDR', '360', 'Rp', 1, 11956.81, 2, 0, 0), +('Rupees', 'INR', '356', 'rupees', 1, 60.93, 2, 0, 0), ('Won', 'KRW', '410', '₩', 1, 1537.58, 2, 0, 0), ('Mexican Peso', 'MXN', '484', '$', 1, 16.96, 2, 0, 0), +('Ringgit', 'MYR', '458', 'RM', 1, 4.13, 2, 0, 0), ('New-Zeland Dollar', 'NZD', '554', '$', 1, 1.81, 2, 0, 0), ('Peso Phillipin', 'PHP', '608', 'Php', 1, 58.61, 2, 0, 0), +('Singapour Dollar', 'SGD', '702', '$', 1, 1.77, 2, 0, 0), ('Baht', 'THB', '764', '฿', 1, 40.96, 2, 0, 0), ('Rand', 'ZAR', '710', 'R', 1, 9.38, 2, 0, 0);*/ + +INSERT INTO `PREFIX_image_type` (`id_image_type`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`) VALUES +(1, 'small', 45, 45, 1, 1, 1, 1, 0), +(2, 'medium', 80, 80, 1, 1, 1, 1, 0), +(3, 'large', 300, 300, 1, 1, 1, 1, 0), +(4, 'thickbox', 600, 600, 1, 0, 0, 0, 0), +(5, 'category', 500, 150, 0, 1, 0, 0, 0), +(6, 'home', 129, 129, 1, 0, 0, 0, 0), +(7, 'large_scene', 556, 200, 0, 0, 0, 0, 1), +(8, 'thumb_scene', 161, 58, 0, 0, 0, 0, 1); + +INSERT INTO `PREFIX_contact_lang` (`id_contact`, `id_lang`, `name`, `description`) VALUES +(1, 1, 'Webmaster', 'If a technical problem occurs on this website'), +(1, 2, 'Webmaster', 'Si un problème technique survient sur le site'), +(1, 3, 'Webmaster', 'Si se produce un problema técnico en el sitio'), +(1, 4, 'Webmaster', 'Falls ein technisches Problem auf der Webseite auftritt'), +(1, 5, 'Webmaster', 'Se nel sito interviene un problema tecnico'), +(2, 1, 'Customer service', 'For any question about a product, an order'), +(2, 2, 'Service client', 'Pour toute question ou réclamation sur une commande'), +(2, 3, 'Service client', 'Para cualquier pregunta o queja acerca de un pedido'), +(2, 4, 'Kundenservice', 'Bei Fragen oder Reklamationen zu einer Bestellung'), +(2, 5, 'Servizio clienti', 'Per qualsiasi domanda o reclamo riguardo ad un ordine'); + +INSERT INTO `PREFIX_discount_type` (`id_discount_type`) VALUES (1),(2),(3); +INSERT INTO `PREFIX_discount_type_lang` (`id_discount_type`, `id_lang`, `name`) VALUES +(1, 1, 'Discount on order (%)'),(2, 1, 'Discount on order (amount)'),(3, 1, 'Free shipping'), +(1, 2, 'Réduction sur la commande (%)'),(2, 2, 'Réduction sur la commande (montant)'),(3, 2, 'Frais de port gratuits'), +(1, 3, 'Descuento orden (%)'),(2, 3, 'Descuento (el orden de cantidad)'),(3, 3, 'Gastos de envío gratis'), +(1, 4, 'Preisnachlass auf die Bestellung (%)'),(2, 4, 'Preisnachlass auf die Bestellung (Betrag)'),(3, 4, 'Versandkosten gratis'), +(1, 5, 'Sconto sull’ordine (%)'),(2, 5, 'Sconto sull’ordine (importo)'),(3, 5, 'Spese di porto gratuite'); + +INSERT INTO `PREFIX_profile` (`id_profile`) VALUES (1); +INSERT INTO `PREFIX_profile_lang` (`id_profile`, `id_lang`, `name`) VALUES (1, 1, 'Administrator'),(1, 2, 'Administrateur'),(1, 3, 'Administrador'),(1, 4, 'Administrator'),(1, 5, 'Administrator'); + +INSERT INTO `PREFIX_tab` (`id_tab`, `class_name`, `id_parent`, `position`) VALUES (1, 'AdminCatalog', 0, 1),(2, 'AdminCustomers', 0, 2),(3, 'AdminOrders', 0, 3), +(4, 'AdminPayment', 0, 4),(5, 'AdminShipping', 0, 5),(6, 'AdminStats', 0, 6),(7, 'AdminModules', 0, 7),(29, 'AdminEmployees', 0, 8),(8, 'AdminPreferences', 0, 9), +(9, 'AdminTools', 0, 10),(82, 'AdminStores', 9, 11),(60, 'AdminTracking', 1, 1),(10, 'AdminManufacturers', 1, 2),(34, 'AdminSuppliers', 1, 3),(11, 'AdminAttributesGroups', 1, 4), +(36, 'AdminFeatures', 1, 5),(58, 'AdminScenes', 1, 6),(66, 'AdminTags', 1, 7),(68, 'AdminAttachments', 1, 7),(12, 'AdminAddresses', 2, 1),(63, 'AdminGroups', 2, 2), +(65, 'AdminCarts', 2, 3),(42, 'AdminInvoices', 3, 1),(55, 'AdminDeliverySlip', 3, 2),(47, 'AdminReturn', 3, 3),(49, 'AdminSlip', 3, 4),(59, 'AdminMessages', 3, 5), +(13, 'AdminStatuses', 3, 6),(54, 'AdminOrderMessage', 3, 7),(14, 'AdminDiscounts', 4, 4),(15, 'AdminCurrencies', 4, 1),(16, 'AdminTaxes', 4, 2), +(17, 'AdminCarriers', 5, 1),(46, 'AdminStates', 5, 2),(18, 'AdminCountries', 5, 3),(19, 'AdminZones', 5, 5),(20, 'AdminRangePrice', 5, 6), +(21, 'AdminRangeWeight', 5, 7),(51, 'AdminStatsConf', 6, 1),(61, 'AdminSearchEngines', 6, 2),(62, 'AdminReferrers', 6, 3), +(22, 'AdminModulesPositions', 7, 4),(30, 'AdminProfiles', 29, 1),(31, 'AdminAccess', 29, 2),(28, 'AdminContacts', 29, 3),(39, 'AdminContact', 8, 1), +(38, 'AdminAppearance', 8, 2),(56, 'AdminMeta', 8, 3),(27, 'AdminPPreferences', 8, 4),(24, 'AdminEmails', 8, 5),(26, 'AdminImages', 8, 6),(23, 'AdminDb', 8, 7), +(48, 'AdminPDF', 3, 8),(44, 'AdminLocalization', 8, 9),(67, 'AdminSearchConf', 8, 10),(32, 'AdminLanguages', 9, 1),(33, 'AdminTranslations', 9, 2), +(35, 'AdminTabs', 29, 3),(37, 'AdminQuickAccesses', 9, 4),(40, 'AdminAliases', 8, 5),(41, 'AdminImport', 9, 6),(52, 'AdminSubDomains', 9, 7), +(53, 'AdminBackup', 9, 8),(57, 'AdminCMSContent', 9, 9),(64, 'AdminGenerator', 9, 10),(43, 'AdminSearch', -1, 0),(69, 'AdminInformation', 9, 11), +(70, 'AdminPerformance', 8, 11),(71, 'AdminCustomerThreads', 29, 4),(72, 'AdminWebservice', 9, 12),(73, 'AdminStockMvt', 1, 9), +(80, 'AdminAddonsCatalog', 7, 1),(81, 'AdminAddonsMyAccount', 7, 2),(83, 'AdminThemes', 7, 3),(84, 'AdminGeolocation', 8, 12), +(85, 'AdminTaxRulesGroup', 4, 3),(86, 'AdminLogs', 9, 13), (87, 'AdminCounty', 5, 4),(88,'AdminHome',-1,0); + +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) (SELECT 1, id_tab, 1, 1, 1, 1 FROM PREFIX_tab); + +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES +(1, 1, 'Catalog'),(1, 2, 'Customers'),(1, 3, 'Orders'),(1, 4, 'Payment'), +(1, 5, 'Shipping'),(1, 6, 'Stats'),(1, 7, 'Modules'),(1, 8, 'Preferences'),(1, 9, 'Tools'),(1, 10, 'Manufacturers'),(1, 11, 'Attributes and Groups'), +(1, 12, 'Addresses'),(1, 13, 'Statuses'),(1, 14, 'Vouchers'),(1, 15, 'Currencies'),(1, 16, 'Taxes'),(1, 17, 'Carriers'),(1, 18, 'Countries'), +(1, 19, 'Zones'),(1, 20, 'Price Ranges'),(1, 21, 'Weight Ranges'),(1, 22, 'Positions'),(1, 23, 'Database'),(1, 24, 'E-mail'),(1, 26, 'Image'), +(1, 27, 'Products'),(1, 28, 'Contacts'),(1, 29, 'Employees'),(1, 30, 'Profiles'),(1, 31, 'Permissions'),(1, 32, 'Languages'),(1, 33, 'Translations'), +(1, 34, 'Suppliers'),(1, 35, 'Tabs'),(1, 36, 'Features'),(1, 37, 'Quick Access'),(1, 38, 'Appearance'),(1, 39, 'Contact Information'),(1, 40, 'Aliases'), +(1, 41, 'Import'),(1, 42, 'Invoices'),(1, 43, 'Search'),(1, 44, 'Localization'),(1, 46, 'States'),(1, 47, 'Merchandise Returns'),(1, 48, 'PDF'), +(1, 49, 'Credit Slips'),(1, 51, 'Settings'),(1, 52, 'Subdomains'),(1, 53, 'DB backup'),(1, 54, 'Order Messages'), +(1, 55, 'Delivery Slips'),(1, 56, 'SEO & URLs'),(1, 57, 'CMS'),(1, 58, 'Image Mapping'),(1, 59, 'Customer Messages'),(1, 60, 'Tracking'), +(1, 61, 'Search Engines'),(1, 62, 'Referrers'),(1, 63, 'Groups'),(1, 64, 'Generators'),(1, 65, 'Shopping Carts'),(1, 66, 'Tags'),(1, 67, 'Search'), +(1, 68, 'Attachments'),(1, 69, 'Configuration Information'),(1, 70, 'Performance'),(1, 71, 'Customer Service'),(1, 72, 'Webservice'),(1, 73, 'Stock Movements'), +(1, 80, 'Modules & Themes Catalog'),(1, 81, 'My Account'),(1, 82, 'Stores'),(1, 83, 'Themes'),(1, 84, 'Geolocation'),(1, 85, 'Tax Rules'),(1, 86, 'Log'), +(1, 87, 'Counties'),(1, 88, 'Home'); + +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES +(2, 1, 'Catalogue'),(2, 2, 'Clients'),(2, 3, 'Commandes'),(2, 4, 'Paiement'),(2, 5, 'Transport'), +(2, 6, 'Stats'),(2, 7, 'Modules'),(2, 8, 'Préférences'),(2, 9, 'Outils'),(2, 10, 'Fabricants'),(2, 11, 'Attributs et groupes'),(2, 12, 'Adresses'),(2, 13, 'Statuts'), +(2, 14, 'Bons de réduction'),(2, 15, 'Devises'),(2, 16, 'Taxes'),(2, 17, 'Transporteurs'),(2, 18, 'Pays'),(2, 19, 'Zones'),(2, 20, 'Tranches de prix'), +(2, 21, 'Tranches de poids'),(2, 22, 'Positions'),(2, 23, 'Base de données'),(2, 24, 'Emails'),(2, 26, 'Images'),(2, 27, 'Produits'),(2, 28, 'Contacts'), +(2, 29, 'Employés'),(2, 30, 'Profils'),(2, 31, 'Permissions'),(2, 32, 'Langues'),(2, 33, 'Traductions'),(2, 34, 'Fournisseurs'),(2, 35, 'Onglets'), +(2, 36, 'Caractéristiques'),(2, 37, 'Accès rapide'),(2, 38, 'Apparence'),(2, 39, 'Coordonnées'),(2, 40, 'Alias'),(2, 41, 'Import'),(2, 42, 'Factures'), +(2, 43, 'Recherche'),(2, 44, 'Localisation'),(2, 46, 'Etats'),(2, 47, 'Retours produits'),(2, 48, 'PDF'),(2, 49, 'Avoirs'), +(2, 51, 'Configuration'),(2, 52, 'Sous domaines'),(2, 53, 'Sauvegarde BDD'),(2, 54, 'Messages prédéfinis'),(2, 55, 'Bons de livraison'), +(2, 56, 'SEO & URLs'),(2, 57, 'CMS'),(2, 58, 'Scènes'),(2, 59, 'Messages clients'),(2, 60, 'Suivi'),(2, 61, 'Moteurs de recherche'), +(2, 62, 'Sites affluents'),(2, 63, 'Groupes'),(2, 64, 'Générateurs'),(2, 65, 'Paniers'),(2, 66, 'Tags'),(2, 67, 'Recherche'), +(2, 68, 'Documents joints'),(2, 69, 'Informations'),(2, 70, 'Performances'),(2, 71, 'SAV'),(2, 72, 'Service web'),(2, 73, 'Mouvements de Stock'), +(2, 80, 'Catalogue de modules et thèmes'),(2, 81, 'Mon compte'),(2, 82, 'Magasins'),(2, 83, 'Thèmes'),(2, 84, 'Géolocalisation'),(2, 85, 'Règles de taxes'),(2, 86, 'Log'), +(2, 87, 'Comtés'),(2,88,'Accueil'); + +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES +(3, 1, 'Catálogo'),(3, 2, 'Clientes'),(3, 3, 'Pedidos'),(3, 4, 'Pago'),(3, 5, 'Transporte'), +(3, 6, 'Estadísticas'),(3, 7, 'Módulos'),(3, 8, 'Preferencias'),(3, 9, 'Herramientas'),(3, 10, 'Fabricantes'),(3, 11, 'Atributos y grupos'),(3, 12, 'Direcciones'), +(3, 13, 'Estados'),(3, 14, 'Vales de descuento'),(3, 15, 'Divisas'),(3, 16, 'Impuestos'),(3, 17, 'Transportistas'),(3, 18, 'Países'),(3, 19, 'Zonas'), +(3, 20, 'Franja de precios'),(3, 21, 'Franja de pesos'),(3, 22, 'Posiciones'),(3, 23, 'Base de datos'),(3, 24, 'Emails'),(3, 26, 'Imágenes'), +(3, 27, 'Productos'),(3, 28, 'Contactos'),(3, 29, 'Empleados'),(3, 30, 'Perfiles'),(3, 31, 'Permisos'),(3, 32, 'Idiomas'),(3, 33, 'Traducciones'), +(3, 34, 'Proovedores'),(3, 35, 'Pestañas'),(3, 36, 'Características'),(3, 37, 'Acceso rápido'),(3, 38, 'Aspecto'),(3, 39, 'Datos'),(3, 40, 'Alias'), +(3, 41, 'Importar'),(3, 42, 'Facturas'),(3, 43, 'Búsqueda'),(3, 44, 'Ubicación'),(3, 46, 'Estados'),(3, 47, 'Devolución productos'),(3, 48, 'PDF'), +(3, 49, 'Vales'),(3, 51, 'Configuración'),(3, 52, 'Subcampos'),(3, 53, 'Copia de seguridad'),(3, 54, 'Mensajes de Orden'), +(3, 55, 'Albaranes de entrega'),(3, 56, 'SEO & URLs'),(3, 57, 'CMS'),(3, 58, 'Mapeo de la imagen'),(3, 59, 'Mensajes del cliente'),(3, 60, 'Rastreo'), +(3, 61, 'Motores de búsqueda'),(3, 62, 'Referido'),(3, 63, 'Grupos'),(3, 64, 'Generadores'),(3, 65, 'Carritos'),(3, 66, 'Etiquetas'),(3, 67, 'Búsqueda'),(3, 68, 'Adjuntos'), +(3, 69, 'Informations'),(3, 70, 'Rendimiento'),(3, 72, 'Web service'),(3, 71, 'Servicio al cliente'),(3, 73, 'Movimiento de Stock'), (3, 82, 'Tiendas'),(3, 83, 'Temas'),(3, 84, 'Geolocalización'),(3, 85, 'Reglas de Impuestos'),(3, 86, 'Log'), +(3, 87, 'Condados'),(3,88,'Home'); + +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES +(4, 1, 'Katalog'),(4, 2, 'Kunden'),(4, 3, 'Bestellungen'),(4, 4, 'Zahlung'), +(4, 5, 'Versandkosten'),(4, 6, 'Statistik'),(4, 7, 'Module'),(4, 8, 'Voreinstellungen'),(4, 9, 'Tools'),(4, 10, 'Hersteller'),(4, 11, 'Attribute und Gruppen'), +(4, 12, 'Adressen'),(4, 13, 'Status'),(4, 14, 'Gutscheine'),(4, 15, 'Währungen'),(4, 16, 'Steuern'),(4, 17, 'Lieferanten'),(4, 18, 'Länder'), +(4, 19, 'Zonen'),(4, 20, 'Preislagen'),(4, 21, 'Gewichtsklassen'),(4, 22, 'Positionen'),(4, 23, 'Datenbank'),(4, 24, 'E-Mail'),(4, 26, 'Bild'), +(4, 27, 'Produkte'),(4, 28, 'Kontakte'),(4, 29, 'Mitarbeiter'),(4, 30, 'Profile'),(4, 31, 'Berechtigungen'),(4, 32, 'Sprachen'),(4, 33, 'Übersetzungen'), +(4, 34, 'Zulieferer'),(4, 35, 'Tabs'),(4, 36, 'Funktionen'),(4, 37, 'Schnellzugriff'),(4, 38, 'Aussehen'),(4, 39, 'Kontaktinformation'),(4, 40, 'Alias'), +(4, 41, 'Import'),(4, 42, 'Rechnungen'),(4, 43, 'Suche'),(4, 44, 'Lokalisierung'),(4, 46, 'Staaten'),(4, 47, 'Warenrücksendungen'),(4, 48, 'PDF'), +(4, 49, 'Gutscheine'),(4, 51, 'Einstellungen'),(4, 52, 'Subdomains'),(4, 53, 'DB-Backup'),(4, 54, 'Bestellnachrichten'), +(4, 55, 'Lieferscheine'),(4, 56, 'SEO & URLs'),(4, 57, 'CMS'),(4, 58, 'Image Mapping'),(4, 59, 'Kundennachrichten'),(4, 60, 'Tracking'), +(4, 61, 'Suchmaschinen'),(4, 62, 'Referrer'),(4, 63, 'Gruppen'),(4, 64, 'Generatoren'),(4, 65, 'Warenkörbe'),(4, 66, 'Tags'),(4, 67, 'Suche'), +(4, 68, 'Anhänge'),(4, 69, 'Konfigurationsinformationen'),(4, 70, 'Leistung'),(4, 71, 'Kundenservice'),(4, 72, 'Webservice'),(4, 73, 'Lagerbewegungen'), +(4, 80, 'Module und Themenkatalog'),(4, 81, 'Mein Konto'),(4, 82, 'Shops'),(4, 83, 'Themen'),(4, 84, 'Geotargeting'),(4, 85, 'Steuerregeln'),(4, 86, 'Log'), +(4,87,'Counties'),(4,88,'Home'); + +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES +(5, 1, 'Catalogo'),(5, 2, 'Clienti'),(5, 3, 'Ordini'),(5, 4, 'Pagamento'), +(5, 5, 'Spedizione'),(5, 6, 'Stat'),(5, 7, 'Moduli'),(5, 8, 'Preferenze'),(5, 9, 'Strumenti'),(5, 10, 'Produttori'),(5, 11, 'Attributi e Gruppi'), +(5, 12, 'Indirizzi'),(5, 13, 'Status'),(5, 14, 'Voucher'),(5, 15, 'Valute'),(5, 16, 'Tasse'),(5, 17, 'Corrieri'),(5, 18, 'Nazioni'), +(5, 19, 'Zone'),(5, 20, 'Fasce di prezzo'),(5, 21, 'Fasce di peso'),(5, 22, 'Posizioni'),(5, 23, 'Database'),(5, 24, 'E-mail'),(5, 26, 'Immagine'), +(5, 27, 'Prodotti'),(5, 28, 'Contatti'),(5, 29, 'Impiegati'),(5, 30, 'Profili'),(5, 31, 'Permessi'),(5, 32, 'Lingue'),(5, 33, 'Traduzioni'), +(5, 34, 'Fornitori'),(5, 35, 'Tab'),(5, 36, 'Caratteristiche'),(5, 37, 'Accesso rapido'),(5, 38, 'Aspetto'),(5, 39, 'Informazioni di contatto'),(5, 40, 'Alias'), +(5, 41, 'Importa'),(5, 42, 'Fatture'),(5, 43, 'Cerca'),(5, 44, 'Localizzazione'),(5, 46, 'Stati'),(5, 47, 'Resi merci'),(5, 48, 'PDF'), +(5, 49, 'Note di credito'),(5, 51, 'Impostazioni'),(5, 52, 'Sottodomini'),(5, 53, 'DB backup'),(5, 54, 'Messaggi ordine'), +(5, 55, 'Note di consegna'),(5, 56, 'SEO & URLs'),(5, 57, 'CMS'),(5, 58, 'Mappatura immagine'),(5, 59, 'Messaggi cliente'),(5, 60, 'Rintracciare'), +(5, 61, 'Motori di ricerca'),(5, 62, 'Referenti'),(5, 63, 'Gruppi'),(5, 64, 'Generatori'),(5, 65, 'Carrelli shopping'),(5, 66, 'Tag'),(5, 67, 'Cerca'), +(5, 68, 'Allegati'),(5, 69, 'Informazioni di configurazione'),(5, 70, 'Performance'),(5, 71, 'Servizio clienti'),(5, 72, 'Webservice'),(5, 73, 'Movimenti magazzino'), +(5, 80, 'Moduli & Temi catalogo'),(5, 81, 'Il mio Account'),(5, 82, 'Negozi'),(5, 83, 'Temi'),(5, 84, 'Geolocalizzazione'),(5, 85, 'Regimi fiscali'),(5, 86, 'Log'), +(5,87,'Counties'),(5,88,'Home'); + +INSERT IGNORE INTO `PREFIX_tab_lang` (`id_tab`, `id_lang`, `name`) + (SELECT `id_tab`, id_lang, (SELECT tl.`name` + FROM `PREFIX_tab_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_tab`=`PREFIX_tab`.`id_tab`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_tab`); + +INSERT INTO `PREFIX_quick_access` (`id_quick_access`, `link`, `new_window`) VALUES +(1, 'index.php', 0),(2, '../', 1),(3, 'index.php?tab=AdminCatalog&addcategory', 0),(4, 'index.php?tab=AdminCatalog&addproduct', 0),(5, 'index.php?tab=AdminDiscounts&adddiscount', 0); + +INSERT INTO `PREFIX_quick_access_lang` (`id_quick_access`, `id_lang`, `name`) VALUES +(1, 1, 'Home'),(1, 2, 'Accueil'),(1, 3, 'Inicio'),(1, 4, 'Start'),(1, 5, 'Home page'), +(2, 1, 'My Shop'),(2, 2, 'Ma boutique'),(2, 3, 'Mi tienda'),(2, 4, 'Mein Shop'),(2, 5, 'Il mio negozio'), +(3, 1, 'New category'),(3, 2, 'Nouvelle catégorie'),(3, 3, 'Nueva categoría'),(3, 4, 'Neue Kategorie'),(3, 5, 'Nuova categoria'), +(4, 1, 'New product'),(4, 2, 'Nouveau produit'),(4, 3, 'Nuevo producto'),(4, 4, 'Neues Produkt'),(4, 5, 'Nuovo prodotto'), +(5, 1, 'New voucher'),(5, 2, 'Nouveau bon de réduction'),(5, 3, 'Nuevo cupón'),(5, 4, 'Neuer Ermäßigungsgutschein'),(5, 5, 'Nuovo buono sconto'); + +INSERT INTO `PREFIX_order_return_state` (`id_order_return_state`, `color`) VALUES (1, '#ADD8E6'),(2, '#EEDDFF'),(3, '#DDFFAA'),(4, '#FFD3D3'),(5, '#FFFFBB'); + +INSERT INTO `PREFIX_order_return_state_lang` (`id_order_return_state`, `id_lang`, `name`) VALUES +(1, 1, 'Waiting for confirmation'),(2, 1, 'Waiting for package'),(3, 1, 'Package received'),(4, 1, 'Return denied'),(5, 1, 'Return completed'), +(1, 2, 'En attente de confirmation'),(2, 2, 'En attente du colis'),(3, 2, 'Colis reçu'),(4, 2, 'Retour refusé'),(5, 2, 'Retour terminé'), +(1, 3, 'Pendiente de confirmación'),(2, 3, 'En espera de paquetes'),(3, 3, 'Paquetes recibidos'),(4, 3, 'Volver negó'),(5, 3, 'Diligenciados'), +(1, 4, 'Bestätigung wird erwartet'),(2, 4, 'Paket wird erwartet'),(3, 4, 'Paket erhalten'),(4, 4, 'Rücksendung abgelehnt'),(5, 4, 'Rücksendung beendet'), +(1, 5, 'In attesa di conferma'),(2, 5, 'In attesa del pacco'),(3, 5, 'Pacco ricevuto'),(4, 5, 'Restituzione non accettata'),(5, 5, 'Restituzione terminata'); + +INSERT INTO `PREFIX_meta` (`id_meta`, `page`) VALUES +(1, '404'), +(2, 'best-sales'), +(3, 'contact-form'), +(4, 'index'), +(5, 'manufacturer'), +(6, 'new-products'), +(7, 'password'), +(8, 'prices-drop'), +(9, 'sitemap'), +(10, 'supplier'), +(11, 'address'), +(12, 'addresses'), +(13, 'authentication'), +(14, 'cart'), +(15, 'discount'), +(16, 'history'), +(17, 'identity'), +(18, 'my-account'), +(19, 'order-follow'), +(20, 'order-slip'), +(21, 'order'), +(22, 'search'), +(23, 'stores'), +(24, 'order-opc'), +(25, 'guest-tracking'); + +INSERT INTO `PREFIX_meta_lang` (`id_meta`, `id_lang`, `title`, `description`, `keywords`, `url_rewrite`) VALUES +(1, 1, '404 error', 'This page cannot be found', 'error, 404, not found', 'page-not-found'), +(1, 2, 'Erreur 404', 'Cette page est introuvable', 'erreur, 404, introuvable', 'page-non-trouvee'), +(1, 3, 'Error 404', 'Esta página no se encuentra', 'error, 404, No se ha encontrado', 'pagina-no-encuentra'), +(2, 1, 'Best sales', 'Our best sales', 'best sales', 'best-sales'), +(2, 2, 'Meilleures ventes', 'Liste de nos produits les mieux vendus', 'meilleures ventes', 'meilleures-ventes'), +(2, 3, 'Los más vendidos', 'Lista de los de mayor venta de productos', 'los más vendidos', 'mas-vendidos'), +(3, 1, 'Contact us', 'Use our form to contact us', 'contact, form, e-mail', 'contact-us'), +(3, 2, 'Contactez-nous', 'Utilisez notre formulaire pour nous contacter', 'contact, formulaire, e-mail', 'contactez-nous'), +(3, 3, 'Contáctenos', 'Use nuestro formulario de contacto con nosotros', 'formulario de contacto, e-mail', 'contactenos'), +(4, 1, '', 'Shop powered by PrestaShop', 'shop, prestashop', ''), +(4, 2, '', 'Boutique propulsée par PrestaShop', 'boutique, prestashop', ''), +(4, 3, '', 'Shop powered by PrestaShop', 'tienda, prestashop', ''), +(5, 1, 'Manufacturers', 'Manufacturers list', 'manufacturer', 'manufacturers'), +(5, 2, 'Fabricants', 'Liste de nos fabricants', 'fabricants', 'fabricants'), +(5, 3, 'Fabricantes', 'Lista de Fabricantes', 'fabricantes', 'fabricantes'), +(6, 1, 'New products', 'Our new products', 'new, products', 'new-products'), +(6, 2, 'Nouveaux produits', 'Liste de nos nouveaux produits', 'nouveau, produit', 'nouveaux-produits'), +(6, 3, 'Nuevos Productos', 'Lista de nuestros nuevos productos', 'nuevo, productos', 'nuevos-productos'), +(7, 1, 'Forgot your password', 'Enter your e-mail address used to register in goal to get e-mail with your new password', 'forgot, password, e-mail, new, reset', 'password-recovery'), +(7, 2, 'Mot de passe oublié', 'Renseignez votre adresse e-mail afin de recevoir votre nouveau mot de passe.', 'mot de passe, oublié, e-mail, nouveau, regénération', 'mot-de-passe-oublie'), +(7, 3, 'Olvidaste tu contraseña', 'Ingrese su dirección de correo electrónico para recibir su nueva contraseña.', 'contraseña, has olvidado, e-mail, nuevo, regeneración', 'contrasena-olvidado'), +(8, 1, 'Prices drop', 'Our special products', 'special, prices drop', 'prices-drop'), +(8, 2, 'Promotions', 'Nos produits en promotion', 'promotion, réduction', 'promotions'), +(8, 3, 'Promociones', 'Nuestros productos promocionales', 'promoción, reducción', 'promocion'), +(9, 1, 'Sitemap', 'Lost ? Find what your are looking for', 'sitemap', 'sitemap'), +(9, 2, 'Plan du site', 'Perdu ? Trouvez ce que vous cherchez', 'plan, site', 'plan-du-site'), +(9, 3, 'Mapa del sitio', '¿Perdido? Encuentra lo que buscas', 'plan, sitio', 'mapa-del-sitio'), +(10, 1, 'Suppliers', 'Suppliers list', 'supplier', 'supplier'), +(10, 2, 'Fournisseurs', 'Liste de nos fournisseurs', 'fournisseurs', 'fournisseurs'), +(10, 3, 'Proveedores', 'Lista de Proveedores', 'proveedores', 'proveedores'), +(11, 1, 'Address', '', '', 'address'), +(11, 2, 'Adresse', '', '', 'adresse'), +(11, 3, 'Dirección', '', '', 'direccion'), +(12, 1, 'Addresses', '', '', 'addresses'), +(12, 2, 'Adresses', '', '', 'adresses'), +(12, 3, 'Direcciones', '', '', 'direcciones'), +(13, 1, 'Authentication', '', '', 'authentication'), +(13, 2, 'Authentification', '', '', 'authentification'), +(13, 3, 'Autenticación', '', '', 'autenticacion'), +(14, 1, 'Cart', '', '', 'cart'), +(14, 2, 'Panier', '', '', 'panier'), +(14, 3, 'Carro de la compra', '', '', 'carro-de-la-compra'), +(15, 1, 'Discount', '', '', 'discount'), +(15, 2, 'Bons de réduction', '', '', 'bons-de-reduction'), +(15, 3, 'Descuento', '', '', 'descuento'), +(16, 1, 'Order history', '', '', 'order-history'), +(16, 2, 'Historique des commandes', '', '', 'historique-des-commandes'), +(16, 3, 'Historial de pedidos', '', '', 'historial-de-pedidos'), +(17, 1, 'Identity', '', '', 'identity'), +(17, 2, 'Identité', '', '', 'identite'), +(17, 3, 'Identidad', '', '', 'identidad'), +(18, 1, 'My account', '', '', 'my-account'), +(18, 2, 'Mon compte', '', '', 'mon-compte'), +(18, 3, 'Mi Cuenta', '', '', 'mi-cuenta'), +(19, 1, 'Order follow', '', '', 'order-follow'), +(19, 2, 'Détails de la commande', '', '', 'details-de-la-commande'), +(19, 3, 'Devolución de productos', '', '', 'devolucion-de-productos'), +(20, 1, 'Order slip', '', '', 'order-slip'), +(20, 2, 'Avoirs', '', '', 'avoirs'), +(20, 3, 'Vales', '', '', 'vales'), +(21, 1, 'Order', '', '', 'order'), +(21, 2, 'Commande', '', '', 'commande'), +(21, 3, 'Carrito', '', '', 'carrito'), +(22, 1, 'Search', '', '', 'search'), +(22, 2, 'Recherche', '', '', 'recherche'), +(22, 3, 'Buscar', '', '', 'buscar'), +(23, 1, 'Stores', '', '', 'stores'), +(23, 2, 'Magasins', '', '', 'magasins'), +(23, 3, 'Tiendas', '', '', 'tiendas'), +(24, 1, 'Order', '', '', 'quick-order'), +(24, 2, 'Commande', '', '', 'commande-rapide'), +(24, 3, 'Carrito', '', '', 'pedido-rapido'), +(25, 1, 'Guest tracking', '', '', 'guest-tracking'), +(25, 2, 'Suivi de commande invité', '', '', 'suivi-commande-invite'), +(25, 3, 'Estado del pedido', '', '', 'estado-pedido'), +(1, 4, 'Fehler 404', 'Seite wurde nicht gefunden', 'Fehler 404, nicht gefunden', 'seite-nicht-gefunden'), +(2, 4, 'Verkaufshits', 'Unsere Verkaufshits', 'Verkaufshits', 'verkaufshits'), +(3, 4, 'Kontaktieren Sie uns', 'Nutzen Sie unser Kontaktformular', 'Kontakt, Formular, E-Mail', 'kontaktieren-sie-uns'), +(4, 4, '', 'Shop powered by PrestaShop', 'Shop, prestashop', ''), +(5, 4, 'Hersteller', 'Herstellerliste', 'Hersteller', 'hersteller'), +(6, 4, 'Neue Produkte', 'Unsere neuen Produkte', 'neu, Produkte', 'neue-Produkte'), +(7, 4, 'Kennwort vergessen', 'Geben Sie die E-Mailadresse ein, die Sie zum Einloggen benutzen, damit Sie eine E-Mail mit dem neuen Kennwort erhalt', 'vergessen, Kennwort, E-Mail, neu, Reset', 'kennwort-wiederherstellung'), +(8, 4, 'Preise fallen', 'Unsere Sonderangebote', 'besonders, Preise fallen', 'preise-fallen'), +(9, 4, 'Sitemap', 'Verloren? Finden Sie, was Sie suchen', 'sitemap', 'sitemap'), +(10, 4, 'Zulieferer', 'Zuliefererliste', 'Zulieferer', 'zulieferer'), +(11, 4, 'Adresse', '', '', 'adresse'), +(12, 4, 'Adressen', '', '', 'adressen'), +(13, 4, 'Authentifizierung', '', '', 'authentifizierung'), +(14, 4, 'Warenkorb', '', '', 'warenkorb'), +(15, 4, 'Discount', '', '', 'discount'), +(16, 4, 'Bestellungsverlauf', '', '', 'bestellungsverlauf'), +(17, 4, 'Kennung', '', '', 'kennung'), +(18, 4, 'Mein Konto', '', '', 'mein-Konto'), +(19, 4, 'Bestellungsverfolgung', '', '', 'bestellungsverfolgung'), +(20, 4, 'Bestellschein', '', '', 'bestellschein'), +(21, 4, 'Bestellung', '', '', 'bestellung'), +(22, 4, 'Suche', '', '', 'suche'), +(23, 4, 'Shops', '', '', 'shops'), +(24, 4, 'Bestellung', '', '', 'schnell-bestellung'), +(25, 4, 'Auftragsverfolgung Gast', '', '', 'auftragsverfolgung-gast'), +(1, 5, 'errore 404', 'Impossibile trovare questa pagina', 'errore, 404, non trovato', 'pagina-non-trovata'), +(2, 5, 'Vendite migliori', 'Le nostre vendite migliori', 'vendite migliori', 'vendite-migliori'), +(3, 5, 'Contattaci', 'Usa il nostro modulo per contattarci', 'contatto, modulo, e-mail', 'contattaci'), +(4, 5, '', 'Negozio powered by PrestaShop', 'negozio, prestashop', ''), +(5, 5, 'Produttori', 'Elenco produttori', 'produttore', 'produttori'), +(6, 5, 'Nuovi prodotti', 'I nostri nuovi prodotti', 'nuovi, prodotti', 'nuovi-prodotti'), +(7, 5, 'Hai dimenticato la password', 'Inserisci l\'indirizzo e-mail usato per registrarti per poter ottenere una e-mail with con la tua nuova password', 'dimenticato, password, e-mail, nuovo, reset', 'password-recupero'), +(8, 5, 'Riduzioni prezzi', 'I nostri prodotti speciali', 'speciali, riduzione prezzi', 'riduzione-prezzi'), +(9, 5, 'Mappa del sito', 'Ti sei perso? Trova quello che stai cercando', 'sitemap', 'sitemap'), +(10, 5, 'Fornitori', 'Elenco fornitori', 'fornitori', 'fornitore'), +(11, 5, 'Indirizzo', '', '', 'indirizzo'), +(12, 5, 'Indirizzi', '', '', 'indirizzi'), +(13, 5, 'Autenticazione', '', '', 'autenticazione'), +(14, 5, 'Carrello', '', '', 'carrello'), +(15, 5, 'Sconto', '', '', 'sconto'), +(16, 5, 'Storico ordine', '', '', 'storico-ordine'), +(17, 5, 'Identità', '', '', 'identità'), +(18, 5, 'Il mio account', '', '', 'il-mio-account'), +(19, 5, 'Seguito ordine', '', '', 'seguito-ordine'), +(20, 5, 'Nota di ordine', '', '', 'nota-di-ordine'), +(21, 5, 'Ordine', '', '', 'ordine'), +(22, 5, 'Cerca', '', '', 'cerca'), +(23, 5, 'Negozi', '', '', 'negozi'), +(24, 5, 'Ordine', '', '', 'ordine-veloce'), +(25, 5, 'Ospite di monitoraggio', '', '', 'ospite-monitoraggio'); + +/* Stats */ +INSERT INTO `PREFIX_operating_system` (`name`) VALUES ('Windows XP'),('Windows Vista'),('MacOsX'),('Linux'); +INSERT INTO `PREFIX_web_browser` (`name`) VALUES ('Safari'),('Firefox 2.x'),('Firefox 3.x'),('Opera'),('IE 6.x'),('IE 7.x'),('IE 8.x'),('Google Chrome'); +INSERT INTO `PREFIX_page_type` (`id_page_type`, `name`) VALUES +(13, 'authentication.php'),(11, 'best-sales.php'),(2, 'category.php'),(7, 'cms.php'),(12, 'contact-form.php'),(5, 'index.php'),(4, 'manufacturer.php'), +(3, 'order.php'),(10, 'prices-drop.php'),(1, 'product.php'),(8, 'search.php'),(14, 'sitemap.php'),(9, 'stores.php'),(6, 'supplier.php'); +INSERT INTO `PREFIX_search_engine` (`server`,`getvar`) +VALUES ('google','q'),('aol','q'),('yandex','text'),('ask.com','q'),('nhl.com','q'),('yahoo','p'),('baidu','wd'), +('lycos','query'),('exalead','q'),('search.live','q'),('voila','rdata'),('altavista','q'),('bing','q'),('daum','q'), +('eniro','search_word'),('naver','query'),('msn','q'),('netscape','query'),('cnn','query'),('about','terms'),('mamma','query'), +('alltheweb','q'),('virgilio','qs'),('alice','qs'),('najdi','q'),('mama','query'),('seznam','q'),('onet','qt'),('szukacz','q'), +('yam','k'),('pchome','q'),('kvasir','q'),('sesam','q'),('ozu','q'),('terra','query'),('mynet','q'),('ekolay','q'),('rambler','words'); + +/* SubDomains */ +INSERT INTO `PREFIX_subdomain` (`id_subdomain`, `name`) VALUES (NULL, 'www'); + +/* CMS */ +INSERT INTO `PREFIX_cms` (`id_cms`, `id_cms_category`, `position`, `active`) VALUES (1, 1, 0, 1), (2, 1, 1, 1), (3, 1, 2, 1), (4, 1, 3, 1), (5, 1, 4, 1); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(1, 1, 'Delivery', 'Our terms and conditions of delivery', 'conditions, delivery, delay, shipment, pack', '

    Shipments and returns

    Your pack shipment

    Packages are generally dispatched within 2 days after receipt of payment and are shipped via UPS with tracking and drop-off without signature. If you prefer delivery by UPS Extra with required signature, an additional cost will be applied, so please contact us before choosing this method. Whichever shipment choice you make, we will provide you with a link to track your package online.

    Shipping fees include handling and packing fees as well as postage costs. Handling fees are fixed, whereas transport fees vary according to total weight of the shipment. We advise you to group your items in one order. We cannot group two distinct orders placed separately, and shipping fees will apply to each of them. Your package will be dispatched at your own risk, but special care is taken to protect fragile objects.

    Boxes are amply sized and your items are well-protected.

    ', 'delivery'), +(1, 2, 'Livraison', 'Nos conditions générales de livraison', 'conditions, livraison, délais, transport, colis', '

    Livraisons et retours

    Le transport de votre colis

    Les colis sont généralement expédiés en 48h après réception de votre paiement. Le mode d''expédition standard est le Colissimo suivi, remis sans signature. Si vous souhaitez une remise avec signature, un coût supplémentaire s''applique, merci de nous contacter. Quel que soit le mode d''expédition choisi, nous vous fournirons dès que possible un lien qui vous permettra de suivre en ligne la livraison de votre colis.

    Les frais d''expédition comprennent l''emballage, la manutention et les frais postaux. Ils peuvent contenir une partie fixe et une partie variable en fonction du prix ou du poids de votre commande. Nous vous conseillons de regrouper vos achats en une unique commande. Nous ne pouvons pas grouper deux commandes distinctes et vous devrez vous acquitter des frais de port pour chacune d''entre elles. Votre colis est expédié à vos propres risques, un soin particulier est apporté au colis contenant des produits fragiles..

    Les colis sont surdimensionnés et protégés.

    ', 'livraison'), +(2, 1, 'Legal Notice', 'Legal notice', 'notice, legal, credits', '

    Legal

    Credits

    Concept and production:

    This Web site was created using PrestaShop™ open-source software.

    ', 'legal-notice'), +(2, 2, 'Mentions légales', 'Mentions légales', 'mentions, légales, crédits', '

    Mentions légales

    Crédits

    Concept et production :

    Ce site internet a été réalisé en utilisant la solution open-source PrestaShop™ .

    ', 'mentions-legales'), +(3, 1, 'Terms and conditions of use', 'Our terms and conditions of use', 'conditions, terms, use, sell', '

    Your terms and conditions of use

    Rule 1

    Here is the rule 1 content

    \r\n

    Rule 2

    Here is the rule 2 content

    \r\n

    Rule 3

    Here is the rule 3 content

    ', 'terms-and-conditions-of-use'), +(3, 2, 'Conditions d''utilisation', 'Nos conditions générales de ventes', 'conditions, utilisation, générales, ventes', '

    Vos conditions de ventes

    Règle n°1

    Contenu de la règle numéro 1

    \r\n

    Règle n°2

    Contenu de la règle numéro 2

    \r\n

    Règle n°3

    Contenu de la règle numéro 3

    ', 'conditions-generales-de-ventes'), +(4, 1, 'About us', 'Learn more about us', 'about us, informations', '

    About us

    \r\n

    Our company

    Our company

    \r\n

    Our team

    Our team

    \r\n

    Informations

    Informations

    ', 'about-us'), +(4, 2, 'A propos', 'Apprenez-en d''avantage sur nous', 'à propos, informations', '

    A propos

    \r\n

    Notre entreprise

    Notre entreprise

    \r\n

    Notre équipe

    Notre équipe

    \r\n

    Informations

    Informations

    ', 'a-propos'), +(5, 1, 'Secure payment', 'Our secure payment mean', 'secure payment, ssl, visa, mastercard, paypal', '

    Secure payment

    \r\n

    Our secure payment

    With SSL

    \r\n

    Using Visa/Mastercard/Paypal

    About this services

    ', 'secure-payment'), +(5, 2, 'Paiement sécurisé', 'Notre offre de paiement sécurisé', 'paiement sécurisé, ssl, visa, mastercard, paypal', '

    Paiement sécurisé

    \r\n

    Notre offre de paiement sécurisé

    Avec SSL

    \r\n

    Utilisation de Visa/Mastercard/Paypal

    A propos de ces services

    ', 'paiement-securise'), +(1, 3, 'Entrega', 'Nuestras condiciones de entrega', 'condiciones, plazos de entrega, transporte, paquetería', '

    shipping & Returns

    \r\n

    El transporte de su paquete

    \r\n

    Los paquetes son generalmente enviados en 48 horas después de la recepción de su pago. La moda es el estándar expédition Colissimo seguido, entrega sin firma. Si desea una entrega con la firma, un cargo adicional, gracias al contacto con nosotros. Sea cual sea el método de envío seleccionado, vamos a presentar lo antes posible, un vínculo que le permite rastrear el envío en línea de su paquete.

    Gastos de envío incluyen el embalaje, la manipulación y envío. Pueden contener un fijo y una parte variable basado en el precio o el peso de su solicitud. Le recomendamos que para consolidar sus compras en un solo comando. No podemos grupo de dos órdenes distintos y hay que pagar gastos de envío para cada uno. Su paquete es enviado a su propio riesgo, se presta especial atención a las parcelas que contienen objetos frágiles ..

    Los paquetes son de gran tamaño y protegidas.

    ', 'entrega'), +(2, 3, 'Aviso legal', 'Aviso legal', 'términos, condiciones y créditos fotográficos', '

    Pie de imprenta

    \r\n

    Créditos

    \r\n

    \r\n


    Concepto y producción:

    Este sitio web fue creado utilizando la solución de código abierto PrestaShop™.

    ', 'aviso-legal'), +(3, 3, 'Condiciones de uso', 'Condiciones de uso', 'condiciones, el consumo, las ventas generales', '

    Sus condiciones de venta

    \r\n

    Regla N º 1

    \r\n

    Contenido de la Regla Número 1

    \r\n

    Regla N º 2

    \r\n

    Contenido de la Regla N º 2

    \r\n

    Regla N º 3

    \r\n

    Contenido de la Regla Número 3

    ', 'condiciones-de-uso'), +(4, 3, 'Sobre', 'Conozca más sobre nosotros', 'sobre, información', '

    Sobre

    ', 'sobre'), +(5, 3, 'Pago seguro', 'Ofrecemos pago seguro', 'pago seguro, ssl, visa, mastercard, paypal', '

    Pago seguro

    \r\n

    Ofrecemos pago seguro

    \r\n

    SSL

    \r\n

    Utilice Visa / Mastercard / Paypal

    \r\n

    Acerca de estos servicios

    ', 'pago-seguro'), +(1, 4, 'Lieferung', 'Unsere Lieferbedingungen', 'Bedingungen, Lieferung, Frist, Versand, Verpackung', '

    Versand und Rücknahme

    Ihre Versandverpackung

    Pakete werden normalerweise 2 Tage nach Zahlungseingang mit UPS mit Bestellverfolgemöglichkeit und Ablieferung ohne Unterschrift geliefert. Wenn Sie lieber eine UPS-Sendung per Einschreiben erhalten möchten, entstehen zusätzliche Kosten. Bitte kontaktieren Sie uns, bevor Sie dieses Liefermethode wählen. Wir senden Ihnen einen Link für die Bestellverfolgung unabhängig davon, welche Liefermethode Sie wählen.

    Die Versandkosten beinhalten Lade- und Verpackungsgebühren sowie die Portokosten. Die Verladegebühren stehen fest, wobei Transportkosten schwanken, je nach Gesamtgewicht des Pakets. Wir raten Ihnen, mehrere Artikel in einer Bestellung zusammenzufassen. Wir können zwei verschiedene Bestellungen nicht zusammenlegen, und die Versandkosten werden separat für jede Bestellung gerechnet. Ihr Paket wird auf Ihr Risiko versandt, aber zerbrechliche Ware wird besonders sorgsam behandelt.

    Die Versandschachteln sind weit geschnitten und ihre Ware wird gut geschützt verpackt.

    ', 'Lieferung'), +(2, 4, 'Rechtliche Hinweise', 'Rechtliche Hinweise', 'Hinweise, rechtlich, Gutscheine', '

    Legal

    Credits

    Konzept und Gestaltung:

    Diese Webseite wurde hergestellt unter Verwendung von PrestaShop™ open-source software.

    ', 'rechtliche-hinweise'), +(3, 4, 'Allgemeine Nutzungsbedingungen', 'Unsere allgemeinen Nutzungsbedingungen', 'Voraussetzungen, Bedingungen, nutzen, verkaufen', '

    Your terms and conditions of use

    Rule 1

    Here is the rule 1 content

    \r\n

    Rule 2

    Here is the rule 2 content

    \r\n

    Rule 3

    Here is the rule 3 content

    ', 'allgemeine-nutzungsbedingungen'), +(4, 4, 'Über uns', 'Learn more about us', 'über uns, Informationen', '

    About us

    \r\n

    Our company

    Our company

    \r\n

    Our team

    Our team

    \r\n

    Informations

    Informations

    ', 'uber-uns'), +(5, 4, 'Sichere Zahlung', 'Unsere Sicherheits-Zahlungsmethoden', 'Sichere Zahlung, SSL, Visa, MasterCard, PayPal', '

    Secure payment

    \r\n

    Our secure payment

    With SSL

    \r\n

    Using Visa/Mastercard/Paypal

    About this services

    ', 'sichere-zahlung'), +(1, 5, 'Consegna', 'I nostri termini e condizioni di consegna', 'condizioni, consegna, tempo, spedizione, pacco', '

    Spedizioni e resi

    Spedizione del tuo pacco

    I pacchi sono solitamente spediti entro 2 giorni dopo il ricevimento del pagamento e inviati tramite UPS con controllo e consegna senza firma. Se preferisci una consegna con UPS Extra con richiesta di firma, sarà applicato un costo aggiuntivo, pertanto contattaci prima di scegliere questo mezzo. Qualunque tipo di spedizione tu scelga, ti garantiremo un link per controllare online il percorso del tuo pacco.

    Le spese di spedizione comprendono le spese di imballaggio e affrancatura. Le spese di imballaggio sono fisse, mentre quelle di trasporto variano in base al peso totale della spedizione. Ti consigliamo di raggruppare i tuoi articoli in un unico ordine. Non possiamo raggruppare due ordini distinti eseguiti separatamente, e ad ognuno di esso saranno applicate le spese di spedizione. Il tuo pacco sarà inviato sotto la tua responsabilità, ma un\'attenzione particolare è riservata agli oggetti fragili.

    Le scatole hanno dimensioni ragionevoli e i tuoi articoli sono ben protetti.

    ', 'consegna'), +(2, 5, 'Nota Legale', 'Nota legale', 'nota, legale, crediti', '

    Legale

    Crediti

    Creazione e produzione:

    Questo sito web è stato realizzato usando un software open-sourcePrestaShop™.

    ', 'nota-legale'), +(3, 5, 'Termini e condizioni d\'uso', 'I nostri termini e condizioni d\'uso', 'condizioni, termini, uso, vendi', '

    I tuoi termini e condizioni d\'uso

    Regola 1

    Ecco il contenuto della regola 1

    \r\n

    Regola 2

    Ecco il contenuto della regola 2

    \r\n

    Regola 3

    Ecco il contenuto della regola 3

    ', 'termini-e-condizioni-di-uso'), +(4, 5, 'Chi siamo', 'Per sapere chi siamo', 'chi siamo, informazioni', '

    Chi siamo

    \r\n

    La nostra azienda

    La nostra azienda

    \r\n

    Il nostro team

    Il nostro team

    \r\n

    Informazioni

    Informazioni

    ', 'chi-siamo'), +(5, 5, 'Pagamento sicuro', 'Il nostro mezzo di pagamento sicuro', 'pagamento sicuro, ssl, visa, mastercard, paypal', '

    Pagamento sicuro

    \r\n

    Il nostro pagamento sicuro

    Con SSL

    \r\n

    Usando Visa/Mastercard/Paypal

    Cosa sono questi servizi

    ', 'pagamento-sicuro'); + +INSERT INTO `PREFIX_cms_category_lang` (`id_cms_category`, `id_lang`, `name`, `description`, `link_rewrite`, `meta_title`, `meta_keywords`, `meta_description`) VALUES +(1, 1, 'Home', '', 'home', NULL, NULL, NULL), +(1, 2, 'Accueil', '', 'home', NULL, NULL, NULL), +(1, 3, 'Inicio', '', 'home', NULL, NULL, NULL), +(1, 4, 'Start', '', 'Start', NULL, NULL, NULL), +(1, 5, 'Home', '', 'home', NULL, NULL, NULL); + +INSERT INTO `PREFIX_cms_category` (`id_cms_category`, `id_parent`, `level_depth`, `active`, `date_add`, `date_upd`) VALUES(1, 0, 0, 1, NOW(), NOW()); + +/* Carrier */ +INSERT INTO `PREFIX_carrier` (`id_carrier`, `id_tax_rules_group`, `name`, `active`, `deleted`, `shipping_handling`) VALUES (1, 0, 0, 1, 0, 0); + +INSERT INTO `PREFIX_carrier_group` (`id_carrier`, `id_group`) VALUES (1, 1); + +INSERT INTO `PREFIX_carrier_lang` (`id_carrier`, `id_lang`, `delay`) VALUES (1, 1, 'Pick up in-store'),(1, 2, 'Retrait au magasin'),(1, 3, 'Recogida en la tienda'),(1, 4, 'Abholung im Geschäft'),(1, 5, 'Ritiro in magazzino'); + +INSERT INTO `PREFIX_carrier_zone` (`id_carrier`, `id_zone`) VALUES (1, 1); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_CARRIER_DEFAULT', '1', NOW(), NOW()); + +/* Timezone */ +INSERT INTO `PREFIX_timezone` (`name`) VALUES ('Africa/Abidjan'),('Africa/Accra'),('Africa/Addis_Ababa'),('Africa/Algiers'), +('Africa/Asmara'),('Africa/Asmera'),('Africa/Bamako'),('Africa/Bangui'),('Africa/Banjul'),('Africa/Bissau'),('Africa/Blantyre'), +('Africa/Brazzaville'),('Africa/Bujumbura'),('Africa/Cairo'),('Africa/Casablanca'),('Africa/Ceuta'),('Africa/Conakry'),('Africa/Dakar'), +('Africa/Dar_es_Salaam'),('Africa/Djibouti'),('Africa/Douala'),('Africa/El_Aaiun'),('Africa/Freetown'),('Africa/Gaborone'),('Africa/Harare'), +('Africa/Johannesburg'),('Africa/Kampala'),('Africa/Khartoum'),('Africa/Kigali'),('Africa/Kinshasa'),('Africa/Lagos'),('Africa/Libreville'), +('Africa/Lome'),('Africa/Luanda'),('Africa/Lubumbashi'),('Africa/Lusaka'),('Africa/Malabo'),('Africa/Maputo'),('Africa/Maseru'), +('Africa/Mbabane'),('Africa/Mogadishu'),('Africa/Monrovia'),('Africa/Nairobi'),('Africa/Ndjamena'),('Africa/Niamey'),('Africa/Nouakchott'), +('Africa/Ouagadougou'),('Africa/Porto-Novo'),('Africa/Sao_Tome'),('Africa/Timbuktu'),('Africa/Tripoli'),('Africa/Tunis'),('Africa/Windhoek'), +('America/Adak'),('America/Anchorage '),('America/Anguilla'),('America/Antigua'),('America/Araguaina'),('America/Argentina/Buenos_Aires'), +('America/Argentina/Catamarca'),('America/Argentina/ComodRivadavia'),('America/Argentina/Cordoba'),('America/Argentina/Jujuy'), +('America/Argentina/La_Rioja'),('America/Argentina/Mendoza'),('America/Argentina/Rio_Gallegos'),('America/Argentina/Salta'), +('America/Argentina/San_Juan'),('America/Argentina/San_Luis'),('America/Argentina/Tucuman'),('America/Argentina/Ushuaia'),('America/Aruba'), +('America/Asuncion'),('America/Atikokan'),('America/Atka'),('America/Bahia'),('America/Barbados'),('America/Belem'),('America/Belize'), +('America/Blanc-Sablon'),('America/Boa_Vista'),('America/Bogota'),('America/Boise'),('America/Buenos_Aires'),('America/Cambridge_Bay'), +('America/Campo_Grande'),('America/Cancun'),('America/Caracas'),('America/Catamarca'),('America/Cayenne'),('America/Cayman'),('America/Chicago'), +('America/Chihuahua'),('America/Coral_Harbour'),('America/Cordoba'),('America/Costa_Rica'),('America/Cuiaba'),('America/Curacao'), +('America/Danmarkshavn'),('America/Dawson'),('America/Dawson_Creek'),('America/Denver'),('America/Detroit'),('America/Dominica'), +('America/Edmonton'),('America/Eirunepe'),('America/El_Salvador'),('America/Ensenada'),('America/Fort_Wayne'),('America/Fortaleza'), +('America/Glace_Bay'),('America/Godthab'),('America/Goose_Bay'),('America/Grand_Turk'),('America/Grenada'),('America/Guadeloupe'), +('America/Guatemala'),('America/Guayaquil'),('America/Guyana'),('America/Halifax'),('America/Havana'),('America/Hermosillo'), +('America/Indiana/Indianapolis'),('America/Indiana/Knox'),('America/Indiana/Marengo'),('America/Indiana/Petersburg'), +('America/Indiana/Tell_City'),('America/Indiana/Vevay'),('America/Indiana/Vincennes'),('America/Indiana/Winamac'),('America/Indianapolis'), +('America/Inuvik'),('America/Iqaluit'),('America/Jamaica'),('America/Jujuy'),('America/Juneau'),('America/Kentucky/Louisville'), +('America/Kentucky/Monticello'),('America/Knox_IN'),('America/La_Paz'),('America/Lima'),('America/Los_Angeles'),('America/Louisville'), +('America/Maceio'),('America/Managua'),('America/Manaus'),('America/Marigot'),('America/Martinique'),('America/Mazatlan'),('America/Mendoza'), +('America/Menominee'),('America/Merida'),('America/Mexico_City'),('America/Miquelon'),('America/Moncton'),('America/Monterrey'), +('America/Montevideo'),('America/Montreal'),('America/Montserrat'),('America/Nassau'),('America/New_York'),('America/Nipigon'), +('America/Nome'),('America/Noronha'),('America/North_Dakota/Center'),('America/North_Dakota/New_Salem'),('America/Panama'), +('America/Pangnirtung'),('America/Paramaribo'),('America/Phoenix'),('America/Port-au-Prince'),('America/Port_of_Spain'),('America/Porto_Acre'), +('America/Porto_Velho'),('America/Puerto_Rico'),('America/Rainy_River'),('America/Rankin_Inlet'),('America/Recife'),('America/Regina'), +('America/Resolute'),('America/Rio_Branco'),('America/Rosario'),('America/Santarem'),('America/Santiago'),('America/Santo_Domingo'), +('America/Sao_Paulo'),('America/Scoresbysund'),('America/Shiprock'),('America/St_Barthelemy'),('America/St_Johns'),('America/St_Kitts'), +('America/St_Lucia'),('America/St_Thomas'),('America/St_Vincent'),('America/Swift_Current'),('America/Tegucigalpa'),('America/Thule'), +('America/Thunder_Bay'),('America/Tijuana'),('America/Toronto'),('America/Tortola'),('America/Vancouver'),('America/Virgin'),('America/Whitehorse'), +('America/Winnipeg'),('America/Yakutat'),('America/Yellowknife'),('Antarctica/Casey'),('Antarctica/Davis'),('Antarctica/DumontDUrville'), +('Antarctica/Mawson'),('Antarctica/McMurdo'),('Antarctica/Palmer'),('Antarctica/Rothera'),('Antarctica/South_Pole'),('Antarctica/Syowa'), +('Antarctica/Vostok'),('Arctic/Longyearbyen'),('Asia/Aden'),('Asia/Almaty'),('Asia/Amman'),('Asia/Anadyr'),('Asia/Aqtau'),('Asia/Aqtobe'), +('Asia/Ashgabat'),('Asia/Ashkhabad'),('Asia/Baghdad'),('Asia/Bahrain'),('Asia/Baku'),('Asia/Bangkok'),('Asia/Beirut'),('Asia/Bishkek'), +('Asia/Brunei'),('Asia/Calcutta'),('Asia/Choibalsan'),('Asia/Chongqing'),('Asia/Chungking'),('Asia/Colombo'),('Asia/Dacca'),('Asia/Damascus'), +('Asia/Dhaka'),('Asia/Dili'),('Asia/Dubai'),('Asia/Dushanbe'),('Asia/Gaza'),('Asia/Harbin'),('Asia/Ho_Chi_Minh'),('Asia/Hong_Kong'),('Asia/Hovd'), +('Asia/Irkutsk'),('Asia/Istanbul'),('Asia/Jakarta'),('Asia/Jayapura'),('Asia/Jerusalem'),('Asia/Kabul'),('Asia/Kamchatka'),('Asia/Karachi'), +('Asia/Kashgar'),('Asia/Kathmandu'),('Asia/Katmandu'),('Asia/Kolkata'),('Asia/Krasnoyarsk'),('Asia/Kuala_Lumpur'),('Asia/Kuching'),('Asia/Kuwait'), +('Asia/Macao'),('Asia/Macau'),('Asia/Magadan'),('Asia/Makassar'),('Asia/Manila'),('Asia/Muscat'),('Asia/Nicosia'),('Asia/Novosibirsk'),('Asia/Omsk'), +('Asia/Oral'),('Asia/Phnom_Penh'),('Asia/Pontianak'),('Asia/Pyongyang'),('Asia/Qatar'),('Asia/Qyzylorda'),('Asia/Rangoon'),('Asia/Riyadh'), +('Asia/Saigon'),('Asia/Sakhalin'),('Asia/Samarkand'),('Asia/Seoul'),('Asia/Shanghai'),('Asia/Singapore'),('Asia/Taipei'),('Asia/Tashkent'), +('Asia/Tbilisi'),('Asia/Tehran'),('Asia/Tel_Aviv'),('Asia/Thimbu'),('Asia/Thimphu'),('Asia/Tokyo'),('Asia/Ujung_Pandang'),('Asia/Ulaanbaatar'), +('Asia/Ulan_Bator'),('Asia/Urumqi'),('Asia/Vientiane'),('Asia/Vladivostok'),('Asia/Yakutsk'),('Asia/Yekaterinburg'),('Asia/Yerevan'), +('Atlantic/Azores'),('Atlantic/Bermuda'),('Atlantic/Canary'),('Atlantic/Cape_Verde'),('Atlantic/Faeroe'),('Atlantic/Faroe'),('Atlantic/Jan_Mayen'), +('Atlantic/Madeira'),('Atlantic/Reykjavik'),('Atlantic/South_Georgia'),('Atlantic/St_Helena'),('Atlantic/Stanley'),('Australia/ACT'), +('Australia/Adelaide'),('Australia/Brisbane'),('Australia/Broken_Hill'),('Australia/Canberra'),('Australia/Currie'),('Australia/Darwin'), +('Australia/Eucla'),('Australia/Hobart'),('Australia/LHI'),('Australia/Lindeman'),('Australia/Lord_Howe'),('Australia/Melbourne'),('Australia/North'), +('Australia/NSW'),('Australia/Perth'),('Australia/Queensland'),('Australia/South'),('Australia/Sydney'),('Australia/Tasmania'),('Australia/Victoria'), +('Australia/West'),('Australia/Yancowinna'),('Europe/Amsterdam'),('Europe/Andorra'),('Europe/Athens'),('Europe/Belfast'),('Europe/Belgrade'), +('Europe/Berlin'),('Europe/Bratislava'),('Europe/Brussels'),('Europe/Bucharest'),('Europe/Budapest'),('Europe/Chisinau'),('Europe/Copenhagen'), +('Europe/Dublin'),('Europe/Gibraltar'),('Europe/Guernsey'),('Europe/Helsinki'),('Europe/Isle_of_Man'),('Europe/Istanbul'),('Europe/Jersey'), +('Europe/Kaliningrad'),('Europe/Kiev'),('Europe/Lisbon'),('Europe/Ljubljana'),('Europe/London'),('Europe/Luxembourg'),('Europe/Madrid'),('Europe/Malta'), +('Europe/Mariehamn'),('Europe/Minsk'),('Europe/Monaco'),('Europe/Moscow'),('Europe/Nicosia'),('Europe/Oslo'),('Europe/Paris'),('Europe/Podgorica'), +('Europe/Prague'),('Europe/Riga'),('Europe/Rome'),('Europe/Samara'),('Europe/San_Marino'),('Europe/Sarajevo'),('Europe/Simferopol'),('Europe/Skopje'), +('Europe/Sofia'),('Europe/Stockholm'),('Europe/Tallinn'),('Europe/Tirane'),('Europe/Tiraspol'),('Europe/Uzhgorod'),('Europe/Vaduz'),('Europe/Vatican'), +('Europe/Vienna'),('Europe/Vilnius'),('Europe/Volgograd'),('Europe/Warsaw'),('Europe/Zagreb'),('Europe/Zaporozhye'),('Europe/Zurich'), +('Indian/Antananarivo'),('Indian/Chagos'),('Indian/Christmas'),('Indian/Cocos'),('Indian/Comoro'),('Indian/Kerguelen'),('Indian/Mahe'),('Indian/Maldives'), +('Indian/Mauritius'),('Indian/Mayotte'),('Indian/Reunion'),('Pacific/Apia'),('Pacific/Auckland'),('Pacific/Chatham'),('Pacific/Easter'),('Pacific/Efate'), +('Pacific/Enderbury'),('Pacific/Fakaofo'),('Pacific/Fiji'),('Pacific/Funafuti'),('Pacific/Galapagos'),('Pacific/Gambier'),('Pacific/Guadalcanal'), +('Pacific/Guam'),('Pacific/Honolulu'),('Pacific/Johnston'),('Pacific/Kiritimati'),('Pacific/Kosrae'),('Pacific/Kwajalein'),('Pacific/Majuro'), +('Pacific/Marquesas'),('Pacific/Midway'),('Pacific/Nauru'),('Pacific/Niue'),('Pacific/Norfolk'),('Pacific/Noumea'),('Pacific/Pago_Pago'),('Pacific/Palau'), +('Pacific/Pitcairn'),('Pacific/Ponape'),('Pacific/Port_Moresby'),('Pacific/Rarotonga'),('Pacific/Saipan'),('Pacific/Samoa'),('Pacific/Tahiti'), +('Pacific/Tarawa'),('Pacific/Tongatapu'),('Pacific/Truk'),('Pacific/Wake'),('Pacific/Wallis'),('Pacific/Yap'),('Brazil/Acre'),('Brazil/DeNoronha'), +('Brazil/East'),('Brazil/West'),('Canada/Atlantic'),('Canada/Central'),('Canada/East-Saskatchewan'),('Canada/Eastern'),('Canada/Mountain'), +('Canada/Newfoundland'),('Canada/Pacific'),('Canada/Saskatchewan'),('Canada/Yukon'),('CET'),('Chile/Continental'),('Chile/EasterIsland'),('CST6CDT'), +('Cuba'),('EET'),('Egypt'),('Eire'),('EST'),('EST5EDT'),('Etc/GMT'),('Etc/GMT+0'),('Etc/GMT+1'),('Etc/GMT+10'),('Etc/GMT+11'),('Etc/GMT+12'), +('Etc/GMT+2'),('Etc/GMT+3'),('Etc/GMT+4'),('Etc/GMT+5'),('Etc/GMT+6'),('Etc/GMT+7'),('Etc/GMT+8'),('Etc/GMT+9'),('Etc/GMT-0'),('Etc/GMT-1'), +('Etc/GMT-10'),('Etc/GMT-11'),('Etc/GMT-12'),('Etc/GMT-13'),('Etc/GMT-14'),('Etc/GMT-2'),('Etc/GMT-3'),('Etc/GMT-4'),('Etc/GMT-5'),('Etc/GMT-6'), +('Etc/GMT-7'),('Etc/GMT-8'),('Etc/GMT-9'),('Etc/GMT0'),('Etc/Greenwich'),('Etc/UCT'),('Etc/Universal'),('Etc/UTC'),('Etc/Zulu'),('Factory'),('GB'), +('GB-Eire'),('GMT'),('GMT+0'),('GMT-0'),('GMT0'),('Greenwich'),('Hongkong'),('HST'),('Iceland'),('Iran'),('Israel'),('Jamaica'),('Japan'),('Kwajalein'), +('Libya'),('MET'),('Mexico/BajaNorte'),('Mexico/BajaSur'),('Mexico/General'),('MST'),('MST7MDT'),('Navajo'),('NZ'),('NZ-CHAT'),('Poland'),('Portugal'), +('PRC'),('PST8PDT'),('ROC'),('ROK'),('Singapore'),('Turkey'),('UCT'),('Universal'),('US/Alaska'),('US/Aleutian'),('US/Arizona'),('US/Central'), +('US/East-Indiana'),('US/Eastern'),('US/Hawaii'),('US/Indiana-Starke'),('US/Michigan'),('US/Mountain'),('US/Pacific'),('US/Pacific-New'),('US/Samoa'), +('UTC'),('W-SU'),('WET'),('Zulu'); + +INSERT INTO `PREFIX_group` (`id_group`, `reduction`, `date_add`, `date_upd`) VALUES (1, 0, NOW(), NOW()); + +INSERT INTO `PREFIX_group_lang` (`id_group`, `id_lang`, `name`) VALUES (1, 1, 'Default'),(1, 2, 'Défaut'),(1, 3, 'Predeterminado'),(1, 4, 'Default'),(1, 5, 'Default'); + +INSERT INTO `PREFIX_category_group` (`id_category`, `id_group`) VALUES (1, 1); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_TAX_ADDRESS_TYPE', 'id_address_delivery', NOW(), NOW()); + +INSERT INTO `PREFIX_stock_mvt_reason` (`id_stock_mvt_reason`, `sign`, `date_add`, `date_upd`) VALUES +(1, 1, NOW(), NOW()), (2, -1, NOW(), NOW()), (3, -1, NOW(), NOW()), (4, -1, NOW(), NOW()), (5, 1, NOW(), NOW()); +INSERT INTO `PREFIX_stock_mvt_reason_lang` (`id_stock_mvt_reason`, `id_lang`, `name`) VALUES +(1, 1, 'Increase'), +(1, 2, 'Augmenter'), +(1, 3, 'Aumentar'), +(1, 4, 'Erhöhen'), +(1, 5, 'Increase'), +(2, 1, 'Decrease'), +(2, 2, 'Diminuer'), +(2, 3, 'Disminuir'), +(2, 4, 'Reduzieren'), +(2, 5, 'Decrease'), +(3, 1, 'Order'), +(3, 2, 'Commande'), +(3, 3, 'Pedido'), +(3, 4, 'Bestellung'), +(3, 5, 'Ordine'), +(4, 1, 'Missing Stock Movement'), +(4, 2, 'Mouvement de stock manquant'), +(4, 3, 'Movimiento de stock que falta'), +(4, 4, 'Lagerbewegung nicht stattgefunden'), +(4, 5, 'Movimento di merce mancante'), +(5, 1, 'Restocking'), +(5, 2, 'Réassort'), +(5, 3, 'Reaprovisionar'), +(5, 4, 'Auffüllung'), +(5, 5, 'Riassortimento'); + diff --git a/install-dev/sql/upgrade/0.9.1.2.sql b/install-dev/sql/upgrade/0.9.1.2.sql new file mode 100644 index 000000000..4ff1333c6 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.1.2.sql @@ -0,0 +1,30 @@ +/* STRUCTURE */ +CREATE TABLE `PREFIX_product_sale` ( +`id_product` INT( 10 ) UNSIGNED NOT NULL , +`quantity` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', +`nb_vente` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0', +`date_upd` DATE NOT NULL , +PRIMARY KEY ( `id_product` ) +) ENGINE = MYISAM DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_image_type` + ADD `manufacturers` BOOL NOT NULL DEFAULT '1' AFTER `categories`; + +ALTER TABLE `PREFIX_address` + ADD `id_manufacturer` INT( 10 ) UNSIGNED NOT NULL AFTER `id_customer` ; + +ALTER TABLE `PREFIX_address` + ADD `id_supplier` INT( 10 ) UNSIGNED NOT NULL AFTER `id_manufacturer` ; + +ALTER TABLE `PREFIX_order_discount` + ADD `id_discount` INT( 10 ) UNSIGNED NOT NULL AFTER `id_order` ; + +ALTER TABLE `PREFIX_discount` + ADD `quantity_per_user` INT( 10 ) UNSIGNED NOT NULL DEFAULT '1' AFTER `quantity` ; + +ALTER TABLE `PREFIX_contact` CHANGE `position` `position` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0'; + +/* CONTENTS */ + +/* CONFIGURATION VARIABLE */ + diff --git a/install-dev/sql/upgrade/0.9.1.sql b/install-dev/sql/upgrade/0.9.1.sql new file mode 100644 index 000000000..5b0fabb09 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.1.sql @@ -0,0 +1,9 @@ +/* STRUCTURE */ +ALTER TABLE `PREFIX_product` CHANGE `price` `price` DECIMAL(13,6) NOT NULL DEFAULT '0.000000'; + +/* CONTENTS */ +DELETE FROM `PREFIX_carrier_lang` WHERE `id_carrier` = (SELECT c.`id_carrier` FROM `PREFIX_carrier` c WHERE c.`name` = 'My download manager' LIMIT 1); +DELETE FROM `PREFIX_carrier` WHERE `name` = 'My download manager'; + +/* Conf vars */ +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_TAX_NO', '0', NOW(), NOW()); \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.5.1.sql b/install-dev/sql/upgrade/0.9.5.1.sql new file mode 100644 index 000000000..10deba89a --- /dev/null +++ b/install-dev/sql/upgrade/0.9.5.1.sql @@ -0,0 +1,75 @@ +/* STRUCTURE */ +ALTER TABLE `PREFIX_order_state` + ADD `logable` TINYINT(1) NOT NULL DEFAULT 0; +ALTER TABLE `PREFIX_product_sale` + CHANGE `nb_vente` `sale_nbr` INT(10) UNSIGNED NOT NULL DEFAULT 0; +ALTER TABLE `PREFIX_carrier` + CHANGE `tax` `id_tax` INT(10) UNSIGNED NULL DEFAULT 0 AFTER `id_carrier`; +ALTER TABLE `PREFIX_carrier` + ADD `shipping_handling` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 AFTER `deleted`; +ALTER TABLE `PREFIX_address` + CHANGE `id_country` `id_country` INT(10) UNSIGNED NOT NULL DEFAULT 0, + CHANGE `id_customer` `id_customer` INT(10) UNSIGNED NOT NULL DEFAULT 0, + CHANGE `id_manufacturer` `id_manufacturer` INT(10) UNSIGNED NOT NULL DEFAULT 0; +RENAME TABLE `PREFIX_product_attribute_combinaison` TO `PREFIX_product_attribute_combination`; +ALTER TABLE `PREFIX_product_attribute_combination` + DROP INDEX `product_attribute_combinaison_index`, + ADD PRIMARY KEY (`id_attribute`, `id_product_attribute`); + +CREATE TABLE `PREFIX_carrier_zone` ( + id_carrier int(10) unsigned NOT NULL, + id_zone int(10) unsigned NOT NULL, + INDEX carrier_zone_index(id_carrier, id_zone) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tax_zone` ( + id_tax int(10) unsigned NOT NULL, + id_zone int(10) unsigned NOT NULL, + INDEX tax_zone_index(id_tax, id_zone) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + +/* CONTENTS */ + +/* Adding tab Contact */ +INSERT INTO `PREFIX_tab` (`id_parent`, `class_name`, `position`) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM`PREFIX_tab` t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp), 'AdminContact', 6); +INSERT INTO `PREFIX_tab_lang` (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminContact' LIMIT 1), + 'Contact' FROM `PREFIX_lang`); +UPDATE `PREFIX_tab_lang` SET `name` = 'Coordonnées' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminContact' LIMIT 1) + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr' LIMIT 1); +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) + VALUES ('1', (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminContact' LIMIT 1), '1', '1', '1', '1'); + +/* Rename old tab */ +UPDATE `PREFIX_tab_lang` SET `name` = 'Produits' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminPPreferences') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +UPDATE `PREFIX_tab_lang` SET `name` = 'Emails' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminEmails') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +UPDATE `PREFIX_tab_lang` SET `name` = 'Images' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminImages') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); + +/* New BankWire state */ +UPDATE `PREFIX_order_state` SET `logable` = 1 WHERE `id_order_state` < 6 AND `id_order_state` > 1; +INSERT INTO `PREFIX_order_state` (`id_order_state`, `invoice`, `send_email`, `color`, `unremovable`, `logable`) VALUES (10, 0, 1, 'lightblue', 1, 0); +INSERT INTO `PREFIX_order_state_lang` (`id_order_state`, `id_lang`, `name`, `template`) VALUES +(10, 1, 'Awaiting bank wire payment', 'bankwire'), +(10, 2, 'En attente du paiement par virement bancaire', 'bankwire'); + +/* New hook */ +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('updateOrderStatus', 'Order''s status update event', 'Launch modules when the order''s status of an order change.', 0); + +/* Adding zones for tax/carrier */ +INSERT INTO `PREFIX_tax_zone` (id_tax, id_zone) (SELECT id_tax, id_zone FROM `PREFIX_tax` CROSS JOIN `PREFIX_zone`); +INSERT INTO `PREFIX_carrier_zone` (id_carrier, id_zone) (SELECT id_carrier, id_zone FROM `PREFIX_carrier` CROSS JOIN `PREFIX_zone`); + +/* CONFIGURATION VARIABLE */ + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PREFIX_PURCHASE_MINIMUM', '0', NOW(), NOW()), +('PREFIX_SHOP_ENABLE', '1', NOW(), NOW()); \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.5.2.sql b/install-dev/sql/upgrade/0.9.5.2.sql new file mode 100644 index 000000000..57f9b765c --- /dev/null +++ b/install-dev/sql/upgrade/0.9.5.2.sql @@ -0,0 +1,5 @@ +/* STRUCTURE */ + +/* CONTENTS */ + +/* CONFIGURATION VARIABLE */ \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.6.1.sql b/install-dev/sql/upgrade/0.9.6.1.sql new file mode 100644 index 000000000..fa371d9b9 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.6.1.sql @@ -0,0 +1,51 @@ +/* STRUCTURE */ + +CREATE TABLE `PREFIX_alias` ( + alias varchar(255) NOT NULL, + search varchar(255) NOT NULL, + active tinyint(1) NOT NULL default 1, + id_alias int(10) NOT NULL auto_increment, + PRIMARY KEY (id_alias), + UNIQUE KEY alias (alias) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_configuration` + ADD UNIQUE `name` (`name`); +ALTER TABLE `PREFIX_product` + ADD `wholesale_price` DECIMAL( 13, 6 ) NOT NULL AFTER `price`; +ALTER TABLE `PREFIX_range_weight` + CHANGE `delimiter1` `delimiter1` DECIMAL( 13, 6 ) NOT NULL DEFAULT '0.000000'; +ALTER TABLE `PREFIX_range_weight` + CHANGE `delimiter2` `delimiter2` DECIMAL( 13, 6 ) NOT NULL DEFAULT '0.000000'; + ALTER TABLE `PREFIX_discount_type_lang` + CHANGE `name` `name` VARCHAR(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; + ALTER TABLE `PREFIX_product` + CHANGE `bargain` `on_sale` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0; +ALTER TABLE `PREFIX_image_type` + ADD `suppliers` BOOL NOT NULL DEFAULT 1; + +/* CONTENTS */ + +/* Adding tab alias */ +INSERT INTO `PREFIX_tab` (`id_parent`, `class_name`, `position`) VALUES ((SELECT tmp.id_tab FROM (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp), 'AdminAliases', 9); +INSERT INTO `PREFIX_tab_lang` (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminAliases' LIMIT 1), + 'Alias' FROM `PREFIX_lang`); +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) + VALUES ('1', (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminAliases' LIMIT 1), '1', '1', '1', '1'); + +/* Adding tab import */ +INSERT INTO `PREFIX_tab` (`id_parent`, `class_name`, `position`) VALUES ((SELECT tmp.id_tab FROM (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp), 'AdminImport', 10); +INSERT INTO `PREFIX_tab_lang` (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminImport' LIMIT 1), + 'Import' FROM `PREFIX_lang`); +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) + VALUES ('1', (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminImport' LIMIT 1), '1', '1', '1', '1'); + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`) +VALUES ('adminOrder', 'Display in Back-Office, tab AdminOrder', 'Launch modules when the tab AdminOrder is displayed on back-office.'); + + +/* CONFIGURATION VARIABLE */ \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.6.2.sql b/install-dev/sql/upgrade/0.9.6.2.sql new file mode 100644 index 000000000..c55fefbb8 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.6.2.sql @@ -0,0 +1,7 @@ +/* STRUCTURE */ + +ALTER TABLE `PREFIX_product` CHANGE `wholesale_price` `wholesale_price` DECIMAL(13, 6) NULL; + +/* CONTENTS */ + +/* CONFIGURATION VARIABLE */ \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.7.1.sql b/install-dev/sql/upgrade/0.9.7.1.sql new file mode 100644 index 000000000..5a8ded7f5 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.7.1.sql @@ -0,0 +1,14 @@ +/* STRUCTURE */ + +ALTER TABLE `PREFIX_module` ADD INDEX (`name`); + +/* CONTENTS */ + +INSERT INTO `PREFIX_hook` (`name` , `title`, `description`, `position`) VALUES +('footer', 'Footer', 'Add block in footer', 1), +('PDFInvoice', 'PDF Invoice', 'Allow the display of extra informations into the PDF invoice', 0); +UPDATE `PREFIX_hook` SET `description` = 'Add blocks in the header', `position` = '1' WHERE `name` = 'header' LIMIT 1 ; +UPDATE `PREFIX_currency` SET `iso_code` = 'XXX' WHERE `iso_code` IS NULL; + + +/* CONFIGURATION VARIABLE */ \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.7.2.sql b/install-dev/sql/upgrade/0.9.7.2.sql new file mode 100644 index 000000000..c0ebf4949 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.7.2.sql @@ -0,0 +1,21 @@ +/* STRUCTURE */ + +CREATE TABLE `PREFIX_discount_quantity` ( + id_discount_quantity INT UNSIGNED NOT NULL auto_increment, + id_discount_type INT UNSIGNED NOT NULL, + id_product INT UNSIGNED NOT NULL, + id_product_attribute INT UNSIGNED NULL, + quantity INT UNSIGNED NOT NULL, + value DECIMAL(10,2) UNSIGNED NOT NULL, + PRIMARY KEY (id_discount_quantity) +) ENGINE=MYISAM DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_product` ADD quantity_discount BOOL NULL DEFAULT 0 AFTER out_of_stock; + +/* CONTENTS */ + + +/* CONFIGURATION VARIABLE */ + +UPDATE `PREFIX_configuration` SET name = 'PS_TAX', value = 1 WHERE name = 'PS_TAX_NO' AND value = 0; +UPDATE `PREFIX_configuration` SET name = 'PS_TAX', value = 0 WHERE name = 'PS_TAX_NO' AND value = 1; \ No newline at end of file diff --git a/install-dev/sql/upgrade/0.9.sql b/install-dev/sql/upgrade/0.9.sql new file mode 100644 index 000000000..abef1ee07 --- /dev/null +++ b/install-dev/sql/upgrade/0.9.sql @@ -0,0 +1,39 @@ +/* STRUCTURE */ + +ALTER TABLE `PREFIX_currency` ADD `iso_code` VARCHAR( 3 ) NOT NULL DEFAULT '0' AFTER `name`; +ALTER TABLE `PREFIX_product_attribute` ADD `default_on` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `weight`; +ALTER TABLE `PREFIX_carrier` ADD `tax` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `deleted`; + +ALTER TABLE `PREFIX_order_detail` + ADD `download_hash` VARCHAR(255) default NULL AFTER `tax_rate`, + ADD `download_nb` INT(10) unsigned default 0 AFTER `tax_rate`, + ADD `download_deadline` DATETIME DEFAULT NULL AFTER `tax_rate`; + +CREATE TABLE `PREFIX_product_download` ( + `id_product_download` INT(10) unsigned NOT NULL auto_increment, + `id_product` INT(10) unsigned NOT NULL, + `display_filename` VARCHAR(255) default NULL, + `physically_filename` VARCHAR(255) default NULL, + `date_deposit` DATETIME NOT NULL, + `date_expiration` DATETIME default NULL, + `nb_days_accessible` int(10) unsigned default NULL, + `nb_downloadable` int(10) unsigned default 1, + PRIMARY KEY (`id_product_download`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + + +/* CONTENTS */ + +/* Adding tab Appearance */ +UPDATE `PREFIX_tab` SET `class_name` = 'AdminAppearance' WHERE class_name = 'AdminHomepage'; +UPDATE `PREFIX_tab_lang` SET `name` = 'Appearance' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminAppearance'); +UPDATE `PREFIX_tab_lang` SET `name` = 'Apparence' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminAppearance') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); + +/* Adding iso_code to currency */ +UPDATE `PREFIX_currency` SET `iso_code` = 'XXX'; + +/* Conf vars */ +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_DISPLAY_QTIES', '1', NOW(), NOW()); \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.0.0.1.sql b/install-dev/sql/upgrade/1.0.0.1.sql new file mode 100644 index 000000000..d1bd27dd1 --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.1.sql @@ -0,0 +1,129 @@ +/* PHP */ +/* PHP:latin1_database_to_utf8(); */; + +/* STRUCTURE */ +SET NAMES 'utf8'; + +CREATE TABLE PREFIX_attribute_impact ( + id_attribute_impact int(11) NOT NULL AUTO_INCREMENT, + id_product int(11) NOT NULL, + id_attribute int(11) NOT NULL, + weight float NOT NULL, + price decimal(10,2) NOT NULL, + PRIMARY KEY (id_attribute_impact), + UNIQUE KEY id_product (id_product,id_attribute) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_supplier_lang ( + id_supplier INTEGER UNSIGNED NOT NULL, + id_lang INTEGER UNSIGNED NOT NULL, + description TEXT NULL, + INDEX supplier_lang_index(id_supplier, id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_manufacturer_lang ( + id_manufacturer INTEGER UNSIGNED NOT NULL, + id_lang INTEGER UNSIGNED NOT NULL, + description TEXT NULL, + INDEX manufacturer_lang_index(id_manufacturer, id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_state ( + id_state int(10) unsigned NOT NULL AUTO_INCREMENT, + id_country int(11) NOT NULL, + name varchar(64) NOT NULL, + iso_code varchar(3) NOT NULL, + active tinyint(1) NOT NULL default 0, + PRIMARY KEY (id_state) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +ALTER TABLE PREFIX_customer ADD secure_key VARCHAR(32) NOT NULL DEFAULT '-1' AFTER id_gender; +ALTER TABLE PREFIX_orders ADD secure_key VARCHAR(32) NOT NULL DEFAULT '-1' AFTER id_address_invoice; +ALTER TABLE PREFIX_product ADD id_category_default INT NULL AFTER id_tax; +ALTER TABLE PREFIX_category_product ADD position INTEGER UNSIGNED NOT NULL DEFAULT 0 AFTER id_product; +ALTER TABLE PREFIX_product ADD INDEX (id_category_default); +ALTER TABLE PREFIX_order_detail ADD ecotax DECIMAL(10, 2) NOT NULL DEFAULT 0 AFTER tax_rate; +ALTER TABLE PREFIX_employee + CHANGE name lastname VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + CHANGE surname firstname VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; +ALTER TABLE PREFIX_address + CHANGE name lastname VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + CHANGE surname firstname VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; +ALTER TABLE PREFIX_customer + CHANGE name lastname VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , + CHANGE surname firstname VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; +ALTER TABLE PREFIX_quick_access ADD new_window TINYINT( 1 ) NOT NULL DEFAULT 0 AFTER id_quick_access; + +/* CONTENTS */ +UPDATE PREFIX_hook_module SET id_hook = 14 WHERE id_hook = 9; +UPDATE PREFIX_quick_access SET new_window = 1 WHERE id_quick_access = 2 LIMIT 1; +INSERT INTO PREFIX_hook (name, title, description, position) VALUES ('orderConfirmation', 'Order confirmation page', 'Called on order confirmation page', 0); +UPDATE PREFIX_order_detail odt + SET product_price = ( + odt.product_price * ( + SELECT conversion_rate FROM PREFIX_currency c, PREFIX_orders o WHERE o.id_order = odt.id_order AND c.id_currency = o.id_currency + ) +); +UPDATE PREFIX_product p SET p.id_category_default = (SELECT id_category FROM PREFIX_category_product cp WHERE cp.id_product = p.id_product GROUP BY id_product ORDER BY cp.id_category ASC); +UPDATE PREFIX_category_product cp SET cp.position= cp.id_product; + +/* NEW TABS */ +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp), 'AdminPDF', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminPDF' LIMIT 1), + 'PDF Invoice' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Facture PDF' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminPDF') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminPDF' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp), 'AdminPrintPDF', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminPrintPDF' LIMIT 1), + 'Print invoices' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Impression factures' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminPrintPDF') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminPrintPDF' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES (-1, 'AdminSearch', 2); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSearch' LIMIT 1), + 'Search' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Recherche' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminSearch') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSearch' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp), 'AdminLocalization', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminLocalization' LIMIT 1), + 'Localization' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Localisation' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminLocalization') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminLocalization' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminShipping' LIMIT 1) AS tmp), 'AdminStates', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminShipping' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminStates' LIMIT 1), + 'States' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Etats' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminStates') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (`id_profile`, `id_tab`, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminStates' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_image_type (`name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`) VALUES ('home', 129, 129, 1, 0, 0, 0); + +/* CONFIGURATION VARIABLE */ +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_NB_DAYS_NEW_PRODUCT', 20, NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_WEIGHT_UNIT', 'kg', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_BLOCK_CART_AJAX', '1', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_FO_PROTOCOL', 'http://', NOW(), NOW()); +UPDATE PREFIX_configuration SET name = 'PS_MAIL_SMTP_PORT', value = 25 WHERE name = 'PS_MAIL_SMTP_PORT' AND value = 'default'; +UPDATE PREFIX_configuration SET name = 'PS_MAIL_SMTP_PORT', value = 465 WHERE name = 'PS_MAIL_SMTP_PORT' AND value = 'secure'; diff --git a/install-dev/sql/upgrade/1.0.0.2.sql b/install-dev/sql/upgrade/1.0.0.2.sql new file mode 100644 index 000000000..fb0c72687 --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.2.sql @@ -0,0 +1,13 @@ + +/* STRUCTURE */ +SET NAMES 'utf8'; + +ALTER TABLE PREFIX_currency CHANGE COLUMN conversion_rate conversion_rate DECIMAL(10,6) NOT NULL; + +/* CONTENTS */ + +INSERT INTO PREFIX_image_type (`name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`) VALUES ('thickbox', 600, 600, 1, 0, 0, 0); +INSERT INTO PREFIX_image_type (`name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`) VALUES ('category', 600, 150, 0, 1, 0, 0); +INSERT INTO PREFIX_image_type (`name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`) VALUES ('thickbox', 129, 129, 1, 0, 0, 0); + +/* CONFIGURATION VARIABLE */ diff --git a/install-dev/sql/upgrade/1.0.0.3.sql b/install-dev/sql/upgrade/1.0.0.3.sql new file mode 100644 index 000000000..e82995b59 --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.3.sql @@ -0,0 +1,441 @@ +/* STRUCTURE */ +SET NAMES 'utf8'; + +ALTER TABLE PREFIX_attribute_group_lang DROP INDEX attribute_group_lang_index, ADD PRIMARY KEY (id_attribute_group, id_lang); +ALTER TABLE PREFIX_discount_lang DROP INDEX discount_lang_index, ADD PRIMARY KEY (id_discount, id_lang); +ALTER TABLE PREFIX_discount_type_lang DROP INDEX discount_type_lang_index, ADD PRIMARY KEY (id_discount_type, id_lang); +ALTER TABLE PREFIX_manufacturer_lang DROP INDEX manufacturer_lang_index, ADD PRIMARY KEY (id_manufacturer, id_lang); +ALTER TABLE PREFIX_supplier_lang DROP INDEX supplier_lang_index, ADD PRIMARY KEY (id_supplier, id_lang); +ALTER TABLE PREFIX_profile_lang DROP INDEX profile_lang_index, ADD PRIMARY KEY (id_profile, id_lang); +ALTER TABLE PREFIX_configuration_lang DROP INDEX configuration_lang_index, ADD PRIMARY KEY (id_configuration, id_lang); +ALTER TABLE PREFIX_tab_lang DROP INDEX tab_lang, ADD PRIMARY KEY (id_tab, id_lang); + +ALTER TABLE PREFIX_product ADD id_color_default INT UNSIGNED NULL AFTER id_category_default; +ALTER TABLE PREFIX_attribute_group ADD is_color_group TINYINT(1) NOT NULL DEFAULT 0; +ALTER TABLE PREFIX_attribute ADD color VARCHAR(32) NULL DEFAULT NULL; +ALTER TABLE PREFIX_currency CHANGE conversion_rate conversion_rate DECIMAL(13, 6) NOT NULL ; +ALTER TABLE PREFIX_address ADD id_state INT NULL AFTER id_country; +ALTER TABLE PREFIX_state ADD id_zone INT NULL AFTER id_country; +ALTER TABLE PREFIX_country ADD contains_states tinyint(1) NOT NULL DEFAULT 0; + +UPDATE PREFIX_customer SET secure_key = MD5(RAND()) WHERE secure_key = '-1'; +UPDATE PREFIX_orders o SET secure_key = (SELECT secure_key FROM PREFIX_customer c WHERE c.id_customer = o.id_customer); + +CREATE TABLE PREFIX_order_return ( + id_order_return INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + id_customer INTEGER UNSIGNED NOT NULL, + id_order INTEGER UNSIGNED NOT NULL, + state tinyint(1) unsigned NOT NULL DEFAULT 0, + question TEXT NOT NULL, + date_add DATETIME NOT NULL, + date_upd DATETIME NOT NULL, + PRIMARY KEY(id_order_return), + INDEX order_return_customer(id_customer) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_order_return_detail ( + id_order_return INTEGER UNSIGNED NOT NULL, + id_order_detail INTEGER UNSIGNED NOT NULL, + product_quantity int(10) unsigned NOT NULL DEFAULT 1, + PRIMARY KEY (id_order_return,id_order_detail) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_order_return_state ( + id_order_return_state int(10) unsigned NOT NULL auto_increment, + color varchar(32) default NULL, + PRIMARY KEY (`id_order_return_state`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_order_return_state_lang ( + id_order_return_state int(10) unsigned NOT NULL, + id_lang int(10) unsigned NOT NULL, + name varchar(64) NOT NULL, + UNIQUE KEY `order_state_lang_index` (`id_order_return_state`,`id_lang`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_order_slip ( + id_order_slip INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + id_customer INTEGER UNSIGNED NOT NULL, + id_order INTEGER UNSIGNED NOT NULL, + date_add DATETIME NOT NULL, + date_upd DATETIME NOT NULL, + PRIMARY KEY(id_order_slip), + INDEX order_slip_customer(id_customer) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_order_slip_detail ( + id_order_slip INTEGER UNSIGNED NOT NULL, + id_order_detail INTEGER UNSIGNED NOT NULL, + product_quantity int(10) unsigned NOT NULL DEFAULT 0, + PRIMARY KEY (`id_order_slip`,`id_order_detail`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_tax_state ( + id_tax int(10) unsigned NOT NULL, + id_state int(10) unsigned NOT NULL, + INDEX tax_state_index(id_tax, id_state) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* CONTENTS */ + +INSERT INTO PREFIX_order_return_state (`id_order_return_state`, `color`) VALUES +(1, '#ADD8E6'), +(2, '#EEDDFF'), +(3, '#DDFFAA'), +(4, '#FFD3D3'), +(5, '#FFFFBB'); + +INSERT INTO PREFIX_order_return_state_lang (`id_order_return_state`, `id_lang`, `name`) VALUES +(1, 1, 'Waiting for confirmation'), +(2, 1, 'Waiting for package'), +(3, 1, 'Package received'), +(4, 1, 'Return denied'), +(5, 1, 'Return completed'), +(1, 2, 'En attente de confirmation'), +(2, 2, 'En attente du colis'), +(3, 2, 'Colis reçu'), +(4, 2, 'Retour refusé'), +(5, 2, 'Retour terminé'); + +UPDATE PREFIX_country SET contains_states = 1 WHERE id_country = 21; + +INSERT INTO `PREFIX_state` (`id_state`, `id_country`, `id_zone`, `name`, `iso_code`, `active`) VALUES +(1, 21, 2, 'Alabama', 'AL', 1), +(2, 21, 2, 'Alaska', 'AK', 1), +(3, 21, 2, 'Arizona', 'AZ', 1), +(4, 21, 2, 'Arkansas', 'AR', 1), +(5, 21, 2, 'California', 'CA', 1), +(6, 21, 2, 'Colorado', 'CO', 1), +(7, 21, 2, 'Connecticut', 'CT', 1), +(8, 21, 2, 'Delaware', 'DE', 1), +(9, 21, 2, 'Florida', 'FL', 1), +(10, 21, 2, 'Georgia', 'GA', 1), +(11, 21, 2, 'Hawaii', 'HI', 1), +(12, 21, 2, 'Idaho', 'ID', 1), +(13, 21, 2, 'Illinois', 'IL', 1), +(14, 21, 2, 'Indiana', 'IN', 1), +(15, 21, 2, 'Iowa', 'IA', 1), +(16, 21, 2, 'Kansas', 'KS', 1), +(17, 21, 2, 'Kentucky', 'KY', 1), +(18, 21, 2, 'Louisiana', 'LA', 1), +(19, 21, 2, 'Maine', 'ME', 1), +(20, 21, 2, 'Maryland', 'MD', 1), +(21, 21, 2, 'Massachusetts', 'MA', 1), +(22, 21, 2, 'Michigan', 'MI', 1), +(23, 21, 2, 'Minnesota', 'MN', 1), +(24, 21, 2, 'Mississippi', 'MS', 1), +(25, 21, 2, 'Missouri', 'MO', 1), +(26, 21, 2, 'Montana', 'MT', 1), +(27, 21, 2, 'Nebraska', 'NE', 1), +(28, 21, 2, 'Nevada', 'NV', 1), +(29, 21, 2, 'New Hampshire', 'NH', 1), +(30, 21, 2, 'New Jersey', 'NJ', 1), +(31, 21, 2, 'New Mexico', 'NM', 1), +(32, 21, 2, 'New York', 'NY', 1), +(33, 21, 2, 'North Carolina', 'NC', 1), +(34, 21, 2, 'North Dakota', 'ND', 1), +(35, 21, 2, 'Ohio', 'OH', 1), +(36, 21, 2, 'Oklahoma', 'OK', 1), +(37, 21, 2, 'Oregon', 'OR', 1), +(38, 21, 2, 'Pennsylvania', 'PA', 1), +(39, 21, 2, 'Rhode Island', 'RI', 1), +(40, 21, 2, 'South Carolina', 'SC', 1), +(41, 21, 2, 'South Dakota', 'SD', 1), +(42, 21, 2, 'Tennessee', 'TN', 1), +(43, 21, 2, 'Texas', 'TX', 1), +(44, 21, 2, 'Utah', 'UT', 1), +(45, 21, 2, 'Vermont', 'VT', 1), +(46, 21, 2, 'Virginia', 'VA', 1), +(47, 21, 2, 'Washington', 'WA', 1), +(48, 21, 2, 'West Virginia', 'WV', 1), +(49, 21, 2, 'Wisconsin', 'WI', 1), +(50, 21, 2, 'Wyoming', 'WY', 1), +(51, 21, 2, 'Puerto Rico', 'PR', 1), +(52, 21, 2, 'US Virgin Islands', 'VI', 1); + +INSERT INTO `PREFIX_lang` (`name`, `active`, `iso_code`) VALUES +('Deutsch (German)', 1, 'de'), +('Español (Spanish)', 1, 'es'), +('Nederlands (Dutch)', 1, 'nl'), +('Bahasa Indonesia (Indonesian)', 1, 'id'), +('Italiano (Italian)', 1, 'it'), +('Język polski (Polish)', 1, 'pl'), +('Português (Portuguese)', 1, 'pt'), +('Čeština (Czech)', 1, 'cs'), +('Pусский язык (Russian)', 0, 'ru'), +('Türkçe (Turkish)', 0, 'tr'), +('Tiếng Việt (Vietnamese)', 0, 'vn'); + +/* NEW LANGS */ + +INSERT IGNORE INTO `PREFIX_tab_lang` (`id_tab`, `id_lang`, `name`) + (SELECT `id_tab`, id_lang, (SELECT tl.`name` + FROM `PREFIX_tab_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_tab`=`PREFIX_tab`.`id_tab`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_tab`); + +INSERT IGNORE INTO `PREFIX_country_lang` (`id_country`, `id_lang`, `name`) + (SELECT `id_country`, id_lang, (SELECT tl.`name` + FROM `PREFIX_country_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_country`=`PREFIX_country`.`id_country`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_country`); + +INSERT IGNORE INTO `PREFIX_quick_access_lang` (`id_quick_access`, `id_lang`, `name`) + (SELECT `id_quick_access`, id_lang, (SELECT tl.`name` + FROM `PREFIX_quick_access_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_quick_access`=`PREFIX_quick_access`.`id_quick_access`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_quick_access`); + +INSERT IGNORE INTO `PREFIX_attribute_group_lang` (`id_attribute_group`, `id_lang`, `name`, `public_name`) + (SELECT `id_attribute_group`, id_lang, (SELECT tl.`name` + FROM `PREFIX_attribute_group_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_attribute_group`=`PREFIX_attribute_group`.`id_attribute_group`), + (SELECT tl.`public_name` + FROM `PREFIX_attribute_group_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_attribute_group`=`PREFIX_attribute_group`.`id_attribute_group`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_attribute_group`); + +INSERT IGNORE INTO `PREFIX_attribute_lang` (`id_attribute`, `id_lang`, `name`) + (SELECT `id_attribute`, id_lang, (SELECT tl.`name` + FROM `PREFIX_attribute_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_attribute`=`PREFIX_attribute`.`id_attribute`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_attribute`); + +INSERT IGNORE INTO `PREFIX_carrier_lang` (`id_carrier`, `id_lang`, `delay`) + (SELECT `id_carrier`, id_lang, (SELECT tl.`delay` + FROM `PREFIX_carrier_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_carrier`=`PREFIX_carrier`.`id_carrier`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_carrier`); + +INSERT IGNORE INTO `PREFIX_contact_lang` (`id_contact`, `id_lang`, `name`, `description`) + (SELECT `id_contact`, id_lang, (SELECT tl.`name` + FROM `PREFIX_contact_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_contact`=`PREFIX_contact`.`id_contact`), + (SELECT tl.`description` + FROM `PREFIX_contact_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_contact`=`PREFIX_contact`.`id_contact`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_contact`); + +INSERT IGNORE INTO `PREFIX_discount_lang` (`id_discount`, `id_lang`, `description`) + (SELECT `id_discount`, id_lang, (SELECT tl.`description` + FROM `PREFIX_discount_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_discount`=`PREFIX_discount`.`id_discount`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_discount`); + +INSERT IGNORE INTO `PREFIX_discount_type_lang` (`id_discount_type`, `id_lang`, `name`) + (SELECT `id_discount_type`, id_lang, (SELECT tl.`name` + FROM `PREFIX_discount_type_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_discount_type`=`PREFIX_discount_type`.`id_discount_type`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_discount_type`); + +INSERT IGNORE INTO `PREFIX_feature_lang` (`id_feature`, `id_lang`, `name`) + (SELECT `id_feature`, id_lang, (SELECT tl.`name` + FROM `PREFIX_feature_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_feature`=`PREFIX_feature`.`id_feature`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_feature`); + +INSERT IGNORE INTO `PREFIX_feature_value_lang` (`id_feature_value`, `id_lang`, `value`) + (SELECT `id_feature_value`, id_lang, (SELECT tl.`value` + FROM `PREFIX_feature_value_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_feature_value`=`PREFIX_feature_value`.`id_feature_value`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_feature_value`); + +INSERT IGNORE INTO `PREFIX_image_lang` (`id_image`, `id_lang`, `legend`) + (SELECT `id_image`, id_lang, (SELECT tl.`legend` + FROM `PREFIX_image_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_image`=`PREFIX_image`.`id_image`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_image`); + +INSERT IGNORE INTO `PREFIX_manufacturer_lang` (`id_manufacturer`, `id_lang`, `description`) + (SELECT `id_manufacturer`, id_lang, (SELECT tl.`description` + FROM `PREFIX_manufacturer_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_manufacturer`=`PREFIX_manufacturer`.`id_manufacturer`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_manufacturer`); + +INSERT IGNORE INTO `PREFIX_order_return_state_lang` (`id_order_return_state`, `id_lang`, `name`) + (SELECT `id_order_return_state`, id_lang, (SELECT tl.`name` + FROM `PREFIX_order_return_state_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_order_return_state`=`PREFIX_order_return_state`.`id_order_return_state`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_order_return_state`); + +INSERT IGNORE INTO `PREFIX_order_state_lang` (`id_order_state`, `id_lang`, `name`, `template`) + (SELECT `id_order_state`, id_lang, (SELECT tl.`name` + FROM `PREFIX_order_state_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_order_state`=`PREFIX_order_state`.`id_order_state`), + (SELECT tl.`template` + FROM `PREFIX_order_state_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_order_state`=`PREFIX_order_state`.`id_order_state`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_order_state`); + +INSERT IGNORE INTO `PREFIX_profile_lang` (`id_profile`, `id_lang`, `name`) + (SELECT `id_profile`, id_lang, (SELECT tl.`name` + FROM `PREFIX_profile_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_profile`=`PREFIX_profile`.`id_profile`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_profile`); + +INSERT IGNORE INTO `PREFIX_supplier_lang` (`id_supplier`, `id_lang`, `description`) + (SELECT `id_supplier`, id_lang, (SELECT tl.`description` + FROM `PREFIX_supplier_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_supplier`=`PREFIX_supplier`.`id_supplier`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_supplier`); + +INSERT IGNORE INTO `PREFIX_tax_lang` (`id_tax`, `id_lang`, `name`) + (SELECT `id_tax`, id_lang, (SELECT tl.`name` + FROM `PREFIX_tax_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_tax`=`PREFIX_tax`.`id_tax`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_tax`); + +/* products */ +INSERT IGNORE INTO `PREFIX_product_lang` (`id_product`, `id_lang`, `description`, `description_short`, `link_rewrite`, `meta_description`, `meta_keywords`, `meta_title`, `name`, `availability`) + (SELECT `id_product`, id_lang, + (SELECT tl.`description` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`description_short` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`link_rewrite` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`meta_description` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`meta_keywords` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`meta_title` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`name` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`), + (SELECT tl.`availability` + FROM `PREFIX_product_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_product`=`PREFIX_product`.`id_product`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_product`); + +/* categories */ +INSERT IGNORE INTO `PREFIX_category_lang` (`id_category`, `id_lang`, `description`, `link_rewrite`, `meta_description`, `meta_keywords`, `meta_title`, `name`) + (SELECT `id_category`, id_lang, + (SELECT tl.`description` + FROM `PREFIX_category_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_category`=`PREFIX_category`.`id_category`), + (SELECT tl.`link_rewrite` + FROM `PREFIX_category_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_category`=`PREFIX_category`.`id_category`), + (SELECT tl.`meta_description` + FROM `PREFIX_category_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_category`=`PREFIX_category`.`id_category`), + (SELECT tl.`meta_keywords` + FROM `PREFIX_category_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_category`=`PREFIX_category`.`id_category`), + (SELECT tl.`meta_title` + FROM `PREFIX_category_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_category`=`PREFIX_category`.`id_category`), + (SELECT tl.`name` + FROM `PREFIX_category_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_category`=`PREFIX_category`.`id_category`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_category`); + + + +/* NEW TABS */ + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp), 'AdminReturn', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminReturn' LIMIT 1), + 'Merchandise returns (RMAs)' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Retours produit' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminReturn') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminReturn' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp), 'AdminSlip', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSlip' LIMIT 1), + 'Credit slips' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Avoirs' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminSlip') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSlip' LIMIT 1), 1, 1, 1, 1); + + +/* CONFIGURATION VARIABLE */ +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_ORDER_RETURN', '0', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_ORDER_RETURN_NB_DAYS', '7', NOW(), NOW()); +UPDATE PREFIX_configuration SET name = 'PS_SSL_ENABLED' WHERE name = 'PS_FO_PROTOCOL'; +UPDATE PREFIX_configuration SET name = 'PS_SSL_ENABLED', value = 0 WHERE name = 'PS_SSL_ENABLED' AND value = 'http://'; +UPDATE PREFIX_configuration SET name = 'PS_SSL_ENABLED', value = 1 WHERE name = 'PS_SSL_ENABLED' AND value = 'https://'; + diff --git a/install-dev/sql/upgrade/1.0.0.4.sql b/install-dev/sql/upgrade/1.0.0.4.sql new file mode 100644 index 000000000..1d5697ce5 --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.4.sql @@ -0,0 +1,88 @@ +/* STRUCTURE */ +SET NAMES 'utf8'; + +ALTER TABLE PREFIX_order_detail + ADD product_ean13 VARCHAR(13) CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER product_price; +ALTER TABLE PREFIX_order_detail + ADD product_quantity_return INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER product_quantity; + +ALTER TABLE PREFIX_state + ADD tax_behavior SMALLINT(1) NOT NULL DEFAULT 0 AFTER iso_code; + +ALTER TABLE PREFIX_product + ADD reduction_from DATE NOT NULL AFTER reduction_percent; +ALTER TABLE PREFIX_product + ADD reduction_to DATE NOT NULL AFTER reduction_from; + +ALTER TABLE PREFIX_range_weight + ADD id_carrier INTEGER UNSIGNED DEFAULT NULL AFTER id_range_weight; +ALTER TABLE PREFIX_range_weight + DROP INDEX range_weight_index, + ADD UNIQUE range_weight_unique (delimiter1, delimiter2, id_carrier); +ALTER TABLE PREFIX_range_price + ADD id_carrier INTEGER UNSIGNED DEFAULT NULL AFTER id_range_price; +ALTER TABLE PREFIX_range_price + DROP INDEX range_price_index, + ADD UNIQUE range_price_unique (delimiter1, delimiter2, id_carrier); + +/* CONTENTS */ +/* One request per insert, if one die, other can be inserted */ +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('adminCustomers', 'Display in Back-Office, tab AdminCustomers', 'Launch modules when the tab AdminCustomers is displayed on back-office.', 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('createAccount', 'Successful customer create account', 'Called when new customer create account successfuled', 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('customerAccount', 'Customer account page display in front office', 'Called when a customer access to his account.', 1); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('orderSlip', 'Called when a order slip is created', 'Called when a quantity of one product change in an order.', 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('productTab', 'Tabs on product page', 'Called on order product page tabs', 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('productTabContent', 'Content of tabs on product page', 'Called on order product page tabs', 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('shoppingCart', 'Shopping cart footer', 'Display some specific informations on the shopping cart page', 0); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_MAIL_TYPE', '3', NOW(), NOW()); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_TOKEN_ENABLE', '0', NOW(), NOW()); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_GIFT_WRAPPING_PRICE', '0', NOW(), NOW()); + +/* NEW RANGES */ + +INSERT IGNORE INTO PREFIX_range_price ( id_carrier, delimiter1, delimiter2 ) + (SELECT c.id_carrier, rp.delimiter1, rp.delimiter2 + FROM PREFIX_range_price rp + CROSS JOIN PREFIX_carrier c + WHERE c.deleted = 0 + AND c.active = 1 + ); + +UPDATE `PREFIX_delivery` d SET d.`id_range_price` = ( + SELECT rw.`id_range_price` FROM `PREFIX_range_price` rw WHERE + rw.`id_carrier` = d.`id_carrier` AND + rw.`delimiter1` = ( + SELECT `delimiter1` FROM `PREFIX_range_price` rw2 WHERE rw2.`id_range_price` = d.`id_range_price` LIMIT 1 + ) AND + rw.`delimiter2` = ( + SELECT `delimiter2` FROM `PREFIX_range_price` rw3 WHERE rw3.`id_range_price` = d.`id_range_price` LIMIT 1 + ) +); + +INSERT IGNORE INTO PREFIX_range_weight ( id_carrier, delimiter1, delimiter2 ) + (SELECT c.id_carrier, rp.delimiter1, rp.delimiter2 + FROM PREFIX_range_weight rp + CROSS JOIN PREFIX_carrier c + WHERE c.deleted = 0 + AND c.active = 1 + ); + +UPDATE `PREFIX_delivery` d SET d.`id_range_weight` = ( + SELECT rw.`id_range_weight` FROM `PREFIX_range_weight` rw WHERE + rw.`id_carrier` = d.`id_carrier` AND + rw.`delimiter1` = ( + SELECT `delimiter1` FROM `PREFIX_range_weight` rw2 WHERE rw2.`id_range_weight` = d.`id_range_weight` LIMIT 1 + ) AND + rw.`delimiter2` = ( + SELECT `delimiter2` FROM `PREFIX_range_weight` rw3 WHERE rw3.`id_range_weight` = d.`id_range_weight` LIMIT 1 + ) +); + +DELETE FROM PREFIX_range_price WHERE id_carrier IS NULL; +DELETE FROM PREFIX_range_weight WHERE id_carrier IS NULL; + +/* CONFIGURATION VARIABLE */ + diff --git a/install-dev/sql/upgrade/1.0.0.5.sql b/install-dev/sql/upgrade/1.0.0.5.sql new file mode 100644 index 000000000..de1edb4bd --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.5.sql @@ -0,0 +1,35 @@ +/* STRUCTURE */ +SET NAMES 'utf8'; + +ALTER TABLE PREFIX_orders + ADD total_wrapping DECIMAL(10,2) NOT NULL DEFAULT 0 AFTER total_shipping; + +ALTER TABLE PREFIX_carrier + ADD range_behavior TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 AFTER shipping_handling; + +ALTER TABLE PREFIX_order_detail + ADD product_supplier_reference VARCHAR(32) NULL AFTER product_reference; + +ALTER TABLE PREFIX_product + ADD supplier_reference VARCHAR(32) NULL AFTER reference; + +ALTER TABLE PREFIX_product_attribute + ADD supplier_reference VARCHAR(32) NULL AFTER reference; + +ALTER TABLE PREFIX_customer + ADD UNIQUE customer_email(email(128)); + +ALTER TABLE PREFIX_product_download + ADD active TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 AFTER nb_downloadable; + + +/* CONTENTS */ +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES ('createAccountForm', 'Customer account creation form', 'Display some information on the form to create a customer account', 1); + +INSERT INTO PREFIX_lang (`name`, `active`, `iso_code`) VALUES +('Română (Romanian)', 0, 'ro'), +('Νεοελληνική (Greek)', 0, 'gr'), +('Slovenčina (Slovak)', 0, 'sk'); + +/* CONFIGURATION VARIABLE */ + diff --git a/install-dev/sql/upgrade/1.0.0.6.sql b/install-dev/sql/upgrade/1.0.0.6.sql new file mode 100644 index 000000000..b2eb0806c --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.6.sql @@ -0,0 +1,11 @@ +/* STRUCTURE */ +SET NAMES 'utf8'; + +ALTER TABLE PREFIX_order_detail + CHANGE product_price product_price DECIMAL(13, 6) NOT NULL DEFAULT '0.000000'; + + +/* CONTENTS */ + +/* CONFIGURATION VARIABLE */ + diff --git a/install-dev/sql/upgrade/1.0.0.7.sql b/install-dev/sql/upgrade/1.0.0.7.sql new file mode 100644 index 000000000..d7b148ca6 --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.7.sql @@ -0,0 +1,21 @@ +/* PHP */ +/* PHP:AttributeGroup::cleanDeadCombinations(); */; + +/* STRUCTURE */ +SET NAMES 'utf8'; + +ALTER TABLE PREFIX_order_detail + ADD product_quantity_discount DECIMAL(13,6) NOT NULL DEFAULT 0 AFTER product_price; +ALTER TABLE PREFIX_country + ADD deleted TINYINT(1) NOT NULL DEFAULT 0; + + +/* CONTENTS */ + +INSERT INTO PREFIX_lang (`name`, `active`, `iso_code`) VALUES +('Norsk (Norwegian)', 0, 'no'), +('ภาษาไทย (Thai)', 0, 'th'), +('Dansk (Danish)', 0, 'dk'); + +/* CONFIGURATION VARIABLE */ + diff --git a/install-dev/sql/upgrade/1.0.0.8.sql b/install-dev/sql/upgrade/1.0.0.8.sql new file mode 100644 index 000000000..254c4f0dc --- /dev/null +++ b/install-dev/sql/upgrade/1.0.0.8.sql @@ -0,0 +1,17 @@ +/* PHP */ +/* PHP:AttributeGroup::cleanDeadCombinations(); */; + +/* STRUCTURE */ +SET NAMES 'utf8'; + +/* CONTENTS */ + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_DISP_UNAVAILABLE_ATTR', '1', NOW(), NOW()); + +INSERT INTO PREFIX_lang (`name`, `active`, `iso_code`) VALUES +('Svenska (Swedish)', 0, 'se'), +('עברית (Hebrew)', 0, 'he'); + +/* CONFIGURATION VARIABLE */ + diff --git a/install-dev/sql/upgrade/1.1.0.1.sql b/install-dev/sql/upgrade/1.1.0.1.sql new file mode 100644 index 000000000..c00a3176e --- /dev/null +++ b/install-dev/sql/upgrade/1.1.0.1.sql @@ -0,0 +1,629 @@ +/* PHP */ +/* PHP:AttributeGroup::cleanDeadCombinations(); */; +/* PHP:configuration_double_cleaner(); */; + +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ +DROP TABLE IF EXISTS PREFIX_gender; +DROP TABLE IF EXISTS PREFIX_search; +ALTER TABLE PREFIX_category_lang + ADD INDEX category_name (name); +ALTER TABLE PREFIX_order_detail + MODIFY COLUMN product_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; +ALTER TABLE PREFIX_order_detail + ADD deleted TINYINT(3) UNSIGNED NOT NULL DEFAULT 0; +ALTER TABLE PREFIX_configuration + MODIFY COLUMN name VARCHAR(32) NOT NULL UNIQUE; +ALTER TABLE PREFIX_orders + ADD invoice_number INTEGER(10) UNSIGNED NOT NULL DEFAULT 0 AFTER total_wrapping; +ALTER TABLE PREFIX_orders + ADD delivery_number INTEGER(10) UNSIGNED NOT NULL DEFAULT 0 AFTER invoice_number; +ALTER TABLE PREFIX_orders + ADD invoice_date DATETIME NOT NULL AFTER delivery_number; +ALTER TABLE PREFIX_orders + ADD delivery_date DATETIME NOT NULL AFTER invoice_date; +ALTER TABLE PREFIX_order_detail + CHANGE product_price product_price DECIMAL(13, 6) NOT NULL DEFAULT 0.000000; +ALTER TABLE PREFIX_order_slip + ADD shipping_cost TINYINT UNSIGNED NOT NULL DEFAULT 0 AFTER id_order; +ALTER TABLE PREFIX_order_state + ADD delivery TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 AFTER logable; +ALTER TABLE PREFIX_country + DROP deleted; +ALTER TABLE PREFIX_product + ADD customizable BOOL NOT NULL DEFAULT 0 AFTER quantity_discount; +ALTER TABLE PREFIX_product + ADD uploadable_files TINYINT NOT NULL DEFAULT 0 AFTER customizable; +ALTER TABLE PREFIX_product + ADD text_fields TINYINT NOT NULL DEFAULT 0 AFTER uploadable_files; +ALTER TABLE PREFIX_product_lang + CHANGE availability available_now VARCHAR(255) NULL; +ALTER TABLE PREFIX_product_lang + ADD available_later VARCHAR(255) NULL AFTER available_now; +ALTER TABLE PREFIX_access + DROP id_access; +ALTER TABLE PREFIX_access + DROP INDEX access_profile; +ALTER TABLE PREFIX_access + DROP INDEX access_tab; +ALTER TABLE PREFIX_access + ADD PRIMARY KEY(id_profile, id_tab); +ALTER TABLE PREFIX_currency + ADD blank TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 AFTER sign; +ALTER TABLE PREFIX_currency + ADD decimals TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 AFTER format; +ALTER TABLE PREFIX_product_attribute + ADD wholesale_price decimal(13,6) NOT NULL DEFAULT 0.000000 AFTER ean13; +ALTER TABLE PREFIX_employee + ADD last_passwd_gen TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER passwd; +ALTER TABLE PREFIX_customer + ADD last_passwd_gen TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER passwd; +ALTER TABLE PREFIX_customer + ADD ip_registration_newsletter VARCHAR(15) NULL DEFAULT NULL AFTER newsletter; +ALTER TABLE PREFIX_image_type + ADD scenes TINYINT(1) NOT NULL DEFAULT 1; +ALTER TABLE PREFIX_image_lang + CHANGE legend legend VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; + +/* CMS */ +CREATE TABLE PREFIX_cms ( + id_cms INTEGER UNSIGNED NOT NULL auto_increment, + PRIMARY KEY (id_cms) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_cms_lang ( + id_cms INTEGER UNSIGNED NOT NULL auto_increment, + id_lang INTEGER UNSIGNED NOT NULL, + meta_title VARCHAR(128) NOT NULL, + meta_description VARCHAR(255) DEFAULT NULL, + meta_keywords VARCHAR(255) DEFAULT NULL, + content longtext NULL, + link_rewrite VARCHAR(128) NOT NULL, + PRIMARY KEY (id_cms, id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_block_cms ( + id_block INTEGER(10) NOT NULL, + id_cms INTEGER(10) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* PAYMENT MODULE RESTRICTIONS */ +CREATE TABLE `PREFIX_module_country` ( + `id_module` INTEGER UNSIGNED NOT NULL, + `id_country` INTEGER UNSIGNED NOT NULL, + PRIMARY KEY (`id_module`, `id_country`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_module_currency` ( + `id_module` INTEGER UNSIGNED NOT NULL, + `id_currency` INTEGER NOT NULL, + PRIMARY KEY (`id_module`, `id_currency`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* ORDER-MESSAGE */ +CREATE TABLE PREFIX_order_message +( + id_order_message int(10) unsigned NOT NULL auto_increment, + date_add datetime NOT NULL, + PRIMARY KEY (id_order_message) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_order_message_lang +( + id_order_message int(10) unsigned NOT NULL, + id_lang int(10) unsigned NOT NULL, + name varchar(128) NOT NULL, + message text NOT NULL, + PRIMARY KEY (id_order_message,id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* SUB-DOMAINS */ +CREATE TABLE PREFIX_subdomain ( + id_subdomain INTEGER(10) NOT NULL AUTO_INCREMENT, + name VARCHAR(16) NOT NULL, + PRIMARY KEY(id_subdomain) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* META-CLASS */ +CREATE TABLE PREFIX_meta ( + id_meta INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + page VARCHAR(64) NOT NULL, + PRIMARY KEY(id_meta), + KEY `meta_name` (`page`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_meta_lang ( + id_meta INTEGER UNSIGNED NOT NULL, + id_lang INTEGER UNSIGNED NOT NULL, + title VARCHAR(255) NULL, + description VARCHAR(255) NULL, + keywords VARCHAR(255) NULL, + PRIMARY KEY (id_meta, id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_discount_category ( + id_discount INTEGER(11) NOT NULL, + id_category INTEGER(11) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* Customized products */ +CREATE TABLE PREFIX_customization ( + id_customization int(10) NOT NULL AUTO_INCREMENT, + id_product_attribute int(10) NOT NULL DEFAULT 0, + id_cart int(10) NOT NULL, + id_product int(10) NOT NULL, + PRIMARY KEY(id_customization, id_cart, id_product) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_customized_data ( + id_customization int(10) NOT NULL, + `type` tinyint(1) NOT NULL, + `index` int(3) NOT NULL, + `value` varchar(255) NOT NULL, + PRIMARY KEY(id_customization, `type`, `index`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_customization_field ( + id_customization_field int(10) NOT NULL AUTO_INCREMENT, + id_product int(10) NOT NULL, + type tinyint(1) NOT NULL, + required tinyint(1) NOT NULL, + PRIMARY KEY(id_customization_field) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_customization_field_lang ( + id_customization_field int(10) NOT NULL, + id_lang int(10) NOT NULL, + name varchar(255) NOT NULL, + PRIMARY KEY(id_customization_field, id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* Product location */ +ALTER TABLE `PREFIX_product_attribute` ADD `location` VARCHAR(64) NULL AFTER `supplier_reference`; +ALTER TABLE `PREFIX_product` ADD `location` VARCHAR(64) NULL AFTER `supplier_reference`; + +/* Paypal default e-mail fix */ +UPDATE `PREFIX_configuration` SET value = 'paypal@prestashop.com' WHERE name = 'PAYPAL_BUSINESS' AND value = 'your-address@paypal.com'; + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ +INSERT INTO PREFIX_subdomain (id_subdomain, name) VALUES (NULL, 'www'); +UPDATE PREFIX_currency SET blank = 1 WHERE iso_code = 'EUR'; +UPDATE PREFIX_order_state SET delivery = 1 WHERE id_order_state = 3; +UPDATE PREFIX_order_state SET delivery = 1 WHERE id_order_state = 4; +UPDATE PREFIX_order_state SET delivery = 1 WHERE id_order_state = 5; + +/* IMAGE MAPPING */ +UPDATE PREFIX_image_type SET scenes = 0; +INSERT INTO `PREFIX_image_type` (`name` ,`width` ,`height` ,`products` ,`categories` ,`manufacturers` ,`suppliers` ,`scenes`) VALUES ('large_scene', '556', '200', '0', '0', '0', '0', '1'); +INSERT INTO `PREFIX_image_type` (`name` ,`width` ,`height` ,`products` ,`categories` ,`manufacturers` ,`suppliers` ,`scenes`) VALUES ('thumb_scene', '161', '58', '0', '0', '0', '0', '1'); + +/* CONFIGURATION VARIABLE */ +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_INVOICE', '1', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_INVOICE_PREFIX', 'IN', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_DELIVERY_PREFIX', 'DE', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_PRODUCT_PICTURE_MAX_SIZE', '131072', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_PRODUCT_PICTURE_WIDTH', '64', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_PRODUCT_PICTURE_HEIGHT', '64', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_PASSWD_TIME_BACK', '360', NOW(), NOW()); +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_PASSWD_TIME_FRONT', '360', NOW(), NOW()); + +INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) VALUES ((SELECT id_configuration FROM PREFIX_configuration c WHERE c.name = 'PS_INVOICE_PREFIX' LIMIT 1), 1, 'IN', NOW()); +INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) VALUES ((SELECT id_configuration FROM PREFIX_configuration c WHERE c.name = 'PS_INVOICE_PREFIX' LIMIT 1), 2, 'FA', NOW()); +INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) VALUES ((SELECT id_configuration FROM PREFIX_configuration c WHERE c.name = 'PS_DELIVERY_PREFIX' LIMIT 1), 1, 'DE', NOW()); +INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) VALUES ((SELECT id_configuration FROM PREFIX_configuration c WHERE c.name = 'PS_DELIVERY_PREFIX' LIMIT 1), 2, 'LI', NOW()); + +/* HOOKS/MODULES */ +UPDATE PREFIX_hook SET description = 'This hook is called when a product is deleted' WHERE name = 'deleteProduct' LIMIT 1; +UPDATE PREFIX_hook SET name = 'extraLeft', title = 'Extra actions on the product page (left column).' WHERE name = 'extra' LIMIT 1; +INSERT INTO PREFIX_hook (name, title, position, description) VALUES ('orderReturn', 'Product returned', 0, 'When an order return is made'); +INSERT INTO PREFIX_hook (name, title, position, description) VALUES ('postUpdateOrderStatus', 'Post Order\'s status update event', 0, 'Launch modules when the order\'s status was changed (enables automated workflow).'); +INSERT INTO PREFIX_hook (name, title, position, description) VALUES ('productActions', 'Product actions', 1, 'Put new action buttons on product page'); +INSERT INTO PREFIX_hook (name, title, position, description) VALUES ('cancelProduct', 'Product cancelled', 0, 'This hook is called when you cancel a product in an order'); +INSERT INTO PREFIX_hook (name, title, position) VALUES ('backOfficeHome', 'Administration panel homepage', 1); +INSERT INTO PREFIX_hook (name, title, position, description) VALUES ('extraRight', 'Extra actions on the product page (right column).', 0, NULL); +UPDATE PREFIX_hook SET position = 1 WHERE name = 'top'; +UPDATE PREFIX_hook SET position = 0 WHERE name = 'header'; + +/* ORDER MESSAGES */ +INSERT INTO `PREFIX_order_message` (`id_order_message`, `date_add`) VALUES (1, NOW()); +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 1, 'Delay', 'Hi, + +Unfortunately, an item on your order is currently out of stock. This may cause a slight delay in delivery. +Please accept our apologies and rest assured that we are working hard to rectify this. + +Best regards, +'); +INSERT INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) VALUES +(1, 2, 'Délai', 'Bonjour, + +Un des éléments de votre commande est actuellement en réapprovisionnement, ce qui peut légèrement retarder son envoi. + +Merci de votre compréhension. + +Cordialement, +'); + +/* META */ +INSERT INTO `PREFIX_meta` (`id_meta`, `page`) VALUES +(1, '404'), +(2, 'best-sales'), +(3, 'contact-form'), +(4, 'index'), +(5, 'manufacturer'), +(6, 'new-products'), +(7, 'password'), +(8, 'prices-drop'), +(9, 'sitemap'), +(10, 'supplier'); + +INSERT INTO `PREFIX_meta_lang` (`id_meta`, `id_lang`, `title`, `description`, `keywords`) VALUES +(1, 1, '404 error', 'This page cannot be found', 'error, 404, not found'), +(1, 2, 'Erreur 404', 'Cette page est introuvable', 'erreur, 404, introuvable'), +(2, 1, 'Best sales', 'Our best sales', 'best sales'), +(2, 2, 'Meilleurs ventes', 'Liste de nos produits les mieux vendus', 'meilleurs ventes'), +(3, 1, 'Contact us', 'Use our form to contact us', 'contact, form, e-mail'), +(3, 2, 'Contactez-nous', 'Utilisez notre formulaire pour nous contacter', 'contact, formulaire, e-mail'), +(4, 1, '', 'Shop powered by PrestaShop', 'shop, prestashop'), +(4, 2, '', 'Boutique propulsé par PrestaShop', 'boutique, prestashop'), +(5, 1, 'Manufacturers', 'Manufacturers list', 'manufacturer'), +(5, 2, 'Fabricants', 'Liste de nos fabricants', 'fabricants'), +(6, 1, 'New products', 'Our new products', 'new, products'), +(6, 2, 'Nouveaux produits', 'Liste de nos nouveaux produits', 'nouveau, produit'), +(7, 1, 'Forgot your password', 'Enter your e-mail address used to register in goal to get e-mail with your new password', 'forgot, password, e-mail, new, reset'), +(7, 2, 'Mot de passe oublié', 'Renseignez votre adresse e-mail afin de recevoir votre nouveau mot de passe.', 'mot de passe, oublié, e-mail, nouveau, regénération'), +(8, 1, 'Specials', 'Our special products', 'special, prices drop'), +(8, 2, 'Promotions', 'Nos produits en promotion', 'promotion, réduction'), +(9, 1, 'Sitemap', 'Lost ? Find what your are looking for', 'sitemap'), +(9, 2, 'Plan du site', 'Perdu ? Trouvez ce que vous cherchez', 'plan, site'), +(10, 1, 'Suppliers', 'Suppliers list', 'supplier'), +(10, 2, 'Fournisseurs', 'Liste de nos fournisseurs', 'fournisseurs'); + +/* CMS */ +INSERT INTO `PREFIX_cms` VALUES (1),(2),(3),(4),(5); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(1, 1, 'Delivery', 'Our terms and conditions of delivery', 'conditions, delivery, delay, shipment, pack', '

    Shipments and returns

    Your pack shipment

    Packages are generally dispatched within 2 days after receipt of payment and are shipped via Colissimo with tracking and drop-off without signature. If you prefer delivery by Colissimo Extra with required signature, an additional cost will be applied, so please contact us before choosing this method. Whichever shipment choice you make, we will provide you with a link to track your package online.

    Shipping fees include handling and packing fees as well as postage costs. Handling fees are fixed, whereas transport fees vary according to total weight of the shipment. We advise you to group your items in one order. We cannot group two distinct orders placed separately, and shipping fees will apply to each of them. Your package will be dispatched at your own risk, but special care is taken to protect fragile objects.

    Boxes are amply sized and your items are well-protected.

    ', 'delivery'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(1, 2, 'Livraison', 'Nos conditions générales de livraison', 'conditions, livraison, délais, transport, colis', '

    Livraisons et retours

    Le transport de votre colis

    Les colis sont généralement expédiés en 48h après réception de votre paiement. Le mode d''expédidition standard est le Colissimo suivi, remis sans signature. Si vous souhaitez une remise avec signature, un coût supplémentaire s''applique, merci de nous contacter. Quel que soit le mode d''expédition choisi, nous vous fournirons dès que possible un lien qui vous permettra de suivre en ligne la livraison de votre colis.

    Les frais d''expédition comprennent l''emballage, la manutention et les frais postaux. Ils peuvent contenir une partie fixe et une partie variable en fonction du prix ou du poids de votre commande. Nous vous conseillons de regrouper vos achats en une unique commande. Nous ne pouvons pas grouper deux commandes distinctes et vous devrez vous acquitter des frais de port pour chacune d''entre elles. Votre colis est expédié à vos propres risques, un soin particulier est apporté au colis contenant des produits fragiles..

    Les colis sont surdimensionnés et protégés.

    ', 'livraison'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(2, 1, 'Legal Notice', 'Legal notice', 'notice, legal, credits', '

    Legal

    Credits

    Concept and production:

    This Web site was created using PrestaShop™ open-source software.

    ', 'legal-notice'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(2, 2, 'Mentions légales', 'Mentions légales', 'mentions, légales, crédits', '

    Mentions légales

    Crédits

    Concept et production :

    Ce site internet a été réalisé en utilisant la solution open-source PrestaShop™ .

    ', 'mentions-legales'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(3, 1, 'Terms and conditions of use', 'Our terms and conditions of use', 'conditions, terms, use, sell', '

    Your terms and conditions of use

    Rule 1

    Here is the rule 1 content

    \r\n

    Rule 2

    Here is the rule 2 content

    \r\n

    Rule 3

    Here is the rule 3 content

    ', 'terms-and-conditions-of-use'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(3, 2, 'Conditions d''utilisation', 'Nos conditions générales de ventes', 'conditions, utilisation, générales, ventes', '

    Vos conditions de ventes

    Règle n°1

    Contenu de la règle numéro 1

    \r\n

    Règle n°2

    Contenu de la règle numéro 2

    \r\n

    Règle n°3

    Contenu de la règle numéro 3

    ', 'conditions-generales-de-ventes'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(4, 1, 'About us', 'Learn more about us', 'about us, informations', '

    About us

    \r\n

    Our company

    Our company

    \r\n

    Our team

    Our team

    \r\n

    Informations

    Informations

    ', 'about-us'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(4, 2, 'A propos', 'Apprenez-en d''avantage sur nous', 'à propos, informations', '

    A propos

    \r\n

    Notre entreprise

    Notre entreprise

    \r\n

    Notre équipe

    Notre équipe

    \r\n

    Informations

    Informations

    ', 'a-propos'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(5, 1, 'Secure payment', 'Our secure payment mean', 'secure payment, ssl, visa, mastercard, paypal', '

    Secure payment

    \r\n

    Our secure payment

    With SSL

    \r\n

    Using Visa/Mastercard/Paypal

    About this services

    ', 'secure-payment'); +INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES +(5, 2, 'Paiement sécurisé', 'Notre offre de paiement sécurisé', 'paiement sécurisé, ssl, visa, mastercard, paypal', '

    Paiement sécurisé

    \r\n

    Notre offre de paiement sécurisé

    Avec SSL

    \r\n

    Utilisation de Visa/Mastercard/Paypal

    A propos de ces services

    ', 'paiement-securise'); + +INSERT INTO PREFIX_block_cms (`id_block`, `id_cms`) VALUES (IFNULL((SELECT id_module FROM PREFIX_module m WHERE m.name = 'blockvariouslinks' LIMIT 1), 0), 3); +INSERT INTO PREFIX_block_cms (`id_block`, `id_cms`) VALUES (IFNULL((SELECT id_module FROM PREFIX_module m WHERE m.name = 'blockvariouslinks' LIMIT 1), 0), 4); +INSERT INTO PREFIX_block_cms (`id_block`, `id_cms`) VALUES (IFNULL((SELECT id_module FROM PREFIX_module m WHERE m.name = 'blockinfos' LIMIT 1), 0), 1); +INSERT INTO PREFIX_block_cms (`id_block`, `id_cms`) VALUES (IFNULL((SELECT id_module FROM PREFIX_module m WHERE m.name = 'blockinfos' LIMIT 1), 0), 2); +INSERT INTO PREFIX_block_cms (`id_block`, `id_cms`) VALUES (IFNULL((SELECT id_module FROM PREFIX_module m WHERE m.name = 'blockinfos' LIMIT 1), 0), 3); +INSERT INTO PREFIX_block_cms (`id_block`, `id_cms`) VALUES (IFNULL((SELECT id_module FROM PREFIX_module m WHERE m.name = 'blockinfos' LIMIT 1), 0), 4); +DELETE FROM PREFIX_block_cms WHERE id_block = 0; + +/* NEW TABS */ +UPDATE PREFIX_tab_lang + SET name = 'Vouchers' + WHERE id_lang = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'en' LIMIT 1) + AND id_tab = (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminDiscounts' LIMIT 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp), 'AdminCMS', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminCMS' LIMIT 1), + 'CMS' FROM PREFIX_lang); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminCMS' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp), 'AdminSubDomains', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSubDomains' LIMIT 1), + 'Subdomains' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Sous domaines' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminSubDomains') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSubDomains' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp), 'AdminOrderMessage', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminOrderMessage' LIMIT 1), + 'Order messages' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Messages prédéfinis' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminOrderMessage') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminOrderMessage' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp), 'AdminDeliverySlip', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminDeliverySlip' LIMIT 1), + 'Delivery slips' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Bons de livraison' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminDeliverySlip') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminDeliverySlip' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp), 'AdminBackup', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminBackup' LIMIT 1), + 'Database backup' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Sauvegarde BDD' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminBackup') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminBackup' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp), 'AdminMeta', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminMeta' LIMIT 1), + 'Meta-tags' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Méta-Tags' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminMeta') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminMeta' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp), 'AdminScenes', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminScenes' LIMIT 1), + 'Image mapping' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Scènes' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminScenes') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminScenes' LIMIT 1), 1, 1, 1, 1); + +/* NEW TEAM TAB */ +UPDATE PREFIX_tab SET position = 10 WHERE class_name = 'AdminTools'; +UPDATE PREFIX_tab SET position = 9 WHERE class_name = 'AdminPreferences'; +UPDATE PREFIX_tab SET position = 8, id_parent = 0 WHERE class_name = 'AdminEmployees'; +UPDATE PREFIX_tab SET position = 1, id_parent = 29 WHERE class_name = 'AdminProfiles'; +UPDATE PREFIX_tab SET position = 2, id_parent = 29 WHERE class_name = 'AdminAccess'; +UPDATE PREFIX_tab SET position = 3, id_parent = 29 WHERE class_name = 'AdminContacts'; +UPDATE PREFIX_tab SET position = 1 WHERE class_name = 'AdminLanguages'; +UPDATE PREFIX_tab SET position = 2 WHERE class_name = 'AdminTranslations'; +UPDATE PREFIX_tab SET position = 3 WHERE class_name = 'AdminTabs'; +UPDATE PREFIX_tab SET position = 4 WHERE class_name = 'AdminQuickAccesses'; +UPDATE PREFIX_tab SET position = 5 WHERE class_name = 'AdminAliases'; +UPDATE PREFIX_tab SET position = 6 WHERE class_name = 'AdminImport'; +UPDATE PREFIX_tab SET position = 7 WHERE class_name = 'AdminSubDomains'; + +/* UPDATE ORDER TABS */ +UPDATE PREFIX_tab SET class_name = 'AdminInvoices' WHERE class_name = 'AdminPrintPDF'; +UPDATE PREFIX_tab SET position = 1 WHERE class_name = 'AdminInvoices'; +UPDATE PREFIX_tab SET position = 2 WHERE class_name = 'AdminReturn'; +UPDATE PREFIX_tab SET position = 3 WHERE class_name = 'AdminSlip'; +UPDATE PREFIX_tab SET position = 4 WHERE class_name = 'AdminOrdersStates'; +UPDATE PREFIX_tab_lang SET name = 'Invoices' WHERE name = 'PDF Invoice'; +UPDATE PREFIX_tab_lang SET name = 'Factures' WHERE name = 'Facture PDF'; + +/* ##################################### */ +/* STATS */ +/* ##################################### */ +CREATE TABLE PREFIX_web_browser ( + id_web_browser INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, + name VARCHAR(64) NULL, + PRIMARY KEY(id_web_browser) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_operating_system ( + id_operating_system INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, + name VARCHAR(64) NULL, + PRIMARY KEY(id_operating_system) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_page_type ( + id_page_type INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, + name VARCHAR(256) NOT NULL, + PRIMARY KEY(id_page_type) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_date_range ( + id_date_range INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + time_start DATETIME NOT NULL, + time_end DATETIME NOT NULL, + PRIMARY KEY(id_date_range) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_page ( + id_page INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, + id_page_type INTEGER(10) UNSIGNED NOT NULL, + id_object VARCHAR(256) NULL, + PRIMARY KEY(id_page) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_page_viewed ( + id_page INTEGER(10) UNSIGNED NOT NULL, + id_date_range INTEGER UNSIGNED NOT NULL, + counter INTEGER UNSIGNED NOT NULL, + PRIMARY KEY(id_page, id_date_range) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_guest ( + id_guest INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, + id_operating_system INTEGER(10) UNSIGNED NULL DEFAULT NULL, + id_web_browser INTEGER(10) UNSIGNED NULL DEFAULT NULL, + id_customer INTEGER(10) UNSIGNED NULL DEFAULT NULL, + javascript BOOL NULL DEFAULT 0, + screen_resolution_x SMALLINT UNSIGNED NULL DEFAULT NULL, + screen_resolution_y SMALLINT UNSIGNED NULL DEFAULT NULL, + screen_color TINYINT UNSIGNED NULL DEFAULT NULL, + sun_java BOOL NULL DEFAULT NULL, + adobe_flash BOOL NULL DEFAULT NULL, + adobe_director BOOL NULL DEFAULT NULL, + apple_quicktime BOOL NULL DEFAULT NULL, + real_player BOOL NULL DEFAULT NULL, + windows_media BOOL NULL DEFAULT NULL, + accept_language VARCHAR(8) NULL DEFAULT NULL, + PRIMARY KEY(id_guest) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_scene` ( + `id_scene` int(10) NOT NULL auto_increment, + `active` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id_scene`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_scene_category` ( + `id_scene` int(10) NOT NULL, + `id_category` int(10) NOT NULL, + PRIMARY KEY (`id_scene`,`id_category`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_scene_lang` ( + `id_scene` int(10) NOT NULL, + `id_lang` int(10) NOT NULL, + `name` varchar(100) NOT NULL, + PRIMARY KEY (`id_scene`,`id_lang`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_scene_products` ( + `id_scene` int(10) NOT NULL, + `id_product` int(10) NOT NULL, + `x_axis` int(4) NOT NULL, + `y_axis` int(4) NOT NULL, + `zone_width` int(3) NOT NULL, + `zone_height` int(3) NOT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO PREFIX_guest (id_customer) SELECT id_customer FROM PREFIX_customer; + +ALTER TABLE PREFIX_connections ADD id_guest INTEGER(10) UNSIGNED NULL AFTER id_connections; +ALTER TABLE PREFIX_connections ADD id_page INTEGER(10) UNSIGNED NOT NULL AFTER id_guest; +ALTER TABLE PREFIX_connections ADD http_referer VARCHAR(256) NULL; +ALTER TABLE PREFIX_connections CHANGE date date_add DATETIME NOT NULL; + +UPDATE PREFIX_connections, PREFIX_guest SET PREFIX_connections.id_guest=PREFIX_guest.id_guest WHERE PREFIX_connections.id_customer=PREFIX_guest.id_customer; +ALTER TABLE PREFIX_connections CHANGE id_guest id_guest INTEGER(10) UNSIGNED NOT NULL; +ALTER TABLE PREFIX_connections DROP id_customer; + +CREATE TABLE PREFIX_connections_page ( + id_connections INTEGER(10) UNSIGNED NOT NULL, + id_page INTEGER(10) UNSIGNED NOT NULL, + time_start DATETIME NOT NULL, + time_end DATETIME NULL, + PRIMARY KEY(id_connections, id_page, time_start) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_operating_system` (`name`) VALUES ('Windows XP'),('Windows Vista'),('MacOsX'),('Linux'); +INSERT INTO `PREFIX_web_browser` (`name`) VALUES ('Safari'),('Firefox 2.x'),('Firefox 3.x'),('Opera'),('IE 6.x'),('IE 7.x'),('IE 8.x'),('Google Chrome'); +INSERT INTO `PREFIX_page_type` (`name`) VALUES ('product.php'),('category.php'),('order.php'),('manufacturer.php'); + +INSERT INTO `PREFIX_hook` (`name`, `title`, `position`) VALUES +('AdminStatsModules', 'Stats - Modules', 1), +('GraphEngine', 'Graph Engines', 0), +('GridEngine', 'Grid Engines', 0); + +/* Temporary configuration variable used in the following query */ +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('TMP_ID_TAB_STATS', (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStats'), NOW(), NOW()); +INSERT INTO `PREFIX_tab` (`id_parent`, `class_name`, `position`) VALUES + ((SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'TMP_ID_TAB_STATS'), 'AdminStatsModules', 1); +INSERT INTO `PREFIX_tab` (`id_parent`, `class_name`, `position`) VALUES + ((SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'TMP_ID_TAB_STATS'), 'AdminStatsConf', 2); +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES + (1, (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsModules'), 'Modules'); +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES + (2, (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsModules'), 'Modules'); +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES + (1, (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsConf'), 'Settings'); +INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES + (2, (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsConf'), 'Configuration'); +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) VALUES + (1, (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsModules'), 1, 1, 1, 1); +INSERT INTO `PREFIX_access` (`id_profile`, `id_tab`, `view`, `add`, `edit`, `delete`) VALUES + (1, (SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsConf'), 1, 1, 1, 1); +DELETE FROM `PREFIX_configuration` WHERE `name` = 'TMP_ID_TAB_STATS'; + +/* ##################################### */ +/* DOUBLE LANGUAGE */ +/* ##################################### */ +INSERT IGNORE INTO `PREFIX_discount_type_lang` (`id_discount_type`, `id_lang`, `name`) + (SELECT `id_discount_type`, id_lang, (SELECT tl.`name` + FROM `PREFIX_discount_type_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_discount_type`=`PREFIX_discount_type`.`id_discount_type`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_discount_type`); + +INSERT IGNORE INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `link_rewrite`, `meta_description`, `meta_keywords`, `meta_title`, `content`) + (SELECT `id_cms`, id_lang, + (SELECT tl.`link_rewrite` + FROM `PREFIX_cms_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_cms`=`PREFIX_cms`.`id_cms`), + (SELECT tl.`meta_description` + FROM `PREFIX_cms_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_cms`=`PREFIX_cms`.`id_cms`), + (SELECT tl.`meta_keywords` + FROM `PREFIX_cms_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_cms`=`PREFIX_cms`.`id_cms`), + (SELECT tl.`meta_title` + FROM `PREFIX_cms_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_cms`=`PREFIX_cms`.`id_cms`), + (SELECT tl.`content` + FROM `PREFIX_cms_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_cms`=`PREFIX_cms`.`id_cms`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_cms`); + +INSERT IGNORE INTO `PREFIX_meta_lang` (`id_meta`, `id_lang`, `description`, `keywords`, `title`) + (SELECT `id_meta`, id_lang, + (SELECT tl.`description` + FROM `PREFIX_meta_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_meta`=`PREFIX_meta`.`id_meta`), + (SELECT tl.`keywords` + FROM `PREFIX_meta_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_meta`=`PREFIX_meta`.`id_meta`), + (SELECT tl.`title` + FROM `PREFIX_meta_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_meta`=`PREFIX_meta`.`id_meta`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_meta`); + +INSERT IGNORE INTO `PREFIX_order_message_lang` (`id_order_message`, `id_lang`, `name`, `message`) + (SELECT `id_order_message`, id_lang, + (SELECT tl.`name` + FROM `PREFIX_order_message_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_order_message`=`PREFIX_order_message`.`id_order_message`), + (SELECT tl.`message` + FROM `PREFIX_order_message_lang` tl + WHERE tl.`id_lang` = (SELECT c.`value` + FROM `PREFIX_configuration` c + WHERE c.`name` = 'PS_LANG_DEFAULT' LIMIT 1) AND tl.`id_order_message`=`PREFIX_order_message`.`id_order_message`) + FROM `PREFIX_lang` CROSS JOIN `PREFIX_order_message`); + +/* PHP */ +/* PHP:invoice_number_set(); */; +/* PHP:delivery_number_set(); */; +/* PHP:set_payment_module(); */; +/* PHP:set_discount_category(); */; diff --git a/install-dev/sql/upgrade/1.1.0.2.sql b/install-dev/sql/upgrade/1.1.0.2.sql new file mode 100644 index 000000000..ee56776c5 --- /dev/null +++ b/install-dev/sql/upgrade/1.1.0.2.sql @@ -0,0 +1,3 @@ +SET NAMES 'utf8'; + +/* ##################################### */ diff --git a/install-dev/sql/upgrade/1.1.0.3.sql b/install-dev/sql/upgrade/1.1.0.3.sql new file mode 100644 index 000000000..5fb70c0ab --- /dev/null +++ b/install-dev/sql/upgrade/1.1.0.3.sql @@ -0,0 +1,10 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +DROP TABLE IF EXISTS PREFIX_product_picture; + +/* PHP */ +/* PHP:moduleReinstaller('blockmyaccount'); */; diff --git a/install-dev/sql/upgrade/1.1.0.4.sql b/install-dev/sql/upgrade/1.1.0.4.sql new file mode 100644 index 000000000..1bd039324 --- /dev/null +++ b/install-dev/sql/upgrade/1.1.0.4.sql @@ -0,0 +1,28 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +ALTER TABLE PREFIX_order_detail + DROP `deleted`, + ADD product_quantity_cancelled INT(10) UNSIGNED NOT NULL AFTER product_quantity_return; + +ALTER TABLE PREFIX_customization ADD quantity INT(10) NOT NULL; + +ALTER TABLE PREFIX_order_return_detail ADD id_customization INT(10) NOT NULL DEFAULT 0 AFTER id_order_detail; +ALTER TABLE PREFIX_order_return_detail DROP PRIMARY KEY; +ALTER TABLE PREFIX_order_return_detail ADD PRIMARY KEY (id_order_return, id_order_detail, id_customization); + + +ALTER TABLE PREFIX_orders + CHANGE payment payment VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + CHANGE module module VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; + +/* ################################# */ +/* CONTENTS */ +/* ################################# */ + +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES + ('productOutOfStock', 'Product out of stock', 'Make action while product is out of stock', 1), + ('updateProductAttribute', 'Product attribute update', NULL, 1); diff --git a/install-dev/sql/upgrade/1.1.0.5.sql b/install-dev/sql/upgrade/1.1.0.5.sql new file mode 100644 index 000000000..08b08b3a5 --- /dev/null +++ b/install-dev/sql/upgrade/1.1.0.5.sql @@ -0,0 +1,20 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +ALTER TABLE PREFIX_product + CHANGE customizable customizable TINYINT(2) NOT NULL DEFAULT 0; +ALTER TABLE PREFIX_connections + CHANGE ip_address ip_address VARCHAR(16) NULL; +ALTER TABLE PREFIX_customer + ADD newsletter_date_add DATETIME NULL; +ALTER TABLE PREFIX_cart_product + ADD date_add DATETIME NOT NULL; + +/* ################################# */ +/* CONTENTS */ +/* ################################# */ + +/* PHP:add_required_customization_field_flag(); */; diff --git a/install-dev/sql/upgrade/1.2.0.1.sql b/install-dev/sql/upgrade/1.2.0.1.sql new file mode 100644 index 000000000..08ca93240 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.1.sql @@ -0,0 +1,1078 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +DROP TABLE IF EXISTS PREFIX_order_customization_return; + +ALTER TABLE PREFIX_cart + ADD id_guest INT UNSIGNED NULL AFTER id_customer; + +ALTER TABLE PREFIX_tab + ADD `module` varchar(64) NULL AFTER class_name; + +ALTER TABLE PREFIX_product + ADD `indexed` tinyint(1) NOT NULL default '0' AFTER `active`; + +ALTER TABLE PREFIX_orders + DROP INDEX `orders_customer`; +ALTER TABLE PREFIX_orders + ADD INDEX id_customer (id_customer); +ALTER TABLE PREFIX_orders + ADD valid INTEGER(1) UNSIGNED NOT NULL DEFAULT '0' AFTER delivery_date; +ALTER TABLE PREFIX_orders + ADD INDEX `id_cart` (`id_cart`); + +ALTER TABLE PREFIX_customer + ADD deleted TINYINT(1) NOT NULL DEFAULT '0' AFTER active; + +ALTER TABLE PREFIX_employee + ADD stats_date_to DATE NULL DEFAULT NULL AFTER last_passwd_gen; +ALTER TABLE PREFIX_employee + ADD stats_date_from DATE NULL DEFAULT NULL AFTER last_passwd_gen; + +ALTER TABLE PREFIX_order_state + ADD hidden TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER unremovable; + +ALTER TABLE PREFIX_carrier + ADD is_module TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER range_behavior; +ALTER TABLE PREFIX_carrier + ADD INDEX deleted (`deleted`, `active`); + +ALTER TABLE PREFIX_state + CHANGE iso_code `iso_code` char(4) NOT NULL; + +ALTER TABLE PREFIX_order_detail + CHANGE product_quantity_cancelled product_quantity_refunded INT(10) UNSIGNED NOT NULL DEFAULT '0'; +ALTER TABLE PREFIX_order_detail + ADD INDEX product_id (product_id); + +ALTER TABLE PREFIX_attribute_lang + ADD INDEX id_lang (`id_lang`, `name`); +ALTER TABLE PREFIX_attribute_lang + ADD INDEX id_lang_2 (`id_lang`); +ALTER TABLE PREFIX_attribute_lang + ADD INDEX id_attribute (`id_attribute`); + +ALTER TABLE PREFIX_block_cms + ADD PRIMARY KEY (`id_block`, `id_cms`); + +ALTER TABLE PREFIX_connections + CHANGE `http_referer` `http_referer` VARCHAR(255) DEFAULT NULL; +ALTER TABLE PREFIX_connections + ADD INDEX `date_add` (`date_add`); + +ALTER TABLE PREFIX_customer + DROP INDEX `customer_email`; +ALTER TABLE PREFIX_customer + ADD UNIQUE `customer_email` (`email`); + +ALTER TABLE PREFIX_delivery + ADD INDEX id_zone (`id_zone`); +ALTER TABLE PREFIX_delivery + ADD INDEX id_carrier (`id_carrier`, `id_zone`); + +ALTER TABLE PREFIX_discount_category + ADD INDEX id_category (`id_category`); + +ALTER TABLE PREFIX_feature_product + ADD INDEX `id_feature` (`id_feature`); + +ALTER TABLE PREFIX_hook_module + DROP INDEX `hook_module_index`; +ALTER TABLE PREFIX_hook_module + ADD PRIMARY KEY (id_module,id_hook); +ALTER TABLE PREFIX_hook_module + ADD INDEX id_module (`id_module`); +ALTER TABLE PREFIX_hook_module + ADD INDEX id_hook (`id_hook`); + +ALTER TABLE PREFIX_module + CHANGE `active` `active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0'; + +ALTER TABLE PREFIX_page + CHANGE `id_object` `id_object` INT UNSIGNED NULL DEFAULT NULL; +ALTER TABLE PREFIX_page + ADD INDEX `id_page_type` (`id_page_type`); +ALTER TABLE PREFIX_page + ADD INDEX `id_object` (`id_object`); + +ALTER TABLE PREFIX_page_type + CHANGE `name` `name` VARCHAR(255) NOT NULL; +ALTER TABLE PREFIX_page_type + ADD INDEX `name` (`name`); + +ALTER TABLE PREFIX_product_attribute + ADD INDEX reference (reference); +ALTER TABLE PREFIX_product_attribute + ADD INDEX supplier_reference (supplier_reference); + +ALTER TABLE PREFIX_product_lang + ADD INDEX id_product (id_product); +ALTER TABLE PREFIX_product_lang + ADD INDEX id_lang (id_lang); +ALTER TABLE PREFIX_product_lang + ADD INDEX `name` (`name`); +ALTER TABLE PREFIX_product_lang + ADD FULLTEXT KEY ftsname (`name`); + +ALTER TABLE PREFIX_cart_discount + ADD INDEX `id_discount` (`id_discount`); + +ALTER TABLE PREFIX_discount_category + ADD PRIMARY KEY (id_category,id_discount); + +ALTER TABLE PREFIX_image_lang + ADD INDEX id_image (id_image); + +ALTER TABLE PREFIX_range_price + CHANGE `delimiter1` `delimiter1` DECIMAL(13, 6) NOT NULL; +ALTER TABLE PREFIX_range_price + CHANGE `delimiter2` `delimiter2` DECIMAL(13, 6) NOT NULL; +ALTER TABLE PREFIX_range_price + CHANGE `id_carrier` `id_carrier` INT(10) UNSIGNED NOT NULL; +ALTER TABLE PREFIX_range_price + DROP INDEX `range_price_unique`; +ALTER TABLE PREFIX_range_price + ADD UNIQUE KEY `id_carrier` (`id_carrier`,`delimiter1`,`delimiter2`); + +ALTER TABLE PREFIX_range_weight + CHANGE `delimiter1` `delimiter1` DECIMAL(13, 6) NOT NULL; +ALTER TABLE PREFIX_range_weight + CHANGE `delimiter2` `delimiter2` DECIMAL(13, 6) NOT NULL; +ALTER TABLE PREFIX_range_weight + CHANGE `id_carrier` `id_carrier` INT(10) UNSIGNED NOT NULL; +ALTER TABLE PREFIX_range_weight + DROP INDEX `range_weight_unique`; +ALTER TABLE PREFIX_range_weight + ADD UNIQUE KEY `id_carrier` (`id_carrier`,`delimiter1`,`delimiter2`); + +ALTER TABLE PREFIX_scene_products + ADD PRIMARY KEY (`id_scene`, `id_product`, `x_axis`, `y_axis`); + +ALTER TABLE PREFIX_product_lang DROP INDEX fts; +ALTER TABLE PREFIX_product_lang DROP INDEX ftsname ; + +/* KEY management */ +ALTER TABLE PREFIX_attribute_lang DROP INDEX `id_lang_2`; +ALTER TABLE PREFIX_attribute_lang DROP INDEX `id_attribute`; +ALTER TABLE PREFIX_attribute_lang DROP INDEX `attribute_lang_index`, ADD PRIMARY KEY (`id_attribute`, `id_lang`); +ALTER TABLE PREFIX_carrier_zone DROP INDEX `carrier_zone_index`, ADD PRIMARY KEY (`id_carrier`, `id_zone`); +ALTER TABLE PREFIX_discount_category CHANGE `id_discount` `id_discount` int(11) NOT NULL AFTER `id_category`; +ALTER TABLE PREFIX_discount_category DROP INDEX `id_category`; +ALTER TABLE PREFIX_feature_product DROP INDEX `id_feature`; +ALTER TABLE PREFIX_hook_module DROP INDEX `id_module`; +ALTER TABLE PREFIX_image_lang DROP INDEX `id_image`; +ALTER TABLE PREFIX_product_lang DROP INDEX `id_product`; + +/* ############################################################ */ + +CREATE TABLE `PREFIX_customer_group` ( + `id_customer` int(10) unsigned NOT NULL, + `id_group` int(10) unsigned NOT NULL, + PRIMARY KEY `customer_group_index` (`id_customer`,`id_group`), + INDEX customer_login(id_group) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_category_group ( + id_category INTEGER UNSIGNED NOT NULL, + id_group INTEGER UNSIGNED NOT NULL, + INDEX category_group_index(id_category, id_group) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_group` ( + id_group INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + reduction DECIMAL(10,2) NOT NULL DEFAULT 0, + date_add DATETIME NOT NULL, + date_upd DATETIME NOT NULL, + PRIMARY KEY(id_group) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_group_lang ( + id_group INTEGER UNSIGNED NOT NULL, + id_lang INTEGER UNSIGNED NOT NULL, + name VARCHAR(32) NOT NULL, + UNIQUE INDEX attribute_lang_index(id_group, id_lang) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_message_readed ( + id_message INTEGER UNSIGNED NOT NULL, + id_employee INTEGER UNSIGNED NOT NULL, + date_add DATETIME NOT NULL, + PRIMARY KEY (id_message,id_employee) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attachment` ( + `id_attachment` int(10) unsigned NOT NULL auto_increment, + `file` varchar(40) NOT NULL, + `mime` varchar(32) NOT NULL, + PRIMARY KEY (`id_attachment`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_attachment_lang` ( + `id_attachment` int(10) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(32) default NULL, + `description` TEXT, + PRIMARY KEY (`id_attachment`, `id_lang`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_attachment` ( + `id_product` int(10) NOT NULL, + `id_attachment` int(10) NOT NULL, + PRIMARY KEY (`id_product`,`id_attachment`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_connections_source` ( + id_connections_source INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + id_connections INTEGER UNSIGNED NOT NULL, + http_referer VARCHAR(255) NULL, + request_uri VARCHAR(255) NULL, + keywords VARCHAR(255) NULL, + date_add DATETIME NOT NULL, + PRIMARY KEY (id_connections_source), + INDEX connections (id_connections), + INDEX orderby (date_add), + INDEX http_referer (`http_referer`), + INDEX request_uri(`request_uri`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_referrer` ( + `id_referrer` int(10) unsigned NOT NULL auto_increment, + `name` varchar(64) NOT NULL, + `passwd` varchar(32) default NULL, + `http_referer_regexp` varchar(64) default NULL, + `http_referer_like` varchar(64) default NULL, + `request_uri_regexp` varchar(64) default NULL, + `request_uri_like` varchar(64) default NULL, + `http_referer_regexp_not` varchar(64) default NULL, + `http_referer_like_not` varchar(64) default NULL, + `request_uri_regexp_not` varchar(64) default NULL, + `request_uri_like_not` varchar(64) default NULL, + `base_fee` decimal(5,2) NOT NULL default '0.00', + `percent_fee` decimal(5,2) NOT NULL default '0.00', + `click_fee` decimal(5,2) NOT NULL default '0.00', + `cache_visitors` int(11) default NULL, + `cache_visits` int(11) default NULL, + `cache_pages` int(11) default NULL, + `cache_registrations` int(11) default NULL, + `cache_orders` int(11) default NULL, + `cache_sales` decimal(10,2) default NULL, + `cache_reg_rate` decimal(5,4) default NULL, + `cache_order_rate` decimal(5,4) default NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_referrer`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_referrer_cache` ( + `id_connections_source` int(11) NOT NULL, + `id_referrer` int(11) NOT NULL, + PRIMARY KEY (`id_connections_source`, `id_referrer`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_search_engine` ( + id_search_engine INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, + server VARCHAR(64) NOT NULL, + getvar VARCHAR(16) NOT NULL, + PRIMARY KEY(id_search_engine) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_module_group` ( + `id_module` INTEGER UNSIGNED NOT NULL, + `id_group` INTEGER NOT NULL, + PRIMARY KEY (`id_module`, `id_group`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_attribute_image` ( + `id_product_attribute` int(10) NOT NULL, + `id_image` int(10) NOT NULL, + PRIMARY KEY (`id_product_attribute`,`id_image`), + KEY `id_image` (`id_image`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_search_index` ( + `id_product` int(11) NOT NULL, + `id_word` int(11) NOT NULL, + `weight` tinyint(4) NOT NULL default '1', + PRIMARY KEY (`id_word`, `id_product`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_search_word` ( + `id_word` int(10) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `word` varchar(15) NOT NULL, + PRIMARY KEY (`id_word`), + UNIQUE KEY `id_lang` (`id_lang`,`word`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +CREATE TABLE PREFIX_timezone ( + id_timezone INTEGER UNSIGNED NOT NULL auto_increment, + name VARCHAR(32) NOT NULL, + PRIMARY KEY timezone_index(`id_timezone`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +INSERT INTO `PREFIX_order_state` (`id_order_state`, `invoice`, `send_email`, `color`, `unremovable`, `logable`, `delivery`) VALUES + (11, 0, 0, 'lightblue', 1, 0, 0); + +INSERT INTO `PREFIX_order_state_lang` (`id_order_state`, `id_lang`, `name`, `template`) VALUES + (11, 1, 'Awaiting PayPal payment', ''); +INSERT INTO `PREFIX_order_state_lang` (`id_order_state`, `id_lang`, `name`, `template`) VALUES + (11, 2, 'En attente du paiement par PayPal', ''); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_MINWORDLEN', '3', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_PNAME', '6', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_REF', '10', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_SHORTDESC', '1', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_DESC', '1', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_CNAME', '3', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_MNAME', '3', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_TAG', '4', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_ATTRIBUTE', '2', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_WEIGHT_FEATURE', '2', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_SEARCH_AJAX', '1', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('PS_TIMEZONE', '374', NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES + ('BLOCKTAGS_NBR', '10', NOW(), NOW()); + +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES + ('extraCarrier', 'Extra carrier (module mode)', NULL, 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES + ('shoppingCartExtra', 'Shopping cart extra button', 'Display some specific informations', 1); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES + ('search', 'Search', NULL, 0); +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES + ('backBeforePayment', 'Redirect in order process', 'Redirect user to the module instead of displaying payment modules', 0); + +UPDATE PREFIX_orders o SET o.valid = IFNULL(( + SELECT os.logable + FROM PREFIX_order_history oh + LEFT JOIN PREFIX_order_state os ON os.id_order_state = oh.id_order_state + WHERE oh.id_order = o.id_order + ORDER BY oh.date_add DESC, oh.id_order_history DESC + LIMIT 1 +), 0); + +INSERT INTO `PREFIX_search_engine` (`id_search_engine`, `server`,`getvar`) VALUES + (1, 'google','q'), + (2, 'search.aol','query'), + (3, 'yandex.ru','text'), + (4, 'ask.com','q'), + (5, 'nhl.com','q'), + (6, 'search.yahoo','p'), + (7, 'baidu.com','wd'), + (8, 'search.lycos','query'), + (9, 'exalead','q'), + (10, 'search.live.com','q'), + (11, 'search.ke.voila','rdata'), + (12, 'altavista','q') + ON DUPLICATE KEY UPDATE server = server; + +/* GROUPS, CUSTOMERS GROUPS, & CATEGORY GROUPS */ +INSERT INTO `PREFIX_group` (`reduction`, `date_add`, `date_upd`) VALUES (0, NOW(), NOW()); +INSERT INTO `PREFIX_group_lang` (`id_lang`, `id_group`, `name`) ( + SELECT `id_lang`, + (SELECT `id_group` FROM `PREFIX_group` LIMIT 1), + 'Default' FROM `PREFIX_lang`); +UPDATE `PREFIX_group_lang` SET `name` = 'Défaut' + WHERE `id_group` = (SELECT `id_group` FROM `PREFIX_group` LIMIT 1) + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO `PREFIX_customer_group` (`id_customer`, `id_group`) + (SELECT `id_customer`, + (SELECT `id_group` FROM `PREFIX_group` LIMIT 1) FROM `PREFIX_customer`); +INSERT INTO `PREFIX_category_group` (`id_category`, `id_group`) + (SELECT `id_category`, + (SELECT `id_group` FROM `PREFIX_group` LIMIT 1) FROM `PREFIX_category`); + +/* NEW TABS */ +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp), 'AdminMessages', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminOrders' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminMessages' LIMIT 1), + 'Customer messages' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Messages clients' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminMessages') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminMessages' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp), 'AdminTracking', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminTracking' LIMIT 1), + 'Tracking' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Suivi' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminTracking') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminTracking' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminStats' LIMIT 1) AS tmp), 'AdminSearchEngines', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminStats' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSearchEngines' LIMIT 1), + 'Search Engines' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Moteurs de recherche' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminSearchEngines') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSearchEngines' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminStats' LIMIT 1) AS tmp), 'AdminReferrers', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminStats' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminReferrers' LIMIT 1), + 'Referrers' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Sites affluents' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminReferrers') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminReferrers' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCustomers' LIMIT 1) AS tmp), 'AdminGroups', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCustomers' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminGroups' LIMIT 1), + 'Groups' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Groupes' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminGroups') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminGroups' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp), 'AdminGenerator', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminTools' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminGenerator' LIMIT 1), + 'Generator' FROM PREFIX_lang); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminGenerator' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCustomers' LIMIT 1) AS tmp), 'AdminCarts', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCustomers' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminCarts' LIMIT 1), + 'Carts' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Paniers' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminCarts') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminCarts' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp), 'AdminTags', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminTags' LIMIT 1), + 'Tags' FROM PREFIX_lang); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminTags' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp), 'AdminSearchConf', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminPreferences' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSearchConf' LIMIT 1), + 'Search' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Recherche' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminSearchConf') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminSearchConf' LIMIT 1), 1, 1, 1, 1); + +INSERT INTO PREFIX_tab (id_parent, class_name, position) VALUES ((SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp), 'AdminAttachments', (SELECT tmp.max FROM (SELECT MAX(position) max FROM `PREFIX_tab` WHERE id_parent = (SELECT tmp.`id_tab` FROM (SELECT `id_tab` FROM PREFIX_tab t WHERE t.class_name = 'AdminCatalog' LIMIT 1) AS tmp )) AS tmp)); +INSERT INTO PREFIX_tab_lang (id_lang, id_tab, name) ( + SELECT id_lang, + (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminAttachments' LIMIT 1), + 'Attachments' FROM PREFIX_lang); +UPDATE `PREFIX_tab_lang` SET `name` = 'Documents joints' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminAttachments') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); +INSERT INTO PREFIX_access (id_profile, id_tab, `view`, `add`, edit, `delete`) VALUES ('1', (SELECT id_tab FROM PREFIX_tab t WHERE t.class_name = 'AdminAttachments' LIMIT 1), 1, 1, 1, 1); + +/* CHANGE TABS */ +UPDATE `PREFIX_tab` SET `class_name` = 'AdminStatuses' WHERE `class_name` = 'AdminOrdersStates'; +UPDATE `PREFIX_tab_lang` SET `name` = 'Statuses' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminStatuses') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'en'); +UPDATE `PREFIX_tab_lang` SET `name` = 'Statuts' + WHERE `id_tab` = (SELECT `id_tab` FROM `PREFIX_tab` t WHERE t.class_name = 'AdminStatuses') + AND `id_lang` = (SELECT `id_lang` FROM `PREFIX_lang` l WHERE l.iso_code = 'fr'); + +INSERT INTO PREFIX_product_attribute_image (id_image, id_product_attribute) (SELECT id_image, id_product_attribute FROM PREFIX_product_attribute); +/* ALTER query must stay here (right after the INSERT INTO PREFIX_product_attribute_image)! */ +ALTER TABLE PREFIX_product_attribute DROP id_image; + +UPDATE PREFIX_category_lang SET link_rewrite = 'home' WHERE id_category = 1; + +/* TIMEZONES */ + +INSERT INTO `PREFIX_timezone` (`id_timezone`, `name`) VALUES +(1, 'Africa/Abidjan'), +(2, 'Africa/Accra'), +(3, 'Africa/Addis_Ababa'), +(4, 'Africa/Algiers'), +(5, 'Africa/Asmara'), +(6, 'Africa/Asmera'), +(7, 'Africa/Bamako'), +(8, 'Africa/Bangui'), +(9, 'Africa/Banjul'), +(10, 'Africa/Bissau'), +(11, 'Africa/Blantyre'), +(12, 'Africa/Brazzaville'), +(13, 'Africa/Bujumbura'), +(14, 'Africa/Cairo'), +(15, 'Africa/Casablanca'), +(16, 'Africa/Ceuta'), +(17, 'Africa/Conakry'), +(18, 'Africa/Dakar'), +(19, 'Africa/Dar_es_Salaam'), +(20, 'Africa/Djibouti'), +(21, 'Africa/Douala'), +(22, 'Africa/El_Aaiun'), +(23, 'Africa/Freetown'), +(24, 'Africa/Gaborone'), +(25, 'Africa/Harare'), +(26, 'Africa/Johannesburg'), +(27, 'Africa/Kampala'), +(28, 'Africa/Khartoum'), +(29, 'Africa/Kigali'), +(30, 'Africa/Kinshasa'), +(31, 'Africa/Lagos'), +(32, 'Africa/Libreville'), +(33, 'Africa/Lome'), +(34, 'Africa/Luanda'), +(35, 'Africa/Lubumbashi'), +(36, 'Africa/Lusaka'), +(37, 'Africa/Malabo'), +(38, 'Africa/Maputo'), +(39, 'Africa/Maseru'), +(40, 'Africa/Mbabane'), +(41, 'Africa/Mogadishu'), +(42, 'Africa/Monrovia'), +(43, 'Africa/Nairobi'), +(44, 'Africa/Ndjamena'), +(45, 'Africa/Niamey'), +(46, 'Africa/Nouakchott'), +(47, 'Africa/Ouagadougou'), +(48, 'Africa/Porto-Novo'), +(49, 'Africa/Sao_Tome'), +(50, 'Africa/Timbuktu'), +(51, 'Africa/Tripoli'), +(52, 'Africa/Tunis'), +(53, 'Africa/Windhoek'), +(54, 'America/Adak'), +(55, 'America/Anchorage '), +(56, 'America/Anguilla'), +(57, 'America/Antigua'), +(58, 'America/Araguaina'), +(59, 'America/Argentina/Buenos_Aires'), +(60, 'America/Argentina/Catamarca'), +(61, 'America/Argentina/ComodRivadavia'), +(62, 'America/Argentina/Cordoba'), +(63, 'America/Argentina/Jujuy'), +(64, 'America/Argentina/La_Rioja'), +(65, 'America/Argentina/Mendoza'), +(66, 'America/Argentina/Rio_Gallegos'), +(67, 'America/Argentina/Salta'), +(68, 'America/Argentina/San_Juan'), +(69, 'America/Argentina/San_Luis'), +(70, 'America/Argentina/Tucuman'), +(71, 'America/Argentina/Ushuaia'), +(72, 'America/Aruba'), +(73, 'America/Asuncion'), +(74, 'America/Atikokan'), +(75, 'America/Atka'), +(76, 'America/Bahia'), +(77, 'America/Barbados'), +(78, 'America/Belem'), +(79, 'America/Belize'), +(80, 'America/Blanc-Sablon'), +(81, 'America/Boa_Vista'), +(82, 'America/Bogota'), +(83, 'America/Boise'), +(84, 'America/Buenos_Aires'), +(85, 'America/Cambridge_Bay'), +(86, 'America/Campo_Grande'), +(87, 'America/Cancun'), +(88, 'America/Caracas'), +(89, 'America/Catamarca'), +(90, 'America/Cayenne'), +(91, 'America/Cayman'), +(92, 'America/Chicago'), +(93, 'America/Chihuahua'), +(94, 'America/Coral_Harbour'), +(95, 'America/Cordoba'), +(96, 'America/Costa_Rica'), +(97, 'America/Cuiaba'), +(98, 'America/Curacao'), +(99, 'America/Danmarkshavn'), +(100, 'America/Dawson'), +(101, 'America/Dawson_Creek'), +(102, 'America/Denver'), +(103, 'America/Detroit'), +(104, 'America/Dominica'), +(105, 'America/Edmonton'), +(106, 'America/Eirunepe'), +(107, 'America/El_Salvador'), +(108, 'America/Ensenada'), +(109, 'America/Fort_Wayne'), +(110, 'America/Fortaleza'), +(111, 'America/Glace_Bay'), +(112, 'America/Godthab'), +(113, 'America/Goose_Bay'), +(114, 'America/Grand_Turk'), +(115, 'America/Grenada'), +(116, 'America/Guadeloupe'), +(117, 'America/Guatemala'), +(118, 'America/Guayaquil'), +(119, 'America/Guyana'), +(120, 'America/Halifax'), +(121, 'America/Havana'), +(122, 'America/Hermosillo'), +(123, 'America/Indiana/Indianapolis'), +(124, 'America/Indiana/Knox'), +(125, 'America/Indiana/Marengo'), +(126, 'America/Indiana/Petersburg'), +(127, 'America/Indiana/Tell_City'), +(128, 'America/Indiana/Vevay'), +(129, 'America/Indiana/Vincennes'), +(130, 'America/Indiana/Winamac'), +(131, 'America/Indianapolis'), +(132, 'America/Inuvik'), +(133, 'America/Iqaluit'), +(134, 'America/Jamaica'), +(135, 'America/Jujuy'), +(136, 'America/Juneau'), +(137, 'America/Kentucky/Louisville'), +(138, 'America/Kentucky/Monticello'), +(139, 'America/Knox_IN'), +(140, 'America/La_Paz'), +(141, 'America/Lima'), +(142, 'America/Los_Angeles'), +(143, 'America/Louisville'), +(144, 'America/Maceio'), +(145, 'America/Managua'), +(146, 'America/Manaus'), +(147, 'America/Marigot'), +(148, 'America/Martinique'), +(149, 'America/Mazatlan'), +(150, 'America/Mendoza'), +(151, 'America/Menominee'), +(152, 'America/Merida'), +(153, 'America/Mexico_City'), +(154, 'America/Miquelon'), +(155, 'America/Moncton'), +(156, 'America/Monterrey'), +(157, 'America/Montevideo'), +(158, 'America/Montreal'), +(159, 'America/Montserrat'), +(160, 'America/Nassau'), +(161, 'America/New_York'), +(162, 'America/Nipigon'), +(163, 'America/Nome'), +(164, 'America/Noronha'), +(165, 'America/North_Dakota/Center'), +(166, 'America/North_Dakota/New_Salem'), +(167, 'America/Panama'), +(168, 'America/Pangnirtung'), +(169, 'America/Paramaribo'), +(170, 'America/Phoenix'), +(171, 'America/Port-au-Prince'), +(172, 'America/Port_of_Spain'), +(173, 'America/Porto_Acre'), +(174, 'America/Porto_Velho'), +(175, 'America/Puerto_Rico'), +(176, 'America/Rainy_River'), +(177, 'America/Rankin_Inlet'), +(178, 'America/Recife'), +(179, 'America/Regina'), +(180, 'America/Resolute'), +(181, 'America/Rio_Branco'), +(182, 'America/Rosario'), +(183, 'America/Santarem'), +(184, 'America/Santiago'), +(185, 'America/Santo_Domingo'), +(186, 'America/Sao_Paulo'), +(187, 'America/Scoresbysund'), +(188, 'America/Shiprock'), +(189, 'America/St_Barthelemy'), +(190, 'America/St_Johns'), +(191, 'America/St_Kitts'), +(192, 'America/St_Lucia'), +(193, 'America/St_Thomas'), +(194, 'America/St_Vincent'), +(195, 'America/Swift_Current'), +(196, 'America/Tegucigalpa'), +(197, 'America/Thule'), +(198, 'America/Thunder_Bay'), +(199, 'America/Tijuana'), +(200, 'America/Toronto'), +(201, 'America/Tortola'), +(202, 'America/Vancouver'), +(203, 'America/Virgin'), +(204, 'America/Whitehorse'), +(205, 'America/Winnipeg'), +(206, 'America/Yakutat'), +(207, 'America/Yellowknife'), +(208, 'Antarctica/Casey'), +(209, 'Antarctica/Davis'), +(210, 'Antarctica/DumontDUrville'), +(211, 'Antarctica/Mawson'), +(212, 'Antarctica/McMurdo'), +(213, 'Antarctica/Palmer'), +(214, 'Antarctica/Rothera'), +(215, 'Antarctica/South_Pole'), +(216, 'Antarctica/Syowa'), +(217, 'Antarctica/Vostok'), +(218, 'Arctic/Longyearbyen'), +(219, 'Asia/Aden'), +(220, 'Asia/Almaty'), +(221, 'Asia/Amman'), +(222, 'Asia/Anadyr'), +(223, 'Asia/Aqtau'), +(224, 'Asia/Aqtobe'), +(225, 'Asia/Ashgabat'), +(226, 'Asia/Ashkhabad'), +(227, 'Asia/Baghdad'), +(228, 'Asia/Bahrain'), +(229, 'Asia/Baku'), +(230, 'Asia/Bangkok'), +(231, 'Asia/Beirut'), +(232, 'Asia/Bishkek'), +(233, 'Asia/Brunei'), +(234, 'Asia/Calcutta'), +(235, 'Asia/Choibalsan'), +(236, 'Asia/Chongqing'), +(237, 'Asia/Chungking'), +(238, 'Asia/Colombo'), +(239, 'Asia/Dacca'), +(240, 'Asia/Damascus'), +(241, 'Asia/Dhaka'), +(242, 'Asia/Dili'), +(243, 'Asia/Dubai'), +(244, 'Asia/Dushanbe'), +(245, 'Asia/Gaza'), +(246, 'Asia/Harbin'), +(247, 'Asia/Ho_Chi_Minh'), +(248, 'Asia/Hong_Kong'), +(249, 'Asia/Hovd'), +(250, 'Asia/Irkutsk'), +(251, 'Asia/Istanbul'), +(252, 'Asia/Jakarta'), +(253, 'Asia/Jayapura'), +(254, 'Asia/Jerusalem'), +(255, 'Asia/Kabul'), +(256, 'Asia/Kamchatka'), +(257, 'Asia/Karachi'), +(258, 'Asia/Kashgar'), +(259, 'Asia/Kathmandu'), +(260, 'Asia/Katmandu'), +(261, 'Asia/Kolkata'), +(262, 'Asia/Krasnoyarsk'), +(263, 'Asia/Kuala_Lumpur'), +(264, 'Asia/Kuching'), +(265, 'Asia/Kuwait'), +(266, 'Asia/Macao'), +(267, 'Asia/Macau'), +(268, 'Asia/Magadan'), +(269, 'Asia/Makassar'), +(270, 'Asia/Manila'), +(271, 'Asia/Muscat'), +(272, 'Asia/Nicosia'), +(273, 'Asia/Novosibirsk'), +(274, 'Asia/Omsk'), +(275, 'Asia/Oral'), +(276, 'Asia/Phnom_Penh'), +(277, 'Asia/Pontianak'), +(278, 'Asia/Pyongyang'), +(279, 'Asia/Qatar'), +(280, 'Asia/Qyzylorda'), +(281, 'Asia/Rangoon'), +(282, 'Asia/Riyadh'), +(283, 'Asia/Saigon'), +(284, 'Asia/Sakhalin'), +(285, 'Asia/Samarkand'), +(286, 'Asia/Seoul'), +(287, 'Asia/Shanghai'), +(288, 'Asia/Singapore'), +(289, 'Asia/Taipei'), +(290, 'Asia/Tashkent'), +(291, 'Asia/Tbilisi'), +(292, 'Asia/Tehran'), +(293, 'Asia/Tel_Aviv'), +(294, 'Asia/Thimbu'), +(295, 'Asia/Thimphu'), +(296, 'Asia/Tokyo'), +(297, 'Asia/Ujung_Pandang'), +(298, 'Asia/Ulaanbaatar'), +(299, 'Asia/Ulan_Bator'), +(300, 'Asia/Urumqi'), +(301, 'Asia/Vientiane'), +(302, 'Asia/Vladivostok'), +(303, 'Asia/Yakutsk'), +(304, 'Asia/Yekaterinburg'), +(305, 'Asia/Yerevan'), +(306, 'Atlantic/Azores'), +(307, 'Atlantic/Bermuda'), +(308, 'Atlantic/Canary'), +(309, 'Atlantic/Cape_Verde'), +(310, 'Atlantic/Faeroe'), +(311, 'Atlantic/Faroe'), +(312, 'Atlantic/Jan_Mayen'), +(313, 'Atlantic/Madeira'), +(314, 'Atlantic/Reykjavik'), +(315, 'Atlantic/South_Georgia'), +(316, 'Atlantic/St_Helena'), +(317, 'Atlantic/Stanley'), +(318, 'Australia/ACT'), +(319, 'Australia/Adelaide'), +(320, 'Australia/Brisbane'), +(321, 'Australia/Broken_Hill'), +(322, 'Australia/Canberra'), +(323, 'Australia/Currie'), +(324, 'Australia/Darwin'), +(325, 'Australia/Eucla'), +(326, 'Australia/Hobart'), +(327, 'Australia/LHI'), +(328, 'Australia/Lindeman'), +(329, 'Australia/Lord_Howe'), +(330, 'Australia/Melbourne'), +(331, 'Australia/North'), +(332, 'Australia/NSW'), +(333, 'Australia/Perth'), +(334, 'Australia/Queensland'), +(335, 'Australia/South'), +(336, 'Australia/Sydney'), +(337, 'Australia/Tasmania'), +(338, 'Australia/Victoria'), +(339, 'Australia/West'), +(340, 'Australia/Yancowinna'), +(341, 'Europe/Amsterdam'), +(342, 'Europe/Andorra'), +(343, 'Europe/Athens'), +(344, 'Europe/Belfast'), +(345, 'Europe/Belgrade'), +(346, 'Europe/Berlin'), +(347, 'Europe/Bratislava'), +(348, 'Europe/Brussels'), +(349, 'Europe/Bucharest'), +(350, 'Europe/Budapest'), +(351, 'Europe/Chisinau'), +(352, 'Europe/Copenhagen'), +(353, 'Europe/Dublin'), +(354, 'Europe/Gibraltar'), +(355, 'Europe/Guernsey'), +(356, 'Europe/Helsinki'), +(357, 'Europe/Isle_of_Man'), +(358, 'Europe/Istanbul'), +(359, 'Europe/Jersey'), +(360, 'Europe/Kaliningrad'), +(361, 'Europe/Kiev'), +(362, 'Europe/Lisbon'), +(363, 'Europe/Ljubljana'), +(364, 'Europe/London'), +(365, 'Europe/Luxembourg'), +(366, 'Europe/Madrid'), +(367, 'Europe/Malta'), +(368, 'Europe/Mariehamn'), +(369, 'Europe/Minsk'), +(370, 'Europe/Monaco'), +(371, 'Europe/Moscow'), +(372, 'Europe/Nicosia'), +(373, 'Europe/Oslo'), +(374, 'Europe/Paris'), +(375, 'Europe/Podgorica'), +(376, 'Europe/Prague'), +(377, 'Europe/Riga'), +(378, 'Europe/Rome'), +(379, 'Europe/Samara'), +(380, 'Europe/San_Marino'), +(381, 'Europe/Sarajevo'), +(382, 'Europe/Simferopol'), +(383, 'Europe/Skopje'), +(384, 'Europe/Sofia'), +(385, 'Europe/Stockholm'), +(386, 'Europe/Tallinn'), +(387, 'Europe/Tirane'), +(388, 'Europe/Tiraspol'), +(389, 'Europe/Uzhgorod'), +(390, 'Europe/Vaduz'), +(391, 'Europe/Vatican'), +(392, 'Europe/Vienna'), +(393, 'Europe/Vilnius'), +(394, 'Europe/Volgograd'), +(395, 'Europe/Warsaw'), +(396, 'Europe/Zagreb'), +(397, 'Europe/Zaporozhye'), +(398, 'Europe/Zurich'), +(399, 'Indian/Antananarivo'), +(400, 'Indian/Chagos'), +(401, 'Indian/Christmas'), +(402, 'Indian/Cocos'), +(403, 'Indian/Comoro'), +(404, 'Indian/Kerguelen'), +(405, 'Indian/Mahe'), +(406, 'Indian/Maldives'), +(407, 'Indian/Mauritius'), +(408, 'Indian/Mayotte'), +(409, 'Indian/Reunion'), +(410, 'Pacific/Apia'), +(411, 'Pacific/Auckland'), +(412, 'Pacific/Chatham'), +(413, 'Pacific/Easter'), +(414, 'Pacific/Efate'), +(415, 'Pacific/Enderbury'), +(416, 'Pacific/Fakaofo'), +(417, 'Pacific/Fiji'), +(418, 'Pacific/Funafuti'), +(419, 'Pacific/Galapagos'), +(420, 'Pacific/Gambier'), +(421, 'Pacific/Guadalcanal'), +(422, 'Pacific/Guam'), +(423, 'Pacific/Honolulu'), +(424, 'Pacific/Johnston'), +(425, 'Pacific/Kiritimati'), +(426, 'Pacific/Kosrae'), +(427, 'Pacific/Kwajalein'), +(428, 'Pacific/Majuro'), +(429, 'Pacific/Marquesas'), +(430, 'Pacific/Midway'), +(431, 'Pacific/Nauru'), +(432, 'Pacific/Niue'), +(433, 'Pacific/Norfolk'), +(434, 'Pacific/Noumea'), +(435, 'Pacific/Pago_Pago'), +(436, 'Pacific/Palau'), +(437, 'Pacific/Pitcairn'), +(438, 'Pacific/Ponape'), +(439, 'Pacific/Port_Moresby'), +(440, 'Pacific/Rarotonga'), +(441, 'Pacific/Saipan'), +(442, 'Pacific/Samoa'), +(443, 'Pacific/Tahiti'), +(444, 'Pacific/Tarawa'), +(445, 'Pacific/Tongatapu'), +(446, 'Pacific/Truk'), +(447, 'Pacific/Wake'), +(448, 'Pacific/Wallis'), +(449, 'Pacific/Yap'), +(450, 'Brazil/Acre'), +(451, 'Brazil/DeNoronha'), +(452, 'Brazil/East'), +(453, 'Brazil/West'), +(454, 'Canada/Atlantic'), +(455, 'Canada/Central'), +(456, 'Canada/East-Saskatchewan'), +(457, 'Canada/Eastern'), +(458, 'Canada/Mountain'), +(459, 'Canada/Newfoundland'), +(460, 'Canada/Pacific'), +(461, 'Canada/Saskatchewan'), +(462, 'Canada/Yukon'), +(463, 'CET'), +(464, 'Chile/Continental'), +(465, 'Chile/EasterIsland'), +(466, 'CST6CDT'), +(467, 'Cuba'), +(468, 'EET'), +(469, 'Egypt'), +(470, 'Eire'), +(471, 'EST'), +(472, 'EST5EDT'), +(473, 'Etc/GMT'), +(474, 'Etc/GMT+0'), +(475, 'Etc/GMT+1'), +(476, 'Etc/GMT+10'), +(477, 'Etc/GMT+11'), +(478, 'Etc/GMT+12'), +(479, 'Etc/GMT+2'), +(480, 'Etc/GMT+3'), +(481, 'Etc/GMT+4'), +(482, 'Etc/GMT+5'), +(483, 'Etc/GMT+6'), +(484, 'Etc/GMT+7'), +(485, 'Etc/GMT+8'), +(486, 'Etc/GMT+9'), +(487, 'Etc/GMT-0'), +(488, 'Etc/GMT-1'), +(489, 'Etc/GMT-10'), +(490, 'Etc/GMT-11'), +(491, 'Etc/GMT-12'), +(492, 'Etc/GMT-13'), +(493, 'Etc/GMT-14'), +(494, 'Etc/GMT-2'), +(495, 'Etc/GMT-3'), +(496, 'Etc/GMT-4'), +(497, 'Etc/GMT-5'), +(498, 'Etc/GMT-6'), +(499, 'Etc/GMT-7'), +(500, 'Etc/GMT-8'), +(501, 'Etc/GMT-9'), +(502, 'Etc/GMT0'), +(503, 'Etc/Greenwich'), +(504, 'Etc/UCT'), +(505, 'Etc/Universal'), +(506, 'Etc/UTC'), +(507, 'Etc/Zulu'), +(508, 'Factory'), +(509, 'GB'), +(510, 'GB-Eire'), +(511, 'GMT'), +(512, 'GMT+0'), +(513, 'GMT-0'), +(514, 'GMT0'), +(515, 'Greenwich'), +(516, 'Hongkong'), +(517, 'HST'), +(518, 'Iceland'), +(519, 'Iran'), +(520, 'Israel'), +(521, 'Jamaica'), +(522, 'Japan'), +(523, 'Kwajalein'), +(524, 'Libya'), +(525, 'MET'), +(526, 'Mexico/BajaNorte'), +(527, 'Mexico/BajaSur'), +(528, 'Mexico/General'), +(529, 'MST'), +(530, 'MST7MDT'), +(531, 'Navajo'), +(532, 'NZ'), +(533, 'NZ-CHAT'), +(534, 'Poland'), +(535, 'Portugal'), +(536, 'PRC'), +(537, 'PST8PDT'), +(538, 'ROC'), +(539, 'ROK'), +(540, 'Singapore'), +(541, 'Turkey'), +(542, 'UCT'), +(543, 'Universal'), +(544, 'US/Alaska'), +(545, 'US/Aleutian'), +(546, 'US/Arizona'), +(547, 'US/Central'), +(548, 'US/East-Indiana'), +(549, 'US/Eastern'), +(550, 'US/Hawaii'), +(551, 'US/Indiana-Starke'), +(552, 'US/Michigan'), +(553, 'US/Mountain'), +(554, 'US/Pacific'), +(555, 'US/Pacific-New'), +(556, 'US/Samoa'), +(557, 'UTC'), +(558, 'W-SU'), +(559, 'WET'), +(560, 'Zulu'); + +/* PHP:blocknewsletter(); */; +/* PHP:set_payment_module_group(); */; diff --git a/install-dev/sql/upgrade/1.2.0.2.sql b/install-dev/sql/upgrade/1.2.0.2.sql new file mode 100644 index 000000000..605edb065 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.2.sql @@ -0,0 +1,610 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +CREATE TABLE `PREFIX_pack` ( + `id_product_pack` int(10) unsigned NOT NULL, + `id_product_item` int(10) unsigned NOT NULL, + `quantity` int(10) unsigned NOT NULL DEFAULT 1, + PRIMARY KEY (`id_product_pack`,`id_product_item`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_manufacturer_lang` + ADD `short_description` VARCHAR( 254 ) NULL DEFAULT NULL; +ALTER TABLE `PREFIX_manufacturer_lang` + ADD `meta_title` VARCHAR( 254 ) NULL DEFAULT NULL; +ALTER TABLE `PREFIX_manufacturer_lang` + ADD `meta_keywords` VARCHAR( 254 ) NULL DEFAULT NULL; +ALTER TABLE `PREFIX_manufacturer_lang` + ADD `meta_description` VARCHAR( 254 ) NULL DEFAULT NULL; + +ALTER TABLE `PREFIX_supplier_lang` + ADD `meta_title` VARCHAR( 254 ) NULL DEFAULT NULL; +ALTER TABLE `PREFIX_supplier_lang` + ADD `meta_keywords` VARCHAR( 254 ) NULL DEFAULT NULL; +ALTER TABLE `PREFIX_supplier_lang` + ADD `meta_description` VARCHAR( 254 ) NULL DEFAULT NULL; + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +TRUNCATE TABLE `PREFIX_timezone`; +INSERT INTO `PREFIX_timezone` (`name`) VALUES + ('Africa/Abidjan'), + ('Africa/Accra'), + ('Africa/Addis_Ababa'), + ('Africa/Algiers'), + ('Africa/Asmara'), + ('Africa/Asmera'), + ('Africa/Bamako'), + ('Africa/Bangui'), + ('Africa/Banjul'), + ('Africa/Bissau'), + ('Africa/Blantyre'), + ('Africa/Brazzaville'), + ('Africa/Bujumbura'), + ('Africa/Cairo'), + ('Africa/Casablanca'), + ('Africa/Ceuta'), + ('Africa/Conakry'), + ('Africa/Dakar'), + ('Africa/Dar_es_Salaam'), + ('Africa/Djibouti'), + ('Africa/Douala'), + ('Africa/El_Aaiun'), + ('Africa/Freetown'), + ('Africa/Gaborone'), + ('Africa/Harare'), + ('Africa/Johannesburg'), + ('Africa/Kampala'), + ('Africa/Khartoum'), + ('Africa/Kigali'), + ('Africa/Kinshasa'), + ('Africa/Lagos'), + ('Africa/Libreville'), + ('Africa/Lome'), + ('Africa/Luanda'), + ('Africa/Lubumbashi'), + ('Africa/Lusaka'), + ('Africa/Malabo'), + ('Africa/Maputo'), + ('Africa/Maseru'), + ('Africa/Mbabane'), + ('Africa/Mogadishu'), + ('Africa/Monrovia'), + ('Africa/Nairobi'), + ('Africa/Ndjamena'), + ('Africa/Niamey'), + ('Africa/Nouakchott'), + ('Africa/Ouagadougou'), + ('Africa/Porto-Novo'), + ('Africa/Sao_Tome'), + ('Africa/Timbuktu'), + ('Africa/Tripoli'), + ('Africa/Tunis'), + ('Africa/Windhoek'), + ('America/Adak'), + ('America/Anchorage '), + ('America/Anguilla'), + ('America/Antigua'), + ('America/Araguaina'), + ('America/Argentina/Buenos_Aires'), + ('America/Argentina/Catamarca'), + ('America/Argentina/ComodRivadavia'), + ('America/Argentina/Cordoba'), + ('America/Argentina/Jujuy'), + ('America/Argentina/La_Rioja'), + ('America/Argentina/Mendoza'), + ('America/Argentina/Rio_Gallegos'), + ('America/Argentina/Salta'), + ('America/Argentina/San_Juan'), + ('America/Argentina/San_Luis'), + ('America/Argentina/Tucuman'), + ('America/Argentina/Ushuaia'), + ('America/Aruba'), + ('America/Asuncion'), + ('America/Atikokan'), + ('America/Atka'), + ('America/Bahia'), + ('America/Barbados'), + ('America/Belem'), + ('America/Belize'), + ('America/Blanc-Sablon'), + ('America/Boa_Vista'), + ('America/Bogota'), + ('America/Boise'), + ('America/Buenos_Aires'), + ('America/Cambridge_Bay'), + ('America/Campo_Grande'), + ('America/Cancun'), + ('America/Caracas'), + ('America/Catamarca'), + ('America/Cayenne'), + ('America/Cayman'), + ('America/Chicago'), + ('America/Chihuahua'), + ('America/Coral_Harbour'), + ('America/Cordoba'), + ('America/Costa_Rica'), + ('America/Cuiaba'), + ('America/Curacao'), + ('America/Danmarkshavn'), + ('America/Dawson'), + ('America/Dawson_Creek'), + ('America/Denver'), + ('America/Detroit'), + ('America/Dominica'), + ('America/Edmonton'), + ('America/Eirunepe'), + ('America/El_Salvador'), + ('America/Ensenada'), + ('America/Fort_Wayne'), + ('America/Fortaleza'), + ('America/Glace_Bay'), + ('America/Godthab'), + ('America/Goose_Bay'), + ('America/Grand_Turk'), + ('America/Grenada'), + ('America/Guadeloupe'), + ('America/Guatemala'), + ('America/Guayaquil'), + ('America/Guyana'), + ('America/Halifax'), + ('America/Havana'), + ('America/Hermosillo'), + ('America/Indiana/Indianapolis'), + ('America/Indiana/Knox'), + ('America/Indiana/Marengo'), + ('America/Indiana/Petersburg'), + ('America/Indiana/Tell_City'), + ('America/Indiana/Vevay'), + ('America/Indiana/Vincennes'), + ('America/Indiana/Winamac'), + ('America/Indianapolis'), + ('America/Inuvik'), + ('America/Iqaluit'), + ('America/Jamaica'), + ('America/Jujuy'), + ('America/Juneau'), + ('America/Kentucky/Louisville'), + ('America/Kentucky/Monticello'), + ('America/Knox_IN'), + ('America/La_Paz'), + ('America/Lima'), + ('America/Los_Angeles'), + ('America/Louisville'), + ('America/Maceio'), + ('America/Managua'), + ('America/Manaus'), + ('America/Marigot'), + ('America/Martinique'), + ('America/Mazatlan'), + ('America/Mendoza'), + ('America/Menominee'), + ('America/Merida'), + ('America/Mexico_City'), + ('America/Miquelon'), + ('America/Moncton'), + ('America/Monterrey'), + ('America/Montevideo'), + ('America/Montreal'), + ('America/Montserrat'), + ('America/Nassau'), + ('America/New_York'), + ('America/Nipigon'), + ('America/Nome'), + ('America/Noronha'), + ('America/North_Dakota/Center'), + ('America/North_Dakota/New_Salem'), + ('America/Panama'), + ('America/Pangnirtung'), + ('America/Paramaribo'), + ('America/Phoenix'), + ('America/Port-au-Prince'), + ('America/Port_of_Spain'), + ('America/Porto_Acre'), + ('America/Porto_Velho'), + ('America/Puerto_Rico'), + ('America/Rainy_River'), + ('America/Rankin_Inlet'), + ('America/Recife'), + ('America/Regina'), + ('America/Resolute'), + ('America/Rio_Branco'), + ('America/Rosario'), + ('America/Santarem'), + ('America/Santiago'), + ('America/Santo_Domingo'), + ('America/Sao_Paulo'), + ('America/Scoresbysund'), + ('America/Shiprock'), + ('America/St_Barthelemy'), + ('America/St_Johns'), + ('America/St_Kitts'), + ('America/St_Lucia'), + ('America/St_Thomas'), + ('America/St_Vincent'), + ('America/Swift_Current'), + ('America/Tegucigalpa'), + ('America/Thule'), + ('America/Thunder_Bay'), + ('America/Tijuana'), + ('America/Toronto'), + ('America/Tortola'), + ('America/Vancouver'), + ('America/Virgin'), + ('America/Whitehorse'), + ('America/Winnipeg'), + ('America/Yakutat'), + ('America/Yellowknife'), + ('Antarctica/Casey'), + ('Antarctica/Davis'), + ('Antarctica/DumontDUrville'), + ('Antarctica/Mawson'), + ('Antarctica/McMurdo'), + ('Antarctica/Palmer'), + ('Antarctica/Rothera'), + ('Antarctica/South_Pole'), + ('Antarctica/Syowa'), + ('Antarctica/Vostok'), + ('Arctic/Longyearbyen'), + ('Asia/Aden'), + ('Asia/Almaty'), + ('Asia/Amman'), + ('Asia/Anadyr'), + ('Asia/Aqtau'), + ('Asia/Aqtobe'), + ('Asia/Ashgabat'), + ('Asia/Ashkhabad'), + ('Asia/Baghdad'), + ('Asia/Bahrain'), + ('Asia/Baku'), + ('Asia/Bangkok'), + ('Asia/Beirut'), + ('Asia/Bishkek'), + ('Asia/Brunei'), + ('Asia/Calcutta'), + ('Asia/Choibalsan'), + ('Asia/Chongqing'), + ('Asia/Chungking'), + ('Asia/Colombo'), + ('Asia/Dacca'), + ('Asia/Damascus'), + ('Asia/Dhaka'), + ('Asia/Dili'), + ('Asia/Dubai'), + ('Asia/Dushanbe'), + ('Asia/Gaza'), + ('Asia/Harbin'), + ('Asia/Ho_Chi_Minh'), + ('Asia/Hong_Kong'), + ('Asia/Hovd'), + ('Asia/Irkutsk'), + ('Asia/Istanbul'), + ('Asia/Jakarta'), + ('Asia/Jayapura'), + ('Asia/Jerusalem'), + ('Asia/Kabul'), + ('Asia/Kamchatka'), + ('Asia/Karachi'), + ('Asia/Kashgar'), + ('Asia/Kathmandu'), + ('Asia/Katmandu'), + ('Asia/Kolkata'), + ('Asia/Krasnoyarsk'), + ('Asia/Kuala_Lumpur'), + ('Asia/Kuching'), + ('Asia/Kuwait'), + ('Asia/Macao'), + ('Asia/Macau'), + ('Asia/Magadan'), + ('Asia/Makassar'), + ('Asia/Manila'), + ('Asia/Muscat'), + ('Asia/Nicosia'), + ('Asia/Novosibirsk'), + ('Asia/Omsk'), + ('Asia/Oral'), + ('Asia/Phnom_Penh'), + ('Asia/Pontianak'), + ('Asia/Pyongyang'), + ('Asia/Qatar'), + ('Asia/Qyzylorda'), + ('Asia/Rangoon'), + ('Asia/Riyadh'), + ('Asia/Saigon'), + ('Asia/Sakhalin'), + ('Asia/Samarkand'), + ('Asia/Seoul'), + ('Asia/Shanghai'), + ('Asia/Singapore'), + ('Asia/Taipei'), + ('Asia/Tashkent'), + ('Asia/Tbilisi'), + ('Asia/Tehran'), + ('Asia/Tel_Aviv'), + ('Asia/Thimbu'), + ('Asia/Thimphu'), + ('Asia/Tokyo'), + ('Asia/Ujung_Pandang'), + ('Asia/Ulaanbaatar'), + ('Asia/Ulan_Bator'), + ('Asia/Urumqi'), + ('Asia/Vientiane'), + ('Asia/Vladivostok'), + ('Asia/Yakutsk'), + ('Asia/Yekaterinburg'), + ('Asia/Yerevan'), + ('Atlantic/Azores'), + ('Atlantic/Bermuda'), + ('Atlantic/Canary'), + ('Atlantic/Cape_Verde'), + ('Atlantic/Faeroe'), + ('Atlantic/Faroe'), + ('Atlantic/Jan_Mayen'), + ('Atlantic/Madeira'), + ('Atlantic/Reykjavik'), + ('Atlantic/South_Georgia'), + ('Atlantic/St_Helena'), + ('Atlantic/Stanley'), + ('Australia/ACT'), + ('Australia/Adelaide'), + ('Australia/Brisbane'), + ('Australia/Broken_Hill'), + ('Australia/Canberra'), + ('Australia/Currie'), + ('Australia/Darwin'), + ('Australia/Eucla'), + ('Australia/Hobart'), + ('Australia/LHI'), + ('Australia/Lindeman'), + ('Australia/Lord_Howe'), + ('Australia/Melbourne'), + ('Australia/North'), + ('Australia/NSW'), + ('Australia/Perth'), + ('Australia/Queensland'), + ('Australia/South'), + ('Australia/Sydney'), + ('Australia/Tasmania'), + ('Australia/Victoria'), + ('Australia/West'), + ('Australia/Yancowinna'), + ('Europe/Amsterdam'), + ('Europe/Andorra'), + ('Europe/Athens'), + ('Europe/Belfast'), + ('Europe/Belgrade'), + ('Europe/Berlin'), + ('Europe/Bratislava'), + ('Europe/Brussels'), + ('Europe/Bucharest'), + ('Europe/Budapest'), + ('Europe/Chisinau'), + ('Europe/Copenhagen'), + ('Europe/Dublin'), + ('Europe/Gibraltar'), + ('Europe/Guernsey'), + ('Europe/Helsinki'), + ('Europe/Isle_of_Man'), + ('Europe/Istanbul'), + ('Europe/Jersey'), + ('Europe/Kaliningrad'), + ('Europe/Kiev'), + ('Europe/Lisbon'), + ('Europe/Ljubljana'), + ('Europe/London'), + ('Europe/Luxembourg'), + ('Europe/Madrid'), + ('Europe/Malta'), + ('Europe/Mariehamn'), + ('Europe/Minsk'), + ('Europe/Monaco'), + ('Europe/Moscow'), + ('Europe/Nicosia'), + ('Europe/Oslo'), + ('Europe/Paris'), + ('Europe/Podgorica'), + ('Europe/Prague'), + ('Europe/Riga'), + ('Europe/Rome'), + ('Europe/Samara'), + ('Europe/San_Marino'), + ('Europe/Sarajevo'), + ('Europe/Simferopol'), + ('Europe/Skopje'), + ('Europe/Sofia'), + ('Europe/Stockholm'), + ('Europe/Tallinn'), + ('Europe/Tirane'), + ('Europe/Tiraspol'), + ('Europe/Uzhgorod'), + ('Europe/Vaduz'), + ('Europe/Vatican'), + ('Europe/Vienna'), + ('Europe/Vilnius'), + ('Europe/Volgograd'), + ('Europe/Warsaw'), + ('Europe/Zagreb'), + ('Europe/Zaporozhye'), + ('Europe/Zurich'), + ('Indian/Antananarivo'), + ('Indian/Chagos'), + ('Indian/Christmas'), + ('Indian/Cocos'), + ('Indian/Comoro'), + ('Indian/Kerguelen'), + ('Indian/Mahe'), + ('Indian/Maldives'), + ('Indian/Mauritius'), + ('Indian/Mayotte'), + ('Indian/Reunion'), + ('Pacific/Apia'), + ('Pacific/Auckland'), + ('Pacific/Chatham'), + ('Pacific/Easter'), + ('Pacific/Efate'), + ('Pacific/Enderbury'), + ('Pacific/Fakaofo'), + ('Pacific/Fiji'), + ('Pacific/Funafuti'), + ('Pacific/Galapagos'), + ('Pacific/Gambier'), + ('Pacific/Guadalcanal'), + ('Pacific/Guam'), + ('Pacific/Honolulu'), + ('Pacific/Johnston'), + ('Pacific/Kiritimati'), + ('Pacific/Kosrae'), + ('Pacific/Kwajalein'), + ('Pacific/Majuro'), + ('Pacific/Marquesas'), + ('Pacific/Midway'), + ('Pacific/Nauru'), + ('Pacific/Niue'), + ('Pacific/Norfolk'), + ('Pacific/Noumea'), + ('Pacific/Pago_Pago'), + ('Pacific/Palau'), + ('Pacific/Pitcairn'), + ('Pacific/Ponape'), + ('Pacific/Port_Moresby'), + ('Pacific/Rarotonga'), + ('Pacific/Saipan'), + ('Pacific/Samoa'), + ('Pacific/Tahiti'), + ('Pacific/Tarawa'), + ('Pacific/Tongatapu'), + ('Pacific/Truk'), + ('Pacific/Wake'), + ('Pacific/Wallis'), + ('Pacific/Yap'), + ('Brazil/Acre'), + ('Brazil/DeNoronha'), + ('Brazil/East'), + ('Brazil/West'), + ('Canada/Atlantic'), + ('Canada/Central'), + ('Canada/East-Saskatchewan'), + ('Canada/Eastern'), + ('Canada/Mountain'), + ('Canada/Newfoundland'), + ('Canada/Pacific'), + ('Canada/Saskatchewan'), + ('Canada/Yukon'), + ('CET'), + ('Chile/Continental'), + ('Chile/EasterIsland'), + ('CST6CDT'), + ('Cuba'), + ('EET'), + ('Egypt'), + ('Eire'), + ('EST'), + ('EST5EDT'), + ('Etc/GMT'), + ('Etc/GMT+0'), + ('Etc/GMT+1'), + ('Etc/GMT+10'), + ('Etc/GMT+11'), + ('Etc/GMT+12'), + ('Etc/GMT+2'), + ('Etc/GMT+3'), + ('Etc/GMT+4'), + ('Etc/GMT+5'), + ('Etc/GMT+6'), + ('Etc/GMT+7'), + ('Etc/GMT+8'), + ('Etc/GMT+9'), + ('Etc/GMT-0'), + ('Etc/GMT-1'), + ('Etc/GMT-10'), + ('Etc/GMT-11'), + ('Etc/GMT-12'), + ('Etc/GMT-13'), + ('Etc/GMT-14'), + ('Etc/GMT-2'), + ('Etc/GMT-3'), + ('Etc/GMT-4'), + ('Etc/GMT-5'), + ('Etc/GMT-6'), + ('Etc/GMT-7'), + ('Etc/GMT-8'), + ('Etc/GMT-9'), + ('Etc/GMT0'), + ('Etc/Greenwich'), + ('Etc/UCT'), + ('Etc/Universal'), + ('Etc/UTC'), + ('Etc/Zulu'), + ('Factory'), + ('GB'), + ('GB-Eire'), + ('GMT'), + ('GMT+0'), + ('GMT-0'), + ('GMT0'), + ('Greenwich'), + ('Hongkong'), + ('HST'), + ('Iceland'), + ('Iran'), + ('Israel'), + ('Jamaica'), + ('Japan'), + ('Kwajalein'), + ('Libya'), + ('MET'), + ('Mexico/BajaNorte'), + ('Mexico/BajaSur'), + ('Mexico/General'), + ('MST'), + ('MST7MDT'), + ('Navajo'), + ('NZ'), + ('NZ-CHAT'), + ('Poland'), + ('Portugal'), + ('PRC'), + ('PST8PDT'), + ('ROC'), + ('ROK'), + ('Singapore'), + ('Turkey'), + ('UCT'), + ('Universal'), + ('US/Alaska'), + ('US/Aleutian'), + ('US/Arizona'), + ('US/Central'), + ('US/East-Indiana'), + ('US/Eastern'), + ('US/Hawaii'), + ('US/Indiana-Starke'), + ('US/Michigan'), + ('US/Mountain'), + ('US/Pacific'), + ('US/Pacific-New'), + ('US/Samoa'), + ('UTC'), + ('W-SU'), + ('WET'), + ('Zulu'); + +DELETE FROM `PREFIX_discount_category` +WHERE `id_discount` IN ( + SELECT `id_discount` FROM ( + SELECT dc.`id_discount` + FROM `PREFIX_discount_category` dc + LEFT JOIN `PREFIX_discount`d ON (d.`id_discount` = dc.`id_discount`) + WHERE d.`id_discount` IS NULL + GROUP BY dc.`id_discount`) discount_category_tmp + ); + +DELETE FROM `PREFIX_configuration` WHERE `name` = 'PS_DISPLAY_WITHOUT_TAX'; + +INSERT INTO PREFIX_hook (`name`, `title`, `description`, `position`) VALUES + ('updateCarrier', 'Carrier update', 'This hook is called when a carrier is updated', 0); diff --git a/install-dev/sql/upgrade/1.2.0.3.sql b/install-dev/sql/upgrade/1.2.0.3.sql new file mode 100644 index 000000000..9f6f078ee --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.3.sql @@ -0,0 +1,33 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +ALTER TABLE `PREFIX_customization` + ADD `quantity_refunded` INT NOT NULL DEFAULT '0'; +ALTER TABLE `PREFIX_customization` + ADD `quantity_returned` INT NOT NULL DEFAULT '0'; + +ALTER TABLE `PREFIX_alias` + CHANGE `id_alias` `id_alias` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT; +ALTER TABLE `PREFIX_attribute_impact` + CHANGE `id_attribute_impact` `id_attribute_impact` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT; +ALTER TABLE `PREFIX_customization` + CHANGE `id_customization` `id_customization` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT; +ALTER TABLE `PREFIX_customization_field` + CHANGE `id_customization_field` `id_customization_field` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT; +ALTER TABLE `PREFIX_subdomain` + CHANGE `id_subdomain` `id_subdomain` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT; + + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +INSERT INTO `PREFIX_search_engine` (`server`,`getvar`) VALUES + ('bing.com','q'); + +INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook`, `position`) VALUES + (19, 9, 1); + diff --git a/install-dev/sql/upgrade/1.2.0.4.sql b/install-dev/sql/upgrade/1.2.0.4.sql new file mode 100644 index 000000000..2b4f66a32 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.4.sql @@ -0,0 +1,10 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + diff --git a/install-dev/sql/upgrade/1.2.0.5.sql b/install-dev/sql/upgrade/1.2.0.5.sql new file mode 100644 index 000000000..7512ab24a --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.5.sql @@ -0,0 +1,17 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +UPDATE `PREFIX_order_state_lang` +SET `name` = 'Shipped' +WHERE `id_order_state` = 4 AND `id_lang` = 1; + +UPDATE `PREFIX_order_state_lang` SET `template` = 'shipped' WHERE `id_order_state` = 4 AND `template` = 'shipping'; + +/* PHP:reorderpositions(); */; \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.2.0.6.sql b/install-dev/sql/upgrade/1.2.0.6.sql new file mode 100644 index 000000000..fc88820b8 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.6.sql @@ -0,0 +1,14 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +ALTER TABLE `PREFIX_configuration` DROP INDEX `configuration_name`; +ALTER TABLE `PREFIX_order_detail` ADD `product_quantity_in_stock` INT(10) NOT NULL DEFAULT 0 AFTER `product_quantity`; +ALTER TABLE `PREFIX_order_detail` ADD `product_quantity_reinjected` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `product_quantity_return`; + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ +UPDATE `PREFIX_product` SET `out_of_stock` = 0 WHERE `id_product` IN ((SELECT `id_product` FROM `PREFIX_product_download`)); diff --git a/install-dev/sql/upgrade/1.2.0.7.sql b/install-dev/sql/upgrade/1.2.0.7.sql new file mode 100644 index 000000000..5cd1d4109 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.7.sql @@ -0,0 +1,12 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +/* PHP:update_modules_sql(); */; diff --git a/install-dev/sql/upgrade/1.2.0.8.sql b/install-dev/sql/upgrade/1.2.0.8.sql new file mode 100644 index 000000000..eeda18cd2 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.0.8.sql @@ -0,0 +1,10 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ diff --git a/install-dev/sql/upgrade/1.2.1.0.sql b/install-dev/sql/upgrade/1.2.1.0.sql new file mode 100644 index 000000000..d11032a29 --- /dev/null +++ b/install-dev/sql/upgrade/1.2.1.0.sql @@ -0,0 +1,16 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +INSERT INTO PREFIX_configuration (name, value, date_add, date_upd) VALUES ('PS_THEME_V11', 0, NOW(), NOW()); + +/* PHP */ +/* PHP:update_carrier_url(); */; +/* PHP:moduleReinstaller('blocksearch'); */; diff --git a/install-dev/sql/upgrade/1.2.2.0.sql b/install-dev/sql/upgrade/1.2.2.0.sql new file mode 100644 index 000000000..27e0498df --- /dev/null +++ b/install-dev/sql/upgrade/1.2.2.0.sql @@ -0,0 +1,6 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_discount_category` ADD INDEX ( `id_discount` ); + +DELETE FROM `PREFIX_delivery` WHERE `id_range_weight` != NULL AND `id_range_weight` NOT IN (SELECT `id_range_weight` FROM `PREFIX_range_weight`); +DELETE FROM `PREFIX_delivery` WHERE `id_range_price` != NULL AND `id_range_weight` NOT IN (SELECT `id_range_price` FROM `PREFIX_range_price`); diff --git a/install-dev/sql/upgrade/1.2.3.0.sql b/install-dev/sql/upgrade/1.2.3.0.sql new file mode 100644 index 000000000..3f288763f --- /dev/null +++ b/install-dev/sql/upgrade/1.2.3.0.sql @@ -0,0 +1,3 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_category_product` ADD INDEX (`id_product`); diff --git a/install-dev/sql/upgrade/1.2.4.0.sql b/install-dev/sql/upgrade/1.2.4.0.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.2.4.0.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.2.5.0.sql b/install-dev/sql/upgrade/1.2.5.0.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.2.5.0.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.3.0.1.sql b/install-dev/sql/upgrade/1.3.0.1.sql new file mode 100644 index 000000000..be84fc456 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.1.sql @@ -0,0 +1,92 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +ALTER TABLE `PREFIX_product` +CHANGE `reduction_from` `reduction_from` DATE NOT NULL DEFAULT '1970-01-01', +CHANGE `reduction_to` `reduction_to` DATE NOT NULL DEFAULT '1970-01-01'; + +ALTER TABLE `PREFIX_order_detail` CHANGE `tax_rate` `tax_rate` DECIMAL(10, 3) NOT NULL DEFAULT '0.000'; +ALTER TABLE `PREFIX_group` ADD `price_display_method` TINYINT NOT NULL DEFAULT 0 AFTER `reduction`; + +CREATE TABLE `PREFIX_carrier_group` ( + `id_carrier` int(10) unsigned NOT NULL, + `id_group` int(10) unsigned NOT NULL, + UNIQUE KEY `id_carrier` (`id_carrier`,`id_group`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_country` ADD `need_identification_number` TINYINT( 1 ) NOT NULL; +ALTER TABLE `PREFIX_customer` ADD `dni` VARCHAR( 16 ) NULL AFTER `firstname`; + +ALTER TABLE `PREFIX_image` ADD INDEX `product_position` (`id_product`, `position`); +ALTER TABLE `PREFIX_hook_module` ADD INDEX `id_module` (`id_module`); +ALTER TABLE `PREFIX_customer` ADD INDEX `id_customer_passwd` (`id_customer`, `passwd`); +ALTER TABLE `PREFIX_tag` ADD INDEX `id_lang` (`id_lang`); +ALTER TABLE `PREFIX_customer_group` ADD INDEX `id_customer` (`id_customer`); +ALTER TABLE `PREFIX_category_group` ADD INDEX `id_category` (`id_category`); +ALTER TABLE `PREFIX_image` ADD INDEX `id_product_cover` (`id_product`, `cover`); +ALTER TABLE `PREFIX_employee` ADD INDEX `id_employee_passwd` (`id_employee`, `passwd`); +ALTER TABLE `PREFIX_product_attribute` ADD INDEX `product_default` (`id_product`, `default_on`); +ALTER TABLE `PREFIX_product_download` ADD INDEX `product_active` (`id_product`, `active`); +ALTER TABLE `PREFIX_tab` ADD INDEX `class_name` (`class_name`); +ALTER TABLE `PREFIX_module_currency` ADD INDEX `id_module` (`id_module`); +ALTER TABLE `PREFIX_product_attribute_combination` ADD INDEX `id_product_attribute` (`id_product_attribute`); +ALTER TABLE `PREFIX_orders` ADD INDEX `invoice_number` (`invoice_number`); +ALTER TABLE `PREFIX_product_tag` ADD INDEX `id_tag` (`id_tag`); +ALTER TABLE `PREFIX_cms_lang` CHANGE `id_cms` `id_cms` INT(10) UNSIGNED NOT NULL; +ALTER TABLE `PREFIX_tax` CHANGE `rate` `rate` DECIMAL(10, 3) NOT NULL; + +ALTER TABLE `PREFIX_order_detail` ADD `discount_quantity_applied` TINYINT(1) NOT NULL DEFAULT 0 AFTER `ecotax`; +ALTER TABLE `PREFIX_orders` ADD `total_products_wt` DECIMAL(10, 2) NOT NULL AFTER `total_products`; + +/* ##################################### */ +/* CONTENTS */ +/* ##################################### */ + +UPDATE `PREFIX_group` SET `price_display_method` = (SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'PS_PRICE_DISPLAY'); + +UPDATE `PREFIX_configuration` +SET `value` = ROUND(value / (1 + ( + SELECT rate FROM ( + SELECT t.`rate`, COUNT(*) n + FROM `PREFIX_orders` o + LEFT JOIN `PREFIX_carrier` c ON (o.`id_carrier` = c.`id_carrier`) + LEFT JOIN `PREFIX_tax` t ON (t.`id_tax` = c.`id_tax`) + WHERE c.`deleted` = 0 + AND c.`shipping_handling` = 1 + GROUP BY o.`id_carrier` + ORDER BY n DESC + LIMIT 1 + ) myrate +) / 100), 6) +WHERE `name` = 'PS_SHIPPING_HANDLING'; + +DELETE FROM `PREFIX_configuration` WHERE `name` = 'PS_PRICE_DISPLAY'; +DELETE FROM `PREFIX_product_attachment` WHERE `id_product` NOT IN (SELECT `id_product` FROM `PREFIX_product`); +DELETE FROM `PREFIX_discount_quantity` WHERE `id_product` NOT IN (SELECT `id_product` FROM `PREFIX_product`); +DELETE FROM `PREFIX_pack` WHERE `id_product_pack` NOT IN (SELECT `id_product` FROM `PREFIX_product`) OR `id_product_item` NOT IN (SELECT `id_product` FROM `PREFIX_product`); +DELETE FROM `PREFIX_product_sale` WHERE `id_product` NOT IN (SELECT `id_product` FROM `PREFIX_product`); +DELETE FROM `PREFIX_scene_products` WHERE `id_product` NOT IN (SELECT `id_product` FROM `PREFIX_product`); +DELETE FROM `PREFIX_search_index` WHERE `id_product` NOT IN (SELECT `id_product` FROM `PREFIX_product`); +DELETE FROM `PREFIX_search_word` WHERE `id_word` NOT IN (SELECT `id_word` FROM `PREFIX_search_index`); +DELETE FROM `PREFIX_tag` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `PREFIX_lang`); +DELETE FROM `PREFIX_search_word` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `PREFIX_lang`); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PRESTASTORE_LIVE', 1, NOW(), NOW()), +('PS_SHOW_ALL_MODULES', 0, NOW(), NOW()), +('PS_BACKUP_ALL', 0, NOW(), NOW()), +('PS_1_3_UPDATE_DATE', NOW(), NOW(), NOW()), +('PS_PRICE_ROUND_MODE', 2, NOW(), NOW()); +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES +('createAccountTop', 'Block above the form for create an account', NULL , '1'), +('backOfficeHeader', 'Administration panel header', NULL , '0'), +('backOfficeTop', 'Administration panel top hover the tabs', NULL , '1'), +('backOfficeFooter', 'Administration panel footer', NULL , '1'); + +INSERT INTO `PREFIX_carrier_group` (id_carrier, id_group) (SELECT id_carrier, id_group FROM `PREFIX_carrier` c, `PREFIX_group` g WHERE c.active = 1); + +/* PHP */ +/* PHP:convert_product_price(); */; diff --git a/install-dev/sql/upgrade/1.3.0.10.sql b/install-dev/sql/upgrade/1.3.0.10.sql new file mode 100644 index 000000000..5354e7131 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.10.sql @@ -0,0 +1,5 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_order_detail` ADD INDEX `id_order_id_order_detail` (`id_order`, `id_order_detail`); +ALTER TABLE `PREFIX_category_group` ADD INDEX `id_group` (`id_group`); +ALTER TABLE `PREFIX_product` ADD INDEX `date_add` (`date_add`); \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.3.0.2.sql b/install-dev/sql/upgrade/1.3.0.2.sql new file mode 100644 index 000000000..9069781e8 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.2.sql @@ -0,0 +1,147 @@ +SET NAMES 'utf8'; + +/* ##################################### */ +/* STRUCTURE */ +/* ##################################### */ + +ALTER TABLE `PREFIX_product_attachment` +CHANGE `id_product` `id_product` INT(10) UNSIGNED NOT NULL, +CHANGE `id_attachment` `id_attachment` INT(10) UNSIGNED NOT NULL; + +ALTER TABLE `PREFIX_attribute_impact` +CHANGE `id_product` `id_product` INT(11) UNSIGNED NOT NULL, +CHANGE `id_attribute` `id_attribute` INT(11) UNSIGNED NOT NULL; + +ALTER TABLE `PREFIX_block_cms` +CHANGE `id_block` `id_block` INT(10) UNSIGNED NOT NULL, +CHANGE `id_cms` `id_cms` INT(10) UNSIGNED NOT NULL; + +ALTER TABLE `PREFIX_customization` +CHANGE `id_cart` `id_cart` int(10) unsigned NOT NULL, +CHANGE `id_product_attribute` `id_product_attribute` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `PREFIX_customization_field` +CHANGE `id_product` `id_product` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_customization_field_lang` +CHANGE `id_customization_field` `id_customization_field` int(10) unsigned NOT NULL, +CHANGE `id_lang` `id_lang` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_customized_data` +CHANGE `id_customization` `id_customization` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_discount_category` +CHANGE `id_category` `id_category` int(11) unsigned NOT NULL, +CHANGE `id_discount` `id_discount` int(11) unsigned NOT NULL; + +ALTER TABLE `PREFIX_module_group` +CHANGE `id_group` `id_group` int(11) unsigned NOT NULL; + +ALTER TABLE `PREFIX_order_return_detail` +CHANGE `id_customization` `id_customization` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `PREFIX_product_attribute_image` +CHANGE `id_product_attribute` `id_product_attribute` int(10) unsigned NOT NULL, +CHANGE `id_image` `id_image` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_referrer_cache` +CHANGE `id_connections_source` `id_connections_source` int(11) unsigned NOT NULL, +CHANGE `id_referrer` `id_referrer` int(11) unsigned NOT NULL; + +ALTER TABLE `PREFIX_scene_category` +CHANGE `id_scene` `id_scene` int(10) unsigned NOT NULL, +CHANGE `id_category` `id_category` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_scene_lang` +CHANGE `id_scene` `id_scene` int(10) unsigned NOT NULL, +CHANGE `id_lang` `id_lang` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_scene_products` +CHANGE `id_scene` `id_scene` int(10) unsigned NOT NULL, +CHANGE `id_product` `id_product` int(10) unsigned NOT NULL; + +ALTER TABLE `PREFIX_search_index` +CHANGE `id_product` `id_product` int(11) unsigned NOT NULL, +CHANGE `id_word` `id_word` int(11) unsigned NOT NULL; + +ALTER TABLE `PREFIX_state` +CHANGE `id_country` `id_country` int(11) unsigned NOT NULL, +CHANGE `id_zone` `id_zone` int(11) unsigned NOT NULL; + +ALTER TABLE `PREFIX_category_lang` +CHANGE `meta_keywords` `meta_keywords` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, +CHANGE `meta_description` `meta_description` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ; + +ALTER TABLE `PREFIX_supplier_lang` +CHANGE `meta_title` `meta_title` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, +CHANGE `meta_keywords` `meta_keywords` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, +CHANGE `meta_description` `meta_description` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ; + +ALTER TABLE `PREFIX_manufacturer_lang` +CHANGE `meta_title` `meta_title` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, +CHANGE `meta_keywords` `meta_keywords` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, +CHANGE `meta_description` `meta_description` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ; + +ALTER TABLE `PREFIX_meta_lang` +CHANGE `title` `title` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ; + +/* ##################################### */ +/* PRICE RANGE */ +/* ##################################### */ + +ALTER TABLE `PREFIX_attribute_impact` CHANGE `price` `price` DECIMAL(17, 2) NOT NULL; + +ALTER TABLE `PREFIX_delivery` CHANGE `price` `price` DECIMAL(17, 2) NOT NULL; + +ALTER TABLE `PREFIX_discount` CHANGE `value` `value` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `minimal` `minimal` DECIMAL(17, 2) NULL DEFAULT NULL; + +ALTER TABLE `PREFIX_discount_quantity` CHANGE `value` `value` DECIMAL(17, 2) UNSIGNED NOT NULL; + +ALTER TABLE `PREFIX_group` CHANGE `reduction` `reduction` DECIMAL(17, 2) NOT NULL DEFAULT '0.00'; + +ALTER TABLE `PREFIX_orders` CHANGE `total_discounts` `total_discounts` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `total_paid` `total_paid` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `total_paid_real` `total_paid_real` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `total_products` `total_products` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `total_products_wt` `total_products_wt` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `total_shipping` `total_shipping` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `total_wrapping` `total_wrapping` DECIMAL(17, 2) NOT NULL DEFAULT '0.00'; + +ALTER TABLE `PREFIX_order_detail` CHANGE `product_price` `product_price` DECIMAL(20, 6) NOT NULL DEFAULT '0.000000', +CHANGE `product_quantity_discount` `product_quantity_discount` DECIMAL(20, 6) NOT NULL DEFAULT '0.000000', +CHANGE `ecotax` `ecotax` decimal(17,2) NOT NULL default '0.00'; + +ALTER TABLE `PREFIX_order_discount` CHANGE `value` `value` DECIMAL(17, 2) NOT NULL DEFAULT '0.00'; + +ALTER TABLE `PREFIX_product` CHANGE `price` `price` DECIMAL(20, 6) NOT NULL DEFAULT '0.000000', +CHANGE `wholesale_price` `wholesale_price` DECIMAL(20, 6) NOT NULL DEFAULT '0.000000', +CHANGE `ecotax` `ecotax` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `reduction_price` `reduction_price` DECIMAL(17, 2) NULL DEFAULT NULL; + +ALTER TABLE `PREFIX_product_attribute` CHANGE `wholesale_price` `wholesale_price` DECIMAL(20, 6) NOT NULL DEFAULT '0.000000', +CHANGE `price` `price` DECIMAL(17, 2) NOT NULL DEFAULT '0.00', +CHANGE `ecotax` `ecotax` DECIMAL(17, 2) NOT NULL DEFAULT '0.00'; + +ALTER TABLE `PREFIX_range_price` CHANGE `delimiter1` `delimiter1` DECIMAL(20, 6) NOT NULL, +CHANGE `delimiter2` `delimiter2` DECIMAL(20, 6) NOT NULL; + +ALTER TABLE `PREFIX_range_weight` CHANGE `delimiter1` `delimiter1` DECIMAL(20, 6) NOT NULL, +CHANGE `delimiter2` `delimiter2` DECIMAL(20, 6) NOT NULL; + +ALTER TABLE `PREFIX_referrer` CHANGE `cache_sales` `cache_sales` DECIMAL(17, 2) NULL DEFAULT NULL; + +UPDATE `PREFIX_configuration` +SET `value` = IFNULL(ROUND(value / (1 + ( + SELECT `rate` + FROM `PREFIX_tax` + WHERE `id_tax` = ( + SELECT `value` + FROM ( + SELECT `value` + FROM `PREFIX_configuration` + WHERE `name` = 'PS_GIFT_WRAPPING_TAX' + )tmp + ) +) / 100), 2), 0) +WHERE `name` = 'PS_GIFT_WRAPPING_PRICE'; diff --git a/install-dev/sql/upgrade/1.3.0.3.sql b/install-dev/sql/upgrade/1.3.0.3.sql new file mode 100644 index 000000000..7adb283eb --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.3.sql @@ -0,0 +1,15 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_tab` CHANGE `id_parent` `id_parent` INT(11) NOT NULL; +INSERT INTO `PREFIX_tab` (`id_tab`, `class_name`, `id_parent`, `position`) +VALUES (43, 'AdminSearch', -1, 0) +ON DUPLICATE KEY +UPDATE `id_parent` = -1; + +ALTER TABLE `PREFIX_search_engine` ADD UNIQUE (`server`,`getvar`); +REPLACE INTO `PREFIX_search_engine` (`server`,`getvar`) +VALUES ('google','q'),('aol','q'),('yandex','text'),('ask.com','q'),('nhl.com','q'),('yahoo','p'),('baidu','wd'), +('lycos','query'),('exalead','q'),('search.live','q'),('voila','rdata'),('altavista','q'),('bing','q'),('daum','q'), +('eniro','search_word'),('naver','query'),('msn','q'),('netscape','query'),('cnn','query'),('about','terms'),('mamma','query'), +('alltheweb','q'),('virgilio','qs'),('alice','qs'),('najdi','q'),('mama','query'),('seznam','q'),('onet','qt'),('szukacz','q'), +('yam','k'),('pchome','q'),('kvasir','q'),('sesam','q'),('ozu','q'),('terra','query'),('mynet','q'),('ekolay','q'),('rambler','words'); \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.3.0.4.sql b/install-dev/sql/upgrade/1.3.0.4.sql new file mode 100644 index 000000000..46ad8ccb4 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.4.sql @@ -0,0 +1,83 @@ +SET NAMES 'utf8'; + +DELETE FROM `PREFIX_tax_state` WHERE `id_tax` NOT IN (SELECT `id_tax` FROM `PREFIX_tax`); + +ALTER TABLE `PREFIX_product` CHANGE `reduction_from` `reduction_from` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00', +CHANGE `reduction_to` `reduction_to` DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00'; + +UPDATE `PREFIX_product` +SET `reduction_to` = DATE_ADD(reduction_to, INTERVAL 1 DAY) +WHERE `reduction_from` != `reduction_to`; + +ALTER TABLE `PREFIX_discount` ADD `id_currency` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `id_customer`; +UPDATE `PREFIX_discount` SET `id_currency` = (SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'PS_CURRENCY_DEFAULT' LIMIT 1) WHERE `id_discount_type` = 2; + +ALTER TABLE `PREFIX_address` ADD INDEX (id_country); +ALTER TABLE `PREFIX_address` ADD INDEX (id_state); +ALTER TABLE `PREFIX_address` ADD INDEX (id_manufacturer); +ALTER TABLE `PREFIX_address` ADD INDEX (id_supplier); +ALTER TABLE `PREFIX_carrier` ADD INDEX (id_tax); +ALTER TABLE `PREFIX_cart` ADD INDEX (id_address_delivery); +ALTER TABLE `PREFIX_cart` ADD INDEX (id_address_invoice); +ALTER TABLE `PREFIX_cart` ADD INDEX (id_carrier); +ALTER TABLE `PREFIX_cart` ADD INDEX (id_lang); +ALTER TABLE `PREFIX_cart` ADD INDEX (id_currency); +ALTER TABLE `PREFIX_cart_product` ADD INDEX (id_product_attribute); +ALTER TABLE `PREFIX_connections` ADD INDEX (id_page); +ALTER TABLE `PREFIX_customer` ADD INDEX (id_gender); +ALTER TABLE `PREFIX_customization` ADD INDEX (id_product_attribute); +ALTER TABLE `PREFIX_customization_field` ADD INDEX (id_product); +ALTER TABLE `PREFIX_delivery` ADD INDEX (id_range_price); +ALTER TABLE `PREFIX_delivery` ADD INDEX (id_range_weight); +ALTER TABLE `PREFIX_discount` ADD INDEX (id_discount_type); +ALTER TABLE `PREFIX_discount_quantity` ADD INDEX (id_discount_type); +ALTER TABLE `PREFIX_discount_quantity` ADD INDEX (id_product); +ALTER TABLE `PREFIX_discount_quantity` ADD INDEX (id_product_attribute); +ALTER TABLE `PREFIX_employee` ADD INDEX (id_profile); +ALTER TABLE `PREFIX_feature_product` ADD INDEX (id_feature_value); +ALTER TABLE `PREFIX_guest` ADD INDEX (id_operating_system); +ALTER TABLE `PREFIX_guest` ADD INDEX (id_web_browser); +ALTER TABLE `PREFIX_hook_module_exceptions` ADD INDEX (id_module); +ALTER TABLE `PREFIX_hook_module_exceptions` ADD INDEX (id_hook); +ALTER TABLE `PREFIX_message` ADD INDEX (id_cart); +ALTER TABLE `PREFIX_message` ADD INDEX (id_customer); +ALTER TABLE `PREFIX_message` ADD INDEX (id_employee); +ALTER TABLE `PREFIX_order_detail` ADD INDEX (product_attribute_id); +ALTER TABLE `PREFIX_order_discount` ADD INDEX (id_discount); +ALTER TABLE `PREFIX_order_history` ADD INDEX (id_employee); +ALTER TABLE `PREFIX_order_history` ADD INDEX (id_order_state); +ALTER TABLE `PREFIX_order_return` ADD INDEX (id_order); +ALTER TABLE `PREFIX_order_slip` ADD INDEX (id_order); +ALTER TABLE `PREFIX_orders` ADD INDEX (id_carrier); +ALTER TABLE `PREFIX_orders` ADD INDEX (id_lang); +ALTER TABLE `PREFIX_orders` ADD INDEX (id_currency); +ALTER TABLE `PREFIX_orders` ADD INDEX (id_address_delivery); +ALTER TABLE `PREFIX_orders` ADD INDEX (id_address_invoice); +ALTER TABLE `PREFIX_product` ADD INDEX (id_tax); +ALTER TABLE `PREFIX_product` ADD INDEX (id_category_default); +ALTER TABLE `PREFIX_product` ADD INDEX (id_color_default); +ALTER TABLE `PREFIX_state` ADD INDEX (id_country); +ALTER TABLE `PREFIX_state` ADD INDEX (id_zone); +ALTER TABLE `PREFIX_tab` ADD INDEX (id_parent); +ALTER TABLE `PREFIX_cart` ADD INDEX (id_guest); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) +( + SELECT 'MA_LAST_QTIES', '3', NOW(), NOW() + FROM `PREFIX_module` WHERE `name` = 'mailalerts' +); + +ALTER TABLE `PREFIX_customer` ADD `id_default_group` INT UNSIGNED NOT NULL DEFAULT '1' AFTER `id_gender`; + +UPDATE `PREFIX_customer` c SET `id_default_group` = ( + SELECT ( + IFNULL( + (SELECT g.`id_group` + FROM `PREFIX_group` g + LEFT JOIN `PREFIX_customer_group` cg ON (cg.`id_group` = g.`id_group`) + WHERE g.`reduction` > 0 AND cg.`id_customer` = c.`id_customer` + ORDER BY g.`reduction` + LIMIT 1) + , 1) + ) +); diff --git a/install-dev/sql/upgrade/1.3.0.5.sql b/install-dev/sql/upgrade/1.3.0.5.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.5.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.3.0.6.sql b/install-dev/sql/upgrade/1.3.0.6.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.6.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.3.0.7.sql b/install-dev/sql/upgrade/1.3.0.7.sql new file mode 100755 index 000000000..158212ef5 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.7.sql @@ -0,0 +1,3 @@ +SET NAMES 'utf8'; + +/* PHP:setAllGroupsOnHomeCategory(); */; diff --git a/install-dev/sql/upgrade/1.3.0.8.sql b/install-dev/sql/upgrade/1.3.0.8.sql new file mode 100644 index 000000000..e988c8279 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.8.sql @@ -0,0 +1,5 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_product_attribute` ADD INDEX `id_product_id_product_attribute` (`id_product_attribute` , `id_product`); +ALTER TABLE `PREFIX_image_lang` ADD INDEX `id_image` (`id_image`); + diff --git a/install-dev/sql/upgrade/1.3.0.9.sql b/install-dev/sql/upgrade/1.3.0.9.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.3.0.9.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.3.1.1.sql b/install-dev/sql/upgrade/1.3.1.1.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.3.1.1.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.3.2.1.sql b/install-dev/sql/upgrade/1.3.2.1.sql new file mode 100755 index 000000000..da21b32f2 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.2.1.sql @@ -0,0 +1,3 @@ +SET NAMES 'utf8'; + + diff --git a/install-dev/sql/upgrade/1.3.2.2.sql b/install-dev/sql/upgrade/1.3.2.2.sql new file mode 100755 index 000000000..180ac77b6 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.2.2.sql @@ -0,0 +1,27 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_order_detail` ADD `reduction_percent` DECIMAL(10, 2) NOT NULL AFTER `product_price`; +ALTER TABLE `PREFIX_order_detail` ADD `reduction_amount` DECIMAL(20, 6) NOT NULL AFTER `reduction_percent`; + +ALTER TABLE `PREFIX_country` CHANGE `need_identification_number` `need_identification_number` TINYINT(1) NOT NULL DEFAULT '0'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_1_3_2_UPDATE_DATE', NOW(), NOW(), NOW()); + +ALTER TABLE `PREFIX_search_index` CHANGE `weight` `weight` SMALLINT(4) unsigned NOT NULL DEFAULT '1'; + +ALTER TABLE `PREFIX_image` DROP INDEX `product_position`, ADD UNIQUE `product_position` (`id_product`, `position`); + +ALTER TABLE `PREFIX_zone` DROP `enabled`; + +SET @id_hook = (SELECT id_hook FROM PREFIX_hook WHERE name = 'backOfficeHeader'); +SET @position = (SELECT IFNULL(MAX(position),0)+1 FROM PREFIX_hook_module WHERE id_hook = @id_hook); +INSERT IGNORE INTO PREFIX_hook_module (id_hook, id_module, position) VALUES (@id_hook, (SELECT id_module FROM PREFIX_module WHERE name = 'statsbestcustomers'), @position); +SET @position = @position + 1; +INSERT IGNORE INTO PREFIX_hook_module (id_hook, id_module, position) VALUES (@id_hook, (SELECT id_module FROM PREFIX_module WHERE name = 'statsbestproducts'), @position); +SET @position = @position + 1; +INSERT IGNORE INTO PREFIX_hook_module (id_hook, id_module, position) VALUES (@id_hook, (SELECT id_module FROM PREFIX_module WHERE name = 'statsbestvouchers'), @position); +SET @position = @position + 1; +INSERT IGNORE INTO PREFIX_hook_module (id_hook, id_module, position) VALUES (@id_hook, (SELECT id_module FROM PREFIX_module WHERE name = 'statsbestcategories'), @position); +SET @position = @position + 1; +INSERT IGNORE INTO PREFIX_hook_module (id_hook, id_module, position) VALUES (@id_hook, (SELECT id_module FROM PREFIX_module WHERE name = 'statsbestcarriers'), @position); diff --git a/install-dev/sql/upgrade/1.3.2.3.sql b/install-dev/sql/upgrade/1.3.2.3.sql new file mode 100755 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.3.2.3.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.3.3.0.sql b/install-dev/sql/upgrade/1.3.3.0.sql new file mode 100644 index 000000000..a8c43bb44 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.3.0.sql @@ -0,0 +1,8 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_order_detail` ADD `group_reduction` DECIMAL(10, 2) NOT NULL AFTER `reduction_amount`; +ALTER TABLE `PREFIX_order_detail` ADD `ecotax_tax_rate` DECIMAL(5, 3) NOT NULL AFTER `ecotax`; +ALTER TABLE `PREFIX_product` CHANGE `ecotax` `ecotax` DECIMAL(21, 6) NOT NULL DEFAULT '0.00'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) SELECT 'PS_LOCALE_LANGUAGE', l.`iso_code`, NOW(), NOW() FROM `PREFIX_configuration` c INNER JOIN `PREFIX_lang` l ON (l.`id_lang` = c.`value`) WHERE c.`name` = 'PS_LANG_DEFAULT'; +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) SELECT 'PS_LOCALE_COUNTRY', co.`iso_code`, NOW(), NOW() FROM `PREFIX_configuration` c INNER JOIN `PREFIX_country` co ON (co.`id_country` = c.`value`) WHERE c.`name` = 'PS_COUNTRY_DEFAULT'; diff --git a/install-dev/sql/upgrade/1.3.4.0.sql b/install-dev/sql/upgrade/1.3.4.0.sql new file mode 100644 index 000000000..22c382dd4 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.4.0.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.3.5.0.sql b/install-dev/sql/upgrade/1.3.5.0.sql new file mode 100644 index 000000000..22c382dd4 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.5.0.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.3.6.0.sql b/install-dev/sql/upgrade/1.3.6.0.sql new file mode 100755 index 000000000..083171282 --- /dev/null +++ b/install-dev/sql/upgrade/1.3.6.0.sql @@ -0,0 +1,3 @@ +SET NAMES 'utf8'; + +/* PHP:update_products_ecotax_v133(); */; diff --git a/install-dev/sql/upgrade/1.3.7.0.sql b/install-dev/sql/upgrade/1.3.7.0.sql new file mode 100644 index 000000000..0b4cf1b2f --- /dev/null +++ b/install-dev/sql/upgrade/1.3.7.0.sql @@ -0,0 +1 @@ +SET NAMES 'utf8'; diff --git a/install-dev/sql/upgrade/1.4.0.1.sql b/install-dev/sql/upgrade/1.4.0.1.sql new file mode 100644 index 000000000..525c317c0 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.1.sql @@ -0,0 +1,2 @@ +SET NAMES 'utf8'; + diff --git a/install-dev/sql/upgrade/1.4.0.10.sql b/install-dev/sql/upgrade/1.4.0.10.sql new file mode 100644 index 000000000..64833005c --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.10.sql @@ -0,0 +1,20 @@ +SET NAMES 'utf8'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_CATALOG_MODE', '0', NOW(), NOW()); + +ALTER TABLE `PREFIX_specific_price` DROP `priority`; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_GEOLOCATION_WHITELIST', '209.185.108;209.185.253;209.85.238;209.85.238.11;209.85.238.4;216.239.33.96;216.239.33.97;216.239.33.98;216.239.33.99;216.239.37.98;216.239.37.99;216.239.39.98;216.239.39.99;216.239.41.96;216.239.41.97;216.239.41.98;216.239.41.99;216.239.45.4;216.239.46;216.239.51.96;216.239.51.97;216.239.51.98;216.239.51.99;216.239.53.98;216.239.53.99;216.239.57.96;216.239.57.97;216.239.57.98;216.239.57.99;216.239.59.98;216.239.59.99;216.33.229.163;64.233.173.193;64.233.173.194;64.233.173.195;64.233.173.196;64.233.173.197;64.233.173.198;64.233.173.199;64.233.173.200;64.233.173.201;64.233.173.202;64.233.173.203;64.233.173.204;64.233.173.205;64.233.173.206;64.233.173.207;64.233.173.208;64.233.173.209;64.233.173.210;64.233.173.211;64.233.173.212;64.233.173.213;64.233.173.214;64.233.173.215;64.233.173.216;64.233.173.217;64.233.173.218;64.233.173.219;64.233.173.220;64.233.173.221;64.233.173.222;64.233.173.223;64.233.173.224;64.233.173.225;64.233.173.226;64.233.173.227;64.233.173.228;64.233.173.229;64.233.173.230;64.233.173.231;64.233.173.232;64.233.173.233;64.233.173.234;64.233.173.235;64.233.173.236;64.233.173.237;64.233.173.238;64.233.173.239;64.233.173.240;64.233.173.241;64.233.173.242;64.233.173.243;64.233.173.244;64.233.173.245;64.233.173.246;64.233.173.247;64.233.173.248;64.233.173.249;64.233.173.250;64.233.173.251;64.233.173.252;64.233.173.253;64.233.173.254;64.233.173.255;64.68.80;64.68.81;64.68.82;64.68.83;64.68.84;64.68.85;64.68.86;64.68.87;64.68.88;64.68.89;64.68.90.1;64.68.90.10;64.68.90.11;64.68.90.12;64.68.90.129;64.68.90.13;64.68.90.130;64.68.90.131;64.68.90.132;64.68.90.133;64.68.90.134;64.68.90.135;64.68.90.136;64.68.90.137;64.68.90.138;64.68.90.139;64.68.90.14;64.68.90.140;64.68.90.141;64.68.90.142;64.68.90.143;64.68.90.144;64.68.90.145;64.68.90.146;64.68.90.147;64.68.90.148;64.68.90.149;64.68.90.15;64.68.90.150;64.68.90.151;64.68.90.152;64.68.90.153;64.68.90.154;64.68.90.155;64.68.90.156;64.68.90.157;64.68.90.158;64.68.90.159;64.68.90.16;64.68.90.160;64.68.90.161;64.68.90.162;64.68.90.163;64.68.90.164;64.68.90.165;64.68.90.166;64.68.90.167;64.68.90.168;64.68.90.169;64.68.90.17;64.68.90.170;64.68.90.171;64.68.90.172;64.68.90.173;64.68.90.174;64.68.90.175;64.68.90.176;64.68.90.177;64.68.90.178;64.68.90.179;64.68.90.18;64.68.90.180;64.68.90.181;64.68.90.182;64.68.90.183;64.68.90.184;64.68.90.185;64.68.90.186;64.68.90.187;64.68.90.188;64.68.90.189;64.68.90.19;64.68.90.190;64.68.90.191;64.68.90.192;64.68.90.193;64.68.90.194;64.68.90.195;64.68.90.196;64.68.90.197;64.68.90.198;64.68.90.199;64.68.90.2;64.68.90.20;64.68.90.200;64.68.90.201;64.68.90.202;64.68.90.203;64.68.90.204;64.68.90.205;64.68.90.206;64.68.90.207;64.68.90.208;64.68.90.21;64.68.90.22;64.68.90.23;64.68.90.24;64.68.90.25;64.68.90.26;64.68.90.27;64.68.90.28;64.68.90.29;64.68.90.3;64.68.90.30;64.68.90.31;64.68.90.32;64.68.90.33;64.68.90.34;64.68.90.35;64.68.90.36;64.68.90.37;64.68.90.38;64.68.90.39;64.68.90.4;64.68.90.40;64.68.90.41;64.68.90.42;64.68.90.43;64.68.90.44;64.68.90.45;64.68.90.46;64.68.90.47;64.68.90.48;64.68.90.49;64.68.90.5;64.68.90.50;64.68.90.51;64.68.90.52;64.68.90.53;64.68.90.54;64.68.90.55;64.68.90.56;64.68.90.57;64.68.90.58;64.68.90.59;64.68.90.6;64.68.90.60;64.68.90.61;64.68.90.62;64.68.90.63;64.68.90.64;64.68.90.65;64.68.90.66;64.68.90.67;64.68.90.68;64.68.90.69;64.68.90.7;64.68.90.70;64.68.90.71;64.68.90.72;64.68.90.73;64.68.90.74;64.68.90.75;64.68.90.76;64.68.90.77;64.68.90.78;64.68.90.79;64.68.90.8;64.68.90.80;64.68.90.9;64.68.91;64.68.92;66.249.64;66.249.65;66.249.66;66.249.67;66.249.68;66.249.69;66.249.70;66.249.71;66.249.72;66.249.73;66.249.78;66.249.79;72.14.199;8.6.48', NOW(), NOW()); + +ALTER TABLE `PREFIX_address` ADD `dni` VARCHAR(16) NULL AFTER `vat_number`; + +UPDATE `PREFIX_address` a SET `dni` = ( + SELECT `dni` + FROM `PREFIX_customer` c + WHERE c.`id_customer` = a.`id_customer` +); + +ALTER TABLE `PREFIX_customer` DROP `dni`; + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('paymentTop', 'Top of payment page', 'Top of payment page', 0); diff --git a/install-dev/sql/upgrade/1.4.0.11.sql b/install-dev/sql/upgrade/1.4.0.11.sql new file mode 100644 index 000000000..8e73ca69b --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.11.sql @@ -0,0 +1,36 @@ +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) +VALUES +( +'PREFIX_INVOICE_START_NUMBER', +( SELECT `invoice_number` FROM (SELECT GREATEST(`value`, (SELECT CAST(MAX(`invoice_number`) AS CHAR) FROM `PREFIX_orders`)) AS `invoice_number` FROM `PREFIX_configuration` WHERE `name` = 'PREFIX_INVOICE_NUMBER' ) as tmp), +NOW(), +NOW() +); + +DELETE FROM `PREFIX_configuration` WHERE `name` = 'PS_INVOICE_NUMBER'; + +CREATE TABLE `PREFIX_log` ( + `id_log` int(10) unsigned NOT NULL AUTO_INCREMENT, + `severity` tinyint(1) NOT NULL, + `error_code` int(11) DEFAULT NULL, + `message` text NOT NULL, + `object_type` varchar(32) DEFAULT NULL, + `object_id` int(10) unsigned DEFAULT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_log`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_LOGS_BY_EMAIL', '5', NOW(), NOW()); + +ALTER TABLE `PREFIX_tax_rules_group` CHANGE `name` `name` VARCHAR( 50 ) NOT NULL; + +CREATE TABLE `PREFIX_import_match` ( + `id_import_match` int(10) NOT NULL AUTO_INCREMENT, + `name` varchar(32) NOT NULL, + `match` text NOT NULL, + `skip` int(2) NOT NULL, + PRIMARY KEY (`id_import_match`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +/* PHP:add_new_tab(AdminLogs, en:Log|fr:Log|es:Log|de:Log|it:Log, 9); */; diff --git a/install-dev/sql/upgrade/1.4.0.12.sql b/install-dev/sql/upgrade/1.4.0.12.sql new file mode 100644 index 000000000..36f3b024b --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.12.sql @@ -0,0 +1,9 @@ +ALTER TABLE `PREFIX_product` CHANGE `ecotax` `ecotax` DECIMAL( 17, 6 ) NOT NULL DEFAULT '0.00'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_LAST_SHOP_UPDATE', NOW(), NOW(), NOW()); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_STORES_DISPLAY_SITEMAP', 1, NOW(), NOW()); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_COOKIE_CHECKIP', 1, NOW(), NOW()); + +/* PHP:regenerate_level_depth(); */; \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.4.0.13.sql b/install-dev/sql/upgrade/1.4.0.13.sql new file mode 100644 index 000000000..6caee5265 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.13.sql @@ -0,0 +1,3 @@ +SET NAMES 'utf8'; + +/* PHP:regenerate_level_depth(); */; diff --git a/install-dev/sql/upgrade/1.4.0.14.sql b/install-dev/sql/upgrade/1.4.0.14.sql new file mode 100644 index 000000000..5370dea04 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.14.sql @@ -0,0 +1,24 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_tax_rule` DROP PRIMARY KEY ; +ALTER TABLE `PREFIX_tax_rule` ADD `id_tax_rule` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ; +ALTER TABLE `PREFIX_tax_rule` ADD INDEX ( `id_tax` ) ; +ALTER TABLE `PREFIX_tax_rule` ADD INDEX ( `id_tax_rules_group` ) ; + +ALTER TABLE `PREFIX_address` MODIFY `dni` VARCHAR(16) NULL AFTER `vat_number`; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('BLOCKSTORE_IMG', 'store.jpg', NOW(), NOW()), +('PS_STORES_CENTER_LAT', '25.948969', NOW(), NOW()), +('PS_STORES_CENTER_LONG', '-80.226439', NOW(), NOW()); + +/* PHP:add_new_tab(AdminInformation, en:Configuration Information|fr:Informations|es:Informations|it:Informazioni di configurazione|de:Konfigurationsinformationen, 9); */; +/* PHP:add_new_tab(AdminPerformance, de:Leistung|en:Performance|it:Performance|fr:Performances|es:Rendimiento, 8); */; +/* PHP:add_new_tab(AdminCustomerThreads, en:Customer Service|de:Kundenservice|fr:SAV|es:Servicio al cliente|it:Servizio clienti, 29); */; +/* PHP:add_new_tab(AdminWebservice, fr:Service web|es:Web service|en:Webservice|de:Webservice|it:Webservice, 8); */; +/* PHP:add_new_tab(AdminAddonsCatalog, fr:Catalogue de modules et thèmes|de:Module und Themenkatalog|en:Modules & Themes Catalog|it:Moduli & Temi catalogo, 7); */; +/* PHP:add_new_tab(AdminAddonsMyAccount, it:Il mio Account|de:Mein Konto|fr:Mon compte|en:My Account, 7); */; +/* PHP:add_new_tab(AdminThemes, es:Temas|it:Temi|de:Themen|en:Themes|fr:Thèmes, 7); */; +/* PHP:add_new_tab(AdminGeolocation, es:Geolocalización|it:Geolocalizzazione|en:Geolocation|de:Geotargeting|fr:Géolocalisation, 8); */; +/* PHP:add_new_tab(AdminTaxRulesGroup, it:Regimi fiscali|es:Reglas de Impuestos|fr:Règles de taxes|de:Steuerregeln|en:Tax Rules, 4); */; +/* PHP:add_new_tab(AdminLogs, en:Log|fr:Log|es:Log|de:Log|it:Log, 9); */; diff --git a/install-dev/sql/upgrade/1.4.0.15.sql b/install-dev/sql/upgrade/1.4.0.15.sql new file mode 100644 index 000000000..7a0227965 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.15.sql @@ -0,0 +1,41 @@ +/* PHP:add_new_tab(AdminCounty, fr:Comtés|es:Condados|en:Counties|de:Counties|it:Counties, 5); */; + +ALTER TABLE `PREFIX_tax_rule` ADD `county_behavior` INT NOT NULL AFTER `state_behavior`; +ALTER TABLE `PREFIX_tax_rule` ADD `id_county` INT NOT NULL AFTER `state_behavior`; + +ALTER TABLE `PREFIX_tax_rule` ADD UNIQUE ( +`id_tax_rules_group` , +`id_country` , +`id_state` , +`id_county` +); + +CREATE TABLE `PREFIX_county` ( + `id_county` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(64) NOT NULL, + `id_state` int(11) NOT NULL, + `active` tinyint(1) NOT NULL, + PRIMARY KEY (`id_county`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8 ; + + +CREATE TABLE `PREFIX_county_zip_code` ( + `id_county` INT NOT NULL , + `from_zip_code` INT NOT NULL , + `to_zip_code` INT NOT NULL , + PRIMARY KEY ( `id_county` , `from_zip_code` , `to_zip_code` ) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_HOMEPAGE_PHP_SELF', 'index.php', NOW(), NOW()); + + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) +VALUES ('PS_USE_ECOTAX', + (SELECT IF((SELECT `ecotax` FROM `PREFIX_product` WHERE `ecotax` != 0 LIMIT 1),'1','0')), + NOW(), + NOW()); + +ALTER TABLE `PREFIX_hook` ADD `live_edit` TINYINT NOT NULL DEFAULT '0'; + +UPDATE `PREFIX_hook` SET `live_edit` = '1' WHERE `PREFIX_hook`.`name` IN ('rightColumn', 'leftColumn', 'home'); diff --git a/install-dev/sql/upgrade/1.4.0.16.sql b/install-dev/sql/upgrade/1.4.0.16.sql new file mode 100644 index 000000000..6b1a9fe12 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.16.sql @@ -0,0 +1,39 @@ +INSERT INTO `PREFIX_hook` (`id_hook`, `name`, `title`, `description`, `position`) +VALUES (NULL, 'afterCreateHtaccess', 'After htaccess creation', 'After htaccess creation', 0); + +UPDATE `PREFIX_meta_lang` SET `url_rewrite` = 'kontaktieren-sie-uns' WHERE id_meta = 3 AND id_lang = 4 AND url_rewrite = 'Kontaktieren Sie uns'; +UPDATE `PREFIX_meta_lang` SET `url_rewrite` = 'kennwort-wiederherstellung' WHERE id_meta = 7 AND id_lang = 4 AND url_rewrite = 'Kennwort Wiederherstellung'; +UPDATE `PREFIX_meta_lang` SET `url_rewrite` = 'il-mio-account' WHERE id_meta = 18 AND id_lang = 5 AND url_rewrite = 'il mio-account'; +UPDATE `PREFIX_meta_lang` SET `url_rewrite` = 'nota-di-ordine' WHERE id_meta = 20 AND id_lang = 5 AND url_rewrite = 'nota di-ordine'; + +INSERT INTO `PREFIX_meta` (`page`) VALUES ('order-opc'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) +( + SELECT `id_lang`, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-opc'), 'Order', 'quick-order' + FROM `PREFIX_lang` +); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('guest-tracking'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) +( + SELECT `id_lang`, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'guest-tracking'), 'Guest tracking', 'guest-tracking' + FROM `PREFIX_lang` +); + +UPDATE `PREFIX_hook` SET `live_edit` = '1' WHERE `PREFIX_hook`.`name` IN ('productfooter', 'payment'); + +UPDATE `PREFIX_configuration` SET name = 'PS_GEOLOCATION_ENABLED' WHERE name = 'PS_GEOLOCALIZATION_ENABLED'; +UPDATE `PREFIX_configuration` SET name = 'PS_GEOLOCATION_BEHAVIOR' WHERE name = 'PS_GEOLOCALIZATION_BEHAVIOR'; +UPDATE `PREFIX_configuration` SET name = 'PS_GEOLOCATION_WHITELIST' WHERE name = 'PS_GEOLOCALIZATION_WHITELIST'; +UPDATE `PREFIX_tab` SET class_name = 'AdminGeolocation' WHERE class_name = 'AdminGeolocalization'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_CANONICAL_REDIRECT', '0', NOW(), NOW()); + +ALTER TABLE `PREFIX_webservice_account` ADD `class_name` VARCHAR( 50 ) NOT NULL DEFAULT 'WebserviceRequest' AFTER `key`; +ALTER TABLE `PREFIX_webservice_account` ADD `description` text NULL AFTER `key`; + +/* PHP:add_module_to_hook(blockcategories, afterCreateHtaccess); */; +/* PHP:add_new_tab(AdminHome, en:Home|fr:Accueil|es:Home|de:Home|it:Home, -1); */; +/* PHP:add_new_tab(AdminStockMvt, de:Lagerbewegungen|fr:Mouvements de Stock|it:Movimenti magazzino|en:Stock Movements, 1); */; +/* PHP:update_for_13version(); */; + diff --git a/install-dev/sql/upgrade/1.4.0.17.sql b/install-dev/sql/upgrade/1.4.0.17.sql new file mode 100644 index 000000000..dc6af7ab0 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.17.sql @@ -0,0 +1,22 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_stock_mvt_reason` ADD `sign` TINYINT(1) NOT NULL AFTER `id_stock_mvt_reason`; +UPDATE `PREFIX_stock_mvt_reason` SET `sign`=-1; +UPDATE `PREFIX_stock_mvt_reason` SET `sign`=1 WHERE `id_stock_mvt_reason`=3; +UPDATE `PREFIX_stock_mvt_reason` SET `id_stock_mvt_reason`=`id_stock_mvt_reason`+2 ORDER BY `id_stock_mvt_reason` DESC; +UPDATE `PREFIX_stock_mvt` SET `id_stock_mvt_reason`=`id_stock_mvt_reason`+2; +UPDATE `PREFIX_stock_mvt_reason_lang` SET `id_stock_mvt_reason`=`id_stock_mvt_reason`+2 ORDER BY `id_stock_mvt_reason` DESC; +INSERT INTO `PREFIX_stock_mvt_reason` (`id_stock_mvt_reason` ,`sign` ,`date_add` ,`date_upd`) VALUES ('1', '1', NOW(), NOW()), ('2', '-1', NOW(), NOW()); + +INSERT INTO `PREFIX_stock_mvt_reason_lang` (`id_stock_mvt_reason` ,`id_lang` ,`name`) VALUES +('1', '1', 'Increase'), +('1', '2', 'Augmenter'), +('1', '3', 'Aumentar'), +('1', '4', 'Erhöhen'), +('1', '5', 'Aumento'), +('2', '1', 'Decrease'), +('2', '2', 'Diminuer'), +('2', '3', 'Disminuir'), +('2', '4', 'Reduzieren'), +('2', '5', 'Diminuzione'); + diff --git a/install-dev/sql/upgrade/1.4.0.2.sql b/install-dev/sql/upgrade/1.4.0.2.sql new file mode 100644 index 000000000..609c323be --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.2.sql @@ -0,0 +1,689 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_employee` ADD `bo_color` varchar(32) default NULL AFTER `stats_date_to`; +ALTER TABLE `PREFIX_employee` ADD `bo_theme` varchar(32) default NULL AFTER `bo_color`; +ALTER TABLE `PREFIX_employee` ADD `bo_uimode` ENUM('hover','click') default 'click' AFTER `bo_theme`; +ALTER TABLE `PREFIX_employee` ADD `id_lang` int(10) unsigned NOT NULL default 0 AFTER `id_profile`; + +ALTER TABLE `PREFIX_cms` ADD `id_cms_category` int(10) unsigned NOT NULL default '0' AFTER `id_cms`; +ALTER TABLE `PREFIX_cms` ADD `position` int(10) unsigned NOT NULL default '0' AFTER `id_cms_category`; + +CREATE TABLE `PREFIX_cms_category` ( + `id_cms_category` int(10) unsigned NOT NULL AUTO_INCREMENT, + `id_parent` int(10) unsigned NOT NULL, + `level_depth` tinyint(3) unsigned NOT NULL DEFAULT '0', + `active` tinyint(1) unsigned NOT NULL DEFAULT '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + `position` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`id_cms_category`), + KEY `category_parent` (`id_parent`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_cms_category_lang` ( + `id_cms_category` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + `name` varchar(128) NOT NULL, + `description` text, + `link_rewrite` varchar(128) NOT NULL, + `meta_title` varchar(128) DEFAULT NULL, + `meta_keywords` varchar(255) DEFAULT NULL, + `meta_description` varchar(255) DEFAULT NULL, + UNIQUE KEY `category_lang_index` (`id_cms_category`,`id_lang`), + KEY `category_name` (`name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_cms_category_lang` VALUES(1, 1, 'Home', '', 'home', NULL, NULL, NULL); +INSERT INTO `PREFIX_cms_category_lang` VALUES(1, 2, 'Accueil', '', 'home', NULL, NULL, NULL); +INSERT INTO `PREFIX_cms_category_lang` VALUES(1, 3, 'Inicio', '', 'home', NULL, NULL, NULL); + +INSERT INTO `PREFIX_cms_category` VALUES(1, 0, 0, 1, NOW(), NOW(),0); + +UPDATE `PREFIX_cms_category` SET `position` = 0; +UPDATE `PREFIX_cms` SET `position` = 0; +UPDATE `PREFIX_cms` SET `id_cms_category` = 0; + +ALTER TABLE `PREFIX_category` ADD `position` int(10) unsigned NOT NULL default '0' AFTER `date_upd`; + +UPDATE `PREFIX_employee` SET `id_lang` = (SELECT `value` FROM `PREFIX_configuration` WHERE `name` LIKE "PS_LANG_DEFAULT"); + +ALTER TABLE `PREFIX_customer` ADD `note` text AFTER `secure_key`; + +ALTER TABLE `PREFIX_contact` ADD `customer_service` tinyint(1) NOT NULL DEFAULT 0 AFTER `email`; + +CREATE TABLE `PREFIX_customer_thread` ( + `id_customer_thread` int(11) unsigned NOT NULL auto_increment, + `id_lang` int(10) unsigned NOT NULL, + `id_contact` int(10) unsigned NOT NULL, + `id_customer` int(10) unsigned default NULL, + `id_order` int(10) unsigned default NULL, + `id_product` int(10) unsigned default NULL, + `status` enum('open','closed','pending1','pending2') NOT NULL default 'open', + `email` varchar(128) NOT NULL, + `token` varchar(12) default NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_customer_thread`), + KEY `id_customer_thread` (`id_customer_thread`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_customer_message` ( + `id_customer_message` int(10) unsigned NOT NULL auto_increment, + `id_customer_thread` int(11) default NULL, + `id_employee` int(10) unsigned default NULL, + `message` text NOT NULL, + `file_name` varchar(18) DEFAULT NULL, + `ip_address` int(11) default NULL, + `user_agent` varchar(128) default NULL, + `date_add` datetime NOT NULL, + PRIMARY KEY (`id_customer_message`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_payment_cc` ( + `id_payment_cc` INT NOT NULL auto_increment, + `id_order` INT UNSIGNED NULL, + `id_currency` INT UNSIGNED NOT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `transaction_id` VARCHAR(254) NULL, + `card_number` VARCHAR(254) NULL, + `card_brand` VARCHAR(254) NULL, + `card_expiration` CHAR(7) NULL, + `card_holder` VARCHAR(254) NULL, + `date_add` DATETIME NOT NULL, + PRIMARY KEY (`id_payment_cc`), + KEY `id_order` (`id_order`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_specific_price` ( + `id_specific_price` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_product` INT UNSIGNED NOT NULL, + `id_shop` TINYINT UNSIGNED NOT NULL, + `id_currency` INT UNSIGNED NOT NULL, + `id_country` INT UNSIGNED NOT NULL, + `id_group` INT UNSIGNED NOT NULL, + `priority` SMALLINT UNSIGNED NOT NULL, + `price` DECIMAL(20, 6) NOT NULL, + `from_quantity` SMALLINT UNSIGNED NOT NULL, + `reduction` DECIMAL(20, 6) NOT NULL, + `reduction_type` ENUM('amount', 'percentage') NOT NULL, + `from` DATETIME NOT NULL, + `to` DATETIME NOT NULL, + PRIMARY KEY(`id_specific_price`), + KEY (`id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `from_quantity`, `from`, `to`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_specific_price` (`id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `priority`, `price`, `from_quantity`, `reduction`, `reduction_type`, `from`, `to`) + ( SELECT dq.`id_product`, 1, 1, 0, 1, 0, 0.00, dq.`quantity`, IF(dq.`id_discount_type` = 2, dq.`value`, dq.`value` / 100), IF (dq.`id_discount_type` = 2, 'amount', 'percentage'), '0000-00-00 00:00:00', '0000-00-00 00:00:00' + FROM `PREFIX_discount_quantity` dq + INNER JOIN `PREFIX_product` p ON (p.`id_product` = dq.`id_product`) + ); +DROP TABLE `PREFIX_discount_quantity`; + +INSERT INTO `PREFIX_specific_price` (`id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `priority`, `price`, `from_quantity`, `reduction`, `reduction_type`, `from`, `to`) ( + SELECT + p.`id_product`, + 1, + 0, + 0, + 0, + 0, + 0.00, + 1, + IF(p.`reduction_price` > 0, p.`reduction_price`, p.`reduction_percent` / 100), + IF(p.`reduction_price` > 0, 'amount', 'percentage'), + IF (p.`reduction_from` = p.`reduction_to`, '0000-00-00 00:00:00', p.`reduction_from`), + IF (p.`reduction_from` = p.`reduction_to`, '0000-00-00 00:00:00', p.`reduction_to`) + FROM `PREFIX_product` p + WHERE p.`reduction_price` OR p.`reduction_percent` +); +ALTER TABLE `PREFIX_product` + DROP `reduction_price`, + DROP `reduction_percent`, + DROP `reduction_from`, + DROP `reduction_to`; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_SPECIFIC_PRICE_PRIORITIES', 'id_shop;id_currency;id_country;id_group', NOW(), NOW()), +('PS_TAX_DISPLAY', 0, NOW(), NOW()), +('PS_SMARTY_FORCE_COMPILE', 1, NOW(), NOW()), +('PS_DISTANCE_UNIT', 'km', NOW(), NOW()), +('PS_STORES_DISPLAY_CMS', 0, NOW(), NOW()), +('PS_STORES_DISPLAY_FOOTER', 0, NOW(), NOW()), +('PS_STORES_SIMPLIFIED', 0, NOW(), NOW()), +('PS_STATSDATA_CUSTOMER_PAGESVIEWS', 1, NOW(), NOW()), +('PS_STATSDATA_PAGESVIEWS', 1, NOW(), NOW()), +('PS_STATSDATA_PLUGINS', 1, NOW(), NOW()); + +CREATE TABLE `PREFIX_group_reduction` ( + `id_group_reduction` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, + `id_group` INT(10) UNSIGNED NOT NULL, + `id_category` INT(10) UNSIGNED NOT NULL, + `reduction` DECIMAL(4, 3) NOT NULL, + PRIMARY KEY(`id_group_reduction`), + UNIQUE KEY(`id_group`, `id_category`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_product_group_reduction_cache` ( + `id_product` INT UNSIGNED NOT NULL, + `id_group` INT UNSIGNED NOT NULL, + `reduction` DECIMAL(4, 3) NOT NULL, + PRIMARY KEY(`id_product`, `id_group`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_currency` ADD `iso_code_num` varchar(3) NOT NULL default '0' AFTER `iso_code`; +UPDATE `PREFIX_currency` SET iso_code_num = '978' WHERE iso_code LIKE 'EUR' LIMIT 1; +UPDATE `PREFIX_currency` SET iso_code_num = '840' WHERE iso_code LIKE 'USD' LIMIT 1; +UPDATE `PREFIX_currency` SET iso_code_num = '826' WHERE iso_code LIKE 'GBP' LIMIT 1; + +ALTER TABLE `PREFIX_country` ADD `call_prefix` int(10) NOT NULL default '0' AFTER `iso_code`; + +UPDATE `PREFIX_country` SET `call_prefix` = 49 WHERE `iso_code` = 'DE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 43 WHERE `iso_code` = 'AT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 32 WHERE `iso_code` = 'BE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 1 WHERE `iso_code` = 'CA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 86 WHERE `iso_code` = 'CN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 34 WHERE `iso_code` = 'ES' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 358 WHERE `iso_code` = 'FI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 33 WHERE `iso_code` = 'FR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 30 WHERE `iso_code` = 'GR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 39 WHERE `iso_code` = 'IT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 81 WHERE `iso_code` = 'JP' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 352 WHERE `iso_code` = 'LU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 31 WHERE `iso_code` = 'NL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 48 WHERE `iso_code` = 'PL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 351 WHERE `iso_code` = 'PT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 420 WHERE `iso_code` = 'CZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 44 WHERE `iso_code` = 'GB' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 46 WHERE `iso_code` = 'SE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 41 WHERE `iso_code` = 'CH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 45 WHERE `iso_code` = 'DK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 1 WHERE `iso_code` = 'US' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 852 WHERE `iso_code` = 'HK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 47 WHERE `iso_code` = 'NO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 61 WHERE `iso_code` = 'AU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 65 WHERE `iso_code` = 'SG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 353 WHERE `iso_code` = 'IE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 64 WHERE `iso_code` = 'NZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 82 WHERE `iso_code` = 'KR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 972 WHERE `iso_code` = 'IL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 27 WHERE `iso_code` = 'ZA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 234 WHERE `iso_code` = 'NG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 225 WHERE `iso_code` = 'CI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 228 WHERE `iso_code` = 'TG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 591 WHERE `iso_code` = 'BO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 230 WHERE `iso_code` = 'MU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 40 WHERE `iso_code` = 'RO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 421 WHERE `iso_code` = 'SK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 213 WHERE `iso_code` = 'DZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 376 WHERE `iso_code` = 'AD' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 244 WHERE `iso_code` = 'AO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 54 WHERE `iso_code` = 'AR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 374 WHERE `iso_code` = 'AM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 297 WHERE `iso_code` = 'AW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 994 WHERE `iso_code` = 'AZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 973 WHERE `iso_code` = 'BH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 880 WHERE `iso_code` = 'BD' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 501 WHERE `iso_code` = 'BZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 229 WHERE `iso_code` = 'BJ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 975 WHERE `iso_code` = 'BT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 267 WHERE `iso_code` = 'BW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 55 WHERE `iso_code` = 'BR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 673 WHERE `iso_code` = 'BN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 226 WHERE `iso_code` = 'BF' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 95 WHERE `iso_code` = 'MM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 257 WHERE `iso_code` = 'BI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 855 WHERE `iso_code` = 'KH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 237 WHERE `iso_code` = 'CM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 238 WHERE `iso_code` = 'CV' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 236 WHERE `iso_code` = 'CF' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 235 WHERE `iso_code` = 'TD' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 56 WHERE `iso_code` = 'CL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 57 WHERE `iso_code` = 'CO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 269 WHERE `iso_code` = 'KM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 242 WHERE `iso_code` = 'CD' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 243 WHERE `iso_code` = 'CG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 506 WHERE `iso_code` = 'CR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 385 WHERE `iso_code` = 'HR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 53 WHERE `iso_code` = 'CU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 357 WHERE `iso_code` = 'CY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 253 WHERE `iso_code` = 'DJ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 670 WHERE `iso_code` = 'TL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 593 WHERE `iso_code` = 'EC' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 20 WHERE `iso_code` = 'EG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 503 WHERE `iso_code` = 'SV' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 240 WHERE `iso_code` = 'GQ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 291 WHERE `iso_code` = 'ER' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 372 WHERE `iso_code` = 'EE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 251 WHERE `iso_code` = 'ET' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 298 WHERE `iso_code` = 'FO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 679 WHERE `iso_code` = 'FJ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 241 WHERE `iso_code` = 'GA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 220 WHERE `iso_code` = 'GM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 995 WHERE `iso_code` = 'GE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 233 WHERE `iso_code` = 'GH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 299 WHERE `iso_code` = 'GL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 350 WHERE `iso_code` = 'GI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 590 WHERE `iso_code` = 'GP' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 502 WHERE `iso_code` = 'GT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 224 WHERE `iso_code` = 'GN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 245 WHERE `iso_code` = 'GW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 592 WHERE `iso_code` = 'GY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 509 WHERE `iso_code` = 'HT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 379 WHERE `iso_code` = 'VA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 504 WHERE `iso_code` = 'HN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 354 WHERE `iso_code` = 'IS' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 91 WHERE `iso_code` = 'IN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 62 WHERE `iso_code` = 'ID' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 98 WHERE `iso_code` = 'IR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 964 WHERE `iso_code` = 'IQ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 962 WHERE `iso_code` = 'JO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 7 WHERE `iso_code` = 'KZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 254 WHERE `iso_code` = 'KE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 686 WHERE `iso_code` = 'KI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 850 WHERE `iso_code` = 'KP' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 965 WHERE `iso_code` = 'KW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 996 WHERE `iso_code` = 'KG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 856 WHERE `iso_code` = 'LA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 371 WHERE `iso_code` = 'LV' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 961 WHERE `iso_code` = 'LB' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 266 WHERE `iso_code` = 'LS' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 231 WHERE `iso_code` = 'LR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 218 WHERE `iso_code` = 'LY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 423 WHERE `iso_code` = 'LI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 370 WHERE `iso_code` = 'LT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 853 WHERE `iso_code` = 'MO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 389 WHERE `iso_code` = 'MK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 261 WHERE `iso_code` = 'MG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 265 WHERE `iso_code` = 'MW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 60 WHERE `iso_code` = 'MY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 960 WHERE `iso_code` = 'MV' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 223 WHERE `iso_code` = 'ML' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 356 WHERE `iso_code` = 'MT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 692 WHERE `iso_code` = 'MH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 596 WHERE `iso_code` = 'MQ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 222 WHERE `iso_code` = 'MR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 36 WHERE `iso_code` = 'HU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 262 WHERE `iso_code` = 'YT' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 52 WHERE `iso_code` = 'MX' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 691 WHERE `iso_code` = 'FM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 373 WHERE `iso_code` = 'MD' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 377 WHERE `iso_code` = 'MC' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 976 WHERE `iso_code` = 'MN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 382 WHERE `iso_code` = 'ME' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 212 WHERE `iso_code` = 'MA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 258 WHERE `iso_code` = 'MZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 264 WHERE `iso_code` = 'NA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 674 WHERE `iso_code` = 'NR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 977 WHERE `iso_code` = 'NP' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 599 WHERE `iso_code` = 'AN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 687 WHERE `iso_code` = 'NC' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 505 WHERE `iso_code` = 'NI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 227 WHERE `iso_code` = 'NE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 683 WHERE `iso_code` = 'NU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 968 WHERE `iso_code` = 'OM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 92 WHERE `iso_code` = 'PK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 680 WHERE `iso_code` = 'PW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 507 WHERE `iso_code` = 'PA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 675 WHERE `iso_code` = 'PG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 595 WHERE `iso_code` = 'PY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 51 WHERE `iso_code` = 'PE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 63 WHERE `iso_code` = 'PH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 974 WHERE `iso_code` = 'QA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 262 WHERE `iso_code` = 'RE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 7 WHERE `iso_code` = 'RU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 250 WHERE `iso_code` = 'RW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 508 WHERE `iso_code` = 'PM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 685 WHERE `iso_code` = 'WS' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 378 WHERE `iso_code` = 'SM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 239 WHERE `iso_code` = 'ST' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 966 WHERE `iso_code` = 'SA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 221 WHERE `iso_code` = 'SN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 381 WHERE `iso_code` = 'RS' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 248 WHERE `iso_code` = 'SC' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 232 WHERE `iso_code` = 'SL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 386 WHERE `iso_code` = 'SI' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 677 WHERE `iso_code` = 'SB' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 252 WHERE `iso_code` = 'SO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 94 WHERE `iso_code` = 'LK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 249 WHERE `iso_code` = 'SD' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 597 WHERE `iso_code` = 'SR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 268 WHERE `iso_code` = 'SZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 963 WHERE `iso_code` = 'SY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 886 WHERE `iso_code` = 'TW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 992 WHERE `iso_code` = 'TJ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 255 WHERE `iso_code` = 'TZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 66 WHERE `iso_code` = 'TH' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 690 WHERE `iso_code` = 'TK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 676 WHERE `iso_code` = 'TO' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 216 WHERE `iso_code` = 'TN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 90 WHERE `iso_code` = 'TR' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 993 WHERE `iso_code` = 'TM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 688 WHERE `iso_code` = 'TV' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 256 WHERE `iso_code` = 'UG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 380 WHERE `iso_code` = 'UA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 971 WHERE `iso_code` = 'AE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 598 WHERE `iso_code` = 'UY' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 998 WHERE `iso_code` = 'UZ' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 678 WHERE `iso_code` = 'VU' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 58 WHERE `iso_code` = 'VE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 84 WHERE `iso_code` = 'VN' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 681 WHERE `iso_code` = 'WF' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 967 WHERE `iso_code` = 'YE' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 260 WHERE `iso_code` = 'ZM' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 263 WHERE `iso_code` = 'ZW' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 355 WHERE `iso_code` = 'AL' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 93 WHERE `iso_code` = 'AF' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 387 WHERE `iso_code` = 'BA' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 359 WHERE `iso_code` = 'BG' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 682 WHERE `iso_code` = 'CK' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 594 WHERE `iso_code` = 'GF' LIMIT 1; +UPDATE `PREFIX_country` SET `call_prefix` = 689 WHERE `iso_code` = 'PF' LIMIT 1; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_CONDITIONS_CMS_ID', IFNULL((SELECT `id_cms` FROM `PREFIX_cms` WHERE `id_cms` = 3), 0), NOW(), NOW()); +UPDATE `PREFIX_configuration` SET `value` = IF((SELECT value FROM (SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'PS_CONDITIONS_CMS_ID')tmp), 1, 0) WHERE `name` = 'PS_CONDITIONS'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_CIPHER_ALGORITHM', 0, NOW(), NOW()); +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_ORDER_PROCESS_TYPE', 0, NOW(), NOW()); + +ALTER TABLE `PREFIX_product` ADD `minimal_quantity` INT NOT NULL DEFAULT '1' AFTER `quantity`; +ALTER TABLE `PREFIX_product` ADD `cache_default_attribute` int(10) unsigned default NULL AFTER `indexed`; +ALTER TABLE `PREFIX_product` ADD `cache_has_attachments` TINYINT(1) NOT NULL default '0' AFTER `indexed`; +ALTER TABLE `PREFIX_product` ADD `cache_is_pack` TINYINT(1) NOT NULL default '0' AFTER `indexed`; +ALTER TABLE `PREFIX_product` ADD `available_for_order` TINYINT(1) NOT NULL DEFAULT '1' AFTER `active`; +ALTER TABLE `PREFIX_product` ADD `show_price` TINYINT(1) NOT NULL DEFAULT '1' AFTER `available_for_order`; +ALTER TABLE `PREFIX_product` ADD `online_only` TINYINT(1) NOT NULL DEFAULT '0' AFTER `on_sale`; +ALTER TABLE `PREFIX_product` ADD `condition` ENUM('new', 'used', 'refurbished') NOT NULL DEFAULT 'new' AFTER `available_for_order`; +ALTER TABLE `PREFIX_product` ADD `upc` VARCHAR( 12 ) NULL AFTER `ean13`; + +ALTER TABLE `PREFIX_product_attribute` ADD `upc` VARCHAR( 12 ) NULL AFTER `ean13`; + +SET @defaultOOS = (SELECT value FROM `PREFIX_configuration` WHERE name = 'PS_ORDER_OUT_OF_STOCK'); +/* Set 0 for every non-attribute product */ +UPDATE `PREFIX_product` p SET `cache_default_attribute` = 0 WHERE `id_product` NOT IN (SELECT `id_product` FROM `PREFIX_product_attribute`); +/* First default attribute in stock */ +UPDATE `PREFIX_product` p SET `cache_default_attribute` = (SELECT `id_product_attribute` FROM `PREFIX_product_attribute` WHERE `id_product` = p.`id_product` AND default_on = 1 AND quantity > 0 LIMIT 1) WHERE `cache_default_attribute` IS NULL; +/* Then default attribute without stock if we don't care */ +UPDATE `PREFIX_product` p SET `cache_default_attribute` = (SELECT `id_product_attribute` FROM `PREFIX_product_attribute` WHERE `id_product` = p.`id_product` AND default_on = 1 LIMIT 1) WHERE `cache_default_attribute` IS NULL AND `out_of_stock` = 1 OR `out_of_stock` = IF(@defaultOOS = 1, 2, 1); +/* Next, the default attribute can be any attribute with stock */ +UPDATE `PREFIX_product` p SET `cache_default_attribute` = (SELECT `id_product_attribute` FROM `PREFIX_product_attribute` WHERE `id_product` = p.`id_product` AND quantity > 0 LIMIT 1) WHERE `cache_default_attribute` IS NULL; +/* If there is still no default attribute, then we go back to the default one */ +UPDATE `PREFIX_product` p SET `cache_default_attribute` = (SELECT `id_product_attribute` FROM `PREFIX_product_attribute` WHERE `id_product` = p.`id_product` AND default_on = 1 LIMIT 1) WHERE `cache_default_attribute` IS NULL; + +UPDATE `PREFIX_product` p SET +cache_is_pack = (SELECT IF(COUNT(*) > 0, 1, 0) FROM `PREFIX_pack` pp WHERE pp.`id_product_pack` = p.`id_product`), +cache_has_attachments = (SELECT IF(COUNT(*) > 0, 1, 0) FROM `PREFIX_product_attachment` pa WHERE pa.`id_product` = p.`id_product`); + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('deleteProductAttribute', 'Product Attribute Deletion', NULL, 0); +INSERT INTO `PREFIX_hook` (`name` ,`title` ,`description` ,`position`) VALUES ('beforeCarrier', 'Before carrier list', 'This hook is display before the carrier list on Front office', 1); +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('orderDetailDisplayed', 'Order detail displayed', 'Displayed on order detail on front office', 1); + +INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook`, `position`) VALUES +((SELECT IFNULL((SELECT `id_module` FROM `PREFIX_module` WHERE `name` = 'mailalerts'), 0)), +(SELECT `id_hook` FROM `PREFIX_hook` WHERE `name` = 'deleteProductAttribute'), 1); + +DELETE FROM `PREFIX_hook_module` WHERE `id_module` = 0; + +ALTER TABLE `PREFIX_country` ADD `need_zip_code` TINYINT(1) NOT NULL DEFAULT '1'; +ALTER TABLE `PREFIX_country` ADD `zip_code_format` VARCHAR(12) NOT NULL DEFAULT ''; + +ALTER TABLE `PREFIX_product` ADD `unit_price` DECIMAL(20,6) NOT NULL DEFAULT '0.000000' AFTER `wholesale_price`; +ALTER TABLE `PREFIX_product` ADD `unity` VARCHAR(10) NOT NULL DEFAULT '0.000000' AFTER `unit_price` ; +ALTER TABLE `PREFIX_product_attribute` ADD `unit_price_impact`DECIMAL(17,2) NOT NULL DEFAULT '0.00' AFTER `weight`; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_VOLUME_UNIT', 'cl', NOW(), NOW()); + +ALTER TABLE `PREFIX_carrier` ADD `shipping_external` TINYINT( 1 ) UNSIGNED NOT NULL; +ALTER TABLE `PREFIX_carrier` ADD `external_module_name` varchar(64) DEFAULT NULL; +ALTER TABLE `PREFIX_carrier` ADD `need_range` TINYINT( 1 ) UNSIGNED NOT NULL; + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('processCarrier', 'Carrier Process', NULL, 0); +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('orderDetail', 'Order Detail', 'To set the follow-up in smarty when order detail is called', 0); +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('paymentCCAdded', 'Payment CC added', 'Payment CC added', '0'); +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES ('extraProductComparison', 'Extra Product Comparison', 'Extra Product Comparison', '0'); + +ALTER TABLE `PREFIX_address` ADD `vat_number` varchar(32) NULL DEFAULT NULL AFTER `phone_mobile`; +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_TAX_ADDRESS_TYPE', 'id_address_delivery', NOW(), NOW()); + + +/* PHP:add_module_to_hook(blockpaymentlogo, header); */; +/* PHP:add_module_to_hook(blockpermanentlinks, header); */; +/* PHP:add_module_to_hook(blockviewed, header); */; +/* PHP:add_module_to_hook(blockcart, header); */; +/* PHP:add_module_to_hook(editorial, header); */; +/* PHP:add_module_to_hook(blockbestsellers, header); */; +/* PHP:add_module_to_hook(blockcategories, header); */; +/* PHP:add_module_to_hook(blockspecials, header); */; +/* PHP:add_module_to_hook(blockcurrencies, header); */; +/* PHP:add_module_to_hook(blocknewproducts, header); */; +/* PHP:add_module_to_hook(blockuserinfo, header); */; +/* PHP:add_module_to_hook(blockcms, header); */; +/* PHP:add_module_to_hook(blocklanguages, header); */; +/* PHP:add_module_to_hook(blockmanufacturer, header); */; +/* PHP:add_module_to_hook(blockadvertising, header); */; +/* PHP:add_module_to_hook(blocktags, header); */; +/* PHP:add_module_to_hook(blockmyaccount, header); */; + +ALTER TABLE `PREFIX_product` ADD `additional_shipping_cost` DECIMAL(20,2) NOT NULL DEFAULT '0.000000' AFTER `unit_price`; + +ALTER TABLE `PREFIX_currency` ADD `active` TINYINT(1) NOT NULL DEFAULT '1'; +ALTER TABLE `PREFIX_tax` ADD `active` TINYINT(1) NOT NULL DEFAULT '1'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_ATTRIBUTE_CATEGORY_DISPLAY', 1, NOW(), NOW()); + +ALTER TABLE `PREFIX_discount` ADD `cart_display` TINYINT( 4 ) NOT NULL AFTER `active` , ADD `date_add` DATETIME NOT NULL AFTER `cart_display` , ADD `date_upd` DATETIME NOT NULL AFTER `date_add` ; + +ALTER TABLE `PREFIX_carrier` ADD `shipping_method` INT( 2 ) NOT NULL DEFAULT '0'; + +CREATE TABLE `PREFIX_stock_mvt` ( + `id_stock_mvt` int(11) unsigned NOT NULL AUTO_INCREMENT, + `id_product` int(11) unsigned DEFAULT NULL, + `id_product_attribute` int(11) unsigned DEFAULT NULL, + `id_order` int(11) unsigned DEFAULT NULL, + `id_stock_mvt_reason` int(11) unsigned NOT NULL, + `id_employee` int(11) unsigned NOT NULL, + `quantity` int(11) NOT NULL, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_stock_mvt`), + KEY `id_order` (`id_order`), + KEY `id_product` (`id_product`), + KEY `id_product_attribute` (`id_product_attribute`), + KEY `id_stock_mvt_reason` (`id_stock_mvt_reason`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_stock_mvt_reason` ( + `id_stock_mvt_reason` int(11) NOT NULL AUTO_INCREMENT, + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_stock_mvt_reason`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +ALTER TABLE `PREFIX_product` CHANGE `quantity` `quantity` INT( 10 ) NOT NULL DEFAULT '0'; +ALTER TABLE `PREFIX_product_attribute` CHANGE `quantity` `quantity` INT( 10 ) NOT NULL DEFAULT '0'; + +CREATE TABLE `PREFIX_stock_mvt_reason_lang` ( + `id_stock_mvt_reason` int(11) NOT NULL, + `id_lang` int(11) NOT NULL, + `name` varchar(255) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id_stock_mvt_reason`,`id_lang`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_stock_mvt_reason` (`id_stock_mvt_reason`, `date_add`, `date_upd`) VALUES +(1, NOW(), NOW()), (2, NOW(), NOW()), (3, NOW(), NOW()); + +INSERT INTO `PREFIX_stock_mvt_reason_lang` (`id_stock_mvt_reason`, `id_lang`, `name`) VALUES +(1, 1, 'Order'), +(1, 2, 'Commande'), +(2, 1, 'Missing Stock Movement'), +(2, 2, 'Mouvement de stock manquant'), +(3, 1, 'Restocking'), +(3, 2, 'Réassort'); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_COMPARATOR_MAX_ITEM', 0, NOW(), NOW()); + +ALTER TABLE `PREFIX_meta_lang` ADD `url_rewrite` VARCHAR( 255 ) NOT NULL , ADD INDEX ( `url_rewrite` ); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('address'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'address'), 'Address', 'address'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'address'), 'Adresse', 'adresse'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'address'), 'Dirección', 'direccion'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('addresses'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'addresses'), 'Addresses', 'addresses'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'addresses'), 'Adresses', 'adresses'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'addresses'), 'Direcciones', 'direcciones'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('authentication'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'authentication'), 'Authentication', 'authentication'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'authentication'), 'Authentification', 'authentification'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'authentication'), 'Autenticación', 'autenticacion'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('cart'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'cart'), 'Cart', 'cart'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'cart'), 'Panier', 'panier'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'cart'), 'Carro de la compra', 'carro-de-la-compra'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('discount'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'discount'), 'Discount', 'discount'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'discount'), 'Bons de réduction', 'bons-de-reduction'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'discount'), 'Descuento', 'descuento'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('history'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'history'), 'Order history', 'order-history'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'history'), 'Historique des commandes', 'historique-des-commandes'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'history'), 'Historial de pedidos', 'historial-de-pedidos'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('identity'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'identity'), 'Identity', 'identity'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'identity'), 'Identité', 'identite'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'identity'), 'Identidad', 'identidad'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('my-account'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'my-account'), 'My account', 'my-account'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'my-account'), 'Mon compte', 'mon-compte'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'my-account'), 'Mi Cuenta', 'mi-cuenta'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('order-follow'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-follow'), 'Order follow', 'order-follow'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-follow'), 'Détails de la commande', 'details-de-la-commande'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-follow'), 'Devolución de productos', 'devolucion-de-productos'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('order-slip'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-slip'), 'Order slip', 'order-slip'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-slip'), 'Avoirs', 'avoirs'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order-slip'), 'Vales', 'vales'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('order'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order'), 'Order', 'order'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order'), 'Commande', 'commande'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'order'), 'Carrito', 'carrito'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('search'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'search'), 'Search', 'search'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'search'), 'Recherche', 'recherche'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'search'), 'Buscar', 'buscar'); +INSERT INTO `PREFIX_meta` (`page`) VALUES ('stores'); +INSERT INTO `PREFIX_meta_lang` (`id_lang`, `id_meta`, `title`, `url_rewrite`) VALUES +(1, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'stores'), 'Stores', 'stores'), +(2, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'stores'), 'Magagins', 'magasins'), +(3, (SELECT `id_meta` FROM `PREFIX_meta` WHERE `page` = 'stores'), 'Tiendas', 'tiendas'); + +ALTER TABLE `PREFIX_manufacturer` ADD `active` tinyint(1) NOT NULL default 0; +ALTER TABLE `PREFIX_supplier` ADD `active` tinyint(1) NOT NULL default 0; +UPDATE `PREFIX_manufacturer` SET `active` = 1; +UPDATE `PREFIX_supplier` SET `active` = 1; +ALTER TABLE `PREFIX_cms` ADD `active` tinyint(1) unsigned NOT NULL default 0; +UPDATE `PREFIX_cms` SET `active` = 1; + +UPDATE `PREFIX_tab_lang` SET `name` = 'SEO' WHERE `id_tab` = 56 AND `id_lang` IN(1,2,3); + +ALTER TABLE `PREFIX_cart` ADD `secure_key` varchar(32) NOT NULL default '-1' AFTER `id_guest`; + +ALTER TABLE `PREFIX_order_detail` ADD `product_upc` varchar(12) default NULL AFTER `product_ean13`; + +ALTER TABLE `PREFIX_discount` ADD `id_group` int(10) unsigned NOT NULL default 0; + +CREATE TABLE `PREFIX_store` ( + `id_store` int(10) unsigned NOT NULL AUTO_INCREMENT, + `id_country` int(10) unsigned NOT NULL, + `id_state` int(10) unsigned DEFAULT NULL, + `name` varchar(128) NOT NULL, + `address1` varchar(128) NOT NULL, + `address2` varchar(128) DEFAULT NULL, + `city` varchar(64) NOT NULL, + `postcode` varchar(12) NOT NULL, + `latitude` float(10,6) DEFAULT NULL, + `longitude` float(10,6) DEFAULT NULL, + `hours` varchar(254) DEFAULT NULL, + `phone` varchar(16) DEFAULT NULL, + `fax` varchar(16) DEFAULT NULL, + `email` varchar(128) DEFAULT NULL, + `note` text, + `active` tinyint(1) unsigned NOT NULL DEFAULT '0', + `date_add` datetime NOT NULL, + `date_upd` datetime NOT NULL, + PRIMARY KEY (`id_store`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`) VALUES +('categoryAddition', '', 'Temporary hook. Must NEVER be used. Will soon be replaced by a generic CRUD hook system.', 0), +('categoryUpdate', '', 'Temporary hook. Must NEVER be used. Will soon be replaced by a generic CRUD hook system.', 0), +('categoryDeletion', '', 'Temporary hook. Must NEVER be used. Will soon be replaced by a generic CRUD hook system.', 0); + + +/* PHP:add_module_to_hook(blockcategories, categoryAddition); */; +/* PHP:add_module_to_hook(blockcategories, categoryUpdate); */; +/* PHP:add_module_to_hook(blockcategories, categoryDeletion); */; + +DELETE FROM `PREFIX_hook_module` WHERE `id_module` = 0; + +CREATE TABLE `PREFIX_required_field` ( + `id_required_field` int(11) NOT NULL AUTO_INCREMENT, + `object_name` varchar(32) NOT NULL, + `field_name` varchar(32) NOT NULL, + PRIMARY KEY (`id_required_field`), + KEY `object_name` (`object_name`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_memcached_servers` ( +`id_memcached_server` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , +`ip` VARCHAR( 254 ) NOT NULL , +`port` INT(11) UNSIGNED NOT NULL , +`weight` INT(11) UNSIGNED NOT NULL +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_webservice_account` ( + `id_webservice_account` int(11) NOT NULL AUTO_INCREMENT, + `key` varchar(32) NOT NULL, + `active` tinyint(2) NOT NULL, + PRIMARY KEY (`id_webservice_account`), + KEY `key` (`key`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_webservice_permission` ( + `id_webservice_permission` int(11) NOT NULL AUTO_INCREMENT, + `resource` varchar(50) NOT NULL, + `method` enum('GET','POST','PUT','DELETE') NOT NULL, + `id_webservice_account` int(11) NOT NULL, + PRIMARY KEY (`id_webservice_permission`), + UNIQUE KEY `resource_2` (`resource`,`method`,`id_webservice_account`), + KEY `resource` (`resource`), + KEY `method` (`method`), + KEY `id_webservice_account` (`id_webservice_account`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + + +/* PHP */ +/* PHP:editorial_update(); */; +/* PHP:reorderpositions(); */; +/* PHP:update_image_size_in_db(); */; +/* PHP:update_order_details(); */; +/* PHP:add_new_tab(AdminInformation, en:Configuration Information|fr:Informations|es:Informations|it:Informazioni di configurazione|de:Konfigurationsinformationen, 9); */; +/* PHP:add_new_tab(AdminCustomerThreads, en:Customer Service|de:Kundenservice|fr:SAV|es:Servicio al cliente|it:Servizio clienti, 29); */; +/* PHP:add_new_tab(AdminAddonsCatalog, fr:Catalogue de modules et thèmes|de:Module und Themenkatalog|en:Modules & Themes Catalog|it:Moduli & Temi catalogo, 7); */; +/* PHP:add_new_tab(AdminAddonsMyAccount, it:Il mio Account|de:Mein Konto|fr:Mon compte|en:My Account, 7); */; +/* PHP:add_new_tab(AdminPerformance, de:Leistung|en:Performance|it:Performance|fr:Performances|es:Rendimiento, 8); */; +/* PHP:add_new_tab(AdminThemes, es:Temas|it:Temi|de:Themen|en:Themes|fr:Thèmes, 7); */; +/* PHP:add_new_tab(AdminWebservice, fr:Service web|es:Web service|en:Webservice|de:Webservice|it:Webservice, 8); */; + diff --git a/install-dev/sql/upgrade/1.4.0.3.sql b/install-dev/sql/upgrade/1.4.0.3.sql new file mode 100644 index 000000000..55eb3d2eb --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.3.sql @@ -0,0 +1,67 @@ +SET NAMES 'utf8'; + +CREATE TABLE IF NOT EXISTS `PREFIX_country_tax` ( + `id_country_tax` int(11) NOT NULL AUTO_INCREMENT, + `id_country` int(11) NOT NULL, + `id_tax` int(11) NOT NULL, + PRIMARY KEY (`id_country_tax`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_product_country_tax` ( + `id_product` int(11) NOT NULL, + `id_country` int(11) NOT NULL, + `id_tax` int(11) NOT NULL, + UNIQUE KEY `id_product` (`id_product`,`id_country`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +DELETE FROM `PREFIX_tab` WHERE `class_name` = 'AdminStatsModules' LIMIT 1; +DELETE FROM `PREFIX_tab_lang` WHERE `id_tab` NOT IN (SELECT id_tab FROM `PREFIX_tab`); +DELETE FROM `PREFIX_access` WHERE `id_tab` NOT IN (SELECT id_tab FROM `PREFIX_tab`); + +INSERT INTO `PREFIX_module` (`name`, `active`) VALUES ('statsforecast', 1); +INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook` , `position`) (SELECT id_module, 32, (SELECT max_position from (SELECT MAX(position)+1 as max_position FROM `PREFIX_hook_module` WHERE `id_hook` = 32) tmp) FROM `PREFIX_module` WHERE `name` = 'statsforecast'); + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_GEOLOCATION_ENABLED', '0', NOW(), NOW()), +('PS_ALLOWED_COUNTRIES', +'AF;ZA;AX;AL;DZ;DE;AD;AO;AI;AQ;AG;AN;SA;AR;AM;AW;AU;AT;AZ;BS;BH;BD;BB;BY;BE;BZ;BJ;BM;BT;BO;BA;BW;BV;BR;BN;BG;BF;MM;BI;KY;KH;CM;CA;CV;CF;CL;CN;CX;CY;CC;CO;KM;CG;CD;CK;KR;KP;CR;CI;HR;CU;DK;DJ;DM;EG;IE;SV;AE;EC;ER;ES;EE;ET;FK;FO;FJ;FI;FR;GA;GM;GE;GS;GH;GI;GR;GD;GL;GP;GU;GT;GG;GN;GQ;GW;GY;GF;HT;HM;HN;HK;HU;IM;MU;VG;VI;IN;ID;IR;IQ;IS;IL;IT;JM;JP;JE;JO;KZ;KE;KG;KI;KW;LA;LS;LV;LB;LR;LY;LI;LT;LU;MO;MK;MG;MY;MW;MV;ML;MT;MP;MA;MH;MQ;MR;YT;MX;FM;MD;MC;MN;ME;MS;MZ;NA;NR;NP;NI;NE;NG;NU;NF;NO;NC;NZ;IO;OM;UG;UZ;PK;PW;PS;PA;PG;PY;NL;PE;PH;PN;PL;PF;PR;PT;QA;DO;CZ;RE;RO;UK;RU;RW;EH;BL;KN;SM;MF;PM;VA;VC;LC;SB;WS;AS;ST;SN;RS;SC;SL;SG;SK;SI;SO;SD;LK;SE;CH;SR;SJ;SZ;SY;TJ;TW;TZ;TD;TF;TH;TL;TG;TK;TO;TT;TN;TM;TC;TR;TV;UA;UY;US;VU;VE;VN;WF;YE;ZM;ZW', NOW(), NOW()), +('PS_GEOLOCATION_BEHAVIOR', '0', NOW(), NOW()); + +ALTER TABLE `PREFIX_orders` ADD `conversion_rate` decimal(13,6) NOT NULL default 1 AFTER `payment`; +UPDATE `PREFIX_orders` o SET o.`conversion_rate` = ( + SELECT c.`conversion_rate` + FROM `PREFIX_currency` c + WHERE c.`id_currency` = o.`id_currency` + LIMIT 1 +); + +ALTER TABLE `PREFIX_order_slip` ADD `conversion_rate` decimal(13,6) NOT NULL default 1 AFTER `id_order`; +UPDATE `PREFIX_order_slip` os SET os.`conversion_rate` = ( + SELECT o.`conversion_rate` + FROM `PREFIX_orders` o + WHERE os.`id_order` = o.`id_order` + LIMIT 1 +); + +UPDATE `PREFIX_configuration` SET `value` = 'gridhtml' WHERE `name` = 'PS_STATS_GRID_RENDER' LIMIT 1; +UPDATE `PREFIX_module` SET `name` = 'gridhtml' WHERE `name` = 'gridextjs' LIMIT 1; + +ALTER TABLE `PREFIX_attachment` CHANGE `mime` `mime` varchar(64) NOT NULL; +ALTER TABLE `PREFIX_attachment` ADD `file_name` varchar(128) NOT NULL default '' AFTER `file`; +UPDATE `PREFIX_attachment` a SET `file_name` = ( + SELECT `name` FROM `PREFIX_attachment_lang` al WHERE al.`id_attachment` = a.`id_attachment` AND al.`id_lang` = ( + SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'PS_LANG_DEFAULT') + ); + +UPDATE `PREFIX_tab` SET `class_name` = 'AdminCMSContent' WHERE `class_name` = 'AdminCMS' LIMIT 1; + +SET @id_timezone = (SELECT `name` FROM `PREFIX_timezone` WHERE `id_timezone` = (SELECT `value` FROM `PREFIX_configuration` WHERE `name` = 'PS_TIMEZONE' LIMIT 1) LIMIT 1); +UPDATE `PREFIX_configuration` SET `value` = @id_timezone WHERE `name` = "PS_TIMEZONE" LIMIT 1; + +ALTER TABLE `PREFIX_country` ADD `id_currency` INT NOT NULL DEFAULT '0' AFTER `id_zone`; + +/* PHP */ +/* PHP:group_reduction_column_fix(); */; +/* PHP:ecotax_tax_application_fix(); */; +/* PHP:cms_block(); */; +/* PHP:add_new_tab(AdminGeolocation, es:Geolocalización|it:Geolocalizzazione|en:Geolocation|de:Geotargeting|fr:Géolocalisation, 8); */; diff --git a/install-dev/sql/upgrade/1.4.0.4.sql b/install-dev/sql/upgrade/1.4.0.4.sql new file mode 100644 index 000000000..9f5a803e7 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.4.sql @@ -0,0 +1,21 @@ +SET NAMES 'utf8'; +ALTER TABLE `PREFIX_product` CHANGE `ecotax` `ecotax` DECIMAL(21, 6) NOT NULL DEFAULT '0.00'; +/* PHP:move_crossselling(); */; + +UPDATE `PREFIX_cms` SET `id_cms_category` = 1; + +/* PHP:admin_stores_tab(); */; + +INSERT IGNORE INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) SELECT 'PS_LOCALE_LANGUAGE', l.`iso_code`, NOW(), NOW() FROM `PREFIX_configuration` c INNER JOIN `PREFIX_lang` l ON (l.`id_lang` = c.`value`) WHERE c.`name` = 'PS_LANG_DEFAULT'; +INSERT IGNORE INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) SELECT 'PS_LOCALE_COUNTRY', co.`iso_code`, NOW(), NOW() FROM `PREFIX_configuration` c INNER JOIN `PREFIX_country` co ON (co.`id_country` = c.`value`) WHERE c.`name` = 'PS_COUNTRY_DEFAULT'; +/* PHP:reorderpositions(); */; + +ALTER TABLE `PREFIX_webservice_permission` CHANGE `method` `method` ENUM( 'GET', 'POST', 'PUT', 'DELETE', 'HEAD' ) NOT NULL; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_ATTACHMENT_MAXIMUM_SIZE', '2', NOW(), NOW()), +('PS_SMARTY_CACHE', '1', NOW(), NOW()); + +ALTER TABLE `PREFIX_product_attribute` CHANGE `price` `price` decimal(20,6) NOT NULL default '0.000000'; +UPDATE `PREFIX_product_attribute` pa SET pa.`price` = pa.`price` / (1 + IFNULL((SELECT t.`rate` FROM `PREFIX_tax` t INNER JOIN `PREFIX_product` p ON (p.`id_tax` = t.`id_tax`) WHERE p.`id_product` = pa.`id_product`) ,0) / 100); + diff --git a/install-dev/sql/upgrade/1.4.0.5.sql b/install-dev/sql/upgrade/1.4.0.5.sql new file mode 100644 index 000000000..c13ce351c --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.5.sql @@ -0,0 +1,72 @@ +SET NAMES 'utf8'; + +SET @alias = (SELECT IFNULL((SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = "AdminAlias" LIMIT 1), '0')); +UPDATE `PREFIX_tab` SET `id_parent` = 8 WHERE `id_tab` = @alias LIMIT 1; +SET @stores = (SELECT IFNULL((SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = "AdminStores" LIMIT 1), '0')); +UPDATE `PREFIX_tab` SET `id_parent` = 9 WHERE `id_tab` = @stores LIMIT 1; +SET @pdf = (SELECT IFNULL((SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = "AdminPDF" LIMIT 1), '0')); +UPDATE `PREFIX_tab` SET `id_parent` = 3 WHERE `id_tab` = @pdf LIMIT 1; +SET @tabs = (SELECT IFNULL((SELECT `id_tab` FROM `PREFIX_tab` WHERE `class_name` = "AdminTabs" LIMIT 1), '0')); +UPDATE `PREFIX_tab` SET `id_parent` = 29 WHERE `id_tab` = @tabs LIMIT 1; + +ALTER TABLE `PREFIX_image_type` ADD `stores` tinyint(1) NOT NULL default '1'; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_FORCE_SMARTY_2', '0', NOW(), NOW()), +('PS_DIMENSION_UNIT', 'cm', NOW(), NOW()); + +ALTER TABLE `PREFIX_product` +ADD `width` FLOAT NOT NULL AFTER `location`, +ADD `height` FLOAT NOT NULL AFTER `width`, +ADD `depth` FLOAT NOT NULL AFTER `height`; + +SET @id_module = (SELECT IFNULL((SELECT `id_module` FROM `PREFIX_module` WHERE `name` = "statshome" LIMIT 1), '0')); +DELETE FROM `PREFIX_module` WHERE `id_module` = @id_module; +DELETE FROM `PREFIX_hook_module` WHERE `id_module` = @id_module; + +ALTER TABLE `PREFIX_customer` ADD `is_guest` TINYINT(1) NOT NULL DEFAULT '0' AFTER `deleted`; +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES ('PS_GUEST_CHECKOUT_ENABLED', '0', NOW(), NOW()); + +ALTER TABLE `PREFIX_category` ADD `nleft` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `level_depth`; +ALTER TABLE `PREFIX_category` ADD `nright` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `nleft`; +ALTER TABLE `PREFIX_category` ADD INDEX `nleftright` (`nleft`, `nright`); + +ALTER TABLE `PREFIX_product` ADD `id_tax_rules_group` int(10) unsigned NOT NULL AFTER `id_tax`; +ALTER TABLE `PREFIX_carrier` ADD `id_tax_rules_group` int(10) unsigned NOT NULL AFTER `id_tax`; + +CREATE TABLE `PREFIX_tax_rule` ( +`id_tax_rules_group` INT NOT NULL , +`id_country` INT NOT NULL , +`id_state` INT NOT NULL , +`id_tax` INT NOT NULL , +`state_behavior` INT NOT NULL , +PRIMARY KEY ( `id_tax_rules_group`, `id_country` , `id_state` ) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE `PREFIX_tax_rules_group` ( +`id_tax_rules_group` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`name` VARCHAR( 32 ) NOT NULL , +`active` INT NOT NULL +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `PREFIX_help_access` ( + `id_help_access` int(11) NOT NULL AUTO_INCREMENT, + `label` varchar(45) NOT NULL, + `version` varchar(8) NOT NULL, + PRIMARY KEY (`id_help_access`), + UNIQUE KEY `label` (`label`) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +/* PHP:add_new_tab(AdminTaxRulesGroup, it:Regimi fiscali|es:Reglas de Impuestos|fr:Règles de taxes|de:Steuerregeln|en:Tax Rules, 4); */; +/* PHP:generate_ntree(); */; +/* PHP:generate_tax_rules(); */; +/* PHP:id_currency_country_fix(); */; +/* PHP:update_modules_sql(); */; + +ALTER TABLE `PREFIX_product` DROP `id_tax`; +ALTER TABLE `PREFIX_carrier` DROP `id_tax`; + +DROP TABLE `PREFIX_tax_state`, `PREFIX_tax_zone`, `PREFIX_country_tax`; +ALTER TABLE `PREFIX_orders` ADD `carrier_tax_rate` DECIMAL(10, 3) NOT NULL default '0.00' AFTER `total_shipping`; + +INSERT INTO `PREFIX_hook` (`id_hook`, `name`, `title`, `description`, `position`) VALUES (NULL, 'beforeAuthentication', 'Before Authentication', 'Before authentication', 0); diff --git a/install-dev/sql/upgrade/1.4.0.6.sql b/install-dev/sql/upgrade/1.4.0.6.sql new file mode 100644 index 000000000..f3b33b76d --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.6.sql @@ -0,0 +1,12 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_customer` DROP INDEX `customer_email`; +ALTER TABLE `PREFIX_customer` ADD INDEX `customer_email` (`email`); + +ALTER TABLE `PREFIX_lang` ADD `language_code` char(5) NULL AFTER `iso_code`; +UPDATE `PREFIX_lang` SET language_code = iso_code; +ALTER TABLE `PREFIX_lang` MODIFY `language_code` char(5) NOT NULL; + +DELETE FROM `PREFIX_module` WHERE `name` = 'gridextjs' LIMIT 1; +DELETE FROM `PREFIX_hook_module` WHERE `id_module` NOT IN (SELECT id_module FROM `PREFIX_module`); +UPDATE `PREFIX_configuration` SET `value` = 'gridhtml' WHERE `name` = 'PS_STATS_GRID_RENDER' AND `value` = 'gridextjs' LIMIT 1; diff --git a/install-dev/sql/upgrade/1.4.0.7.sql b/install-dev/sql/upgrade/1.4.0.7.sql new file mode 100644 index 000000000..1edfbdac1 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.7.sql @@ -0,0 +1,10 @@ +SET NAMES 'utf8'; + +ALTER TABLE `PREFIX_product_attribute` ADD `minimal_quantity` int(10) unsigned NOT NULL DEFAULT '1' AFTER `default_on`; + +ALTER TABLE `PREFIX_orders` ADD `reference` VARCHAR(14) NOT NULL AFTER `id_address_invoice`; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES('PS_DISPLAY_SUPPLIERS', '1', NOW(), NOW()); + +/* PHP:update_products_ecotax_v133(); */; + diff --git a/install-dev/sql/upgrade/1.4.0.8.sql b/install-dev/sql/upgrade/1.4.0.8.sql new file mode 100644 index 000000000..a35527ade --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.8.sql @@ -0,0 +1,21 @@ +SET NAMES 'utf8'; + +UPDATE `PREFIX_tab` +SET `position` = `position` + 1 +WHERE `id_parent` = (SELECT * FROM (SELECT `id_parent` FROM `PREFIX_tab` WHERE `class_name` = 'AdminTaxes') tmp) +AND `position` > (SELECT * FROM (SELECT `position` FROM `PREFIX_tab` WHERE `class_name` = 'AdminTaxes') tmp2); + +UPDATE `PREFIX_tab` +SET `position` = (SELECT * FROM (SELECT `position` FROM `PREFIX_tab` WHERE `class_name` = 'AdminTaxes') tmp) + 1 +WHERE `class_name` = 'AdminTaxRulesGroup'; + +UPDATE `PREFIX_hook` SET `title` = 'Category creation', description = '' WHERE `name` = 'categoryAddition' LIMIT 1; +UPDATE `PREFIX_hook` SET `title` = 'Category modification', description = '' WHERE `name` = 'categoryUpdate' LIMIT 1; +UPDATE `PREFIX_hook` SET `title` = 'Category removal', description = '' WHERE `name` = 'categoryDeletion' LIMIT 1; + +DELETE FROM `PREFIX_module` WHERE `name` = 'canonicalurl' LIMIT 1; +DELETE FROM `PREFIX_hook_module` WHERE `id_module` NOT IN (SELECT id_module FROM `PREFIX_module`); + +/* PHP:gridextjs_deprecated(); */; +/* PHP:shop_url(); */; +/* PHP:updateproductcomments(); */; \ No newline at end of file diff --git a/install-dev/sql/upgrade/1.4.0.9.sql b/install-dev/sql/upgrade/1.4.0.9.sql new file mode 100644 index 000000000..a975b0927 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.0.9.sql @@ -0,0 +1,16 @@ +SET NAMES 'utf8'; + +CREATE TABLE `PREFIX_specific_price_priority` ( +`id_specific_price_priority` INT NOT NULL AUTO_INCREMENT , +`id_product` INT NOT NULL , +`priority` VARCHAR( 80 ) NOT NULL , +PRIMARY KEY ( `id_specific_price_priority` , `id_product` ) +) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; + +ALTER TABLE `PREFIX_product` ADD `unit_price_ratio` DECIMAL(20, 6) NOT NULL default '0.00' AFTER `unit_price`; + +UPDATE `PREFIX_product` SET `unit_price_ratio` = IF (`unit_price` != 0, `price` / `unit_price`, 0); + +ALTER TABLE `PREFIX_product` DROP `unit_price`; + +ALTER TABLE `PREFIX_discount` ADD `behavior_not_exhausted` TINYINT(3) DEFAULT '1' AFTER `id_discount_type`; diff --git a/install-dev/sql/upgrade/1.4.1.0.sql b/install-dev/sql/upgrade/1.4.1.0.sql new file mode 100755 index 000000000..d49cab601 --- /dev/null +++ b/install-dev/sql/upgrade/1.4.1.0.sql @@ -0,0 +1,22 @@ +SET NAMES 'utf8'; + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`, `live_edit`) VALUES ('afterSaveAdminMeta', 'After save configuration in AdminMeta', 'After save configuration in AdminMeta', 0, 0); + +INSERT INTO `PREFIX_hook_module` (`id_module`, `id_hook`, `position`) VALUES +( +(SELECT `id_module` FROM `PREFIX_module` WHERE `name` = 'blockcategories'), +(SELECT `id_hook` FROM `PREFIX_hook` WHERE `name` = 'afterSaveAdminMeta'), 1 +); + + +ALTER TABLE `PREFIX_webservice_account` ADD `is_module` TINYINT( 2 ) NOT NULL DEFAULT '0' AFTER `class_name` , +ADD `module_name` VARCHAR( 50 ) NULL DEFAULT NULL AFTER `is_module`; + +INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES +('PS_IMG_UPDATE_TIME', UNIX_TIMESTAMP(), NOW(), NOW()); + +UPDATE `PREFIX_cms_lang` set link_rewrite = "uber-uns" where link_rewrite like "%ber-uns"; + +ALTER TABLE `PREFIX_connections` CHANGE `ip_address` `ip_address` BIGINT NULL DEFAULT NULL; + +/* PHP:alter_cms_block(); */; diff --git a/install-dev/view.css b/install-dev/view.css new file mode 100644 index 000000000..7fb954a49 --- /dev/null +++ b/install-dev/view.css @@ -0,0 +1,590 @@ +@CHARSET "UTF-8"; + +/* +purple #d41958 + +green #7eb423 +*/ + +body{ + background-image : url(img/bg-body.png); + font-family:Verdana, Geneva, Arial, Helvetica, sans-serif; +} + +a:link, a:active, a:visited{ + text-decoration:none; + color:#d41958; +} +a:hover{ + color:#7eb423; +} + +#container{ + margin:1em auto 0 auto; + width:930px; + padding:10px 30px 0px 30px; + font-size:0.8em; + background : #456d01 url(img/bg-ctnr.png) top repeat-x; + display:none; +} + +#loaderSpace{ + height:24px; +} +div#loader{ + float:right; + background-image:url(../img/loadingAnimation.gif); + height:13px; + width:208px; + color:white; + display:none; +} + +div#leftpannel{ + float:left; + width:250px; + margin-top: 15px; +} + +div#leftpannel div#help{ + width:175px; + height:129px; + margin:20px 0; + padding:5px; + background:url('img/bg_help.png') no-repeat; + font-family:Arial, sans-serif; +} +div#leftpannel div#help img.ico_help{float:left; margin:5px;} +div#leftpannel div#help div.content{ + float:right; + width:125px; +} +div#leftpannel div#help div.content p.title{color:#fff;font-weight:bold;font-size:10.5pt;margin:6pt 0 3px 0;} +div#leftpannel div#help div.content p.title_down{color:#383838;font-size:8pt;margin:0;} +div#leftpannel div#help div.content ul{margin:10px 0;padding:0;} +div#leftpannel div#help div.content ul li{clear:both;padding-bottom:5px;list-style-type:none;} +div#leftpannel div#help div.content ul li img, + div#leftpannel div#help div.content ul li a{ float:left; } +div#leftpannel div#help div.content ul li a{ + display:block; + margin-left:6px; + color:#fff; + font-weight:bold; + line-height:17px; + vertical-align:middle; + text-decoration:underline; +} + +ol#tabs{ + list-style-type:none; + margin:0; + padding:0; +} + +ol#tabs li{ + background-color:#CFE5BD; + font-size:1em; + height:25px; + padding-top:10px; + clear:both; + background-color:#699d0f; + color:white; + font-weight:bold; +} + +ol#tabs li.selected{ + background : url(img/bg-tab.png) repeat-x; + height:36px; + padding-top:23px; +} + +ol#tabs li.finished{ + font-weight:normal; +} +ol#tabs li span { + display:block; + padding-left:20px; + margin-left:20px; + height:18px; +} + +ol#tabs li span.number1 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/01-gd100.png', sizingMethod='crop'); +} +html>body ol#tabs li.selected span.number1 { + filter: none; + background: url('img/01-pt100.png') no-repeat; +} + + +ol#tabs li.selected span.number1 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/01-gd100.png', sizingMethod='crop'); +} +html>body ol#tabs li.selected span.number1 { + filter: none; + background: url('img/01-gd100.png') no-repeat; +} + + + +ol#tabs li.finished span.number1 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/01-pt70.png', sizingMethod='crop'); +} +html>body ol#tabs li.finished span.number1 { + filter: none; + background: url('img/01-pt70.png') no-repeat; +} + +ol#tabs li span.number2 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/02-pt100.png', sizingMethod='crop'); +} +html>body ol#tabs li span.number2 { + filter: none; + background: url('img/02-pt100.png') no-repeat; +} + + + +ol#tabs li.selected span.number2 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/02-gd100.png', sizingMethod='crop'); +} +html>body ol#tabs li.selected span.number2 { + filter: none; + background: url('img/02-gd100.png') no-repeat; +} + + +ol#tabs li.finished span.number2 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/02-pt70.png', sizingMethod='crop'); +} +html>body ol#tabs li.finished span.number2 { + filter: none; + background: url('img/02-pt70.png') no-repeat; +} + +ol#tabs li span.number3 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/03-pt100.png', sizingMethod='crop'); +} +html>body ol#tabs li span.number3 { + filter: none; + background: url('img/03-pt100.png') no-repeat; +} + +ol#tabs li.selected span.number3 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/03-gd100.png', sizingMethod='crop'); +} +html>body ol#tabs li.selected span.number3 { + filter: none; + background: url('img/03-gd100.png') no-repeat; +} + +ol#tabs li.finished span.number3 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/03-pt70.png', sizingMethod='crop'); +} +html>body ol#tabs li.finished span.number3 { + filter: none; + background: url('img/03-pt70.png') no-repeat; +} + +ol#tabs li span.number4 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/04-pt100.png', sizingMethod='crop'); +} +html>body ol#tabs li span.number4 { + filter: none; + background: url('img/04-pt100.png') no-repeat; +} + +ol#tabs li.selected span.number4 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/04-gd100.png', sizingMethod='crop'); +} +html>body ol#tabs li.selected span.number4 { + filter: none; + background: url('img/04-gd100.png') no-repeat; +} + +ol#tabs li.finished span.number4 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/04-pt70.png', sizingMethod='crop'); +} +html>body ol#tabs li.finished span.number4 { + filter: none; + background: url('img/04-pt70.png') no-repeat; +} + +ol#tabs li span.number5 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/05-pt100.png', sizingMethod='crop'); +} +html>body ol#tabs li span.number5 { + filter: none; + background: url('img/05-pt100.png') no-repeat; +} + +ol#tabs li.selected span.number5 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/05-gd100.png', sizingMethod='crop'); +} +html>body ol#tabs li.selected span.number5 { + filter: none; + background: url('img/05-gd100.png') no-repeat; +} + +ol#tabs li.finished span.number5 { + background:none; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/05-pt70.png', sizingMethod='crop'); +} +html>body ol#tabs li.finished span.number5 { + filter: none; + background: url('img/05-pt70.png') no-repeat; +} + +div#sheets { + float:left; + background-color:white; + margin-top:15px; + min-height:400px; + +} +* html div#sheets { + height: 400px; +} + +#sheets div.sheet{ + display:none; + width:650px; + padding:1em; +} + +h1{ + color:#7EB423; + margin:0; + text-align:center; +} + +h2{ + color:#7EB423; + font-size:1.3em; + margin:0pt 0pt 0.5em; + text-transform:uppercase; + font-weight:bold; +} + +h3{ + color:#d41958; + margin:2em 0; + font-size:0.9em; +} +p{ + margin : 0.5em 0; +} + +#sheets div#sheet_lang{ + display:block; +} + +ul#langList { + list-style-type:none; +} + +ul#langList img { + margin:0 2px; +} + +input.button { + background:transparent url(img/bt.png) no-repeat scroll 0%; + border:medium none; + color:white; + font-size:0.97em; + font-weight:bold; + margin:0pt 0.1em; + height:26px; + width:177px; + padding-bottom:0.3em; +} +input.button.little{ + background : url(img/boutonpt-on.png) no-repeat; + height:23px; + width:102px; +} + +input.button:hover { + background : url(img/bt-hover.png) no-repeat; +} +input.button.little:hover{ + background : url(img/boutonpt-over.png) no-repeat; +} + +input.button.disabled { + background : url(img/bt-dsbl.png) no-repeat; +} +input.button.little.disabled{ + background : url(img/boutonpt-disabled.png) no-repeat; +} + + +label.disabled, p.disabled{ + color:gray; +} + +input.text { + border:1px gray solid; + width:175px; +} +input.text.required { + border-color:#D41958; +} + +div#buttons{ + clear:both; + margin-right:2px; + margin-bottom:0px; + margin-top:0px; + text-align:right; + height:70px; +} + +* html div#buttons { + margin-bottom:60px; + margin-top:-30px; +} + +div#buttons input{ + margin-top :5px; + margin-left :5px; +} + +div#sheet_require ul, div#sheet_require_update ul{ + list-style-type:none; +} + +div#sheets .ok{ + padding-left: 20px; + background: url(img/ok.gif) left no-repeat; +} + +div#sheets .fail{ + font-weight:bold; + padding-left: 20px; + background: url(img/bad.gif) left no-repeat; + color:#D41958; +} + +.userInfos{ + color:gray; + font-style:italic; + font-size:0.85em; +} +p.userInfos.aligned{ + margin-left:160px; +} + +div#mailSMTPParam{ + display:none; +} + +img#uploadedImage{ + border:3px dashed #E0E0E0; + margin:auto; + padding:3px; +} +ul#footer{ + margin-top:5px; + list-style-type:none; + text-align:center; + font-size:0.7em; + margin-bottom:2px; + color:white; +} +ul#footer li{ + display:inline; +} + +ul#footer a:link, ul#footer a:active, ul#footer a:visited{ + text-decoration:none; + color:white; +} +ul#footer a:hover{ + color:#7eb423; +} + + +label.aligned{ + width:245px; + float:left; + display:block; + text-align:right; + margin-right:1em; +} +input.aligned{ + margin-left:258px; +} +* html input.aligned{ + margin-left:0; +} +span.aligned{ + margin-left:258px; +} +div.field { + margin-bottom:1.5em; +} +span.result{ + display:none; +} +div#disclaimerDivCertify{ + text-align:center; +} +div#updateLog{ + height:200px; + width:100%; + border:gray 1px dashed; + overflow:auto; + display:none; +} + +table#resultInstall{ + width:100%; + margin:10px auto 5px auto; + border:none; +} +table#resultInstall td{ + border-bottom:3px solid #FFF; + background:#F5FFE4; + padding:5px; +} +table#resultInstall td.label{ + width:35%; + text-align:right; +} +table#resultInstall td.resultEnd{width:65%;color:#D41956;font-weight:bold;} +p#alignedLogo{ + text-align:center; +} + +form.aligned{ + border:1px dashed gray; + padding:10px; + width:60%; + margin:20px 0; +} +form.aligned p{ +height:30px; +} +form.aligned label { + display:block; + width:150px; + float:left; +} +form.aligned input.text { + display:block; + width:150px; + float:left; +} + +p.aligned{ + text-align:center; +} +li.title{ + font-weight:bold; + margin:0.5em 0; +} +#infosFirstname{ + text-transform:capitalize; +} +div.request{ + border-top:1px gray dotted; + margin-top:10px; + padding-top:10px; +} +div#PrestaShopLogo{ + background:none; + width:233px; + height:68px; + text-indent:-1000px; + margin:0 auto; + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/logo.png', sizingMethod='crop'); +} +html>body div#PrestaShopLogo { + filter: none; + background: url(img/logo.png) left no-repeat; +} + +div.installerVersion, div.updaterVersion { + color:#FFFFFF; + font-size:14px; + text-align:left; + padding:10px; + text-transform:uppercase; +} + +p#dbResultCheck{ + height:auto; +} +div#resultEnd{ + clear:both; +} + +div#noJavaScript{ + margin: 100px 200px 20px 200px; + padding: 100px 30px; + background-color: white; + text-align: center; +} + +a#access, a#access_update{ + display:block; + width:300px; + height:150px; + background:url('img/btn-installeur.png') top left; + font-family:Arial, sans-serif; +} +a#access:hover,a#access_update:hover{background:url('img/btn-installeur.png') bottom left;} +a#access.BO{float:left;} +a#access.FO{float:right;} +a#access span{display:block;} +a#access span.title{margin:5px 15px;font-size:18pt;font-weight:bold;color:#FFF;} +a#access span.description{margin:10px 20px;color:#FFF;height:63px;} +a#access span.message{margin-left:20px;font-weight:bold;color:#FFF;} +a#access_update{float:left;} +a#access_update span{display:block;} +a#access_update span.title{margin:5px 15px;font-size:18pt;font-weight:bold;color:#FFF;} +a#access_update span.description{margin:10px 20px;color:#FFF;height:63px;} +a#access_update span.message{margin-left:20px;font-weight:bold;color:#FFF;} +h3.no-margin{margin:0;} +iframe#prestastore{width:100%;height:430px;border:none;margin:0px;} +iframe#prestastore_update{clear:both;width:100%;height:430px;border:none;margin-top:15px;} +p#php5_nok { + color:#fff; +} +p#php5_nok a { + color:#fff; + font-weight:bold; + text-decoration:underline; +} +#resultConfigHelper a{ + text-decoration:underline; +} + +#phone_block{ + font-size: 16px; + color: #fff; + height: 25px; + width: 225px; + margin-left: 3px; +} + +#phone_block span{ + font-size: 11px; + display: block; + width: 185px; +} diff --git a/install-dev/xml/checkConfig.php b/install-dev/xml/checkConfig.php new file mode 100644 index 000000000..45cffbc54 --- /dev/null +++ b/install-dev/xml/checkConfig.php @@ -0,0 +1,78 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 +header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé +include_once(INSTALL_PATH.'/classes/ConfigurationTest.php'); + +// Functions list to test with 'test_system' +$funcs = array('fopen', 'fclose', 'fread', 'fwrite', 'rename', 'file_exists', 'unlink', 'rmdir', 'mkdir', 'getcwd', 'chdir', 'chmod'); + +// Test list to execute (function/args) +$tests = array( + 'phpversion' => false, + 'upload' => false, + 'system' => $funcs, + 'gd' => false, + 'mysql_support' => false, + 'config_dir' => INSTALL_PATH.'/../config/', + 'tools_dir' => INSTALL_PATH.'/../tools/smarty/compile/', + 'cache_dir' => INSTALL_PATH.'/../tools/smarty/cache/', + 'tools_v2_dir' => INSTALL_PATH.'/../tools/smarty_v2/compile/', + 'cache_v2_dir' => INSTALL_PATH.'/../tools/smarty_v2/cache/', + 'sitemap' => INSTALL_PATH.'/../sitemap.xml', + 'img_dir' => INSTALL_PATH.'/../img/', + 'mails_dir' => INSTALL_PATH.'/../mails/', + 'module_dir' => INSTALL_PATH.'/../modules/', + 'theme_lang_dir' => INSTALL_PATH.'/../themes/prestashop/lang/', + 'theme_cache_dir' => INSTALL_PATH.'/../themes/prestashop/cache/', + 'translations_dir' => INSTALL_PATH.'/../translations/', + 'customizable_products_dir' => INSTALL_PATH.'/../upload/', + 'virtual_products_dir' => INSTALL_PATH.'/../download/', +); +$tests_op = array( + 'fopen' => false, + 'register_globals' => false, + 'gz' => false, + 'mcrypt' => false, +); + +// Execute tests +$res = ConfigurationTest::check($tests); +$res_op = ConfigurationTest::check($tests_op); + +// Building XML Tree... +echo ''."\n"; + echo ''."\n"; + echo ''."\n"; + foreach ($res AS $key => $line) + echo ''."\n"; + echo ''."\n"; + echo ''."\n"; + foreach ($res_op AS $key => $line) + echo ''."\n"; + echo ''."\n"; +echo ''; diff --git a/install-dev/xml/checkDB.php b/install-dev/xml/checkDB.php new file mode 100644 index 000000000..62b1f456c --- /dev/null +++ b/install-dev/xml/checkDB.php @@ -0,0 +1,29 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); +$resultDB = ToolsInstall::checkDB($_GET['server'], $_GET['login'], $_GET['password'], $_GET['name'], true, $_GET['engine']); +die("\n"); diff --git a/install-dev/xml/checkMail.php b/install-dev/xml/checkMail.php new file mode 100644 index 000000000..91b9aa982 --- /dev/null +++ b/install-dev/xml/checkMail.php @@ -0,0 +1,44 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); + +$smtpChecked = (trim($_GET['mailMethod']) == 'smtp'); +$smtpServer = $_GET['smtpSrv']; +$content = $_GET['testMsg']; +$subject = $_GET['testSubject']; +$type = 'text/html'; +$to = $_GET['testEmail']; +$from = 'no-reply@'.ToolsInstall::getHttpHost(false, true); +$smtpLogin = $_GET['smtpLogin']; +$smtpPassword = $_GET['smtpPassword']; +$smtpPort = $_GET['smtpPort']; +$smtpEncryption = $_GET['smtpEnc']; + +$result = ToolsInstall::sendMail($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort, $smtpEncryption); +die($result ? '' : ''); + diff --git a/install-dev/xml/checkShopInfos.php b/install-dev/xml/checkShopInfos.php new file mode 100644 index 000000000..bbaa6967c --- /dev/null +++ b/install-dev/xml/checkShopInfos.php @@ -0,0 +1,269 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +if (function_exists('date_default_timezone_set')) + date_default_timezone_set('Europe/Paris'); + +define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); +define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); + +include(INSTALL_PATH.'/classes/AddConfToFile.php'); +include(INSTALL_PATH.'/../classes/Validate.php'); +include(INSTALL_PATH.'/../classes/Db.php'); +include(INSTALL_PATH.'/../classes/Tools.php'); +include_once(INSTALL_PATH.'/../config/settings.inc.php'); + +function isFormValid() +{ + global $error; + $validInfos = true; + foreach ($error as $anError) + if ($anError != '') + $validInfos = false; + return $validInfos; +} + +$error = array(); +foreach ($_GET AS &$var) +{ + if (is_string($var)) + $var = html_entity_decode($var, ENT_COMPAT, 'UTF-8'); + elseif (is_array($var)) + foreach ($var AS &$row) + $row = html_entity_decode($row, ENT_COMPAT, 'UTF-8'); +} + +if(!isset($_GET['infosShop']) OR empty($_GET['infosShop'])) + $error['infosShop'] = '0'; +else + $error['infosShop'] = ''; + +if(!isset($_GET['infosFirstname']) OR empty($_GET['infosFirstname'])) + $error['infosFirstname'] = '0'; +else + $error['infosFirstname'] = ''; + +if(!isset($_GET['infosName']) OR empty($_GET['infosName'])) + $error['infosName'] = '0'; +else + $error['infosName'] = ''; + +if(isset($_GET['infosEmail']) AND !Validate::isEmail($_GET['infosEmail'])) + $error['infosEmail'] = '3'; +else + $error['infosEmail'] = ''; + +if (isset($_GET['infosShop']) AND !Validate::isGenericName($_GET['infosShop'])) + $error['validateShop'] = '46'; +else + $error['validateShop'] = ''; + +if (isset($_GET['infosFirstname']) AND !Validate::isName($_GET['infosFirstname'])) + $error['validateFirstname'] = '47'; +else + $error['validateFirstname'] = ''; + +if (isset($_GET['infosName']) AND !Validate::isName($_GET['infosName'])) + $error['validateName'] = '48'; +else + $error['validateName'] = ''; + +if (isset($_GET['catalogMode']) AND !Validate::isInt($_GET['catalogMode'])) + $error['validateCatalogMode'] = '52'; +else + $error['validateCatalogMode'] = ''; + +if(!isset($_GET['infosEmail']) OR empty($_GET['infosEmail'])) + $error['infosEmail'] = '0'; + +if (!isset($_GET['infosPassword']) OR empty($_GET['infosPassword'])) + $error['infosPassword'] = '0'; +else + $error['infosPassword'] = ''; + +if (!isset($_GET['infosPasswordRepeat']) OR empty($_GET['infosPasswordRepeat'])) + $error['infosPasswordRepeat'] = '0'; +else + $error['infosPasswordRepeat'] = ''; + +if($error['infosPassword'] == '' AND $_GET['infosPassword'] != $_GET['infosPasswordRepeat']) + $error['infosPassword'] = '2'; + +if($error['infosPassword'] == '' AND (Tools::strlen($_GET['infosPassword']) < 8 OR !Validate::isPasswdAdmin($_GET['infosPassword']))) + $error['infosPassword'] = '12'; + +///////////////////////////// +// IF ALL IS OK DO THE NEXT// +///////////////////////////// + +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); +$dbInstance = Db::getInstance(); +// set Languages +$error['infosLanguages'] = ''; +if(isFormValid()) +{ + /*$idDefault = array_search($_GET['infosDL'][0], $_GET['infosWL']) + 1; + //prepare the requests + $sqlLanguages = array(); + + $sqlLanguages[] = "UPDATE `"._DB_PREFIX_."configuration` SET `value` = '".$idDefault."' WHERE `"._DB_PREFIX_."configuration`.`id_configuration` =1"; + $sqlLanguages[] = "TRUNCATE TABLE `"._DB_PREFIX_."lang`"; + + foreach ($_GET['infosWL'] AS $wl) + $sqlLanguages[] = "INSERT INTO `"._DB_PREFIX_."lang` (`id_lang` ,`name` ,`active` ,`iso_code`)VALUES (NULL , '".ToolsInstall::getLangString($wl)."', '1', '".pSQL($wl)."')"; + foreach($sqlLanguages AS $query) + if(!Db::getInstance()->Execute($query)) + $error['infosLanguages'] = '11'; + + // Flags copy + if(!$languagesId = Db::getInstance()->ExecuteS('SELECT `id_lang`, `iso_code` FROM `'._DB_PREFIX_.'lang`')) + $error['infosLanguages'] = '11'; + + unset($dbInstance);*/ +} + +// Mail Notification +$error['infosNotification'] = ''; +if (isFormValid()) +{ + if (isset($_GET['infosNotification']) AND $_GET['infosNotification'] == 'on') { + include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); + $smtpChecked = (trim($_GET['infosMailMethod']) == 'smtp'); + $smtpServer = $_GET['smtpSrv']; + $subject = $_GET['infosShop']." - " . $_GET['mailSubject']; + $type = 'text/html'; + $to = $_GET['infosEmail']; + $from = "no-reply@".ToolsInstall::getHttpHost(false, true); + $smtpLogin = $_GET['smtpLogin']; + $smtpPassword = $_GET['smtpPassword']; + $smtpPort = $_GET['smtpPort'];//'default','secure' + $smtpEncryption = $_GET['smtpEnc'];//"tls","ssl","off" + $content = ToolsInstall::getNotificationMail($_GET['infosShop'], INSTALLER__PS_BASE_URI_ABSOLUTE, INSTALLER__PS_BASE_URI_ABSOLUTE."img/logo.jpg", ToolsInstall::strtoupper($_GET['infosFirstname']), $_GET['infosName'], $_GET['infosPassword'], $_GET['infosEmail']); + + $result = @ToolsInstall::sendMail($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort, $smtpEncryption); + } +} + +//Insert configuration parameters into the database +$error['infosInsertSQL'] = ''; +if (isFormValid()) +{ + $sqlParams = array(); + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_SHOP_DOMAIN', '".Tools::getHttpHost()."', NOW(), NOW())"; + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_SHOP_DOMAIN_SSL', '".Tools::getHttpHost()."', NOW(), NOW())"; + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_INSTALL_VERSION', '".pSQL(INSTALL_VERSION)."', NOW(), NOW())"; + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_SHOP_NAME', '".pSQL($_GET['infosShop'])."', NOW(), NOW())"; + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_SHOP_EMAIL', '".pSQL($_GET['infosEmail'])."', NOW(), NOW())"; + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_METHOD', '".pSQL($_GET['infosMailMethod'] == "smtp" ? "2": "1")."', NOW(), NOW())"; + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = \''.pSQL($_GET['isoCode']).'\' WHERE name = \'PS_LOCALE_LANGUAGE\''; + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = \''.(int)$_GET['catalogMode'].'\' WHERE name = \'PS_CATALOG_MODE\''; + $sqlParams[] = "INSERT IGNORE INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_SHOP_ACTIVITY', '".(int)($_GET['infosActivity'])."', NOW(), NOW())"; + if ((int)($_GET['infosCountry']) != 0) + { + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = '.(int)($_GET['infosCountry']).' WHERE name = \'PS_COUNTRY_DEFAULT\''; + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = "'.pSQL($_GET['infosTimezone']).'" WHERE name = \'PS_TIMEZONE\''; + $sql_isocode = Db::getInstance()->getValue('SELECT `iso_code` FROM `'._DB_PREFIX_.'country` WHERE `id_country` = '.(int)($_GET['infosCountry'])); + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = \''.pSQL($sql_isocode).'\' WHERE name = \'PS_LOCALE_COUNTRY\''; + + } + Language::loadLanguages(); + Configuration::loadConfiguration(); + require_once(dirname(__FILE__).'/../../config/defines.inc.php'); + require_once(dirname(__FILE__).'/../../classes/LocalizationPack.php'); + + + $context = stream_context_create(array('http' => array('timeout' => 5))); + $localization_file = @Tools::file_get_contents('http://www.prestashop.com/download/localization_pack.php?country='.$_GET['countryName'], false, $context); + if (!$localization_file AND file_exists(dirname(__FILE__).'/../../localization/'.strtolower($_GET['countryName']).'.xml')) + $localization_file = @file_get_contents(dirname(__FILE__).'/../../localization/'.strtolower($_GET['countryName']).'.xml'); + if ($localization_file) + { + $localizationPack = new LocalizationPackCore(); + $localizationPack->loadLocalisationPack($localization_file, '', true); + if (Configuration::get('PS_LANG_DEFAULT') == 1) + { + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = (SELECT id_lang FROM '._DB_PREFIX_.'lang WHERE iso_code = \''.pSQL($_GET['isoCode']).'\') WHERE name = \'PS_LANG_DEFAULT\''; + } + } + if (isset($_GET['infosMailMethod']) AND $_GET['infosMailMethod'] == "smtp") + { + $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SERVER', '".pSQL($_GET['smtpSrv'])."', NOW(), NOW())"; + $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_USER', '".pSQL($_GET['smtpLogin'])."', NOW(), NOW())"; + $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_PASSWD', '".pSQL($_GET['smtpPassword'])."', NOW(), NOW())"; + $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SMTP_ENCRYPTION', '".pSQL($_GET['smtpEnc'])."', NOW(), NOW())"; + $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SMTP_PORT', '".pSQL($_GET['smtpPort'])."', NOW(), NOW())"; + } + $sqlParams[] = 'INSERT INTO '._DB_PREFIX_.'employee (id_employee, lastname, firstname, email, passwd, last_passwd_gen, bo_theme, active, id_profile, id_lang) VALUES (NULL, \''.pSQL(ToolsInstall::ucfirst($_GET['infosName'])).'\', \''.pSQL(ToolsInstall::ucfirst($_GET['infosFirstname'])).'\', \''.pSQL($_GET['infosEmail']).'\', \''.md5(pSQL(_COOKIE_KEY_.$_GET['infosPassword'])).'\', \''.date('Y-m-d h:i:s', strtotime('-360 minutes')).'\', \'oldschool\', 1, 1, (SELECT `value` FROM `'._DB_PREFIX_.'configuration` WHERE `name` LIKE "PS_LANG_DEFAULT"))'; + $sqlParams[] = 'INSERT INTO '._DB_PREFIX_.'contact (id_contact, email, customer_service) VALUES (NULL, \''.pSQL($_GET['infosEmail']).'\', 1), (NULL, \''.pSQL($_GET['infosEmail']).'\', 1)'; + + if (function_exists('mcrypt_encrypt')) + { + $settings = file_get_contents(dirname(__FILE__).'/../../config/settings.inc.php'); + if (!strstr($settings, '_RIJNDAEL_KEY_')) + { + $key_size = mcrypt_get_key_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); + $key = Tools::passwdGen($key_size); + $settings = preg_replace('/define\(\'_COOKIE_KEY_\', \'([a-z0-9=\/+-_]+)\'\);/i', 'define(\'_COOKIE_KEY_\', \'\1\');'."\n".'define(\'_RIJNDAEL_KEY_\', \''.$key.'\');', $settings); + } + if (!strstr($settings, '_RIJNDAEL_IV_')) + { + $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); + $iv = base64_encode(mcrypt_create_iv($iv_size, MCRYPT_RAND)); + $settings = preg_replace('/define\(\'_COOKIE_IV_\', \'([a-z0-9=\/+-_]+)\'\);/i', 'define(\'_COOKIE_IV_\', \'\1\');'."\n".'define(\'_RIJNDAEL_IV_\', \''.$iv.'\');', $settings); + } + if (file_put_contents(dirname(__FILE__).'/../../config/settings.inc.php', $settings)) + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = 1 WHERE name = \'PS_CIPHER_ALGORITHM\''; + } + + if (file_exists(realpath(INSTALL_PATH.'/../img').'/logo.jpg')) + { + list($width, $height, $type, $attr) = getimagesize(realpath(INSTALL_PATH.'/../img').'/logo.jpg'); + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = '.(int)round($width).' WHERE name = \'SHOP_LOGO_WIDTH\''; + $sqlParams[] = 'UPDATE '._DB_PREFIX_.'configuration SET value = '.(int)round($height).' WHERE name = \'SHOP_LOGO_HEIGHT\''; + } + + if ((int)$_GET['catalogMode'] == 1) + { + $sqlParams[] = 'DELETE c, cl FROM `'._DB_PREFIX_.'cms` AS c LEFT JOIN `'._DB_PREFIX_.'cms_lang` AS cl ON c.id_cms = cl.id_cms WHERE 1 AND c.`id_cms` IN (1, 5)'; + } + + $dbInstance = Db::getInstance(); + foreach($sqlParams as $query) + if(!$dbInstance->Execute($query)) + $error['infosInsertSQL'] = '11'; + unset($dbInstance); +} + +////////////////////////// +// Building XML Response// +////////////////////////// + +echo ''."\n"; +foreach ($error AS $key => $line) + echo ''."\n"; +echo ''; + diff --git a/install-dev/xml/createDB.php b/install-dev/xml/createDB.php new file mode 100644 index 000000000..d715a57d1 --- /dev/null +++ b/install-dev/xml/createDB.php @@ -0,0 +1,213 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +if (function_exists('date_default_timezone_set')) + date_default_timezone_set('Europe/Paris'); + +//delete settings file if it exist +if (file_exists(SETTINGS_FILE)) + if (!unlink(SETTINGS_FILE)) + die(''."\n"); + +include(INSTALL_PATH.'/classes/AddConfToFile.php'); +include(INSTALL_PATH.'/../classes/Validate.php'); +include(INSTALL_PATH.'/../classes/Db.php'); +include(INSTALL_PATH.'/../classes/Tools.php'); + +//check db access +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); +$resultDB = ToolsInstall::checkDB($_GET['server'], $_GET['login'], $_GET['password'], $_GET['name'], true, $_GET['engine']); +if ($resultDB !== true){ + die("\n"); +} + + +// Check POST data... +$data_check = array( + !isset($_GET['mode']) OR ( $_GET['mode'] != "full" AND $_GET['mode'] != "lite"), + !isset($_GET['tablePrefix']) OR !Validate::isMailName($_GET['tablePrefix']) OR !preg_match('/^[a-z0-9_]*$/i', $_GET['tablePrefix']) +); +foreach ($data_check AS $data) + if ($data) + die(''."\n"); + +// Writing data in settings file +$oldLevel = error_reporting(E_ALL); +$__PS_BASE_URI__ = str_replace(' ', '%20', INSTALLER__PS_BASE_URI); +$datas = array( + array('_DB_SERVER_', trim($_GET['server'])), + array('_DB_TYPE_', trim($_GET['type'])), + array('_DB_NAME_', trim($_GET['name'])), + array('_DB_USER_', trim($_GET['login'])), + array('_DB_PASSWD_', trim($_GET['password'])), + array('_DB_PREFIX_', trim($_GET['tablePrefix'])), + array('_MYSQL_ENGINE_', $_GET['engine']), + array('__PS_BASE_URI__', $__PS_BASE_URI__), + array('_PS_CACHING_SYSTEM_', 'MCached'), + array('_PS_CACHE_ENABLED_', '0'), + array('_MEDIA_SERVER_1_', ''), + array('_MEDIA_SERVER_2_', ''), + array('_MEDIA_SERVER_3_', ''), + array('_THEME_NAME_', 'prestashop'), + array('_COOKIE_KEY_', Tools::passwdGen(56)), + array('_COOKIE_IV_', Tools::passwdGen(8)), + array('_PS_CREATION_DATE_', date('Y-m-d')), + array('_PS_VERSION_', INSTALL_VERSION) +); +error_reporting($oldLevel); +$confFile = new AddConfToFile(SETTINGS_FILE, 'w'); +if ($confFile->error) + die(''."\n"); + +foreach ($datas AS $data){ + $confFile->writeInFile($data[0], $data[1]); +} +$confFile->writeEndTagPhp(); + +// Settings updated, compile and cache directories must be emptied +foreach (array(INSTALL_PATH.'/../tools/smarty/cache/', INSTALL_PATH.'/../tools/smarty/compile/', INSTALL_PATH.'/../tools/smarty_v2/cache/', INSTALL_PATH.'/../tools/smarty_v2/compile/') as $dir) + if (file_exists($dir)) + foreach (scandir($dir) as $file) + if ($file[0] != '.' AND $file != 'index.php') + unlink($dir.$file); + +if ($confFile->error != false) + die(''."\n"); + +//load new settings +include(SETTINGS_FILE); + +//----------- +//import SQL data +//----------- +switch (_DB_TYPE_) { + case "MySQL" : + + $filePrefix = 'PREFIX_'; + $engineType = 'ENGINE_TYPE'; + //send the SQL structure file requests + $structureFile = dirname(__FILE__)."/../sql/db.sql"; + if(!file_exists($structureFile)) + die(''."\n"); + $db_structure_settings =""; + if ( !$db_structure_settings .= file_get_contents($structureFile) ) + die(''."\n"); + $db_structure_settings = str_replace(array($filePrefix, $engineType), array($_GET['tablePrefix'], $_GET['engine']), $db_structure_settings); + $db_structure_settings = preg_split("/;\s*[\r\n]+/",$db_structure_settings); + if (isset($_GET['dropAndCreate']) && $_GET['dropAndCreate'] == 'true') + { + array_unshift($db_structure_settings, 'USE `'.trim($_GET['name']).'`;'); + array_unshift($db_structure_settings, 'CREATE DATABASE `'.trim($_GET['name']).'`;'); + array_unshift($db_structure_settings, 'DROP DATABASE `'.trim($_GET['name']).'`;'); + } + foreach($db_structure_settings as $query){ + $query = trim($query); + if(!empty($query)){ + if(!Db::getInstance()->Execute($query)){ + if(Db::getInstance()->getNumberError() == 1050){ + die(''."\n"); + } else { + die( + '' + ); + } + } + } + } + + //send the SQL data file requests + + $db_data_settings = ""; + + $liteFile = dirname(__FILE__)."/../sql/db_settings_lite.sql"; + if(!file_exists($liteFile)) + die(''."\n"); + if ( !$db_data_settings .= file_get_contents( $liteFile ) ) + die(''."\n"); + + if($_GET['mode'] == "full"){ + $fullFile = dirname(__FILE__)."/../sql/db_settings_extends.sql"; + if(!file_exists($fullFile)) + die(''."\n"); + if (!$db_data_settings .= file_get_contents($fullFile)) + die(''."\n"); + } + $db_data_settings .= "\n".'UPDATE `PREFIX_customer` SET `passwd` = \''.md5(_COOKIE_KEY_.'123456789').'\' WHERE `id_customer` =1'; + $db_data_settings = str_replace(array($filePrefix, $engineType), array($_GET['tablePrefix'], $_GET['engine']), $db_data_settings); + $db_data_settings = preg_split("/;\s*[\r\n]+/",$db_data_settings); + /* UTF-8 support */ + array_unshift($db_data_settings, 'SET NAMES \'utf8\';'); + foreach($db_data_settings as $query){ + $query = trim($query); + if(!empty($query)){ + if(!Db::getInstance()->Execute($query)){ + if(Db::getInstance()->getNumberError() == 1050){ + die(''."\n"); + } else { + die( + '' + ); + } + } + } + } + break; +} +$xml = ''."\n"; + +$countries = Db::getInstance()->ExecuteS(' +SELECT c.`id_country`, cl.`name`, c.`iso_code` FROM `'.$_GET['tablePrefix'].'country` c +INNER JOIN `'.$_GET['tablePrefix'].'country_lang` cl ON (c.`id_country` = cl.`id_country`) +WHERE cl.`id_lang` = '.(int)($_GET['language'] + 1).' +ORDER BY cl.`name`'); + +$timezones = Db::getInstance()->ExecuteS(' +SELECT * FROM `'.$_GET['tablePrefix'].'timezone` +ORDER BY `name`'); + +$xml .= ''."\n"; +foreach ($countries as $country) + $xml .= "\t".''."\n"; +$xml .= ''."\n".''."\n"; +foreach ($timezones as $timezone) + $xml .= "\t".''."\n"; +$xml .= ''."\n"; + +die($xml); + diff --git a/install-dev/xml/doUpgrade.php b/install-dev/xml/doUpgrade.php new file mode 100644 index 000000000..750ec4edb --- /dev/null +++ b/install-dev/xml/doUpgrade.php @@ -0,0 +1,293 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$filePrefix = 'PREFIX_'; +$engineType = 'ENGINE_TYPE'; + +if (function_exists('date_default_timezone_set')) + date_default_timezone_set('Europe/Paris'); + +define('_PS_MODULE_DIR_', realpath(INSTALL_PATH).'/../modules/'); +define('_PS_INSTALLER_PHP_UPGRADE_DIR_', 'php/'); + +// utf-8 conversion if needed (before v0.9.8.1 utf-8 was badly supported) +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'utf8.php'); +// Configuration cleaner in order to get unique configuration names +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'confcleaner.php'); +// Order number in goal to add a number to each old orders +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'invoicenumber.php'); +// Order number in goal to add a number to each old orders +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'deliverynumber.php'); +// Set all groups for home category +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'setallgroupsonhomecategory.php'); +// Set payment module for each currency/country +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'setpaymentmodule.php'); +// Set payment module for each group +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'setpaymentmodulegroup.php'); +// Set discount for all categories +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'setdiscountcategory.php'); +// Module installation tools +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'module_tools.php'); +// Customizations +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'customizations.php'); +// Block newsletter +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'blocknewsletter.php'); +// Reorder product positions for drag an drop +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'reorderpositions.php'); +// Clean some module sql structures +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'updatemodulessql.php'); +// Clean carrier URL +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'updatecarrierurl.php'); +// Convert prices to the new 1.3 rounding system +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'price_converter.php'); +// Update editorial module to delete all xml methods +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'editorial_update.php'); +// Update logo and editorial image size +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'update_image_size_in_db.php'); +// Update product comments +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'updateproductcomments.php'); +// Update order details +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'update_order_details.php'); +// Update database structure (use algorithms requiring PHP) +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'database_structure.php'); +// Update cms block +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'cms_block.php'); +// Move crossselling +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'move_crossselling.php'); +// adminstores tab +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'admin_stores_tab.php'); +// generate_tax_rules +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'generate_tax_rules.php'); +// generate_ntree +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'generate_ntree.php'); +// Before version 1.3.3 ecotax are not calculated into the price +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'update_products_ecotax_v133.php'); + +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'shop_url.php'); + +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'gridextjs_deprecated.php'); +// generate level depth +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'regenerate_level_depth.php'); +// add a new tab +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'add_new_tab.php'); + +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'add_module_to_hook.php'); + +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'update_for_13version.php'); + +require_once(_PS_INSTALLER_PHP_UPGRADE_DIR_.'alter_cms_block.php'); + +//old version detection +global $oldversion; +$oldversion = false; +if (file_exists(SETTINGS_FILE) AND file_exists(DEFINES_FILE)) +{ + include_once(SETTINGS_FILE); + include_once(DEFINES_FILE); + $oldversion = _PS_VERSION_; +} +else + die(''."\n"); +if (!file_exists(DEFINES_FILE)) + die(''."\n"); +include_once(SETTINGS_FILE); + +if (!defined('_THEMES_DIR_')) + define('_THEMES_DIR_', __PS_BASE_URI__.'themes/'); +if (!defined('_PS_IMG_')) + define('_PS_IMG_', __PS_BASE_URI__.'img/'); +if (!defined('_PS_JS_DIR_')) + define('_PS_JS_DIR_', __PS_BASE_URI__.'js/'); +if (!defined('_PS_CSS_DIR_')) + define('_PS_CSS_DIR_', __PS_BASE_URI__.'css/'); +include_once(DEFINES_FILE); + +$oldversion = _PS_VERSION_; + +$versionCompare = version_compare(INSTALL_VERSION, _PS_VERSION_); +if ($versionCompare == '-1') + die(''."\n"); +elseif ($versionCompare == 0) + die(''."\n"); +elseif ($versionCompare === false) + die(''."\n"); + +//check DB access +include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); +$resultDB = ToolsInstall::checkDB(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_, false); +if ($resultDB !== true) + die("\n"); + +//custom sql file creation +$upgradeFiles = array(); +if ($handle = opendir(INSTALL_PATH.'/sql/upgrade')) +{ + while (false !== ($file = readdir($handle))) + if ($file != '.' AND $file != '..') + $upgradeFiles[] = str_replace(".sql", "", $file); + closedir($handle); +} +if (empty($upgradeFiles)) + die(''."\n"); +natcasesort($upgradeFiles); +$neededUpgradeFiles = array(); +foreach ($upgradeFiles AS $version) + if (version_compare($version, _PS_VERSION_) == 1 AND version_compare(INSTALL_VERSION, $version) != -1) + $neededUpgradeFiles[] = $version; +if (empty($neededUpgradeFiles)) + die(''."\n"); + + +//refresh conf file +include(INSTALL_PATH.'/classes/AddConfToFile.php'); +$oldLevel = error_reporting(E_ALL); +$mysqlEngine = (defined('_MYSQL_ENGINE_') ? _MYSQL_ENGINE_ : 'MyISAM'); +$datas = array( + array('_DB_SERVER_', _DB_SERVER_), + array('_DB_TYPE_', _DB_TYPE_), + array('_DB_NAME_', _DB_NAME_), + array('_DB_USER_', _DB_USER_), + array('_DB_PASSWD_', _DB_PASSWD_), + array('_DB_PREFIX_', _DB_PREFIX_), + array('_MYSQL_ENGINE_', $mysqlEngine), + array('_PS_CACHING_SYSTEM_', (defined('_PS_CACHING_SYSTEM_') AND _PS_CACHING_SYSTEM_ != 'MemCached') ? _PS_CACHING_SYSTEM_ : 'MCached'), + array('_PS_CACHE_ENABLED_', defined('_PS_CACHE_ENABLED_') ? _PS_CACHE_ENABLED_ : '0'), + array('_MEDIA_SERVER_1_', defined('_MEDIA_SERVER_1_') ? _MEDIA_SERVER_1_ : ''), + array('_MEDIA_SERVER_2_', defined('_MEDIA_SERVER_2_') ? _MEDIA_SERVER_2_ : ''), + array('_MEDIA_SERVER_3_', defined('_MEDIA_SERVER_3_') ? _MEDIA_SERVER_3_ : ''), + array('__PS_BASE_URI__', __PS_BASE_URI__), + array('_THEME_NAME_', _THEME_NAME_), + array('_COOKIE_KEY_', _COOKIE_KEY_), + array('_COOKIE_IV_', _COOKIE_IV_), + array('_PS_CREATION_DATE_', defined("_PS_CREATION_DATE_") ? _PS_CREATION_DATE_ : date('Y-m-d')), + array('_PS_VERSION_', INSTALL_VERSION) +); +if (defined('_RIJNDAEL_KEY_')) + $datas[] = array('_RIJNDAEL_KEY_', _RIJNDAEL_KEY_); +if (defined('_RIJNDAEL_IV_')) + $datas[] = array('_RIJNDAEL_IV_', _RIJNDAEL_IV_); +if(!defined('_PS_CACHE_ENABLED_')) + define('_PS_CACHE_ENABLED_', '0'); +if(!defined('_MYSQL_ENGINE_')) + define('_MYSQL_ENGINE_', 'MyISAM'); + +$sqlContent = ''; +foreach($neededUpgradeFiles AS $version) +{ + $file = INSTALL_PATH.'/sql/upgrade/'.$version.'.sql'; + if (!file_exists($file)) + die(''."\n"); + if (!$sqlContent .= file_get_contents($file)) + die(''."\n"); + $sqlContent .= "\n"; +} + +$sqlContent = str_replace(array($filePrefix, $engineType), array(_DB_PREFIX_, $mysqlEngine), $sqlContent); +$sqlContent = preg_split("/;\s*[\r\n]+/",$sqlContent); + +error_reporting($oldLevel); +$confFile = new AddConfToFile(SETTINGS_FILE, 'w'); +if ($confFile->error) + die(''."\n"); + +foreach ($datas AS $data){ + $confFile->writeInFile($data[0], $data[1]); +} + +if ($confFile->error != false) + die(''."\n"); + +// Settings updated, compile and cache directories must be emptied +foreach (array(INSTALL_PATH.'/../tools/smarty/cache/', INSTALL_PATH.'/../tools/smarty/compile/', INSTALL_PATH.'/../tools/smarty_v2/cache/', INSTALL_PATH.'/../tools/smarty_v2/compile/') as $dir) + if (file_exists($dir)) + foreach (scandir($dir) as $file) + if ($file[0] != '.' AND $file != 'index.php') + unlink($dir.$file); + +//sql file execution +global $requests, $warningExist; +$requests = ''; +$warningExist = false; + +Configuration::loadConfiguration(); + +foreach($sqlContent as $query) +{ + $query = trim($query); + if(!empty($query)) + { + /* If php code have to be executed */ + if (strpos($query, '/* PHP:') !== false) + { + /* Parsing php code */ + $pos = strpos($query, '/* PHP:') + strlen('/* PHP:'); + $phpString = substr($query, $pos, strlen($query) - $pos - strlen(' */;')); + $php = explode('::', $phpString); + preg_match('/\((.*)\)/', $phpString, $pattern); + $paramsString = trim($pattern[0], '()'); + preg_match_all('/([^,]+),? ?/', $paramsString, $parameters); + if (isset($parameters[1])) + $parameters = $parameters[1]; + else + $parameters = array(); + if (is_array($parameters)) + foreach ($parameters AS &$parameter) + $parameter = str_replace('\'', '', $parameter); + + /* Call a simple function */ + if (strpos($phpString, '::') === false) + call_user_func_array(str_replace($pattern[0], '', $php[0]), $parameters); + /* Or an object method */ + else + call_user_func_array(array($php[0], str_replace($pattern[0], '', $php[1])), $parameters); + $requests .= +' + + '."\n"; + } + elseif(!Db::getInstance()->Execute($query)) + { + $warningExist = true; + $requests .= +' + + getMsgError()).']]> + getNumberError()).']]> + '."\n"; + } + else + $requests .= +' + + '."\n"; + } +} +Configuration::updateValue('PS_HIDE_OPTIMIZATION_TIPS', 0); +$result = $warningExist ? ''."\n" : ''."\n"; +$result .= $requests; +die($result.''."\n"); + diff --git a/install-dev/xml/uploadLogo.php b/install-dev/xml/uploadLogo.php new file mode 100644 index 000000000..75197ae60 --- /dev/null +++ b/install-dev/xml/uploadLogo.php @@ -0,0 +1,116 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ +define('INSTALL_PATH', dirname(__FILE__)); + + $error = ""; + $msg = ""; + $fileElementName = 'fileToUpload'; + + if(!empty($_FILES[$fileElementName]['error'])) + { + switch($_FILES[$fileElementName]['error']) + { + + case '1': + $error = '38'; + break; + case '2': + $error = '39'; + break; + case '3': + $error = '40'; + break; + case '4': + $error = '41'; + break; + + case '6': + $error = '42'; + break; + case '7': + $error = '43'; + break; + case '8': + $error = '44'; + break; + case '999': + default: + $error = '999'; + } + } + else + { + if(empty($_FILES[$fileElementName]['tmp_name']) OR $_FILES[$fileElementName]['tmp_name'] == 'none') + { + $error = '41'; + } + else + { + list($width, $height, $type, $attr) = getimagesize($_FILES[$fileElementName]['tmp_name']); + + if($height == 0) + { + $error = '16'; + } + else + { + $newheight = $height > 500 ? 500 : $height; + $percent = $newheight / $height; + $newwidth = $width * $percent; + $newheight = $height * $percent; + $thumb = imagecreatetruecolor($newwidth, $newheight); + switch ($type) { + case 1: + $sourceImage = imagecreatefromgif($_FILES[$fileElementName]['tmp_name']); + break; + case 2: + $sourceImage = imagecreatefromjpeg($_FILES[$fileElementName]['tmp_name']); + break; + case 3: + $sourceImage = imagecreatefrompng($_FILES[$fileElementName]['tmp_name']); + break; + default: + return false; + } + + imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); + + if(!is_writable(realpath(INSTALL_PATH.'/../../img').'/logo.jpg')) + $error = '58'; + else + { + if(!imagejpeg($thumb, realpath(INSTALL_PATH.'/../../img').'/logo.jpg', 90)) + { + $error = '7'; + } + } + } + } + } + echo "{"; + echo " error: '" . $error . "',\n"; + echo "}"; diff --git a/js/admin-dnd.js b/js/admin-dnd.js new file mode 100644 index 000000000..e604bf824 --- /dev/null +++ b/js/admin-dnd.js @@ -0,0 +1,168 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$(document).ready(function() { + $('table.tableDnD').tableDnD({ + + onDragStart: function(table, row) { + originalOrder = $.tableDnD.serialize(); + reOrder = ':even'; + if (table.tBodies[0].rows[1] && $('#' + table.tBodies[0].rows[1].id).hasClass('alt_row')) + reOrder = ':odd'; + $('#'+table.id+ '#' + row.id).parent('tr').addClass('myDragClass'); + }, + dragHandle: 'dragHandle', + onDragClass: 'myDragClass', + onDrop: function(table, row) { + if (originalOrder != $.tableDnD.serialize()) { + + var way = (originalOrder.indexOf(row.id) < $.tableDnD.serialize().indexOf(row.id))? 1 : 0; + var ids = row.id.split('_'); + var tableDrag = $('#' + table.id); + var params = ''; + if (table.id == 'cms_category') + params = { + ajaxCMSCategoriesPositions: true, + id_cms_category_parent: ids[1], + id_cms_category_to_move: ids[2], + way: way, + token: token + }; + if (table.id == 'category') + params = { + ajaxCategoriesPositions: true, + id_category_parent: ids[1], + id_category_to_move: ids[2], + way: way, + token: token + }; + if (table.id == 'cms') + params = { + ajaxCMSPositions: true, + id_cms_category: ids[1], + id_cms: ids[2], + way: way, + token: token + }; + if (come_from == 'AdminModulesPositions') + params = { + ajaxModulesPositions: true, + id_hook: ids[0], + id_module: ids[1], + way: way, + token: token + }; + if (table.id == 'product') { + params = { + ajaxProductsPositions: true, + id_category: ids[1], + id_product: ids[2], + way: way, + token: token + }; + } + + $.ajax({ + type: 'POST', + async: false, + url: 'ajax.php?' + $.tableDnD.serialize(), + data: params, + success: function(data) { + if (come_from == 'AdminModulesPositions') { + tableDrag.find('tr').removeClass('alt_row'); + tableDrag.find('tr' + reOrder).addClass('alt_row'); + tableDrag.find('td.positions').each(function(i) { + $(this).html(i+1); + }); + tableDrag.find('td.dragHandle a:hidden').show(); + tableDrag.find('td.dragHandle:first a:even').hide(); + tableDrag.find('td.dragHandle:last a:odd').hide(); + } + else if (table.id == 'product') { + var reg = /_[0-9][0-9]*$/g; + tableDrag.find('tbody tr').each(function(i) { + $(this).attr('id', $(this).attr('id').replace(reg, '_' + i)); + + // Update link position + var up_reg = new RegExp('position=[-]?[0-9]+&'); + + // Up links + $(this).find('td.dragHandle a:odd').attr('href', $(this).find('td.dragHandle a:odd').attr('href').replace(up_reg, 'position='+ (i - 1) +'&')); + + // Down links + $(this).find('td.dragHandle a:even').attr('href', $(this).find('td.dragHandle a:even').attr('href').replace(up_reg, 'position='+ (i + 1) +'&')); + + }); + tableDrag.find('tr').not('.nodrag').removeClass('alt_row'); + tableDrag.find('tr:not(".nodrag"):odd').addClass('alt_row'); + tableDrag.find('tr td.dragHandle a:hidden').show(); + + if (alternate) { + tableDrag.find('tr td.dragHandle:first a:odd').hide(); + tableDrag.find('tr td.dragHandle:last a:even').hide(); + } + else { + tableDrag.find('tr td.dragHandle:first a:even').hide(); + tableDrag.find('tr td.dragHandle:last a:odd').hide(); + } + } + else + { + var reg = /_[0-9]$/g; + tableDrag.find('tbody tr').each(function(i) { + $(this).attr('id', $(this).attr('id').replace(reg, '_' + i)); + + // Update link position + var up_reg = new RegExp('position=[-]?[0-9]+&'); + + // Up links + $(this).find('td.dragHandle a:odd').attr('href', $(this).find('td.dragHandle a:odd').attr('href').replace(up_reg, 'position='+ (i - 1) +'&')); + + // Down links + $(this).find('td.dragHandle a:even').attr('href', $(this).find('td.dragHandle a:even').attr('href').replace(up_reg, 'position='+ (i + 1) +'&')); + + }); + + tableDrag.find('tr').not('.nodrag').removeClass('alt_row'); + tableDrag.find('tr:not(".nodrag"):odd').addClass('alt_row'); + tableDrag.find('tr td.dragHandle a:hidden').show(); + + if (alternate) { + tableDrag.find('tr td.dragHandle:first a:odd').hide(); + tableDrag.find('tr td.dragHandle:last a:even').hide(); + } + else { + tableDrag.find('tr td.dragHandle:first a:even').hide(); + tableDrag.find('tr td.dragHandle:last a:odd').hide(); + } + + } + } + }); + } + } + }); +}) diff --git a/js/admin-scene-cropping.js b/js/admin-scene-cropping.js new file mode 100644 index 000000000..75b57e2d4 --- /dev/null +++ b/js/admin-scene-cropping.js @@ -0,0 +1,177 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/* global variables */ + +zoneCurrent = 0; +selectionCurrent = null; +valueOfZoneEdited = null; + +/* functions called by cropping events */ + +function showZone(){ + $('#large_scene_image').imgAreaSelect({show:true}); +} + +function hideAutocompleteBox(){ + $('#ajax_choose_product:visible').hide(); +} + +function onSelectEnd(img, selection) { + selectionCurrent = selection; + showAutocompleteBox(selection.x1, selection.y1+selection.height); +} + +function undoEdit(){ + hideAutocompleteBox(); + $('#large_scene_image').imgAreaSelect({hide:true}); + $(document).unbind('keydown'); +} + +function showAutocompleteBox(x1, y1) { + $('#ajax_choose_product:hidden') + .slideDown('fast'); + $('#product_autocomplete_input').focus(); + $(document).keydown(function(event) { + if (event.keyCode == '27') { + undoEdit(); + } + }); +} + +function editThisZone(aInFixedZoneElement) { + $fixedZoneElement = $(aInFixedZoneElement).parent(); + var x1 = $fixedZoneElement.css('margin-left'); + x1 = x1.substring(0,x1.indexOf('px')); + x1 = parseInt(x1); + var y1 = $fixedZoneElement.css('margin-top'); + y1 = y1.substring(0,y1.indexOf('px')); + y1 = parseInt(y1); + var width = $fixedZoneElement.css('width'); + width = width.substring(0,width.indexOf('px')); + var x2 = x1 + parseInt(width); + var height = $fixedZoneElement.css('height'); + height = height.substring(0,height.indexOf('px')); + var y2 = y1 + parseInt(height); + + valueOfZoneEdited = $fixedZoneElement.find('a').attr('rel'); + + selectionCurrent = new Array(); + selectionCurrent['x1'] = x1; + selectionCurrent['y1'] = y1; + selectionCurrent['width'] = width; + selectionCurrent['height'] = height; + + $fixedZoneElement.remove(); + $('#product_autocomplete_input').val( $fixedZoneElement.find('p').text() ); + showAutocompleteBox(x1, y1+parseInt(height)); + + $('#large_scene_image').imgAreaSelect({ x1: x1, y1: y1, x2: x2, y2: y2 }); +} + +/* function called by cropping process (buttons clicks) */ + +function deleteProduct(index_zone){ + $('#visual_zone_' + index_zone).fadeOut('fast', function(){ + $(this).remove(); + }); + return false; +} + +function afterTextInserted (event, data, formatted) { + if (data == null){ + return false; + } + zoneCurrent++; + var idProduct = data[1]; + var nameProduct = data[0]; + var x1 = selectionCurrent.x1; + var y1 = selectionCurrent.y1; + var width = selectionCurrent.width; + var height = selectionCurrent.height; + addProduct(zoneCurrent, x1, y1, width, height, idProduct, nameProduct); +} + +function addProduct(zoneIndex, x1, y1, width, height, idProduct, nameProduct){ + $('#large_scene_image') + .imgAreaSelect({hide:true}) + .before('\ +
    \ + \ + \ + \ + \ + \ +

    ' + nameProduct + '

    \ + \ + \ + \ + \ + \ + \ +
    \ + '); + $('.fixed_zone').css('opacity', '0.8'); + $('#save_scene').fadeIn('slow'); + $('#ajax_choose_product:visible') + .fadeOut('slow') + .find('#product_autocomplete_input').val(''); +} + +$(window).load(function () { + + /* function autocomplete */ + $('#product_autocomplete_input') + .autocomplete('ajax_products_list.php', { + minChars: 1, + autoFill: true, + max:20, + matchContains: true, + mustMatch:true, + scroll:false + }) + .result(afterTextInserted); + + $('#large_scene_image').imgAreaSelect({ + borderWidth: 1, + onSelectEnd: onSelectEnd, + onSelectStart: showZone, + onSelectChange: hideAutocompleteBox, + minHeight:30, + minWidth:30 + }); + + /* load existing products zone */ + for(var i = 0; i < startingData.length; i++) + { + addProduct(i, startingData[i][2], startingData[i][3], startingData[i][4], startingData[i][5], startingData[i][1], startingData[i][0]); + } + zoneCurrent = startingData.length; + + if (startingData.length) + $('#save_scene').show(); + +}); diff --git a/js/admin.js b/js/admin.js new file mode 100644 index 000000000..85df2aa48 --- /dev/null +++ b/js/admin.js @@ -0,0 +1,819 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +if (!id_language) + var id_language = Number(1); + +function str2url(str,encoding,ucfirst) +{ + str = str.toUpperCase(); + str = str.toLowerCase(); + + str = str.replace(/[\u0105\u0104\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5]/g,'a'); + str = str.replace(/[\u00E7\u010D\u0107\u0106]/g,'c'); + str = str.replace(/[\u010F]/g,'d'); + str = str.replace(/[\u00E8\u00E9\u00EA\u00EB\u011B\u0119\u0118]/g,'e'); + str = str.replace(/[\u00EC\u00ED\u00EE\u00EF]/g,'i'); + str = str.replace(/[\u0142\u0141]/g,'l'); + str = str.replace(/[\u00F1\u0148]/g,'n'); + str = str.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00D3]/g,'o'); + str = str.replace(/[\u0159]/g,'r'); + str = str.replace(/[\u015B\u015A\u0161]/g,'s'); + str = str.replace(/[\u00DF]/g,'ss'); + str = str.replace(/[\u0165]/g,'t'); + str = str.replace(/[\u00F9\u00FA\u00FB\u00FC\u016F]/g,'u'); + str = str.replace(/[\u00FD\u00FF]/g,'y'); + str = str.replace(/[\u017C\u017A\u017B\u0179\u017E]/g,'z'); + str = str.replace(/[\u00E6]/g,'ae'); + str = str.replace(/[\u0153]/g,'oe'); + str = str.replace(/[\u013E\u013A]/g,'l'); + str = str.replace(/[\u0155]/g,'r'); + + str = str.replace(/[^a-z0-9\s\'\:\/\[\]-]/g,''); + str = str.replace(/[\s\'\:\/\[\]-]+/g,' '); + str = str.replace(/[ ]/g,'-'); + str = str.replace(/[\/]/g,'-'); + + if (ucfirst == 1) { + c = str.charAt(0); + str = c.toUpperCase()+str.slice(1); + } + + return str; +} + +function strToAltImgAttr(str,encoding,ucfirst) +{ + str = str.replace(/[\u0105\u0104\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5]/g,'a'); + str = str.replace(/[\u00E7\u010D\u0107\u0106]/g,'c'); + str = str.replace(/[\u010F]/g,'d'); + str = str.replace(/[\u00E8\u00E9\u00EA\u00EB\u011B\u0119\u0118]/g,'e'); + str = str.replace(/[\u00EC\u00ED\u00EE\u00EF]/g,'i'); + str = str.replace(/[\u0142\u0141]/g,'l'); + str = str.replace(/[\u00F1\u0148]/g,'n'); + str = str.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00D3]/g,'o'); + str = str.replace(/[\u0159]/g,'r'); + str = str.replace(/[\u015B\u015A\u0161]/g,'s'); + str = str.replace(/[\u00DF]/g,'ss'); + str = str.replace(/[\u0165]/g,'t'); + str = str.replace(/[\u00F9\u00FA\u00FB\u00FC\u016F]/g,'u'); + str = str.replace(/[\u00FD\u00FF]/g,'y'); + str = str.replace(/[\u017C\u017A\u017B\u0179\u017E]/g,'z'); + str = str.replace(/[\u00E6]/g,'ae'); + str = str.replace(/[\u0153]/g,'oe'); + str = str.replace(/[\u013E\u013A]/g,'l'); + str = str.replace(/[\u0155]/g,'r'); + + str = str.replace(/[^a-zA-Z0-9\s\'\:\/\[\]-]/g,''); + str = str.replace(/[\s\'\:\/\[\]-]+/g,' '); + + if (ucfirst == 1) { + c = str.charAt(0); + str = c.toUpperCase()+str.slice(1); + } + + return str; +} + +function copy2friendlyURL() +{ + $('#link_rewrite_' + id_language).val(str2url($('#name_' + id_language).val().replace(/^[0-9]+\./, ''), 'UTF-8')); +} + +function copyMeta2friendlyURL() +{ + $('#input_link_rewrite_' + id_language).val(str2url($('#name_' + id_language).val().replace(/^[0-9]+\./, ''), 'UTF-8')); +} + +function updateCurrentText() +{ + $('#current_product').html($('#name_' + id_language).val()); +} +function updateFriendlyURLByName() +{ + $('#link_rewrite_' + id_language).val(str2url($('#name_' + id_language).val(), 'UTF-8')); + $('#friendly-url').html($('#link_rewrite_' + id_language).val()); +} +function updateFriendlyURL() +{ + $('#link_rewrite_' + id_language).val(str2url($('#link_rewrite_' + id_language).val(), 'UTF-8')); + $('#seo #friendly-url').text($('#link_rewrite_' + id_language).val()); +} + +function toggleLanguageFlags(elt) +{ + $(elt).parents('.displayed_flag').siblings('.language_flags').toggle(); +} + +// Kept for retrocompatibility only (out of AdminProducts & AdminCategories) +function changeLanguage(field, fieldsString, id_language_new, iso_code) +{ + var fields = fieldsString.split('¤'); + for (var i = 0; i < fields.length; ++i) + { + getE(fields[i] + '_' + id_language).style.display = 'none'; + getE(fields[i] + '_' + id_language_new).style.display = 'block'; + getE('language_current_' + fields[i]).src = '../img/l/' + id_language_new + '.jpg'; + } + getE('languages_' + field).style.display = 'none'; + id_language = id_language_new; +} + +function changeFormLanguage(id_language_new, iso_code, employee_cookie) +{ + $('.translatable').each(function() { + $(this).find('.lang_' + id_language_new) + .show() + .siblings('div:not(.displayed_flag):not(.clear)').hide(); + $('.language_current').attr('src', '../img/l/' + id_language_new + '.jpg'); + }); + $('.language_flags').hide(); + if (employee_cookie) + $.post("ajax.php", { form_language_id: id_language_new }); + id_language = id_language_new; + updateFriendlyURL(); + updateCurrentText(); +} + +function displayFlags(languages, defaultLanguageID, employee_cookie) +{ + if ($('.translatable')) + { + $('.translatable').each(function() { + if (!$(this).find('.displayed_flag').length > 0) { + $.each(languages, function(key, language) { + if (language['id_lang'] == defaultLanguageID) + { + defaultLanguage = language; + return false; + } + }); + var displayFlags = $('
    ') + .addClass('displayed_flag') + .append($('') + .addClass('language_current') + .addClass('pointer') + .attr('src', '../img/l/' + defaultLanguage['id_lang'] + '.jpg') + .attr('alt', defaultLanguage['name']) + .click(function() { + toggleLanguageFlags(this); + }) + ); + var languagesFlags = $('
    ') + .addClass('language_flags') + .html('Choose language:

    '); + $.each(languages, function(key, language) { + var img = $('') + .addClass('pointer') + .css('margin', '0 2px') + .attr('src', '../img/l/' + language['id_lang'] + '.jpg') + .attr('alt', language['name']) + .click(function() { + changeFormLanguage(language['id_lang'], language['iso_code'], employee_cookie); + }); + languagesFlags.append(img); + }); + if ($(this).find('p:last-child').hasClass('clear')) + $(this).find('p:last-child').before(displayFlags).before(languagesFlags); + else + $(this).append(displayFlags).append(languagesFlags); + } + }); + } +} + +function checkAll(pForm) +{ + for (i = 0, n = pForm.elements.length; i < n; i++) + { + var objName = pForm.elements[i].name; + var objType = pForm.elements[i].type; + if (objType = 'checkbox' && objName != 'checkme') + { + box = eval(pForm.elements[i]); + box.checked = !box.checked; + } + } +} + +function checkDelBoxes(pForm, boxName, parent) +{ + for (i = 0; i < pForm.elements.length; i++) + if (pForm.elements[i].name == boxName) + pForm.elements[i].checked = parent; +} + +function checkPaymentBoxes(name, module) +{ + setPaymentBoxes(name, module); + current = $('input#checkedBox_'+ name +'_'+ module + '[type=hidden]'); + $('form#form_'+ name +' input[type=checkbox]').each( + function() + { + if ($(this).attr('name') == module + '_' + name + '[]') + $(this).attr("checked", ((current.val() == 'checked') ? true : false)); + } + ); + current.val() == 'checked' ? current.val('unchecked') : current.val('checked'); +} + +function setPaymentBoxes(name, module) +{ + current = $('input#checkedBox_'+ name +'_'+ module + '[type=hidden]'); + total = 0; + checked = 0; + $('form#form_'+ name +' input[type=checkbox]').each( + function() + { + if ($(this).attr('name') == module + '_' + name + '[]') + { + ($(this).attr("checked") ? checked++ : ''); + total++; + } + } + ); + (checked == total) ? current.val('unchecked') : current.val('checked'); +} + +function getE(name) +{ + if (document.getElementById) + var elem = document.getElementById(name); + else if (document.all) + var elem = document.all[name]; + else if (document.layers) + var elem = document.layers[name]; + return elem; +} + +function changeFormParam(pForm, url, gid) +{ + pForm.action = url; + pForm.elements["groupid"].value = gid; +} + +function addAccessory(event, data, formatted) +{ + if (data == null) + return false; + var productId = data[1]; + var productName = data[0]; + + var $divAccessories = $('#divAccessories'); + var $inputAccessories = $('#inputAccessories'); + var $nameAccessories = $('#nameAccessories'); + + /* delete product from select + add product line to the div, input_name, input_ids elements */ + $divAccessories.html($divAccessories.html() + productName + '
    '); + $nameAccessories.val($nameAccessories.val() + productName + '¤'); + $inputAccessories.val($inputAccessories.val() + productId + '-'); + $('#product_autocomplete_input').val(''); + $('#product_autocomplete_input').setOptions({ + extraParams: {excludeIds : $('#inputAccessories').val().replace(/\-/g,',').replace(/\,$/,'')} + }); +} + + +function delAccessory(id) +{ + var div = getE('divAccessories'); + var input = getE('inputAccessories'); + var name = getE('nameAccessories'); + + // Cut hidden fields in array + var inputCut = input.value.split('-'); + var nameCut = name.value.split('¤'); + + if (inputCut.lenght != nameCut.lenght) + return alert('Bad size'); + + // Reset all hidden fields + input.value = ''; + name.value = ''; + div.innerHTML = ''; + for (i in inputCut) + { + // If empty, error, next + if (!inputCut[i] || !nameCut[i]) + continue ; + + // Add to hidden fields no selected products OR add to select field selected product + if (inputCut[i] != id) + { + input.value += inputCut[i] + '-'; + name.value += nameCut[i] + '¤'; + div.innerHTML += nameCut[i] + '
    '; + } + else + $('#selectAccessories').append(''); + } +} + +function dontChange(srcText) +{ + if (srcText == '') + return false; + if (window.search_texts) + for (var i in search_texts) + if (srcText == search_texts[i]) + return false; + return true; +} + +function queryType() +{ + var search_type = getE('bo_search_type').value; + var bo_query = getE('bo_query'); + + if (!dontChange(bo_query.value)) + bo_query.value = search_texts[search_type]; +} + +function formSubmit(e, button) +{ + var key; + + key = window.event ? window.event.keyCode : e.which; + if (key == 13) + { + getE(button).focus(); + getE(button).click(); + } +} +function noComma(elem) +{ + getE(elem).value = getE(elem).value.replace(new RegExp(',', 'g'), '.'); +} + +/* Help boxes */ +function addLoadEvent(func) { + var oldonload = window.onload; + if (typeof window.onload != 'function') { + window.onload = func; + } else { + window.onload = function() { + oldonload(); + func(); + } + } +} + +function helpboxParser(current) +{ + // While the span exists and we didn't find the right one, for each attribute, if attribute is "name" and has value == "help_box" + for (var j = 0; j < current.parentNode.getElementsByTagName('span').length; j++) + for(var k = 0; k < current.parentNode.getElementsByTagName('span')[j].attributes.length; k++) + if (current.parentNode.getElementsByTagName('span')[j].attributes[k].name === 'name' && current.parentNode.getElementsByTagName('span')[j].attributes[k].nodeValue === 'help_box') + return j; + + return -1; +} + +if (helpboxes) +{ + $(function() + { + if ($('input')) + { + $('input').focus(function() { $(this).parent().find('.hint:first').css('display', 'block'); }); + $('input').blur(function() { $(this).parent().find('.hint:first').css('display', 'none'); }); + } + }); +} + +function changePic(id_product, id_image) +{ + if (id_image == -1) + { + getE('pic').style.display = 'none'; + return; + } + getE('pic').style.display = 'block'; + getE('pic').src = '../img/p/'+parseInt(id_product)+'-'+parseInt(id_image)+'.jpg'; +} + +/* Code generator for Affiliation and vourchers */ +function gencode(size) +{ + getE('code').value = ''; + var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for (var i = 1; i <= size; ++i) + getE('code').value += chars.charAt(Math.floor(Math.random() * chars.length)); +} + +function free_shipping() +{ + if (getE('id_discount_type').value == 3 && getE('discount_value').value == '') + getE('discount_value').value = '0'; +} + +var newWin = null; + +function closeWin () +{ + if (newWin != null) + if (!newWin.closed) + newWin.close(); +} + +function openWin(url, title, width, height, top, left) +{ + var options; + var sizes; + + closeWin(); + options = 'toolbar=0, location=0, directories=0, statfr=no, menubar=0, scrollbars=yes, resizable=yes'; + sizes = 'width='+width+', height='+height+', top='+top+', left='+left+''; + newWin = window.open(url, title, options+', '+sizes); + newWin.focus(); +} + +function viewTemplates(id_select, id_lang, prefix, ext) +{ + var id_list = document.getElementById(id_select); + var loc = id_list.options[id_list.selectedIndex].value; + if (loc != 0) + openWin (prefix+loc+ext, 'tpl_viewing', '520', '400', '50', '300'); + return ; +} + +function validateImportation(mandatory) +{ + var type_value = []; + var seted_value = []; + var elem; + var col = 'unknow'; + + toggle(getE('error_duplicate_type'), false); + toggle(getE('required_column'), false); + for (i = 0; elem = getE('type_value['+i+']'); i++) + { + if (seted_value[elem.options[elem.selectedIndex].value]) + { + scroll(0,0); + toggle(getE('error_duplicate_type'), true); + return false; + } + else if (elem.options[elem.selectedIndex].value != 'no') + seted_value[elem.options[elem.selectedIndex].value] = true; + } + for (needed in mandatory) + if (!seted_value[mandatory[needed]]) + { + scroll(0,0); + toggle(getE('required_column'), true); + getE('missing_column').innerHTML = mandatory[needed]; + elem = getE('type_value[0]'); + for (i = 0; i < elem.length; ++i) + { + if (elem.options[i].value == mandatory[needed]) + { + getE('missing_column').innerHTML = elem.options[i].innerHTML; + break ; + } + } + return false + } +} + +function askFeatureName(selected, selector) +{ + var elem; + + if (selected.value == 'feature') + { + $('#features_' + selector).show(); + $('#feature_name_' + selector).attr('name', selected.name); + } +} + +function replaceFeature(toReplace, selector) +{ + var elem; + + if ($('#feature_name_' + selector).val() == '') + return false; + + elem = getE(toReplace); + elem.options[elem.selectedIndex].text = $('#feature_name_' + selector).val(); + elem.options[elem.selectedIndex].value = '#F_' + $('#feature_name_' + selector).val(); + $('#features_' + selector).toggle(); + $('#feature_name_' + selector).val(''); + $('#feature_name_' + selector).attr('name', ''); +} + +/* Manage default category on page: edit product */ +function checkDefaultCategory(category_id) +{ + var oldCheckbox = $('.id_category_default'); + oldCheckbox.removeClass('id_category_default'); + var checkbox = $('#categoryBox_'+category_id); + checkbox.attr('checked', 'checked'); + checkbox.addClass('id_category_default'); +} + +function checkDefaultGroup(group_id) +{ + var oldCheckbox = $('.id_group_default'); + oldCheckbox.removeClass('id_group_default'); + var checkbox = $('#groupBox_'+group_id); + checkbox.attr('checked', 'checked'); + checkbox.addClass('id_group_default'); +} + +function chooseTypeTranslation(id_lang) +{ + getE('translation_lang').value = id_lang; + document.getElementById('typeTranslationForm').submit(); +} + + +function showDiv(select_id, while_id, dest) +{ + var select = document.getElementById(select_id); + if (select.options[select.selectedIndex].value == while_id) + return toggle(getE(dest), true); + return toggle(getE(dest)); +} + +function orderDeleteProduct(txtConfirm, txtExplain) +{ + ret = true; + $('table#cancelProducts input[type=checkbox]:checked').each( + function() + { + totalCancel = parseInt($(this).parent().parent().find('td.cancelQuantity input[type=text]').val()); + totalQty = parseInt($(this).parent().find('input#totalQty[type=hidden]').val()); + totalQtyReturn = parseInt($(this).parent().find('input#totalQtyReturn[type=hidden]').val()); + productName = $(this).parent().find('input#productName[type=hidden]').val(); + totalAvailable = totalQty - totalQtyReturn; + if (totalCancel > totalAvailable) + { + alert(txtConfirm + ' : \'' + ' ' + productName + '\' ! \n\n' + txtExplain + ' ('+ totalCancel + ' > ' + totalAvailable +')' + '\n '); + ret = false; + } + } + ); + return ret; +} + +function selectCheckbox(obj) +{ + $(obj).parent().parent().find('td.cancelCheck input[type=checkbox]').attr("checked", true); +} + +function toogleShippingCost(obj) +{ + generateDiscount = $(obj).parent().find('#generateDiscount').attr("checked"); + generateCreditSlip = $(obj).parent().find('#generateCreditSlip').attr("checked"); + if (generateDiscount != true && generateCreditSlip != true) + { + $(obj).parent().find('#spanShippingBack input[type=checkbox]').attr("checked", false); + $(obj).parent().find('#spanShippingBack').css('display', 'none'); + } + else + $(obj).parent().find('#spanShippingBack').css('display', 'block'); +} + +function removeLabel(label, fieldType, type) +{ + $(label).remove(); + if (fieldType == 0) + { + if (type == 0) + customizationUploadableFileNumber--; + else + uploadableFileLabel--; + } + else + { + if (type == 0) + customizationTextFieldNumber--; + else + textFieldLabel--; + } +} + +function browseAndRemoveLabels(newCustomizationFieldNumber, customizationFieldNumber, fieldType, type) +{ + var $current = $('body').find('div[id^="' + (type == 0 ? 'label' : 'newLabel') + 'Container_' + fieldType + '_"]'); + var ids = new Array(); + var pos = $current.length - 1; + + $current.each(function() { + ids[pos--] = $(this).attr('id'); + }); + + for (var i = 0; i < $current.length; i++) + if (customizationFieldNumber > newCustomizationFieldNumber) + { + removeLabel($('#'+ids[i]), fieldType, type); + customizationFieldNumber--; + } + return customizationFieldNumber; +} + +function displayCustomizationProperties(type, force) +{ + var newCustomizationFieldNumber = Math.abs(type == 0 ? parseInt($('#uploadable_files').val()) : parseInt($('#text_fields').val())); + var customizationFieldNumber = Math.abs(type == 0 ? (parseInt(customizationUploadableFileNumber) + parseInt(uploadableFileLabel)) : (parseInt(customizationTextFieldNumber) + parseInt(textFieldLabel))); + var label = type == 0 ? parseInt(uploadableFileLabel) : parseInt(textFieldLabel); + var target = type == 0 ? '#customizationFileProperties' : '#customizationTextFieldProperties'; + /* Add some fields */ + if (newCustomizationFieldNumber > customizationFieldNumber || force) + { + var content = ''; + var j = label; + + for (var i = 0; i < newCustomizationFieldNumber - customizationFieldNumber; i++, j++) + { + var fieldsName = 'newLabel_' + type + '_' + j; + var fieldsContainerName = 'newLabelContainer_' + type + '_' + j; + content += '
    '; + /* Generates input field */ + for (k = 0; k < languages.length; k++) + content += '
    ' + newLabel + ' #' + (j + 1) + '
    '; + /* Generates language selector & require checkbox */ + content += '
    ' + required + '
    ' + choose_language + '

    '; + /* Generate language flags */ + for (k = 0; k < languages.length; k++) + content += '' + languages[k][2] + ''; + content += '
    '; + if (type == 0) + uploadableFileLabel++; + else + textFieldLabel++; + } + $(target).append(content); + } + /* Remove */ + else + { + customizationFieldNumber = browseAndRemoveLabels(newCustomizationFieldNumber, customizationFieldNumber, type, 1); + browseAndRemoveLabels(newCustomizationFieldNumber, customizationFieldNumber, type, 0); + } +} + +function showAttributeColorGroup(name, container) +{ + var id_list; + var value; + + id_list = document.getElementById(name); + value = id_list.options[id_list.selectedIndex].value; + if (attributesGroups[value]) + $('#colorAttributeProperties').fadeIn(); + else + $('#colorAttributeProperties').fadeOut(); +} + +function orderOverwriteMessage(sl, text) +{ + var $zone = $('#txt_msg'); + var sl_value = sl.options[sl.selectedIndex].value; + + if (sl_value != '0') + { + if ($zone.val().length > 0 && !confirm(text)) + return ; + $zone.val(sl_value); + } +} + +function setCancelQuantity(itself, id_order_detail, quantity) +{ + $('#cancelQuantity_' + id_order_detail).val($(itself).attr('checked') ? quantity : ''); +} + +function stockManagementActivationAuthorization() +{ + if (getE('PS_STOCK_MANAGEMENT_on').checked) + { + getE('PS_ORDER_OUT_OF_STOCK_on').disabled = false; + getE('PS_ORDER_OUT_OF_STOCK_off').disabled = false; + getE('PS_DISPLAY_QTIES_on').disabled = false; + getE('PS_DISPLAY_QTIES_off').disabled = false; + } + else + { + getE('PS_DISPLAY_QTIES_off').checked = true; + getE('PS_DISPLAY_QTIES_on').disabled = 'disabled'; + getE('PS_DISPLAY_QTIES_off').disabled = 'disabled'; + getE('PS_ORDER_OUT_OF_STOCK_on').checked = true; + getE('PS_ORDER_OUT_OF_STOCK_on').disabled = 'disabled'; + getE('PS_ORDER_OUT_OF_STOCK_off').disabled = 'disabled'; + } +} + +function hookCheckboxes(id, opt, champ) +{ + if (opt == 1 && champ.checked == false) + $('#Ghook'+id).attr('checked', false); + else if (opt == 0) + { + if (champ.checked) + $('.hook'+id).attr('checked', "checked"); + else + $('.hook'+id).attr('checked', false); + } +} + +function changeCMSActivationAuthorization() +{ + if (getE('PS_CONDITIONS_on').checked) + getE('PS_CONDITIONS_CMS_ID').disabled = false; + else + getE('PS_CONDITIONS_CMS_ID').disabled = 'disabled'; +} + +function disableZipFormat() +{ + if ($('#need_zip_code_on').attr('checked') == false) + { + $('.zip_code_format').hide(); + $('#zip_code_format').val(''); + } + else + $('.zip_code_format').show(); +} + + +function spreadFees(id_range) +{ + newVal = $('#fees_all_'+id_range).val(); + $('.fees_'+id_range).val(newVal); +} + +function clearAllFees(id_range) +{ + $('#fees_all_'+id_range).val(''); +} + +function toggleDraftWarning(show) +{ + if (show) + $('.draft').slideDown('slow'); + else + $('.draft').slideUp('slow'); +} + +function showOptions(show) +{ + if (show) + $('tr#product_options').slideDown('slow'); + else + $('tr#product_options').slideUp('slow'); +} + +function submitAddProductAndPreview() +{ + $('#fakeSubmitAddProductAndPreview').attr('name','submitAddProductAndPreview'); + $('#product').submit(); +} + +function submitAddcmsAndPreview() +{ + $('#previewSubmitAddcmsAndPreview').attr('name','submitAddcmsAndPreview'); + $('#cms').submit(); +} + +function showHelp(url, label, iso_lang, ps_version, doc_version, country) +{ + trackClickOnHelp(label, doc_version); + $('#help-'+label).attr('src','../img/admin/help2.png'); + window.open(url +'/'+iso_lang+'/doc/'+label+'?version='+ps_version+'&country='+country+'#', '_blank', 'scrollbars=yes,menubar=no,toolbar=no,location=no,width=517,height=600'); + return false; +} + + +function trackClickOnHelp(label, doc_version) +{ + $.ajax({ + url: 'ajax.php', + data: 'submitTrackClickOnHelp&label='+ label +'&version='+doc_version + }); +} + diff --git a/js/adminImport.js b/js/adminImport.js new file mode 100644 index 000000000..9f89dfa45 --- /dev/null +++ b/js/adminImport.js @@ -0,0 +1,111 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +$(document).ready(function(){ + + $('#saveImportMatchs').unbind('click').click(function(){ + + var newImportMatchs = $('#newImportMatchs').attr('value'); + if (newImportMatchs == '') + alert(errorEmpty); + else + { + var matchFields = ''; + $('.type_value').each( function () { + matchFields += '&'+$(this).attr('id')+'='+$(this).attr('value'); + }); + $.ajax({ + type: 'GET', + url: 'ajax.php', + async: false, + cache: false, + dataType : "json", + data: 'ajax=true&saveImportMatchs&skip='+$('input[name=skip]').attr('value')+'&newImportMatchs='+newImportMatchs+matchFields, + success: function(jsonData) + { + $('#valueImportMatchs').append(''); + $('#selectDivImportMatchs').fadeIn('slow'); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) + { + alert('TECHNICAL ERROR Details: '+XMLHttpRequest.responseText); + + } + }); + + } + }); + + $('#loadImportMatchs').unbind('click').click(function(){ + + var idToLoad = $('select#valueImportMatchs option:selected').attr('id'); + $.ajax({ + type: 'GET', + url: 'ajax.php', + async: false, + cache: false, + dataType : "json", + data: 'ajax=true&loadImportMatchs&idImportMatchs='+idToLoad, + success: function(jsonData) + { + var matchs = jsonData.matchs.split('|') + $('input[name=skip]').val(jsonData.skip); + for (i=0;i +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +var query; +var lang = Array(); + +function setLang(array_lang) { lang = array_lang; } + +function getQuery() { + var result; + + result = query; + if (result == null) { + if (window.XMLHttpRequest) + result = new XMLHttpRequest(); + else if (window.ActiveXObject) + result = new ActiveXObject('Microsoft.XMLHTTP'); + } + return result; +} + +function onQueryChange() { + if (query.readyState == 4 && query.status == 200) + document.getElementById('ajax_confirmation').innerHTML = ''+lang[0]+''; +} + +function request_failed() { alert(lang[1]); } + +function showActivity() { + document.getElementById('ajax_confirmation').innerHTML = ''+lang[2]+''; +} + +function check_for_all_accesses(tabsize, tabnumber) +{ + var i = 0; + var res = 0; + var right = 0; + var rights = new Array('view', 'add', 'edit', 'delete', 'all'); + + while (i != tabsize + 1) + { + if ($('#view'+i).attr('checked') == false || $('#edit'+i).attr('checked') == false || $('#add'+i).attr('checked') == false || $('#delete'+i).attr('checked') == false) + $('#all'+i).attr('checked', false); + else + $('#all'+i).attr('checked', "checked"); + i++; + } + right = 0; + while (right != 5) + { + res = 0; + i = 0; + while (i != tabsize) + { + if ($('#'+rights[right]+i).attr('checked') == true) + res++; + i++; + } + if (res == tabnumber - 1) + $('#'+rights[right]+'all').attr('checked', "checked"); + else + $('#'+rights[right]+'all').attr('checked', false); + right++; + } +} + +function perfect_access_js_gestion(src, action, id_tab, tabsize, tabnumber) +{ + if (id_tab == '-1' && action == 'all') + { + $('.add').attr('checked', src.checked); + $('.edit').attr('checked', src.checked); + $('.delete').attr('checked', src.checked); + $('.view').attr('checked', src.checked); + $('.all').attr('checked', src.checked); + $('.31').attr('checked', "checked"); + } + else if (action == 'all') + $('.'+id_tab).attr('checked', src.checked); + else if (id_tab == '-1') + { + $('.'+action).attr('checked', src.checked); + $('#'+action+'31').attr('checked', "checked"); + } + check_for_all_accesses(tabsize, tabnumber); +} + +function ajax_power(src, action, id_tab, id_profile, token, tabsize, tabnumber) +{ + query = getQuery(); + perfect_access_js_gestion(src, action, id_tab, tabsize, tabnumber); + if (query != null) { + try { + query.open('POST', 'index.php?tab=AdminAccess', true); + query.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + query.onreadystatechange = onQueryChange; + query.send('submitAddaccess=1&action='+action+'&perm='+parseInt(src.checked ? '1' : status = '0')+'&id_tab='+parseInt(id_tab)+'&id_profile='+parseInt(id_profile)+'&token='+token); + showActivity(); + } + catch(exc) { + request_failed(); + } + } + else + alert(lang[3]); +} + +function redirect(new_page) { window.location = new_page; } \ No newline at end of file diff --git a/js/attributesBack.js b/js/attributesBack.js new file mode 100644 index 000000000..00d217bf2 --- /dev/null +++ b/js/attributesBack.js @@ -0,0 +1,379 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function fillCombinaison(wholesale_price, price_impact, weight_impact, unit_impact, reference, supplier_reference, ean, quantity, image, old_attr, id_product_attribute, default_attribute, eco_tax, location, upc, minimal_quantity) +{ + init_elems(); + $('#stock_mvt_attribute').show(); + $('#initial_stock_attribute').hide(); + $('#attribute_quantity').html(quantity); + $('#attribute_quantity').show(); + $('#attr_qty_stock').show(); + getE('minimal_quantity').value = minimal_quantity; + getE('attribute_reference').value = reference; + getE('attribute_supplier_reference').value = supplier_reference; + getE('attribute_ean13').value = ean; + getE('attribute_upc').value = upc; + getE('submitProductAttribute').value = modifyattributegroup; + getE('attribute_wholesale_price').value = Math.abs(wholesale_price); + getE('attribute_price').value = Math.abs(price_impact); + getE('attribute_weight').value = Math.abs(weight_impact); + getE('attribute_unity').value = Math.abs(unit_impact); + if ($('#attribute_ecotax').length != 0) + getE('attribute_ecotax').value = eco_tax; + getE('attribute_location').value = location; + if (default_attribute == 1) + getE('attribute_default').checked = true; + else + getE('attribute_default').checked = false; + + if (price_impact < 0) + { + getE('attribute_price_impact').options[getE('attribute_price_impact').selectedIndex].value = -1; + getE('attribute_price_impact').selectedIndex = 2; + } + else if (!price_impact) + { + getE('attribute_price_impact').options[getE('attribute_price_impact').selectedIndex].value = 0; + getE('attribute_price_impact').selectedIndex = 0; + } + else if (price_impact > 0) + { + getE('attribute_price_impact').options[getE('attribute_price_impact').selectedIndex].value = 1; + getE('attribute_price_impact').selectedIndex = 1; + } + if (weight_impact < 0) + { + getE('attribute_weight_impact').options[getE('attribute_weight_impact').selectedIndex].value = -1; + getE('attribute_weight_impact').selectedIndex = 2; + } + else if (!weight_impact) + { + getE('attribute_weight_impact').options[getE('attribute_weight_impact').selectedIndex].value = 0; + getE('attribute_weight_impact').selectedIndex = 0; + } + else if (weight_impact > 0) + { + getE('attribute_weight_impact').options[getE('attribute_weight_impact').selectedIndex].value = 1; + getE('attribute_weight_impact').selectedIndex = 1; + } + if (unit_impact < 0) + { + getE('attribute_unit_impact').options[getE('attribute_unit_impact').selectedIndex].value = -1; + getE('attribute_unit_impact').selectedIndex = 2; + } + else if (!unit_impact) + { + getE('attribute_unit_impact').options[getE('attribute_unit_impact').selectedIndex].value = 0; + getE('attribute_unit_impact').selectedIndex = 0; + } + else if (unit_impact > 0) + { + getE('attribute_unit_impact').options[getE('attribute_unit_impact').selectedIndex].value = 1; + getE('attribute_unit_impact').selectedIndex = 1; + } + + /* Reset all combination images */ + combinationImages = $('#id_image_attr').find("input[id^=id_image_attr_]"); + combinationImages.each(function() { + this.checked = false; + }); + + /* Check combination images */ + if (typeof(combination_images[id_product_attribute]) != 'undefined') + for (i = 0; i < combination_images[id_product_attribute].length; i++) + getE('id_image_attr_' + combination_images[id_product_attribute][i]).checked = true; + + check_impact(); + check_weight_impact(); + check_unit_impact(); + + var elem = getE('product_att_list'); + for (var i = 0; i < old_attr.length; i++) + { + var opt = document.createElement('option'); + opt.text = old_attr[i++]; + opt.value = old_attr[i]; + + try { + elem.add(opt, null); + } + catch(ex) { + elem.add(opt); + } + } + getE('id_product_attribute').value = id_product_attribute; + if (document.getElementById) + var style = document.getElementById('ResetSpan').style; + else if (document.all) + var style = document.all['ResetSpan'].style; + else if (document.layers) + var style = document.layers['ResetSpan'].style; + if (style.display == 'none') + style.display = 'block'; +} + +function populate_attrs() +{ + var attr_group = getE('attribute_group'); + if (!attr_group) + return; + var attr_name = getE('attribute'); + var number = attr_group.options.length ? attr_group.options[attr_group.selectedIndex].value : 0; + + if (!number) + { + attr_name.options.length = 0; + attr_name.options[0] = new Option('---', 0); + return; + } + + var list = attrs[number]; + attr_name.options.length = 0; + + for(i = 0; i < list.length; i += 2) + attr_name.options[i / 2] = new Option(list[i + 1], list[i]); +} + +function check_impact() +{ + if ($('#attribute_price_impact').get(0).selectedIndex == 0) + { + $('#attribute_price').val('0.00'); + $('#span_impact').hide(); + } + else + $('#span_impact').show(); +} + +function check_weight_impact() +{ + if ($('#attribute_weight_impact').get(0).selectedIndex == 0) + { + $('#span_weight_impact').hide(); + $('#attribute_weight').val('0.00'); + } + else + $('#span_weight_impact').show(); +} + +function check_unit_impact() +{ + if ($('#attribute_unit_impact').get(0).selectedIndex == 0) + { + $('#span_unit_impact').hide(); + $('#attribute_unity').val('0.00'); + } + else + $('#span_unit_impact').show(); +} + +function init_elems() +{ + $('#stock_mvt_attribute').hide(); + $('#initial_stock_attribute').show(); + $('#attr_qty_stock').hide(); + var elem = getE('product_att_list'); + + if (elem.length) + for (i = elem.length - 1; i >= 0; i--) + if (elem[i]) + elem.remove(i); + + getE('attribute_price_impact').selectedIndex = 0; + getE('attribute_weight_impact').selectedIndex = 0; + getE('attribute_unit_impact').selectedIndex = 0; + $('#span_unit_impact').hide(); + $('#unity_third').html($('#unity_second').html()); + if ($('#unity').get(0).value.length > 0) + $('#tr_unit_impact').show(); + else + $('#tr_unit_impact').hide(); + try + { + if (impact.options[impact.selectedIndex].value == 0) + getE('span_impact').style.display = 'none'; + if (impact2.options[impact.selectedIndex].value == 0) + getE('span_weight_impact').style.display = 'none'; + } + catch (e) + { + getE('span_impact').style.display = 'none'; + getE('span_weight_impact').style.display = 'none'; + } +} + +function attr_selectall() +{ + var elem = getE('product_att_list'); + var i; + + for (i = 0; i < elem.length; i++) + elem.options[i].selected = true; +} + +function del_attr_multiple() +{ + var attr = getE('attribute_group'); + + if (!attr) + return ; + var length = attr.length; + var target; + + for (var i = 0; i < length; ++i) + { + elem = attr.options[i]; + if (elem.selected) + { + target = getE('table_' + elem.parentNode.getAttribute('name')); + if (target && getE('result_' + elem.getAttribute('name'))) + { + target.removeChild(getE('result_' + elem.getAttribute('name'))); + if (!target.lastChild || !target.lastChild.id) + toggle(target.parentNode, false); + } + } + } +} + +function create_attribute_row(id, id_group, name, price, weight) +{ + var row = document.createElement('tr'); + var col1 = document.createElement('td'); + var col2 = document.createElement('td'); + var col3 = document.createElement('td'); + var col1_content = document.createElement('input'); + var col2_content = document.createElement('input'); + var col3_content = document.createElement('input'); + + col1.innerHTML = name; + + + col1_content.name = 'options['+id_group+']['+id+']'; + col1_content.value = id; + col1_content.type = 'hidden'; + + col2_content.name = 'price_impact['+id+']'; + col2_content.value = price; + col2_content.style.width = '50px'; + + col3_content.value = weight; + col3_content.name = 'weight_impact['+id+']'; + col3_content.style.width = '50px'; + + col1.appendChild(col1_content); + col2.appendChild(col2_content); + col3.appendChild(col3_content); + row.appendChild(col1); + row.appendChild(col2); + row.appendChild(col3); + row.id = 'result_' + id; + return row; +} + +function add_attr_multiple() +{ + var attr = getE('attribute_group'); + if (!attr) + return ; + var length = attr.length; + var target; + var new_elem; + + for (var i = 0; i < length; ++i) + { + elem = attr.options[i]; + if (elem.selected) + { + name = elem.parentNode.getAttribute('name'); + target = getE('table_' + name); + if (target && !getE('result_' + elem.getAttribute('name'))) + { + new_elem = create_attribute_row(elem.getAttribute('name'), elem.parentNode.getAttribute('name'), elem.value, '0.00', '0.00'); + target.appendChild(new_elem); + toggle(target.parentNode, true); + } + } + } +} + +function del_attr() +{ + var elem = getE('product_att_list'); + var i; + + for (i = elem.length - 1; i >= 0; i--) + { + if (elem.options[i].selected) + elem.remove(i); + } +} + +function add_attr() +{ + var attr_group = getE('attribute_group'); + var attr_name = getE('attribute'); + var opt = document.createElement('option'); + var elem = getE('product_att_list'); + var gs = attr_group.options.length ? attr_group.options[attr_group.selectedIndex] : 0; + var as = attr_name.options.length ? attr_name.options[attr_name.selectedIndex] : 0; + var list = getE('product_att_list'); + var i; + + if (gs.value == 0) alert('Please choose a group'); + else if (as.value == 0) alert('Please choose an attribute'); + else + { + opt.text = gs.text + ' : ' + as.text; + opt.value = as.value; + + for (i = list.length - 1; i >= 0; i--) + if (list.options[i].value == as.value) + { + alert('You cannot add same attribute twice'); + return; + } + + try { + elem.add(opt, null); + } + catch(ex) { + elem.add(opt); + } + } +} + +function openCloseLayer(whichLayer) +{ + if (document.getElementById) + var style = document.getElementById(whichLayer).style; + else if (document.all) + var style = document.all[whichLayer].style; + else if (document.layers) + var style = document.layers[whichLayer].style; + style.display = style.display == 'none' ? 'block' : 'none'; +} diff --git a/js/checkLangPack.js b/js/checkLangPack.js new file mode 100644 index 000000000..6c6b50eca --- /dev/null +++ b/js/checkLangPack.js @@ -0,0 +1,50 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function checkLangPack(){ + $('p#resultCheckLangPack').hide(); + if ($('#iso_code').val().length == 2) + { + $.ajax( + { + url: "ajax_lang_packs.php", + cache: false, + data: {iso_lang:$('#iso_code').val(), ps_version:$('#ps_version').val()}, + dataType : 'json', + success: function(ret) + { + if(typeof ret == 'object') + $('p#resultCheckLangPack').html(langPackOk+' '+ret.name+') :'+'
    '+langPackVersion+''+ret.version+' '+download+'
    '+langPackInfo).show("slow"); + else if (ret == "offline") + $('p#resultCheckLangPack').show('slow'); + } + }); + } +} + +$(document).ready(function() { + $('p#resultCheckLangPack').hide(); +}); diff --git a/js/cropper/builder.js b/js/cropper/builder.js new file mode 100644 index 000000000..5b15ba939 --- /dev/null +++ b/js/cropper/builder.js @@ -0,0 +1,101 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// See scriptaculous.js for full license. + +var Builder = { + NODEMAP: { + AREA: 'map', + CAPTION: 'table', + COL: 'table', + COLGROUP: 'table', + LEGEND: 'fieldset', + OPTGROUP: 'select', + OPTION: 'select', + PARAM: 'object', + TBODY: 'table', + TD: 'table', + TFOOT: 'table', + TH: 'table', + THEAD: 'table', + TR: 'table' + }, + // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken, + // due to a Firefox bug + node: function(elementName) { + elementName = elementName.toUpperCase(); + + // try innerHTML approach + var parentTag = this.NODEMAP[elementName] || 'div'; + var parentElement = document.createElement(parentTag); + try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 + parentElement.innerHTML = "<" + elementName + ">"; + } catch(e) {} + var element = parentElement.firstChild || null; + + // see if browser added wrapping tags + if(element && (element.tagName != elementName)) + element = element.getElementsByTagName(elementName)[0]; + + // fallback to createElement approach + if(!element) element = document.createElement(elementName); + + // abort if nothing could be created + if(!element) return; + + // attributes (or text) + if(arguments[1]) + if(this._isStringOrNumber(arguments[1]) || + (arguments[1] instanceof Array)) { + this._children(element, arguments[1]); + } else { + var attrs = this._attributes(arguments[1]); + if(attrs.length) { + try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 + parentElement.innerHTML = "<" +elementName + " " + + attrs + ">"; + } catch(e) {} + element = parentElement.firstChild || null; + // workaround firefox 1.0.X bug + if(!element) { + element = document.createElement(elementName); + for(attr in arguments[1]) + element[attr == 'class' ? 'className' : attr] = arguments[1][attr]; + } + if(element.tagName != elementName) + element = parentElement.getElementsByTagName(elementName)[0]; + } + } + + // text, or array of children + if(arguments[2]) + this._children(element, arguments[2]); + + return element; + }, + _text: function(text) { + return document.createTextNode(text); + }, + _attributes: function(attributes) { + var attrs = []; + for(attribute in attributes) + attrs.push((attribute=='className' ? 'class' : attribute) + + '="' + attributes[attribute].toString().escapeHTML() + '"'); + return attrs.join(" "); + }, + _children: function(element, children) { + if(typeof children=='object') { // array can hold nodes and text + children.flatten().each( function(e) { + if(typeof e=='object') + element.appendChild(e) + else + if(Builder._isStringOrNumber(e)) + element.appendChild(Builder._text(e)); + }); + } else + if(Builder._isStringOrNumber(children)) + element.appendChild(Builder._text(children)); + }, + _isStringOrNumber: function(param) { + return(typeof param=='string' || typeof param=='number'); + } +} \ No newline at end of file diff --git a/js/cropper/cropper.css b/js/cropper/cropper.css new file mode 100644 index 000000000..cba90a029 --- /dev/null +++ b/js/cropper/cropper.css @@ -0,0 +1,143 @@ +.imgCrop_wrap { + position: relative; + cursor: crosshair; +} + +.imgCrop_wrap.opera8 .imgCrop_overlay, +.imgCrop_wrap.opera8 .imgCrop_clickArea { + background-color: transparent; +} + +.imgCrop_wrap, +.imgCrop_wrap * { + font-size: 0; +} + +.imgCrop_overlay { + background-color: #000; + opacity: 0.5; + filter:alpha(opacity=50); + position: absolute; + width: 100%; + height: 100%; +} + +.imgCrop_selArea { + position: absolute; + cursor: move; + z-index: 2; +} + +.imgCrop_clickArea { + width: 100%; + height: 100%; + background-color: #FFF; + opacity: 0.01; + filter:alpha(opacity=01); +} + +.imgCrop_marqueeHoriz { + position: absolute; + width: 100%; + height: 1px; + background: transparent url(marqueeHoriz.gif) repeat-x 0 0; + z-index: 3; +} + +.imgCrop_marqueeVert { + position: absolute; + height: 100%; + width: 1px; + background: transparent url(marqueeVert.gif) repeat-y 0 0; + z-index: 3; +} + +.imgCrop_marqueeNorth { top: 0; left: 0; } +.imgCrop_marqueeEast { top: 0; right: 0; } +.imgCrop_marqueeSouth { bottom: 0px; left: 0; } +.imgCrop_marqueeWest { top: 0; left: 0; } + + +.imgCrop_handle { + position: absolute; + border: 1px solid #333; + width: 6px; + height: 6px; + background: #FFF; + opacity: 0.5; + filter:alpha(opacity=50); + z-index: 4; +} + +* html .imgCrop_handle { + width: 8px; + height: 8px; + wid\th: 6px; + hei\ght: 6px; +} + +.imgCrop_handleN { + top: -3px; + left: 0; + cursor: n-resize; +} + +.imgCrop_handleNE { + top: -3px; + right: -3px; + cursor: ne-resize; +} + +.imgCrop_handleE { + top: 0; + right: -3px; + cursor: e-resize; +} + +.imgCrop_handleSE { + right: -3px; + bottom: -3px; + cursor: se-resize; +} + +.imgCrop_handleS { + right: 0; + bottom: -3px; + cursor: s-resize; +} + +.imgCrop_handleSW { + left: -3px; + bottom: -3px; + cursor: sw-resize; +} + +.imgCrop_handleW { + top: 0; + left: -3px; + cursor: w-resize; +} + +.imgCrop_handleNW { + top: -3px; + left: -3px; + cursor: nw-resize; +} + +.imgCrop_dragArea { + width: 100%; + height: 100%; + z-index: 200; + position: absolute; + top: 0; + left: 0; +} + +.imgCrop_previewWrap { + margin: 20px 0 0 20px; + float: left; +} + +#testImage { + position: absolute; +} \ No newline at end of file diff --git a/js/cropper/cropper.js b/js/cropper/cropper.js new file mode 100644 index 000000000..b159988fd --- /dev/null +++ b/js/cropper/cropper.js @@ -0,0 +1,572 @@ +/** + * Copyright (c) 2006, David Spurr (http://www.defusion.org.uk/) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://www.opensource.org/licenses/bsd-license.php + * + * See scriptaculous.js for full scriptaculous licence + */ + +var CropDraggable=Class.create(); +Object.extend(Object.extend(CropDraggable.prototype,Draggable.prototype),{initialize:function(_1){ +this.options=Object.extend({drawMethod:function(){ +}},arguments[1]||{}); +this.element=$(_1); +this.handle=this.element; +this.delta=this.currentDelta(); +this.dragging=false; +this.eventMouseDown=this.initDrag.bindAsEventListener(this); +Event.observe(this.handle,"mousedown",this.eventMouseDown); +Draggables.register(this); +},draw:function(_2){ +var _3=Position.cumulativeOffset(this.element); +var d=this.currentDelta(); +_3[0]-=d[0]; +_3[1]-=d[1]; +var p=[0,1].map(function(i){ +return (_2[i]-_3[i]-this.offset[i]); +}.bind(this)); +this.options.drawMethod(p); +}}); +var Cropper={}; +Cropper.Img=Class.create(); +Cropper.Img.prototype={initialize:function(_7,_8){ +this.options=Object.extend({ratioDim:{x:0,y:0},minWidth:0,minHeight:0,displayOnInit:false,onEndCrop:Prototype.emptyFunction,captureKeys:true,onloadCoords:null,maxWidth:0,maxHeight:0},_8||{}); +this.img=$(_7); +this.clickCoords={x:0,y:0}; +this.dragging=false; +this.resizing=false; +this.isWebKit=/Konqueror|Safari|KHTML/.test(navigator.userAgent); +this.isIE=/MSIE/.test(navigator.userAgent); +this.isOpera8=/Opera\s[1-8]/.test(navigator.userAgent); +this.ratioX=0; +this.ratioY=0; +this.attached=false; +this.fixedWidth=(this.options.maxWidth>0&&(this.options.minWidth>=this.options.maxWidth)); +this.fixedHeight=(this.options.maxHeight>0&&(this.options.minHeight>=this.options.maxHeight)); +if(typeof this.img=="undefined"){ +return; +} +$A(document.getElementsByTagName("script")).each(function(s){ +if(s.src.match(/cropper\.js/)){ +var _a=s.src.replace(/cropper\.js(.*)?/,""); +var _b=document.createElement("link"); +_b.rel="stylesheet"; +_b.type="text/css"; +_b.href=_a+"cropper.css"; +_b.media="screen"; +document.getElementsByTagName("head")[0].appendChild(_b); +} +}); +if(this.options.ratioDim.x>0&&this.options.ratioDim.y>0){ +var _c=this.getGCD(this.options.ratioDim.x,this.options.ratioDim.y); +this.ratioX=this.options.ratioDim.x/_c; +this.ratioY=this.options.ratioDim.y/_c; +} +this.subInitialize(); +if(this.img.complete||this.isWebKit){ +this.onLoad(); +}else{ +Event.observe(this.img,"load",this.onLoad.bindAsEventListener(this)); +} +},getGCD:function(a,b){ +if(b==0){ +return a; +} +return this.getGCD(b,a%b); +},onLoad:function(){ +var _f="imgCrop_"; +var _10=this.img.parentNode; +var _11=""; +if(this.isOpera8){ +_11=" opera8"; +} +this.imgWrap=Builder.node("div",{"class":_f+"wrap"+_11}); +this.north=Builder.node("div",{"class":_f+"overlay "+_f+"north"},[Builder.node("span")]); +this.east=Builder.node("div",{"class":_f+"overlay "+_f+"east"},[Builder.node("span")]); +this.south=Builder.node("div",{"class":_f+"overlay "+_f+"south"},[Builder.node("span")]); +this.west=Builder.node("div",{"class":_f+"overlay "+_f+"west"},[Builder.node("span")]); +var _12=[this.north,this.east,this.south,this.west]; +this.dragArea=Builder.node("div",{"class":_f+"dragArea"},_12); +this.handleN=Builder.node("div",{"class":_f+"handle "+_f+"handleN"}); +this.handleNE=Builder.node("div",{"class":_f+"handle "+_f+"handleNE"}); +this.handleE=Builder.node("div",{"class":_f+"handle "+_f+"handleE"}); +this.handleSE=Builder.node("div",{"class":_f+"handle "+_f+"handleSE"}); +this.handleS=Builder.node("div",{"class":_f+"handle "+_f+"handleS"}); +this.handleSW=Builder.node("div",{"class":_f+"handle "+_f+"handleSW"}); +this.handleW=Builder.node("div",{"class":_f+"handle "+_f+"handleW"}); +this.handleNW=Builder.node("div",{"class":_f+"handle "+_f+"handleNW"}); +this.selArea=Builder.node("div",{"class":_f+"selArea"},[Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeNorth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeEast"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeHoriz "+_f+"marqueeSouth"},[Builder.node("span")]),Builder.node("div",{"class":_f+"marqueeVert "+_f+"marqueeWest"},[Builder.node("span")]),this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW,Builder.node("div",{"class":_f+"clickArea"})]); +this.imgWrap.appendChild(this.img); +this.imgWrap.appendChild(this.dragArea); +this.dragArea.appendChild(this.selArea); +this.dragArea.appendChild(Builder.node("div",{"class":_f+"clickArea"})); +_10.appendChild(this.imgWrap); +this.startDragBind=this.startDrag.bindAsEventListener(this); +Event.observe(this.dragArea,"mousedown",this.startDragBind); +this.onDragBind=this.onDrag.bindAsEventListener(this); +Event.observe(document,"mousemove",this.onDragBind); +this.endCropBind=this.endCrop.bindAsEventListener(this); +Event.observe(document,"mouseup",this.endCropBind); +this.resizeBind=this.startResize.bindAsEventListener(this); +this.handles=[this.handleN,this.handleNE,this.handleE,this.handleSE,this.handleS,this.handleSW,this.handleW,this.handleNW]; +this.registerHandles(true); +if(this.options.captureKeys){ +this.keysBind=this.handleKeys.bindAsEventListener(this); +Event.observe(document,"keypress",this.keysBind); +} +new CropDraggable(this.selArea,{drawMethod:this.moveArea.bindAsEventListener(this)}); +this.setParams(); +},registerHandles:function(_13){ +for(var i=0;i0&&this.options.ratioDim.y>0){ +_1a.x1=Math.ceil((this.imgW-this.options.ratioDim.x)/2); +_1a.y1=Math.ceil((this.imgH-this.options.ratioDim.y)/2); +_1a.x2=_1a.x1+this.options.ratioDim.x; +_1a.y2=_1a.y1+this.options.ratioDim.y; +_1b=true; +} +} +//this.setAreaCoords(_1a,false,false,1); +if(this.options.displayOnInit&&_1b){ +this.selArea.show(); +this.drawArea(); +this.endCrop(); +} +this.attached=true; +},remove:function(){ +if(this.attached){ +this.attached=false; +this.imgWrap.parentNode.insertBefore(this.img,this.imgWrap); +this.imgWrap.parentNode.removeChild(this.imgWrap); +Event.stopObserving(this.dragArea,"mousedown",this.startDragBind); +Event.stopObserving(document,"mousemove",this.onDragBind); +Event.stopObserving(document,"mouseup",this.endCropBind); +this.registerHandles(false); +if(this.options.captureKeys){ +Event.stopObserving(document,"keypress",this.keysBind); +} +} +}, +reset:function(minWidth, minHeight, maxWidth, maxHeight) +{ + if(!this.attached){ + this.onLoad(); + }else{ + this.setParams(); + } + this.endCrop(); + this.options.minWidth = minWidth; + this.options.minHeight = minHeight; + this.options.maxWidth = maxWidth; + this.options.maxHeight = maxHeight; +},handleKeys:function(e){ +var dir={x:0,y:0}; +if(!this.dragging){ +switch(e.keyCode){ +case (37): +dir.x=-1; +break; +case (38): +dir.y=-1; +break; +case (39): +dir.x=1; +break; +case (40): +dir.y=1; +break; +} +if(dir.x!=0||dir.y!=0){ +if(e.shiftKey){ +dir.x*=10; +dir.y*=10; +} +this.moveArea([this.areaCoords.x1+dir.x,this.areaCoords.y1+dir.y]); +Event.stop(e); +} +} +},calcW:function(){ +return (this.areaCoords.x2-this.areaCoords.x1); +},calcH:function(){ +return (this.areaCoords.y2-this.areaCoords.y1); +},moveArea:function(_1e){ +this.setAreaCoords({x1:_1e[0],y1:_1e[1],x2:_1e[0]+this.calcW(),y2:_1e[1]+this.calcH()},true,false); +this.drawArea(); +},cloneCoords:function(_1f){ +return {x1:_1f.x1,y1:_1f.y1,x2:_1f.x2,y2:_1f.y2}; +},setAreaCoords:function(_20,_21,_22,_23,_24){ +if(_21){ +var _25=_20.x2-_20.x1; +var _26=_20.y2-_20.y1; +if(_20.x1<0){ +_20.x1=0; +_20.x2=_25; +} +if(_20.y1<0){ +_20.y1=0; +_20.y2=_26; +} +if(_20.x2>this.imgW){ +_20.x2=this.imgW; +_20.x1=this.imgW-_25; +} +if(_20.y2>this.imgH){ +_20.y2=this.imgH; +_20.y1=this.imgH-_26; +} +}else{ +if(_20.x1<0){ +_20.x1=0; +} +if(_20.y1<0){ +_20.y1=0; +} +if(_20.x2>this.imgW){ +_20.x2=this.imgW; +} +if(_20.y2>this.imgH){ +_20.y2=this.imgH; +} +if(_23!=null){ +if(this.ratioX>0){ +this.applyRatio(_20,{x:this.ratioX,y:this.ratioY},_23,_24); +}else{ +if(_22){ +this.applyRatio(_20,{x:1,y:1},_23,_24); +} +} +var _27=[this.options.minWidth,this.options.minHeight]; +var _28=[this.options.maxWidth,this.options.maxHeight]; +if(_27[0]>0||_27[1]>0||_28[0]>0||_28[1]>0){ +var _29={a1:_20.x1,a2:_20.x2}; +var _2a={a1:_20.y1,a2:_20.y2}; +var _2b={min:0,max:this.imgW}; +var _2c={min:0,max:this.imgH}; +if((_27[0]!=0||_27[1]!=0)&&_22){ +if(_27[0]>0){ +_27[1]=_27[0]; +}else{ +if(_27[1]>0){ +_27[0]=_27[1]; +} +} +} +if((_28[0]!=0||_28[0]!=0)&&_22){ +if(_28[0]>0&&_28[0]<=_28[1]){ +_28[1]=_28[0]; +}else{ +if(_28[1]>0&&_28[1]<=_28[0]){ +_28[0]=_28[1]; +} +} +} +if(_27[0]>0){ +this.applyDimRestriction(_29,_27[0],_23.x,_2b,"min"); +} +if(_27[1]>1){ +this.applyDimRestriction(_2a,_27[1],_23.y,_2c,"min"); +} +if(_28[0]>0){ +this.applyDimRestriction(_29,_28[0],_23.x,_2b,"max"); +} +if(_28[1]>1){ +this.applyDimRestriction(_2a,_28[1],_23.y,_2c,"max"); +} +_20={x1:_29.a1,y1:_2a.a1,x2:_29.a2,y2:_2a.a2}; +} +} +} +this.areaCoords=_20; +},applyDimRestriction:function(_2d,val,_2f,_30,_31){ +var _32; +if(_31=="min"){ +_32=((_2d.a2-_2d.a1)val); +} +if(_32){ +if(_2f==1){ +_2d.a2=_2d.a1+val; +}else{ +_2d.a1=_2d.a2-val; +} +if(_2d.a1<_30.min){ +_2d.a1=_30.min; +_2d.a2=val; +}else{ +if(_2d.a2>_30.max){ +_2d.a1=_30.max-val; +_2d.a2=_30.max; +} +} +} +},applyRatio:function(_33,_34,_35,_36){ +var _37; +if(_36=="N"||_36=="S"){ +_37=this.applyRatioToAxis({a1:_33.y1,b1:_33.x1,a2:_33.y2,b2:_33.x2},{a:_34.y,b:_34.x},{a:_35.y,b:_35.x},{min:0,max:this.imgW}); +_33.x1=_37.b1; +_33.y1=_37.a1; +_33.x2=_37.b2; +_33.y2=_37.a2; +}else{ +_37=this.applyRatioToAxis({a1:_33.x1,b1:_33.y1,a2:_33.x2,b2:_33.y2},{a:_34.x,b:_34.y},{a:_35.x,b:_35.y},{min:0,max:this.imgH}); +_33.x1=_37.a1; +_33.y1=_37.b1; +_33.x2=_37.a2; +_33.y2=_37.b2; +} +},applyRatioToAxis:function(_38,_39,_3a,_3b){ +var _3c=Object.extend(_38,{}); +var _3d=_3c.a2-_3c.a1; +var _3e=Math.floor(_3d*_39.b/_39.a); +var _3f; +var _40; +var _41=null; +if(_3a.b==1){ +_3f=_3c.b1+_3e; +if(_3f>_3b.max){ +_3f=_3b.max; +_41=_3f-_3c.b1; +} +_3c.b2=_3f; +}else{ +_3f=_3c.b2-_3e; +if(_3f<_3b.min){ +_3f=_3b.min; +_41=_3f+_3c.b2; +} +_3c.b1=_3f; +} +if(_41!=null){ +_40=Math.floor(_41*_39.a/_39.b); +if(_3a.a==1){ +_3c.a2=_3c.a1+_40; +}else{ +_3c.a1=_3c.a1=_3c.a2-_40; +} +} +return _3c; +},drawArea:function(){ +var _42=this.calcW(); +var _43=this.calcH(); +var px="px"; +var _45=[this.areaCoords.x1+px,this.areaCoords.y1+px,_42+px,_43+px,this.areaCoords.x2+px,this.areaCoords.y2+px,(this.img.width-this.areaCoords.x2)+px,(this.img.height-this.areaCoords.y2)+px]; +var _46=this.selArea.style; +_46.left=_45[0]; +_46.top=_45[1]; +_46.width=_45[2]; +_46.height=_45[3]; +var _47=Math.ceil((_42-6)/2)+px; +var _48=Math.ceil((_43-6)/2)+px; +this.handleN.style.left=_47; +this.handleE.style.top=_48; +this.handleS.style.left=_47; +this.handleW.style.top=_48; +this.north.style.height=_45[1]; +var _49=this.east.style; +_49.top=_45[1]; +_49.height=_45[3]; +_49.left=_45[4]; +_49.width=_45[6]; +var _4a=this.south.style; +_4a.top=_45[5]; +_4a.height=_45[7]; +var _4b=this.west.style; +_4b.top=_45[1]; +_4b.height=_45[3]; +_4b.width=_45[0]; +this.subDrawArea(); +this.forceReRender(); +},forceReRender:function(){ +if(this.isIE||this.isWebKit){ +var n=document.createTextNode(" "); +var d,el,fixEL,i; +if(this.isIE){ +fixEl=this.selArea; +}else{ +if(this.isWebKit){ +fixEl=document.getElementsByClassName("imgCrop_marqueeSouth",this.imgWrap)[0]; +d=Builder.node("div",""); +d.style.visibility="hidden"; +var _4e=["SE","S","SW"]; +for(i=0;i<_4e.length;i++){ +el=document.getElementsByClassName("imgCrop_handle"+_4e[i],this.selArea)[0]; +if(el.childNodes.length){ +el.removeChild(el.childNodes[0]); +} +el.appendChild(d); +} +} +} +fixEl.appendChild(n); +fixEl.removeChild(n); +} +},startResize:function(e){ +this.startCoords=this.cloneCoords(this.areaCoords); +this.resizing=true; +this.resizeHandle=Event.element(e).classNames().toString().replace(/([^N|NE|E|SE|S|SW|W|NW])+/,""); +Event.stop(e); +},startDrag:function(e){ +this.selArea.show(); +this.clickCoords=this.getCurPos(e); +this.setAreaCoords({x1:this.clickCoords.x,y1:this.clickCoords.y,x2:this.clickCoords.x,y2:this.clickCoords.y},false,false,null); +this.dragging=true; +this.onDrag(e); +Event.stop(e); +},getCurPos:function(e){ +var el=this.imgWrap,wrapOffsets=Position.cumulativeOffset(el); +while(el.nodeName!="BODY"){ +wrapOffsets[1]-=el.scrollTop||0; +wrapOffsets[0]-=el.scrollLeft||0; +el=el.parentNode; +} +return curPos={x:Event.pointerX(e)-wrapOffsets[0],y:Event.pointerY(e)-wrapOffsets[1]}; +},onDrag:function(e){ +if(this.dragging||this.resizing){ +var _54=null; +var _55=this.getCurPos(e); +var _56=this.cloneCoords(this.areaCoords); +var _57={x:1,y:1}; +if(this.dragging){ +if(_55.x_59){ +_5c.reverse(); +} +_5a[_5b+"1"]=_5c[0]; +_5a[_5b+"2"]=_5c[1]; +},endCrop:function(){ +this.dragging=false; +this.resizing=false; +this.options.onEndCrop(this.areaCoords,{width:this.calcW(),height:this.calcH()}); +},subInitialize:function(){ +},subDrawArea:function(){ +}}; +Cropper.ImgWithPreview=Class.create(); +Object.extend(Object.extend(Cropper.ImgWithPreview.prototype,Cropper.Img.prototype),{subInitialize:function(){ +this.hasPreviewImg=false; +if(typeof (this.options.previewWrap)!="undefined"&&this.options.minWidth>0&&this.options.minHeight>0){ +this.previewWrap=$(this.options.previewWrap); +this.previewImg=this.img.cloneNode(false); +this.previewImg.id="imgCrop_"+this.previewImg.id; +this.options.displayOnInit=true; +this.hasPreviewImg=true; +this.previewWrap.addClassName("imgCrop_previewWrap"); +this.previewWrap.setStyle({width:this.options.minWidth+"px",height:this.options.minHeight+"px"}); +this.previewWrap.appendChild(this.previewImg); +} +},subDrawArea:function(){ +if(this.hasPreviewImg){ +var _5d=this.calcW(); +var _5e=this.calcH(); +var _5f={x:this.imgW/_5d,y:this.imgH/_5e}; +var _60={x:_5d/this.options.minWidth,y:_5e/this.options.minHeight}; +var _61={w:Math.ceil(this.options.minWidth*_5f.x)+"px",h:Math.ceil(this.options.minHeight*_5f.y)+"px",x:"-"+Math.ceil(this.areaCoords.x1/_60.x)+"px",y:"-"+Math.ceil(this.areaCoords.y1/_60.y)+"px"}; +var _62=this.previewImg.style; +_62.width=_61.w; +_62.height=_61.h; +_62.left=_61.x; +_62.top=_61.y; +} +}}); + diff --git a/js/cropper/dragdrop.js b/js/cropper/dragdrop.js new file mode 100644 index 000000000..be2a30f53 --- /dev/null +++ b/js/cropper/dragdrop.js @@ -0,0 +1,915 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// (c) 2005 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz) +// +// See scriptaculous.js for full license. + +/*--------------------------------------------------------------------------*/ + +var Droppables = { + drops: [], + + remove: function(element) { + this.drops = this.drops.reject(function(d) { return d.element==$(element) }); + }, + + add: function(element) { + element = $(element); + var options = Object.extend({ + greedy: true, + hoverclass: null, + tree: false + }, arguments[1] || {}); + + // cache containers + if(options.containment) { + options._containers = []; + var containment = options.containment; + if((typeof containment == 'object') && + (containment.constructor == Array)) { + containment.each( function(c) { options._containers.push($(c)) }); + } else { + options._containers.push($(containment)); + } + } + + if(options.accept) options.accept = [options.accept].flatten(); + + Element.makePositioned(element); // fix IE + options.element = element; + + this.drops.push(options); + }, + + findDeepestChild: function(drops) { + deepest = drops[0]; + + for (i = 1; i < drops.length; ++i) + if (Element.isParent(drops[i].element, deepest.element)) + deepest = drops[i]; + + return deepest; + }, + + isContained: function(element, drop) { + var containmentNode; + if(drop.tree) { + containmentNode = element.treeNode; + } else { + containmentNode = element.parentNode; + } + return drop._containers.detect(function(c) { return containmentNode == c }); + }, + + isAffected: function(point, element, drop) { + return ( + (drop.element!=element) && + ((!drop._containers) || + this.isContained(element, drop)) && + ((!drop.accept) || + (Element.classNames(element).detect( + function(v) { return drop.accept.include(v) } ) )) && + Position.within(drop.element, point[0], point[1]) ); + }, + + deactivate: function(drop) { + if(drop.hoverclass) + Element.removeClassName(drop.element, drop.hoverclass); + this.last_active = null; + }, + + activate: function(drop) { + if(drop.hoverclass) + Element.addClassName(drop.element, drop.hoverclass); + this.last_active = drop; + }, + + show: function(point, element) { + if(!this.drops.length) return; + var affected = []; + + if(this.last_active) this.deactivate(this.last_active); + this.drops.each( function(drop) { + if(Droppables.isAffected(point, element, drop)) + affected.push(drop); + }); + + if(affected.length>0) { + drop = Droppables.findDeepestChild(affected); + Position.within(drop.element, point[0], point[1]); + if(drop.onHover) + drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element)); + + Droppables.activate(drop); + } + }, + + fire: function(event, element) { + if(!this.last_active) return; + Position.prepare(); + + if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active)) + if (this.last_active.onDrop) + this.last_active.onDrop(element, this.last_active.element, event); + }, + + reset: function() { + if(this.last_active) + this.deactivate(this.last_active); + } +} + +var Draggables = { + drags: [], + observers: [], + + register: function(draggable) { + if(this.drags.length == 0) { + this.eventMouseUp = this.endDrag.bindAsEventListener(this); + this.eventMouseMove = this.updateDrag.bindAsEventListener(this); + this.eventKeypress = this.keyPress.bindAsEventListener(this); + + Event.observe(document, "mouseup", this.eventMouseUp); + Event.observe(document, "mousemove", this.eventMouseMove); + Event.observe(document, "keypress", this.eventKeypress); + } + this.drags.push(draggable); + }, + + unregister: function(draggable) { + this.drags = this.drags.reject(function(d) { return d==draggable }); + if(this.drags.length == 0) { + Event.stopObserving(document, "mouseup", this.eventMouseUp); + Event.stopObserving(document, "mousemove", this.eventMouseMove); + Event.stopObserving(document, "keypress", this.eventKeypress); + } + }, + + activate: function(draggable) { + window.focus(); // allows keypress events if window isn't currently focused, fails for Safari + this.activeDraggable = draggable; + }, + + deactivate: function() { + this.activeDraggable = null; + }, + + updateDrag: function(event) { + if(!this.activeDraggable) return; + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + // Mozilla-based browsers fire successive mousemove events with + // the same coordinates, prevent needless redrawing (moz bug?) + if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return; + this._lastPointer = pointer; + this.activeDraggable.updateDrag(event, pointer); + }, + + endDrag: function(event) { + if(!this.activeDraggable) return; + this._lastPointer = null; + this.activeDraggable.endDrag(event); + this.activeDraggable = null; + }, + + keyPress: function(event) { + if(this.activeDraggable) + this.activeDraggable.keyPress(event); + }, + + addObserver: function(observer) { + this.observers.push(observer); + this._cacheObserverCallbacks(); + }, + + removeObserver: function(element) { // element instead of observer fixes mem leaks + this.observers = this.observers.reject( function(o) { return o.element==element }); + this._cacheObserverCallbacks(); + }, + + notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag' + if(this[eventName+'Count'] > 0) + this.observers.each( function(o) { + if(o[eventName]) o[eventName](eventName, draggable, event); + }); + }, + + _cacheObserverCallbacks: function() { + ['onStart','onEnd','onDrag'].each( function(eventName) { + Draggables[eventName+'Count'] = Draggables.observers.select( + function(o) { return o[eventName]; } + ).length; + }); + } +} + +/*--------------------------------------------------------------------------*/ + +var Draggable = Class.create(); +Draggable.prototype = { + initialize: function(element) { + var options = Object.extend({ + handle: false, + starteffect: function(element) { + element._opacity = Element.getOpacity(element); + new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); + }, + reverteffect: function(element, top_offset, left_offset) { + var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02; + element._revert = new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur}); + }, + endeffect: function(element) { + var toOpacity = typeof element._opacity == 'number' ? element._opacity : 1.0 + new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity}); + }, + zindex: 1000, + revert: false, + scroll: false, + scrollSensitivity: 20, + scrollSpeed: 15, + snap: false // false, or xy or [x,y] or function(x,y){ return [x,y] } + }, arguments[1] || {}); + + this.element = $(element); + + if(options.handle && (typeof options.handle == 'string')) { + var h = Element.childrenWithClassName(this.element, options.handle, true); + if(h.length>0) this.handle = h[0]; + } + if(!this.handle) this.handle = $(options.handle); + if(!this.handle) this.handle = this.element; + + if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) + options.scroll = $(options.scroll); + + Element.makePositioned(this.element); // fix IE + + this.delta = this.currentDelta(); + this.options = options; + this.dragging = false; + + this.eventMouseDown = this.initDrag.bindAsEventListener(this); + Event.observe(this.handle, "mousedown", this.eventMouseDown); + + Draggables.register(this); + }, + + destroy: function() { + Event.stopObserving(this.handle, "mousedown", this.eventMouseDown); + Draggables.unregister(this); + }, + + currentDelta: function() { + return([ + parseInt(Element.getStyle(this.element,'left') || '0'), + parseInt(Element.getStyle(this.element,'top') || '0')]); + }, + + initDrag: function(event) { + if(Event.isLeftClick(event)) { + // abort on form elements, fixes a Firefox issue + var src = Event.element(event); + if(src.tagName && ( + src.tagName=='INPUT' || + src.tagName=='SELECT' || + src.tagName=='OPTION' || + src.tagName=='BUTTON' || + src.tagName=='TEXTAREA')) return; + + if(this.element._revert) { + this.element._revert.cancel(); + this.element._revert = null; + } + + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + var pos = Position.cumulativeOffset(this.element); + this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) }); + + Draggables.activate(this); + Event.stop(event); + } + }, + + startDrag: function(event) { + this.dragging = true; + + if(this.options.zindex) { + this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0); + this.element.style.zIndex = this.options.zindex; + } + + if(this.options.ghosting) { + this._clone = this.element.cloneNode(true); + Position.absolutize(this.element); + this.element.parentNode.insertBefore(this._clone, this.element); + } + + if(this.options.scroll) { + if (this.options.scroll == window) { + var where = this._getWindowScroll(this.options.scroll); + this.originalScrollLeft = where.left; + this.originalScrollTop = where.top; + } else { + this.originalScrollLeft = this.options.scroll.scrollLeft; + this.originalScrollTop = this.options.scroll.scrollTop; + } + } + + Draggables.notify('onStart', this, event); + if(this.options.starteffect) this.options.starteffect(this.element); + }, + + updateDrag: function(event, pointer) { + if(!this.dragging) this.startDrag(event); + Position.prepare(); + Droppables.show(pointer, this.element); + Draggables.notify('onDrag', this, event); + this.draw(pointer); + if(this.options.change) this.options.change(this); + + if(this.options.scroll) { + this.stopScrolling(); + + var p; + if (this.options.scroll == window) { + with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; } + } else { + p = Position.page(this.options.scroll); + p[0] += this.options.scroll.scrollLeft; + p[1] += this.options.scroll.scrollTop; + p.push(p[0]+this.options.scroll.offsetWidth); + p.push(p[1]+this.options.scroll.offsetHeight); + } + var speed = [0,0]; + if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity); + if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity); + if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity); + if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity); + this.startScrolling(speed); + } + + // fix AppleWebKit rendering + if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); + + Event.stop(event); + }, + + finishDrag: function(event, success) { + this.dragging = false; + + if(this.options.ghosting) { + Position.relativize(this.element); + Element.remove(this._clone); + this._clone = null; + } + + if(success) Droppables.fire(event, this.element); + Draggables.notify('onEnd', this, event); + + var revert = this.options.revert; + if(revert && typeof revert == 'function') revert = revert(this.element); + + var d = this.currentDelta(); + if(revert && this.options.reverteffect) { + this.options.reverteffect(this.element, + d[1]-this.delta[1], d[0]-this.delta[0]); + } else { + this.delta = d; + } + + if(this.options.zindex) + this.element.style.zIndex = this.originalZ; + + if(this.options.endeffect) + this.options.endeffect(this.element); + + Draggables.deactivate(this); + Droppables.reset(); + }, + + keyPress: function(event) { + if(event.keyCode!=Event.KEY_ESC) return; + this.finishDrag(event, false); + Event.stop(event); + }, + + endDrag: function(event) { + if(!this.dragging) return; + this.stopScrolling(); + this.finishDrag(event, true); + Event.stop(event); + }, + + draw: function(point) { + var pos = Position.cumulativeOffset(this.element); + var d = this.currentDelta(); + pos[0] -= d[0]; pos[1] -= d[1]; + + if(this.options.scroll && (this.options.scroll != window)) { + pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft; + pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop; + } + + var p = [0,1].map(function(i){ + return (point[i]-pos[i]-this.offset[i]) + }.bind(this)); + + if(this.options.snap) { + if(typeof this.options.snap == 'function') { + p = this.options.snap(p[0],p[1],this); + } else { + if(this.options.snap instanceof Array) { + p = p.map( function(v, i) { + return Math.round(v/this.options.snap[i])*this.options.snap[i] }.bind(this)) + } else { + p = p.map( function(v) { + return Math.round(v/this.options.snap)*this.options.snap }.bind(this)) + } + }} + + var style = this.element.style; + if((!this.options.constraint) || (this.options.constraint=='horizontal')) + style.left = p[0] + "px"; + if((!this.options.constraint) || (this.options.constraint=='vertical')) + style.top = p[1] + "px"; + if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering + }, + + stopScrolling: function() { + if(this.scrollInterval) { + clearInterval(this.scrollInterval); + this.scrollInterval = null; + Draggables._lastScrollPointer = null; + } + }, + + startScrolling: function(speed) { + this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed]; + this.lastScrolled = new Date(); + this.scrollInterval = setInterval(this.scroll.bind(this), 10); + }, + + scroll: function() { + var current = new Date(); + var delta = current - this.lastScrolled; + this.lastScrolled = current; + if(this.options.scroll == window) { + with (this._getWindowScroll(this.options.scroll)) { + if (this.scrollSpeed[0] || this.scrollSpeed[1]) { + var d = delta / 1000; + this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] ); + } + } + } else { + this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; + this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; + } + + Position.prepare(); + Droppables.show(Draggables._lastPointer, this.element); + Draggables.notify('onDrag', this); + Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer); + Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000; + Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000; + if (Draggables._lastScrollPointer[0] < 0) + Draggables._lastScrollPointer[0] = 0; + if (Draggables._lastScrollPointer[1] < 0) + Draggables._lastScrollPointer[1] = 0; + this.draw(Draggables._lastScrollPointer); + + if(this.options.change) this.options.change(this); + }, + + _getWindowScroll: function(w) { + var T, L, W, H; + with (w.document) { + if (w.document.documentElement && documentElement.scrollTop) { + T = documentElement.scrollTop; + L = documentElement.scrollLeft; + } else if (w.document.body) { + T = body.scrollTop; + L = body.scrollLeft; + } + if (w.innerWidth) { + W = w.innerWidth; + H = w.innerHeight; + } else if (w.document.documentElement && documentElement.clientWidth) { + W = documentElement.clientWidth; + H = documentElement.clientHeight; + } else { + W = body.offsetWidth; + H = body.offsetHeight + } + } + return { top: T, left: L, width: W, height: H }; + } +} + +/*--------------------------------------------------------------------------*/ + +var SortableObserver = Class.create(); +SortableObserver.prototype = { + initialize: function(element, observer) { + this.element = $(element); + this.observer = observer; + this.lastValue = Sortable.serialize(this.element); + }, + + onStart: function() { + this.lastValue = Sortable.serialize(this.element); + }, + + onEnd: function() { + Sortable.unmark(); + if(this.lastValue != Sortable.serialize(this.element)) + this.observer(this.element) + } +} + +var Sortable = { + sortables: {}, + + _findRootElement: function(element) { + while (element.tagName != "BODY") { + if(element.id && Sortable.sortables[element.id]) return element; + element = element.parentNode; + } + }, + + options: function(element) { + element = Sortable._findRootElement($(element)); + if(!element) return; + return Sortable.sortables[element.id]; + }, + + destroy: function(element){ + var s = Sortable.options(element); + + if(s) { + Draggables.removeObserver(s.element); + s.droppables.each(function(d){ Droppables.remove(d) }); + s.draggables.invoke('destroy'); + + delete Sortable.sortables[s.element.id]; + } + }, + + create: function(element) { + element = $(element); + var options = Object.extend({ + element: element, + tag: 'li', // assumes li children, override with tag: 'tagname' + dropOnEmpty: false, + tree: false, + treeTag: 'ul', + overlap: 'vertical', // one of 'vertical', 'horizontal' + constraint: 'vertical', // one of 'vertical', 'horizontal', false + containment: element, // also takes array of elements (or id's); or false + handle: false, // or a CSS class + only: false, + hoverclass: null, + ghosting: false, + scroll: false, + scrollSensitivity: 20, + scrollSpeed: 15, + format: /^[^_]*_(.*)$/, + onChange: Prototype.emptyFunction, + onUpdate: Prototype.emptyFunction + }, arguments[1] || {}); + + // clear any old sortable with same element + this.destroy(element); + + // build options for the draggables + var options_for_draggable = { + revert: true, + scroll: options.scroll, + scrollSpeed: options.scrollSpeed, + scrollSensitivity: options.scrollSensitivity, + ghosting: options.ghosting, + constraint: options.constraint, + handle: options.handle }; + + if(options.starteffect) + options_for_draggable.starteffect = options.starteffect; + + if(options.reverteffect) + options_for_draggable.reverteffect = options.reverteffect; + else + if(options.ghosting) options_for_draggable.reverteffect = function(element) { + element.style.top = 0; + element.style.left = 0; + }; + + if(options.endeffect) + options_for_draggable.endeffect = options.endeffect; + + if(options.zindex) + options_for_draggable.zindex = options.zindex; + + // build options for the droppables + var options_for_droppable = { + overlap: options.overlap, + containment: options.containment, + tree: options.tree, + hoverclass: options.hoverclass, + onHover: Sortable.onHover + //greedy: !options.dropOnEmpty + } + + var options_for_tree = { + onHover: Sortable.onEmptyHover, + overlap: options.overlap, + containment: options.containment, + hoverclass: options.hoverclass + } + + // fix for gecko engine + Element.cleanWhitespace(element); + + options.draggables = []; + options.droppables = []; + + // drop on empty handling + if(options.dropOnEmpty || options.tree) { + Droppables.add(element, options_for_tree); + options.droppables.push(element); + } + + (this.findElements(element, options) || []).each( function(e) { + // handles are per-draggable + var handle = options.handle ? + Element.childrenWithClassName(e, options.handle)[0] : e; + options.draggables.push( + new Draggable(e, Object.extend(options_for_draggable, { handle: handle }))); + Droppables.add(e, options_for_droppable); + if(options.tree) e.treeNode = element; + options.droppables.push(e); + }); + + if(options.tree) { + (Sortable.findTreeElements(element, options) || []).each( function(e) { + Droppables.add(e, options_for_tree); + e.treeNode = element; + options.droppables.push(e); + }); + } + + // keep reference + this.sortables[element.id] = options; + + // for onupdate + Draggables.addObserver(new SortableObserver(element, options.onUpdate)); + + }, + + // return all suitable-for-sortable elements in a guaranteed order + findElements: function(element, options) { + return Element.findChildren( + element, options.only, options.tree ? true : false, options.tag); + }, + + findTreeElements: function(element, options) { + return Element.findChildren( + element, options.only, options.tree ? true : false, options.treeTag); + }, + + onHover: function(element, dropon, overlap) { + if(Element.isParent(dropon, element)) return; + + if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { + return; + } else if(overlap>0.5) { + Sortable.mark(dropon, 'before'); + if(dropon.previousSibling != element) { + var oldParentNode = element.parentNode; + element.style.visibility = "hidden"; // fix gecko rendering + dropon.parentNode.insertBefore(element, dropon); + if(dropon.parentNode!=oldParentNode) + Sortable.options(oldParentNode).onChange(element); + Sortable.options(dropon.parentNode).onChange(element); + } + } else { + Sortable.mark(dropon, 'after'); + var nextElement = dropon.nextSibling || null; + if(nextElement != element) { + var oldParentNode = element.parentNode; + element.style.visibility = "hidden"; // fix gecko rendering + dropon.parentNode.insertBefore(element, nextElement); + if(dropon.parentNode!=oldParentNode) + Sortable.options(oldParentNode).onChange(element); + Sortable.options(dropon.parentNode).onChange(element); + } + } + }, + + onEmptyHover: function(element, dropon, overlap) { + var oldParentNode = element.parentNode; + var droponOptions = Sortable.options(dropon); + + if(!Element.isParent(dropon, element)) { + var index; + + var children = Sortable.findElements(dropon, {tag: droponOptions.tag}); + var child = null; + + if(children) { + var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); + + for (index = 0; index < children.length; index += 1) { + if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) { + offset -= Element.offsetSize (children[index], droponOptions.overlap); + } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { + child = index + 1 < children.length ? children[index + 1] : null; + break; + } else { + child = children[index]; + break; + } + } + } + + dropon.insertBefore(element, child); + + Sortable.options(oldParentNode).onChange(element); + droponOptions.onChange(element); + } + }, + + unmark: function() { + if(Sortable._marker) Element.hide(Sortable._marker); + }, + + mark: function(dropon, position) { + // mark on ghosting only + var sortable = Sortable.options(dropon.parentNode); + if(sortable && !sortable.ghosting) return; + + if(!Sortable._marker) { + Sortable._marker = $('dropmarker') || document.createElement('DIV'); + Element.hide(Sortable._marker); + Element.addClassName(Sortable._marker, 'dropmarker'); + Sortable._marker.style.position = 'absolute'; + document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); + } + var offsets = Position.cumulativeOffset(dropon); + Sortable._marker.style.left = offsets[0] + 'px'; + Sortable._marker.style.top = offsets[1] + 'px'; + + if(position=='after') + if(sortable.overlap == 'horizontal') + Sortable._marker.style.left = (offsets[0]+dropon.clientWidth) + 'px'; + else + Sortable._marker.style.top = (offsets[1]+dropon.clientHeight) + 'px'; + + Element.show(Sortable._marker); + }, + + _tree: function(element, options, parent) { + var children = Sortable.findElements(element, options) || []; + + for (var i = 0; i < children.length; ++i) { + var match = children[i].id.match(options.format); + + if (!match) continue; + + var child = { + id: encodeURIComponent(match ? match[1] : null), + element: element, + parent: parent, + children: new Array, + position: parent.children.length, + container: Sortable._findChildrenElement(children[i], options.treeTag.toUpperCase()) + } + + /* Get the element containing the children and recurse over it */ + if (child.container) + this._tree(child.container, options, child) + + parent.children.push (child); + } + + return parent; + }, + + /* Finds the first element of the given tag type within a parent element. + Used for finding the first LI[ST] within a L[IST]I[TEM].*/ + _findChildrenElement: function (element, containerTag) { + if (element && element.hasChildNodes) + for (var i = 0; i < element.childNodes.length; ++i) + if (element.childNodes[i].tagName == containerTag) + return element.childNodes[i]; + + return null; + }, + + tree: function(element) { + element = $(element); + var sortableOptions = this.options(element); + var options = Object.extend({ + tag: sortableOptions.tag, + treeTag: sortableOptions.treeTag, + only: sortableOptions.only, + name: element.id, + format: sortableOptions.format + }, arguments[1] || {}); + + var root = { + id: null, + parent: null, + children: new Array, + container: element, + position: 0 + } + + return Sortable._tree (element, options, root); + }, + + /* Construct a [i] index for a particular node */ + _constructIndex: function(node) { + var index = ''; + do { + if (node.id) index = '[' + node.position + ']' + index; + } while ((node = node.parent) != null); + return index; + }, + + sequence: function(element) { + element = $(element); + var options = Object.extend(this.options(element), arguments[1] || {}); + + return $(this.findElements(element, options) || []).map( function(item) { + return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; + }); + }, + + setSequence: function(element, new_sequence) { + element = $(element); + var options = Object.extend(this.options(element), arguments[2] || {}); + + var nodeMap = {}; + this.findElements(element, options).each( function(n) { + if (n.id.match(options.format)) + nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode]; + n.parentNode.removeChild(n); + }); + + new_sequence.each(function(ident) { + var n = nodeMap[ident]; + if (n) { + n[1].appendChild(n[0]); + delete nodeMap[ident]; + } + }); + }, + + serialize: function(element) { + element = $(element); + var options = Object.extend(Sortable.options(element), arguments[1] || {}); + var name = encodeURIComponent( + (arguments[1] && arguments[1].name) ? arguments[1].name : element.id); + + if (options.tree) { + return Sortable.tree(element, arguments[1]).children.map( function (item) { + return [name + Sortable._constructIndex(item) + "=" + + encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); + }).flatten().join('&'); + } else { + return Sortable.sequence(element, arguments[1]).map( function(item) { + return name + "[]=" + encodeURIComponent(item); + }).join('&'); + } + } +} + +/* Returns true if child is contained within element */ +Element.isParent = function(child, element) { + if (!child.parentNode || child == element) return false; + + if (child.parentNode == element) return true; + + return Element.isParent(child.parentNode, element); +} + +Element.findChildren = function(element, only, recursive, tagName) { + if(!element.hasChildNodes()) return null; + tagName = tagName.toUpperCase(); + if(only) only = [only].flatten(); + var elements = []; + $A(element.childNodes).each( function(e) { + if(e.tagName && e.tagName.toUpperCase()==tagName && + (!only || (Element.classNames(e).detect(function(v) { return only.include(v) })))) + elements.push(e); + if(recursive) { + var grandchildren = Element.findChildren(e, only, recursive, tagName); + if(grandchildren) elements.push(grandchildren); + } + }); + + return (elements.length>0 ? elements.flatten() : []); +} + +Element.offsetSize = function (element, type) { + if (type == 'vertical' || type == 'height') + return element.offsetHeight; + else + return element.offsetWidth; +} \ No newline at end of file diff --git a/js/cropper/index.php b/js/cropper/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/js/cropper/index.php @@ -0,0 +1,11 @@ + + * + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://prototype.conio.net/ + * +/*--------------------------------------------------------------------------*/ + +var Prototype = { + Version: '1.5.0_rc0', + ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)', + + emptyFunction: function() {}, + K: function(x) {return x} +} + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +} + +var Abstract = new Object(); + +Object.extend = function(destination, source) { + for (var property in source) { + destination[property] = source[property]; + } + return destination; +} + +Object.inspect = function(object) { + try { + if (object == undefined) return 'undefined'; + if (object == null) return 'null'; + return object.inspect ? object.inspect() : object.toString(); + } catch (e) { + if (e instanceof RangeError) return '...'; + throw e; + } +} + +Function.prototype.bind = function() { + var __method = this, args = $A(arguments), object = args.shift(); + return function() { + return __method.apply(object, args.concat($A(arguments))); + } +} + +Function.prototype.bindAsEventListener = function(object) { + var __method = this; + return function(event) { + return __method.call(object, event || window.event); + } +} + +Object.extend(Number.prototype, { + toColorPart: function() { + var digits = this.toString(16); + if (this < 16) return '0' + digits; + return digits; + }, + + succ: function() { + return this + 1; + }, + + times: function(iterator) { + $R(0, this, true).each(iterator); + return this; + } +}); + +var Try = { + these: function() { + var returnValue; + + for (var i = 0; i < arguments.length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) {} + } + + return returnValue; + } +} + +/*--------------------------------------------------------------------------*/ + +var PeriodicalExecuter = Class.create(); +PeriodicalExecuter.prototype = { + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.callback(); + } finally { + this.currentlyExecuting = false; + } + } + } +} +Object.extend(String.prototype, { + gsub: function(pattern, replacement) { + var result = '', source = this, match; + replacement = arguments.callee.prepareReplacement(replacement); + + while (source.length > 0) { + if (match = source.match(pattern)) { + result += source.slice(0, match.index); + result += (replacement(match) || '').toString(); + source = source.slice(match.index + match[0].length); + } else { + result += source, source = ''; + } + } + return result; + }, + + sub: function(pattern, replacement, count) { + replacement = this.gsub.prepareReplacement(replacement); + count = count === undefined ? 1 : count; + + return this.gsub(pattern, function(match) { + if (--count < 0) return match[0]; + return replacement(match); + }); + }, + + scan: function(pattern, iterator) { + this.gsub(pattern, iterator); + return this; + }, + + truncate: function(length, truncation) { + length = length || 30; + truncation = truncation === undefined ? '...' : truncation; + return this.length > length ? + this.slice(0, length - truncation.length) + truncation : this; + }, + + strip: function() { + return this.replace(/^\s+/, '').replace(/\s+$/, ''); + }, + + stripTags: function() { + return this.replace(/<\/?[^>]+>/gi, ''); + }, + + stripScripts: function() { + return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); + }, + + extractScripts: function() { + var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); + var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); + return (this.match(matchAll) || []).map(function(scriptTag) { + return (scriptTag.match(matchOne) || ['', ''])[1]; + }); + }, + + evalScripts: function() { + return this.extractScripts().map(function(script) { return eval(script) }); + }, + + escapeHTML: function() { + var div = document.createElement('div'); + var text = document.createTextNode(this); + div.appendChild(text); + return div.innerHTML; + }, + + unescapeHTML: function() { + var div = document.createElement('div'); + div.innerHTML = this.stripTags(); + return div.childNodes[0] ? div.childNodes[0].nodeValue : ''; + }, + + toQueryParams: function() { + var pairs = this.match(/^\??(.*)$/)[1].split('&'); + return pairs.inject({}, function(params, pairString) { + var pair = pairString.split('='); + params[pair[0]] = pair[1]; + return params; + }); + }, + + toArray: function() { + return this.split(''); + }, + + camelize: function() { + var oStringList = this.split('-'); + if (oStringList.length == 1) return oStringList[0]; + + var camelizedString = this.indexOf('-') == 0 + ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1) + : oStringList[0]; + + for (var i = 1, len = oStringList.length; i < len; i++) { + var s = oStringList[i]; + camelizedString += s.charAt(0).toUpperCase() + s.substring(1); + } + + return camelizedString; + }, + + inspect: function() { + return "'" + this.replace(/\\/g, '\\\\').replace(/'/g, '\\\'') + "'"; + } +}); + +String.prototype.gsub.prepareReplacement = function(replacement) { + if (typeof replacement == 'function') return replacement; + var template = new Template(replacement); + return function(match) { return template.evaluate(match) }; +} + +String.prototype.parseQuery = String.prototype.toQueryParams; + +var Template = Class.create(); +Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; +Template.prototype = { + initialize: function(template, pattern) { + this.template = template.toString(); + this.pattern = pattern || Template.Pattern; + }, + + evaluate: function(object) { + return this.template.gsub(this.pattern, function(match) { + var before = match[1]; + if (before == '\\') return match[2]; + return before + (object[match[3]] || '').toString(); + }); + } +} + +var $break = new Object(); +var $continue = new Object(); + +var Enumerable = { + each: function(iterator) { + var index = 0; + try { + this._each(function(value) { + try { + iterator(value, index++); + } catch (e) { + if (e != $continue) throw e; + } + }); + } catch (e) { + if (e != $break) throw e; + } + }, + + all: function(iterator) { + var result = true; + this.each(function(value, index) { + result = result && !!(iterator || Prototype.K)(value, index); + if (!result) throw $break; + }); + return result; + }, + + any: function(iterator) { + var result = true; + this.each(function(value, index) { + if (result = !!(iterator || Prototype.K)(value, index)) + throw $break; + }); + return result; + }, + + collect: function(iterator) { + var results = []; + this.each(function(value, index) { + results.push(iterator(value, index)); + }); + return results; + }, + + detect: function (iterator) { + var result; + this.each(function(value, index) { + if (iterator(value, index)) { + result = value; + throw $break; + } + }); + return result; + }, + + findAll: function(iterator) { + var results = []; + this.each(function(value, index) { + if (iterator(value, index)) + results.push(value); + }); + return results; + }, + + grep: function(pattern, iterator) { + var results = []; + this.each(function(value, index) { + var stringValue = value.toString(); + if (stringValue.match(pattern)) + results.push((iterator || Prototype.K)(value, index)); + }) + return results; + }, + + include: function(object) { + var found = false; + this.each(function(value) { + if (value == object) { + found = true; + throw $break; + } + }); + return found; + }, + + inject: function(memo, iterator) { + this.each(function(value, index) { + memo = iterator(memo, value, index); + }); + return memo; + }, + + invoke: function(method) { + var args = $A(arguments).slice(1); + return this.collect(function(value) { + return value[method].apply(value, args); + }); + }, + + max: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (result == undefined || value >= result) + result = value; + }); + return result; + }, + + min: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (result == undefined || value < result) + result = value; + }); + return result; + }, + + partition: function(iterator) { + var trues = [], falses = []; + this.each(function(value, index) { + ((iterator || Prototype.K)(value, index) ? + trues : falses).push(value); + }); + return [trues, falses]; + }, + + pluck: function(property) { + var results = []; + this.each(function(value, index) { + results.push(value[property]); + }); + return results; + }, + + reject: function(iterator) { + var results = []; + this.each(function(value, index) { + if (!iterator(value, index)) + results.push(value); + }); + return results; + }, + + sortBy: function(iterator) { + return this.collect(function(value, index) { + return {value: value, criteria: iterator(value, index)}; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }).pluck('value'); + }, + + toArray: function() { + return this.collect(Prototype.K); + }, + + zip: function() { + var iterator = Prototype.K, args = $A(arguments); + if (typeof args.last() == 'function') + iterator = args.pop(); + + var collections = [this].concat(args).map($A); + return this.map(function(value, index) { + return iterator(collections.pluck(index)); + }); + }, + + inspect: function() { + return '#'; + } +} + +Object.extend(Enumerable, { + map: Enumerable.collect, + find: Enumerable.detect, + select: Enumerable.findAll, + member: Enumerable.include, + entries: Enumerable.toArray +}); +var $A = Array.from = function(iterable) { + if (!iterable) return []; + if (iterable.toArray) { + return iterable.toArray(); + } else { + var results = []; + for (var i = 0; i < iterable.length; i++) + results.push(iterable[i]); + return results; + } +} + +Object.extend(Array.prototype, Enumerable); + +if (!Array.prototype._reverse) + Array.prototype._reverse = Array.prototype.reverse; + +Object.extend(Array.prototype, { + _each: function(iterator) { + for (var i = 0; i < this.length; i++) + iterator(this[i]); + }, + + clear: function() { + this.length = 0; + return this; + }, + + first: function() { + return this[0]; + }, + + last: function() { + return this[this.length - 1]; + }, + + compact: function() { + return this.select(function(value) { + return value != undefined || value != null; + }); + }, + + flatten: function() { + return this.inject([], function(array, value) { + return array.concat(value && value.constructor == Array ? + value.flatten() : [value]); + }); + }, + + without: function() { + var values = $A(arguments); + return this.select(function(value) { + return !values.include(value); + }); + }, + + indexOf: function(object) { + for (var i = 0; i < this.length; i++) + if (this[i] == object) return i; + return -1; + }, + + reverse: function(inline) { + return (inline !== false ? this : this.toArray())._reverse(); + }, + + inspect: function() { + return '[' + this.map(Object.inspect).join(', ') + ']'; + } +}); +var Hash = { + _each: function(iterator) { + for (var key in this) { + var value = this[key]; + if (typeof value == 'function') continue; + + var pair = [key, value]; + pair.key = key; + pair.value = value; + iterator(pair); + } + }, + + keys: function() { + return this.pluck('key'); + }, + + values: function() { + return this.pluck('value'); + }, + + merge: function(hash) { + return $H(hash).inject($H(this), function(mergedHash, pair) { + mergedHash[pair.key] = pair.value; + return mergedHash; + }); + }, + + toQueryString: function() { + return this.map(function(pair) { + return pair.map(encodeURIComponent).join('='); + }).join('&'); + }, + + inspect: function() { + return '#'; + } +} + +function $H(object) { + var hash = Object.extend({}, object || {}); + Object.extend(hash, Enumerable); + Object.extend(hash, Hash); + return hash; +} +ObjectRange = Class.create(); +Object.extend(ObjectRange.prototype, Enumerable); +Object.extend(ObjectRange.prototype, { + initialize: function(start, end, exclusive) { + this.start = start; + this.end = end; + this.exclusive = exclusive; + }, + + _each: function(iterator) { + var value = this.start; + do { + iterator(value); + value = value.succ(); + } while (this.include(value)); + }, + + include: function(value) { + if (value < this.start) + return false; + if (this.exclusive) + return value < this.end; + return value <= this.end; + } +}); + +var $R = function(start, end, exclusive) { + return new ObjectRange(start, end, exclusive); +} + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new XMLHttpRequest()}, + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')} + ) || false; + }, + + activeRequestCount: 0 +} + +Ajax.Responders = { + responders: [], + + _each: function(iterator) { + this.responders._each(iterator); + }, + + register: function(responderToAdd) { + if (!this.include(responderToAdd)) + this.responders.push(responderToAdd); + }, + + unregister: function(responderToRemove) { + this.responders = this.responders.without(responderToRemove); + }, + + dispatch: function(callback, request, transport, json) { + this.each(function(responder) { + if (responder[callback] && typeof responder[callback] == 'function') { + try { + responder[callback].apply(responder, [request, transport, json]); + } catch (e) {} + } + }); + } +}; + +Object.extend(Ajax.Responders, Enumerable); + +Ajax.Responders.register({ + onCreate: function() { + Ajax.activeRequestCount++; + }, + + onComplete: function() { + Ajax.activeRequestCount--; + } +}); + +Ajax.Base = function() {}; +Ajax.Base.prototype = { + setOptions: function(options) { + this.options = { + method: 'post', + asynchronous: true, + contentType: 'application/x-www-form-urlencoded', + parameters: '' + } + Object.extend(this.options, options || {}); + }, + + responseIsSuccess: function() { + return this.transport.status == undefined + || this.transport.status == 0 + || (this.transport.status >= 200 && this.transport.status < 300); + }, + + responseIsFailure: function() { + return !this.responseIsSuccess(); + } +} + +Ajax.Request = Class.create(); +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Request.prototype = Object.extend(new Ajax.Base(), { + initialize: function(url, options) { + this.transport = Ajax.getTransport(); + this.setOptions(options); + this.request(url); + }, + + request: function(url) { + var parameters = this.options.parameters || ''; + if (parameters.length > 0) parameters += '&_='; + + try { + this.url = url; + if (this.options.method == 'get' && parameters.length > 0) + this.url += (this.url.match(/\?/) ? '&' : '?') + parameters; + + Ajax.Responders.dispatch('onCreate', this, this.transport); + + this.transport.open(this.options.method, this.url, + this.options.asynchronous); + + if (this.options.asynchronous) { + this.transport.onreadystatechange = this.onStateChange.bind(this); + setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); + } + + this.setRequestHeaders(); + + var body = this.options.postBody ? this.options.postBody : parameters; + this.transport.send(this.options.method == 'post' ? body : null); + + } catch (e) { + this.dispatchException(e); + } + }, + + setRequestHeaders: function() { + var requestHeaders = + ['X-Requested-With', 'XMLHttpRequest', + 'X-Prototype-Version', Prototype.Version, + 'Accept', 'text/javascript, text/html, application/xml, text/xml, */*']; + + if (this.options.method == 'post') { + requestHeaders.push('Content-type', this.options.contentType); + + /* Force "Connection: close" for Mozilla browsers to work around + * a bug where XMLHttpReqeuest sends an incorrect Content-length + * header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType) + requestHeaders.push('Connection', 'close'); + } + + if (this.options.requestHeaders) + requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); + + for (var i = 0; i < requestHeaders.length; i += 2) + this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState != 1) + this.respondToReadyState(this.transport.readyState); + }, + + header: function(name) { + try { + return this.transport.getResponseHeader(name); + } catch (e) {} + }, + + evalJSON: function() { + try { + return eval('(' + this.header('X-JSON') + ')'); + } catch (e) {} + }, + + evalResponse: function() { + try { + return eval(this.transport.responseText); + } catch (e) { + this.dispatchException(e); + } + }, + + respondToReadyState: function(readyState) { + var event = Ajax.Request.Events[readyState]; + var transport = this.transport, json = this.evalJSON(); + + if (event == 'Complete') { + try { + (this.options['on' + this.transport.status] + || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] + || Prototype.emptyFunction)(transport, json); + } catch (e) { + this.dispatchException(e); + } + + if ((this.header('Content-type') || '').match(/^text\/javascript/i)) + this.evalResponse(); + } + + try { + (this.options['on' + event] || Prototype.emptyFunction)(transport, json); + Ajax.Responders.dispatch('on' + event, this, transport, json); + } catch (e) { + this.dispatchException(e); + } + + /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ + if (event == 'Complete') + this.transport.onreadystatechange = Prototype.emptyFunction; + }, + + dispatchException: function(exception) { + (this.options.onException || Prototype.emptyFunction)(this, exception); + Ajax.Responders.dispatch('onException', this, exception); + } +}); + +Ajax.Updater = Class.create(); + +Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { + initialize: function(container, url, options) { + this.containers = { + success: container.success ? $(container.success) : $(container), + failure: container.failure ? $(container.failure) : + (container.success ? null : $(container)) + } + + this.transport = Ajax.getTransport(); + this.setOptions(options); + + var onComplete = this.options.onComplete || Prototype.emptyFunction; + this.options.onComplete = (function(transport, object) { + this.updateContent(); + onComplete(transport, object); + }).bind(this); + + this.request(url); + }, + + updateContent: function() { + var receiver = this.responseIsSuccess() ? + this.containers.success : this.containers.failure; + var response = this.transport.responseText; + + if (!this.options.evalScripts) + response = response.stripScripts(); + + if (receiver) { + if (this.options.insertion) { + new this.options.insertion(receiver, response); + } else { + Element.update(receiver, response); + } + } + + if (this.responseIsSuccess()) { + if (this.onComplete) + setTimeout(this.onComplete.bind(this), 10); + } + } +}); + +Ajax.PeriodicalUpdater = Class.create(); +Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { + initialize: function(container, url, options) { + this.setOptions(options); + this.onComplete = this.options.onComplete; + + this.frequency = (this.options.frequency || 2); + this.decay = (this.options.decay || 1); + + this.updater = {}; + this.container = container; + this.url = url; + + this.start(); + }, + + start: function() { + this.options.onComplete = this.updateComplete.bind(this); + this.onTimerEvent(); + }, + + stop: function() { + this.updater.onComplete = undefined; + clearTimeout(this.timer); + (this.onComplete || Prototype.emptyFunction).apply(this, arguments); + }, + + updateComplete: function(request) { + if (this.options.decay) { + this.decay = (request.responseText == this.lastText ? + this.decay * this.options.decay : 1); + + this.lastText = request.responseText; + } + this.timer = setTimeout(this.onTimerEvent.bind(this), + this.decay * this.frequency * 1000); + }, + + onTimerEvent: function() { + this.updater = new Ajax.Updater(this.container, this.url, this.options); + } +}); +function $() { + var results = [], element; + for (var i = 0; i < arguments.length; i++) { + element = arguments[i]; + if (typeof element == 'string') + element = document.getElementById(element); + results.push(Element.extend(element)); + } + return results.length < 2 ? results[0] : results; +} + +document.getElementsByClassName = function(className, parentElement) { + var children = ($(parentElement) || document.body).getElementsByTagName('*'); + return $A(children).inject([], function(elements, child) { + if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) + elements.push(Element.extend(child)); + return elements; + }); +} + +/*--------------------------------------------------------------------------*/ + +if (!window.Element) + var Element = new Object(); + +Element.extend = function(element) { + if (!element) return; + if (_nativeExtensions) return element; + + if (!element._extended && element.tagName && element != window) { + var methods = Element.Methods, cache = Element.extend.cache; + for (property in methods) { + var value = methods[property]; + if (typeof value == 'function') + element[property] = cache.findOrStore(value); + } + } + + element._extended = true; + return element; +} + +Element.extend.cache = { + findOrStore: function(value) { + return this[value] = this[value] || function() { + return value.apply(null, [this].concat($A(arguments))); + } + } +} + +Element.Methods = { + visible: function(element) { + return $(element).style.display != 'none'; + }, + + toggle: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + Element[Element.visible(element) ? 'hide' : 'show'](element); + } + }, + + hide: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = 'none'; + } + }, + + show: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = ''; + } + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + }, + + update: function(element, html) { + $(element).innerHTML = html.stripScripts(); + setTimeout(function() {html.evalScripts()}, 10); + }, + + replace: function(element, html) { + element = $(element); + if (element.outerHTML) { + element.outerHTML = html.stripScripts(); + } else { + var range = element.ownerDocument.createRange(); + range.selectNodeContents(element); + element.parentNode.replaceChild( + range.createContextualFragment(html.stripScripts()), element); + } + setTimeout(function() {html.evalScripts()}, 10); + }, + + getHeight: function(element) { + element = $(element); + return element.offsetHeight; + }, + + classNames: function(element) { + return new Element.ClassNames(element); + }, + + hasClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).include(className); + }, + + addClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).add(className); + }, + + removeClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).remove(className); + }, + + // removes whitespace-only text node children + cleanWhitespace: function(element) { + element = $(element); + for (var i = 0; i < element.childNodes.length; i++) { + var node = element.childNodes[i]; + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) + Element.remove(node); + } + }, + + empty: function(element) { + return $(element).innerHTML.match(/^\s*$/); + }, + + childOf: function(element, ancestor) { + element = $(element), ancestor = $(ancestor); + while (element = element.parentNode) + if (element == ancestor) return true; + return false; + }, + + scrollTo: function(element) { + element = $(element); + var x = element.x ? element.x : element.offsetLeft, + y = element.y ? element.y : element.offsetTop; + window.scrollTo(x, y); + }, + + getStyle: function(element, style) { + element = $(element); + var value = element.style[style.camelize()]; + if (!value) { + if (document.defaultView && document.defaultView.getComputedStyle) { + var css = document.defaultView.getComputedStyle(element, null); + value = css ? css.getPropertyValue(style) : null; + } else if (element.currentStyle) { + value = element.currentStyle[style.camelize()]; + } + } + + if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) + if (Element.getStyle(element, 'position') == 'static') value = 'auto'; + + return value == 'auto' ? null : value; + }, + + setStyle: function(element, style) { + element = $(element); + for (var name in style) + element.style[name.camelize()] = style[name]; + }, + + getDimensions: function(element) { + element = $(element); + if (Element.getStyle(element, 'display') != 'none') + return {width: element.offsetWidth, height: element.offsetHeight}; + + // All *Width and *Height properties give 0 on elements with display none, + // so enable the element temporarily + var els = element.style; + var originalVisibility = els.visibility; + var originalPosition = els.position; + els.visibility = 'hidden'; + els.position = 'absolute'; + els.display = ''; + var originalWidth = element.clientWidth; + var originalHeight = element.clientHeight; + els.display = 'none'; + els.position = originalPosition; + els.visibility = originalVisibility; + return {width: originalWidth, height: originalHeight}; + }, + + makePositioned: function(element) { + element = $(element); + var pos = Element.getStyle(element, 'position'); + if (pos == 'static' || !pos) { + element._madePositioned = true; + element.style.position = 'relative'; + // Opera returns the offset relative to the positioning context, when an + // element is position relative but top and left have not been defined + if (window.opera) { + element.style.top = 0; + element.style.left = 0; + } + } + }, + + undoPositioned: function(element) { + element = $(element); + if (element._madePositioned) { + element._madePositioned = undefined; + element.style.position = + element.style.top = + element.style.left = + element.style.bottom = + element.style.right = ''; + } + }, + + makeClipping: function(element) { + element = $(element); + if (element._overflow) return; + element._overflow = element.style.overflow; + if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') + element.style.overflow = 'hidden'; + }, + + undoClipping: function(element) { + element = $(element); + if (element._overflow) return; + element.style.overflow = element._overflow; + element._overflow = undefined; + } +} + +Object.extend(Element, Element.Methods); + +var _nativeExtensions = false; + +if(!HTMLElement && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) { + var HTMLElement = {} + HTMLElement.prototype = document.createElement('div').__proto__; +} + +Element.addMethods = function(methods) { + Object.extend(Element.Methods, methods || {}); + + if(typeof HTMLElement != 'undefined') { + var methods = Element.Methods, cache = Element.extend.cache; + for (property in methods) { + var value = methods[property]; + if (typeof value == 'function') + HTMLElement.prototype[property] = cache.findOrStore(value); + } + _nativeExtensions = true; + } +} + +Element.addMethods(); + +var Toggle = new Object(); +Toggle.display = Element.toggle; + +/*--------------------------------------------------------------------------*/ + +Abstract.Insertion = function(adjacency) { + this.adjacency = adjacency; +} + +Abstract.Insertion.prototype = { + initialize: function(element, content) { + this.element = $(element); + this.content = content.stripScripts(); + + if (this.adjacency && this.element.insertAdjacentHTML) { + try { + this.element.insertAdjacentHTML(this.adjacency, this.content); + } catch (e) { + var tagName = this.element.tagName.toLowerCase(); + if (tagName == 'tbody' || tagName == 'tr') { + this.insertContent(this.contentFromAnonymousTable()); + } else { + throw e; + } + } + } else { + this.range = this.element.ownerDocument.createRange(); + if (this.initializeRange) this.initializeRange(); + this.insertContent([this.range.createContextualFragment(this.content)]); + } + + setTimeout(function() {content.evalScripts()}, 10); + }, + + contentFromAnonymousTable: function() { + var div = document.createElement('div'); + div.innerHTML = '' + this.content + '
    '; + return $A(div.childNodes[0].childNodes[0].childNodes); + } +} + +var Insertion = new Object(); + +Insertion.Before = Class.create(); +Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { + initializeRange: function() { + this.range.setStartBefore(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, this.element); + }).bind(this)); + } +}); + +Insertion.Top = Class.create(); +Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(true); + }, + + insertContent: function(fragments) { + fragments.reverse(false).each((function(fragment) { + this.element.insertBefore(fragment, this.element.firstChild); + }).bind(this)); + } +}); + +Insertion.Bottom = Class.create(); +Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.appendChild(fragment); + }).bind(this)); + } +}); + +Insertion.After = Class.create(); +Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { + initializeRange: function() { + this.range.setStartAfter(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, + this.element.nextSibling); + }).bind(this)); + } +}); + +/*--------------------------------------------------------------------------*/ + +Element.ClassNames = Class.create(); +Element.ClassNames.prototype = { + initialize: function(element) { + this.element = $(element); + }, + + _each: function(iterator) { + this.element.className.split(/\s+/).select(function(name) { + return name.length > 0; + })._each(iterator); + }, + + set: function(className) { + this.element.className = className; + }, + + add: function(classNameToAdd) { + if (this.include(classNameToAdd)) return; + this.set(this.toArray().concat(classNameToAdd).join(' ')); + }, + + remove: function(classNameToRemove) { + if (!this.include(classNameToRemove)) return; + this.set(this.select(function(className) { + return className != classNameToRemove; + }).join(' ')); + }, + + toString: function() { + return this.toArray().join(' '); + } +} + +Object.extend(Element.ClassNames.prototype, Enumerable); +var Selector = Class.create(); +Selector.prototype = { + initialize: function(expression) { + this.params = {classNames: []}; + this.expression = expression.toString().strip(); + this.parseExpression(); + this.compileMatcher(); + }, + + parseExpression: function() { + function abort(message) { throw 'Parse error in selector: ' + message; } + + if (this.expression == '') abort('empty expression'); + + var params = this.params, expr = this.expression, match, modifier, clause, rest; + while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) { + params.attributes = params.attributes || []; + params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''}); + expr = match[1]; + } + + if (expr == '*') return this.params.wildcard = true; + + while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) { + modifier = match[1], clause = match[2], rest = match[3]; + switch (modifier) { + case '#': params.id = clause; break; + case '.': params.classNames.push(clause); break; + case '': + case undefined: params.tagName = clause.toUpperCase(); break; + default: abort(expr.inspect()); + } + expr = rest; + } + + if (expr.length > 0) abort(expr.inspect()); + }, + + buildMatchExpression: function() { + var params = this.params, conditions = [], clause; + + if (params.wildcard) + conditions.push('true'); + if (clause = params.id) + conditions.push('element.id == ' + clause.inspect()); + if (clause = params.tagName) + conditions.push('element.tagName.toUpperCase() == ' + clause.inspect()); + if ((clause = params.classNames).length > 0) + for (var i = 0; i < clause.length; i++) + conditions.push('Element.hasClassName(element, ' + clause[i].inspect() + ')'); + if (clause = params.attributes) { + clause.each(function(attribute) { + var value = 'element.getAttribute(' + attribute.name.inspect() + ')'; + var splitValueBy = function(delimiter) { + return value + ' && ' + value + '.split(' + delimiter.inspect() + ')'; + } + + switch (attribute.operator) { + case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break; + case '~=': conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break; + case '|=': conditions.push( + splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect() + ); break; + case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break; + case '': + case undefined: conditions.push(value + ' != null'); break; + default: throw 'Unknown operator ' + attribute.operator + ' in selector'; + } + }); + } + + return conditions.join(' && '); + }, + + compileMatcher: function() { + this.match = new Function('element', 'if (!element.tagName) return false; \ + return ' + this.buildMatchExpression()); + }, + + findElements: function(scope) { + var element; + + if (element = $(this.params.id)) + if (this.match(element)) + if (!scope || Element.childOf(element, scope)) + return [element]; + + scope = (scope || document).getElementsByTagName(this.params.tagName || '*'); + + var results = []; + for (var i = 0; i < scope.length; i++) + if (this.match(element = scope[i])) + results.push(Element.extend(element)); + + return results; + }, + + toString: function() { + return this.expression; + } +} + +function $$() { + return $A(arguments).map(function(expression) { + return expression.strip().split(/\s+/).inject([null], function(results, expr) { + var selector = new Selector(expr); + return results.map(selector.findElements.bind(selector)).flatten(); + }); + }).flatten(); +} +var Field = { + clear: function() { + for (var i = 0; i < arguments.length; i++) + $(arguments[i]).value = ''; + }, + + focus: function(element) { + $(element).focus(); + }, + + present: function() { + for (var i = 0; i < arguments.length; i++) + if ($(arguments[i]).value == '') return false; + return true; + }, + + select: function(element) { + $(element).select(); + }, + + activate: function(element) { + element = $(element); + element.focus(); + if (element.select) + element.select(); + } +} + +/*--------------------------------------------------------------------------*/ + +var Form = { + serialize: function(form) { + var elements = Form.getElements($(form)); + var queryComponents = new Array(); + + for (var i = 0; i < elements.length; i++) { + var queryComponent = Form.Element.serialize(elements[i]); + if (queryComponent) + queryComponents.push(queryComponent); + } + + return queryComponents.join('&'); + }, + + getElements: function(form) { + form = $(form); + var elements = new Array(); + + for (var tagName in Form.Element.Serializers) { + var tagElements = form.getElementsByTagName(tagName); + for (var j = 0; j < tagElements.length; j++) + elements.push(tagElements[j]); + } + return elements; + }, + + getInputs: function(form, typeName, name) { + form = $(form); + var inputs = form.getElementsByTagName('input'); + + if (!typeName && !name) + return inputs; + + var matchingInputs = new Array(); + for (var i = 0; i < inputs.length; i++) { + var input = inputs[i]; + if ((typeName && input.type != typeName) || + (name && input.name != name)) + continue; + matchingInputs.push(input); + } + + return matchingInputs; + }, + + disable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.blur(); + element.disabled = 'true'; + } + }, + + enable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.disabled = ''; + } + }, + + findFirstElement: function(form) { + return Form.getElements(form).find(function(element) { + return element.type != 'hidden' && !element.disabled && + ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); + }); + }, + + focusFirstElement: function(form) { + Field.activate(Form.findFirstElement(form)); + }, + + reset: function(form) { + $(form).reset(); + } +} + +Form.Element = { + serialize: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) { + var key = encodeURIComponent(parameter[0]); + if (key.length == 0) return; + + if (parameter[1].constructor != Array) + parameter[1] = [parameter[1]]; + + return parameter[1].map(function(value) { + return key + '=' + encodeURIComponent(value); + }).join('&'); + } + }, + + getValue: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return parameter[1]; + } +} + +Form.Element.Serializers = { + input: function(element) { + switch (element.type.toLowerCase()) { + case 'submit': + case 'hidden': + case 'password': + case 'text': + return Form.Element.Serializers.textarea(element); + case 'checkbox': + case 'radio': + return Form.Element.Serializers.inputSelector(element); + } + return false; + }, + + inputSelector: function(element) { + if (element.checked) + return [element.name, element.value]; + }, + + textarea: function(element) { + return [element.name, element.value]; + }, + + select: function(element) { + return Form.Element.Serializers[element.type == 'select-one' ? + 'selectOne' : 'selectMany'](element); + }, + + selectOne: function(element) { + var value = '', opt, index = element.selectedIndex; + if (index >= 0) { + opt = element.options[index]; + value = opt.value || opt.text; + } + return [element.name, value]; + }, + + selectMany: function(element) { + var value = []; + for (var i = 0; i < element.length; i++) { + var opt = element.options[i]; + if (opt.selected) + value.push(opt.value || opt.text); + } + return [element.name, value]; + } +} + +/*--------------------------------------------------------------------------*/ + +var $F = Form.Element.getValue; + +/*--------------------------------------------------------------------------*/ + +Abstract.TimedObserver = function() {} +Abstract.TimedObserver.prototype = { + initialize: function(element, frequency, callback) { + this.frequency = frequency; + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + } +} + +Form.Element.Observer = Class.create(); +Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(); +Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); + +/*--------------------------------------------------------------------------*/ + +Abstract.EventObserver = function() {} +Abstract.EventObserver.prototype = { + initialize: function(element, callback) { + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + if (this.element.tagName.toLowerCase() == 'form') + this.registerFormCallbacks(); + else + this.registerCallback(this.element); + }, + + onElementEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + }, + + registerFormCallbacks: function() { + var elements = Form.getElements(this.element); + for (var i = 0; i < elements.length; i++) + this.registerCallback(elements[i]); + }, + + registerCallback: function(element) { + if (element.type) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + Event.observe(element, 'click', this.onElementEvent.bind(this)); + break; + case 'password': + case 'text': + case 'textarea': + case 'select-one': + case 'select-multiple': + Event.observe(element, 'change', this.onElementEvent.bind(this)); + break; + } + } + } +} + +Form.Element.EventObserver = Class.create(); +Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.EventObserver = Class.create(); +Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); +if (!window.Event) { + var Event = new Object(); +} + +Object.extend(Event, { + KEY_BACKSPACE: 8, + KEY_TAB: 9, + KEY_RETURN: 13, + KEY_ESC: 27, + KEY_LEFT: 37, + KEY_UP: 38, + KEY_RIGHT: 39, + KEY_DOWN: 40, + KEY_DELETE: 46, + + element: function(event) { + return event.target || event.srcElement; + }, + + isLeftClick: function(event) { + return (((event.which) && (event.which == 1)) || + ((event.button) && (event.button == 1))); + }, + + pointerX: function(event) { + return event.pageX || (event.clientX + + (document.documentElement.scrollLeft || document.body.scrollLeft)); + }, + + pointerY: function(event) { + return event.pageY || (event.clientY + + (document.documentElement.scrollTop || document.body.scrollTop)); + }, + + stop: function(event) { + if (event.preventDefault) { + event.preventDefault(); + event.stopPropagation(); + } else { + event.returnValue = false; + event.cancelBubble = true; + } + }, + + // find the first node with the given tagName, starting from the + // node the event was triggered on; traverses the DOM upwards + findElement: function(event, tagName) { + var element = Event.element(event); + while (element.parentNode && (!element.tagName || + (element.tagName.toUpperCase() != tagName.toUpperCase()))) + element = element.parentNode; + return element; + }, + + observers: false, + + _observeAndCache: function(element, name, observer, useCapture) { + if (!this.observers) this.observers = []; + if (element.addEventListener) { + this.observers.push([element, name, observer, useCapture]); + element.addEventListener(name, observer, useCapture); + } else if (element.attachEvent) { + this.observers.push([element, name, observer, useCapture]); + element.attachEvent('on' + name, observer); + } + }, + + unloadCache: function() { + if (!Event.observers) return; + for (var i = 0; i < Event.observers.length; i++) { + Event.stopObserving.apply(this, Event.observers[i]); + Event.observers[i][0] = null; + } + Event.observers = false; + }, + + observe: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.attachEvent)) + name = 'keydown'; + + this._observeAndCache(element, name, observer, useCapture); + }, + + stopObserving: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.detachEvent)) + name = 'keydown'; + + if (element.removeEventListener) { + element.removeEventListener(name, observer, useCapture); + } else if (element.detachEvent) { + element.detachEvent('on' + name, observer); + } + } +}); + +/* prevent memory leaks in IE */ +if (navigator.appVersion.match(/\bMSIE\b/)) + Event.observe(window, 'unload', Event.unloadCache, false); +var Position = { + // set to true if needed, warning: firefox performance problems + // NOT neeeded for page scrolling, only if draggable contained in + // scrollable elements + includeScrollOffsets: false, + + // must be called before calling withinIncludingScrolloffset, every time the + // page is scrolled + prepare: function() { + this.deltaX = window.pageXOffset + || document.documentElement.scrollLeft + || document.body.scrollLeft + || 0; + this.deltaY = window.pageYOffset + || document.documentElement.scrollTop + || document.body.scrollTop + || 0; + }, + + realOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } while (element); + return [valueL, valueT]; + }, + + cumulativeOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return [valueL, valueT]; + }, + + positionedOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + if (element) { + p = Element.getStyle(element, 'position'); + if (p == 'relative' || p == 'absolute') break; + } + } while (element); + return [valueL, valueT]; + }, + + offsetParent: function(element) { + if (element.offsetParent) return element.offsetParent; + if (element == document.body) return element; + + while ((element = element.parentNode) && element != document.body) + if (Element.getStyle(element, 'position') != 'static') + return element; + + return document.body; + }, + + // caches x/y coordinate pair to use with overlap + within: function(element, x, y) { + if (this.includeScrollOffsets) + return this.withinIncludingScrolloffsets(element, x, y); + this.xcomp = x; + this.ycomp = y; + this.offset = this.cumulativeOffset(element); + + return (y >= this.offset[1] && + y < this.offset[1] + element.offsetHeight && + x >= this.offset[0] && + x < this.offset[0] + element.offsetWidth); + }, + + withinIncludingScrolloffsets: function(element, x, y) { + var offsetcache = this.realOffset(element); + + this.xcomp = x + offsetcache[0] - this.deltaX; + this.ycomp = y + offsetcache[1] - this.deltaY; + this.offset = this.cumulativeOffset(element); + + return (this.ycomp >= this.offset[1] && + this.ycomp < this.offset[1] + element.offsetHeight && + this.xcomp >= this.offset[0] && + this.xcomp < this.offset[0] + element.offsetWidth); + }, + + // within must be called directly before + overlap: function(mode, element) { + if (!mode) return 0; + if (mode == 'vertical') + return ((this.offset[1] + element.offsetHeight) - this.ycomp) / + element.offsetHeight; + if (mode == 'horizontal') + return ((this.offset[0] + element.offsetWidth) - this.xcomp) / + element.offsetWidth; + }, + + clone: function(source, target) { + source = $(source); + target = $(target); + target.style.position = 'absolute'; + var offsets = this.cumulativeOffset(source); + target.style.top = offsets[1] + 'px'; + target.style.left = offsets[0] + 'px'; + target.style.width = source.offsetWidth + 'px'; + target.style.height = source.offsetHeight + 'px'; + }, + + page: function(forElement) { + var valueT = 0, valueL = 0; + + var element = forElement; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + + // Safari fix + if (element.offsetParent==document.body) + if (Element.getStyle(element,'position')=='absolute') break; + + } while (element = element.offsetParent); + + element = forElement; + do { + valueT -= element.scrollTop || 0; + valueL -= element.scrollLeft || 0; + } while (element = element.parentNode); + + return [valueL, valueT]; + }, + + clone: function(source, target) { + var options = Object.extend({ + setLeft: true, + setTop: true, + setWidth: true, + setHeight: true, + offsetTop: 0, + offsetLeft: 0 + }, arguments[2] || {}) + + // find page position of source + source = $(source); + var p = Position.page(source); + + // find coordinate system to use + target = $(target); + var delta = [0, 0]; + var parent = null; + // delta [0,0] will do fine with position: fixed elements, + // position:absolute needs offsetParent deltas + if (Element.getStyle(target,'position') == 'absolute') { + parent = Position.offsetParent(target); + delta = Position.page(parent); + } + + // correct by body offsets (fixes Safari) + if (parent == document.body) { + delta[0] -= document.body.offsetLeft; + delta[1] -= document.body.offsetTop; + } + + // set position + if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; + if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; + if(options.setWidth) target.style.width = source.offsetWidth + 'px'; + if(options.setHeight) target.style.height = source.offsetHeight + 'px'; + }, + + absolutize: function(element) { + element = $(element); + if (element.style.position == 'absolute') return; + Position.prepare(); + + var offsets = Position.positionedOffset(element); + var top = offsets[1]; + var left = offsets[0]; + var width = element.clientWidth; + var height = element.clientHeight; + + element._originalLeft = left - parseFloat(element.style.left || 0); + element._originalTop = top - parseFloat(element.style.top || 0); + element._originalWidth = element.style.width; + element._originalHeight = element.style.height; + + element.style.position = 'absolute'; + element.style.top = top + 'px'; + element.style.left = left + 'px'; + element.style.width = width + 'px'; + element.style.height = height + 'px'; + }, + + relativize: function(element) { + element = $(element); + if (element.style.position == 'relative') return; + Position.prepare(); + + element.style.position = 'relative'; + var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); + var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); + + element.style.top = top + 'px'; + element.style.left = left + 'px'; + element.style.height = element._originalHeight; + element.style.width = element._originalWidth; + } +} + +// Safari returns margins on body which is incorrect if the child is absolutely +// positioned. For performance reasons, redefine Position.cumulativeOffset for +// KHTML/WebKit only. +if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { + Position.cumulativeOffset = function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + if (element.offsetParent == document.body) + if (Element.getStyle(element, 'position') == 'absolute') break; + + element = element.offsetParent; + } while (element); + + return [valueL, valueT]; + } +} \ No newline at end of file diff --git a/js/cropper/scriptaculous.js b/js/cropper/scriptaculous.js new file mode 100644 index 000000000..f61fc57f7 --- /dev/null +++ b/js/cropper/scriptaculous.js @@ -0,0 +1,47 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +var Scriptaculous = { + Version: '1.6.1', + require: function(libraryName) { + // inserting via DOM fails in Safari 2.0, so brute force approach + document.write(''); + }, + load: function() { + if((typeof Prototype=='undefined') || + (typeof Element == 'undefined') || + (typeof Element.Methods=='undefined') || + parseFloat(Prototype.Version.split(".")[0] + "." + + Prototype.Version.split(".")[1]) < 1.5) + throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0"); + + $A(document.getElementsByTagName("script")).findAll( function(s) { + return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/)) + }).each( function(s) { + var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,''); + var includes = s.src.match(/\?.*load=([a-z,]*)/); + (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each( + function(include) { Scriptaculous.require(path+include+'.js') }); + }); + } +} + +Scriptaculous.load(); \ No newline at end of file diff --git a/js/date.js b/js/date.js new file mode 100644 index 000000000..a9003f7be --- /dev/null +++ b/js/date.js @@ -0,0 +1,467 @@ +/* + * Date prototype extensions. Doesn't depend on any + * other code. Doens't overwrite existing methods. + * + * Adds dayNames, abbrDayNames, monthNames and abbrMonthNames static properties and isLeapYear, + * isWeekend, isWeekDay, getDaysInMonth, getDayName, getMonthName, getDayOfYear, getWeekOfYear, + * setDayOfYear, addYears, addMonths, addDays, addHours, addMinutes, addSeconds methods + * + * Copyright (c) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + * + * Additional methods and properties added by Kelvin Luck: firstDayOfWeek, dateFormat, zeroTime, asString, fromString - + * I've added my name to these methods so you know who to blame if they are broken! + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + */ + +/** + * An Array of day names starting with Sunday. + * + * @example dayNames[0] + * @result 'Sunday' + * + * @name dayNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + +/** + * An Array of abbreviated day names starting with Sun. + * + * @example abbrDayNames[0] + * @result 'Sun' + * + * @name abbrDayNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.abbrDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + +/** + * An Array of month names starting with Janurary. + * + * @example monthNames[0] + * @result 'January' + * + * @name monthNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + +/** + * An Array of abbreviated month names starting with Jan. + * + * @example abbrMonthNames[0] + * @result 'Jan' + * + * @name monthNames + * @type Array + * @cat Plugins/Methods/Date + */ +Date.abbrMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +/** + * The first day of the week for this locale. + * + * @name firstDayOfWeek + * @type Number + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ +Date.firstDayOfWeek = 1; + +/** + * The format that string dates should be represented as (e.g. 'dd/mm/yyyy' for UK, 'mm/dd/yyyy' for US, 'yyyy-mm-dd' for Unicode etc). + * + * @name format + * @type String + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ +//Date.format = 'dd/mm/yyyy'; +//Date.format = 'mm/dd/yyyy'; +Date.format = 'yyyy-mm-dd'; +//Date.format = 'dd mmm yy'; + +/** + * The first two numbers in the century to be used when decoding a two digit year. Since a two digit year is ambiguous (and date.setYear + * only works with numbers < 99 and so doesn't allow you to set years after 2000) we need to use this to disambiguate the two digit year codes. + * + * @name format + * @type String + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ +Date.fullYearStart = '20'; + +(function() { + + /** + * Adds a given method under the given name + * to the Date prototype if it doesn't + * currently exist. + * + * @private + */ + function add(name, method) { + if( !Date.prototype[name] ) { + Date.prototype[name] = method; + } + }; + + /** + * Checks if the year is a leap year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.isLeapYear(); + * @result true + * + * @name isLeapYear + * @type Boolean + * @cat Plugins/Methods/Date + */ + add("isLeapYear", function() { + var y = this.getFullYear(); + return (y%4==0 && y%100!=0) || y%400==0; + }); + + /** + * Checks if the day is a weekend day (Sat or Sun). + * + * @example var dtm = new Date("01/12/2008"); + * dtm.isWeekend(); + * @result false + * + * @name isWeekend + * @type Boolean + * @cat Plugins/Methods/Date + */ + add("isWeekend", function() { + return this.getDay()==0 || this.getDay()==6; + }); + + /** + * Check if the day is a day of the week (Mon-Fri) + * + * @example var dtm = new Date("01/12/2008"); + * dtm.isWeekDay(); + * @result false + * + * @name isWeekDay + * @type Boolean + * @cat Plugins/Methods/Date + */ + add("isWeekDay", function() { + return !this.isWeekend(); + }); + + /** + * Gets the number of days in the month. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDaysInMonth(); + * @result 31 + * + * @name getDaysInMonth + * @type Number + * @cat Plugins/Methods/Date + */ + add("getDaysInMonth", function() { + return [31,(this.isLeapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()]; + }); + + /** + * Gets the name of the day. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDayName(); + * @result 'Saturday' + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDayName(true); + * @result 'Sat' + * + * @param abbreviated Boolean When set to true the name will be abbreviated. + * @name getDayName + * @type String + * @cat Plugins/Methods/Date + */ + add("getDayName", function(abbreviated) { + return abbreviated ? Date.abbrDayNames[this.getDay()] : Date.dayNames[this.getDay()]; + }); + + /** + * Gets the name of the month. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getMonthName(); + * @result 'Janurary' + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getMonthName(true); + * @result 'Jan' + * + * @param abbreviated Boolean When set to true the name will be abbreviated. + * @name getDayName + * @type String + * @cat Plugins/Methods/Date + */ + add("getMonthName", function(abbreviated) { + return abbreviated ? Date.abbrMonthNames[this.getMonth()] : Date.monthNames[this.getMonth()]; + }); + + /** + * Get the number of the day of the year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getDayOfYear(); + * @result 11 + * + * @name getDayOfYear + * @type Number + * @cat Plugins/Methods/Date + */ + add("getDayOfYear", function() { + var tmpdtm = new Date("1/1/" + this.getFullYear()); + return Math.floor((this.getTime() - tmpdtm.getTime()) / 86400000); + }); + + /** + * Get the number of the week of the year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.getWeekOfYear(); + * @result 2 + * + * @name getWeekOfYear + * @type Number + * @cat Plugins/Methods/Date + */ + add("getWeekOfYear", function() { + return Math.ceil(this.getDayOfYear() / 7); + }); + + /** + * Set the day of the year. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.setDayOfYear(1); + * dtm.toString(); + * @result 'Tue Jan 01 2008 00:00:00' + * + * @name setDayOfYear + * @type Date + * @cat Plugins/Methods/Date + */ + add("setDayOfYear", function(day) { + this.setMonth(0); + this.setDate(day); + return this; + }); + + /** + * Add a number of years to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addYears(1); + * dtm.toString(); + * @result 'Mon Jan 12 2009 00:00:00' + * + * @name addYears + * @type Date + * @cat Plugins/Methods/Date + */ + add("addYears", function(num) { + this.setFullYear(this.getFullYear() + num); + return this; + }); + + /** + * Add a number of months to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addMonths(1); + * dtm.toString(); + * @result 'Tue Feb 12 2008 00:00:00' + * + * @name addMonths + * @type Date + * @cat Plugins/Methods/Date + */ + add("addMonths", function(num) { + var tmpdtm = this.getDate(); + + this.setMonth(this.getMonth() + num); + + if (tmpdtm > this.getDate()) + this.addDays(-this.getDate()); + + return this; + }); + + /** + * Add a number of days to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addDays(1); + * dtm.toString(); + * @result 'Sun Jan 13 2008 00:00:00' + * + * @name addDays + * @type Date + * @cat Plugins/Methods/Date + */ + add("addDays", function(num) { + this.setDate(this.getDate() + num); + return this; + }); + + /** + * Add a number of hours to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addHours(24); + * dtm.toString(); + * @result 'Sun Jan 13 2008 00:00:00' + * + * @name addHours + * @type Date + * @cat Plugins/Methods/Date + */ + add("addHours", function(num) { + this.setHours(this.getHours() + num); + return this; + }); + + /** + * Add a number of minutes to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addMinutes(60); + * dtm.toString(); + * @result 'Sat Jan 12 2008 01:00:00' + * + * @name addMinutes + * @type Date + * @cat Plugins/Methods/Date + */ + add("addMinutes", function(num) { + this.setMinutes(this.getMinutes() + num); + return this; + }); + + /** + * Add a number of seconds to the date object. + * + * @example var dtm = new Date("01/12/2008"); + * dtm.addSeconds(60); + * dtm.toString(); + * @result 'Sat Jan 12 2008 00:01:00' + * + * @name addSeconds + * @type Date + * @cat Plugins/Methods/Date + */ + add("addSeconds", function(num) { + this.setSeconds(this.getSeconds() + num); + return this; + }); + + /** + * Sets the time component of this Date to zero for cleaner, easier comparison of dates where time is not relevant. + * + * @example var dtm = new Date(); + * dtm.zeroTime(); + * dtm.toString(); + * @result 'Sat Jan 12 2008 00:01:00' + * + * @name zeroTime + * @type Date + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ + add("zeroTime", function() { + this.setMilliseconds(0); + this.setSeconds(0); + this.setMinutes(0); + this.setHours(0); + return this; + }); + + /** + * Returns a string representation of the date object according to Date.format. + * (Date.toString may be used in other places so I purposefully didn't overwrite it) + * + * @example var dtm = new Date("01/12/2008"); + * dtm.asString(); + * @result '12/01/2008' // (where Date.format == 'dd/mm/yyyy' + * + * @name asString + * @type Date + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ + add("asString", function() { + var r = Date.format; + return r + .split('yyyy').join(this.getFullYear()) + .split('yy').join((this.getFullYear() + '').substring(2)) + .split('mmm').join(this.getMonthName(true)) + .split('mm').join(_zeroPad(this.getMonth()+1)) + .split('dd').join(_zeroPad(this.getDate())); + }); + + /** + * Returns a new date object created from the passed String according to Date.format or false if the attempt to do this results in an invalid date object + * (We can't simple use Date.parse as it's not aware of locale and I chose not to overwrite it incase it's functionality is being relied on elsewhere) + * + * @example var dtm = Date.fromString("12/01/2008"); + * dtm.toString(); + * @result 'Sat Jan 12 2008 00:00:00' // (where Date.format == 'dd/mm/yyyy' + * + * @name fromString + * @type Date + * @cat Plugins/Methods/Date + * @author Kelvin Luck + */ + Date.fromString = function(s) + { + var f = Date.format; + var d = new Date('01/01/1977'); + var iY = f.indexOf('yyyy'); + if (iY > -1) { + d.setFullYear(Number(s.substr(iY, 4))); + } else { + // TODO - this doesn't work very well - are there any rules for what is meant by a two digit year? + d.setFullYear(Number(Date.fullYearStart + s.substr(f.indexOf('yy'), 2))); + } + var iM = f.indexOf('mmm'); + if (iM > -1) { + var mStr = s.substr(iM, 3); + for (var i=0; i'+gg_translate['tooltip_title']+''); + }); + $('.button-translate').mouseover(function() + { + gg_current_bt = $(this); + }) + .click(function(e) + { + var field = $(this).prev(); + if (current_translate != '') + { + if (field.is('input[type="text"]')) field.val(current_translate); + if (field.is('textarea')) field.html(current_translate); + } + }) + .cluetip({ + splitTitle: '|', // use the invoking element's title attribute to populate the clueTip... + // ...and split the contents into separate divs where there is a "|" + showTitle: true, // hide the clueTip's heading + dropShadow: false, + onShow : function(ct, c_inner) + { + current_translate = ''; + $('#cluetip-inner').html('loader'); + var button = gg_current_bt; + if (button.parent("td").prev().html()) + { + google.language.translate(button.parent("td").prev().html(), 'en', gg_translate['language_code'], function(result) + { + if (!result.error) + { + current_translate = result.translation.replace(''', '\''); + while (current_translate != (current_translate = current_translate.replace(''', '\''))); + $('#cluetip-inner').html(current_translate); + } + else if (display_once == 0) + { + display_once = 1; + $('#cluetip-inner').html(''+result.error.message+''); + current_translate = ''; + } + }); + } + } + }); + } +}); +function ggIsTranslatable(iso_lang) +{ + if(iso_lang.length == 2) + return google.language.isTranslatable(iso_lang); + else if (iso_lang.length > 2) + { + iso_lang = iso_lang.substring(0, 2); + gg_translate['language_code'] = iso_lang; + return ggIsTranslatable(iso_lang); + } +} +function setErrorMessage(string) +{ + $('#content .path_bar').after(output_error); + $('#content .gg-errors-output:eq(0)').html(string); +} \ No newline at end of file diff --git a/js/hookLiveEdit.js b/js/hookLiveEdit.js new file mode 100644 index 000000000..d7b69a48d --- /dev/null +++ b/js/hookLiveEdit.js @@ -0,0 +1,218 @@ +var modules_list = new Array(); +var hooks_list = new Array(); +var hookable_list = new Array(); +var timer; +$(document).ready(function() { + + $('body').css('margin-bottom', '45px'); + $('#fancy').fancybox({ + autoDimensions: true, + autoScale: true, + width: 300, + height: 300, + padding: 0, + hideOnOverlayClick: false, + hideOnContentClick: false, + showCloseButton: false + }); + $('#live_edit_feedback_str').html(''); + $('a').each(function() { + var href = $(this).attr('href'); + var search = $(this).attr('search'); + var hrefAdd = 'live_edit&liveToken=' + get('liveToken') + '&ad=' + get('ad'); + if (href != undefined && href != '#' && href.substr(0, baseDir.length) == baseDir) { + if (search.length == 0) { + $(this).attr('search', hrefAdd); + } + else { + $(this).attr('search', search + '&' + hrefAdd); + } + } + }); + getHookableList(); + $('.unregisterHook').unbind('click').click(function() { + id = $(this).attr('id'); + $(this).parent().parent().parent().fadeOut('slow', function() { + $(this).remove(); + }); + return false; + }); + + $('#cancelMove').unbind('click').click(function() { + $('#' + cancelMove + '').sortable('cancel'); + return false; + }); + + $('#saveLiveEdit').unbind('click').click(function() { + saveModulePosition(); + return false; + }); + + $('#closeLiveEdit').unbind('click').click(function() { + $("#live_edit_feedback_str").html('

    ' + confirmClose + '

    ' + confirm + '' + cancel + '

    '); + $("#fancy").attr('href', '#live_edit_feedback'); + $("#fancy").trigger("click"); + }); + + $('.add_module_live_edit').unbind('click').click(function() { + $("#live_edit_feedback_str").html('
    '); + $("#fancy").attr('href', '#live_edit_feedback'); + $("#fancy").trigger("click"); + var id = $(this).attr('id'); + getHookableModuleList(id.substr(4, id.length)); + return false; + }); + + $('.dndHook').each(function() { + var id_hook = $(this).attr('id'); + var new_target = ''; + var old_target = ''; + var cancel = false; + + $('#' + id_hook + '').sortable({ + opacity: 0.5, + cursor: 'move', + + connectWith: '.dndHook', + receive: function(event, ui) { + if (new_target == '') { + new_target = event.target.id; + } + }, + start: function(event, ui) { + new_target = ui.item[0].parentNode.id; + }, + stop: function(event, ui) { + + if (cancel) { + $(this).sortable('cancel'); + } + else { + old_target = event.target.id; + cancelMove = old_target; + if (new_target == '') new_target = old_target; + } + }, + change: function(event, ui) { + new_target = $(ui.placeholder).parent().attr('id'); + ids = ui.item[0].id.split('_'); + if ($.inArray(ids[5], hookable_list[new_target]) != -1) { + cancel = false; + ui.placeholder.css({ + visibility: 'visible', + border: '1px solid #72CB67', + background: '#DFFAD3' + }); + } + else { + ui.placeholder.css({ + visibility: 'visible', + border: '1px solid #EC9B9B', + background: '#FAE2E3' + }); + cancel = true; + } + } + }); + $('#' + id_hook + '').disableSelection(); + }); +}); + +function getHookableList() { + $.ajax({ + type: 'GET', + url: baseDir + ad + '/ajax.php', + async: true, + dataType: 'json', + data: 'ajax=true&getHookableList&hooks_list=' + hooks_list + '&modules_list=' + modules_list, + success: function(jsonData) { + hookable_list = jsonData; + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + $('#live_edit_feedback_str').html('

    TECHNICAL ERROR:

    ' + loadFail + '

    ' + close + '
    '); + $("#fancy").attr('href', '#live_edit_feedback'); + $("#fancy").trigger("click"); + } + }); +} + +function getHookableModuleList(hook) { + + $.ajax({ + type: 'GET', + url: baseDir + ad + '/ajax.php', + async: true, + dataType: 'json', + data: 'ajax=true&getHookableModuleList&hook=' + hook, + success: function(jsonData) { + + var select = ''; + $("#live_edit_feedback_str").html('
    ' + select + '

    ' + add + '

    ' + cancel + ''); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + alert("TECHNICAL ERROR: unable to unregister hook \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus); + } + }); +} + +function saveModulePosition() { + $("#live_edit_feedback_str").html('
    '); + $("#fancy").attr('href', '#live_edit_feedback'); + $("#fancy").trigger("click"); + var str = ''; + for (var i = 0; i < hooks_list.length; i++) { + str += '&' + hooks_list[i] + '='; + $('#' + hooks_list[i] + ' > .dndModule').each(function() { + ids = $(this).attr('id').split('_'); + str += ids[1] + '_' + ids[3] + ','; + }); + str = str.substr(0, str.length - 1); + } + $.ajax({ + type: 'GET', + url: baseDir + ad + '/ajax.php', + async: true, + dataType: 'json', + data: 'ajax=true&saveHook&hooks_list=' + hooks_list + str, + success: function(jsonData) { + $('#live_edit_feedback_str').html('

    ' + saveOK + '

    ' + close + '
    '); + timer = setTimeout("hideFeedback()", 3000); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + $('#live_edit_feedback_str').html('

    TECHNICAL ERROR:

    ' + unableToSaveModulePosition + '

    ' + close + '
    '); + } + }); +} + +function closeFancybox() { + clearTimeout(timer); + $.fancybox.close(); + $('#live_edit_feedback_str').html(''); +} + +function closeLiveEdit(){ + window.location.href = window.location.protocol+'//'+window.location.host+window.location.pathname; +} + +function hideFeedback() { + $('#live_edit_feed_back').fadeOut('slow', function() { + $.fancybox.close(); + $('#live_edit_feedback_str').html(''); + }); +}; + +function get(name) { + var regexS = "[\\?&]" + name + "=([^&#]*)"; + var regex = new RegExp(regexS); + var results = regex.exec(window.location.href); + if (results == null) { + return ""; + } + else { + return results[1]; + } +} diff --git a/js/index.php b/js/index.php new file mode 100644 index 000000000..189b03953 --- /dev/null +++ b/js/index.php @@ -0,0 +1,36 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; diff --git a/js/jquery/accordion/accordion.css b/js/jquery/accordion/accordion.css new file mode 100644 index 000000000..376f29059 --- /dev/null +++ b/js/jquery/accordion/accordion.css @@ -0,0 +1,695 @@ + * jQuery UI Accordion @VERSION + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } + +.ui-widget { +font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; +font-size:1.1em; +} +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { +font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; +font-size:1em; +} +.ui-widget-header { +border:1px solid #E78F08; +color:#FFFFFF; +font-weight:bold; +} +.ui-widget-header a { +color:#FFFFFF; +} +.ui-widget-content { +border:1px solid #DDDDDD; +color:#333333; +display:none; +} +.ui-widget-content a { +color:#333333; +} +.ui-state-default, .ui-widget-content .ui-state-default { +border:1px solid #CCCCCC; +color:#1C94C4; +font-weight:bold; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +} +.ui-state-default a { +color:#1C94C4; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +text-decoration:none; +} +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { +background:#FDF5CE url(fdf5ce.png) repeat-x scroll 50% 50%; +border:1px solid #FBCB09; +color:#C77405; +font-weight:bold; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +} +.ui-state-hover a { +color:#C77405; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +text-decoration:none; +} +.ui-state-active, .ui-widget-content .ui-state-active { +border:1px solid #FBD850; +color:#EB8F00; +font-weight:bold; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +} +.ui-state-active a { +color:#EB8F00; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +text-decoration:none; +} +.ui-state-highlight, .ui-widget-content .ui-state-highlight { +border:1px solid #FED22F; +color:#363636; +} +.ui-state-error, .ui-widget-content .ui-state-error { +border:1px solid #CD0A0A; +color:#FFFFFF; +} +.ui-state-error-text, .ui-widget-content .ui-state-error-text { +color:#FFFFFF; +} +.ui-state-disabled, .ui-widget-content .ui-state-disabled { +background-image:none; +opacity:0.35; +} +.ui-priority-primary, .ui-widget-content .ui-priority-primary { +font-weight:bold; +} +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { +font-weight:normal; +opacity:0.7; +} +.ui-icon { +background-image:url(222222.png); +height:16px; +width:16px; +} +.ui-widget-content .ui-icon { +background-image:url(icons222222.png); +} +.ui-widget-header .ui-icon { +background-image:url(iconsffffff.png); +} +.ui-state-default .ui-icon { +background-image:url(iconsef8c08.png); +} +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { +background-image:url(iconsef8c08.png); +} +.ui-state-active .ui-icon { +background-image:url(iconsef8c08.png); +} +.ui-state-highlight .ui-icon { +background-image:url(icons228ef1.png); +} +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { +background-image:url(iconsffd27a.png); +} +.ui-icon-carat-1-n { +background-position:0 0; +} +.ui-icon-carat-1-ne { +background-position:-16px 0; +} +.ui-icon-carat-1-e { +background-position:-32px 0; +} +.ui-icon-carat-1-se { +background-position:-48px 0; +} +.ui-icon-carat-1-s { +background-position:-64px 0; +} +.ui-icon-carat-1-sw { +background-position:-80px 0; +} +.ui-icon-carat-1-w { +background-position:-96px 0; +} +.ui-icon-carat-1-nw { +background-position:-112px 0; +} +.ui-icon-carat-2-n-s { +background-position:-128px 0; +} +.ui-icon-carat-2-e-w { +background-position:-144px 0; +} +.ui-icon-triangle-1-n { +background-position:0 -16px; +} +.ui-icon-triangle-1-ne { +background-position:-16px -16px; +} +.ui-icon-triangle-1-e { +background-position:-32px -16px; +} +.ui-icon-triangle-1-se { +background-position:-48px -16px; +} +.ui-icon-triangle-1-s { +background-position:-64px -16px; +} +.ui-icon-triangle-1-sw { +background-position:-80px -16px; +} +.ui-icon-triangle-1-w { +background-position:-96px -16px; +} +.ui-icon-triangle-1-nw { +background-position:-112px -16px; +} +.ui-icon-triangle-2-n-s { +background-position:-128px -16px; +} +.ui-icon-triangle-2-e-w { +background-position:-144px -16px; +} +.ui-icon-arrow-1-n { +background-position:0 -32px; +} +.ui-icon-arrow-1-ne { +background-position:-16px -32px; +} +.ui-icon-arrow-1-e { +background-position:-32px -32px; +} +.ui-icon-arrow-1-se { +background-position:-48px -32px; +} +.ui-icon-arrow-1-s { +background-position:-64px -32px; +} +.ui-icon-arrow-1-sw { +background-position:-80px -32px; +} +.ui-icon-arrow-1-w { +background-position:-96px -32px; +} +.ui-icon-arrow-1-nw { +background-position:-112px -32px; +} +.ui-icon-arrow-2-n-s { +background-position:-128px -32px; +} +.ui-icon-arrow-2-ne-sw { +background-position:-144px -32px; +} +.ui-icon-arrow-2-e-w { +background-position:-160px -32px; +} +.ui-icon-arrow-2-se-nw { +background-position:-176px -32px; +} +.ui-icon-arrowstop-1-n { +background-position:-192px -32px; +} +.ui-icon-arrowstop-1-e { +background-position:-208px -32px; +} +.ui-icon-arrowstop-1-s { +background-position:-224px -32px; +} +.ui-icon-arrowstop-1-w { +background-position:-240px -32px; +} +.ui-icon-arrowthick-1-n { +background-position:0 -48px; +} +.ui-icon-arrowthick-1-ne { +background-position:-16px -48px; +} +.ui-icon-arrowthick-1-e { +background-position:-32px -48px; +} +.ui-icon-arrowthick-1-se { +background-position:-48px -48px; +} +.ui-icon-arrowthick-1-s { +background-position:-64px -48px; +} +.ui-icon-arrowthick-1-sw { +background-position:-80px -48px; +} +.ui-icon-arrowthick-1-w { +background-position:-96px -48px; +} +.ui-icon-arrowthick-1-nw { +background-position:-112px -48px; +} +.ui-icon-arrowthick-2-n-s { +background-position:-128px -48px; +} +.ui-icon-arrowthick-2-ne-sw { +background-position:-144px -48px; +} +.ui-icon-arrowthick-2-e-w { +background-position:-160px -48px; +} +.ui-icon-arrowthick-2-se-nw { +background-position:-176px -48px; +} +.ui-icon-arrowthickstop-1-n { +background-position:-192px -48px; +} +.ui-icon-arrowthickstop-1-e { +background-position:-208px -48px; +} +.ui-icon-arrowthickstop-1-s { +background-position:-224px -48px; +} +.ui-icon-arrowthickstop-1-w { +background-position:-240px -48px; +} +.ui-icon-arrowreturnthick-1-w { +background-position:0 -64px; +} +.ui-icon-arrowreturnthick-1-n { +background-position:-16px -64px; +} +.ui-icon-arrowreturnthick-1-e { +background-position:-32px -64px; +} +.ui-icon-arrowreturnthick-1-s { +background-position:-48px -64px; +} +.ui-icon-arrowreturn-1-w { +background-position:-64px -64px; +} +.ui-icon-arrowreturn-1-n { +background-position:-80px -64px; +} +.ui-icon-arrowreturn-1-e { +background-position:-96px -64px; +} +.ui-icon-arrowreturn-1-s { +background-position:-112px -64px; +} +.ui-icon-arrowrefresh-1-w { +background-position:-128px -64px; +} +.ui-icon-arrowrefresh-1-n { +background-position:-144px -64px; +} +.ui-icon-arrowrefresh-1-e { +background-position:-160px -64px; +} +.ui-icon-arrowrefresh-1-s { +background-position:-176px -64px; +} +.ui-icon-arrow-4 { +background-position:0 -80px; +} +.ui-icon-arrow-4-diag { +background-position:-16px -80px; +} +.ui-icon-extlink { +background-position:-32px -80px; +} +.ui-icon-newwin { +background-position:-48px -80px; +} +.ui-icon-refresh { +background-position:-64px -80px; +} +.ui-icon-shuffle { +background-position:-80px -80px; +} +.ui-icon-transfer-e-w { +background-position:-96px -80px; +} +.ui-icon-transferthick-e-w { +background-position:-112px -80px; +} +.ui-icon-folder-collapsed { +background-position:0 -96px; +} +.ui-icon-folder-open { +background-position:-16px -96px; +} +.ui-icon-document { +background-position:-32px -96px; +} +.ui-icon-document-b { +background-position:-48px -96px; +} +.ui-icon-note { +background-position:-64px -96px; +} +.ui-icon-mail-closed { +background-position:-80px -96px; +} +.ui-icon-mail-open { +background-position:-96px -96px; +} +.ui-icon-suitcase { +background-position:-112px -96px; +} +.ui-icon-comment { +background-position:-128px -96px; +} +.ui-icon-person { +background-position:-144px -96px; +} +.ui-icon-print { +background-position:-160px -96px; +} +.ui-icon-trash { +background-position:-176px -96px; +} +.ui-icon-locked { +background-position:-192px -96px; +} +.ui-icon-unlocked { +background-position:-208px -96px; +} +.ui-icon-bookmark { +background-position:-224px -96px; +} +.ui-icon-tag { +background-position:-240px -96px; +} +.ui-icon-home { +background-position:0 -112px; +} +.ui-icon-flag { +background-position:-16px -112px; +} +.ui-icon-calendar { +background-position:-32px -112px; +} +.ui-icon-cart { +background-position:-48px -112px; +} +.ui-icon-pencil { +background-position:-64px -112px; +} +.ui-icon-clock { +background-position:-80px -112px; +} +.ui-icon-disk { +background-position:-96px -112px; +} +.ui-icon-calculator { +background-position:-112px -112px; +} +.ui-icon-zoomin { +background-position:-128px -112px; +} +.ui-icon-zoomout { +background-position:-144px -112px; +} +.ui-icon-search { +background-position:-160px -112px; +} +.ui-icon-wrench { +background-position:-176px -112px; +} +.ui-icon-gear { +background-position:-192px -112px; +} +.ui-icon-heart { +background-position:-208px -112px; +} +.ui-icon-star { +background-position:-224px -112px; +} +.ui-icon-link { +background-position:-240px -112px; +} +.ui-icon-cancel { +background-position:0 -128px; +} +.ui-icon-plus { +background-position:-16px -128px; +} +.ui-icon-plusthick { +background-position:-32px -128px; +} +.ui-icon-minus { +background-position:-48px -128px; +} +.ui-icon-minusthick { +background-position:-64px -128px; +} +.ui-icon-close { +background-position:-80px -128px; +} +.ui-icon-closethick { +background-position:-96px -128px; +} +.ui-icon-key { +background-position:-112px -128px; +} +.ui-icon-lightbulb { +background-position:-128px -128px; +} +.ui-icon-scissors { +background-position:-144px -128px; +} +.ui-icon-clipboard { +background-position:-160px -128px; +} +.ui-icon-copy { +background-position:-176px -128px; +} +.ui-icon-contact { +background-position:-192px -128px; +} +.ui-icon-image { +background-position:-208px -128px; +} +.ui-icon-video { +background-position:-224px -128px; +} +.ui-icon-alert { +background-position:0 -144px; +} +.ui-icon-info { +background-position:-16px -144px; +} +.ui-icon-notice { +background-position:-32px -144px; +} +.ui-icon-help { +background-position:-48px -144px; +} +.ui-icon-check { +background-position:-64px -144px; +} +.ui-icon-bullet { +background-position:-80px -144px; +} +.ui-icon-radio-off { +background-position:-96px -144px; +} +.ui-icon-radio-on { +background-position:-112px -144px; +} +.ui-icon-play { +background-position:0 -160px; +} +.ui-icon-pause { +background-position:-16px -160px; +} +.ui-icon-seek-next { +background-position:-32px -160px; +} +.ui-icon-seek-prev { +background-position:-48px -160px; +} +.ui-icon-seek-end { +background-position:-64px -160px; +} +.ui-icon-seek-first { +background-position:-80px -160px; +} +.ui-icon-stop { +background-position:-96px -160px; +} +.ui-icon-eject { +background-position:-112px -160px; +} +.ui-icon-volume-off { +background-position:-128px -160px; +} +.ui-icon-volume-on { +background-position:-144px -160px; +} +.ui-icon-power { +background-position:0 -176px; +} +.ui-icon-signal-diag { +background-position:-16px -176px; +} +.ui-icon-signal { +background-position:-32px -176px; +} +.ui-icon-battery-0 { +background-position:-48px -176px; +} +.ui-icon-battery-1 { +background-position:-64px -176px; +} +.ui-icon-battery-2 { +background-position:-80px -176px; +} +.ui-icon-battery-3 { +background-position:-96px -176px; +} +.ui-icon-circle-plus { +background-position:0 -192px; +} +.ui-icon-circle-minus { +background-position:-16px -192px; +} +.ui-icon-circle-close { +background-position:-32px -192px; +} +.ui-icon-circle-triangle-e { +background-position:-48px -192px; +} +.ui-icon-circle-triangle-s { +background-position:-64px -192px; +} +.ui-icon-circle-triangle-w { +background-position:-80px -192px; +} +.ui-icon-circle-triangle-n { +background-position:-96px -192px; +} +.ui-icon-circle-arrow-e { +background-position:-112px -192px; +} +.ui-icon-circle-arrow-s { +background-position:-128px -192px; +} +.ui-icon-circle-arrow-w { +background-position:-144px -192px; +} +.ui-icon-circle-arrow-n { +background-position:-160px -192px; +} +.ui-icon-circle-zoomin { +background-position:-176px -192px; +} +.ui-icon-circle-zoomout { +background-position:-192px -192px; +} +.ui-icon-circle-check { +background-position:-208px -192px; +} +.ui-icon-circlesmall-plus { +background-position:0 -208px; +} +.ui-icon-circlesmall-minus { +background-position:-16px -208px; +} +.ui-icon-circlesmall-close { +background-position:-32px -208px; +} +.ui-icon-squaresmall-plus { +background-position:-48px -208px; +} +.ui-icon-squaresmall-minus { +background-position:-64px -208px; +} +.ui-icon-squaresmall-close { +background-position:-80px -208px; +} +.ui-icon-grip-dotted-vertical { +background-position:0 -224px; +} +.ui-icon-grip-dotted-horizontal { +background-position:-16px -224px; +} +.ui-icon-grip-solid-vertical { +background-position:-32px -224px; +} +.ui-icon-grip-solid-horizontal { +background-position:-48px -224px; +} +.ui-icon-gripsmall-diagonal-se { +background-position:-64px -224px; +} +.ui-icon-grip-diagonal-se { +background-position:-80px -224px; +} +.ui-corner-tl { +-moz-border-radius-topleft:4px; +} +.ui-corner-tr { +-moz-border-radius-topright:4px; +} +.ui-corner-bl { +-moz-border-radius-bottomleft:4px; +} +.ui-corner-br { +-moz-border-radius-bottomright:4px; +} +.ui-corner-top { +-moz-border-radius-topleft:4px; +-moz-border-radius-topright:4px; +} +.ui-corner-bottom { +-moz-border-radius-bottomleft:4px; +-moz-border-radius-bottomright:4px; +} +.ui-corner-right { +-moz-border-radius-bottomright:4px; +-moz-border-radius-topright:4px; +} +.ui-corner-left { +-moz-border-radius-bottomleft:4px; +-moz-border-radius-topleft:4px; +} +.ui-corner-all { +-moz-border-radius-bottomleft:4px; +-moz-border-radius-bottomright:4px; +-moz-border-radius-topleft:4px; +-moz-border-radius-topright:4px; +} +.ui-widget-overlay { +background:#666666 url(666666.png) repeat scroll 50% 50%; +opacity:0.5; +} +.ui-widget-shadow { +-moz-border-radius-bottomleft:5px; +-moz-border-radius-bottomright:5px; +-moz-border-radius-topleft:5px; +-moz-border-radius-topright:5px; +background:#000000 url(000000.png) repeat-x scroll 50% 50%; +margin:-5px 0 0 -5px; +opacity:0.2; +padding:5px; +} diff --git a/js/jquery/accordion/accordion.ui.js b/js/jquery/accordion/accordion.ui.js new file mode 100644 index 000000000..cf34b8363 --- /dev/null +++ b/js/jquery/accordion/accordion.ui.js @@ -0,0 +1,402 @@ +/*! + * jQuery UI 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.5",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind("mousedown.ui-disableSelection selectstart.ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this, +h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.createElement("div"),b=document.body;c.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.appendChild(a).offsetHeight===100;b.removeChild(a).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode)return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element, +b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&& +a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"), +10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft(): +f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options; +if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!= +"HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f={width:c.size.width-(f?0:c.sizeDiff.width),height:c.size.height-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable, +{version:"1.8.5"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize, +function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n= +(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition= +false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left- +a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize", +b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top", +"Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset, +f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left= +a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+ +a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&& +e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative", +height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width= +d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp();this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate", +null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem): +d(this.domPosition.parent).prepend(this.currentItem);return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute|| +"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")}, +_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!= +this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a= +this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable"); +if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h= +0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width= +this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f}, +update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b= +null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this)); +this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])? +g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive", +g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over= +0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c]||typeof c== +"boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c, +a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/= +e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+ +b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/ +2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100* +f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var f=d.closest(".ui-accordion-header");a.active=f.length?f:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",function(g){return a._keydown(g)}).next().attr("role", +"tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(g){a._clickHandler.call(a,g,this);g.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers); +this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,f=this.headers.index(a.target),g=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:g=this.headers[(f+1)%d];break;case b.LEFT:case b.UP:g=this.headers[(f-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(g){c(a.target).attr("tabIndex",-1);c(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected); +a.next().addClass("ui-accordion-content-active")}h=a.next();f=this.active.next();g={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):h,oldContent:f};d=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(h,f,g,b,d)}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +this.active.next().addClass("ui-accordion-content-active");var f=this.active.next(),g={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:f},h=this.active=c([]);this._toggle(h,f,g)}},_toggle:function(a,b,d,f,g){var h=this,e=h.options;h.toShow=a;h.toHide=b;h.data=d;var j=function(){if(h)return h._completed.apply(h,arguments)};h._trigger("changestart",null,h.data);h.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&f?{toShow:c([]),toHide:b,complete:j, +down:g,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:g,autoHeight:e.autoHeight||e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;f=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!f[k]&&!c.easing[k])k="slide";f[k]||(f[k]=function(l){this.slide(l,{easing:k,duration:i||700})}); +f[k](d)}else{if(e.collapsible&&f)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.5",animations:{slide:function(a, +b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),f=0,g={},h={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){h[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);g[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(h,{step:function(j,i){if(i.prop=="height")f=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=f*g[i.prop].value+g[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +(function(e){e.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},_create:function(){var a=this,b=this.element[0].ownerDocument;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!a.options.disabled){var d=e.ui.keyCode;switch(c.keyCode){case d.PAGE_UP:a._move("previousPage", +c);break;case d.PAGE_DOWN:a._move("nextPage",c);break;case d.UP:a._move("previous",c);c.preventDefault();break;case d.DOWN:a._move("next",c);c.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:a.menu.element.is(":visible")&&c.preventDefault();case d.TAB:if(!a.menu.active)return;a.menu.select(c);break;case d.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay); +break}}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=e("
      ").addClass("ui-autocomplete").appendTo(e(this.options.appendTo||"body",b)[0]).mousedown(function(c){var d=a.menu.element[0]; +c.target===d&&setTimeout(function(){e(document).one("mousedown",function(f){f.target!==a.element[0]&&f.target!==d&&!e.ui.contains(d,f.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,d){d=d.item.data("item.autocomplete");false!==a._trigger("focus",null,{item:d})&&/^key/.test(c.originalEvent.type)&&a.element.val(d.value)},selected:function(c,d){d=d.item.data("item.autocomplete");var f=a.previous;if(a.element[0]!==b.activeElement){a.element.focus(); +a.previous=f}if(false!==a._trigger("select",c,{item:d})){a.term=d.value;a.element.val(d.value)}a.close(c);a.selectedItem=d},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a,b){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(e(b||"body",this.element[0].ownerDocument)[0])},_initSource:function(){var a=this,b,c;if(e.isArray(this.options.source)){b=this.options.source;this.source=function(d,f){f(e.ui.autocomplete.filter(b,d.term))}}else if(typeof this.options.source==="string"){c=this.options.source;this.source= +function(d,f){a.xhr&&a.xhr.abort();a.xhr=e.getJSON(c,d,function(g,i,h){h===a.xhr&&f(g);a.xhr=null})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(e("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}, +filter:function(a,b){var c=new RegExp(e.ui.autocomplete.escapeRegex(b),"i");return e.grep(a,function(d){return c.test(d.label||d.value||d)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(b){if(e(b.target).closest(".ui-menu-item a").length){b.preventDefault();a.select(b)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(b){a.activate(b,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.attr("scrollTop"),f=this.element.height();if(c<0)this.element.attr("scrollTop",d+c);else c>=f&&this.element.attr("scrollTop",d+c-f+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:b})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0); +a.length?this.activate(c,a):this.activate(c,this.element.children(b))}else this.activate(c,this.element.children(b))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(":first"));else{var b=this.active.offset().top,c=this.element.height(),d=this.element.children("li").filter(function(){var f=e(this).offset().top-b-c+e(this).height();return f<10&&f>-10});d.length||(d=this.element.children(":last"));this.activate(a,d)}else this.activate(a,this.element.children(!this.active|| +this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last"));else{var b=this.active.offset().top,c=this.element.height();result=this.element.children("li").filter(function(){var d=e(this).offset().top-b+c-e(this).height();return d<10&&d>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))}, +hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":visible").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(d,G){function L(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass= +"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su", +"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10", +minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('
      ')}function E(a,b){d.extend(a, +b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.5"}});var y=(new Date).getTime();d.extend(L.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]= +f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
      ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor== +Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]); +d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}}, +_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b= +d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false; +for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target|| +a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a); +d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&& +d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f, +h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover"); +this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover"); +this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"); +a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(), +k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"]; +a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val(): +"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&& +!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth; +b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b= +this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a= +d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a, +"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b== +"object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1 +-1){k=1;l=u;do{e=this._getDaysInMonth(c,k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24* +60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e? +"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k= +this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a, +"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+ +n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
      '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
      ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var M=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
      '+(/all|left/.test(t)&&C==0?c? +f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'
      ';var A=k?'":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, +A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!k?"":'";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,K=B&&!H||!F[0]||j&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+""}g++;if(g>11){g=0;m++}x+="
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(q)+""+(B&&!w?" ":K?''+q.getDate()+ +"":''+q.getDate()+"")+"
      "+(l?""+(i[0]>0&&D==i[1]-1?'
      ':""):"");N+=x}I+=N}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'': +"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='
      ',o="";if(h||!k)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(j+=o+(h||!(k&&l)?" ":""));if(h||!l)j+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b, +i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?" ":"")+o;j+="
      ";return j},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); +return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.5";window["DP_jQuery_"+y]=d})(jQuery); +(function(c,j){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",of:window,collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title"); +if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",f=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog", +"aria-labelledby":f}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var e=(a.uiDialogTitlebar=c("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i); +return false}).appendTo(e);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",f).html(d).prependTo(e);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;e.find("*").add(e).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&& +g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog"); +b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,f=d.options;if(f.modal&&!a||!f.stack&&!f.modal)return d._trigger("focus",b);if(f.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ= +f.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show); +a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(f){if(f.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),e=g.filter(":first");g=g.filter(":last");if(f.target===g[0]&&!f.shiftKey){e.focus(1);return false}else if(f.target===e[0]&&f.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false, +f=c("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
      ").addClass("ui-dialog-buttonset").appendTo(f);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(e,h){h=c.isFunction(h)?{click:h,text:e}:h;e=c("",h).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&e.button()});f.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(e){return{position:e.position, +offset:e.offset}}var b=this,d=b.options,f=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(e,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",e,a(h))},drag:function(e,h){b._trigger("drag",e,a(h))},stop:function(e,h){d.position=[h.position.left-f.scrollLeft(),h.position.top-f.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g); +b._trigger("dragStop",e,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}a=a===j?this.options.resizable:a;var d=this,f=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:d._minHeight(), +handles:a,start:function(e,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",e,b(h))},resize:function(e,h){d._trigger("resize",e,b(h))},stop:function(e,h){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();d._trigger("resizeStop",e,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight, +a.height)},_position:function(a){var b=[],d=[0,0],f;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,e){if(+b[g]===b[g]){d[g]=b[g];b[g]=e}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a); +f||this.uiDialog.hide()},_setOption:function(a,b){var d=this,f=d.uiDialog,g=f.is(":data(resizable)"),e=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);e=true;break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":f.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case "draggable":b? +d._makeDraggable():f.draggable("destroy");break;case "height":e=true;break;case "maxHeight":g&&f.resizable("option","maxHeight",b);e=true;break;case "maxWidth":g&&f.resizable("option","maxWidth",b);e=true;break;case "minHeight":g&&f.resizable("option","minHeight",b);e=true;break;case "minWidth":g&&f.resizable("option","minWidth",b);e=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&f.resizable("destroy");g&&typeof b==="string"&&f.resizable("option","handles",b);!g&&b!==false&& +d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break;case "width":e=true;break}c.Widget.prototype._setOption.apply(d,arguments);e&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:c.support.minHeight?"auto":Math.max(a.minHeight- +b,0)}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.5",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","), +function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a, +b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0]; +b.left+=a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d= +c(b),g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +(function(b,c){b.widget("ui.progressbar",{options:{value:0},min:0,max:100,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.max,"aria-valuenow":this._value()});this.valueDiv=b("
      ").appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===c)return this._value();this._setOption("value",a);return this},_setOption:function(a,d){if(a==="value"){this.options.value=d;this._refreshValue();this._trigger("change")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.max,Math.max(this.min,a))},_refreshValue:function(){var a=this.value();this.valueDiv.toggleClass("ui-corner-right", +a===this.max).width(a+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.5"})})(jQuery); +(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options;this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget ui-widget-content ui-corner-all");b.disabled&&this.element.addClass("ui-slider-disabled ui-disabled"); +this.range=d([]);if(b.range){if(b.range===true){this.range=d("
      ");if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}else this.range=d("
      ");this.range.appendTo(this.element).addClass("ui-slider-range");if(b.range==="min"||b.range==="max")this.range.addClass("ui-slider-range-"+b.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(b.values&&b.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!a.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");h=a._start(c,f);if(h===false)return}break}i=a.options.step;h=a.options.values&&a.options.values.length?(g=a.values(f)):(g=a.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=a._valueMin();break;case d.ui.keyCode.END:g=a._valueMax();break;case d.ui.keyCode.PAGE_UP:g=a._trimAlignValue(h+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=a._trimAlignValue(h-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +a._valueMax())return;g=a._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===a._valueMin())return;g=a._trimAlignValue(h-i);break}a._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(c,e);a._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(a){var b=this.options,c,e,f,h,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(b.range===true&&this.values(1)===b.min){g+=1;f=d(this.handles[g])}if(this._start(a, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();b=f.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-f.width()/2,top:a.pageY-b.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= +this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= +this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); +c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var e;if(this.options.values&&this.options.values.length){e=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>e||b===1&&c1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;fthis._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=a%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= +this.options.range,b=this.options,c=this,e=!this._animateOff?b.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({width:f- +g+"%"},{queue:false,duration:b.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},b.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:b.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"}, +b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.5"})})(jQuery); +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(true)},_setOption:function(a,e){if(a=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[a]=e;this._tabify()}},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[a].concat(d.makeArray(arguments)))},_ui:function(a,e){return{tab:a,panel:e,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a= +d(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(a){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var b=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))b.panels=b.panels.add(b._sanitizeSelector(i));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=b._tabId(f);f.href="#"+i;f=d("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(b.panels[g-1]||b.list);f.data("destroy.tabs",true)}b.panels=b.panels.add(f)}else c.disabled.push(g)});if(a){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(b._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return b.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){this.panels.eq(c.selected).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");b.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[c.selected],b.panels[c.selected]))});this.load(c.selected)}d(window).bind("unload",function(){b.lis.add(b.anchors).unbind(".tabs");b.lis=b.anchors=b.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[c.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);a=0;for(var j;j=this.lis[a];a++)d(j)[d.inArray(a,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);b._trigger("show", +null,b._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");b._trigger("show",null,b._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);b.element.dequeue("tabs")})}:function(g,f){b.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");b.element.dequeue("tabs")};this.anchors.bind(c.event+".tabs", +function(){var g=this,f=d(g).closest("li"),i=b.panels.filter(":not(.ui-tabs-hide)"),l=d(b._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||b.panels.filter(":animated").length||b._trigger("select",null,b._ui(this,l[0]))===false){this.blur();return false}c.selected=b.anchors.index(this);b.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=-1;c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs", +function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&b._cookie(c.selected,c.cookie);b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this));this.blur();return false}c.cookie&&b._cookie(c.selected,c.cookie);if(l.length){i.length&&b.element.queue("tabs",function(){s(g,i)});b.element.queue("tabs",function(){r(g,l)});b.load(b.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},_getIndex:function(a){if(typeof a=="string")a=this.anchors.index(this.anchors.filter("[href$="+a+"]"));return a},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href= +e;var b=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){b.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(a,e,b){if(b===p)b=this.anchors.length; +var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,a).replace(/#\{label\}/g,e));a=!a.indexOf("#")?a.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=d("#"+a);j.length||(j=d(h.panelTemplate).attr("id",a).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(b>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[b]); +j.insertBefore(this.panels[b])}h.disabled=d.map(h.disabled,function(k){return k>=b?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[b],this.panels[b]));return this},remove:function(a){a=this._getIndex(a);var e=this.options,b=this.lis.eq(a).remove(),c=this.panels.eq(a).remove(); +if(b.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(a+(a+1=a?--h:h});this._tabify();this._trigger("remove",null,this._ui(b.find("a")[0],c[0]));return this},enable:function(a){a=this._getIndex(a);var e=this.options;if(d.inArray(a,e.disabled)!=-1){this.lis.eq(a).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(b){return b!=a});this._trigger("enable",null, +this._ui(this.anchors[a],this.panels[a]));return this}},disable:function(a){a=this._getIndex(a);var e=this.options;if(a!=e.selected){this.lis.eq(a).addClass("ui-state-disabled");e.disabled.push(a);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))}return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this}, +load:function(a){a=this._getIndex(a);var e=this,b=this.options,c=this.anchors.eq(a)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(b.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(b.spinner)}this.xhr=d.ajax(d.extend({},b.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(c.hash)).html(k);e._cleanup();b.cache&&d.data(c,"cache.tabs", +true);e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[a],e.panels[a]));try{b.ajaxOptions.error(k,n,a,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(a, +e){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.5"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(a,e){var b=this,c=this.options,h=b._rotate||(b._rotate=function(j){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var k=c.selected;b.select(++k');if(typeof uri=='boolean'){io.src='javascript:false';} +else if(typeof uri=='string'){io.src=uri;}} +else{var io=document.createElement('iframe');io.id=frameId;io.name=frameId;} +io.style.position='absolute';io.style.top='-1000px';io.style.left='-1000px';document.body.appendChild(io);return io},createUploadForm:function(id,fileElementId) +{var formId='jUploadForm'+id;var fileId='jUploadFile'+id;var form=$('
      ');var oldElement=$('#'+fileElementId);var newElement=$(oldElement).clone();$(oldElement).attr('id',fileId);$(oldElement).before(newElement);$(oldElement).appendTo(form);$(form).css('position','absolute');$(form).css('top','-1200px');$(form).css('left','-1200px');$(form).appendTo('body');return form;},ajaxFileUpload:function(s){s=jQuery.extend({},jQuery.ajaxSettings,s);var id=new Date().getTime() +var form=jQuery.createUploadForm(id,s.fileElementId);var io=jQuery.createUploadIframe(id,s.secureuri);var frameId='jUploadFrame'+id;var formId='jUploadForm'+id;if(s.global&&!jQuery.active++) +{jQuery.event.trigger("ajaxStart");} +var requestDone=false;var xml={} +if(s.global) +jQuery.event.trigger("ajaxSend",[xml,s]);var uploadCallback=function(isTimeout) +{var io=document.getElementById(frameId);try +{if(io.contentWindow) +{xml.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;xml.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;}else if(io.contentDocument) +{xml.responseText=io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;xml.responseXML=io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;}}catch(e) +{jQuery.handleError(s,xml,null,e);} +if(xml||isTimeout=="timeout") +{requestDone=true;var status;try{status=isTimeout!="timeout"?"success":"error";if(status!="error") +{var data=jQuery.uploadHttpData(xml,s.dataType);if(s.success) +s.success(data,status);if(s.global) +jQuery.event.trigger("ajaxSuccess",[xml,s]);}else +jQuery.handleError(s,xml,status);}catch(e) +{status="error";jQuery.handleError(s,xml,status,e);} +if(s.global) +jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active) +jQuery.event.trigger("ajaxStop");if(s.complete) +s.complete(xml,status);jQuery(io).unbind() +setTimeout(function() +{try +{$(io).remove();$(form).remove();}catch(e) +{jQuery.handleError(s,xml,null,e);}},100) +xml=null}} +if(s.timeout>0) +{setTimeout(function(){if(!requestDone)uploadCallback("timeout");},s.timeout);} +try +{var form=$('#'+formId);$(form).attr('action',s.url);$(form).attr('method','POST');$(form).attr('target',frameId);if(form.encoding) +{form.encoding='multipart/form-data';} +else +{form.enctype='multipart/form-data';} +$(form).submit();}catch(e) +{jQuery.handleError(s,xml,null,e);} +if(window.attachEvent){document.getElementById(frameId).attachEvent('onload',uploadCallback);} +else{document.getElementById(frameId).addEventListener('load',uploadCallback,false);} +return{abort:function(){}};},uploadHttpData:function(r,type){var data=!type;data=type=="xml"||data?r.responseXML:r.responseText;if(type=="script") +jQuery.globalEval(data);if(type=="json") +eval("data = "+data);if(type=="html") +jQuery("
      ").html(data).evalScripts();return data;}}) diff --git a/js/jquery/datepicker/000000.png b/js/jquery/datepicker/000000.png new file mode 100644 index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/666666.png b/js/jquery/datepicker/666666.png new file mode 100644 index 0000000000000000000000000000000000000000..889ebac732ce70ed78543fceb9207f04c9f8129f GIT binary patch literal 395 zcmV;60d)R}P)gHbR--1Fm0hSwR%L3E zsBDCq#3O5=CYh0ys7Y32peBjQyr@ZfG7B|{CF`Lk@ycq{B(t&$HOZ<>O%j!jP?LCM zEz~44vJy4PiVV~wF_{-NNl#{>Cb48a)FfV6jhbXucA+L&m8nUhvJq+$kF157WJXq^ pCRveznj|Lkq9*CdEPk>{{sCa@TST=rdf@;7002ovPDHLkV1m`1sDc0h literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/b81900.png b/js/jquery/datepicker/b81900.png new file mode 100644 index 0000000000000000000000000000000000000000..0599bdd9cd8c4eee2d325ec7db4e6a5c9fb45274 GIT binary patch literal 403 zcmV;E0c`$>P)nngkD_>u5~THrS$0-`C5Xir?E$ed!

      S=tVT^TE89_%tjg3RQP~JJ xiAUB#O)?`ZQIo95Kur>pc~O(}WELOUBoD^|TIj%2`=I~;002ovPDHLkV1l@ws|Wx9 literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/datepicker.css b/js/jquery/datepicker/datepicker.css new file mode 100644 index 000000000..98652379f --- /dev/null +++ b/js/jquery/datepicker/datepicker.css @@ -0,0 +1,875 @@ +/* +* jQuery UI CSS Framework +* Copyright (c) 2008 AUTHORS.txt (http://ui.jquery.com/about) +* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. +* To view and modify this theme, visit http://themeroller.com/?ctl=themeroller&tr=&ffDefault=Trebuchet+MS,+Tahoma,+Verdana,+Arial,+sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px +*/ + +.ui-widget { +font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; +font-size:1.1em; +} +.ui-widget-header { +background:#F6A828 url(f6a828.png) repeat-x scroll 50% 50%; +border:1px solid #E78F08; +color:#FFFFFF; +font-weight:bold; +} +.ui-widget-header a { +color:#FFFFFF; +} +.ui-widget-content { +background:#EEEEEE url(eeeeee.png) repeat-x scroll 50% 0; +border:1px solid #DDDDDD; +color:#333333; +display:none; +} +.ui-widget-content a { +color:#488c40; +text-decoration: underline; +} +.ui-state-default, .ui-widget-content .ui-state-default { +background:#F6F6F6 url(f6f6f6.png) repeat-x scroll 50% 50%; +border:1px solid #CCCCCC; +color:#812143; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +} +.ui-state-default a { +color:#812143; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +text-decoration:none; +} +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { +background:#F6F6F6 url(f6f6f6.png) repeat-x scroll 50% 50%; +border:1px solid #CCCCCC; +color:#812143; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +} +.ui-state-hover a { +color:#812143; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +text-decoration:none; +} +.ui-state-active, .ui-widget-content .ui-state-active { +background:#F6F6F6 url(f6f6f6.png) repeat-x scroll 50% 50%; +border:1px solid #CCCCCC; +color:#812143; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +} +.ui-state-active a { +color:#812143; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:medium; +text-decoration:none; +} +.ui-state-highlight, .ui-widget-content .ui-state-highlight { +background:#FFE45C url(ffe45c.png) repeat-x scroll 50% 0; +border:1px solid #FED22F; +color:#363636; +} +.ui-state-error, .ui-widget-content .ui-state-error { +background:#B81900 url(b81900.png) repeat scroll 50% 50%; +border:1px solid #CD0A0A; +color:#FFFFFF; +} +.ui-state-error-text, .ui-widget-content .ui-state-error-text { +color:#FFFFFF; +} +.ui-state-disabled, .ui-widget-content .ui-state-disabled { +background-image:none; +opacity:0.35; +} +.ui-priority-primary, .ui-widget-content .ui-priority-primary { +font-weight:bold; +} +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { +font-weight:normal; +opacity:0.7; +} +.ui-icon { +background-image:url(222222.png); +height:16px; +width:16px; +} +.ui-widget-content .ui-icon { +background-image:url(icons222222.png); +} +.ui-widget-header .ui-icon { +background-image:url(iconsffffff.png); +} +.ui-state-default .ui-icon { +background-image:url(iconsef8c08.png); +} +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { +background-image:url(iconsef8c08.png); +} +.ui-state-active .ui-icon { +background-image: url("../../../img/admin/less.png"); +background-repeat: no-repeat; +} +.ui-state-highlight .ui-icon { +background-image:url(icons228ef1.png); +} +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { +background-image:url(iconsffd27a.png); +} +.ui-icon-carat-1-n { +background-position:0 0; +} +.ui-icon-carat-1-ne { +background-position:-16px 0; +} +.ui-icon-carat-1-e { +background-position:-32px 0; +} +.ui-icon-carat-1-se { +background-position:-48px 0; +} +.ui-icon-carat-1-s { +background-position:-64px 0; +} +.ui-icon-carat-1-sw { +background-position:-80px 0; +} +.ui-icon-carat-1-w { +background-position:-96px 0; +} +.ui-icon-carat-1-nw { +background-position:-112px 0; +} +.ui-icon-carat-2-n-s { +background-position:-128px 0; +} +.ui-icon-carat-2-e-w { +background-position:-144px 0; +} +.ui-icon-triangle-1-n { +background-position:0 -16px; +} +.ui-icon-triangle-1-ne { +background-position:-16px -16px; +} +.ui-icon-triangle-1-e { +background-position:-32px -16px; +} +.ui-icon-triangle-1-se { +background-position:-48px -16px; +} +.ui-icon-triangle-1-s { +background-image: url('../../../img/admin/more.png'); +} +.ui-state-default .ui-icon-triangle-1-e +{ +background-image: url('../../../img/admin/more.png'); +background-position: 3px 4px; +background-repeat: no-repeat; +} +.ui-state-default .ui-icon-triangle-1-s +{ +background-image: url('../../../img/admin/less.png'); +background-position: 0px 4px; +background-repeat: no-repeat; +} +.ui-icon-triangle-1-sw { +background-position:-80px -16px; +} +.ui-icon-triangle-1-w { +background-position:-96px -16px; +} +.ui-icon-triangle-1-nw { +background-position:-112px -16px; +} +.ui-icon-triangle-2-n-s { +background-position:-128px -16px; +} +.ui-icon-triangle-2-e-w { +background-position:-144px -16px; +} +.ui-icon-arrow-1-n { +background-position:0 -32px; +} +.ui-icon-arrow-1-ne { +background-position:-16px -32px; +} +.ui-icon-arrow-1-e { +background-position:-32px -32px; +} +.ui-icon-arrow-1-se { +background-position:-48px -32px; +} +.ui-icon-arrow-1-s { +background-position:-64px -32px; +} +.ui-icon-arrow-1-sw { +background-position:-80px -32px; +} +.ui-icon-arrow-1-w { +background-position:-96px -32px; +} +.ui-icon-arrow-1-nw { +background-position:-112px -32px; +} +.ui-icon-arrow-2-n-s { +background-position:-128px -32px; +} +.ui-icon-arrow-2-ne-sw { +background-position:-144px -32px; +} +.ui-icon-arrow-2-e-w { +background-position:-160px -32px; +} +.ui-icon-arrow-2-se-nw { +background-position:-176px -32px; +} +.ui-icon-arrowstop-1-n { +background-position:-192px -32px; +} +.ui-icon-arrowstop-1-e { +background-position:-208px -32px; +} +.ui-icon-arrowstop-1-s { +background-position:-224px -32px; +} +.ui-icon-arrowstop-1-w { +background-position:-240px -32px; +} +.ui-icon-arrowthick-1-n { +background-position:0 -48px; +} +.ui-icon-arrowthick-1-ne { +background-position:-16px -48px; +} +.ui-icon-arrowthick-1-e { +background-position:-32px -48px; +} +.ui-icon-arrowthick-1-se { +background-position:-48px -48px; +} +.ui-icon-arrowthick-1-s { +background-position:-64px -48px; +} +.ui-icon-arrowthick-1-sw { +background-position:-80px -48px; +} +.ui-icon-arrowthick-1-w { +background-position:-96px -48px; +} +.ui-icon-arrowthick-1-nw { +background-position:-112px -48px; +} +.ui-icon-arrowthick-2-n-s { +background-position:-128px -48px; +} +.ui-icon-arrowthick-2-ne-sw { +background-position:-144px -48px; +} +.ui-icon-arrowthick-2-e-w { +background-position:-160px -48px; +} +.ui-icon-arrowthick-2-se-nw { +background-position:-176px -48px; +} +.ui-icon-arrowthickstop-1-n { +background-position:-192px -48px; +} +.ui-icon-arrowthickstop-1-e { +background-position:-208px -48px; +} +.ui-icon-arrowthickstop-1-s { +background-position:-224px -48px; +} +.ui-icon-arrowthickstop-1-w { +background-position:-240px -48px; +} +.ui-icon-arrowreturnthick-1-w { +background-position:0 -64px; +} +.ui-icon-arrowreturnthick-1-n { +background-position:-16px -64px; +} +.ui-icon-arrowreturnthick-1-e { +background-position:-32px -64px; +} +.ui-icon-arrowreturnthick-1-s { +background-position:-48px -64px; +} +.ui-icon-arrowreturn-1-w { +background-position:-64px -64px; +} +.ui-icon-arrowreturn-1-n { +background-position:-80px -64px; +} +.ui-icon-arrowreturn-1-e { +background-position:-96px -64px; +} +.ui-icon-arrowreturn-1-s { +background-position:-112px -64px; +} +.ui-icon-arrowrefresh-1-w { +background-position:-128px -64px; +} +.ui-icon-arrowrefresh-1-n { +background-position:-144px -64px; +} +.ui-icon-arrowrefresh-1-e { +background-position:-160px -64px; +} +.ui-icon-arrowrefresh-1-s { +background-position:-176px -64px; +} +.ui-icon-arrow-4 { +background-position:0 -80px; +} +.ui-icon-arrow-4-diag { +background-position:-16px -80px; +} +.ui-icon-extlink { +background-position:-32px -80px; +} +.ui-icon-newwin { +background-position:-48px -80px; +} +.ui-icon-refresh { +background-position:-64px -80px; +} +.ui-icon-shuffle { +background-position:-80px -80px; +} +.ui-icon-transfer-e-w { +background-position:-96px -80px; +} +.ui-icon-transferthick-e-w { +background-position:-112px -80px; +} +.ui-icon-folder-collapsed { +background-position:0 -96px; +} +.ui-icon-folder-open { +background-position:-16px -96px; +} +.ui-icon-document { +background-position:-32px -96px; +} +.ui-icon-document-b { +background-position:-48px -96px; +} +.ui-icon-note { +background-position:-64px -96px; +} +.ui-icon-mail-closed { +background-position:-80px -96px; +} +.ui-icon-mail-open { +background-position:-96px -96px; +} +.ui-icon-suitcase { +background-position:-112px -96px; +} +.ui-icon-comment { +background-position:-128px -96px; +} +.ui-icon-person { +background-position:-144px -96px; +} +.ui-icon-print { +background-position:-160px -96px; +} +.ui-icon-trash { +background-position:-176px -96px; +} +.ui-icon-locked { +background-position:-192px -96px; +} +.ui-icon-unlocked { +background-position:-208px -96px; +} +.ui-icon-bookmark { +background-position:-224px -96px; +} +.ui-icon-tag { +background-position:-240px -96px; +} +.ui-icon-home { +background-position:0 -112px; +} +.ui-icon-flag { +background-position:-16px -112px; +} +.ui-icon-calendar { +background-position:-32px -112px; +} +.ui-icon-cart { +background-position:-48px -112px; +} +.ui-icon-pencil { +background-position:-64px -112px; +} +.ui-icon-clock { +background-position:-80px -112px; +} +.ui-icon-disk { +background-position:-96px -112px; +} +.ui-icon-calculator { +background-position:-112px -112px; +} +.ui-icon-zoomin { +background-position:-128px -112px; +} +.ui-icon-zoomout { +background-position:-144px -112px; +} +.ui-icon-search { +background-position:-160px -112px; +} +.ui-icon-wrench { +background-position:-176px -112px; +} +.ui-icon-gear { +background-position:-192px -112px; +} +.ui-icon-heart { +background-position:-208px -112px; +} +.ui-icon-star { +background-position:-224px -112px; +} +.ui-icon-link { +background-position:-240px -112px; +} +.ui-icon-cancel { +background-position:0 -128px; +} +.ui-icon-plus { +background-position:-16px -128px; +} +.ui-icon-plusthick { +background-position:-32px -128px; +} +.ui-icon-minus { +background-position:-48px -128px; +} +.ui-icon-minusthick { +background-position:-64px -128px; +} +.ui-icon-close { +background-position:-80px -128px; +} +.ui-icon-closethick { +background-position:-96px -128px; +} +.ui-icon-key { +background-position:-112px -128px; +} +.ui-icon-lightbulb { +background-position:-128px -128px; +} +.ui-icon-scissors { +background-position:-144px -128px; +} +.ui-icon-clipboard { +background-position:-160px -128px; +} +.ui-icon-copy { +background-position:-176px -128px; +} +.ui-icon-contact { +background-position:-192px -128px; +} +.ui-icon-image { +background-position:-208px -128px; +} +.ui-icon-video { +background-position:-224px -128px; +} +.ui-icon-alert { +background-position:0 -144px; +} +.ui-icon-info { +background-position:-16px -144px; +} +.ui-icon-notice { +background-position:-32px -144px; +} +.ui-icon-help { +background-position:-48px -144px; +} +.ui-icon-check { +background-position:-64px -144px; +} +.ui-icon-bullet { +background-position:-80px -144px; +} +.ui-icon-radio-off { +background-position:-96px -144px; +} +.ui-icon-radio-on { +background-position:-112px -144px; +} +.ui-icon-play { +background-position:0 -160px; +} +.ui-icon-pause { +background-position:-16px -160px; +} +.ui-icon-seek-next { +background-position:-32px -160px; +} +.ui-icon-seek-prev { +background-position:-48px -160px; +} +.ui-icon-seek-end { +background-position:-64px -160px; +} +.ui-icon-seek-first { +background-position:-80px -160px; +} +.ui-icon-stop { +background-position:-96px -160px; +} +.ui-icon-eject { +background-position:-112px -160px; +} +.ui-icon-volume-off { +background-position:-128px -160px; +} +.ui-icon-volume-on { +background-position:-144px -160px; +} +.ui-icon-power { +background-position:0 -176px; +} +.ui-icon-signal-diag { +background-position:-16px -176px; +} +.ui-icon-signal { +background-position:-32px -176px; +} +.ui-icon-battery-0 { +background-position:-48px -176px; +} +.ui-icon-battery-1 { +background-position:-64px -176px; +} +.ui-icon-battery-2 { +background-position:-80px -176px; +} +.ui-icon-battery-3 { +background-position:-96px -176px; +} +.ui-icon-circle-plus { +background-position:0 -192px; +} +.ui-icon-circle-minus { +background-position:-16px -192px; +} +.ui-icon-circle-close { +background-position:-32px -192px; +} +.ui-icon-circle-triangle-e { +background-position:-48px -192px; +} +.ui-icon-circle-triangle-s { +background-position:-64px -192px; +} +.ui-icon-circle-triangle-w { +background-position:-80px -192px; +} +.ui-icon-circle-triangle-n { +background-position:-96px -192px; +} +.ui-icon-circle-arrow-e { +background-position:-112px -192px; +} +.ui-icon-circle-arrow-s { +background-position:-128px -192px; +} +.ui-icon-circle-arrow-w { +background-position:-144px -192px; +} +.ui-icon-circle-arrow-n { +background-position:-160px -192px; +} +.ui-icon-circle-zoomin { +background-position:-176px -192px; +} +.ui-icon-circle-zoomout { +background-position:-192px -192px; +} +.ui-icon-circle-check { +background-position:-208px -192px; +} +.ui-icon-circlesmall-plus { +background-position:0 -208px; +} +.ui-icon-circlesmall-minus { +background-position:-16px -208px; +} +.ui-icon-circlesmall-close { +background-position:-32px -208px; +} +.ui-icon-squaresmall-plus { +background-position:-48px -208px; +} +.ui-icon-squaresmall-minus { +background-position:-64px -208px; +} +.ui-icon-squaresmall-close { +background-position:-80px -208px; +} +.ui-icon-grip-dotted-vertical { +background-position:0 -224px; +} +.ui-icon-grip-dotted-horizontal { +background-position:-16px -224px; +} +.ui-icon-grip-solid-vertical { +background-position:-32px -224px; +} +.ui-icon-grip-solid-horizontal { +background-position:-48px -224px; +} +.ui-icon-gripsmall-diagonal-se { +background-position:-64px -224px; +} +.ui-icon-grip-diagonal-se { +background-position:-80px -224px; +} +.ui-corner-tl { +-moz-border-radius-topleft:4px; +} +.ui-corner-tr { +-moz-border-radius-topright:4px; +} +.ui-corner-bl { +-moz-border-radius-bottomleft:4px; +} +.ui-corner-br { +-moz-border-radius-bottomright:4px; +} +.ui-corner-top { +-moz-border-radius-topleft:4px; +-moz-border-radius-topright:4px; +} +.ui-corner-bottom { +-moz-border-radius-bottomleft:4px; +-moz-border-radius-bottomright:4px; +} +.ui-corner-right { +-moz-border-radius-bottomright:4px; +-moz-border-radius-topright:4px; +} +.ui-corner-left { +-moz-border-radius-bottomleft:4px; +-moz-border-radius-topleft:4px; +} +.ui-corner-all { +-moz-border-radius-bottomleft:4px; +-moz-border-radius-bottomright:4px; +-moz-border-radius-topleft:4px; +-moz-border-radius-topright:4px; +} +.ui-widget-overlay { +background:#666666 url(666666.png) repeat scroll 50% 50%; +opacity:0.5; +} +.ui-widget-shadow { +-moz-border-radius-bottomleft:5px; +-moz-border-radius-bottomright:5px; +-moz-border-radius-topleft:5px; +-moz-border-radius-topright:5px; +background:#000000 url(000000.png) repeat-x scroll 50% 50%; +margin:-5px 0 0 -5px; +opacity:0.2; +padding:5px; +} + +.ui-datepicker { +padding:0.2em 0.2em 0; +width:17em; +z-index:99; +} +.ui-datepicker-header { +padding:0.2em 0; +position:relative; +} +.ui-datepicker-prev, .ui-datepicker-next { +height:1.8em; +position:absolute; +top:2px; +width:1.8em; +} +.ui-datepicker-prev:hover, .ui-datepicker-next:hover { +top:1px; +} +.ui-datepicker-prev { +left:2px; +} +.ui-datepicker-next { +right:2px; +} +.ui-datepicker-prev:hover { +left:1px; +} +.ui-datepicker-next:hover { +right:1px; +} +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { +display:block; +left:50%; +margin-left:-8px; +margin-top:-8px; +position:absolute; +top:50%; +} +.ui-datepicker-title { +line-height:1.8em; +margin:0 2.3em; +text-align:center; +} +.ui-datepicker-title select { +float:left; +font-size:1em; +margin:1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { +width:100%; +} +.ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { +width:49%; +} +.ui-datepicker-title select.ui-datepicker-year { +float:right; +} +.ui-datepicker table { +border-collapse:collapse; +font-size:0.9em; +margin:0 0 0.4em; +width:100%; +} +.ui-datepicker th { +font-weight:bold; +padding:0.7em 0.3em; +text-align:center; +} +.ui-datepicker td span, .ui-datepicker td a { +display:block; +padding:0.2em; +text-align:right; +text-decoration:none; +} +.ui-datepicker-buttonpane { +background-image:none; +border-bottom:0 none; +border-left:0 none; +border-right:0 none; +margin:0.7em 0 0; +padding:0 0.2em; +} +.ui-datepicker-buttonpane button { +cursor:pointer; +float:right; +margin:0.5em 0.2em 0.4em; +overflow:visible; +padding:0.2em 0.6em 0.3em; +width:auto; +} +.ui-datepicker-buttonpane button.ui-datepicker-current { +float:left; +} +.ui-datepicker.ui-datepicker-multi { +width:auto; +} +.ui-datepicker-multi .ui-datepicker-group { +float:left; +} +.ui-datepicker-multi .ui-datepicker-group table { +margin:0 auto 0.4em; +width:95%; +} +.ui-datepicker-multi-2 .ui-datepicker-group { +width:50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { +width:33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { +width:25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { +border-left-width:0; +} +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { +border-left-width:0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { +clear:left; +} +.ui-datepicker-rtl { +direction:rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { +left:auto; +right:2px; +} +.ui-datepicker-rtl .ui-datepicker-next { +left:2px; +right:auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { +left:auto; +right:1px; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { +left:1px; +right:auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { +clear:right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { +float:left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { +float:right; +} +.ui-datepicker-rtl .ui-datepicker-group { +float:right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { +border-left-width:1px; +border-right-width:0; +} +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { +border-left-width:1px; +border-right-width:0; +} +.ui-datepicker-cover { +display:block; +height:200px; +left:-4px; +position:absolute; +top:-4px; +width:200px; +z-index:-1; +} +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative;zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .2em ; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: 5px; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { border-top: 0; margin-top: -2px; position: relative;overflow: auto; display: none; } +.ui-accordion .ui-accordion-content-active { display: block; } diff --git a/js/jquery/datepicker/eeeeee.png b/js/jquery/datepicker/eeeeee.png new file mode 100644 index 0000000000000000000000000000000000000000..98f298b90503d4b1eebad416af56c3c6f4c911b1 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsR^Dgjv*P1Z*OcAY%t(qaZGrz zKQ4V43%mG&gzZhU!!F_*kar~9f;xh6t zj!b3M<_;5EqZ1LiVN-&s-Gxpd7r$n>>@SA<1xic%w4dz&x{blp)z4*}Q$iB}p;<-K literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/f6a828.png b/js/jquery/datepicker/f6a828.png new file mode 100644 index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815 GIT binary patch literal 3762 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 literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/f6f6f6.png b/js/jquery/datepicker/f6f6f6.png new file mode 100644 index 0000000000000000000000000000000000000000..98a8244875a37f1e59c4d7745db5b210c92de87c GIT binary patch literal 895 zcmV-_1AzRAP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_001{hL_t&t z9b~1|VSi|NlRB0=Fy!PzMl0wf+0|56WTyNdS$*Fb}K*w|O8JV3UQ50RW0Q VRGDKMj5q)Q002ovPDHLkV1iKFp{W1> literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/fdf5ce.png b/js/jquery/datepicker/fdf5ce.png new file mode 100644 index 0000000000000000000000000000000000000000..744f92551d0ae396487adcafde8f048c66fd5508 GIT binary patch literal 235 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 S_4GetOI=MPjRrM`*Z&J(?eCEQ literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/iconsffd27a.png b/js/jquery/datepicker/iconsffd27a.png new file mode 100644 index 0000000000000000000000000000000000000000..d630afa4de0ba01b6b3386bd75ad044b1b4c9976 GIT binary patch literal 10662 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 Gz5hR`-3^KW literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/iconsffffff.png b/js/jquery/datepicker/iconsffffff.png new file mode 100644 index 0000000000000000000000000000000000000000..49a1ef08d5d440617c1fb755c4d9e5744718ba70 GIT binary patch literal 10356 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 literal 0 HcmV?d00001 diff --git a/js/jquery/datepicker/index.php b/js/jquery/datepicker/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/js/jquery/datepicker/index.php @@ -0,0 +1,11 @@ +35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(l(B){f H=B.4f.3q,D=B.1G.9t&&(9a(B.1G.3I)<1.9);B.r={3I:"1.6f",9E:{4H:l(K,J,N){f M=B.r[K].3R;1E(f L 7l N){M.59[L]=M.59[L]||[];M.59[L].9B([J,N[L]])}},4s:l(J,L,K){f N=J.59[L];h(!N){p}1E(f M=0;M\').2N(J).1o({1K:"3H",2p:"-8I",1Z:"-8I",6t:"97"}).9w("2g");B.r.54[J]=!!((!(/6h|2G/).1P(K.1o("6M"))||(/^[1-9]/).1P(K.1o("31"))||(/^[1-9]/).1P(K.1o("25"))||!(/6Q/).1P(K.1o("9x"))||!(/9P|9M\\(0, 0, 0, 0\\)/).1P(K.1o("9f"))));5c{B("2g").6l(0).9g(K.6l(0))}5g(L){}p B.r.54[J]},9h:l(L,J){h(B(L).1o("3W")=="3v"){p S}f M=(J&&J=="1Z")?"3U":"3T",K=S;h(L[M]>0){p 1m}L[M]=1;K=(L[M]>0);L[M]=0;p K},6j:l(J,L,K){p(J>L)&&(J<(L+K))},9c:l(O,J,N,M,L,K){p B.r.6j(O,N,L)&&B.r.6j(J,M,K)},5J:{9o:8,9p:20,9j:9d,9y:17,au:46,as:40,av:35,aw:13,ax:27,ar:36,aq:45,am:37,al:9S,ao:ap,ay:aH,aI:aJ,aK:aG,aB:aA,aC:34,aD:33,aj:a2,9Y:39,9U:16,9W:32,9X:9,a5:38}};h(D){f E=B.2M,C=B.4f.6m,I="af://ac.a7.ab/an/aa/6i",F=/^6n-/,G=/^7F:/;B.2M=l(K,J,L){f M=L!==4d;p(J=="a9"?(M?E.4s(b,K,J,"7F:"+L):(E.21(b,3K)||"").4X(G,"")):(F.1P(J)?(M?K.a8(I,J.4X(F,"6i:"),L):E.4s(b,K,J.4X(F,"6i:"))):E.21(b,3K)))};B.4f.6m=l(J){p(F.1P(J)?b.3e(l(){b.ad(I,J.4X(F,""))}):C.4s(b,J))}}B.4f.3h({3q:l(){B("*",b).4H(b).3e(l(){B(b).80("3q")});p H.21(b,3K)},ai:l(){p b.2M("2I","ah").1o("7A","").3l("7G.r")},ae:l(){p b.2M("2I","81").1o("7A","6Q").23("7G.r",l(){p S})},a6:l(){f J;h((B.1G.44&&(/(93|7P)/).1P(b.1o("1K")))||(/3H/).1P(b.1o("1K"))){J=b.3z().68(l(){p(/(7P|3H|5M)/).1P(B.42(b,"1K",1))&&(/(6h|7N)/).1P(B.42(b,"3W",1)+B.42(b,"3W-y",1)+B.42(b,"3W-x",1))}).7w(0)}1d{J=b.3z().68(l(){p(/(6h|7N)/).1P(B.42(b,"3W",1)+B.42(b,"3W-y",1)+B.42(b,"3W-x",1))}).7w(0)}p(/5M/).1P(b.1o("1K"))||!J.1r?B(1l):J}});B.3h(B.9V[":"],{2t:l(K,L,J){p!!B.2t(K,J[3])},9T:l(K,L,J){f N=K.1q.4g();l M(O){p!(B(O).7J(":3v")||B(O).3z(":3v").1r)}p(K.9Z>=0&&(("a"==N&&K.7Y)||(/u|3u|a4|1X/.1P(N)&&"3v"!=K.2W&&!K.1u))&&M(K))}});l A(N,J,O,M){l L(Q){f P=B[N][J][Q]||[];p(1L P=="2O"?P.5j(/,?\\s+/):P)}f K=L("a3");h(M.1r==1&&1L M[0]=="2O"){K=K.6v(L("7I"))}p(B.a0(O,K)!=-1)}B.2C=l(J,K){f L=J.5j(".")[0];J=J.5j(".")[1];B.4f[J]=l(P){f N=(1L P=="2O"),O=6P.3R.8U.4s(3K,1);h(N&&P.a1(0,1)=="6u"){p b}h(N&&A(L,J,P,O)){f M=B.2t(b[0],J);p(M?M[P].21(M,O):4d)}p b.3e(l(){f Q=B.2t(b,J);(!Q&&!N&&B.2t(b,J,Z B[L][J](b,P)));(Q&&N&&B.ak(Q[P])&&Q[P].21(Q,O))})};B[L]=B[L]||{};B[L][J]=l(N,O){f M=b;b.6o=L;b.2R=J;b.6g=B[L][J].aE||J;b.6p=L+"-"+J;b.1D=B.3h({},B.2C.5z,B[L][J].5z,B.7v&&B.7v.6l(N)[J],O);b.2A=B(N).23("6H."+J,l(Q,P,R){h(Q.q==N){p M.4S(P,R)}}).23("6G."+J,l(Q,P){h(Q.q==N){p M.6q(P)}}).23("3q",l(){p M.8l()});b.8w()};B[L][J].3R=B.3h({},B.2C.3R,K);B[L][J].7I="4x"};B.2C.3R={8w:l(){},8l:l(){b.2A.7p(b.2R).2Y(b.6p+"-1u "+b.6o+"-1U-1u").6m("6n-1u")},4x:l(L,M){f K=L,J=b;h(1L L=="2O"){h(M===4d){p b.6q(L)}K={};K[L]=M}B.3e(K,l(N,O){J.4S(N,O)})},6q:l(J){p b.1D[J]},4S:l(J,K){b.1D[J]=K;h(J=="1u"){b.2A[K?"2N":"2Y"](b.6p+"-1u "+b.6o+"-1U-1u").2M("6n-1u",K)}},aL:l(){b.4S("1u",S)},9s:l(){b.4S("1u",1m)},9n:l(K,L,M){f J=(K==b.6g?K:b.6g+K);L=L||B.v.9l({2W:J,q:b.2A[0]});p b.2A.80(J,[L,M],b.1D[K])}};B.2C.5z={1u:S};B.r.8b={9q:l(){f J=b;b.2A.23("8P."+b.2R,l(K){p J.7T(K)}).23("8m."+b.2R,l(K){h(J.65){J.65=S;p S}});h(B.1G.44){b.7X=b.2A.2M("2I");b.2A.2M("2I","81")}b.9e=S},9i:l(){b.2A.3l("."+b.2R);(B.1G.44&&b.2A.2M("2I",b.7X))},7T:l(L){(b.2Q&&b.56(L));b.5w=L;f J=b,M=(L.9R==1),K=(1L b.1D.6c=="2O"?B(L.q).3z().4H(L.q).68(b.1D.6c).1r:S);h(!M||K||!b.8a(L)){p 1m}b.5W=!b.1D.6b;h(!b.5W){b.9I=9u(l(){J.5W=1m},b.1D.6b)}h(b.69(L)&&b.6a(L)){b.2Q=(b.6e(L)!==S);h(!b.2Q){L.5p();p 1m}}b.67=l(N){p J.7U(N)};b.66=l(N){p J.56(N)};B(1l).23("7V."+b.2R,b.67).23("7W."+b.2R,b.66);h(!B.1G.5Z){L.5p()}p 1m},7U:l(J){h(B.1G.44&&!J.1X){p b.56(J)}h(b.2Q){b.6d(J);p J.5p()}h(b.69(J)&&b.6a(J)){b.2Q=(b.6e(b.5w,J)!==S);(b.2Q?b.6d(J):b.56(J))}p!b.2Q},56:l(J){B(1l).3l("7V."+b.2R,b.67).3l("7W."+b.2R,b.66);h(b.2Q){b.2Q=S;b.65=1m;b.89(J)}p S},69:l(J){p(26.3g(26.82(b.5w.6J-J.6J),26.82(b.5w.6K-J.6K))>=b.1D.87)},6a:l(J){p b.5W},6e:l(J){},6d:l(J){},89:l(J){},8a:l(J){p 1m}};B.r.8b.5z={6c:z,87:1,6b:0}})(2w);(l($){$.3h($.r,{k:{3I:"1.6f"}});f 3x="k";l 4F(){b.7Z=S;b.3V=z;b.5i=S;b.2S=[];b.3A=S;b.3n=S;b.63="r-k-1J";b.5S="r-k-1I";b.6O="r-k-4p";b.3c="r-k-4c";b.5Y="r-k-9H";b.9C="r-k-1u";b.7o="r-k-2I";b.7m="r-k-7R-1e";b.5q="r-k-9z-9F-9G";b.6r=[];b.6r[""]={9N:"9O",8x:"9L",2H:"9J",9b:"UU",2K:"9k",9m:"VV",3F:"9r",1N:["ag","aY","co","cx","84","ct","cn","cb","bR","bL","bX","c6"],1Q:["c7","ca","c2","c1","84","c0","bY","bZ","c3","c4","c8","bO"],2a:["bN","bM","bK","bQ","bV","bT","bS"],2l:["cs","cr","cp","cq","cu","aM","cw"],5D:["cg","cf","ce","cc","cd","ch","ci"],3E:"5I/4h/3P",1O:0,1t:S};b.24={3G:"3t",2s:"6y",5X:{},2o:z,4Y:"",3s:"...",4e:"",8s:S,4J:S,4m:S,7f:S,3Y:S,41:S,4Z:S,8M:"-10:+10",4q:S,7e:b.5G,2k:"+10",1g:z,1n:z,1C:"cm",4V:z,4O:z,3o:z,88:z,4L:z,8o:1,5N:0,2B:1,3O:12,55:"",58:"",7x:1m,5P:S};$.3h(b.24,b.6r[""]);b.1f=$(\'<1J 1b="\'+b.63+\'" 1j="r-k r-2C r-2C-76 r-5r-6Z r-2E-2v r-5r-3v-cl">\')}$.3h(4F.3R,{2x:"ck",7a:l(){h(b.7Z){cj.7a.21("",3K)}},bI:l(V){4k(b.24,V||{});p b},7z:l(q,V){f 4C=z;1E(f 5C 7l b.24){f 5E=q.b6("n:"+5C);h(5E){4C=4C||{};5c{4C[5C]=b7(5E)}5g(7L){4C[5C]=5E}}}f 1q=q.1q.4g();f 1I=(1q=="1J"||1q=="1x");h(!q.1b){q.1b="8h"+(++b.6s)}f c=b.6F($(q),1I);c.V=$.3h({},V||{},4C||{});h(1q=="u"){b.8q(q,c)}1d{h(1I){b.8g(q,c)}}},6F:l(q,1I){f 1b=q[0].1b.4X(/([:\\[\\]\\.])/g,"\\\\\\\\$1");p{1b:1b,u:q,2d:0,1M:0,1T:0,1a:0,1c:0,1I:1I,1f:(!1I?b.1f:$(\'<1J 1j="\'+b.5S+\' r-k r-2C r-2C-76 r-5r-6Z r-2E-2v">\'))}},8q:l(q,c){f u=$(q);h(u.3j(b.2x)){p}f 4Y=b.t(c,"4Y");f 1t=b.t(c,"1t");h(4Y){u[1t?"8t":"8n"](\'<1x 1j="\'+b.6O+\'">\'+4Y+"")}f 3G=b.t(c,"3G");h(3G=="3t"||3G=="8r"){u.3t(b.4l)}h(3G=="1X"||3G=="8r"){f 3s=b.t(c,"3s");f 4e=b.t(c,"4e");f 4c=$(b.t(c,"8s")?$("<5Q/>").2N(b.3c).2M({79:4e,8v:3s,2T:3s}):$(\'<1X 2W="1X">\').2N(b.3c).1Y(4e==""?3s:$("<5Q/>").2M({79:4e,8v:3s,2T:3s})));u[1t?"8t":"8n"](4c);4c.8m(l(){h($.k.3A&&$.k.4i==q){$.k.2P()}1d{$.k.4l(q)}p S})}u.2N(b.2x).6N(b.5U).7t(b.64).23("6H.k",l(v,3r,18){c.V[3r]=18}).23("6G.k",l(v,3r){p b.t(c,3r)});$.2t(q,3x,c)},8g:l(q,c){f 6I=$(q);h(6I.3j(b.2x)){p}6I.2N(b.2x).4p(c.1f).23("6H.k",l(v,3r,18){c.V[3r]=18}).23("6G.k",l(v,3r){p b.t(c,3r)});$.2t(q,3x,c);b.6R(c,b.5F(c));b.2V(c);b.5o(c)},b2:l(u,8k,3o,V,30){f c=b.8i;h(!c){f 1b="8h"+(++b.6s);b.2J=$(\'\');b.2J.6N(b.5U);$("2g").4p(b.2J);c=b.8i=b.6F(b.2J,S);c.V={};$.2t(b.2J[0],3x,c)}4k(c.V,V||{});b.2J.3N(8k);b.2j=(30?(30.1r?30:[30.6J,30.6K]):z);h(!b.2j){f 5l=5f.8z||1l.2c.5d||1l.2g.5d;f 5m=5f.8A||1l.2c.5h||1l.2g.5h;f 3M=1l.2c.3U||1l.2g.3U;f 3Q=1l.2c.3T||1l.2g.3T;b.2j=[(5l/2)-3y+3M,(5m/2)-bc+3Q]}b.2J.1o("1Z",b.2j[0]+"57").1o("2p",b.2j[1]+"57");c.V.3o=3o;b.3n=1m;b.1f.2N(b.5Y);b.4l(b.2J[0]);h($.51){$.51(b.1f)}$.2t(b.2J[0],3x,c);p b},bb:l(q){f $q=$(q);h(!$q.3j(b.2x)){p}f 1q=q.1q.4g();$.7p(q,3x);h(1q=="u"){$q.4n("."+b.6O).3q().3a().4n("."+b.3c).3q().3a().2Y(b.2x).3l("3t",b.4l).3l("6N",b.5U).3l("7t",b.64)}1d{h(1q=="1J"||1q=="1x"){$q.2Y(b.2x).92()}}},b0:l(q){f $q=$(q);h(!$q.3j(b.2x)){p}f 1q=q.1q.4g();h(1q=="u"){q.1u=S;$q.4n("1X."+b.3c).3e(l(){b.1u=S}).3a().4n("5Q."+b.3c).1o({7u:"1.0",6M:""})}1d{h(1q=="1J"||1q=="1x"){f 1I=$q.5T("."+b.5S);1I.5T().2Y("r-1U-1u")}}b.2S=$.7q(b.2S,l(18){p(18==q?z:18)})},aR:l(q){f $q=$(q);h(!$q.3j(b.2x)){p}f 1q=q.1q.4g();h(1q=="u"){q.1u=1m;$q.4n("1X."+b.3c).3e(l(){b.1u=1m}).3a().4n("5Q."+b.3c).1o({7u:"0.5",6M:"2G"})}1d{h(1q=="1J"||1q=="1x"){f 1I=$q.5T("."+b.5S);1I.5T().2N("r-1U-1u")}}b.2S=$.7q(b.2S,l(18){p(18==q?z:18)});b.2S[b.2S.1r]=q},4Q:l(q){h(!q){p S}1E(f i=0;i-1)}},4l:l(u){u=u.q||u;h(u.1q.4g()!="u"){u=$("u",u.7D)[0]}h($.k.4Q(u)||$.k.4i==u){p}f c=$.k.1S(u);f 4O=$.k.t(c,"4O");4k(c.V,(4O?4O.21(u,[u,c]):{}));$.k.2P(z,"");$.k.4i=u;$.k.7c(c);h($.k.3n){u.18=""}h(!$.k.2j){$.k.2j=$.k.6z(u);$.k.2j[1]+=u.bu}f 1V=S;$(u).3z().3e(l(){1V|=$(b).1o("1K")=="5M";p!1V});h(1V&&$.1G.6A){$.k.2j[0]-=1l.2c.3U;$.k.2j[1]-=1l.2c.3T}f 1h={1Z:$.k.2j[0],2p:$.k.2j[1]};$.k.2j=z;c.2D=z;c.1f.1o({1K:"3H",6t:"97",2p:"-bm"});$.k.2V(c);1h=$.k.8D(c,1h,1V);c.1f.1o({1K:($.k.3n&&$.51?"93":(1V?"5M":"3H")),6t:"6Q",1Z:1h.1Z+"57",2p:1h.2p+"57"});h(!c.1I){f 2s=$.k.t(c,"2s")||"6y";f 1C=$.k.t(c,"1C");f 3J=l(){$.k.3A=1m;h($.1G.44&&22($.1G.3I,10)<7){$("5e.r-k-7n").1o({25:c.1f.25()+4,31:c.1f.31()+4})}};h($.5u&&$.5u[2s]){c.1f.6y(2s,$.k.t(c,"5X"),1C,3J)}1d{c.1f[2s](1C,3J)}h(1C==""){3J()}h(c.u[0].2W!="3v"){c.u[0].3t()}$.k.3V=c}},2V:l(c){f 6C={25:c.1f.25()+4,31:c.1f.31()+4};f 96=b;c.1f.92().4p(b.90(c)).5k("5e.r-k-7n").1o({25:6C.25,31:6C.31}).3a().5k("1X, .r-k-4o, .r-k-4A, .r-k-5y 3p a").23("bj",l(){$(b).2Y("r-1U-6B")}).23("99",l(){h(!96.4Q(c.1I?c.1f.bh()[0]:c.u[0])){$(b).3z(".r-k-5y").5k("a").2Y("r-1U-6B");$(b).2N("r-1U-6B")}}).3a().5k("."+b.5q+" a").4c("99").3a();f 1F=b.5V(c);f 5n=1F[1];f 25=17;h(5n>1){c.1f.2N("r-k-4E-"+5n).1o("25",(25*5n)+"bo")}1d{c.1f.2Y("r-k-4E-2 r-k-4E-3 r-k-4E-4").25("")}c.1f[(1F[0]!=1||1F[1]!=1?"4H":"3q")+"8Y"]("r-k-4E");c.1f[(b.t(c,"1t")?"4H":"3q")+"8Y"]("r-k-8E");h(c.u&&c.u[0].2W!="3v"&&c==$.k.3V){$(c.u[0]).3t()}},8D:l(c,1h,1V){f 30=c.u?b.6z(c.u[0]):z;f 5l=5f.8z||(1l.2c?1l.2c.5d:1l.2g.5d);f 5m=5f.8A||(1l.2c?1l.2c.5h:1l.2g.5h);f 3M=1l.2c.3U||1l.2g.3U;f 3Q=1l.2c.3T||1l.2g.3T;h(b.t(c,"1t")||(1h.1Z+c.1f.25()-3M)>5l){1h.1Z=26.3g((1V?0:3M),30[0]+(c.u?c.u.25():0)-(1V?3M:0)-c.1f.25()-(1V&&$.1G.6A?1l.2c.3U:0))}1d{1h.1Z-=(1V?3M:0)}h((1h.2p+c.1f.31()-3Q)>5m){1h.2p=26.3g((1V?0:3Q),30[1]-(1V?3Q:0)-(b.3n?0:c.1f.31())-(1V&&$.1G.6A?1l.2c.3T:0))}1d{1h.2p-=(1V?3Q:0)}p 1h},6z:l(3C){3k(3C&&(3C.2W=="3v"||3C.bq!=1)){3C=3C.bn}f 1K=$(3C).1h();p[1K.1Z,1K.2p]},2P:l(u,1C){f c=b.3V;h(!c||(u&&c!=$.2t(u,3x))){p}h(c.4j){b.5L("#"+c.1b,b.4D(c,c.1W,c.2r,c.2f))}c.4j=S;h(b.3A){1C=(1C!=z?1C:b.t(c,"1C"));f 2s=b.t(c,"2s");f 3J=l(){$.k.60(c)};h(1C!=""&&$.5u&&$.5u[2s]){c.1f.62(2s,$.k.t(c,"5X"),1C,3J)}1d{c.1f[(1C==""?"62":(2s=="bl"?"bv":(2s=="bE"?"bF":"62")))](1C,3J)}h(1C==""){b.60(c)}f 4L=b.t(c,"4L");h(4L){4L.21((c.u?c.u[0]:z),[(c.u?c.u.3N():""),c])}b.3A=S;b.4i=z;h(b.3n){b.2J.1o({1K:"3H",1Z:"0",2p:"-8Q"});h($.51){$.bg();$("2g").4p(b.1f)}}b.3n=S}b.3V=z},60:l(c){c.1f.2Y(b.5Y).3l(".r-k-5y")},8N:l(v){h(!$.k.3V){p}f $q=$(v.q);h(($q.3z("#"+$.k.63).1r==0)&&!$q.3j($.k.2x)&&!$q.3j($.k.3c)&&$.k.3A&&!($.k.3n&&$.51)){$.k.2P(z,"")}},2e:l(1b,1h,2y){f q=$(1b);f c=b.1S(q[0]);h(b.4Q(q[0])){p}b.5R(c,1h,2y);b.2V(c)},72:l(1b){f q=$(1b);f c=b.1S(q[0]);h(b.t(c,"7f")&&c.1W){c.2d=c.1W;c.1a=c.1M=c.2r;c.1c=c.1T=c.2f}1d{f n=Z X();c.2d=n.1p();c.1a=c.1M=n.1v();c.1c=c.1T=n.1i()}b.4I(c);b.2e(q)},6x:l(1b,3u,2y){f q=$(1b);f c=b.1S(q[0]);c.5B=S;c["4G"+(2y=="M"?"8T":"8L")]=c["bJ"+(2y=="M"?"8T":"8L")]=22(3u.1D[3u.b4].18,10);b.4I(c);b.2e(q)},7i:l(1b){f q=$(1b);f c=b.1S(q[0]);h(c.u&&c.5B&&!$.1G.44){c.u[0].3t()}c.5B=!c.5B},7k:l(1b,19,U,3p){f q=$(1b);h($(3p).3j(b.7o)||b.4Q(q[0])){p}f c=b.1S(q[0]);c.2d=c.1W=$("a",3p).1Y();c.1M=c.2r=19;c.1T=c.2f=U;h(c.4j){c.48=c.4U=c.29=z}b.5L(1b,b.4D(c,c.1W,c.2r,c.2f));h(c.4j){c.2D=b.1y(Z X(c.2f,c.2r,c.1W));b.2V(c)}},8K:l(1b){f q=$(1b);f c=b.1S(q[0]);c.4j=S;c.48=c.4U=c.29=c.2D=z;b.5L(q,"")},5L:l(1b,3i){f q=$(1b);f c=b.1S(q[0]);3i=(3i!=z?3i:b.4D(c));h(c.u){c.u.3N(3i)}b.5o(c);f 3o=b.t(c,"3o");h(3o){3o.21((c.u?c.u[0]:z),[3i,c])}1d{h(c.u){c.u.4c("cv")}}h(c.1I){b.2V(c)}1d{h(!c.4j){b.2P(z,b.t(c,"1C"));b.4i=c.u[0];h(1L(c.u[0])!="5x"){c.u[0].3t()}b.4i=z}}},5o:l(c){f 55=b.t(c,"55");h(55){f 58=b.t(c,"58")||b.t(c,"3E");f n=b.7h(c);3i=b.4t(58,n,b.3B(c));$(55).3e(l(){$(b).3N(3i)})}},c9:l(n){f 1e=n.4a();p[(1e>0&&1e<6),""]},5G:l(n){f 2z=Z X(n.1i(),n.1v(),n.1p());f 4v=Z X(2z.1i(),1-1,4);f 1O=4v.4a()||7;4v.4P(4v.1p()+1-1O);h(1O<4&&2z<4v){2z.4P(2z.1p()-3);p $.k.5G(2z)}1d{h(2z>Z X(2z.1i(),12-1,28)){1O=Z X(2z.1i()+1,1-1,4).4a()||7;h(1O>4&&(2z.4a()||7)<1O-3){p 1}}}p 26.c5(((2z-4v)/bW)/7)+1},8V:l(1s,18,V){h(1s==z||18==z){4u"74 3K"}18=(1L 18=="5x"?18.61():18+"");h(18==""){p z}f 2k=(V?V.2k:z)||b.24.2k;f 2l=(V?V.2l:z)||b.24.2l;f 2a=(V?V.2a:z)||b.24.2a;f 1Q=(V?V.1Q:z)||b.24.1Q;f 1N=(V?V.1N:z)||b.24.1N;f U=-1;f 19=-1;f 1e=-1;f 3L=-1;f 2h=S;f 2i=l(1R){f 2b=(1k+1<1s.1r&&1s.1w(1k+1)==1R);h(2b){1k++}p 2b};f 4w=l(1R){2i(1R);f 7d=(1R=="@"?14:(1R=="y"?4:(1R=="o"?3:2)));f 2L=7d;f 2X=0;3k(2L>0&&2n<18.1r&&18.1w(2n)>="0"&&18.1w(2n)<="9"){2X=2X*10+22(18.1w(2n++),10);2L--}h(2L==7d){4u"8F 73 at 1K "+2n}p 2X};f 78=l(1R,5a,5v){f 4M=(2i(1R)?5v:5a);f 2L=0;1E(f j=0;j<4M.1r;j++){2L=26.3g(2L,4M[j].1r)}f 1B="";f 8J=2n;3k(2L>0&&2n<18.1r){1B+=18.1w(2n++);1E(f i=0;i<4M.1r;i++){h(1B==4M[i]){p i+1}}2L--}4u"cz 1B at 1K "+8J};f 5A=l(){h(18.1w(2n)!=1s.1w(1k)){4u"cy 2h at 1K "+2n}2n++};f 2n=0;1E(f 1k=0;1k<1s.1r;1k++){h(2h){h(1s.1w(1k)=="\'"&&!2i("\'")){2h=S}1d{5A()}}1d{49(1s.1w(1k)){T"d":1e=4w("d");15;T"D":78("D",2l,2a);15;T"o":3L=4w("o");15;T"m":19=4w("m");15;T"M":19=78("M",1Q,1N);15;T"y":U=4w("y");15;T"@":f n=Z X(4w("@"));U=n.1i();19=n.1v()+1;1e=n.1p();15;T"\'":h(2i("\'")){5A()}1d{2h=1m}15;2G:5A()}}}h(U==-1){U=Z X().1i()}1d{h(U<3y){U+=Z X().1i()-Z X().1i()%3y+(U<=2k?0:-3y)}}h(3L>-1){19=1;1e=3L;bP{f 6V=b.3S(U,19-1);h(1e<=6V){15}19++;1e-=6V}3k(1m)}f n=b.1y(Z X(U,19-1,1e));h(n.1i()!=U||n.1v()+1!=19||n.1p()!=1e){4u"74 n"}p n},b8:"3P-5I-4h",ba:"D, 4h M 3P",aS:"3P-5I-4h",aU:"D, d M y",aZ:"aX, 4h-M-y",aV:"D, d M y",aW:"D, d M 3P",bf:"D, d M 3P",bz:"D, d M y",bx:"@",bB:"3P-5I-4h",4t:l(1s,n,V){h(!n){p""}f 2l=(V?V.2l:z)||b.24.2l;f 2a=(V?V.2a:z)||b.24.2a;f 1Q=(V?V.1Q:z)||b.24.1Q;f 1N=(V?V.1N:z)||b.24.1N;f 2i=l(1R){f 2b=(1k+1<1s.1r&&1s.1w(1k+1)==1R);h(2b){1k++}p 2b};f 5b=l(1R,18,8O){f 2X=""+18;h(2i(1R)){3k(2X.1r<8O){2X="0"+2X}}p 2X};f 6U=l(1R,18,5a,5v){p(2i(1R)?5v[18]:5a[18])};f 2q="";f 2h=S;h(n){1E(f 1k=0;1k<1s.1r;1k++){h(2h){h(1s.1w(1k)=="\'"&&!2i("\'")){2h=S}1d{2q+=1s.1w(1k)}}1d{49(1s.1w(1k)){T"d":2q+=5b("d",n.1p(),2);15;T"D":2q+=6U("D",n.4a(),2l,2a);15;T"o":f 3L=n.1p();1E(f m=n.1v()-1;m>=0;m--){3L+=b.3S(n.1i(),m)}2q+=5b("o",3L,3);15;T"m":2q+=5b("m",n.1v()+1,2);15;T"M":2q+=6U("M",n.1v(),1Q,1N);15;T"y":2q+=(2i("y")?n.1i():(n.8S()%3y<10?"0":"")+n.8S()%3y);15;T"@":2q+=n.1A();15;T"\'":h(2i("\'")){2q+="\'"}1d{2h=1m}15;2G:2q+=1s.1w(1k)}}}}p 2q},8W:l(1s){f 2Z="";f 2h=S;1E(f 1k=0;1k<1s.1r;1k++){h(2h){h(1s.1w(1k)=="\'"&&!2i("\'")){2h=S}1d{2Z+=1s.1w(1k)}}1d{49(1s.1w(1k)){T"d":T"m":T"y":T"@":2Z+="bi";15;T"D":T"M":p z;T"\'":h(2i("\'")){2Z+="\'"}1d{2h=1m}15;2G:2Z+=1s.1w(1k)}}}p 2Z},t:l(c,1B){p c.V[1B]!==4d?c.V[1B]:b.24[1B]},7c:l(c){f 3E=b.t(c,"3E");f 4W=c.u?c.u.3N():z;c.48=c.4U=c.29=z;f n=2o=b.5F(c);f V=b.3B(c);5c{n=b.8V(3E,4W,V)||2o}5g(v){b.7a(v);n=2o}c.2d=n.1p();c.1a=c.1M=n.1v();c.1c=c.1T=n.1i();c.1W=(4W?n.1p():0);c.2r=(4W?n.1v():0);c.2f=(4W?n.1i():0);b.5R(c)},5F:l(c){f n=b.5s(b.t(c,"2o"),Z X());f 1g=b.3f(c,"3d",1m);f 1n=b.3f(c,"3g");n=(1g&&n<1g?1g:n);n=(1n&&n>1n?1n:n);p n},5s:l(n,2o){f 8y=l(1h){f n=Z X();n.4P(n.1p()+1h);p n};f 8B=l(1h,7b){f n=Z X();f U=n.1i();f 19=n.1v();f 1e=n.1p();f 7j=/([+-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g;f 2b=7j.8C(1h);3k(2b){49(2b[2]||"d"){T"d":T"D":1e+=22(2b[1],10);15;T"w":T"W":1e+=22(2b[1],10)*7;15;T"m":T"M":19+=22(2b[1],10);1e=26.3d(1e,7b(U,19));15;T"y":T"Y":U+=22(2b[1],10);1e=26.3d(1e,7b(U,19));15}2b=7j.8C(1h)}p Z X(U,19,1e)};n=(n==z?2o:(1L n=="2O"?8B(n,b.3S):(1L n=="73"?(7s(n)?2o:8y(n)):n)));n=(n&&n.61()=="74 X"?2o:n);h(n){n.8X(0);n.br(0);n.bs(0);n.bt(0)}p b.1y(n)},1y:l(n){h(!n){p z}n.8X(n.98()>12?n.98()+2:0);p n},6R:l(c,n,47){f 95=!(n);f 91=c.1M;f 8Z=c.1T;n=b.5s(n,Z X());c.2d=c.1W=n.1p();c.1a=c.1M=c.2r=n.1v();c.1c=c.1T=c.2f=n.1i();h(91!=c.1M||8Z!=c.1T){b.4I(c)}b.5R(c);h(c.u){c.u.3N(95?"":b.4D(c))}},7h:l(c){f 94=(!c.2f||(c.u&&c.u.3N()=="")?z:b.1y(Z X(c.2f,c.2r,c.1W)));p 94},90:l(c){f 3b=Z X();3b=b.1y(Z X(3b.1i(),3b.1v(),3b.1p()));f 1t=b.t(c,"1t");f 5P=b.t(c,"5P");f 4J=b.t(c,"4J");f 4m=b.t(c,"4m");f 1F=b.5V(c);f 5N=b.t(c,"5N");f 2B=b.t(c,"2B");f 3O=b.t(c,"3O");f 5O=(1F[0]!=1||1F[1]!=1);f 52=b.1y((!c.1W?Z X(bk,9,9):Z X(c.2f,c.2r,c.1W)));f 1g=b.3f(c,"3d",1m);f 1n=b.3f(c,"3g");f 1a=c.1a-5N;f 1c=c.1c;h(1a<0){1a+=12;1c--}h(1n){f 4N=b.1y(Z X(1n.1i(),1n.1v()-1F[1]+1,1n.1p()));4N=(1g&&4N<1g?1g:4N);3k(b.1y(Z X(1c,1a,1))>4N){1a--;h(1a<0){1a=11;1c--}}}f 2H=b.t(c,"2H");2H=(!4m?2H:b.4t(2H,b.1y(Z X(1c,1a-2B,1)),b.3B(c)));f 4o=(b.70(c,-1,1c,1a)?\'<1x 1j="r-3m r-3m-5K-5H-\'+(1t?"e":"w")+\'">\'+2H+"":(4J?"":\'<1x 1j="r-3m r-3m-5K-5H-\'+(1t?"e":"w")+\'">\'+2H+""));f 2K=b.t(c,"2K");2K=(!4m?2K:b.4t(2K,b.1y(Z X(1c,1a+2B,1)),b.3B(c)));f 4A=(b.70(c,+1,1c,1a)?\'<1x 1j="r-3m r-3m-5K-5H-\'+(1t?"w":"e")+\'">\'+2K+"":(4J?"":\'<1x 1j="r-3m r-3m-5K-5H-\'+(1t?"w":"e")+\'">\'+2K+""));f 3F=b.t(c,"3F");f 71=(b.t(c,"7f")&&c.1W?52:3b);3F=(!4m?3F:b.4t(3F,71,b.3B(c)));f 6S=\'<1X 2W="1X" 1j="r-k-bG r-1U-2G r-7r-bH r-2E-2v" 43="2w.k.2P();">\'+b.t(c,"8x")+"";f 8e=(5P)?\'<1J 1j="r-k-bA r-2C-76">\'+(1t?6S:"")+(b.6Y(c,71)?\'<1X 2W="1X" 1j="r-k-7R r-1U-2G r-7r-4b r-2E-2v" 43="2w.k.72(\\\'#\'+c.1b+"\');\\">"+3F+"":"")+(1t?"":6S)+"":"";f 1O=22(b.t(c,"1O"));1O=(7s(1O)?0:1O);f 2a=b.t(c,"2a");f 2l=b.t(c,"2l");f 5D=b.t(c,"5D");f 1N=b.t(c,"1N");f 1Q=b.t(c,"1Q");f 4V=b.t(c,"4V");f 4q=b.t(c,"4q");f 7e=b.t(c,"7e")||b.5G;f 47=c.48?b.1y(Z X(c.29,c.4U,c.48)):52;f 2o=b.5F(c);f 1Y="";1E(f 4B=0;4B<1F[0];4B++){f 4R="";1E(f 4T=0;4T<1F[1];4T++){f 3Z=b.1y(Z X(1c,1a,c.2d));f 3D=" r-2E-2v";f 2u="";h(5O){2u+=\'<1J 1j="r-k-4R r-k-4R-\';49(4T){T 0:2u+="b1";3D=" r-2E-"+(1t?"6W":"1Z");15;T 1F[1]-1:2u+="bd";3D=" r-2E-"+(1t?"1Z":"6W");15;2G:2u+="be";3D="";15}2u+=\'">\'}2u+=\'<1J 1j="r-k-8f r-2C-8f r-5r-6Z\'+3D+\'">\'+(/2v|1Z/.1P(3D)&&4B==0?(1t?4A:4o):"")+(/2v|6W/.1P(3D)&&4B==0?(1t?4o:4A):"")+b.7M(c,1a,1c,1g,1n,3Z,4B>0||4T>0,1N,1Q)+\'<8c 1j="r-k-5y"><50><5t>\';f 50="";1E(f 2U=0;2U<7;2U++){f 1e=(2U+1O)%7;50+="<8p"+((2U+1O+6)%7>=5?\' 1j="r-k-83-3a"\':"")+\'><1x 2T="\'+2a[1e]+\'">\'+5D[1e]+""}2u+=50+"<53>";f 75=b.3S(1c,1a);h(1c==c.1T&&1a==c.1M){c.2d=26.3d(c.2d,75)}f 77=(b.8j(1c,1a)-1O+7)%7;f 8d=(5O?6:26.b5((77+75)/7));f 1z=b.1y(Z X(1c,1a,1-77));1E(f 6T=0;6T<8d;6T++){2u+="<5t>";f 53="";1E(f 2U=0;2U<7;2U++){f 4K=(4V?4V.21((c.u?c.u[0]:z),[1z]):[1m,""]);f 4z=(1z.1v()!=1a);f 2I=4z||!4K[0]||(1g&&1z<1g)||(1n&&1z>1n);53+=\'<3p 1j="\'+((2U+1O+6)%7>=5?" r-k-83-3a":"")+(4z?" r-k-9v-19":"")+((1z.1A()==3Z.1A()&&1a==c.1M&&c.5i)||(2o.1A()==1z.1A()&&2o.1A()==3Z.1A())?" "+b.5q:"")+(2I?" "+b.7o+" r-1U-1u":"")+(4z&&!4q?"":" "+4K[1]+(1z.1A()>=52.1A()&&1z.1A()<=47.1A()?" "+b.7m:"")+(1z.1A()==3b.1A()?" r-k-3b":""))+\'"\'+((!4z||4q)&&4K[2]?\' 2T="\'+4K[2]+\'"\':"")+(2I?"":" 43=\\"2w.k.7k(\'#"+c.1b+"\',"+1a+","+1c+\', b);p S;"\')+">"+(4z?(4q?1z.1p():"X;"):(2I?1z.1p():\'=52.1A()&&1z.1A()<=47.1A()?" r-1U-9K":"")+\'" 7Y="#">\'+1z.1p()+""))+"";1z.4P(1z.1p()+1);1z=b.1y(1z)}2u+=53+""}1a++;h(1a>11){1a=0;1c++}2u+=""+(5O?"":"");4R+=2u}1Y+=4R}1Y+=(!c.1I?8e:"")+($.1G.44&&22($.1G.3I,10)<7&&!c.1I?\'<5e 79="az:S;" 1j="r-k-7n" aF="0">\':"");c.5i=S;p 1Y},7M:l(c,1a,1c,1g,1n,3Z,4b,1N,1Q){1g=(c.2D&&1g&&3Z<1g?3Z:1g);f 3Y=b.t(c,"3Y");f 41=b.t(c,"41");f 4Z=b.t(c,"4Z");f 1Y=\'<1J 1j="r-k-2T">\';f 3X="";h(4b||!3Y){3X+=\'<1x 1j="r-k-19">\'+1N[1a]+" "}1d{f 7Q=(1g&&1g.1i()==1c);f 7B=(1n&&1n.1i()==1c);3X+=\'<3u 1j="r-k-19" 8G="2w.k.6x(\\\'#\'+c.1b+"\', b, \'M\');\\" 43=\\"2w.k.7i(\'#"+c.1b+"\');\\">";1E(f 19=0;19<12;19++){h((!7Q||19>=1g.1v())&&(!7B||19<=1n.1v())){3X+=\'<4x 18="\'+19+\'"\'+(19==1a?\' 4G="4G"\':"")+">"+1Q[19]+""}}3X+=""}h(!4Z){1Y+=3X+((4b||3Y||41)&&(!(3Y&&41))?"X;":"")}h(4b||!41){1Y+=\'<1x 1j="r-k-U">\'+1c+""}1d{f 3w=b.t(c,"8M").5j(":");f U=0;f 29=0;h(3w.1r!=2){U=1c-10;29=1c+10}1d{h(3w[0].1w(0)=="+"||3w[0].1w(0)=="-"){U=29=Z X().1i();U+=22(3w[0],10);29+=22(3w[1],10)}1d{U=22(3w[0],10);29=22(3w[1],10)}}U=(1g?26.3g(U,1g.1i()):U);29=(1n?26.3d(29,1n.1i()):29);1Y+=\'<3u 1j="r-k-U" 8G="2w.k.6x(\\\'#\'+c.1b+"\', b, \'Y\');\\" 43=\\"2w.k.7i(\'#"+c.1b+"\');\\">";1E(;U<=29;U++){1Y+=\'<4x 18="\'+U+\'"\'+(U==1c?\' 4G="4G"\':"")+">"+U+""}1Y+=""}h(4Z){1Y+=(4b||3Y||41?"X;":"")+3X}1Y+="";p 1Y},5R:l(c,1h,2y){f U=c.1c+(2y=="Y"?1h:0);f 19=c.1a+(2y=="M"?1h:0);f 1e=26.3d(c.2d,b.3S(U,19))+(2y=="D"?1h:0);f n=b.1y(Z X(U,19,1e));f 1g=b.3f(c,"3d",1m);f 1n=b.3f(c,"3g");n=(1g&&n<1g?1g:n);n=(1n&&n>1n?1n:n);c.2d=n.1p();c.1a=c.1M=n.1v();c.1c=c.1T=n.1i();h(2y=="M"||2y=="Y"){b.4I(c)}},4I:l(c){f 7g=b.t(c,"88");h(7g){7g.21((c.u?c.u[0]:z),[c.1T,c.1M+1,c])}},5V:l(c){f 1F=b.t(c,"8o");p(1F==z?[1,1]:(1L 1F=="73"?[1,1F]:1F))},3f:l(c,8u,7S){f n=b.5s(b.t(c,8u+"X"),z);p(!7S||!c.2D?n:(!n||c.2D>n?c.2D:n))},3S:l(U,19){p 32-Z X(U,19,32).1p()},8j:l(U,19){p Z X(U,19,1).4a()},70:l(c,1h,7y,7E){f 1F=b.5V(c);f n=b.1y(Z X(7y,7E+(1h<0?1h:1F[1]),1));h(1h<0){n.4P(b.3S(n.1i(),n.1v()))}p b.6Y(c,n)},6Y:l(c,n){f 4r=(!c.2D?z:b.1y(Z X(c.1T,c.1M,c.2d)));4r=(4r&&c.2D<4r?c.2D:4r);f 1g=4r||b.3f(c,"3d");f 1n=b.3f(c,"3g");p((!1g||n>=1g)&&(!1n||n<=1n))},3B:l(c){f 2k=b.t(c,"2k");2k=(1L 2k!="2O"?2k:Z X().1i()%3y+22(2k,10));p{2k:2k,2l:b.t(c,"2l"),2a:b.t(c,"2a"),1Q:b.t(c,"1Q"),1N:b.t(c,"1N")}},4D:l(c,1e,19,U){h(!1e){c.1W=c.2d;c.2r=c.1M;c.2f=c.1T}f n=(1e?(1L 1e=="5x"?1e:b.1y(Z X(U,19,1e))):b.1y(Z X(c.2f,c.2r,c.1W)));p b.4t(b.t(c,"3E"),n,b.3B(c))}});l 4k(q,4y){$.3h(q,4y);1E(f 1B 7l 4y){h(4y[1B]==z||4y[1B]==4d){q[1B]=4y[1B]}}p q}l bU(a){p(a&&(($.1G.5Z&&1L a=="5x"&&a.1r)||(a.8R&&a.8R.61().1R(/\\6P\\(\\)/))))}$.4f.k=l(1D){h(!$.k.6L){$(1l.2g).4p($.k.1f).8P($.k.8N);$.k.6L=1m}f 6D=6P.3R.8U.4s(3K,1);h(1L 1D=="2O"&&(1D=="bp"||1D=="1p")){p $.k["6u"+1D+"4F"].21($.k,[b[0]].6v(6D))}p b.3e(l(){1L 1D=="2O"?$.k["6u"+1D+"4F"].21($.k,[b].6v(6D)):$.k.7z(b,1D)})};$.k=Z 4F();$.k.6L=S;$.k.6s=Z X().1A();$.k.3I="1.6f"})(2w);',62,780,'|||||||||||this|inst|||var||if|||datepicker|function||date||return|target|ui||_get|input|event||||null|||||||||||||||||||false|case|year|settings||Date||new||||||break|||value|month|drawMonth|id|drawYear|else|day|dpDiv|minDate|offset|getFullYear|class|iFormat|document|true|maxDate|css|getDate|nodeName|length|format|isRTL|disabled|getMonth|charAt|span|_daylightSavingAdjust|printDate|getTime|name|duration|options|for|numMonths|browser|ctrlKey|inline|div|position|typeof|selectedMonth|monthNames|firstDay|test|monthNamesShort|match|_getInst|selectedYear|state|isFixed|currentDay|button|html|left||apply|parseInt|bind|_defaults|width|Math|||endYear|dayNames|matches|documentElement|selectedDay|_adjustDate|currentYear|body|literal|lookAhead|_pos|shortYearCutoff|dayNamesShort|metaKey|iValue|defaultDate|top|output|currentMonth|showAnim|data|calender|all|jQuery|markerClassName|period|checkDate|element|stepMonths|widget|rangeStart|corner|handled|default|prevText|unselectable|_dialogInput|nextText|size|attr|addClass|string|_hideDatepicker|_mouseStarted|widgetName|_disabledInputs|title|dow|_updateDatepicker|type|num|removeClass|chars|pos|height|||||||||end|today|_triggerClass|min|each|_getMinMaxDate|max|extend|dateStr|hasClass|while|unbind|icon|_inDialog|onSelect|td|remove|key|buttonText|focus|select|hidden|years|PROP_NAME|100|parents|_datepickerShowing|_getFormatConfig|obj|cornerClass|dateFormat|currentText|showOn|absolute|version|postProcess|arguments|doy|scrollX|val|stepBigMonths|yy|scrollY|prototype|_getDaysInMonth|scrollTop|scrollLeft|_curInst|overflow|monthHtml|changeMonth|selectedDate||changeYear|curCSS|onclick|msie|||endDate|endDay|switch|getDay|secondary|trigger|undefined|buttonImage|fn|toLowerCase|dd|_lastInput|stayOpen|extendRemove|_showDatepicker|navigationAsDateFormat|siblings|prev|append|showOtherMonths|newMinDate|call|formatDate|throw|firstMon|getNumber|option|props|otherMonth|next|row|inlineSettings|_formatDate|multi|Datepicker|selected|add|_notifyChange|hideIfNoPrevNext|daySettings|onClose|names|maxDraw|beforeShow|setDate|_isDisabledDatepicker|group|_setData|col|endMonth|beforeShowDay|dates|replace|appendText|showMonthAfterYear|thead|blockUI|currentDate|tbody|cssCache|altField|_mouseUp|px|altFormat|plugins|shortNames|formatNumber|try|clientWidth|iframe|window|catch|clientHeight|_keyEvent|split|find|browserWidth|browserHeight|cols|_updateAlternate|preventDefault|_dayOverClass|helper|_determineDate|tr|effects|longNames|_mouseDownEvent|object|calendar|defaults|checkLiteral|_selectingMonthYear|attrName|dayNamesMin|attrValue|_getDefaultDate|iso8601Week|triangle|mm|keyCode|circle|_selectDate|fixed|showCurrentAtPos|isMultiMonth|showButtonPanel|img|_adjustInstDate|_inlineClass|children|_doKeyDown|_getNumberOfMonths|mouseDelayMet|showOptions|_dialogClass|safari|_tidyDialog|toString|hide|_mainDivId|_doKeyPress|_preventClickEvent|_mouseUpDelegate|_mouseMoveDelegate|filter|_mouseDistanceMet|_mouseDelayMet|delay|cancel|_mouseDrag|_mouseStart|6rc4|widgetEventPrefix|auto|aaa|isOverAxis|contains|get|removeAttr|aria|namespace|widgetBaseClass|_getData|regional|uuid|display|_|concat|chr|_selectMonthYear|show|_findPos|opera|hover|dims|otherArgs|sel|_newInst|getData|setData|divSpan|pageX|pageY|initialized|cursor|keydown|_appendClass|Array|none|_setDate|controls|dRow|formatName|dim|right|xa0|_isInRange|clearfix|_canAdjustMonth|gotoDate|_gotoToday|number|Invalid|daysInMonth|content|leadDays|getName|src|log|getDaysInMonth|_setDateFromField|origSize|calculateWeek|gotoCurrent|onChange|_getDate|_clickMonthYear|pattern|_selectDay|in|_currentClass|cover|_unselectableClass|removeData|map|priority|isNaN|keypress|opacity|metadata|eq|constrainInput|curYear|_attachDatepicker|MozUserSelect|inMaxYear|charCode|parentNode|curMonth|wairole|selectstart|altKey|getterSetter|is|_optionDatepicker|err|_generateMonthYearHeader|scroll|originalEvent|relative|inMinYear|current|checkRange|_mouseDown|_mouseMove|mousemove|mouseup|_mouseUnselectable|href|debug|triggerHandler|on|abs|week|May|x3c|x3e|distance|onChangeMonthYear|_mouseStop|_mouseCapture|mouse|table|numRows|buttonPanel|header|_inlineDatepicker|dp|_dialogInst|_getFirstDayOfMonth|dateText|destroy|click|after|numberOfMonths|th|_connectDatepicker|both|buttonImageOnly|before|minMax|alt|_init|closeText|offsetNumeric|innerWidth|innerHeight|offsetString|exec|_checkOffset|rtl|Missing|onchange|compareDocumentPosition|5000px|iInit|_clearDate|Year|yearRange|_checkExternalClick|len|mousedown|100px|constructor|getYear|Month|slice|parseDate|_possibleChars|setHours|Class|origYear|_generateHTML|origMonth|empty|static|startDate|clear|self|block|getHours|mouseover|parseFloat|prevBigText|isOver|188|started|backgroundColor|removeChild|hasScroll|_mouseDestroy|COMMA|Next|fix|nextBigText|_trigger|BACKSPACE|CAPS_LOCK|_mouseInit|Today|disable|mozilla|setTimeout|other|appendTo|backgroundImage|CONTROL|days|gen|push|_disableClass|522|plugin|cell|over|dialog|_mouseDelayTimer|Prev|active|Done|rgba|clearText|Clear|transparent|highlight|which|107|tabbable|SHIFT|expr|SPACE|TAB|RIGHT|tabIndex|inArray|substring|190|getter|textarea|UP|scrollParent|w3|setAttributeNS|role|07|org|www|removeAttributeNS|disableSelection|http|January|off|enableSelection|PERIOD|isFunction|NUMPAD_ADD|LEFT|2005|NUMPAD_DECIMAL|110|INSERT|HOME|DOWN||DELETE|END|ENTER|ESCAPE|NUMPAD_DIVIDE|javascript|109|NUMPAD_SUBTRACT|PAGE_DOWN|PAGE_UP|eventPrefix|frameborder|106|111|NUMPAD_ENTER|108|NUMPAD_MULTIPLY|enable|Fri|_refreshDatepicker|_setDateDatepicker|_changeDatepicker|instance|_disableDatepicker|ISO_8601|_getDateDatepicker|RFC_822|RFC_1036|RFC_1123|DD|February|RFC_850|_enableDatepicker|first|_dialogDatepicker|text|selectedIndex|ceil|getAttribute|eval|ATOM|style|COOKIE|_destroyDatepicker|150|last|middle|RFC_2822|unblockUI|parent|0123456789|mouseout|9999|slideDown|1000px|nextSibling|em|isDisabled|nodeType|setMinutes|setSeconds|setMilliseconds|offsetHeight|slideUp|String|TIMESTAMP|stopPropagation|RSS|buttonpane|W3C|fromCharCode|indexOf|fadeIn|fadeOut|close|primary|setDefaults|draw|Tuesday|October|Monday|Sunday|Dec|do|Wednesday|September|Saturday|Friday|isArray|Thursday|86400000|November|Jul|Aug|Jun|Apr|Mar|Sep|Oct|floor|December|Jan|Nov|noWeekends|Feb|August|We|Th|Tu|Mo|Su|Fr|Sa|console|hasDatepicker|accessible|normal|July|March|Tue|Wed|Mon|Sun|June|Thu|change|Sat|April|Unexpected|Unknown'.split('|'),0,{})) diff --git a/js/jquery/datepicker/ui/i18n/index.php b/js/jquery/datepicker/ui/i18n/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/index.php @@ -0,0 +1,11 @@ + */ +jQuery(function($){ + $.datepicker.regional['lt'] = { + clearText: 'Išvalyti', clearStatus: '', + closeText: 'Uždaryti', closeStatus: '', + prevText: '<Atgal', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Pirmyn>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Šiandien', currentStatus: '', + monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', + 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'], + monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', + 'Lie','Rugp','Rugs','Spa','Lap','Gru'], + monthStatus: '', yearStatus: '', + weekHeader: '', weekStatus: '', + dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'], + dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'], + dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['lt']); +});/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lv'] = { + clearText: 'Notīrīt', clearStatus: '', + closeText: 'Aizvērt', closeStatus: '', + prevText: 'Iepr', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Nāka', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Šodien', currentStatus: '', + monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', + 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn', + 'Jūl','Aug','Sep','Okt','Nov','Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Nav', weekStatus: '', + dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'], + dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], + dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd-mm-yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['lv']); +});/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Mathias Bynens */ +jQuery(function($){ + $.datepicker.regional.nl = { + clearText: 'Wissen', clearStatus: 'Wis de huidige datum', + closeText: 'Sluiten', closeStatus: 'Sluit zonder verandering', + prevText: '←', prevStatus: 'Bekijk de vorige maand', + prevBigText: '«', nextBigStatus: 'Bekijk het vorige jaar', + nextText: '→', nextStatus: 'Bekijk de volgende maand', + nextBigText: '»', nextBigStatus: 'Bekijk het volgende jaar', + currentText: 'Vandaag', currentStatus: 'Bekijk de huidige maand', + monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', + 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], + monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', + 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], + monthStatus: 'Bekijk een andere maand', yearStatus: 'Bekijk een ander jaar', + weekHeader: 'Wk', weekStatus: 'Week van het jaar', + dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], + dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + dayStatus: 'Stel DD in als eerste dag van de week', dateStatus: 'dd/mm/yy', + dateFormat: 'dd/mm/yy', firstDay: 1, + initStatus: 'Kies een datum', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional.nl); +});/* Norwegian initialisation for the jQuery UI date picker plugin. */ +/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['no'] = { + clearText: 'Tøm', clearStatus: '', + closeText: 'Lukk', closeStatus: '', + prevText: '«Forrige', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Neste»', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'I dag', currentStatus: '', + monthNames: ['Januar','Februar','Mars','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + monthStatus: '', yearStatus: '', + weekHeader: 'Uke', weekStatus: '', + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['no']); +}); +/* Polish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pl'] = { + clearText: 'Wyczyść', clearStatus: 'Wyczyść obecną datę', + closeText: 'Zamknij', closeStatus: 'Zamknij bez zapisywania', + prevText: '<Poprzedni', prevStatus: 'Pokaż poprzedni miesiąc', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Następny>', nextStatus: 'Pokaż następny miesiąc', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Dziś', currentStatus: 'Pokaż aktualny miesiąc', + monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', + 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], + monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', + 'Lip','Sie','Wrz','Pa','Lis','Gru'], + monthStatus: 'Pokaż inny miesiąc', yearStatus: 'Pokaż inny rok', + weekHeader: 'Tydz', weekStatus: 'Tydzień roku', + dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'], + dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], + dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], + dayStatus: 'Ustaw DD jako pierwszy dzień tygodnia', dateStatus: '\'Wybierz\' D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: 'Wybierz datę', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['pl']); +}); +/* Brazilian initialisation for the jQuery UI date picker plugin. */ +/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pt-BR'] = { + clearText: 'Limpar', clearStatus: '', + closeText: 'Fechar', closeStatus: '', + prevText: '<Anterior', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Próximo>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Hoje', currentStatus: '', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['pt-BR']); +});/* Romanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Edmond L. (ll_edmond@walla.com). */ +jQuery(function($){ + $.datepicker.regional['ro'] = { + clearText: 'Curat', clearStatus: 'Sterge data curenta', + closeText: 'Inchide', closeStatus: 'Inchide fara schimbare', + prevText: '<Anterior', prevStatus: 'Arata luna trecuta', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Urmator>', nextStatus: 'Arata luna urmatoare', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Azi', currentStatus: 'Arata luna curenta', + monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Junie', + 'Julie','August','Septembrie','Octobrie','Noiembrie','Decembrie'], + monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Noi', 'Dec'], + monthStatus: 'Arata o luna diferita', yearStatus: 'Arat un an diferit', + weekHeader: 'Sapt', weekStatus: 'Saptamana anului', + dayNames: ['Duminica', 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sambata'], + dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam'], + dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sa'], + dayStatus: 'Seteaza DD ca prima saptamana zi', dateStatus: 'Selecteaza D, M d', + dateFormat: 'mm/dd/yy', firstDay: 0, + initStatus: 'Selecteaza o data', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['ro']); +}); +/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Andrew Stromnov (stromnov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ru'] = { + clearText: 'Очистить', clearStatus: '', + closeText: 'Закрыть', closeStatus: '', + prevText: '<Пред', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'След>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Сегодня', currentStatus: '', + monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', + 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', + 'Июл','Авг','Сен','Окт','Ноя','Дек'], + monthStatus: '', yearStatus: '', + weekHeader: 'Не', weekStatus: '', + dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], + dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], + dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['ru']); +});/* Slovak initialisation for the jQuery UI date picker plugin. */ +/* Written by Vojtech Rinik (vojto@hmm.sk). */ +jQuery(function($){ + $.datepicker.regional['sk'] = { + clearText: 'Zmazať', clearStatus: '', + closeText: 'Zavrieť', closeStatus: '', + prevText: '<Predchádzajúci', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Nasledujúci>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Dnes', currentStatus: '', + monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', + 'Júl','August','September','Október','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', + 'Júl','Aug','Sep','Okt','Nov','Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Ty', weekStatus: '', + dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], + dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], + dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sk']); +}); +/* Slovenian initialisation for the jQuery UI date picker plugin. */ +/* Written by Jaka Jancar (jaka@kubje.org). */ +/* c = č, s = š z = ž C = Č S = Š Z = Ž */ +jQuery(function($){ + $.datepicker.regional['sl'] = { + clearText: 'Izbriši', clearStatus: 'Izbriši trenutni datum', + closeText: 'Zapri', closeStatus: 'Zapri brez spreminjanja', + prevText: '<Prejšnji', prevStatus: 'Prikaži prejšnji mesec', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Naslednji>', nextStatus: 'Prikaži naslednji mesec', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Trenutni', currentStatus: 'Prikaži trenutni mesec', + monthNames: ['Januar','Februar','Marec','April','Maj','Junij', + 'Julij','Avgust','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + monthStatus: 'Prikaži drug mesec', yearStatus: 'Prikaži drugo leto', + weekHeader: 'Teden', weekStatus: 'Teden v letu', + dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], + dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], + dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], + dayStatus: 'Nastavi DD za prvi dan v tednu', dateStatus: 'Izberi DD, d MM yy', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Izbira datuma', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sl']); +}); +/* Albanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Flakron Bytyqi (flakron@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['sq'] = { + clearText: 'fshije', clearStatus: 'fshije datën aktuale', + closeText: 'mbylle', closeStatus: 'mbylle pa ndryshime', + prevText: '<mbrapa', prevStatus: 'trego muajin e fundit', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Përpara>', nextStatus: 'trego muajin tjetër', + nextBigText: '>>', nextBigStatus: '', + currentText: 'sot', currentStatus: '', + monthNames: ['Janar','Shkurt','Mars','Pril','Maj','Qershor', + 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], + monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', + 'Kor','Gus','Sht','Tet','Nën','Dhj'], + monthStatus: 'trego muajin tjetër', yearStatus: 'trego tjetër vit', + weekHeader: 'Ja', weekStatus: 'Java e muajit', + dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], + dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayStatus: 'Vendose DD si ditë të parë të javës', dateStatus: '\'Zgjedh\' D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Zgjedhe një datë', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sq']); +}); +/* Swedish initialisation for the jQuery UI date picker plugin. */ +/* Written by Anders Ekdahl ( anders@nomadiz.se). */ +jQuery(function($){ + $.datepicker.regional['sv'] = { + clearText: 'Rensa', clearStatus: '', + closeText: 'Stäng', closeStatus: '', + prevText: '«Förra', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Nästa»', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Idag', currentStatus: '', + monthNames: ['Januari','Februari','Mars','April','Maj','Juni', + 'Juli','Augusti','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Ve', weekStatus: '', + dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'], + dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], + dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sv']); +}); +/* Thai initialisation for the jQuery UI date picker plugin. */ +/* Written by pipo (pipo@sixhead.com). */ +jQuery(function($){ + $.datepicker.regional['th'] = { + clearText: 'ลบ', clearStatus: '', + closeText: 'ปิด', closeStatus: '', + prevText: '« ย้อน', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'ถัดไป »', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'วันนี้', currentStatus: '', + monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', + 'กรกฏาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], + monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', + 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'], + dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['th']); +});/* Turkish initialisation for the jQuery UI date picker plugin. */ +/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ +jQuery(function($){ + $.datepicker.regional['tr'] = { + clearText: 'temizle', clearStatus: 'geçerli tarihi temizler', + closeText: 'kapat', closeStatus: 'sadece göstergeyi kapat', + prevText: '<geri', prevStatus: 'önceki ayı göster', + prevBigText: '<<', prevBigStatus: '', + nextText: 'ileri>', nextStatus: 'sonraki ayı göster', + nextBigText: '>>', nextBigStatus: '', + currentText: 'bugün', currentStatus: '', + monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', + 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], + monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', + 'Tem','Ağu','Eyl','Eki','Kas','Ara'], + monthStatus: 'başka ay', yearStatus: 'başka yıl', + weekHeader: 'Hf', weekStatus: 'Ayın haftaları', + dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'], + dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayStatus: 'Haftanın ilk gününü belirleyin', dateStatus: 'D, M d seçiniz', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Bir tarih seçiniz', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['tr']); +});/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['uk'] = { + clearText: 'Очистити', clearStatus: '', + closeText: 'Закрити', closeStatus: '', + prevText: '<', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: '>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Сьогодні', currentStatus: '', + monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', + 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], + monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', + 'Лип','Сер','Вер','Жов','Лис','Гру'], + monthStatus: '', yearStatus: '', + weekHeader: 'Не', weekStatus: '', + dayNames: ['неділя','понеділок','вівторок','середа','четвер','пятниця','суббота'], + dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], + dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['uk']); +});/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Cloudream (cloudream@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-CN'] = { + clearText: '清除', clearStatus: '清除已选日期', + closeText: '关闭', closeStatus: '不改变当前选择', + prevText: '<上月', prevStatus: '显示上月', + prevBigText: '<<', prevBigStatus: '显示上一年', + nextText: '下月>', nextStatus: '显示下月', + nextBigText: '>>', nextBigStatus: '显示下一年', + currentText: '今天', currentStatus: '显示本月', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + monthNamesShort: ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'], + monthStatus: '选择月份', yearStatus: '选择年份', + weekHeader: '周', weekStatus: '年内周次', + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['日','一','二','三','四','五','六'], + dayStatus: '设置 DD 为一周起始', dateStatus: '选择 m月 d日, DD', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '请选择日期', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['zh-CN']); +}); +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Ressol (ressol@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-TW'] = { + clearText: '清除', clearStatus: '清除已選日期', + closeText: '關閉', closeStatus: '不改變目前的選擇', + prevText: '<上月', prevStatus: '顯示上月', + prevBigText: '<<', prevBigStatus: '顯示上一年', + nextText: '下月>', nextStatus: '顯示下月', + nextBigText: '>>', nextBigStatus: '顯示下一年', + currentText: '今天', currentStatus: '顯示本月', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + monthNamesShort: ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'], + monthStatus: '選擇月份', yearStatus: '選擇年份', + weekHeader: '周', weekStatus: '年內周次', + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['日','一','二','三','四','五','六'], + dayStatus: '設定 DD 為一周起始', dateStatus: '選擇 m月 d日, DD', + dateFormat: 'yy/mm/dd', firstDay: 1, + initStatus: '請選擇日期', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['zh-TW']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-ar.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-ar.js new file mode 100644 index 000000000..52101e921 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-ar.js @@ -0,0 +1,26 @@ +/* Arabic Translation for jQuery UI date picker plugin. */ +/* Khaled Al Horani -- koko.dw@gmail.com */ +/* خالد الحوراني -- koko.dw@gmail.com */ +/* NOTE: monthNames are the original months names and they are the Arabic names, not the new months name فبراير - يناير and there isn't any Arabic roots for these months */ +jQuery(function($){ + $.datepicker.regional['ar'] = { + clearText: 'مسح', clearStatus: 'امسح التاريخ الحالي', + closeText: 'إغلاق', closeStatus: 'إغلاق بدون حفظ', + prevText: '<السابق', prevStatus: 'عرض الشهر السابق', + prevBigText: '<<', prevBigStatus: '', + nextText: 'التالي>', nextStatus: 'عرض الشهر القادم', + nextBigText: '>>', nextBigStatus: '', + currentText: 'اليوم', currentStatus: 'عرض الشهر الحالي', + monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران', + 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + monthStatus: 'عرض شهر آخر', yearStatus: 'عرض سنة آخرى', + weekHeader: 'أسبوع', weekStatus: 'أسبوع السنة', + dayNames: ['السبت', 'الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة'], + dayNamesShort: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + dayNamesMin: ['سبت', 'أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة'], + dayStatus: 'اختر DD لليوم الأول من الأسبوع', dateStatus: 'اختر D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: 'اختر يوم', isRTL: true}; + $.datepicker.setDefaults($.datepicker.regional['ar']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-bg.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-bg.js new file mode 100644 index 000000000..f11de66bc --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-bg.js @@ -0,0 +1,25 @@ +/* Bulgarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Stoyan Kyosev (http://svest.org). */ +jQuery(function($){ + $.datepicker.regional['bg'] = { + clearText: 'изчисти', clearStatus: 'изчисти актуалната дата', + closeText: 'затвори', closeStatus: 'затвори без промени', + prevText: '<назад', prevStatus: 'покажи последния месец', + prevBigText: '<<', prevBigStatus: '', + nextText: 'напред>', nextStatus: 'покажи следващия месец', + nextBigText: '>>', nextBigStatus: '', + currentText: 'днес', currentStatus: '', + monthNames: ['Януари','Февруари','Март','Април','Май','Юни', + 'Юли','Август','Септември','Октомври','Ноември','Декември'], + monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни', + 'Юли','Авг','Сеп','Окт','Нов','Дек'], + monthStatus: 'покажи друг месец', yearStatus: 'покажи друга година', + weekHeader: 'Wk', weekStatus: 'седмица от месеца', + dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'], + dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'], + dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'], + dayStatus: 'Сложи DD като първи ден от седмицата', dateStatus: 'Избери D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Избери дата', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['bg']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-ca.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-ca.js new file mode 100644 index 000000000..414600f23 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-ca.js @@ -0,0 +1,25 @@ +/* Inicialitzaci en catal per a l'extenci 'calendar' per jQuery. */ +/* Writers: (joan.leon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ca'] = { + clearText: 'Netejar', clearStatus: '', + closeText: 'Tancar', closeStatus: '', + prevText: '<Ant', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Seg>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Avui', currentStatus: '', + monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny', + 'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'], + monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Oct','Nov','Des'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'], + dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'], + dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'mm/dd/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['ca']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-cs.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-cs.js new file mode 100644 index 000000000..1f5118f1c --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-cs.js @@ -0,0 +1,25 @@ +/* Czech initialisation for the jQuery UI date picker plugin. */ +/* Written by Tomas Muller (tomas@tomas-muller.net). */ +jQuery(function($){ + $.datepicker.regional['cs'] = { + clearText: 'Vymazat', clearStatus: 'Vymaže zadané datum', + closeText: 'Zavřít', closeStatus: 'Zavře kalendář beze změny', + prevText: '<Dříve', prevStatus: 'Přejít na předchozí měsí', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Později>', nextStatus: 'Přejít na další měsíc', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Nyní', currentStatus: 'Přejde na aktuální měsíc', + monthNames: ['leden','únor','březen','duben','květen','červen', + 'červenec','srpen','září','říjen','listopad','prosinec'], + monthNamesShort: ['led','úno','bře','dub','kvě','čer', + 'čvc','srp','zář','říj','lis','pro'], + monthStatus: 'Přejít na jiný měsíc', yearStatus: 'Přejít na jiný rok', + weekHeader: 'Týd', weekStatus: 'Týden v roce', + dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], + dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], + dayNamesMin: ['ne','po','út','st','čt','pá','so'], + dayStatus: 'Nastavit DD jako první den v týdnu', dateStatus: '\'Vyber\' DD, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Vyberte datum', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['cs']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-da.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-da.js new file mode 100644 index 000000000..525f3de3c --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-da.js @@ -0,0 +1,25 @@ +/* Danish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jan Christensen ( deletestuff@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['da'] = { + clearText: 'Nulstil', clearStatus: 'Nulstil den aktuelle dato', + closeText: 'Luk', closeStatus: 'Luk uden ændringer', + prevText: '<Forrige', prevStatus: 'Vis forrige måned', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Næste>', nextStatus: 'Vis næste måned', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Idag', currentStatus: 'Vis aktuel måned', + monthNames: ['Januar','Februar','Marts','April','Maj','Juni', + 'Juli','August','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + monthStatus: 'Vis en anden måned', yearStatus: 'Vis et andet år', + weekHeader: 'Uge', weekStatus: 'Årets uge', + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + dayStatus: 'Sæt DD som første ugedag', dateStatus: 'Vælg D, M d', + dateFormat: 'dd-mm-yy', firstDay: 0, + initStatus: 'Vælg en dato', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['da']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-de.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-de.js new file mode 100644 index 000000000..ce8f78391 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-de.js @@ -0,0 +1,25 @@ +/* German initialisation for the jQuery UI date picker plugin. */ +/* Written by Milian Wolff (mail@milianw.de). */ +jQuery(function($){ + $.datepicker.regional['de'] = { + clearText: 'löschen', clearStatus: 'aktuelles Datum löschen', + closeText: 'schließen', closeStatus: 'ohne Änderungen schließen', + prevText: '<zurück', prevStatus: 'letzten Monat zeigen', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Vor>', nextStatus: 'nächsten Monat zeigen', + nextBigText: '>>', nextBigStatus: '', + currentText: 'heute', currentStatus: '', + monthNames: ['Januar','Februar','März','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dez'], + monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen', + weekHeader: 'Wo', weekStatus: 'Woche des Monats', + dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], + dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], + dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], + dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Wähle ein Datum', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['de']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-eo.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-eo.js new file mode 100644 index 000000000..42e9118ab --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-eo.js @@ -0,0 +1,25 @@ +/* Esperanto initialisation for the jQuery UI date picker plugin. */ +/* Written by Olivier M. (olivierweb@ifrance.com). */ +jQuery(function($){ + $.datepicker.regional['eo'] = { + clearText: 'Vakigi', clearStatus: '', + closeText: 'Fermi', closeStatus: 'Fermi sen modifi', + prevText: '<Anta', prevStatus: 'Vidi la antaŭan monaton', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Sekv>', nextStatus: 'Vidi la sekvan monaton', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Nuna', currentStatus: 'Vidi la nunan monaton', + monthNames: ['Januaro','Februaro','Marto','Aprilo','Majo','Junio', + 'Julio','Aŭgusto','Septembro','Oktobro','Novembro','Decembro'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aŭg','Sep','Okt','Nov','Dec'], + monthStatus: 'Vidi alian monaton', yearStatus: 'Vidi alian jaron', + weekHeader: 'Sb', weekStatus: '', + dayNames: ['Dimanĉo','Lundo','Mardo','Merkredo','Ĵaŭdo','Vendredo','Sabato'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Ĵaŭ','Ven','Sab'], + dayNamesMin: ['Di','Lu','Ma','Me','Ĵa','Ve','Sa'], + dayStatus: 'Uzi DD kiel unua tago de la semajno', dateStatus: 'Elekti DD, MM d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: 'Elekti la daton', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['eo']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-es.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-es.js new file mode 100644 index 000000000..7d0199279 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-es.js @@ -0,0 +1,25 @@ +/* Inicializacin en espaol para la extensin 'UI date picker' para jQuery. */ +/* Traducido por Vester (xvester@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['es'] = { + clearText: 'Limpiar', clearStatus: '', + closeText: 'Cerrar', closeStatus: '', + prevText: '<Ant', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Sig>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Hoy', currentStatus: '', + monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', + 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', + 'Jul','Ago','Sep','Oct','Nov','Dic'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['es']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-fa.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-fa.js new file mode 100644 index 000000000..0ce4c7c98 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-fa.js @@ -0,0 +1,25 @@ +/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */ +/* Javad Mowlanezhad -- jmowla@gmail.com */ +/* Jalali calendar should supported soon! (Its implemented but I have to test it) */ +jQuery(function($) { + $.datepicker.regional['fa'] = { + clearText: 'حذف تاريخ', clearStatus: 'پاک کردن تاريخ جاري', + closeText: 'بستن', closeStatus: 'بستن بدون اعمال تغييرات', + prevText: '<قبلي', prevStatus: 'نمايش ماه قبل', + prevBigText: '<<', prevBigStatus: '', + nextText: 'بعدي>', nextStatus: 'نمايش ماه بعد', + nextBigText: '>>', nextBigStatus: '', + currentText: 'امروز', currentStatus: 'نمايش ماه جاري', + monthNames: ['فروردين','ارديبهشت','خرداد','تير','مرداد','شهريور', + 'مهر','آبان','آذر','دي','بهمن','اسفند'], + monthNamesShort: ['1','2','3','4','5','6','7','8','9','10','11','12'], + monthStatus: 'نمايش ماه متفاوت', yearStatus: 'نمايش سال متفاوت', + weekHeader: 'هف', weekStatus: 'هفتهِ سال', + dayNames: ['يکشنبه','دوشنبه','سه‌شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'], + dayNamesShort: ['ي','د','س','چ','پ','ج', 'ش'], + dayNamesMin: ['ي','د','س','چ','پ','ج', 'ش'], + dayStatus: 'قبول DD بعنوان اولين روز هفته', dateStatus: 'انتخاب D, M d', + dateFormat: 'yy/mm/dd', firstDay: 6, + initStatus: 'انتخاب تاريخ', isRTL: true}; + $.datepicker.setDefaults($.datepicker.regional['fa']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-fi.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-fi.js new file mode 100644 index 000000000..8dc39c5be --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-fi.js @@ -0,0 +1,25 @@ +/* Finnish initialisation for the jQuery UI date picker plugin. */ +/* Written by Harri Kilpi (harrikilpio@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['fi'] = { + clearText: 'Tyhjennä', clearStatus: '', + closeText: 'Sulje', closeStatus: '', + prevText: '«Edellinen', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Seuraava»', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Tänään', currentStatus: '', + monthNames: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', + 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], + monthNamesShort: ['Tammi','Helmi','Maalis','Huhti','Touko','Kesä', + 'Heinä','Elo','Syys','Loka','Marras','Joulu'], + monthStatus: '', yearStatus: '', + weekHeader: 'Vk', weekStatus: '', + dayNamesShort: ['Su','Ma','Ti','Ke','To','Pe','Su'], + dayNames: ['Sunnuntai','Maanantai','Tiistai','Keskiviikko','Torstai','Perjantai','Lauantai'], + dayNamesMin: ['Su','Ma','Ti','Ke','To','Pe','La'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['fi']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-fr.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-fr.js new file mode 100644 index 000000000..512229d4f --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-fr.js @@ -0,0 +1,25 @@ +/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood@virginbroadband.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +jQuery(function($){ + $.datepicker.regional['fr'] = { + clearText: 'Effacer', clearStatus: 'Effacer la date sélectionnée', + closeText: 'Fermer', closeStatus: 'Fermer sans modifier', + prevText: '<Préc', prevStatus: 'Voir le mois précédent', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Suiv>', nextStatus: 'Voir le mois suivant', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Courant', currentStatus: 'Voir le mois courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + monthStatus: 'Voir un autre mois', yearStatus: 'Voir une autre année', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: '\'Choisir\' le DD d MM', + dateFormat: 'dd/mm/yy', firstDay: 1, + initStatus: 'Choisir la date', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['fr']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-he.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-he.js new file mode 100644 index 000000000..929e87c92 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-he.js @@ -0,0 +1,25 @@ +/* Hebrew initialisation for the UI Datepicker extension. */ +/* Written by Amir Hardon (ahardon at gmail dot com). */ +jQuery(function($){ + $.datepicker.regional['he'] = { + clearText: 'נקה', clearStatus: '', + closeText: 'סגור', closeStatus: '', + prevText: '<הקודם', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'הבא>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'היום', currentStatus: '', + monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני', + 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'], + monthNamesShort: ['1','2','3','4','5','6', + '7','8','9','10','11','12'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'], + dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], + dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'], + dayStatus: 'DD', dateStatus: 'DD, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: true}; + $.datepicker.setDefaults($.datepicker.regional['he']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-hr.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-hr.js new file mode 100644 index 000000000..597aa4ae6 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-hr.js @@ -0,0 +1,25 @@ +/* Croatian i18n for the jQuery UI date picker plugin. */ +/* Written by Vjekoslav Nesek. */ +jQuery(function($){ + $.datepicker.regional['hr'] = { + clearText: 'izbriši', clearStatus: 'Izbriši trenutni datum', + closeText: 'Zatvori', closeStatus: 'Zatvori kalendar', + prevText: '<', prevStatus: 'Prikaži prethodni mjesec', + prevBigText: '<<', prevBigStatus: '', + nextText: '>', nextStatus: 'Prikaži slijedeći mjesec', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Danas', currentStatus: 'Današnji datum', + monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipani', + 'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'], + monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip', + 'Srp','Kol','Ruj','Lis','Stu','Pro'], + monthStatus: 'Prikaži mjesece', yearStatus: 'Prikaži godine', + weekHeader: 'Tje', weekStatus: 'Tjedan', + dayNames: ['Nedjalja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'], + dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'], + dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'], + dayStatus: 'Odaber DD za prvi dan tjedna', dateStatus: '\'Datum\' D, M d', + dateFormat: 'dd.mm.yy.', firstDay: 1, + initStatus: 'Odaberi datum', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['hr']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-hu.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-hu.js new file mode 100644 index 000000000..29f2ad375 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-hu.js @@ -0,0 +1,25 @@ +/* Hungarian initialisation for the jQuery UI date picker plugin. */ +/* Written by Istvan Karaszi (jquerycalendar@spam.raszi.hu). */ +jQuery(function($){ + $.datepicker.regional['hu'] = { + clearText: 'törlés', clearStatus: '', + closeText: 'bezárás', closeStatus: '', + prevText: '« vissza', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'előre »', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'ma', currentStatus: '', + monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', + 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], + monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', + 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Hé', weekStatus: '', + dayNames: ['Vasámap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], + dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'], + dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['hu']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-hy.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-hy.js new file mode 100644 index 000000000..2022efb49 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-hy.js @@ -0,0 +1,25 @@ +/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/ +jQuery(function($){ + $.datepicker.regional['hy'] = { + clearText: 'Մաքրել', clearStatus: '', + closeText: 'Փակել', closeStatus: '', + prevText: '<Նախ.', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Հաջ.>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Այսօր', currentStatus: '', + monthNames: ['Հունվար','Փետրվար','Մարտ','Ապրիլ','Մայիս','Հունիս', + 'Հուլիս','Օգոստոս','Սեպտեմբեր','Հոկտեմբեր','Նոյեմբեր','Դեկտեմբեր'], + monthNamesShort: ['Հունվ','Փետր','Մարտ','Ապր','Մայիս','Հունիս', + 'Հուլ','Օգս','Սեպ','Հոկ','Նոյ','Դեկ'], + monthStatus: '', yearStatus: '', + weekHeader: 'ՇԲՏ', weekStatus: '', + dayNames: ['կիրակի','եկուշաբթի','երեքշաբթի','չորեքշաբթի','հինգշաբթի','ուրբաթ','շաբաթ'], + dayNamesShort: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], + dayNamesMin: ['կիր','երկ','երք','չրք','հնգ','ուրբ','շբթ'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['hy']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-id.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-id.js new file mode 100644 index 000000000..7ff1a3a9e --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-id.js @@ -0,0 +1,25 @@ +/* Indonesian initialisation for the jQuery UI date picker plugin. */ +/* Written by Deden Fathurahman (dedenf@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['id'] = { + clearText: 'kosongkan', clearStatus: 'bersihkan tanggal yang sekarang', + closeText: 'Tutup', closeStatus: 'Tutup tanpa mengubah', + prevText: '<mundur', prevStatus: 'Tampilkan bulan sebelumnya', + prevBigText: '<<', prevBigStatus: '', + nextText: 'maju>', nextStatus: 'Tampilkan bulan berikutnya', + nextBigText: '>>', nextBigStatus: '', + currentText: 'hari ini', currentStatus: 'Tampilkan bulan sekarang', + monthNames: ['Januari','Februari','Maret','April','Mei','Juni', + 'Juli','Agustus','September','Oktober','Nopember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mei','Jun', + 'Jul','Agus','Sep','Okt','Nop','Des'], + monthStatus: 'Tampilkan bulan yang berbeda', yearStatus: 'Tampilkan tahun yang berbeda', + weekHeader: 'Mg', weekStatus: 'Minggu dalam tahun', + dayNames: ['Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu'], + dayNamesShort: ['Min','Sen','Sel','Rab','kam','Jum','Sab'], + dayNamesMin: ['Mg','Sn','Sl','Rb','Km','jm','Sb'], + dayStatus: 'gunakan DD sebagai awal hari dalam minggu', dateStatus: 'pilih le DD, MM d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: 'Pilih Tanggal', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['id']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-is.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-is.js new file mode 100644 index 000000000..4647f37e9 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-is.js @@ -0,0 +1,25 @@ +/* Icelandic initialisation for the jQuery UI date picker plugin. */ +/* Written by Haukur H. Thorsson (haukur@eskill.is). */ +jQuery(function($){ + $.datepicker.regional['is'] = { + clearText: 'Hreinsa', clearStatus: '', + closeText: 'Loka', closeStatus: '', + prevText: '< Fyrri', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Næsti >', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Í dag', currentStatus: '', + monthNames: ['Janúar','Febrúar','Mars','Apríl','Maí','Júní', + 'Júlí','Ágúst','September','Október','Nóvember','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún', + 'Júl','Ágú','Sep','Okt','Nóv','Des'], + monthStatus: '', yearStatus: '', + weekHeader: 'Vika', weekStatus: '', + dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'], + dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'], + dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['is']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-it.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-it.js new file mode 100644 index 000000000..fb05f5f80 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-it.js @@ -0,0 +1,25 @@ +/* Italian initialisation for the jQuery UI date picker plugin. */ +/* Written by Apaella (apaella@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['it'] = { + clearText: 'Svuota', clearStatus: 'Annulla', + closeText: 'Chiudi', closeStatus: 'Chiudere senza modificare', + prevText: '<Prec', prevStatus: 'Mese precedente', + prevBigText: '<<', prevBigStatus: 'Mostra l\'anno precedente', + nextText: 'Succ>', nextStatus: 'Mese successivo', + nextBigText: '>>', nextBigStatus: 'Mostra l\'anno successivo', + currentText: 'Oggi', currentStatus: 'Mese corrente', + monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', + 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'], + monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu', + 'Lug','Ago','Set','Ott','Nov','Dic'], + monthStatus: 'Seleziona un altro mese', yearStatus: 'Seleziona un altro anno', + weekHeader: 'Sm', weekStatus: 'Settimana dell\'anno', + dayNames: ['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'], + dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'], + dayNamesMin: ['Do','Lu','Ma','Me','Gio','Ve','Sa'], + dayStatus: 'Usa DD come primo giorno della settimana', dateStatus: '\'Seleziona\' D, M d', + dateFormat: 'dd/mm/yy', firstDay: 1, + initStatus: 'Scegliere una data', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['it']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-ja.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-ja.js new file mode 100644 index 000000000..1ecf40221 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-ja.js @@ -0,0 +1,26 @@ +/* Japanese initialisation for the jQuery UI date picker plugin. */ +/* Written by Kentaro SATO (kentaro@ranvis.com). */ +jQuery(function($){ + $.datepicker.regional['ja'] = { + clearText: 'クリア', clearStatus: '日付をクリアします', + closeText: '閉じる', closeStatus: '変更せずに閉じます', + prevText: '<前', prevStatus: '前月を表示します', + prevBigText: '<<', prevBigStatus: '前年を表示します', + nextText: '次>', nextStatus: '翌月を表示します', + nextBigText: '>>', nextBigStatus: '翌年を表示します', + currentText: '今日', currentStatus: '今月を表示します', + monthNames: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + monthNamesShort: ['1月','2月','3月','4月','5月','6月', + '7月','8月','9月','10月','11月','12月'], + monthStatus: '表示する月を変更します', yearStatus: '表示する年を変更します', + weekHeader: '週', weekStatus: '暦週で第何週目かを表します', + dayNames: ['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'], + dayNamesShort: ['日','月','火','水','木','金','土'], + dayNamesMin: ['日','月','火','水','木','金','土'], + dayStatus: '週の始まりをDDにします', dateStatus: 'Md日(D)', + dateFormat: 'yy/mm/dd', firstDay: 0, + initStatus: '日付を選択します', isRTL: false, + showMonthAfterYear: true}; + $.datepicker.setDefaults($.datepicker.regional['ja']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-ko.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-ko.js new file mode 100644 index 000000000..b380311cf --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-ko.js @@ -0,0 +1,25 @@ +/* Korean initialisation for the jQuery calendar extension. */ +/* Written by DaeKwon Kang (ncrash.dk@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ko'] = { + clearText: '지우기', clearStatus: '', + closeText: '닫기', closeStatus: '', + prevText: '이전달', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: '다음달', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: '오늘', currentStatus: '', + monthNames: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', + '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], + monthNamesShort: ['1월(JAN)','2월(FEB)','3월(MAR)','4월(APR)','5월(MAY)','6월(JUN)', + '7월(JUL)','8월(AUG)','9월(SEP)','10월(OCT)','11월(NOV)','12월(DEC)'], + monthStatus: '', yearStatus: '', + weekHeader: 'Wk', weekStatus: '', + dayNames: ['일','월','화','수','목','금','토'], + dayNamesShort: ['일','월','화','수','목','금','토'], + dayNamesMin: ['일','월','화','수','목','금','토'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['ko']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-lt.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-lt.js new file mode 100644 index 000000000..ab5ee859c --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-lt.js @@ -0,0 +1,25 @@ +/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lt'] = { + clearText: 'Išvalyti', clearStatus: '', + closeText: 'Uždaryti', closeStatus: '', + prevText: '<Atgal', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Pirmyn>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Šiandien', currentStatus: '', + monthNames: ['Sausis','Vasaris','Kovas','Balandis','Gegužė','Birželis', + 'Liepa','Rugpjūtis','Rugsėjis','Spalis','Lapkritis','Gruodis'], + monthNamesShort: ['Sau','Vas','Kov','Bal','Geg','Bir', + 'Lie','Rugp','Rugs','Spa','Lap','Gru'], + monthStatus: '', yearStatus: '', + weekHeader: '', weekStatus: '', + dayNames: ['sekmadienis','pirmadienis','antradienis','trečiadienis','ketvirtadienis','penktadienis','šeštadienis'], + dayNamesShort: ['sek','pir','ant','tre','ket','pen','šeš'], + dayNamesMin: ['Se','Pr','An','Tr','Ke','Pe','Še'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['lt']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-lv.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-lv.js new file mode 100644 index 000000000..981d42b8d --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-lv.js @@ -0,0 +1,25 @@ +/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* @author Arturas Paleicikas */ +jQuery(function($){ + $.datepicker.regional['lv'] = { + clearText: 'Notīrīt', clearStatus: '', + closeText: 'Aizvērt', closeStatus: '', + prevText: 'Iepr', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Nāka', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Šodien', currentStatus: '', + monthNames: ['Janvāris','Februāris','Marts','Aprīlis','Maijs','Jūnijs', + 'Jūlijs','Augusts','Septembris','Oktobris','Novembris','Decembris'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jūn', + 'Jūl','Aug','Sep','Okt','Nov','Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Nav', weekStatus: '', + dayNames: ['svētdiena','pirmdiena','otrdiena','trešdiena','ceturtdiena','piektdiena','sestdiena'], + dayNamesShort: ['svt','prm','otr','tre','ctr','pkt','sst'], + dayNamesMin: ['Sv','Pr','Ot','Tr','Ct','Pk','Ss'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd-mm-yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['lv']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-nl.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-nl.js new file mode 100644 index 000000000..200974e7c --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-nl.js @@ -0,0 +1,25 @@ +/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Mathias Bynens */ +jQuery(function($){ + $.datepicker.regional.nl = { + clearText: 'Wissen', clearStatus: 'Wis de huidige datum', + closeText: 'Sluiten', closeStatus: 'Sluit zonder verandering', + prevText: '←', prevStatus: 'Bekijk de vorige maand', + prevBigText: '«', nextBigStatus: 'Bekijk het vorige jaar', + nextText: '→', nextStatus: 'Bekijk de volgende maand', + nextBigText: '»', nextBigStatus: 'Bekijk het volgende jaar', + currentText: 'Vandaag', currentStatus: 'Bekijk de huidige maand', + monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni', + 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], + monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun', + 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], + monthStatus: 'Bekijk een andere maand', yearStatus: 'Bekijk een ander jaar', + weekHeader: 'Wk', weekStatus: 'Week van het jaar', + dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'], + dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + dayStatus: 'Stel DD in als eerste dag van de week', dateStatus: 'dd/mm/yy', + dateFormat: 'dd/mm/yy', firstDay: 1, + initStatus: 'Kies een datum', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional.nl); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-no.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-no.js new file mode 100644 index 000000000..e9a05e838 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-no.js @@ -0,0 +1,25 @@ +/* Norwegian initialisation for the jQuery UI date picker plugin. */ +/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['no'] = { + clearText: 'Tøm', clearStatus: '', + closeText: 'Lukk', closeStatus: '', + prevText: '«Forrige', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Neste»', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'I dag', currentStatus: '', + monthNames: ['Januar','Februar','Mars','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Desember'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Des'], + monthStatus: '', yearStatus: '', + weekHeader: 'Uke', weekStatus: '', + dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'], + dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'], + dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['no']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-pl.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-pl.js new file mode 100644 index 000000000..b8503af84 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-pl.js @@ -0,0 +1,25 @@ +/* Polish initialisation for the jQuery UI date picker plugin. */ +/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pl'] = { + clearText: 'Wyczyść', clearStatus: 'Wyczyść obecną datę', + closeText: 'Zamknij', closeStatus: 'Zamknij bez zapisywania', + prevText: '<Poprzedni', prevStatus: 'Pokaż poprzedni miesiąc', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Następny>', nextStatus: 'Pokaż następny miesiąc', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Dziś', currentStatus: 'Pokaż aktualny miesiąc', + monthNames: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', + 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], + monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', + 'Lip','Sie','Wrz','Pa','Lis','Gru'], + monthStatus: 'Pokaż inny miesiąc', yearStatus: 'Pokaż inny rok', + weekHeader: 'Tydz', weekStatus: 'Tydzień roku', + dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'], + dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], + dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], + dayStatus: 'Ustaw DD jako pierwszy dzień tygodnia', dateStatus: '\'Wybierz\' D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: 'Wybierz datę', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['pl']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-pt.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-pt.js new file mode 100644 index 000000000..484743afe --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-pt.js @@ -0,0 +1,25 @@ +/* Brazilian initialisation for the jQuery UI date picker plugin. */ +/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['pt-BR'] = { + clearText: 'Limpar', clearStatus: '', + closeText: 'Fechar', closeStatus: '', + prevText: '<Anterior', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Próximo>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Hoje', currentStatus: '', + monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho', + 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'], + monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun', + 'Jul','Ago','Set','Out','Nov','Dez'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sabado'], + dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], + dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sab'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['pt-BR']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-ro.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-ro.js new file mode 100644 index 000000000..5a0eeaf26 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-ro.js @@ -0,0 +1,25 @@ +/* Romanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Edmond L. (ll_edmond@walla.com). */ +jQuery(function($){ + $.datepicker.regional['ro'] = { + clearText: 'Curat', clearStatus: 'Sterge data curenta', + closeText: 'Inchide', closeStatus: 'Inchide fara schimbare', + prevText: '<Anterior', prevStatus: 'Arata luna trecuta', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Urmator>', nextStatus: 'Arata luna urmatoare', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Azi', currentStatus: 'Arata luna curenta', + monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Junie', + 'Julie','August','Septembrie','Octobrie','Noiembrie','Decembrie'], + monthNamesShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Noi', 'Dec'], + monthStatus: 'Arata o luna diferita', yearStatus: 'Arat un an diferit', + weekHeader: 'Sapt', weekStatus: 'Saptamana anului', + dayNames: ['Duminica', 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sambata'], + dayNamesShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam'], + dayNamesMin: ['Du','Lu','Ma','Mi','Jo','Vi','Sa'], + dayStatus: 'Seteaza DD ca prima saptamana zi', dateStatus: 'Selecteaza D, M d', + dateFormat: 'mm/dd/yy', firstDay: 0, + initStatus: 'Selecteaza o data', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['ro']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-ru.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-ru.js new file mode 100644 index 000000000..d52248347 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-ru.js @@ -0,0 +1,25 @@ +/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Andrew Stromnov (stromnov@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['ru'] = { + clearText: 'Очистить', clearStatus: '', + closeText: 'Закрыть', closeStatus: '', + prevText: '<Пред', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'След>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Сегодня', currentStatus: '', + monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь', + 'Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], + monthNamesShort: ['Янв','Фев','Мар','Апр','Май','Июн', + 'Июл','Авг','Сен','Окт','Ноя','Дек'], + monthStatus: '', yearStatus: '', + weekHeader: 'Не', weekStatus: '', + dayNames: ['воскресенье','понедельник','вторник','среда','четверг','пятница','суббота'], + dayNamesShort: ['вск','пнд','втр','срд','чтв','птн','сбт'], + dayNamesMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['ru']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-sk.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-sk.js new file mode 100644 index 000000000..315f60b94 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-sk.js @@ -0,0 +1,25 @@ +/* Slovak initialisation for the jQuery UI date picker plugin. */ +/* Written by Vojtech Rinik (vojto@hmm.sk). */ +jQuery(function($){ + $.datepicker.regional['sk'] = { + clearText: 'Zmazať', clearStatus: '', + closeText: 'Zavrieť', closeStatus: '', + prevText: '<Predchádzajúci', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Nasledujúci>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Dnes', currentStatus: '', + monthNames: ['Január','Február','Marec','Apríl','Máj','Jún', + 'Júl','August','September','Október','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún', + 'Júl','Aug','Sep','Okt','Nov','Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Ty', weekStatus: '', + dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'], + dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'], + dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sk']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-sl.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-sl.js new file mode 100644 index 000000000..36eca54bf --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-sl.js @@ -0,0 +1,26 @@ +/* Slovenian initialisation for the jQuery UI date picker plugin. */ +/* Written by Jaka Jancar (jaka@kubje.org). */ +/* c = č, s = š z = ž C = Č S = Š Z = Ž */ +jQuery(function($){ + $.datepicker.regional['sl'] = { + clearText: 'Izbriši', clearStatus: 'Izbriši trenutni datum', + closeText: 'Zapri', closeStatus: 'Zapri brez spreminjanja', + prevText: '<Prejšnji', prevStatus: 'Prikaži prejšnji mesec', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Naslednji>', nextStatus: 'Prikaži naslednji mesec', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Trenutni', currentStatus: 'Prikaži trenutni mesec', + monthNames: ['Januar','Februar','Marec','April','Maj','Junij', + 'Julij','Avgust','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Avg','Sep','Okt','Nov','Dec'], + monthStatus: 'Prikaži drug mesec', yearStatus: 'Prikaži drugo leto', + weekHeader: 'Teden', weekStatus: 'Teden v letu', + dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','Četrtek','Petek','Sobota'], + dayNamesShort: ['Ned','Pon','Tor','Sre','Čet','Pet','Sob'], + dayNamesMin: ['Ne','Po','To','Sr','Če','Pe','So'], + dayStatus: 'Nastavi DD za prvi dan v tednu', dateStatus: 'Izberi DD, d MM yy', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Izbira datuma', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sl']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-sq.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-sq.js new file mode 100644 index 000000000..49a1ac66f --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-sq.js @@ -0,0 +1,25 @@ +/* Albanian initialisation for the jQuery UI date picker plugin. */ +/* Written by Flakron Bytyqi (flakron@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['sq'] = { + clearText: 'fshije', clearStatus: 'fshije datën aktuale', + closeText: 'mbylle', closeStatus: 'mbylle pa ndryshime', + prevText: '<mbrapa', prevStatus: 'trego muajin e fundit', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Përpara>', nextStatus: 'trego muajin tjetër', + nextBigText: '>>', nextBigStatus: '', + currentText: 'sot', currentStatus: '', + monthNames: ['Janar','Shkurt','Mars','Pril','Maj','Qershor', + 'Korrik','Gusht','Shtator','Tetor','Nëntor','Dhjetor'], + monthNamesShort: ['Jan','Shk','Mar','Pri','Maj','Qer', + 'Kor','Gus','Sht','Tet','Nën','Dhj'], + monthStatus: 'trego muajin tjetër', yearStatus: 'trego tjetër vit', + weekHeader: 'Ja', weekStatus: 'Java e muajit', + dayNames: ['E Diel','E Hënë','E Martë','E Mërkurë','E Enjte','E Premte','E Shtune'], + dayNamesShort: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayNamesMin: ['Di','Hë','Ma','Më','En','Pr','Sh'], + dayStatus: 'Vendose DD si ditë të parë të javës', dateStatus: '\'Zgjedh\' D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Zgjedhe një datë', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['sq']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-sv.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-sv.js new file mode 100644 index 000000000..c51cc9611 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-sv.js @@ -0,0 +1,25 @@ +/* Swedish initialisation for the jQuery UI date picker plugin. */ +/* Written by Anders Ekdahl ( anders@nomadiz.se). */ +jQuery(function($){ + $.datepicker.regional['se'] = { + clearText: 'Rensa', clearStatus: '', + closeText: 'Stäng', closeStatus: '', + prevText: '«Förra', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'Nästa»', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Idag', currentStatus: '', + monthNames: ['Januari','Februari','Mars','April','Maj','Juni', + 'Juli','Augusti','September','Oktober','November','December'], + monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dec'], + monthStatus: '', yearStatus: '', + weekHeader: 'Ve', weekStatus: '', + dayNamesShort: ['Sön','Mån','Tis','Ons','Tor','Fre','Lör'], + dayNames: ['Söndag','Måndag','Tisdag','Onsdag','Torsdag','Fredag','Lördag'], + dayNamesMin: ['Sö','Må','Ti','On','To','Fr','Lö'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['se']); +}); diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-th.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-th.js new file mode 100644 index 000000000..8801f85d6 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-th.js @@ -0,0 +1,25 @@ +/* Thai initialisation for the jQuery UI date picker plugin. */ +/* Written by pipo (pipo@sixhead.com). */ +jQuery(function($){ + $.datepicker.regional['th'] = { + clearText: 'ลบ', clearStatus: '', + closeText: 'ปิด', closeStatus: '', + prevText: '« ย้อน', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: 'ถัดไป »', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'วันนี้', currentStatus: '', + monthNames: ['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน', + 'กรกฏาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'], + monthNamesShort: ['ม.ค.','ก.พ.','มี.ค.','เม.ย.','พ.ค.','มิ.ย.', + 'ก.ค.','ส.ค.','ก.ย.','ต.ค.','พ.ย.','ธ.ค.'], + monthStatus: '', yearStatus: '', + weekHeader: 'Sm', weekStatus: '', + dayNames: ['อาทิตย์','จันทร์','อังคาร','พุธ','พฤหัสบดี','ศุกร์','เสาร์'], + dayNamesShort: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayNamesMin: ['อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd/mm/yy', firstDay: 0, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['th']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-tr.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-tr.js new file mode 100644 index 000000000..c4e115ef9 --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-tr.js @@ -0,0 +1,25 @@ +/* Turkish initialisation for the jQuery UI date picker plugin. */ +/* Written by Izzet Emre Erkan (kara@karalamalar.net). */ +jQuery(function($){ + $.datepicker.regional['tr'] = { + clearText: 'temizle', clearStatus: 'geçerli tarihi temizler', + closeText: 'kapat', closeStatus: 'sadece göstergeyi kapat', + prevText: '<geri', prevStatus: 'önceki ayı göster', + prevBigText: '<<', prevBigStatus: '', + nextText: 'ileri>', nextStatus: 'sonraki ayı göster', + nextBigText: '>>', nextBigStatus: '', + currentText: 'bugün', currentStatus: '', + monthNames: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', + 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'], + monthNamesShort: ['Oca','Şub','Mar','Nis','May','Haz', + 'Tem','Ağu','Eyl','Eki','Kas','Ara'], + monthStatus: 'başka ay', yearStatus: 'başka yıl', + weekHeader: 'Hf', weekStatus: 'Ayın haftaları', + dayNames: ['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'], + dayNamesShort: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayNamesMin: ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'], + dayStatus: 'Haftanın ilk gününü belirleyin', dateStatus: 'D, M d seçiniz', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: 'Bir tarih seçiniz', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['tr']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-uk.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-uk.js new file mode 100644 index 000000000..59c3d71cc --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-uk.js @@ -0,0 +1,25 @@ +/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */ +/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['uk'] = { + clearText: 'Очистити', clearStatus: '', + closeText: 'Закрити', closeStatus: '', + prevText: '<', prevStatus: '', + prevBigText: '<<', prevBigStatus: '', + nextText: '>', nextStatus: '', + nextBigText: '>>', nextBigStatus: '', + currentText: 'Сьогодні', currentStatus: '', + monthNames: ['Січень','Лютий','Березень','Квітень','Травень','Червень', + 'Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'], + monthNamesShort: ['Січ','Лют','Бер','Кві','Тра','Чер', + 'Лип','Сер','Вер','Жов','Лис','Гру'], + monthStatus: '', yearStatus: '', + weekHeader: 'Не', weekStatus: '', + dayNames: ['неділя','понеділок','вівторок','середа','четвер','пятниця','суббота'], + dayNamesShort: ['нед','пнд','вів','срд','чтв','птн','сбт'], + dayNamesMin: ['Нд','Пн','Вт','Ср','Чт','Пт','Сб'], + dayStatus: 'DD', dateStatus: 'D, M d', + dateFormat: 'dd.mm.yy', firstDay: 1, + initStatus: '', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['uk']); +}); \ No newline at end of file diff --git a/js/jquery/datepicker/ui/i18n/ui.datepicker-zh.js b/js/jquery/datepicker/ui/i18n/ui.datepicker-zh.js new file mode 100644 index 000000000..d24ee268b --- /dev/null +++ b/js/jquery/datepicker/ui/i18n/ui.datepicker-zh.js @@ -0,0 +1,25 @@ +/* Chinese initialisation for the jQuery UI date picker plugin. */ +/* Written by Cloudream (cloudream@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['zh-CN'] = { + clearText: '清除', clearStatus: '清除已选日期', + closeText: '关闭', closeStatus: '不改变当前选择', + prevText: '<上月', prevStatus: '显示上月', + prevBigText: '<<', prevBigStatus: '显示上一年', + nextText: '下月>', nextStatus: '显示下月', + nextBigText: '>>', nextBigStatus: '显示下一年', + currentText: '今天', currentStatus: '显示本月', + monthNames: ['一月','二月','三月','四月','五月','六月', + '七月','八月','九月','十月','十一月','十二月'], + monthNamesShort: ['一','二','三','四','五','六', + '七','八','九','十','十一','十二'], + monthStatus: '选择月份', yearStatus: '选择年份', + weekHeader: '周', weekStatus: '年内周次', + dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], + dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'], + dayNamesMin: ['日','一','二','三','四','五','六'], + dayStatus: '设置 DD 为一周起始', dateStatus: '选择 m月 d日, DD', + dateFormat: 'yy-mm-dd', firstDay: 1, + initStatus: '请选择日期', isRTL: false}; + $.datepicker.setDefaults($.datepicker.regional['zh-CN']); +}); diff --git a/js/jquery/datepicker/ui/index.php b/js/jquery/datepicker/ui/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/js/jquery/datepicker/ui/index.php @@ -0,0 +1,11 @@ +1){j--}if(6*j<1){return i+(Z-i)*6*j}else{if(2*j<1){return Z}else{if(3*j<2){return i+(Z-i)*(2/3-j)*6}else{return i}}}}function Y(Z){var AE,p=1;Z=String(Z);if(Z.charAt(0)=="#"){AE=Z}else{if(/^rgb/.test(Z)){var m=g(Z);var AE="#",AF;for(var j=0;j<3;j++){if(m[j].indexOf("%")!=-1){AF=Math.floor(C(m[j])*255)}else{AF=Number(m[j])}AE+=I[N(AF,0,255)]}p=m[3]}else{if(/^hsl/.test(Z)){var m=g(Z);AE=c(m);p=m[3]}else{AE=B[Z]||Z}}}return{color:AE,alpha:p}}var L={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};var f={};function X(Z){if(f[Z]){return f[Z]}var m=document.createElement("div");var j=m.style;try{j.font=Z}catch(i){}return f[Z]={style:j.fontStyle||L.style,variant:j.fontVariant||L.variant,weight:j.fontWeight||L.weight,size:j.fontSize||L.size,family:j.fontFamily||L.family}}function P(j,i){var Z={};for(var AF in j){Z[AF]=j[AF]}var AE=parseFloat(i.currentStyle.fontSize),m=parseFloat(j.size);if(typeof j.size=="number"){Z.size=j.size}else{if(j.size.indexOf("px")!=-1){Z.size=m}else{if(j.size.indexOf("em")!=-1){Z.size=AE*m}else{if(j.size.indexOf("%")!=-1){Z.size=(AE/100)*m}else{if(j.size.indexOf("pt")!=-1){Z.size=m/0.75}else{Z.size=AE}}}}}Z.size*=0.981;return Z}function AA(Z){return Z.style+" "+Z.variant+" "+Z.weight+" "+Z.size+"px "+Z.family}function t(Z){switch(Z){case"butt":return"flat";case"round":return"round";case"square":default:return"square"}}function W(i){this.m_=V();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=D*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=i;var Z=i.ownerDocument.createElement("div");Z.style.width=i.clientWidth+"px";Z.style.height=i.clientHeight+"px";Z.style.overflow="hidden";Z.style.position="absolute";i.appendChild(Z);this.element_=Z;this.arcScaleX_=1;this.arcScaleY_=1;this.lineScale_=1}var M=W.prototype;M.clearRect=function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);this.textMeasureEl_=null}this.element_.innerHTML=""};M.beginPath=function(){this.currentPath_=[]};M.moveTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"moveTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.lineTo=function(i,Z){var j=this.getCoords_(i,Z);this.currentPath_.push({type:"lineTo",x:j.x,y:j.y});this.currentX_=j.x;this.currentY_=j.y};M.bezierCurveTo=function(j,i,AI,AH,AG,AE){var Z=this.getCoords_(AG,AE);var AF=this.getCoords_(j,i);var m=this.getCoords_(AI,AH);e(this,AF,m,Z)};function e(Z,m,j,i){Z.currentPath_.push({type:"bezierCurveTo",cp1x:m.x,cp1y:m.y,cp2x:j.x,cp2y:j.y,x:i.x,y:i.y});Z.currentX_=i.x;Z.currentY_=i.y}M.quadraticCurveTo=function(AG,j,i,Z){var AF=this.getCoords_(AG,j);var AE=this.getCoords_(i,Z);var AH={x:this.currentX_+2/3*(AF.x-this.currentX_),y:this.currentY_+2/3*(AF.y-this.currentY_)};var m={x:AH.x+(AE.x-this.currentX_)/3,y:AH.y+(AE.y-this.currentY_)/3};e(this,AH,m,AE)};M.arc=function(AJ,AH,AI,AE,i,j){AI*=D;var AN=j?"at":"wa";var AK=AJ+U(AE)*AI-F;var AM=AH+J(AE)*AI-F;var Z=AJ+U(i)*AI-F;var AL=AH+J(i)*AI-F;if(AK==Z&&!j){AK+=0.125}var m=this.getCoords_(AJ,AH);var AG=this.getCoords_(AK,AM);var AF=this.getCoords_(Z,AL);this.currentPath_.push({type:AN,x:m.x,y:m.y,radius:AI,xStart:AG.x,yStart:AG.y,xEnd:AF.x,yEnd:AF.y})};M.rect=function(j,i,Z,m){this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath()};M.strokeRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.stroke();this.currentPath_=p};M.fillRect=function(j,i,Z,m){var p=this.currentPath_;this.beginPath();this.moveTo(j,i);this.lineTo(j+Z,i);this.lineTo(j+Z,i+m);this.lineTo(j,i+m);this.closePath();this.fill();this.currentPath_=p};M.createLinearGradient=function(i,m,Z,j){var p=new v("gradient");p.x0_=i;p.y0_=m;p.x1_=Z;p.y1_=j;return p};M.createRadialGradient=function(m,AE,j,i,p,Z){var AF=new v("gradientradial");AF.x0_=m;AF.y0_=AE;AF.r0_=j;AF.x1_=i;AF.y1_=p;AF.r1_=Z;return AF};M.drawImage=function(AO,j){var AH,AF,AJ,AV,AM,AK,AQ,AX;var AI=AO.runtimeStyle.width;var AN=AO.runtimeStyle.height;AO.runtimeStyle.width="auto";AO.runtimeStyle.height="auto";var AG=AO.width;var AT=AO.height;AO.runtimeStyle.width=AI;AO.runtimeStyle.height=AN;if(arguments.length==3){AH=arguments[1];AF=arguments[2];AM=AK=0;AQ=AJ=AG;AX=AV=AT}else{if(arguments.length==5){AH=arguments[1];AF=arguments[2];AJ=arguments[3];AV=arguments[4];AM=AK=0;AQ=AG;AX=AT}else{if(arguments.length==9){AM=arguments[1];AK=arguments[2];AQ=arguments[3];AX=arguments[4];AH=arguments[5];AF=arguments[6];AJ=arguments[7];AV=arguments[8]}else{throw Error("Invalid number of arguments")}}}var AW=this.getCoords_(AH,AF);var m=AQ/2;var i=AX/2;var AU=[];var Z=10;var AE=10;AU.push(" ','","");this.element_.insertAdjacentHTML("BeforeEnd",AU.join(""))};M.stroke=function(AM){var m=10;var AN=10;var AE=5000;var AG={x:null,y:null};var AL={x:null,y:null};for(var AH=0;AHAL.x){AL.x=Z.x}if(AG.y==null||Z.yAL.y){AL.y=Z.y}}}AK.push(' ">');if(!AM){R(this,AK)}else{a(this,AK,AG,AL)}AK.push("");this.element_.insertAdjacentHTML("beforeEnd",AK.join(""))}};function R(j,AE){var i=Y(j.strokeStyle);var m=i.color;var p=i.alpha*j.globalAlpha;var Z=j.lineScale_*j.lineWidth;if(Z<1){p*=Z}AE.push("')}function a(AO,AG,Ah,AP){var AH=AO.fillStyle;var AY=AO.arcScaleX_;var AX=AO.arcScaleY_;var Z=AP.x-Ah.x;var m=AP.y-Ah.y;if(AH instanceof v){var AL=0;var Ac={x:0,y:0};var AU=0;var AK=1;if(AH.type_=="gradient"){var AJ=AH.x0_/AY;var j=AH.y0_/AX;var AI=AH.x1_/AY;var Aj=AH.y1_/AX;var Ag=AO.getCoords_(AJ,j);var Af=AO.getCoords_(AI,Aj);var AE=Af.x-Ag.x;var p=Af.y-Ag.y;AL=Math.atan2(AE,p)*180/Math.PI;if(AL<0){AL+=360}if(AL<0.000001){AL=0}}else{var Ag=AO.getCoords_(AH.x0_,AH.y0_);Ac={x:(Ag.x-Ah.x)/Z,y:(Ag.y-Ah.y)/m};Z/=AY*D;m/=AX*D;var Aa=z.max(Z,m);AU=2*AH.r0_/Aa;AK=2*AH.r1_/Aa-AU}var AS=AH.colors_;AS.sort(function(Ak,i){return Ak.offset-i.offset});var AN=AS.length;var AR=AS[0].color;var AQ=AS[AN-1].color;var AW=AS[0].alpha*AO.globalAlpha;var AV=AS[AN-1].alpha*AO.globalAlpha;var Ab=[];for(var Ae=0;Ae')}else{if(AH instanceof u){if(Z&&m){var AF=-Ah.x;var AZ=-Ah.y;AG.push("')}}else{var Ai=Y(AO.fillStyle);var AT=Ai.color;var Ad=Ai.alpha*AO.globalAlpha;AG.push('')}}}M.fill=function(){this.stroke(true)};M.closePath=function(){this.currentPath_.push({type:"close"})};M.getCoords_=function(j,i){var Z=this.m_;return{x:D*(j*Z[0][0]+i*Z[1][0]+Z[2][0])-F,y:D*(j*Z[0][1]+i*Z[1][1]+Z[2][1])-F}};M.save=function(){var Z={};Q(this,Z);this.aStack_.push(Z);this.mStack_.push(this.m_);this.m_=d(V(),this.m_)};M.restore=function(){if(this.aStack_.length){Q(this.aStack_.pop(),this);this.m_=this.mStack_.pop()}};function H(Z){return isFinite(Z[0][0])&&isFinite(Z[0][1])&&isFinite(Z[1][0])&&isFinite(Z[1][1])&&isFinite(Z[2][0])&&isFinite(Z[2][1])}function y(i,Z,j){if(!H(Z)){return }i.m_=Z;if(j){var p=Z[0][0]*Z[1][1]-Z[0][1]*Z[1][0];i.lineScale_=k(b(p))}}M.translate=function(j,i){var Z=[[1,0,0],[0,1,0],[j,i,1]];y(this,d(Z,this.m_),false)};M.rotate=function(i){var m=U(i);var j=J(i);var Z=[[m,j,0],[-j,m,0],[0,0,1]];y(this,d(Z,this.m_),false)};M.scale=function(j,i){this.arcScaleX_*=j;this.arcScaleY_*=i;var Z=[[j,0,0],[0,i,0],[0,0,1]];y(this,d(Z,this.m_),true)};M.transform=function(p,m,AF,AE,i,Z){var j=[[p,m,0],[AF,AE,0],[i,Z,1]];y(this,d(j,this.m_),true)};M.setTransform=function(AE,p,AG,AF,j,i){var Z=[[AE,p,0],[AG,AF,0],[j,i,1]];y(this,Z,true)};M.drawText_=function(AK,AI,AH,AN,AG){var AM=this.m_,AQ=1000,i=0,AP=AQ,AF={x:0,y:0},AE=[];var Z=P(X(this.font),this.element_);var j=AA(Z);var AR=this.element_.currentStyle;var p=this.textAlign.toLowerCase();switch(p){case"left":case"center":case"right":break;case"end":p=AR.direction=="ltr"?"right":"left";break;case"start":p=AR.direction=="rtl"?"right":"left";break;default:p="left"}switch(this.textBaseline){case"hanging":case"top":AF.y=Z.size/1.75;break;case"middle":break;default:case null:case"alphabetic":case"ideographic":case"bottom":AF.y=-Z.size/2.25;break}switch(p){case"right":i=AQ;AP=0.05;break;case"center":i=AP=AQ/2;break}var AO=this.getCoords_(AI+AF.x,AH+AF.y);AE.push('');if(AG){R(this,AE)}else{a(this,AE,{x:-i,y:0},{x:AP,y:Z.size})}var AL=AM[0][0].toFixed(3)+","+AM[1][0].toFixed(3)+","+AM[0][1].toFixed(3)+","+AM[1][1].toFixed(3)+",0,0";var AJ=K(AO.x/D)+","+K(AO.y/D);AE.push('','','');this.element_.insertAdjacentHTML("beforeEnd",AE.join(""))};M.fillText=function(j,Z,m,i){this.drawText_(j,Z,m,i,false)};M.strokeText=function(j,Z,m,i){this.drawText_(j,Z,m,i,true)};M.measureText=function(j){if(!this.textMeasureEl_){var Z='';this.element_.insertAdjacentHTML("beforeEnd",Z);this.textMeasureEl_=this.element_.lastChild}var i=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(i.createTextNode(j));return{width:this.textMeasureEl_.offsetWidth}};M.clip=function(){};M.arcTo=function(){};M.createPattern=function(i,Z){return new u(i,Z)};function v(Z){this.type_=Z;this.x0_=0;this.y0_=0;this.r0_=0;this.x1_=0;this.y1_=0;this.r1_=0;this.colors_=[]}v.prototype.addColorStop=function(i,Z){Z=Y(Z);this.colors_.push({offset:i,color:Z.color,alpha:Z.alpha})};function u(i,Z){q(i);switch(Z){case"repeat":case null:case"":this.repetition_="repeat";break;case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=Z;break;default:n("SYNTAX_ERR")}this.src_=i.src;this.width_=i.width;this.height_=i.height}function n(Z){throw new o(Z)}function q(Z){if(!Z||Z.nodeType!=1||Z.tagName!="IMG"){n("TYPE_MISMATCH_ERR")}if(Z.readyState!="complete"){n("INVALID_STATE_ERR")}}function o(Z){this.code=this[Z];this.message=Z+": DOM Exception "+this.code}var x=o.prototype=new Error;x.INDEX_SIZE_ERR=1;x.DOMSTRING_SIZE_ERR=2;x.HIERARCHY_REQUEST_ERR=3;x.WRONG_DOCUMENT_ERR=4;x.INVALID_CHARACTER_ERR=5;x.NO_DATA_ALLOWED_ERR=6;x.NO_MODIFICATION_ALLOWED_ERR=7;x.NOT_FOUND_ERR=8;x.NOT_SUPPORTED_ERR=9;x.INUSE_ATTRIBUTE_ERR=10;x.INVALID_STATE_ERR=11;x.SYNTAX_ERR=12;x.INVALID_MODIFICATION_ERR=13;x.NAMESPACE_ERR=14;x.INVALID_ACCESS_ERR=15;x.VALIDATION_ERR=16;x.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=E;CanvasRenderingContext2D=W;CanvasGradient=v;CanvasPattern=u;DOMException=o})()}; \ No newline at end of file diff --git a/js/jquery/fancybox/blank.gif b/js/jquery/fancybox/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_close.png b/js/jquery/fancybox/fancy_close.png new file mode 100644 index 0000000000000000000000000000000000000000..07035307ad435f8f2f8eedf0bce50f7ec8a858c2 GIT binary patch literal 1517 zcmV1To%f)hA(E>uTT$~N#GA0orBqo9-jKM;POccZrXJjTzge4|Sa0ca~7y<+{ z2m7~>41(Jqf9L`mBM6zAjf4;hkjP@@B~d6Xz385|dB5iCM=Ro&JZZmk-uHdZd2i=@ zK0a@Md;u9DFE7t8BO^nxckf<*yC?SckUFGmX^jwM@NV80+eiP zQ*s##s^a3}Ldwd@cHO*r^T5i=%Fj}=Cr_R@78e&C((#usU;YFS>C)2Dw4tG)YO=*P zWt;6ZfL46;=u!R1$jGM-hhvcpVyCa+S}Q!T2ALHx;BHe#M~BsHHos=s2iW})#C?}q ztqvud-gYjKsG$zHm2XhmYPB(Bn>kzw z=gS!w6cG`jJ$?H00VK+=!cMnBDn?IFkCkj7KmNq~hrkZvU@n=EP}|7Gxw*M}1_lPI zNx@_?IS^|%_ok<(o3gXBH^f+@(X7_g)K~%n0$gMM{{Ab=%gZ*hH99)_Eo>!VJd8_C zE)WMoNsBB#u&}W3BMEnPby>y64F-cra9>kX)4DJoA0KZ5fitNn`NTT4wY3%+fA;Lz zZ+K4ucJi+Mg!m%<>Ug8kSg^LX_JD-5va;NEM#+V_H)8UHgaj8UJ?LiZVx92t@KxlB zb1oz#Bo|{kAO!IDVfOII$VfwRad8C+y?XV^;VEu~g@tQka>%(zhlYl1p7P=0!-vj9 zYiMYw3l0uW##jWq+eZ-;6r@4F%{+PXGcz;xx78|Q_F7Eb+}ynGO@4TI*h!27r4#SzfR=K~ zhtpe&%-o-olT$}R&!0cHdm}}wbdd`2lO~)PlarHXnm>2$+(ng2^$EtJ+=vwl#Xg-* zSA%x<9|=lJ3CXuACMEY46&1O~{LGm%7HKm8lhZ|+Pv?nF1LcJswy+L%zshO4HzpR4skij zxq<8a{QPpl!oq4$R(*n7$-q`gsjcF2;NWZ?##l9wBW)lu_Bpk)RJgGO&Ey+2dDr3J z*x2~aJFl#)G^5U)q~qh`_b^ru6q9Xf%arlfse$W(T#z5f?cqE0>k)x`c6QcMUS4jN z#$B996B84z1O(|{7{3S{Bb#j7?T~OCi+pq$fP9eGqJ%Evk~i}B@#8tcAnk_QAg)9f z!qn81MJO5W0n6>}?Q|$y25QL`+uU$0x?KbSI<(UOBavf=wCW!^J3Ie)^yty-8!yk& z($YLG4fjwT{k&5mHL@*_7Xi1c4?x$HT^y5qc2zyPPCG3CUKl!f@Zj&~&!7K?fD>&z zDk^G(=74sN=`q$#Wm{gaK5myi7K~vRQ8s=CoB+NC8j<}iKpXzI(SMmt*2r@wST=`s zW7t-}X4hPqXy3W00000NkvXXu0mjftFGKG literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_loading.png b/js/jquery/fancybox/fancy_loading.png new file mode 100644 index 0000000000000000000000000000000000000000..2503017960b3972499d3aa92f89953935ae40934 GIT binary patch literal 10195 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 literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_nav_left.png b/js/jquery/fancybox/fancy_nav_left.png new file mode 100644 index 0000000000000000000000000000000000000000..ebaa6a4fd34e51575a01da366312c20618985cbc GIT binary patch literal 1446 zcmV;X1zGxuP)R`@usIzf?P{x4#0gFqr~|(;IJySuwjr=+Ar78e&sHZ(Lu;P)*wKU%|U#jmpg5~Q6= zNl8{#mZGz>Q!_F$qJ8n=#Z9x>Jn_n|ZEtTsSzllOW_Wn`!@Rt_=!l4jAl`tKb-5%L zv7js_CMF<1KR>Fcr{|nbr~AR4Y-MG|y0EZdwI6@^^5yrikSZ}TQ5hH*C?{R4Q{?KT zKD6U2SFWfB2M0g0TCEGD5GUP%Y0a>J0W!M1fVuVU?d@ix(YV91PjUK7@OzY8E)OJ~ z&Q30n%8njA8kC)#t?uvd&xMXHQZzI)WQmTB-n1vQM_gQ-{_*3-7UA?*_bJ9=m|W(F zT+IHE$H&L3T3T8zSS*%BTHM>)YZi;eI#;9uNVch|X-go#ckf=VQmKq2-ORBYaGo52 zejyg&!SS;_ltMX3~N9_#ORsfn&tMTp}T$j*yAd)6-A(_4O6g z0=-^ug|9bVkxorbSsNQ0x9sPG&EF`laq6qgf=!d ztnQGKnVtDqz_Vx1Y=Kr=TU+Vx?;nS;5H`1m#Lv%9fqI)#T3Y%!3C+yRSpE-E!h;77 zwm7Z1{&Y;%TkkIqz&m9sAKBbnCkzsHry#@vbY{a-wI?zu7 zloV4Q9NtQWLUAT7Ev=G-*4EZ6|HZd^F*!MDB>C#<>PDGN_5sGi_Yq4ZlG7@css!ck z9};wyN`LrygSGPaaLVfqXl2Z+Nkm;ygvo12>(Bf+YwDwC`Hbwy5foiCI>(Z2*F z+nZVe;)K}P*aF#9Y8tUS3{lK|w(!NULrkdP#x17leSb zXU`h&IIwaw4`8eqNV6{>BDOh|vjhZ0E{e&QDDu0Pe|>%Zmb;{dg@s0w$z&rPA0K~+ zu^J$UblaCq5g(ljxEe?Y`8AmFYt-vOfqZ&;+Eh?bV07kp3Z#jN34Zfk3!OW_7k zM!Hz%fopN!Lja&lI}y+lIZjBszTeT&@!Ra|?DQ)q4Us*EN5ey8M=zh0NVTlX;X`2G z(+8kuN)-Dfn@v@Ns?$arfE9ks%*_0?uCDGc0&cYN@bK_KngiO{r&oDx0_$@6^x5~= zW5Gx^5k=$2z;)mYpdQiR47B2ZEBzOVMD;v(on_N_Z6xdRarMj=Ped`)=n zv4Dh?$k=SYcJSdjDa(58`F?t%ZzxBbaRs;9zaA#)un(S!5dZ)H07*qoM6N<$g4RXF AD*ylh literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_nav_right.png b/js/jquery/fancybox/fancy_nav_right.png new file mode 100644 index 0000000000000000000000000000000000000000..873294e969db9160f5ddd4e1ab498ff60b080e3f GIT binary patch literal 1454 zcmV;f1yTBmP)Wa6`&Z+!IVkxf`V#(j>y7#5eg z5*PD+C=wGBwT+F9xi*_^fd=>X_FBba@wz8b0c3ma+OG#c&LYnSBp_4S(*6BG8m#QpsI))yBSw}|WBy?ft)>pk?VIMu|0u-xC@UxO$< zHa9o-0~vR8bXeVyB61x;@W6T@vgyO$TgWvPslhu zJ>BGvFeN3$D2UT9wO!c-2M2E;RvddB6cm(&J}nRg`1!DUaA;_#J})n?kc`&W*6f~w z$XoI8@o`6>)z;Ql1O^7iqc4Qr?IQ^Y2vDQmrd_^#`AagIo}RXO6Tw=o)=2K&OZ?8A zJDVKcH{^2p2j~ms)bf#Ff5Y^8{ZZ7~8Zw%koV0nHJ||9`FbS!%u(0sL`TfAafI}Du zN;}#qfQDkqhr?T=R;!O@W@c89(aOq-SHe5pO)Do4INRL6f8R{+tE;Q)Wir`E=nLN^ zERjf#VBjT`yZ^}0T`IW~brs!I17PDwDHNtJpz(@u7&_Ci&*x`nXGh4eva-_hHlhTo z>wKX6jrLg})!Ef*2q(qH#unh5y~V~`*!#E25W2>+0$@y%jAkE;d^% z7KiBQ=;#CV)c|?K?OZZNymTtyIv@+;=i$b0QLhID@u{gPOF=<_+1^cd)FbceJt|Pr3Z2#UW)pC9hbbpr%#_w3xu>9DucKZSqKjwKC}oa!!=;B zxw)ARh3h~maWUsB$KtMw06>R!GGHKatdM5?eS3TRA2TyEQ!m{-s9LkQG(13d^zuqc z)WBRWF9N%+J^)=)qIgeo*i|*CI?Xfzc;V-hCr|!<<;s9veooizpgD1ug<#0dV!Z literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_shadow_e.png b/js/jquery/fancybox/fancy_shadow_e.png new file mode 100644 index 0000000000000000000000000000000000000000..2eda0893649371f8d92b92976d8542cdd1b601ed GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W@!3HGnP3ltxQbwLGjv*Y^lSRZuwe#}JO|p{EaWGAM`~zK|Yh zF7SQ+m+Ig>B0@o-N8?trihfzZ+Vp1~`{zf0o*#X0$hUAi%N$P)W1wCJ22WQ%mvv4F FO#q)zAp-ya literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_shadow_ne.png b/js/jquery/fancybox/fancy_shadow_ne.png new file mode 100644 index 0000000000000000000000000000000000000000..79f6980a3ba5c43de120d963dbba2516b8f27ac7 GIT binary patch literal 347 zcmV-h0i^zkP)dR9Yb&V8f!h)aDezHAsc|y@|hdQ zYJb}?8~~zFbQ)ku!Ey)KSukutuvdZ@MKMX|x|A3tPyx?YVhN^6z!Mi4Mj2f#%<;nh z2{>?YAzu|{u^;Oq!;f7Z4tPBpJEmZ+^GZ#$=9nz(K+UmK7}|u&EPi%aRt_C3qOFB_ zHc`~N>51%{?ijG?xsHt>MwRChgk=x_z0gh3O2xSL)-6?+2LKZL74~Q>MZjWtwukkA tvjRC=&j+0R$&bLyT7MhBcTXDISHC&xXU0&5CWHV0002ovPDHLkV1fX+la~Mh literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_shadow_nw.png b/js/jquery/fancybox/fancy_shadow_nw.png new file mode 100644 index 0000000000000000000000000000000000000000..7182cd938ae98e7e28c65a0bc55df576042ff9f5 GIT binary patch literal 324 zcmV-K0lWT*P)2-&4CO{qhKP$XKD&mgeXEM77>~`RA}h@U^Z##eQZVtM>a-K?QT4 z&(8BFf(rD5V61)2I__wHYuRwoaDIqw5Vdr_JSDVr){#J@r;{vbDL|tRyCiirf~4OF zX-l=Ecm>@yR)1nSMt~dy90Zb`^`)TQbhf8jR@fA!l6V$musRyB9Y{p$SCW}!$3==V zk)fW)Xo{s^ez$t+XhmZj;ts)!kTokvmM>z)zt70000 literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_shadow_se.png b/js/jquery/fancybox/fancy_shadow_se.png new file mode 100644 index 0000000000000000000000000000000000000000..541e3ffd3e88224b34a4d2097c66a780e6060aeb GIT binary patch literal 352 zcmV-m0iXVfP){pM9=`y8<_IvWD02WY@RZ<9dgjNmAB|sYF}Xw>7Sq@O0000eMf9z;FC21=)67q_`W0*0KnS4AR00W2`RGn3i8UfsEegLO@ zPhds?2e1Tm)FK3=bymIAx?X=YFo3Mdh7W?@I#8s#svp!&PB> zwah@Ngd|l0N4SCfzvjtQnd$dZ0yM)N$X+lqdtN!Pt{Wn*_`0U}m1^#r1 mwpaW{;a?9KKt^WrpTAEd?0j1W(3L*`0000P{ho=rRL|66mGO)=r*Hk83F#~lnc)I$ztaD0e0sy?& B8X5oq literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_title_left.png b/js/jquery/fancybox/fancy_title_left.png new file mode 100644 index 0000000000000000000000000000000000000000..6049223d1ec6af46e100499c01f6489c9e2c6240 GIT binary patch literal 503 zcmV+)0005LNklqcp9&~$uJw{{rUub~E?-XJ#Upm4Fe%-Gl z!u%tb0N102a|s5;SPlQvJlFCTBbvYaK@wIW6Gjx@?i20AlVDJcHNfh25WRlbF6CIq zv9_ZnqOH`}ppaUR0@%ZcM9zpDt2uQM>f+Z#wIMmyuui3DeoYXWE|hQ{D$te=Yhgkq zIvyj+$t8T|S1wITzUftNOe(E+Qjn$kDotY;I5}1lRgwi=?K26ke)djLR5W2|!7CVH zJ-`tuAq|`lK978y+CnqGNCkUke_%Gig ukvFM-ftpWh!il7Wg7kz7Y?7xB@G*olNlgoj4E_Yv!rmdKI;Vst0Ha3^zyJUM literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancy_title_right.png b/js/jquery/fancybox/fancy_title_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e36d9db2a7c6e570aec993d3665cbc13620115e2 GIT binary patch literal 506 zcmV+)0005ONklxjQB-g>5=x46nGBwseihc$zfzvTFh(=tCRj6cJ4M&ASrCAq-HbokPnRBAHVa2(-|l wYU(UxfYLN;KDSr z1<%~X^wgl##FWaylc_d9MY*0Xjv*Ddw)7kFH5l+P-xcE$W)3=fYI&uMKVzWNT*W|n zhqlRY)q0r(8Mg&Fu_zpISivgz+b7g)c6G&O{~njE??Y{u-MM!p^=9_W+X-j8mhfK? zj`H2Yy;kp%)!V-M3;EVThyB(Z@o88wpMja-vy^g)SgE!<&|(HpS3j3^P6|6H_V+Po~-c6$N>^IEGZ*^681?Yf#{6Zf~e!I`r4y-J+3m*Ue*gH=cNZ zzpU%p61aCO%jt%FHUKW&bEWLcUAGzK?;SYE)E{9#W9O8@uj{O@89qzNU(dkI YVCW(7-@(*!CeU;SPgg&ebxsLQ07`N|KL7v# literal 0 HcmV?d00001 diff --git a/js/jquery/fancybox/fancybox.png b/js/jquery/fancybox/fancybox.png new file mode 100644 index 0000000000000000000000000000000000000000..65e14f68fd83b87f75c22c0c074e7b20bf20a133 GIT binary patch literal 15287 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 ZMt7F5hocMxav&E)U0Fw|QQ>vO{{ZOG+C=~W literal 0 HcmV?d00001 diff --git a/js/jquery/ifxtransfer.js b/js/jquery/ifxtransfer.js new file mode 100644 index 000000000..fb689214a --- /dev/null +++ b/js/jquery/ifxtransfer.js @@ -0,0 +1,13 @@ +/** + * Interface Elements for jQuery + * FX - transfer + * + * http://interface.eyecon.ro + * + * Copyright (c) 2006 Stefan Petre + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * + */ +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1.2=q;1.Q.P=i(o){p m.O(\'s\',i(){R 1.A.w(m,o)})};1.A.w=i(e,o){5(1.2==q){1(\'S\',n).V(\'\');1.2=1(\'#2\')}1.2.3(\'B\',\'T\').3(\'W\',\'L\');I z=m;z.c=1(e);5(!o||!o.4){p}5(o.4.H==K&&n.G(o.4)){o.4=n.G(o.4)}J 5(!o.4.M){p}5(!o.a){o.a=U}z.a=o.a;z.4=o.4;z.b=o.10;z.9=o.9;5(z.b){1.2.19(z.b)}z.g=0;z.h=0;5(1.18){z.g=(6(1.2.3(\'17\'))||0)+(6(1.2.3(\'1a\'))||0)+(6(1.2.3(\'X\'))||0)+(6(1.2.3(\'1d\'))||0);z.h=(6(1.2.3(\'1c\'))||0)+(6(1.2.3(\'16\'))||0)+(6(1.2.3(\'15\'))||0)+(6(1.2.3(\'Z\'))||0)}z.7=1.u(1.k.v(z.c.l(0)),1.k.r(z.c.l(0)));z.8=1.u(1.k.v(z.4),1.k.r(z.4));z.7.j-=z.g;z.7.d-=z.h;z.8.j-=z.g;z.8.d-=z.h;z.11=o.9;1.2.3(\'C\',z.7.j+\'f\').3(\'E\',z.7.d+\'f\').3(\'F\',z.7.y+\'f\').3(\'D\',z.7.x+\'f\').13({F:z.8.y,D:z.8.x,C:z.8.j,E:z.8.d},z.a,i(){5(z.b)1.2.1b(z.b);1.2.3(\'B\',\'1e\');5(z.9&&z.9.H==Y){z.9.14(z.c.l(0),[z.4])}1.12(z.c.l(0),\'s\')})};',62,77,'|jQuery|transferHelper|css|to|if|parseInt|start|end|complete|duration|classname|el|hb||px|diffWidth|diffHeight|function|wb|iUtil|get|this|document||return|null|getSize|interfaceFX|div|extend|getPosition|itransferTo||||fx|display|width|left|height|top|getElementById|constructor|var|else|String|absolute|childNodes|id|queue|TransferTo|fn|new|body|block|500|append|position|paddingLeft|Function|paddingBottom|className|callback|dequeue|animate|apply|paddingTop|borderBottomWidth|borderLeftWidth|boxModel|addClass|borderRightWidth|removeClass|borderTopWidth|paddingRight|none'.split('|'),0,{})) diff --git a/js/jquery/imgareaselect/border-anim-h.gif b/js/jquery/imgareaselect/border-anim-h.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec9f5da73bc898de604c0c1b34f57a81440f896b GIT binary patch literal 219 zcmZ?wbhEHbWMg1tSjfQe|Nnmm1_m=TGay6pKewN2NU*bGfUA+70W%{|Lh+xJb5Uwy zNotBhd1gt5LSj~8MNWQVie6@3T0Vo~PZkC)hW`vYK$Q$20~wf@Mf8F|;*4Aj%qZeh a8gPg=vSL-=!WV#5oTUZ3cuOlQgEauT=O=Uk literal 0 HcmV?d00001 diff --git a/js/jquery/imgareaselect/border-anim-v.gif b/js/jquery/imgareaselect/border-anim-v.gif new file mode 100644 index 0000000000000000000000000000000000000000..331cc90b0e4e4d0c1e01ead2f9bab6aed61d2e06 GIT binary patch literal 219 zcmZ?wbhEHbWMp7tSjfQe|Nnmm1_m=TGay6pKewN2NU*bGfUA+70W%{|Lh+xJb5Uwy zNotBhd1gt5LSj~8MNWQVie6@3T0Vo~PZkC)hW`vYK$Q$20~wf@Mf8F|;*4Aj%qZeh a8gPg=vSL-=!WV#5oTUZ3cuOlQgEauTp(k_z literal 0 HcmV?d00001 diff --git a/js/jquery/imgareaselect/border-h.gif b/js/jquery/imgareaselect/border-h.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2aa5b0d09bf7215199dbf9a291b34b11d0352d4 GIT binary patch literal 72 zcmZ?wbhEHbWMg1tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaY_|= literal 0 HcmV?d00001 diff --git a/js/jquery/imgareaselect/border-v.gif b/js/jquery/imgareaselect/border-v.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bfd55564099537d38d4112f550b8974744de3ca GIT binary patch literal 72 zcmZ?wbhEHbWMp7tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaW)ls literal 0 HcmV?d00001 diff --git a/js/jquery/imgareaselect/imgareaselect-animated.css b/js/jquery/imgareaselect/imgareaselect-animated.css new file mode 100644 index 000000000..82d3d42fb --- /dev/null +++ b/js/jquery/imgareaselect/imgareaselect-animated.css @@ -0,0 +1,41 @@ +/* + * imgAreaSelect animated border style + */ + +.imgareaselect-border1 { + background: url(border-anim-v.gif) repeat-y left top; +} + +.imgareaselect-border2 { + background: url(border-anim-h.gif) repeat-x left top; +} + +.imgareaselect-border3 { + background: url(border-anim-v.gif) repeat-y right top; +} + +.imgareaselect-border4 { + background: url(border-anim-h.gif) repeat-x left bottom; +} + +.imgareaselect-border1, .imgareaselect-border2, +.imgareaselect-border3, .imgareaselect-border4 { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-handle { + background-color: #fff; + border: solid 1px #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-outer { + background-color: #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-selection { +} \ No newline at end of file diff --git a/js/jquery/imgareaselect/imgareaselect-default.css b/js/jquery/imgareaselect/imgareaselect-default.css new file mode 100644 index 000000000..18bf07b24 --- /dev/null +++ b/js/jquery/imgareaselect/imgareaselect-default.css @@ -0,0 +1,41 @@ +/* + * imgAreaSelect default style + */ + +.imgareaselect-border1 { + background: url(border-v.gif) repeat-y left top; +} + +.imgareaselect-border2 { + background: url(border-h.gif) repeat-x left top; +} + +.imgareaselect-border3 { + background: url(border-v.gif) repeat-y right top; +} + +.imgareaselect-border4 { + background: url(border-h.gif) repeat-x left bottom; +} + +.imgareaselect-border1, .imgareaselect-border2, +.imgareaselect-border3, .imgareaselect-border4 { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-handle { + background-color: #fff; + border: solid 1px #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-outer { + background-color: #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-selection { +} \ No newline at end of file diff --git a/js/jquery/imgareaselect/imgareaselect-deprecated.css b/js/jquery/imgareaselect/imgareaselect-deprecated.css new file mode 100644 index 000000000..e2809ccff --- /dev/null +++ b/js/jquery/imgareaselect/imgareaselect-deprecated.css @@ -0,0 +1,36 @@ +/* + * imgAreaSelect style to be used with deprecated options + */ + +.imgareaselect-border1, .imgareaselect-border2, +.imgareaselect-border3, .imgareaselect-border4 { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-border1 { + border: solid 1px #000; +} + +.imgareaselect-border2 { + border: dashed 1px #fff; +} + +.imgareaselect-handle { + background-color: #fff; + border: solid 1px #000; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.imgareaselect-outer { + background-color: #000; + opacity: 0.4; + filter: alpha(opacity=40); +} + +.imgareaselect-selection { + background-color: #fff; + opacity: 0; + filter: alpha(opacity=0); +} diff --git a/js/jquery/imgareaselect/index.php b/js/jquery/imgareaselect/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/js/jquery/imgareaselect/index.php @@ -0,0 +1,11 @@ +35?String.fromCharCode(c+29):c.toString(36))};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(m($){1o W=2o.4F,F=2o.4E,M=2o.4D,G=2o.4C;m S(){v $("<4B/>")};$.R=m(X,b){1o L=$(X),2x,A=S(),1k=S(),I=S().u(S()).u(S()).u(S()),B=S().u(S()).u(S()).u(S()),E=$([]),1D,H,q,1g,12,U,1n,1f,1b=0,1B="1A",2e,2d,25,24,1M=10,N,P,1H,c,f,l,j,g={c:0,f:0,l:0,j:0,C:0,J:0},$p,d,i,o,w,h,2k;m 11(x){v x+1g.D-1f.D};m 1m(y){v y+1g.q-1f.q};m 19(x){v x-1g.D+1f.D};m 18(y){v y-1g.q+1f.q};m 1y(3G){v 3G.4A-1f.D};m 1x(3F){v 3F.4z-1f.q};m 14(2W){1o 1i=2W||25,1h=2W||24;v{c:G(g.c*1i),f:G(g.f*1h),l:G(g.l*1i),j:G(g.j*1h),C:G(g.l*1i)-G(g.c*1i),J:G(g.j*1h)-G(g.f*1h)}};m 2t(c,f,l,j,2V){1o 1i=2V||25,1h=2V||24;g={c:G(c/1i),f:G(f/1h),l:G(l/1i),j:G(j/1h)};g.C=(l=11(g.l))-(c=11(g.c));g.J=(j=11(g.j))-(f=11(g.f))};m 1c(){a(!L.C()){v}1g={D:G(L.2n().D),q:G(L.2n().q)};12=L.C();U=L.J();a($().4y=="1.3.2"&&$.1l.33&&1B=="26"){1g.q+=F(V.3E.2l,$("1r").2l());1g.D+=F(V.3E.2m,$("1r").2m())}1f=$.4x(1n.r("1p"),["1A","4w"])+1?{D:G(1n.2n().D)-1n.2m(),q:G(1n.2n().q)-1n.2l()}:1B=="26"?{D:$(V).2m(),q:$(V).2l()}:{D:0,q:0};H=11(0);q=1m(0)};m 1s(3B){a(!1H){v}A.r({D:11(g.c),q:1m(g.f)}).u(1k).C(w=g.C).J(h=g.J);1k.u(I).u(E).r({D:0,q:0});I.C(F(w-I.2U()+I.3z(),0)).J(F(h-I.3D()+I.4v(),0));$(B[0]).r({D:H,q:q,C:g.c,J:U});$(B[1]).r({D:H+g.c,q:q,C:w,J:g.f});$(B[2]).r({D:H+g.l,q:q,C:12-g.l,J:U});$(B[3]).r({D:H+g.c,q:q+g.j,C:w,J:U-g.j});w-=E.2U();h-=E.3D();2H(E.3n){15 8:$(E[4]).r({D:w/2});$(E[5]).r({D:w,q:h/2});$(E[6]).r({D:w/2,q:h});$(E[7]).r({q:h/2});15 4:E.3C(1,3).r({D:w});E.3C(2,4).r({q:h})}a(3B!==Y){a($.R.1Y!=2L){$(V).T($.R.1Y,$.R.3A)}a(b.1J){$(V)[$.R.1Y]($.R.3A=2L)}}a($.1l.1X&&I.2U()-I.3z()==2){I.r("3y",0);3t(m(){I.r("3y","4u")},0)}};m 1Z(2T,2p){b.1G?2T.4t(b.1G,2p):2T.1t()};m 1d(2S){1o x=19(1y(2S))-g.c,y=18(1x(2S))-g.f;a(!2k){1c();2k=1a;A.1j("4s",m(){2k=Y})}N="";a(b.2r){a(y<=1M){N="n"}Z{a(y>=g.J-1M){N="s"}}a(x<=1M){N+="w"}Z{a(x>=g.C-1M){N+="e"}}}A.r("2R",N?N+"-17":b.1U?"4r":"");a(1D){1D.4q()}};m 2O(4p){$("1r").r("2R","");a(b.4o||g.C*g.J==0){1Z(A.u(B),m(){$(Q).1t()})}b.1R(X,14());$(V).T("O",2f);A.O(1d)};m 2v(1L){a(1L.2K!=1){v Y}1c();a(N){$("1r").r("2R",N+"-17");c=11(g[/w/.2h(N)?"l":"c"]);f=1m(g[/n/.2h(N)?"j":"f"]);$(V).O(2f).1j("1K",2O);A.T("O",1d)}Z{a(b.1U){2e=H+g.c-1y(1L);2d=q+g.f-1x(1L);A.T("O",1d);$(V).O(2P).1j("1K",m(){b.1R(X,14());$(V).T("O",2P);A.O(1d)})}Z{L.1F(1L)}}v Y};m 29(){l=F(H,M(H+12,c+W(j-f)*P*(l>c||-1)));j=G(F(q,M(q+U,f+W(l-c)/P*(j>f||-1))));l=G(l)};m 2a(){j=F(q,M(q+U,f+W(l-c)/P*(j>f||-1)));l=G(F(H,M(H+12,c+W(j-f)*P*(l>c||-1))));j=G(j)};m 28(){a(W(l-c)H+12){c=H+12-b.2j}}}a(W(j-f)q+U){f=q+U-b.2i}}}l=F(H,M(l,H+12));j=F(q,M(j,q+U));a(P){a(W(l-c)/P>W(j-f)){2a()}Z{29()}}a(W(l-c)>b.3x){l=c-b.3x*(lb.3w){j=f-b.3w*(j1b){1b=$p.r("z-2E")}a($p.r("1p")=="26"){1B="26"}$p=$p.1T()}a(!1u(b.1q)){1b=b.1q}a(K.2D!=3l){E.4h();E=$([]);i=K.2D?K.2D=="4g"?4:8:0;3m(i--){E=E.u(S())}E.21(b.1C+"-4f").r({1p:"1A",4e:0,1q:1b+1||1});a(!4d(E.r("C"))){E.C(5).J(5)}a(o=b.2C){E.r({2C:o,2z:"3h"})}1I(E,{3i:"2B-20",3g:"2A-20",3j:"1e"})}25=b.4c/12||1;24=b.4b/U||1;a(K.c!=3l){2t(K.c,K.f,K.l,K.j);K.2y=!K.1t}a(K.1J){b.1J=$.1V({23:1,22:"17"},K.1J)}B.21(b.1C+"-4a");1k.21(b.1C+"-49");3k(i=0;i++<4;){$(I[i-1]).21(b.1C+"-2B"+i)}1I(1k,{48:"2A-20",47:"1e"});1I(I,{3j:"1e",2C:"2B-C"});1I(B,{46:"2A-20",45:"1e"});a(o=b.3i){$(I[0]).r({2z:"3h",3f:o})}a(o=b.3g){$(I[1]).r({2z:"44",3f:o})}A.3e(1k.u(I).u(E).u(1D));a($.1l.1X){a(o=B.r("3d").3c(/1e=([0-9]+)/)){B.r("1e",o[1]/1W)}a(o=I.r("3d").3c(/1e=([0-9]+)/)){I.r("1e",o[1]/1W)}}a(K.1t){1Z(A.u(B))}Z{a(K.2y&&2x){1H=1a;A.u(B).2w(b.1G||0);1s()}}P=(d=(b.43||"").42(/:/))[0]/d[1];a(b.1P||b.1z===Y){A.T("O",1d).T("1F",2v);L.u(B).T("1F",2u);$(3b).T("17",1E);L.u(L.3a()).T("36",1E)}Z{a(b.1z||b.1P===Y){a(b.2r||b.1U){A.O(1d).1F(2v)}a(!b.41){L.u(B).1F(2u)}$(3b).17(1E);L.u(L.3a()).36(1E)}}b.1z=b.1P=1O};Q.3Z=m(){v b};Q.2X=2s;Q.3Y=14;Q.3X=2t;Q.3W=m 35(34){1c();1s(34);c=11(g.c);f=1m(g.f);l=11(g.l);j=1m(g.j)};a($.1l.1X){L.3V("3U","3T")}$.R.1Y=$.1l.1X||$.1l.33?"3S":"3R";a($.1l.3Q){1D=S().r({C:"1W%",J:"1W%",1p:"1A",1q:1b+2||2})}2s(b=$.1V({1C:"3P",1U:1a,2r:1a,1T:"1r",32:m(){},31:m(){},1S:m(){},1R:m(){}},b));A.u(B).r({30:"2Z",1p:1B,3O:"2Z",1q:1b||"0"});A.r({1q:1b+2||2});1k.u(I).r({1p:"1A"});X.2Y||X.3N=="2Y"||!L.1Q("3M")?2q():L.1j("3L",2q)};$.2p.R=m(16){16=16||{};Q.3K(m(){a($(Q).1N("R")){$(Q).1N("R").2X(16)}Z{a(16.1z===1O&&16.1P===1O){16.1z=1a}$(Q).1N("R",3J $.R(Q,16))}});a(16.3I){v $(Q).1N("R")}v Q}})(3H);',62,290,'||||||||||if|_7|x1|||y1|_20|||y2||x2|function||||top|css|||add|return|||||_a|_d|width|left|_e|_2|_4|_10|_c|height|_4d|_8|_3|_1d|mousemove|_1e|this|imgAreaSelect|_5|unbind|_13|document|_1|_6|false|else||_22|_12|_48|_28|case|_4f|resize|_25|_24|true|_16|_2c|_32|opacity|_15|_11|sy|sx|one|_b|browser|_23|_14|var|position|zIndex|body|_2d|hide|isNaN|break|_3e|evY|evX|enable|absolute|_17|classPrefix|_f|_46|mousedown|fadeSpeed|_1f|_49|keys|mouseup|_38|_1c|data|undefined|disable|is|onSelectEnd|onSelectChange|parent|movable|extend|100|msie|keyPress|_30|color|addClass|ctrl|shift|_1b|_1a|fixed|option|_3c|_3a|_3b|altKey|_45|_19|_18|_36|_41|test|minHeight|minWidth|_21|scrollTop|scrollLeft|offset|Math|fn|_47|resizable|_4c|_2a|_44|_37|fadeIn|_9|show|borderStyle|background|border|borderWidth|handles|index|_4b|key|switch|alt|arrows|which|_2f|_43|_42|_34|_39|_3d|cursor|_33|_31|outerWidth|_2b|_29|setOptions|complete|hidden|visibility|onSelectStart|onInit|safari|_4e|doUpdate|scroll||||parents|window|match|filter|append|borderColor|borderColor2|solid|borderColor1|borderOpacity|for|null|while|length|_4a|default|originalEvent|ctrlKey|shiftKey|setTimeout|_40|_3f|maxHeight|maxWidth|margin|innerWidth|onKeyPress|_2e|slice|outerHeight|documentElement|_27|_26|jQuery|instance|new|each|load|img|readyState|overflow|imgareaselect|opera|keypress|keydown|on|unselectable|attr|update|setSelection|getSelection|getOptions||persistent|split|aspectRatio|dashed|outerOpacity|outerColor|selectionOpacity|selectionColor|selection|outer|imageHeight|imageWidth|parseInt|fontSize|handle|corners|remove|in|keyCode|animated|visible|not|preventDefault|autoHide|_35|toggle|move|mouseout|fadeOut|auto|innerHeight|relative|inArray|jquery|pageY|pageX|div|round|min|max|abs'.split('|'))) diff --git a/js/jquery/index.php b/js/jquery/index.php new file mode 100644 index 000000000..15aba8204 --- /dev/null +++ b/js/jquery/index.php @@ -0,0 +1,11 @@ +35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('9.J={1C:6(e){4 x=0;4 y=0;4 7=e.Y;4 12=1H;c(9(e).8(\'A\')==\'T\'){4 N=7.B;4 Q=7.z;12=1f;7.B=\'1r\';7.A=\'1q\';7.z=\'1d\'}4 3=e;R(3){x+=3.1h+(3.O&&!9.1m.1i?d(3.O.17)||0:0);y+=3.1n+(3.O&&!9.1m.1i?d(3.O.18)||0:0);3=3.1t}3=e;R(3&&3.1e&&3.1e.16()!=\'f\'){x-=3.u||0;y-=3.F||0;3=3.1D}c(12==1f){7.A=\'T\';7.z=Q;7.B=N}a{x:x,y:y}},1B:6(3){4 x=0,y=0;R(3){x+=3.1h||0;y+=3.1n||0;3=3.1t}a{x:x,y:y}},1s:6(e){4 w=9.8(e,\'1E\');4 h=9.8(e,\'1G\');4 o=0;4 q=0;4 7=e.Y;c(9(e).8(\'A\')!=\'T\'){o=e.V;q=e.U}p{4 N=7.B;4 Q=7.z;7.B=\'1r\';7.A=\'1q\';7.z=\'1d\';o=e.V;q=e.U;7.A=\'T\';7.z=Q;7.B=N}a{w:w,h:h,o:o,q:q}},1F:6(3){a{o:3.V||0,q:3.U||0}},1I:6(e){4 h,w,C;c(e){w=e.I;h=e.G}p{C=5.j;w=1c.14||P.14||(C&&C.I)||5.f.I;h=1c.10||P.10||(C&&C.G)||5.f.G}a{w:w,h:h}},1p:6(e){4 t=0,l=0,w=0,h=0,s=0,E=0;c(e&&e.1u.16()!=\'f\'){t=e.F;l=e.u;w=e.15;h=e.W;s=0;E=0}p{c(5.j){t=5.j.F;l=5.j.u;w=5.j.15;h=5.j.W}p c(5.f){t=5.f.F;l=5.f.u;w=5.f.15;h=5.f.W}s=P.14||5.j.I||5.f.I||0;E=P.10||5.j.G||5.f.G||0}a{t:t,l:l,w:w,h:h,s:s,E:E}},1v:6(e,D){4 3=9(e);4 t=3.8(\'1w\')||\'\';4 r=3.8(\'1x\')||\'\';4 b=3.8(\'1A\')||\'\';4 l=3.8(\'1z\')||\'\';c(D)a{t:d(t)||0,r:d(r)||0,b:d(b)||0,l:d(l)};p a{t:t,r:r,b:b,l:l}},1y:6(e,D){4 3=9(e);4 t=3.8(\'1J\')||\'\';4 r=3.8(\'1M\')||\'\';4 b=3.8(\'27\')||\'\';4 l=3.8(\'28\')||\'\';c(D)a{t:d(t)||0,r:d(r)||0,b:d(b)||0,l:d(l)};p a{t:t,r:r,b:b,l:l}},26:6(e,D){4 3=9(e);4 t=3.8(\'18\')||\'\';4 r=3.8(\'22\')||\'\';4 b=3.8(\'23\')||\'\';4 l=3.8(\'17\')||\'\';c(D)a{t:d(t)||0,r:d(r)||0,b:d(b)||0,l:d(l)||0};p a{t:t,r:r,b:b,l:l}},2e:6(L){4 x=L.2d||(L.2b+(5.j.u||5.f.u))||0;4 y=L.2c||(L.29+(5.j.F||5.f.F))||0;a{x:x,y:y}},X:6(g,13){13(g);g=g.1O;R(g){9.J.X(g,13);g=g.1L}},1N:6(g){9.J.X(g,6(3){19(4 Z 1T 3){c(1Z 3[Z]===\'6\'){3[Z]=1a}}})},1X:6(3,H){4 k=9.J.1p();4 11=9.J.1s(3);c(!H||H==\'1W\')9(3).8({1U:k.t+((1g.1o(k.h,k.E)-k.t-11.q)/2)+\'1j\'});c(!H||H==\'20\')9(3).8({1Y:k.l+((1g.1o(k.w,k.s)-k.l-11.o)/2)+\'1j\'})},2f:6(3,1l){4 1k=9(\'25[@M*="S"]\',3||5),S;1k.24(6(){S=K.M;K.M=1l;K.Y.2a="21:1R.1P.1V(M=\'"+S+"\')"})}};[].1b||(1S.1Q.1b=6(v,n){n=(n==1a)?0:n;4 m=K.1K;19(4 i=n;i35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[(function(e){return d[e]})];e=(function(){return'\\w+'});c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('u m(){$.5={D:y,v:y};$(G).12(m(){8 h=G.W(\'I\');$(h).e({\'3\':\'J\',\'6-3\':\'K\'});$(\'L\').M(h);$.5.v=(h.s&&h.s==2);$(h).N();b($.5.v)o;$.5.D=O;$.5.A();$(\':5\').5()});$.5.A=m(){8 p=u E(\'6-3\',\'6-4\',\'9-3\',\'9-4\');8 5=u E();Q(8 i=0;i7[\'9-3\'])k=7[\'9-3\'];b(7[\'6-3\']!=f.g&&k<7[\'6-3\'])k=7[\'6-3\'];b(7[\'9-4\']!=f.g&&l>7[\'9-4\'])l=7[\'9-4\'];b(7[\'6-4\']!=f.g&&l<7[\'6-4\'])l=7[\'6-4\'];b(k!=3)$(c).e(\'3\',k);b(l!=4)$(c).e(\'4\',l)})};m r(t,p){8 q=$(t).e(p);b(q==f.g||q==\'z\')o f.g;8 j;j=q.B(/^\\+?(\\d*(?:\\.\\d+)?)%$/);b(j){o T.V(C((/3$/.h(p)?$(t).F().H(0).s:$(t).F().H(0).w)*j[1]/P))}j=q.B(/^\\+?(\\d*(?:\\.\\d+)?)(?:11)?$/);b(j){o C(j[1])}o f.g}}();',62,65,'|||width|height|minmax|min|constraint|var|max||if|this||css|window|undefined|test||result|newWidth|newHeight|function|expr|return||raw|calculate|offsetWidth|obj|new|native|offsetHeight||false|auto|expressions|match|Number|active|Array|parent|document|get|div|1px|2px|body|append|remove|true|100|for|length|0px|Math|charAt|round|createElement|none|join|fn|each|px|ready'.split('|'),0,{})) diff --git a/js/jquery/jquery-1.4.4.min.js b/js/jquery/jquery-1.4.4.min.js new file mode 100644 index 000000000..8f3ca2e2d --- /dev/null +++ b/js/jquery/jquery-1.4.4.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
      a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="

      ";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
      t
      ";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

      ";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
      ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
      ","
      "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
      ").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/js/jquery/jquery-colorpicker.js b/js/jquery/jquery-colorpicker.js new file mode 100644 index 000000000..7f4189458 --- /dev/null +++ b/js/jquery/jquery-colorpicker.js @@ -0,0 +1,573 @@ +/* + mColorPicker + Version: 1.0 r21 + + Copyright (c) 2010 Meta100 LLC. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + Except as contained in this notice, the name(s) of the above + copyright holders shall not be used in advertising or otherwise + to promote the sale, use or other dealings in this Software + without prior written authorization. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. +*/ + +// After this script loads set: +// $.fn.mColorPicker.init.replace = '.myclass' +// to have this script apply to input.myclass, +// instead of the default input[type=color] +// To turn of automatic operation and run manually set: +// $.fn.mColorPicker.init.replace = false +// To use manually call like any other jQuery plugin +// $('input.foo').mColorPicker({options}) +// options: +// imageFolder - Change to move image location. +// swatches - Initial colors in the swatch, must an array of 10 colors. +// init: +// $.fn.mColorPicker.init.enhancedSwatches - Turn of saving and loading of swatch to cookies. +// $.fn.mColorPicker.init.allowTransparency - Turn off transperancy as a color option. +// $.fn.mColorPicker.init.showLogo - Turn on/off the meta100 logo (You don't really want to turn it off, do you?). + +(function($){ + + $.fn.mColorPicker = function(options) { + + $o = $.extend($.fn.mColorPicker.defaults, options); + + if ($o.swatches.length < 10) $o.swatches = $.fn.mColorPicker.defaults.swatches + if ($("div#mColorPicker").length < 1) $.fn.mColorPicker.drawPicker(); + + this.each(function () { + + $.fn.mColorPicker.drawPickerTriggers($(this)); + }); + + $('.mColorPickerInput').unbind().bind('keyup', function () { + + try { + + $(this).css({ + 'background-color': $(this).val() + }).css({ + 'color': $.fn.mColorPicker.textColor($(this).css('background-color')) + }).trigger('change'); + } catch (r) {} + }); + }; + + $.fn.mColorPicker.currentColor = false; + $.fn.mColorPicker.currentValue = false; + $.fn.mColorPicker.color = false; + + $.fn.mColorPicker.init = { + replace: '[type=color]', + enhancedSwatches: true, + allowTransparency: true, + showLogo: true + }; + + $.fn.mColorPicker.defaults = { + imageFolder: '../img/admin/', + swatches: [ + "#ffffff", + "#ffff00", + "#00ff00", + "#00ffff", + "#0000ff", + "#ff00ff", + "#ff0000", + "#4c2b11", + "#3b3b3b", + "#000000" + ] + }; + + $.fn.mColorPicker.drawPickerTriggers = function ($t) { + + if ($t[0].nodeName.toLowerCase() != 'input') return false + if ($t.data('mColorPicker') == 'true') return false + + var id = $t.attr('id'), + currentTime = new Date(), + hidden = false; + + if (id == '') id = $t.attr('name'); + if (id == '') id = 'color_' + Math.round(Math.random() * currentTime.getTime()); + + $t.attr('id', id); + + if ($t.attr('text') == 'hidden' || $t.attr('data-text') == 'hidden') hidden = true; + + var color = $t.val(), + width = ($t.width() > 0)? $t.width(): parseInt($t.css('width'), 10), + height = ($t.height())? $t.height(): parseInt($t.css('height'), 10), + flt = $t.css('float'), + image = (color == 'transparent')? "url('" + $o.imageFolder + "/grid.gif')": '', + colorPicker = ''; + + $('body').append(''); + $('span#color_work_area').append($t.clone(true)); + colorPicker = $('span#color_work_area').html().replace(/type=[^a-z]*color[^a-z]*/gi, (hidden)? 'type="hidden"': 'type="text"'); + $('span#color_work_area').html('').remove(); + $t.after( + (hidden)? ' ': '' + ).after(colorPicker).remove(); + + if (hidden) { + + $('#icp_' + id).css({ + 'background-color': color, + 'background-image': image, + 'display': 'inline-block' + }); + } else { + + $('#' + id).css({ + 'background-color': color, + 'background-image': image + }).css({ + 'color': $.fn.mColorPicker.textColor($('#' + id).css('background-color')) + }).after( + '' + ).addClass('mColorPickerInput'); + } + + $('#icp_' + id).bind('click', function () { + + $.fn.mColorPicker.colorShow(id, hidden); + }).data('mColorPicker', 'true'); + }; + + $.fn.mColorPicker.drawPicker = function () { + + $(document.createElement("div")).attr( + "id","mColorPicker" + ).css( + 'display','none' + ).html( + '
      ' + ).appendTo("body"); + + $(document.createElement("div")).attr("id","mColorPickerBg").css({ + 'display': 'none' + }).appendTo("body"); + + for (n = 9; n > -1; n--) { + + $(document.createElement("div")).attr({ + 'id': 'cell' + n, + 'class': "mPastColor" + ((n > 0)? ' mNoLeftBorder': '') + }).html( + ' ' + ).prependTo("#mColorPickerSwatches"); + } + + $('#mColorPicker').css({ + 'border':'1px solid #ccc', + 'color':'#fff', + 'z-index':999998, + 'width':'194px', + 'height':'157px', + 'font-size':'12px', + 'font-family':'times' + }); + + $('.mPastColor').css({ + 'height':'18px', + 'width':'18px', + 'border':'1px solid #000', + 'float':'left' + }); + + $('#colorPreview').css({ + 'height':'50px' + }); + + $('.mNoLeftBorder').css({ + 'border-left':0 + }); + + $('.mClear').css({ + 'clear':'both' + }); + + $('#mColorPickerWrapper').css({ + 'position':'relative', + 'border':'solid 1px gray', + 'z-index':999999 + }); + + $('#mColorPickerImg').css({ + 'height':'128px', + 'width':'192px', + 'border':0, + 'cursor':'crosshair', + 'background-image':"url('" + $o.imageFolder + "colorpicker.png')" + }); + + $('#mColorPickerImgGray').css({ + 'height':'8px', + 'width':'192px', + 'border':0, + 'cursor':'crosshair', + 'background-image':"url('" + $o.imageFolder + "graybar.jpg')" + }); + + $('#mColorPickerInput').css({ + 'border':'solid 1px gray', + 'font-size':'10pt', + 'margin':'3px', + 'width':'80px' + }); + + $('#mColorPickerImgGrid').css({ + 'border':0, + 'height':'20px', + 'width':'20px', + 'vertical-align':'text-bottom' + }); + + $('#mColorPickerSwatches').css({ + 'border-right':'1px solid #000' + }); + + $('#mColorPickerFooter').css({ + 'background-image':"url('" + $o.imageFolder + "grid.gif')", + 'position': 'relative', + 'height':'26px' + }); + + if ($.fn.mColorPicker.init.allowTransparency) $('#mColorPickerFooter').prepend('transparent'); + if ($.fn.mColorPicker.init.showLogo) $('#mColorPickerFooter').prepend('Meta100 - Designing Fun'); + + $("#mColorPickerBg").click(function() { + + $("#mColorPickerBg").hide(); + $("#mColorPicker").fadeOut() + }); + + var swatch = ($.fn.mColorPicker.init.enhancedSwatches)? $.fn.mColorPicker.getCookie('swatches'): $o.swatches, + i = 0; + + if (swatch == null) swatch = $o.swatches; + else swatch = swatch.split('||'); + + if (swatch.length < 10) swatch = $o.swatches; + + $(".mPastColor").each(function() { + + $(this).css('background-color', swatch[i++].toLowerCase()); + }); + }; + + $.fn.mColorPicker.colorShow = function (id, updateInput) { + + var $e = $("#icp_" + id); + pos = $e.offset(), + $i = $("#" + id); + hex = $i.attr('data-hex') || $i.attr('hex'), + pickerTop = pos.top + $e.outerHeight(), + pickerLeft = pos.left, + $d = $(document), + $m = $("#mColorPicker"); + + // KEEP COLOR PICKER IN VIEWPORT + if (pickerTop + $m.height() > $d.height()) pickerTop = pos.top - $m.height(); + if (pickerLeft + $m.width() > $d.width()) pickerLeft = pos.left - $m.width() + $e.outerWidth(); + + $m.css({ + 'top':(pickerTop) + "px", + 'left':(pickerLeft) + "px", + 'position':'absolute' + }).fadeIn("fast"); + + $("#mColorPickerBg").css({ + 'z-index':999990, + 'background':'black', + 'opacity': .01, + 'position':'absolute', + 'top':0, + 'left':0, + 'width': parseInt($d.width(), 10) + 'px', + 'height': parseInt($d.height(), 10) + 'px' + }).show(); + + var def = $i.val(); + + $('#colorPreview span').text(def); + $('#colorPreview').css('background', def); + $('#color').val(def); + + if (updateInput) $.fn.mColorPicker.currentColor = $e.css('background-color'); + else $.fn.mColorPicker.currentColor = $i.css('background-color'); + + if (hex == 'true') $.fn.mColorPicker.currentColor = $.fn.mColorPicker.RGBtoHex($.fn.mColorPicker.currentColor); + + $("#mColorPickerInput").val($.fn.mColorPicker.currentColor); + $('.mColor, .mPastColor').bind('mousemove', function(e) { + + var offset = $(this).offset(); + + $.fn.mColorPicker.color = $(this).css("background-color"); + + if ($(this).hasClass('mPastColor') && hex == 'true') $.fn.mColorPicker.color = $.fn.mColorPicker.RGBtoHex($.fn.mColorPicker.color); + else if ($(this).hasClass('mPastColor') && hex != 'true') $.fn.mColorPicker.color = $.fn.mColorPicker.hexToRGB($.fn.mColorPicker.color); + else if ($(this).attr('id') == 'mColorPickerTransparent') $.fn.mColorPicker.color = 'transparent'; + else if (!$(this).hasClass('mPastColor')) $.fn.mColorPicker.color = $.fn.mColorPicker.whichColor(e.pageX - offset.left, e.pageY - offset.top + (($(this).attr('id') == 'mColorPickerImgGray')? 128: 0), hex); + + $.fn.mColorPicker.setInputColor(id, $.fn.mColorPicker.color, updateInput); + }).click(function() { + + $.fn.mColorPicker.colorPicked(id); + }); + + $('#mColorPickerInput').bind('keyup', function (e) { + + try { + + $.fn.mColorPicker.color = $('#mColorPickerInput').val(); + $.fn.mColorPicker.setInputColor(id, $.fn.mColorPicker.color, updateInput); + + if (e.which == 13) { + $.fn.mColorPicker.colorPicked(id); + } + } catch (r) {} + }).bind('blur', function () { + + $.fn.mColorPicker.setInputColor(id, $.fn.mColorPicker.currentColor, updateInput); + }); + + $('#mColorPickerWrapper').bind('mouseleave', function () { + + $.fn.mColorPicker.setInputColor(id, $.fn.mColorPicker.currentColor, updateInput); + }); + }; + + $.fn.mColorPicker.setInputColor = function (id, color, updateInput) { + + var image = (color == 'transparent')? "url('" + $o.imageFolder + "grid.gif')": '', + textColor = $.fn.mColorPicker.textColor(color); + + if (updateInput) $("#icp_" + id).css({'background-color': color, 'background-image': image}); + $("#" + id).val(color).css({'background-color': color, 'background-image': image, 'color' : textColor}).trigger('change'); + if(typeof(employeePage) != 'undefined') + $('body').css('background-color', color); + $("#mColorPickerInput").val(color); + }; + + $.fn.mColorPicker.textColor = function (val) { + + if (typeof val == 'undefined' || val == 'transparent') return "black"; + val = $.fn.mColorPicker.RGBtoHex(val); + return (parseInt(val.substr(1, 2), 16) + parseInt(val.substr(3, 2), 16) + parseInt(val.substr(5, 2), 16) < 400)? 'white': 'black'; + }; + + $.fn.mColorPicker.setCookie = function (name, value, days) { + + var cookie_string = name + "=" + escape(value), + expires = new Date(); + expires.setDate(expires.getDate() + days); + cookie_string += "; expires=" + expires.toGMTString(); + + document.cookie = cookie_string; + }; + + $.fn.mColorPicker.getCookie = function (name) { + + var results = document.cookie.match ( '(^|;) ?' + name + '=([^;]*)(;|$)' ); + + if (results) return (unescape(results[2])); + else return null; + }; + + $.fn.mColorPicker.colorPicked = function (id) { + + $(".mColor, .mPastColor, #mColorPickerInput, #mColorPickerWrapper").unbind(); + $("#mColorPickerBg").hide(); + $("#mColorPicker").fadeOut(); + + if ($.fn.mColorPicker.init.enhancedSwatches) $.fn.mColorPicker.addToSwatch(); + + $("#" + id).trigger('colorpicked'); + }; + + $.fn.mColorPicker.addToSwatch = function (color) { + + var swatch = [] + i = 0; + + if (typeof color == 'string') $.fn.mColorPicker.color = color.toLowerCase(); + + $.fn.mColorPicker.currentValue = $.fn.mColorPicker.currentColor = $.fn.mColorPicker.color; + + if ($.fn.mColorPicker.color != 'transparent') swatch[0] = $.fn.mColorPicker.color.toLowerCase(); + + $('.mPastColor').each(function() { + + $.fn.mColorPicker.color = $(this).css('background-color').toLowerCase(); + + if ($.fn.mColorPicker.color != swatch[0] && $.fn.mColorPicker.RGBtoHex($.fn.mColorPicker.color) != swatch[0] && $.fn.mColorPicker.hexToRGB($.fn.mColorPicker.color) != swatch[0] && swatch.length < 10) swatch[swatch.length] = $.fn.mColorPicker.color; + + $(this).css('background-color', swatch[i++]) + }); + + if ($.fn.mColorPicker.init.enhancedSwatches) $.fn.mColorPicker.setCookie('swatches', swatch.join('||'), 365); + }; + + $.fn.mColorPicker.whichColor = function (x, y, hex) { + + var colorR = colorG = colorB = 255; + + if (x < 32) { + + colorG = x * 8; + colorB = 0; + } else if (x < 64) { + + colorR = 256 - (x - 32 ) * 8; + colorB = 0; + } else if (x < 96) { + + colorR = 0; + colorB = (x - 64) * 8; + } else if (x < 128) { + + colorR = 0; + colorG = 256 - (x - 96) * 8; + } else if (x < 160) { + + colorR = (x - 128) * 8; + colorG = 0; + } else { + + colorG = 0; + colorB = 256 - (x - 160) * 8; + } + + if (y < 64) { + + colorR += (256 - colorR) * (64 - y) / 64; + colorG += (256 - colorG) * (64 - y) / 64; + colorB += (256 - colorB) * (64 - y) / 64; + } else if (y <= 128) { + + colorR -= colorR * (y - 64) / 64; + colorG -= colorG * (y - 64) / 64; + colorB -= colorB * (y - 64) / 64; + } else if (y > 128) { + + colorR = colorG = colorB = 256 - ( x / 192 * 256 ); + } + + colorR = Math.round(Math.min(colorR, 255)); + colorG = Math.round(Math.min(colorG, 255)); + colorB = Math.round(Math.min(colorB, 255)); + + if (hex == 'true') { + + colorR = colorR.toString(16); + colorG = colorG.toString(16); + colorB = colorB.toString(16); + + if (colorR.length < 2) colorR = 0 + colorR; + if (colorG.length < 2) colorG = 0 + colorG; + if (colorB.length < 2) colorB = 0 + colorB; + + return "#" + colorR + colorG + colorB; + } + + return "rgb(" + colorR + ', ' + colorG + ', ' + colorB + ')'; + }; + + $.fn.mColorPicker.RGBtoHex = function (color) { + + color = color.toLowerCase(); + + if (typeof color == 'undefined') return ''; + if (color.indexOf('#') > -1 && color.length > 6) return color; + if (color.indexOf('rgb') < 0) return color; + + if (color.indexOf('#') > -1) { + + return '#' + color.substr(1, 1) + color.substr(1, 1) + color.substr(2, 1) + color.substr(2, 1) + color.substr(3, 1) + color.substr(3, 1); + } + + var hexArray = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"], + decToHex = "#", + code1 = 0; + + color = color.replace(/[^0-9,]/g, '').split(","); + + for (var n = 0; n < color.length; n++) { + + code1 = Math.floor(color[n] / 16); + decToHex += hexArray[code1] + hexArray[color[n] - code1 * 16]; + } + + return decToHex; + }; + + $.fn.mColorPicker.hexToRGB = function (color) { + + color = color.toLowerCase(); + + if (typeof color == 'undefined') return ''; + if (color.indexOf('rgb') > -1) return color; + if (color.indexOf('#') < 0) return color; + + var c = color.replace('#', ''); + + if (c.length < 6) c = c.substr(0, 1) + c.substr(0, 1) + c.substr(1, 1) + c.substr(1, 1) + c.substr(2, 1) + c.substr(2, 1); + + return 'rgb(' + parseInt(c.substr(0, 2), 16) + ', ' + parseInt(c.substr(2, 2), 16) + ', ' + parseInt(c.substr(4, 2), 16) + ')'; + } + + if ($.fn.mColorPicker.init.replace == '[type=color]') { + + $(document).ready(function () { + + $('input').filter(function(index) { + + return this.getAttribute("type") == 'color'; + }).mColorPicker(); + + $(document).bind('ajaxSuccess', function () { + + $('input').filter(function(index) { + + return this.getAttribute("type") == 'color'; + }).mColorPicker(); + }); + }); + } else if ($.fn.mColorPicker.init.replace) { + + $(document).ready(function () { + + $('input' + $.fn.mColorPicker.init.replace).mColorPicker(); + + $(document).bind('ajaxSuccess', function () { + + $('input' + $.fn.mColorPicker.init.replace).mColorPicker(); + }); + }); + } +})(jQuery); diff --git a/js/jquery/jquery-typewatch.pack.js b/js/jquery/jquery-typewatch.pack.js new file mode 100644 index 000000000..89a3ed671 --- /dev/null +++ b/js/jquery/jquery-typewatch.pack.js @@ -0,0 +1,89 @@ +/* + * TypeWatch 2.0 - Original by Denny Ferrassoli / Refactored by Charles Christolini + * + * Examples/Docs: www.dennydotnet.com + * + * Copyright(c) 2007 Denny Ferrassoli - DennyDotNet.com + * Coprright(c) 2008 Charles Christolini - BinaryPie.com + * Modified by Lucas CHERIFI @ PrestaShop : now this plugin works with the Dean Edward's JS Packer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +*/ + +(function(jQuery) { + jQuery.fn.typeWatch = function(o){ + // Options + var options = jQuery.extend({ + wait : 750, + callback : function() { }, + highlight : true, + captureLength : 2 + }, o); + + function checkElement(timer, override) { + var elTxt = jQuery(timer.el).val(); + + // Fire if text > options.captureLength AND text != saved txt OR if override AND text > options.captureLength + if ((elTxt.length > options.captureLength && elTxt.toUpperCase() != timer.text) + || (override && elTxt.length > options.captureLength)) { + timer.text = elTxt.toUpperCase(); + timer.cb(elTxt); + } + }; + + function watchElement(elem) { + // Must be text or textarea + if (elem.type.toUpperCase() == "TEXT" || elem.nodeName.toUpperCase() == "TEXTAREA") { + + // Allocate timer element + var timer = { + timer : null, + text : jQuery(elem).val().toUpperCase(), + cb : options.callback, + el : elem, + wait : options.wait + }; + + // Set focus action (highlight) + if (options.highlight) { + jQuery(elem).focus( + function() { + this.select(); + }); + } + + // Key watcher / clear and reset the timer + var startWatch = function(evt) { + var timerWait = timer.wait; + var overrideBool = false; + + if (evt.keyCode == 13 && this.type.toUpperCase() == "TEXT") { + timerWait = 1; + overrideBool = true; + } + + var timerCallbackFx = function() + { + checkElement(timer, overrideBool); + } + + // Clear timer + clearTimeout(timer.timer); + timer.timer = setTimeout(timerCallbackFx, timerWait); + + }; + + jQuery(elem).keydown(startWatch); + } + }; + + // Watch Each Element + return this.each(function(index){ + watchElement(this); + }); + + }; + +})(jQuery); diff --git a/js/jquery/jquery-ui-1.8.10.custom.min.js b/js/jquery/jquery-ui-1.8.10.custom.min.js new file mode 100755 index 000000000..7d4ff1cec --- /dev/null +++ b/js/jquery/jquery-ui-1.8.10.custom.min.js @@ -0,0 +1,782 @@ +/*! + * jQuery UI 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.10",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); +return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", +true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= +m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&& +this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? +0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), +10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== +Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): +f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; +if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ +b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left
      ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, +stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= +document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing"); +this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top= +null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+ +this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b, +a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a, +c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize, +originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.10"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize= +b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width", +"height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})}; +if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height- +g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width, +height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d= +e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options, +d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper? +d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height= +a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&& +/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable"); +b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/ +(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
      ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length- +1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null}); +this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&& +a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h= +d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)}); +return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g= +d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top= +e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0]; +if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder); +c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length=== +1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top< +this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0], +this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out", +g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+ +a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), +e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| +e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", +tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.10",animations:{slide:function(a,b){a= +c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g=false;var f=d.ui.keyCode; +switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem= +null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("
        ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo|| +"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"), +i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source=== +"string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b); +else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.attr("scrollTop"),c=this.element.height();if(b<0)this.element.attr("scrollTop",g+b);else b>=c&&this.element.attr("scrollTop",g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0); +e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e, +g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first")); +this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){e.push(f?"ui-button-icons-only":"ui-button-icon-only"); +b.removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this, +arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& +c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
        ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", +-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
        ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", +"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= +b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& +a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); +isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); +d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); +c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
        ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
        ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, +h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= +d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, +position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, +h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== +1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in +l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); +break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= +this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& +this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.10",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== +0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
        ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); +if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.10"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
        ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
      • #{label}
      • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.10"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]== +null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.10"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); +f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
        ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{}); +b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); +this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", +this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, +function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: +f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true}, +_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos= +d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b, +c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&& +d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout", +function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!= +-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a, +"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))), +parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left, +b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b); +this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): +0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear= +false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay= +d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a); +else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort, +g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y", +RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= +a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), +b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
        '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
        ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= +this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- +1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
        '+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'
        ';var A=j?'":"";for(t=0;t<7;t++){var q= +(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var F= +p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= +P+""}g++;if(g>11){g=0;m++}x+="
        '+this._get(a,"weekHeader")+"
        '+this._get(a,"calculateWeek")(q)+""+(B&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
        "+(l?"
        "+(i[0]>0&&D==i[1]-1?'
        ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
        ', +o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& +l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
        ";return k},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, +[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.10";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
        ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.10"})})(jQuery); +;/* + * jQuery UI Effects 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; +h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, +a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.10",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", +border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], +10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/js/jquery/jquery.autocomplete.js b/js/jquery/jquery.autocomplete.js new file mode 100644 index 000000000..29dd30473 --- /dev/null +++ b/js/jquery/jquery.autocomplete.js @@ -0,0 +1,758 @@ +/* + * Autocomplete - jQuery plugin 1.0.2 + * + * Copyright (c) 2007 Dylan Verheul, Dan G. Switzer, Anjesh Tuladhar, Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.autocomplete.js 5747 2008-06-25 18:30:55Z joern.zaefferer $ + * + */ + +;(function($) { + +$.fn.extend({ + autocomplete: function(urlOrData, options) { + var isUrl = typeof urlOrData == "string"; + options = $.extend({}, $.Autocompleter.defaults, { + url: isUrl ? urlOrData : null, + data: isUrl ? null : urlOrData, + delay: isUrl ? $.Autocompleter.defaults.delay : 10, + max: options && !options.scroll ? 10 : 150 + }, options); + + // if highlight is set to false, replace it with a do-nothing function + options.highlight = options.highlight || function(value) { return value; }; + + // if the formatMatch option is not specified, then use formatItem for backwards compatibility + options.formatMatch = options.formatMatch || options.formatItem; + + return this.each(function() { + new $.Autocompleter(this, options); + }); + }, + result: function(handler) { + return this.bind("result", handler); + }, + search: function(handler) { + return this.trigger("search", [handler]); + }, + flushCache: function() { + return this.trigger("flushCache"); + }, + setOptions: function(options){ + return this.trigger("setOptions", [options]); + }, + unautocomplete: function() { + return this.trigger("unautocomplete"); + } +}); + +$.Autocompleter = function(input, options) { + + var KEY = { + UP: 38, + DOWN: 40, + DEL: 46, + TAB: 9, + RETURN: 13, + ESC: 27, + COMMA: 188, + PAGEUP: 33, + PAGEDOWN: 34, + BACKSPACE: 8 + }; + + // Create $ object for input element + var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass); + + var timeout; + var previousValue = ""; + var cache = $.Autocompleter.Cache(options); + var hasFocus = 0; + var lastKeyPressCode; + var config = { + mouseDownOnSelect: false + }; + var select = $.Autocompleter.Select(options, input, selectCurrent, config); + + var blockSubmit; + + // prevent form submit in opera when selecting with return key + $.browser.opera && $(input.form).bind("submit.autocomplete", function() { + if (blockSubmit) { + blockSubmit = false; + return false; + } + }); + + // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all + $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) { + // track last key pressed + lastKeyPressCode = event.keyCode; + switch(event.keyCode) { + + case KEY.UP: + event.preventDefault(); + if ( select.visible() ) { + select.prev(); + } else { + onChange(0, true); + } + break; + + case KEY.DOWN: + event.preventDefault(); + if ( select.visible() ) { + select.next(); + } else { + onChange(0, true); + } + break; + + case KEY.PAGEUP: + event.preventDefault(); + if ( select.visible() ) { + select.pageUp(); + } else { + onChange(0, true); + } + break; + + case KEY.PAGEDOWN: + event.preventDefault(); + if ( select.visible() ) { + select.pageDown(); + } else { + onChange(0, true); + } + break; + + // matches also semicolon + case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA: + case KEY.TAB: + case KEY.RETURN: + if( selectCurrent() ) { + // stop default to prevent a form submit, Opera needs special handling + event.preventDefault(); + blockSubmit = true; + return false; + } + break; + + case KEY.ESC: + select.hide(); + break; + + default: + clearTimeout(timeout); + timeout = setTimeout(onChange, options.delay); + break; + } + }).focus(function(){ + // track whether the field has focus, we shouldn't process any + // results if the field no longer has focus + hasFocus++; + }).blur(function() { + hasFocus = 0; + if (!config.mouseDownOnSelect) { + hideResults(); + } + }).click(function() { + // show select when clicking in a focused field + if ( hasFocus++ > 1 && !select.visible() ) { + onChange(0, true); + } + }).bind("search", function() { + // TODO why not just specifying both arguments? + var fn = (arguments.length > 1) ? arguments[1] : null; + function findValueCallback(q, data) { + var result; + if( data && data.length ) { + for (var i=0; i < data.length; i++) { + if( data[i].result.toLowerCase() == q.toLowerCase() ) { + result = data[i]; + break; + } + } + } + if( typeof fn == "function" ) fn(result); + else $input.trigger("result", result && [result.data, result.value]); + } + $.each(trimWords($input.val()), function(i, value) { + request(value, findValueCallback, findValueCallback); + }); + }).bind("flushCache", function() { + cache.flush(); + }).bind("setOptions", function() { + $.extend(options, arguments[1]); + // if we've updated the data, repopulate + if ( "data" in arguments[1] ) + cache.populate(); + }).bind("unautocomplete", function() { + select.unbind(); + $input.unbind(); + $(input.form).unbind(".autocomplete"); + }); + + + function selectCurrent() { + var selected = select.selected(); + if( !selected ) + return false; + + var v = selected.result; + previousValue = v; + + if ( options.multiple ) { + var words = trimWords($input.val()); + if ( words.length > 1 ) { + v = words.slice(0, words.length - 1).join( options.multipleSeparator ) + options.multipleSeparator + v; + } + v += options.multipleSeparator; + } + + $input.val(v); + hideResultsNow(); + $input.trigger("result", [selected.data, selected.value]); + return true; + } + + function onChange(crap, skipPrevCheck) { + if( lastKeyPressCode == KEY.DEL ) { + select.hide(); + return; + } + + var currentValue = $input.val(); + + if ( !skipPrevCheck && currentValue == previousValue ) + return; + + previousValue = currentValue; + + currentValue = lastWord(currentValue); + if ( currentValue.length >= options.minChars) { + $input.addClass(options.loadingClass); + if (!options.matchCase) + currentValue = currentValue.toLowerCase(); + request(currentValue, receiveData, hideResultsNow); + } else { + stopLoading(); + select.hide(); + } + }; + + function trimWords(value) { + if ( !value ) { + return [""]; + } + var words = value.split( options.multipleSeparator ); + var result = []; + $.each(words, function(i, value) { + if ( $.trim(value) ) + result[i] = $.trim(value); + }); + return result; + } + + function lastWord(value) { + if ( !options.multiple ) + return value; + var words = trimWords(value); + return words[words.length - 1]; + } + + // fills in the input box w/the first match (assumed to be the best match) + // q: the term entered + // sValue: the first matching result + function autoFill(q, sValue){ + // autofill in the complete box w/the first match as long as the user hasn't entered in more data + // if the last user key pressed was backspace, don't autofill + if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) { + // fill in the value (keep the case the user has typed) + $input.val($input.val() + sValue.substring(lastWord(previousValue).length)); + // select the portion of the value not typed by the user (so the next character will erase) + $.Autocompleter.Selection(input, previousValue.length, previousValue.length + sValue.length); + } + }; + + function hideResults() { + clearTimeout(timeout); + timeout = setTimeout(hideResultsNow, 200); + }; + + function hideResultsNow() { + var wasVisible = select.visible(); + select.hide(); + clearTimeout(timeout); + stopLoading(); + if (options.mustMatch) { + // call search and run callback + $input.search( + function (result){ + // if no value found, clear the input box + if( !result ) { + if (options.multiple) { + var words = trimWords($input.val()).slice(0, -1); + $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") ); + } + else + $input.val( "" ); + } + } + ); + } + if (wasVisible) + // position cursor at end of input field + $.Autocompleter.Selection(input, input.value.length, input.value.length); + }; + + function receiveData(q, data) { + if ( data && data.length && hasFocus ) { + stopLoading(); + select.display(data, q); + autoFill(q, data[0].value); + select.show(); + } else { + hideResultsNow(); + } + }; + + function request(term, success, failure) { + if (!options.matchCase) + term = term.toLowerCase(); + var data = cache.load(term); + // recieve the cached data + if (data && data.length) { + success(term, data); + // if an AJAX url has been supplied, try loading the data now + } else if( (typeof options.url == "string") && (options.url.length > 0) ){ + + var extraParams = { + timestamp: +new Date() + }; + $.each(options.extraParams, function(key, param) { + extraParams[key] = typeof param == "function" ? param() : param; + }); + + $.ajax({ + // try to leverage ajaxQueue plugin to abort previous requests + mode: "abort", + // limit abortion to this input + port: "autocomplete" + input.name, + dataType: options.dataType, + url: options.url, + data: $.extend({ + q: lastWord(term), + limit: options.max + }, extraParams), + success: function(data) { + var parsed = options.parse && options.parse(data) || parse(data); + cache.add(term, parsed); + success(term, parsed); + } + }); + } else { + // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match + select.emptyList(); + failure(term); + } + }; + + function parse(data) { + var parsed = []; + var rows = data.split("\n"); + for (var i=0; i < rows.length; i++) { + var row = $.trim(rows[i]); + if (row) { + row = row.split("|"); + parsed[parsed.length] = { + data: row, + value: row[0], + result: options.formatResult && options.formatResult(row, row[0]) || row[0] + }; + } + } + return parsed; + }; + + function stopLoading() { + $input.removeClass(options.loadingClass); + }; + +}; + +$.Autocompleter.defaults = { + inputClass: "ac_input", + resultsClass: "ac_results", + loadingClass: "ac_loading", + minChars: 1, + delay: 400, + matchCase: false, + matchSubset: true, + matchContains: false, + cacheLength: 10, + max: 100, + mustMatch: false, + extraParams: {}, + selectFirst: true, + formatItem: function(row) { return row[0]; }, + formatMatch: null, + autoFill: false, + width: 0, + multiple: false, + multipleSeparator: ", ", + highlight: function(value, term) { + return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "$1"); + }, + scroll: true, + scrollHeight: 180 +}; + +$.Autocompleter.Cache = function(options) { + + var data = {}; + var length = 0; + + function matchSubset(s, sub) { + if (!options.matchCase) + s = s.toLowerCase(); + var i = s.indexOf(sub); + if (i == -1) return false; + return i == 0 || options.matchContains; + }; + + function add(q, value) { + if (length > options.cacheLength){ + flush(); + } + if (!data[q]){ + length++; + } + data[q] = value; + } + + function populate(){ + if( !options.data ) return false; + // track the matches + var stMatchSets = {}, + nullData = 0; + + // no url was specified, we need to adjust the cache length to make sure it fits the local data store + if( !options.url ) options.cacheLength = 1; + + // track all options for minChars = 0 + stMatchSets[""] = []; + + // loop through the array and create a lookup structure + for ( var i = 0, ol = options.data.length; i < ol; i++ ) { + var rawValue = options.data[i]; + // if rawValue is a string, make an array otherwise just reference the array + rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue; + + var value = options.formatMatch(rawValue, i+1, options.data.length); + if ( value === false ) + continue; + + var firstChar = value.charAt(0).toLowerCase(); + // if no lookup array for this character exists, look it up now + if( !stMatchSets[firstChar] ) + stMatchSets[firstChar] = []; + + // if the match is a string + var row = { + value: value, + data: rawValue, + result: options.formatResult && options.formatResult(rawValue) || value + }; + + // push the current match into the set list + stMatchSets[firstChar].push(row); + + // keep track of minChars zero items + if ( nullData++ < options.max ) { + stMatchSets[""].push(row); + } + }; + + // add the data items to the cache + $.each(stMatchSets, function(i, value) { + // increase the cache size + options.cacheLength++; + // add to the cache + add(i, value); + }); + } + + // populate any existing data + setTimeout(populate, 25); + + function flush(){ + data = {}; + length = 0; + } + + return { + flush: flush, + add: add, + populate: populate, + load: function(q) { + if (!options.cacheLength || !length) + return null; + /* + * if dealing w/local data and matchContains than we must make sure + * to loop through all the data collections looking for matches + */ + if( !options.url && options.matchContains ){ + // track all matches + var csub = []; + // loop through all the data grids for matches + for( var k in data ){ + // don't search through the stMatchSets[""] (minChars: 0) cache + // this prevents duplicates + if( k.length > 0 ){ + var c = data[k]; + $.each(c, function(i, x) { + // if we've got a match, add it to the array + if (matchSubset(x.value, q)) { + csub.push(x); + } + }); + } + } + return csub; + } else + // if the exact item exists, use it + if (data[q]){ + return data[q]; + } else + if (options.matchSubset) { + for (var i = q.length - 1; i >= options.minChars; i--) { + var c = data[q.substr(0, i)]; + if (c) { + var csub = []; + $.each(c, function(i, x) { + if (matchSubset(x.value, q)) { + csub[csub.length] = x; + } + }); + return csub; + } + } + } + return null; + } + }; +}; + +$.Autocompleter.Select = function (options, input, select, config) { + var CLASSES = { + ACTIVE: "ac_over" + }; + + var listItems, + active = -1, + data, + term = "", + needsInit = true, + element, + list; + + // Create results + function init() { + if (!needsInit) + return; + element = $("
        ") + .hide() + .addClass(options.resultsClass) + .css("position", "absolute") + .appendTo(document.body); + + list = $("
          ").appendTo(element).mouseover( function(event) { + if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') { + active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event)); + $(target(event)).addClass(CLASSES.ACTIVE); + } + }).click(function(event) { + $(target(event)).addClass(CLASSES.ACTIVE); + select(); + // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus + input.focus(); + return false; + }).mousedown(function() { + config.mouseDownOnSelect = true; + }).mouseup(function() { + config.mouseDownOnSelect = false; + }); + + if( options.width > 0 ) + element.css("width", options.width); + + needsInit = false; + } + + function target(event) { + var element = event.target; + while(element && element.tagName != "LI") + element = element.parentNode; + // more fun with IE, sometimes event.target is empty, just ignore it then + if(!element) + return []; + return element; + } + + function moveSelect(step) { + listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE); + movePosition(step); + var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE); + if(options.scroll) { + var offset = 0; + listItems.slice(0, active).each(function() { + offset += this.offsetHeight; + }); + if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) { + list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight()); + } else if(offset < list.scrollTop()) { + list.scrollTop(offset); + } + } + }; + + function movePosition(step) { + active += step; + if (active < 0) { + active = listItems.size() - 1; + } else if (active >= listItems.size()) { + active = 0; + } + } + + function limitNumberOfItems(available) { + return options.max && options.max < available + ? options.max + : available; + } + + function fillList() { + list.empty(); + var max = limitNumberOfItems(data.length); + for (var i=0; i < max; i++) { + if (!data[i]) + continue; + var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term); + if ( formatted === false ) + continue; + var li = $("
        • ").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0]; + $.data(li, "ac_data", data[i]); + } + listItems = list.find("li"); + if ( options.selectFirst ) { + listItems.slice(0, 1).addClass(CLASSES.ACTIVE); + active = 0; + } + // apply bgiframe if available + if ( $.fn.bgiframe ) + list.bgiframe(); + } + + return { + display: function(d, q) { + init(); + data = d; + term = q; + fillList(); + }, + next: function() { + moveSelect(1); + }, + prev: function() { + moveSelect(-1); + }, + pageUp: function() { + if (active != 0 && active - 8 < 0) { + moveSelect( -active ); + } else { + moveSelect(-8); + } + }, + pageDown: function() { + if (active != listItems.size() - 1 && active + 8 > listItems.size()) { + moveSelect( listItems.size() - 1 - active ); + } else { + moveSelect(8); + } + }, + hide: function() { + element && element.hide(); + listItems && listItems.removeClass(CLASSES.ACTIVE); + active = -1; + }, + visible : function() { + return element && element.is(":visible"); + }, + current: function() { + return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]); + }, + show: function() { + var offset = $(input).offset(); + element.css({ + width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(), + top: offset.top + input.offsetHeight, + left: offset.left + }).show(); + if(options.scroll) { + list.css({ + maxHeight: options.scrollHeight, + overflow: 'auto' + }); + + if($.browser.msie && typeof document.body.style.maxHeight === "undefined") { + var listHeight = 0; + listItems.each(function() { + listHeight += this.offsetHeight; + }); + var scrollbarsVisible = listHeight > options.scrollHeight; + list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight ); + if (!scrollbarsVisible) { + // IE doesn't recalculate width when scrollbar disappears + listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) ); + } + } + + } + }, + selected: function() { + var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); + return selected && selected.length && $.data(selected[0], "ac_data"); + }, + emptyList: function (){ + list && list.empty(); + }, + unbind: function() { + element && element.remove(); + } + }; +}; + +$.Autocompleter.Selection = function(field, start, end) { + if( field.createTextRange ){ + var selRange = field.createTextRange(); + selRange.collapse(true); + selRange.moveStart("character", start); + selRange.moveEnd("character", end); + selRange.select(); + } else if( field.setSelectionRange ){ + field.setSelectionRange(start, end); + } else { + if( field.selectionStart ){ + field.selectionStart = start; + field.selectionEnd = end; + } + } + field.focus(); +}; + +})(jQuery); diff --git a/js/jquery/jquery.cluetip.js b/js/jquery/jquery.cluetip.js new file mode 100644 index 000000000..fa7cc0725 --- /dev/null +++ b/js/jquery/jquery.cluetip.js @@ -0,0 +1,42 @@ +/* + * documentation & download : http://plugins.learningjquery.com/cluetip/ +*/ +/* + * jQuery clueTip plugin + * Version 0.9.8 (05/22/2008) + * @requires jQuery v1.1.4+ + * @requires Dimensions plugin (for jQuery versions < 1.2.5) + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + */ + +;(function($){var $cluetip,$cluetipInner,$cluetipOuter,$cluetipTitle,$cluetipArrows,$dropShadow,imgCount;$.fn.cluetip=function(js,options){if(typeof js=='object'){options=js;js=null;} +return this.each(function(index){var $this=$(this);var opts=$.extend(false,{},$.fn.cluetip.defaults,options||{},$.metadata?$this.metadata():$.meta?$this.data():{});var cluetipContents=false;var cluezIndex=parseInt(opts.cluezIndex,10)-1;var isActive=false,closeOnDelay=0;if(!$('#cluetip').length){$cluetipInner=$('
          ');$cluetipTitle=$('

          ');$cluetipOuter=$('
          ').append($cluetipInner).prepend($cluetipTitle);$cluetip=$('
          ').css({zIndex:opts.cluezIndex}).append($cluetipOuter).append('
          ')[insertionType](insertionElement).hide();$('
          ').css({position:'absolute',zIndex:cluezIndex-1}).insertBefore('#cluetip').hide();$cluetip.css({position:'absolute',zIndex:cluezIndex});$cluetipOuter.css({position:'relative',zIndex:cluezIndex+1});$cluetipArrows=$('
          ').css({zIndex:cluezIndex+1}).appendTo('#cluetip');} +var dropShadowSteps=(opts.dropShadow)?+opts.dropShadowSteps:0;if(!$dropShadow){$dropShadow=$([]);for(var i=0;i
        ').css({zIndex:cluezIndex-i-1,opacity:.1,top:1+i,left:1+i}));};$dropShadow.css({position:'absolute',backgroundColor:'#000'}).prependTo($cluetip);} +var tipAttribute=$this.attr(opts.attribute),ctClass=opts.cluetipClass;if(!tipAttribute&&!opts.splitTitle&&!js)return true;if(opts.local&&opts.hideLocal){$(tipAttribute+':first').hide();} +var tOffset=parseInt(opts.topOffset,10),lOffset=parseInt(opts.leftOffset,10);var tipHeight,wHeight;var defHeight=isNaN(parseInt(opts.height,10))?'auto':(/\D/g).test(opts.height)?opts.height:opts.height+'px';var sTop,linkTop,posY,tipY,mouseY,baseline;var tipInnerWidth=isNaN(parseInt(opts.width,10))?275:parseInt(opts.width,10);var tipWidth=tipInnerWidth+(parseInt($cluetip.css('paddingLeft'))||0)+(parseInt($cluetip.css('paddingRight'))||0)+dropShadowSteps;var linkWidth=this.offsetWidth;var linkLeft,posX,tipX,mouseX,winWidth;var tipParts;var tipTitle=(opts.attribute!='title')?$this.attr(opts.titleAttribute):'';if(opts.splitTitle){if(tipTitle==undefined){tipTitle='';} +tipParts=tipTitle.split(opts.splitTitle);tipTitle=tipParts.shift();} +var localContent;var activate=function(event){if(!opts.onActivate($this)){return false;} +isActive=true;$cluetip.removeClass().css({width:tipInnerWidth});if(tipAttribute==$this.attr('href')){$this.css('cursor',opts.cursor);} +$this.attr('title','');if(opts.hoverClass){$this.addClass(opts.hoverClass);} +linkTop=posY=$this.offset().top;linkLeft=$this.offset().left;mouseX=event.pageX;mouseY=event.pageY;if($this[0].tagName.toLowerCase()!='area'){sTop=$(document).scrollTop();winWidth=$(window).width();} +if(opts.positionBy=='fixed'){posX=linkWidth+linkLeft+lOffset;$cluetip.css({left:posX});}else{posX=(linkWidth>linkLeft&&linkLeft>tipWidth)||linkLeft+linkWidth+tipWidth+lOffset>winWidth?linkLeft-tipWidth-lOffset:linkWidth+linkLeft+lOffset;if($this[0].tagName.toLowerCase()=='area'||opts.positionBy=='mouse'||linkWidth+tipWidth>winWidth){if(mouseX+20+tipWidth>winWidth){$cluetip.addClass(' cluetip-'+ctClass);posX=(mouseX-tipWidth-lOffset)>=0?mouseX-tipWidth-lOffset-parseInt($cluetip.css('marginLeft'),10)+parseInt($cluetipInner.css('marginRight'),10):mouseX-(tipWidth/2);}else{posX=mouseX+lOffset;}} +var pY=posX<0?event.pageY+tOffset:event.pageY;$cluetip.css({left:(posX>0&&opts.positionBy!='bottomTop')?posX:(mouseX+(tipWidth/2)>winWidth)?winWidth/2-tipWidth/2:Math.max(mouseX-(tipWidth/2),0)});} +wHeight=$(window).height();if(js){$cluetipInner.html(js);cluetipShow(pY);} +else if(tipParts){var tpl=tipParts.length;for(var i=0;i'+tipParts[i]+'');}};cluetipShow(pY);} +else if(!opts.local&&tipAttribute.indexOf('#')!=0){if(cluetipContents&&opts.ajaxCache){$cluetipInner.html(cluetipContents);cluetipShow(pY);} +else{var ajaxSettings=opts.ajaxSettings;ajaxSettings.url=tipAttribute;ajaxSettings.beforeSend=function(){$cluetipOuter.children().empty();if(opts.waitImage){$('#cluetip-waitimage').css({top:mouseY+20,left:mouseX+20}).show();}};ajaxSettings.error=function(){if(isActive){$cluetipInner.html('sorry, the contents could not be loaded');}};ajaxSettings.success=function(data){cluetipContents=opts.ajaxProcess(data);if(isActive){$cluetipInner.html(cluetipContents);}};ajaxSettings.complete=function(){imgCount=$('#cluetip-inner img').length;if(imgCount&&!$.browser.opera){$('#cluetip-inner img').load(function(){imgCount--;if(imgCount<1){$('#cluetip-waitimage').hide();if(isActive)cluetipShow(pY);}});}else{$('#cluetip-waitimage').hide();if(isActive)cluetipShow(pY);}};$.ajax(ajaxSettings);}}else if(opts.local){var $localContent=$(tipAttribute+':first');var localCluetip=$.fn.wrapInner?$localContent.wrapInner('
        ').children().clone(true):$localContent.html();$.fn.wrapInner?$cluetipInner.empty().append(localCluetip):$cluetipInner.html(localCluetip);cluetipShow(pY);}};var cluetipShow=function(bpY){$cluetip.addClass('cluetip-'+ctClass);if(opts.truncate){var $truncloaded=$cluetipInner.text().slice(0,opts.truncate)+'...';$cluetipInner.html($truncloaded);} +function doNothing(){};tipTitle?$cluetipTitle.show().html(tipTitle):(opts.showTitle)?$cluetipTitle.show().html(' '):$cluetipTitle.hide();if(opts.sticky){var $closeLink=$('');(opts.closePosition=='bottom')?$closeLink.appendTo($cluetipInner):(opts.closePosition=='title')?$closeLink.prependTo($cluetipTitle):$closeLink.prependTo($cluetipInner);$closeLink.click(function(){cluetipClose();return false;});if(opts.mouseOutClose){if($.fn.hoverIntent&&opts.hoverIntent){$cluetip.hoverIntent({over:doNothing,timeout:opts.hoverIntent.timeout,out:function(){$closeLink.trigger('click');}});}else{$cluetip.hover(doNothing,function(){$closeLink.trigger('click');});}}else{$cluetip.unbind('mouseout');}} +var direction='';$cluetipOuter.css({overflow:defHeight=='auto'?'visible':'auto',height:defHeight});tipHeight=defHeight=='auto'?Math.max($cluetip.outerHeight(),$cluetip.height()):parseInt(defHeight,10);tipY=posY;baseline=sTop+wHeight;if(opts.positionBy=='fixed'){tipY=posY-opts.dropShadowSteps+tOffset;}else if((posXmouseX)||opts.positionBy=='bottomTop'){if(posY+tipHeight+tOffset>baseline&&mouseY-sTop>tipHeight+tOffset){tipY=mouseY-tipHeight-tOffset;direction='top';}else{tipY=mouseY+tOffset;direction='bottom';}}else if(posY+tipHeight+tOffset>baseline){tipY=(tipHeight>=wHeight)?sTop:baseline-tipHeight-tOffset;}else if($this.css('display')=='block'||$this[0].tagName.toLowerCase()=='area'||opts.positionBy=="mouse"){tipY=bpY-tOffset;}else{tipY=posY-opts.dropShadowSteps;} +if(direction==''){posX=0&&bgY>0)?bgY+'px':/(left|right)/.test(direction)?0:''}).show();}else{$cluetipArrows.hide();} +$dropShadow.hide();$cluetip.hide()[opts.fx.open](opts.fx.open!='show'&&opts.fx.openSpeed);if(opts.dropShadow)$dropShadow.css({height:tipHeight,width:tipInnerWidth}).show();if($.fn.bgiframe){$cluetip.bgiframe();} +if(opts.delayedClose>0){closeOnDelay=setTimeout(cluetipClose,opts.delayedClose);} +opts.onShow($cluetip,$cluetipInner);};var inactivate=function(){isActive=false;$('#cluetip-waitimage').hide();if(!opts.sticky||(/click|toggle/).test(opts.activation)){cluetipClose();clearTimeout(closeOnDelay);};if(opts.hoverClass){$this.removeClass(opts.hoverClass);} +$('.cluetip-clicked').removeClass('cluetip-clicked');};var cluetipClose=function(){$cluetipOuter.parent().hide().removeClass().end().children().empty();if(tipTitle){$this.attr(opts.titleAttribute,tipTitle);} +$this.css('cursor','');if(opts.arrows)$cluetipArrows.css({top:''});};if((/click|toggle/).test(opts.activation)){$this.click(function(event){if($cluetip.is(':hidden')||!$this.is('.cluetip-clicked')){activate(event);$('.cluetip-clicked').removeClass('cluetip-clicked');$this.addClass('cluetip-clicked');}else{inactivate(event);} +this.blur();return false;});}else if(opts.activation=='focus'){$this.focus(function(event){activate(event);});$this.blur(function(event){inactivate(event);});}else{$this.click(function(){if($this.attr('href')&&$this.attr('href')==tipAttribute&&!opts.clickThrough){return false;}});var mouseTracks=function(evt){if(opts.tracking==true){var trackX=posX-evt.pageX;var trackY=tipY?tipY-evt.pageY:posY-evt.pageY;$this.mousemove(function(evt){$cluetip.css({left:evt.pageX+trackX,top:evt.pageY+trackY});});}};if($.fn.hoverIntent&&opts.hoverIntent){$this.mouseover(function(){$this.attr('title','');}).hoverIntent({sensitivity:opts.hoverIntent.sensitivity,interval:opts.hoverIntent.interval,over:function(event){activate(event);mouseTracks(event);},timeout:opts.hoverIntent.timeout,out:function(event){inactivate(event);$this.unbind('mousemove');}});}else{$this.hover(function(event){activate(event);mouseTracks(event);},function(event){inactivate(event);$this.unbind('mousemove');});}}});};$.fn.cluetip.defaults={width:275,height:'auto',cluezIndex:97,positionBy:'auto',topOffset:15,leftOffset:15,local:false,hideLocal:true,attribute:'rel',titleAttribute:'title',splitTitle:'',showTitle:true,cluetipClass:'default',hoverClass:'',waitImage:true,cursor:'help',arrows:false,dropShadow:true,dropShadowSteps:6,sticky:false,mouseOutClose:false,activation:'hover',clickThrough:false,tracking:false,delayedClose:0,closePosition:'top',closeText:'Close',truncate:0,fx:{open:'show',openSpeed:''},hoverIntent:{sensitivity:3,interval:50,timeout:0},onActivate:function(e){return true;},onShow:function(ct,c){},ajaxCache:true,ajaxProcess:function(data){data=data.replace(//g,'').replace(/<(link|title)(.|\s)*?\/(link|title)>/g,'');return data;},ajaxSettings:{dataType:'html'},debug:false};var insertionType='appendTo',insertionElement='body';$.cluetip={};$.cluetip.setup=function(options){if(options&&options.insertionType&&(options.insertionType).match(/appendTo|prependTo|insertBefore|insertAfter/)){insertionType=options.insertionType;} +if(options&&options.insertionElement){insertionElement=options.insertionElement;}};})(jQuery); diff --git a/js/jquery/jquery.dimensions.js b/js/jquery/jquery.dimensions.js new file mode 100644 index 000000000..34c06deea --- /dev/null +++ b/js/jquery/jquery.dimensions.js @@ -0,0 +1,12 @@ +/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * $LastChangedDate: 2007-12-20 08:43:48 -0600 (Thu, 20 Dec 2007) $ + * $Rev: 4257 $ + * + * Version: 1.2 + * + * Requires: jQuery 1.2+ + */ +(function($){$.dimensions={version:'1.2'};$.each(['Height','Width'],function(i,name){$.fn['inner'+name]=function(){if(!this[0])return;var torl=name=='Height'?'Top':'Left',borr=name=='Height'?'Bottom':'Right';return this.is(':visible')?this[0]['client'+name]:num(this,name.toLowerCase())+num(this,'padding'+torl)+num(this,'padding'+borr);};$.fn['outer'+name]=function(options){if(!this[0])return;var torl=name=='Height'?'Top':'Left',borr=name=='Height'?'Bottom':'Right';options=$.extend({margin:false},options||{});var val=this.is(':visible')?this[0]['offset'+name]:num(this,name.toLowerCase())+num(this,'border'+torl+'Width')+num(this,'border'+borr+'Width')+num(this,'padding'+torl)+num(this,'padding'+borr);return val+(options.margin?(num(this,'margin'+torl)+num(this,'margin'+borr)):0);};});$.each(['Left','Top'],function(i,name){$.fn['scroll'+name]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(name=='Left'?val:$(window)['scrollLeft'](),name=='Top'?val:$(window)['scrollTop']()):this['scroll'+name]=val;}):this[0]==window||this[0]==document?self[(name=='Left'?'pageXOffset':'pageYOffset')]||$.boxModel&&document.documentElement['scroll'+name]||document.body['scroll'+name]:this[0]['scroll'+name];};});$.fn.extend({position:function(){var left=0,top=0,elem=this[0],offset,parentOffset,offsetParent,results;if(elem){offsetParent=this.offsetParent();offset=this.offset();parentOffset=offsetParent.offset();offset.top-=num(elem,'marginTop');offset.left-=num(elem,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&$.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return $(offsetParent);}});function num(el,prop){return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;};})(jQuery); \ No newline at end of file diff --git a/js/jquery/jquery.easing.1.3.js b/js/jquery/jquery.easing.1.3.js new file mode 100644 index 000000000..0369b1d17 --- /dev/null +++ b/js/jquery/jquery.easing.1.3.js @@ -0,0 +1,146 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built In easIng capabilities added In jQuery 1.1 + * to offer multiple easIng options + * + * Copyright (c) 2007 George Smith + * Licensed under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + */ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + easeInQuad: function (x, t, b, c, d) { + return c*(t/=d)*t + b; + }, + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }, + easeInOutQuad: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + }, + easeInCubic: function (x, t, b, c, d) { + return c*(t/=d)*t*t + b; + }, + easeOutCubic: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + }, + easeInOutCubic: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + }, + easeInQuart: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t + b; + }, + easeOutQuart: function (x, t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + }, + easeInOutQuart: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + }, + easeInQuint: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + }, + easeOutQuint: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + }, + easeInOutQuint: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + }, + easeInSine: function (x, t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + }, + easeOutSine: function (x, t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + }, + easeInOutSine: function (x, t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + }, + easeInExpo: function (x, t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + }, + easeOutExpo: function (x, t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + }, + easeInOutExpo: function (x, t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc: function (x, t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + }, + easeOutCirc: function (x, t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + }, + easeInOutCirc: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + }, + easeInElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + }, + easeOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + }, + easeInOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + }, + easeInBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + }, + easeOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + }, + easeInOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + }, + easeInBounce: function (x, t, b, c, d) { + return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; + }, + easeOutBounce: function (x, t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + }, + easeInOutBounce: function (x, t, b, c, d) { + if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; + return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; + } +}); diff --git a/js/jquery/jquery.fancybox-1.3.4.js b/js/jquery/jquery.fancybox-1.3.4.js new file mode 100644 index 000000000..be7727537 --- /dev/null +++ b/js/jquery/jquery.fancybox-1.3.4.js @@ -0,0 +1,1156 @@ +/* + * FancyBox - jQuery Plugin + * Simple and fancy lightbox alternative + * + * Examples and documentation at: http://fancybox.net + * + * Copyright (c) 2008 - 2010 Janis Skarnelis + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. + * + * Version: 1.3.4 (11/11/2010) + * Requires: jQuery v1.3+ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +;(function($) { + var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right, + + selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [], + + ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i, + + loadingTimer, loadingFrame = 1, + + titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('
        ')[0], { prop: 0 }), + + isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest, + + /* + * Private methods + */ + + _abort = function() { + loading.hide(); + + imgPreloader.onerror = imgPreloader.onload = null; + + if (ajaxLoader) { + ajaxLoader.abort(); + } + + tmp.empty(); + }, + + _error = function() { + if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) { + loading.hide(); + busy = false; + return; + } + + selectedOpts.titleShow = false; + + selectedOpts.width = 'auto'; + selectedOpts.height = 'auto'; + + tmp.html( '

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

        ' ); + + _process_inline(); + }, + + _start = function() { + var obj = selectedArray[ selectedIndex ], + href, + type, + title, + str, + emb, + ret; + + _abort(); + + selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox'))); + + ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts); + + if (ret === false) { + busy = false; + return; + } else if (typeof ret == 'object') { + selectedOpts = $.extend(selectedOpts, ret); + } + + title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || ''; + + if (obj.nodeName && !selectedOpts.orig) { + selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj); + } + + if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) { + title = selectedOpts.orig.attr('alt'); + } + + href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null; + + if ((/^(?:javascript)/i).test(href) || href == '#') { + href = null; + } + + if (selectedOpts.type) { + type = selectedOpts.type; + + if (!href) { + href = selectedOpts.content; + } + + } else if (selectedOpts.content) { + type = 'html'; + + } else if (href) { + if (href.match(imgRegExp)) { + type = 'image'; + + } else if (href.match(swfRegExp)) { + type = 'swf'; + + } else if ($(obj).hasClass("iframe")) { + type = 'iframe'; + + } else if (href.indexOf("#") === 0) { + type = 'inline'; + + } else { + type = 'ajax'; + } + } + + if (!type) { + _error(); + return; + } + + if (type == 'inline') { + obj = href.substr(href.indexOf("#")); + type = $(obj).length > 0 ? 'inline' : 'ajax'; + } + + selectedOpts.type = type; + selectedOpts.href = href; + selectedOpts.title = title; + + if (selectedOpts.autoDimensions) { + if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') { + selectedOpts.width = 'auto'; + selectedOpts.height = 'auto'; + } else { + selectedOpts.autoDimensions = false; + } + } + + if (selectedOpts.modal) { + selectedOpts.overlayShow = true; + selectedOpts.hideOnOverlayClick = false; + selectedOpts.hideOnContentClick = false; + selectedOpts.enableEscapeButton = false; + selectedOpts.showCloseButton = false; + } + + selectedOpts.padding = parseInt(selectedOpts.padding, 10); + selectedOpts.margin = parseInt(selectedOpts.margin, 10); + + tmp.css('padding', (selectedOpts.padding + selectedOpts.margin)); + + $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() { + $(this).replaceWith(content.children()); + }); + + switch (type) { + case 'html' : + tmp.html( selectedOpts.content ); + _process_inline(); + break; + + case 'inline' : + if ( $(obj).parent().is('#fancybox-content') === true) { + busy = false; + return; + } + + $('
        ') + .hide() + .insertBefore( $(obj) ) + .bind('fancybox-cleanup', function() { + $(this).replaceWith(content.children()); + }).bind('fancybox-cancel', function() { + $(this).replaceWith(tmp.children()); + }); + + $(obj).appendTo(tmp); + + _process_inline(); + break; + + case 'image': + busy = false; + + $.fancybox.showActivity(); + + imgPreloader = new Image(); + + imgPreloader.onerror = function() { + _error(); + }; + + imgPreloader.onload = function() { + busy = true; + + imgPreloader.onerror = imgPreloader.onload = null; + + _process_image(); + }; + + imgPreloader.src = href; + break; + + case 'swf': + selectedOpts.scrolling = 'no'; + + str = ''; + emb = ''; + + $.each(selectedOpts.swf, function(name, val) { + str += ''; + emb += ' ' + name + '="' + val + '"'; + }); + + str += ''; + + tmp.html(str); + + _process_inline(); + break; + + case 'ajax': + busy = false; + + $.fancybox.showActivity(); + + selectedOpts.ajax.win = selectedOpts.ajax.success; + + ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, { + url : href, + data : selectedOpts.ajax.data || {}, + error : function(XMLHttpRequest, textStatus, errorThrown) { + if ( XMLHttpRequest.status > 0 ) { + _error(); + } + }, + success : function(data, textStatus, XMLHttpRequest) { + var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader; + if (o.status == 200) { + if ( typeof selectedOpts.ajax.win == 'function' ) { + ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest); + + if (ret === false) { + loading.hide(); + return; + } else if (typeof ret == 'string' || typeof ret == 'object') { + data = ret; + } + } + + tmp.html( data ); + _process_inline(); + } + } + })); + + break; + + case 'iframe': + _show(); + break; + } + }, + + _process_inline = function() { + var + w = selectedOpts.width, + h = selectedOpts.height; + + if (w.toString().indexOf('%') > -1) { + w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px'; + + } else { + w = w == 'auto' ? 'auto' : w + 'px'; + } + + if (h.toString().indexOf('%') > -1) { + h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px'; + + } else { + h = h == 'auto' ? 'auto' : h + 'px'; + } + + tmp.wrapInner('
        '); + + selectedOpts.width = tmp.width(); + selectedOpts.height = tmp.height(); + + _show(); + }, + + _process_image = function() { + selectedOpts.width = imgPreloader.width; + selectedOpts.height = imgPreloader.height; + + $("").attr({ + 'id' : 'fancybox-img', + 'src' : imgPreloader.src, + 'alt' : selectedOpts.title + }).appendTo( tmp ); + + _show(); + }, + + _show = function() { + var pos, equal; + + loading.hide(); + + if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { + $.event.trigger('fancybox-cancel'); + + busy = false; + return; + } + + busy = true; + + $(content.add( overlay )).unbind(); + + $(window).unbind("resize.fb scroll.fb"); + $(document).unbind('keydown.fb'); + + if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') { + wrap.css('height', wrap.height()); + } + + currentArray = selectedArray; + currentIndex = selectedIndex; + currentOpts = selectedOpts; + + if (currentOpts.overlayShow) { + overlay.css({ + 'background-color' : currentOpts.overlayColor, + 'opacity' : currentOpts.overlayOpacity, + 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto', + 'height' : $(document).height() + }); + + if (!overlay.is(':visible')) { + if (isIE6) { + $('select:not(#fancybox-tmp select)').filter(function() { + return this.style.visibility !== 'hidden'; + }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() { + this.style.visibility = 'inherit'; + }); + } + + overlay.show(); + } + } else { + overlay.hide(); + } + + final_pos = _get_zoom_to(); + + _process_title(); + + if (wrap.is(":visible")) { + $( close.add( nav_left ).add( nav_right ) ).hide(); + + pos = wrap.position(), + + start_pos = { + top : pos.top, + left : pos.left, + width : wrap.width(), + height : wrap.height() + }; + + equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height); + + content.fadeTo(currentOpts.changeFade, 0.3, function() { + var finish_resizing = function() { + content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish); + }; + + $.event.trigger('fancybox-change'); + + content + .empty() + .removeAttr('filter') + .css({ + 'border-width' : currentOpts.padding, + 'width' : final_pos.width - currentOpts.padding * 2, + 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 + }); + + if (equal) { + finish_resizing(); + + } else { + fx.prop = 0; + + $(fx).animate({prop: 1}, { + duration : currentOpts.changeSpeed, + easing : currentOpts.easingChange, + step : _draw, + complete : finish_resizing + }); + } + }); + + return; + } + + wrap.removeAttr("style"); + + content.css('border-width', currentOpts.padding); + + if (currentOpts.transitionIn == 'elastic') { + start_pos = _get_zoom_from(); + + content.html( tmp.contents() ); + + wrap.show(); + + if (currentOpts.opacity) { + final_pos.opacity = 0; + } + + fx.prop = 0; + + $(fx).animate({prop: 1}, { + duration : currentOpts.speedIn, + easing : currentOpts.easingIn, + step : _draw, + complete : _finish + }); + + return; + } + + if (currentOpts.titlePosition == 'inside' && titleHeight > 0) { + title.show(); + } + + content + .css({ + 'width' : final_pos.width - currentOpts.padding * 2, + 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2 + }) + .html( tmp.contents() ); + + wrap + .css(final_pos) + .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish ); + }, + + _format_title = function(title) { + if (title && title.length) { + if (currentOpts.titlePosition == 'float') { + return '
        ' + title + '
        '; + } + + return '
        ' + title + '
        '; + } + + return false; + }, + + _process_title = function() { + titleStr = currentOpts.title || ''; + titleHeight = 0; + + title + .empty() + .removeAttr('style') + .removeClass(); + + if (currentOpts.titleShow === false) { + title.hide(); + return; + } + + titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr); + + if (!titleStr || titleStr === '') { + title.hide(); + return; + } + + title + .addClass('fancybox-title-' + currentOpts.titlePosition) + .html( titleStr ) + .appendTo( 'body' ) + .show(); + + switch (currentOpts.titlePosition) { + case 'inside': + title + .css({ + 'width' : final_pos.width - (currentOpts.padding * 2), + 'marginLeft' : currentOpts.padding, + 'marginRight' : currentOpts.padding + }); + + titleHeight = title.outerHeight(true); + + title.appendTo( outer ); + + final_pos.height += titleHeight; + break; + + case 'over': + title + .css({ + 'marginLeft' : currentOpts.padding, + 'width' : final_pos.width - (currentOpts.padding * 2), + 'bottom' : currentOpts.padding + }) + .appendTo( outer ); + break; + + case 'float': + title + .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1) + .appendTo( wrap ); + break; + + default: + title + .css({ + 'width' : final_pos.width - (currentOpts.padding * 2), + 'paddingLeft' : currentOpts.padding, + 'paddingRight' : currentOpts.padding + }) + .appendTo( wrap ); + break; + } + + title.hide(); + }, + + _set_navigation = function() { + if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) { + $(document).bind('keydown.fb', function(e) { + if (e.keyCode == 27 && currentOpts.enableEscapeButton) { + e.preventDefault(); + $.fancybox.close(); + + } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') { + e.preventDefault(); + $.fancybox[ e.keyCode == 37 ? 'prev' : 'next'](); + } + }); + } + + if (!currentOpts.showNavArrows) { + nav_left.hide(); + nav_right.hide(); + return; + } + + if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) { + nav_left.show(); + } + + if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) { + nav_right.show(); + } + }, + + _finish = function () { + if (!$.support.opacity) { + content.get(0).style.removeAttribute('filter'); + wrap.get(0).style.removeAttribute('filter'); + } + + if (selectedOpts.autoDimensions) { + content.css('height', 'auto'); + } + + wrap.css('height', 'auto'); + + if (titleStr && titleStr.length) { + title.show(); + } + + if (currentOpts.showCloseButton) { + close.show(); + } + + _set_navigation(); + + if (currentOpts.hideOnContentClick) { + content.bind('click', $.fancybox.close); + } + + if (currentOpts.hideOnOverlayClick) { + overlay.bind('click', $.fancybox.close); + } + + $(window).bind("resize.fb", $.fancybox.resize); + + if (currentOpts.centerOnScroll) { + $(window).bind("scroll.fb", $.fancybox.center); + } + + if (currentOpts.type == 'iframe') { + $('').appendTo(content); + } + + wrap.show(); + + busy = false; + + $.fancybox.center(); + + currentOpts.onComplete(currentArray, currentIndex, currentOpts); + + _preload_images(); + }, + + _preload_images = function() { + var href, + objNext; + + if ((currentArray.length -1) > currentIndex) { + href = currentArray[ currentIndex + 1 ].href; + + if (typeof href !== 'undefined' && href.match(imgRegExp)) { + objNext = new Image(); + objNext.src = href; + } + } + + if (currentIndex > 0) { + href = currentArray[ currentIndex - 1 ].href; + + if (typeof href !== 'undefined' && href.match(imgRegExp)) { + objNext = new Image(); + objNext.src = href; + } + } + }, + + _draw = function(pos) { + var dim = { + width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10), + height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10), + + top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10), + left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10) + }; + + if (typeof final_pos.opacity !== 'undefined') { + dim.opacity = pos < 0.5 ? 0.5 : pos; + } + + wrap.css(dim); + + content.css({ + 'width' : dim.width - currentOpts.padding * 2, + 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2 + }); + }, + + _get_viewport = function() { + return [ + $(window).width() - (currentOpts.margin * 2), + $(window).height() - (currentOpts.margin * 2), + $(document).scrollLeft() + currentOpts.margin, + $(document).scrollTop() + currentOpts.margin + ]; + }, + + _get_zoom_to = function () { + var view = _get_viewport(), + to = {}, + resize = currentOpts.autoScale, + double_padding = currentOpts.padding * 2, + ratio; + + if (currentOpts.width.toString().indexOf('%') > -1) { + to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10); + } else { + to.width = currentOpts.width + double_padding; + } + + if (currentOpts.height.toString().indexOf('%') > -1) { + to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10); + } else { + to.height = currentOpts.height + double_padding; + } + + if (resize && (to.width > view[0] || to.height > view[1])) { + if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') { + ratio = (currentOpts.width ) / (currentOpts.height ); + + if ((to.width ) > view[0]) { + to.width = view[0]; + to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10); + } + + if ((to.height) > view[1]) { + to.height = view[1]; + to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10); + } + + } else { + to.width = Math.min(to.width, view[0]); + to.height = Math.min(to.height, view[1]); + } + } + + to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10); + to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10); + + return to; + }, + + _get_obj_pos = function(obj) { + var pos = obj.offset(); + + pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0; + pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0; + + pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0; + pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0; + + pos.width = obj.width(); + pos.height = obj.height(); + + return pos; + }, + + _get_zoom_from = function() { + var orig = selectedOpts.orig ? $(selectedOpts.orig) : false, + from = {}, + pos, + view; + + if (orig && orig.length) { + pos = _get_obj_pos(orig); + + from = { + width : pos.width + (currentOpts.padding * 2), + height : pos.height + (currentOpts.padding * 2), + top : pos.top - currentOpts.padding - 20, + left : pos.left - currentOpts.padding - 20 + }; + + } else { + view = _get_viewport(); + + from = { + width : currentOpts.padding * 2, + height : currentOpts.padding * 2, + top : parseInt(view[3] + view[1] * 0.5, 10), + left : parseInt(view[2] + view[0] * 0.5, 10) + }; + } + + return from; + }, + + _animate_loading = function() { + if (!loading.is(':visible')){ + clearInterval(loadingTimer); + return; + } + + $('div', loading).css('top', (loadingFrame * -40) + 'px'); + + loadingFrame = (loadingFrame + 1) % 12; + }; + + /* + * Public methods + */ + + $.fn.fancybox = function(options) { + if (!$(this).length) { + return this; + } + + $(this) + .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {}))) + .unbind('click.fb') + .bind('click.fb', function(e) { + e.preventDefault(); + + if (busy) { + return; + } + + busy = true; + + $(this).blur(); + + selectedArray = []; + selectedIndex = 0; + + var rel = $(this).attr('rel') || ''; + + if (!rel || rel == '' || rel === 'nofollow') { + selectedArray.push(this); + + } else { + selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]"); + selectedIndex = selectedArray.index( this ); + } + + _start(); + + return; + }); + + return this; + }; + + $.fancybox = function(obj) { + var opts; + + if (busy) { + return; + } + + busy = true; + opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {}; + + selectedArray = []; + selectedIndex = parseInt(opts.index, 10) || 0; + + if ($.isArray(obj)) { + for (var i = 0, j = obj.length; i < j; i++) { + if (typeof obj[i] == 'object') { + $(obj[i]).data('fancybox', $.extend({}, opts, obj[i])); + } else { + obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts)); + } + } + + selectedArray = jQuery.merge(selectedArray, obj); + + } else { + if (typeof obj == 'object') { + $(obj).data('fancybox', $.extend({}, opts, obj)); + } else { + obj = $({}).data('fancybox', $.extend({content : obj}, opts)); + } + + selectedArray.push(obj); + } + + if (selectedIndex > selectedArray.length || selectedIndex < 0) { + selectedIndex = 0; + } + + _start(); + }; + + $.fancybox.showActivity = function() { + clearInterval(loadingTimer); + + loading.show(); + loadingTimer = setInterval(_animate_loading, 66); + }; + + $.fancybox.hideActivity = function() { + loading.hide(); + }; + + $.fancybox.next = function() { + return $.fancybox.pos( currentIndex + 1); + }; + + $.fancybox.prev = function() { + return $.fancybox.pos( currentIndex - 1); + }; + + $.fancybox.pos = function(pos) { + if (busy) { + return; + } + + pos = parseInt(pos); + + selectedArray = currentArray; + + if (pos > -1 && pos < currentArray.length) { + selectedIndex = pos; + _start(); + + } else if (currentOpts.cyclic && currentArray.length > 1) { + selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1; + _start(); + } + + return; + }; + + $.fancybox.cancel = function() { + if (busy) { + return; + } + + busy = true; + + $.event.trigger('fancybox-cancel'); + + _abort(); + + selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts); + + busy = false; + }; + + // Note: within an iframe use - parent.$.fancybox.close(); + $.fancybox.close = function() { + if (busy || wrap.is(':hidden')) { + return; + } + + busy = true; + + if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) { + busy = false; + return; + } + + _abort(); + + $(close.add( nav_left ).add( nav_right )).hide(); + + $(content.add( overlay )).unbind(); + + $(window).unbind("resize.fb scroll.fb"); + $(document).unbind('keydown.fb'); + + content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank'); + + if (currentOpts.titlePosition !== 'inside') { + title.empty(); + } + + wrap.stop(); + + function _cleanup() { + overlay.fadeOut('fast'); + + title.empty().hide(); + wrap.hide(); + + $.event.trigger('fancybox-cleanup'); + + content.empty(); + + currentOpts.onClosed(currentArray, currentIndex, currentOpts); + + currentArray = selectedOpts = []; + currentIndex = selectedIndex = 0; + currentOpts = selectedOpts = {}; + + busy = false; + } + + if (currentOpts.transitionOut == 'elastic') { + start_pos = _get_zoom_from(); + + var pos = wrap.position(); + + final_pos = { + top : pos.top , + left : pos.left, + width : wrap.width(), + height : wrap.height() + }; + + if (currentOpts.opacity) { + final_pos.opacity = 1; + } + + title.empty().hide(); + + fx.prop = 1; + + $(fx).animate({ prop: 0 }, { + duration : currentOpts.speedOut, + easing : currentOpts.easingOut, + step : _draw, + complete : _cleanup + }); + + } else { + wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup); + } + }; + + $.fancybox.resize = function() { + if (overlay.is(':visible')) { + overlay.css('height', $(document).height()); + } + + $.fancybox.center(true); + }; + + $.fancybox.center = function() { + var view, align; + + if (busy) { + return; + } + + align = arguments[0] === true ? 1 : 0; + view = _get_viewport(); + + if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) { + return; + } + + wrap + .stop() + .animate({ + 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)), + 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding)) + }, typeof arguments[0] == 'number' ? arguments[0] : 200); + }; + + $.fancybox.init = function() { + if ($("#fancybox-wrap").length) { + return; + } + + $('body').append( + tmp = $('
        '), + loading = $('
        '), + overlay = $('
        '), + wrap = $('
        ') + ); + + outer = $('
        ') + .append('
        ') + .appendTo( wrap ); + + outer.append( + content = $('
        '), + close = $(''), + title = $('
        '), + + nav_left = $(''), + nav_right = $('') + ); + + close.click($.fancybox.close); + loading.click($.fancybox.cancel); + + nav_left.click(function(e) { + e.preventDefault(); + $.fancybox.prev(); + }); + + nav_right.click(function(e) { + e.preventDefault(); + $.fancybox.next(); + }); + + if ($.fn.mousewheel) { + wrap.bind('mousewheel.fb', function(e, delta) { + if (busy) { + e.preventDefault(); + + } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) { + e.preventDefault(); + $.fancybox[ delta > 0 ? 'prev' : 'next'](); + } + }); + } + + if (!$.support.opacity) { + wrap.addClass('fancybox-ie'); + } + + if (isIE6) { + loading.addClass('fancybox-ie6'); + wrap.addClass('fancybox-ie6'); + + $('').prependTo(outer); + } + }; + + $.fn.fancybox.defaults = { + padding : 10, + margin : 40, + opacity : false, + modal : false, + cyclic : false, + scrolling : 'auto', // 'auto', 'yes' or 'no' + + width : 560, + height : 340, + + autoScale : true, + autoDimensions : true, + centerOnScroll : false, + + ajax : {}, + swf : { wmode: 'transparent' }, + + hideOnOverlayClick : true, + hideOnContentClick : false, + + overlayShow : true, + overlayOpacity : 0.7, + overlayColor : '#777', + + titleShow : true, + titlePosition : 'float', // 'float', 'outside', 'inside' or 'over' + titleFormat : null, + titleFromAlt : false, + + transitionIn : 'fade', // 'elastic', 'fade' or 'none' + transitionOut : 'fade', // 'elastic', 'fade' or 'none' + + speedIn : 300, + speedOut : 300, + + changeSpeed : 300, + changeFade : 'fast', + + easingIn : 'swing', + easingOut : 'swing', + + showCloseButton : true, + showNavArrows : true, + enableEscapeButton : true, + enableKeyboardNav : true, + + onStart : function(){}, + onCancel : function(){}, + onComplete : function(){}, + onCleanup : function(){}, + onClosed : function(){}, + onError : function(){} + }; + + $(document).ready(function() { + $.fancybox.init(); + }); + +})(jQuery); \ No newline at end of file diff --git a/js/jquery/jquery.flot.min.js b/js/jquery/jquery.flot.min.js new file mode 100644 index 000000000..31f465b83 --- /dev/null +++ b/js/jquery/jquery.flot.min.js @@ -0,0 +1 @@ +(function(){jQuery.color={};jQuery.color.make=function(G,H,J,I){var A={};A.r=G||0;A.g=H||0;A.b=J||0;A.a=I!=null?I:1;A.add=function(C,D){for(var E=0;E=1){return"rgb("+[A.r,A.g,A.b].join(",")+")"}else{return"rgba("+[A.r,A.g,A.b,A.a].join(",")+")"}};A.normalize=function(){function C(E,D,F){return DF?F:D)}A.r=C(0,parseInt(A.r),255);A.g=C(0,parseInt(A.g),255);A.b=C(0,parseInt(A.b),255);A.a=C(0,A.a,1);return A};A.clone=function(){return jQuery.color.make(A.r,A.b,A.g,A.a)};return A.normalize()};jQuery.color.extract=function(E,F){var A;do{A=E.css(F).toLowerCase();if(A!=""&&A!="transparent"){break}E=E.parent()}while(!jQuery.nodeName(E.get(0),"body"));if(A=="rgba(0, 0, 0, 0)"){A="transparent"}return jQuery.color.parse(A)};jQuery.color.parse=function(A){var F,H=jQuery.color.make;if(F=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(A)){return H(parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10))}if(F=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(A)){return H(parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10),parseFloat(F[4]))}if(F=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(A)){return H(parseFloat(F[1])*2.55,parseFloat(F[2])*2.55,parseFloat(F[3])*2.55)}if(F=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(A)){return H(parseFloat(F[1])*2.55,parseFloat(F[2])*2.55,parseFloat(F[3])*2.55,parseFloat(F[4]))}if(F=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(A)){return H(parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16))}if(F=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(A)){return H(parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16))}var G=jQuery.trim(A).toLowerCase();if(G=="transparent"){return H(255,255,255,0)}else{F=B[G];return H(F[0],F[1],F[2])}};var B={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})();(function(C){function B(l,W,X,E){var O=[],g={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{mode:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null,twelveHourClock:false},yaxis:{autoscaleMargin:0.02},x2axis:{autoscaleMargin:null},y2axis:{autoscaleMargin:0.02},series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false},shadowSize:3},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,tickColor:"rgba(0,0,0,0.15)",labelMargin:5,borderWidth:2,borderColor:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},hooks:{}},P=null,AC=null,AD=null,Y=null,AJ=null,s={xaxis:{},yaxis:{},x2axis:{},y2axis:{}},e={left:0,right:0,top:0,bottom:0},y=0,Q=0,I=0,t=0,L={processOptions:[],processRawData:[],processDatapoints:[],draw:[],bindEvents:[],drawOverlay:[]},G=this;G.setData=f;G.setupGrid=k;G.draw=AH;G.getPlaceholder=function(){return l};G.getCanvas=function(){return P};G.getPlotOffset=function(){return e};G.width=function(){return I};G.height=function(){return t};G.offset=function(){var AK=AD.offset();AK.left+=e.left;AK.top+=e.top;return AK};G.getData=function(){return O};G.getAxes=function(){return s};G.getOptions=function(){return g};G.highlight=AE;G.unhighlight=x;G.triggerRedrawOverlay=q;G.pointOffset=function(AK){return{left:parseInt(T(AK,"xaxis").p2c(+AK.x)+e.left),top:parseInt(T(AK,"yaxis").p2c(+AK.y)+e.top)}};G.hooks=L;b(G);r(X);c();f(W);k();AH();AG();function Z(AM,AK){AK=[G].concat(AK);for(var AL=0;AL=g.colors.length){AP=0;++AO}}var AQ=0,AW;for(AP=0;APAl.datamax){Al.datamax=Aj}}for(Ac=0;Ac0&&Ab[AZ-AX]!=null&&Ab[AZ-AX]!=Ab[AZ]&&Ab[AZ-AX+1]!=Ab[AZ+1]){for(AV=0;AVAU){AU=Ai}}if(Af.y){if(AiAd){Ad=Ai}}}}if(AR.bars.show){var Ag=AR.bars.align=="left"?0:-AR.bars.barWidth/2;if(AR.bars.horizontal){AY+=Ag;Ad+=Ag+AR.bars.barWidth}else{AS+=Ag;AU+=Ag+AR.bars.barWidth}}AN(AR.xaxis,AS,AU);AN(AR.yaxis,AY,Ad)}for(AK in s){if(s[AK].datamin==AW){s[AK].datamin=null}if(s[AK].datamax==AQ){s[AK].datamax=null}}}function c(){function AK(AM,AL){var AN=document.createElement("canvas");AN.width=AM;AN.height=AL;if(C.browser.msie){AN=window.G_vmlCanvasManager.initElement(AN)}return AN}y=l.width();Q=l.height();l.html("");if(l.css("position")=="static"){l.css("position","relative")}if(y<=0||Q<=0){throw"Invalid dimensions for plot, width = "+y+", height = "+Q}if(C.browser.msie){window.G_vmlCanvasManager.init_(document)}P=C(AK(y,Q)).appendTo(l).get(0);Y=P.getContext("2d");AC=C(AK(y,Q)).css({position:"absolute",left:0,top:0}).appendTo(l).get(0);AJ=AC.getContext("2d");AJ.stroke()}function AG(){AD=C([AC,P]);if(g.grid.hoverable){AD.mousemove(D)}if(g.grid.clickable){AD.click(d)}Z(L.bindEvents,[AD])}function k(){function AL(AT,AU){function AP(AV){return AV}var AS,AO,AQ=AU.transform||AP,AR=AU.inverseTransform;if(AT==s.xaxis||AT==s.x2axis){AS=AT.scale=I/(AQ(AT.max)-AQ(AT.min));AO=AQ(AT.min);if(AQ==AP){AT.p2c=function(AV){return(AV-AO)*AS}}else{AT.p2c=function(AV){return(AQ(AV)-AO)*AS}}if(!AR){AT.c2p=function(AV){return AO+AV/AS}}else{AT.c2p=function(AV){return AR(AO+AV/AS)}}}else{AS=AT.scale=t/(AQ(AT.max)-AQ(AT.min));AO=AQ(AT.max);if(AQ==AP){AT.p2c=function(AV){return(AO-AV)*AS}}else{AT.p2c=function(AV){return(AO-AQ(AV))*AS}}if(!AR){AT.c2p=function(AV){return AO-AV/AS}}else{AT.c2p=function(AV){return AR(AO-AV/AS)}}}}function AN(AR,AT){var AQ,AS=[],AP;AR.labelWidth=AT.labelWidth;AR.labelHeight=AT.labelHeight;if(AR==s.xaxis||AR==s.x2axis){if(AR.labelWidth==null){AR.labelWidth=y/(AR.ticks.length>0?AR.ticks.length:1)}if(AR.labelHeight==null){AS=[];for(AQ=0;AQ'+AP+"
        ")}}if(AS.length>0){var AO=C('
        '+AS.join("")+'
        ').appendTo(l);AR.labelHeight=AO.height();AO.remove()}}}else{if(AR.labelWidth==null||AR.labelHeight==null){for(AQ=0;AQ'+AP+"
        ")}}if(AS.length>0){var AO=C('
        '+AS.join("")+"
        ").appendTo(l);if(AR.labelWidth==null){AR.labelWidth=AO.width()}if(AR.labelHeight==null){AR.labelHeight=AO.find("div").height()}AO.remove()}}}if(AR.labelWidth==null){AR.labelWidth=0}if(AR.labelHeight==null){AR.labelHeight=0}}function AM(){var AP=g.grid.borderWidth;for(i=0;i0){e.bottom=Math.max(AP,s.xaxis.labelHeight+AO)}if(s.yaxis.labelWidth>0){e.left=Math.max(AP,s.yaxis.labelWidth+AO)}if(s.x2axis.labelHeight>0){e.top=Math.max(AP,s.x2axis.labelHeight+AO)}if(s.y2axis.labelWidth>0){e.right=Math.max(AP,s.y2axis.labelWidth+AO)}I=y-e.left-e.right;t=Q-e.bottom-e.top}var AK;for(AK in s){K(s[AK],g[AK])}if(g.grid.show){for(AK in s){F(s[AK],g[AK]);p(s[AK],g[AK]);AN(s[AK],g[AK])}AM()}else{e.left=e.right=e.top=e.bottom=0;I=y;t=Q}for(AK in s){AL(s[AK],g[AK])}if(g.grid.show){h()}AI()}function K(AN,AQ){var AM=+(AQ.min!=null?AQ.min:AN.datamin),AK=+(AQ.max!=null?AQ.max:AN.datamax),AP=AK-AM;if(AP==0){var AL=AK==0?1:0.01;if(AQ.min==null){AM-=AL}if(AQ.max==null||AQ.min!=null){AK+=AL}}else{var AO=AQ.autoscaleMargin;if(AO!=null){if(AQ.min==null){AM-=AP*AO;if(AM<0&&AN.datamin!=null&&AN.datamin>=0){AM=0}}if(AQ.max==null){AK+=AP*AO;if(AK>0&&AN.datamax!=null&&AN.datamax<=0){AK=0}}}}AN.min=AM;AN.max=AK}function F(AP,AS){var AO;if(typeof AS.ticks=="number"&&AS.ticks>0){AO=AS.ticks}else{if(AP==s.xaxis||AP==s.x2axis){AO=0.3*Math.sqrt(y)}else{AO=0.3*Math.sqrt(Q)}}var AX=(AP.max-AP.min)/AO,AZ,AT,AV,AW,AR,AM,AL;if(AS.mode=="time"){var AU={second:1000,minute:60*1000,hour:60*60*1000,day:24*60*60*1000,month:30*24*60*60*1000,year:365.2425*24*60*60*1000};var AY=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var AN=0;if(AS.minTickSize!=null){if(typeof AS.tickSize=="number"){AN=AS.tickSize}else{AN=AS.minTickSize[0]*AU[AS.minTickSize[1]]}}for(AR=0;AR=AN){break}}AZ=AY[AR][0];AV=AY[AR][1];if(AV=="year"){AM=Math.pow(10,Math.floor(Math.log(AX/AU.year)/Math.LN10));AL=(AX/AU.year)/AM;if(AL<1.5){AZ=1}else{if(AL<3){AZ=2}else{if(AL<7.5){AZ=5}else{AZ=10}}}AZ*=AM}if(AS.tickSize){AZ=AS.tickSize[0];AV=AS.tickSize[1]}AT=function(Ac){var Ah=[],Af=Ac.tickSize[0],Ai=Ac.tickSize[1],Ag=new Date(Ac.min);var Ab=Af*AU[Ai];if(Ai=="second"){Ag.setUTCSeconds(A(Ag.getUTCSeconds(),Af))}if(Ai=="minute"){Ag.setUTCMinutes(A(Ag.getUTCMinutes(),Af))}if(Ai=="hour"){Ag.setUTCHours(A(Ag.getUTCHours(),Af))}if(Ai=="month"){Ag.setUTCMonth(A(Ag.getUTCMonth(),Af))}if(Ai=="year"){Ag.setUTCFullYear(A(Ag.getUTCFullYear(),Af))}Ag.setUTCMilliseconds(0);if(Ab>=AU.minute){Ag.setUTCSeconds(0)}if(Ab>=AU.hour){Ag.setUTCMinutes(0)}if(Ab>=AU.day){Ag.setUTCHours(0)}if(Ab>=AU.day*4){Ag.setUTCDate(1)}if(Ab>=AU.year){Ag.setUTCMonth(0)}var Ak=0,Aj=Number.NaN,Ad;do{Ad=Aj;Aj=Ag.getTime();Ah.push({v:Aj,label:Ac.tickFormatter(Aj,Ac)});if(Ai=="month"){if(Af<1){Ag.setUTCDate(1);var Aa=Ag.getTime();Ag.setUTCMonth(Ag.getUTCMonth()+1);var Ae=Ag.getTime();Ag.setTime(Aj+Ak*AU.hour+(Ae-Aa)*Af);Ak=Ag.getUTCHours();Ag.setUTCHours(0)}else{Ag.setUTCMonth(Ag.getUTCMonth()+Af)}}else{if(Ai=="year"){Ag.setUTCFullYear(Ag.getUTCFullYear()+Af)}else{Ag.setTime(Aj+Ab)}}}while(AjAK){AQ=AK}AM=Math.pow(10,-AQ);AL=AX/AM;if(AL<1.5){AZ=1}else{if(AL<3){AZ=2;if(AL>2.25&&(AK==null||AQ+1<=AK)){AZ=2.5;++AQ}}else{if(AL<7.5){AZ=5}else{AZ=10}}}AZ*=AM;if(AS.minTickSize!=null&&AZ0){AO.ticks=AO.tickGenerator(AO)}}else{if(AQ.ticks){var AP=AQ.ticks;if(C.isFunction(AP)){AP=AP({min:AO.min,max:AO.max})}var AN,AK;for(AN=0;AN1){AL=AM[1]}}else{AK=AM}if(AL==null){AL=AO.tickFormatter(AK,AO)}AO.ticks[AN]={v:AK,label:AL}}}}}if(AQ.autoscaleMargin!=null&&AO.ticks.length>0){if(AQ.min==null){AO.min=Math.min(AO.min,AO.ticks[0].v)}if(AQ.max==null&&AO.ticks.length>1){AO.max=Math.max(AO.max,AO.ticks[AO.ticks.length-1].v)}}}function AH(){Y.clearRect(0,0,y,Q);var AL=g.grid;if(AL.show&&!AL.aboveData){S()}for(var AK=0;AKAP){return{from:AP,to:AQ,axis:AN}}return{from:AQ,to:AP,axis:AN}}function S(){var AO;Y.save();Y.translate(e.left,e.top);if(g.grid.backgroundColor){Y.fillStyle=R(g.grid.backgroundColor,t,0,"rgba(255, 255, 255, 0)");Y.fillRect(0,0,I,t)}var AL=g.grid.markings;if(AL){if(C.isFunction(AL)){AL=AL({xmin:s.xaxis.min,xmax:s.xaxis.max,ymin:s.yaxis.min,ymax:s.yaxis.max,xaxis:s.xaxis,yaxis:s.yaxis,x2axis:s.x2axis,y2axis:s.y2axis})}for(AO=0;AOAQ.axis.max||AN.toAN.axis.max){continue}AQ.from=Math.max(AQ.from,AQ.axis.min);AQ.to=Math.min(AQ.to,AQ.axis.max);AN.from=Math.max(AN.from,AN.axis.min);AN.to=Math.min(AN.to,AN.axis.max);if(AQ.from==AQ.to&&AN.from==AN.to){continue}AQ.from=AQ.axis.p2c(AQ.from);AQ.to=AQ.axis.p2c(AQ.to);AN.from=AN.axis.p2c(AN.from);AN.to=AN.axis.p2c(AN.to);if(AQ.from==AQ.to||AN.from==AN.to){Y.beginPath();Y.strokeStyle=AK.color||g.grid.markingsColor;Y.lineWidth=AK.lineWidth||g.grid.markingsLineWidth;Y.moveTo(AQ.from,AN.from);Y.lineTo(AQ.to,AN.to);Y.stroke()}else{Y.fillStyle=AK.color||g.grid.markingsColor;Y.fillRect(AQ.from,AN.to,AQ.to-AQ.from,AN.from-AN.to)}}}Y.lineWidth=1;Y.strokeStyle=g.grid.tickColor;Y.beginPath();var AM,AP=s.xaxis;for(AO=0;AO=s.xaxis.max){continue}Y.moveTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,0);Y.lineTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,t)}AP=s.yaxis;for(AO=0;AO=AP.max){continue}Y.moveTo(0,Math.floor(AP.p2c(AM))+Y.lineWidth/2);Y.lineTo(I,Math.floor(AP.p2c(AM))+Y.lineWidth/2)}AP=s.x2axis;for(AO=0;AO=AP.max){continue}Y.moveTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,-5);Y.lineTo(Math.floor(AP.p2c(AM))+Y.lineWidth/2,5)}AP=s.y2axis;for(AO=0;AO=AP.max){continue}Y.moveTo(I-5,Math.floor(AP.p2c(AM))+Y.lineWidth/2);Y.lineTo(I+5,Math.floor(AP.p2c(AM))+Y.lineWidth/2)}Y.stroke();if(g.grid.borderWidth){var AR=g.grid.borderWidth;Y.lineWidth=AR;Y.strokeStyle=g.grid.borderColor;Y.strokeRect(-AR/2,-AR/2,I+AR,t+AR)}Y.restore()}function h(){l.find(".tickLabels").remove();var AK=['
        '];function AM(AP,AQ){for(var AO=0;AOAP.max){continue}AK.push(AQ(AN,AP))}}var AL=g.grid.labelMargin+g.grid.borderWidth;AM(s.xaxis,function(AN,AO){return'
        '+AN.label+"
        "});AM(s.yaxis,function(AN,AO){return'
        '+AN.label+"
        "});AM(s.x2axis,function(AN,AO){return'
        '+AN.label+"
        "});AM(s.y2axis,function(AN,AO){return'
        '+AN.label+"
        "});AK.push("
        ");l.append(AK.join(""))}function AA(AK){if(AK.lines.show){a(AK)}if(AK.bars.show){n(AK)}if(AK.points.show){o(AK)}}function a(AN){function AM(AY,AZ,AR,Ad,Ac){var Ae=AY.points,AS=AY.pointsize,AW=null,AV=null;Y.beginPath();for(var AX=AS;AX=Aa&&Ab>Ac.max){if(Aa>Ac.max){continue}AU=(Ac.max-Ab)/(Aa-Ab)*(AT-AU)+AU;Ab=Ac.max}else{if(Aa>=Ab&&Aa>Ac.max){if(Ab>Ac.max){continue}AT=(Ac.max-Ab)/(Aa-Ab)*(AT-AU)+AU;Aa=Ac.max}}if(AU<=AT&&AU=AT&&AU>Ad.max){if(AT>Ad.max){continue}Ab=(Ad.max-AU)/(AT-AU)*(Aa-Ab)+Ab;AU=Ad.max}else{if(AT>=AU&&AT>Ad.max){if(AU>Ad.max){continue}Aa=(Ad.max-AU)/(AT-AU)*(Aa-Ab)+Ab;AT=Ad.max}}if(AU!=AW||Ab!=AV){Y.moveTo(Ad.p2c(AU)+AZ,Ac.p2c(Ab)+AR)}AW=AT;AV=Aa;Y.lineTo(Ad.p2c(AT)+AZ,Ac.p2c(Aa)+AR)}Y.stroke()}function AO(AX,Ae,Ac){var Af=AX.points,AR=AX.pointsize,AS=Math.min(Math.max(0,Ac.min),Ac.max),Aa,AV=0,Ad=false;for(var AW=AR;AW=AT&&AU>Ae.max){if(AT>Ae.max){continue}Ab=(Ae.max-AU)/(AT-AU)*(AZ-Ab)+Ab;AU=Ae.max}else{if(AT>=AU&&AT>Ae.max){if(AU>Ae.max){continue}AZ=(Ae.max-AU)/(AT-AU)*(AZ-Ab)+Ab;AT=Ae.max}}if(!Ad){Y.beginPath();Y.moveTo(Ae.p2c(AU),Ac.p2c(AS));Ad=true}if(Ab>=Ac.max&&AZ>=Ac.max){Y.lineTo(Ae.p2c(AU),Ac.p2c(Ac.max));Y.lineTo(Ae.p2c(AT),Ac.p2c(Ac.max));AV=AT;continue}else{if(Ab<=Ac.min&&AZ<=Ac.min){Y.lineTo(Ae.p2c(AU),Ac.p2c(Ac.min));Y.lineTo(Ae.p2c(AT),Ac.p2c(Ac.min));AV=AT;continue}}var Ag=AU,AY=AT;if(Ab<=AZ&&Ab=Ac.min){AU=(Ac.min-Ab)/(AZ-Ab)*(AT-AU)+AU;Ab=Ac.min}else{if(AZ<=Ab&&AZ=Ac.min){AT=(Ac.min-Ab)/(AZ-Ab)*(AT-AU)+AU;AZ=Ac.min}}if(Ab>=AZ&&Ab>Ac.max&&AZ<=Ac.max){AU=(Ac.max-Ab)/(AZ-Ab)*(AT-AU)+AU;Ab=Ac.max}else{if(AZ>=Ab&&AZ>Ac.max&&Ab<=Ac.max){AT=(Ac.max-Ab)/(AZ-Ab)*(AT-AU)+AU;AZ=Ac.max}}if(AU!=Ag){if(Ab<=Ac.min){Aa=Ac.min}else{Aa=Ac.max}Y.lineTo(Ae.p2c(Ag),Ac.p2c(Aa));Y.lineTo(Ae.p2c(AU),Ac.p2c(Aa))}Y.lineTo(Ae.p2c(AU),Ac.p2c(Ab));Y.lineTo(Ae.p2c(AT),Ac.p2c(AZ));if(AT!=AY){if(AZ<=Ac.min){Aa=Ac.min}else{Aa=Ac.max}Y.lineTo(Ae.p2c(AT),Ac.p2c(Aa));Y.lineTo(Ae.p2c(AY),Ac.p2c(Aa))}AV=Math.max(AT,AY)}if(Ad){Y.lineTo(Ae.p2c(AV),Ac.p2c(AS));Y.fill()}}Y.save();Y.translate(e.left,e.top);Y.lineJoin="round";var AP=AN.lines.lineWidth,AK=AN.shadowSize;if(AP>0&&AK>0){Y.lineWidth=AK;Y.strokeStyle="rgba(0,0,0,0.1)";var AQ=Math.PI/18;AM(AN.datapoints,Math.sin(AQ)*(AP/2+AK/2),Math.cos(AQ)*(AP/2+AK/2),AN.xaxis,AN.yaxis);Y.lineWidth=AK/2;AM(AN.datapoints,Math.sin(AQ)*(AP/2+AK/4),Math.cos(AQ)*(AP/2+AK/4),AN.xaxis,AN.yaxis)}Y.lineWidth=AP;Y.strokeStyle=AN.color;var AL=V(AN.lines,AN.color,0,t);if(AL){Y.fillStyle=AL;AO(AN.datapoints,AN.xaxis,AN.yaxis)}if(AP>0){AM(AN.datapoints,0,0,AN.xaxis,AN.yaxis)}Y.restore()}function o(AN){function AP(AU,AT,Ab,AR,AV,AZ,AY){var Aa=AU.points,AQ=AU.pointsize;for(var AS=0;ASAZ.max||AWAY.max){continue}Y.beginPath();Y.arc(AZ.p2c(AX),AY.p2c(AW)+AR,AT,0,AV,false);if(Ab){Y.fillStyle=Ab;Y.fill()}Y.stroke()}}Y.save();Y.translate(e.left,e.top);var AO=AN.lines.lineWidth,AL=AN.shadowSize,AK=AN.points.radius;if(AO>0&&AL>0){var AM=AL/2;Y.lineWidth=AM;Y.strokeStyle="rgba(0,0,0,0.1)";AP(AN.datapoints,AK,null,AM+AM/2,Math.PI,AN.xaxis,AN.yaxis);Y.strokeStyle="rgba(0,0,0,0.2)";AP(AN.datapoints,AK,null,AM/2,Math.PI,AN.xaxis,AN.yaxis)}Y.lineWidth=AO;Y.strokeStyle=AN.color;AP(AN.datapoints,AK,V(AN.points,AN.color),0,2*Math.PI,AN.xaxis,AN.yaxis);Y.restore()}function AB(AV,AU,Ad,AQ,AY,AN,AL,AT,AS,Ac,AZ){var AM,Ab,AR,AX,AO,AK,AW,AP,Aa;if(AZ){AP=AK=AW=true;AO=false;AM=Ad;Ab=AV;AX=AU+AQ;AR=AU+AY;if(AbAT.max||AXAS.max){return }if(AMAT.max){Ab=AT.max;AK=false}if(ARAS.max){AX=AS.max;AW=false}AM=AT.p2c(AM);AR=AS.p2c(AR);Ab=AT.p2c(Ab);AX=AS.p2c(AX);if(AL){Ac.beginPath();Ac.moveTo(AM,AR);Ac.lineTo(AM,AX);Ac.lineTo(Ab,AX);Ac.lineTo(Ab,AR);Ac.fillStyle=AL(AR,AX);Ac.fill()}if(AO||AK||AW||AP){Ac.beginPath();Ac.moveTo(AM,AR+AN);if(AO){Ac.lineTo(AM,AX+AN)}else{Ac.moveTo(AM,AX+AN)}if(AW){Ac.lineTo(Ab,AX+AN)}else{Ac.moveTo(Ab,AX+AN)}if(AK){Ac.lineTo(Ab,AR+AN)}else{Ac.moveTo(Ab,AR+AN)}if(AP){Ac.lineTo(AM,AR+AN)}else{Ac.moveTo(AM,AR+AN)}Ac.stroke()}}function n(AM){function AL(AS,AR,AU,AP,AT,AW,AV){var AX=AS.points,AO=AS.pointsize;for(var AQ=0;AQ")}AP.push("");AN=true}if(AV){AR=AV(AR,AU)}AP.push('
        '+AR+"")}if(AN){AP.push("")}if(AP.length==0){return }var AT=''+AP.join("")+"
        ";if(g.legend.container!=null){C(g.legend.container).html(AT)}else{var AQ="",AL=g.legend.position,AM=g.legend.margin;if(AM[0]==null){AM=[AM,AM]}if(AL.charAt(0)=="n"){AQ+="top:"+(AM[1]+e.top)+"px;"}else{if(AL.charAt(0)=="s"){AQ+="bottom:"+(AM[1]+e.bottom)+"px;"}}if(AL.charAt(1)=="e"){AQ+="right:"+(AM[0]+e.right)+"px;"}else{if(AL.charAt(1)=="w"){AQ+="left:"+(AM[0]+e.left)+"px;"}}var AS=C('
        '+AT.replace('style="','style="position:absolute;'+AQ+";")+"
        ").appendTo(l);if(g.legend.backgroundOpacity!=0){var AO=g.legend.backgroundColor;if(AO==null){AO=g.grid.backgroundColor;if(AO&&typeof AO=="string"){AO=C.color.parse(AO)}else{AO=C.color.extract(AS,"background-color")}AO.a=1;AO=AO.toString()}var AK=AS.children();C('
        ').prependTo(AS).css("opacity",g.legend.backgroundOpacity)}}}var w=[],J=null;function AF(AR,AP,AM){var AX=g.grid.mouseActiveRadius,Aj=AX*AX+1,Ah=null,Aa=false,Af,Ad;for(Af=0;AfAL||AT-AZ<-AL||AS-AW>AK||AS-AW<-AK){continue}var AV=Math.abs(AQ.p2c(AT)-AR),AU=Math.abs(AO.p2c(AS)-AP),Ab=AV*AV+AU*AU;if(Ab<=Aj){Aj=Ab;Ah=[Af,Ad/Ac]}}}if(AY.bars.show&&!Ah){var AN=AY.bars.align=="left"?0:-AY.bars.barWidth/2,Ag=AN+AY.bars.barWidth;for(Ad=0;Ad=Math.min(Ai,AT)&&AW>=AS+AN&&AW<=AS+Ag):(AZ>=AT+AN&&AZ<=AT+Ag&&AW>=Math.min(Ai,AS)&&AW<=Math.max(Ai,AS))){Ah=[Af,Ad/Ac]}}}}if(Ah){Af=Ah[0];Ad=Ah[1];Ac=O[Af].datapoints.pointsize;return{datapoint:O[Af].datapoints.points.slice(Ad*Ac,(Ad+1)*Ac),dataIndex:Ad,series:O[Af],seriesIndex:Af}}return null}function D(AK){if(g.grid.hoverable){H("plothover",AK,function(AL){return AL.hoverable!=false})}}function d(AK){H("plotclick",AK,function(AL){return AL.clickable!=false})}function H(AL,AK,AM){var AN=AD.offset(),AS={pageX:AK.pageX,pageY:AK.pageY},AQ=AK.pageX-AN.left-e.left,AO=AK.pageY-AN.top-e.top;if(s.xaxis.used){AS.x=s.xaxis.c2p(AQ)}if(s.yaxis.used){AS.y=s.yaxis.c2p(AO)}if(s.x2axis.used){AS.x2=s.x2axis.c2p(AQ)}if(s.y2axis.used){AS.y2=s.y2axis.c2p(AO)}var AT=AF(AQ,AO,AM);if(AT){AT.pageX=parseInt(AT.series.xaxis.p2c(AT.datapoint[0])+AN.left+e.left);AT.pageY=parseInt(AT.series.yaxis.p2c(AT.datapoint[1])+AN.top+e.top)}if(g.grid.autoHighlight){for(var AP=0;APAQ.max||ARAP.max){return }var AO=AN.points.radius+AN.points.lineWidth/2;AJ.lineWidth=AO;AJ.strokeStyle=C.color.parse(AN.color).scale("a",0.5).toString();var AK=1.5*AO;AJ.beginPath();AJ.arc(AQ.p2c(AL),AP.p2c(AR),AK,0,2*Math.PI,false);AJ.stroke()}function z(AN,AK){AJ.lineWidth=AN.bars.lineWidth;AJ.strokeStyle=C.color.parse(AN.color).scale("a",0.5).toString();var AM=C.color.parse(AN.color).scale("a",0.5).toString();var AL=AN.bars.align=="left"?0:-AN.bars.barWidth/2;AB(AK[0],AK[1],AK[2]||0,AL,AL+AN.bars.barWidth,0,function(){return AM},AN.xaxis,AN.yaxis,AJ,AN.bars.horizontal)}function R(AM,AL,AQ,AO){if(typeof AM=="string"){return AM}else{var AP=Y.createLinearGradient(0,AQ,0,AL);for(var AN=0,AK=AM.colors.length;AN12){K=K-12}else{if(K==0){K=12}}}for(var F=0;F +* +* @param f onMouseOver function || An object with configuration options +* @param g onMouseOut function || Nothing (use configuration options object) +* @author Brian Cherne +*/ +(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))').addClass($.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data('jGrowl.instance').startup(this);} +if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',corners:'10px',check:250,life:3000,speed:'normal',easing:'swing',closer:true,closeTemplate:'×',closerTemplate:'
        [ close all ]
        ',log:function(e,m,o){},beforeOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);this.notifications[this.notifications.length]={message:message,options:o};o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('
        '+o.closeTemplate+'
        '+o.header+'
        '+message+'
        ').data("jGrowl",o).addClass(o.theme).children('div.close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();(o.glue=='after')?$('div.jGrowl-notification:last',this.element).after(notification):$('div.jGrowl-notification:first',this.element).before(notification);$(notification).bind("mouseover.jGrowl",function(){$(this).data("jGrowl").pause=true;}).bind("mouseout.jGrowl",function(){$(this).data("jGrowl").pause=false;}).bind('jGrowl.beforeOpen',function(){o.beforeOpen.apply(self.element,[self.element,message,o]);}).bind('jGrowl.open',function(){o.open.apply(self.element,[self.element,message,o]);}).bind('jGrowl.beforeClose',function(){o.beforeClose.apply(self.element,[self.element,message,o]);}).bind('jGrowl.close',function(){$(this).data('jGrowl').pause=true;$(this).trigger('jGrowl.beforeClose').animate(o.animateClose,o.speed,o.easing,function(){$(this).remove();o.close.apply(self.element,[self.element,message,o]);});}).trigger('jGrowl.beforeOpen').animate(o.animateOpen,o.speed,o.easing,function(){$(this).data("jGrowl").created=new Date();}).trigger('jGrowl.open');if($.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',this.element).size()>1&&$('div.jGrowl-closer',this.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer').addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().children('div.close').trigger("click.jGrowl");if($.isFunction(self.defaults.closer))self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+$(this).data("jGrowl").life)<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl").pause==undefined||$(this).data("jGrowl").pause!=true)){$(this).trigger('jGrowl.close');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()');this.interval=setInterval(function(){$(e).data('jGrowl.instance').update();},this.defaults.check);if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"])$(this.element).addClass('ie6');},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery); \ No newline at end of file diff --git a/js/jquery/jquery.jqzoom.js b/js/jquery/jquery.jqzoom.js new file mode 100644 index 000000000..5a73f0578 --- /dev/null +++ b/js/jquery/jquery.jqzoom.js @@ -0,0 +1,80 @@ +//************************************************************** +// jQZoom allows you to realize a small magnifier window,close +// to the image or images on your web page easily. +// +// jqZoom version 1.2 +// Author Doc. Ing. Renzi Marco(www.mind-projects.it) +// Released on Dec 05 2007 +// i'm searching for a job,pick me up!!! +// mail: renzi.mrc@gmail.com +//************************************************************** + +(function($) { + $.fn.jqueryzoom = function(options) { + var settings = { + xzoom: 200, //zoomed width default width + yzoom: 200, //zoomed div default width + offset: 10, //zoomed div default offset + position: "right" //zoomed div default position,offset position is to the right of the image + }; + + if(options) + $.extend(settings, options); + + var noalt =''; + + $(this).hover(function() { + var imageLeft = $(this).get(0).offsetLeft; + var imageTop = $(this).get(0).offsetTop; + var imageWidth = $(this).get(0).offsetWidth; + var imageHeight = $(this).get(0).offsetHeight; + + noalt = $(this).attr("alt"); + var bigimage = noalt; + $(this).attr("alt", ''); + + if($("div.zoomdiv").get().length == 0) + $(this).after("
        "); + + if(settings.position == "right") + leftpos = imageLeft + imageWidth + settings.offset; + else + leftpos = imageLeft - settings.xzoom - settings.offset; + + $("div.zoomdiv").css({top: imageTop,left: leftpos}); + $("div.zoomdiv").width(settings.xzoom); + $("div.zoomdiv").height(settings.yzoom); + $("div.zoomdiv").show(); + + $(document.body).mousemove(function(e) { + var bigwidth = $(".bigimg").get(0).offsetWidth; + var bigheight = $(".bigimg").get(0).offsetHeight; + var scaley ='x'; + var scalex= 'y'; + + if(isNaN(scalex)|isNaN(scaley)) { + var scalex = Math.round(bigwidth/imageWidth) ; + var scaley = Math.round(bigheight/imageHeight); + } + + mouse = new MouseEvent(e); + + scrolly = mouse.y - imageTop - ($("div.zoomdiv").height()*1/scaley)/2 ; + $("div.zoomdiv").get(0).scrollTop = scrolly * scaley ; + scrollx = mouse.x - imageLeft - ($("div.zoomdiv").width()*1/scalex)/2 ; + $("div.zoomdiv").get(0).scrollLeft = (scrollx) * scalex ; + }); + }, function() { + $(this).attr("alt", noalt); + $("div.zoomdiv").hide(); + $(document.body).unbind("mousemove"); + $(".lenszoom").remove(); + $("div.zoomdiv").remove(); + }); + } +})(jQuery); + +function MouseEvent(e) { + this.x = e.pageX + this.y = e.pageY +} \ No newline at end of file diff --git a/js/jquery/jquery.pngFix.pack.js b/js/jquery/jquery.pngFix.pack.js new file mode 100644 index 000000000..f39c17dff --- /dev/null +++ b/js/jquery/jquery.pngFix.pack.js @@ -0,0 +1,11 @@ +/** + * -------------------------------------------------------------------- + * jQuery-Plugin "pngFix" + * Version: 1.1, 11.09.2007 + * by Andreas Eberhard, andreas.eberhard@gmail.com + * http://jquery.andreaseberhard.de/ + * + * Copyright (c) 2007 Andreas Eberhard + * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php) + */ +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(s($){3.1s.1k=s(j){j=3.1a({12:\'1m.1j\'},j);8 k=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 5.5")!=-1);8 l=(n.P=="r 10 Z"&&U(n.v)==4&&n.v.E("14 6.0")!=-1);o(3.17.16&&(k||l)){3(2).L("1r[@m$=.M]").z(s(){3(2).7(\'q\',3(2).q());3(2).7(\'p\',3(2).p());8 a=\'\';8 b=\'\';8 c=(3(2).7(\'K\'))?\'K="\'+3(2).7(\'K\')+\'" \':\'\';8 d=(3(2).7(\'A\'))?\'A="\'+3(2).7(\'A\')+\'" \':\'\';8 e=(3(2).7(\'C\'))?\'C="\'+3(2).7(\'C\')+\'" \':\'\';8 f=(3(2).7(\'B\'))?\'B="\'+3(2).7(\'B\')+\'" \':\'\';8 g=(3(2).7(\'R\'))?\'1d:\'+3(2).7(\'R\')+\';\':\'\';8 h=(3(2).1c().7(\'1b\'))?\'19:18;\':\'\';o(2.9.y){a+=\'y:\'+2.9.y+\';\';2.9.y=\'\'}o(2.9.t){a+=\'t:\'+2.9.t+\';\';2.9.t=\'\'}o(2.9.w){a+=\'w:\'+2.9.w+\';\';2.9.w=\'\'}8 i=(2.9.15);b+=\'\';o(a!=\'\'){b=\'\'+b+\'\'}3(2).1i();3(2).1h(b)});3(2).L("*").z(s(){8 a=3(2).T(\'N-S\');o(a.E(".M")!=-1){8 b=a.X(\'1g("\')[1].X(\'")\')[0];3(2).T(\'N-S\',\'1f\');3(2).Q(0).Y.J="I:H.r.G(m=\'"+b+"\',D=\'F\')"}});3(2).L("1e[@m$=.M]").z(s(){8 a=3(2).7(\'m\');3(2).Q(0).Y.J=\'I:H.r.G\'+\'(m=\\\'\'+a+\'\\\', D=\\\'F\\\');\';3(2).7(\'m\',j.12)})}1t 3}})(3);',62,92,'||this|jQuery||||attr|var|style|||||||||||||src|navigator|if|height|width|Microsoft|function|padding|px|appVersion|margin|span|border|each|class|alt|title|sizingMethod|indexOf|scale|AlphaImageLoader|DXImageTransform|progid|filter|id|find|png|background|display|appName|get|align|image|css|parseInt|block|inline|split|runtimeStyle|Explorer|Internet|relative|blankgif|position|MSIE|cssText|msie|browser|hand|cursor|extend|href|parent|float|input|none|url|after|hide|gif|pngFix|transparent|blank|line|pre|space|white|img|fn|return'.split('|'),0,{})) \ No newline at end of file diff --git a/js/jquery/jquery.scrollTo-1.4.2-min.js b/js/jquery/jquery.scrollTo-1.4.2-min.js new file mode 100644 index 000000000..73a334184 --- /dev/null +++ b/js/jquery/jquery.scrollTo-1.4.2-min.js @@ -0,0 +1,11 @@ +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 5/25/2009 + * @author Ariel Flesler + * @version 1.4.2 + * + * http://flesler.blogspot.com/2007/10/jqueryscrollto.html + */ +;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); \ No newline at end of file diff --git a/js/jquery/jquery.serialScroll-1.2.2-min.js b/js/jquery/jquery.serialScroll-1.2.2-min.js new file mode 100644 index 000000000..d716124f9 --- /dev/null +++ b/js/jquery/jquery.serialScroll-1.2.2-min.js @@ -0,0 +1,10 @@ +/* + * jQuery.SerialScroll - Animated scrolling of series + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 06/14/2009 + * @author Ariel Flesler + * @version 1.2.2 + * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html + */ +;(function(a){var b=a.serialScroll=function(c){return a(window).serialScroll(c)};b.defaults={duration:1e3,axis:"x",event:"click",start:0,step:1,lock:!0,cycle:!0,constant:!0};a.fn.serialScroll=function(c){return this.each(function(){var t=a.extend({},b.defaults,c),s=t.event,i=t.step,r=t.lazy,e=t.target?this:document,u=a(t.target||this,e),p=u[0],m=t.items,h=t.start,g=t.interval,k=t.navigation,l;if(!r){m=d()}if(t.force){f({},h)}a(t.prev||[],e).bind(s,-i,q);a(t.next||[],e).bind(s,i,q);if(!p.ssbound){u.bind("prev.serialScroll",-i,q).bind("next.serialScroll",i,q).bind("goto.serialScroll",f)}if(g){u.bind("start.serialScroll",function(v){if(!g){o();g=!0;n()}}).bind("stop.serialScroll",function(){o();g=!1})}u.bind("notify.serialScroll",function(x,w){var v=j(w);if(v>-1){h=v}});p.ssbound=!0;if(t.jump){(r?u:d()).bind(s,function(v){f(v,j(v.target))})}if(k){k=a(k,e).bind(s,function(v){v.data=Math.round(d().length/k.length)*k.index(this);f(v,this)})}function q(v){v.data+=h;f(v,this)}function f(B,z){if(!isNaN(z)){B.data=z;z=p}var C=B.data,v,D=B.type,A=t.exclude?d().slice(0,-t.exclude):d(),y=A.length,w=A[C],x=t.duration;if(D){B.preventDefault()}if(g){o();l=setTimeout(n,t.interval)}if(!w){v=C<0?0:y-1;if(h!=v){C=v}else{if(!t.cycle){return}else{C=y-v-1}}w=A[C]}if(!w||t.lock&&u.is(":animated")||D&&t.onBefore&&t.onBefore(B,w,u,d(),C)===!1){return}if(t.stop){u.queue("fx",[]).stop()}if(t.constant){x=Math.abs(x/i*(h-C))}u.scrollTo(w,x,t).trigger("notify.serialScroll",[C])}function n(){u.trigger("next.serialScroll")}function o(){clearTimeout(l)}function d(){return a(m,p)}function j(w){if(!isNaN(w)){return w}var x=d(),v;while((v=x.index(w))==-1&&w!=p){w=w.parentNode}return v}})}})(jQuery); \ No newline at end of file diff --git a/js/jquery/jquery.tablednd_0_5.js b/js/jquery/jquery.tablednd_0_5.js new file mode 100644 index 000000000..54e584787 --- /dev/null +++ b/js/jquery/jquery.tablednd_0_5.js @@ -0,0 +1,308 @@ +/** + * TableDnD plug-in for JQuery, allows you to drag and drop table rows + * Copyright (c) Denis Howlett + * Licensed like jQuery, see http://docs.jquery.com/License. +*/ +jQuery.tableDnD = { + /** Keep hold of the current table being dragged */ + currentTable : null, + /** Keep hold of the current drag object if any */ + dragObject: null, + /** The current mouse offset */ + mouseOffset: null, + /** Remember the old value of Y so that we don't do too much processing */ + oldY: 0, + + /** Actually build the structure */ + build: function(options) { + // Set up the defaults if any + + this.each(function() { + // This is bound to each matching table, set up the defaults and override with user options + this.tableDnDConfig = jQuery.extend({ + onDragStyle: null, + onDropStyle: null, + // Add in the default class for whileDragging + onDragClass: "tDnD_whileDrag", + onDrop: null, + onDragStart: null, + scrollAmount: 5, + serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs + serializeParamName: null, // If you want to specify another parameter name instead of the table ID + dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable + }, options || {}); + // Now make the rows draggable + jQuery.tableDnD.makeDraggable(this); + }); + + // Now we need to capture the mouse up and mouse move event + // We can use bind so that we don't interfere with other event handlers + jQuery(document) + .bind('mousemove', jQuery.tableDnD.mousemove) + .bind('mouseup', jQuery.tableDnD.mouseup); + + // Don't break the chain + return this; + }, + + /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */ + makeDraggable: function(table) { + var config = table.tableDnDConfig; + if (table.tableDnDConfig.dragHandle) { + // We only need to add the event to the specified cells + var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table); + cells.each(function() { + // The cell is bound to "this" + jQuery(this).mousedown(function(ev) { + jQuery.tableDnD.dragObject = this.parentNode; + jQuery.tableDnD.currentTable = table; + jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev); + if (config.onDragStart) { + // Call the onDrop method if there is one + config.onDragStart(table, this); + } + return false; + }); + }) + } else { + // For backwards compatibility, we add the event to the whole row + var rows = jQuery("tbody tr", table); // get all the rows as a wrapped set + rows.each(function() { + // Iterate through each row, the row is bound to "this" + var row = jQuery(this); + if (! row.hasClass("nodrag")) { + row.mousedown(function(ev) { + if (ev.target.tagName == "TD") { + jQuery.tableDnD.dragObject = this; + jQuery.tableDnD.currentTable = table; + jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev); + if (config.onDragStart) { + // Call the onDrop method if there is one + config.onDragStart(table, this); + } + return false; + } + }).css("cursor", "move"); // Store the tableDnD object + } + }); + } + }, + + updateTables: function() { + this.each(function() { + // this is now bound to each matching table + if (this.tableDnDConfig) { + jQuery.tableDnD.makeDraggable(this); + } + }) + }, + + /** Get the mouse coordinates from the event (allowing for browser differences) */ + mouseCoords: function(ev){ + if(ev.pageX || ev.pageY){ + return {x:ev.pageX, y:ev.pageY}; + } + return { + x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, + y:ev.clientY + document.body.scrollTop - document.body.clientTop + }; + }, + + /** Given a target element and a mouse event, get the mouse offset from that element. + To do this we need the element's position and the mouse position */ + getMouseOffset: function(target, ev) { + ev = ev || window.event; + + var docPos = this.getPosition(target); + var mousePos = this.mouseCoords(ev); + return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y}; + }, + + /** Get the position of an element by going up the DOM tree and adding up all the offsets */ + getPosition: function(e){ + var left = 0; + var top = 0; + /** Safari fix -- thanks to Luis Chato for this! */ + if (e.offsetHeight == 0) { + /** Safari 2 doesn't correctly grab the offsetTop of a table row + this is detailed here: + http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/ + the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild. + note that firefox will return a text node as a first child, so designing a more thorough + solution may need to take that into account, for now this seems to work in firefox, safari, ie */ + e = e.firstChild; // a table cell + } + + while (e.offsetParent){ + left += e.offsetLeft; + top += e.offsetTop; + e = e.offsetParent; + } + + left += e.offsetLeft; + top += e.offsetTop; + + return {x:left, y:top}; + }, + + mousemove: function(ev) { + if (jQuery.tableDnD.dragObject == null) { + return; + } + + var dragObj = jQuery(jQuery.tableDnD.dragObject); + var config = jQuery.tableDnD.currentTable.tableDnDConfig; + var mousePos = jQuery.tableDnD.mouseCoords(ev); + var y = mousePos.y - jQuery.tableDnD.mouseOffset.y; + //auto scroll the window + var yOffset = window.pageYOffset; + if (document.all) { + // Windows version + //yOffset=document.body.scrollTop; + if (typeof document.compatMode != 'undefined' && + document.compatMode != 'BackCompat') { + yOffset = document.documentElement.scrollTop; + } + else if (typeof document.body != 'undefined') { + yOffset=document.body.scrollTop; + } + + } + + if (mousePos.y-yOffset < config.scrollAmount) { + window.scrollBy(0, -config.scrollAmount); + } else { + var windowHeight = window.innerHeight ? window.innerHeight + : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight; + if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) { + window.scrollBy(0, config.scrollAmount); + } + } + + + if (y != jQuery.tableDnD.oldY) { + // work out if we're going up or down... + var movingDown = y > jQuery.tableDnD.oldY; + // update the old value + jQuery.tableDnD.oldY = y; + // update the style to show we're dragging + if (config.onDragClass) { + dragObj.addClass(config.onDragClass); + } else { + dragObj.css(config.onDragStyle); + } + // If we're over a row then move the dragged row to there so that the user sees the + // effect dynamically + var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y); + if (currentRow) { + // TODO worry about what happens when there are multiple TBODIES + if (movingDown && jQuery.tableDnD.dragObject != currentRow) { + jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling); + } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) { + jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow); + } + } + } + + return false; + }, + + /** We're only worried about the y position really, because we can only move rows up and down */ + findDropTargetRow: function(draggedRow, y) { + var rows = jQuery.tableDnD.currentTable.rows; + for (var i=0; i rowY - rowHeight) && (y < (rowY + rowHeight))) { + // that's the row we're over + // If it's the same as the current row, ignore it + if (row == draggedRow) {return null;} + var config = jQuery.tableDnD.currentTable.tableDnDConfig; + if (config.onAllowDrop) { + if (config.onAllowDrop(draggedRow, row)) { + return row; + } else { + return null; + } + } else { + // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic) + var nodrop = jQuery(row).hasClass("nodrop"); + if (! nodrop) { + return row; + } else { + return null; + } + } + return row; + } + } + return null; + }, + + mouseup: function(e) { + if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) { + var droppedRow = jQuery.tableDnD.dragObject; + var config = jQuery.tableDnD.currentTable.tableDnDConfig; + // If we have a dragObject, then we need to release it, + // The row will already have been moved to the right place so we just reset stuff + if (config.onDragClass) { + jQuery(droppedRow).removeClass(config.onDragClass); + } else { + jQuery(droppedRow).css(config.onDropStyle); + } + jQuery.tableDnD.dragObject = null; + if (config.onDrop) { + // Call the onDrop method if there is one + config.onDrop(jQuery.tableDnD.currentTable, droppedRow); + } + jQuery.tableDnD.currentTable = null; // let go of the table too + } + }, + + serialize: function() { + if (jQuery.tableDnD.currentTable) { + return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable); + } else { + return "Error: No Table id set, you need to set an id on your table and every row"; + } + }, + + serializeTable: function(table) { + var result = ""; + var tableId = table.id; + var rows = jQuery("tbody tr", table); + for (var i=0; i 0) result += "&"; + var rowId = rows[i].id; + if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) { + rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0]; + } + + result += tableId + '[]=' + rowId; + } + return result; + }, + + serializeTables: function() { + var result = ""; + this.each(function() { + // this is now bound to each matching table + result += jQuery.tableDnD.serializeTable(this); + }); + return result; + } + +} +jQuery.fn.extend( + { + tableDnD : jQuery.tableDnD.build, + tableDnDUpdate : jQuery.tableDnD.updateTables, + tableDnDSerialize: jQuery.tableDnD.serializeTables + } +); \ No newline at end of file diff --git a/js/jquery/thickbox-modified.js b/js/jquery/thickbox-modified.js new file mode 100644 index 000000000..6d9dfa1ae --- /dev/null +++ b/js/jquery/thickbox-modified.js @@ -0,0 +1,40 @@ +/* + * Thickbox 3.1 - One Box To Rule Them All. + * By Cody Lindley (http://www.codylindley.com) + * Copyright (c) 2007 cody lindley + * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php + * + * Patched Version by Jamie Thompson - Fixes IE7 Positioning Issues + * http://jamazon.co.uk/web/2008/03/17/thickbox-31-ie7-positioning-bug/ + * Patched Version by PrestaShop - Translated fields + * http://www.prestashop.com +*/ + + +$.browser.msie6=$.browser.msie&&/MSIE 6\.0/i.test(window.navigator.userAgent)&&!/MSIE 7\.0/i.test(window.navigator.userAgent);$(document).ready(function(){tb_init('a.thickbox, area.thickbox, input.thickbox');imgLoader=new Image();imgLoader.src=tb_pathToImage;});function tb_init(domChunk){$(domChunk).click(function(){var t=this.title||this.name||null;var a=this.href||this.alt;var g=this.rel||false;tb_show(t,a,g);this.blur();return false;}).removeClass('thickbox');} +function tb_show(caption,url,imageGroup){try{if(typeof document.body.style.maxHeight==="undefined"){$("body","html").css({height:"100%",width:"100%"});$("html").css("overflow","hidden");if(document.getElementById("TB_HideSelect")===null){$("body").append("
        ");$("#TB_overlay").click(tb_remove);}}else{if(document.getElementById("TB_overlay")===null){$("body").append("
        ");$("#TB_overlay").click(tb_remove);}} +if(tb_detectMacXFF()){$("#TB_overlay").addClass("TB_overlayMacFFBGHack");}else{$("#TB_overlay").addClass("TB_overlayBG");} +if(caption===null){caption="";} +$("body").append("
        ");$('#TB_load').show();var baseURL;if(url.indexOf("?")!==-1){baseURL=url.substr(0,url.indexOf("?"));}else{baseURL=url;} +var urlString=/\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;var urlType=baseURL.toLowerCase().match(urlString);if(urlType=='.jpg'||urlType=='.jpeg'||urlType=='.png'||urlType=='.gif'||urlType=='.bmp'){TB_PrevCaption="";TB_PrevURL="";TB_PrevHTML="";TB_NextCaption="";TB_NextURL="";TB_NextHTML="";TB_imageCount="";TB_FoundURL=false;if(imageGroup){TB_TempArray=$("a[@rel="+imageGroup+"]").get();for(TB_Counter=0;((TB_Counter  "+ThickboxI18nNext+"";}else{TB_PrevCaption=TB_TempArray[TB_Counter].title;TB_PrevURL=TB_TempArray[TB_Counter].href;TB_PrevHTML="  "+ThickboxI18nPrev+"";}}else{TB_FoundURL=true;TB_imageCount=ThickboxI18nImage+' '+(TB_Counter+1)+' '+ThickboxI18nOf+' '+(TB_TempArray.length);}}} +imgPreloader=new Image();imgPreloader.onload=function(){imgPreloader.onload=null;var pagesize=tb_getPageSize();var x=pagesize[0]-150;var y=pagesize[1]-150;var imageWidth=imgPreloader.width;var imageHeight=imgPreloader.height;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;}}else if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;}} +TB_WIDTH=imageWidth+30;TB_HEIGHT=imageHeight+60;$("#TB_window").append(""+caption+""+"
        "+caption+"
        "+TB_imageCount+TB_PrevHTML+TB_NextHTML+"
        "+ThickboxI18nClose+" "+ThickboxI18nOrEscKey+"
        ");$("#TB_closeWindowButton").click(tb_remove);if(!(TB_PrevHTML==="")){function goPrev(){if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);} +$("#TB_window").remove();$("body").append("
        ");tb_show(TB_PrevCaption,TB_PrevURL,imageGroup);return false;} +$("#TB_prev").click(goPrev);} +if(!(TB_NextHTML==="")){function goNext(){$("#TB_window").remove();$("body").append("
        ");tb_show(TB_NextCaption,TB_NextURL,imageGroup);return false;} +$("#TB_next").click(goNext);} +document.onkeydown=function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;} +if(keycode==27){tb_remove();}else if(keycode==190){if(!(TB_NextHTML=="")){document.onkeydown="";goNext();}}else if(keycode==188){if(!(TB_PrevHTML=="")){document.onkeydown="";goPrev();}}};tb_position();$("#TB_load").remove();$("#TB_Image").click(tb_remove);$("#TB_window").css({display:"block"});};imgPreloader.src=url;}else{var queryString=url.replace(/^[^\?]+\??/,'');var params=tb_parseQuery(queryString);TB_WIDTH=(params['width']*1)+30||630;TB_HEIGHT=(params['height']*1)+40||440;ajaxContentW=TB_WIDTH-30;ajaxContentH=TB_HEIGHT-45;if(url.indexOf('TB_iframe')!=-1){urlNoQuery=url.split('TB_');$("#TB_iframeContent").remove();if(params['modal']!="true"){$("#TB_window").append("
        "+caption+"
        "+ThickboxI18nClose+" "+ThickboxI18nOrEscKey+"
        ");}else{$("#TB_overlay").unbind();$("#TB_window").append("");}}else{if($("#TB_window").css("display")!="block"){if(params['modal']!="true"){$("#TB_window").append("
        "+caption+"
        "+ThickboxI18nClose+" "+ThickboxI18nOrEscKey+"
        ");}else{$("#TB_overlay").unbind();$("#TB_window").append("
        ");}}else{$("#TB_ajaxContent")[0].style.width=ajaxContentW+"px";$("#TB_ajaxContent")[0].style.height=ajaxContentH+"px";$("#TB_ajaxContent")[0].scrollTop=0;$("#TB_ajaxWindowTitle").html(caption);}} +$("#TB_closeWindowButton").click(tb_remove);if(url.indexOf('TB_inline')!=-1){$("#TB_ajaxContent").append($('#'+params['inlineId']).children());$("#TB_window").unload(function(){$('#'+params['inlineId']).append($("#TB_ajaxContent").children());});tb_position();$("#TB_load").remove();$("#TB_window").css({display:"block"});}else if(url.indexOf('TB_iframe')!=-1){tb_position();if($.browser.safari){$("#TB_load").remove();$("#TB_window").css({display:"block"});}}else{$("#TB_ajaxContent").load(url+="&random="+(new Date().getTime()),function(){tb_position();$("#TB_load").remove();tb_init("#TB_ajaxContent a.thickbox");$("#TB_window").css({display:"block"});});}} +if(!params['modal']){document.onkeyup=function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;} +if(keycode==27){tb_remove();}};}}catch(e){}} +function tb_showIframe(){$("#TB_load").remove();$("#TB_window").css({display:"block"});} +function tb_remove(){$("#TB_imageOff").unbind("click");$("#TB_closeWindowButton").unbind("click");$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});$("#TB_load").remove();if(typeof document.body.style.maxHeight=="undefined"){$("body","html").css({height:"auto",width:"auto"});$("html").css("overflow","");} +document.onkeydown="";document.onkeyup="";return false;} +function tb_position(){$("#TB_window").css({marginLeft:'-'+parseInt((TB_WIDTH/2),10)+'px',width:TB_WIDTH+'px'});if(!(jQuery.browser.msie6)){$("#TB_window").css({marginTop:'-'+parseInt((TB_HEIGHT/2),10)+'px'});}} +function tb_parseQuery(query){var Params={};if(!query){return Params;} +var Pairs=query.split(/[;&]/);for(var i=0;if(b[a],10)){return 1}if(f(c[a],10)"+d.plugin.HTML+"<"+f+"object>";if(d.head.firstChild){d.head.insertBefore(document.createElement("object"),d.head.firstChild)}else{d.head.appendChild(document.createElement("object"))}d.head.firstChild.outerHTML=c;try{d.head.firstChild.classid=d.plugin.classID}catch(g){}a=false;try{if(d.head.firstChild.object){a=true}}catch(g){}try{if(a&&d.head.firstChild.readyState<4){d.garbage=true}}catch(g){}d.head.removeChild(d.head.firstChild);return a},codebaseSearch:function(c){var e=this;if(!e.ActiveXEnabled){return null}if(typeof c!="undefined"){return e.isActiveXObject(c)};var j=[0,0,0,0],g,f,b=e.plugin.digits,i=function(k,m){var l=(k==0?m:j[0])+","+(k==1?m:j[1])+","+(k==2?m:j[2])+","+(k==3?m:j[3]);return e.isActiveXObject(l)};var h,d,a=false;for(g=0;g0&&a){break}if(h-j[g]>1){d=Math.round((h+j[g])/2);if(i(g,d)){j[g]=d;a=true}else{h=d}}else{if(h-j[g]==1){h--;if(!a&&i(g,h)){a=true}break}else{if(!a&&i(g,h)){a=true}break}}}if(!a){return null}}return j.join(",")},dummy1:0}}PluginDetect.onDetectionDone=function(g,e,d,a){return -1};PluginDetect.onWindowLoaded=function(c){var b=PluginDetect,a=window;if(b.EventWinLoad===true){}else{b.winLoaded=false;b.EventWinLoad=true;if(typeof a.addEventListener!="undefined"){a.addEventListener("load",b.runFuncs,false)}else{if(typeof a.attachEvent!="undefined"){a.attachEvent("onload",b.runFuncs)}else{if(typeof a.onload=="function"){b.funcs[b.funcs.length]=a.onload}a.onload=b.runFuncs}}}if(typeof c=="function"){b.funcs[b.funcs.length]=c}};PluginDetect.funcs=[0];PluginDetect.runFuncs=function(){var b=PluginDetect,a;b.winLoaded=true;for(a=0;a',getCodeBaseVersion:function(a){return'codebase="#version='+a+'"'},digits:[8,64,16,0],clipTo3digits:function(f){if(f===null||typeof f=="undefined"){return null}var e,d,h,g=this.$;e=f.split(",");if(g.compareNums(f,"7,60,0,0")<0&&g.compareNums(f,"7,50,0,0")>=0){d=e[0]+","+e[1].charAt(0)+","+e[1].charAt(1)+","+e[2]}else{d=e[0]+","+e[1]+","+e[2]+","+e[3]}h=d.split(",");return h[0]+","+h[1]+","+h[2]+",0"},getVersion:function(){var a=null,d,b=this.$,e=true;if(!b.isIE){if(navigator.platform&&(/linux/i).test(navigator.platform)){e=false}if(e){d=b.findNavPlugin(["QuickTime","(Plug-in|Plugin)"]);if(d&&d.name&&b.hasMimeType(this.mimeType)){a=b.getNum(d.name)}}this.installed=a?1:-1}else{var c;if(b.IEver>=this.minIEver&&b.getAXO(this.progID0,1)){a=b.codebaseSearch()}else{c=b.getAXO(this.progID);if(c&&c.QuickTimeVersion){a=c.QuickTimeVersion.toString(16);a=a.charAt(0)+"."+a.charAt(1)+"."+a.charAt(2)}}this.installed=a?1:(b.getAXO(this.progID0,1)?0:-1)}this.version=this.clipTo3digits(b.formatNum(a))}};PluginDetect.java={mimeType:"application/x-java-applet",classID:"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",DTKclassID:"clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA",DTKmimeType:"application/npruntime-scriptable-plugin;DeploymentToolkit",JavaVersions:[[1,9,2,25],[1,8,2,25],[1,7,2,25],[1,6,2,25],[1,5,2,25],[1,4,2,25],[1,3,1,25]],searchJavaPluginAXO:function(){var h=null,a=this,c=a.$,g=[],j=[1,5,0,14],i=[1,6,0,2],f=[1,3,1,0],e=[1,4,2,0],d=[1,5,0,7],b=false;if(!c.ActiveXEnabled){return null};if(c.IEver>=a.minIEver){g=a.searchJavaAXO(i,i,b);if(g.length>0&&b){g=a.searchJavaAXO(j,j,b)}}else{if(g.length==0){g=a.searchJavaAXO(f,e,false)}}if(g.length>0){h=g[0]}a.JavaPlugin_versions=[].concat(g);return h},searchJavaAXO:function(l,i,m){var n,f,h=this.$,p,k,a,e,g,j,b,q=[];if(h.compareNums(l.join(","),i.join(","))>0){i=l}i=h.formatNum(i.join(","));var o,d="1,4,2,0",c="JavaPlugin."+l[0]+""+l[1]+""+l[2]+""+(l[3]>0?("_"+(l[3]<10?"0":"")+l[3]):"");for(n=0;n=0;a--){b="JavaWebStart.isInstalled."+g+a+".0";if(h.compareNums(f[0]+","+f[1]+","+a+",0",i)>=0&&!h.getAXO(b,1)){continue}o=h.compareNums(f[0]+","+f[1]+","+a+",0",d)<0?true:false;for(e=f[3];e>=0;e--){k=a+"_"+(e<10?"0"+e:e);j=p+k;if(h.getAXO(j,1)&&(o||h.getAXO(b,1))){q[q.length]=g+k;if(!m){return q}}if(j==c){return q}}if(h.getAXO(p+a,1)&&(o||h.getAXO(b,1))){q[q.length]=g+a;if(!m){return q}}if(p+a==c){return q}}}return q},minIEver:7,getFromMimeType:function(a){var h,f,c=this.$,j=new RegExp(a),d,k,i={},e=0,b,g=[""];for(h=0;h0){b=d}}}g[f]=i["a"+b];i["a"+b]=null}if(!(/windows|macintosh/i).test(navigator.userAgent)){g=[g[0]]}return g},queryJavaHandler:function(){var b=PluginDetect.java,a=window.java,c;b.hasRun=true;try{if(typeof a.lang!="undefined"&&typeof a.lang.System!="undefined"){b.value=[a.lang.System.getProperty("java.version")+" ",a.lang.System.getProperty("java.vendor")+" "]}}catch(c){}},queryJava:function(){var c=this,d=c.$,b=navigator.userAgent,f;if(typeof window.java!="undefined"&&navigator.javaEnabled()&&!c.hasRun){if(d.isGecko){if(d.hasMimeType("application/x-java-vm")){try{var g=document.createElement("div"),a=document.createEvent("HTMLEvents");a.initEvent("focus",false,true);g.addEventListener("focus",c.queryJavaHandler,false);g.dispatchEvent(a)}catch(f){}if(!c.hasRun){c.queryJavaHandler()}}}else{if((/opera.9\.(0|1)/i).test(b)&&(/mac/i).test(b)){}else{if(!c.hasRun){c.queryJavaHandler()}}}}return c.value},forceVerifyTag:[],jar:[],VENDORS:["Sun Microsystems Inc.","Apple Computer, Inc."],init:function(){var a=this,b=a.$;if(typeof a.app!="undefined"){a.delJavaApplets(b)}a.hasRun=false;a.value=[null,null];a.useTag=[2,2,2];a.app=[0,0,0,0,0,0];a.appi=3;a.queryDTKresult=null;a.OTF=0;a.BridgeResult=[[null,null],[null,null],[null,null]];a.JavaActive=[0,0,0];a.All_versions=[];a.DeployTK_versions=[];a.MimeType_versions=[];a.JavaPlugin_versions=[];a.funcs=[];var c=a.NOTF;if(c){c.$=b;if(c.javaInterval){clearInterval(c.javaInterval)}c.EventJavaReady=null;c.javaInterval=null;c.count=0;c.intervalLength=250;c.countMax=40}a.lateDetection=b.winLoaded;if(!a.lateDetection){b.onWindowLoaded(a.delJavaApplets)}},getVersion:function(f,l){var h,d=this,g=d.$,j=null,n=null,e=null,c=navigator.javaEnabled();if(d.getVersionDone===null){d.init()}var k;if(typeof l!="undefined"&&l.constructor==Array){for(k=0;k0){j=i;n=d.VENDORS[0]}if(!g.isIE){var q,m,b,o,a;a=g.hasMimeType(d.mimeType);o=(a&&c)?true:false;if(d.MimeType_versions.length==0&&a){h=d.getFromMimeType("application/x-java-applet.*jpi-version.*=");if(h[0]!=""){if(!j){j=h[0]}d.MimeType_versions=h}}if(!j&&a){h="Java[^\\d]*Plug-in";b=g.findNavPlugin(h);if(b){h=new RegExp(h,"i");q=h.test(b.description)?g.getNum(b.description):null;m=h.test(b.name)?g.getNum(b.name):null;if(q&&m){j=(g.compareNums(g.formatNum(q),g.formatNum(m))>=0)?q:m}else{j=q||m}}}if(!j&&a&&(/macintosh.*safari/i).test(navigator.userAgent)){b=g.findNavPlugin("Java.*\\d.*Plug-in.*Cocoa",false);if(b){q=g.getNum(b.description);if(q){j=q}}}if(j){d.version0=j;if(c){e=j}}if(!e||d.useAnyTag()){b=d.queryExternalApplet(f);if(b[0]){e=b[0];n=b[1]}}if(!e){b=d.queryJava();if(b[0]){d.version0=b[0];e=b[0];n=b[1];if(d.installed==-0.5){d.installed=0.5}}}if(d.installed===null&&!e&&o&&!(/macintosh.*ppc/i).test(navigator.userAgent)){h=d.getFromMimeType("application/x-java-applet.*version.*=");if(h[0]!=""){e=h[0]}}if(!e&&o){if(/macintosh.*safari/i.test(navigator.userAgent)){if(d.installed===null){d.installed=0}else{if(d.installed==-0.5){d.installed=0.5}}}}}else{if(!j&&i!=-1){j=d.searchJavaPluginAXO();if(j){n=d.VENDORS[0]}}if(!j){d.JavaFix()}if(j){d.version0=j;if(c&&g.ActiveXEnabled){e=j}}if(!e||d.useAnyTag()){h=d.queryExternalApplet(f);if(h[0]){e=h[0];n=h[1]}}}if(d.installed===null){d.installed=e?1:(j?-0.2:-1)}d.EndGetVersion(e,n)},EndGetVersion:function(b,d){var a=this,c=a.$;if(a.version0){a.version0=c.formatNum(c.getNum(a.version0))}if(b){a.version=c.formatNum(c.getNum(b));a.vendor=(typeof d=="string"?d:"")}if(a.getVersionDone!=1){a.getVersionDone=0}},queryDeploymentToolKit:function(){var d=this,g=d.$,i,b,h=null,a=null;if((g.isGecko&&g.compareNums(g.GeckoRV,g.formatNum("1.6"))<=0)||g.isSafari||(g.isIE&&!g.ActiveXEnabled)){d.queryDTKresult=0}if(d.queryDTKresult!==null){return d.queryDTKresult}if(g.isIE&&g.IEver>=6){d.app[0]=g.instantiate("object",[],[]);h=g.getObject(d.app[0])}else{if(!g.isIE&&g.hasMimeType(d.DTKmimeType)){d.app[0]=g.instantiate("object",["type",d.DTKmimeType],[]);h=g.getObject(d.app[0])}}if(h){if(g.isIE&&g.IEver>=6){try{h.classid=d.DTKclassID}catch(i){}}try{var c,f=h.jvms;if(f){a=f.getLength();if(typeof a=="number"){for(b=0;b0?d.DeployTK_versions[0]:(a==0?-1:0);return d.queryDTKresult},queryExternalApplet:function(d){var c=this,e=c.$,h=c.BridgeResult,b=c.app,g=c.appi,a="    ";if(typeof d!="string"||!(/\.jar\s*$/).test(d)){return[null,null]}if(c.OTF<1){c.OTF=1}if(!e.isIE){if((e.isGecko||e.isChrome)&&!e.hasMimeType(c.mimeType)&&!c.queryJava()[0]){return[null,null]}}if(c.OTF<2){c.OTF=2}if(!b[g]&&c.canUseObjectTag()&&c.canUseThisTag(0)){b[1]=e.instantiate("object",[],[],a);b[g]=e.isIE?e.instantiate("object",["archive",d,"code","A.class","type",c.mimeType],["archive",d,"code","A.class","mayscript","true","scriptable","true"],a):e.instantiate("object",["archive",d,"classid","java:A.class","type",c.mimeType],["archive",d,"mayscript","true","scriptable","true"],a);h[0]=[0,0];c.query1Applet(g)}if(!b[g+1]&&c.canUseAppletTag()&&c.canUseThisTag(1)){b[g+1]=e.instantiate("applet",["archive",d,"code","A.class","alt",a,"mayscript","true"],["mayscript","true"],a);h[1]=[0,0];c.query1Applet(g+1)}if(e.isIE&&!b[g+2]&&c.canUseObjectTag()&&c.canUseThisTag(2)){b[g+2]=e.instantiate("object",["classid",c.classID],["archive",d,"code","A.class","mayscript","true","scriptable","true"],a);h[2]=[0,0];c.query1Applet(g+2)};var j,f=0;for(j=0;j0){c.getVersionDone=0}}return c.getBR()},canUseAppletTag:function(){return((!this.$.isIE||navigator.javaEnabled())?true:false)},canUseObjectTag:function(){return((!this.$.isIE||this.$.ActiveXEnabled)?true:false)},useAnyTag:function(){var b=this,a;for(a=0;a=0;a--){b.uninstantiate(c[a])}},query1Applet:function(g){var f,c=this,d=c.$,a=null,h=null,b=d.getObject(c.app[g],true);try{if(b){a=b.getVersion()+" ";h=b.getVendor()+" ";if(d.num(a)){c.BridgeResult[g-c.appi]=[a,h];d.hideObject(c.app[g])}if(d.isIE&&a&&b.readyState!=4){d.garbage=true;d.uninstantiate(c.app[g])}}}catch(f){}},NOTF:{isJavaActive:function(){}},append:function(e,d){for(var c=0;c2;f--){a=g.getAXO(this.progID+"."+f);if(a){d=f.toString();break}}if(d=="6"){try{a.AllowScriptAccess="always"}catch(h){return"6,0,21,0"}}try{b=c(a.GetVariable("$version"))}catch(h){}if(!b&&d){b=d}}this.installed=b?1:-1;this.version=g.formatNum(b);return true}};PluginDetect.shockwave={mimeType:"application/x-director",progID:"SWCtl.SWCtl",classID:"clsid:166B1BCA-3F9C-11CF-8075-444553540000",getVersion:function(){var a=null,b=null,f,d,c=this.$;if(!c.isIE){d=c.findNavPlugin("Shockwave for Director");if(d&&d.description&&c.hasMimeType(this.mimeType)){a=c.getNum(d.description)}}else{try{b=c.getAXO(this.progID).ShockwaveVersion("")}catch(f){}if(typeof b=="string"&&b.length>0){a=c.getNum(b)}else{if(c.getAXO(this.progID+".8",1)){a="8"}else{if(c.getAXO(this.progID+".7",1)){a="7"}else{if(c.getAXO(this.progID+".1",1)){a="6"}}}}}this.installed=a?1:-1;this.version=c.formatNum(a)}};PluginDetect.div=null;PluginDetect.pluginSize=1;PluginDetect.DOMbody=null;PluginDetect.uninstantiate=function(a){var c,b=this;if(!a){return}try{if(a[0]&&a[0].firstChild){a[0].removeChild(a[0].firstChild)}if(a[0]&&b.div){b.div.removeChild(a[0])}if(b.div&&b.div.childNodes.length==0){b.div.parentNode.removeChild(b.div);b.div=null;if(b.DOMbody&&b.DOMbody.parentNode){b.DOMbody.parentNode.removeChild(b.DOMbody)}b.DOMbody=null}a[0]=null}catch(c){}};PluginDetect.getObject=function(b,a){var f,c=this,d=null;try{if(b&&b[0]&&b[0].firstChild){d=b[0].firstChild}}catch(f){}try{if(a&&d&&typeof d.focus!="undefined"&&typeof document.hasFocus!="undefined"&&!document.hasFocus()){d.focus()}}catch(f){}return d};PluginDetect.getContainer=function(a){var c,b=null;if(a&&a[0]){b=a[0]}return b};PluginDetect.hideObject=function(a){var b=this.getObject(a);if(b&&b.style){b.style.height="0"}};PluginDetect.instantiate=function(h,b,c,a){var j=function(d){var e=d.style;if(!e){return}e.border="0px";e.padding="0px";e.margin="0px";e.fontSize=(g.pluginSize+3)+"px";e.height=(g.pluginSize+3)+"px";e.visibility="visible";if(d.tagName&&d.tagName.toLowerCase()=="div"){e.width="100%";e.display="block"}else{if(d.tagName&&d.tagName.toLowerCase()=="span"){e.width=g.pluginSize+"px";e.display="inline"}}};var k,l=document,g=this,p,i=(l.getElementsByTagName("body")[0]||l.body),o=l.createElement("span"),n,f,m="/";if(typeof a=="undefined"){a=""}p="<"+h+' width="'+g.pluginSize+'" height="'+g.pluginSize+'" ';for(n=0;n'}p+=a+"<"+m+h+">";if(!g.div){g.div=l.createElement("div");f=l.getElementById("plugindetect");if(f){j(f);f.appendChild(g.div)}else{if(i){try{if(i.firstChild&&typeof i.insertBefore!="undefined"){i.insertBefore(g.div,i.firstChild)}else{i.appendChild(g.div)}}catch(k){}}else{try{l.write('
        o<'+m+"div>");i=(l.getElementsByTagName("body")[0]||l.body);i.appendChild(g.div);i.removeChild(l.getElementById("pd33993399"))}catch(k){try{g.DOMbody=l.createElement("body");l.getElementsByTagName("html")[0].appendChild(g.DOMbody);g.DOMbody.appendChild(g.div)}catch(k){}}}}j(g.div)}if(g.div&&g.div.parentNode&&g.div.parentNode.parentNode){g.div.appendChild(o);try{o.innerHTML=p}catch(k){}j(o);return[o]}return[null]};PluginDetect.windowsmediaplayer={mimeType:["application/x-mplayer2","application/asx"],progID:"wmplayer.ocx",classID:"clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6",getVersion:function(){var a=null,e=this.$,b=null;this.installed=-1;if(!e.isIE){if(e.hasMimeType(this.mimeType)){if(e.findNavPlugin(["Windows","Media","(Plug-in|Plugin)"],false)||e.findNavPlugin(["Flip4Mac","Windows","Media"],false)){this.installed=0}var d=e.isGecko&&e.compareNums(e.GeckoRV,e.formatNum("1.8"))<0;if(!d&&e.findNavPlugin(["Windows","Media","Firefox Plugin"],false)){var c=e.instantiate("object",["type",this.mimeType[0]],[]),f=e.getObject(c);if(f){a=f.versionInfo}e.uninstantiate(c)}}}else{b=e.getAXO(this.progID);if(b){a=b.versionInfo}}if(a){this.installed=1}this.version=e.formatNum(a)}};PluginDetect.silverlight={mimeType:"application/x-silverlight",progID:"AgControl.AgControl",digits:[9,20,9,12,31],getVersion:function(){var c=this.$,j=document,g=null,b=null,f=false;if(!c.isIE){var a=[null,null],e=c.findNavPlugin("Silverlight Plug-in",false),h=c.isGecko&&c.compareNums(c.GeckoRV,c.formatNum("1.6"))<=0;if(e&&c.hasMimeType(this.mimeType)){g=c.formatNum(e.description);if(g){p=g.split(",");if(parseInt(p[2],10)>=30226&&parseInt(p[0],10)<2){p[0]="2"}g=p.join(",")}if(c.isGecko&&!h){f=true}if(!f&&!h&&g){a=c.instantiate("object",["type",this.mimeType],[]);b=c.getObject(a);if(b){if(typeof b.IsVersionSupported!="undefined"){f=true}if(!f){b.data="data:"+this.mimeType+",";if(typeof b.IsVersionSupported!="undefined"){f=true}}}c.uninstantiate(a)}}}else{b=c.getAXO(this.progID);var p=[1,0,1,1,1],l,k,o,i=function(d){return(d<10?"0":"")+d.toString()},m=function(q,d,s,t,r){return(q+"."+d+"."+s+i(t)+i(r)+".0")},n=function(d,s){var q,r=m((d==0?s:p[0]),(d==1?s:p[1]),(d==2?s:p[2]),(d==3?s:p[3]),(d==4?s:p[4]));try{return b.IsVersionSupported(r)}catch(q){}return false};if(b&&typeof b.IsVersionSupported!="undefined"){for(l=0;l0)?RegExp.$2.charCodeAt(0):-1;i=/([\d]+)([a-z]?)/.test(h[g]);a=parseInt(RegExp.$1,10);e=(g==2&&RegExp.$2.length>0)?RegExp.$2.charCodeAt(0):-1;if(b!=a){return(b>a?1:-1)}if(g==2&&f!=e){return(f>e?1:-1)}}return 0},getVersion:function(){var b=this.$,d,a=null,c;if(!b.isIE){if(b.hasMimeType(this.mimeType)){d=b.findNavPlugin(["VLC","(Plug-in|Plugin)"],false);if(d&&d.description){a=b.getNum(d.description,"[\\d][\\d\\.]*[a-z]*")}}this.installed=a?1:-1}else{d=b.getAXO(this.progID);if(d){try{a=b.getNum(d.VersionInfo,"[\\d][\\d\\.]*[a-z]*")}catch(c){}}this.installed=d?1:-1}this.version=b.formatNum(a)}};PluginDetect.initScript(); \ No newline at end of file diff --git a/js/price.js b/js/price.js new file mode 100644 index 000000000..32421adf8 --- /dev/null +++ b/js/price.js @@ -0,0 +1,224 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +function getTax() +{ + if (noTax) + return 0; + var selectedTax = document.getElementById('id_tax_rules_group'); + var taxId = selectedTax.options[selectedTax.selectedIndex].value; + return taxesArray[taxId]; +} + +function getEcotaxTaxIncluded() +{ + return ($('#ecotax').length && $('#ecotax').val() != '') ? parseFloat($('#ecotax').val()) : 0; +} + +function getEcotaxTaxExcluded() +{ + return getEcotaxTaxIncluded() / (1 + ecotaxTaxRate); +} + +function formatPrice(price) +{ + var fixedToSix = (Math.round(price * 1000000) / 1000000); + return (Math.round(fixedToSix) == fixedToSix + 0.000001 ? fixedToSix + 0.000001 : fixedToSix); +} + +function calcPriceTI() +{ + var tax = getTax(); + var priceTE = parseFloat(document.getElementById('priceTE').value.replace(/,/g, '.')); + var newPrice = priceTE * ((tax / 100) + 1); + document.getElementById('priceTI').value = (isNaN(newPrice) == true || newPrice < 0) ? '' : + ps_round(newPrice, 2); + document.getElementById('finalPrice').innerHTML = (isNaN(newPrice) == true || newPrice < 0) ? '' : + ps_round(newPrice, 2).toFixed(2); + document.getElementById('finalPriceWithoutTax').innerHTML = (isNaN(priceTE) == true || priceTE < 0) ? '' : + (ps_round(priceTE, 2) + getEcotaxTaxExcluded()).toFixed(2); + calcReduction(); + document.getElementById('priceTI').value = parseFloat(document.getElementById('priceTI').value) + getEcotaxTaxIncluded(); + document.getElementById('finalPrice').innerHTML = parseFloat(document.getElementById('priceTI').value); +} + +function calcPriceTE() +{ + var tax = getTax(); + var priceTI = parseFloat(document.getElementById('priceTI').value.replace(/,/g, '.')); + var newPrice = ps_round(priceTI - getEcotaxTaxIncluded(), 2) / ((tax / 100) + 1); + document.getElementById('priceTE').value = (isNaN(newPrice) == true || newPrice < 0) ? '' : + ps_round(newPrice.toFixed(6), 6); + document.getElementById('finalPrice').innerHTML = (isNaN(newPrice) == true || newPrice < 0) ? '' : + ps_round(priceTI.toFixed(2), 2); + document.getElementById('finalPriceWithoutTax').innerHTML = (isNaN(newPrice) == true || newPrice < 0) ? '' : + ps_round(newPrice.toFixed(2), 2) + getEcotaxTaxExcluded(); + calcReduction(); +} + +function calcImpactPriceTI() +{ + var tax = getTax(); + var priceTE = parseFloat(document.getElementById('attribute_price').value.replace(/,/g, '.')); + var newPrice = priceTE * ((tax / 100) + 1); + $('#attribute_priceTI').val((isNaN(newPrice) == true || newPrice < 0) ? '' :ps_round(newPrice.toFixed(6), 6)); + var total = ps_round((parseFloat($('#attribute_priceTI').val())*parseInt($('#attribute_price_impact').val())+parseFloat($('#finalPrice').html())), 2); + if (isNaN(total) || total < 0) + $('#attribute_new_total_price').html('0.00'); + else + $('#attribute_new_total_price').html(total); +} + +function calcImpactPriceTE() +{ + var tax = getTax(); + var priceTI = parseFloat(document.getElementById('attribute_priceTI').value.replace(/,/g, '.')); + priceTI = (isNaN(priceTI)) ? 0 : ps_round(priceTI); + var newPrice = ps_round(priceTI, 2) / ((tax / 100) + 1); + $('#attribute_price').val((isNaN(newPrice) == true || newPrice < 0) ? '' :ps_round(newPrice.toFixed(6), 6)); + var total = ps_round((parseFloat($('#attribute_priceTI').val())*parseInt($('#attribute_price_impact').val())+parseFloat($('#finalPrice').html())), 2); + if (isNaN(total) || total < 0) + $('#attribute_new_total_price').html('0.00'); + else + $('#attribute_new_total_price').html(total); +} + +function calcReduction() +{ + if (parseFloat($('#reduction_price').val()) > 0) + reductionPrice(); + else if (parseFloat($('#reduction_percent').val()) > 0) + reductionPercent(); +} + +function reductionPrice() +{ + var tax = getTax(); + var price = document.getElementById('priceTI'); + var priceWhithoutTaxes = document.getElementById('priceTE'); + var newprice = document.getElementById('finalPrice'); + var newpriceWithoutTax = document.getElementById('finalPriceWithoutTax'); + var curPrice = price.value; + + document.getElementById('reduction_percent').value = 0; + if (isInReductionPeriod()) + { + var rprice = document.getElementById('reduction_price'); + if (parseFloat(curPrice) <= parseFloat(rprice.value)) + rprice.value = curPrice; + if (parseFloat(rprice.value) < 0 || isNaN(parseFloat(curPrice))) + rprice.value = 0; + curPrice = curPrice - rprice.value; + } + + newprice.innerHTML = (ps_round(parseFloat(curPrice),2) + getEcotaxTaxIncluded()).toFixed(2); + var rpriceWithoutTaxes = ps_round(rprice.value / ((tax / 100) + 1), 2); + newpriceWithoutTax.innerHTML = ps_round(priceWhithoutTaxes.value - rpriceWithoutTaxes,2).toFixed(2); +} + +function reductionPercent() +{ + var tax = getTax(); + var price = document.getElementById('priceTI'); + var newprice = document.getElementById('finalPrice'); + var newpriceWithoutTax = document.getElementById('finalPriceWithoutTax'); + var curPrice = price.value; + + document.getElementById('reduction_price').value = 0; + if (isInReductionPeriod()) + { + var newprice = document.getElementById('finalPrice'); + var rpercent = document.getElementById('reduction_percent'); + + if (parseFloat(rpercent.value) >= 100) + rpercent.value = 100; + if (parseFloat(rpercent.value) < 0) + rpercent.value = 0; + curPrice = price.value * (1 - (rpercent.value / 100)); + } + + newprice.innerHTML = (ps_round(parseFloat(curPrice),2) + getEcotaxTaxIncluded()).toFixed(2); + newpriceWithoutTax.innerHTML = ps_round(parseFloat(ps_round(curPrice, 2) / ((tax / 100) + 1)),2).toFixed(2); +} + +function isInReductionPeriod() +{ + var start = document.getElementById('reduction_from').value; + var end = document.getElementById('reduction_to').value; + + if (start == end && start != "" && start != "0000-00-00 00:00:00") return true; + + var sdate = new Date(start.replace(/-/g,'/')); + var edate = new Date(end.replace(/-/g,'/')); + var today = new Date(); + + return (sdate <= today && edate >= today); +} + +function decimalTruncate(source, decimals) +{ + if (typeof(decimals) == 'undefined') + decimals = 6; + source = source.toString(); + var pos = source.indexOf('.'); + return parseFloat(source.substr(0, pos + decimals + 1)); +} + +function unitPriceWithTax(type) +{ + var tax = getTax(); + var priceWithTax = parseFloat(document.getElementById(type+'_price').value.replace(/,/g, '.')); + var newPrice = priceWithTax * ((tax / 100) + 1); + $('#'+type+'_price_with_tax').html((isNaN(newPrice) == true || newPrice < 0) ? '0.00' : ps_round(newPrice, 2).toFixed(2)); +} + +function unitySecond() +{ + $('#unity_second').html($('#unity').val()); + if ($('#unity').get(0).value.length > 0) + { + $('#unity_third').html($('#unity').val()); + $('#tr_unit_impact').show(); + } + else + $('#tr_unit_impact').hide(); +} + +function changeCurrencySpecificPrice(index) +{ + var id_currency = $('#spm_currency_' + index).val(); + if (currencies[id_currency]["format"] == 2 || currencies[id_currency]["format"] == 4) + { + $('#spm_currency_sign_pre_' + index).html(''); + $('#spm_currency_sign_post_' + index).html(' ' + currencies[id_currency]["sign"]); + } + else if (currencies[id_currency]["format"] == 1 || currencies[id_currency]["format"] == 3) + { + $('#spm_currency_sign_post_' + index).html(''); + $('#spm_currency_sign_pre_' + index).html(currencies[id_currency]["sign"] + ' '); + } +} + diff --git a/js/sendMailTest.js b/js/sendMailTest.js new file mode 100644 index 000000000..7f8708be3 --- /dev/null +++ b/js/sendMailTest.js @@ -0,0 +1,80 @@ +/* +* 2007-2011 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Open Software License (OSL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/osl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision: 1.4 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +//constant +verifMailREGEX = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/; + +function verifyMail(testMsg, testSubject) +{ + $("#mailResultCheck").removeClass("ok").removeClass('fail').html(''); + $("#mailResultCheck").slideDown("slow"); + + //local verifications + if ($("#testEmail[value=]").length > 0) + { + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(errorMail); + return false; + } + else if (!verifMailREGEX.test( $("#testEmail").val() )) + { + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(errorMail); + return false; + } + else + { + //external verifications and sets + $.ajax( + { + url: "ajax_send_mail_test.php", + cache: false, + data: + "mailMethod="+(($("input#PS_MAIL_METHOD").val() == 2) ? "smtp" : "native")+ + "&smtpSrv="+ $("input#PS_MAIL_SERVER").val()+ + "&testEmail="+ $("#testEmail").val()+ + "&smtpLogin="+ $("input#PS_MAIL_USER").val()+ + "&smtpPassword="+ $("input#PS_MAIL_PASSWD").val()+ + "&smtpPort="+ $("input#PS_MAIL_SMTP_PORT").val()+ + "&smtpEnc="+ $("select#PS_MAIL_SMTP_ENCRYPTION").val()+ + "&testMsg="+textMsg+ + "&testSubject="+textSubject + , + success: function(ret) + { + if (ret == "ok") + { + $("#mailResultCheck").addClass("ok").removeClass("fail").removeClass('userInfos').html(textSendOk); + mailIsOk = true; + } + else + { + mailIsOk = false; + $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(textSendError); + } + } + } + ); + } +} \ No newline at end of file diff --git a/js/tabpane.js b/js/tabpane.js new file mode 100644 index 000000000..908c6037a --- /dev/null +++ b/js/tabpane.js @@ -0,0 +1,287 @@ +/*----------------------------------------------------------------------------\ +| Tab Pane 1.02 | +|-----------------------------------------------------------------------------| +| Created by Erik Arvidsson | +| (http://webfx.eae.net/contact.html#erik) | +| For WebFX (http://webfx.eae.net/) | +|-----------------------------------------------------------------------------| +| Copyright (c) 2002, 2003, 2006 Erik Arvidsson | +|-----------------------------------------------------------------------------| +| Licensed under the Apache License, Version 2.0 (the "License"); you may not | +| use this file except in compliance with the License. You may obtain a copy | +| of the License at http://www.apache.org/licenses/LICENSE-2.0 | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| Unless required by applicable law or agreed to in writing, software | +| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | +| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | +| License for the specific language governing permissions and limitations | +| under the License. | +\----------------------------------------------------------------------------*/ + +function hasSupport() { + + if (typeof hasSupport.support != "undefined") + return hasSupport.support; + + var ie55 = /msie 5\.[56789]/i.test( navigator.userAgent ); + + hasSupport.support = ( typeof document.implementation != "undefined" && + document.implementation.hasFeature( "html", "1.0" ) || ie55 ) + + // IE55 has a serious DOM1 bug... Patch it! + if ( ie55 ) { + document._getElementsByTagName = document.getElementsByTagName; + document.getElementsByTagName = function ( sTagName ) { + if ( sTagName == "*" ) + return document.all; + else + return document._getElementsByTagName( sTagName ); + }; + } + + return hasSupport.support; +} + +function WebFXTabPane( el ) { + if ( !hasSupport() || el == null ) return; + + this.element = el; + this.element.tabPane = this; + this.pages = []; + this.selectedIndex = null; + + // add class name tag to class name + this.element.className = this.classNameTag + " " + this.element.className; + + // add tab row + this.tabRow = document.createElement( "div" ); + this.tabRow.className = "tab-row"; + el.insertBefore( this.tabRow, el.firstChild ); + + var tabIndex = pos_select; + this.selectedIndex = tabIndex; + + // loop through child nodes and add them + var cs = el.childNodes; + var n; + for (var i = 0; i < cs.length; i++) { + if (cs[i].nodeType == 1 && cs[i].className == "tab-page") { + this.addTabPage( cs[i] ); + } + } +} + +WebFXTabPane.prototype.classNameTag = "dynamic-tab-pane-control"; + +WebFXTabPane.prototype.setSelectedIndex = function ( n ) { + if (this.selectedIndex != n) { + if (this.selectedIndex != null && this.pages[ this.selectedIndex ] != null ) + this.pages[ this.selectedIndex ].hide(); + this.selectedIndex = n; + this.pages[ this.selectedIndex ].show(); + + // Add-on jQuery + loadTab(this.selectedIndex+1); + } +}; + +WebFXTabPane.prototype.getSelectedIndex = function () { + return this.selectedIndex; +}; + +WebFXTabPane.prototype.addTabPage = function ( oElement ) { + if ( !hasSupport() ) return; + + if ( oElement.tabPage == this ) // already added + return oElement.tabPage; + + var n = this.pages.length; + var tp = this.pages[n] = new WebFXTabPage( oElement, this, n ); + tp.tabPane = this; + + // move the tab out of the box + this.tabRow.appendChild( tp.tab ); + + if ( n == this.selectedIndex ) + tp.show(); + else + tp.hide(); + + return tp; +}; + +WebFXTabPane.prototype.dispose = function () { + this.element.tabPane = null; + this.element = null; + this.tabRow = null; + + for (var i = 0; i < this.pages.length; i++) { + this.pages[i].dispose(); + this.pages[i] = null; + } + this.pages = null; +}; + +function WebFXTabPage( el, tabPane, nIndex ) { + if ( !hasSupport() || el == null ) return; + + this.element = el; + this.element.tabPage = this; + this.index = nIndex; + + var cs = el.childNodes; + for (var i = 0; i < cs.length; i++) { + if (cs[i].nodeType == 1 && cs[i].className == "tab") { + this.tab = cs[i]; + break; + } + } + + var a = document.createElement( "A" ); + this.aElement = a; + a.href = "#"; + a.onclick = function () { return false; }; + while ( this.tab.hasChildNodes() ) + a.appendChild( this.tab.firstChild ); + this.tab.appendChild( a ); + + var oThis = this; + this.tab.onclick = function () { oThis.select(); }; + this.tab.onmouseover = function () { WebFXTabPage.tabOver( oThis ); }; + this.tab.onmouseout = function () { WebFXTabPage.tabOut( oThis ); }; +} + +WebFXTabPage.prototype.show = function () { + var el = this.tab; + var s = el.className + " selected"; + s = s.replace(/ +/g, " "); + el.className = s; + + this.element.style.display = "block"; + pos_select = this.element.id.substring(4, 5) - 1; + document.getElementById('tabs').value = pos_select; + loadTab(pos_select+1); +}; + +WebFXTabPage.prototype.hide = function () { + var el = this.tab; + var s = el.className; + s = s.replace(/ selected/g, ""); + el.className = s; + + this.element.style.display = "none"; +}; + +WebFXTabPage.prototype.select = function () { + this.tabPane.setSelectedIndex( this.index ); +}; + +WebFXTabPage.prototype.dispose = function () { + this.aElement.onclick = null; + this.aElement = null; + this.element.tabPage = null; + this.tab.onclick = null; + this.tab.onmouseover = null; + this.tab.onmouseout = null; + this.tab = null; + this.tabPane = null; + this.element = null; +}; + +WebFXTabPage.tabOver = function ( tabpage ) { + var el = tabpage.tab; + var s = el.className + " hover"; + s = s.replace(/ +/g, " "); + el.className = s; +}; + +WebFXTabPage.tabOut = function ( tabpage ) { + var el = tabpage.tab; + var s = el.className; + s = s.replace(/ hover/g, ""); + el.className = s; +}; + + +// This function initializes all uninitialized tab panes and tab pages +function setupAllTabs() { + if ( !hasSupport() ) return; + + var all = document.getElementsByTagName( "*" ); + var l = all.length; + var tabPaneRe = /tab\-pane/; + var tabPageRe = /tab\-page/; + var cn, el; + var parentTabPane; + + for ( var i = 0; i < l; i++ ) { + el = all[i] + cn = el.className; + + // no className + if ( cn == "" ) continue; + + // uninitiated tab pane + if ( tabPaneRe.test( cn ) && !el.tabPane ) + new WebFXTabPane( el ); + + // unitiated tab page wit a valid tab pane parent + else if ( tabPageRe.test( cn ) && !el.tabPage && + tabPaneRe.test( el.parentNode.className ) ) { + el.parentNode.tabPane.addTabPage( el ); + } + } +} + +function disposeAllTabs() { + if ( !hasSupport() ) return; + + var all = document.getElementsByTagName( "*" ); + var l = all.length; + var tabPaneRe = /tab\-pane/; + var cn, el; + var tabPanes = []; + + for ( var i = 0; i < l; i++ ) { + el = all[i] + cn = el.className; + + // no className + if ( cn == "" ) continue; + + // tab pane + if ( tabPaneRe.test( cn ) && el.tabPane ) + tabPanes[tabPanes.length] = el.tabPane; + } + + for (var i = tabPanes.length - 1; i >= 0; i--) { + tabPanes[i].dispose(); + tabPanes[i] = null; + } +} + +// Select the right tabs +if (!pos_select) + pos_select = 0; + +// DOM2 +if ( typeof window.addEventListener != "undefined" ) + window.addEventListener( "load", setupAllTabs, false ); + +// IE +else if ( typeof window.attachEvent != "undefined" ) { + window.attachEvent( "onload", setupAllTabs ); + window.attachEvent( "onunload", disposeAllTabs ); +} + +else { + if ( window.onload != null ) { + var oldOnload = window.onload; + window.onload = function ( e ) { + oldOnload( e ); + setupAllTabs(); + }; + } + else + window.onload = setupAllTabs; +} \ No newline at end of file diff --git a/js/tiny_mce/langs/en.js b/js/tiny_mce/langs/en.js new file mode 100755 index 000000000..d3e24c71a --- /dev/null +++ b/js/tiny_mce/langs/en.js @@ -0,0 +1 @@ +tinyMCE.addI18n({en:{common:{"more_colors":"More colors","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\\nDo you want more information about this issue?","not_set":"-- Not set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert time","insertdate_desc":"Insert date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction right to left","ltr_desc":"Direction left to right"},layer:{content:"New layer...","absolute_desc":"Toggle absolute positioning","backward_desc":"Move backward","forward_desc":"Move forward","insertlayer_desc":"Insert new layer"},save:{"save_desc":"Save","cancel_desc":"Cancel all changes"},nonbreaking:{"nonbreaking_desc":"Insert non-breaking space character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Run spell checking"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Horizontal rule"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Emotions"},searchreplace:{"replace_desc":"Find/Replace","delta_width":"","delta_height":"","search_desc":"Find"},advimage:{"delta_width":"","image_desc":"Insert/edit image","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Insert/edit link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation"},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"Cell",col:"Column",row:"Row",del:"Delete table","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"Remove column","col_after_desc":"Insert column after","col_before_desc":"Insert column before","delete_row_desc":"Delete row","row_after_desc":"Insert row after","row_before_desc":"Insert row before",desc:"Inserts a new table"},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\\n\\nAre you sure you want to restore the saved content?.","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle fullscreen mode"},media:{"delta_height":"","delta_width":"",edit:"Edit embedded media",desc:"Insert / edit embedded media"},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"Ignore word","ignore_words":"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found."},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"Circle",disc:"Disc",square:"Square"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/es.js b/js/tiny_mce/langs/es.js new file mode 100755 index 000000000..ff1d88526 --- /dev/null +++ b/js/tiny_mce/langs/es.js @@ -0,0 +1 @@ +tinyMCE.addI18n({es:{common:{"more_colors":"M\u00e1s colores","invalid_data":"Error: Introdujo un valor no v\u00e1lido, est\u00e1n marcados en rojo.","popup_blocked":"Lo sentimos, su bloqueo de ventanas emergentes ha deshabilitado una ventana que provee funcionalidades a la aplicaci\u00f3n. Necesita deshabilitar este bloqueo en este sitio para poder utilizar todas las funciones.","clipboard_no_support":"Su navegador no soporta las funciones de cortapapeles, use los accesos por teclado.","clipboard_msg":"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\\n \u00bfDesea obtener m\u00e1s informaci\u00f3n acerca de este tema?","not_set":"-- Ninguno --","class_name":"Clase",browse:"Examinar",close:"Cerrar",cancel:"Cancelar",update:"Actualizar",insert:"Insertar",apply:"Aplicar","edit_confirm":" \u00bfDesea utilizar el modo WYSIWYG para esta caja de texto?"},contextmenu:{full:"Justificado",right:"Derecha",center:"Centrado",left:"Izquierda",align:"Alineaci\u00f3n"},insertdatetime:{"day_short":"Dom,Lun,Mar,Mie,Jue,Vie,Sab,Dom","day_long":"Domingo,Lunes,Martes,Mi\u00e9rcoles,Jueves,Viernes,S\u00e1bado,Domingo","months_short":"Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic","months_long":"Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre","inserttime_desc":"Insertar hora","insertdate_desc":"Insertar fecha","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimir"},preview:{"preview_desc":"Vista previa"},directionality:{"rtl_desc":"Direcci\u00f3n derecha a izquierda","ltr_desc":"Direcci\u00f3n izquierda a derecha"},layer:{content:"Nueva capa...","absolute_desc":"Cambiar a posici\u00f3n absoluta","backward_desc":"Retroceder","forward_desc":"Avanzar","insertlayer_desc":"Insertar nueva capa"},save:{"save_desc":"Guardar","cancel_desc":"Cancelar todos los cambios"},nonbreaking:{"nonbreaking_desc":"Insertar caracter de espacio \'non-breaking\'"},iespell:{download:"No se detect\u00f3 \'ieSpell\'. \u00bfDesea instalarlo ahora?","iespell_desc":"Corrector ortogr\u00e1fico"},advhr:{"advhr_desc":"Regla horizontal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoticones","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Buscar/Reemplazar","search_desc":"Buscar","delta_width":"","delta_height":""},advimage:{"image_desc":"Insertar/editar imagen","delta_width":"","delta_height":""},advlink:{"link_desc":"Insertar/editar hiperv\u00ednculo","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insertar/Editar atributos","ins_desc":"Inserci\u00f3n","del_desc":"Borrado","acronym_desc":"Acr\u00f3nimo","abbr_desc":"Abreviatura","cite_desc":"Cita","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Editar Estilo CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Elegir todo","paste_word_desc":"Pegar desde Word","paste_text_desc":"Pegar como texto plano"},"paste_dlg":{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."},table:{cell:"Celda",col:"Columna",row:"Fila",del:"Eliminar tabla","copy_row_desc":"Copiar fila","cut_row_desc":"Cortar fila","paste_row_after_desc":"Pegar filas (despu\u00e9s)","paste_row_before_desc":"Pegar filas (antes)","props_desc":"Propiedades de la tabla","cell_desc":"Propiedades de la celda","row_desc":"Propiedades de la fila","merge_cells_desc":"Vincular celdas","split_cells_desc":"Dividir celdas","delete_col_desc":"Suprimir columna","col_after_desc":"Insertar columna (despu\u00e9s)","col_before_desc":"Insertar columna (antes)","delete_row_desc":"Suprimir fila","row_after_desc":"Insertar fila (despu\u00e9s)","row_before_desc":"Insertar fila (antes)",desc:"Inserta una nueva tabla","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Se reestablece en contenido guardado, perder\u00e1 todo el contenido que est\u00e1 actualmente en el editor.\\n\\nEst\u00e1 seguro de que quiere reestablecer el contenido guardado.","restore_content":"Reestablecer contenido guardado autom\u00e1ticamente","unload_msg":"Los cambios realizados se perder\u00e1n si sale de esta p\u00e1gina."},fullscreen:{desc:"Cambiar a modo Pantalla Completa"},media:{edit:"Editar medio embebido",desc:"Insertar/editar medio embebido","delta_height":"","delta_width":""},fullpage:{desc:"Propiedades del documento","delta_width":"Ancho","delta_height":"Alto"},template:{desc:"Insertar contenido de plantilla predefinida"},visualchars:{desc:"Caracteres de control ON/OFF."},spellchecker:{desc:"Cambiar a corrector ortogr\u00e1fico",menu:"Configuraci\u00f3n de corrector ortogr\u00e1fico","ignore_word":"Ignorar","ignore_words":"Ignorar todo",langs:"Idiomas",wait:"Espere...",sug:"Sugerencias","no_sug":"Sin sugerencias","no_mpell":"No se encontraron errores."},pagebreak:{desc:"Insertar fin de p\u00e1gina"},advlist:{types:"Tipo",def:"Preestablecido","lower_alpha":"Menos opaco","lower_greek":"Menos greek","lower_roman":"Menos roman","upper_alpha":"M\u00e1s opaco","upper_roman":"M\u00e1s roman",circle:"Circulo",disc:"Disc",square:"Cuadro"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/et.js b/js/tiny_mce/langs/et.js new file mode 100755 index 000000000..6d1fbb0c4 --- /dev/null +++ b/js/tiny_mce/langs/et.js @@ -0,0 +1 @@ +tinyMCE.addI18n({et:{common:{more_colors:"Rohkem v\u00e4rve",invalid_data:"Viga: Kehtetud v\u00e4\u00e4rtused sisestatud, need on m\u00e4rgitud punasega.",popup_blocked:"Vabandust, aga Teie h\u00fcpikakna t\u00f5kestaja on blokeerinud akna, mis varustab rakenduse funktsionaalsust. Palun lubage h\u00fcpikaknad sellel kodulehel, et t\u00e4ielikult kasutada seda vahendit.",clipboard_no_support:"Hetkel ei ole toetatud Teie lehitseja poolt, kasutage klaviatuuri otseteid selle asemel.",clipboard_msg:"Kopeeri/L\u00f5ika/Kleebi ei ole saadaval Mozillas ja Firefoxis.\\nKas soovite rohkem infot selle probleemi kohta?",not_set:"-- Seadmata --",class_name:"Klass",browse:"Sirvi",close:"Sule",cancel:"T\u00fchista",update:"Uuenda",insert:"Sisesta",apply:"Rakenda",edit_confirm:"Kas soovite kasutada WYSIWYG re\u017eiimi sellel tekstialal?"},contextmenu:{full:"T\u00e4is",right:"Parem",center:"Kesk",left:"Vasak",align:"Joondus"},insertdatetime:{day_short:"P,E,T,K,N,R,L,P",day_long:"P\u00fchap\u00e4ev,Esmasp\u00e4ev,Teisip\u00e4ev,Kolmap\u00e4ev,Neljap\u00e4ev,Reede,Laup\u00e4ev,P\u00fchap\u00e4ev",months_short:"Jaan,Veeb,M\u00e4rts,Apr,Mai,Juuni,Juuli,Aug,Sept,Okt,Nov,Dets",months_long:"Jaanuar,Veebruar,M\u00e4rts,Aprill,Mai,Juuni,Juuli,August,September,Oktoober,November,Detsember",inserttime_desc:"Sisesta aeg",insertdate_desc:"Sisesta kuup\u00e4ev",time_fmt:"%T:%M:%S",date_fmt:"%A-%k-%p"},print:{print_desc:"Print"},preview:{preview_desc:"Eelvaade"},directionality:{rtl_desc:"Suund paremalt vasakule",ltr_desc:"Suund vasakult paremale"},layer:{content:"Uus kiht...",absolute_desc:"L\u00fclita \u00fcmber absoluutne positsioneerimine",backward_desc:"Liiguta tagasi",forward_desc:"Liiguta edasi",insertlayer_desc:"Sisesta uus kiht"},save:{save_desc:"Salvesta",cancel_desc:"T\u00fchista k\u00f5ik muudatused"},nonbreaking:{nonbreaking_desc:"Sisesta mittekatkestav t\u00fchik"},iespell:{download:"ie\u00d5igekiri tuvastamata. Kas soovite paigaldada n\u00fc\u00fcd?",iespell_desc:"\u00d5igekirja kontroll"},advhr:{advhr_desc:"Horisontaalne joonlaud",delta_height:"",delta_width:""},emotions:{emotions_desc:"Emotsioonid",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Otsi/Asenda",search_desc:"Otsi",delta_width:"",delta_height:""},advimage:{image_desc:"Sisesta/redigeeri pilt",delta_width:"",delta_height:""},advlink:{link_desc:"Sisesta/redigeeri link",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Sisesta muuda atribuute",ins_desc:"Lisandus",del_desc:"Kustutus",acronym_desc:"Akron\u00fc\u00fcm",abbr_desc:"L\u00fchend",cite_desc:"Tsitaat",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Redigeeri CSS stiili",delta_height:"",delta_width:""},paste:{selectall_desc:"Vali k\u00f5ik",paste_word_desc:"Kleebi Wordist",paste_text_desc:"Kleebi tavalise tekstina",plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode.",plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},paste_dlg:{word_title:"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks.",text_linebreaks:"J\u00e4ta reavahetused",text_title:"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks."},table:{cell:"Lahter",col:"Veerg",row:"Rida",del:"Kustuta tabel",copy_row_desc:"Kopeeri tabeli rida",cut_row_desc:"L\u00f5ika tabeli rida",paste_row_after_desc:"Kleebi tabeli rida j\u00e4rgi",paste_row_before_desc:"Kleebi tabeli rida ette",props_desc:"Tabeli omadused",cell_desc:"Tabeli lahtri omadused",row_desc:"Tabeli rea omadused",merge_cells_desc:"\u00dchenda tabeli lahtrid",split_cells_desc:"Eralda \u00fchendatud tabeli lahtrid",delete_col_desc:"Kustuta veerg",col_after_desc:"Sisesta veerg j\u00e4rgi",col_before_desc:"Sisesta veerg ette",delete_row_desc:"Kustuta rida",row_after_desc:"Sisesta rida j\u00e4rgi",row_before_desc:"Sisesta rida ette",desc:"Sisestab uue tabeli",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{unload_msg:"Tehtud muudatused kaovad, kui lahkute siit lehelt.",warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\\n\\nAre you sure you want to restore the saved content?.",restore_content:"Restore auto-saved content."},fullscreen:{desc:"L\u00fclita \u00fcmber t\u00e4isekraani re\u017eiim"},media:{edit:"Redigeeri manustatud meedia",desc:"Sisesta / redigeeri manustatud meedia",delta_height:"",delta_width:""},fullpage:{desc:"Dokumendi omadused",delta_width:"",delta_height:""},template:{desc:"Sisesta eeldefineeritud \u0161ablooni sisu"},visualchars:{desc:"Visuaalsed kontrollt\u00e4hem\u00e4rgid sisse/v\u00e4lja"},spellchecker:{desc:"L\u00fclita \u00fcmber \u00f5igekirja kontroll",menu:"\u00d5igekirja kontrolli seaded",ignore_word:"J\u00e4ta s\u00f5na vahele",ignore_words:"J\u00e4ra k\u00f5ik vahele",langs:"Keeled",wait:"Palun oota...",sug:"Soovitused",no_sug:"Soovitusi pole",no_mpell:"Valesti kirjutamisi ei leitud."},pagebreak:{desc:"Sisesta lehevahetus."},advlist:{types:"Types",def:"Default",lower_alpha:"Lower alpha",lower_greek:"Lower greek",lower_roman:"Lower roman",upper_alpha:"Upper alpha",upper_roman:"Upper roman",circle:"Circle",disc:"Disc",square:"Square"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/fi.js b/js/tiny_mce/langs/fi.js new file mode 100755 index 000000000..d5282dc61 --- /dev/null +++ b/js/tiny_mce/langs/fi.js @@ -0,0 +1 @@ +tinyMCE.addI18n({fi:{common:{more_colors:"Enemm\u00e4n v\u00e4rej\u00e4",invalid_data:"Virhe: Sy\u00f6tit virheellisi\u00e4 arvoja, ne n\u00e4kyv\u00e4t punaisina.",popup_blocked:"Sinulla on k\u00e4yt\u00f6ss\u00e4si ohjelma, joka est\u00e4\u00e4 ponnahdusikkunoiden n\u00e4yt\u00f6n. Sinun t\u00e4ytyy kytke\u00e4 ponnahdusikkunoiden esto pois p\u00e4\u00e4lt\u00e4 voidaksesi hy\u00f6dynt\u00e4\u00e4 t\u00e4ysin t\u00e4t\u00e4 ty\u00f6kalua.",clipboard_no_support:"Selaimesi ei ole tuettu, k\u00e4yt\u00e4 sen sijaan n\u00e4pp\u00e4inoikoteit\u00e4.",clipboard_msg:"Kopioi/Leikkaa/Liit\u00e4 ei ole k\u00e4ytett\u00e4viss\u00e4 Mozilla ja Firefox -selaimilla.\\nHaluatko lis\u00e4tietoa t\u00e4st\u00e4 ongelmasta?",not_set:"-- Ei m\u00e4\u00e4ritetty --",class_name:"Luokka",browse:"Selaa",close:"Sulje",cancel:"Peru",update:"P\u00e4ivit\u00e4",insert:"Lis\u00e4\u00e4",apply:"K\u00e4yt\u00e4",edit_confirm:"Haluatko k\u00e4ytt\u00e4\u00e4 WYSIWYG-tilaa t\u00e4ss\u00e4 tekstikent\u00e4ss\u00e4?"},contextmenu:{full:"Molemmille puolille",right:"Oikealle",center:"Keskelle",left:"Vasemmalle",align:"Tasaus"},insertdatetime:{day_short:"su,ma,ti,ke,to,pe,la,su",day_long:"sunnuntai,maanantai,tiistai,keskiviikko,torstai,perjantai,lauantai,sunnuntai",months_short:"tammi,helmi,maalis,huhti,touko,kes\u00e4,hein\u00e4,elo,syys,loka,marras,joulu",months_long:"tammikuu,helmikuu,maaliskuu,huhtikuu,toukokuu,kes\u00e4kuu,hein\u00e4kuu,elokuu,syyskuu,lokakuu,marraskuu,joulukuu",inserttime_desc:"Lis\u00e4\u00e4 kellonaika",insertdate_desc:"Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4",time_fmt:"%H:%M:%S",date_fmt:"%d.%m.%Y"},print:{print_desc:"Tulosta"},preview:{preview_desc:"Esikatselu"},directionality:{rtl_desc:"Suunta oikealta vasemmalle",ltr_desc:"Suunta vasemmalta oikealle"},layer:{content:"Uusi taso...",absolute_desc:"Absoluuttinen sijainti",backward_desc:"Siirr\u00e4 taaksep\u00e4in",forward_desc:"Siirr\u00e4 eteenp\u00e4in",insertlayer_desc:"Lis\u00e4\u00e4 uusi taso"},save:{save_desc:"Tallenna",cancel_desc:"Peru kaikki muutokset"},nonbreaking:{nonbreaking_desc:"Lis\u00e4\u00e4 tyhj\u00e4 merkki (nbsp)"},iespell:{download:"ieSpell-ohjelmaa ei havaittu. Haluatko asentaa sen nyt?",iespell_desc:"Oikeinkirjoituksen tarkistus"},advhr:{advhr_desc:"Vaakatasoviivain",delta_height:"",delta_width:""},emotions:{emotions_desc:"Hymi\u00f6t",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Etsi ja korvaa",search_desc:"Etsi",delta_width:"",delta_height:""},advimage:{image_desc:"Lis\u00e4\u00e4/muokkaa kuvaa",delta_width:"",delta_height:""},advlink:{link_desc:"Lis\u00e4\u00e4/muokkaa linkki\u00e4",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Lis\u00e4\u00e4/muokkaa attribuutteja",ins_desc:"Lis\u00e4ys",del_desc:"Poisto",acronym_desc:"Kirjainlyhenne",abbr_desc:"Lyhenne",cite_desc:"Sitaatti",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Muokkaa CSS-tyylej\u00e4",delta_height:"",delta_width:""},paste:{plaintext_mode:"Liitt\u00e4minen on nyt pelkk\u00e4n\u00e4 tekstin\u00e4. Klikkaa uudelleen vaihtaaksesi takaisin tavalliseen tilaan.",plaintext_mode_sticky:"Liitt\u00e4minen on nyt pelkk\u00e4n\u00e4 tekstin\u00e4. Klikkaa uudelleen vaihtaaksesi takaisin tavalliseen tilaan. Palaat takaisin tavalliseen tilaan liitetty\u00e4si jotakin.",selectall_desc:"Valitse kaikki",paste_word_desc:"Liit\u00e4 Wordist\u00e4",paste_text_desc:"Liit\u00e4 pelkk\u00e4n\u00e4 tekstin\u00e4"},paste_dlg:{word_title:"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan.",text_linebreaks:"S\u00e4ilyt\u00e4 rivinvaihdot",text_title:"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan."},table:{cellprops_delta_width:"80",cell:"Solu",col:"Sarake",row:"Rivi",del:"Poista taulukko",copy_row_desc:"Kopioi taulukon rivi",cut_row_desc:"Leikkaa taulukon rivi",paste_row_after_desc:"Liit\u00e4 taulukon rivi j\u00e4lkeen",paste_row_before_desc:"Liit\u00e4 taulukon rivi ennen",props_desc:"Taulukon asetukset",cell_desc:"Taulukon solun asetukset",row_desc:"Taulukon rivin asetukset",merge_cells_desc:"Yhdist\u00e4 taulukon solut",split_cells_desc:"Jaa yhdistetyt taulukon solut",delete_col_desc:"Poista sarake",col_after_desc:"Lis\u00e4\u00e4 sarake j\u00e4lkeen",col_before_desc:"Lis\u00e4\u00e4 sarake ennen",delete_row_desc:"Poista rivi",row_after_desc:"Lis\u00e4\u00e4 rivi j\u00e4lkeen",row_before_desc:"Lis\u00e4\u00e4 rivi ennen",desc:"Lis\u00e4\u00e4 uusi taulukko",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"Jos palautat automaattisesti tallennetun sis\u00e4ll\u00f6n, menet\u00e4t t\u00e4ll\u00e4 hetkell\u00e4 editorissa olevan sis\u00e4ll\u00f6n.\\n\\nHaluatko varmasti palauttaa tallennetun sis\u00e4ll\u00f6n?",restore_content:"Palauta automaattisesti tallennettu sis\u00e4lt\u00f6.",unload_msg:"Tekem\u00e4si muutokset menetet\u00e4\u00e4n jos poistut t\u00e4lt\u00e4 sivulta."},fullscreen:{desc:"Kokoruututila"},media:{edit:"Muokkaa upotettua mediaa",desc:"Lis\u00e4\u00e4/muokkaa upotettua mediaa",delta_height:"",delta_width:""},fullpage:{desc:"Tiedoston asetukset",delta_width:"",delta_height:""},template:{desc:"Lis\u00e4\u00e4 esim\u00e4\u00e4ritetty\u00e4 sivupohjasis\u00e4lt\u00f6\u00e4"},visualchars:{desc:"N\u00e4yt\u00e4/piilota muotoilumerkit."},spellchecker:{desc:"Oikeinkirjoituksen tarkistus",menu:"Oikeinkirjoituksen asetukset",ignore_word:"Ohita sana",ignore_words:"Ohita kaikki",langs:"Kielet",wait:"Odota ole hyv\u00e4...",sug:"Ehdotukset",no_sug:"Ei ehdotuksia",no_mpell:"Virheit\u00e4 ei l\u00f6ytynyt."},pagebreak:{desc:"Lis\u00e4\u00e4 sivunvaihto."},advlist:{types:"Tyypit",def:"Oletus",lower_alpha:"pienet kirjaimet: a, b, c",lower_greek:"pienet kirjaimet: \u03b1, \u03b2, \u03b3",lower_roman:"pienet kirjaimet: i, ii, iii",upper_alpha:"isot kirjaimet: A, B, C",upper_roman:"isot kirjaimet: I, II, III",circle:"Pallo",disc:"Ympyr\u00e4",square:"Neli\u00f6"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/fr.js b/js/tiny_mce/langs/fr.js new file mode 100755 index 000000000..c968352f6 --- /dev/null +++ b/js/tiny_mce/langs/fr.js @@ -0,0 +1 @@ +tinyMCE.addI18n({fr:{common:{more_colors:"Plus de couleurs",invalid_data:"Erreur : saisie de valeurs incorrectes. Elles sont mises en \u00e9vidence en rouge.",popup_blocked:"D\u00e9sol\u00e9, nous avons d\u00e9tect\u00e9 que votre bloqueur de popup a bloqu\u00e9 une fen\u00eatre dont l\'application a besoin. Vous devez d\u00e9sactiver votre bloqueur de popup pour pouvoir utiliser cet outil.",clipboard_no_support:"Actuellement non support\u00e9 par votre navigateur.\\n Veuillez utiliser les raccourcis clavier \u00e0 la place.",clipboard_msg:"Les fonctions Copier/Couper/Coller ne sont pas valables sur Mozilla et Firefox.\\nSouhaitez-vous avoir plus d\'informations sur ce sujet ?",not_set:"-- non d\u00e9fini --",class_name:"Classe",browse:"parcourir",close:"Fermer",cancel:"Annuler",update:"Mettre \u00e0 jour",insert:"Ins\u00e9rer",apply:"Appliquer",edit_confirm:"Souhaitez-vous utiliser le mode WYSIWYG pour cette zone de texte ?"},contextmenu:{full:"Justifi\u00e9",right:"Droite",center:"Centr\u00e9",left:"Gauche",align:"Alignement"},insertdatetime:{day_short:"Dim,Lun,Mar,Mer,Jeu,Ven,Sam,Dim",day_long:"Dimanche,Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche",months_short:"Jan,F\u00e9v,Mar,Avr,Mai,Juin,Juil,Ao\u00fbt,Sep,Oct,Nov,D\u00e9c",months_long:"Janvier,F\u00e9vrier,Mars,Avril,Mai,Juin,Juillet,Ao\u00fbt,Septembre,Octobre,Novembre,D\u00e9cembre",inserttime_desc:"Ins\u00e9rer l\'heure",insertdate_desc:"Ins\u00e9rer la date",time_fmt:"%H:%M:%S",date_fmt:"%d-%m-%Y"},print:{print_desc:"Imprimer"},preview:{preview_desc:"Pr\u00e9visualiser"},directionality:{rtl_desc:"\u00c9criture de droite \u00e0 gauche",ltr_desc:"\u00c9criture de gauche \u00e0 droite"},layer:{content:"Nouvelle couche\u2026",absolute_desc:"Activer le positionnement absolu",backward_desc:"D\u00e9placer vers l\'arri\u00e8re",forward_desc:"D\u00e9placer vers l\'avant",insertlayer_desc:"Ins\u00e9rer une nouvelle couche"},save:{save_desc:"Enregistrer",cancel_desc:"Annuler toutes les modifications"},nonbreaking:{nonbreaking_desc:"Ins\u00e9rer une espace ins\u00e9cable"},iespell:{download:"ieSpell n\'est pas install\u00e9. Souhaitez-vous l\'installer maintenant ?",iespell_desc:"Lancer le v\u00e9rificateur d\'orthographe"},advhr:{delta_height:"Ecart de hauteur",delta_width:"Ecart de largeur",advhr_desc:"Ins\u00e9rer un trait horizontal"},emotions:{emotions_desc:"\u00c9motic\u00f4nes",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Rechercher / remplacer",search_desc:"Rechercher",delta_width:"",delta_height:""},advimage:{image_desc:"Ins\u00e9rer / \u00e9diter une image",delta_width:"",delta_height:""},advlink:{link_desc:"Ins\u00e9rer / \u00e9diter un lien",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Ins\u00e9rer / \u00e9diter les attributs",ins_desc:"Ins\u00e9r\u00e9",del_desc:"Barr\u00e9",acronym_desc:"Acronyme",abbr_desc:"Abr\u00e9viation",cite_desc:"Citation",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"\u00c9diter la feuille de style (CSS)",delta_height:"",delta_width:""},paste:{plaintext_mode:"Le collage est actuellement en mode texte non format\u00e9. Cliquez \u00e0 nouveau pour revenir en mode de collage ordinaire.",plaintext_mode_sticky:"Le collage est actuellement en mode texte non format\u00e9. Cliquez \u00e0 nouveau pour revenir en mode de collage ordinaire. Apr\u00e8s avoir coll\u00e9 quelque chose, vous retournerez en mode de collage ordinaire.",selectall_desc:"Tout s\u00e9lectionner",paste_word_desc:"Coller un texte cr\u00e9\u00e9 sous Word",paste_text_desc:"Coller comme texte brut"},paste_dlg:{word_title:"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre.",text_linebreaks:"Conserver les retours \u00e0 la ligne",text_title:"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre."},table:{cell:"Cellule",col:"Colonne",row:"Ligne",del:"Effacer le tableau",copy_row_desc:"Copier la ligne",cut_row_desc:"Couper la ligne",paste_row_after_desc:"Coller la ligne apr\u00e8s",paste_row_before_desc:"Coller la ligne avant",props_desc:"Propri\u00e9t\u00e9s du tableau",cell_desc:"Propri\u00e9t\u00e9s de la cellule",row_desc:"Propri\u00e9t\u00e9s de la ligne",merge_cells_desc:"Fusionner les cellules",split_cells_desc:"Scinder les cellules fusionn\u00e9es",delete_col_desc:"Effacer la colonne",col_after_desc:"Ins\u00e9rer une colonne apr\u00e8s",col_before_desc:"Ins\u00e9rer une colonne avant",delete_row_desc:"Effacer la ligne",row_after_desc:"Ins\u00e9rer une ligne apr\u00e8s",row_before_desc:"Ins\u00e9rer une ligne avant",desc:"Ins\u00e9rer un nouveau tableau",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"Si vous restaurez le contenu sauv\u00e9, vous perdrez le contenu qui est actuellement dans l\'\u00e9diteur.\\n\\n\u00cates-vous s\u00fbr de vouloir restaurer le contenu sauv\u00e9 ?",restore_content:"Restaurer le contenu auto-sauvegard\u00e9.",unload_msg:"Les modifications apport\u00e9es seront perdus si vous quittez cette page."},fullscreen:{desc:"Passer en mode plein \u00e9cran"},media:{edit:"\u00c9diter un m\u00e9dia incorpor\u00e9",desc:"Ins\u00e9rer / \u00e9diter un m\u00e9dia incorpor\u00e9",delta_height:"",delta_width:""},fullpage:{desc:"Propri\u00e9t\u00e9s du document",delta_width:"",delta_height:""},template:{desc:"Ins\u00e9rer un mod\u00e8le pr\u00e9d\u00e9fini."},visualchars:{desc:"Activer les caract\u00e8res de mise en page."},spellchecker:{desc:"Activer le v\u00e9rificateur d\'orthographe",menu:"Param\u00e8tres du v\u00e9rificateur d\'orthographe",ignore_word:"Ignorer le mot",ignore_words:"Tout ignorer",langs:"Langues",wait:"Veuillez patienter\u2026",sug:"Suggestions",no_sug:"Aucune suggestion",no_mpell:"Aucune erreur trouv\u00e9e."},pagebreak:{desc:"Ins\u00e9rer un saut de page."},advlist:{types:"Types",def:"D\u00e9faut",lower_alpha:"Alpha minuscule",lower_greek:"Grec minuscule",lower_roman:"Romain minuscule",upper_alpha:"Alpha majuscule",upper_roman:"Romain majuscule",circle:"Cercle",disc:"Disque",square:"Carr\u00e9"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/gl.js b/js/tiny_mce/langs/gl.js new file mode 100755 index 000000000..18586e925 --- /dev/null +++ b/js/tiny_mce/langs/gl.js @@ -0,0 +1 @@ +tinyMCE.addI18n({gl:{common:{more_colors:"Mais cores",invalid_data:"Error: Introducidos valores non v\u00e1lidos, est\u00e1n marcados en vermello.",popup_blocked:"O seu bloqueador de vent\u00e1s emerxentes deshabilitou unha vent\u00e1 que precisa pra o funcionamento da aplicaci\u00f3n. Precisa deshabilita-lo bloqueo de `popups` neste sitio pra utilizar \u00f3 m\u00e1ximo esta ferramenta.",clipboard_no_support:"O seu navegador non soporta estas funci\u00f3ns, use os atallos de teclado.",clipboard_msg:"Copiar/Cortar/Pegar non est\u00e1 disponible en Mozilla e Firefox.\\n\u00bfDesexa obter mais informaci\u00f3n sobre de este asunto?",not_set:"-- Ning\u00fan --",class_name:"Clase",browse:"Examinar",close:"Cerrar",cancel:"Cancelar",update:"Actualizar",insert:"Insertar",apply:"Apricar",edit_confirm:"\u00bfDesexa utiliza-lo modo WYSIWYG pra esta caixa de texto?"},contextmenu:{full:"Xustificado",right:"Dereita",center:"Centrado",left:"Esquerda",align:"Ali\u00f1amento"},insertdatetime:{day_short:"Dom,Lun,Mar,M\u00e9r,Xov,Ver,S\u00e1b,Dom",day_long:"Domingo,Luns,Martes,M\u00e9rcores,Xoves,Venres,S\u00e1bado,Domingo",months_short:"Xan,Feb,Mar,Abr,Mai,Xu\u00f1,Xul,Ago,Set,Out,Nov,Dec",months_long:"Xaneito,Febreiro,Marzo,Abril,Maio,Xu\u00f1o,Xullo,Agosto,Setembro,Outubro,Novembro,Decembro",inserttime_desc:"Insertar hora",insertdate_desc:"Insertar data",time_fmt:"%H:%M:%S",date_fmt:"%d-%m-%Y"},print:{print_desc:"Imprimir"},preview:{preview_desc:"Vista previa"},directionality:{rtl_desc:"Direcci\u00f3n dereita a esquerda",ltr_desc:"Direcci\u00f3n esquerda a dereita"},layer:{content:"Nova capa...",absolute_desc:"Posici\u00f3n absoluta",backward_desc:"Recuar",forward_desc:"Avanzar",insertlayer_desc:"Insertar nova capa"},save:{save_desc:"Gardar",cancel_desc:"Cancelar todo-los cambios"},nonbreaking:{nonbreaking_desc:"Insertar espacio non colapsable"},iespell:{download:"Non se detectou \'ieSpell\'. \u00bfDesexa instala-lo agora?",iespell_desc:"Corrector ortogr\u00e1fico"},advhr:{advhr_desc:"Regra horizontal",delta_height:"",delta_width:""},emotions:{emotions_desc:"Emoticones",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Buscar/Reemplazar",search_desc:"Buscar",delta_width:"",delta_height:""},advimage:{image_desc:"Insertar/editar imaxe",delta_width:"",delta_height:""},advlink:{link_desc:"Insertar/editar hiperv\u00ednculo",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Insertar/Editar atributos",ins_desc:"Inserci\u00f3n",del_desc:"Borrado",acronym_desc:"Acr\u00f3nimo",abbr_desc:"Abreviatura",cite_desc:"Cita",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Editar Estilo CSS",delta_height:"",delta_width:""},paste:{selectall_desc:"Seleccionar todo",paste_word_desc:"Pegar desde Word",paste_text_desc:"Pegar como texto simple",plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode.",plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},paste_dlg:{word_title:"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1.",text_linebreaks:"Manter salto de li\u00f1as",text_title:"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1."},table:{cell:"Celda",col:"Columna",row:"Fila",del:"Eliminar t\u00e1boa",copy_row_desc:"Copiar fila",cut_row_desc:"Cortar fila",paste_row_after_desc:"Pegar filas (desp\u00f3is)",paste_row_before_desc:"Pegar filas (antes)",props_desc:"Propiedades da t\u00e1boa",cell_desc:"Propiedades da celda",row_desc:"Propiedades da fila",merge_cells_desc:"Vincular celdas",split_cells_desc:"Dividir celdas",delete_col_desc:"Suprimir columna",col_after_desc:"Insertar columna (desp\u00f3is)",col_before_desc:"Insertar columna (antes)",delete_row_desc:"Suprimir fila",row_after_desc:"Insertar fila (desp\u00f3is)",row_before_desc:"Insertar fila (antes)",desc:"Inserta unha nova t\u00e1boa",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{unload_msg:"Os cambios realizados perderanse se sae desta p\u00e1xina.",warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\\n\\nAre you sure you want to restore the saved content?.",restore_content:"Restore auto-saved content."},fullscreen:{desc:"Cambiar a modo Pantalla Completa"},media:{edit:"Editar medio embebido",desc:"Insertar/editar medio embebido",delta_height:"",delta_width:""},fullpage:{desc:"Propiedades do documento",delta_width:"",delta_height:""},template:{desc:"Insertar contido de plantilla predefinida"},visualchars:{desc:"Caracteres de control ON/OFF."},spellchecker:{desc:"Conmutar corrector ortogr\u00e1fico",menu:"Configuraci\u00f3n de corrector ortogr\u00e1fico",ignore_word:"Ignorar verba",ignore_words:"Ignorar todo",langs:"Idiomas",wait:"Agarde...",sug:"Suxerencias",no_sug:"Sen suxerencias",no_mpell:"Non se atoparon erros."},pagebreak:{desc:"Insertar fin de p\u00e1xina"},advlist:{types:"Types",def:"Default",lower_alpha:"Lower alpha",lower_greek:"Lower greek",lower_roman:"Lower roman",upper_alpha:"Upper alpha",upper_roman:"Upper roman",circle:"Circle",disc:"Disc",square:"Square"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/he.js b/js/tiny_mce/langs/he.js new file mode 100755 index 000000000..b3d6a0cbe --- /dev/null +++ b/js/tiny_mce/langs/he.js @@ -0,0 +1 @@ +tinyMCE.addI18n({he:{common:{more_colors:"\u05e2\u05d5\u05d3 \u05e6\u05d1\u05e2\u05d9\u05dd",invalid_data:"\u05e9\u05d2\u05d9\u05d0\u05d4: \u05d4\u05d5\u05e7\u05dc\u05d3 \u05de\u05d9\u05d3\u05e2 \u05dc\u05d0 \u05ea\u05e7\u05e0\u05d9. \u05d4\u05de\u05d9\u05d3\u05e2 \u05e1\u05d5\u05de\u05df \u05d1\u05d0\u05d3\u05d5\u05dd.",popup_blocked:"\u05d7\u05d5\u05e1\u05dd \u05e4\u05e8\u05d9\u05d8\u05d9\u05dd \u05de\u05d5\u05e7\u05e4\u05e6\u05d9\u05dd \u05de\u05e0\u05e2 \u05de\u05d7\u05dc\u05d5\u05df \u05d7\u05e9\u05d5\u05d1 \u05de\u05dc\u05d4\u05e4\u05ea\u05d7,\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05db\u05dc\u05d9 \u05d6\u05d4 \u05e2\u05dc\u05d9\u05da \u05dc\u05d1\u05d8\u05dc \u05d0\u05ea \u05d7\u05d5\u05e1\u05dd \u05d4\u05e4\u05e8\u05d9\u05d8\u05d9\u05dd",clipboard_no_support:"\u05db\u05e8\u05d2\u05e2 \u05dc\u05d0 \u05e0\u05ea\u05de\u05da \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da. \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9 \u05d4\u05de\u05e7\u05dc\u05d3\u05ea.",clipboard_msg:"\n \u05d4\u05e2\u05ea\u05e7\u05d4/\u05d2\u05d6\u05d9\u05e8\u05d4 \u05d5\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d0\u05d9\u05e0\u05dd \u05d6\u05de\u05d9\u05e0\u05d9\u05dd \u05d1 Mozilla \u05d5\u05d1-Firefox.\n \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e7\u05d1\u05dc \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3 \u05e2\u05dc \u05d4\u05e0\u05d5\u05e9\u05d0?\n ",not_set:"-- \u05dc\u05d0 \u05d4\u05d5\u05d2\u05d3\u05e8 --",class_name:"\u05de\u05d7\u05dc\u05e7\u05d4",browse:"\u05e2\u05d9\u05d5\u05df",close:"\u05e1\u05d2\u05d9\u05e8\u05d4",cancel:"\u05d1\u05d9\u05d8\u05d5\u05dc",update:"\u05e2\u05d3\u05db\u05d5\u05df",insert:"\u05d4\u05d5\u05e1\u05e4\u05d4",apply:"\u05d0\u05d9\u05e9\u05d5\u05e8",edit_confirm:"\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e2\u05d5\u05e8\u05da \u05d4\u05de\u05ea\u05e7\u05d3\u05dd?"},contextmenu:{full:"\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd",right:"\u05d9\u05de\u05d9\u05df",center:"\u05d0\u05de\u05e6\u05e2",left:"\u05e9\u05de\u05d0\u05dc",align:"\u05d9\u05d9\u05e9\u05d5\u05e8"},insertdatetime:{day_short:"\u05d9\u05d5\u05dd \u05d0\',\u05d9\u05d5\u05dd \u05d1\',\u05d9\u05d5\u05dd \u05d2\',\u05d9\u05d5\u05dd \u05d3\',\u05d9\u05d5\u05dd \u05d4\',\u05d9\u05d5\u05dd \u05d5\',\u05e9\u05d1\u05ea,\u05d9\u05d5\u05dd \u05d0\'",day_long:"\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df,\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9,\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9,\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9,\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9,\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9,\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea,\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df",months_short:"\u05d9\u05e0\u05d5\u05d0\u05e8,\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8,\u05de\u05e8\u05e5,\u05d0\u05e4\u05e8\u05d9\u05dc,\u05de\u05d0\u05d9,\u05d9\u05d5\u05e0\u05e2,\u05d9\u05d5\u05dc\u05d9,\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8,\u05e1\u05e4\u05d8\u05de\u05d1\u05e8,\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8,\u05e0\u05d5\u05d1\u05de\u05d1\u05e8,\u05d3\u05e6\u05de\u05d1\u05e8",months_long:"\u05d9\u05e0\u05d5\u05d0\u05e8,\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8,\u05de\u05e8\u05e5,\u05d0\u05e4\u05e8\u05d9\u05dc,\u05de\u05d0\u05d9,\u05d9\u05d5\u05e0\u05e2,\u05d9\u05d5\u05dc\u05d9,\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8,\u05e1\u05e4\u05d8\u05de\u05d1\u05e8,\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8,\u05e0\u05d5\u05d1\u05de\u05d1\u05e8,\u05d3\u05e6\u05de\u05d1\u05e8",inserttime_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05d6\u05de\u05df",insertdate_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05ea\u05d0\u05e8\u05d9\u05da",time_fmt:"%H:%M:%S",date_fmt:"%d-%m-%Y"},print:{print_desc:"\u05d4\u05d3\u05e4\u05e1\u05d4"},preview:{preview_desc:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4"},directionality:{rtl_desc:"\u05db\u05d9\u05d5\u05d5\u05df \u05d8\u05e7\u05e1\u05d8 \u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr_desc:"\u05db\u05d9\u05d5\u05d5\u05df \u05d8\u05e7\u05e1\u05d8 \u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df"},layer:{content:"\u05e9\u05db\u05d1\u05d4 \u05d7\u05d3\u05e9\u05d4...",absolute_desc:"\u05d1\u05d7\u05d9\u05e8\u05ea \u05de\u05d9\u05e7\u05d5\u05dd \u05de\u05d5\u05d7\u05dc\u05d8",backward_desc:"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05d0\u05d7\u05d5\u05e8\u05d4",forward_desc:"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05e7\u05d3\u05d9\u05de\u05d4",insertlayer_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e9\u05db\u05d1\u05d4 \u05d7\u05d3\u05e9\u05d4"},save:{save_desc:"\u05e9\u05de\u05d9\u05e8\u05d4",cancel_desc:"\u05d1\u05d9\u05d8\u05d5\u05dc \u05db\u05dc \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05dd"},nonbreaking:{nonbreaking_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e8\u05d5\u05d5\u05d7"},iespell:{download:" \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 ieSpell. \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05ea\u05e7\u05d9\u05df?",iespell_desc:"\u05d1\u05d3\u05d9\u05e7\u05ea \u05d0\u05d9\u05d5\u05ea \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea"},advhr:{advhr_desc:"\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",delta_height:"",delta_width:""},emotions:{emotions_desc:"\u05e1\u05de\u05d9\u05d9\u05dc\u05d9\u05dd",delta_height:"",delta_width:""},searchreplace:{replace_desc:"\u05d4\u05d7\u05dc\u05e4\u05d4",search_desc:"\u05d7\u05d9\u05e4\u05d5\u05e9",delta_width:"",delta_height:""},advimage:{image_desc:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",delta_width:"",delta_height:""},advlink:{link_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"\u05d4\u05db\u05e0\u05e1/\u05e2\u05e8\u05d5\u05da \u05ea\u05db\u05d5\u05e0\u05d5\u05ea",ins_desc:"\u05d4\u05db\u05e0\u05e1\u05d4",del_desc:"\u05de\u05d7\u05d9\u05e7\u05d4",acronym_desc:"\u05e8\u05d0\u05e9\u05d9 \u05ea\u05d9\u05d1\u05d5\u05ea",abbr_desc:"\u05e7\u05d9\u05e6\u05d5\u05e8",cite_desc:"\u05e6\u05d9\u05d8\u05d5\u05d8",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"\u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea CSS",delta_height:"",delta_width:""},paste:{plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode.",plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.",selectall_desc:"\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc",paste_word_desc:"\u05d4\u05d3\u05d1\u05e7\u05d4 \u05de-WORD",paste_text_desc:"\u05d4\u05d3\u05d1\u05e7\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8 \u05d1\u05dc\u05d1\u05d3"},paste_dlg:{word_title:"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V.",text_linebreaks:"\u05d4\u05e9\u05d0\u05e8 \u05d0\u05ea \u05e9\u05d5\u05e8\u05d5\u05ea \u05d4\u05e8\u05d5\u05d5\u05d7",text_title:"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V."},table:{cell:"\u05ea\u05d0",col:"\u05e2\u05de\u05d5\u05d3\u05d4",row:"\u05e9\u05d5\u05e8\u05d4",del:"\u05de\u05d7\u05d9\u05e7\u05ea \u05d8\u05d1\u05dc\u05d4",copy_row_desc:"\u05d4\u05e2\u05ea\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4",cut_row_desc:"\u05d2\u05d6\u05d9\u05e8\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4",paste_row_after_desc:"\u05d4\u05d3\u05d1\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4 \u05d0\u05d7\u05e8\u05d9",paste_row_before_desc:"\u05d4\u05d3\u05d1\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4 \u05dc\u05e4\u05e0\u05d9",props_desc:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d4\u05d8\u05d1\u05dc\u05d4",cell_desc:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05ea\u05d0 \u05d1\u05d8\u05d1\u05dc\u05d4",row_desc:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4",merge_cells_desc:"\u05d0\u05d9\u05d7\u05d5\u05d3 \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4",split_cells_desc:"\u05e4\u05d9\u05e6\u05d5\u05dc \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4",delete_col_desc:"\u05d4\u05e1\u05e8\u05ea \u05e2\u05de\u05d5\u05d3\u05d4",col_after_desc:"\u05d4\u05db\u05e0\u05e1\u05ea \u05e2\u05de\u05d5\u05d3\u05d4 \u05de\u05e9\u05de\u05d0\u05dc",col_before_desc:"\u05d4\u05db\u05e0\u05e1\u05ea \u05e2\u05de\u05d5\u05d3\u05d4 \u05de\u05d9\u05de\u05d9\u05df",delete_row_desc:"\u05de\u05d7\u05d9\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4",row_after_desc:"\u05d4\u05db\u05e0\u05e1\u05ea \u05e9\u05d5\u05e8\u05d4 \u05de\u05ea\u05d7\u05ea",row_before_desc:"\u05d4\u05db\u05e0\u05e1\u05ea \u05e9\u05d5\u05e8\u05d4 \u05de\u05e2\u05dc",desc:"\u05d4\u05db\u05e0\u05e1\u05ea \u05d0\u05d5 \u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05d1\u05dc\u05d4",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"\u05d0\u05dd \u05ea\u05e9\u05d7\u05d6\u05e8 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05df \u05dc\u05d2\u05e8\u05d9\u05e1\u05d0 \u05d4\u05e9\u05de\u05d5\u05e8\u05d4, \u05ea\u05d0\u05d1\u05d3 \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d5\u05db\u05df \u05e9\u05e0\u05de\u05e6\u05d0 \u05db\u05e2\u05ea \u05d1\u05e2\u05d5\u05e8\u05da. \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05e8\u05d5\u05e6\u05d4 \u05dc\u05e9\u05d7\u05d6\u05e8 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05df \u05dc\u05d2\u05d9\u05e8\u05e1\u05d0 \u05d4\u05e9\u05de\u05d5\u05e8\u05d4?.",restore_content:"\u05e9\u05d7\u05d6\u05d5\u05e8 \u05dc\u05d2\u05d9\u05e8\u05e1\u05d0 \u05e9\u05de\u05d5\u05e8\u05d4 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea",unload_msg:"\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05e9\u05d1\u05d9\u05e6\u05e2\u05ea \u05dc\u05d0 \u05d9\u05e9\u05de\u05e8\u05d5 \u05d0\u05dd \u05ea\u05e2\u05d1\u05d5\u05e8 \u05de\u05d3\u05e3 \u05d6\u05d4"},fullscreen:{desc:"\u05de\u05e2\u05d1\u05e8 \u05dc\u05de\u05e1\u05da \u05de\u05dc\u05d0/\u05d7\u05dc\u05e7\u05d9"},media:{edit:"\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df",desc:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df",delta_height:"",delta_width:""},fullpage:{desc:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e2\u05de\u05d5\u05d3",delta_width:"",delta_height:""},template:{desc:"Insert predefined template content"},visualchars:{desc:"\u05d4\u05e6\u05d2/\u05d4\u05e1\u05ea\u05e8 \u05ea\u05d5\u05d5\u05d9 \u05d1\u05e7\u05e8\u05d4"},spellchecker:{desc:"\u05d4\u05e4\u05e2\u05dc\u05ea \u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea",menu:"\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea",ignore_word:"\u05dc\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05de\u05d9\u05dc\u05d4",ignore_words:"\u05dc\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05db\u05dc",langs:"\u05e9\u05e4\u05d5\u05ea",wait:"\u05e0\u05d0 \u05dc\u05d4\u05de\u05ea\u05d9\u05df..",sug:"\u05d4\u05e6\u05e2\u05d5\u05ea",no_sug:"\u05d0\u05d9\u05df \u05d4\u05e6\u05e2\u05d5\u05ea",no_mpell:"\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05e9\u05d2\u05d9\u05d0\u05d5\u05ea \u05d0\u05d9\u05d5\u05ea"},pagebreak:{desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05de\u05e2\u05d1\u05e8 \u05d3\u05e3"},advlist:{types:"\u05e1\u05d5\u05d2\u05d9\u05dd",def:"\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",lower_alpha:"Lower alpha",lower_greek:"Lower greek",lower_roman:"Lower roman",upper_alpha:"Upper alpha",upper_roman:"Upper roman",circle:"\u05e2\u05d2\u05d5\u05dc",disc:"\u05d3\u05d9\u05e1\u05e7",square:"\u05de\u05e8\u05d5\u05d1\u05e2"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/hu.js b/js/tiny_mce/langs/hu.js new file mode 100755 index 000000000..833a7953f --- /dev/null +++ b/js/tiny_mce/langs/hu.js @@ -0,0 +1 @@ +tinyMCE.addI18n({hu:{common:{"more_colors":"T\u00f6bb sz\u00edn","invalid_data":"Hiba: \u00c9rv\u00e9nytelen adatok, pirossal jel\u00f6lve.","popup_blocked":"A felugr\u00f3 ablakok tilt\u00e1sa miatt nem siker\u00fclt megjelen\u00edteni egy, az alkalmaz\u00e1shoz sz\u00fcks\u00e9ges ablakot. Enged\u00e9lyezze a b\u00f6ng\u00e9sz\u0151j\u00e9ben a felugr\u00f3 ablakokat, hogy minden funkci\u00f3t haszn\u00e1lhasson.","clipboard_no_support":"Jelenleg nem t\u00e1mogatja a b\u00f6ng\u00e9sz\u0151je, haszn\u00e1lja a billenty\u0171kombin\u00e1ci\u00f3kat helyette.","clipboard_msg":"A M\u00e1sol\u00e1s/Kiv\u00e1g\u00e1s/Besz\u00far\u00e1s funkci\u00f3k nem \u00e9rhet\u0151ek el Mozilla \u00e9s Firefox alatt.\\nK\u00edv\u00e1n t\u00f6bbet tudni err\u0151l a t\u00e9m\u00e1r\u00f3l?","not_set":"-- Nincs megadva --","class_name":"Oszt\u00e1ly",browse:"Tall\u00f3z\u00e1s",close:"Bez\u00e1r\u00e1s",cancel:"M\u00e9gsem",update:"Friss\u00edt\u00e9s",insert:"Besz\u00far\u00e1s",apply:"Alkalmaz\u00e1s","edit_confirm":"Haszn\u00e1lni k\u00edv\u00e1nja a sz\u00f6vegszerkeszt\u0151 m\u00f3dot ebben a sz\u00f6vegdobozban?"},contextmenu:{full:"Sorkiz\u00e1r\u00e1s",right:"Jobbra",center:"K\u00f6z\u00e9pre",left:"Balra",align:"Igaz\u00edt\u00e1s"},insertdatetime:{"day_short":"V,H,K,Sze,Cs,P,Szo,V","day_long":"vas\u00e1rnap,h\u00e9tf\u0151,kedd,szerda,cs\u00fct\u00f6rt\u00f6k,p\u00e9ntek,szombat,vas\u00e1rnap","months_short":"jan,feb,m\u00e1r,\u00e1pr,m\u00e1j,j\u00fan,j\u00fal,aug,szept,okt,nov,dec","months_long":"janu\u00e1r,febru\u00e1r,m\u00e1rcius,\u00e1prilis,m\u00e1jus,j\u00fanius,j\u00falius,augusztus,szeptember,okt\u00f3ber,november,december","inserttime_desc":"Id\u0151 besz\u00far\u00e1sa","insertdate_desc":"D\u00e1tum besz\u00far\u00e1sa","time_fmt":"%H:%M:%S","date_fmt":"%Y.%m.%d."},print:{"print_desc":"Nyomtat\u00e1s"},preview:{"preview_desc":"El\u0151n\u00e9zet"},directionality:{"rtl_desc":"Jobbr\u00f3l balra","ltr_desc":"Balr\u00f3l jobbra"},layer:{content:"\u00daj r\u00e9teg...","absolute_desc":"Abszol\u00fat poz\u00edci\u00f3 ki-/bekapcsol\u00e1sa","backward_desc":"Mozgat\u00e1s h\u00e1tra","forward_desc":"Mozgat\u00e1s el\u0151re","insertlayer_desc":"\u00daj r\u00e9teg besz\u00far\u00e1sa"},save:{"save_desc":"Ment\u00e9s","cancel_desc":"\u00d6sszes v\u00e1ltoz\u00e1s visszavon\u00e1sa"},nonbreaking:{"nonbreaking_desc":"Nemsort\u00f6r\u0151 sz\u00f3k\u00f6z besz\u00far\u00e1sa"},iespell:{download:"ieSpell nem tal\u00e1lhat\u00f3. Telep\u00edti most?","iespell_desc":"Helyes\u00edr\u00e1s-ellen\u0151rz\u00e9s futtat\u00e1sa"},advhr:{"advhr_desc":"V\u00edzszintes vonal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Hangulatjelek","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Keres\u00e9s/Csere","search_desc":"Keres\u00e9s","delta_width":"","delta_height":""},advimage:{"image_desc":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","delta_width":"","delta_height":""},advlink:{"link_desc":"Link besz\u00far\u00e1sa/szerkeszt\u00e9s","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Tulajdons\u00e1gok besz\u00far\u00e1sa/szerkeszt\u00e9se","ins_desc":"Besz\u00fart","del_desc":"T\u00f6r\u00f6lt","acronym_desc":"Bet\u0171sz\u00f3","abbr_desc":"R\u00f6vid\u00edt\u00e9s","cite_desc":"Id\u00e9zet","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS st\u00edlus szerkeszt\u00e9se","delta_height":"","delta_width":""},paste:{"plaintext_mode":"A besz\u00far\u00e1s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban van. Kattintson ide \u00fajra ezen m\u00f3d ki/be kapcsol\u00e1s\u00e1hoz.","plaintext_mode_sticky":"A besz\u00far\u00e1s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban van. Kattintson ide \u00fajra ezen m\u00f3d ki/be kapcsol\u00e1s\u00e1hoz. Miut\u00e1n besz\u00far valamit, visszaker\u00fcl norm\u00e1l m\u00f3dba.","selectall_desc":"Mindent kijel\u00f6l","paste_word_desc":"Besz\u00far\u00e1s Wordb\u0151l","paste_text_desc":"Besz\u00far\u00e1s sz\u00f6vegk\u00e9nt"},"paste_dlg":{"word_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez.","text_linebreaks":"Sort\u00f6r\u00e9sek megtart\u00e1sa","text_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez."},table:{cell:"Cella",col:"Oszlop",row:"Sor",del:"T\u00e1bl\u00e1zat t\u00f6rl\u00e9se","copy_row_desc":"Sor m\u00e1sol\u00e1sa","cut_row_desc":"Sor kiv\u00e1g\u00e1sa","paste_row_after_desc":"Sor bem\u00e1sol\u00e1sa ut\u00e1na","paste_row_before_desc":"Sor bem\u00e1sol\u00e1sa el\u00e9","props_desc":"T\u00e1bl\u00e1zat tulajdons\u00e1gai","cell_desc":"Cella tulajdons\u00e1gai","row_desc":"Sor tulajdons\u00e1gai","merge_cells_desc":"Cell\u00e1k \u00f6sszevon\u00e1sa","split_cells_desc":"Cell\u00e1k feloszt\u00e1sa","delete_col_desc":"Oszlop t\u00f6rl\u00e9se","col_after_desc":"Oszlop besz\u00far\u00e1sa ut\u00e1na","col_before_desc":"Oszlop besz\u00far\u00e1sa el\u00e9","delete_row_desc":"Sor t\u00f6rl\u00e9se","row_after_desc":"Sor besz\u00far\u00e1sa ut\u00e1na","row_before_desc":"Sor besz\u00far\u00e1sa el\u00e9",desc:"T\u00e1bl\u00e1zat besz\u00far\u00e1sa/szerkeszt\u00e9se","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Ha visszat\u00f6lti a mentett be\u00e1ll\u00edt\u00e1sokat, a jelenlegi \u00e1llapot elv\u00e9sz.\\n\\nBiztosan visszat\u00f6lti a mentett \u00e1llapotot?.","restore_content":"Automatikus ment\u00e9s bet\u00f6lt\u00e9se.","unload_msg":"A m\u00f3dos\u00edt\u00e1sok nem lesznek mentve, ha elhagyja az oldalt."},fullscreen:{desc:"Teljesk\u00e9perny\u0151s m\u00f3d ki-/bekapcsol\u00e1sa"},media:{edit:"Be\u00e1gyazott m\u00e9dia szerkeszt\u00e9se",desc:"Be\u00e1gyazott m\u00e9dia besz\u00far\u00e1sa/szerkeszt\u00e9se","delta_height":"","delta_width":""},fullpage:{desc:"Dokumentum tulajdons\u00e1gai","delta_width":"","delta_height":""},template:{desc:"Sablon beilleszt\u00e9se"},visualchars:{desc:"Vizu\u00e1lis vez\u00e9rl\u0151karakterek be/ki."},spellchecker:{desc:"Helyes\u00edr\u00e1s-ellen\u0151rz\u0151 ki-/bekapcsol\u00e1sa",menu:"Helyes\u00edr\u00e1s-ellen\u0151rz\u0151 tulajdons\u00e1gai","ignore_word":"Sz\u00f3 kihagy\u00e1sa","ignore_words":"Mindet kihagy",langs:"Nyelvek",wait:"K\u00e9rem, v\u00e1rjon...",sug:"Aj\u00e1nl\u00e1sok","no_sug":"Nincs aj\u00e1nl\u00e1s","no_mpell":"Nem tal\u00e1ltam helyes\u00edr\u00e1si hib\u00e1t."},pagebreak:{desc:"Oldalt\u00f6r\u00e9s besz\u00far\u00e1sa."},advlist:{types:"T\u00edpusok",def:"Alap\u00e9rtelmezett","lower_alpha":"Kisbet\u0171s abc","lower_greek":"Kisbet\u0171s g\u00f6r\u00f6g","lower_roman":"Lisbet\u0171s r\u00f3mai","upper_alpha":"Nagybet\u0171s ABC","upper_roman":"Nagybet\u0171s r\u00f3mai",circle:"K\u00f6r",disc:"Lemez",square:"N\u00e9gyzet"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/id.js b/js/tiny_mce/langs/id.js new file mode 100755 index 000000000..e3a97dfe0 --- /dev/null +++ b/js/tiny_mce/langs/id.js @@ -0,0 +1 @@ +tinyMCE.addI18n({id:{common:{more_colors:"More colors",invalid_data:"Error: nilai invalid, ditandai dengan dengan warna merah",popup_blocked:"Maaf, popup-blocker anda telah menonaktifkan jendela aplikasi yang menyediakan fungsionalitas. Nonaktifkan popup-blocker untuk sepenuhnya memanfaatkan alat ini.",clipboard_no_support:"Tidak didukung Browser, gunakan shortcut dari keyboard.",clipboard_msg:"Copy/Cut/Paste tidak tersedia pada Mozilla dan Firefox.\\nButuh info selengkapnya?",not_set:"-- Not set --",class_name:"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply",edit_confirm:"Gunakan mode WYSIWYG untuk textarea ini?"},contextmenu:{full:"Penuh",right:"Kanan",center:"Tengah",left:"Kiri",align:"Alignment"},insertdatetime:{day_short:"Min,Sen,Sel,Rab,Kam,Jum,Sab,Min",day_long:"Minggu,Senin,Selasa,Rabu,Kamis,Jumat,Sabtu,Minggu",months_short:"Jan,Feb,Mar,Apr,Mei,Jun,Jul,Ags,Sep,Okt,Nov,Des",months_long:"Januari,Februari,Maren,April,Mei,Juni,Juli,Agustus,September,Oktober,November,Desember",inserttime_desc:"sisipkan waktu",insertdate_desc:"sisipkan tanggal",time_fmt:"%H:%M:%S",date_fmt:"%Y-%m-%d"},print:{print_desc:"Cetak"},preview:{preview_desc:"Preview"},directionality:{rtl_desc:"Arah kanan ke kiri",ltr_desc:"Arah kiri ke kanan"},layer:{content:"Layer baru...",absolute_desc:"Beralih posisi absolut",backward_desc:"Pindah ke belakang",forward_desc:"Pindah ke depan",insertlayer_desc:"sisipkan layer Baru"},save:{save_desc:"Simpan",cancel_desc:"Batalkan semua perubahan"},nonbreaking:{nonbreaking_desc:"sisipkan karakter non-breaking space"},iespell:{download:"ieSpell tidak terdeteksi. Instal sekarang?",iespell_desc:"Jalankan spell checking"},advhr:{advhr_desc:"Horizontal rule",delta_height:"",delta_width:""},emotions:{emotions_desc:"Emotions",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Cari/Ganti",search_desc:"Cari",delta_width:"",delta_height:""},advimage:{image_desc:"sisipkan/Ubah Gambar",delta_width:"",delta_height:""},advlink:{link_desc:"Sisipkan/Ubah link",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Sisip/Ubah Atribut",ins_desc:"Penyisipan",del_desc:"Penghapusan",acronym_desc:"Akronim",abbr_desc:"Singkatan/Kependekan Kata",cite_desc:"Kutipan",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Ubah CSS Style",delta_height:"",delta_width:""},paste:{selectall_desc:"Select All",paste_word_desc:"Paste from Word",paste_text_desc:"Paste as Plain Text",plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode.",plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},paste_dlg:{word_title:"Gunakan CTRL+V pada keyboard untuk paste.",text_linebreaks:"Keep linebreaks",text_title:"Gunakan CTRL+V pada keyboard untuk paste."},table:{cell:"Cell",col:"Column",row:"Row",del:"Hapus Tabel",copy_row_desc:"Copy row tabel",cut_row_desc:"Cut row tabel",paste_row_after_desc:"Paste row tabel sesudah",paste_row_before_desc:"Paste row tabel sebelum",props_desc:"Properti tabel",cell_desc:"Properti cell tabel",row_desc:"Properti row tabel",merge_cells_desc:"Merge cell tabel",split_cells_desc:"Pisahkan cell tabel yang di-merge",delete_col_desc:"Hapus column",col_after_desc:"Sisipkan column setelah",col_before_desc:"Sisipkan column sebelum",delete_row_desc:"Hapus row",row_after_desc:"Sisipkan row sesudah",row_before_desc:"Sisipkan row sebelum",desc:"Sisipkan tabel baru",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{unload_msg:"Perubahan yang dilakukan akan hilang jika Anda pindah dari halaman ini.",warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\\n\\nAre you sure you want to restore the saved content?.",restore_content:"Restore auto-saved content."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media",delta_height:"",delta_width:""},fullpage:{desc:"Properti Dokumen",delta_width:"",delta_height:""},template:{desc:"Menyisipkan template standar isi"},visualchars:{desc:"Pengendalian visual karakter on/off"},spellchecker:{desc:"Toggle spellchecker",menu:"Pengaturan Spellchecker ",ignore_word:"Abaikan kata",ignore_words:"Abaikan semua",langs:"Bahasa",wait:"Harap tunggu...",sug:"Saran",no_sug:"Tidak ada saran",no_mpell:"Tidak ada misspellings ditemukan."},pagebreak:{desc:"Sisipkan page break."},advlist:{types:"Types",def:"Default",lower_alpha:"Lower alpha",lower_greek:"Lower greek",lower_roman:"Lower roman",upper_alpha:"Upper alpha",upper_roman:"Upper roman",circle:"Circle",disc:"Disc",square:"Square"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/it.js b/js/tiny_mce/langs/it.js new file mode 100755 index 000000000..17c2117f8 --- /dev/null +++ b/js/tiny_mce/langs/it.js @@ -0,0 +1 @@ +tinyMCE.addI18n({it:{common:{more_colors:"Colori aggiuntivi",invalid_data:"Errore: valori inseriti non validi, sono marcati in rosso.",popup_blocked:"Spiacente, ma il blocco popup ha disabilitato una finestra che fornisce funzionalit\u00e0 dell\'applicazione. Si deve disabilitare il blocco popup per questo sito per poter utlizzare appieno questo strumento.",clipboard_no_support:"Attualmente non supportato dal browser in uso, usare le scorciatoie da tastiera.",clipboard_msg:"Copia/Taglia/Incolla non \u00e8 disponibile in Mozilla e Firefox.\\nSi desidera avere maggiori informazioni su questo problema?",not_set:"-- Non impostato --",class_name:"Classe",browse:"Sfoglia",close:"Chiudi",cancel:"Annulla",update:"Aggiorna",insert:"Inserisci",apply:"Applica",edit_confirm:"Usare la modalit\u00e0 WYSIWYG per questa textarea?"},contextmenu:{full:"Giustifica",right:"Allinea a destra",center:"Centra",left:"Allinea a sinistra",align:"Allineamento"},insertdatetime:{day_short:"Dom,Lun,Mar,Mer,Gio,Ven,Sab,Dom",day_long:"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato,Domenica",months_short:"Gen,Feb,Mar,Apr,Mag,Giu,Lug,Ago,Set,Ott,Nov,Dic",months_long:"Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre",inserttime_desc:"Inserisci ora",insertdate_desc:"Inserisci data",time_fmt:"%H:%M:%S",date_fmt:"%Y-%m-%d"},print:{print_desc:"Stampa"},preview:{preview_desc:"Anteprima"},directionality:{rtl_desc:"Direzione da destra a sinistra",ltr_desc:"Direzione da sinistra a destra"},layer:{content:"Nuovo layer...",absolute_desc:"Attiva/Disattiva posizionamento assoluto",backward_desc:"Porta in sfondo",forward_desc:"Porta in rilievo",insertlayer_desc:"Inserisci nuovo layer"},save:{save_desc:"Salva",cancel_desc:"Cancella tutte le modifiche"},nonbreaking:{nonbreaking_desc:"Inserisci uno spazio"},iespell:{download:"ieSpell non rilevato. Installarlo ora?",iespell_desc:"Esegui controllo ortografico"},advhr:{advhr_desc:"Riga orizzontale",delta_height:"",delta_width:""},emotions:{emotions_desc:"Faccine",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Trova/Sostituisci",search_desc:"Trova",delta_width:"",delta_height:""},advimage:{image_desc:"Inserisci/modifica immagine",delta_width:"",delta_height:""},advlink:{link_desc:"Inserisci/modifica collegamento",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Inserisci/modifica attributi",ins_desc:"Inserimento",del_desc:"Cancellamento",acronym_desc:"Acronimo",abbr_desc:"Abbreviazione",cite_desc:"Citazione",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Modifica stile CSS",delta_height:"",delta_width:""},paste:{plaintext_mode:"Incolla adesso e in modalit\u00e0 testo. Clicca nuovamente per tornare alla modalit\u00e0 normale.",plaintext_mode_sticky:"Incolla adesso e in modalit\u00e0 testo. Clicca nuovamente per tornare alla modalit\u00e0 normale. Dopo che avrai incollato qualcosa tornerai alla modalit\u00e0 normale",selectall_desc:"Seleziona tutto",paste_word_desc:"Incolla da Word",paste_text_desc:"Incolla come testo semplice"},paste_dlg:{word_title:"Premere CTRL+V sulla tastiera per incollare il testo nella finestra.",text_linebreaks:"Mantieni interruzioni di riga",text_title:"Premere CTRL+V sulla tastiera per incollare il testo nella finestra."},table:{cell:"Cella",col:"Colonna",row:"Riga",del:"Elimina tabella",copy_row_desc:"Copia riga",cut_row_desc:"Taglia riga",paste_row_after_desc:"Incolla riga dopo",paste_row_before_desc:"Incolla riga prima",props_desc:"Propriet\u00e0 tabella",cell_desc:"Propriet\u00e0 cella",row_desc:"Propriet\u00e0 riga",merge_cells_desc:"Unisci celle",split_cells_desc:"Separa celle",delete_col_desc:"Elimina colonna",col_after_desc:"Inserisci colonna dopo",col_before_desc:"Inserisci colonna prima",delete_row_desc:"Elimina riga",row_after_desc:"Inserisci riga dopo",row_before_desc:"Inserisci riga prima",desc:"Inserisci una nuova tabella",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"Se ripristini i dati salvati automaticamente perderai i dati attuali dell\'editor\\n\\nSei sicuro di voler ripristinare i dati?.",restore_content:"Ripristina i dati salvati automaticamente",unload_msg:"I cambiamenti effettuati saranno persi se si abbandona la pagina corrente."},fullscreen:{desc:"Attiva/disattiva modalit\u00e0 a tutto schermo"},media:{edit:"Modifica file multimediale",desc:"Inserisci/modifica file multimediale",delta_height:"",delta_width:""},fullpage:{desc:"Propriet\u00e0 Documento",delta_width:"",delta_height:""},template:{desc:"Inserisci contenuto da modello predefinito"},visualchars:{desc:"Attiva/disattiva caratteri di controllo visuale."},spellchecker:{desc:"Attiva/disattiva controllo ortografico",menu:"Impostazioni controllo ortografico",ignore_word:"Ignora parola",ignore_words:"Ignora tutto",langs:"Lingue",wait:"Attendere prego...",sug:"Suggerimenti",no_sug:"Nessun suggerimento",no_mpell:"Nessun errore rilevato."},pagebreak:{desc:"Inserisci intterruzione di pagina."},advlist:{types:"Tipi",def:"Default",lower_alpha:"Minuscolo alfanumerico",lower_greek:"Minuscolo lettera greca",lower_roman:"Minuscolo lettere romane",upper_alpha:"Maiuscolo alfanumerico",upper_roman:"Maiuscolo lettere romane",circle:"Cerchio",disc:"Punto",square:"Quadrato"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/lt.js b/js/tiny_mce/langs/lt.js new file mode 100755 index 000000000..6a28fdad8 --- /dev/null +++ b/js/tiny_mce/langs/lt.js @@ -0,0 +1 @@ +tinyMCE.addI18n({lt:{common:{more_colors:"Daugiau spalv\u0173",invalid_data:"Klaida: Blogai \u012fvestos reik\u0161m\u0117s, kurios pa\u017eym\u0117tos raudonai.",popup_blocked:"Atsipra\u0161ome, ta\u010diau pasteb\u0117jome, kad j\u016bs\u0173 i\u0161kylan\u010di\u0173 lang\u0173 blokavimo programa i\u0161jung\u0117 lang\u0105, kuris teikia aplikacijai funkcionalum\u0105. Tur\u0117tum\u0117te atjungti i\u0161kylan\u010di\u0173 lang\u0173 blokavim\u0105 \u0161iam tinklalapiui, kad i\u0161naudotum\u0117te visas galimybes.",clipboard_no_support:"\u0160i nar\u0161ykl\u0117 nepalaiko \u0161io veikimo, tod\u0117l naudokite klaviat\u016bros spar\u010diuosius klavi\u0161us.",clipboard_msg:"Kopijavimas/i\u0161kirpimas/\u012fd\u0117jimas paspaudus \u0161\u012f mygtuk\u0105 negalimas Mozilla ir Firefox nar\u0161ykl\u0117se.\\nNukopijuoti galima paspaudus: Ctrl + C, i\u0161kirpti: Ctrl + X, \u012fd\u0117ti: Ctrl + V.\\nAr norite daugiau informacijos apie \u0161i\u0105 problem\u0105?",not_set:"-- Nenurodyta --",class_name:"Klas\u0117",browse:"Nar\u0161yti",close:"U\u017everti",cancel:"Atsisakyti",update:"Atnaujinti",insert:"\u012eterpti",apply:"Taikyti",edit_confirm:"Ar norite naudoti tekst\u0173 redaktoriaus re\u017eim\u0105 \u0161iam teksto redagavimo langui?"},contextmenu:{full:"I\u0161 abiej\u0173 pusi\u0173",right:"De\u0161in\u0117je",center:"Centre",left:"Kair\u0117je",align:"Lygiavimas"},insertdatetime:{day_short:"Sekm,Pirm,Antr,Tre\u010d,Ketv,Penk,\u0160e\u0161t,Sekm",day_long:"Sekmadienis,Pirmadienis,Antradienis,Tre\u010diadienis,Ketvirtadienis,Penktadienis,\u0160e\u0161tadienis,Sekmadienis",months_short:"Sau,Vas,Kov,Bal,Geg,Bir,Lie,Rugpj,Rugs,Spa,Lapkr,Gruo",months_long:"Sausis,Vasaris,Kovas,Balandis,Gegu\u017e\u0117,Bir\u017eelis,Liepa,Rugpj\u016btis,Rugs\u0117jis,Spalis,Lapkritis,Gruodis",inserttime_desc:"\u012eterpti laik\u0105",insertdate_desc:"\u012eterpti dat\u0105",time_fmt:"%H:%M:%S",date_fmt:"%Y-%m-%d"},print:{print_desc:"Spausdinti"},preview:{preview_desc:"Per\u017ei\u016bra"},directionality:{rtl_desc:"Kryptis i\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr_desc:"Kryptis i\u0161 kair\u0117s \u012f de\u0161in\u0119"},layer:{content:"Naujas sluoksnis...",absolute_desc:"Perjungti absoliut\u0173 pozicionavim\u0105",backward_desc:"Perkelti atgal",forward_desc:"Perkelti \u012f priek\u012f",insertlayer_desc:"\u012eterpti nauj\u0105 sluoksn\u012f"},save:{save_desc:"I\u0161saugoti",cancel_desc:"Atsisakyti vis\u0173 pakeitim\u0173"},nonbreaking:{nonbreaking_desc:"\u012eterpti jungiamojo tarpo simbol\u012f"},iespell:{download:"ieSpell neaptiktas. Ar norite dabar j\u012f \u012fdiegti?",iespell_desc:"Paleisti ra\u0161ybos tikrintuv\u0119"},advhr:{delta_width:"10",advhr_desc:"Horizontali linija",delta_height:""},emotions:{emotions_desc:"Jaustukai",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Ie\u0161koti/Pakeisti",delta_width:"10",delta_height:"20",search_desc:"Ie\u0161koti"},advimage:{delta_width:"10",image_desc:"\u012eterpti/Redaguoti paveiksl\u0117l\u012f",delta_height:""},advlink:{delta_width:"10",link_desc:"\u012eterpti/Redaguoti nuorod\u0105",delta_height:""},xhtmlxtras:{attribs_delta_width:"10",ins_delta_width:"10",del_delta_width:"10",acronym_delta_width:"10",abbr_delta_width:"10",cite_delta_width:"10",attribs_desc:"\u012eterpti/Redaguoti atributus",ins_desc:"\u012eterpimas",del_desc:"Panaikinimas",acronym_desc:"Akronimas",abbr_desc:"Santrumpa",cite_desc:"Citavimas",attribs_delta_height:"",ins_delta_height:"",del_delta_height:"",acronym_delta_height:"",abbr_delta_height:"",cite_delta_height:""},style:{delta_width:"40",desc:"Redaguoti CSS stili\u0173",delta_height:""},paste:{plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode.",plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.",selectall_desc:"Visk\u0105 pa\u017eym\u0117ti",paste_word_desc:"\u012ed\u0117ti i\u0161 Word",paste_text_desc:"\u012ed\u0117ti kaip paprast\u0105 tekst\u0105"},paste_dlg:{word_title:"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105.",text_linebreaks:"Palikti eilu\u010di\u0173 l\u016b\u017eius",text_title:"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105."},table:{merge_cells_delta_width:"10",table_delta_width:"10",cellprops_delta_width:"10",rowprops_delta_width:"10",cell:"Langelis",col:"Stulpelis",row:"Eilut\u0117",del:"\u0160alinti lentel\u0119",copy_row_desc:"Kopijuoti lentel\u0117s eilut\u0119",cut_row_desc:"I\u0161kirpti lentel\u0117s eilut\u0119",paste_row_after_desc:"\u012ed\u0117ti lentel\u0117s eilut\u0119 po",paste_row_before_desc:"\u012ed\u0117ti lentel\u0117s eilut\u0119 prie\u0161",props_desc:"Lentel\u0117s nustatymai",cell_desc:"Lentel\u0117s langelio nustatymai",row_desc:"Lentel\u0117s eilut\u0117s nustatymai",merge_cells_desc:"Sujungti lentel\u0117s langelius",split_cells_desc:"Skaidyti sulietus lentel\u0117s langelius",delete_col_desc:"\u0160alinti stulpel\u012f",col_after_desc:"\u012eterpti stulpel\u012f po",col_before_desc:"\u012eterpti stulpel\u012f prie\u0161",delete_row_desc:"\u0160alinti eilut\u0119",row_after_desc:"\u012eterpti eilut\u0119 po",row_before_desc:"\u012eterpti eilut\u0119 prie\u0161",desc:"\u012eterpti/Redaguoti lentel\u0119",merge_cells_delta_height:"",table_delta_height:"",cellprops_delta_height:"",rowprops_delta_height:""},autosave:{warning_message:"Jei atstatysite i\u0161saugot\u0105 turin\u012f, prarasite esam\u0105 turin\u012f redaktoriaus lange.\\n\\nAr tikrai norite atstatyti i\u0161saugot\u0105 turin\u012f?",restore_content:"Atstatyti automati\u0161kai i\u0161saugot\u0105 turin\u012f.",unload_msg:"Visi pakeitimai bus prarasti, jei i\u0161eisite i\u0161 \u0161io puslapio."},fullscreen:{desc:"Perjungti viso ekrano re\u017eim\u0105"},media:{delta_width:"10",edit:"Redaguoti integruot\u0105 daugialyp\u0119 terp\u0119",desc:"\u012eterpti/redaguoti integruot\u0105 daugialyp\u0119 terp\u0119",delta_height:""},fullpage:{desc:"Dokumento nustatymai",delta_width:"10",delta_height:""},template:{desc:"\u012eterpti numatyt\u0105 \u0161ablono turin\u012f"},visualchars:{desc:"Vizualiniai valdymo simboliai \u012fjungti/i\u0161jungti."},spellchecker:{desc:"Perjungti ra\u0161ybos tikrintuv\u0119",menu:"Ra\u0161ybos tikrintuv\u0117s nustatymai",ignore_word:"Ignoruoti \u017eod\u012f",ignore_words:"Ignoruoti visk\u0105",langs:"Kalbos",wait:"Pra\u0161ome palaukti...",sug:"Pasi\u016blymai",no_sug:"Pasi\u016blym\u0173 nerasta",no_mpell:"Klaid\u0173 nerasta."},pagebreak:{desc:"\u012eterpti puslapio pabaigos \u017eym\u0119."},advlist:{types:"Tipai",def:"Numatytasis",lower_alpha:"Ma\u017eosiomis raid\u0117mis",lower_greek:"Ma\u017eaisiais graik\u0173",lower_roman:"Ma\u017eaisiais rom\u0117n\u0173",upper_alpha:"Did\u017eiosiomis raid\u0117mis",upper_roman:"Did\u017eiaisiais rom\u0117n\u0173",circle:"Apskritimas",disc:"Diskas",square:"Kvadratas"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/lv.js b/js/tiny_mce/langs/lv.js new file mode 100755 index 000000000..2f6e3a976 --- /dev/null +++ b/js/tiny_mce/langs/lv.js @@ -0,0 +1 @@ +tinyMCE.addI18n({lv:{common:{more_colors:"Vair\u0101k kr\u0101su",invalid_data:"K\u013c\u016bda: Ievad\u012btas neder\u012bgas v\u0113rt\u012bbas. T\u0101s ir atz\u012bm\u0113tas sarkan\u0101 kr\u0101s\u0101.",popup_blocked:"Atvainojiet, bet m\u0113s esam konstat\u0113ju\u0161i, ka J\u016bsu uzleco\u0161o logu blo\u0137\u0113t\u0101js ir atsp\u0113jojis logu, kas nodro\u0161ina programmas funkcionalit\u0101ti. Lai piln\u012bb\u0101 izmantotu \u0161o r\u012bku, Jums ir j\u0101atsl\u0113dz uzleco\u0161o logu blo\u0137\u0113tajs \u0161ai vietnei. ",clipboard_no_support:"\u0160obr\u012bd J\u016bsu p\u0101rl\u016bks neatbalsta \u0161o iesp\u0113ju, t\u0101 viet\u0101 l\u016bdzu izmantotjiet tastat\u016bras sa\u012bsin\u0101jumtausti\u0146us.",clipboard_msg:"Iesp\u0113ja Kop\u0113t/Izgriezt/Iekop\u0113t nav pieejama p\u0101rl\u016bkiem Mozilla and Firefox.\\nVai J\u016bs v\u0113laties uzzin\u0101t vair\u0101k par \u0161o probl\u0113mu?",not_set:"-- Nav nor\u0101d\u012bts --",class_name:"Klase",browse:"P\u0101rl\u016bkot",close:"Aizv\u0113rt",cancel:"Atcelt",update:"Atjaunin\u0101t",insert:"Ievietot",apply:"Apstiprin\u0101t",edit_confirm:"Vai tu v\u0113lies izmantot WYSIWYG \u0161im teksta laukam?"},contextmenu:{full:"Pilns",right:"Pa labi",center:"Centr\u0113ts",left:"Pa kreisi",align:"Novietojums"},insertdatetime:{day_short:"Sv\u0113,Pir,Otr,Tre,Cet,Pie,Ses,Sv\u0113",day_long:"Sv\u0113tdiena,Pirmdiena,Otrdiena,Tre\u0161diena,Ceturtdiena,Piektdiena,Sestdiena,Sv\u0113tdiena",months_short:"Jan,Feb,Mar,Apr,Mai,J\u016bn,J\u016bl,Aug,Sep,Okt,Nov,Dec",months_long:"Janv\u0101ris,Febru\u0101ris,Marts,Apr\u012blis,Maijs,J\u016bnijs,J\u016blijs,Augusts,Seprembris,Oktobris,Novembris,Decembris",inserttime_desc:"Ievietot laiku",insertdate_desc:"Ievietot datumu",time_fmt:"%H:%M:%S",date_fmt:"%Y-%m-%d"},print:{print_desc:"Druk\u0101t"},preview:{preview_desc:"Priek\u0161skat\u012bt"},directionality:{rtl_desc:"Virziens no lab\u0101s uz kreiso",ltr_desc:"Virziens no kreis\u0101s uz labo"},layer:{content:"Jauns sl\u0101nis...",absolute_desc:"Iestat\u012bt/Nov\u0101kt absol\u016bto novietojumu ",backward_desc:"Atpaka\u013c",forward_desc:"Uz priek\u0161u",insertlayer_desc:"Ievietot jaunu sl\u0101ni"},save:{save_desc:"Saglab\u0101t",cancel_desc:"Atcelt visas izmai\u0146as"},nonbreaking:{nonbreaking_desc:"Ievietot tuk\u0161uma simbolu"},iespell:{download:"ieSpell netika atrasts. Vai J\u016bs v\u0113laties to uzst\u0101d\u012bt?",iespell_desc:"Uzs\u0101kt pareizrakst\u012bbas p\u0101rbaudi"},advhr:{advhr_desc:"Horizont\u0101la sv\u012btra",delta_height:"",delta_width:""},emotions:{emotions_desc:"Smaidi\u0146i",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Mekl\u0113t/Aizvietot",search_desc:"Mekl\u0113t",delta_width:"",delta_height:""},advimage:{image_desc:"Ievietot/Redi\u0123\u0113t att\u0113lu",delta_width:"",delta_height:""},advlink:{link_desc:"Ievietot/Redi\u0123\u0113t saiti",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Pielikt/redi\u0123\u0113t \u012bpa\u0161\u012bbas",ins_desc:"Insertion",del_desc:"Deletion",acronym_desc:"Acronym",abbr_desc:"Sa\u012bsin\u0101jums",cite_desc:"Cit\u0101ts",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Edit CSS Style",delta_height:"",delta_width:""},paste:{selectall_desc:"Iez\u012bm\u0113t visu",paste_word_desc:"Iekop\u0113t no Word",paste_text_desc:"Iekop\u0113t ka parasto tekstu",plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode.",plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},paste_dlg:{word_title:"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101.",text_linebreaks:"Sagl\u0101b\u0101t l\u012bniju sadal\u012bt\u0101jus",text_title:"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101."},table:{cell:"Aile",col:"St\u0101bs",row:"Rinda",del:"Izdz\u0113st tabulu",copy_row_desc:"Kop\u0113t tabulas rindu",cut_row_desc:"Izgriezt tabulas rindu",paste_row_after_desc:"Ielikt tabulas rindu aiz",paste_row_before_desc:"Ielikt tabulas rindu priek\u0161\u0101",props_desc:"Tabulas \u012bpa\u0161\u012bbas",cell_desc:"Tabulas ailes \u012bpa\u0161\u012bbas",row_desc:"Tabulas rindas \u012bpa\u0161\u012bbas",merge_cells_desc:"Apvienot tabulas ailes",split_cells_desc:"Sadal\u012bt apvienotas tabules ailes",delete_col_desc:"Izdz\u0113st stabu",col_after_desc:"Ielikt jaunu stabu aiz",col_before_desc:"Ielikt jaunu stabu priek\u0161\u0101",delete_row_desc:"Izdz\u0113st rindu",row_after_desc:"Ielikt jaunu rindu aiz",row_before_desc:"Ielikt jaunu rindu priek\u0161\u0101",desc:"Ielikt jaunu tabulu",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{unload_msg:"The changes you made will be lost if you navigate away from this page.",warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\\n\\nAre you sure you want to restore the saved content?.",restore_content:"Restore auto-saved content."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media",delta_height:"",delta_width:""},fullpage:{desc:"Document properties",delta_width:"",delta_height:""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings",ignore_word:"Ignore word",ignore_words:"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions",no_sug:"No suggestions",no_mpell:"No misspellings found."},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default",lower_alpha:"Lower alpha",lower_greek:"Lower greek",lower_roman:"Lower roman",upper_alpha:"Upper alpha",upper_roman:"Upper roman",circle:"Circle",disc:"Disc",square:"Square"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/nl.js b/js/tiny_mce/langs/nl.js new file mode 100755 index 000000000..50af4b4a7 --- /dev/null +++ b/js/tiny_mce/langs/nl.js @@ -0,0 +1 @@ +tinyMCE.addI18n({nl:{common:{"more_colors":"Meer kleuren","invalid_data":"Fout: Er zijn ongeldige waardes ingevoerd, deze zijn rood gemarkeerd.","popup_blocked":"U zult uw popup-blocker tijdelijk moeten uitschakelen voor deze website om gebruik te kunnen maken van alle functies van deze teksteditor.","clipboard_no_support":"Kopi\u00ebren/knippen/plakken wordt niet ondersteund door uw browser, gebruik hiervoor de sneltoetsen.","clipboard_msg":"Kopi\u00ebren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\\nWilt u meer informatie over deze beperking?","not_set":"- Standaard -","class_name":"Klasse",browse:"Bladeren",close:"Sluiten",cancel:"Annuleren",update:"Bijwerken",insert:"Invoegen",apply:"Toepassen","edit_confirm":"Weet u zeker dat u tekst in WYSIWYG mode wilt bewerken in dit tekstveld?"},contextmenu:{full:"Uitvullen",right:"Rechts",center:"Centreren",left:"Links",align:"Uitlijning"},insertdatetime:{"day_short":"zo,ma,di,wo,do,vr,za,zo","day_long":"Zondag,Maandag,Dinsdag,Woensdag,Donderdag,Vrijdag,Zaterdag,Zondag","months_short":"Jan,Feb,Mar,Apr,Mei,Jun,Jul,Aug,Sep,Okt,Nov,Dec","months_long":"Januari,Februari,Maart,April,Mei,Juni,Juli,Augustus,September,Oktober,November,December","inserttime_desc":"Tijd invoegen","insertdate_desc":"Datum invoegen","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Afdrukken"},preview:{"preview_desc":"Voorbeeld"},directionality:{"rtl_desc":"Van rechts naar links","ltr_desc":"Van links naar rechts"},layer:{content:"Nieuwe laag...","absolute_desc":"Absoluut positioneren inschakelen","backward_desc":"Vorige laag","forward_desc":"Volgende laag","insertlayer_desc":"Nieuwe laag invoegen"},save:{"save_desc":"Opslaan","cancel_desc":"Alle wijzigingen annuleren"},nonbreaking:{"nonbreaking_desc":"Open ruimte invoegen"},iespell:{download:"ieSpell niet gevonden. Wilt u deze nu installeren?","iespell_desc":"Spellingcontrole"},advhr:{"advhr_desc":"Scheidingslijn","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoties","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Zoeken/Vervangen","search_desc":"Zoeken","delta_width":"","delta_height":""},advimage:{"image_desc":"Afbeelding invoegen/bewerken","delta_width":"","delta_height":""},advlink:{"link_desc":"Link invoegen/bewerken","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Attributen invoegen/bewerken","ins_desc":"Ingevoegd","del_desc":"Verwijderd","acronym_desc":"Synoniem","abbr_desc":"Afkorting","cite_desc":"Citaat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS Stijl bewerken","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Plakken is nu in plattetekstmoduse. Klik nog een keer om terug te gaan naar normaal plakken.","plaintext_mode_sticky":"Plakken is nu in plattetekstmodus. Klik nog een keer om terug te gaan naar normaal plakken. Nadat u iets plakt, keert u terug naar normaal plakken.","selectall_desc":"Alles selecteren","paste_word_desc":"Vanuit Word plakken","paste_text_desc":"Als platte tekst plakken"},"paste_dlg":{"word_title":"Gebruik Ctrl+V om tekst in het venster te plakken.","text_linebreaks":"Regelafbreking bewaren","text_title":"Gebruik Ctrl+V om tekst in het venster te plakken."},table:{cell:"Cel",col:"Kolom",row:"Rij",del:"Tabel verwijderen","copy_row_desc":"Rij kopi\u00ebren","cut_row_desc":"Rij knippen","paste_row_after_desc":"Rij onder plakken","paste_row_before_desc":"Rij boven plakken","props_desc":"Tabeleigenschappen","cell_desc":"Cel-eigenschappen","row_desc":"Rij-eigenschappen","merge_cells_desc":"Cellen samenvoegen","split_cells_desc":"Cellen splitsen","delete_col_desc":"Kolom verwijderen","col_after_desc":"Kolom rechts invoegen","col_before_desc":"Kolom links invoegen","delete_row_desc":"Rij verwijderen","row_after_desc":"Rij onder invoegen","row_before_desc":"Rij boven invoegen",desc:"Nieuwe tabel invoegen","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Als u de opgeslagen inhoud laadt, verliest u de inhoud die zich momenteel in de editor bevindt.\\n\\nWeet u zeker dat u de opgeslagen inhoud wilt laden?","restore_content":"Automatisch opgeslagen inhoud laden.","unload_msg":"De wijzigingen zullen verloren gaan als u nu deze pagina verlaat."},fullscreen:{desc:"Volledig scherm"},media:{edit:"Media bewerken",desc:"Media invoegen/bewerken","delta_height":"","delta_width":""},fullpage:{desc:"Documenteigenschappen","delta_width":"","delta_height":""},template:{desc:"Voorgedefinieerd sjabloon invoegen"},visualchars:{desc:"Zichtbare symbolen"},spellchecker:{desc:"Spellingcontrole",menu:"Instellingen spellingcontrole","ignore_word":"Woord negeren","ignore_words":"Alles negeren",langs:"Talen",wait:"Een ogenblik geduld\u2026",sug:"Suggesties","no_sug":"Geen suggesties","no_mpell":"Geen spelfouten gevonden."},pagebreak:{desc:"Pagina-einde invoegen"},advlist:{types:"Types",def:"Standaard","lower_alpha":"Alfa (klein)","lower_greek":"Griekse letters (klein)","lower_roman":"Romeinse letters (klein)","upper_alpha":"Alfa (groot)","upper_roman":"Romeinse letters (groot)",circle:"Cirkel",disc:"Schijf",square:"Vierkant"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/no.js b/js/tiny_mce/langs/no.js new file mode 100755 index 000000000..43e63a702 --- /dev/null +++ b/js/tiny_mce/langs/no.js @@ -0,0 +1 @@ +tinyMCE.addI18n({no:{common:{"more_colors":"Flere farger","invalid_data":"Feil: Ugyldig verdi er skrevet inn, disse er merket med r\u00f8dt","popup_blocked":"Beklager, men vi har registrert at din popup-sperrer har blokkert et vindu i nettleseren. Du m\u00e5 oppheve popup-sperren for at nettstedet skal f\u00e5 tilgang til dette verkt\u00f8yet","clipboard_no_support":"For tiden ikke st\u00f8ttet av din nettleser, bruk tastatursnarveier i stedet.","clipboard_msg":"Klipp ut / Kopier /Lim inn fungerer ikke i Mozilla og Firefox. Vil du vite mer om dette?","not_set":"--Ikke satt--","class_name":"Klasse",browse:"Bla gjennom",close:"Lukk",cancel:"Avbryt",update:"Oppdater",insert:"Sett inn",apply:"Bruk","edit_confirm":"Vil du bruke WYSIWYG-editoren for dette tekstfeltet?"},contextmenu:{full:"Full",right:"H\u00f8yre",center:"Midtstilt",left:"Venstre",align:"Justering"},insertdatetime:{"day_short":"S\u00f8n,Man,Tir,Ons,Tor,Fre,L\u00f8r,S\u00f8n","day_long":"s\u00f8ndag,mandag,tirsdag,onsdag,torsdag,fredag,l\u00f8rdag,s\u00f8ndag","months_short":"jan,feb,mar,apr,mai,jun,jul,aug,sep,okt,nov,des","months_long":"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember","inserttime_desc":"Sett inn tid","insertdate_desc":"Sett inn dato","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Skriv ut"},preview:{"preview_desc":"Forh\u00e5ndsvisning"},directionality:{"rtl_desc":"Retning h\u00f8yre mot venstre","ltr_desc":"Retning venstre mot h\u00f8yre"},layer:{content:"Nytt lag ...","absolute_desc":"Sl\u00e5 p\u00e5/av absolutt plassering","backward_desc":"Flytt bakover","forward_desc":"Flytt fremover","insertlayer_desc":"Sett inn nytt lag"},save:{"save_desc":"Lagre","cancel_desc":"Kanseller alle endringer"},nonbreaking:{"nonbreaking_desc":"Sett inn karakter for hardt mellomrom"},iespell:{download:"ieSpell ikke funnet. \u00d8nsker du \u00e5 installere ieSpell?","iespell_desc":"Stavekontroll"},advhr:{"advhr_desc":"Horisontal linje","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Hum\u00f8rfjes","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"S\u00f8k/Erstatt","search_desc":"S\u00f8k","delta_width":"","delta_height":""},advimage:{"image_desc":"Sett inn/editer bilde","delta_width":"","delta_height":""},advlink:{"link_desc":"Sett inn/editer lenke","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Sett inn/Editer egenskaper","ins_desc":"Innsetting","del_desc":"Sletting","acronym_desc":"Akronym","abbr_desc":"Forkortelse","cite_desc":"Sitat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Rediger CSS-stil","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Lim inn er n\u00e5 i vanlig tekst modus. Klikk igjen for \u00e5 bytte til vanlig innlimings modus.","plaintext_mode_sticky":"Lim inn er n\u00e5 i vanlig tekst modus. Klikk igjen for \u00e5 bytte til vanlig innlimings modus. Etter at du limer inn noe vil du g\u00e5 tilbake til ordin\u00e6r innliming.","selectall_desc":"Merk alt","paste_word_desc":"Lim inn fra Word","paste_text_desc":"Lim inn som ren tekst"},"paste_dlg":{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet."},table:{cell:"Celle",col:"Kolonne",row:"Rad",del:"Slett tabell","copy_row_desc":"Kopier rad","cut_row_desc":"Slett rad","paste_row_after_desc":"Lime inn rad etter","paste_row_before_desc":"Lime inn rad foran","props_desc":"Tabell egenskaper","cell_desc":"Celle egenskaper","row_desc":"Rad egenskaper","merge_cells_desc":"Sl\u00e5 sammen celler","split_cells_desc":"Splitte sammensl\u00e5tte celler","delete_col_desc":"Slett kolonne","col_after_desc":"Sett inn kolonne etter","col_before_desc":"Sett inn kolonne forand","delete_row_desc":"Slett rad","row_after_desc":"Sett inn rad etter","row_before_desc":"Sett inn rad foran",desc:"Setter inn ny tabell","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Hvis du gjenoppretter tidligere lagret innhold s\u00e5 vil du miste alt n\u00e5v\u00e6rende innhold i editoren.\\n\\nEr du sikker du vil gjenopprette tidligere lagret innhold?.","restore_content":"Gjenopprette autolagret innhold.","unload_msg":"Utf\u00f8rte endringer g\u00e5r tapt hvis du navigerer vekk fra denne siden!"},fullscreen:{desc:"Sl\u00e5 fullskjermmodus av/p\u00e5"},media:{edit:"Editer innebygget objekt",desc:"Sett inn/editer innebygget objekt","delta_height":"","delta_width":""},fullpage:{desc:"Dokument egenskaper","delta_width":"","delta_height":""},template:{desc:"Sett inn forh\u00e5ndsdefinert malinnhold"},visualchars:{desc:"Visuelle konktrolltegn p\u00e5/av"},spellchecker:{desc:"Stavekontroll p\u00e5/av",menu:"Oppsett stavekontroll","ignore_word":"Ignorer ord","ignore_words":"Ignorer alt",langs:"Spr\u00e5k",wait:"Vennligst vent ...",sug:"Forslag","no_sug":"Ingen forslag","no_mpell":"Ingen stavefeil funnet."},pagebreak:{desc:"Sett inn sideskift"},advlist:{types:"Types",def:"Standard","lower_alpha":"Sm\u00e5 alfanumerisk","lower_greek":"Sm\u00e5 gresk","lower_roman":"Sm\u00e5 roman","upper_alpha":"Store alfanumerisk","upper_roman":"Store roman",circle:"Sirkel",disc:"Plate",square:"Firkant"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/pl.js b/js/tiny_mce/langs/pl.js new file mode 100755 index 000000000..7b3672e19 --- /dev/null +++ b/js/tiny_mce/langs/pl.js @@ -0,0 +1 @@ +tinyMCE.addI18n({pl:{common:{"more_colors":"Wi\u0119cej kolor\u00f3w","invalid_data":"B\u0142\u0105d: Zosta\u0142y wprowadzone b\u0142\u0119dne dane, s\u0105 zaznaczone na czerwono.","popup_blocked":"Zauwa\u017cyli\u015bmy, \u017ce opcja blokowania wyskakuj\u0105cych okienek wy\u0142\u0105czy\u0142a okno, kt\u00f3re dostarcza funkcjonalno\u015b\u0107 aplikacji. Aby w pe\u0142ni wykorzysta\u0107 to narz\u0119dzie musisz wy\u0142\u0105czy\u0107 blokowanie wyskakuj\u0105cych okienek na tej stronie.","clipboard_no_support":"Aktualnie nie jest obs\u0142ugiwany przez Twoj\u0105 przegl\u0105dark\u0119, u\u017cyj skr\u00f3t\u00f3w klawiaturowych w zamian.","clipboard_msg":"Akcje Kopiuj/Wytnij/Wklej nie s\u0105 dost\u0119pne w Mozilli i Firefox.\\nCzy chcesz wi\u0119cej informacji o tym problemie?","not_set":"-- Brak --","class_name":"Klasa",browse:"Przegl\u0105daj",close:"Zamknij",cancel:"Anuluj",update:"Aktualizuj",insert:"Wstaw",apply:"Zastosuj","edit_confirm":"Czy chcesz u\u017cy\u0107 trybu WYSIWYG dla tego pola formularza?"},contextmenu:{full:"Wyjustuj",right:"Do prawej",center:"Do \u015brodka",left:"Do lewej",align:"Wyr\u00f3wnanie"},insertdatetime:{"day_short":"N,Pn,Wt,\u015ar,Cz,Pt,So,N","day_long":"Niedziela, Poniedzia\u0142ek, Wtorek, \u015aroda, Czwartek, Pi\u0105tek, Sobota, Niedziela","months_short":"Sty,Lut,Mar,Kwi,Maj,Cze,Lip,Sie,Wrz,Pa\u017a,Lis,Gru","months_long":"Stycze\u0144, Luty, Marzec, Kwiecie\u0144, Maj, Czerwiec, Lipiec, Sierpie\u0144, Wrzesie\u0144, Pa\u017adziernik, Listopad, Grudzie\u0144","inserttime_desc":"Wstaw czas","insertdate_desc":"Wstaw dat\u0119","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Drukuj"},preview:{"preview_desc":"Podgl\u0105d"},directionality:{"rtl_desc":"Kierunek od prawej do lewej","ltr_desc":"Kierunek od lewej do prawej"},layer:{content:"Nowa warstwa...","absolute_desc":"Prze\u0142\u0105cz pozycjonowanie absolutne","backward_desc":"Przesu\u0144 pod sp\u00f3d","forward_desc":"Przesu\u0144 na wierzch","insertlayer_desc":"Wstaw now\u0105 warstw\u0119"},save:{"save_desc":"Zachowaj","cancel_desc":"Anuluj wszystkie zmiany"},nonbreaking:{"nonbreaking_desc":"Wstaw tward\u0105 spacj\u0119"},iespell:{download:"ieSpell nie wykryte. Czy przeprowadzi\u0107 instalacj\u0119 tego komponentu?","iespell_desc":"Sprawd\u017a pisowni\u0119"},advhr:{"advhr_desc":"Pozioma linia","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotikony","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Znajd\u017a/zamie\u0144","search_desc":"Znajd\u017a","delta_width":"","delta_height":""},advimage:{"image_desc":"Wstaw/edytuj obraz","delta_width":"","delta_height":""},advlink:{"link_desc":"Wstaw/edytuj link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Wstaw / Edytuj atrybuty","ins_desc":"Wstawienie","del_desc":"Usuni\u0119cie","acronym_desc":"Akronim","abbr_desc":"Skr\u00f3t","cite_desc":"Cytat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edytuj Style CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Wklejanie jest teraz dost\u0119pne w trybie tekstowym. Kliknij ponownie, aby prze\u0142\u0105czy\u0107 si\u0119 z powrotem do trybu wklejania sformatowanego tekstu.","plaintext_mode_sticky":"Wklejanie jest teraz dost\u0119pne w trybie tekstowym. Kliknij ponownie, aby prze\u0142\u0105czy\u0107 si\u0119 z powrotem do trybu wklejania sformatowanego tekstu. Po wklejeniu tekstu nast\u0105pi powr\u00f3t do trybu wklejania sformatowanego tekstu.","selectall_desc":"Zaznacz wszystko","paste_word_desc":"Wklej z Worda","paste_text_desc":"Wklej jako zwyk\u0142y tekst"},"paste_dlg":{"word_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna.","text_linebreaks":"Zachowaj ko\u0144ce linii.","text_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna."},table:{cell:"Kom\u00f3rka",col:"Kolumna",row:"Wiersz",del:"Usu\u0144 tabel\u0119","copy_row_desc":"Kopiuj wiersz...","cut_row_desc":"Wytnij wiersz...","paste_row_after_desc":"Wklej wiersz po...","paste_row_before_desc":"Wklej wiersz przed...","props_desc":"W\u0142a\u015bciwo\u015bci tabeli","cell_desc":"W\u0142a\u015bciwo\u015bci kom\u00f3rki","row_desc":"W\u0142a\u015bciwo\u015bci wiersza","merge_cells_desc":"Po\u0142\u0105cz kom\u00f3rki","split_cells_desc":"Podziel po\u0142\u0105czone kom\u00f3rki","delete_col_desc":"Usu\u0144 kolumn\u0119","col_after_desc":"Wstaw kolumn\u0119 po...","col_before_desc":"Wstaw kolumn\u0119 przed...","delete_row_desc":"Usu\u0144 wiersz","row_after_desc":"Wstaw nowy wiersz po...","row_before_desc":"Wstaw nowy wiersz przed...",desc:"Wstaw now\u0105 tabel\u0119","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Je\u015bli przywr\u00f3cisz zapisan\u0105 tre\u015b\u0107, stracisz ca\u0142\u0105 tre\u015b\u0107, kt\u00f3ra teraz si\u0119 znajduje w edytorze.\\n\\nJeste\u015b pewien, \u017ce chcesz przywr\u00f3ci\u0107 zapisan\u0105 tre\u015b\u0107?","restore_content":"Przywr\u00f3\u0107 tre\u015b\u0107 zapisan\u0105 automatycznie.","unload_msg":"Zmiany, kt\u00f3rych dokona\u0142e\u015b zostan\u0105 utracone je\u015bli opu\u015bcisz t\u0119 stron\u0119."},fullscreen:{desc:"Prze\u0142\u0105cz tryb pe\u0142noekranowy"},media:{"delta_height":"",edit:"Edytuj wbudowane media",desc:"Wstaw/edytuj wbudowane media","delta_width":""},fullpage:{desc:"W\u0142a\u015bciwo\u015bci dokumentu","delta_width":"","delta_height":""},template:{desc:"Wstaw tre\u015b\u0107 szablonu"},visualchars:{desc:"W\u0142\u0105cz/wy\u0142\u0105cz znaki kontrolne."},spellchecker:{desc:"Sprawdzanie pisowni",menu:"Ustawienia sprawdzania pisowni","ignore_word":"Ignoruj s\u0142owo","ignore_words":"Ignoruj wszystkie",langs:"J\u0119zyki",wait:"Prosz\u0119 czeka\u0107...",sug:"Sugestie","no_sug":"Brak sugestii","no_mpell":"Nie znaleziono b\u0142\u0119d\u00f3w."},pagebreak:{desc:"Wstaw znak nowej strony."},advlist:{types:"Rodzaje",def:"Domy\u015blny","lower_alpha":"Ma\u0142e alfabetu","lower_greek":"Ma\u0142e greckie","lower_roman":"Ma\u0142e rzymskie","upper_alpha":"Du\u017ce alfabetu","upper_roman":"Du\u017ce rzymskie",circle:"Ko\u0142o",disc:"Elipsa",square:"Kwadrat"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/pt.js b/js/tiny_mce/langs/pt.js new file mode 100755 index 000000000..a260d0ed1 --- /dev/null +++ b/js/tiny_mce/langs/pt.js @@ -0,0 +1 @@ +tinyMCE.addI18n({pt:{common:{more_colors:"Mais Cores",invalid_data:"Erro: Valores inv\u00e1lidos marcados em vermelho.",popup_blocked:"Detectamos que o seu bloqueador de popups bloqueou uma janela que \u00e9 essencial para a aplica\u00e7\u00e3o. Voc\u00ea precisa desativar o bloqueador de janelas de popups para utilizar esta ferramenta.",clipboard_no_support:"O seu browser n\u00e3o suporta esta fun\u00e7\u00e3o, use os atalhos do teclado.",clipboard_msg:"Copiar/recortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla e Firefox.\\nDeseja mais informa\u00e7\u00f5es sobre este problema?",not_set:"-- N/A --",class_name:"Classe",browse:"Procurar",close:"Fechar",cancel:"Cancelar",update:"Atualizar",insert:"Inserir",apply:"Aplicar",edit_confirm:"Deseja usar o modo de edi\u00e7\u00e3o avan\u00e7ado neste campo de texto?"},contextmenu:{full:"Justificado",right:"Direita",center:"Centro",left:"Esquerda",align:"Alinhamento"},insertdatetime:{day_short:"Dom,Seg,Ter,Qua,Qui,Sex,Sab,Dom",day_long:"Domingo,Segunda-feira,Ter\u00e7a-feira,Quarta-feira,Quinta-feira,Sexta-feira,S\u00e1bado,Domingo",months_short:"Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez",months_long:"Janeiro,Fevereiro,Mar\u00e7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro",inserttime_desc:"Inserir hora",insertdate_desc:"Inserir data",time_fmt:"%H:%M:%S",date_fmt:"%d-%m-%Y"},print:{print_desc:"Imprimir"},preview:{preview_desc:"Pr\u00e9-visualizar"},directionality:{rtl_desc:"Da direita para esquerda",ltr_desc:"Da esquerda para direita"},layer:{content:"Nova camada...",absolute_desc:"Alternar o posicionamento absoluto",backward_desc:"Mover para tr\u00e1s",forward_desc:"Mover para frente",insertlayer_desc:"Inserir nova camada"},save:{save_desc:"Salvar",cancel_desc:"Cancelar todas as altera\u00e7\u00f5es"},nonbreaking:{nonbreaking_desc:"Inserir um espa\u00e7o \"sem quebra\""},iespell:{download:"Plugin de ortografia n\u00e3o-detectado. Deseja instalar agora?",iespell_desc:"Verificar ortografia"},advhr:{advhr_desc:"Separador horizontal",delta_height:"",delta_width:""},emotions:{emotions_desc:"Emoticons",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Localizar/substituir",search_desc:"Localizar",delta_width:"",delta_height:""},advimage:{image_desc:"Inserir/editar imagem",delta_width:"",delta_height:""},advlink:{link_desc:"Inserir/editar hyperlink",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Inserir/Editar atributos",ins_desc:"Inserir",del_desc:"Apagar",acronym_desc:"Acr\u00f4nimo",abbr_desc:"Abrevia\u00e7\u00e3o",cite_desc:"Cita\u00e7\u00e3o",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Editar CSS",delta_height:"",delta_width:""},paste:{plaintext_mode:"Comando colar est\u00e1 em modo texto simples. Clique novamente para voltar para o modo normal.",plaintext_mode_sticky:"Comando colar est\u00e1 em modo texto simples. Clique novamente para voltar para o modo normal. Depois de colar alguma coisa retornar\u00e1 para o modo normal.",selectall_desc:"Selecionar tudo",paste_word_desc:"Colar (copiado do WORD)",paste_text_desc:"Colar como texto simples"},paste_dlg:{word_title:"Use CTRL+V para colar o texto na janela.",text_linebreaks:"Manter quebras de linha",text_title:"Use CTRL+V para colar o texto na janela."},table:{cell:"C\u00e9lula",col:"Coluna",row:"Linha",del:"Apagar tabela",copy_row_desc:"Copiar linha",cut_row_desc:"Recortar linha",paste_row_after_desc:"Colar linha depois",paste_row_before_desc:"Colar linha antes",props_desc:"Propriedades da tabela",cell_desc:"Propriedades das c\u00e9lulas",row_desc:"Propriedades das linhas",merge_cells_desc:"Unir c\u00e9lulas",split_cells_desc:"Dividir c\u00e9lulas",delete_col_desc:"Remover coluna",col_after_desc:"Inserir coluna depois",col_before_desc:"Inserir coluna antes",delete_row_desc:"Apagar linha",row_after_desc:"Inserir linha depois",row_before_desc:"Inserir linha antes",desc:"Inserir nova tabela",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"Se restaurar o conte\u00fado, voc\u00ea ir\u00e1 perder tudo que est\u00e1 atualmente no editor.\\n\\nTem certeza que quer restaurar o conte\u00fado salvo?",restore_content:"Restaura conte\u00fado salvo automaticamente.",unload_msg:"As mudan\u00e7as efetuadas ser\u00e3o perdidas se sair desta p\u00e1gina."},fullscreen:{desc:"Tela Inteira"},media:{edit:"Editar m\u00eddia incorporada",desc:"Inserir/Editar m\u00eddia incorporada",delta_height:"",delta_width:""},fullpage:{desc:"Propriedades do Documento",delta_width:"",delta_height:""},template:{desc:"Inserir template"},visualchars:{desc:"Caracteres de controle visual ligado/desligado"},spellchecker:{desc:"Alternar verifica\u00e7\u00e3o ortogr\u00e1fica",menu:"Configura\u00e7\u00f5es de ortografia",ignore_word:"Ignorar palavra",ignore_words:"Ignorar tudo",langs:"Linguagens",wait:"Aguarde...",sug:"Sugest\u00f5es",no_sug:"Sem sugest\u00f5es",no_mpell:"N\u00e3o foram detectados erros de ortografia."},pagebreak:{desc:"Inserir quebra de p\u00e1gina."},advlist:{types:"Tipos",def:"Padr\u00e3o",lower_alpha:"Alfabeto min\u00fasculo",lower_greek:"Alfabeto grego",lower_roman:"Num. romanos min\u00fasculos",upper_alpha:"Alfabeto mai\u00fasculos",upper_roman:"Num. romanos mai\u00fasculos",circle:"C\u00edrculo",disc:"Disco",square:"Quadrado"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/ro.js b/js/tiny_mce/langs/ro.js new file mode 100755 index 000000000..8f83a149f --- /dev/null +++ b/js/tiny_mce/langs/ro.js @@ -0,0 +1 @@ +tinyMCE.addI18n({ro:{common:{more_colors:"Mai multe culori",invalid_data:"Ave\u0163i erori. Datele gre\u015fite sunt \u00een ro\u015fu.",popup_blocked:"Ne pare r\u0103u, dar un popup-blocker a dezativat o fereastr\u0103 care d\u0103 func\u0163ionalitate aplica\u0163iei.Trebuie s\u0103 dezactiva\u0163i acel popup-blocker pentru acest site pentru a folosi aplica\u0163ia la capacitate maxim\u0103.",clipboard_no_support:"Deocamdat\u0103 nu este suportat\u0103 de browser. V\u0103 rug\u0103m s\u0103 folosi\u0163i combina\u0163ii de taste.",clipboard_msg:"Copiere/T\u0103iere/Lipire nu sunt disponibile \u00een Mozilla \u015fi Firefox.\\nDori\u0163i mai multe informa\u0163ii despre aceast\u0103 problem\u0103?",not_set:"-- Nestat\u0103 --",class_name:"Clas\u0103",browse:"R\u0103sfoie\u015fte",close:"\u00cenchide",cancel:"Anulare",update:"Actualizeaz\u0103",insert:"Insereaz\u0103",apply:"Aplic\u0103",edit_confirm:"Dori\u0163i s\u0103 folosi\u0163i un editor avansat pentru aceast\u0103 zon\u0103 de text?"},contextmenu:{full:"Justify",right:"Dreapta",center:"Centru",left:"St\u00e2nga",align:"Aliniere"},insertdatetime:{day_short:"Dum,Lun,Mar,Mie,Joi,Vin,S\u00e2m,Dum",day_long:"Duminic\u0103,Luni,Mar\u0163i,Miercuri,Joi,Vineri,S\u00e2mb\u0103t\u0103,Duminic\u0103",months_short:"Ian,Feb,Mar,Apr,Mai,Iun,Iul,Aug,Sep,Oct,Noi,Dec",months_long:"Ianuarie,Februarie,Martie,Aprilie,Mai,Iunie,Iulie,August,Septembrie,Octombrie,Noiembrie,Decembrie ",inserttime_desc:"Insereaz\u0103 or\u0103",insertdate_desc:"Insereaz\u0103 dat\u0103",time_fmt:"%H:%M:%S",date_fmt:"%Y-%m-%d"},print:{print_desc:"Imprimare"},preview:{preview_desc:"Previzualizare"},directionality:{rtl_desc:"Direc\u0163ia de la dreapta la st\u00e2nga",ltr_desc:"Direc\u0163ia de la st\u00e2nga la dreapta"},layer:{content:"Strat nou ...",absolute_desc:"Pozi\u0163ionare absolut\u0103",backward_desc:"Mut\u0103 \u00eenapoi",forward_desc:"Mut\u0103 \u00eenainte",insertlayer_desc:"Insereaz\u0103 stat nou"},save:{save_desc:"Salveaz\u0103",cancel_desc:"Anuleaz\u0103 toate schimb\u0103rile"},nonbreaking:{nonbreaking_desc:"Insereaz\u0103 caracterul spa\u0163iu"},iespell:{download:"ieSpell nu a fost detectat. Dori\u0163i s\u0103-l instala\u0163i?",iespell_desc:"Ruleaz\u0103 corectorul de limb\u0103"},advhr:{advhr_desc:"Linie orizontal\u0103",delta_height:"",delta_width:""},emotions:{emotions_desc:"Figurine",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Caut\u0103/\u00cenlocuie\u015fte",search_desc:"Caut\u0103",delta_width:"",delta_height:""},advimage:{image_desc:"Inserare/editare imagine",delta_width:"",delta_height:""},advlink:{link_desc:"Inserare/editare leg\u0103tur\u0103",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Insereaz\u0103/editeaz\u0103 atribute",ins_desc:"Inserare",del_desc:"\u015etergere",acronym_desc:"Acronim",abbr_desc:"Abreviere",cite_desc:"Citat",attribs_delta_height:"",attribs_delta_width:"",ins_delta_height:"",ins_delta_width:"",del_delta_height:"",del_delta_width:"",acronym_delta_height:"",acronym_delta_width:"",abbr_delta_height:"",abbr_delta_width:"",cite_delta_height:"",cite_delta_width:""},style:{desc:"Editare CSS",delta_height:"",delta_width:""},paste:{plaintext_mode:"Lipirea este acum \u00een modul text simplu. Ap\u0103sa\u0163i din nou pentru comutarea la modul normal de lipire.",plaintext_mode_sticky:"Lipirea este acum \u00een modul text simplu. Ap\u0103sa\u0163i aici pentru comutarea la modul normal de lipire. Dup\u0103 ce ve\u0163i lipi ceva ve\u0163i reveni la modul normal de lipire.",selectall_desc:"Selecteaz\u0103 tot",paste_word_desc:"Lipire din Word",paste_text_desc:"Lipire ca text simplu"},paste_dlg:{word_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103.",text_linebreaks:"P\u0103streaz\u0103 separatoarele de linii.",text_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103."},table:{cell:"Celul\u0103",col:"Coloan\u0103",row:"R\u00e2nd",del:"\u015eterge tabel",copy_row_desc:"Copiaz\u0103 r\u00e2nd",cut_row_desc:"Taie r\u00e2nd",paste_row_after_desc:"Lipe\u015fte r\u00e2nd dup\u0103",paste_row_before_desc:"Lipe\u015fte r\u00e2nd \u00eenainte",props_desc:"Propriet\u0103\u0163i tabel",cell_desc:"Propriet\u0103\u0163i celul\u0103",row_desc:"Propriet\u0103\u0163i r\u00e2nd",merge_cells_desc:"Uni\u0163i celule",split_cells_desc:"Separa\u0163i celule unite",delete_col_desc:"\u015eterge coloan\u0103",col_after_desc:"Inserare coloan\u0103 dup\u0103",col_before_desc:"Inserare coloan\u0103 \u00eenainte",delete_row_desc:"\u015eterge r\u00e2nd",row_after_desc:"Inserare r\u00e2nd dup\u0103",row_before_desc:"Inserare r\u00e2nd \u00eenainte",desc:"Insereaz\u0103 tabel nou",merge_cells_delta_height:"",merge_cells_delta_width:"",table_delta_height:"",table_delta_width:"",cellprops_delta_height:"",cellprops_delta_width:"",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"Daca restaurati continutul salvat vei pierde tot continutul existent din editor.\\n\\nSigur doriti sa restaurati continutul salvat?.",restore_content:"Restaureaz\u0103 con\u0163inutul salvat automat.",unload_msg:"Modific\u0103rile nu vor fi salvate."},fullscreen:{desc:"Mod ecran complet"},media:{edit:"Editeaz\u0103 media",desc:"Insereaz\u0103 / editeaz\u0103 media",delta_height:"",delta_width:""},fullpage:{desc:"Propriet\u0103\u0163i document",delta_width:"",delta_height:""},template:{desc:"Insereaz\u0103 un \u015fablon predefinit"},visualchars:{desc:"Comut\u0103 caracterele vizuale de control"},spellchecker:{desc:"Activare/dezactivare dic\u0163ionar",menu:"Set\u0103ri dic\u0163ionar",ignore_word:"Ignor\u0103 cuv\u00e2nt",ignore_words:"Ignor\u0103 toate",langs:"Limbi",wait:"V\u0103 rog a\u015ftepta\u0163i...",sug:"Sugestii",no_sug:"Nu sunt sugestii.",no_mpell:"Nu sunt gre\u015feli."},pagebreak:{desc:"Insereaz\u0103 un separator de pagin\u0103"},advlist:{types:"Tipuri",def:"Implicit",lower_alpha:"Minuscule alfabetice",lower_greek:"Minuscule grece\u015fti",lower_roman:"Minuscule romane",upper_alpha:"Majuscule alfabetice",upper_roman:"Majuscule romane",circle:"Cerc",disc:"Disc",square:"P\u0103trat"}}}); \ No newline at end of file diff --git a/js/tiny_mce/langs/ru.js b/js/tiny_mce/langs/ru.js new file mode 100755 index 000000000..ca333d7c3 --- /dev/null +++ b/js/tiny_mce/langs/ru.js @@ -0,0 +1 @@ +tinyMCE.addI18n({ru:{common:{"more_colors":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0446\u0432\u0435\u0442\u0430...","invalid_data":"\u041e\u0448\u0438\u0431\u043a\u0430: \u0412\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u043d\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u043a\u0440\u0430\u0441\u043d\u044b\u043c.","popup_blocked":"\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u0442\u043e\u0440 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043e\u043a\u043e\u043d \u0437\u0430\u043a\u0440\u044b\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u043a\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0430\u0439\u0442\u0435.","clipboard_no_support":"\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0412\u0430\u0448\u0438\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438.","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b\u0440\u0435\u0437\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 Firefox.\\r\\n\u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e?","not_set":"- \u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e -","class_name":"\u041a\u043b\u0430\u0441\u0441",browse:"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",close:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c",cancel:"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",update:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c",insert:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c","edit_confirm":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WYSIWYG \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f?"},contextmenu:{full:"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",right:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",center:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",left:"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435"},insertdatetime:{"day_short":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431,\u0432\u0441","day_long":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0430,\u0441\u0443\u0431\u0431\u043e\u0442\u0430,\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","months_short":"\u044f\u043d\u0432,\u0444\u0435\u0432,\u043c\u0430\u0440\u0442,\u0430\u043f\u0440,\u043c\u0430\u0439,\u0438\u044e\u043d\u044c,\u0438\u044e\u043b\u044c,\u0430\u0432\u0433,\u0441\u0435\u043d,\u043e\u043a\u0442,\u043d\u043e\u044f,\u0434\u0435\u043a","months_long":"\u044f\u043d\u0432\u0430\u0440\u044c,\u0444\u0435\u0432\u0440\u0430\u043b\u044c,\u043c\u0430\u0440\u0442,\u0430\u043f\u0440\u0435\u043b\u044c,\u043c\u0430\u0439,\u0438\u044e\u043d\u044c,\u0438\u044e\u043b\u044c,\u0430\u0432\u0433\u0443\u0441\u0442,\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c,\u043e\u043a\u0442\u044f\u0431\u0440\u044c,\u043d\u043e\u044f\u0431\u0440\u044c,\u0434\u0435\u043a\u0430\u0431\u0440\u044c","inserttime_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f","insertdate_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"\u041f\u0435\u0447\u0430\u0442\u044c"},preview:{"preview_desc":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440"},directionality:{"rtl_desc":"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","ltr_desc":"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e"},layer:{content:"\u041d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0439","absolute_desc":"\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","backward_desc":"\u041d\u0430 \u0437\u0430\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d","forward_desc":"\u041d\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d","insertlayer_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u043e\u0439"},save:{"save_desc":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","cancel_desc":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f"},nonbreaking:{"nonbreaking_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b"},iespell:{download:"ieSpell \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c?","iespell_desc":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u044e"},advhr:{"advhr_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c","search_desc":"\u041d\u0430\u0439\u0442\u0438","delta_width":"","delta_height":""},advimage:{"delta_width":"200","image_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","delta_height":""},advlink:{"delta_width":"200","link_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","delta_height":""},xhtmlxtras:{"attribs_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442","ins_desc":"\u0417\u0430\u043c\u0435\u043d\u0430","del_desc":"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435","acronym_desc":"\u0410\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0446\u0438\u044f","abbr_desc":"\u0421\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435","cite_desc":"\u0426\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS \u0441\u0442\u0438\u043b\u044c","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435","paste_word_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437 Word","paste_text_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442"},"paste_dlg":{"word_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e.","text_linebreaks":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a","text_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e."},table:{"cellprops_delta_width":"30",cell:"\u042f\u0447\u0435\u0439\u043a\u0430",col:"\u0421\u0442\u043e\u043b\u0431\u0435\u0446",row:"\u0421\u0442\u0440\u043e\u043a\u0430",del:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443","copy_row_desc":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","cut_row_desc":"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","paste_row_after_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443","paste_row_before_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443","props_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b","cell_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438","row_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438","merge_cells_desc":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438","split_cells_desc":"\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443","delete_col_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446","col_after_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430","col_before_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430","delete_row_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","row_after_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443","row_before_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",desc:"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435/\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u0412\u0441\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0435\u0440\u044f\u043d\u044b.\\n\\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f?","restore_content":"\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435","unload_msg":"\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0435\u0440\u044f\u043d\u044b, \u0435\u0441\u043b\u0438 \u0412\u044b \u0443\u0439\u0434\u0435\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."},fullscreen:{desc:"\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c"},media:{edit:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0438\u043f\u0430",desc:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043b\u0438\u043f","delta_height":"","delta_width":""},fullpage:{desc:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","delta_width":"","delta_height":""},template:{desc:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d"},visualchars:{desc:"\u0412\u0441\u0435 \u0437\u043d\u0430\u043a\u0438"},spellchecker:{desc:"\u041f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",menu:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f","ignore_word":"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c","ignore_words":"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435",langs:"\u042f\u0437\u044b\u043a\u0438",wait:"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435...",sug:"\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b","no_sug":"\u041d\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432","no_mpell":"\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e."},pagebreak:{desc:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"},advlist:{types:"\u0421\u0438\u043c\u0432\u043e\u043b\u044b",def:"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435","lower_alpha":"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b","lower_greek":"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b","lower_roman":"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b","upper_alpha":"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b","upper_roman":"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",circle:"\u041a\u0440\u0443\u0433\u0438",disc:"\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",square:"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b"}}}); \ No newline at end of file diff --git a/js/tiny_mce/license.txt b/js/tiny_mce/license.txt new file mode 100644 index 000000000..60d6d4c8f --- /dev/null +++ b/js/tiny_mce/license.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/js/tiny_mce/plugins/advimage/css/advimage.css b/js/tiny_mce/plugins/advimage/css/advimage.css new file mode 100644 index 000000000..0a6251a69 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/css/advimage.css @@ -0,0 +1,13 @@ +#src_list, #over_list, #out_list {width:280px;} +.mceActionPanel {margin-top:7px;} +.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;} +.checkbox {border:0;} +.panel_wrapper div.current {height:305px;} +#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;} +#align, #classlist {width:150px;} +#width, #height {vertical-align:middle; width:50px; text-align:center;} +#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;} +#class_list {width:180px;} +input {width: 280px;} +#constrain, #onmousemovecheck {width:auto;} +#id, #dir, #lang, #usemap, #longdesc {width:200px;} diff --git a/js/tiny_mce/plugins/advimage/editor_plugin.js b/js/tiny_mce/plugins/advimage/editor_plugin.js new file mode 100644 index 000000000..4c7a9c3a8 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/editor_plugin_src.js b/js/tiny_mce/plugins/advimage/editor_plugin_src.js new file mode 100644 index 000000000..2625dd213 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/editor_plugin_src.js @@ -0,0 +1,50 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.AdvancedImagePlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceAdvImage', function() { + // Internal image object like a flash placeholder + if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) + return; + + ed.windowManager.open({ + file : url + '/image.htm', + width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)), + height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('image', { + title : 'advimage.image_desc', + cmd : 'mceAdvImage' + }); + }, + + getInfo : function() { + return { + longname : 'Advanced image', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/image.htm b/js/tiny_mce/plugins/advimage/image.htm new file mode 100644 index 000000000..ed16b3d4a --- /dev/null +++ b/js/tiny_mce/plugins/advimage/image.htm @@ -0,0 +1,235 @@ + + + + {#advimage_dlg.dialog_title} + + + + + + + + + + +
        + + +
        +
        +
        + {#advimage_dlg.general} + + + + + + + + + + + + + + + + + + + +
        + +
        + {#advimage_dlg.preview} + +
        +
        + +
        +
        + {#advimage_dlg.tab_appearance} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + {#advimage_dlg.example_img} + Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam + nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum + edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam + erat volutpat. +
        +
        + + x + + px +
          + + + + +
        +
        +
        +
        + +
        +
        + {#advimage_dlg.swap_image} + + + + + + + + + + + + + + + + + + + + + +
        + + + + +
         
        + + + + +
         
        +
        + +
        + {#advimage_dlg.misc} + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + +
        + + + + +
         
        +
        +
        +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/advimage/img/sample.gif b/js/tiny_mce/plugins/advimage/img/sample.gif new file mode 100644 index 0000000000000000000000000000000000000000..53bf6890b507741c10910c9e2217ad8247b98e8d GIT binary patch literal 1624 zcmV-e2B-N)Nk%w1VJ!eH0OkMy|NsB}{r&v>{Q3F$`1ttq^YifV@ayaA>FMd_=H}w! z;^5%m-rnBb-QC>W+}qpR+S=OL+1c3G*w@$B*4Eb4)YQ|{)zHw=&d$%x&CScp%gV~i z$;rvc$jHXV#>B+L!^6YE!otD9!N9=4zrVk|y}i7=yt})*y1Kf#xw*Hux3;#nwY9ah zw6wFcv$C?Xv9YnRu&}SMudc4Ht*x!BtgNf6tE#H1si~={sjjD|r>3T+rKP2$q@<&x zqobp!qN1Xqp`oFnrJ$goprE6lpP!zdp`MSWoSd7Ro12@UnwpxLnw^=MnV6WE zmzS58mX?*3mz9;3mX?*2l$4W`lai8@l9G~eg|M^H&l zLpBo?51@vfgB2q_TVh*dNP<;cR$Wg!vYsMHR!qvvOis>GNH`+ zJ3B|tqgANiBSy@x>Q#;x7+DuU7&rwlf#S04)VZvA$XoUy8Y&f7)SqP<}Lw@L# zA(@Cohl`6CZyedUu^BlmK|DG5$Kl2f8z@uCc)^k-3m7$G!njf7$;XhOW>^`rV#UFh zEN#eG;bP?tCs>{+)q)ceg9$aDAaTZ{MGK5rU8ty$qz8){MT#gHGX{#XEJHLonBXFa zj+#9GE&^pq!`qG`K5iiC!gq}sRY|1yD8?j++_^oR0g+)NNtZN`)08!0q=}AA4HhIo zFaa9NYu8%97=oos5f?O`lwre~4VfoIei+FyK|urxj@C(-q(sS(!$5uL3j&jg7&XY% zlr17;3GGL;2K8>CB87G97;W(2VZ((D+3Hz;L;bylfhf(kFNV8at)h;hdM z85WX(#*Hq@@BYePt3t_l{ zCL3|YVWydA0Fz{rTl65n00)c^)^-jJn1c zRVXtA6mkUMEDLU|v7{JK&_IJ2ciiCy7BOT1fdUBh8b=yrbYaCAchCU_7?H`b1`}4q zLB|_mI2!;7W4QCq6F1O+MW||6AwmKafUrReUA&QotxQZI8D$G)AuSVV@X<&A9v;~H zKnWjo&;bljq=29aCeV-t5GBYkL=Q}q(S~FLd2t39MyRmC%_GFHkPc7CfIt8P*emqV z0YK2j9A+kmW^!tn(ZmG+L=6DZR99W}8p9?Utr=#t@rE2=zxf3QQ(JBJ&<{Z2>8EUP zeX1B)2w_3gXV)D-0Tt+=#@cV-0f!PU#MglZ3m6b}0e08zK^x;9(u?Tga{%?&nNTXhcEuM_#J>yL>p*a zuZJ2pliCGSp!Ye8>YFq@)ZOW-uT~OrjFQK!)UyVGFt7ni'); + }, + + init : function(ed) { + var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(); + + tinyMCEPopup.resizeToInnerSize(); + this.fillClassList('class_list'); + this.fillFileList('src_list', 'tinyMCEImageList'); + this.fillFileList('over_list', 'tinyMCEImageList'); + this.fillFileList('out_list', 'tinyMCEImageList'); + TinyMCE_EditableSelects.init(); + + if (n.nodeName == 'IMG') { + nl.src.value = dom.getAttrib(n, 'src'); + nl.width.value = dom.getAttrib(n, 'width'); + nl.height.value = dom.getAttrib(n, 'height'); + nl.alt.value = dom.getAttrib(n, 'alt'); + nl.title.value = dom.getAttrib(n, 'title'); + nl.vspace.value = this.getAttrib(n, 'vspace'); + nl.hspace.value = this.getAttrib(n, 'hspace'); + nl.border.value = this.getAttrib(n, 'border'); + selectByValue(f, 'align', this.getAttrib(n, 'align')); + selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); + nl.style.value = dom.getAttrib(n, 'style'); + nl.id.value = dom.getAttrib(n, 'id'); + nl.dir.value = dom.getAttrib(n, 'dir'); + nl.lang.value = dom.getAttrib(n, 'lang'); + nl.usemap.value = dom.getAttrib(n, 'usemap'); + nl.longdesc.value = dom.getAttrib(n, 'longdesc'); + nl.insert.value = ed.getLang('update'); + + if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover'))) + nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); + + if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout'))) + nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); + + if (ed.settings.inline_styles) { + // Move attribs to styles + if (dom.getAttrib(n, 'align')) + this.updateStyle('align'); + + if (dom.getAttrib(n, 'hspace')) + this.updateStyle('hspace'); + + if (dom.getAttrib(n, 'border')) + this.updateStyle('border'); + + if (dom.getAttrib(n, 'vspace')) + this.updateStyle('vspace'); + } + } + + // Setup browse button + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '260px'; + + // Setup browse button + document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image'); + if (isVisible('overbrowser')) + document.getElementById('onmouseoversrc').style.width = '260px'; + + // Setup browse button + document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image'); + if (isVisible('outbrowser')) + document.getElementById('onmouseoutsrc').style.width = '260px'; + + // If option enabled default contrain proportions to checked + if (ed.getParam("advimage_constrain_proportions", true)) + f.constrain.checked = true; + + // Check swap image if valid data + if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value) + this.setSwapImage(true); + else + this.setSwapImage(false); + + this.changeAppearance(); + this.showPreviewImage(nl.src.value, 1); + }, + + insert : function(file, title) { + var ed = tinyMCEPopup.editor, t = this, f = document.forms[0]; + + if (f.src.value === '') { + if (ed.selection.getNode().nodeName == 'IMG') { + ed.dom.remove(ed.selection.getNode()); + ed.execCommand('mceRepaint'); + } + + tinyMCEPopup.close(); + return; + } + + if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { + if (!f.alt.value) { + tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { + if (s) + t.insertAndClose(); + }); + + return; + } + } + + t.insertAndClose(); + }, + + insertAndClose : function() { + var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el; + + tinyMCEPopup.restoreSelection(); + + // Fixes crash in Safari + if (tinymce.isWebKit) + ed.getWin().focus(); + + if (!ed.settings.inline_styles) { + args = { + vspace : nl.vspace.value, + hspace : nl.hspace.value, + border : nl.border.value, + align : getSelectValue(f, 'align') + }; + } else { + // Remove deprecated values + args = { + vspace : '', + hspace : '', + border : '', + align : '' + }; + } + + tinymce.extend(args, { + src : nl.src.value.replace(/ /g, '%20'), + width : nl.width.value, + height : nl.height.value, + alt : nl.alt.value, + title : nl.title.value, + 'class' : getSelectValue(f, 'class_list'), + style : nl.style.value, + id : nl.id.value, + dir : nl.dir.value, + lang : nl.lang.value, + usemap : nl.usemap.value, + longdesc : nl.longdesc.value + }); + + args.onmouseover = args.onmouseout = ''; + + if (f.onmousemovecheck.checked) { + if (nl.onmouseoversrc.value) + args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';"; + + if (nl.onmouseoutsrc.value) + args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';"; + } + + el = ed.selection.getNode(); + + if (el && el.nodeName == 'IMG') { + ed.dom.setAttribs(el, args); + } else { + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.dom.setAttribs('__mce_tmp', args); + ed.dom.setAttrib('__mce_tmp', 'id', ''); + ed.undoManager.add(); + } + + tinyMCEPopup.editor.execCommand('mceRepaint'); + tinyMCEPopup.editor.focus(); + tinyMCEPopup.close(); + }, + + getAttrib : function(e, at) { + var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; + + if (ed.settings.inline_styles) { + switch (at) { + case 'align': + if (v = dom.getStyle(e, 'float')) + return v; + + if (v = dom.getStyle(e, 'vertical-align')) + return v; + + break; + + case 'hspace': + v = dom.getStyle(e, 'margin-left') + v2 = dom.getStyle(e, 'margin-right'); + + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'vspace': + v = dom.getStyle(e, 'margin-top') + v2 = dom.getStyle(e, 'margin-bottom'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'border': + v = 0; + + tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { + sv = dom.getStyle(e, 'border-' + sv + '-width'); + + // False or not the same as prev + if (!sv || (sv != v && v !== 0)) { + v = 0; + return false; + } + + if (sv) + v = sv; + }); + + if (v) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + } + } + + if (v = dom.getAttrib(e, at)) + return v; + + return ''; + }, + + setSwapImage : function(st) { + var f = document.forms[0]; + + f.onmousemovecheck.checked = st; + setBrowserDisabled('overbrowser', !st); + setBrowserDisabled('outbrowser', !st); + + if (f.over_list) + f.over_list.disabled = !st; + + if (f.out_list) + f.out_list.disabled = !st; + + f.onmouseoversrc.disabled = !st; + f.onmouseoutsrc.disabled = !st; + }, + + fillClassList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { + cl = []; + + tinymce.each(v.split(';'), function(v) { + var p = v.split('='); + + cl.push({'title' : p[0], 'class' : p[1]}); + }); + } else + cl = tinyMCEPopup.editor.dom.getClasses(); + + if (cl.length > 0) { + lst.options.length = 0; + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + + tinymce.each(cl, function(o) { + lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + lst.options.length = 0; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + resetImageData : function() { + var f = document.forms[0]; + + f.elements.width.value = f.elements.height.value = ''; + }, + + updateImageData : function(img, st) { + var f = document.forms[0]; + + if (!st) { + f.elements.width.value = img.width; + f.elements.height.value = img.height; + } + + this.preloadImg = img; + }, + + changeAppearance : function() { + var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg'); + + if (img) { + if (ed.getParam('inline_styles')) { + ed.dom.setAttrib(img, 'style', f.style.value); + } else { + img.align = f.align.value; + img.border = f.border.value; + img.hspace = f.hspace.value; + img.vspace = f.vspace.value; + } + } + }, + + changeHeight : function() { + var f = document.forms[0], tp, t = this; + + if (!f.constrain.checked || !t.preloadImg) { + return; + } + + if (f.width.value == "" || f.height.value == "") + return; + + tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height; + f.height.value = tp.toFixed(0); + }, + + changeWidth : function() { + var f = document.forms[0], tp, t = this; + + if (!f.constrain.checked || !t.preloadImg) { + return; + } + + if (f.width.value == "" || f.height.value == "") + return; + + tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width; + f.width.value = tp.toFixed(0); + }, + + updateStyle : function(ty) { + var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); + + if (tinyMCEPopup.editor.settings.inline_styles) { + // Handle align + if (ty == 'align') { + dom.setStyle(img, 'float', ''); + dom.setStyle(img, 'vertical-align', ''); + + v = getSelectValue(f, 'align'); + if (v) { + if (v == 'left' || v == 'right') + dom.setStyle(img, 'float', v); + else + img.style.verticalAlign = v; + } + } + + // Handle border + if (ty == 'border') { + dom.setStyle(img, 'border', ''); + + v = f.border.value; + if (v || v == '0') { + if (v == '0') + img.style.border = '0 none none'; + else + img.style.border = v + 'px solid black'; + } + } + + // Handle hspace + if (ty == 'hspace') { + dom.setStyle(img, 'marginLeft', ''); + dom.setStyle(img, 'marginRight', ''); + + v = f.hspace.value; + if (v) { + img.style.marginLeft = v + 'px'; + img.style.marginRight = v + 'px'; + } + } + + // Handle vspace + if (ty == 'vspace') { + dom.setStyle(img, 'marginTop', ''); + dom.setStyle(img, 'marginBottom', ''); + + v = f.vspace.value; + if (v) { + img.style.marginTop = v + 'px'; + img.style.marginBottom = v + 'px'; + } + } + + // Merge + dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img'); + } + }, + + changeMouseMove : function() { + }, + + showPreviewImage : function(u, st) { + if (!u) { + tinyMCEPopup.dom.setHTML('prev', ''); + return; + } + + if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true)) + this.resetImageData(); + + u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u); + + if (!st) + tinyMCEPopup.dom.setHTML('prev', ''); + else + tinyMCEPopup.dom.setHTML('prev', ''); + } +}; + +ImageDialog.preInit(); +tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/js/tiny_mce/plugins/advimage/langs/ar_dlg.js b/js/tiny_mce/plugins/advimage/langs/ar_dlg.js new file mode 100755 index 000000000..e9d89e5fc --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ar_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ar.advimage_dlg',{image_list:"Image list",align_right:"\u064a\u0645\u064a\u0646",align_left:"\u064a\u0633\u0627\u0631",align_textbottom:"\u0627\u0633\u0641\u0644 \u0627\u0644\u0646\u0635",align_texttop:"\u0627\u0639\u0644\u0649 \u0627\u0644\u0646\u0635",align_bottom:"\u0627\u0633\u0641\u0644",align_middle:"Middle",align_top:"\u0627\u0644\u0627\u0639\u0644\u0649",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"\u0645\u0634\u0627\u0647\u062f\u0647",title:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646",general:"\u0639\u0627\u0645",tab_advanced:"\u062e\u064a\u0627\u0631\u0627\u062a \u0645\u062a\u0642\u062f\u0645\u0647",tab_appearance:"\u0627\u0644\u0645\u0638\u0647\u0631",tab_general:"\u0639\u0627\u0645"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/az_dlg.js b/js/tiny_mce/plugins/advimage/langs/az_dlg.js new file mode 100755 index 000000000..44491ae2b --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/az_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('az.advimage_dlg',{image_list:"\u015e\u0259kil siyah\u0131s\u0131",align_right:"Sa\u011fa",align_left:"Sola",align_textbottom:"M\u0259tn a\u015fa\u011f\u0131s\u0131 il\u0259",align_texttop:"M\u0259tn yuxar\u0131 il\u0259",align_bottom:"A\u015fa\u011f\u0131 il\u0259",align_middle:"M\u0259rk\u0259z il\u0259",align_top:"Yuxar\u0131 il\u0259",align_baseline:"Bin\u00f6vr\u0259 il\u0259",align:"Tarazla\u015fd\u0131rma",hspace:"\u00dcf\u00fcqi f\u0259za",vspace:"\u015eaquli f\u0259za",dimensions:"\u00d6l\u00e7\u00fcl\u0259r",border:"S\u0259rh\u0259d",list:"\u015e\u0259kil siyah\u0131s\u0131",alt:"\u015e\u0259kil t\u0259sviri",src:"\u015e\u0259kil \u00fcnvan\u0131",dialog_title:"\u015e\u0259kil \u0259lav\u0259/redakt\u0259 et",missing_alt:"\u018fminsiniz ki, \u015f\u0259kl\u0259 t\u0259svir yazmadan davam etm\u0259k ist\u0259yirsiniz? T\u0259svirsiz \u015f\u0259kil i\u015f qabiliyy\u0259ti a\u015fa\u011f\u0131 olan v\u0259 ya \u015f\u0259klin s\u00f6nd\u00fcr\u00fclm\u00fc\u015f funksiyas\u0131 il\u0259 m\u0259tn b\u0259l\u0259d\u00e7isind\u0259n istifad\u0259 ed\u0259n istifad\u0259\u00e7il\u0259r\u0259 \u0259l\u00e7atmaz ola bil\u0259r.",example_img:"Xarici g\u00f6r\u00fcn\u00fc\u015f\u0259 ilkin bax\u0131\u015f",misc:"M\u00fcxt\u0259lif",mouseout:"si\u00e7an\u0131 uzaqla\u015fd\u0131rd\u0131qda",mouseover:"si\u00e7an\u0131 g\u0259tirdikd\u0259",alt_image:"Alternativ \u015f\u0259kil",swap_image:"\u015e\u0259kli d\u0259yi\u015f",map:"X\u0259rit\u0259-\u015f\u0259kil",id:"\u0130dentifikator",rtl:"Sa\u011fda-sola",ltr:"Solda-sa\u011fa",classes:"Sinifl\u0259r",style:"Stil",long_desc:"\u018ftrafl\u0131 t\u0259svir\u0259 ke\u00e7id",langcode:"Dil kodu",langdir:"Dilin istiqam\u0259tl\u0259ndirilm\u0259si",constrain_proportions:"Proporsiyalar\u0131 saxla",preview:"\u0130lkin bax\u0131\u015f",title:"Ad\u0131",general:"\u00dcmumi",tab_advanced:"\u018flav\u0259",tab_appearance:"G\u00f6r\u00fcn\u00fc\u015f",tab_general:"\u00dcmumi"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/be_dlg.js b/js/tiny_mce/plugins/advimage/langs/be_dlg.js new file mode 100755 index 000000000..e06998ef0 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/be_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('be.advimage_dlg',{image_list:"\u0421\u043f\u0456\u0441 \u043c\u0430\u043b\u044e\u043d\u043a\u0430\u045e",align_right:"\u041d\u0430\u043f\u0440\u0430\u0432\u0430",align_left:"\u041d\u0430\u043b\u0435\u0432\u0430",align_textbottom:"\u041f\u0430 \u043d\u0456\u0437\u0435 \u0442\u044d\u043a\u0441\u0442\u0443",align_texttop:"\u041f\u0430 \u0432\u0435\u0440\u0441\u0435 \u0442\u044d\u043a\u0441\u0442\u0443",align_bottom:"\u041f\u0430 \u043d\u0456\u0437\u0435",align_middle:"\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",align_top:"\u041f\u0430 \u0432\u0435\u0440\u0441\u0435",align_baseline:"\u041f\u0430 \u043f\u0430\u0434\u0441\u0442\u0430\u0432\u0435",align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",hspace:"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",vspace:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",dimensions:"\u041f\u0430\u043c\u0435\u0440\u044b",border:"\u041c\u044f\u0436\u0430",list:"\u0421\u043f\u0456\u0441 \u043c\u0430\u043b\u044e\u043d\u043a\u0430\u045e",alt:"\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435 \u043c\u0430\u043b\u044e\u043d\u043a\u0430",src:"\u0410\u0434\u0440\u0430\u0441 \u043c\u0430\u043b\u044e\u043d\u043a\u0430",dialog_title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043c\u0430\u043b\u044e\u043d\u0430\u043a",missing_alt:"\u0412\u044b \u045e\u043f\u044d\u045e\u043d\u0435\u043d\u044b\u044f, \u0448\u0442\u043e \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u043f\u0440\u0430\u0446\u044f\u0433\u043d\u0443\u0446\u044c \u0431\u0435\u0437 \u0430\u043f\u0456\u0441\u0430\u043d\u043d\u044f \u043c\u0430\u043b\u044e\u043d\u043a\u0430? \u0411\u0435\u0437 \u044f\u0433\u043e \u043c\u0430\u043b\u044e\u043d\u0430\u043a \u043c\u043e\u0436\u0430 \u0431\u044b\u0446\u044c \u043d\u0435\u0434\u0430\u0441\u0442\u0443\u043f\u043d\u0430 \u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0447\u0430\u043c \u0437 \u0430\u0431\u043c\u0435\u0436\u0430\u0432\u0430\u043d\u0430\u0439 \u043f\u0440\u0430\u0446\u0430\u0437\u0434\u043e\u043b\u044c\u043d\u0430\u0441\u0446\u044e, \u0430\u0431\u043e \u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u043e\u045e\u0432\u0430\u043b\u044b\u043c \u0442\u044d\u043a\u0441\u0442\u0430\u0432\u044b \u0431\u0440\u0430\u045e\u0437\u044d\u0440, \u0430\u0431\u043e \u044f\u043a\u0456\u044f \u0433\u043b\u044f\u0434\u0437\u044f\u0446\u044c \u0441\u0442\u0430\u0440\u043e\u043d\u043a\u0456 \u0437 \u0430\u0434\u043a\u043b\u044e\u0447\u0430\u043d\u044b\u043c\u0456 \u043c\u0430\u043b\u044e\u043d\u043a\u0430\u043c\u0456.",example_img:"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 \u043f\u0440\u0430\u0433\u043b\u044f\u0434 \u0432\u043e\u043d\u043a\u0430\u0432\u0430\u0433\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0443",misc:"\u0420\u043e\u0437\u043d\u0430\u0435",mouseout:"\u043f\u0440\u044b \u0430\u0434\u0432\u044f\u0434\u0437\u0435\u043d\u043d\u0456 \u043c\u044b\u0448\u044b",mouseover:"\u043f\u0440\u044b \u043d\u0430\u0432\u044f\u0434\u0437\u0435\u043d\u043d\u0456 \u043c\u044b\u0448\u044b",alt_image:"\u0410\u043b\u044c\u0442\u044d\u0440\u043d\u0430\u0442\u044b\u045e\u043d\u044b \u043c\u0430\u043b\u044e\u043d\u0430\u043a",swap_image:"\u041f\u0430\u043c\u044f\u043d\u044f\u0446\u044c \u043c\u0430\u043b\u044e\u043d\u0430\u043a",map:"\u041c\u0430\u043b\u044e\u043d\u0430\u043a-\u043a\u0430\u0440\u0442\u0430",id:"\u0406\u0434\u044d\u043d\u0442\u044b\u0444\u0456\u043a\u0430\u0442\u0430\u0440",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u0430",ltr:"\u0417\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",classes:"\u041a\u043b\u0430\u0441\u044b",style:"\u0421\u0442\u044b\u043b\u044c",long_desc:"\u0421\u043f\u0430\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0430\u0434\u0440\u0430\u0431\u044f\u0437\u043d\u0430\u0435 \u0430\u043f\u0456\u0441\u0430\u043d\u043d\u0435",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u044b",langdir:"\u041a\u0456\u0440\u0443\u043d\u0430\u043a \u043c\u043e\u0432\u044b",constrain_proportions:"\u0417\u0430\u0445\u043e\u045e\u0432\u0430\u0446\u044c \u043f\u0440\u0430\u043f\u043e\u0440\u0446\u044b\u0456",preview:"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 \u043f\u0440\u0430\u0433\u043b\u044f\u0434",title:"\u041d\u0430\u0437\u043e\u045e",general:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f",tab_advanced:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f",tab_appearance:"\u0412\u043e\u043d\u043a\u0430\u0432\u044b \u0432\u044b\u0433\u043b\u044f\u0434",tab_general:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/bg_dlg.js b/js/tiny_mce/plugins/advimage/langs/bg_dlg.js new file mode 100755 index 000000000..90fa58d05 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/bg_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bg.advimage_dlg',{image_list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438",align_right:"\u0414\u044f\u0441\u043d\u043e",align_left:"\u041b\u044f\u0432\u043e",align_textbottom:"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443",align_texttop:"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435",align_bottom:"\u0414\u043e\u043b\u0443",align_middle:"\u0426\u0435\u043d\u0442\u044a\u0440",align_top:"\u0413\u043e\u0440\u0435",align_baseline:"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",hspace:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",vspace:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",src:"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",dialog_title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",missing_alt:"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435 \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430? \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u0437\u0430 \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u043d\u0435\u0434\u044a\u0437\u0438, \u0438\u043b\u0438 \u0437\u0430 \u0442\u0435\u0437\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u044a\u0440, \u0438\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.",example_img:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",misc:"\u0420\u0430\u0437\u043d\u0438",mouseout:"\u0437\u0430 mouse out",mouseover:"\u0437\u0430 mouse over",alt_image:"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",swap_image:"\u0421\u043c\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",map:"\u041a\u0430\u0440\u0442\u0438\u043d\u0430 \u043a\u0430\u0440\u0442\u0430",id:"Id",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b",long_desc:"\u0425\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c \u0434\u044a\u043b\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",constrain_proportions:"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",title:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",general:"\u041e\u0431\u0449\u0438",tab_advanced:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",tab_appearance:"\u0412\u044a\u043d\u0448\u0435\u043d \u0432\u0438\u0434",tab_general:"\u041e\u0431\u0449\u0438"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/bn_dlg.js b/js/tiny_mce/plugins/advimage/langs/bn_dlg.js new file mode 100755 index 000000000..3ba89300f --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/bn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bn.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/br_dlg.js b/js/tiny_mce/plugins/advimage/langs/br_dlg.js new file mode 100755 index 000000000..77c725c84 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/br_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('br.advimage_dlg',{image_list:"Lista de imagens",align_right:"Direita",align_left:"Esquerda",align_textbottom:"Base do texto",align_texttop:"Topo do texto",align_bottom:"Abaixo",align_middle:"Meio",align_top:"Topo",align_baseline:"Sobre a linha de texto",align:"Alinhamento",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",dimensions:"Dimens\u00f5es",border:"Limite",list:"Lista de imagens",alt:"Descri\u00e7\u00e3o da imagem",src:"Endere\u00e7o da imagem",dialog_title:"Inserir/editar imagem",missing_alt:"Tem certeza que deseja continuar sem acrescentar uma descri\u00e7\u00e3o \u00e0\u00a0imagem? (Isto pode gerar problemas de acessibilidade em alguns navegadores)",example_img:"Pr\u00e9-visualiza\u00e7\u00e3o",misc:"Misto",mouseout:"mouseout",mouseover:"mouseover",alt_image:"Imagem alternativa",swap_image:"Trocar imagem",map:"Mapa de imagem",id:"Id",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",classes:"Classes",style:"Estilo",long_desc:"Descri\u00e7\u00e3o extensa",langcode:"C\u00f3digo de idioma",langdir:"Dire\u00e7\u00e3o do texto",constrain_proportions:"Manter propor\u00e7\u00f5es",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",title:"T\u00edtulo",general:"Geral",tab_advanced:"Avan\u00e7ado",tab_appearance:"Apar\u00eancia",tab_general:"Geral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/bs_dlg.js b/js/tiny_mce/plugins/advimage/langs/bs_dlg.js new file mode 100755 index 000000000..78330038a --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/bs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bs.advimage_dlg',{image_list:"Lista slika",align_right:"Desno",align_left:"Lijevo",align_textbottom:"Dno teksta",align_texttop:"Vrh teksta",align_bottom:"Dno",align_middle:"Sredina",align_top:"Vrh",align_baseline:"Osnovna linija",align:"Poravnavanje",hspace:"Vodoravni razmak",vspace:"Okomiti razmak",dimensions:"Dimenzije",border:"Obrub",list:"Lista slika",alt:"Opis slike",src:"URL slike",dialog_title:"Umetni/uredi sliku",missing_alt:"Jeste li sigurni da \u017eelite izostaviti opis slike? Slika mo\u017ee biti nedostupna ljudima s pote\u0161ko\u0107ama ili onima koji koriste preglednike bez prikaza slika.",example_img:"Prikaz slike",misc:"Razno",mouseout:"za izlazak mi\u0161a van slike",mouseover:"za prelazak mi\u0161a preko slike",alt_image:"Alternativna slika",swap_image:"Izmjenjiva slika",map:"Karta slike",id:"Id",rtl:"S desna na lijevo",ltr:"S lijeva na desno",classes:"Klase",style:"Stil",long_desc:"Poveznica dugog opisa",langcode:"Kod jezika",langdir:"Smjer jezika",constrain_proportions:"Zadr\u017ei proporcije",preview:"Prikaz",title:"Naslov",general:"Osnovno",tab_advanced:"Napredno",tab_appearance:"Izgled",tab_general:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ca_dlg.js b/js/tiny_mce/plugins/advimage/langs/ca_dlg.js new file mode 100755 index 000000000..ace03f87e --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ca_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ca.advimage_dlg',{"image_list":"Llista d\'imatges","align_right":"A la dreta","align_left":"A l\'esquerra","align_textbottom":"Baix del text","align_texttop":"Dalt del text","align_bottom":"Inferior","align_middle":"Mitjan lloc","align_top":"Superior","align_baseline":"L\u00ednia de base",align:"Alineaci\u00f3",hspace:"Espai horitzontal",vspace:"Espai vertical",dimensions:"Dimensions",border:"Vora",list:"Llista de la imatge",alt:"Descripci\u00f3 de la imatge",src:"URL de la imatge","dialog_title":"Insereix/edita imatge","missing_alt":"Esteu segur que voleu continuar sense incloure una descripci\u00f3 de la imatge? La imatge pot no ser accessible a usuaris amb discapacitats, o a aquells que utilitzin navegadors de text o que naveguin amb les imatges desactivades.","example_img":"Aparen\u00e7a imatge previsualitzada",misc:"Miscel\u00b7l\u00e0nia",mouseout:"quan el ratol\u00ed marxa",mouseover:"quan el ratol\u00ed arriba","alt_image":"Imatge alternativa","swap_image":"Canvia imatge",map:"Mapa de la imatge",id:"Id",rtl:"De dreta a esquerra",ltr:"D\'esquerra a dreta",classes:"Classes",style:"Estil","long_desc":"Enlla\u00e7 a la descripci\u00f3 llarga",langcode:"Codi de l\'idioma",langdir:"Direcci\u00f3 de l\'idioma","constrain_proportions":"Mant\u00e9 la proporci\u00f3",preview:"Previsualitzaci\u00f3",title:"T\u00edtol",general:"General","tab_advanced":"Avan\u00e7at","tab_appearance":"Aparen\u00e7a","tab_general":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ch_dlg.js b/js/tiny_mce/plugins/advimage/langs/ch_dlg.js new file mode 100755 index 000000000..7fad9ba18 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ch_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ch.advimage_dlg',{image_list:"\u56fe\u7247\u6e05\u5355",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u9760\u4e0b",align_middle:"\u7f6e\u4e2d",align_top:"\u9760\u4e0a",align_baseline:"\u57fa\u51c6\u7ebf",align:"\u5bf9\u9f50\u65b9\u5f0f",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u6e05\u5355",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247URL",dialog_title:"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",missing_alt:"\u56fe\u7247\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\uff0c\u662f\u5426\u7ee7\u7eed\uff1f",example_img:"\u56fe\u7247\u5916\u89c2\u9884\u89c8",misc:"\u5176\u5b83",mouseout:"\u9f20\u6807\u79fb\u51fa",mouseover:"\u9f20\u6807\u79fb\u5165",alt_image:"\u53d6\u4ee3\u56fe\u7247",swap_image:"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247 Map",id:"ID",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",long_desc:"\u957f\u8fde\u7ed3",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",constrain_proportions:"\u7ea6\u675f\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u6807\u9898",general:"\u4e00\u822c",tab_advanced:"\u9ad8\u7ea7",tab_appearance:"\u5916\u89c2",tab_general:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/cn_dlg.js b/js/tiny_mce/plugins/advimage/langs/cn_dlg.js new file mode 100755 index 000000000..3e7ae01c1 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cn.advimage_dlg',{"image_list":"\u56fe\u7247\u5217\u8868","align_right":"\u9760\u53f3","align_left":"\u9760\u5de6","align_textbottom":"\u6587\u5b57\u5e95\u90e8","align_texttop":"\u6587\u5b57\u9876\u90e8","align_bottom":"\u5e95\u90e8","align_middle":"\u4e2d\u95f4","align_top":"\u9876\u90e8","align_baseline":"\u57fa\u7ebf",align:"\u5bf9\u9f50",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u5217\u8868",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247\u5730\u5740URL","dialog_title":"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247","missing_alt":"\u56fe\u7247\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\uff0c\u662f\u5426\u7ee7\u7eed\uff1f","example_img":"\u56fe\u7247\u9884\u89c8",misc:"\u5176\u5b83",mouseout:"\u9f20\u6807\u79fb\u51fa",mouseover:"\u9f20\u6807\u79fb\u5165","alt_image":"\u66ff\u4ee3\u56fe\u7247","swap_image":"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247 Map",id:"Id\u540d\u79f0",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b\u522b",style:"\u6837\u5f0f","long_desc":"\u957f\u8fde\u7ed3",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u6587\u672c\u65b9\u5411","constrain_proportions":"\u7ea6\u675f\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u6807\u9898",general:"\u5e38\u89c4","tab_advanced":"\u9ad8\u7ea7","tab_appearance":"\u5916\u89c2","tab_general":"\u5e38\u89c4"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/cs_dlg.js b/js/tiny_mce/plugins/advimage/langs/cs_dlg.js new file mode 100755 index 000000000..8d344591d --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/cs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cs.advimage_dlg',{image_list:"Seznam obr\u00e1zk\u016f",align_right:"Vpravo",align_left:"Vlevo",align_textbottom:"Se spodkem \u0159\u00e1dku",align_texttop:"S vrchem \u0159\u00e1dku",align_bottom:"Dol\u016f",align_middle:"Na st\u0159ed \u0159\u00e1dku",align_top:"Nahoru",align_baseline:"Na z\u00e1kladnu",align:"Zarovn\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed",dimensions:"Rozm\u011bry",border:"R\u00e1me\u010dek",list:"Seznam obr\u00e1zk\u016f",alt:"Popis obr\u00e1zku",src:"URL obr\u00e1zku",dialog_title:"Vlo\u017eit/upravit obr\u00e1zek",missing_alt:"Skute\u010dn\u011b chcete pokra\u010dovat bez vlo\u017een\u00e9ho popisu obr\u00e1zku? Bez popisu m\u016f\u017ee b\u00fdt obr\u00e1zek nep\u0159\u00edstupn\u00fd u\u017eivatel\u016fm se zrakov\u00fdm posti\u017een\u00edm, u\u017eivatel\u016fm textov\u00fdch prohl\u00ed\u017ee\u010d\u016f nebo u\u017eivatel\u016fm, kte\u0159\u00ed maj\u00ed vypnuto zobrazov\u00e1n\u00ed obr\u00e1zk\u016f.",example_img:"P\u0159\u00edklad obr\u00e1zku",misc:"R\u016fzn\u00e9",mouseout:"Po odjet\u00ed my\u0161i...",mouseover:"P\u0159i najet\u00ed my\u0161i...",alt_image:"Alternativn\u00ed obr\u00e1zek",swap_image:"P\u0159epnout obr\u00e1zek",map:"Obr\u00e1zkov\u00e1 mapa",id:"ID",rtl:"Zprava doleva",ltr:"Zleva doprava",classes:"T\u0159\u00eddy",style:"Styl",long_desc:"Dlouh\u00fd popis",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",constrain_proportions:"Zachovat proporce",preview:"N\u00e1hled",title:"Titulek",general:"Obecn\u00e9 parametry",tab_advanced:"Roz\u0161\u00ed\u0159en\u00e9",tab_appearance:"Vzhled",tab_general:"Obecn\u00e9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/cy_dlg.js b/js/tiny_mce/plugins/advimage/langs/cy_dlg.js new file mode 100755 index 000000000..cc2651076 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/cy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cy.advimage_dlg',{image_list:"Rhestr delweddau",align_right:"De",align_left:"Chwith",align_textbottom:"Gwaelod testun",align_texttop:"Pen testun",align_bottom:"Gwaelod",align_middle:"Canol",align_top:"Pen",align_baseline:"Gwaelodlin",align:"Aliniad",hspace:"Gofod llorweddol",vspace:"Gofod fertigol",dimensions:"Dimensiynau",border:"Border",list:"Rhestr delweddau",alt:"Disgrifiad delwedd",src:"URL delwedd",dialog_title:"Mewnosod/golygu delwedd",missing_alt:"A ydych chi\'n si\u0175r eich bod eisiau parhau heb cynnwys Disgrifiad Delwedd? Hebddo fo ni fydd y delwedd yn hygyrchol i ddefnyddwyr gyda anableddau, neu sy\'n defnyddio porwr testun, neu sy\'n pori\'r we gyda delweddau wedi\'u diffodd.",example_img:"Delwedd rhagolygiad ymddangosiad",misc:"Amrywiol",mouseout:"ar gyfer llygoden allan",mouseover:"ar gyfer llygoden drosti",alt_image:"Delwedd arall",swap_image:"Cyfnewid delwedd",map:"Map delweddau",id:"Id",rtl:"De i\'r chwith",ltr:"Chwith i\'r dde",classes:"Dosbarthiadau",style:"Arddull",long_desc:"Cyswllt disgrifiad hir",langcode:"Cod iaith",langdir:"Cyfeiriad iaith",constrain_proportions:"Cynfyngu cyfraneddau",preview:"Rhagolwg",title:"Teitl",general:"Cyffredinol",tab_advanced:"Uwch",tab_appearance:"Ymddangosiad",tab_general:"Cyffredinol"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/da_dlg.js b/js/tiny_mce/plugins/advimage/langs/da_dlg.js new file mode 100755 index 000000000..046bb976b --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/da_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('da.advimage_dlg',{image_list:"Billedliste",align_right:"H\u00f8jre",align_left:"Venstre",align_textbottom:"Tekstbund",align_texttop:"Teksttop",align_bottom:"Bund",align_middle:"Midte",align_top:"Top",align_baseline:"Grundlinje",align:"Justering",hspace:"Horisontal afstand",vspace:"Vertikal afstand",dimensions:"Dimentioner",border:"Kant",list:"Billedliste",alt:"Billedbeskrivelse",src:"Billed-URL",dialog_title:"Inds\u00e6t/rediger billede",missing_alt:"Er du sikker p\u00e5, at du vil forts\u00e6tte uden at inkludere en billedebeskrivelse? Uden denne er billedet m\u00e5ske ikke tilg\u00e6ngeligt for nogle brugere med handicaps, eller for dem der bruger en tekstbrowser, eller som browser internettet med billeder sl\u00e5et fra.",example_img:"Forh\u00e5ndsvisning af billede",misc:"Diverse",mouseout:"for mus-ud",mouseover:"for mus-over",alt_image:"Alternativt billede",swap_image:"Byt billede",map:"Billede map",id:"Id",rtl:"H\u00f8jre til venstre",ltr:"Venstre til h\u00f8jre",classes:"Klasser",style:"Stil",long_desc:"Lang beskrivelseslink",langcode:"Sprogkode",langdir:"Sprogretning",constrain_proportions:"Bibehold proportioner",preview:"Vis",title:"Titel",general:"Generelt",tab_advanced:"Avanceret",tab_appearance:"Udseende",tab_general:"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/de_dlg.js b/js/tiny_mce/plugins/advimage/langs/de_dlg.js new file mode 100755 index 000000000..cf3561f17 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/de_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('de.advimage_dlg',{image_list:"Bilderliste",align_right:"Rechts",align_left:"Links",align_textbottom:"Unten im Text",align_texttop:"Oben im Text",align_bottom:"Unten",align_middle:"Mittig",align_top:"Oben",align_baseline:"Zeile",align:"Ausrichtung",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand",dimensions:"Ausma\u00dfe",border:"Rahmen",list:"Bilderliste",alt:"Beschreibung",src:"Adresse",dialog_title:"Bild einf\u00fcgen/bearbeiten",missing_alt:"Wollen Sie wirklich keine Beschreibung eingeben? Bestimmte Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnen so nicht darauf zugreifen, ebenso solche, die einen Textbrowser benutzen oder die Anzeige von Bildern deaktiviert haben.",example_img:"Aussehen der Vorschau",misc:"Verschiedenes",mouseout:"bei keinem Mauskontakt",mouseover:"bei Mauskontakt",alt_image:"Alternatives Bild",swap_image:"Bild austauschen",map:"Image-Map",id:"ID",rtl:"Rechts nach links",ltr:"Links nach rechts",classes:"Klassen",style:"Format",long_desc:"Ausf\u00fchrliche Beschreibung",langcode:"Sprachcode",langdir:"Schriftrichtung",constrain_proportions:"Seitenverh\u00e4ltnis beibehalten",preview:"Vorschau",title:"Titel",general:"Allgemein",tab_advanced:"Erweitert",tab_appearance:"Aussehen",tab_general:"Allgemein"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/dv_dlg.js b/js/tiny_mce/plugins/advimage/langs/dv_dlg.js new file mode 100755 index 000000000..b03dd065b --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/dv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('dv.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/el_dlg.js b/js/tiny_mce/plugins/advimage/langs/el_dlg.js new file mode 100755 index 000000000..2ed51002d --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/el_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('el.advimage_dlg',{image_list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd",align_right:"\u0394\u03b5\u03be\u03b9\u03ac",align_left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",align_textbottom:"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03ba\u03ac\u03c4\u03c9",align_texttop:"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03c0\u03ac\u03bd\u03c9",align_bottom:"\u039a\u03ac\u03c4\u03c9",align_middle:"\u039c\u03ad\u03c3\u03b7",align_top:"\u03a0\u03ac\u03bd\u03c9",align_baseline:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",hspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1",vspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7",dimensions:"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",border:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd",alt:"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",src:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",dialog_title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",missing_alt:"\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2; \u03a7\u03c9\u03c1\u03af\u03c2 \u03b1\u03c5\u03c4\u03ae\u03bd\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03b7 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1, \u03ae \u03c3\'\u03b1\u03c5\u03c4\u03bf\u03cd\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd \u03c6\u03c5\u03bb\u03bb\u03bf\u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5, \u03ae \u03b2\u03bb\u03ad\u03c0\u03bf\u03c5\u03bd \u03c4\u03bf \u0399\u03bd\u03c4\u03b5\u03c1\u03bd\u03b5\u03c4 \u03c7\u03c9\u03c1\u03af\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2.",example_img:"\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1",misc:"\u0394\u03b9\u03ac\u03c6\u03bf\u03c1\u03b1",mouseout:"\u03b3\u03b9\u03b1 mouse out",mouseover:"\u03b3\u03b9\u03b1 mouse over",alt_image:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1",swap_image:"\u0391\u03bd\u03c4\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",map:"\u03a7\u03ac\u03c1\u03c4\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",id:"Id",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",classes:"\u039a\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",long_desc:"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c0\u03bb\u03ae\u03c1\u03bf\u03c5\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",constrain_proportions:"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",title:"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",tab_advanced:"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",tab_appearance:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",tab_general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/en_dlg.js b/js/tiny_mce/plugins/advimage/langs/en_dlg.js new file mode 100755 index 000000000..e14dcf4ed --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/es_dlg.js b/js/tiny_mce/plugins/advimage/langs/es_dlg.js new file mode 100755 index 000000000..89fbf7369 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.advimage_dlg',{"image_list":"Lista de imagen","align_right":"Derecha","align_left":"Izquierda","align_textbottom":"Texto abajo","align_texttop":"Texto arriba","align_bottom":"Debajo","align_middle":"Medio","align_top":"Arriba","align_baseline":"L\u00ednea base",align:"Alineaci\u00f3n",hspace:"Espacio horizontal",vspace:"Espacio vertical",dimensions:"Dimensiones",border:"Bordes",list:"Lista de imagen",alt:"Descripci\u00f3n de la imagen",src:"URL de la imagen","dialog_title":"Insertar/editar imagen","missing_alt":" \u00bfEsta seguro de continuar sin introducir una descripci\u00f3n a la imagen? Sin ella puede no ser accesible para usuarios con discapacidades, o para aquellos que usen navegadores de modo texto, o tengan deshabilitadas las im\u00e1genes de la p\u00e1gina.","example_img":"Vista previa de la imagen",misc:"Miscel\u00e1neo",mouseout:"para mouseout",mouseover:"para mouseover","alt_image":"Imagen alternativa","swap_image":"Intercambiar imagen",map:"Mapa de imagen",id:"Id",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",classes:"Clases",style:"Estilos","long_desc":"V\u00ednculo para descripci\u00f3n larga",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",preview:"Vista previa",title:"T\u00edtulo",general:"General","tab_advanced":"Avanzado","tab_appearance":"Apariencia","tab_general":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/et_dlg.js b/js/tiny_mce/plugins/advimage/langs/et_dlg.js new file mode 100755 index 000000000..7fc429760 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.advimage_dlg',{image_list:"Piltide nimekiri",align_right:"Paremal",align_left:"Vasakul",align_textbottom:"Tekst all",align_texttop:"Tekst \u00fcleval",align_bottom:"All",align_middle:"Keskel",align_top:"\u00dcleval",align_baseline:"Baas",align:"Joondus",hspace:"Horisontaalne vahe",vspace:"Vertikaalne vahe",dimensions:"M\u00f5\u00f5tmed",border:"Raam",list:"Piltide nimekiri",alt:"Pildi kirjeldus",src:"Pildi URL",dialog_title:"Sisesta/muuda pilti",missing_alt:"Oled kindel, et soovid j\u00e4tkata pildile kirjeldust lisamata?",example_img:"Eelvaate pildi v\u00e4limus",misc:"Mitmesugune",mouseout:"\u201eKursor maas\u201c",mouseover:"\u201eKursor peal\u201c",alt_image:"Alternatiivne pilt",swap_image:"Vaheta pilti",map:"Pildi kaart",id:"ID",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",classes:"Klassid",style:"Stiil",long_desc:"Pikk kirjelduse link",langcode:"Keele kood",langdir:"Keele suund",constrain_proportions:"Piira proportioone",preview:"Eelvaade",title:"Pealkiri",general:"\u00dcldine",tab_advanced:"P\u00f5hjalikum",tab_appearance:"V\u00e4limus",tab_general:"\u00dcldine"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/eu_dlg.js b/js/tiny_mce/plugins/advimage/langs/eu_dlg.js new file mode 100755 index 000000000..1a2d8242e --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/eu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('eu.advimage_dlg',{image_list:"Irudi-zerrenda",align_right:"Eskuinean",align_left:"Ezkerrean",align_textbottom:"Testua behean",align_texttop:"Testua goian",align_bottom:"Behean",align_middle:"Tartean",align_top:"Goian",align_baseline:"Oinarri-marra",align:"Alineazioa",hspace:"Tarte horizontala",vspace:"Tarte bertikala",dimensions:"Tamaina",border:"Inguruko marra",list:"Irudi-zerrenda",alt:"Irudiaren deskribapena",src:"Irudiaren URL helbidea",dialog_title:"Irudia txertatu/editatu",missing_alt:"Irudiaren deskribapena gehitu gabe jarraitu nahi duzu? Hau horrela, ezgaitasunak dituztenentzat edo testu nabigatzaile bat darabiltenentzat ez da irisgarria izango.",example_img:"Nola ikusiko den",misc:"Bestelakoak",mouseout:"xagua kentzen denean",mouseover:"xagua gainean dagoenean",alt_image:"Ordezko irudia",swap_image:"Irudia ordezkatu",map:"Irudi-mapa",id:"Id",rtl:"Eskuinetik ezkerrera",ltr:"Ezkerretik eskuinera",classes:"Klaseak",style:"Estiloa",long_desc:"Deskribaepn luzearen lotura",langcode:"Hizkuntza-kodea",langdir:"Hizkuntzaren norabidea",constrain_proportions:"Proportzioak mantendu",preview:"Aurrebista",title:"Izenburua",general:"Orokorra",tab_advanced:"Aurreratua",tab_appearance:"Itxura",tab_general:"Orokorra"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/fa_dlg.js b/js/tiny_mce/plugins/advimage/langs/fa_dlg.js new file mode 100755 index 000000000..105e3f332 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/fa_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fa.advimage_dlg',{image_list:"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631",align_right:"\u0631\u0627\u0633\u062a",align_left:"\u0686\u067e",align_textbottom:"\u0645\u062a\u0646 \u067e\u0627\u06cc\u06cc\u0646",align_texttop:"\u0645\u062a\u0646 \u0628\u0627\u0644\u0627",align_bottom:"\u067e\u0627\u06cc\u06cc\u0646",align_middle:"\u0648\u0633\u0637",align_top:"\u0628\u0627\u0644\u0627",align_baseline:"\u062e\u0637 \u067e\u0627\u06cc\u0647",align:"\u062a\u0631\u0627\u0632",hspace:"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc",vspace:"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc",dimensions:"\u0627\u0628\u0639\u0627\u062f",border:"\u062d\u0627\u0634\u06cc\u0647",list:"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631",alt:"\u062a\u0648\u0636\u06cc\u062d \u062a\u0635\u0648\u06cc\u0631",src:"\u0622\u062f\u0631\u0633 \u062a\u0635\u0648\u06cc\u0631 (URL)",dialog_title:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631",missing_alt:"\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0628\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f\u061f \u0628\u062f\u0648\u0646 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u062f\u06cc\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0646\u062f\u0627\u0631\u0646\u062f \u060c \u06cc\u0627 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u06cc\u06a9 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062a\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u06cc\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062f\u06cc\u062f\u0646 \u0648\u0628 \u0628\u062f\u0648\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0645\u06cc \u0628\u0627\u0634\u0646\u062f \u060c \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0627\u0634\u062f.",example_img:"\u062a\u0635\u0648\u06cc\u0631 \u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634 \u0638\u0627\u0647\u0631",misc:"\u0645\u062a\u0641\u0631\u0642\u0647",mouseout:"\u0628\u0631\u0627\u06cc \u0631\u0641\u062a\u0646 \u0645\u0648\u0633",mouseover:"\u0628\u0631\u0627\u06cc \u0622\u0645\u062f\u0646 \u0645\u0648\u0633",alt_image:"\u062a\u0635\u0648\u06cc\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646",swap_image:"\u062a\u0639\u0648\u06cc\u0636 \u062a\u0635\u0648\u06cc\u0631",map:"\u0646\u0642\u0634\u0647 \u062a\u0635\u0648\u06cc\u0631",id:"\u0634\u0646\u0627\u0633\u0647",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",classes:"\u06a9\u0644\u0627\u0633 \u0647\u0627",style:"\u0627\u0633\u062a\u06cc\u0644",long_desc:"\u0644\u06cc\u0646\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0637\u0648\u0644\u0627\u0646\u06cc",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",constrain_proportions:"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",title:"\u0639\u0646\u0648\u0627\u0646",general:"\u0639\u0645\u0648\u0645\u06cc",tab_advanced:"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",tab_appearance:"\u0638\u0627\u0647\u0631",tab_general:"\u0639\u0645\u0648\u0645\u06cc"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/fi_dlg.js b/js/tiny_mce/plugins/advimage/langs/fi_dlg.js new file mode 100755 index 000000000..496d05d9e --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.advimage_dlg',{image_list:"Kuvalista",align_right:"Oikealla",align_left:"Vasemmalla",align_textbottom:"Teksti alhaalla",align_texttop:"Teksti ylh\u00e4\u00e4ll\u00e4",align_bottom:"Alhaalla",align_middle:"Keskell\u00e4",align_top:"Ylh\u00e4\u00e4ll\u00e4",align_baseline:"Rivill\u00e4",align:"Tasaus",hspace:"vaakasuora tila",vspace:"pystysuora tila",dimensions:"Mitat",border:"Kehys",list:"Kuvalista",alt:"Kuvan kuvaus",src:"Kuvan URL",dialog_title:"Lis\u00e4\u00e4/muokkaa kuvaa",missing_alt:"Haluatko varmasti jatkaa lis\u00e4\u00e4m\u00e4tt\u00e4 kuvausta? Kuvauksen puuttuminen saattaa h\u00e4irit\u00e4 sellaisia, jotka k\u00e4ytt\u00e4v\u00e4t tekstipohjaista selainta tai ovat kytkeneet kuvien n\u00e4kymisen pois p\u00e4\u00e4lt\u00e4.",example_img:"Ulkoasun esikatselukuva",misc:"Sekalaiset",mouseout:"mouseoutille",mouseover:"mouseoverille",alt_image:"Vaihtoehtoinen kuva",swap_image:"Vaihda kuva",map:"Kuvakartta",id:"Id",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",classes:"Luokat",style:"Tyyli",long_desc:"Pitk\u00e4n kuvauksen linkki",langcode:"Kielen koodi",langdir:"Kielen suunta",constrain_proportions:"S\u00e4ilyt\u00e4 mittasuhteet",preview:"Esikatselu",title:"Otsikko",general:"Yleiset",tab_advanced:"Edistynyt",tab_appearance:"N\u00e4kyminen",tab_general:"Yleiset"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/fr_dlg.js b/js/tiny_mce/plugins/advimage/langs/fr_dlg.js new file mode 100755 index 000000000..1aa451bbc --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.advimage_dlg',{image_list:"Liste d\'images",align_right:"Droite (flottant)",align_left:"Gauche (flottant)",align_textbottom:"Texte en bas",align_texttop:"Texte en haut",align_bottom:"En bas",align_middle:"Au milieu",align_top:"En haut",align_baseline:"Normal",align:"Alignement",hspace:"Espacement horizontal",vspace:"Espacement vertical",dimensions:"Dimensions",border:"Bordure",list:"Liste d\'images",alt:"Description de l\'image",src:"URL de l\'image",dialog_title:"Ins\u00e9rer / \u00e9diter une image",missing_alt:"\u00cates-vous s\u00fbr de vouloir continuer sans d\u00e9finir de description pour l\'image ? Sans elle, l\'image peut ne pas \u00eatre accessible \u00e0 certains utilisateurs handicap\u00e9s, ceux utilisant un navigateur texte ou ceux qui naviguent sans affichage des images.",example_img:"Apparence de l\'image",misc:"Divers",mouseout:"\u00e0 la sortie de la souris",mouseover:"au survol de la souris",alt_image:"Image alternative",swap_image:"Image de remplacement",map:"Image cliquable",id:"Id",rtl:"De droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",classes:"Classes",style:"Style",long_desc:"Description longue du lien",langcode:"Code de la langue",langdir:"Sens de lecture",constrain_proportions:"Conserver les proportions",preview:"Pr\u00e9visualisation",title:"Titre",general:"G\u00e9n\u00e9ral",tab_advanced:"Avanc\u00e9",tab_appearance:"Apparence",tab_general:"G\u00e9n\u00e9ral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/gl_dlg.js b/js/tiny_mce/plugins/advimage/langs/gl_dlg.js new file mode 100755 index 000000000..83fbb83ea --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.advimage_dlg',{image_list:"Lista de imaxes",align_right:"Dereita",align_left:"Esquerda",align_textbottom:"Texto abaixo",align_texttop:"Texto arriba",align_bottom:"Abaixo",align_middle:"Medio",align_top:"Arriba",align_baseline:"Li\u00f1a base",align:"Ali\u00f1amento",hspace:"Espacio horizontal",vspace:"Espacio vertical",dimensions:"Dimensi\u00f3ns",border:"Bordes",list:"Lista de imaxes",alt:"Descripci\u00f3n da imaxe",src:"URL da imaxe",dialog_title:"Insertar/editar imaxe",missing_alt:"\u00bfEsta seguro de continuar sen introducir unha descripci\u00f3n \u00e1 imaxe? Sen ela pode non ser accesible pra usuarios con discapacidades, ou pra aqueles que usen navegadores de modo texto, ou te\u00f1an deshabilitadas as imaxes da p\u00e1xina.",example_img:"Vista previa da imaxe",misc:"Miscel\u00e1neo",mouseout:"pra mouseout",mouseover:"pra mouseover",alt_image:"Imaxe alternativa",swap_image:"Intercambiar imaxe",map:"Mapa de imaxe",id:"Id",rtl:"Dereita a esquerda",ltr:"Esquerda a dereita",classes:"Clases",style:"Estilos",long_desc:"V\u00ednculo pra descripci\u00f3n larga",langcode:"C\u00f3digo do idioma",langdir:"Direcci\u00f3n do idioma",constrain_proportions:"Bloquear proporci\u00f3ns",preview:"Vista previa",title:"T\u00edtulo",general:"Xeral",tab_advanced:"Avanzado",tab_appearance:"Apariencia",tab_general:"Xeral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/gu_dlg.js b/js/tiny_mce/plugins/advimage/langs/gu_dlg.js new file mode 100755 index 000000000..bbceb8c14 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/gu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gu.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/he_dlg.js b/js/tiny_mce/plugins/advimage/langs/he_dlg.js new file mode 100755 index 000000000..834d4680a --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.advimage_dlg',{image_list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea",align_right:"\u05dc\u05d9\u05de\u05d9\u05df",align_left:"\u05dc\u05e9\u05de\u05d0\u05dc",align_textbottom:"\u05d8\u05e7\u05e1\u05d8 \u05ea\u05d7\u05ea\u05d5\u05df",align_texttop:"\u05d8\u05e7\u05e1\u05d8 \u05e2\u05dc\u05d9\u05d5\u05df",align_bottom:"\u05ea\u05d7\u05ea\u05d9\u05ea",align_middle:"\u05d0\u05de\u05e6\u05e2",align_top:"\u05e2\u05dc\u05d9\u05d5\u05df",align_baseline:"\u05e7\u05d5 \u05d1\u05e1\u05d9\u05e1\u05d9",align:"\u05d9\u05e9\u05d5\u05e8",hspace:"\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",vspace:"\u05e7\u05d5 \u05d0\u05e0\u05db\u05d9",dimensions:"\u05de\u05d9\u05de\u05d3\u05d9\u05dd",border:"\u05d2\u05d1\u05d5\u05dc",list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea",alt:"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",src:"URL \u05e9\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",dialog_title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",missing_alt:"\u05dc\u05d4\u05de\u05e9\u05d9\u05da \u05de\u05d1\u05dc\u05d9 \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05ea\u05d9\u05d0\u05d5\u05e8 \u05dc\u05ea\u05de\u05d5\u05e0\u05d4?",example_img:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4 \u05e9\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",misc:"\u05e9\u05d5\u05e0\u05d5\u05ea",mouseout:"\u05d4\u05e1\u05de\u05df \u05e2\u05d1\u05e8 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",mouseover:"\u05d1\u05e2\u05ea \u05de\u05e2\u05d1\u05e8 \u05d4\u05e1\u05de\u05df \u05e2\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",alt_image:"\u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05dc\u05d9\u05e4\u05d9\u05ea",swap_image:"\u05d4\u05d7\u05dc\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",map:"Image map",id:"Id",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",classes:"Classes",style:"\u05e1\u05d2\u05e0\u05d5\u05df",long_desc:"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e8\u05d5\u05da",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",constrain_proportions:"\u05e9\u05de\u05d9\u05e8\u05d4 \u05e2\u05dc \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",title:"\u05db\u05d5\u05ea\u05e8\u05ea",general:"\u05db\u05dc\u05dc\u05d9",tab_advanced:"\u05de\u05ea\u05e7\u05d3\u05dd",tab_appearance:"\u05de\u05e8\u05d0\u05d4",tab_general:"\u05db\u05dc\u05dc\u05d9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/hi_dlg.js b/js/tiny_mce/plugins/advimage/langs/hi_dlg.js new file mode 100755 index 000000000..288201b47 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/hi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hi.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/hr_dlg.js b/js/tiny_mce/plugins/advimage/langs/hr_dlg.js new file mode 100755 index 000000000..8b0ac01d6 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/hr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hr.advimage_dlg',{image_list:"Lista slika",align_right:"Desno",align_left:"Lijevo",align_textbottom:"Dno teksta",align_texttop:"Vrh teksta",align_bottom:"Dno",align_middle:"Sredina",align_top:"Vrh",align_baseline:"Osnovna linija",align:"Poravnavanje",hspace:"Vodoravni razmak",vspace:"Okomiti razmak",dimensions:"Dimenzije",border:"Obrub",list:"Lista slika",alt:"Opis slike",src:"URL slike",dialog_title:"Umetni/uredi sliku",missing_alt:"Jeste li sigurni da \u017eelite izostaviti opis slike? Slika mo\u017ee biti nedostupna ljudima s pote\u0161ko\u0107ama ili onima koji koriste preglednike bez prikaza slika.",example_img:"Prikaz slike",misc:"Razno",mouseout:"za izlazak mi\u0161a van slike",mouseover:"za prelazak mi\u0161a preko slike",alt_image:"Alternativna slika",swap_image:"Izmjenjiva slika",map:"Karta slike",id:"Id",rtl:"S desna na lijevo",ltr:"S lijeva na desno",classes:"Klase",style:"Stil",long_desc:"Poveznica dugog opisa",langcode:"Kod jezika",langdir:"Smjer jezika",constrain_proportions:"Zadr\u017ei proporcije",preview:"Prikaz",title:"Naslov",general:"Osnovno",tab_advanced:"Napredno",tab_appearance:"Izgled",tab_general:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/hu_dlg.js b/js/tiny_mce/plugins/advimage/langs/hu_dlg.js new file mode 100755 index 000000000..98768e2d0 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.advimage_dlg',{"image_list":"K\u00e9plista","align_right":"Jobbra","align_left":"Balra","align_textbottom":"Sz\u00f6veg alj\u00e1hoz","align_texttop":"Sz\u00f6veg tetej\u00e9hez","align_bottom":"Lentre","align_middle":"K\u00f6z\u00e9pre","align_top":"Fentre","align_baseline":"Alapvonalhoz",align:"Igaz\u00edt\u00e1s",hspace:"V\u00edzszintes t\u00e1vols\u00e1g",vspace:"F\u00fcgg\u0151leges t\u00e1vols\u00e1g",dimensions:"Dimenzi\u00f3k",border:"Keret",list:"K\u00e9plista",alt:"K\u00e9p helyettes\u00edt\u0151 sz\u00f6vege",src:"K\u00e9p URL","dialog_title":"K\u00e9p besz\u00far\u00e1s/szerkeszt\u00e9s","missing_alt":"Biztosan folytatja helyettes\u00edt\u0151 sz\u00f6veg n\u00e9lk\u00fcl? En\u00e9lk\u00fcl a korl\u00e1toz\u00e1ssal \u00e9l\u0151k, sz\u00f6veges b\u00f6ng\u00e9sz\u0151t haszn\u00e1l\u00f3k \u00e9s a k\u00e9pek megjelen\u00edt\u00e9s\u00e9t letilt\u00f3 felhaszn\u00e1l\u00f3k h\u00e1tr\u00e1nyban lesznek.","example_img":"El\u0151n\u00e9zeti k\u00e9p",misc:"Vegyes",mouseout:"K\u00e9p az eg\u00e9rkurzor lev\u00e9telekor",mouseover:"K\u00e9p az eg\u00e9rkurzor f\u00f6l\u00e9vitelekor","alt_image":"Alternat\u00edv k\u00e9p","swap_image":"K\u00e9pcsere",map:"K\u00e9p t\u00e9rk\u00e9p",id:"Id",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",classes:"Class-ok",style:"Style","long_desc":"B\u0151vebb le\u00edr\u00e1s link",langcode:"Nyelv k\u00f3d",langdir:"Nyelv \u00edr\u00e1s ir\u00e1ny","constrain_proportions":"Ar\u00e1nytart\u00e1s",preview:"El\u0151n\u00e9zet",title:"C\u00edm",general:"\u00c1ltal\u00e1nos","tab_advanced":"Halad\u00f3","tab_appearance":"Megjelen\u00e9s","tab_general":"\u00c1ltal\u00e1nos"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/hy_dlg.js b/js/tiny_mce/plugins/advimage/langs/hy_dlg.js new file mode 100755 index 000000000..e4b15a96e --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/hy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hy.advimage_dlg',{image_list:"\u0546\u056f\u0561\u0580\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f",align_right:"\u0538\u057d\u057f \u0561\u057b \u0565\u0566\u0580\u056b",align_left:"\u0538\u057d\u057f \u0571\u0561\u056d \u0565\u0566\u0580\u056b",align_textbottom:"\u0538\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u056b \u057d\u057f\u0578\u0580\u056b\u0576 \u0565\u0566\u0580\u056b",align_texttop:"\u0538\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u056b \u057e\u0565\u0580\u056b\u0576 \u0565\u0566\u0580\u056b",align_bottom:"\u0538\u057d\u057f \u057d\u057f\u0578\u0580\u056b\u0576 \u0565\u0566\u0580\u056b",align_middle:"\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u0581\u0576\u0565\u056c",align_top:"\u0538\u057d\u057f \u057e\u0565\u0580\u056b \u0565\u0566\u0580\u056b",align_baseline:"\u0538\u057d\u057f \u0562\u0561\u0566\u0561\u0575\u056b\u0576 \u0563\u056e\u056b",align:"\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",hspace:"\u0540\u0578\u0580\u056b\u0566. \u0570\u0565\u057c\u0561\u0581\u0578\u0582\u0574",vspace:"\u0548\u0582\u0572\u0572. \u0570\u0565\u057c\u0561\u0581\u0578\u0582\u0574",dimensions:"\u0549\u0561\u0583\u057d\u0565\u0580",border:"\u0535\u0566\u0580",list:"\u0546\u056f\u0561\u0580\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f",alt:"\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",src:"\u0546\u056f\u0561\u0580\u056b \u0570\u0561\u057d\u0581\u0565",dialog_title:"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0576\u056f\u0561\u0580",missing_alt:"\u0534\u0578\u0582\u0584 \u056b\u0580\u0578\u055e\u0584 \u0579\u0565\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u0574 \u0576\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576 \u0576\u0565\u0580\u0561\u057c\u0565\u056c\u0589",example_img:"\u0546\u056f\u0561\u0580\u056b \u0564\u056b\u057f\u0574\u0561\u0576 \u057f\u0565\u057d\u0584",misc:"\u0531\u0575\u056c",mouseout:"\u0570\u0565\u057c\u0561\u0581\u0574\u0561\u0576 \u057a\u0561\u0570\u056b\u0576",mouseover:"\u0544\u0578\u057f\u0565\u0581\u0574\u0561\u0576 \u057a\u0561\u0570\u056b\u0576",alt_image:"\u0531\u056c\u057f\u0565\u0580\u0576\u0561\u057f\u056b\u057e \u0576\u056f\u0561\u0580",swap_image:"Swap",map:"\u0546\u056f\u0561\u0580\u056b map",id:"Id",rtl:"\u0531\u057b\u056b\u0581 \u0571\u0561\u056d",ltr:"\u0541\u0561\u056d\u056b\u0581 \u0561\u057b",classes:"\u0534\u0561\u057d\u0565\u0580",style:"\u0548\u0573",long_desc:"\u0544\u0561\u0576\u0580\u0561\u0574\u0561\u057d\u0576 \u0562\u0561\u0581\u0561\u057f\u0580\u0578\u0582\u0569\u0575\u0561\u0576 \u0570\u0572\u0578\u0582\u0574",langcode:"\u053c\u0565\u0566\u057e\u056b \u056f\u0578\u0564",langdir:"\u053c\u0565\u0566\u057e\u056b \u0578\u0582\u0572\u0572\u057e\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",constrain_proportions:"\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u0579\u0561\u0583\u0565\u0580\u056b \u0570\u0561\u0580\u0561\u0562\u0565\u0580\u0561\u056f\u0581\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",preview:"\u0546\u0561\u056d\u0561\u0564\u056b\u057f\u0578\u0582\u0574",title:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",general:"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576",tab_advanced:"\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579",tab_appearance:"\u054f\u0565\u057d\u0584",tab_general:"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ia_dlg.js b/js/tiny_mce/plugins/advimage/langs/ia_dlg.js new file mode 100755 index 000000000..62229ec04 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ia_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ia.advimage_dlg',{image_list:"\u56fe\u7247\u6e05\u5355",align_right:"\u5c45\u53f3",align_left:"\u5c45\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u5e95\u90e8",align_middle:"\u4e2d\u90e8",align_top:"\u9876\u90e8",align_baseline:"\u57fa\u7ebf",align:"\u5bf9\u9f50\u65b9\u5f0f",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u6e05\u5355",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247\u5730\u5740",dialog_title:"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247",missing_alt:" \u662f\u5426\u4e0d\u4e3a\u56fe\u7247\u52a0\u5165\u8bf4\u660e\u6587\u5b57\uff0c\u5982\u679c\u4e0d\u52a0\u5165\u8bf4\u660e\u6587\u5b57\uff0c\u5c06\u5bfc\u81f4\u4e0d\u652f\u6301\u56fe\u7247\u7684\u6d4f\u89c8\u5668\u5ffd\u7565\u672c\u5185\u5bb9",example_img:"\u9884\u89c8\u56fe\u7247",misc:"\u5176\u5b83",mouseout:"\u9f20\u6807\u79fb\u51fa",mouseover:"\u9f20\u6807\u5212\u8fc7",alt_image:"\u4ea4\u66ff\u56fe\u7247",swap_image:"\u5207\u6362\u56fe\u7247",map:"\u56fe\u7247\u70ed\u70b9",id:"Id",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u6837\u5f0f\u7c7b",style:"\u6837\u5f0f",long_desc:"\u63cf\u8ff0",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u67e5\u627e",general:"\u57fa\u672c",tab_advanced:"\u9ad8\u7ea7",tab_appearance:"\u5916\u89c2",tab_general:"\u57fa\u672c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/id_dlg.js b/js/tiny_mce/plugins/advimage/langs/id_dlg.js new file mode 100755 index 000000000..560b25441 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.advimage_dlg',{image_list:"Daftar Gambar",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensi",border:"Border",list:"Daftar Gambar",alt:"Deskripsi Gambar",src:"URL Gambar",dialog_title:"sisipkan/Ubah Gambar",missing_alt:"Yakin ingin melanjutkan tanpa menyertakan deskripsi gambar? Gambar mungkin tidak dapat diakses oleh beberapa pengguna yang yang memiliki keterbatasan, atau mereka yang menggunakan modus teks browser, atau berselancar di Web dengan gambar dimatikan.",example_img:"Gambar pra-tampil",misc:"Rupa-rupa",mouseout:"untuk mouse out",mouseover:"untuk mouse over",alt_image:"Alternatif gambar",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",classes:"Classes",style:"Style",long_desc:"Deskripsi panjang link",langcode:"Kode bahasa",langdir:"Bahasa",constrain_proportions:"Proporsi dibatasi",preview:"Preview",title:"Judul",general:"Umun",tab_advanced:"Advanced",tab_appearance:"Tampilan",tab_general:"Umum"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/is_dlg.js b/js/tiny_mce/plugins/advimage/langs/is_dlg.js new file mode 100755 index 000000000..e396e06ef --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/is_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('is.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"J\u00f6fnun",hspace:"L\u00e1r\u00e9tt loftun",vspace:"L\u00f3\u00f0r\u00e9tt loftun",dimensions:"St\u00e6r\u00f0ir",border:"Rammi",list:"Myndalisti",alt:"L\u00fdsing",src:"Sl\u00f3\u00f0 \u00e1 mynd",dialog_title:"Setja inn/breyta mynd",missing_alt:"Ertu viss um a\u00f0 halda \u00e1fram \u00e1n l\u00fdsingu myndar? \u00c1n hennar er myndin \u00f3a\u00f0genginleg fyrir suma notendur me\u00f0 skj\u00e1lesara, texta vafra e\u00f0a me\u00f0 sl\u00f6kkt \u00e1 birtingu mynda \u00ed vafranum s\u00ednum.",example_img:"Birting prufumyndar",misc:"\u00ddmislegt",mouseout:"\u00feegar m\u00fas fer af",mouseover:"\u00feegar m\u00fas er yfir",alt_image:"\u00d6nnur mynd",swap_image:"Skipta mynd \u00fat",map:"Image map",id:"Id",rtl:"H\u00e6gri til vinstri",ltr:"Vinstri til h\u00e6gri",classes:"Klasar",style:"St\u00edll",long_desc:"L\u00f6ng l\u00fdsing \u00e1 hlekki",langcode:"K\u00f3\u00f0i tungum\u00e1ls",langdir:"\u00c1tt tungum\u00e1ls",constrain_proportions:"Halda hlutf\u00f6llum",preview:"Forsko\u00f0un",title:"Titill",general:"Almennt",tab_advanced:"N\u00e1nar",tab_appearance:"\u00datlit",tab_general:"Almennt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/it_dlg.js b/js/tiny_mce/plugins/advimage/langs/it_dlg.js new file mode 100755 index 000000000..79c8e873f --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.advimage_dlg',{image_list:"Lista immagini",align_right:"A destra",align_left:"A sinistra",align_textbottom:"In basso al testo",align_texttop:"In alto al testo",align_bottom:"In basso",align_middle:"In mezzo",align_top:"In alto",align_baseline:"Alla base",align:"Allineamento",hspace:"Spaziatura orizzontale",vspace:"Spaziatura verticale",dimensions:"Dimensioni",border:"Bordo",list:"Lista immagini",alt:"Descrizione immagine",src:"URL immagine",dialog_title:"Inserisci/modifica immagine",missing_alt:"Sicuro di continuare senza includere una descrizione dell\'immagine? Senza di essa l\'immagine pu\u00f2 non essere accessibile ad alcuni utenti con disabilit\u00e0, o per coloro che usano un browser testuale oppure che hanno disabilitato la visualizzazione delle immagini nel loro browser.",example_img:"Anteprima aspetto immagine",misc:"Impostazioni varie",mouseout:"quando mouse fuori",mouseover:"quando mouse sopra",alt_image:"Immagine alternativa",swap_image:"Sostituisci immagine",map:"Immagine come mappa",id:"Id",rtl:"Destra verso sinistraa",ltr:"Sinistra verso destra",classes:"Classe",style:"Stile",long_desc:"Descrizione del collegamento",langcode:"codice lingua",langdir:"Direzione testo",constrain_proportions:"Mantieni proporzioni",preview:"Anteprima",title:"Titolo",general:"Generale",tab_advanced:"Avanzate",tab_appearance:"Aspetto",tab_general:"Generale"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ja_dlg.js b/js/tiny_mce/plugins/advimage/langs/ja_dlg.js new file mode 100755 index 000000000..28d5f859d --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ja_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ja.advimage_dlg',{"image_list":"\u4e00\u89a7\u304b\u3089\u9078\u3076","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"\u914d\u7f6e",hspace:"\u5de6\u53f3\u4f59\u767d",vspace:"\u4e0a\u4e0b\u4f59\u767d",dimensions:"\u30b5\u30a4\u30ba",border:"\u67a0\u7dda",list:"\u4e00\u89a7\u304b\u3089\u9078\u3076",alt:"\u753b\u50cf\u306e\u8aac\u660e",src:"\u753b\u50cfURL","dialog_title":"\u753b\u50cf\u306e\u633f\u5165/\u7de8\u96c6","missing_alt":"\u753b\u50cf\u306e\u8aac\u660e\u6587\u304c\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u76ee\u306e\u4e0d\u81ea\u7531\u306a\u65b9\u3084\u30c6\u30ad\u30b9\u30c8\u30d6\u30e9\u30a6\u30b6\u3092\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u65b9\u3078\u914d\u616e\u3057\u3001\u753b\u50cf\u8aac\u660e\u3092\u5165\u529b\u3059\u308b\u3053\u3068\u3092\u304a\u85a6\u3081\u3057\u307e\u3059\u3002","example_img":"Appearance preview image",misc:"\u305d\u306e\u4ed6",mouseout:"\u30de\u30a6\u30b9\u30a2\u30a6\u30c8\u6642",mouseover:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u6642","alt_image":"\u753b\u50cf\u5207\u66ff\u3092\u884c\u3046","swap_image":"\u30ed\u30fc\u30eb\u30aa\u30fc\u30d0\u30fc\u52b9\u679c",map:"\u30a4\u30e1\u30fc\u30b8\u30de\u30c3\u30d7",id:"Id",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",classes:"\u30af\u30e9\u30b9",style:"\u30b9\u30bf\u30a4\u30eb","long_desc":"\u8a73\u7d30\u8aac\u660e\u30ea\u30f3\u30af",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411","constrain_proportions":"\u7e26\u6a2a\u6bd4\u306e\u4fdd\u5b58",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc",title:"\u30bf\u30a4\u30c8\u30eb",general:"\u4e00\u822c","tab_advanced":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","tab_appearance":"\u8868\u793a","tab_general":"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ka_dlg.js b/js/tiny_mce/plugins/advimage/langs/ka_dlg.js new file mode 100755 index 000000000..c29f0483c --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ka_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ka.advimage_dlg',{image_list:"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0",align_right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_textbottom:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_texttop:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_bottom:"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_middle:"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4",align_top:"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_baseline:"\u10e1\u10d0\u10d1\u10d0\u10d6\u10d8\u10e1\u10dd \u10ee\u10d0\u10d6\u10d6\u10d4",align:"\u10db\u10dd\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",hspace:"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",vspace:"\u10d5\u10d4\u10e0\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",dimensions:"\u10d6\u10dd\u10db\u10d4\u10d1\u10d8",border:"\u10e9\u10d0\u10e0\u10e9\u10dd",list:"\u10e1\u10d8\u10d0",alt:"\u10d0\u10e6\u10ec\u10d4\u10e0\u10d0",src:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",dialog_title:"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",missing_alt:"\u10d0\u10e0 \u10d2\u10e1\u10e3\u10e0\u10d7 \u10d0\u10e6\u10ec\u10d4\u10e0\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0? \u10d0\u10e6\u10ec\u10d4\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4 \u10e1\u10e3\u10e0\u10d0\u10d7\u10d8 \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0 \u10d6\u10dd\u10d2\u10d8 \u10db\u10dc\u10d0\u10ee\u10d5\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 \u10d8\u10e7\u10dd\u10e1 \u10db\u10d8\u10e3\u10ec\u10d5\u10d3\u10dd\u10db\u10d4\u10da\u10d8.",example_img:"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",misc:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",mouseout:"\u10e1\u10d8\u10db\u10e8\u10d5\u10d8\u10d3\u10d4\u10e8\u10d8",mouseover:"\u10d9\u10e3\u10e0\u10e1\u10dd\u10e0\u10d8\u10e1 \u10db\u10d8\u10e7\u10d5\u10d0\u10dc\u10d8\u10e1\u10d0\u10e1",alt_image:"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",swap_image:"\u10d3\u10d8\u10dc\u10d0\u10db\u10d8\u10e3\u10e0\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",map:"\u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e0\u10e3\u10e5\u10d0",id:"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0",rtl:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10e1\u10dc\u10d8\u10d5",ltr:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",classes:"\u10d9\u10da\u10d0\u10e1\u10d4\u10d1\u10d8",style:"\u10e1\u10e2\u10d8\u10da\u10d8",long_desc:"\u10d1\u10db\u10e3\u10da\u10d8 \u10e1\u10e0\u10e3\u10da \u10d0\u10e6\u10ec\u10d4\u10e0\u10d0\u10d6\u10d4",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0",constrain_proportions:"\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",preview:"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0 \u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0",title:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",general:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",tab_advanced:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7",tab_appearance:"\u10db\u10d3\u10d2\u10dd\u10db\u10d0\u10e0\u10d4\u10dd\u10d1\u10d0",tab_general:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/kl_dlg.js b/js/tiny_mce/plugins/advimage/langs/kl_dlg.js new file mode 100755 index 000000000..c2b9b0d54 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/kl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('kl.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/km_dlg.js b/js/tiny_mce/plugins/advimage/langs/km_dlg.js new file mode 100755 index 000000000..6a788bcf5 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/km_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('km.advimage_dlg',{image_list:"\u1794\u1789\u17d2\u1787\u17b8\u179a\u17bc\u1794\u1797\u17b6\u1796",align_right:"\u179f\u17d2\u178f\u17b6\u17c6",align_left:"\u1786\u17d2\u179c\u17c1\u1784",align_textbottom:"\u1780\u17d2\u179a\u17c4\u1798\u17a2\u178f\u17d2\u1790\u1794\u1791",align_texttop:"\u179b\u17be\u17a2\u178f\u17d2\u1790\u1794\u1791",align_bottom:"\u1780\u17d2\u179a\u17c4\u1798",align_middle:"\u1780\u178e\u17d2\u178f\u17b6\u179b",align_top:"\u179b\u17be",align_baseline:"\u1781\u17d2\u179f\u17c2\u1782\u17c4\u179b",align:"\u1780\u17b6\u179a\u178f\u1798\u17d2\u179a\u17b9\u1798",hspace:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1795\u17d2\u178f\u17c1\u1780",vspace:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1794\u1789\u17d2\u1788\u179a",dimensions:"\u179c\u17b7\u1798\u17b6\u178f\u17d2\u179a",border:"\u179f\u17ca\u17bb\u1798",list:"\u1794\u1789\u17d2\u1787\u17b8\u179a\u17bc\u1794\u1797\u17b6\u1796",alt:"\u1796\u17b7\u1796\u178e\u17cc\u1793\u17b6\u179a\u17bc\u1794\u1797\u17b6\u1796",src:"\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793URL\u179a\u17bc\u1794\u1797\u17b6\u1796",dialog_title:"\u1794\u1789\u17d2\u1785\u17bc\u179b/\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u179a\u17bc\u1794\u1797\u17b6\u1796",missing_alt:"\u178f\u17be\u17a2\u17d2\u1793\u1780\u1796\u17b7\u178f\u1787\u17b6\u1785\u1784\u17cb\u1794\u1793\u17d2\u178f\u179a\u178a\u17c4\u1799\u1798\u17b7\u1793\u1794\u17b6\u1793\u1794\u1789\u17d2\u1785\u17bc\u179b\u1780\u17b6\u179a\u1796\u17b7\u1796\u178e\u17cc\u1793\u17b6\u179a\u17bc\u1794\u1797\u17b6\u1796\u17ac? \u1794\u17be\u1798\u17b7\u1793\u1798\u17b6\u1793\u17a2\u178f\u17d2\u1790\u1794\u1791\u1796\u178e\u17cc\u1793\u17b6\u1791\u17c1 \u17a2\u17d2\u1793\u1780\u1794\u17d2\u179a\u17be\u1798\u17bd\u1799\u1785\u17c6\u1793\u17bd\u1793\u178a\u17c2\u179b\u1787\u17b6\u1787\u1793\u17a2\u179f\u1798\u178f\u17d2\u178f\u1797\u17b6\u1796 \u17ac\u1780\u17cf\u17a2\u17d2\u1793\u1780\u1794\u17d2\u179a\u17be\u17a7\u1794\u1780\u179a\u178e\u17cd\u179a\u17bb\u1780\u179a\u1780\u178f\u17c2\u17a2\u178f\u17d2\u1790\u1794\u1791 \u1793\u17b7\u1784\u17a2\u17d2\u1793\u1780\u178a\u17c2\u179b\u179a\u1780\u1798\u17be\u179b\u179b\u17be\u1794\u178e\u17d2\u178f\u17b6\u1789\u178a\u17c4\u1799\u1794\u17b7\u1791\u179a\u17bc\u1794\u1797\u17b6\u1796 \u1793\u17b9\u1784\u1798\u17b7\u1793\u17a2\u17b6\u1785\u1798\u17be\u179b\u1783\u17be\u1789\u179a\u17bc\u1794\u1797\u17b6\u1796\u1793\u17c1\u17c7\u1794\u17b6\u1793\u17a1\u17be\u1799\u17d4",example_img:"\u1798\u17be\u179b\u179a\u17bc\u1794\u179a\u17b6\u1784\u179a\u17bc\u1794\u1797\u17b6\u1796\u1787\u17b6\u1798\u17bb\u1793",misc:"\u1795\u17d2\u179f\u17c1\u1784\u17d7",mouseout:"\u1780\u178e\u17d2\u178f\u17bb\u179a\u1785\u17c1\u1789\u1780\u17d2\u179a\u17c5",mouseover:"\u1780\u178e\u17d2\u178f\u17bb\u179a\u178a\u17b6\u1780\u17cb\u179b\u17be",alt_image:"\u179a\u17bc\u1794\u1797\u17b6\u1796\u1787\u17c6\u1793\u17bd\u179f",swap_image:"\u179a\u17bc\u1794\u1797\u17b6\u1796\u1794\u17d2\u178a\u17bc\u179a",map:"\u1795\u17c2\u1793\u1791\u17b8\u179a\u17bc\u1794\u1797\u17b6\u1796",id:"\u179b.\u179f.",rtl:"\u1796\u17b8\u179f\u17d2\u178f\u17b6\u17c6\u1791\u17c5\u1786\u17d2\u179c\u17c1\u1784",ltr:"\u1796\u17b8\u1786\u17d2\u179c\u17c1\u1784\u1791\u17c5\u179f\u17d2\u178f\u17b6\u17c6",classes:"\u1790\u17d2\u1793\u17b6\u1780\u17cb",style:"\u179a\u1785\u1793\u17b6\u1794\u17d2\u1798\u17d0\u1791",long_desc:"\u1796\u17b7\u1796\u178e\u17cc\u1793\u17b6\u1796\u17b7\u179f\u17d2\u178f\u17b6\u179a\u178f\u17c6\u178e",langcode:"\u1780\u17bc\u178a\u1797\u17b6\u179f\u17b6",langdir:"\u1791\u17b7\u179f\u1797\u17b6\u179f\u17b6",constrain_proportions:"\u1794\u1784\u17d2\u1781\u17c6\u17b2\u17d2\u1799\u1798\u17b6\u1793\u179f\u1798\u17b6\u1798\u17b6\u178f\u17d2\u179a",preview:"\u1798\u17be\u179b\u1787\u17b6\u1798\u17bb\u1793",title:"\u1785\u17c6\u178e\u1784\u1787\u17be\u1784",general:"\u1791\u17bc\u1791\u17c5",tab_advanced:"\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb",tab_appearance:"\u179a\u17bc\u1794\u179a\u17b6\u1784",tab_general:"\u1791\u17bc\u1791\u17c5"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ko_dlg.js b/js/tiny_mce/plugins/advimage/langs/ko_dlg.js new file mode 100755 index 000000000..c3096d4f5 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ko_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ko.advimage_dlg',{image_list:"\uc774\ubbf8\uc9c0 \ubaa9\ub85d",align_right:"\uc6b0",align_left:"\uc88c",align_textbottom:"\ubb38\uc790\uc5f4 \uc544\ub798\ub85c",align_texttop:"\ubb38\uc790\uc5f4 \uc704\ub85c",align_bottom:"\ud558",align_middle:"\uc911\uc559",align_top:"\uc0c1",align_baseline:"\uae30\uc900\uc120",align:"\uc815\ub82c",hspace:"\uc88c\uc6b0 \uc5ec\ubc31",vspace:"\uc0c1\ud558 \uc5ec\ubc31",dimensions:"\ud06c\uae30",border:"\ud14c\ub450\ub9ac\uc120",list:"\uc774\ubbf8\uc9c0 \ubaa9\ub85d",alt:"\uc774\ubbf8\uc9c0 \uc124\uba85",src:"\uc774\ubbf8\uc9c0 URL",dialog_title:"\uc774\ubbf8\uc9c0\uc758 \uc0bd\uc785/\ud3b8\uc9d1",missing_alt:"\uc774\ubbf8\uc9c0 \uc124\uba85\uc774 \uc5c6\uc2b5\ub2c8\ub2e4\ub9cc \uc88b\uc2b5\ub2c8\uae4c? \uc774\ubbf8\uc9c0 \uc124\uba85\uc774 \uc5c6\ub294 \uacbd\uc6b0, \ub9f9\uc778\uc774\ub098 \ud14d\uc2a4\ud2b8 \ube0c\ub77c\uc6b0\uc800\ub97c \uc774\uc6a9\ud558\uace0 \uc788\ub294 \ubd84, \ub610 \uc774\ubbf8\uc9c0 \ud45c\uc2dc\ub97c OFF(\uc73c)\ub85c \ud558\uace0 \uc788\ub294 \uc720\uc800\uc758 \uc811\uadfc\uc131\uc774 \uc800\ud558\ub429\ub2c8\ub2e4.",example_img:"\ubbf8\ub9ac\ubcf4\uae30 \uc774\ubbf8\uc9c0",misc:"\uadf8 \uc678",mouseout:"\ub9c8\uc6b0\uc2a4 \uc544\uc6c3 \uc774\ubbf8\uc9c0",mouseover:"\ub9c8\uc6b0\uc2a4 \uc624\ubc84 \uc774\ubbf8\uc9c0",alt_image:"\ub300\uccb4 \uc774\ubbf8\uc9c0",swap_image:"\ub864 \uc624\ubc84 \ud6a8\uacfc",map:"\uc774\ubbf8\uc9c0 \ub9f5",id:"Id",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",classes:"\ud074\ub798\uc2a4",style:"\uc2a4\ud0c0\uc77c",long_desc:"\uc124\uba85 \ub9c1\ud06c",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",langdir:"\ubb38\uc790 \ubc29\ud5a5",constrain_proportions:"\uc885\ud6a1\ube44 \ubcf4\uc874",preview:"\ubbf8\ub9ac\ubcf4\uae30",title:"\uc81c\ubaa9",general:"\uc77c\ubc18",tab_advanced:"\uace0\uae09",tab_appearance:"\ud45c\uc2dc",tab_general:"\uc77c\ubc18"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/lb_dlg.js b/js/tiny_mce/plugins/advimage/langs/lb_dlg.js new file mode 100755 index 000000000..809f7adc0 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/lb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lb.advimage_dlg',{image_list:"Billerl\u00ebscht",align_right:"Riets",align_left:"L\u00e9nks",align_textbottom:"\u00cbnnen am Text",align_texttop:"Uewen am Text",align_bottom:"\u00cbnnen",align_middle:"M\u00ebtteg",align_top:"Uewen",align_baseline:"Zeil",align:"Ausriichtung",hspace:"Horizontalen Ofstand",vspace:"Vertikalen Ofstand",dimensions:"Ausmoossen",border:"Rumm",list:"Billerl\u00ebschten",alt:"Beschreiwung",src:"Adress",dialog_title:"Bild af\u00fcgen/beaarbechten",missing_alt:"W\u00ebll Dir wierklech keng Beschreiwung aginn? Best\u00ebmmt Benotzer mat kierperlechen Aschr\u00e4nkungen k\u00ebnnen sou net dorop zougr\u00e4ifen, genau sou d\u00e9i, d\u00e9i een Textbrowser benotzen oder d\'Uweise vu Biller desaktiv\u00e9iert hunn.",example_img:"Ausgesinn vun der Virschau",misc:"Verschiddenes",mouseout:"bei kengem Mauskontakt",mouseover:"bei Mauskontakt",alt_image:"Alternativt Bild",swap_image:"Bild austauschen",map:"Image-Map",id:"ID",rtl:"Riets no l\u00e9nks",ltr:"L\u00e9nks no riets",classes:"Klassen",style:"Format",long_desc:"Ausf\u00e9ierlech Beschreiwung",langcode:"Sproochcode",langdir:"Schr\u00ebftrichtung",constrain_proportions:"S\u00e4iteverh\u00e4ltnis b\u00e4ibehalen",preview:"Virschau",title:"Titel",general:"Allgemeng",tab_advanced:"Erweidert",tab_appearance:"Ausgesinn",tab_general:"Allgemeng"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/lt_dlg.js b/js/tiny_mce/plugins/advimage/langs/lt_dlg.js new file mode 100755 index 000000000..af56c5a6f --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.advimage_dlg',{image_list:"Paveiksl\u0117li\u0173 s\u0105ra\u0161as",align_right:"De\u0161in\u0117je",align_left:"Kair\u0117je",align_textbottom:"Teksto apa\u010dioje",align_texttop:"Teksto vir\u0161uje",align_bottom:"Apa\u010dioje",align_middle:"Viduryje",align_top:"Vir\u0161uje",align_baseline:"Pradiniame ta\u0161ke",align:"Lygiavimas",hspace:"Horizontalus tarpas",vspace:"Vertikalus tarpas",dimensions:"I\u0161matavimai",border:"R\u0117melis",list:"Paveiksl\u0117li\u0173 s\u0105ra\u0161as",alt:"Paveiksl\u0117lio apra\u0161as",src:"Paveiksl\u0117lio URL adresas",dialog_title:"\u012eterpti/redaguoti paveiksl\u0117l\u012f",missing_alt:"Ar norite t\u0119sti ne\u012fved\u0119 paveiksl\u0117lio apra\u0161o? Be apra\u0161o jo neatpa\u017eins \u017emon\u0117s su negalia, tie kurie naudoja tekstines nar\u0161ykles, arba tie, kurie nar\u0161o internet\u0105 i\u0161jung\u0119 paveiksl\u0117li\u0173 rodym\u0105.",example_img:"I\u0161vaizdos per\u017ei\u016bros paveiksl\u0117lis",misc:"\u012evair\u016bs",mouseout:"nuvedant pel\u0119",mouseover:"u\u017evedant pele",alt_image:"Alternatyvus paveiksl\u0117lis",swap_image:"Sukeisti paveiksl\u0117l\u012f",map:"Paveiksl\u0117lio planas",id:"Id",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",classes:"Klas\u0117s",style:"Stilius",long_desc:"Ilgo apra\u0161o nuoroda",langcode:"Kalbos kodas",langdir:"Kalbos teksto kryptis",constrain_proportions:"Priverstin\u0117s proporcijos",preview:"Per\u017ei\u016bra",title:"Pavadinimas",general:"Bendra",tab_advanced:"I\u0161pl\u0117sta",tab_appearance:"I\u0161vaizda",tab_general:"Bendra"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/lv_dlg.js b/js/tiny_mce/plugins/advimage/langs/lv_dlg.js new file mode 100755 index 000000000..b4e6546e0 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.advimage_dlg',{image_list:"Att\u0113lu saraksts",align_right:"Pa labi",align_left:"Pa kreisi",align_textbottom:"Teksta apak\u0161a",align_texttop:"Teksta aug\u0161a",align_bottom:"Apak\u0161a",align_middle:"Vidus",align_top:"Aug\u0161a",align_baseline:"Pati apak\u0161a",align:"Novietojums",hspace:"Horizont\u0101l\u0101 atstarpe",vspace:"Vertik\u0101l\u0101 atstarpe",dimensions:"Izm\u0113ri",border:"Apmale",list:"Att\u0113lu saraksts",alt:"Att\u0113la apraksts",src:"Att\u0113la URL",dialog_title:"Ievietot/Redi\u0123\u0113t att\u0113lu",missing_alt:"Vai esat p\u0101rliecin\u0101ti, ka v\u0113laties turpin\u0101t, neiek\u013caujot bildes aprakstu? Bez apraksta bilde neb\u016bs saprotama lietot\u0101jiem ar nesp\u0113ju redz\u0113t, vai lietotajiem, kas lieto teksta p\u0101rl\u016bkus, vai izsl\u0113gu\u0161i bil\u017eu r\u0101d\u012b\u0161anu.",example_img:"Att\u0113la izskata priek\u0161skats",misc:"Da\u017e\u0101di",mouseout:"kad pele \u0101rpus",mouseover:"kad pele virs",alt_image:"Otra bilde",swap_image:"Main\u012bt bildi",map:"Att\u0113lkarte",id:"Id",rtl:"No lab\u0101s uz kreiso",ltr:"No kreis\u0101s uz labo",classes:"Klases",style:"Stils",long_desc:"Saite uz garo aprakstu",langcode:"Valodas kods",langdir:"Valodas virziens",constrain_proportions:"Saglab\u0101t proporcijas",preview:"Priek\u0161skats",title:"Nosaukums",general:"Iestat\u012bjumi",tab_advanced:"Papildiestat\u012bjumi",tab_appearance:"Izskats",tab_general:"Iestat\u012bjumi"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/mk_dlg.js b/js/tiny_mce/plugins/advimage/langs/mk_dlg.js new file mode 100755 index 000000000..fd9b0b778 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/mk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mk.advimage_dlg',{image_list:"Lista slika",align_right:"Desno",align_left:"Levo",align_textbottom:"Dno teksta",align_texttop:"Vrh teksta",align_bottom:"Dno",align_middle:"Sredina",align_top:"Vrh",align_baseline:"Osnovna linija",align:"Poravnavanje",hspace:"Vodoravni razmak",vspace:"Okomiti razmak",dimensions:"Dimenzije",border:"Obrub",list:"Lista slika",alt:"Opis slike",src:"URL slike",dialog_title:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi sliku",missing_alt:"Jeste li sigurni da \u017eelite izostaviti opis slike? Slika mo\u017ee biti nedostupna ljudima s pote\u0161ko\u0107ama ili onima koji koriste preglednike bez prikaza slika.",example_img:"Prikaz slike",misc:"Razno",mouseout:"za izlazak mi\u0161a van slike",mouseover:"za prelazak mi\u0161a preko slike",alt_image:"Alternativna slika",swap_image:"Izmjenjiva slika",map:"Karta slike",id:"Id",rtl:"S desna na levo",ltr:"S leva na desno",classes:"Klase",style:"Stil",long_desc:"Poveznica dugog opisa",langcode:"Kod jezika",langdir:"Smjer jezika",constrain_proportions:"Zadr\u017ei proporcije",preview:"Prikaz",title:"\u041d\u0430\u0441\u043b\u043e\u0432",general:"Osnovno",tab_advanced:"Napredno",tab_appearance:"Izgled",tab_general:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ml_dlg.js b/js/tiny_mce/plugins/advimage/langs/ml_dlg.js new file mode 100755 index 000000000..5a0c99e13 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ml_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ml.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/mn_dlg.js b/js/tiny_mce/plugins/advimage/langs/mn_dlg.js new file mode 100755 index 000000000..7cf152d95 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/mn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mn.advimage_dlg',{image_list:"\u0417\u0443\u0440\u0433\u0438\u0439\u043d \u0436\u0430\u0433\u0441\u0430\u0430\u043b\u0442",align_right:"\u0411\u0430\u0440\u0443\u0443\u043d",align_left:"\u0417\u04af\u04af\u043d",align_textbottom:"\u0411\u0438\u0447\u0432\u044d\u0440\u0438\u0439\u043d \u0434\u043e\u043e\u0440",align_texttop:"\u0411\u0438\u0447\u0432\u044d\u0440\u0438\u0439\u043d \u0434\u044d\u044d\u0440",align_bottom:"\u0414\u043e\u043e\u0440",align_middle:"\u0414\u0443\u043d\u0434",align_top:"\u0414\u044d\u044d\u0440",align_baseline:"\u041c\u04e9\u0440",align:"\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",hspace:"\u0425\u044d\u0432\u0442\u044d\u044d \u0430\u043b\u0441\u043b\u0430\u043b\u0442",vspace:"\u0411\u043e\u0441\u043e\u043e \u0430\u043b\u0441\u043b\u0430\u043b\u0442",dimensions:"\u0425\u044d\u043c\u0436\u044d\u044d\u0441",border:"\u0425\u04af\u0440\u044d\u044d",list:"\u0417\u0443\u0440\u0433\u0438\u0439\u043d \u0436\u0430\u0433\u0441\u0430\u0430\u043b\u0442",alt:"\u0422\u0430\u0439\u043b\u0431\u0430\u0440",src:"\u0425\u0430\u044f\u0433",dialog_title:"\u0417\u0443\u0440\u0430\u0433 \u043e\u0440\u0443\u0443\u043b\u0430\u0445/\u0437\u0430\u0441\u0430\u0445",missing_alt:"\u0422\u0430 \u04af\u043d\u044d\u0445\u044d\u044d\u0440 \u0442\u0430\u0439\u043b\u0431\u0430\u0440 \u0445\u0438\u0439\u0445\u0433\u04af\u0439 \u0431\u0430\u0439\u0445\u044b\u0433 \u0445\u04af\u0441\u044d\u0436 \u0431\u0430\u0439\u043d\u0430 \u0443\u0443? \u0417\u0430\u0440\u0438\u043c \u0445\u04e9\u0433\u0436\u043b\u0438\u0439\u043d \u0431\u044d\u0440\u0445\u0448\u044d\u044d\u043b\u0442\u044d\u0439 \u044d\u0441\u0432\u044d\u043b \u0431\u0438\u0447\u0432\u044d\u0440 \u0445\u04e9\u0442\u04e9\u0447 \u0430\u0448\u0438\u0433\u043b\u0430\u0436 \u0431\u0443\u0439 \u044d\u0441\u0432\u044d\u043b \u0437\u0443\u0440\u0430\u0433 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445\u044b\u0433 \u0445\u0430\u0430\u0441\u0430\u043d \u0445\u044d\u0440\u044d\u0433\u043b\u044d\u0433\u0447\u0438\u0434 \u0445\u0430\u043d\u0434\u0430\u0445 \u0431\u043e\u043b\u043e\u043c\u0436\u0433\u04af\u0439\u0433 \u0430\u043d\u0445\u0430\u0430\u0440\u043d\u0430 \u0443\u0443.",example_img:"\u041d\u044f\u0433\u0442\u043b\u0430\u043d \u0445\u0430\u0440\u0430\u0445",misc:"\u042f\u043d\u0437 \u0431\u04af\u0440\u0438\u0439\u043d \u0437\u04af\u0439\u043b\u0441",mouseout:"\u0425\u0443\u043b\u0433\u0430\u043d\u0430 \u0433\u0430\u0440\u0430\u0445\u0430\u0434",mouseover:"\u0425\u0443\u043b\u0433\u0430\u043d\u0430 \u043e\u0440\u043e\u0445\u043e\u0434",alt_image:"\u0425\u043e\u0451\u0440\u0434\u043e\u0433\u0447 \u0437\u0443\u0440\u0430\u0433",swap_image:"\u0417\u0443\u0440\u0430\u0433 \u0441\u043e\u043b\u0438\u0445",map:"\u0411\u04af\u0441\u0447\u0438\u043b\u0441\u0430\u043d \u0437\u0443\u0440\u0430\u0433",id:"\u0422\u0422",rtl:"\u0411\u0430\u0440\u0443\u0443\u043d\u0430\u0430\u0441 \u0437\u04af\u04af\u043d",ltr:"\u0417\u04af\u04af\u043d\u044d\u044d\u0441 \u0431\u0430\u0440\u0443\u0443\u043d",classes:"\u0410\u043d\u0433\u0438",style:"\u0424\u043e\u0440\u043c\u0430\u0442",long_desc:"\u0414\u044d\u043b\u0433\u044d\u0440\u044d\u043d\u0433\u04af\u0439 \u0442\u0430\u0439\u043b\u0431\u0430\u0440",langcode:"\u0425\u044d\u043b\u043d\u0438\u0439 \u043a\u043e\u0434",langdir:"\u0411\u0438\u0447\u0433\u0438\u0439\u043d \u0447\u0438\u0433\u043b\u044d\u043b",constrain_proportions:"\u0425\u044d\u043c\u0436\u044d\u044d\u0441",preview:"\u041d\u044f\u0433\u0442\u043b\u0430\u043d \u0445\u0430\u0440\u0430\u0445",title:"\u0413\u0430\u0440\u0447\u0438\u0433",general:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439",tab_advanced:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d",tab_appearance:"\u0425\u0430\u0440\u0430\u0433\u0434\u0430\u0446",tab_general:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ms_dlg.js b/js/tiny_mce/plugins/advimage/langs/ms_dlg.js new file mode 100755 index 000000000..c221996a4 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ms_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ms.advimage_dlg',{image_list:"Senarai imej",align_right:"Kanan",align_left:"Kiri",align_textbottom:"Teks bawah",align_texttop:"Teks atas",align_bottom:"Bawah",align_middle:"Tengah",align_top:"Atas",align_baseline:"Garis pangkal",align:"Penyelarian",hspace:"Ruangan ufuk",vspace:"Ruangan tegak",dimensions:"Dimensi",border:"Sempadan",list:"Senarai imej",alt:"Huraian imej",src:"URL imej",dialog_title:"Sisip/sunting imej",missing_alt:"Adakah anda pasti untuk teruskan tanpa masukkan huraian imej? Tanpa huraian, imej mungkin tidak dapat difahami oleh orang yang kurang upaya, orang yang menggunakan pelayaran teks.",example_img:"Penglihatan pratonton imej",misc:"Pelbagai",mouseout:"untuk tetikus di luar",mouseover:"untuk tetikus di atas",alt_image:"Imej alternatif",swap_image:"Tukar imej",map:"Imej map",id:"Id",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",classes:"Kelas-kelas",style:"Gaya",long_desc:"Pautan huraian panjang",langcode:"Kod bahasa",langdir:"Arah bahasa",constrain_proportions:"Kadar tahanan",preview:"Pratonton",title:"Tajuk",general:"Am",tab_advanced:"Lanjutan",tab_appearance:"Penglihatan",tab_general:"Am"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/my_dlg.js b/js/tiny_mce/plugins/advimage/langs/my_dlg.js new file mode 100755 index 000000000..46de27e8b --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/my_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('my.advimage_dlg',{image_list:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f \u1005\u102c\u101b\u1004\u103a\u1038",align_right:"\u100a\u102c",align_left:"\u1018\u101a\u103a",align_textbottom:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001\u1010\u103d\u1004\u103a \u1005\u102c\u101e\u102c\u1038",align_texttop:"\u1011\u102d\u1015\u103a\u1010\u103d\u1004\u103a \u1005\u102c\u101e\u102c\u1038",align_bottom:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001",align_middle:"\u1021\u101c\u101a\u103a",align_top:"\u1011\u102d\u1015\u103a",align_baseline:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001\u1019\u103b\u1009\u103a\u1038",align:"\u1001\u103b\u102d\u1014\u103a\u100a\u102d\u103e\u1019\u103e\u102f",hspace:"\u1021\u101c\u103b\u103e\u102c\u1038\u101c\u102d\u102f\u1000\u103a \u1000\u103d\u1000\u103a\u101c\u1015\u103a",vspace:"\u1031\u1012\u102b\u1004\u103a\u101c\u102d\u102f\u1000\u103a \u1000\u103d\u1000\u103a\u101c\u1015\u103a",dimensions:"\u1021\u1010\u102d\u102f\u1004\u103a\u1038\u1021\u1011\u103d\u102c\u1019\u103b\u102c\u1038",border:"\u1014\u101a\u103a\u1005\u100a\u103a\u1038",list:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f \u1005\u102c\u101b\u1004\u103a\u1038",alt:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f \u1005\u102c\u100a\u103d\u103e\u1014\u103a\u1038",src:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f URL",dialog_title:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f \u1011\u100a\u103a\u1037/\u103c\u1015\u1004\u103a",missing_alt:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f\u1005\u102c\u100a\u103d\u103e\u1014\u103a\u1038\u1019\u1015\u102b\u1018\u1032 \u1006\u1000\u103a\u101c\u1000\u103a\u101c\u102f\u1015\u103a\u1031\u1006\u102c\u1004\u103a\u101c\u102d\u102f\u1010\u102c \u1031\u101e\u1001\u103b\u102c\u101b\u1032\u1037\u101c\u102c\u1038? \u1011\u102d\u102f\u101e\u102d\u102f\u1037 \u1031\u1016\u102c\u103a\u103c\u1015\u1001\u103b\u1000\u103a \u1005\u102c\u100a\u103d\u103e\u1014\u103a\u1038 \u1019\u1015\u102b\u101c\u103b\u103e\u1004\u103a \u101b\u102f\u1015\u103a\u1015\u1036\u102f\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1015\u102d\u1010\u103a\u1011\u102c\u1038\u103c\u1015\u102e\u1038 Web \u1000\u102d\u102f\u103c\u1000\u100a\u103a\u1037\u101b\u103e\u102f\u1031\u1014\u1031\u101e\u102c (\u101e\u102d\u102f\u1037) \u1005\u102c\u101e\u102c\u1038 \u1018\u1031\u101b\u102c\u1000\u103a\u1007\u102c\u1000\u102d\u102f \u1021\u101e\u1036\u102f\u1038\u103c\u1015\u102f\u1031\u1014\u1031\u101e\u102c (\u101e\u102d\u102f\u1037) \u1000\u102d\u102f\u101a\u103a\u1001\u1014\u1039\u1013\u102c\u1019\u101e\u1014\u103a\u1005\u103d\u1019\u103a\u1038\u1031\u101e\u102c \u1021\u1001\u103b\u102d\u102f\u1037\u101e\u1036\u102f\u1038\u101e\u1030\u1019\u103b\u102c\u1038 \u1011\u102d\u102f\u101b\u102f\u1015\u103a\u1015\u1036\u102f\u1000\u102d\u102f \u101b\u101a\u1030\u101e\u1036\u102f\u1038\u1005\u103d\u1032\u1014\u102d\u102f\u1004\u103a\u1019\u100a\u103a \u1019\u101f\u102f\u1010\u103a\u1015\u102b\u104b",example_img:"\u1021\u1005\u1019\u103a\u1038\u103c\u1000\u100a\u103a\u1037 \u101b\u102f\u1015\u103a\u1015\u1036\u102f \u1021\u101e\u103d\u1004\u103a\u1021\u103c\u1015\u1004\u103a",misc:"\u1031\u101e\u102c\u1004\u103a\u1038\u1031\u103c\u1015\u102c\u1004\u103a\u1038\u1031\u1011\u103d\u101c\u102c",mouseout:"For Mouse Out",mouseover:"For Mouse Over",alt_image:"\u1021\u1011\u1030\u1038\u103c\u1015\u102f \u101b\u102f\u1015\u103a\u1015\u1036\u102f",swap_image:"Swap Image",map:"Image Map",id:"ID",rtl:"\u100a\u102c\u1019\u103e \u1018\u101a\u103a",ltr:"\u1018\u101a\u103a\u1019\u103e \u100a\u102c",classes:"Class \u1019\u103b\u102c\u1038",style:"\u1005\u1010\u102d\u102f\u1004\u103a",long_desc:"\u101b\u103e\u100a\u103a\u101c\u103b\u102c\u1038\u1031\u101e\u102c \u1031\u1016\u102c\u103a\u103c\u1015\u1001\u103b\u1000\u103a \u1001\u103b\u102d\u1010\u103a\u1006\u1000\u103a\u101c\u102d\u1015\u103a\u1005\u102c",langcode:"\u1018\u102c\u101e\u102c\u1005\u1000\u102c\u1038 \u1000\u102f\u1010\u103a",langdir:"\u1005\u102c\u1031\u101b\u1038\u101e\u102c\u1038\u1019\u103e\u102f \u1025\u102e\u1038\u1010\u100a\u103a\u1001\u103b\u1000\u103a",constrain_proportions:"\u1021\u1001\u103b\u102d\u102f\u1038\u1021\u1005\u102c\u1038 \u1011\u102d\u1014\u103a\u1038\u100a\u102d\u103e",preview:"\u1021\u1005\u1019\u103a\u1038\u103c\u1000\u100a\u103a\u1037",title:"\u1031\u1001\u102b\u1004\u103a\u1038\u1005\u102e\u1038\u1021\u1019\u100a\u103a",general:"\u1021\u1031\u1011\u103d\u1031\u1011\u103d",tab_advanced:"\u1021\u1011\u1030\u1038",tab_appearance:"\u1021\u101e\u103d\u1004\u103a\u1021\u103c\u1015\u1004\u103a",tab_general:"\u1021\u1031\u1011\u103d\u1031\u1011\u103d"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/nb_dlg.js b/js/tiny_mce/plugins/advimage/langs/nb_dlg.js new file mode 100755 index 000000000..9d6a6e377 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/nb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nb.advimage_dlg',{"image_list":"Bildeliste","align_right":"H\u00f8yre","align_left":"Venstre","align_textbottom":"Tekst bunn","align_texttop":"Tekst topp","align_bottom":"Bunn","align_middle":"Midtstilt","align_top":"Topp","align_baseline":"Grunnlinje",align:"Justering",hspace:"Horisontal avstand",vspace:"Vertikal avstand",dimensions:"Dimensjoner",border:"Ramme",list:"Bildeliste",alt:"Bildebeskrivelse",src:"Bildets URL","dialog_title":"Sett inn / endre bilde","missing_alt":"Er du sikker p\u00e5 at du vil fortsette uten \u00e5 sette inn en beskrivelse av bildet? Uten beskrivelse vil bildet ikke gi mening for enkelte funksjonshemmede eller for personer som bruker en nettleser med bildevisning avsl\u00e5tt.","example_img":"Utseende Forh\u00e5ndsvisning bilde",misc:"Annet",mouseout:"for musepeker utenfor",mouseover:"for musepeker p\u00e5","alt_image":"Alternativt bilde","swap_image":"Bytt bilde",map:"Bildekart",id:"Id",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",classes:"Klasser",style:"Stil","long_desc":"Lang beskrivelse",langcode:"Spr\u00e5kkode",langdir:"Skriftretning","constrain_proportions":"Behold st\u00f8rrelsesforhold",preview:"Forh\u00e5ndsvisning",title:"Tittel",general:"Generelt","tab_advanced":"Avansert","tab_appearance":"Utseende","tab_general":"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/nl_dlg.js b/js/tiny_mce/plugins/advimage/langs/nl_dlg.js new file mode 100755 index 000000000..a004b3e24 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.advimage_dlg',{"image_list":"Lijst","align_right":"Rechts","align_left":"Links","align_textbottom":"Onderkant tekst","align_texttop":"Bovenkant tekst","align_bottom":"Onder","align_middle":"Midden","align_top":"Boven","align_baseline":"Basislijn",align:"Uitlijning",hspace:"Horizontale ruimte",vspace:"Verticale ruimte",dimensions:"Afmetingen",border:"Rand",list:"Lijst",alt:"Beschrijving",src:"Bestand/URL","dialog_title":"Afbeelding invoegen/bewerken","missing_alt":"Wilt u de afbeelding zonder beschrijving invoegen? De afbeelding wordt dan mogelijk niet opgemerkt door mensen met een visuele handicap, of welke zonder afbeeldingen browsen.","example_img":"Voorbeeldweergave",misc:"Diversen",mouseout:"Bij muis uit",mouseover:"Bij muis over","alt_image":"Alternatieve afbeeldingen","swap_image":"Afbeelding wisselen",map:"Afbeeldingsplattegrond",id:"Id",rtl:"Van rechts naar links",ltr:"Van links naar rechts",classes:"Klasses",style:"Stijl","long_desc":"Uitgebreide beschrijving",langcode:"Taalcode",langdir:"Taalrichting","constrain_proportions":"Verhouding behouden",preview:"Voorbeeld",title:"Titel",general:"Algemeen","tab_advanced":"Geavanceerd","tab_appearance":"Weergave","tab_general":"Algemeen"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/nn_dlg.js b/js/tiny_mce/plugins/advimage/langs/nn_dlg.js new file mode 100755 index 000000000..60cec12bb --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/nn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nn.advimage_dlg',{image_list:"Liste med bilete",align_right:"H\u00f8gre",align_left:"Venstre",align_textbottom:"Tekst botn",align_texttop:"Tekst topp",align_bottom:"Botn",align_middle:"Midtstilt",align_top:"Topp",align_baseline:"Basislinje",align:"Justering",hspace:"Horisontal avstand",vspace:"Vertikal avstand",dimensions:"Dimensjonar",border:"Ramme",list:"Bileteliste",alt:"Bileteomtale",src:"Bilete-URL",dialog_title:"Set inn / endre bilete",missing_alt:"Er du sikker p\u00e5 at du vil fortsetje utan \u00e5 setje inn ei omtale av biletet? Utan omtale vil biletet ikkje gje meining for enkelte funksjonshemma eller for personar som bruker ein nettlesar med biletvisinga avsl\u00e5tt.",example_img:"Sj\u00e5 f\u00f8rebels utkast av bilete",misc:"Anna",mouseout:"for musepeikar utanfor",mouseover:"for musepeikar over",alt_image:"Alternativt bilete",swap_image:"Byt bilete",map:"Biletekart",id:"Id",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",classes:"Klasser",style:"Stil",long_desc:"Lang omtale",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",constrain_proportions:"Behald proporsjonar",preview:"Sj\u00e5 f\u00f8rebels utkast",title:"Tittel",general:"Generelt",tab_advanced:"Avansert",tab_appearance:"Utsj\u00e5nad",tab_general:"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/no_dlg.js b/js/tiny_mce/plugins/advimage/langs/no_dlg.js new file mode 100755 index 000000000..1f2d40f52 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.advimage_dlg',{"image_list":"Liste over bilder","align_right":"H\u00f8yre","align_left":"Venstre","align_textbottom":"Tekst bunn","align_texttop":"Tekst topp","align_bottom":"Bunn","align_middle":"Midtstilt","align_top":"Topp","align_baseline":"Basislinje",align:"Justering",hspace:"Horisontal avstand",vspace:"Vertikal avstand",dimensions:"Dimensjoner",border:"Ramme",list:"Bildeliste",alt:"Bildebeskrivelse",src:"Bilde URL","dialog_title":"Sett inn/editer bilde","missing_alt":"Er du sikker du vil fortsette uten \u00e5 sette inn bildebeskrivelse? Uten beskrivelse vil ikke bildet gi mening for enkelte funksjonshemmde eller personer som bruker nettleser med avsl\u00e5tt bildevising.","example_img":"Utseende forh\u00e5ndsvisning",misc:"Diverse",mouseout:"for musepeker utenfor",mouseover:"for musepeker over","alt_image":"Alternativt bilde","swap_image":"Bytt bilde",map:"Bildekart",id:"Id",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",classes:"Klasse",style:"Stil","long_desc":"Lang beskrivelse",langcode:"Spr\u00e5k kode",langdir:"Skriftretning","constrain_proportions":"Behold proporsjoner",preview:"Forh\u00e5ndsvisning",title:"Tittel",general:"Generelt","tab_advanced":"Avansert","tab_appearance":"Utseende","tab_general":"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/pl_dlg.js b/js/tiny_mce/plugins/advimage/langs/pl_dlg.js new file mode 100755 index 000000000..fa8b023a5 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.advimage_dlg',{"image_list":"Lista obrazk\u00f3w","align_right":"Prawy","align_left":"Lewy","align_textbottom":"Tekst dolny","align_texttop":"Tekst g\u00f3rny","align_bottom":"Dolny","align_middle":"\u015arodkowy","align_top":"G\u00f3rny","align_baseline":"G\u0142\u00f3wna linia",align:"Wyr\u00f3wnanie",hspace:"Odst\u0119p poziomy",vspace:"Odst\u0119p pionowy",dimensions:"Rozmiary",border:"Obramowanie",list:"Lista obrazk\u00f3w",alt:"Opis obrazka",src:"URL obrazka","dialog_title":"Wklej/edytuj obraz","missing_alt":"Czy jeste\u015b pewien, \u017ce chcesz kontynuowa\u0107 bez opisu obrazka? Obrazek bez opisu mo\u017ce nie by\u0107 dost\u0119pny dla u\u017cytkownik\u00f3w u\u017cywaj\u0105cych tekstowe przegl\u0105darki lub przegl\u0105daj\u0105cych stron\u0119 z wy\u0142\u0105czonymi obrazkami.","example_img":"Podgl\u0105d wygl\u0105du obrazka",misc:"R\u00f3\u017cne",mouseout:"dla mouseout",mouseover:"dla mouseover","alt_image":"alternatywny obrazek","swap_image":"Zamiana obrazka",map:"Mapa obrazu",id:"Id",rtl:"Z prawej do lewej",ltr:"Z lewej do prawej",classes:"Klasy",style:"Styl","long_desc":"D\u0142ugi opis linku",langcode:"Kod j\u0119zyka",langdir:"Kierunek j\u0119zyka","constrain_proportions":"Zachowaj proporcje",preview:"Podgl\u0105d",title:"Tytu\u0142",general:"Og\u00f3lne","tab_advanced":"Zaawansowane","tab_appearance":"Wygl\u0105d","tab_general":"Og\u00f3lne"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ps_dlg.js b/js/tiny_mce/plugins/advimage/langs/ps_dlg.js new file mode 100755 index 000000000..58a4ac5ce --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ps_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ps.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/pt_dlg.js b/js/tiny_mce/plugins/advimage/langs/pt_dlg.js new file mode 100755 index 000000000..ba7d07e3a --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.advimage_dlg',{image_list:"Lista de imagens",align_right:"Direita",align_left:"Esquerda",align_textbottom:"Base do texto",align_texttop:"Topo do texto",align_bottom:"Abaixo",align_middle:"Meio",align_top:"Topo",align_baseline:"Sobre a linha de texto",align:"Alinhamento",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",dimensions:"Dimens\u00f5es",border:"Limite",list:"Lista de imagens",alt:"Descri\u00e7\u00e3o da imagem",src:"Endere\u00e7o da imagem",dialog_title:"Inserir/editar imagem",missing_alt:"Tem certeza que deseja continuar sem acrescentar uma descri\u00e7\u00e3o \u00e0 imagem? (Isto pode gerar problemas de acessibilidade em alguns navegadores)",example_img:"Pr\u00e9-Visualiza\u00e7\u00e3o",misc:"Misto",mouseout:"mouseout",mouseover:"mouseover",alt_image:"Imagem alternativa",swap_image:"Trocar imagem",map:"Mapa de imagem",id:"Id",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",classes:"Classes",style:"Estilo",long_desc:"Descri\u00e7\u00e3o extensa",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto",constrain_proportions:"Manter propor\u00e7\u00f5es",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",title:"T\u00edtulo",general:"Geral",tab_advanced:"Avan\u00e7ado",tab_appearance:"Apar\u00eancia",tab_general:"Geral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ro_dlg.js b/js/tiny_mce/plugins/advimage/langs/ro_dlg.js new file mode 100755 index 000000000..2df6247d0 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.advimage_dlg',{image_list:"List\u0103 de imagini",align_right:"Dreapta",align_left:"St\u00e2nga",align_textbottom:"Textul jos",align_texttop:"Textul sus",align_bottom:"Jos",align_middle:"La mijloc",align_top:"Sus",align_baseline:"Baseline",align:"Aliniere",hspace:"Spa\u0163iu orizontal",vspace:"Spa\u0163iu vertical",dimensions:"Dimensiuni",border:"Bordur\u0103",list:"List\u0103 imagini",alt:"Descriere imagine",src:"URL imagine",dialog_title:"Inserare/editare imagine",missing_alt:"Sigur dori\u0163i s\u0103 continua\u0163i f\u0103r\u0103 a introduce o descriere a imaginii?",example_img:"Imagine mic\u0103",misc:"Diverse",mouseout:"Pentru maus \u00een afar\u0103",mouseover:"Pentru maus deasupra",alt_image:"Imagine alternativ\u0103",swap_image:"Schimb\u0103 imaginea",map:"Hart\u0103 imagine",id:"Id",rtl:"De la dreapta la st\u00e2nga",ltr:"De la st\u00e2nga la dreapta",classes:"Clase",style:"Stil",long_desc:"Descriere leg\u0103tur\u0103",langcode:"Cod limb\u0103",langdir:"Direc\u0163ie limb\u0103",constrain_proportions:"Men\u0163ine propor\u0163ii",preview:"Previzualizare",title:"Titlu",general:"General",tab_advanced:"Avansat",tab_appearance:"Afi\u015fare",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ru_dlg.js b/js/tiny_mce/plugins/advimage/langs/ru_dlg.js new file mode 100755 index 000000000..2b984e5c3 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",hspace:"\u0413\u043e\u0440\u0438\u0437. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",src:"\u0410\u0434\u0440\u0435\u0441","dialog_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","missing_alt":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f? \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c.","example_img":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",misc:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",mouseout:"\u0412 \u043f\u043e\u043a\u043e\u0435",mouseover:"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","alt_image":"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","swap_image":"\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",map:"\u041a\u0430\u0440\u0442\u0430 \u0441\u0441\u044b\u043b\u043e\u043a",id:"\u0418\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",classes:"\u041a\u043b\u0430\u0441\u0441\u044b",style:"\u0421\u0442\u0438\u043b\u044c","long_desc":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",title:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",general:"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","tab_advanced":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","tab_appearance":"\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","tab_general":"\u041e\u0431\u0449\u0435\u0435"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/sc_dlg.js b/js/tiny_mce/plugins/advimage/langs/sc_dlg.js new file mode 100755 index 000000000..ff2ef1bf5 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/sc_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sc.advimage_dlg',{image_list:"\u56fe\u7247\u5217\u8868",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u4e0b\u65b9",align_middle:"\u5c45\u4e2d",align_top:"\u4e0a\u65b9",align_baseline:"\u57fa\u7ebf",align:"\u5bf9\u9f50\u65b9\u5f0f",hspace:"\u5782\u76f4\u95f4\u8ddd",vspace:"\u6c34\u51c6\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u5217\u8868",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247\u7f51\u5740",dialog_title:"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",missing_alt:"\u8bf7\u95ee\u662f\u5426\u786e\u5b9a\u4e0d\u4e3a\u56fe\u7247\u52a0\u5165\u8bf4\u660e\u6587\u5b57\uff1f\u82e5\u6ca1\u6709\u52a0\u5165\u8bf4\u660e\u6587\u5b57\uff0c\u5f53\u7528\u6237\u4f7f\u7528\u4e0d\u8bfb\u5165\u56fe\u7247\u6216\u6587\u5b57\u4f53\u7684\u6d41\u89c8\u5668\u65f6\uff0c\u5c06\u4f1a\u770b\u4e0d\u5230\u8fd9\u4e2a\u56fe\u7247\u3002 ",example_img:"\u9884\u89c8\u56fe\u7247",misc:"\u5176\u4ed6",mouseout:"\u6ed1\u9f20\u79fb\u51fa\u56fe\u7247",mouseover:"\u6ed1\u9f20\u79fb\u5165\u56fe\u7247",alt_image:"\u66ff\u6362\u56fe\u7247",swap_image:"\u5bf9\u6362\u56fe\u7247",map:"\u56fe\u7247\u5730\u56fe",id:"Id",rtl:"\u7531\u53f3\u5230\u5de6",ltr:"\u7531\u5de6\u5230\u53f3",classes:"\u7c7b\u578b",style:"\u6837\u5f0f",long_desc:"\u957f\u63cf\u8ff0\u8fde\u7ed3",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u67e5\u627e",general:"\u4e00\u822c",tab_advanced:"\u9ad8\u7ea7",tab_appearance:"\u5916\u89c2",tab_general:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/se_dlg.js b/js/tiny_mce/plugins/advimage/langs/se_dlg.js new file mode 100755 index 000000000..5caed52d9 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/se_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('se.advimage_dlg',{image_list:"Bildlista",align_right:"V\u00e4nster",align_left:"H\u00f6ger",align_textbottom:"Botten av texten",align_texttop:"Toppen av texten",align_bottom:"Botten",align_middle:"Mitten",align_top:"Toppen",align_baseline:"Baslinje",align:"Justering",hspace:"Horisontalrymd",vspace:"Vertikalrymd",dimensions:"Dimensioner",border:"Ram",list:"Bildlista",alt:"Bildens beskrivning",src:"Bildens URL",dialog_title:"Infoga/redigera bild",missing_alt:"Vill du forts\u00e4tta utan bildbeskrivning. Icke grafiska webbl\u00e4sare kommer inte kunna tolka bilden f\u00f6r anv\u00e4ndaren.",example_img:"Exempelbild",misc:"\u00d6vrigt",mouseout:"vid musen utanf\u00f6r",mouseover:"vid musen ovanf\u00f6r",alt_image:"Alternativbild",swap_image:"Utbytningsbild",map:"L\u00e4nkkarta",id:"Id",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",classes:"Klasser",style:"Stil",long_desc:"L\u00e5ng beskrivning",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",constrain_proportions:"Bibeh\u00e5ll proportionerna",preview:"F\u00f6rhandsvisning",title:"Titel",general:"Generellt",tab_advanced:"Avancerat",tab_appearance:"Utseende",tab_general:"Generellt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/si_dlg.js b/js/tiny_mce/plugins/advimage/langs/si_dlg.js new file mode 100755 index 000000000..54e9220c3 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/si_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('si.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/sk_dlg.js b/js/tiny_mce/plugins/advimage/langs/sk_dlg.js new file mode 100755 index 000000000..227f7668c --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/sk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sk.advimage_dlg',{image_list:"Zoznam obr\u00e1zkov",align_right:"Vpravo",align_left:"V\u013eavo",align_textbottom:"So spodkom riadku",align_texttop:"S vrcholom riadku",align_bottom:"Dole",align_middle:"Na stred riadku",align_top:"Hore",align_baseline:"Na z\u00e1klad\u0148u",align:"Zarovnanie",hspace:"Horizont\u00e1lne odsadenie",vspace:"Vertik\u00e1lne odsadenie",dimensions:"Rozmery",border:"Or\u00e1movanie",list:"Zoznam obr\u00e1zkov",alt:"Popis obr\u00e1zku",src:"URL obr\u00e1zka",dialog_title:"Vlo\u017ei\u0165/upravi\u0165 obr\u00e1zok",missing_alt:"Naozaj chcete pokra\u010dova\u0165 bez vlo\u017een\u00e9ho popisu obr\u00e1zka? Bez popisu m\u00f4\u017ee by\u0165 obr\u00e1zok nepr\u00edstupn\u00fd u\u017e\u00edvate\u013eom so zrakov\u00fdm postihnut\u00edm, u\u017e\u00edvate\u013eom textov\u00fdch prehliada\u010dov alebo u\u017e\u00edvate\u013eom, ktor\u00ed maj\u00fa vypnut\u00e9 zobrazovanie obr\u00e1zkov.",example_img:"Pr\u00edklad obr\u00e1zka",misc:"R\u00f4zne",mouseout:"Po odjazden\u00ed my\u0161i",mouseover:"Pri nabehnut\u00ed my\u0161i",alt_image:"Alternat\u00edvny obr\u00e1zok",swap_image:"Prepnutie obr\u00e1zka",map:"Obr\u00e1zkov\u00e1 mapa",id:"ID",rtl:"Sprava do\u013eava",ltr:"Z\u013eava doprava",classes:"Triedy",style:"\u0160t\u00fdl",long_desc:"Dlh\u00fd popis",langcode:"K\u00f3d jazyka",langdir:"Smer textu",constrain_proportions:"Zachova\u0165 pomer str\u00e1n",preview:"N\u00e1h\u013ead",title:"Titulok",general:"Obecn\u00e9 parametre",tab_advanced:"Roz\u0161\u00edren\u00e9",tab_appearance:"Vzh\u013ead",tab_general:"Obecn\u00e9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/sl_dlg.js b/js/tiny_mce/plugins/advimage/langs/sl_dlg.js new file mode 100755 index 000000000..4a1b53f3e --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/sl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sl.advimage_dlg',{image_list:"Seznam slik",align_right:"desno, plavajo\u010de",align_left:"levo, plavajo\u010de",align_textbottom:"dno besedila",align_texttop:"vrh besedila",align_bottom:"dno",align_middle:"sredina",align_top:"vrh",align_baseline:"osnovna \u010drta",align:"Poravnava",hspace:"Prostor le/de",vspace:"Prostor zg/sp",dimensions:"Dimenzije",border:"Obroba",list:"Seznam slik",alt:"Opis slike",src:"Naslov URL slike",dialog_title:"Vstavi/uredi sliko",missing_alt:"Zares \u017eelite nadaljevati, brez da bi dolo\u010dili opis slike? Brez njega slika nekaterim uporabnikom ne bo na voljo (izklopljen prikaz slik, tekstni brskalnik ali ljudje s slab\u0161im vidom).",example_img:"Predogled izgleda",misc:"Razno",mouseout:"pri mi\u0161ki izven",mouseover:"pri mi\u0161ki nad",alt_image:"Nadomestna slika",swap_image:"Zamenjava slike",map:"Karta slike",id:"Id",rtl:"Od desne proti levi",ltr:"Od leve proti desni",classes:"Razredi",style:"Slog",long_desc:"Povezava do opisa",langcode:"Koda jezika",langdir:"Smer jezika",constrain_proportions:"Zakleni razmerje",preview:"Predogled",title:"Naslov",general:"Splo\u0161no",tab_advanced:"Napredno",tab_appearance:"Izgled",tab_general:"Splo\u0161no"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/sq_dlg.js b/js/tiny_mce/plugins/advimage/langs/sq_dlg.js new file mode 100755 index 000000000..1e400c7b7 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/sq_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sq.advimage_dlg',{image_list:"Lista e fotove",align_right:"Djathtas",align_left:"Majtas",align_textbottom:"Posht\u00eb tekstit",align_texttop:"Sip\u00ebr tekstit",align_bottom:"Fund",align_middle:"Mes",align_top:"Krye",align_baseline:"Vij\u00eb fundore",align:"Drejtimi",hspace:"Hap\u00ebsira horizontale",vspace:"Hap\u00ebsira vertikale",dimensions:"P\u00ebrmasat",border:"Korniza",list:"Lista e fotove",alt:"P\u00ebrshkrimi i fotos",src:"URL e fotos",dialog_title:"Fut/edito foto",missing_alt:"Jeni t\u00eb sigurt q\u00eb doni t\u00eb vazhdoni pa p\u00ebrfshir\u00eb nj\u00eb p\u00ebrshkrim alternativ? Pa t\u00eb, foto mund t\u00eb jet\u00eb e pa aksesueshme nga njer\u00ebz me shikim t\u00eb kufizuar, q\u00eb p\u00ebrdorin shfletues q\u00eb nuk i shfaqin fotot apo i kan\u00eb \u00e7aktivizuar ato.",example_img:"Paraqitje e fotos",misc:"T\u00eb Ndryshme",mouseout:"n\u00eb mouse-in jasht\u00eb",mouseover:"n\u00eb mouse-in sip\u00ebr",alt_image:"P\u00ebrshkrimi alternativ",swap_image:"Nd\u00ebrro foto",map:"Harta e fotos",id:"Id",rtl:"Djathtas-Majtas",ltr:"Majtas-Djathtas",classes:"Klasat",style:"Stili",long_desc:"Lidhja e p\u00ebrshkrimit t\u00eb gjat\u00eb",langcode:"Kodi i gjuh\u00ebs",langdir:"Drejtimi i gjuh\u00ebs",constrain_proportions:"Ruaj raportet",preview:"Paraqitje",title:"Titulli",general:"T\u00eb P\u00ebrgjithshme",tab_advanced:"T\u00eb Avancuara",tab_appearance:"Pamja",tab_general:"T\u00eb P\u00ebrgjithshme"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/sr_dlg.js b/js/tiny_mce/plugins/advimage/langs/sr_dlg.js new file mode 100755 index 000000000..bfc6cee31 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/sr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sr.advimage_dlg',{image_list:"Lista slika",align_right:"Desno",align_left:"Levo",align_textbottom:"Dno teksta",align_texttop:"Vrh teksta",align_bottom:"Dno",align_middle:"Sredina",align_top:"Vrh",align_baseline:"Osnovna linija",align:"Poravnavanje",hspace:"Horizontalni razmak",vspace:"Vertikalni razmak",dimensions:"Dimenzije",border:"Ivice",list:"Lista slika",alt:"Opis slike",src:"URL slike",dialog_title:"Ubaci/uredi sliku",missing_alt:"Da li ste sigurni da \u017eelite da izostavite opis slike? Slika mo\u017ee biti nedostupna ljudima s pote\u0161ko\u0107ama ili onima koji koriste pretra\u017eiva\u010de bez prikaza slika.",example_img:"Prikaz slike",misc:"Razno",mouseout:"za izlazak mi\u0161a sa slike",mouseover:"za prelazak mi\u0161a preko slike",alt_image:"Alternativna slika",swap_image:"Promeni slika",map:"Mapa slike",id:"Id",rtl:"S desna na levo",ltr:"S leva na desno",classes:"Klase",style:"Stil",long_desc:"Link dugog opisa",langcode:"Kod jezika",langdir:"Smer jezika",constrain_proportions:"Zadr\u017ei proporcije",preview:"Pregled",title:"Naslov",general:"Osnovno",tab_advanced:"Napredno",tab_appearance:"Izgled",tab_general:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/sv_dlg.js b/js/tiny_mce/plugins/advimage/langs/sv_dlg.js new file mode 100755 index 000000000..3cc2c99e0 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/sv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sv.advimage_dlg',{"image_list":"Bildlista","align_right":"H\u00f6ger","align_left":"V\u00e4nster","align_textbottom":"Botten av texten","align_texttop":"Toppen av texten","align_bottom":"Botten","align_middle":"Mitten","align_top":"Toppen","align_baseline":"Baslinje",align:"Justering",hspace:"Horisontalrymd",vspace:"Vertikalrymd",dimensions:"Dimensioner",border:"Ram",list:"Bildlista",alt:"Bildens beskrivning",src:"Bildens URL","dialog_title":"Infoga/redigera bild","missing_alt":"Vill du forts\u00e4tta utan bildbeskrivning?\\nIcke grafiska webbl\u00e4sare kommer inte att kunna tolka bilden f\u00f6r anv\u00e4ndaren.","example_img":"Exempelbild",misc:"\u00d6vrigt",mouseout:"vid musen utanf\u00f6r",mouseover:"vid musen ovanf\u00f6r","alt_image":"Alternativbild","swap_image":"Utbytningsbild",map:"L\u00e4nkkarta",id:"Id",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",classes:"Klasser",style:"Stil","long_desc":"L\u00e5ng beskrivning",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning","constrain_proportions":"Bibeh\u00e5ll proportionerna",preview:"F\u00f6rhandsvisning",title:"Titel",general:"Generellt","tab_advanced":"Avancerat","tab_appearance":"Utseende","tab_general":"Generellt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ta_dlg.js b/js/tiny_mce/plugins/advimage/langs/ta_dlg.js new file mode 100755 index 000000000..bd7e4a36d --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ta_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ta.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/te_dlg.js b/js/tiny_mce/plugins/advimage/langs/te_dlg.js new file mode 100755 index 000000000..764258dc1 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/te_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('te.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/th_dlg.js b/js/tiny_mce/plugins/advimage/langs/th_dlg.js new file mode 100755 index 000000000..a2cf71d75 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/th_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('th.advimage_dlg',{image_list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b",align_right:"\u0e02\u0e27\u0e32",align_left:"\u0e0b\u0e49\u0e32\u0e22",align_textbottom:"\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e25\u0e48\u0e32\u0e07",align_texttop:"\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19",align_bottom:"\u0e25\u0e48\u0e32\u0e07",align_middle:"\u0e01\u0e25\u0e32\u0e07",align_top:"\u0e1a\u0e19",align_baseline:"\u0e40\u0e2a\u0e49\u0e19\u0e1e\u0e37\u0e49\u0e19",align:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07",hspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",vspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",dimensions:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07",border:"\u0e01\u0e23\u0e2d\u0e1a",list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b",alt:"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e23\u0e39\u0e1b",src:"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e23\u0e39\u0e1b",dialog_title:"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 image",missing_alt:"\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e43\u0e2a\u0e48\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e ? \u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e1e\u0e34\u0e01\u0e32\u0e23\u0e17\u0e32\u0e07\u0e2a\u0e32\u0e22\u0e15\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e39\u0e49\u0e44\u0e14\u0e49\u0e27\u0e48\u0e32\u0e23\u0e39\u0e1b\u0e04\u0e38\u0e13\u0e04\u0e37\u0e2d\u0e23\u0e39\u0e1b\u0e2d\u0e30\u0e44\u0e23",example_img:"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e02\u0e2d\u0e07\u0e23\u0e39\u0e1b",misc:"\u0e40\u0e1a\u0e47\u0e14\u0e40\u0e15\u0e25\u0e47\u0e14",mouseout:"\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2d\u0e32\u0e40\u0e21\u0e49\u0e32\u0e2a\u0e4c\u0e2d\u0e2d\u0e01",mouseover:"\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2d\u0e32\u0e40\u0e21\u0e49\u0e32\u0e2a\u0e4c\u0e0a\u0e35\u0e49",alt_image:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e1b",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",classes:"\u0e04\u0e25\u0e32\u0e2a",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",long_desc:"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",langcode:"\u0e42\u0e04\u0e49\u0e14\u0e20\u0e32\u0e29\u0e32",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19",constrain_proportions:"\u0e04\u0e07\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19",preview:"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",title:"\u0e0a\u0e37\u0e48\u0e2d",general:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",tab_advanced:"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",tab_appearance:"\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30",tab_general:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/tn_dlg.js b/js/tiny_mce/plugins/advimage/langs/tn_dlg.js new file mode 100755 index 000000000..b41d05870 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/tn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tn.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/tr_dlg.js b/js/tiny_mce/plugins/advimage/langs/tr_dlg.js new file mode 100755 index 000000000..405161019 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/tr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tr.advimage_dlg',{image_list:"Resim listesi",align_right:"Sa\u011f",align_left:"Sol",align_textbottom:"Metin altta",align_texttop:"Metin \u00fcstte",align_bottom:"Alt",align_middle:"Orta",align_top:"\u00dcst",align_baseline:"Taban hizas\u0131",align:"Hizalama",hspace:"Yatay bo\u015fluk",vspace:"Dikey bo\u015fluk",dimensions:"Boyutlar",border:"Kenarl\u0131k",list:"Resim listesi",alt:"Resim a\u00e7\u0131klamas\u0131",src:"Resmin URL\'si",dialog_title:"Resim ekle/d\u00fczenle",missing_alt:"Resim a\u00e7\u0131klamas\u0131 girmeden devam etmek istedi\u011finize emini misiniz? Bu olmadan taray\u0131c\u0131da resimleri kapatanlar, metin bazl\u0131 taray\u0131c\u0131lar veya resim baz\u0131 engelli kullan\u0131c\u0131lar g\u00f6remeyeceklerdir.",example_img:"Resim \u00f6nizleme g\u00f6r\u00fcn\u00fcm\u00fc",misc:"\u00c7e\u015fitli",mouseout:"Fare d\u0131\u015f\u0131ndayken",mouseover:"Fare \u00fczerindeyken",alt_image:"Alternatif resim",swap_image:"Resmi takas et",map:"Resim haritas\u0131",id:"Id",rtl:"Soldan sa\u011fa",ltr:"Sa\u011fdan sola",classes:"S\u0131n\u0131fla",style:"Stil",long_desc:"Uzun a\u00e7\u0131klamal\u0131 ba\u011flant\u0131",langcode:"Dil kodu",langdir:"Dil y\u00f6n\u00fc",constrain_proportions:"Oran\u0131 s\u0131n\u0131rla",preview:"\u00d6nizleme",title:"Ba\u015fl\u0131k",general:"Genel",tab_advanced:"Geli\u015fmi\u015f",tab_appearance:"G\u00f6r\u00fcn\u00fcm",tab_general:"Genel"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/tt_dlg.js b/js/tiny_mce/plugins/advimage/langs/tt_dlg.js new file mode 100755 index 000000000..10f8162f8 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/tt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tt.advimage_dlg',{image_list:"\u5716\u7247\u6e05\u55ae",align_right:"\u5c45\u53f3",align_left:"\u5c45\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u5e95\u90e8",align_middle:"\u4e2d\u90e8",align_top:"\u9802\u90e8",align_baseline:"\u57fa\u7dda",align:"\u5c0d\u9f4a\u65b9\u5f0f",hspace:"\u6c34\u5e73\u9593\u8ddd",vspace:"\u5782\u76f4\u9593\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u908a\u6846",list:"\u5716\u7247\u6e05\u55ae",alt:"\u5716\u7247\u8aaa\u660e",src:"\u5716\u7247\u4f4d\u5740",dialog_title:"\u63d2\u5165/\u7de8\u8f2f \u5716\u7247",missing_alt:" \u662f\u5426\u4e0d\u7232\u5716\u7247\u52a0\u5165\u8aaa\u660e\u6587\u5b57\uff0c\u5982\u679c\u4e0d\u52a0\u5165\u8aaa\u660e\u6587\u5b57\uff0c\u5c07\u5c0e\u81f4\u4e0d\u652f\u63f4\u5716\u7247\u7684\u700f\u89bd\u5668\u5ffd\u7565\u672c\u5167\u5bb9",example_img:"\u9810\u89bd\u5716\u7247",misc:"\u5176\u4ed6",mouseout:"\u6ed1\u9f20\u79fb\u51fa",mouseover:"\u6ed1\u9f20\u5283\u904e",alt_image:"\u4ea4\u66ff\u5716\u7247",swap_image:"\u5207\u63db\u5716\u7247",map:"\u5716\u7247\u71b1\u9ede",id:"Id",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",classes:"\u6a23\u5f0f\u985e",style:"\u6a23\u5f0f",long_desc:"\u63cf\u8ff0",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9810\u89bd",title:"\u641c\u5c0b",general:"\u57fa\u672c",tab_advanced:"\u9032\u968e",tab_appearance:"\u5916\u89c0",tab_general:"\u57fa\u672c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/tw_dlg.js b/js/tiny_mce/plugins/advimage/langs/tw_dlg.js new file mode 100755 index 000000000..19058a4bd --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/tw_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tw.advimage_dlg',{image_list:"\u5716\u7247\u6e05\u55ae",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u9760\u4e0b",align_middle:"\u7f6e\u4e2d",align_top:"\u9760\u4e0a",align_baseline:"\u57fa\u6e96\u7dda",align:"\u5c0d\u9f4a\u65b9\u5f0f",hspace:"\u6c34\u5e73\u9593\u8ddd",vspace:"\u5782\u76f4\u9593\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u908a\u6846",list:"\u5716\u7247\u6e05\u55ae",alt:"\u5716\u7247\u8aaa\u660e",src:"\u5716\u7247URL",dialog_title:"\u63d2\u5165/\u7de8\u8f2f\u5716\u7247",missing_alt:"\u5716\u7247\u6c92\u6709\u8aaa\u660e\u6587\u5b57\uff0c\u662f\u5426\u7e7c\u7e8c\uff1f",example_img:"\u5716\u7247\u5916\u89c0\u9810\u89bd",misc:"\u5176\u5b83",mouseout:"\u6ed1\u9f20\u79fb\u51fa",mouseover:"\u6ed1\u9f20\u79fb\u5165",alt_image:"\u53d6\u4ee3\u5716\u7247",swap_image:"\u5716\u7247\u5207\u63db",map:"\u5716\u7247 Map",id:"ID",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",classes:"\u985e\u5225",style:"\u6a23\u5f0f",long_desc:"\u9577\u63cf\u8ff0\u9023\u7d50",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",constrain_proportions:"\u9396\u5b9a\u6bd4\u4f8b",preview:"\u9810\u89bd",title:"\u6a19\u984c",general:"\u4e00\u822c",tab_advanced:"\u9032\u968e",tab_appearance:"\u5916\u89c0",tab_general:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/uk_dlg.js b/js/tiny_mce/plugins/advimage/langs/uk_dlg.js new file mode 100755 index 000000000..133e52016 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/uk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('uk.advimage_dlg',{image_list:"\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c",align_right:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_left:"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_textbottom:"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0443",align_texttop:"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0443",align_bottom:"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_middle:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",align_top:"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_baseline:"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u0456\u0439 \u043b\u0456\u043d\u0456\u0457",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",hspace:"\u0413\u043e\u0440\u0438\u0437. \u0432\u0456\u0434\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u0432\u0456\u0434\u0441\u0442\u0443\u043f",dimensions:"\u0420\u043e\u0437\u043c\u0456\u0440\u0438",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c",alt:"\u041e\u043f\u0438\u0441",src:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",dialog_title:"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",missing_alt:"\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u043d\u0456, \u0449\u043e \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0443 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f? \u0411\u0435\u0437 \u0446\u044c\u043e\u0433\u043e, \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u043d\u0435 \u0431\u0443\u0434\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u043c \u0434\u0435\u044f\u043a\u0438\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430\u043c \u0437 \u0432\u0430\u0434\u0430\u043c\u0438, \u0430\u0431\u043e \u0442\u0438\u043c, \u0445\u0442\u043e \u043a\u043e\u0440\u0438\u0442\u0443\u0454\u0442\u044c\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0430\u0447\u0430\u043c\u0438, \u0430\u0431\u043e \u043f\u0440\u043e\u0433\u043b\u044f\u0434\u0430\u0454 \u0456\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u0437 \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u0438\u043c\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f\u043c\u0438.",example_img:"\u0412\u0438\u0433\u043b\u044f\u0434 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",misc:"\u0406\u043d\u0448\u0435",mouseout:"\u043f\u0440\u0438 \u0432\u0456\u0434\u0432\u0435\u0434\u0435\u043d\u043d\u0456",mouseover:"\u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u0456",alt_image:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",swap_image:"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u0430\u043c\u0456\u043d\u043d\u0438\u043a",map:"\u041c\u0430\u043f\u0430 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043b\u0456\u0432\u043e\u0440\u0443\u0447",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",classes:"\u041a\u043b\u0430\u0441\u0438",style:"\u0421\u0442\u0438\u043b\u044c",long_desc:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u043f\u043e\u0432\u043d\u0438\u0439 \u043e\u043f\u0438\u0441",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c\u043e\u043a \u043c\u043e\u0432\u0438",constrain_proportions:"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",preview:"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",title:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",general:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",tab_advanced:"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",tab_appearance:"\u0412\u0438\u0433\u043b\u044f\u0434",tab_general:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/ur_dlg.js b/js/tiny_mce/plugins/advimage/langs/ur_dlg.js new file mode 100755 index 000000000..d7e609de9 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/ur_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ur.advimage_dlg',{image_list:"Image list",align_right:"Right",align_left:"Left",align_textbottom:"Text bottom",align_texttop:"Text top",align_bottom:"Bottom",align_middle:"Middle",align_top:"Top",align_baseline:"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL",dialog_title:"Insert/edit image",missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",example_img:"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over",alt_image:"Alternative image",swap_image:"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style",long_desc:"Long description link",langcode:"Language code",langdir:"Language direction",constrain_proportions:"Constrain proportions",preview:"Preview",title:"Title",general:"General",tab_advanced:"Advanced",tab_appearance:"Appearance",tab_general:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/vi_dlg.js b/js/tiny_mce/plugins/advimage/langs/vi_dlg.js new file mode 100755 index 000000000..31fbfc937 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/vi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('vi.advimage_dlg',{image_list:"Danh s\u00e1ch \u1ea3nh",align_right:"Ph\u1ea3i",align_left:"Tr\u00e1i",align_textbottom:"V\u0103n b\u1ea3n d\u01b0\u1edbi c\u00f9ng",align_texttop:"V\u0103n b\u1ea3n tr\u00ean c\u00f9ng",align_bottom:"D\u01b0\u1edbi c\u00f9ng",align_middle:"Gi\u1eefa",align_top:"Tr\u00ean c\u00f9ng",align_baseline:"D\u00f2ng c\u01a1 s\u1edf",align:"Canh l\u1ec1",hspace:"Kho\u1ea3ng c\u00e1ch ngang",vspace:"Kho\u1ea3ng c\u00e1ch d\u1ecdc",dimensions:"K\u00edch th\u01b0\u1edbc",border:"Vi\u1ec1n",list:"Danh s\u00e1ch \u1ea3nh",alt:"M\u00f4 t\u1ea3 \u1ea3nh",src:"URL \u1ea3nh",dialog_title:"Ch\u00e8n/s\u1eeda \u1ea3nh",missing_alt:"Ti\u1ebfp t\u1ee5c v\u1edbi \u0111\u01b0\u1eddng d\u1eabn kh\u00f4ng t\u1ed3n t\u1ea1i ?.",example_img:"Hi\u1ec3n th\u1ecb h\u00ecnh \u1ea3nh xem tr\u01b0\u1edbc",misc:"Linh tinh",mouseout:"cho chu\u1ed9t ra",mouseover:"cho chu\u1ed9t l\u00ean",alt_image:"\u1ea2nh thay th\u1ebf",swap_image:"Trao \u0111\u1ed5i \u1ea3nh",map:"S\u01a1 \u0111\u1ed3 \u1ea3nh",id:"Id",rtl:"Ph\u1ea3i qua tr\u00e1i",ltr:"Tr\u00e1i qua ph\u1ea3i",classes:"L\u1edbp",style:"Ki\u1ec3u d\u00e1ng",long_desc:"Li\u00ean k\u1ebft m\u00f4 t\u1ea3 d\u00e0i",langcode:"M\u00e3 ng\u00f4n ng\u1eef",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef",constrain_proportions:"R\u00e0ng bu\u1ed9c t\u1ec9 l\u1ec7",preview:"Xem tr\u01b0\u1edbc",title:"Ti\u00eau \u0111\u1ec1",general:"Chung",tab_advanced:"N\u00e2ng cao",tab_appearance:"Xu\u1ea5t hi\u1ec7n",tab_general:"Chung"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js b/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js new file mode 100755 index 000000000..90ea29895 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh-cn.advimage_dlg',{"image_list":"\u56fe\u7247\u5217\u8868","align_right":"\u53f3\u5bf9\u9f50","align_left":"\u5de6\u5bf9\u9f50","align_textbottom":"\u6587\u5b57\u4e0b\u65b9","align_texttop":"\u6587\u5b57\u4e0a\u65b9","align_bottom":"\u5e95\u7aef\u5bf9\u9f50","align_middle":"\u5c45\u4e2d\u5bf9\u9f50","align_top":"\u9876\u7aef\u5bf9\u9f50","align_baseline":"\u5e95\u7ebf",align:"\u5bf9\u9f50",hspace:"\u6c34\u5e73\u8ddd\u79bb",vspace:"\u5782\u76f4\u8ddd\u79bb",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u5217\u8868",alt:"\u56fe\u7247\u63cf\u8ff0",src:"\u56fe\u7247\u94fe\u63a5","dialog_title":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","missing_alt":"\u56fe\u7247\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\uff0c\u60a8\u662f\u5426\u8981\u7ee7\u7eed\uff1f\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\u7684\u56fe\u7247\uff0c\u53ef\u80fd\u7ed9\u6b8b\u75be\u4eba\u58eb\u3001\u6587\u672c\u6d4f\u89c8\u5668\u6216\u5173\u95ed\u56fe\u7247\u529f\u80fd\u7684\u6d4f\u89c8\u5668\u8bbf\u95ee\u9020\u6210\u56f0\u96be\u3002","example_img":"\u5916\u89c2\u9884\u89c8\u56fe",misc:"\u5176\u4ed6",mouseout:"\u9f20\u6807\u6ed1\u51fa",mouseover:"\u9f20\u6807\u6ed1\u5165","alt_image":"\u66ff\u6362\u56fe\u7247","swap_image":"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247map",id:"ID",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b\u522b",style:"\u6837\u5f0f","long_desc":"\u957f\u63cf\u8ff0\u94fe\u63a5",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u6587\u5b57\u65b9\u5411","constrain_proportions":"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u6807\u9898",general:"\u666e\u901a","tab_advanced":"\u9ad8\u7ea7","tab_appearance":"\u5916\u89c2","tab_general":"\u666e\u901a"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/zh_dlg.js b/js/tiny_mce/plugins/advimage/langs/zh_dlg.js new file mode 100755 index 000000000..f7982e9b3 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/zh_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh.advimage_dlg',{image_list:"\u56fe\u7247\u6e05\u5355",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u9760\u4e0b",align_middle:"\u7f6e\u4e2d",align_top:"\u9760\u4e0a",align_baseline:"\u57fa\u51c6\u7ebf",align:"\u5bf9\u9f50\u65b9\u5f0f",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u6e05\u5355",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247URL",dialog_title:"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",missing_alt:"\u56fe\u7247\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\uff0c\u662f\u5426\u7ee7\u7eed\uff1f",example_img:"\u56fe\u7247\u5916\u89c2\u9884\u89c8",misc:"\u5176\u5b83",mouseout:"\u9f20\u6807\u79fb\u51fa",mouseover:"\u9f20\u6807\u79fb\u5165",alt_image:"\u53d6\u4ee3\u56fe\u7247",swap_image:"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247 Map",id:"ID",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",long_desc:"\u957f\u8fde\u7ed3",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",constrain_proportions:"\u7ea6\u675f\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u6807\u9898",general:"\u4e00\u822c",tab_advanced:"\u9ad8\u7ea7",tab_appearance:"\u5916\u89c2",tab_general:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advimage/langs/zu_dlg.js b/js/tiny_mce/plugins/advimage/langs/zu_dlg.js new file mode 100755 index 000000000..e6509e493 --- /dev/null +++ b/js/tiny_mce/plugins/advimage/langs/zu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zu.advimage_dlg',{image_list:"\u56fe\u7247\u6e05\u5355",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_textbottom:"\u6587\u5b57\u4e0b\u65b9",align_texttop:"\u6587\u5b57\u4e0a\u65b9",align_bottom:"\u4e0b\u65b9",align_middle:"\u5c45\u4e2d",align_top:"\u4e0a\u65b9",align_baseline:"\u57fa\u7ebf",align:"\u5bf9\u9f50\u65b9\u5f0f",hspace:"\u5782\u76f4\u95f4\u8ddd",vspace:"\u6c34\u51c6\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u6e05\u5355",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247\u7f51\u5740",dialog_title:"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",missing_alt:"\u8bf7\u95ee\u662f\u5426\u786e\u5b9a\u4e0d\u4e3a\u56fe\u7247\u52a0\u5165\u8bf4\u660e\u6587\u5b57\uff1f\u82e5\u6ca1\u6709\u52a0\u5165\u8bf4\u660e\u6587\u5b57\uff0c\u5f53\u4f7f\u7528\u8005\u4f7f\u7528\u4e0d\u8bfb\u5165\u56fe\u7247\u6216\u6587\u5b57\u4f53\u7684\u6d41\u89c8\u5668\u65f6\uff0c\u5c06\u4f1a\u770b\u4e0d\u5230\u8fd9\u4e2a\u56fe\u7247\u3002",example_img:"\u9884\u89c8\u56fe\u7247",misc:"\u5176\u5b83",mouseout:"\u6ed1\u9f20\u79fb\u51fa\u56fe\u7247",mouseover:"\u6ed1\u9f20\u79fb\u5165\u56fe\u7247",alt_image:"\u66ff\u6362\u56fe\u7247",swap_image:"\u5bf9\u6362\u56fe\u7247",map:"\u56fe\u7247\u5730\u56fe",id:"Id",rtl:"\u7531\u53f3\u5230\u5de6",ltr:"\u7531\u5de6\u5230\u53f3",classes:"\u7c7b\u578b",style:"\u6837\u5f0f",long_desc:"\u957f\u63cf\u8ff0\u8fde\u7ed3",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u67e5\u627e",general:"\u4e00\u822c",tab_advanced:"\u9ad8\u7ea7",tab_appearance:"\u5916\u89c2",tab_general:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/css/advlink.css b/js/tiny_mce/plugins/advlink/css/advlink.css new file mode 100644 index 000000000..14364316a --- /dev/null +++ b/js/tiny_mce/plugins/advlink/css/advlink.css @@ -0,0 +1,8 @@ +.mceLinkList, .mceAnchorList, #targetlist {width:280px;} +.mceActionPanel {margin-top:7px;} +.panel_wrapper div.current {height:320px;} +#classlist, #title, #href {width:280px;} +#popupurl, #popupname {width:200px;} +#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;} +#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;} +#events_panel input {width:200px;} diff --git a/js/tiny_mce/plugins/advlink/editor_plugin.js b/js/tiny_mce/plugins/advlink/editor_plugin.js new file mode 100644 index 000000000..983fe5a9c --- /dev/null +++ b/js/tiny_mce/plugins/advlink/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/editor_plugin_src.js b/js/tiny_mce/plugins/advlink/editor_plugin_src.js new file mode 100644 index 000000000..14e46a762 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/editor_plugin_src.js @@ -0,0 +1,61 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.AdvancedLinkPlugin', { + init : function(ed, url) { + this.editor = ed; + + // Register commands + ed.addCommand('mceAdvLink', function() { + var se = ed.selection; + + // No selection and not in link + if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A')) + return; + + ed.windowManager.open({ + file : url + '/link.htm', + width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)), + height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('link', { + title : 'advlink.link_desc', + cmd : 'mceAdvLink' + }); + + ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink'); + + ed.onNodeChange.add(function(ed, cm, n, co) { + cm.setDisabled('link', co && n.nodeName != 'A'); + cm.setActive('link', n.nodeName == 'A' && !n.name); + }); + }, + + getInfo : function() { + return { + longname : 'Advanced link', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/js/advlink.js b/js/tiny_mce/plugins/advlink/js/advlink.js new file mode 100644 index 000000000..5fd6d91e0 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/js/advlink.js @@ -0,0 +1,523 @@ +/* Functions for the advlink plugin popup */ + +tinyMCEPopup.requireLangPack(); + +var templates = { + "window.open" : "window.open('${url}','${target}','${options}')" +}; + +function preinit() { + var url; + + if (url = tinyMCEPopup.getParam("external_link_list_url")) + document.write(''); +} + +function changeClass() { + var f = document.forms[0]; + + f.classes.value = getSelectValue(f, 'classlist'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCEPopup.editor; + var elm = inst.selection.getNode(); + var action = "insert"; + var html; + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); + document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); + document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); + document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); + document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); + + // Link list + html = getLinkListHTML('linklisthref','href'); + if (html == "") + document.getElementById("linklisthrefrow").style.display = 'none'; + else + document.getElementById("linklisthrefcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '260px'; + + if (isVisible('popupurlbrowser')) + document.getElementById('popupurl').style.width = '180px'; + + elm = inst.dom.getParent(elm, "A"); + if (elm != null && elm.nodeName == "A") + action = "update"; + + formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); + + setPopupControlsDisabled(true); + + if (action == "update") { + var href = inst.dom.getAttrib(elm, 'href'); + var onclick = inst.dom.getAttrib(elm, 'onclick'); + + // Setup form data + setFormValue('href', href); + setFormValue('title', inst.dom.getAttrib(elm, 'title')); + setFormValue('id', inst.dom.getAttrib(elm, 'id')); + setFormValue('style', inst.dom.getAttrib(elm, "style")); + setFormValue('rel', inst.dom.getAttrib(elm, 'rel')); + setFormValue('rev', inst.dom.getAttrib(elm, 'rev')); + setFormValue('charset', inst.dom.getAttrib(elm, 'charset')); + setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang')); + setFormValue('dir', inst.dom.getAttrib(elm, 'dir')); + setFormValue('lang', inst.dom.getAttrib(elm, 'lang')); + setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('type', inst.dom.getAttrib(elm, 'type')); + setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus')); + setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur')); + setFormValue('onclick', onclick); + setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup')); + setFormValue('target', inst.dom.getAttrib(elm, 'target')); + setFormValue('classes', inst.dom.getAttrib(elm, 'class')); + + // Parse onclick data + if (onclick != null && onclick.indexOf('window.open') != -1) + parseWindowOpen(onclick); + else + parseFunction(onclick); + + // Select by the values + selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir')); + selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel')); + selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev')); + selectByValue(formObj, 'linklisthref', href); + + if (href.charAt(0) == '#') + selectByValue(formObj, 'anchorlist', href); + + addClassesToList('classlist', 'advlink_styles'); + + selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true); + selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true); + } else + addClassesToList('classlist', 'advlink_styles'); +} + +function checkPrefix(n) { + if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email'))) + n.value = 'mailto:' + n.value; + + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) + n.value = 'http://' + n.value; +} + +function setFormValue(name, value) { + document.forms[0].elements[name].value = value; +} + +function parseWindowOpen(onclick) { + var formObj = document.forms[0]; + + // Preprocess center code + if (onclick.indexOf('return false;') != -1) { + formObj.popupreturn.checked = true; + onclick = onclick.replace('return false;', ''); + } else + formObj.popupreturn.checked = false; + + var onClickData = parseLink(onclick); + + if (onClickData != null) { + formObj.ispopup.checked = true; + setPopupControlsDisabled(false); + + var onClickWindowOptions = parseOptions(onClickData['options']); + var url = onClickData['url']; + + formObj.popupname.value = onClickData['target']; + formObj.popupurl.value = url; + formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); + formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); + + formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); + formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); + + if (formObj.popupleft.value.indexOf('screen') != -1) + formObj.popupleft.value = "c"; + + if (formObj.popuptop.value.indexOf('screen') != -1) + formObj.popuptop.value = "c"; + + formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; + formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; + formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; + formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; + formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; + formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; + formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; + + buildOnClick(); + } +} + +function parseFunction(onclick) { + var formObj = document.forms[0]; + var onClickData = parseLink(onclick); + + // TODO: Add stuff here +} + +function getOption(opts, name) { + return typeof(opts[name]) == "undefined" ? "" : opts[name]; +} + +function setPopupControlsDisabled(state) { + var formObj = document.forms[0]; + + formObj.popupname.disabled = state; + formObj.popupurl.disabled = state; + formObj.popupwidth.disabled = state; + formObj.popupheight.disabled = state; + formObj.popupleft.disabled = state; + formObj.popuptop.disabled = state; + formObj.popuplocation.disabled = state; + formObj.popupscrollbars.disabled = state; + formObj.popupmenubar.disabled = state; + formObj.popupresizable.disabled = state; + formObj.popuptoolbar.disabled = state; + formObj.popupstatus.disabled = state; + formObj.popupreturn.disabled = state; + formObj.popupdependent.disabled = state; + + setBrowserDisabled('popupurlbrowser', state); +} + +function parseLink(link) { + link = link.replace(new RegExp(''', 'g'), "'"); + + var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); + + // Is function name a template function + var template = templates[fnName]; + if (template) { + // Build regexp + var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); + var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; + var replaceStr = ""; + for (var i=0; i'); + for (var i=0; i'; + html += ''; + + for (i=0, len=nodes.length; i' + name + ''; + } + + html += ''; + + return html; +} + +function insertAction() { + var inst = tinyMCEPopup.editor; + var elm, elementArray, i; + + elm = inst.selection.getNode(); + checkPrefix(document.forms[0].href); + + elm = inst.dom.getParent(elm, "A"); + + // Remove element if there is no href + if (!document.forms[0].href.value) { + i = inst.selection.getBookmark(); + inst.dom.remove(elm, 1); + inst.selection.moveToBookmark(i); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + return; + } + + // Create new anchor elements + if (elm == null) { + inst.getDoc().execCommand("unlink", false, null); + tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); + + elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';}); + for (i=0; i' + tinyMCELinkList[i][0] + ''; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +function getTargetListHTML(elm_id, target_form_element) { + var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';'); + var html = ''; + + html += ''; + + return html; +} + +// While loading +preinit(); +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/plugins/advlink/langs/ar_dlg.js b/js/tiny_mce/plugins/advlink/langs/ar_dlg.js new file mode 100755 index 000000000..4ff541876 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ar_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ar.advlink_dlg',{target_name:"\u0627\u0633\u0645 \u0627\u0644\u0647\u062f\u0641",classes:"\u0635\u0646\u0641",style:"\u0634\u0643\u0644",id:"Id",popup_position:"\u0645\u0648\u0642\u0639 (X/Y)",langdir:"\u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0644\u063a\u0629",popup_size:"\u062d\u062c\u0645",popup_dependent:"\u062e\u0627\u0636\u0639 (Mozilla/Firefox only)",popup_resizable:"\u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645 \u0646\u0627\u0641\u0630\u0629",popup_location:"\u0639\u0631\u0636 \u0634\u0631\u064a\u0637 \u0627\u0644\u0645\u0648\u0642\u0639",popup_menubar:"\u0639\u0631\u0636 \u0634\u0631\u064a\u0637 \u0627\u0644\u0642\u0648\u0627\u0626\u0645",popup_toolbar:"\u0625\u0638\u0647\u0627\u0631 \u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a",popup_statusbar:"\u0639\u0631\u0636 \u0634\u0631\u064a\u0637 \u0627\u0644\u062d\u0627\u0644\u0629",popup_scrollbars:"\u0639\u0631\u0636 \u0623\u0634\u0631\u0637\u0629 \u0627\u0644\u062a\u0645\u0631\u064a\u0631",popup_return:"\u0625\u062f\u0631\u0627\u062c \'\u0639\u0648\u062f\u0629 \u0643\u0627\u0630\u0628\u0629\' \'return false\'",popup_name:"\u0627\u0633\u0645 \u0627\u0644\u0646\u0627\u0641\u0630\u0629",popup_url:"\u0631\u0627\u0628\u0637 \u0637\u0641\u0648 \u0639\u0644\u0649 \u0627\u0644\u0633\u0637\u062d",popup:"\u062c\u0627\u0641\u0627 \u0633\u0643\u0631\u064a\u0628\u062a",target_blank:"\u0641\u064a \u0641\u062a\u062d \u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629",target_top:"\u0641\u062a\u062d \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0639\u0644\u0648\u064a (\u064a\u062d\u0644 \u0645\u062d\u0644 \u0643\u0627\u0641\u0629 \u0627\u0644\u0625\u0637\u0627\u0631\u0627\u062a)",target_parent:"\u0641\u062a\u062d \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0623\u0635\u0644",target_same:"\u0641\u062a\u062d \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0625\u0637\u0627\u0631",anchor_names:"\u0645\u0631\u062a\u0643\u0632\u0627\u062a",popup_opts:"\u062e\u064a\u0627\u0631\u0627\u062a",advanced_props:"\u062e\u0635\u0627\u0626\u0635 \u0645\u062a\u0642\u062f\u0645\u0629",event_props:"\u0623\u062d\u062f\u0627\u062b",popup_props:"\u062e\u0635\u0627\u0626\u0635 \u0645\u0631\u0628\u0639 \u0637\u0641\u0648 \u0639\u0644\u0649 \u0627\u0644\u0633\u0637\u062d ",general_props:"\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0639\u0627\u0645\u0629",advanced_tab:"\u0645\u062a\u0642\u062f\u0645",events_tab:"\u0623\u062d\u062f\u0627\u062b",popup_tab:"\u064a\u0645\u0631\u0628\u0639 \u0637\u0641\u0648 \u0639\u0644\u0649 \u0627\u0644\u0633\u0637\u062d",general_tab:"\u0639\u0627\u0645",list:"\u0642\u0627\u0626\u0645\u0647 \u0627\u0644\u0645\u0648\u0627\u0642\u0639",is_external:"\u0627\u0644\u0631\u0627\u0628\u0637 \u064a\u0628\u062f\u0648 \u0627\u0646\u0647 \u0644\u0645\u0648\u0642\u0639 \u062e\u0627\u0631\u062c\u0649 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u0646\u0636\u0639 http://",is_email:"\u0627\u0644\u0631\u0627\u0628\u0637 \u0631\u0628\u0645\u0627 \u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0643\u062a\u0631\u0648\u0646\u0649 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u0646\u0636\u0639 \u0648\u0633\u0645 \u0631\u0627\u0628\u0637 \u0627\u0644\u0628\u0631\u064a\u062f",titlefield:"\u0627\u0633\u0645 \u0627\u0644\u0631\u0627\u0628\u0637",target:"Target",url:"\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0631\u0627\u0628\u0637",title:"\u0627\u062f\u062e\u0627\u0644 -\u062a\u0639\u062f\u064a\u0644 \u0631\u0627\u0628\u0637",link_list:"\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0631\u0648\u0627\u0628\u0637",rtl:"\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u064a\u0633\u0627\u0631",ltr:"\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0625\u0644\u0649 \u0627\u0644\u064a\u0645\u064a\u0646",accesskey:"\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0648\u0635\u0648\u0644",tabindex:" Tab \u0641\u0647\u0631\u0633",rev:"\u0639\u0644\u0627\u0642\u0629 \u0627\u0644\u0647\u062f\u0641 \u0644\u0635\u0641\u062d\u0629",rel:"\u0627\u0644\u0639\u0644\u0627\u0642\u0629 \u0627\u0644\u0635\u0641\u062d\u0629 \u0644\u0627\u0633\u062a\u0647\u062f\u0627\u0641",mime:"\u0627\u0644\u0647\u062f\u0641 \u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641",encoding:"\u0631\u0645\u0632 \u0627\u0644\u0644\u063a\u0629",langcode:"Language code",target_langcode:"\u0644\u063a\u0629 \u0627\u0644\u0647\u062f\u0641"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/az_dlg.js b/js/tiny_mce/plugins/advlink/langs/az_dlg.js new file mode 100755 index 000000000..7ed1896d5 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/az_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('az.advlink_dlg',{target_name:"H\u0259d\u0259f ad\u0131",classes:"Sinifl\u0259r",style:"Sil",id:"\u0130dentifikator",popup_position:"M\u00f6vqe (X/Y)",langdir:"Dil istiqam\u0259ti",popup_size:"\u00f6l\u00e7\u00fc",popup_dependent:"As\u0131l\u0131 olan (yaln\u0131z Mozilla/Firefox)",popup_resizable:"P\u0259nc\u0259r\u0259 \u00f6l\u00e7\u00fcs\u00fcn\u00fc d\u0259yi\u015fil\u0259n et",popup_location:"\u00dcnvan s\u0259trini g\u00f6st\u0259r",popup_menubar:"Menyu s\u0259trini g\u00f6st\u0259r",popup_toolbar:"Al\u0259tl\u0259r panelini g\u00f6st\u0259r",popup_statusbar:"M\u0259tn v\u0259ziyy\u0259tini g\u00f6st\u0259r",popup_scrollbars:"F\u0131rlanan\u0131n zolaqlar\u0131n\u0131 g\u00f6st\u0259r",popup_return:"\'return false\' \u0259lav\u0259 et",popup_name:"P\u0259nc\u0259r\u0259nin ad\u0131",popup_url:"\u00dcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259nin \u00fcnvan\u0131",popup:"\u00dcz\u0259 \u00e7\u0131xan Javascript-p\u0259nc\u0259r\u0259",target_blank:"Yeni p\u0259nc\u0259r\u0259d\u0259 a\u00e7",target_top:"Yuxar\u0131 \u00e7\u0259r\u00e7iv\u0259d\u0259 a\u00e7 (dig\u0259rl\u0259rini d\u0259 doldurur)",target_parent:"Ana p\u0259nc\u0259r\u0259d\u0259 a\u00e7 / \u00e7\u0259r\u00e7iv\u0259",target_same:"Bu p\u0259nc\u0259r\u0259d\u0259 a\u00e7 / \u00e7\u0259r\u00e7iv\u0259",anchor_names:"L\u00f6vb\u0259r",popup_opts:"Parametrl\u0259r",advanced_props:"\u018flav\u0259 x\u00fcsusiyy\u0259tl\u0259r",event_props:"Hadis\u0259l\u0259r",popup_props:"\u00dcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259l\u0259rin x\u00fcsusiyy\u0259tl\u0259ti",general_props:"\u00dcmumi x\u00fcsusiyy\u0259tl\u0259ri",advanced_tab:"\u018flav\u0259l\u0259r",events_tab:"Hadis\u0259l\u0259r",popup_tab:"\u00dcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259",general_tab:"\u00dcmumi",list:"Ke\u00e7id siyah\u0131s\u0131",is_external:"Daxil edil\u0259n \u00fcnvan xarici ke\u00e7id\u0259 b\u0259nz\u0259yir. http:// prefiksini \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",is_email:"Daxil edil\u0259n \u00fcnvan e-po\u00e7ta b\u0259nz\u0259yir. mailto: prefiksini \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",titlefield:"Ad\u0131",target:"H\u0259d\u0259f",url:"Ke\u00e7id \u00fcnvan\u0131",title:"Ke\u00e7idi \u0259lav\u0259/redakt\u0259 et",link_list:"Ke\u00e7id siyah\u0131s\u0131",rtl:"Sa\u011fda-sola",ltr:"Solda-sa\u011fa",accesskey:"Giri\u015f klavi\u015fi",tabindex:"Hesab indeksi",rev:"H\u0259d\u0259fin p\u0259nc\u0259r\u0259y\u0259 m\u00fcnasib\u0259ti",rel:"P\u0259nc\u0259r\u0259nin h\u0259d\u0259f\u0259 m\u00fcnasib\u0259ti",mime:"H\u0259d\u0259fli MIME-n\u00f6v",encoding:"H\u0259d\u0259fli kodla\u015fd\u0131rma",langcode:"Dil kodu",target_langcode:"H\u0259d\u0259fli dil"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/be_dlg.js b/js/tiny_mce/plugins/advlink/langs/be_dlg.js new file mode 100755 index 000000000..09c18446b --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/be_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('be.advlink_dlg',{target_name:"\u041d\u0430\u0437\u043e\u045e \u043c\u044d\u0442\u044b",classes:"\u041a\u043b\u0430\u0441\u044b",style:"\u0421\u0442\u044b\u043b\u044c",id:"\u0406\u0434\u044d\u043d\u0442\u044b\u0444\u0456\u043a\u0430\u0442\u0430\u0440",popup_position:"\u041f\u0430\u0437\u0456\u0446\u044b\u044f (X/Y)",langdir:"\u041a\u0456\u0440\u0443\u043d\u0430\u043a \u043c\u043e\u0432\u044b",popup_size:"\u041f\u0430\u043c\u0435\u0440",popup_dependent:"\u0417\u0430\u043b\u0435\u0436\u043d\u044b\u044f (\u0442\u043e\u043b\u044c\u043a\u0456 Mozilla/Firefox)",popup_resizable:"\u0417\u0440\u0430\u0431\u0456\u0446\u044c \u043f\u0430\u043c\u0435\u0440 \u0430\u043a\u043d\u0430 \u0437\u043c\u044f\u043d\u044f\u043d\u044b\u043c",popup_location:"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0430\u0434\u0440\u0430\u0441\u0443",popup_menubar:"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u043c\u0435\u043d\u044e",popup_toolbar:"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u043f\u0430\u043d\u044d\u043b\u0456 \u043f\u0440\u044b\u043b\u0430\u0434",popup_statusbar:"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0441\u0442\u0430\u043d\u0443",popup_scrollbars:"\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u043f\u0430\u043b\u043e\u0441\u044b \u043f\u0440\u0430\u0433\u043e\u0440\u0442\u043a\u0456",popup_return:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \'return false\'",popup_name:"\u041d\u0430\u0437\u043e\u045e \u0430\u043a\u043d\u0430",popup_url:"\u0410\u0434\u0440\u0430\u0441 \u0443\u0441\u043f\u043b\u044b\u0432\u0430\u043b\u044c\u043d\u0430\u0433\u0430 \u0430\u043a\u043d\u0430",popup:"\u0423\u0441\u043f\u043b\u044b\u0432\u0430\u043b\u044c\u043d\u0430\u0435 Javascript-\u0430\u043a\u043d\u043e",target_blank:"\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u0443 \u043d\u043e\u0432\u044b\u043c \u0430\u043a\u043d\u0435",target_top:"\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u0443 \u0432\u0435\u0440\u0445\u043d\u0456\u043c \u0444\u0440\u044d\u0439\u043c\u0435 (\u0437\u0430\u043c\u044f\u0448\u0447\u0430\u0435 \u045e\u0441\u0451 \u0430\u0441\u0442\u0430\u0442\u043d\u0456\u044f)",target_parent:"\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u0443 \u0431\u0430\u0446\u044c\u043a\u043e\u045e\u0441\u043a\u0456\u043c \u0430\u043a\u043d\u0435 / \u0444\u0440\u044d\u0439\u043c\u0435",target_same:"\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u0443 \u0433\u044d\u0442\u044b\u043c \u0430\u043a\u043d\u0435 / \u0444\u0440\u044d\u0439\u043c\u0435",anchor_names:"\u042f\u043a\u0430\u0440\u044b",popup_opts:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",advanced_props:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f \u045e\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456",event_props:"\u041f\u0430\u0434\u0437\u0435\u0456",popup_props:"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u045e\u0441\u043f\u043b\u044b\u0432\u0430\u043b\u044c\u043d\u0430\u0433\u0430 \u0430\u043a\u043d\u0430",general_props:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f \u045e\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456",advanced_tab:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f",events_tab:"\u041f\u0430\u0434\u0437\u0435\u0456",popup_tab:"\u0423\u0441\u043f\u043b\u044b\u0432\u0430\u043b\u044c\u043d\u0430\u0435 \u0430\u043a\u043d\u043e",general_tab:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f",list:"\u0421\u043f\u0456\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u0430\u043a",is_external:"\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 \u0432\u043e\u043d\u043a\u0430\u0432\u0443\u044e \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443, \u0432\u044b \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043f\u0440\u044d\u0444\u0456\u043a\u0441 http://?",is_email:"\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 email, \u0432\u044b \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043f\u0440\u044d\u0444\u0456\u043a\u0441 mailto:?",titlefield:"\u041d\u0430\u0437\u043e\u045e",target:"\u041c\u044d\u0442\u0430",url:"\u0410\u0434\u0440\u0430\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",link_list:"\u0421\u043f\u0456\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u0430\u043a",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u0430",ltr:"\u0417\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",accesskey:"\u041a\u043b\u0430\u0432\u0456\u0448\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0443",tabindex:"\u0410\u0437\u043d\u0430\u0447\u043d\u0456\u043a \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u044b\u0456",rev:"\u0421\u0442\u0430\u045e\u043b\u0435\u043d\u043d\u0435 \u043c\u044d\u0442\u0430 \u0434\u0430 \u0441\u0442\u0430\u0440\u043e\u043d\u043a\u0456",rel:"\u0421\u0442\u0430\u045e\u043b\u0435\u043d\u043d\u0435 \u0441\u0442\u0430\u0440\u043e\u043d\u043a\u0430 \u0434\u0430 \u043c\u044d\u0442\u044b",mime:"\u041c\u044d\u0442\u0430\u0432\u044b MIME-\u0442\u044b\u043f",encoding:"\u041c\u044d\u0442\u0430\u0432\u0430\u044f \u043a\u0430\u0434\u043e\u045e\u043a\u0430",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u044b",target_langcode:"\u041c\u044d\u0442\u0430\u0432\u0430\u044f \u043c\u043e\u0432\u0430"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/bg_dlg.js b/js/tiny_mce/plugins/advlink/langs/bg_dlg.js new file mode 100755 index 000000000..ea83f6253 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/bg_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bg.advlink_dlg',{target_name:"\u0418\u043c\u0435 \u043d\u0430 \u0446\u0435\u043b",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b",id:"Id",popup_position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",popup_size:"\u0420\u0430\u0437\u043c\u0435\u0440",popup_dependent:"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u0438 (Mozilla/Firefox only)",popup_resizable:"\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0446\u0438\u0442\u0435",popup_location:"\u041f\u043e\u043a\u0430\u0436\u0438 location bar",popup_menubar:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 \u0441 \u043c\u0435\u043d\u044e\u0442\u0430",popup_toolbar:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0438\u0442\u0435 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",popup_statusbar:"\u041f\u043e\u043a\u0430\u0436\u0438 status bar",popup_scrollbars:"\u041f\u043e\u043a\u0430\u0436\u0438 \u0441\u043a\u0440\u043e\u043b\u0435\u0440\u0438",popup_return:"\u0412\u043c\u044a\u043a\u043d\u0438 \'return false\'",popup_name:"\u0418\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430",popup_url:"URL \u043d\u0430 popup-\u0430",popup:"Javascript popup",target_blank:"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",target_top:"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u0430\u0439-\u0433\u043e\u0440\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c (\u0437\u0430\u043c\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0444\u0440\u0435\u0439\u043c\u043e\u0432\u0435)",target_parent:"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0433\u043e\u0440\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c",target_same:"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0442\u043e\u0437\u0438 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c",anchor_names:"\u041a\u043e\u0442\u0432\u0438",popup_opts:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",advanced_props:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",event_props:"\u0421\u044a\u0431\u0438\u0442\u0438\u044f",popup_props:"Popup \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",general_props:"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",advanced_tab:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",events_tab:"\u0421\u044a\u0431\u0438\u0442\u0438\u044f",popup_tab:"Popup",general_tab:"\u041e\u0431\u0449\u0438",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438",is_external:"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",is_email:"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",titlefield:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",target:"\u0426\u0435\u043b",url:"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",link_list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",accesskey:"\u041a\u043b\u0430\u0432\u0438\u0448",tabindex:"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u043d\u043e\u0441\u0442",rev:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b - \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",rel:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0446\u0435\u043b",mime:"MIME \u0442\u0438\u043f",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0442\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",target_langcode:"\u0415\u0437\u0438\u043a"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/bn_dlg.js b/js/tiny_mce/plugins/advlink/langs/bn_dlg.js new file mode 100755 index 000000000..f71254efd --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/bn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bn.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/br_dlg.js b/js/tiny_mce/plugins/advlink/langs/br_dlg.js new file mode 100755 index 000000000..0045d0049 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/br_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('br.advlink_dlg',{target_name:"Nome do alvo",classes:"Classes",style:"Estilo",id:"Id",popup_position:"Posi\u00e7\u00e3o (X/Y)",langdir:"Dire\u00e7\u00e3o do texto",popup_size:"Tamanho",popup_dependent:"Dependente (Mozilla/Firefox apenas)",popup_resizable:"Permitir altera\u00e7\u00e3o do tamanho da janela",popup_location:"Mostrar barra de endere\u00e7os",popup_menubar:"Mostrar barra de menu",popup_toolbar:"Mostrar barras de ferramentas",popup_statusbar:"Mostrar barra de status",popup_scrollbars:"Mostrar barras de scroll",popup_return:"Inserir \'return false\'",popup_name:"Nome da janela",popup_url:"URL do popup",popup:"Popup javascript",target_blank:"Abrir numa nova janela",target_top:"Abrir na p\u00e1gina inteira (substitui todos os quadros)",target_parent:"Abrir na janela/quadro pai",target_same:"Abrir nesta janela/quadro",anchor_names:"\u00c2ncoras",popup_opts:"Op\u00e7\u00f5es",advanced_props:"Propriedades avan\u00e7adas",event_props:"Eventos",popup_props:"Propriedades de popup",general_props:"Propriedades gerais",advanced_tab:"Avan\u00e7ado",events_tab:"Eventos",popup_tab:"Popup",general_tab:"Geral",list:"Lista de hyperlinks",is_external:"A URL digitada parece conduzir a um link externo. Deseja acrescentar o (necess\u00e1rio) prefixo http://?",is_email:"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o (necess\u00e1rio) prefixo mailto:?",titlefield:"T\u00edtulo",target:"Alvo",url:"URL do hyperlink",title:"Inserir/editar hyperlink",link_list:"Lista de hyperlinks",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",accesskey:"Chave de acesso",tabindex:"Tabindex",rev:"Rela\u00e7\u00e3o alvo/p\u00e1gina",rel:"Rela\u00e7\u00e3o p\u00e1gina/alvo",mime:"Tipo MIME alvo",encoding:"Codifica\u00e7\u00e3o de caracteres",langcode:"C\u00f3digo da linguagem",target_langcode:"linguagem alvo"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/bs_dlg.js b/js/tiny_mce/plugins/advlink/langs/bs_dlg.js new file mode 100755 index 000000000..4c5fb4873 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/bs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bs.advlink_dlg',{target_name:"Ime mete",classes:"Klasa",style:"Stil",id:"Id",popup_position:"Pozicija (X/Y)",langdir:"Smjer jezika",popup_size:"Veli\u010dina",popup_dependent:"Ovisan (samo za Mozilla/Firefox)",popup_resizable:"Prozor promjenjive veli\u010dine",popup_location:"Poka\u017ei traku lokacije",popup_menubar:"Poka\u017ei izbornik",popup_toolbar:"Poka\u017ei alatne trake",popup_statusbar:"Poka\u017ei statusnu traku",popup_scrollbars:"Poka\u017ei kliza\u010de",popup_return:"Umetni \'return false\'",popup_name:"Ime prozora",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Otvori u novom prozoru",target_top:"Otvori u gornjem okviru (zamjenjuje sve okvire)",target_parent:"Otvori u izvornom prozoru / okvir",target_same:"Otovori u novom prozoru / okviru",anchor_names:"Sidra",popup_opts:"Opcije",advanced_props:"Napredna svojstva",event_props:"Doga\u0111aji",popup_props:"Svojstva popup prozora",general_props:"Osnovna svojstva",advanced_tab:"Napredno",events_tab:"Doga\u0111aj",popup_tab:"Popup",general_tab:"Osnovno",list:"Lista poveznica",is_external:"URL koji ste unijeli izgleda kao vanjska poveznica, \u017eelite li dodati potrebni http:// prefiks?",is_email:"URL koji ste unijeli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?",titlefield:"Naslov",target:"Meta",url:"URL poveznice",title:"Umetni/uredi poveznicu",link_list:"Lista poveznica",rtl:"S desna na lijevo",ltr:"S lijeva na desno",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"MIME tip",encoding:"Kodiranje znakova",langcode:"Kod jezika",target_langcode:"Jezik"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ca_dlg.js b/js/tiny_mce/plugins/advlink/langs/ca_dlg.js new file mode 100755 index 000000000..c45dd2e21 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ca_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ca.advlink_dlg',{"target_name":"Nom del dest\u00ed",classes:"Classes",style:"Estil",id:"Id","popup_position":"Posici\u00f3 (X/Y)",langdir:"Direcci\u00f3 de l\'idioma","popup_size":"Mida","popup_dependent":"Dependent (nom\u00e9s Mozilla/Firefox)","popup_resizable":"Fes la finestra redimensionable","popup_location":"Mostra la barra d\'ubicaci\u00f3","popup_menubar":"Mostra la barra de men\u00fa","popup_toolbar":"Mostra la barra d\'eines","popup_statusbar":"Mostra la barra d\'estat","popup_scrollbars":"Mostra les barres de despla\u00e7ament","popup_return":"Insereix \'return false\'","popup_name":"Nom de la finestra","popup_url":"URL de la finestra emergent",popup:"Finestra emergent javascript","target_blank":"Obre en una nova finestra","target_top":"Obre en el marc superior (reempla\u00e7a tots els marcs)","target_parent":"Obre en la finestra / marc pare","target_same":"Obre en aquesta finestra / marc","anchor_names":"\u00c0ncores","popup_opts":"Opcions","advanced_props":"Propietats avan\u00e7ades","event_props":"Esdeveniments","popup_props":"Propietats de la finestra emergent","general_props":"Propietats generals","advanced_tab":"Avan\u00e7at","events_tab":"Esdeveniments","popup_tab":"Finestra emergent","general_tab":"General",list:"Llista d\'enlla\u00e7os","is_external":"L\'URL que heu introdu\u00eft sembla ser un enlla\u00e7 extern, voleu afegir-hi el prefix requerit http:// ?","is_email":"L\'URL que heu introdu\u00eft sembla ser una adre\u00e7a de correu electr\u00f2nic, voleu afegir-hi el prefix requerit mailto: ?",titlefield:"T\u00edtol",target:"Objectiu",url:"URL de l\'enlla\u00e7",title:"Insereix/edita enlla\u00e7","link_list":"Llista d\'enlla\u00e7os",rtl:"De dreta a esquerra",ltr:"D\'esquerra a dreta",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relaci\u00f3 de dest\u00ed a p\u00e0gina",rel:"Relaci\u00f3 de p\u00e0gina a dest\u00ed",mime:"Tipus MIME del dest\u00ed",encoding:"Codificaci\u00f3 de car\u00e0cters del dest\u00ed",langcode:"Codi de l\'idioma","target_langcode":"Idioma del dest\u00ed"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ch_dlg.js b/js/tiny_mce/plugins/advlink/langs/ch_dlg.js new file mode 100755 index 000000000..c9dd3ab74 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ch_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ch.advlink_dlg',{target_name:"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",id:"ID",popup_position:"\u4f4d\u7f6e\uff08X/Y\uff09",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",popup_size:"\u5927\u5c0f",popup_dependent:"\u6d4f\u89c8\u5668\u9650\u5236\uff08\u4ec5\u652f\u63f4 Mozilla/Firefox\uff09",popup_resizable:"\u5f39\u7a97\u53ef\u8c03\u6574\u5927\u5c0f",popup_location:"\u663e\u793a\u5730\u5740\u680f",popup_menubar:"\u663e\u793a\u83dc\u5355\u5217",popup_toolbar:"\u663e\u793a\u5de5\u5177\u5217",popup_statusbar:"\u663e\u793a\u72b6\u6001\u5217",popup_scrollbars:"\u663e\u793a\u6eda\u52a8\u6761",popup_return:"\u63d2\u5165 \"return false\"",popup_name:"\u89c6\u7a97\u540d\u79f0",popup_url:"\u5f39\u51fa\u89c6\u7a97URL",popup:"JavaScript \u5f39\u51fa\u89c6\u7a97",target_blank:"\u5728\u65b0\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",target_top:"\u5728\u9876\u90e8\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",target_parent:"\u5728\u7236\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",target_same:"\u5728\u76ee\u524d\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",anchor_names:"\u4e66\u7b7e",popup_opts:"\u9009\u9879",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5f39\u51fa\u89c6\u7a97\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7\u5c5e\u6027",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5f39\u51fa\u89c6\u7a97",general_tab:"\u4e00\u822c",list:"\u8d85\u8fde\u7ed3\u6e05\u5355",is_external:"\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u4e3a\u5916\u90e8\u8d85\u8fde\u7ed3\uff0c\u662f\u5426\u8981\u52a0\u4e0a \"http://\" ?",is_email:"\u60a8\u8f93\u5165\u7684\u4f3c\u4e4e\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0 mailto:?",titlefield:"\u6807\u9898",target:"\u76ee\u6807",url:"\u8d85\u8fde\u7ed3URL",title:"\u63d2\u5165/\u7f16\u8f91\u8d85\u8fde\u7ed3",link_list:"\u8d85\u8fde\u7ed3\u6e05\u5355",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u901f\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u8bed\u8a00\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801",target_langcode:"\u76ee\u6807\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/cn_dlg.js b/js/tiny_mce/plugins/advlink/langs/cn_dlg.js new file mode 100755 index 000000000..90d554311 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cn.advlink_dlg',{"target_name":"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",id:"Id\u7f16\u53f7","popup_position":"\u4f4d\u7f6e (X/Y)",langdir:"\u6587\u672c\u65b9\u5411","popup_size":"\u6587\u672c\u5927\u5c0f","popup_dependent":"\u6d4f\u89c8\u5668\u9650\u5236(\u4ec5\u652f\u6280Mozilla/Firefox)","popup_resizable":"\u7a97\u53e3\u5927\u5c0f\u53ef\u8c03","popup_location":"\u663e\u793a\u5730\u5740\u680f","popup_menubar":"\u663e\u793a\u83dc\u5355\u680f","popup_toolbar":"\u663e\u793a\u5de5\u5177\u680f","popup_statusbar":"\u663e\u793a\u72b6\u6001\u680f","popup_scrollbars":"\u663e\u793a\u6eda\u52a8\u6761","popup_return":"\u63d2\u5165 \"return false\"","popup_name":"\u65b0\u7a97\u53e3\u540d\u79f0","popup_url":"\u5f39\u7a97URL\u5730\u5740",popup:"JavaScript \u5f39\u51fa","target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00","target_top":"\u5728\u9876\u90e8\u7a97\u53e3\u6253\u5f00\u8d85\u94fe\u63a5","target_parent":"\u5728\u7236\u7ea7\u7a97\u53e3\u6253\u5f00\u8d85\u94fe\u63a5","target_same":"\u5728\u76ee\u524d\u7a97\u53e3\u6253\u5f00\u8d85\u94fe\u63a5","anchor_names":"\u951a\u70b9","popup_opts":"\u9009\u9879","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","event_props":"\u4e8b\u4ef6","popup_props":"\u5f39\u51fa\u5c5e\u6027","general_props":"\u5e38\u89c4\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","events_tab":"\u4e8b\u4ef6","popup_tab":"\u5f39\u7a97","general_tab":"\u5e38\u89c4",list:"\u94fe\u63a5\u5217\u8868","is_external":"\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u4e3a\u5916\u90e8\u8d85\u8fde\u7ed3\uff0c\u662f\u5426\u8981\u52a0\u4e0a \u201chttp://\u201d\u524d\u7f00?","is_email":"\u60a8\u8f93\u5165\u7684\u4f3c\u4e4e\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740,\u662f\u5426\u9700\u8981\u52a0 mailto:\uff1f",titlefield:"\u6807\u9898",target:"\u76ee\u6807",url:"\u94fe\u63a5URL\u5730\u5740",title:"\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5","link_list":"\u94fe\u63a5\u5217\u8868",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u6377\u952e",tabindex:"Tab\u952e\u8bbf\u95ee\u987a\u5e8f",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u5b57\u7b26\u96c6\uff08UTF-8\uff09",langcode:"\u8bed\u8a00\u7f16\u7801","target_langcode":"\u76ee\u6807\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/cs_dlg.js b/js/tiny_mce/plugins/advlink/langs/cs_dlg.js new file mode 100755 index 000000000..a1f3ab1bf --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/cs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cs.advlink_dlg',{target_name:"N\u00e1zev c\u00edle",classes:"T\u0159\u00eddy",style:"Styl",id:"ID",popup_position:"Um\u00edst\u011bn\u00ed (X/Y)",langdir:"Sm\u011br textu",popup_size:"Velikost",popup_dependent:"Z\u00e1vislost (pouze Mozilla/Firefox)",popup_resizable:"Umo\u017enit zm\u011bnu velikosti",popup_location:"Zobrazit pole s adresou",popup_menubar:"Zobrazit nab\u00eddku",popup_toolbar:"Zobrazit n\u00e1strojovou li\u0161tu",popup_statusbar:"Zobrazit stavov\u00fd \u0159\u00e1dek",popup_scrollbars:"Zobrazit posuvn\u00edky",popup_return:"Vlo\u017eit \'return false\'",popup_name:"N\u00e1zev okna",popup_url:"URL vyskakovac\u00edho okna",popup:"Javascriptov\u00e9 okno",target_blank:"Otev\u0159\u00edt v nov\u00e9m okn\u011b/r\u00e1mu",target_top:"Otev\u0159\u00edt v hlavn\u00edm okn\u011b/r\u00e1mu (nahradit v\u0161echny r\u00e1my)",target_parent:"Otev\u0159\u00edt v nad\u0159azen\u00e9m okn\u011b/r\u00e1mu",target_same:"Otev\u0159\u00edt v tomto okn\u011b/r\u00e1mu",anchor_names:"Z\u00e1lo\u017eka",popup_opts:"Mo\u017enosti",advanced_props:"Roz\u0161\u00ed\u0159en\u00e9 parametry",event_props:"Ud\u00e1losti",popup_props:"Vlastnosti vyskakovac\u00edho okna",general_props:"Obecn\u00e9 parametry",advanced_tab:"Roz\u0161\u00ed\u0159en\u00e9",events_tab:"Ud\u00e1losti",popup_tab:"Vyskakovac\u00ed okno",general_tab:"Obecn\u00e9",list:"Seznam odkaz\u016f",is_external:"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?",is_email:"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?",titlefield:"Titulek",target:"C\u00edl",url:"URL odkazu",title:"Vlo\u017eit/upravit odkaz",link_list:"Seznam odkaz\u016f",rtl:"Zprava doleva",ltr:"Zleva doprava",accesskey:"Kl\u00e1vesov\u00e1 zkratka",tabindex:"Po\u0159ad\u00ed pro tabul\u00e1tor",rev:"Vztah c\u00edle ke str\u00e1nce",rel:"Vztah str\u00e1nky k c\u00edli",mime:"MIME typ",encoding:"K\u00f3dov\u00e1n\u00ed",langcode:"K\u00f3d jazyka",target_langcode:"Jazyk c\u00edle"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/cy_dlg.js b/js/tiny_mce/plugins/advlink/langs/cy_dlg.js new file mode 100755 index 000000000..37acc679c --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/cy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cy.advlink_dlg',{target_name:"Enw targed",classes:"Dosbarthiadau",style:"Arddull",id:"Id",popup_position:"Safle (X/Y)",langdir:"Cyfeiriad iaith",popup_size:"Maint",popup_dependent:"Dibynnol (dim ond Mozilla/Firefox)",popup_resizable:"Gwneud ffenest yn ailfeintiol",popup_location:"Dangos bar lleoliad",popup_menubar:"Dangos bar dewislen",popup_toolbar:"Dangos barrau offer",popup_statusbar:"Dangor bar statws",popup_scrollbars:"Dangos bar sgrolio",popup_return:"Mewnosod \'return false\'",popup_name:"Enw ffenest",popup_url:"URL naidlen",popup:"Naidlen JavaScript",target_blank:"Agor mewn ffenest newydd",target_top:"Agor mewn pen ffr\u00e2m (amnewid pob ffr\u00e2m)",target_parent:"Agos mewn y ffenest / ffr\u00e2m rhiant",target_same:"Agos mewn y ffenest / ffr\u00e2m yma",anchor_names:"Angorau",popup_opts:"Dewisiadau",advanced_props:"Priodweddau uwch",event_props:"Digwyddiadau",popup_props:"Priodweddau cyffredinol",general_props:"Priodweddau cyfferdinol",advanced_tab:"Uwch",events_tab:"Digwyddiadau",popup_tab:"Naidlen",general_tab:"Cyffredinol",list:"Rhestr cysylltau",is_external:"Mae\'r URL a rydych wedi rhoi yn edrych fel cyswllt allannol, ydych chi eisiau ychwanegu\'r rhagddodiad http:// sydd angen?",is_email:"Mae\'r URL a rydych wedi rhoi yn edrych fel cyferiad e-bost, ydych chi eisiau ychwanegu\'r rhagddodiad mailto: sydd angen?",titlefield:"Teitl",target:"Targed",url:"URL cyswllt",title:"Mewnosod/Golygu cyswllt",link_list:"Rhestr cysylltau",rtl:"De i\'r chwith",ltr:"Chwith i\'r dde",accesskey:"Bysell mynediad",tabindex:"Trefn tabio",rev:"Perthynas y targed i\'r tudalen",rel:"Perthynas y tudalen i\'r targed",mime:"Math MIME targed",encoding:"Amgodiad nodau targed",langcode:"Cod iaith",target_langcode:"Iaith targed"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/da_dlg.js b/js/tiny_mce/plugins/advlink/langs/da_dlg.js new file mode 100755 index 000000000..cac424619 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/da_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('da.advlink_dlg',{target_name:"Destinationsnavn",classes:"Klasser",style:"Stil",id:"Id",popup_position:"Position (X/Y)",langdir:"Sprogretning",popup_size:"St\u00f8rrelse",popup_dependent:"Afh\u00e6ngig (Kun Mozilla/Firefox)",popup_resizable:"Lad det v\u00e6re muligt at \u00e6ndre st\u00f8rrelsen p\u00e5 vinduet",popup_location:"Vis adresselinje",popup_menubar:"Vis menulinje",popup_toolbar:"Vis v\u00e6rkt\u00f8jslinjer",popup_statusbar:"Vis statuslinje",popup_scrollbars:"Vis rullepanel",popup_return:"Inds\u00e6t \'return false\'",popup_name:"Vinduesnavn",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"\u00c5ben i nyt vindue",target_top:"\u00c5ben i \u00f8verste vindue / ramme (erstatter alle rammer)",target_parent:"\u00c5ben i overliggende vindue / ramme",target_same:"\u00c5ben i dette vindue / ramme",anchor_names:"Ankre",popup_opts:"Indstillinger",advanced_props:"Avancerede egenskaber",event_props:"H\u00e6ndelser",popup_props:"Popup egenskaber",general_props:"Generelle egenskaber",advanced_tab:"Advanceret",events_tab:"H\u00e6ndelser",popup_tab:"Popup",general_tab:"Generelt",list:"Liste over links",is_external:"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?",is_email:"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?",titlefield:"Titel",target:"M\u00e5l",url:"Link URL",title:"Inds\u00e6t/rediger link",link_list:"Liste over links",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",accesskey:"Genvejstast",tabindex:"Tabindex",rev:"Relativ destination til side",rel:"Relativ side til destination",mime:"Destinations-MIME-type",encoding:"Destinationstegns\u00e6t",langcode:"Sprogkode",target_langcode:"Destinationssprog"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/de_dlg.js b/js/tiny_mce/plugins/advlink/langs/de_dlg.js new file mode 100755 index 000000000..e18e7c158 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/de_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('de.advlink_dlg',{target_name:"Name der Zielseite",classes:"Klassen",style:"Format",id:"ID",popup_position:"Position (X/Y)",langdir:"Schriftrichtung",popup_size:"Gr\u00f6\u00dfe",popup_dependent:"Vom Elternfenster abh\u00e4ngig
        (nur Mozilla/Firefox) ",popup_resizable:"Vergr\u00f6\u00dfern des Fenster zulassen",popup_location:"Adressleiste anzeigen",popup_menubar:"Browsermen\u00fc anzeigen",popup_toolbar:"Werkzeugleisten anzeigen",popup_statusbar:"Statusleiste anzeigen",popup_scrollbars:"Scrollbalken anzeigen",popup_return:"Link trotz Popup folgen",popup_name:"Name des Fensters",popup_url:"Popup-Adresse",popup:"JavaScript-Popup",target_blank:"In neuem Fenster \u00f6ffnen",target_top:"Im obersten Frame \u00f6ffnen (sprengt das Frameset)",target_parent:"Im \u00fcbergeordneten Fenster/Frame \u00f6ffnen",target_same:"Im selben Fenster/Frame \u00f6ffnen",anchor_names:"Anker",popup_opts:"Optionen",advanced_props:"Erweiterte Eigenschaften",event_props:"Ereignisse",popup_props:"Popup-Eigenschaften",general_props:"Allemeine Eigenschaften",advanced_tab:"Erweitert",events_tab:"Ereignisse",popup_tab:"Popup",general_tab:"Allgemein",list:"Linkliste",is_external:"Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http://\" voranstellen?",is_email:"Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",titlefield:"Titel",target:"Fenster",url:"Adresse",title:"Link einf\u00fcgen/bearbeiten",link_list:"Linkliste",rtl:"Rechts nach links",ltr:"Links nach rechts",accesskey:"Tastenk\u00fcrzel",tabindex:"Tabindex",rev:"Beziehung des Linkziels zur Seite",rel:"Beziehung der Seite zum Linkziel",mime:"MIME-Type der Zielseite",encoding:"Zeichenkodierung der Zielseite",langcode:"Sprachcode",target_langcode:"Sprache der Zielseite"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/dv_dlg.js b/js/tiny_mce/plugins/advlink/langs/dv_dlg.js new file mode 100755 index 000000000..84d7ebe14 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/dv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('dv.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/el_dlg.js b/js/tiny_mce/plugins/advlink/langs/el_dlg.js new file mode 100755 index 000000000..b4e2a61d9 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/el_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('el.advlink_dlg',{target_name:"\u038c\u03bd\u03bf\u03bc\u03b1 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",classes:"\u039a\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",id:"Id",popup_position:"\u0398\u03ad\u03c3\u03b7 (X/Y)",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",popup_size:"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2",popup_dependent:"\u0395\u03be\u03b1\u03c1\u03c4\u03ce\u03bc\u03b5\u03bd\u03bf (\u03bc\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 Mozilla/Firefox)",popup_resizable:"\u039d\u03b1 \u03b1\u03bb\u03bb\u03ac\u03b6\u03bf\u03c5\u03bd \u03bf\u03b9 \u03b4\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5",popup_location:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1\u03c2",popup_menubar:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bc\u03b5\u03bd\u03bf\u03cd",popup_toolbar:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd",popup_statusbar:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2",popup_scrollbars:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c1\u03ac\u03b2\u03b4\u03c9\u03bd \u03ba\u03cd\u03bb\u03b9\u03c3\u03b7\u03c2",popup_return:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \'return false\'",popup_name:"\u038c\u03bd\u03bf\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5",popup_url:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c4\u03bf\u03c5 Popup",popup:"Javascript popup",target_blank:"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03bd\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",target_top:"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03c0\u03b9\u03bf \u03c0\u03ac\u03bd\u03c9 frame (\u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03b8\u03b9\u03c3\u03c4\u03ac \u03cc\u03bb\u03b1 \u03c4\u03b1 frames)",target_parent:"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03b3\u03bf\u03bd\u03b9\u03ba\u03cc window / frame",target_same:"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03af\u03b4\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf / frame",anchor_names:"Anchors",popup_opts:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2",advanced_props:"\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2",event_props:"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1",popup_props:"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 Popup",general_props:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2",advanced_tab:"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",events_tab:"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1",popup_tab:"Popup",general_tab:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd",is_external:"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf http:// ;",is_email:"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 email, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf mailto: ;",titlefield:"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",url:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",link_list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",accesskey:"\u03a0\u03bb\u03ae\u03ba\u03c4\u03c1\u03bf \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",tabindex:"Tabindex",rev:"\u03a3\u03c7\u03ad\u03c3\u03b7 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5 \u03c0\u03c1\u03bf\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 (REV)",rel:"\u03a3\u03c7\u03ad\u03c3\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03c3\u03c4\u03cc\u03c7\u03bf (REL)",mime:"\u03a4\u03cd\u03c0\u03bf\u03c2 MIME \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",encoding:"\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",target_langcode:"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/en_dlg.js b/js/tiny_mce/plugins/advlink/langs/en_dlg.js new file mode 100644 index 000000000..dba4e88ce --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/es_dlg.js b/js/tiny_mce/plugins/advlink/langs/es_dlg.js new file mode 100755 index 000000000..aaede5138 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.advlink_dlg',{"target_name":"Nombre del Target",classes:"Clases",style:"Estilo",id:"Id","popup_position":"Posici\u00f3n (X/Y)",langdir:"Direcci\u00f3n del lenguaje","popup_size":"Tama\u00f1o","popup_dependent":"Dependientes (s\u00f3lo Mozilla/Firefox)","popup_resizable":"Permitir cambiar el tama\u00f1o de la ventana","popup_location":"Barra de localizaci\u00f3n","popup_menubar":"Barra de men\u00fa","popup_toolbar":"Barra de herramientas","popup_statusbar":"Barra de estado","popup_scrollbars":"Barras de desplazamiento","popup_return":"Insertar \'return false\'","popup_name":"Nombre de la ventana","popup_url":"URL de la ventana emergente",popup:"Javascript popup","target_blank":"Abrir en ventana nueva","target_top":"Abrir en el marco superior (reemplaza todos los marcos)","target_parent":"Abrir en ventana padre / marco","target_same":"Abrir en esta ventana / marco","anchor_names":"Anclas","popup_opts":"Opciones","advanced_props":"Propiedades avanzadas","event_props":"Eventos","popup_props":"Propiedades de ventanas emergentes","general_props":"Propiedades generales","advanced_tab":"Avanzado","events_tab":"Eventos","popup_tab":"Ventana emergente","general_tab":"General",list:"Lista de v\u00ednculos","is_external":"La URL que ha introducido parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","is_email":"La URL que ha introducido parece ser una direci\u00f3n de correo, \u00bfdesea agregar el prefijo mailto: necesario?",titlefield:"T\u00edtulo",target:"Destino",url:"URL del hiperv\u00ednculo",title:"Insertar/editar hiperv\u00ednculo","link_list":"Lista de v\u00ednculo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",accesskey:"Tecla de acceso",tabindex:"Indice de tabulaci\u00f3n",rev:"Relaci\u00f3n target a p\u00e1gina",rel:"Relaci\u00f3n p\u00e1gina a target",mime:"Tipo MIME del Target",encoding:"Codificaci\u00f3n de caracteres del Target",langcode:"C\u00f3digo del lenguaje","target_langcode":"Lenguaje del Target"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/et_dlg.js b/js/tiny_mce/plugins/advlink/langs/et_dlg.js new file mode 100755 index 000000000..954cdd59a --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.advlink_dlg',{target_name:"Sihtm\u00e4rgi nimi",classes:"Klassid",style:"Stiil",id:"ID",popup_position:"Positsioon (X/Y)",langdir:"Keele suund",popup_size:"Suurus",popup_dependent:"S\u00f5ltuv (ainult Mozilla/Firefox)",popup_resizable:"Muuda akna suurus muudetavaks",popup_location:"N\u00e4ita asukohariba",popup_menubar:"N\u00e4ita men\u00fc\u00fcriba",popup_toolbar:"N\u00e4ita seadistusriba",popup_statusbar:"N\u00e4ita staatuse riba",popup_scrollbars:"N\u00e4ita kerimisribasid",popup_return:"Sisesta \'tagasiminek eba\u00f5nnestus\'",popup_name:"Akna nimi",popup_url:"Pop-up\u2019i URL",popup:"Javascript\u2019i pop-up",target_blank:"Ava uues aknas",target_top:"Ava k\u00f5rgeimas raamis (asenda k\u00f5ik raamid)",target_parent:"Ava pea-aknas/raamis",target_same:"Ava selles aknas/raamis",anchor_names:"Ankrud",popup_opts:"Valikud",advanced_props:"\u00dcldised seadistused",event_props:"S\u00fcndmused",popup_props:"Pop-up\u2019i seadistus",general_props:"\u00dcldised seadistused",advanced_tab:"P\u00f5hjalikum",events_tab:"S\u00fcndmused",popup_tab:"Pop-up",general_tab:"\u00dcldine",list:"Linkide nimekiri",is_external:"URL, mille sisestasid, tundub olevat v\u00e4line link, kas soovid sellele lisada http://?",is_email:" URL, mille sisestasid, tundub olevat e-posti aadress, kas soovid sellele lisada mailto: funktsiooni?",titlefield:"Pealkiri",target:"Sihtm\u00e4rk",url:" URL\u2019i link",title:"Sisesta muuda linki",link_list:"Linkide list",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",accesskey:"Ligip\u00e4\u00e4suklahv",tabindex:"Sisujuht",rev:"Seo sihtm\u00e4rk lehega",rel:"Seo leht sihtm\u00e4rgiga",mime:"M\u00e4rgista MIME t\u00fc\u00fcp",encoding:"Sihtm\u00e4rgi kodeering",langcode:"Keele kood",target_langcode:"Sihtm\u00e4rgi keel"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/eu_dlg.js b/js/tiny_mce/plugins/advlink/langs/eu_dlg.js new file mode 100755 index 000000000..430a5dd54 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/eu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('eu.advlink_dlg',{target_name:"Helburuaren izena",classes:"Klaseak",style:"Estiloa",id:"Id",popup_position:"Kokapena (X/Y)",langdir:"Hizkuntzaren norabidea",popup_size:"Tamaina",popup_dependent:"Menpekoa (Mozilla/Firefoxen bakarrik)",popup_resizable:"Leihoaren tamaina aldatzea aktibatu",popup_location:"Helbide-barra erakutsi",popup_menubar:"Menu-barra erakutsi",popup_toolbar:"Tresna-barrak erakutsi",popup_statusbar:"Egoera-barra erakutsi",popup_scrollbars:"Gora-behera barra erakutsi",popup_return:"\'return false\' txertatu",popup_name:"Leihoaren izena",popup_url:"Popuparen URL helbidea",popup:"Javascript popupa",target_blank:"Leiho berrian ireki",target_top:"Gorengo markoan ireki (marko guztiak ordezkatzen ditu)",target_parent:"Leiho/marko gurasoan ireki",target_same:"Leiho/marko honetan ireki",anchor_names:"Aingurak",popup_opts:"Aukerak",advanced_props:"Aukera aurreratuak",event_props:"Ebentuak",popup_props:"Popuparen aukerak",general_props:"Aukera orokorrak",advanced_tab:"Gehigarriak",events_tab:"Ebentuak",popup_tab:"Popupa",general_tab:"Orokorra",list:"Lotura-zerrenda",is_external:"Sartutako helbideak kanpoko webgune batena dirudi, aurretik http:// gehitzea nahi duzu?",is_email:"Sartutako helbideak e-posta bat dirudi, aurretik mailto: gehitzea nahi duzu?",titlefield:"Izenburua",target:"Helburua",url:"Loturaren URL helbidea",title:"Lotura txertatu/editatu",link_list:"Lotura-zerrenda",rtl:"Eskuinetik ezkerrera",ltr:"Ezkerretik eskuinera",accesskey:"Laster-tekla",tabindex:"Tabulazio ordena",rev:"Helburuaren eta orrialdearen arteko erlazioa",rel:"Orrialdearen eta helburuaren arteko erlazioa",mime:"Helburuaren MIME mota",encoding:"Helburuaren karaktere-kodeketa",langcode:"Hizkuntza-kodea",target_langcode:"Helburu-hizkuntza"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/fa_dlg.js b/js/tiny_mce/plugins/advlink/langs/fa_dlg.js new file mode 100755 index 000000000..fc5872261 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/fa_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fa.advlink_dlg',{target_name:"\u0646\u0627\u0645 \u0645\u0642\u0635\u062f (Target)",classes:"\u06a9\u0644\u0627\u0633 \u0647\u0627",style:"\u0627\u0633\u062a\u06cc\u0644",id:"\u0634\u0646\u0627\u0633\u0647",popup_position:"\u0645\u0648\u0642\u0639\u06cc\u062a (X/Y)",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",popup_size:"\u0627\u0646\u062f\u0627\u0632\u0647",popup_dependent:"\u0648\u0627\u0628\u0633\u062a\u0647 (\u0641\u0642\u0637 Mozilla/Firefox)",popup_resizable:"\u0627\u06cc\u062c\u0627\u062f \u067e\u0646\u062c\u0631\u0647 \u0642\u0627\u0628\u0644 \u0627\u0646\u062f\u0627\u0632\u0647 \u0628\u0646\u062f\u06cc \u0645\u062c\u062f\u062f",popup_location:"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0645\u06a9\u0627\u0646",popup_menubar:"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0645\u0646\u0648",popup_toolbar:"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631",popup_statusbar:"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0648\u0636\u0639\u06cc\u062a",popup_scrollbars:"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0647\u0627",popup_return:"\u062f\u0631\u062c \'return false\'",popup_name:"\u0646\u0627\u0645 \u067e\u0646\u062c\u0631\u0647",popup_url:"URL \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)",popup:"\u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648\u06cc Javascript",target_blank:"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f",target_top:"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u0642\u0627\u0628 \u0628\u0627\u0644\u0627 (Top Frame) (\u062a\u0645\u0627\u0645\u06cc \u0642\u0627\u0628 \u0647\u0627 \u0631\u0627 \u062a\u0639\u0648\u06cc\u0636 \u0645\u06cc \u06a9\u0646\u062f)",target_parent:"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 / \u0642\u0627\u0628 \u0648\u0627\u0644\u062f (Parent Frame)",target_same:"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 / \u0642\u0627\u0628 (Frame)",anchor_names:"\u0644\u0646\u06af\u0631\u0647\u0627 (Anchor)",popup_opts:"\u06af\u0632\u06cc\u0646\u0647 \u0647\u0627",advanced_props:"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647",event_props:"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627",popup_props:"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)",general_props:"\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u0645\u0648\u0645\u06cc",advanced_tab:"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",events_tab:"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627",popup_tab:"\u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)",general_tab:"\u0639\u0645\u0648\u0645\u06cc",list:"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9",is_external:"URL \u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0644\u06cc\u0646\u06a9 \u062e\u0627\u0631\u062c\u06cc \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 //:http \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f",is_email:"URL \u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 :mailto \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f",titlefield:"\u0639\u0646\u0648\u0627\u0646",target:"\u0645\u0642\u0635\u062f (Target)",url:"URL \u0644\u06cc\u0646\u06a9",title:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9",link_list:"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",accesskey:"Accesskey",tabindex:"Tabindex",rev:"\u0631\u0627\u0628\u0637\u0647 \u0645\u0642\u0635\u062f (Target) \u0628\u0627 \u0635\u0641\u062d\u0647",rel:"\u0631\u0627\u0628\u0637\u0647 \u0635\u0641\u062d\u0647 \u0628\u0627 \u0645\u0642\u0635\u062f (Target)",mime:"\u0646\u0648\u0639 MIME \u0645\u0642\u0635\u062f (Target)",encoding:"\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0645\u0642\u0635\u062f (Target)",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",target_langcode:"\u0632\u0628\u0627\u0646 \u0645\u0642\u0635\u062f (Target)"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/fi_dlg.js b/js/tiny_mce/plugins/advlink/langs/fi_dlg.js new file mode 100755 index 000000000..0b3b568f7 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.advlink_dlg',{target_name:"Kohteen nimi",classes:"Luokat",style:"Tyyli",id:"Id",popup_position:"Sijainti (X/Y)",langdir:"Kielen suunta",popup_size:"Koko",popup_dependent:"Riippuvainen (vain Mozilla/Firefox)",popup_resizable:"Tee ikkunan koko muokattavaksi",popup_location:"N\u00e4yt\u00e4 sijaintipalkki",popup_menubar:"N\u00e4yt\u00e4 valikkopalkki",popup_toolbar:"N\u00e4yt\u00e4 ty\u00f6kalut",popup_statusbar:"N\u00e4yt\u00e4 tilapalkki",popup_scrollbars:"N\u00e4yt\u00e4 vierityspalkit",popup_return:"Lis\u00e4\u00e4 \'return false\'",popup_name:"Ikkunan nimi",popup_url:"Ponnahdusikkunan URL",popup:"JavaScript-ponnahdusikkuna",target_blank:"Avaa uudessa ikkunassa",target_top:"Avaa ylimm\u00e4ss\u00e4 ruudussa (korvaa kaikki ruudut)",target_parent:"Avaa ylemm\u00e4ss\u00e4 ikkunassa",target_same:"Avaa t\u00e4ss\u00e4 ikkunassa",anchor_names:"Ankkurit",popup_opts:"Valinta",advanced_props:"Edistyneet asetukset",event_props:"Tapahtumat (events)",popup_props:"Ponnahdusikkunan asetukset",general_props:"Yleiset asetukset",advanced_tab:"Edistynyt",events_tab:"Tapahtumat",popup_tab:"Ponnahdusikkuna",general_tab:"Yleiset",list:"Linkkilista",is_external:"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan sivuston ulkoinen osoite, haluatko lis\u00e4t\u00e4 http://-etuliitteen?",is_email:"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite, haluatko lis\u00e4t\u00e4 mailto:-etuliitteen?",titlefield:"Otsikko",target:"Kohde (target)",url:"Linkin URL",title:"Lis\u00e4\u00e4/muokkaa linkki\u00e4",link_list:"Linkkilista",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",accesskey:"Pikan\u00e4pp\u00e4in",tabindex:"Tabulaattori-indeksi",rev:"Kohteen suhde sivuun",rel:"Sivun suhde kohteeseen",mime:"Kohteen MIME-tyyppi",encoding:"Kohteen merkist\u00f6koodaus",langcode:"Kielen koodi",target_langcode:"Kohteen kieli"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/fr_dlg.js b/js/tiny_mce/plugins/advlink/langs/fr_dlg.js new file mode 100755 index 000000000..2213e0de6 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.advlink_dlg',{target_name:"Nom de la cible",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Sens de lecture",popup_size:"Taille",popup_dependent:"D\u00e9pendante (seulement sous Mozilla/Firefox)",popup_resizable:"Autoriser le redimensionnement de la fen\u00eatre",popup_location:"Afficher la barre d\'adresse",popup_menubar:"Afficher la barre de menu",popup_toolbar:"Afficher la barre d\'outils",popup_statusbar:"Afficher la barre d\'\u00e9tat",popup_scrollbars:"Afficher les ascenseurs",popup_return:"Ins\u00e9rer \'return false\'",popup_name:"Nom de la fen\u00eatre",popup_url:"URL de la popup",popup:"Popup Javascript",target_blank:"Ouvrir dans une nouvelle fen\u00eatre",target_top:"Ouvrir dans le cadre principal (remplace tous les cadres)",target_parent:"Ouvrir dans la fen\u00eatre / le cadre parent",target_same:"Ouvrir dans cette fen\u00eatre / dans ce cadre",anchor_names:"Ancres",popup_opts:"Options",advanced_props:"Propri\u00e9t\u00e9s avanc\u00e9es",event_props:"\u00c9v\u00e8nements",popup_props:"Propri\u00e9t\u00e9s de la popup",general_props:"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales",advanced_tab:"Avanc\u00e9",events_tab:"\u00c9v\u00e8nements",popup_tab:"Popup",general_tab:"G\u00e9n\u00e9ral",list:"Liste de liens",is_external:"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?",is_email:"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?",titlefield:"Titre",target:"Cible",url:"URL du lien",title:"Ins\u00e9rer / \u00e9diter un lien",link_list:"Liste des liens",rtl:"Droite \u00e0 gauche",ltr:"Gauche \u00e0 droite",accesskey:"Touche d\'acc\u00e8s rapide",tabindex:"Tabindex",rev:"Relation de la cible \u00e0 la page",rel:"Relation de la page \u00e0 la cible",mime:"Type MIME de la cible",encoding:"Encodage de la cible",langcode:"Code de la langue",target_langcode:"Langue de la cible"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/gl_dlg.js b/js/tiny_mce/plugins/advlink/langs/gl_dlg.js new file mode 100755 index 000000000..382156bc5 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.advlink_dlg',{target_name:"Nome do obxetivo",classes:"Clases",style:"Estilo",id:"Id",popup_position:"Posici\u00f3n (X/Y)",langdir:"Direcci\u00f3n da lenguaxe",popup_size:"Tama\u00f1o",popup_dependent:"Dependentes (s\u00f3lo Mozilla/Firefox)",popup_resizable:"Permitir cambia-lo tama\u00f1o da vent\u00e1",popup_location:"Barra de localizaci\u00f3n",popup_menubar:"Barra de men\u00fa",popup_toolbar:"Barra de ferramentas",popup_statusbar:"Barra de estado",popup_scrollbars:"Barras de desprazamento",popup_return:"Insertar \'return false\'",popup_name:"Nome da vent\u00e1",popup_url:"URL da vent\u00e1 emerxente",popup:"Javascript popup",target_blank:"Abrir en vent\u00e1 nova",target_top:"Abrir no marco superior (reemplaza todo-los marcos)",target_parent:"Abrir na vent\u00e1 / marco padre",target_same:"Abrir nesta vent\u00e1 / marco",anchor_names:"\u00c1ncoras",popup_opts:"Opci\u00f3ns",advanced_props:"Propiedades avanzadas",event_props:"Eventos",popup_props:"Propiedades de vent\u00e1s emerxentes",general_props:"Propiedades xerales",advanced_tab:"Avanzado",events_tab:"Eventos",popup_tab:"Ventana emerxente",general_tab:"Xeral",list:"Lista de v\u00ednculos",is_external:"A URL introducida semella ser un v\u00ednculo externo, \u00bfDesexa engadi-lo prefixo necesario http://?",is_email:"A URL introducida semella ser un enderezo de e-mail, \u00bfDesexa engadi-lo prefixo necesario mailto:?",titlefield:"T\u00edtulo",target:"Destino",url:"URL do hiperv\u00ednculo",title:"Insertar/editar hiperv\u00ednculo",link_list:"Lista de v\u00ednculo",rtl:"Dereita a esquerda",ltr:"Esquerda a dereita",accesskey:"Tecla de acceso",tabindex:"\u00cdndice de tabulaci\u00f3n",rev:"Relaci\u00f3n obxetivo a p\u00e1xina",rel:"Relaci\u00f3n p\u00e1xina a obxetivo",mime:"Tipo MIME do obxetivo",encoding:"Codificaci\u00f3n de caracteres do obxetivo",langcode:"C\u00f3digo da lenguaxe",target_langcode:"Lenguaxe do obxetivo"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/gu_dlg.js b/js/tiny_mce/plugins/advlink/langs/gu_dlg.js new file mode 100755 index 000000000..89f92a18f --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/gu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gu.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/he_dlg.js b/js/tiny_mce/plugins/advlink/langs/he_dlg.js new file mode 100755 index 000000000..4981261bc --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"\u05e1\u05d2\u05e0\u05d5\u05df",id:"\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d3\u05d5\u05e8\u05d9",popup_position:"\u05de\u05d9\u05e7\u05d5\u05dd (X/Y)",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",popup_size:"\u05d2\u05d5\u05d3\u05dc",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"\u05d7\u05dc\u05d5\u05df \u05d3\u05d9\u05e0\u05d0\u05de\u05d9(resizable)",popup_location:"\u05d4\u05e6\u05d2\u05ea location bar ",popup_menubar:"\u05d4\u05e6\u05d2\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8",popup_toolbar:"\u05d4\u05e6\u05d2\u05ea \u05e1\u05e8\u05d2\u05dc\u05d9 \u05db\u05dc\u05d9\u05dd",popup_statusbar:"\u05d4\u05e6\u05d2\u05ea \u05e9\u05d5\u05e8\u05ea \u05e1\u05d8\u05d0\u05d8\u05d5\u05e1",popup_scrollbars:"\u05d4\u05e6\u05d2\u05ea \u05e4\u05e1 \u05d2\u05dc\u05d9\u05dc\u05d4",popup_return:"\u05d9\u05e9 \u05dc\u05d4\u05db\u05e0\u05d9\u05e1 \'return false\'",popup_name:"\u05e9\u05dd \u05d4\u05d7\u05dc\u05d5\u05df",popup_url:"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5 URL",popup:"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5 javascript",target_blank:"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9",target_top:"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d4\u05d1\u05df \u05d4\u05e8\u05d0\u05e9\u05d9(\u05de\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05db\u05dc \u05d7\u05dc\u05d5\u05e0\u05d5\u05ea \u05d4\u05d1\u05e0\u05d9\u05dd)",target_parent:"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05dc\u05d5\u05df \u05d4\u05d0\u05d1\u05d0/\u05d7\u05dc\u05d5\u05df \u05d1\u05df",target_same:"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9/\u05d7\u05dc\u05d5\u05df \u05d1\u05df",anchor_names:"\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e1\u05d9\u05de\u05e0\u05d9\u05d4",popup_opts:"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea",advanced_props:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea",event_props:"\u05de\u05d0\u05d5\u05e8\u05e2\u05d5\u05ea",popup_props:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5",general_props:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea",advanced_tab:"\u05de\u05ea\u05e7\u05d3\u05dd",events_tab:"\u05d0\u05e8\u05d5\u05e2\u05d9\u05dd",popup_tab:"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5",general_tab:"\u05db\u05dc\u05dc\u05d9",list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd",is_external:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:// \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?",is_email:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05d9\u05d9\u05dc \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea MAILTO \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?",titlefield:"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",target:"\u05d9\u05e2\u05d3",url:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",link_list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/hi_dlg.js b/js/tiny_mce/plugins/advlink/langs/hi_dlg.js new file mode 100755 index 000000000..095fc8940 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/hi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hi.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/hr_dlg.js b/js/tiny_mce/plugins/advlink/langs/hr_dlg.js new file mode 100755 index 000000000..55c2999d0 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/hr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hr.advlink_dlg',{target_name:"Ime mete",classes:"Klasa",style:"Stil",id:"Id",popup_position:"Pozicija (X/Y)",langdir:"Smjer jezika",popup_size:"Veli\u010dina",popup_dependent:"Ovisan (samo za Mozilla/Firefox)",popup_resizable:"Prozor promjenjive veli\u010dine",popup_location:"Poka\u017ei traku lokacije",popup_menubar:"Poka\u017ei izbornik",popup_toolbar:"Poka\u017ei alatne trake",popup_statusbar:"Poka\u017ei statusnu traku",popup_scrollbars:"Poka\u017ei kliza\u010de",popup_return:"Umetni \'return false\'",popup_name:"Ime prozora",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Otvori u novom prozoru",target_top:"Otvori u gornjem okviru (zamjenjuje sve okvire)",target_parent:"Otvori u izvornom prozoru / okvir",target_same:"Otovori u novom prozoru / okviru",anchor_names:"Sidra",popup_opts:"Opcije",advanced_props:"Napredna svojstva",event_props:"Doga\u0111aji",popup_props:"Svojstva popup prozora",general_props:"Osnovna svojstva",advanced_tab:"Napredno",events_tab:"Doga\u0111aj",popup_tab:"Popup",general_tab:"Osnovno",list:"Lista poveznica",is_external:"URL koji ste unijeli izgleda kao vanjska poveznica, \u017eelite li dodati potrebni http:// prefiks?",is_email:"URL koji ste unijeli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?",titlefield:"Naslov",target:"Meta",url:"URL poveznice",title:"Umetni/uredi poveznicu",link_list:"Lista poveznica",rtl:"S desna na lijevo",ltr:"S lijeva na desno",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"MIME tip",encoding:"Kodiranje znakova",langcode:"Kod jezika",target_langcode:"Jezik"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/hu_dlg.js b/js/tiny_mce/plugins/advlink/langs/hu_dlg.js new file mode 100755 index 000000000..36fa87497 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.advlink_dlg',{"target_name":"C\u00e9l neve",classes:"Class-ok",style:"Style",id:"Id","popup_position":"Poz\u00edci\u00f3 (X/Y)",langdir:"Nyelv \u00edr\u00e1s ir\u00e1ny","popup_size":"M\u00e9ret","popup_dependent":"F\u00fcgg\u0151 (csak Mozilla/Firefox)","popup_resizable":"\u00c1tm\u00e9retezhet\u0151 ablak","popup_location":"C\u00edm mez\u0151 mutat\u00e1sa","popup_menubar":"Men\u00fcsor mutat\u00e1sa","popup_toolbar":"Eszk\u00f6zsor mutat\u00e1sa","popup_statusbar":"St\u00e1tuszsor mutat\u00e1sa","popup_scrollbars":"G\u00f6rget\u0151s\u00e1vok mutat\u00e1sa","popup_return":"\'return false\' besz\u00far\u00e1sa","popup_name":"Ablakn\u00e9v","popup_url":"Felugr\u00f3 ablak URL",popup:"JavaScript felugr\u00f3 ablak","target_blank":"\u00daj ablakban megnyit\u00e1s","target_top":"Azonos ablakban/keretben megnyit\u00e1s legfel\u00fcl","target_parent":"Sz\u00fcl\u0151 ablakban/keretben megnyit\u00e1s","target_same":"Azonos ablakban/keretben megnyit\u00e1s","anchor_names":"Horgonyok","popup_opts":"Be\u00e1ll\u00edt\u00e1sok","advanced_props":"Halad\u00f3 tulajdons\u00e1gok","event_props":"Esem\u00e9nyek","popup_props":"Felugr\u00f3 ablak tulajdons\u00e1gai","general_props":"\u00c1ltal\u00e1nos tulajdons\u00e1gok","advanced_tab":"Halad\u00f3","events_tab":"Esem\u00e9nyek","popup_tab":"Felugr\u00f3 ablak","general_tab":"\u00c1ltal\u00e1nos",list:"Link lista","is_external":"A be\u00edrt URL k\u00fcls\u0151 hivatkoz\u00e1snak t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges http://-t el\u00e9 tenni?","is_email":"A be\u00edrt URL e-mail c\u00edmnek t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges mailto:-t el\u00e9 tenni?",titlefield:"C\u00edm",target:"Target",url:"Link URL",title:"Link besz\u00far\u00e1s/szerkeszt\u00e9s","link_list":"Link lista",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",accesskey:"Gyorsgomb",tabindex:"Tabindex",rev:"C\u00e9l kapcsolata az oldallal",rel:"Oldal kapcsolata a c\u00e9llal",mime:"C\u00e9l MIME t\u00edpus",encoding:"C\u00e9l karakterk\u00f3dol\u00e1s",langcode:"Nyelv k\u00f3d","target_langcode":"C\u00e9l nyelv"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/hy_dlg.js b/js/tiny_mce/plugins/advlink/langs/hy_dlg.js new file mode 100755 index 000000000..9bee85bff --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/hy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hy.advlink_dlg',{target_name:"Target name",classes:"\u0534\u0561\u057d\u0565\u0580",style:"\u0548\u0573",id:"Id",popup_position:"\u054f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574 (X / Y)",langdir:"\u0548\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",popup_size:"\u0549\u0561\u0583\u057d",popup_dependent:"Dependent (\u0574\u056b\u0561\u0575\u0576 Mozilla / Firefox)",popup_resizable:"\u0539\u0578\u0582\u0575\u056c\u0561\u057f\u0580\u0565\u056c \u0579\u0561\u0583\u0565\u0580\u056b \u0583\u0578\u0583\u0578\u056d\u0578\u0582\u0574",popup_location:"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c location \u057e\u0561\u0570\u0561\u0576\u0561\u056f\u0568",popup_menubar:"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u0574\u0565\u0576\u0575\u0578\u0582\u0576",popup_toolbar:"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u0563\u0578\u0580\u056e\u056b\u0584\u0561\u0575\u056b\u0576 \u057e\u0561\u0570\u0561\u0576\u0561\u056f\u0576\u0565\u0580\u0568",popup_statusbar:"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u057d\u057f\u0561\u057f\u0578\u0582\u057d\u0568",popup_scrollbars:"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u057d\u0584\u0580\u0578\u056c\u056c\u0576\u0565\u0580\u0568",popup_return:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \'return false\'",popup_name:"\u054a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u056b \u0561\u0576\u057e\u0561\u0576\u0578\u0582\u0574",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"\u0532\u0561\u0581\u0565\u056c \u0576\u0578\u0580 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574",target_top:"\u0532\u0561\u0581\u0565\u056c \u057e\u0565\u0580\u056b\u0576 \u0586\u0580\u0565\u0575\u0574\u0578\u0582\u0574 (\u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0562\u0578\u056c\u0578\u0580 \u0586\u0580\u0565\u0575\u0574\u0565\u0580\u0568)",target_parent:"\u0532\u0561\u0581\u0565\u056c \u0570\u056b\u0574\u0576\u0561\u056f\u0561\u0576 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574 / \u0586\u0580\u0565\u0575\u0574\u0578\u0582\u0574",target_same:"\u0532\u0561\u0581\u0565\u056c \u0561\u0575\u057d \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574 / \u0586\u0580\u0565\u0575\u0574\u0578\u0582\u0574",anchor_names:"\u053d\u0561\u0580\u056b\u057d\u056d",popup_opts:"\u054a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580",advanced_props:"\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579 \u0564\u0565\u057a\u0584\u0565\u0580",event_props:"\u0534\u0565\u057a\u0584\u0565\u0580",popup_props:"Popup \u057a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580",general_props:"\u0538\u0576\u0564\u0570\u0561\u0576\u0578\u0582\u0580 \u057a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580",advanced_tab:"\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579",events_tab:"\u0534\u0565\u057a\u0584\u0565\u0580",popup_tab:"Popup",general_tab:"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576",list:"\u0540\u0572\u0578\u0582\u0574\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f",is_external:"\u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e URL \u0570\u0561\u057d\u0581\u0565\u0576 \u0576\u0574\u0561\u0576 \u0567 \u0561\u0580\u057f\u0561\u0584\u056b\u0576 \u0570\u0572\u0574\u0561\u0576, \u0534\u0578\u0582\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c http://",is_email:"\u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e URL \u0570\u0561\u057d\u0581\u0565\u0576 \u0576\u0574\u0561\u0576 \u0567 email \u0570\u0561\u057d\u0581\u0565\u056b, \u0534\u0578\u0582\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c mailto:",titlefield:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",target:"\u0532\u0561\u0581\u0565\u056c ...",url:"\u0540\u0561\u057d\u0581\u0565",title:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0570\u0572\u0578\u0582\u0574",link_list:"\u0540\u0572\u0578\u0582\u0574\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f",rtl:"\u0531\u057b\u056b\u0581 \u0571\u0561\u056d",ltr:"\u0541\u0561\u056d\u056b\u0581 \u0561\u057b",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"\u053c\u0565\u0566\u057e\u056b \u056f\u0578\u0564",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ia_dlg.js b/js/tiny_mce/plugins/advlink/langs/ia_dlg.js new file mode 100755 index 000000000..9759b649f --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ia_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ia.advlink_dlg',{target_name:"\u76ee\u6807\u540d\u79f0",classes:"\u6837\u5f0f\u7c7b",style:"\u6837\u5f0f",id:"Id",popup_position:"\u5750\u6807 (X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",popup_size:"\u5927\u5c0f",popup_dependent:"\u4ece\u5c5e\u4e8e ( \u4ec5 Mozilla/Firefox \u6709\u6548 )",popup_resizable:"\u53ef\u8c03\u6574\u7a97\u53e3\u5927\u5c0f",popup_location:"\u663e\u793a\u5730\u5740\u680f",popup_menubar:"\u663e\u793a\u83dc\u5355\u5217",popup_toolbar:"\u663e\u793a\u5de5\u5177\u5217",popup_statusbar:"\u663e\u793a\u72b6\u6001\u5217",popup_scrollbars:"\u663e\u793a\u6eda\u52a8\u6761",popup_return:"\u63d2\u5165 \'return false\'",popup_name:"\u7a97\u53e3\u540d\u79f0",popup_url:"\u5f39\u51fa\u7a97\u53e3\u5730\u5740",popup:"Javascript \u5feb\u663e\u7a97\u53e3",target_blank:"\u5728\u65b0\u7a97\u53e3\u6253\u5f00",target_top:"\u5728\u9876\u5c42\u7a97\u53e3\u6253\u5f00",target_parent:"\u5728\u7236\u7a97\u53e3\u6253\u5f00",target_same:"\u5728\u5f53\u524d\u7a97\u53e3\u6253\u5f00",anchor_names:"\u951a\u70b9",popup_opts:"\u9009\u9879",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5feb\u663e\u7a97\u53e3\u5c5e\u6027",general_props:"\u57fa\u672c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5feb\u663e\u7a97\u53e3",general_tab:"\u57fa\u672c",list:"\u8fde\u7ed3\u6e05\u5355",is_external:"\u60a8\u8f93\u5165\u7684\u7f51\u5740\u5e94\u8be5\u662f\u4e00\u4e2a\u5916\u90e8\u8fde\u7ed3\uff0c\u662f\u5426\u9700\u8981\u5728\u7f51\u5740\u524d\u52a0\u4e0a http:// ?",is_email:"\u60a8\u8f93\u5165\u7684\u5e94\u8be5\u662f\u4e00\u4e2a\u7535\u5b50\u90ae\u5bc4\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u5728\u7f51\u5740\u524d\u52a0\u4e0a mailto: ? ",titlefield:"\u67e5\u627e",target:"\u76ee\u6807",url:"\u8fde\u7ed3\u5730\u5740",title:"\u63d2\u5165/\u7f16\u8f91 \u8fde\u7ed3",link_list:"\u8fde\u7ed3\u6e05\u5355",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u901f\u952e",tabindex:"Tab\u7d22\u5f15",rev:"rev",rel:"rel",mime:"\u76ee\u6807 MIME \u7c7b\u578b",encoding:"\u76ee\u6807\u8bed\u8a00\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801",target_langcode:"\u76ee\u6807\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/id_dlg.js b/js/tiny_mce/plugins/advlink/langs/id_dlg.js new file mode 100755 index 000000000..cefdb1b56 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.advlink_dlg',{target_name:"Nama Target",classes:"Classes",style:"Style",id:"Id",popup_position:"Posisi (X/Y)",langdir:"Bahasa",popup_size:"Ukuran",popup_dependent:"Tergantung (khusus Mozilla/Firefox)",popup_resizable:"Jadikan window resizable",popup_location:"Tampilkan location bar",popup_menubar:"Tampilkan menu bar",popup_toolbar:"Tampilkan toolbars",popup_statusbar:"Tampilkan status bar",popup_scrollbars:"Tampilkan scrollbars",popup_return:"sisipkan \'return false\'",popup_name:"Nama Window",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Buka pada Window baru",target_top:"Buka pada frame atas (Gantikan semua frame)",target_parent:"Buka pada parent window/frame",target_same:"Buka pada window/frame ini",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Properti Pop-Up",general_props:"Properti Umum",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"Umum",list:"Daftar Link",is_external:"URL yang Anda sisipkan tampaknya link eksternal, Anda ingin menambahkan awalan \'http://\'?",is_email:"URL yang Anda sisipkan tampaknya e-mail, Anda ingin menambahkan awalan \'mailto:\'?",titlefield:"Judul",target:"Target",url:"Link URL",title:"Sisipkan/Ubah link",link_list:"Daftar Link",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Hubungan target dengan page",rel:"Hubungan page dengan target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Kode Bahasa",target_langcode:"Bahasa Target"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ii_dlg.js b/js/tiny_mce/plugins/advlink/langs/ii_dlg.js new file mode 100755 index 000000000..a2018fb08 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ii_dlg.js @@ -0,0 +1,52 @@ +tinyMCE.addI18n('ii.advlink_dlg',{ +title:"\u63D2\u5165/\u7F16\u8F91\u8FDE\u7ED3", +url:"\u8FDE\u7ED3\u4F4D\u5740", +target:"\u76EE\u6807", +titlefield:"\u67E5\u627E", +is_email:"\u60A8\u8F93\u5165\u7684\u7F51\u5740\u5E94\u8BE5\u662F\u4E00\u4E2A\u7535\u5B50\u90AE\u5BC4\u5730\u5740\uFF0C\u662F\u5426\u9700\u8981\u5728\u90AE\u5740\u524D\u65B9\u52A0\u5165mailto:\uFF1F", +is_external:"\u60A8\u8F93\u5165\u7684\u7F51\u5740\u5E94\u8BE5\u662F\u4E00\u4E2A\u5916\u90E8\u8FDE\u7ED3\uFF0C\u662F\u5426\u9700\u8981\u5728\u7F51\u5740\u524D\u65B9\u52A0\u5165http://\uFF1F", +list:"\u8FDE\u7ED3\u6E05\u5355", +general_tab:"\u4E00\u822C", +popup_tab:"\u5F39\u51FA\u7A97\u53E3", +events_tab:"\u4E8B\u4EF6", +advanced_tab:"\u9AD8\u7EA7", +general_props:"\u4E00\u822C\u5C5E\u6027", +popup_props:"\u5F39\u51FA\u7A97\u53E3\u5C5E\u6027", +event_props:"\u4E8B\u4EF6", +advanced_props:"\u9AD8\u7EA7\u5C5E\u6027", +popup_opts:"\u9009\u9879", +anchor_names:"\u951A\u70B9", +target_same:"\u6253\u5F00\u5728\u65B0\u7A97\u53E3/\u6846\u67B6", +target_parent:"\u6253\u5F00\u5728\u7236\u7A97\u53E3/\u6846\u67B6", +target_top:"\u6253\u5F00\u5728\u6700\u4E0A\u5C42\u7684\u6846\u67B6(\u66FF\u6362\u6240\u6709\u6846\u67B6)", +target_blank:"\u6253\u5F00\u5728\u65B0\u7A97\u53E3", +popup:"Javascript\u5F39\u51FA\u7A97\u53E3", +popup_url:"\u5F39\u51FA\u7A97\u53E3\u7F51\u5740", +popup_name:"\u7A97\u53E3\u540D\u79F0", +popup_return:"\u63D2\u5165'return false'", +popup_scrollbars:"\u663E\u793A\u8FB9\u6761", +popup_statusbar:"\u663E\u793A\u72B6\u6001\u680F", +popup_toolbar:"\u663E\u793A\u5DE5\u5177\u5217", +popup_menubar:"\u663E\u793A\u529F\u80FD\u8868", +popup_location:"\u663E\u793A\u7F51\u5740\u5217", +popup_resizable:"\u53EF\u8C03\u6574\u7A97\u53E3\u5C3A\u5BF8", +popup_dependent:"\u4ECE\u5C5E(\u53EA\u6709Mozilla/Firefox\u6709\u6548)", +popup_size:"\u5C3A\u5BF8", +popup_position:"\u5EA7\u6807(X/Y)", +id:"Id", +style:"\u6837\u5F0F", +classes:"\u7C7B\u578B", +target_name:"\u76EE\u6807\u540D\u79F0", +langdir:"\u8BED\u8A00\u4E66\u5199\u65B9\u5411", +target_langcode:"\u76EE\u7684\u8BED\u8A00", +langcode:"\u8BED\u8A00\u7F16\u7801", +encoding:"\u7F16\u7801", +mime:"\u76EE\u6807MIME\u7C7B\u578B", +rel:"\u9875\u5230\u76EE\u6807\u7684\u5173\u7CFB", +rev:"\u76EE\u6807\u5230\u9875\u7684\u5173\u7CFB", +tabindex:"Tab\u7D22\u5F15", +accesskey:"\u5FEB\u901F\u952E", +ltr:"\u7531\u5DE6\u5230\u53F3", +rtl:"\u7531\u53F3\u5230\u5DE6", +link_list:"\u8FDE\u7ED3\u6E05\u5355" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/is_dlg.js b/js/tiny_mce/plugins/advlink/langs/is_dlg.js new file mode 100755 index 000000000..759fd70e4 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/is_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('is.advlink_dlg',{target_name:"Target heiti",classes:"Klasi",style:"St\u00edll",id:"Id",popup_position:"Sta\u00f0setning (X/Y)",langdir:"\u00c1tt tungum\u00e1ls",popup_size:"St\u00e6r\u00f0",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Leyfa breytingu st\u00e6r\u00f0ar \u00e1 glugga",popup_location:"Birta vefsl\u00f3\u00f0",popup_menubar:"Birta valmynd",popup_toolbar:"Show toolbars",popup_statusbar:"Birta st\u00f6\u00f0u sl\u00e1",popup_scrollbars:"Birta runusl\u00e1",popup_return:"B\u00e6ta vi\u00f0 \'return false\'",popup_name:"Heiti gluggans",popup_url:"Sl\u00f3\u00f0 sprettigluggans",popup:"Javascript sprettigluggi",target_blank:"Opna \u00ed n\u00fdjum glugga",target_top:"Opna \u00ed efsta ramma (kemur \u00ed sta\u00f0inn fyrir alla ramma)",target_parent:"Opna \u00ed yfir glugga / ramma",target_same:"Opna \u00ed \u00feessum glugga / ramma",anchor_names:"Anchors",popup_opts:"M\u00f6guleikar",advanced_props:"Frekari eiginleikar",event_props:"Vi\u00f0bur\u00f0ir",popup_props:"Eiginleikar sprettiglugga",general_props:"Almennir eiginleikar",advanced_tab:"N\u00e1nar",events_tab:"Vi\u00f0bur\u00f0ir",popup_tab:"Sprettigluggi",general_tab:"Almennt",list:"Listi hlekkja",is_external:"Sl\u00f3\u00f0in sem \u00fe\u00fa skr\u00e1\u00f0ir vir\u00f0ist vera sl\u00f3\u00f0 utan vefs, vilt \u00fe\u00fa b\u00e6ta vi\u00f0 forskeytinu http://?",is_email:"Sl\u00f3\u00f0in sem \u00fe\u00fa skr\u00e1\u00f0ir vir\u00f0ist vera netfang, vilt \u00fe\u00fa b\u00e6ta vi\u00f0 forskeytinu mailto:?",titlefield:"Titill",target:"Target",url:"Sl\u00f3\u00f0",title:"Setja inn/breyta hlekk",link_list:"Listi hlekkja",rtl:"H\u00e6gri til vinstri",ltr:"Vinstri til h\u00e6gri",accesskey:"Fl\u00fdtihnappur",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"K\u00f3\u00f0i tungum\u00e1ls",target_langcode:"\u00c6tla\u00f0 tungum\u00e1l"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/it_dlg.js b/js/tiny_mce/plugins/advlink/langs/it_dlg.js new file mode 100755 index 000000000..8af57349b --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.advlink_dlg',{target_name:"Nome target",classes:"Classe",style:"Stile",id:"Id",popup_position:"Posizione (X/Y)",langdir:"Direzione del testo",popup_size:"Dimensioni",popup_dependent:"Dipendente (Solo in Mozilla/Firefox)",popup_resizable:"Rendi la finestra ridimensionabile",popup_location:"Mostra barra navigazione",popup_menubar:"Mostra barra menu",popup_toolbar:"Mostra barre strumenti",popup_statusbar:"Mostra barra di stato",popup_scrollbars:"Mostra barre di scorrimento",popup_return:"Inserisci \'return false\'",popup_name:"Nome finestra",popup_url:"URL Popup",popup:"Popup Javascript",target_blank:"Apri in una nuova finestra",target_top:"Apri nella cornice superiore (sostituisce tutte le cornici)",target_parent:"Apri nella finestra / cornice genitore",target_same:"Apri in questa finestra / cornice",anchor_names:"Ancore",popup_opts:"Opzioni",advanced_props:"Propriet\u00e0 avanzate",event_props:"Eventi",popup_props:"Propriet\u00e0 popup",general_props:"Propriet\u00e0 generali",advanced_tab:"Avanzate",events_tab:"Eventi",popup_tab:"Popup",general_tab:"Generale",list:"Lista collegamenti",is_external:"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?",is_email:"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?",titlefield:"Titolo",target:"Target",url:"URL collegamento",title:"Inserisci/modifica link",link_list:"Lista collegamenti",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",accesskey:"Carattere di accesso",tabindex:"Indice tabulazione",rev:"Relazione da target a pagina",rel:"Relazione da pagina a target",mime:"Tipo MIME del target",encoding:"Codifica carattere del target",langcode:"Lingua",target_langcode:"Lingua del target"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ja_dlg.js b/js/tiny_mce/plugins/advlink/langs/ja_dlg.js new file mode 100755 index 000000000..54e9a0124 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ja_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ja.advlink_dlg',{"target_name":"\u30bf\u30fc\u30b2\u30c3\u30c8\u540d",classes:"\u30af\u30e9\u30b9",style:"\u30b9\u30bf\u30a4\u30eb",id:"ID","popup_position":"\u4f4d\u7f6e (X/Y)",langdir:"\u6587\u7ae0\u306e\u65b9\u5411","popup_size":"\u30b5\u30a4\u30ba","popup_dependent":"Dependent (Mozilla/Firefox\u306e\u307f)","popup_resizable":"\u30a6\u30a4\u30f3\u30c9\u30a6\u306e\u30b5\u30a4\u30ba\u5909\u66f4\u3092\u8a31\u53ef\u3059\u308b","popup_location":"\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u3092\u8868\u793a","popup_menubar":"\u30e1\u30cb\u30e5\u30fc\u30d0\u30fc\u3092\u8868\u793a","popup_toolbar":"\u30c4\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a","popup_statusbar":"\u30b9\u30c6\u30fc\u30bf\u30b9\u30d0\u30fc\u3092\u8868\u793a","popup_scrollbars":"\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a","popup_return":"\'return false\'\u3092\u633f\u5165\u3059\u308b","popup_name":"\u30a6\u30a4\u30f3\u30c9\u30a6\u540d","popup_url":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7URL",popup:"Javascript\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","target_blank":"\u65b0\u3057\u3044\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","target_top":"\u30c8\u30c3\u30d7\u306e\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","target_parent":"\u89aa\u30a6\u30a4\u30f3\u30c9\u30a6/\u89aa\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","target_same":"\u3053\u306e\u30a6\u30a4\u30f3\u30c9\u30a6/\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","anchor_names":"\u30a2\u30f3\u30ab\u30fc","popup_opts":"\u30aa\u30d7\u30b7\u30e7\u30f3","advanced_props":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","event_props":"\u30a4\u30d9\u30f3\u30c8","popup_props":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","general_props":"\u4e00\u822c","advanced_tab":"\u4e0a\u7d1a\u8005\u5411\u3051","events_tab":"\u30a4\u30d9\u30f3\u30c8","popup_tab":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","general_tab":"\u4e00\u822c",list:"\u4e00\u89a7\u304b\u3089\u9078\u3076","is_external":"\u30ea\u30f3\u30af\u306bhttp://\u3092\u4ed8\u52a0\u3057\u307e\u3059\u304b\uff1f","is_email":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u5165\u529b\u3055\u308c\u307e\u3057\u305f\u3002\u30ea\u30f3\u30af\u306bmailto:\u3092\u4ed8\u52a0\u3057\u307e\u3059\u304b\uff1f",titlefield:"\u30bf\u30a4\u30c8\u30eb",target:"\u30bf\u30fc\u30b2\u30c3\u30c8",url:"\u30ea\u30f3\u30afURL",title:"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","link_list":"\u4e00\u89a7\u304b\u3089\u9078\u3076",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",accesskey:"\u30a2\u30af\u30bb\u30b9\u30ad\u30fc",tabindex:"\u30bf\u30d6\u30a4\u30f3\u30c7\u30c3\u30af\u30b9",rev:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u3053\u306e\u30da\u30fc\u30b8\u306b\u5bfe\u3059\u308b\u95a2\u4fc2",rel:"\u3053\u306e\u30da\u30fc\u30b8\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u5bfe\u3059\u308b\u95a2\u4fc2",mime:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306eMIME\u30bf\u30a4\u30d7",encoding:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9","target_langcode":"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8a00\u8a9e"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ka_dlg.js b/js/tiny_mce/plugins/advlink/langs/ka_dlg.js new file mode 100755 index 000000000..2032210c4 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ka_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ka.advlink_dlg',{target_name:"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8",classes:"\u10d9\u10da\u10d0\u10e1\u10d4\u10d1\u10d8",style:"\u10e1\u10e2\u10d8\u10da\u10d8",id:"\u10e1\u10d0\u10ee\u10d4\u10da\u10d8",popup_position:"\u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0 (X/Y)",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d1\u10d0",popup_size:"\u10d6\u10dd\u10db\u10d0",popup_dependent:"\u10d3\u10d0\u10db\u10dd\u10d9\u10d8\u10d3\u10d4\u10d1\u10e3\u10da\u10d4\u10d1\u10d0 (\u10db\u10ee\u10dd\u10da\u10dd\u10d3 Firefox)",popup_resizable:"\u10d6\u10dd\u10db\u10d8\u10e1 \u10ea\u10d5\u10da\u10d8\u10da\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10e8\u10d5\u10d4\u10d1\u10d0",popup_location:"\u10d2\u10d0\u10dc\u10da\u10d0\u10d2\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",popup_menubar:"\u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",popup_toolbar:"\u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10db\u10d4\u10dc\u10e2\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",popup_statusbar:"\u10db\u10d3\u10d2\u10dd\u10db\u10d0\u10e0\u10d4\u10dd\u10d1\u10d8\u10e1 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",popup_scrollbars:"\u10d2\u10d0\u10d3\u10d0\u10ee\u10d5\u10d4\u10d5\u10d8\u10e1 \u10d5\u10d4\u10da\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",popup_return:"\'return false\' \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",popup_name:"\u10e4\u10d0\u10dc\u10ef\u10e0\u10d8\u10e1 \u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",popup_url:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",popup:"\u10d2\u10d0\u10e8\u10da\u10d0 Java-\u10e1 \u10d2\u10d0\u10db\u10dd\u10e7\u10d4\u10dc\u10d4\u10d1\u10d8\u10d7",target_blank:"\u10d0\u10ee\u10d0\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",target_top:"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d0\u10d3\u10e0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",target_parent:"\u10e1\u10d0\u10d9\u10e3\u10d7\u10d0\u10e0\u10d0 \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",target_same:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",anchor_names:"\u10e6\u10e3\u10d6\u10d4\u10d1\u10d8",popup_opts:"\u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8",advanced_props:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",event_props:"\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",popup_props:"\u10d2\u10d0\u10e8\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",general_props:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",advanced_tab:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7",events_tab:"\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d0",popup_tab:"\u10d2\u10d0\u10e8\u10da\u10d0",general_tab:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",list:"\u10e1\u10d8\u10d0",is_external:"\u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d5\u10e1 \u10d2\u10d0\u10e0\u10d4 \u10d1\u10db\u10e3\u10da\u10e1, \u10d3\u10d0\u10d5\u10d0\u10db\u10d0\u10d7\u10dd\u10e2 \u10de\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8 http://?",is_email:" \u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d5\u10e1 \u10d4\u10da.\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10e1, \u10d3\u10d0\u10d5\u10d0\u10db\u10d0\u10e2\u10dd\u10d7 \u10de\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8 mailto:?",titlefield:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",target:"\u10db\u10d8\u10d6\u10d0\u10dc\u10d8",url:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",title:"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",link_list:"\u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0",rtl:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",ltr:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",accesskey:"\u10e8\u10d4\u10e0\u10ec\u10d4\u10d5\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10e6\u10d4\u10d1\u10d8",tabindex:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",rev:"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10d3\u10d0\u10db\u10dd\u10d9\u10d8\u10d3\u10d4\u10d1\u10e3\u10da\u10d4\u10d1\u10d0 \u10d2\u10d5\u10d4\u10e0\u10d3\u10d7\u10d0\u10dc",rel:"\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d3\u10d0\u10db\u10dd\u10d9\u10d8\u10d3\u10d4\u10d1\u10e3\u10da\u10d4\u10d1\u10d0 \u10db\u10d8\u10d6\u10d0\u10dc\u10d7\u10d0\u10dc",mime:"MIME \u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",encoding:"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8",target_langcode:"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10d4\u10dc\u10d0"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/kl_dlg.js b/js/tiny_mce/plugins/advlink/langs/kl_dlg.js new file mode 100755 index 000000000..435a1f5a1 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/kl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('kl.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/km_dlg.js b/js/tiny_mce/plugins/advlink/langs/km_dlg.js new file mode 100755 index 000000000..359c368ca --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/km_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('km.advlink_dlg',{target_name:"\u1788\u17d2\u1798\u17c4\u17c7\u1782\u17c4\u179b\u178a\u17c5",classes:"\u1790\u17d2\u1793\u17b6\u1780\u17cb",style:"\u179a\u1785\u1793\u17b6\u1794\u17d0\u1791\u17d2\u1798",id:"\u179b\u179f.",popup_position:"\u1791\u17b8\u178f\u17b6\u17c6\u1784 (X/Y)",langdir:"\u1791\u17b7\u179f\u178a\u17c5\u1797\u17b6\u179f\u17b6",popup_size:"\u1791\u17c6\u17a0\u17c6",popup_dependent:"\u17a2\u17b6\u179f\u17d2\u179a\u17d0\u1799 (Mozilla/Firefox \u178f\u17c2\u1794\u17c9\u17bb\u178e\u17d2\u178e\u17c4\u17c7)",popup_resizable:"\u17b1\u17d2\u1799\u1794\u1784\u17d2\u17a2\u17bd\u1785\u17a2\u17b6\u1785\u1794\u17d2\u178f\u17bc\u179a\u1791\u17c6\u17a0\u17c6\u1794\u17b6\u1793",popup_location:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u179a\u1794\u17b6\u179a\u1791\u17b8\u178f\u17b6\u17c6\u1784",popup_menubar:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u179a\u1794\u17b6\u179a\u1798\u17c9\u17ba\u1793\u17bb\u1799",popup_toolbar:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u179a\u1794\u17b6\u179a\u17a7\u1794\u1780\u179a\u178e\u17cd",popup_statusbar:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u179a\u1794\u17b6\u179a\u179f\u17d2\u1790\u17b6\u1793\u1797\u17b6\u1796",popup_scrollbars:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u179a\u1794\u17b6\u179a\u179a\u1798\u17bc\u179a",popup_return:"\u1794\u1789\u17d2\u1785\u17bc\u179b\'return false\'",popup_name:"\u1788\u17d2\u1798\u17c4\u17c7\u1794\u1784\u17d2\u17a2\u17bc\u1785",popup_url:"\u17a2\u17b6\u179f\u178a\u17d2\u178b\u17b6\u1793\u1794\u1784\u17d2\u17a2\u17bd\u1785\u179b\u17c1\u1785\u17a1\u17be\u1784",popup:"\u1794\u1784\u17d2\u17a2\u17bd\u1785\u179b\u17c1\u1785\u17a1\u17be\u1784 Javascript",target_blank:"\u1794\u17be\u1780\u1780\u17d2\u1793\u17bb\u1784\u1794\u1784\u17d2\u17a2\u17bd\u1785\u1790\u17d2\u1798\u17b8",target_top:"\u1794\u17be\u1780\u1780\u17d2\u1793\u17bb\u1784\u179f\u17ca\u17bb\u1798\u179b\u17be (\u1787\u17c6\u1793\u17bd\u179f\u1782\u17d2\u179a\u1794\u17cb\u179f\u17ca\u17bb\u1798\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb)",target_parent:"\u1794\u17be\u1780\u1780\u17d2\u1793\u17bb\u1784\u1794\u1784\u17d2\u17a2\u17bd\u1785/\u179f\u17ca\u17bb\u1798\u1798\u17c1",target_same:"\u1794\u17be\u1780\u1780\u17d2\u1793\u17bb\u1784\u1794\u1784\u17d2\u17a2\u17bd\u1785/\u179f\u17ca\u17bb\u1798\u1793\u17c1\u17c7",anchor_names:"\u1799\u17bb\u1790\u17d2\u1780\u17b6",popup_opts:"\u1787\u1798\u17d2\u179a\u17be\u179f\u179b\u17c1\u1785\u17a1\u17be\u1784",advanced_props:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb",event_props:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1796\u17d2\u179a\u17b9\u178f\u17d2\u178f\u17b7\u1780\u17b6\u179a\u178e\u17cd",popup_props:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u179b\u17c1\u1785\u17a1\u17be\u1784",general_props:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1791\u17bc\u1791\u17c5",advanced_tab:"\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb",events_tab:"\u1796\u17d2\u179a\u17b9\u178f\u17d2\u178f\u17b7\u1780\u17b6\u179a\u178e\u17cd",popup_tab:"\u179b\u17c1\u1785\u17a1\u17be\u1784",general_tab:"\u1791\u17bc\u1791\u17c5",list:"\u1794\u1789\u17d2\u1787\u17b8\u178f\u17c6\u178e",is_external:"\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u178a\u17c2\u179b\u17a2\u17d2\u1793\u1780\u1794\u17b6\u1793\u1794\u1789\u17d2\u1785\u17bc\u179b\u1791\u17c6\u1793\u1784\u1787\u17b6\u178f\u17c6\u178e\u1791\u17c5\u1780\u17d2\u179a\u17c5, \u178f\u17be\u17a2\u17d2\u1793\u1780\u1785\u1784\u17cb\u179f\u179a\u179f\u17c1\u179a http:// \u1793\u17c5\u178a\u17be\u1798\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u1791\u17c1?",is_email:"\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u178a\u17c2\u179b\u17a2\u17d2\u1793\u1780\u1794\u17b6\u1793\u1794\u1789\u17d2\u1785\u17bc\u179b\u1791\u17c6\u1793\u1784\u1787\u17b6\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u17a2\u17ca\u17b8\u1798\u17c2\u179b, \u178f\u17be\u17a2\u17d2\u1793\u1780\u1785\u1784\u17cb\u179f\u179a\u179f\u17c1\u179a mailto: \u1793\u17c5\u178a\u17be\u1798\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u1791\u17c1?",titlefield:"\u1785\u17c6\u178e\u1784\u1787\u17be\u1784",target:"\u1782\u17c4\u179b\u178a\u17c5",url:"\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u178f\u17c6\u178e",title:"\u1794\u1789\u17d2\u1785\u17bc\u179b/\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u178f\u17c6\u178e",link_list:"\u1794\u1789\u17d2\u1787\u17b8\u178f\u17c6\u178e",rtl:"\u1796\u17b8\u179f\u17d2\u178f\u17b6\u17c6\u1791\u17c5\u1786\u17d2\u179c\u17c1\u1784",ltr:"\u1796\u17b8\u1786\u17d2\u179c\u17c1\u1784\u1791\u17c5\u179f\u17d2\u178f\u17b6\u17c6",accesskey:"\u1782\u17d2\u179a\u17b6\u1794\u17cb\u1785\u17bb\u1785\u1795\u17d2\u179b\u17bc\u179c\u1780\u17b6\u178f\u17cb",tabindex:"\u1795\u17d2\u1791\u17b6\u17c6\u1784\u179b\u17b7\u1794\u17b7\u1780\u17d2\u179a\u1798",rev:"\u1791\u17c6\u1793\u17b6\u1780\u17cb\u1791\u17c6\u1793\u1784\u1782\u17c4\u179b\u178a\u17c5\u1791\u17c5\u1793\u17b9\u1784\u1791\u17c6\u1796\u17d0\u179a",rel:"\u1791\u17c6\u1793\u17b6\u1780\u17cb\u1791\u17c6\u1793\u1784\u1791\u17c6\u1796\u17d0\u179a\u1791\u17c5\u1793\u17b9\u1784\u1782\u17c4\u179b\u178a\u17c5",mime:"\u1794\u17d2\u179a\u1797\u17c1\u1791 MIME \u1782\u17c4\u179b\u178a\u17c5",encoding:"\u1780\u17b6\u179a\u179c\u17c1\u1785\u1780\u17bc\u178a\u178f\u17bd\u17a2\u1780\u17d2\u179f\u179a\u179a\u1794\u179f\u17cb\u1782\u17c4\u179b\u178a\u17c5",langcode:"\u1780\u17bc\u178a\u1797\u17b6\u179f\u17b6",target_langcode:"\u1797\u17b6\u179f\u17b6\u1782\u17c4\u179b\u178a\u17c5"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ko_dlg.js b/js/tiny_mce/plugins/advlink/langs/ko_dlg.js new file mode 100755 index 000000000..bc49a99ba --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ko_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ko.advlink_dlg',{target_name:"Target \uc774\ub984",classes:"\ud074\ub798\uc2a4",style:"\uc2a4\ud0c0\uc77c",id:"Id",popup_position:"\uc704\uce58(X/Y)",langdir:"\ud398\uc774\uc9c0 \ubb38\uc790 \ubc29\ud5a5",popup_size:"\ud06c\uae30",popup_dependent:"\uc5f0\ub3d9 (Mozilla/Firefox\ub9cc)",popup_resizable:"\ud06c\uae30\ubcc0\uacbd \uac00\ub2a5",popup_location:"\uc8fc\uc18c\ubc14\ub97c \ud45c\uc2dc",popup_menubar:"\uba54\ub274\ub97c \ud45c\uc2dc",popup_toolbar:"\ud234\ubc14\ub97c \ud45c\uc2dc",popup_statusbar:"\uc0c1\ud0dc\uc904\uc744 \ud45c\uc2dc",popup_scrollbars:"\uc2a4\ud06c\ub864\ubc14\ub97c \ud45c\uc2dc",popup_return:"\'return false\'\ub97c \uc0bd\uc785",popup_name:"Window \uc774\ub984",popup_url:"\ud31d\uc5c5 URL",popup:"Javascript \ud31d\uc5c5",target_blank:"\uc0c8\ucc3d\uc73c\ub85c \uc5f4\ub9b0\ub2e4",target_top:"\ucd5c\uc0c1\uc704 \ud504\ub808\uc784\uc73c\ub85c \uc5f4\ub9b0\ub2e4 (\ubaa8\ub4e0 \ud504\ub808\uc784 \ubcc0\uacbd)",target_parent:"\ubd80\ubaa8\ucc3d/\ud504\ub808\uc784\uc73c\ub85c \uc5f4\ub9b0\ub2e4",target_same:"\uc774 \ucc3d/\ud504\ub808\uc784\uc73c\ub85c \uc5f4\ub9b0\ub2e4",anchor_names:"\uc5e5\ucee4",popup_opts:"\uc635\uc158",advanced_props:"\uace0\uae09\uc758 \uc124\uc815",event_props:"\uc774\ubca4\ud2b8",popup_props:"\ud31d\uc5c5 \uc124\uc815",general_props:"\uc77c\ubc18 \uc124\uc815",advanced_tab:"\uace0\uae09",events_tab:"\uc774\ubca4\ud2b8",popup_tab:"\ud31d\uc5c5",general_tab:"\uc77c\ubc18",list:"\ub9c1\ud06c \ubaa9\ub85d",is_external:"\uc678\ubd80URL\uc774 \uc785\ub825\ub418\uc5c8\uc2b5\ub2c8\ub2e4.URL\uc758 \uc55e\uc5d0http://\ub97c \ubd99\uc785\ub2c8\uae4c?",is_email:"\uba54\uc77c\uc8fc\uc18c\uac00 \uc785\ub825\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uba54\uc77c\uc8fc\uc18c\uc758 \uc55e\uc5d0 mailto:\ub97c \ubd99\uc785\ub2c8\uae4c?",titlefield:"\uc81c\ubaa9",target:"Target",url:"\ub9c1\ud06c URL",title:"\ub9c1\ud06c\uc758 \uc0bd\uc785/\ud3b8\uc9d1",link_list:"\ub9c1\ud06c \ubaa9\ub85d",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",accesskey:"\uc561\uc138\uc2a4 \ud0a4",tabindex:"\ud0ed \uc778\ub371\uc2a4",rev:"\ub9c1\ud06c\ub85c\ubd80\ud130\uc758 \uad00\uacc4",rel:"\ub9c1\ud06c\uc5d0 \uad00\uacc4",mime:"MIME\ud0c0\uc785",encoding:"\ubb38\uc790 \uc778\ucf54\ub529",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",target_langcode:"\ud398\uc774\uc9c0 \uc5b8\uc5b4"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/lb_dlg.js b/js/tiny_mce/plugins/advlink/langs/lb_dlg.js new file mode 100755 index 000000000..0b456356a --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/lb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lb.advlink_dlg',{target_name:"Numm vun der Zils\u00e4it",classes:"Klassen",style:"Format",id:"ID",popup_position:"Positioun (X/Y)",langdir:"Schr\u00ebftrichtung",popup_size:"Gr\u00e9isst",popup_dependent:"Vun der Elteref\u00ebnster onofh\u00e4ngeg
        (n\u00ebmmen Mozilla/Firefox) ",popup_resizable:"Vergr\u00e9isseren vun der F\u00ebnster zouloossen",popup_location:"Adressleescht uweisen",popup_menubar:"Browsermen\u00fc uweisen",popup_toolbar:"Geschirleeschten uweisen",popup_statusbar:"Statusleeschten uweisen",popup_scrollbars:"Scrollbalken uweisen",popup_return:"Link trotz Popup suiv\u00e9ieren",popup_name:"Numm vun der F\u00ebnster",popup_url:"Popup-Adress",popup:"JavaScript-Popup",target_blank:"An enger neier F\u00ebnster opmaachen",target_top:"Am ieweschte Frame opmaacheen (sprengt d\'Frameset)",target_parent:"An der iwwergeuerdneter F\u00ebnster/Frame opmaachen",target_same:"An der selwechter F\u00ebnster/Frame opmaachen",anchor_names:"Anker",popup_opts:"Optiounen",advanced_props:"Erweidert Eegeschaften",event_props:"Evenement",popup_props:"Popup-Eegeschaften",general_props:"Allgemeng Eegeschaften",advanced_tab:"Erweidert",events_tab:"Evenement",popup_tab:"Popup",general_tab:"Allgemeng",list:"Linkl\u00ebscht",is_external:"D\u00ebs Adress sch\u00e9ngt een externe Link ze sinn. W\u00ebllt Dir den dofir ben\u00e9idegte Pr\u00e4fix \"http://\" virdru setzen?",is_email:"D\u00ebs Adress sch\u00e9ngt eng Email-Adress ze sinn. W\u00ebllt Dir den dofir ben\u00e9idegte Pr\u00e4fix \"mailto:\" virdru setzen?",titlefield:"Titel",target:"F\u00ebnster",url:"Adress",title:"Link af\u00fcgen/beaarbechten",link_list:"Linkl\u00ebscht",rtl:"Riets no l\u00e9nks",ltr:"L\u00e9nks no riets",accesskey:"Tastekierzel",tabindex:"Tabindex",rev:"Bez\u00e9iung vum Linkzil zur S\u00e4it",rel:"Bez\u00e9iung vun der S\u00e4it zum Linkzil",mime:"MIME-Typ vun der Zils\u00e4it",encoding:"Zeechekod\u00e9ierung vun der Zils\u00e4it",langcode:"Sproochcode",target_langcode:"Sprooch vun der Zils\u00e4it"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/lt_dlg.js b/js/tiny_mce/plugins/advlink/langs/lt_dlg.js new file mode 100755 index 000000000..e477b4554 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.advlink_dlg',{target_name:"Paskirties vardas",classes:"Klas\u0117s",style:"Stilius",id:"Id",popup_position:"Pozicija (X/Y)",langdir:"Kalbos kryptis",popup_size:"Dydis",popup_dependent:"Proporcionaliai (tik Mozilla/Firefox)",popup_resizable:"Galima koreguoti lango i\u0161matavimus",popup_location:"Rodyti adres\u0173 juost\u0105",popup_menubar:"Rodyti meniu juost\u0105",popup_toolbar:"Rodyti \u012franki\u0173 juost\u0105",popup_statusbar:"Rodyti b\u016bsenos juost\u0105",popup_scrollbars:"Rodyti slankjuostes",popup_return:"\u012eterpti \u201ereturn false\u201c",popup_name:"Lango vardas",popup_url:"I\u0161kylan\u010dio lango URL adresas",popup:"Javascript i\u0161kylantis langas",target_blank:"Atverti naujame lange",target_top:"Atverti vir\u0161utiniame lange (pakei\u010dia visus langus)",target_parent:"Atverti t\u0117viniame lange",target_same:"Atverti tame pa\u010diame lange",anchor_names:"Prierai\u0161ai",popup_opts:"Nustatymai",advanced_props:"I\u0161pl\u0117stiniai nustatymai",event_props:"\u012evykiai",popup_props:"I\u0161kylan\u010dio lango nustatymai",general_props:"Bendri nustatymai",advanced_tab:"I\u0161pl\u0117sta",events_tab:"\u012evykiai",popup_tab:"I\u0161kylantis langas",general_tab:"Bendra",list:"Nuorod\u0173 s\u0105ra\u0161as",is_external:"URL adresas, kur\u012f \u012fved\u0117te yra i\u0161orin\u0117 nuoroda, ar norite prid\u0117ti reikaling\u0105 http:// prefiks\u0105?",is_email:"URL adresas, kur\u012f \u012fved\u0117te yra el. pa\u0161to adresas, ar norite prid\u0117ti reikaling\u0105 mailto: prefiks\u0105?",titlefield:"Pavadinimas",target:"Paskirtis",url:"Nuorodos URL adresas",title:"\u012eterpti/Redaguoti nuorod\u0105",link_list:"Nuorod\u0173 s\u0105ra\u0161as",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",accesskey:"Prieigos klavi\u0161as",tabindex:"Tabuliavimo indeksas",rev:"Ry\u0161ys paskirties su puslapiu",rel:"Ry\u0161ys puslapio su paskirtimi",mime:"Paskirties MIME tipas",encoding:"Kalbos koduot\u0117",langcode:"Kalbos kodas",target_langcode:"Paskirties kalba"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/lv_dlg.js b/js/tiny_mce/plugins/advlink/langs/lv_dlg.js new file mode 100755 index 000000000..b5f94ee40 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.advlink_dlg',{target_name:"M\u0113r\u0137a nosaukums",classes:"Klases",style:"St\u012bls",id:"Id",popup_position:"Poz\u012bcija (X/Y)",langdir:"Valodas virziens",popup_size:"Izm\u0113rs",popup_dependent:"Atkar\u012bgs (tikai priek\u0161 Mozilla/Firefox)",popup_resizable:"Iedot iesp\u0113ju main\u012bt loga izmerus",popup_location:"Par\u0101d\u012bt adreses joslu",popup_menubar:"Par\u0101d\u012bt izvelnes joslu",popup_toolbar:"Par\u0101d\u012bt r\u012bkjoslu",popup_statusbar:"Par\u0101d\u012bt status bar",popup_scrollbars:"Par\u0101d\u012bt scrollbars",popup_return:"Ielikt \'return false\'",popup_name:"Loga nosaukums",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Atvert jaun\u0101j\u0101 log\u0101",target_top:"Atvert pa virsu \u0161im r\u0101m\u012bm (aizvieto visus r\u0101mjus)",target_parent:"Atvert \u0161aj\u0101 log\u0101 / r\u0101m\u012b",target_same:"Atvert \u0161aj\u0101 log\u0101 / r\u0101m\u012b",anchor_names:"Enkuri",popup_opts:"Opcijas",advanced_props:"Advanced \u012bpa\u0161\u012bbas",event_props:"Notikumi",popup_props:"Popup \u012bpa\u0161\u012bbas",general_props:"Kop\u012bgas \u012bpa\u0161\u012bbas",advanced_tab:"Advanced",events_tab:"Notikumi",popup_tab:"Popup",general_tab:"Kop\u012bgais",list:"Link list",is_external:"Ievad\u012btais URL \u0161\u0137iet ir \u0101r\u0113j\u0101 saite, vai J\u016bs v\u0113laties pirms t\u0101s pievienot http:// pried\u0113kli?",is_email:"Ievad\u012btais URL \u0161\u0137iet ir e-pasta adrese, vai J\u016bs v\u0113laties pirms t\u0101s pievienot mailto: pried\u0113kli?",titlefield:"Nosaukums",target:"M\u0113r\u0137is",url:"Saites URL",title:"Ievietot/Redi\u0123\u0113t saiti",link_list:"Sakaru saraksts",rtl:"No labas puses uz kreiso",ltr:"No kreisas puses uz labo",accesskey:"Pieejas poga",tabindex:"Tabindex",rev:"M\u0113r\u0137a attiec\u012bbas pret lapu",rel:"Lapas attiec\u012bbas pret m\u0113r\u0137i",mime:"M\u0113r\u0137a MIME tips",encoding:"M\u0113r\u0137a valodas koda tabula",langcode:"Valodas kods",target_langcode:"M\u0113r\u0137a valoda"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/mk_dlg.js b/js/tiny_mce/plugins/advlink/langs/mk_dlg.js new file mode 100755 index 000000000..96bd02fed --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/mk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mk.advlink_dlg',{target_name:"Ime mete",classes:"Klasa",style:"Stil",id:"Id",popup_position:"Pozicija (X/Y)",langdir:"Smjer jezika",popup_size:"Veli\u010dina",popup_dependent:"Ovisan (samo za Mozilla/Firefox)",popup_resizable:"Prozor promjenjive veli\u010dine",popup_location:"Poka\u017ei traku lokacije",popup_menubar:"Poka\u017ei izbornik",popup_toolbar:"Poka\u017ei alatne trake",popup_statusbar:"Poka\u017ei statusnu traku",popup_scrollbars:"Poka\u017ei kliza\u010de",popup_return:"\u0412\u043c\u0435\u0442\u043d\u0438 \'return false\'",popup_name:"Ime prozora",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Otvori u novom prozoru",target_top:"Otvori u gornjem okviru (zamjenjuje sve okvire)",target_parent:"Otvori u izvornom prozoru / okvir",target_same:"Otovori u novom prozoru / okviru",anchor_names:"Sidra",popup_opts:"Opcije",advanced_props:"Napredna svojstva",event_props:"Doga\u0111aji",popup_props:"Svojstva popup prozora",general_props:"Osnovna svojstva",advanced_tab:"Napredno",events_tab:"Doga\u0111aj",popup_tab:"Popup",general_tab:"Osnovno",list:"Lista poveznica",is_external:"URL koji ste uneli izgleda kao vanjska poveznica, \u017eelite li dodati potrebni http:// prefiks?",is_email:"URL koji ste uneli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?",titlefield:"\u041d\u0430\u0441\u043b\u043e\u0432",target:"Meta",url:"URL poveznice",title:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi poveznicu",link_list:"Lista poveznica",rtl:"S desna na levo",ltr:"S leva na desno",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"MIME tip",encoding:"Kodiranje znakova",langcode:"Kod jezika",target_langcode:"Jezik"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ml_dlg.js b/js/tiny_mce/plugins/advlink/langs/ml_dlg.js new file mode 100755 index 000000000..2649a7fde --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ml_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ml.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/mn_dlg.js b/js/tiny_mce/plugins/advlink/langs/mn_dlg.js new file mode 100755 index 000000000..06afa8184 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/mn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mn.advlink_dlg',{target_name:"\u0422\u043e\u0432\u043b\u043e\u0441\u043e\u043d \u0445\u0443\u0443\u0434\u0430\u0441\u043d\u044b \u043d\u044d\u0440",classes:"\u0410\u043d\u0433\u0438",style:"\u0424\u043e\u0440\u043c\u0430\u0442",id:"\u0422\u0422",popup_position:"\u0411\u0430\u0439\u0440\u043b\u0430\u043b (X/Y)",langdir:"\u0411\u0438\u0447\u0433\u0438\u0439\u043d \u0447\u0438\u0433\u043b\u044d\u043b",popup_size:"\u0425\u044d\u043c\u0436\u044d\u044d",popup_dependent:"\u042d\u0445 \u0446\u043e\u043d\u0445\u043d\u043e\u043e\u0441 \u0445\u0430\u043c\u0430\u0430\u0440\u0430\u043b\u0442\u0430\u0439 (\u0417\u04e9\u0432\u0445\u04e9\u043d Mozilla/Firefox)",popup_resizable:"\u0426\u043e\u043d\u0445 \u0442\u043e\u043c\u0440\u0443\u0443\u043b\u0430\u0445\u044b\u0433 \u0437\u04e9\u0432\u0448\u04e9\u04e9\u0440\u04e9\u0445",popup_location:"\u0425\u0430\u044f\u0433\u0438\u0439\u043d \u0441\u0430\u043c\u0431\u0430\u0440 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",popup_menubar:"\u0425\u04e9\u0442\u04e9\u0447\u0438\u0439\u043d \u0446\u044d\u0441 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",popup_toolbar:"\u0411\u0430\u0433\u0430\u0436 \u0441\u0430\u043c\u0431\u0430\u0440 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",popup_statusbar:"\u0422\u04e9\u043b\u04e9\u0432 \u0441\u0430\u043c\u0431\u0430\u0440 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",popup_scrollbars:"\u0413\u04af\u0439\u043b\u0433\u044d\u0433\u0447 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",popup_return:"\u041f\u043e\u043f\u0430\u043f \u0431\u0430\u0439\u0441\u0430\u043d \u0447 \u0445\u043e\u043b\u0431\u043e\u043e\u0441\u044b\u0433 \u0434\u0430\u0433\u0430\u043d\u0430",popup_name:"\u0426\u043e\u043d\u0445\u043d\u044b \u043d\u044d\u0440",popup_url:"\u041f\u043e\u043f\u0430\u043f-\u0445\u0430\u044f\u0433",popup:"\u0416\u0430\u0432\u0430\u0441\u043a\u0440\u0438\u043f\u0442-\u043f\u043e\u043f\u0430\u043f",target_blank:"\u0428\u0438\u043d\u044d \u0446\u043e\u043d\u0445\u043e\u043d\u0434 \u043d\u044d\u044d\u0445",target_top:"\u0425\u0430\u043c\u0433\u0438\u0439\u043d \u0434\u044d\u044d\u0434 \u0446\u043e\u043d\u0445/\u0444\u0440\u044d\u0439\u043c\u0434 \u043d\u044d\u044d\u0445",target_parent:"\u042d\u0445 \u0446\u043e\u043d\u0445/\u0444\u0440\u044d\u0439\u043c\u0434 \u043d\u044d\u044d\u0445",target_same:"\u0422\u0443\u0445\u0430\u0439\u043d \u0446\u043e\u043d\u0445/\u0444\u0440\u044d\u0439\u043c\u0434 \u043d\u044d\u044d\u0445",anchor_names:"\u0413\u0430\u0434\u0430\u0441",popup_opts:"\u0421\u043e\u043d\u0433\u043e\u043b\u0442",advanced_props:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d \u0448\u0438\u043d\u0436",event_props:"\u04ae\u0437\u044d\u0433\u0434\u044d\u043b",popup_props:"\u041f\u043e\u043f\u0430\u043f-\u0448\u0438\u043d\u0436",general_props:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439 \u0448\u0438\u043d\u0436",advanced_tab:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d",events_tab:"\u04ae\u0437\u044d\u0433\u0434\u044d\u043b",popup_tab:"\u041f\u043e\u043f\u0430\u043f",general_tab:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439",list:"\u0425\u043e\u043b\u0431\u043e\u043e\u0441\u044b\u043d \u0436\u0430\u0433\u0441\u0430\u0430\u043b\u0442",is_external:"\u0425\u0430\u044f\u0433 \u0434\u044d\u044d\u0440 \u0433\u0430\u0434\u0430\u0430\u0434 \u0445\u043e\u043b\u0431\u043e\u043e\u0441 \u0431\u0430\u0439\u0433\u0430\u0430 \u0445\u0430\u0440\u0430\u0433\u0434\u0430\u043d\u0430. \u0422\u0430 \u0437\u04e9\u0432 \u0445\u043e\u043b\u0431\u043e\u043e\u0441 \u0431\u043e\u043b\u0433\u043e\u0445\u044b\u043d \u0442\u0443\u043b\u0434 http:// \u043d\u044d\u043c\u044d\u0445\u0438\u0439\u0433 \u0445\u04af\u0441\u044d\u0436 \u0431\u0430\u0439\u043d\u0430 \u0443\u0443?",is_email:"\u0425\u0430\u044f\u0433 \u0434\u044d\u044d\u0440 \u0418\u043c\u044d\u0439\u043b \u0445\u0430\u044f\u0433 \u0431\u0430\u0439\u0445 \u0448\u0438\u0433 \u0445\u0430\u0440\u0430\u0433\u0434\u0430\u043d\u0430. \u0422\u0430 \u0442\u04af\u04af\u043d\u0434 \u0448\u0430\u0430\u0440\u0434\u043b\u0430\u0433\u0430\u0442\u0430\u0439 mailto: \u043d\u044d\u043c\u044d\u0445\u0438\u0439\u0433 \u0445\u04af\u0441\u044d\u0436 \u0431\u0430\u0439\u043d\u0430 \u0443\u0443?",titlefield:"\u0413\u0430\u0440\u0447\u0438\u0433",target:"\u0426\u043e\u043d\u0445",url:"\u0425\u0430\u044f\u0433",title:"\u0425\u043e\u043b\u0431\u043e\u043e\u0441 \u043e\u0440\u0443\u0443\u043b\u0430\u0445/\u0437\u0430\u0441\u0430\u0445",link_list:"\u0425\u043e\u043b\u0431\u043e\u043e\u0441\u044b\u043d \u0436\u0430\u0433\u0441\u0430\u0430\u043b\u0442",rtl:"\u0411\u0430\u0440\u0443\u0443\u043d\u0430\u0430\u0441 \u0437\u04af\u04af\u043d",ltr:"\u0417\u04af\u04af\u043d\u044d\u044d\u0441 \u0431\u0430\u0440\u0443\u0443\u043d",accesskey:"\u0422\u043e\u0432\u0447\u0438\u043b\u0431\u043e\u0440",tabindex:"\u0422\u0430\u0431\u0443\u043b\u0430\u0442\u043e\u0440 \u0438\u043d\u0434\u0435\u043a\u0441",rev:"\u0425\u0443\u0443\u0434\u0430\u0441\u043d\u0430\u0430\u0441 \u0442\u043e\u0432\u043b\u043e\u0441\u043e\u043d \u0445\u043e\u043b\u0431\u043e\u043e\u0441\u043e\u043e\u0441 \u0445\u043e\u043b\u0431\u043e\u043b\u0442",rel:"\u0422\u043e\u0432\u043b\u043e\u0441\u043e\u043d \u0445\u043e\u043b\u0431\u043e\u043e\u0441\u043e\u043e\u0441 \u0445\u0443\u0443\u0434\u0430\u0441\u043d\u044b \u0445\u043e\u043b\u0431\u043e\u043b\u0442",mime:"\u0422\u043e\u0432\u043b\u043e\u0441\u043e\u043d \u0445\u0443\u0443\u0434\u0430\u0441\u043d\u044b MIME \u0442\u04e9\u0440\u04e9\u043b",encoding:"\u0422\u043e\u0432\u043b\u043e\u0441\u043e\u043d \u0445\u0443\u0443\u0434\u0430\u0441\u043d\u044b \u043a\u043e\u0434\u0447\u0438\u043b\u043e\u043b",langcode:"\u0425\u044d\u043b\u043d\u0438\u0439 \u043a\u043e\u0434",target_langcode:"\u0422\u043e\u0432\u043b\u043e\u0441\u043e\u043d \u0445\u0443\u0443\u0434\u0430\u0441\u043d\u044b \u0445\u044d\u043b"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ms_dlg.js b/js/tiny_mce/plugins/advlink/langs/ms_dlg.js new file mode 100755 index 000000000..c3267c04a --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ms_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ms.advlink_dlg',{target_name:"Nama sasaran",classes:"Kelas-kelas",style:"Gaya",id:"Id",popup_position:"Posisi (X/Y)",langdir:"Arah bahasa",popup_size:"Saiz",popup_dependent:"Tanggungan (Hanya Mozilla/Firefox)",popup_resizable:"Jadikan tetingkap boleh diubahsuai",popup_location:"Tunjuk bar lokasi",popup_menubar:"Tunjuk bar menu",popup_toolbar:"Tunjuk bar alatan",popup_statusbar:"Tunjuk bar status",popup_scrollbars:"Tunjuk bar gulung",popup_return:"Masukkan \'return false\'",popup_name:"Nama tetingkap",popup_url:"Popup URL",popup:"Popup Javascript ",target_blank:"Buka dalam tetingkap baru.",target_top:"Buka bingkaian atas (gantikan kesemua bingkai)",target_parent:"Buka dalam tetingkap yang lain",target_same:"Buka tetingkap ini",anchor_names:"Sauh",popup_opts:"Pilihan",advanced_props:"Alatan lanjutan",event_props:"Peristiwa",popup_props:"Alatan Popup",general_props:"Alatan am",advanced_tab:"Lanjutan",events_tab:"Peristiwa",popup_tab:"Popup",general_tab:"Am",list:"Senarai pautan",is_external:"URL yang dimasukkan adalah pautan luar, tambah \"http://\" di awalan?",is_email:"URL yang dimasukkan adalah alamat emel, tambah \"mailto\": di awalan?",titlefield:"Tajuk",target:"Sasaran",url:"Pautan URL",title:"Sisip/sunting pautan",link_list:"Senarai pautan",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",accesskey:"Kunci akses",tabindex:"Tanda indeks",rev:"Kaitan sasaran kepada halaman",rel:"Kaitan halaman kepada sasaran",mime:"Sasaran jenis MIME",encoding:"Sasaran enkod perkataan",langcode:"Kod bahasa",target_langcode:"Bahasa sasaran"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/my_dlg.js b/js/tiny_mce/plugins/advlink/langs/my_dlg.js new file mode 100755 index 000000000..02cc985a2 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/my_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('my.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/nb_dlg.js b/js/tiny_mce/plugins/advlink/langs/nb_dlg.js new file mode 100755 index 000000000..fc29ce712 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/nb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nb.advlink_dlg',{"target_name":"M\u00e5lnavn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Posisjon (X/Y)",langdir:"Skriftretning","popup_size":"St\u00f8rrelse","popup_dependent":"Avhengig vindu (bare i Mozilla/Firefox)","popup_resizable":"Gj\u00f8r vinduet skalerbart","popup_location":"Vis plasseringslinje","popup_menubar":"Vis menylinje","popup_toolbar":"Vis verkt\u00f8ylinjer","popup_statusbar":"Vis statuslinje","popup_scrollbars":"Vis rullefelt","popup_return":"Sett inn \'return false\'","popup_name":"Vindunavn","popup_url":"Popup URL",popup:"Javascript-popup","target_blank":"\u00c5pne i nytt vindu","target_top":"\u00c5pne i toppvindu (erstatter alle rammer)","target_parent":"\u00c5pne i overordnet vindu/ramme","target_same":"\u00c5pne i samme vindu/ramme","anchor_names":"Anker","popup_opts":"Innstillinger","advanced_props":"Generelle egenskaper","event_props":"Hendelser","popup_props":"Popup-egenskaper","general_props":"Generelle egenskaper","advanced_tab":"Avansert","events_tab":"Hendelser","popup_tab":"Popup","general_tab":"Generelt",list:"Lenkeliste","is_external":"URL\'en du oppga synes \u00e5 v\u00e6re en ekstern lenke, \u00f8nsker du \u00e5 legge til den n\u00f8dvendige http:// prefix?","is_email":"URL\'en du oppga synes \u00e5 v\u00e6re en email adresse, \u00f8nsker du \u00e5 legge til den n\u00f8dvendige mailto: prefix?",titlefield:"Tittel",target:"M\u00e5l",url:"Lenkens URL",title:"Sett inn / rediger lenke","link_list":"Lenkeliste",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",accesskey:"Hurtigtast",tabindex:"Tabulatorindeks",rev:"M\u00e5lets forhold til siden",rel:"Sidens forhold til m\u00e5let",mime:"M\u00e5lets MIME-type",encoding:"Tegnkonvertering",langcode:"Spr\u00e5kkode","target_langcode":"M\u00e5lspr\u00e5k"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/nl_dlg.js b/js/tiny_mce/plugins/advlink/langs/nl_dlg.js new file mode 100755 index 000000000..f6a51bb35 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.advlink_dlg',{"target_name":"Doel",classes:"Klassen",style:"Stijl",id:"Id","popup_position":"Positie (X/Y)",langdir:"Taalrichting","popup_size":"Grootte","popup_dependent":"Afhankelijk (Alleen Mozilla/Firefox)","popup_resizable":"Aanpasbaar venster","popup_location":"Lokatiebalk weergeven","popup_menubar":"Menubalk weergeven","popup_toolbar":"Werkbalk weergeven","popup_statusbar":"Statusbalk weergeven","popup_scrollbars":"Scrollbalken weergeven","popup_return":"\'return false\' invoegen","popup_name":"Venstertitel","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"In nieuw venster openen","target_top":"In bovenste frame openen (vervangt gehele pagina)","target_parent":"In bovenliggend venster / frame openen","target_same":"In dit venster / frame openen","anchor_names":"Ankers","popup_opts":"Opties","advanced_props":"Geavanceerde eigenschappen","event_props":"Gebeurtenissen","popup_props":"Popup eigenschappen","general_props":"Algemene eigenschappen","advanced_tab":"Geavanceerd","events_tab":"Gebeurtenissen","popup_tab":"Popup","general_tab":"Algemeen",list:"Lijst","is_external":"De ingevoerde URL lijkt op een externe link. Wilt u de vereiste http:// tekst voorvoegen?","is_email":"De ingevoerde URL lijkt op een e-mailadres. Wilt u de vereiste mailto: tekst voorvoegen?",titlefield:"Titel",target:"Doel",url:"URL",title:"Link invoegen/bewerken","link_list":"Lijst",rtl:"Van rechts naar links",ltr:"Van links naar rechts",accesskey:"Toegangstoets",tabindex:"Tabvolgorde",rev:"Relatie van doel tot pagina",rel:"Relatie van pagina tot doel",mime:"MIME type",encoding:"Taalcodering",langcode:"Taalcode","target_langcode":"Taal"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/nn_dlg.js b/js/tiny_mce/plugins/advlink/langs/nn_dlg.js new file mode 100755 index 000000000..82ccda6a4 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/nn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nn.advlink_dlg',{target_name:"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id",popup_position:"Posisjon (X/Y)",langdir:"Skriftretning",popup_size:"Storleik",popup_dependent:"Avhengig vindu (berre i Mozilla/Firefox)",popup_resizable:"Gjer vindauget skalerbart",popup_location:"Vis plasseringsline",popup_menubar:"Vis menyline",popup_toolbar:"Vis verktyliner",popup_statusbar:"Vis statusline",popup_scrollbars:"Vis rullefelt",popup_return:"Set inn \\\'return false\\\'",popup_name:"Namn p\u00e5 vindauge",popup_url:"Popup URL",popup:"Javascript-popup",target_blank:"Opne i nytt vindauge",target_top:"Opne i toppvindauge (erstattar alle rammer)",target_parent:"Opne i overordna vindauge/ramme",target_same:"Opne i same vindauge/ramme",anchor_names:"Anker",popup_opts:"Innstillingar",advanced_props:"Generelle eigenskapar",event_props:"Hendingar",popup_props:"Popup-eigenskapar",general_props:"Generelt",advanced_tab:"Avansert",events_tab:"Hendingar",popup_tab:"Popup",general_tab:"Generelt",list:"Lenkjeliste",is_external:"URL-en du skreiv inn ser ut til \u00e5 vere ei eksern lenkje. \u00d8nskjer du \u00e5 leggje til det obligatoriske http://-prefikset?",is_email:"URL-en du skreiv inn ser ut til \u00e5 vere ei e-postadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske mailto:-prefikset?",titlefield:"Tittel",target:"M\u00e5l",url:"Lenkje-URL",title:"Set inn / rediger lenkje",link_list:"Lenkjeliste",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",accesskey:"Hurtigtast",tabindex:"Tabulatorindeks",rev:"M\u00e5let sitt forhold til sida",rel:"Sida sitt forhold til m\u00e5let",mime:"M\u00e5let sin MIME-type",encoding:"Teiknkonvertering",langcode:"Spr\u00e5kkode",target_langcode:"M\u00e5lspr\u00e5k"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/no_dlg.js b/js/tiny_mce/plugins/advlink/langs/no_dlg.js new file mode 100755 index 000000000..d4c59261f --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.advlink_dlg',{"target_name":"M\u00e5lnavn",classes:"Klasse",style:"Stil",id:"Id","popup_position":"Posisjon (X/Y)",langdir:"Skriftretning","popup_size":"St\u00f8rrelse","popup_dependent":"Avhengig vindu (kun i Mozilla/Firefox)","popup_resizable":"Gj\u00f8r vinduet skalerbart","popup_location":"Vis plasseringslinje","popup_menubar":"Vis menylinje","popup_toolbar":"Vis verkt\u00f8ylinjer","popup_statusbar":"Vis statusline","popup_scrollbars":"Vis rullefelt","popup_return":"Sett inn \\\'return false\\\'","popup_name":"Navn p\u00e5 vindu","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00c5pne i nytt vindu","target_top":"\u00c5pne i toppvindu (erstatter alle rammer)","target_parent":"\u00c5pne i overordnet vindu/ramme","target_same":"\u00c5pne i samme vindu/ramme","anchor_names":"Anker","popup_opts":"Innstillinger","advanced_props":"Avanserte egenskaper","event_props":"Hendelser","popup_props":"Popup egenskaper","general_props":"Generelle egenskaper","advanced_tab":"Avansert","events_tab":"Hendelser","popup_tab":"Popup","general_tab":"Generelt",list:"Liste over lenker","is_external":"URLen du skrev inn ser ut til \u00e5 v\u00e6re en ekstern lenke. \u00d8nsker du \u00e5 legge til obligatorisk http://-prefiks?","is_email":"URLen du skrev inn ser ut til \u00e5 v\u00e6re Epost adresse. \u00d8nsker du \u00e5 legge til obligatorisk mailto:-prefiks?",titlefield:"Tittel",target:"M\u00e5l",url:"Lenke URL",title:"Sett inn/editer lenke","link_list":"Liste over lenker",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",accesskey:"Hurtigtast",tabindex:"Tabulator indeks",rev:"Forholdet mellom m\u00e5l og side",rel:"Forholdet mellom side og m\u00e5l",mime:"M\u00e5l MIME type",encoding:"M\u00e5l karakter koding",langcode:"Spr\u00e5kkode","target_langcode":"M\u00e5lspr\u00e5k"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/pl_dlg.js b/js/tiny_mce/plugins/advlink/langs/pl_dlg.js new file mode 100755 index 000000000..037898a04 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.advlink_dlg',{"target_name":"Nazwa celu",classes:"Klasy",style:"Styl",id:"Id","popup_position":"Pozycja (X/Y)",langdir:"Kierunek czytania tekstu","popup_size":"Rozmiar","popup_dependent":"Zale\u017cny (Mozilla/Firefox wy\u0142\u0105cznie)","popup_resizable":"Stw\u00f3rz okno z mo\u017cliwo\u015bci\u0105 zmiany rozmiaru","popup_location":"Poka\u017c pasek adresu","popup_menubar":"Poka\u017c pasek menu","popup_toolbar":"Poka\u017c narz\u0119dzia","popup_statusbar":"Poka\u017c pasek statusu","popup_scrollbars":"Poka\u017c paski przewijania","popup_return":"Wstaw \'return false\'","popup_name":"Nazwa okna","popup_url":"URL okna",popup:"Wyskakuj\u0105ce okno","target_blank":"Otw\u00f3rz w nowym oknie","target_top":"Otw\u00f3rz w g\u00f3rnej ramce (zamie\u0144 wszystkie ramki)","target_parent":"Otw\u00f3rz w nadrz\u0119dnym oknie / ramce","target_same":"Otw\u00f3rz w tym oknie / ramce","anchor_names":"Kotwice","popup_opts":"Opcje","advanced_props":"Zaawansowae w\u0142a\u015bciwo\u015bci","event_props":"Zdarzenia","popup_props":"W\u0142a\u015bciwo\u015bci okna","general_props":"W\u0142a\u015bciwo\u015bci og\u00f3lne","advanced_tab":"Zaawansowane","events_tab":"Zdarzenia","popup_tab":"Popup","general_tab":"Og\u00f3lne",list:"Lista link\u00f3w","is_external":"Podany adres wydaje si\u0119 by\u0107 zewn\u0119trznym linkiem, czy chcesz doda\u0107 wymagany prefiks http://?","is_email":"Podany adres wydaje si\u0119 by\u0107 adresem emailowym, czy chcesz doda\u0107 wymagany prefiks mailto:?",titlefield:"Tytu\u0142",target:"Cel",url:"URL linka",title:"Wstaw/edytuj link","link_list":"Lista odno\u015bnik\u00f3w",rtl:"Kierunek z prawej do lewej",ltr:"Kierunek z lewej do prawej",accesskey:"Klawisz skr\u00f3tu",tabindex:"Numer tab",rev:"Relacje celu do strony",rel:"Relacje strony do celu",mime:"Docelowy typ MIME",encoding:"Kodowanie znak\u00f3w celu",langcode:"Kod j\u0119zyka","target_langcode":"Docelowy kod j\u0119zyka"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ps_dlg.js b/js/tiny_mce/plugins/advlink/langs/ps_dlg.js new file mode 100755 index 000000000..525473137 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ps_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ps.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/pt_dlg.js b/js/tiny_mce/plugins/advlink/langs/pt_dlg.js new file mode 100755 index 000000000..7a7a4a205 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.advlink_dlg',{target_name:"Nome do alvo",classes:"Classes",style:"Estilo",id:"Id",popup_position:"Posi\u00e7\u00e3o (X/Y)",langdir:"Dire\u00e7\u00e3o do texto",popup_size:"Tamanho",popup_dependent:"Dependente (Mozilla/Firefox apenas)",popup_resizable:"Permitir altera\u00e7\u00e3o do tamanho da janela",popup_location:"Mostrar a barra de endere\u00e7os",popup_menubar:"Mostrar a barra de menu",popup_toolbar:"Mostrar a barra de ferramentas",popup_statusbar:"Mostrar a barra de status",popup_scrollbars:"Mostrar as barras de scroll",popup_return:"Inserir \"return false\"",popup_name:"Nome da janela",popup_url:"URL do popup",popup:"Popup javascript",target_blank:"Abrir numa nova janela",target_top:"Abrir na p\u00e1gina inteira (substitui todos os quadros)",target_parent:"Abrir na janela/quadro pai",target_same:"Abrir nesta janela/quadro",anchor_names:"\u00c2ncoras",popup_opts:"Op\u00e7\u00f5es",advanced_props:"Propriedades avan\u00e7adas",event_props:"Eventos",popup_props:"Propriedades de popup",general_props:"Propriedades gerais",advanced_tab:"Avan\u00e7ado",events_tab:"Eventos",popup_tab:"Popup",general_tab:"Geral",list:"Lista de hyperlinks",is_external:"A URL digitada parece conduzir a um link externo. Deseja acrescentar o prefixo necess\u00e1rio http://?",is_email:"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o prefixo necess\u00e1rio mailto:?",titlefield:"T\u00edtulo",target:"Alvo",url:"URL do hyperlink",title:"Inserir/editar hyperlink",link_list:"Lista de hyperlinks",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",accesskey:"Chave de acesso",tabindex:"Tabindex",rev:"Rela\u00e7\u00e3o alvo/p\u00e1gina",rel:"Rela\u00e7\u00e3o p\u00e1gina/alvo",mime:"Tipo MIME alvo",encoding:"Codifica\u00e7\u00e3o de caracteres",langcode:"C\u00f3digo do idioma",target_langcode:"Idioma alvo"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ro_dlg.js b/js/tiny_mce/plugins/advlink/langs/ro_dlg.js new file mode 100755 index 000000000..fa5e4d6e3 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.advlink_dlg',{target_name:"Nume \u0163int\u0103",classes:"Clase",style:"Stil",id:"Id",popup_position:"Pozi\u0163ie (X/Y)",langdir:"Direc\u0163ie limb\u0103",popup_size:"M\u0103rime",popup_dependent:"Dependent (Mozilla/Firefox)?",popup_resizable:"Fereastr\u0103 redimensionabil\u0103?",popup_location:"Arat\u0103 bara de adrese",popup_menubar:"Arat\u0103 meniul",popup_toolbar:"Arat\u0103 toolbar-uri",popup_statusbar:"Arat\u0103 bara de stare",popup_scrollbars:"Arat\u0103 barele de derulare",popup_return:"Insereaz\u0103 \'return false\'",popup_name:"Nume fereastr\u0103",popup_url:"URL Popup",popup:"Javascript Popup",target_blank:"Deschide \u00een fereastr\u0103 nou\u0103",target_top:"Deschide \u00een frame-ul cel mai mare (\u00eenlocuie\u015fte celelalte frame-uri)",target_parent:"Deschide leg\u0103tura \u00een fereastra/cadrul p\u0103rinte",target_same:"Deschide leg\u0103tura \u00een aceea\u015fi fereastr\u0103/acela\u015fi cadru",anchor_names:"Ancore",popup_opts:"Op\u0163iuni",advanced_props:"Propriet\u0103\u0163i avansate",event_props:"Evenimente",popup_props:"Propriet\u0103\u0163i popup",general_props:"Propriet\u0103\u0163i generale",advanced_tab:"Avansat",events_tab:"Evenimente",popup_tab:"Popup",general_tab:"General",list:"List\u0103 de leg\u0103turi",is_external:"URL-ul pe care l-a\u0163i introdus pare a fi o leg\u0103tur\u0103 extern\u0103. Dori\u0163i s\u0103 adaug \u015fi prefixul http:// necesar?",is_email:"URL-ul pe care l-a\u0163i introdus pare a fi o adres\u0103 de e-mail. Dori\u0163i s\u0103 adaug \u015fi prefixul mailto: necesar?",titlefield:"Titlu",target:"\u0162int\u0103",url:"URL leg\u0103tur\u0103",title:"Insereaz\u0103/editeaz\u0103 link",link_list:"List\u0103 leg\u0103turi",rtl:"Dreapta la st\u00e2nga",ltr:"St\u00e2nga la dreapta",accesskey:"Cheie de acces",tabindex:"Tabindex",rev:"Rela\u0163ia \u0163intei cu pagina",rel:"Rela\u0163ia paginii cu \u0163inta",mime:"MIME type \u0163int\u0103",encoding:"Set de caractere \u0163int\u0103",langcode:"Cod limb\u0103",target_langcode:"Limb\u0103"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ru_dlg.js b/js/tiny_mce/plugins/advlink/langs/ru_dlg.js new file mode 100755 index 000000000..4c67e390e --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.advlink_dlg',{"target_name":"\u0418\u043c\u044f \u0446\u0435\u043b\u0438",classes:"\u041a\u043b\u0430\u0441\u0441\u044b",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0418\u043c\u044f","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","popup_size":"\u0420\u0430\u0437\u043c\u0435\u0440","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Firefox)","popup_resizable":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440","popup_location":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f","popup_menubar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043c\u0435\u043d\u044e","popup_toolbar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432","popup_statusbar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f","popup_scrollbars":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438","popup_return":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \'return false\'","popup_name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u043d\u0430","popup_url":"\u0410\u0434\u0440\u0435\u0441",popup:"\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Java","target_blank":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435","target_top":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043a\u0430\u0434\u0440\u0435 (\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u0434\u0440\u044b)","target_parent":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043e\u043a\u043d\u0435/\u043a\u0430\u0434\u0440\u0435","target_same":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435/\u043a\u0430\u0434\u0440\u0435","anchor_names":"\u042f\u043a\u043e\u0440\u044f","popup_opts":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","event_props":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439","popup_props":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f","general_props":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","events_tab":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f","popup_tab":"\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435","general_tab":"\u041e\u0431\u0449\u0435\u0435",list:"\u0421\u043f\u0438\u0441\u043e\u043a","is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http://?","is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?",titlefield:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",target:"\u0426\u0435\u043b\u044c",url:"\u0410\u0434\u0440\u0435\u0441",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438","link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",accesskey:"\u041a\u043b\u044e\u0447 \u0434\u043e\u0441\u0442\u0443\u043f\u0430",tabindex:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",rev:"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u0438 \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435",rel:"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a \u0446\u0435\u043b\u0438",mime:"MIME \u0442\u0438\u043f \u0446\u0435\u043b\u0438",encoding:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0446\u0435\u043b\u0438",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430","target_langcode":"\u042f\u0437\u044b\u043a \u0446\u0435\u043b\u0438"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/sc_dlg.js b/js/tiny_mce/plugins/advlink/langs/sc_dlg.js new file mode 100755 index 000000000..151cba4b0 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/sc_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sc.advlink_dlg',{target_name:"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u578b",style:"\u6837\u5f0f",id:"Id",popup_position:"\u5ea7\u6807(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",popup_size:"\u5c3a\u5bf8",popup_dependent:"\u4ece\u5c5e(\u53ea\u6709Mozilla/Firefox\u6709\u6548)",popup_resizable:"\u53ef\u8c03\u6574\u89c6\u7a97\u5c3a\u5bf8",popup_location:"\u663e\u793a\u7f51\u5740\u5217",popup_menubar:"\u663e\u793a\u529f\u80fd\u8868",popup_toolbar:"\u663e\u793a\u5de5\u5177\u680f",popup_statusbar:"\u663e\u793a\u72b6\u6001\u680f",popup_scrollbars:"\u663e\u793a\u8fb9\u6761",popup_return:"\u63d2\u5165\'return false\'",popup_name:"\u7a97\u53e3\u540d\u79f0",popup_url:"\u5f39\u51fa\u7a97\u53e3\u7f51\u5740",popup:"Javascript\u5f39\u51fa\u7a97\u53e3",target_blank:"\u6253\u5f00\u5728\u65b0\u89c6\u7a97",target_top:"\u6253\u5f00\u5728\u6700\u4e0a\u5c42\u7684\u6846\u67b6(\u66ff\u6362\u6240\u6709\u6846\u67b6)",target_parent:"\u6253\u5f00\u5728\u7236\u89c6\u7a97/\u6846\u67b6",target_same:"\u6253\u5f00\u5728\u65b0\u89c6\u7a97/\u6846\u67b6",anchor_names:"\u951a\u70b9",popup_opts:"\u9009\u9879",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5f39\u51fa\u89c6\u7a97\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5f39\u51fa\u7a97\u53e3",general_tab:"\u4e00\u822c",list:"\u94fe\u7ed3\u6e05\u5355",is_external:"\u60a8\u8f93\u5165\u7684\u7f51\u5740\u5e94\u8be5\u662f\u4e00\u4e2a\u5916\u90e8\u8fde\u7ed3\uff0c\u662f\u5426\u9700\u8981\u5728\u7f51\u5740\u524d\u65b9\u52a0\u5165http://\uff1f ",is_email:"\u60a8\u8f93\u5165\u7684\u7f51\u5740\u5e94\u8be5\u662f\u4e00\u4e2a\u7535\u5b50\u90ae\u5bc4\u4f4d\u5740\uff0c\u662f\u5426\u9700\u8981\u5728\u90ae\u5740\u524d\u65b9\u52a0\u5165mailto:\uff1f ",titlefield:"\u67e5\u627e",target:"\u76ee\u6807",url:"\u94fe\u7ed3\u4f4d\u5740",title:"\u63d2\u5165/\u7f16\u8f91\u8fde\u7ed3",link_list:"\u94fe\u7ed3\u6e05\u5355",rtl:"\u7531\u53f3\u5230\u5de6",ltr:"\u7531\u5de6\u5230\u53f3",accesskey:"\u5feb\u6377\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u9875\u7684\u5173\u7cfb",rel:"\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801",target_langcode:"\u76ee\u7684\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/se_dlg.js b/js/tiny_mce/plugins/advlink/langs/se_dlg.js new file mode 100755 index 000000000..093ddba29 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/se_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('se.advlink_dlg',{target_name:"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id",popup_position:"Position (x/y)",langdir:"Skriftriktning",popup_size:"Storlek",popup_dependent:"Beroende av (Mozilla/Firefox enbart)",popup_resizable:"Skalbart f\u00f6nster",popup_location:"Adressraden",popup_menubar:"Menyrad",popup_toolbar:"Verktygsf\u00e4lt",popup_statusbar:"Statusf\u00e4lt",popup_scrollbars:"Rullningslister",popup_return:"Infoga \'return false\'",popup_name:"F\u00f6nsternamn",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"\u00d6ppna i nytt f\u00f6nster",target_top:"\u00d6ppna i toppramen (ers\u00e4tter alla ramar)",target_parent:"\u00d6ppna i \u00f6verliggande f\u00f6nster/ram",target_same:"\u00d6ppna i detta f\u00f6nster/ram",anchor_names:"Bokm\u00e4rken",popup_opts:"Inst\u00e4llningar",advanced_props:"Avancerade inst\u00e4llningar",event_props:"H\u00e4ndelser",popup_props:"Popup-inst\u00e4llningar",general_props:"Generella inst\u00e4llningar",advanced_tab:"Avancerat",events_tab:"H\u00e4ndelser",popup_tab:"Popup",general_tab:"Generellt",list:"L\u00e4nklista",is_external:"L\u00e4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00e5 l\u00e4nken?",is_email:"L\u00e4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00e5 l\u00e4nken?",titlefield:"Titel",target:"M\u00e5l",url:"L\u00e4nkens URL",title:"Infoga/redigera l\u00e4nk",link_list:"L\u00e4nklista",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",accesskey:"Snabbtangent",tabindex:"Tabbindex",rev:"Omv\u00e4nd relation (rev)",rel:"Relation (rel attribut)",mime:"MIME type",encoding:"Teckenformattering",langcode:"Spr\u00e5kkod",target_langcode:"M\u00e5lspr\u00e5k"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/si_dlg.js b/js/tiny_mce/plugins/advlink/langs/si_dlg.js new file mode 100755 index 000000000..f24e10b58 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/si_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('si.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/sk_dlg.js b/js/tiny_mce/plugins/advlink/langs/sk_dlg.js new file mode 100755 index 000000000..eba5b7260 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/sk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sk.advlink_dlg',{target_name:"N\u00e1zov cie\u013ea",classes:"Triedy",style:"\u0160t\u00fdl",id:"ID",popup_position:"Umiestnenie (X/Y)",langdir:"Smer textu",popup_size:"Ve\u013ekos\u0165",popup_dependent:"Z\u00e1vislos\u0165 (iba Mozilla/Firefox)",popup_resizable:"Umo\u017eni\u0165 zmenu ve\u013ekosti",popup_location:"Zobrazi\u0165 li\u0161tu umiestnen\u00ed",popup_menubar:"Zobrazi\u0165 ponuku",popup_toolbar:"Zobrazi\u0165 n\u00e1strojov\u00fa li\u0161tu",popup_statusbar:"Zobrazi\u0165 stavov\u00fd riadok",popup_scrollbars:"Zobrazi\u0165 posuvn\u00edky",popup_return:"Vlo\u017ei\u0165 \'return false\'",popup_name:"N\u00e1zov okna",popup_url:"URL vyskakovacieho okna",popup:"JavaScriptov\u00e9 okno",target_blank:"Otvori\u0165 v novom okne",target_top:"Otvori\u0165 v hlavnom okne/r\u00e1me (nahradi\u0165 v\u0161etky r\u00e1my)",target_parent:"Otvori\u0165 v nadradenom okne/r\u00e1me",target_same:"Otvori\u0165 v rovnakom okne/r\u00e1me",anchor_names:"Z\u00e1lo\u017eka",popup_opts:"Mo\u017enosti",advanced_props:"Roz\u0161\u00edren\u00e9 parametre",event_props:"Udalosti",popup_props:"Vlastnosti vyskakovacieho okna",general_props:"Obecn\u00e9 parametre",advanced_tab:"Roz\u0161\u00edren\u00e9",events_tab:"Udalosti",popup_tab:"Vyskakovacie okno",general_tab:"Obecn\u00e9",list:"Zoznam odkazov",is_external:"Zadan\u00e1 URL vyzer\u00e1 ako extern\u00fd odkaz, chcete doplni\u0165 povinn\u00fd prefix http://?",is_email:"Zadan\u00e1 URL vyzer\u00e1 ako e-mailov\u00e1 adresa, chcete doplni\u0165 povinn\u00fd prefix mailto:?",titlefield:"Titulok",target:"Cie\u013e",url:"URL odkazu",title:"Vlo\u017ei\u0165/upravi\u0165 odkaz",link_list:"Zoznam odkazov",rtl:"Sprava do\u013eava",ltr:"Z\u013eava doprava",accesskey:"Kl\u00e1vesov\u00e1 skratka",tabindex:"Poradie pre tabul\u00e1tor",rev:"Vz\u0165ah cie\u013ea k str\u00e1nke",rel:"Vz\u0165ah str\u00e1nky k cie\u013eu",mime:"MIME typ",encoding:"K\u00f3dovanie",langcode:"K\u00f3d jazyka",target_langcode:"Jazyk cie\u013ea"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/sl_dlg.js b/js/tiny_mce/plugins/advlink/langs/sl_dlg.js new file mode 100755 index 000000000..5d3777621 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/sl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sl.advlink_dlg',{target_name:"Ime cilja",classes:"Razredi",style:"Slog",id:"Id",popup_position:"Polo\u017eaj (X/Y)",langdir:"Smer pisave",popup_size:"Velikost",popup_dependent:"Odvisno (le za Mozillo/Firefox)",popup_resizable:"Omogo\u010di pvoe\u010devanje okna",popup_location:"Prika\u017ei vrstico naslova",popup_menubar:"Prika\u017ei meni",popup_toolbar:"Prika\u017ei orodjarno",popup_statusbar:"Prika\u017ei vrstico stanja",popup_scrollbars:"Prika\u017ei drsnike",popup_return:"Vstavi \\\'return false\\\'",popup_name:"Ime okna",popup_url:"Naslov URL okna",popup:"Dodatno okno z javascriptom",target_blank:"Odpri v novem oknu",target_top:"Odpri v vrhnjem okviru (nadomesti vse okvire)",target_parent:"Odpri v nadrejenem oknu / okviru",target_same:"Odpri v tem oknu / okviru",anchor_names:"Sidra",popup_opts:"Mo\u017enosti",advanced_props:"Napredne lastnosti",event_props:"Dogodki",popup_props:"Lastnosti okna",general_props:"Splo\u0161ne lastnosti",advanced_tab:"Napredno",events_tab:"Dogodki",popup_tab:"Dodatno okno",general_tab:"Splo\u0161no",list:"Seznam povezav",is_external:"Vneseni naslov verjetno predstavlja zunanjo povezavo, \u017eelite da dodam zahtevano predpono",is_email:"Vneseni naslov verjetno prestavlja e-naslov, \u017eelite da dodam zahtevano predpono \\\'mailto:\\\'?",titlefield:"Naslov",target:"Cilj",url:"Naslov URL",title:"Vstavi/uredi povezavo",link_list:"Seznam povezav",rtl:"Od desne proti levi",ltr:"Od leve proti desni",accesskey:"Tipka dostopa",tabindex:"Zap. \u0161t.",rev:"Razmerje cilja do strani",rel:"Razmerje strani do cilja",mime:"Tip MIME cilja",encoding:"Kodiranje znakov cilja",langcode:"Koda jezika",target_langcode:"Jezik cilja"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/sq_dlg.js b/js/tiny_mce/plugins/advlink/langs/sq_dlg.js new file mode 100755 index 000000000..84914b6c4 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/sq_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sq.advlink_dlg',{target_name:"Emri",classes:"Klasat",style:"Stili",id:"Id",popup_position:"Pozicioni (X/Y)",langdir:"Drejtimi i gjuh\u00ebs",popup_size:"Madh\u00ebsia",popup_dependent:"I varur (vet\u00ebm Mozilla/Firefox)",popup_resizable:"B\u00ebje dritaren t\u00eb zmadhueshme",popup_location:"Shfaq shiritin e adres\u00ebs",popup_menubar:"Shfaq menun\u00eb",popup_toolbar:"Shfaq butonat",popup_statusbar:"Shfaq shiritin e statusit",popup_scrollbars:"Shfaq ashensor\u00ebt",popup_return:"Fut \'return false\'",popup_name:"Emri i dritares",popup_url:"URL e popup",popup:"Popup me Javascript",target_blank:"Hape n\u00eb dritare t\u00eb re",target_top:"Hape n\u00eb frame-in e m\u00ebsip\u00ebrm",target_parent:"Hape n\u00eb dritaren m\u00ebm\u00eb / frame",target_same:"Hape n\u00eb k\u00ebt\u00eb dritare / frame",anchor_names:"Lidhjet",popup_opts:"Opsionet",advanced_props:"Tipare t\u00eb avancuara",event_props:"Ngjarjet",popup_props:"Tiparet e popup",general_props:"Tipare t\u00eb p\u00ebrgjithshme",advanced_tab:"T\u00eb Avancuara",events_tab:"Ngjarjet",popup_tab:"Popup",general_tab:"T\u00eb P\u00ebrgjithshme",list:"Lista e lidhjeve",is_external:"Adresa q\u00eb keni futur duket si lidhje e jashtme. D\u00ebshironi t\u00eb shtoni prefiksin http://?",is_email:"Adresa q\u00eb keni futur duket si email. D\u00ebshironi t\u00eb shtoni prefiksin mailto:?",titlefield:"Titulli",target:"Sh\u00ebnjestra",url:"URL e lidhjes",title:"Fut/edito lidhje",link_list:"Lista e lidhjeve",rtl:"Djathtas-Majtas",ltr:"Majtas-Djathtas",accesskey:"Butoni i aksesit",tabindex:"Indeksi i Tab",rev:"Marr\u00ebdh\u00ebnia sh\u00ebnjest\u00ebr-faqe",rel:"Marr\u00ebdh\u00ebnia faqe-sh\u00ebnjest\u00ebr",mime:"Tipi MIME i sh\u00ebnjestr\u00ebs",encoding:"Kodimi i karaktereve t\u00eb sh\u00ebnjestr\u00ebs",langcode:"Kodi i gjuh\u00ebs",target_langcode:"Gjuha e sh\u00ebnjestr\u00ebs"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/sr_dlg.js b/js/tiny_mce/plugins/advlink/langs/sr_dlg.js new file mode 100755 index 000000000..3a5c3e974 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/sr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sr.advlink_dlg',{target_name:"Ime mete",classes:"Klasa",style:"Stil",id:"Id",popup_position:"Pozicija (X/Y)",langdir:"Smer jezika",popup_size:"Veli\u010dina",popup_dependent:"Zavistan (samo za Mozilla/Firefox)",popup_resizable:"Prozor promenljive veli\u010dine",popup_location:"Prika\u017ei traku lokacije",popup_menubar:"Prika\u017ei Meni",popup_toolbar:"Prika\u017ei trake sa alatima",popup_statusbar:"Prika\u017ei statusnu traku",popup_scrollbars:"Prika\u017ei kliza\u010de",popup_return:"Ubaci \'return false\'",popup_name:"Ime prozora",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Otvori u novom prozoru",target_top:"Otvori u gornjem ramu (zamenjuje sve ramove)",target_parent:"Otvori u izvornom prozoru / ramu",target_same:"Otovori u novom prozoru / ramu",anchor_names:"Sidra",popup_opts:"Opcije",advanced_props:"Napredna svojstva",event_props:"Doga\u0111aji",popup_props:"Detalji popup prozora",general_props:"Detalji",advanced_tab:"Napredno",events_tab:"Doga\u0111aji",popup_tab:"Popup",general_tab:"Op\u0161te opcije",list:"Lista linkova",is_external:"URL koji ste uneli izgleda kao spolja\u0161nji link, da li \u017eelite da dodate neophodni http:// prefiks?",is_email:"URL koji ste uneli izgleda kao e-mail adresa, da li \u017eelite da dodate neophodni mailto: prefiks?",titlefield:"Naslov",target:"Meta",url:"URL link",title:"Ubaci/izmeni link",link_list:"Lista linkova",rtl:"S desna na levo",ltr:"S leva na desno",accesskey:"Taster za pristup",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"MIME tip",encoding:"Kodiranje znakova",langcode:"Kod jezika",target_langcode:"Jezik"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/sv_dlg.js b/js/tiny_mce/plugins/advlink/langs/sv_dlg.js new file mode 100755 index 000000000..272f76233 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/sv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sv.advlink_dlg',{"target_name":"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Position (x/y)",langdir:"Skriftriktning","popup_size":"Storlek","popup_dependent":"Beroende av (Mozilla/Firefox enbart)","popup_resizable":"Skalbart f\u00f6nster","popup_location":"Adressraden","popup_menubar":"Menyrad","popup_toolbar":"Verktygsf\u00e4lt","popup_statusbar":"Statusf\u00e4lt","popup_scrollbars":"Rullningslister","popup_return":"Infoga \'return false\'","popup_name":"F\u00f6nsternamn","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00d6ppna i nytt f\u00f6nster","target_top":"\u00d6ppna i toppramen (ers\u00e4tter alla ramar)","target_parent":"\u00d6ppna i \u00f6verliggande f\u00f6nster/ram","target_same":"\u00d6ppna i detta f\u00f6nster/ram","anchor_names":"Bokm\u00e4rken","popup_opts":"Inst\u00e4llningar","advanced_props":"Avancerade inst\u00e4llningar","event_props":"H\u00e4ndelser","popup_props":"Popup-inst\u00e4llningar","general_props":"Generella inst\u00e4llningar","advanced_tab":"Avancerat","events_tab":"H\u00e4ndelser","popup_tab":"Popup","general_tab":"Generellt",list:"L\u00e4nklista","is_external":"L\u00e4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00e5 l\u00e4nken?","is_email":"L\u00e4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00e5 l\u00e4nken?",titlefield:"Titel",target:"M\u00e5l",url:"L\u00e4nkens URL",title:"Infoga/redigera l\u00e4nk","link_list":"L\u00e4nklista",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",accesskey:"Snabbtangent",tabindex:"Tabbindex",rev:"Omv\u00e4nd relation (rev)",rel:"Relation (rel attribut)",mime:"MIME type",encoding:"Teckenformattering",langcode:"Spr\u00e5kkod","target_langcode":"M\u00e5lspr\u00e5k"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ta_dlg.js b/js/tiny_mce/plugins/advlink/langs/ta_dlg.js new file mode 100755 index 000000000..cf932189a --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ta_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ta.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/te_dlg.js b/js/tiny_mce/plugins/advlink/langs/te_dlg.js new file mode 100755 index 000000000..92c3d0306 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/te_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('te.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/th_dlg.js b/js/tiny_mce/plugins/advlink/langs/th_dlg.js new file mode 100755 index 000000000..dd0eb79c8 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/th_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('th.advlink_dlg',{target_name:"\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",classes:"\u0e04\u0e25\u0e32\u0e2a",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",id:"Id",popup_position:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07 (X/Y)",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19",popup_size:"\u0e02\u0e19\u0e32\u0e14",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e02\u0e19\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49",popup_location:"\u0e41\u0e2a\u0e14\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48",popup_menubar:"\u0e41\u0e2a\u0e14\u0e07\u0e41\u0e16\u0e1a\u0e40\u0e21\u0e19\u0e39",popup_toolbar:"\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e39\u0e25\u0e1a\u0e32\u0e23\u0e4c",popup_statusbar:"\u0e41\u0e2a\u0e14\u0e07\u0e41\u0e16\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30",popup_scrollbars:"\u0e41\u0e2a\u0e14\u0e07\u0e2a\u0e01\u0e23\u0e2d\u0e25\u0e1a\u0e32\u0e23\u0e4c",popup_return:"\u0e40\u0e1e\u0e34\u0e48\u0e21 \'return false\'",popup_name:"\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07",popup_url:"\u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e URL",popup:"\u0e08\u0e32\u0e27\u0e32 \u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e",target_blank:"\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48",target_top:"\u0e40\u0e1b\u0e34\u0e14\u0e17\u0e35\u0e48\u0e40\u0e1f\u0e23\u0e21\u0e1a\u0e19 (\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e38\u0e01\u0e40\u0e1f\u0e23\u0e21)",target_parent:"\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e14\u0e34\u0e21 / \u0e40\u0e1f\u0e23\u0e21",target_same:"\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48 / \u0e40\u0e1f\u0e23\u0e21",anchor_names:"\u0e0a\u0e37\u0e48\u0e2d\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",popup_opts:"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01",advanced_props:"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",event_props:"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21",popup_props:"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e",general_props:"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",advanced_tab:"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",events_tab:"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21",popup_tab:"\u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e",general_tab:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",is_external:"URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e25\u0e34\u0e07\u0e04\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 http:// \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ?",is_email:"URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e08\u0e30\u0e21\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 mailto: \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ",titlefield:"\u0e0a\u0e37\u0e48\u0e2d",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",url:"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",link_list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 MIME type",encoding:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23",langcode:"\u0e42\u0e04\u0e49\u0e14\u0e20\u0e32\u0e29\u0e32",target_langcode:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 \u0e20\u0e32\u0e29\u0e32"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/tn_dlg.js b/js/tiny_mce/plugins/advlink/langs/tn_dlg.js new file mode 100755 index 000000000..ecd0d5ad4 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/tn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tn.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/tr_dlg.js b/js/tiny_mce/plugins/advlink/langs/tr_dlg.js new file mode 100755 index 000000000..2b39f826d --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/tr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tr.advlink_dlg',{target_name:"Hedef ad\u0131",classes:"S\u0131n\u0131fla",style:"Stil",id:"Id",popup_position:"Konum (X/Y)",langdir:"Dil y\u00f6n\u00fc",popup_size:"Boyut",popup_dependent:"Ba\u011f\u0131ml\u0131 (Sadece Mozilla Firefox)",popup_resizable:"Pencereyi boyutland\u0131r\u0131labilir yap",popup_location:"Aderes \u00e7ubu\u011funu g\u00f6ster",popup_menubar:"Men\u00fc \u00e7ubu\u011funu g\u00f6ster",popup_toolbar:"Ara\u00e7 kutusunu g\u00f6ster",popup_statusbar:"Durum \u00e7ubu\u011funu g\u00f6ster",popup_scrollbars:"Kayd\u0131rma \u00e7ubuklar\u0131n\u0131 g\u00f6ster",popup_return:"Ekle \'return false\'",popup_name:"Pencere ad\u0131",popup_url:"A\u00e7\u0131l\u0131r pencere URL\'si",popup:"Javascript a\u00e7\u0131l\u0131r pencere",target_blank:"Yeni pencerede a\u00e7",target_top:"\u00dcst \u00e7er\u00e7evede a\u00e7 (t\u00fcm \u00e7er\u00e7eveleri de\u011fi\u015ftir) ",target_parent:"Ana pencerede / \u00e7er\u00e7evede a\u00e7",target_same:"Pencerede / \u00e7er\u00e7evede a\u00e7",anchor_names:"Nesne tutucular",popup_opts:"Se\u00e7enekler",advanced_props:"Geli\u015fmi\u015f \u00f6zellikler",event_props:"Olaylar",popup_props:"A\u00e7\u0131l\u0131r pencere \u00f6zellikleri",general_props:"Genel \u00f6zellikler",advanced_tab:"Geli\u015fmi\u015f",events_tab:"Olaylar",popup_tab:"A\u00e7\u0131l\u0131r pencere",general_tab:"Genel",list:"Ba\u011flant\u0131 listesi",is_external:"Girdi\u011fiz URL d\u0131\u015f ba\u011flant\u0131 gibi g\u00f6r\u00fcn\u00fcyor; gerekli olan http:// \u00f6nekinin eklenmesini ister misiniz?",is_email:"Girdi\u011finiz URL e-posta adresi gibi g\u00f6r\u00fcn\u00fcyor; gerekli olan mailto: \u00f6nekinin eklenmesini ister misiniz? prefix?",titlefield:"Ba\u015fl\u0131k",target:"Hedef",url:"Ba\u011flant\u0131 URL\'si",title:"Ba\u011flant\u0131 ekle/d\u00fczenle",link_list:"Ba\u011flant\u0131 listesi",rtl:"Soldan sa\u011fa",ltr:"Sa\u011fdan sola",accesskey:"Eri\u015fim tu\u015fu",tabindex:"Sekme indeksi",rev:"Sayfadan hedefe ili\u015fki",rel:"Hedeften sayfaya ili\u015fki",mime:"Hedef MIME tipi",encoding:"Hedef karakter kodlama",langcode:"Dil kodu",target_langcode:"Hedef dil"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/tt_dlg.js b/js/tiny_mce/plugins/advlink/langs/tt_dlg.js new file mode 100755 index 000000000..1f89be18a --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/tt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tt.advlink_dlg',{target_name:"\u76ee\u6a19\u540d\u7a31",classes:"\u6a23\u5f0f\u985e",style:"\u6a23\u5f0f",id:"Id",popup_position:"\u5ea7\u6a19 (X/Y)",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",popup_size:"\u5927\u5c0f",popup_dependent:"\u5f9e\u5c6c\u65bc ( \u50c5 Mozilla/Firefox \u6709\u6548 )",popup_resizable:"\u53ef\u8abf\u6574\u7a97\u53e3\u5927\u5c0f",popup_location:"\u986f\u793a\u4f4d\u5740\u6b04",popup_menubar:"\u986f\u793a\u529f\u80fd\u8868\u5217",popup_toolbar:"\u986f\u793a\u5de5\u5177\u5217",popup_statusbar:"\u986f\u793a\u72c0\u614b\u5217",popup_scrollbars:"\u986f\u793a\u6372\u8ef8",popup_return:"\u63d2\u5165 \'return false\'",popup_name:"\u7a97\u53e3\u540d\u7a31",popup_url:"\u5f48\u51fa\u7a97\u53e3\u4f4d\u5740",popup:"Javascript \u5feb\u986f\u7a97\u53e3",target_blank:"\u5728\u65b0\u7a97\u53e3\u6253\u958b",target_top:"\u5728\u9802\u5c64\u7a97\u53e3\u6253\u958b",target_parent:"\u5728\u7236\u7a97\u53e3\u6253\u958b",target_same:"\u5728\u7576\u524d\u7a97\u53e3\u6253\u958b",anchor_names:"\u9328\u9ede",popup_opts:"\u9078\u9805",advanced_props:"\u9032\u968e\u5c6c\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5feb\u986f\u8996\u7a97\u5c6c\u6027",general_props:"\u57fa\u672c\u5c6c\u6027",advanced_tab:"\u9032\u968e",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5feb\u986f\u7a97\u53e3",general_tab:"\u57fa\u672c",list:"\u9023\u7d50\u6e05\u55ae",is_external:"\u60a8\u8f38\u5165\u7684\u7db2\u5740\u61c9\u8a72\u662f\u4e00\u500b\u5916\u90e8\u9023\u7d50\uff0c\u662f\u5426\u9700\u8981\u5728\u7db2\u5740\u524d\u52a0\u4e0a http:// ?",is_email:"\u60a8\u8f38\u5165\u7684\u61c9\u8a72\u662f\u4e00\u500b\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u5728\u7db2\u5740\u524d\u52a0\u4e0a mailto: ? ",titlefield:"\u641c\u5c0b",target:"\u76ee\u6a19",url:"\u9023\u7d50\u5730\u5740",title:"\u63d2\u5165/\u7de8\u8f2f \u9023\u7d50",link_list:"\u9023\u7d50\u6e05\u55ae",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",accesskey:"\u5feb\u901f\u9375",tabindex:"Tab\u7d22\u5f15",rev:"rev",rel:"rel",mime:"\u76ee\u6a19 MIME \u985e\u578b",encoding:"\u76ee\u7684\u8a9e\u8a00\u7de8\u78bc",langcode:"\u8a9e\u8a00\u7de8\u78bc",target_langcode:"\u76ee\u7684\u8a9e\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/tw_dlg.js b/js/tiny_mce/plugins/advlink/langs/tw_dlg.js new file mode 100755 index 000000000..9334653cc --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/tw_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tw.advlink_dlg',{target_name:"\u76ee\u6a19\u540d\u7a31",classes:"\u985e\u5225",style:"\u6a23\u5f0f",id:"ID",popup_position:"\u4f4d\u7f6e(X/Y)",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",popup_size:"\u5927\u5c0f",popup_dependent:"\u700f\u89bd\u5668\u9650\u5236(\u50c5\u652f\u63f4 Mozilla/Firefox)",popup_resizable:"\u5f48\u7a97\u53ef\u8abf\u6574\u5927\u5c0f",popup_location:"\u986f\u793a\u5730\u5740\u6b04",popup_menubar:"\u986f\u793a\u529f\u80fd\u9078\u55ae\u5217",popup_toolbar:"\u986f\u793a\u5de5\u5177\u5217",popup_statusbar:"\u986f\u793a\u72c0\u614b\u5217",popup_scrollbars:"\u986f\u793a\u6efe\u52d5\u689d",popup_return:"\u63d2\u5165 \"return false\"",popup_name:"\u8996\u7a97\u540d\u7a31",popup_url:"\u5f48\u51fa\u8996\u7a97URL",popup:"JavaScript \u5f48\u51fa\u8996\u7a97",target_blank:"\u5728\u65b0\u8996\u7a97\u6253\u958b\u8d85\u9023\u7d50",target_top:"\u5728\u9802\u90e8\u8996\u7a97\u6253\u958b\u8d85\u9023\u7d50",target_parent:"\u5728\u7236\u8996\u7a97\u6253\u958b\u8d85\u9023\u7d50",target_same:"\u5728\u76ee\u524d\u8996\u7a97\u6253\u958b\u8d85\u9023\u7d50",anchor_names:"\u66f8\u7c64",popup_opts:"\u9078\u9805",advanced_props:"\u9ad8\u7d1a\u5c6c\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5f48\u51fa\u8996\u7a97\u5c6c\u6027",general_props:"\u4e00\u822c\u5c6c\u6027",advanced_tab:"\u9ad8\u7d1a\u5c6c\u6027",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5f48\u51fa\u8996\u7a97",general_tab:"\u4e00\u822c",list:"\u8d85\u9023\u7d50\u6e05\u55ae",is_external:"\u60a8\u8f38\u5165\u7684 URL \u4f3c\u4e4e\u70ba\u5916\u90e8\u8d85\u9023\u7d50\uff0c\u662f\u5426\u8981\u52a0\u4e0a \"http://\" \uff1f",is_email:"\u60a8\u8f38\u5165\u7684\u4f3c\u4e4e\u662f\u96fb\u5b50\u90f5\u4ef6\u5730\u5740,\u662f\u5426\u9700\u8981\u52a0 mailto:\uff1f",titlefield:"\u6a19\u984c",target:"\u76ee\u6a19",url:"\u8d85\u9023\u7d50URL",title:"\u63d2\u5165/\u7de8\u8f2f\u8d85\u9023\u7d50",link_list:"\u8d85\u9023\u7d50\u6e05\u55ae",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",accesskey:"\u5feb\u901f\u9375",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6a19\u5230\u7db2\u9801\u7684\u95dc\u4fc2",rel:"\u7db2\u9801\u5230\u76ee\u6a19\u7684\u95dc\u4fc2",mime:"\u76ee\u6a19MIME\u985e\u578b",encoding:"\u76ee\u6a19\u8a9e\u8a00\u7de8\u78bc",langcode:"\u8a9e\u8a00\u7de8\u78bc",target_langcode:"\u76ee\u6a19\u8a9e\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/uk_dlg.js b/js/tiny_mce/plugins/advlink/langs/uk_dlg.js new file mode 100755 index 000000000..6a00141ea --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/uk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('uk.advlink_dlg',{target_name:"\u041d\u0430\u0437\u0432\u0430 \u0446\u0456\u043b\u0456",classes:"\u041a\u043b\u0430\u0441\u0438",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440",popup_position:"\u041f\u043e\u0437\u0438\u0446\u0456\u044f (X/Y)",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c \u043c\u043e\u0432\u0438",popup_size:"\u0420\u043e\u0437\u043c\u0456\u0440",popup_dependent:"\u0417\u0430\u043b\u0435\u0436\u043d\u0438\u0439 (\u043b\u0438\u0448\u0435 \u0434\u043b\u044f Mozilla/Firefox)",popup_resizable:"\u0414\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u0438 \u0437\u043c\u0456\u043d\u044e\u0432\u0430\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440",popup_location:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043f\u0430\u043d\u0435\u043b\u044c location",popup_menubar:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043c\u0435\u043d\u044e",popup_toolbar:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043f\u0430\u043d\u0435\u043b\u0456 \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432",popup_statusbar:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441",popup_scrollbars:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043a\u0440\u043e\u043b\u0435\u0440\u0438",popup_return:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \'return false\'",popup_name:"\u041d\u0430\u0437\u0432\u0430 \u0432\u0456\u043a\u043d\u0430",popup_url:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0432\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e",popup:"\u0412\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e Javascript",target_blank:"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432 \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456",target_top:"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0443 \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u0444\u0440\u0435\u0439\u043c\u0456 (\u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0456 \u0444\u0440\u0435\u0439\u043c\u0438)",target_parent:"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432 \u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456 / \u0444\u0440\u0435\u0439\u043c\u0456",target_same:"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432 \u0446\u044c\u043e\u043c\u0443 \u0436 \u0432\u0456\u043a\u043d\u0456 / \u0444\u0440\u0435\u0439\u043c\u0456",anchor_names:"\u042f\u043a\u043e\u0440\u0456",popup_opts:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",advanced_props:"\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",event_props:"\u041f\u043e\u0434\u0456\u0457",popup_props:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0432\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u043e\u0433\u043e \u0432\u0456\u043a\u043d\u0430",general_props:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",advanced_tab:"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",events_tab:"\u041f\u043e\u0434\u0456\u0457",popup_tab:"\u0412\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e",general_tab:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",list:"\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c",is_external:"\u0412\u0432\u0435\u0434\u0435\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0441\u0445\u043e\u0436\u0435 \u043d\u0430 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 http://?",is_email:"\u0412\u0432\u0435\u0434\u0435\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0441\u0445\u043e\u0436\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 mailto:?",titlefield:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",target:"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432...",url:"\u0410\u0434\u0440\u0435\u0441\u0430",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",link_list:"\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043b\u0456\u0432\u043e\u0440\u0443\u0447",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",accesskey:"\u041a\u043b\u0430\u0432\u0456\u0448\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0443",tabindex:"\u0422\u0430\u0431\u0456\u043d\u0434\u0435\u043a\u0441",rev:"\u0417\u0432\'\u044f\u0437\u043e\u043a \u043c\u0456\u0436 \u0446\u0456\u043b\u043b\u044e \u0442\u0430 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u043e\u044e",rel:"\u0417\u0432\'\u044f\u0437\u043e\u043a \u043c\u0456\u0436 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u043e\u044e \u0442\u0430 \u0446\u0456\u043b\u043b\u044e",mime:"MIME \u0442\u0438\u043f \u0446\u0456\u043b\u0456",encoding:"\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f \u0446\u0456\u043b\u0456",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438",target_langcode:"\u041c\u043e\u0432\u0430 \u0446\u0456\u043b\u0456"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/ur_dlg.js b/js/tiny_mce/plugins/advlink/langs/ur_dlg.js new file mode 100755 index 000000000..2c6ded889 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/ur_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ur.advlink_dlg',{target_name:"Target name",classes:"Classes",style:"Style",id:"Id",popup_position:"Position (X/Y)",langdir:"Language direction",popup_size:"Size",popup_dependent:"Dependent (Mozilla/Firefox only)",popup_resizable:"Make window resizable",popup_location:"Show location bar",popup_menubar:"Show menu bar",popup_toolbar:"Show toolbars",popup_statusbar:"Show status bar",popup_scrollbars:"Show scrollbars",popup_return:"Insert \'return false\'",popup_name:"Window name",popup_url:"Popup URL",popup:"Javascript popup",target_blank:"Open in new window",target_top:"Open in top frame (replaces all frames)",target_parent:"Open in parent window / frame",target_same:"Open in this window / frame",anchor_names:"Anchors",popup_opts:"Options",advanced_props:"Advanced properties",event_props:"Events",popup_props:"Popup properties",general_props:"General properties",advanced_tab:"Advanced",events_tab:"Events",popup_tab:"Popup",general_tab:"General",list:"Link list",is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link",link_list:"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code",target_langcode:"Target language"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/vi_dlg.js b/js/tiny_mce/plugins/advlink/langs/vi_dlg.js new file mode 100755 index 000000000..9d72fbb27 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/vi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('vi.advlink_dlg',{target_name:"T\u00ean \u0111\u00edch",classes:"L\u1edbp",style:"Ki\u1ec3u d\u00e1ng",id:"Id",popup_position:"V\u1ecb tr\u00ed (X/Y)",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef",popup_size:"K\u00edch th\u01b0\u1edbc",popup_dependent:"Ph\u1ee5 thu\u1ed9c (ch\u1ec9 Mozilla/Firefox)",popup_resizable:"L\u00e0m cho c\u1eeda s\u1ed5 c\u00f3 th\u1ec3 thay \u0111\u1ed5i k\u00edch c\u1ee1",popup_location:"Hi\u1ec7n th\u1ecb thanh v\u1ecb tr\u00ed",popup_menubar:"Hi\u1ec3n th\u1ecb thanh th\u1ef1c \u0111\u01a1n",popup_toolbar:"Hi\u1ec7n th\u1ecb thanh c\u00f4ng c\u1ee5",popup_statusbar:"Hi\u1ec7n th\u1ecb thanh tr\u1ea1ng th\u00e1i",popup_scrollbars:"Hi\u1ec3n th\u1ecb thanh cu\u1ed9n",popup_return:"Ch\u00e8n \'return false\'",popup_name:"T\u00ean c\u1eeda s\u1ed5",popup_url:"URL b\u1eadt l\u00ean",popup:"Javascript b\u1eadt l\u00ean",target_blank:"M\u1edf trong c\u1eeda s\u1ed5 m\u1edbi",target_top:"M\u1edf trong khung tr\u00ean c\u00f9ng (thay th\u1ebf t\u1ea5t c\u00e1c khung)",target_parent:"M\u1edf trong c\u1eeda s\u1ed5/khung cha",target_same:"M\u1edf trong c\u1eeda s\u1ed5/khung n\u00e0y",anchor_names:"M\u1ecf neo",popup_opts:"T\u00f9y ch\u1ecdn",advanced_props:"Thu\u1ed9c t\u00ednh n\u00e2ng cao",event_props:"S\u1ef1 ki\u1ec7n",popup_props:"Thu\u1ed9c t\u00ednh b\u1eadt l\u00ean",general_props:"Thu\u1ed9c t\u00ednh chung",advanced_tab:"N\u00e2ng cao",events_tab:"S\u1ef1 ki\u1ec7n",popup_tab:"B\u1eadt l\u00ean",general_tab:"Chung",list:"Danh s\u00e1ch li\u00ean k\u1ebft",is_external:"URL b\u1ea1n \u0111\u00e3 nh\u1eadp c\u00f3 v\u1ebb l\u00e0 m\u1ed9t li\u00ean k\u1ebft ngo\u00e0i, b\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 http://?",is_email:"URL b\u1ea1n \u0111\u00e3 nh\u1eadp c\u00f3 v\u1ebb l\u00e0 m\u1ed9t \u0111\u1ecba ch\u1ec9 \u0111i\u1ec7n th\u01b0, B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 mailto?",titlefield:"Ti\u00eau \u0111\u1ec1",target:"\u0110\u00edch",url:"URL Li\u00ean k\u1ebft",title:"Th\u00eam/S\u1eeda Li\u00ean k\u1ebft",link_list:"Danh s\u00e1ch li\u00ean k\u1ebft",rtl:"Ph\u1ea3i qua tr\u00e1i",ltr:"Tr\u00e1i qua ph\u1ea3i",accesskey:"Ph\u00edm truy c\u1eadp",tabindex:"Ch\u1ec9 m\u1ee5c th\u1ebb",rev:"\u0110\u00edch li\u00ean quan t\u1edbi trang",rel:"Trang li\u00ean quan t\u1edbi \u0111\u00edch",mime:"Ki\u1ec3u MIME \u0111\u00edch",encoding:"M\u00e3 h\u00f3a k\u00fd t\u1ef1 \u0111\u00edch",langcode:"M\u00e3 ng\u00f4n ng\u1eef",target_langcode:"Ng\u00f4n ng\u1eef \u0111\u00edch"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js b/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js new file mode 100755 index 000000000..1fdcbbefc --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh-cn.advlink_dlg',{"target_name":"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",id:"ID","popup_position":"\u4f4d\u7f6e(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411","popup_size":"\u5927\u5c0f","popup_dependent":"\u9650\u5236(\u4ec5\u652f\u6301Mozilla/Firefox)","popup_resizable":"\u7a97\u53e3\u53ef\u8c03\u6574\u5927\u5c0f","popup_location":"\u663e\u793a\u5730\u5740\u680f","popup_menubar":"\u663e\u793a\u83dc\u5355\u680f","popup_toolbar":"\u663e\u793a\u5de5\u5177\u680f","popup_statusbar":"\u663e\u793a\u72b6\u6001\u680f","popup_scrollbars":"\u663e\u793a\u6eda\u52a8\u6761","popup_return":"\u63d2\u5165\'return false\'","popup_name":"\u7a97\u53e3\u540d\u79f0","popup_url":"\u5f39\u51faURL",popup:"Javascript\u5f39\u7a97","target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00","target_top":"\u5728\u9876\u90e8\u6846\u67b6\u6253\u5f00\uff08\u91cd\u7f6e\u6240\u6709\u6846\u67b6\uff09","target_parent":"\u5728\u7236\u7a97\u53e3/\u6846\u67b6\u6253\u5f00","target_same":"\u5728\u5f53\u524d\u7a97\u53e3/\u6846\u67b6\u6253\u5f00","anchor_names":"\u951a","popup_opts":"\u9009\u9879","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","event_props":"\u4e8b\u4ef6","popup_props":"\u5f39\u51fa\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","events_tab":"\u4e8b\u4ef6","popup_tab":"\u5f39\u51fa","general_tab":"\u666e\u901a",list:"\u94fe\u63a5\u5217\u8868","is_external":"\u60a8\u8f93\u5165\u7684URL\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u8981\u52a0\u4e0a\"http://\"\u524d\u7f00\uff1f","is_email":"\u60a8\u8f93\u5165URL\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\"mailto:\"\u524d\u7f00\uff1f",titlefield:"\u6807\u9898",target:"\u6253\u5f00\u65b9\u5f0f",url:"\u8d85\u94fe\u63a5URL",title:"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","link_list":"\u94fe\u63a5\u5217\u8868",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u6377\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u8bed\u8a00\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801","target_langcode":"\u76ee\u6807\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/zh_dlg.js b/js/tiny_mce/plugins/advlink/langs/zh_dlg.js new file mode 100755 index 000000000..6f9be24b7 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/zh_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh.advlink_dlg',{target_name:"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",id:"ID",popup_position:"\u4f4d\u7f6e(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",popup_size:"\u5927\u5c0f",popup_dependent:"\u6d4f\u89c8\u5668\u9650\u5236(\u4ec5\u652f\u63f4 Mozilla/Firefox)",popup_resizable:"\u5f39\u7a97\u53ef\u8c03\u6574\u5927\u5c0f",popup_location:"\u663e\u793a\u5730\u5740\u680f",popup_menubar:"\u663e\u793a\u83dc\u5355\u5217",popup_toolbar:"\u663e\u793a\u5de5\u5177\u5217",popup_statusbar:"\u663e\u793a\u72b6\u6001\u5217",popup_scrollbars:"\u663e\u793a\u6eda\u52a8\u6761",popup_return:"\u63d2\u5165 \"return false\"",popup_name:"\u89c6\u7a97\u540d\u79f0",popup_url:"\u5f39\u51fa\u89c6\u7a97URL",popup:"JavaScript \u5f39\u51fa\u89c6\u7a97",target_blank:"\u5728\u65b0\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",target_top:"\u5728\u9876\u90e8\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",target_parent:"\u5728\u7236\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",target_same:"\u5728\u76ee\u524d\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",anchor_names:"\u4e66\u7b7e",popup_opts:"\u9009\u9879",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5f39\u51fa\u89c6\u7a97\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7\u5c5e\u6027",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5f39\u51fa\u89c6\u7a97",general_tab:"\u4e00\u822c",list:"\u8d85\u8fde\u7ed3\u6e05\u5355",is_external:"\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u4e3a\u5916\u90e8\u8d85\u8fde\u7ed3\uff0c\u662f\u5426\u8981\u52a0\u4e0a \"http://\" \uff1f",is_email:"\u60a8\u8f93\u5165\u7684\u4f3c\u4e4e\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740,\u662f\u5426\u9700\u8981\u52a0 mailto:\uff1f",titlefield:"\u6807\u9898",target:"\u76ee\u6807",url:"\u8d85\u8fde\u7ed3URL",title:"\u63d2\u5165/\u7f16\u8f91\u8d85\u8fde\u7ed3",link_list:"\u8d85\u8fde\u7ed3\u6e05\u5355",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u901f\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u8bed\u8a00\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801",target_langcode:"\u76ee\u6807\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/langs/zu_dlg.js b/js/tiny_mce/plugins/advlink/langs/zu_dlg.js new file mode 100755 index 000000000..0587a3918 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/langs/zu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zu.advlink_dlg',{target_name:"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u578b",style:"\u6837\u5f0f",id:"Id",popup_position:"\u5ea7\u6807(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",popup_size:"\u5c3a\u5bf8",popup_dependent:"\u4ece\u5c5e(\u53ea\u6709Mozilla/Firefox\u6709\u6548)",popup_resizable:"\u53ef\u8c03\u6574\u89c6\u7a97\u5c3a\u5bf8",popup_location:"\u663e\u793a\u7f51\u5740\u5217",popup_menubar:"\u663e\u793a\u529f\u80fd\u8868",popup_toolbar:"\u663e\u793a\u5de5\u5177\u5217",popup_statusbar:"\u663e\u793a\u72b6\u6001\u680f",popup_scrollbars:"\u663e\u793a\u8fb9\u6761",popup_return:"\u63d2\u5165\'return false\'",popup_name:"\u7a97\u53e3\u540d\u79f0",popup_url:"\u5feb\u663e\u89c6\u7a97\u7f51\u5740",popup:"Javascript\u5feb\u663e\u89c6\u7a97",target_blank:"\u6253\u5f00\u5728\u65b0\u89c6\u7a97",target_top:"\u6253\u5f00\u5728\u6700\u4e0a\u5c42\u7684\u6846\u67b6(\u66ff\u6362\u6240\u6709\u6846\u67b6)",target_parent:"\u6253\u5f00\u5728\u7236\u89c6\u7a97/\u6846\u67b6",target_same:"\u6253\u5f00\u5728\u65b0\u89c6\u7a97/\u6846\u67b6",anchor_names:"\u951a\u70b9",popup_opts:"\u9009\u9879",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",event_props:"\u4e8b\u4ef6",popup_props:"\u5feb\u663e\u89c6\u7a97\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",events_tab:"\u4e8b\u4ef6",popup_tab:"\u5feb\u663e\u89c6\u7a97",general_tab:"\u4e00\u822c",list:"\u8fde\u7ed3\u6e05\u5355",is_external:"\u60a8\u8f93\u5165\u7684\u7f51\u5740\u5e94\u8be5\u662f\u4e00\u4e2a\u5916\u90e8\u8fde\u7ed3\uff0c\u662f\u5426\u9700\u8981\u5728\u7f51\u5740\u524d\u65b9\u52a0\u5165http://\uff1f",is_email:"\u60a8\u8f93\u5165\u7684\u7f51\u5740\u5e94\u8be5\u662f\u4e00\u4e2a\u7535\u5b50\u90ae\u5bc4\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u5728\u90ae\u5740\u524d\u65b9\u52a0\u5165mailto:\uff1f",titlefield:"\u67e5\u627e",target:"\u76ee\u6807",url:"\u8fde\u7ed3\u4f4d\u5740",title:"\u63d2\u5165/\u7f16\u8f91\u8fde\u7ed3",link_list:"\u8fde\u7ed3\u6e05\u5355",rtl:"\u7531\u53f3\u5230\u5de6",ltr:"\u7531\u5de6\u5230\u53f3",accesskey:"\u5feb\u901f\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u9875\u7684\u5173\u7cfb",rel:"\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801",target_langcode:"\u76ee\u7684\u8bed\u8a00"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/advlink/link.htm b/js/tiny_mce/plugins/advlink/link.htm new file mode 100644 index 000000000..6c2d9a5d0 --- /dev/null +++ b/js/tiny_mce/plugins/advlink/link.htm @@ -0,0 +1,338 @@ + + + + {#advlink_dlg.title} + + + + + + + + + +
        + + + + +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/contextmenu/editor_plugin.js b/js/tiny_mce/plugins/contextmenu/editor_plugin.js new file mode 100644 index 000000000..ca7468a6c --- /dev/null +++ b/js/tiny_mce/plugins/contextmenu/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(e){var h=this,i,f,d;h.editor=e;d=e.settings.contextmenu_never_use_native;h.onContextMenu=new tinymce.util.Dispatcher(this);f=e.onContextMenu.add(function(j,k){if(k.ctrlKey&&!d){return}if(i){j.selection.setRng(i)}h._getMenu(j).showMenu(k.clientX||k.pageX,k.clientY||k.pageX);a.add(j.getDoc(),"click",function(l){g(j,l)});a.cancel(k)});e.onRemove.add(function(){if(h._menu){h._menu.removeAll()}});function g(j,k){i=null;if(k&&k.button==2){i=j.selection.getRng();return}if(h._menu){h._menu.removeAll();h._menu.destroy();a.remove(j.getDoc(),"click",g)}}e.onMouseDown.add(g);e.onKeyDown.add(g);e.onKeyDown.add(function(j,k){if(k.shiftKey&&!k.ctrlKey&&!k.altKey&&k.keyCode===121){a.cancel(k);f(j,k)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js new file mode 100644 index 000000000..56c93abeb --- /dev/null +++ b/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -0,0 +1,156 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM; + + /** + * This plugin a context menu to TinyMCE editor instances. + * + * @class tinymce.plugins.ContextMenu + */ + tinymce.create('tinymce.plugins.ContextMenu', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @method init + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed) { + var t = this, lastRng, showMenu, contextmenuNeverUseNative; + + t.editor = ed; + + contextmenuNeverUseNative = ed.settings.contextmenu_never_use_native; + + /** + * This event gets fired when the context menu is shown. + * + * @event onContextMenu + * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event. + * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed. + */ + t.onContextMenu = new tinymce.util.Dispatcher(this); + + showMenu = ed.onContextMenu.add(function(ed, e) { + if (e.ctrlKey && !contextmenuNeverUseNative) return; + + // Restore the last selection since it was removed + if (lastRng) + ed.selection.setRng(lastRng); + + t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageX); + Event.add(ed.getDoc(), 'click', function(e) { + hide(ed, e); + }); + Event.cancel(e); + }); + + ed.onRemove.add(function() { + if (t._menu) + t._menu.removeAll(); + }); + + function hide(ed, e) { + lastRng = null; + + // Since the contextmenu event moves + // the selection we need to store it away + if (e && e.button == 2) { + lastRng = ed.selection.getRng(); + return; + } + + if (t._menu) { + t._menu.removeAll(); + t._menu.destroy(); + Event.remove(ed.getDoc(), 'click', hide); + } + }; + + ed.onMouseDown.add(hide); + ed.onKeyDown.add(hide); + ed.onKeyDown.add(function(ed, e) { + if (e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode === 121) { + Event.cancel(e); + showMenu(ed, e); + } + }); + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @method getInfo + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'Contextmenu', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + _getMenu : function(ed) { + var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2; + + if (m) { + m.removeAll(); + m.destroy(); + } + + p1 = DOM.getPos(ed.getContentAreaContainer()); + p2 = DOM.getPos(ed.getContainer()); + + m = ed.controlManager.createDropMenu('contextmenu', { + offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0), + offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0), + constrain : 1, + keyboard_focus: true + }); + + t._menu = m; + + m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col); + m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col); + m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'}); + + if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) { + m.addSeparator(); + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + } + + m.addSeparator(); + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + + m.addSeparator(); + am = m.addMenu({title : 'contextmenu.align'}); + am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'}); + am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'}); + am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'}); + am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'}); + + t.onContextMenu.dispatch(t, m, el, col); + + return m; + } + }); + + // Register plugin + tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu); +})(); diff --git a/js/tiny_mce/plugins/fullscreen/editor_plugin.js b/js/tiny_mce/plugins/fullscreen/editor_plugin.js new file mode 100644 index 000000000..6eae3ec84 --- /dev/null +++ b/js/tiny_mce/plugins/fullscreen/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent({format:"raw"}),{format:"raw"});d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js new file mode 100644 index 000000000..3477c86c9 --- /dev/null +++ b/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js @@ -0,0 +1,159 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM; + + tinymce.create('tinymce.plugins.FullScreenPlugin', { + init : function(ed, url) { + var t = this, s = {}, vp, posCss; + + t.editor = ed; + + // Register commands + ed.addCommand('mceFullScreen', function() { + var win, de = DOM.doc.documentElement; + + if (ed.getParam('fullscreen_is_enabled')) { + if (ed.getParam('fullscreen_new_window')) + closeFullscreen(); // Call to close in new window + else { + DOM.win.setTimeout(function() { + tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc); + tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'}); + tinyMCE.remove(ed); + DOM.remove('mce_fullscreen_container'); + de.style.overflow = ed.getParam('fullscreen_html_overflow'); + DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow')); + DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly')); + tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings + }, 10); + } + + return; + } + + if (ed.getParam('fullscreen_new_window')) { + win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight); + try { + win.resizeTo(screen.availWidth, screen.availHeight); + } catch (e) { + // Ignore + } + } else { + tinyMCE.oldSettings = tinyMCE.settings; // Store old settings + s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto'; + s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1); + vp = DOM.getViewPort(); + s.fullscreen_scrollx = vp.x; + s.fullscreen_scrolly = vp.y; + + // Fixes an Opera bug where the scrollbars doesn't reappear + if (tinymce.isOpera && s.fullscreen_overflow == 'visible') + s.fullscreen_overflow = 'auto'; + + // Fixes an IE bug where horizontal scrollbars would appear + if (tinymce.isIE && s.fullscreen_overflow == 'scroll') + s.fullscreen_overflow = 'auto'; + + // Fixes an IE bug where the scrollbars doesn't reappear + if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll')) + s.fullscreen_html_overflow = 'auto'; + + if (s.fullscreen_overflow == '0px') + s.fullscreen_overflow = ''; + + DOM.setStyle(DOM.doc.body, 'overflow', 'hidden'); + de.style.overflow = 'hidden'; //Fix for IE6/7 + vp = DOM.getViewPort(); + DOM.win.scrollTo(0, 0); + + if (tinymce.isIE) + vp.h -= 1; + + // Use fixed position if it exists + if (tinymce.isIE6) + posCss = 'absolute;top:' + vp.y; + else + posCss = 'fixed;top:0'; + + n = DOM.add(DOM.doc.body, 'div', { + id : 'mce_fullscreen_container', + style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'}); + DOM.add(n, 'div', {id : 'mce_fullscreen'}); + + tinymce.each(ed.settings, function(v, n) { + s[n] = v; + }); + + s.id = 'mce_fullscreen'; + s.width = n.clientWidth; + s.height = n.clientHeight - 15; + s.fullscreen_is_enabled = true; + s.fullscreen_editor_id = ed.id; + s.theme_advanced_resizing = false; + s.save_onsavecallback = function() { + ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'}); + ed.execCommand('mceSave'); + }; + + tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) { + s[k] = v; + }); + + if (s.theme_advanced_toolbar_location === 'external') + s.theme_advanced_toolbar_location = 'top'; + + t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s); + t.fullscreenEditor.onInit.add(function() { + t.fullscreenEditor.setContent(ed.getContent()); + t.fullscreenEditor.focus(); + }); + + t.fullscreenEditor.render(); + + t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container'); + t.fullscreenElement.update(); + //document.body.overflow = 'hidden'; + + t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() { + var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize; + + // Get outer/inner size to get a delta size that can be used to calc the new iframe size + outerSize = fed.dom.getSize(fed.getContainer().firstChild); + innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]); + + fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h); + }); + } + }); + + // Register buttons + ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'}); + + ed.onNodeChange.add(function(ed, cm) { + cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled')); + }); + }, + + getInfo : function() { + return { + longname : 'Fullscreen', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/fullscreen/fullscreen.htm b/js/tiny_mce/plugins/fullscreen/fullscreen.htm new file mode 100644 index 000000000..4c4f27e48 --- /dev/null +++ b/js/tiny_mce/plugins/fullscreen/fullscreen.htm @@ -0,0 +1,109 @@ + + + + + + + + +
        + +
        + + + + + diff --git a/js/tiny_mce/plugins/inlinepopups/editor_plugin.js b/js/tiny_mce/plugins/inlinepopups/editor_plugin.js new file mode 100644 index 000000000..ef648174f --- /dev/null +++ b/js/tiny_mce/plugins/inlinepopups/editor_plugin.js @@ -0,0 +1 @@ +(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId();h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","
        "));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;gf){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js new file mode 100644 index 000000000..ac6fb1cb9 --- /dev/null +++ b/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js @@ -0,0 +1,696 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is; + + tinymce.create('tinymce.plugins.InlinePopups', { + init : function(ed, url) { + // Replace window manager + ed.onBeforeRenderUI.add(function() { + ed.windowManager = new tinymce.InlineWindowManager(ed); + DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css"); + }); + }, + + getInfo : function() { + return { + longname : 'InlinePopups', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', { + InlineWindowManager : function(ed) { + var t = this; + + t.parent(ed); + t.zIndex = 300000; + t.count = 0; + t.windows = {}; + }, + + open : function(f, p) { + var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow; + + f = f || {}; + p = p || {}; + + // Run native windows + if (!f.inline) + return t.parent(f, p); + + parentWindow = t._frontWindow(); + if (parentWindow && DOM.get(parentWindow.id + '_ifr')) { + parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement; + } + + // Only store selection if the type is a normal window + if (!f.type) + t.bookmark = ed.selection.getBookmark(1); + + id = DOM.uniqueId(); + vp = DOM.getViewPort(); + f.width = parseInt(f.width || 320); + f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0); + f.min_width = parseInt(f.min_width || 150); + f.min_height = parseInt(f.min_height || 100); + f.max_width = parseInt(f.max_width || 2000); + f.max_height = parseInt(f.max_height || 2000); + f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0))); + f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0))); + f.movable = f.resizable = true; + p.mce_width = f.width; + p.mce_height = f.height; + p.mce_inline = true; + p.mce_window_id = id; + p.mce_auto_focus = f.auto_focus; + + // Transpose +// po = DOM.getPos(ed.getContainer()); +// f.left -= po.x; +// f.top -= po.y; + + t.features = f; + t.params = p; + t.onOpen.dispatch(t, f, p); + + if (f.type) { + opt += ' mceModal'; + + if (f.type) + opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1); + + f.resizable = false; + } + + if (f.statusbar) + opt += ' mceStatusbar'; + + if (f.resizable) + opt += ' mceResizable'; + + if (f.minimizable) + opt += ' mceMinimizable'; + + if (f.maximizable) + opt += ' mceMaximizable'; + + if (f.movable) + opt += ' mceMovable'; + + // Create DOM objects + t._addAll(DOM.doc.body, + ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'}, + ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt}, + ['div', {id : id + '_top', 'class' : 'mceTop'}, + ['div', {'class' : 'mceLeft'}], + ['div', {'class' : 'mceCenter'}], + ['div', {'class' : 'mceRight'}], + ['span', {id : id + '_title'}, f.title || ''] + ], + + ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, + ['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}], + ['span', {id : id + '_content'}], + ['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}] + ], + + ['div', {id : id + '_bottom', 'class' : 'mceBottom'}, + ['div', {'class' : 'mceLeft'}], + ['div', {'class' : 'mceCenter'}], + ['div', {'class' : 'mceRight'}], + ['span', {id : id + '_status'}, 'Content'] + ], + + ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}], + ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], + ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}], + ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}] + ] + ] + ); + + DOM.setStyles(id, {top : -10000, left : -10000}); + + // Fix gecko rendering bug, where the editors iframe messed with window contents + if (tinymce.isGecko) + DOM.setStyle(id, 'overflow', 'auto'); + + // Measure borders + if (!f.type) { + dw += DOM.get(id + '_left').clientWidth; + dw += DOM.get(id + '_right').clientWidth; + dh += DOM.get(id + '_top').clientHeight; + dh += DOM.get(id + '_bottom').clientHeight; + } + + // Resize window + DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh}); + + u = f.url || f.file; + if (u) { + if (tinymce.relaxedDomain) + u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; + + u = tinymce._addVer(u); + } + + if (!f.type) { + DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'}); + DOM.setStyles(id + '_ifr', {width : f.width, height : f.height}); + DOM.setAttrib(id + '_ifr', 'src', u); + } else { + DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok'); + + if (f.type == 'confirm') + DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel'); + + DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'}); + DOM.setHTML(id + '_content', f.content.replace('\n', '
        ')); + + Event.add(id, 'keyup', function(evt) { + var VK_ESCAPE = 27; + if (evt.keyCode === VK_ESCAPE) { + f.button_func(false); + return Event.cancel(evt); + } + }); + + Event.add(id, 'keydown', function(evt) { + var cancelButton, VK_TAB = 9; + if (evt.keyCode === VK_TAB) { + cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0]; + if (cancelButton && cancelButton !== evt.target) { + cancelButton.focus(); + } else { + DOM.get(id + '_ok').focus(); + } + return Event.cancel(evt); + } + }); + } + + // Register events + mdf = Event.add(id, 'mousedown', function(e) { + var n = e.target, w, vp; + + w = t.windows[id]; + t.focus(id); + + if (n.nodeName == 'A' || n.nodeName == 'a') { + if (n.className == 'mceMax') { + w.oldPos = w.element.getXY(); + w.oldSize = w.element.getSize(); + + vp = DOM.getViewPort(); + + // Reduce viewport size to avoid scrollbars + vp.w -= 2; + vp.h -= 2; + + w.element.moveTo(vp.x, vp.y); + w.element.resizeTo(vp.w, vp.h); + DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight}); + DOM.addClass(id + '_wrapper', 'mceMaximized'); + } else if (n.className == 'mceMed') { + // Reset to old size + w.element.moveTo(w.oldPos.x, w.oldPos.y); + w.element.resizeTo(w.oldSize.w, w.oldSize.h); + w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight); + + DOM.removeClass(id + '_wrapper', 'mceMaximized'); + } else if (n.className == 'mceMove') + return t._startDrag(id, e, n.className); + else if (DOM.hasClass(n, 'mceResize')) + return t._startDrag(id, e, n.className.substring(13)); + } + }); + + clf = Event.add(id, 'click', function(e) { + var n = e.target; + + t.focus(id); + + if (n.nodeName == 'A' || n.nodeName == 'a') { + switch (n.className) { + case 'mceClose': + t.close(null, id); + return Event.cancel(e); + + case 'mceButton mceOk': + case 'mceButton mceCancel': + f.button_func(n.className == 'mceButton mceOk'); + return Event.cancel(e); + } + } + }); + + // Make sure the tab order loops within the dialog. + Event.add([id + '_left', id + '_right'], 'focus', function(evt) { + var iframe = DOM.get(id + '_ifr'); + if (iframe) { + var body = iframe.contentWindow.document.body; + var focusable = DOM.select(':input:enabled,*[tabindex=0]', body); + if (evt.target.id === (id + '_left')) { + focusable[focusable.length - 1].focus(); + } else { + focusable[0].focus(); + } + } else { + DOM.get(id + '_ok').focus(); + } + }); + + // Add window + w = t.windows[id] = { + id : id, + mousedown_func : mdf, + click_func : clf, + element : new Element(id, {blocker : 1, container : ed.getContainer()}), + iframeElement : new Element(id + '_ifr'), + features : f, + deltaWidth : dw, + deltaHeight : dh + }; + + w.iframeElement.on('focus', function() { + t.focus(id); + }); + + // Setup blocker + if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') { + DOM.add(DOM.doc.body, 'div', { + id : 'mceModalBlocker', + 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker', + style : {zIndex : t.zIndex - 1} + }); + + DOM.show('mceModalBlocker'); // Reduces flicker in IE + DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true'); + } else + DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1); + + if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel)) + DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); + + DOM.setAttrib(id, 'aria-hidden', 'false'); + t.focus(id); + t._fixIELayout(id, 1); + + // Focus ok button + if (DOM.get(id + '_ok')) + DOM.get(id + '_ok').focus(); + t.count++; + + return w; + }, + + focus : function(id) { + var t = this, w; + + if (w = t.windows[id]) { + w.zIndex = this.zIndex++; + w.element.setStyle('zIndex', w.zIndex); + w.element.update(); + + id = id + '_wrapper'; + DOM.removeClass(t.lastId, 'mceFocus'); + DOM.addClass(id, 'mceFocus'); + t.lastId = id; + + if (w.focussedElement) { + w.focussedElement.focus(); + } else if (DOM.get(id + '_ok')) { + DOM.get(w.id + '_ok').focus(); + } else if (DOM.get(w.id + '_ifr')) { + DOM.get(w.id + '_ifr').focus(); + } + } + }, + + _addAll : function(te, ne) { + var i, n, t = this, dom = tinymce.DOM; + + if (is(ne, 'string')) + te.appendChild(dom.doc.createTextNode(ne)); + else if (ne.length) { + te = te.appendChild(dom.create(ne[0], ne[1])); + + for (i=2; i ix) { + fw = w; + ix = w.zIndex; + } + }); + return fw; + }, + + setTitle : function(w, ti) { + var e; + + w = this._findId(w); + + if (e = DOM.get(w + '_title')) + e.innerHTML = DOM.encode(ti); + }, + + alert : function(txt, cb, s) { + var t = this, w; + + w = t.open({ + title : t, + type : 'alert', + button_func : function(s) { + if (cb) + cb.call(s || t, s); + + t.close(null, w.id); + }, + content : DOM.encode(t.editor.getLang(txt, txt)), + inline : 1, + width : 400, + height : 130 + }); + }, + + confirm : function(txt, cb, s) { + var t = this, w; + + w = t.open({ + title : t, + type : 'confirm', + button_func : function(s) { + if (cb) + cb.call(s || t, s); + + t.close(null, w.id); + }, + content : DOM.encode(t.editor.getLang(txt, txt)), + inline : 1, + width : 400, + height : 130 + }); + }, + + // Internal functions + + _findId : function(w) { + var t = this; + + if (typeof(w) == 'string') + return w; + + each(t.windows, function(wo) { + var ifr = DOM.get(wo.id + '_ifr'); + + if (ifr && w == ifr.contentWindow) { + w = wo.id; + return false; + } + }); + + return w; + }, + + _fixIELayout : function(id, s) { + var w, img; + + if (!tinymce.isIE6) + return; + + // Fixes the bug where hover flickers and does odd things in IE6 + each(['n','s','w','e','nw','ne','sw','se'], function(v) { + var e = DOM.get(id + '_resize_' + v); + + DOM.setStyles(e, { + width : s ? e.clientWidth : '', + height : s ? e.clientHeight : '', + cursor : DOM.getStyle(e, 'cursor', 1) + }); + + DOM.setStyle(id + "_bottom", 'bottom', '-1px'); + + e = 0; + }); + + // Fixes graphics glitch + if (w = this.windows[id]) { + // Fixes rendering bug after resize + w.element.hide(); + w.element.show(); + + // Forced a repaint of the window + //DOM.get(id).style.filter = ''; + + // IE has a bug where images used in CSS won't get loaded + // sometimes when the cache in the browser is disabled + // This fix tries to solve it by loading the images using the image object + each(DOM.select('div,a', id), function(e, i) { + if (e.currentStyle.backgroundImage != 'none') { + img = new Image(); + img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1'); + } + }); + + DOM.get(id).style.filter = ''; + } + } + }); + + // Register plugin + tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups); +})(); + diff --git a/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif new file mode 100644 index 0000000000000000000000000000000000000000..94abd08763fffdaa0dd5c5afb470a97294f2b94d GIT binary patch literal 818 zcmV-21I_$LNk%w1VITk?0OkMyy?1uhZf>Is3*B5?sT&&Hqoc$;Jkrt6&k+&QHa5gV zL)l77I5;@fLqpYMWV+*+oUyj*ia`4%)P|vrSClaB!?EE7K$--(_XZ zOH0lO2-#9n!;Fik78a-!6wR}-yS%#378ch%J=j4(x@2V5*3{b0&C|=t(mFcQDJi8A z60bTsucxKY8XD3{O5bW~+gDfHP*AZbD54S)*gHGL#>A(co5`c08yg$Yzr7_TCCA9d zs-U0MFfhzxW4%d9s-K?K($LSkxy-Sz(7?Xdn3%wSe#oDmxL#e?qN1My0^C(q&nzt3 zjEvWFbJcly)5*uu)6w93eACp@*{!X#QBc56PRYv1%goBm&CA4*kj9vnyFxN00960|JK*lA^8LV00000EC2ui z03ZM$000O7fPaF6goTEOh>41ejE#5-A-Y zDMkRMg$FSdD>XGe76Lo4g8*}CUeivLI}B6rYIE)9Vh306CXDUKb=Dfx`}wT=u<6# zD$n)U&_b6YEgl901IUC4zyf`27&(S$$E;fb{Wx)wm4^u-0H zv*CdXLINn%=tH`+>C>qDxJcmTfS@*Z45S!AI|Ya#EOHOnP2`2|1;88Ju#tey5e=^) w9O1*fx%21Hn;(HtX3!cMK%gku&b_<$??7lEkM$&p`Sa-0r)T3DnWI1eJD_KQDgXcg literal 0 HcmV?d00001 diff --git a/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif new file mode 100644 index 0000000000000000000000000000000000000000..e671094cb0eb210b756117f992cf5ca2caa698fd GIT binary patch literal 280 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 literal 0 HcmV?d00001 diff --git a/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif new file mode 100644 index 0000000000000000000000000000000000000000..c2a2ad454db194e428a7b9da40f62d5376a17428 GIT binary patch literal 769 zcmb7?=`WiB0LI^D)(HC`v6*aD4AW#LGRb0Oi$tH~CP=nb%N%8n zy02ceuewTUUDeW|RaMp*TlLV6R$o=rQOY{@AME+?`}QQiCwU%4Jq)?`{5B8=ECT1T z+wH!7{zji$)-UA>D9({)xO1SJGLHK54Mat(}s4_unMiKjB85EHng*~!Ddt+?(c5uHG4ZI zsc>jP#5Y6w6Wj5!Y=0^oK*&D+R;Yh@ze z7vfi;qFW{owiOfGqcB@XkwUZ0j?Km4{qjE- z6c!Z|O1!?5l~+^}tE#*^aCo0?lZ$rLKBwT;dI+nLO(UEMvb-ad9elEWPw8Xg(t zx$y<#6T+{PQ@$ecjAT|iC%dxnP5yoH$I`OLFU5*drPiz>bidcu^@a^2v}rP3-`?4^ z?Cl>M-Z(n8ot*x$0~Z|;ku35!-qAHSQN*GM3tW8AN#VWJNrHQD+6qXfO_zB^6eFVU zOjzupAb0*`W8} zQVeE5Djt<a0+Owme6r2OGio7DoTWqkhGKj0`0*1-*<$#uL5YH*kC8Z>wpCvYO~asp;G r-~A;>$wp)vkltB=c_?k6Zw*FUgrbAm;sB08O9+}m=}H3OFd*zN8L+JA literal 0 HcmV?d00001 diff --git a/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif new file mode 100644 index 0000000000000000000000000000000000000000..43a735f22c81d6d7d99c1ba9f034f38bfdd1a92b GIT binary patch literal 92 zcmZ?wbhEHb&D4o4FLHO9PR)B literal 0 HcmV?d00001 diff --git a/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css b/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css new file mode 100644 index 000000000..a50d4fc57 --- /dev/null +++ b/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css @@ -0,0 +1,90 @@ +/* Clearlooks 2 */ + +/* Reset */ +.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block} + +/* General */ +.clearlooks2 {position:absolute; direction:ltr} +.clearlooks2 .mceWrapper {position:static} +.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%} +.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)} +.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none} + +/* Top */ +.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px} +.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)} +.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)} +.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0} +.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold} +.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0} +.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px} +.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0} +.clearlooks2 .mceFocus .mceTop span {color:#FFF} + +/* Middle */ +.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0} +.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)} +.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0} +.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF} +.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)} + +/* Bottom */ +.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px} +.clearlooks2 .mceBottom {left:0; bottom:0; width:100%} +.clearlooks2 .mceBottom div {top:0} +.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px} +.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px} +.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0} +.clearlooks2 .mceBottom span {display:none} +.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px} +.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0} +.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px} +.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0} +.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px} + +/* Actions */ +.clearlooks2 a {width:29px; height:16px; top:3px;} +.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0} +.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0} +.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0} +.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0} +.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px} +.clearlooks2 .mceMovable .mceMove {display:block} +.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px} +.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px} +.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px} +.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px} +.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} +.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} +.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px} +.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px} +.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px} + +/* Resize */ +.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px} +.clearlooks2 .mceResizable .mceResize {display:block} +.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none} +.clearlooks2 .mceMinimizable .mceMin {display:block} +.clearlooks2 .mceMaximizable .mceMax {display:block} +.clearlooks2 .mceMaximized .mceMed {display:block} +.clearlooks2 .mceMaximized .mceMax {display:none} +.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize} +.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize} +.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize} +.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;} +.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize} +.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize} +.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize} +.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize} + +/* Alert/Confirm */ +.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0} +.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px} +.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal} +.clearlooks2 a:hover {font-weight:bold;} +.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5} +.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px} +.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)} +.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px} +.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto} +.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)} diff --git a/js/tiny_mce/plugins/inlinepopups/template.htm b/js/tiny_mce/plugins/inlinepopups/template.htm new file mode 100644 index 000000000..f9ec64219 --- /dev/null +++ b/js/tiny_mce/plugins/inlinepopups/template.htm @@ -0,0 +1,387 @@ + + + +Template for dialogs + + + + +
        +
        +
        +
        +
        +
        +
        + Blured +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Focused +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Statusbar +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Statusbar, Resizable +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Resizable, Maximizable +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Blurred, Maximizable, Statusbar, Resizable +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Maximized, Maximizable, Minimizable +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Blured +
        + +
        +
        + Content +
        +
        + +
        +
        +
        +
        + Statusbar text. +
        + + + + + + + + + + + + + + +
        +
        + +
        +
        +
        +
        +
        +
        + Alert +
        + +
        +
        + + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + +
        +
        +
        + +
        +
        +
        +
        +
        + + + Ok + +
        +
        + +
        +
        +
        +
        +
        +
        + Confirm +
        + +
        +
        + + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + This is a very long error message. This is a very long error message. + +
        +
        +
        + +
        +
        +
        +
        +
        + + + Ok + Cancel + +
        +
        +
        + + + diff --git a/js/tiny_mce/plugins/media/css/media.css b/js/tiny_mce/plugins/media/css/media.css new file mode 100644 index 000000000..0c45c7ff6 --- /dev/null +++ b/js/tiny_mce/plugins/media/css/media.css @@ -0,0 +1,17 @@ +#id, #name, #hspace, #vspace, #class_name, #align { width: 100px } +#hspace, #vspace { width: 50px } +#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px } +#flash_base, #flash_flashvars, #html5_altsource1, #html5_altsource2, #html5_poster { width: 240px } +#width, #height { width: 40px } +#src, #media_type { width: 250px } +#class { width: 120px } +#prev { margin: 0; border: 1px solid black; width: 380px; height: 260px; overflow: auto } +.panel_wrapper div.current { height: 420px; overflow: auto } +#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none } +.mceAddSelectValue { background-color: #DDDDDD } +#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px } +#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px } +#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px } +#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px } +#qt_qtsrc { width: 200px } +iframe {border: 1px solid gray} diff --git a/js/tiny_mce/plugins/media/editor_plugin.js b/js/tiny_mce/plugins/media/editor_plugin.js new file mode 100644 index 000000000..66219078c --- /dev/null +++ b/js/tiny_mce/plugins/media/editor_plugin.js @@ -0,0 +1 @@ +(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"]];function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m0){L+=(L?"&":"")+M+"="+escape(N)}});if(L.length){D.params.flashvars=L}I=o.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(I,function(N,M){D.params[M]=""+N})}}D=g.parse(x.attr("data-mce-json"));p=this.getType(x.attr("class"));z=x.attr("data-mce-style");if(!z){z=x.attr("style");if(z){z=o.dom.serializeStyle(o.dom.parseStyle(z,"img"))}}if(p.name==="Iframe"){v=new b("iframe",1);tinymce.each(d,function(i){var G=x.attr(i);if(i=="class"&&G){G=G.replace(/mceItem.+ ?/g,"")}if(G&&G.length>0){v.attr(i,G)}});for(F in D.params){v.attr(F,D.params[F])}v.attr({style:z,src:D.params.src});x.replace(v);return}if(this.editor.settings.media_use_script){v=new b("script",1).attr("type","text/javascript");w=new b("#text",3);w.value="write"+p.name+"("+g.serialize(tinymce.extend(D.params,{width:x.attr("width"),height:x.attr("height")}))+");";v.append(w);x.replace(v);return}if(p.name==="Video"&&D.video.sources[0]){A=new b("video",1).attr(tinymce.extend({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z},D.video.attrs));if(D.video.attrs){l=D.video.attrs.poster}k=D.video.sources=c(D.video.sources);for(y=0;y 0) + flashVarsOutput += (flashVarsOutput ? '&' : '') + name + '=' + escape(value); + }); + + if (flashVarsOutput.length) + data.params.flashvars = flashVarsOutput; + + params = editor.getParam('flash_video_player_params', { + allowfullscreen: true, + allowscriptaccess: true + }); + + tinymce.each(params, function(value, name) { + data.params[name] = "" + value; + }); + } + }; + + data = JSON.parse(node.attr('data-mce-json')); + typeItem = this.getType(node.attr('class')); + + style = node.attr('data-mce-style') + if (!style) { + style = node.attr('style'); + + if (style) + style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img')); + } + + // Handle iframe + if (typeItem.name === 'Iframe') { + replacement = new Node('iframe', 1); + + tinymce.each(rootAttributes, function(name) { + var value = node.attr(name); + + if (name == 'class' && value) + value = value.replace(/mceItem.+ ?/g, ''); + + if (value && value.length > 0) + replacement.attr(name, value); + }); + + for (name in data.params) + replacement.attr(name, data.params[name]); + + replacement.attr({ + style: style, + src: data.params.src + }); + + node.replace(replacement); + + return; + } + + // Handle scripts + if (this.editor.settings.media_use_script) { + replacement = new Node('script', 1).attr('type', 'text/javascript'); + + value = new Node('#text', 3); + value.value = 'write' + typeItem.name + '(' + JSON.serialize(tinymce.extend(data.params, { + width: node.attr('width'), + height: node.attr('height') + })) + ');'; + + replacement.append(value); + node.replace(replacement); + + return; + } + + // Add HTML5 video element + if (typeItem.name === 'Video' && data.video.sources[0]) { + // Create new object element + video = new Node('video', 1).attr(tinymce.extend({ + id : node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style + }, data.video.attrs)); + + // Get poster source and use that for flash fallback + if (data.video.attrs) + posterSrc = data.video.attrs.poster; + + sources = data.video.sources = toArray(data.video.sources); + for (i = 0; i < sources.length; i++) { + if (/\.mp4$/.test(sources[i].src)) + mp4Source = sources[i].src; + } + + if (!sources[0].type) { + video.attr('src', sources[0].src); + sources.splice(0, 1); + } + + for (i = 0; i < sources.length; i++) { + source = new Node('source', 1).attr(sources[i]); + source.shortEnded = true; + video.append(source); + } + + // Create flash fallback for video if we have a mp4 source + if (mp4Source) { + addPlayer(mp4Source, posterSrc); + typeItem = self.getType('flash'); + } else + data.params.src = ''; + } + + // Do we have a params src then we can generate object + if (data.params.src) { + // Is flv movie add player for it + if (/\.flv$/i.test(data.params.src)) + addPlayer(data.params.src, ''); + + if (args && args.force_absolute) + data.params.src = editor.documentBaseURI.toAbsolute(data.params.src); + + // Create new object element + object = new Node('object', 1).attr({ + id : node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style + }); + + tinymce.each(rootAttributes, function(name) { + if (data[name] && name != 'type') + object.attr(name, data[name]); + }); + + // Add params + for (name in data.params) { + param = new Node('param', 1); + param.shortEnded = true; + value = data.params[name]; + + // Windows media needs to use url instead of src for the media URL + if (name === 'src' && typeItem.name === 'WindowsMedia') + name = 'url'; + + param.attr({name: name, value: value}); + object.append(param); + } + + // Setup add type and classid if strict is disabled + if (this.editor.getParam('media_strict', true)) { + object.attr({ + data: data.params.src, + type: typeItem.mimes[0] + }); + } else { + object.attr({ + classid: "clsid:" + typeItem.clsids[0], + codebase: typeItem.codebase + }); + + embed = new Node('embed', 1); + embed.shortEnded = true; + embed.attr({ + id: node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style, + type: typeItem.mimes[0] + }); + + for (name in data.params) + embed.attr(name, data.params[name]); + + tinymce.each(rootAttributes, function(name) { + if (data[name] && name != 'type') + embed.attr(name, data[name]); + }); + + object.append(embed); + } + + // Insert raw HTML + if (data.object_html) { + value = new Node('#text', 3); + value.raw = true; + value.value = data.object_html; + object.append(value); + } + + // Append object to video element if it exists + if (video) + video.append(object); + } + + if (video) { + // Insert raw HTML + if (data.video_html) { + value = new Node('#text', 3); + value.raw = true; + value.value = data.video_html; + video.append(value); + } + } + + if (video || object) + node.replace(video || object); + else + node.remove(); + }, + + /** + * Converts a tinymce.html.Node video/object/embed to an img element. + * + * The video/object/embed will be converted into an image placeholder with a JSON data attribute like this: + * + * + * The JSON structure will be like this: + * {'params':{'flashvars':'something','quality':'high','src':'someurl'}, 'video':{'sources':[{src: 'someurl', type: 'video/mp4'}]}} + */ + objectToImg : function(node) { + var object, embed, video, iframe, img, name, id, width, height, style, i, html, + param, params, source, sources, data, type, lookup = this.lookup, + matches, attrs, urlConverter = this.editor.settings.url_converter, + urlConverterScope = this.editor.settings.url_converter_scope; + + function getInnerHTML(node) { + return new tinymce.html.Serializer({ + inner: true, + validate: false + }).serialize(node); + }; + + // If node isn't in document + if (!node.parent) + return; + + // Handle media scripts + if (node.name === 'script') { + if (node.firstChild) + matches = scriptRegExp.exec(node.firstChild.value); + + if (!matches) + return; + + type = matches[1]; + data = {video : {}, params : JSON.parse(matches[2])}; + width = data.params.width; + height = data.params.height; + } + + // Setup data objects + data = data || { + video : {}, + params : {} + }; + + // Setup new image object + img = new Node('img', 1); + img.attr({ + src : this.editor.theme.url + '/img/trans.gif' + }); + + // Video element + name = node.name; + if (name === 'video') { + video = node; + object = node.getAll('object')[0]; + embed = node.getAll('embed')[0]; + width = video.attr('width'); + height = video.attr('height'); + id = video.attr('id'); + data.video = {attrs : {}, sources : []}; + + // Get all video attributes + attrs = data.video.attrs; + for (name in video.attributes.map) + attrs[name] = video.attributes.map[name]; + + source = node.attr('src'); + if (source) + data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', 'video')}); + + // Get all sources + sources = video.getAll("source"); + for (i = 0; i < sources.length; i++) { + source = sources[i].remove(); + + data.video.sources.push({ + src: urlConverter.call(urlConverterScope, source.attr('src'), 'src', 'source'), + type: source.attr('type'), + media: source.attr('media') + }); + } + + // Convert the poster URL + if (attrs.poster) + attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', 'video'); + } + + // Object element + if (node.name === 'object') { + object = node; + embed = node.getAll('embed')[0]; + } + + // Embed element + if (node.name === 'embed') + embed = node; + + // Iframe element + if (node.name === 'iframe') { + iframe = node; + type = 'Iframe'; + } + + if (object) { + // Get width/height + width = width || object.attr('width'); + height = height || object.attr('height'); + style = style || object.attr('style'); + id = id || object.attr('id'); + + // Get all object params + params = object.getAll("param"); + for (i = 0; i < params.length; i++) { + param = params[i]; + name = param.remove().attr('name'); + + if (!excludedAttrs[name]) + data.params[name] = param.attr('value'); + } + + data.params.src = data.params.src || object.attr('data'); + } + + if (embed) { + // Get width/height + width = width || embed.attr('width'); + height = height || embed.attr('height'); + style = style || embed.attr('style'); + id = id || embed.attr('id'); + + // Get all embed attributes + for (name in embed.attributes.map) { + if (!excludedAttrs[name] && !data.params[name]) + data.params[name] = embed.attributes.map[name]; + } + } + + if (iframe) { + // Get width/height + width = iframe.attr('width'); + height = iframe.attr('height'); + style = style || iframe.attr('style'); + id = iframe.attr('id'); + + tinymce.each(rootAttributes, function(name) { + img.attr(name, iframe.attr(name)); + }); + + // Get all iframe attributes + for (name in iframe.attributes.map) { + if (!excludedAttrs[name] && !data.params[name]) + data.params[name] = iframe.attributes.map[name]; + } + } + + // Use src not movie + if (data.params.movie) { + data.params.src = data.params.src || data.params.movie; + delete data.params.movie; + } + + // Convert the URL to relative/absolute depending on configuration + if (data.params.src) + data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object'); + + if (video) + type = lookup.video.name; + + if (object && !type) + type = (lookup[(object.attr('clsid') || '').toLowerCase()] || lookup[(object.attr('type') || '').toLowerCase()] || {}).name; + + if (embed && !type) + type = (lookup[(embed.attr('type') || '').toLowerCase()] || {}).name; + + // Replace the video/object/embed element with a placeholder image containing the data + node.replace(img); + + // Remove embed + if (embed) + embed.remove(); + + // Serialize the inner HTML of the object element + if (object) { + html = getInnerHTML(object.remove()); + + if (html) + data.object_html = html; + } + + // Serialize the inner HTML of the video element + if (video) { + html = getInnerHTML(video.remove()); + + if (html) + data.video_html = html; + } + + // Set width/height of placeholder + img.attr({ + id : id, + 'class' : 'mceItemMedia mceItem' + (type || 'Flash'), + style : style, + width : width || "320", + height : height || "240", + "data-mce-json" : JSON.serialize(data, "'") + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/js/embed.js b/js/tiny_mce/plugins/media/js/embed.js new file mode 100644 index 000000000..f8dc81052 --- /dev/null +++ b/js/tiny_mce/plugins/media/js/embed.js @@ -0,0 +1,73 @@ +/** + * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. + */ + +function writeFlash(p) { + writeEmbed( + 'D27CDB6E-AE6D-11cf-96B8-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'application/x-shockwave-flash', + p + ); +} + +function writeShockWave(p) { + writeEmbed( + '166B1BCA-3F9C-11CF-8075-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', + 'application/x-director', + p + ); +} + +function writeQuickTime(p) { + writeEmbed( + '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', + 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', + 'video/quicktime', + p + ); +} + +function writeRealMedia(p) { + writeEmbed( + 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'audio/x-pn-realaudio-plugin', + p + ); +} + +function writeWindowsMedia(p) { + p.url = p.src; + writeEmbed( + '6BF52A52-394A-11D3-B153-00C04F79FAA6', + 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', + 'application/x-mplayer2', + p + ); +} + +function writeEmbed(cls, cb, mt, p) { + var h = '', n; + + h += ''; + + h += ''); + + function get(id) { + return document.getElementById(id); + } + + function getVal(id) { + var elm = get(id); + + if (elm.nodeName == "SELECT") + return elm.options[elm.selectedIndex].value; + + if (elm.type == "checkbox") + return elm.checked; + + return elm.value; + } + + function setVal(id, value) { + if (typeof(value) != 'undefined') { + var elm = get(id); + + if (elm.nodeName == "SELECT") + selectByValue(document.forms[0], id, value); + else if (elm.type == "checkbox") { + if (typeof(value) == 'string') + elm.checked = value.toLowerCase() === 'true' ? true : false; + else + elm.checked = !!value; + } else + elm.value = value; + } + } + + window.Media = { + init : function() { + var html, editor; + + this.editor = editor = tinyMCEPopup.editor; + + // Setup file browsers and color pickers + get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); + get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media'); + get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('filebrowser_altsource1','video_altsource1','media','media'); + get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('filebrowser_altsource2','video_altsource2','media','media'); + get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image'); + + html = this.getMediaListHTML('medialist', 'src', 'media', 'media'); + if (html == "") + get("linklistrow").style.display = 'none'; + else + get("linklistcontainer").innerHTML = html; + + if (isVisible('filebrowser')) + get('src').style.width = '230px'; + + if (isVisible('filebrowser_altsource1')) + get('video_altsource1').style.width = '220px'; + + if (isVisible('filebrowser_altsource2')) + get('video_altsource2').style.width = '220px'; + + if (isVisible('filebrowser_poster')) + get('video_poster').style.width = '220px'; + + this.data = tinyMCEPopup.getWindowArg('data'); + this.dataToForm(); + this.preview(); + }, + + insert : function() { + var editor = tinyMCEPopup.editor; + + this.formToData(); + editor.execCommand('mceRepaint'); + tinyMCEPopup.restoreSelection(); + editor.selection.setNode(editor.plugins.media.dataToImg(this.data)); + tinyMCEPopup.close(); + }, + + preview : function() { + get('prev').innerHTML = this.editor.plugins.media.dataToHtml(this.data, true); + }, + + moveStates : function(to_form, field) { + var data = this.data, editor = this.editor, data = this.data, + mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src; + + defaultStates = { + // QuickTime + quicktime_autoplay : true, + quicktime_controller : true, + + // Flash + flash_play : true, + flash_loop : true, + flash_menu : true, + + // WindowsMedia + windowsmedia_autostart : true, + windowsmedia_enablecontextmenu : true, + windowsmedia_invokeurls : true, + + // RealMedia + realmedia_autogotourl : true, + realmedia_imagestatus : true + }; + + function parseQueryParams(str) { + var out = {}; + + if (str) { + tinymce.each(str.split('&'), function(item) { + var parts = item.split('='); + + out[unescape(parts[0])] = unescape(parts[1]); + }); + } + + return out; + }; + + function setOptions(type, names) { + var i, name, formItemName, value, list; + + if (type == data.type || type == 'global') { + names = tinymce.explode(names); + for (i = 0; i < names.length; i++) { + name = names[i]; + formItemName = type == 'global' ? name : type + '_' + name; + + if (type == 'global') + list = data; + else if (type == 'video') { + list = data.video.attrs; + + if (!list && !to_form) + data.video.attrs = list = {}; + } else + list = data.params; + + if (list) { + if (to_form) { + setVal(formItemName, list[name]); + } else { + delete list[name]; + + value = getVal(formItemName); + if (type == 'video' && value === true) + value = name; + + if (defaultStates[formItemName]) { + if (value !== defaultStates[formItemName]) { + value = "" + value; + list[name] = value; + } + } else if (value) { + value = "" + value; + list[name] = value; + } + } + } + } + } + } + + if (!to_form) { + data.type = get('media_type').options[get('media_type').selectedIndex].value; + data.width = getVal('width'); + data.height = getVal('height'); + + // Switch type based on extension + src = getVal('src'); + if (field == 'src') { + ext = src.replace(/^.*\.([^.]+)$/, '$1'); + if (typeInfo = mediaPlugin.getType(ext)) + data.type = typeInfo.name.toLowerCase(); + + setVal('media_type', data.type); + } + + if (data.type == "video") { + if (!data.video.sources) + data.video.sources = []; + + data.video.sources[0] = {src: getVal('src')}; + } + } + + // Hide all fieldsets and show the one active + get('video_options').style.display = 'none'; + get('flash_options').style.display = 'none'; + get('quicktime_options').style.display = 'none'; + get('shockwave_options').style.display = 'none'; + get('windowsmedia_options').style.display = 'none'; + get('realmedia_options').style.display = 'none'; + + if (get(data.type + '_options')) + get(data.type + '_options').style.display = 'block'; + + setVal('media_type', data.type); + + setOptions('flash', 'play,loop,menu,swliveconnect,quality,scale,salign,wmode,base,flashvars'); + setOptions('quicktime', 'loop,autoplay,cache,controller,correction,enablejavascript,kioskmode,autohref,playeveryframe,targetcache,scale,starttime,endtime,target,qtsrcchokespeed,volume,qtsrc'); + setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign'); + setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume'); + setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks'); + setOptions('video', 'poster,autoplay,loop,preload,controls'); + setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height'); + + if (to_form) { + if (data.type == 'video') { + if (data.video.sources[0]) + setVal('src', data.video.sources[0].src); + + src = data.video.sources[1]; + if (src) + setVal('video_altsource1', src.src); + + src = data.video.sources[2]; + if (src) + setVal('video_altsource2', src.src); + } else { + // Check flash vars + if (data.type == 'flash') { + tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) { + if (value == '$url') + data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src; + }); + } + + setVal('src', data.params.src); + } + } else { + src = getVal("src"); + + // YouTube + if (src.match(/youtube.com(.+)v=([^&]+)/)) { + data.width = 425; + data.height = 350; + data.params.frameborder = '0'; + data.type = 'iframe'; + src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1]; + setVal('src', src); + setVal('media_type', data.type); + } + + // Google video + if (src.match(/video.google.com(.+)docid=([^&]+)/)) { + data.width = 425; + data.height = 326; + data.type = 'flash'; + src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en'; + setVal('src', src); + setVal('media_type', data.type); + } + + if (data.type == 'video') { + if (!data.video.sources) + data.video.sources = []; + + data.video.sources[0] = {src : src}; + + src = getVal("video_altsource1"); + if (src) + data.video.sources[1] = {src : src}; + + src = getVal("video_altsource2"); + if (src) + data.video.sources[2] = {src : src}; + } else + data.params.src = src; + + // Set default size + setVal('width', data.width || 320); + setVal('height', data.height || 240); + } + }, + + dataToForm : function() { + this.moveStates(true); + }, + + formToData : function(field) { + if (field == "width" || field == "height") + this.changeSize(field); + + if (field == 'source') { + this.moveStates(false, field); + setVal('source', this.editor.plugins.media.dataToHtml(this.data)); + this.panel = 'source'; + } else { + if (this.panel == 'source') { + this.data = this.editor.plugins.media.htmlToData(getVal('source')); + this.dataToForm(); + this.panel = ''; + } + + this.moveStates(false, field); + this.preview(); + } + }, + + beforeResize : function() { + this.width = parseInt(getVal('width') || "320", 10); + this.height = parseInt(getVal('height') || "240", 10); + }, + + changeSize : function(type) { + var width, height, scale, size; + + if (get('constrain').checked) { + width = parseInt(getVal('width') || "320", 10); + height = parseInt(getVal('height') || "240", 10); + + if (type == 'width') { + this.height = Math.round((width / this.width) * height); + setVal('height', this.height); + } else { + this.width = Math.round((height / this.height) * width); + setVal('width', this.width); + } + } + }, + + getMediaListHTML : function() { + if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; + } + }; + + tinyMCEPopup.requireLangPack(); + tinyMCEPopup.onInit.add(function() { + Media.init(); + }); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ar_dlg.js b/js/tiny_mce/plugins/media/langs/ar_dlg.js new file mode 100755 index 000000000..7249ba54b --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ar_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ar.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"\u0639\u0627\u0645",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"\u064a\u0633\u0627\u0631",align_bottom:"\u0627\u0633\u0641\u0644",align_right:"\u064a\u0645\u064a\u0646",align_top:"\u0627\u0644\u0627\u0639\u0644\u0649",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/az_dlg.js b/js/tiny_mce/plugins/media/langs/az_dlg.js new file mode 100755 index 000000000..64e11576a --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/az_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('az.media_dlg',{list:"Siyah\u0131",file:"Fayl/\u00fcnvan",advanced:"\u018flav\u0259l\u0259r",general:"\u00dcmumi",title:"Mediya-obyekti \u0259lav\u0259/redakt\u0259 et",align_top_left:"\u00dcst sol",align_center:"M\u0259tk\u0259z",align_left:"Sol",align_bottom:"Alt",align_right:"Sa\u011f",align_top:"\u00dcst",qt_stream_warn:"Haz\u0131rki ax\u0131lan rtsp m\u0259nb\u0259l\u0259ri QT Src sah\u0259sin\u0259 \u0259lav\u0259 edilm\u0259lidir.\\nSiz h\u0259m\u00e7inin Src sah\u0259sin\u0259 qeyri-ax\u0131lan versiyan\u0131 da \u0259lav\u0259 etm\u0259lisiniz..",qtsrc:"QT Src",progress:"\u0130l\u0259rl\u0259yi\u015f",sound:"S\u0259s",swstretchvalign:"Uzat D-D\u00fczl\u0259ndir",swstretchhalign:"Uzat Y-D\u00fczl\u0259ndir",swstretchstyle:"Uzatma stili",scriptcallbacks:"Skript \u00e7a\u011f\u0131r\u0131mlar\u0131",align_top_right:"\u00dcst sa\u011f",uimode:"UI \u00dcsulu",rate:"Norma",playcount:"Oynatma say\u0131",defaultframe:"Susmaya g\u00f6r\u0259 \u00e7\u0259r\u00e7iv\u0259",currentposition:"Haz\u0131rki m\u00f6vqe",currentmarker:"Haz\u0131rki marker",captioningid:"Ba\u015fl\u0131qland\u0131rma id",baseurl:"Baza URL",balance:"Balans",windowlessvideo:"P\u0259nc\u0259r\u0259siz vide",stretchtofit:"S\u0131\u011facaq q\u0259d\u0259r \u00f6l\u00e7\u00fcl\u0259ndir",mute:"S\u0259ssiz",invokeurls:"\u00c7a\u011f\u0131r\u0131lacaq URL \u00fcnvanlar",fullscreen:"Tam ekran",enabled:"Yan\u0131l\u0131b",autostart:"Avtomatik ba\u015flat",volume:"S\u0259s",target:"H\u0259d\u0259f",qtsrcchokespeed:"Drossel s\u00fcr\u0259ti",href:"Href",endtime:"Bit\u0259c\u0259k zaman",starttime:"Ba\u015flan\u011f\u0131c zaman",enablejavascript:"JavaScript-i yand\u0131r",correction:"D\u0259yi\u015fiklik yoxdur",targetcache:"H\u0259d\u0259f ke\u015f",playeveryframe:"H\u0259r \u00e7\u0259r\u00e7iv\u0259ni oynat",kioskmode:"Kiosk \u00fcsulu",controller:"\u0130dar\u0259\u00e7i",menu:"Menyunu g\u00f6st\u0259r",loop:"\u0130lm\u0259k",play:"Avtomatik oynat",hspace:"\u00dcf\u00fcqi f\u0259za",vspace:"\u015eaquli f\u0259za",class_name:"Sinif",name:"Ad\u0131",id:"\u0130dentifikator",type:"N\u00f6v",size:"\u00d6\u00e7\u00fcl\u0259ri",preview:"\u0130lkin bax\u0131\u015f",constrain_proportions:"Proporsiyalar\u0131 saxla",controls:"Kontroller",numloop:"R\u0259q\u0259mli ilm\u0259l\u0259r",console:"Konsol",cache:"Ke\u015f",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"T\u0259m\u0259l",bgcolor:"Fon",wmode:"WMode",salign:"SAlign",align:"Tarazla\u015fmaq",scale:"Miqyas",quality:"Keyfiyy\u0259t",shuffle:"Qar\u0131\u015fd\u0131r",prefetch:"\u00d6n-g\u0259tirm\u0259",nojava:"Java yox",maintainaspect:"Aspekti qoru",imagestatus:"\u015e\u0259kil statusu",center:"M\u0259rk\u0259z",autogotourl:"Avtomatik gedil\u0259c\u0259k URL",shockwave_options:"Shockwave nizamlamalar\u0131",rmp_options:"Real media player nizamlamalar\u0131",wmp_options:"Windows media player nizamlamalar\u0131",qt_options:"Quicktime nizamlamalar\u0131",flash_options:"Flash nizamlamalar\u0131",hidden:"Gizli",align_bottom_left:"A\u015fa\u011f\u0131 sol",align_bottom_right:"A\u015fa\u011f\u0131 sa\u011f",flv_options:"Fla\u015f video nizamlamalar\u0131",flv_scalemode:"Miqyas \u00fcsulu",flv_buffer:"Bufer",flv_startimage:"Ba\u015flan\u011f\u0131c \u015f\u0259kil",flv_starttime:"Ba\u015flan\u011f\u0131c zaman",flv_defaultvolume:"Susmaya g\u00f6r\u0259 s\u0259s",flv_hiddengui:"Gizli GUI",flv_autostart:"Avtomatik ba\u015flat",flv_loop:"\u0130lm\u0259",flv_showscalemodes:"\u00d6l\u00e7\u0259k rejiml\u0259ri g\u00f6st\u0259r",flv_smoothvideo:"Videonu yum\u015falt",flv_jscallback:"JS \u00c7a\u011f\u0131r\u0131mlar\u0131"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/be_dlg.js b/js/tiny_mce/plugins/media/langs/be_dlg.js new file mode 100755 index 000000000..2f2ed6c7d --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/be_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('be.media_dlg',{list:"\u0421\u043f\u0456\u0441",file:"\u0424\u0430\u0439\u043b/\u0430\u0434\u0440\u0430\u0441",advanced:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f",general:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f",title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043c\u0435\u0434\u044b\u044f-\u0430\u0431\'\u0435\u043a\u0442",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u0410\u0434\u043b\u044e\u0441\u0442\u0440\u0430\u0432\u0430\u0446\u044c \u043c\u0435\u043d\u044e",loop:"\u0417\u0430\u0446\u044b\u043a\u043b\u0456\u0446\u044c",play:"\u041f\u0440\u0430\u0439\u0433\u0440\u0430\u0432\u0430\u0446\u044c \u0430\u045e\u0442\u0430\u043c\u0430\u0442\u044b\u0447\u043d\u0430",hspace:"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",vspace:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",class_name:"\u041a\u043b\u0430\u0441",name:"\u041d\u0430\u0437\u043e\u045e",id:"\u0406\u0434\u044d\u043d\u0442\u044b\u0444\u0456\u043a\u0430\u0442\u0430\u0440",type:"\u0422\u044b\u043f",size:"\u041f\u0430\u043c\u0435\u0440\u044b",preview:"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 \u043f\u0440\u0430\u0433\u043b\u044f\u0434",constrain_proportions:"\u0417\u0430\u0445\u043e\u045e\u0432\u0430\u0446\u044c \u043f\u0440\u0430\u043f\u043e\u0440\u0446\u044b\u0456",controls:"Controls",numloop:"Num loops",console:"Console",cache:"\u041a\u044d\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u0410\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",scale:"\u041c\u0430\u0448\u0442\u0430\u0431",quality:"\u042f\u043a\u0430\u0441\u0446\u044c",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"\u0421\u043a\u0440\u044b\u0442\u043e\u0435",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/bg_dlg.js b/js/tiny_mce/plugins/media/langs/bg_dlg.js new file mode 100755 index 000000000..ef620292f --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/bg_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bg.media_dlg',{list:"\u0421\u043f\u0438\u0441\u044a\u043a",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",general:"\u041e\u0431\u0449\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0430",align_top_left:"\u0413\u043e\u0440\u0435 \u043b\u044f\u0432\u043e",align_center:"\u0426\u0435\u043d\u0442\u044a\u0440",align_left:"\u041b\u044f\u0432\u043e",align_bottom:"\u0414\u043e\u043b\u0443",align_right:"\u0414\u044f\u0441\u043d\u043e",align_top:"\u0413\u043e\u0440\u0435",qt_stream_warn:"\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0442\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442 \u0432 QT Src \u043f\u043e\u043b\u0435\u0442\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438.\\n\u0422\u0440\u044f\u0431\u0432\u0430 \u0441\u044a\u0449\u043e \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435 \u043f\u043e\u0442\u043e\u0447\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0432 Src \u043f\u043e\u043b\u0435\u0442\u043e..",qtsrc:"QT Src",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 V-Align",swstretchhalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 H-Align",swstretchstyle:"\u0421\u0442\u0438\u043b \u043d\u0430 \u0440\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435",scriptcallbacks:"Script callbacks",align_top_right:"\u0413\u043e\u0440\u0435 \u0434\u044f\u0441\u043d\u043e",uimode:"UI \u0440\u0435\u0436\u0438\u043c",rate:"\u0411\u044a\u0440\u0437\u0438\u043d\u0430",playcount:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",defaultframe:"\u041d\u0430\u0447\u0430\u043b\u0435\u043d \u043a\u0430\u0434\u044a\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"Captioning id",baseurl:"\u0411\u0430\u0437\u043e\u0432\u043e URL",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u0412\u0438\u0434\u0435\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",stretchtofit:"\u0420\u0430\u0437\u043f\u044a\u043d\u0438",mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0438",invokeurls:"Invoke URLs",fullscreen:"\u0426\u044f\u043b \u0435\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d",autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",volume:"\u0421\u0438\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0430",target:"\u0426\u0435\u043b",qtsrcchokespeed:"\u041f\u0440\u0435\u0434\u0435\u043b\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442",href:"Href",endtime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u043a\u0440\u0430\u0439",starttime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0438",targetcache:"\u0426\u0435\u043b\u0435\u0432\u0438 \u043a\u0435\u0448",playeveryframe:"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0432\u0441\u0435\u043a\u0438 \u043a\u0430\u0434\u044a\u0440",kioskmode:"Kiosk \u0440\u0435\u0436\u0438\u043c",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u0439",play:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435",hspace:"H-Space",vspace:"V-Space",class_name:"\u041a\u043b\u0430\u0441",name:"\u0418\u043c\u0435",id:"Id",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",constrain_proportions:"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",console:"\u041a\u043e\u043d\u0437\u043e\u043b\u0430",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u041e\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",scale:"\u041f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u0438",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0420\u0430\u0437\u0431\u044a\u0440\u043a\u0430\u0439",prefetch:"\u0421\u0432\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e",nojava:"\u0411\u0435\u0437 JAVA",maintainaspect:"\u041f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0439 \u0441\u044a\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u0442\u043e",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",center:"\u0426\u0435\u043d\u0442\u044a\u0440",autogotourl:"\u041e\u0442\u0438\u0434\u0438 \u043d\u0430 URL",shockwave_options:"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Shockwave",rmp_options:"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Real media player",wmp_options:"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Windows media player",qt_options:"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Quicktime",flash_options:"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Flash",hidden:"\u0421\u043a\u0440\u0438\u0442",align_bottom_left:"\u0414\u043e\u043b\u0443 \u043b\u044f\u0432\u043e",align_bottom_right:"\u0414\u043e\u043b\u0443 \u0434\u044f\u0441\u043d\u043e",flv_options:"\u0412\u0438\u0434\u0435\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 Flash",flv_scalemode:"\u0420\u0435\u0436\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435",flv_buffer:"\u0411\u0443\u0444\u0435\u0440",flv_startimage:"\u041d\u0430\u0447\u0430\u043b\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",flv_starttime:"\u041d\u0430\u0447\u0430\u043b\u043d\u043e \u0432\u0440\u0435\u043c\u0435",flv_defaultvolume:"\u0421\u0438\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0430 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",flv_hiddengui:"\u0421\u043a\u0440\u0438\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",flv_autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u043d \u0441\u0442\u0430\u0440\u0442",flv_loop:"\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u0439",flv_showscalemodes:"\u041f\u043e\u043a\u0430\u0436\u0438 \u0440\u0435\u0436\u0438\u043c\u0438\u0442\u0435 \u043d\u0430 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435",flv_smoothvideo:"\u0413\u043b\u0430\u0434\u043a\u043e \u0432\u0438\u0434\u0435\u043e",flv_jscallback:"JS \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/bn_dlg.js b/js/tiny_mce/plugins/media/langs/bn_dlg.js new file mode 100755 index 000000000..9c4bdd847 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/bn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bn.media_dlg',{list:"\u09b2\u09bf\u09b8\u09cd\u099f",file:"\u09ab\u09be\u0987\u09b2/\u0987\u0989 \u0986\u09b0 \u098f\u09b2",advanced:"\u098f\u09a1\u09ad\u09be\u09a8\u09cd\u09b8\u09a1",general:"\u099c\u09c7\u09a8\u09be\u09b0\u09c7\u09b2",title:"\u0987\u09a8\u09b8\u09be\u09b0\u09cd\u099f/ \u098f\u09ae\u09ac\u09c7\u09a1\u09c7\u09a1 \u09ae\u09bf\u09a1\u09bf\u09df\u09be \u098f\u09a1\u09bf\u099f \u0995\u09b0\u09be","align_top_left":"\u0989\u09aa\u09b0\u09c7\u09b0 \u09ac\u09be\u09ae \u0995\u09cb\u09a8\u09c7","align_center":"\u09ae\u09be\u099d\u0996\u09be\u09a8\u09c7","align_left":"\u09ac\u09be\u09ae\u09c7","align_bottom":"\u09a8\u09bf\u099a\u09c7","align_right":"\u09a1\u09be\u09a8\u09c7","align_top":"\u0989\u09aa\u09b0\u09c7","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","flv_options":"Flash video options","flv_scalemode":"Scale mode","flv_buffer":"Buffer","flv_startimage":"Start image","flv_starttime":"Start time","flv_defaultvolume":"Default volumne","flv_hiddengui":"Hidden GUI","flv_autostart":"Auto start","flv_loop":"Loop","flv_showscalemodes":"Show scale modes","flv_smoothvideo":"Smooth video","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/br_dlg.js b/js/tiny_mce/plugins/media/langs/br_dlg.js new file mode 100755 index 000000000..437a7d770 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/br_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('br.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avan\u00e7ado",general:"Geral",title:"Inserir/Editar m\u00eddia incorporada",align_top_left:"Topo \u00e0\u00a0 esquerda",align_center:"Centro",align_left:"Esquerda",align_bottom:"Abaixo",align_right:"Direita",align_top:"Topo",qt_stream_warn:"Fluxos de recursos rtsp devem ser acrescentados ao campo QT Src no Modo Avan\u00e7ado.\\NUma vers\u00e3o sem fluxo tamb\u00e9m deve ser acrescentada ao campo Src.",qtsrc:"QT Src",progress:"Progresso",sound:"Som",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"callbacks de script",align_top_right:"Topo \u00e0\u00a0 direita",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Frame padr\u00e3o",currentposition:"Posi\u00e7\u00e3o actual",currentmarker:"Marcador actual",captioningid:"Id de legenda",baseurl:"Base URL",balance:"Stereo",windowlessvideo:"V\u00eddeo sem janela",stretchtofit:"Estender",mute:"Mudo",invokeurls:"Invocar URLs",fullscreen:"Ecr\u00e3 inteiro",enabled:"Activado",autostart:"Execu\u00e7\u00e3o autom\u00e1tica",volume:"Volume",target:"Alvo",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Hora do fim",starttime:"Hora de in\u00edcio",enablejavascript:"Disponibilizar javaScript",correction:"Sem correc\u00e7\u00f5es",targetcache:"Cache alvo",playeveryframe:"Executar todas as frames",kioskmode:"Modo Quiosque",controller:"Controlador",menu:"Mostrar menu",loop:"Repeti\u00e7\u00e3o autom\u00e1tica",play:"Execu\u00e7\u00e3o autom\u00e1tica",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",class_name:"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimens\u00f5es",preview:"Previs\u00e3o",constrain_proportions:"Manter propor\u00e7\u00f5es",controls:"Controles",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fundo",wmode:"WMode",salign:"SAlign",align:"Alinhamento",scale:"Escala",quality:"Qualidade",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Centro",autogotourl:"Auto goto URL",shockwave_options:"Op\u00e7\u00f5es Shockwave",rmp_options:"Op\u00e7\u00f5es Real Media Player",wmp_options:"Op\u00e7\u00f5es Windows Media Player",qt_options:"Op\u00e7\u00f5es Quicktime",flash_options:"Op\u00e7\u00f5es Flash",hidden:"Oculto",align_bottom_left:"Abaixo \u00e0\u00a0 esquerda",align_bottom_right:"Abaixo \u00e0\u00a0 direita",flv_options:"Op\u00e7\u00f5es de Flash video",flv_scalemode:"Modo escala",flv_buffer:"Buffer",flv_startimage:"Imagem inicial",flv_starttime:"Hora inicial",flv_defaultvolume:"Volume padr\u00e3o",flv_hiddengui:"GUI oculta",flv_autostart:"Execu\u00e7\u00e3o Autom\u00e1tica",flv_loop:"Loop",flv_showscalemodes:"Mostrar modos escala",flv_smoothvideo:"Smooth video",flv_jscallback:"JS callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/bs_dlg.js b/js/tiny_mce/plugins/media/langs/bs_dlg.js new file mode 100755 index 000000000..36435b4b5 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/bs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bs.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ca_dlg.js b/js/tiny_mce/plugins/media/langs/ca_dlg.js new file mode 100755 index 000000000..d10ef41d6 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ca_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ca.media_dlg',{list:"Llista",file:"Fitxer/URL",advanced:"Avan\u00e7at",general:"General",title:"Insereix / edita multim\u00e8dia incrustada","align_top_left":"Superior esquerra","align_center":"Centre","align_left":"Esquerra","align_bottom":"Inferior","align_right":"Dreta","align_top":"Superior","qt_stream_warn":"Els recursos rtsp fets flux s\'haurien d\'afegir al camp QT Src sota la pestanya avan\u00e7ada.\\nTamb\u00e9 haur\u00edeu d\'afegir una versi\u00f3 no feta flux al camp Src..",qtsrc:"QT Src",progress:"Progr\u00e9s",sound:"S\u00f2",swstretchvalign:"Alineaci\u00f3 vertical de l\'extensor",swstretchhalign:"Alineaci\u00f3 horitzontal de l\'extensor",swstretchstyle:"Estil de l\'extensor",scriptcallbacks:"Crides de retorn a script","align_top_right":"Superior dreta",uimode:"Mode UI",rate:"Velocitat",playcount:"Compte de reproducci\u00f3",defaultframe:"Marc per defecte",currentposition:"Posici\u00f3 actual",currentmarker:"Retolador actual",captioningid:"Id nominal",baseurl:"URL base",balance:"Equilibri",windowlessvideo:"V\u00eddeo sense finestra",stretchtofit:"Estirar fins a encaixar",mute:"Silenci",invokeurls:"Invoca els URL",fullscreen:"Pantalla completa",enabled:"Habilitat",autostart:"Inici autom\u00e0tic",volume:"Volumen",target:"Dest\u00ed",qtsrcchokespeed:"Velocitat",href:"Href",endtime:"Fi",starttime:"Inici",enablejavascript:"Habilita el javascript",correction:"Sense correcci\u00f3",targetcache:"Target cache",playeveryframe:"Reprodueix cada marc",kioskmode:"Mode quiosc",controller:"Controlador",menu:"Mostra el men\u00fa",loop:"Bucle",play:"Reproducci\u00f3 autom\u00e0tica",hspace:"Espai horitzontal",vspace:"Espai vertical","class_name":"Classe",name:"Nom",id:"Id",type:"Tipus",size:"Dimensions",preview:"Previsualitzaci\u00f3","constrain_proportions":"Mant\u00e9 les proporcions",controls:"Controls",numloop:"Nre. bucles",console:"Consola",cache:"Mem\u00f2ria cau",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fons",wmode:"Mode W",salign:"Alinea S",align:"Alinea",scale:"Escala",quality:"Qualitat",shuffle:"Shuffle",prefetch:"Prec\u00e0rrega",nojava:"Sense java",maintainaspect:"Mant\u00e9 l\'aspecte",imagestatus:"Estat de la imatge",center:"Alinea al centre",autogotourl:"URL goto autom\u00e0tic","shockwave_options":"Opcions del Shockwave","rmp_options":"Opcions del Real media player","wmp_options":"Opcions del Windows media player","qt_options":"Opcions del Quicktime","flash_options":"Opcions del Flash",hidden:"Ocult","align_bottom_left":"Inferior esquerra","align_bottom_right":"Inferior dreta","flv_options":"Opcions de v\u00eddeo Flash","flv_scalemode":"Mode d\'escalat","flv_buffer":"Mem\u00f2ria interm\u00e8dia","flv_startimage":"Imatge d\'inici","flv_starttime":"Hora d\'inici","flv_defaultvolume":"Volumen per defecte","flv_hiddengui":"GUI ocult","flv_autostart":"Inici autom\u00e0tic","flv_loop":"Bucle","flv_showscalemodes":"Mostra els modes d\'escalat","flv_smoothvideo":"V\u00eddeo suau","flv_jscallback":"Crida de retorn JS","html5_video_options":"Opcions de v\u00eddeo HTML5",altsource1:"Font alternatiu 1",altsource2:"Font alternatiu 2",preload:"Pre-c\u00e0rrega",poster:"Anunci",source:"Font"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ch_dlg.js b/js/tiny_mce/plugins/media/langs/ch_dlg.js new file mode 100755 index 000000000..b5baf9e1b --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ch_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ch.media_dlg',{list:"\u5217\u8868",file:"\u5a92\u4f53URL",advanced:"\u9ad8\u7ea7",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7f16\u8f91\u5a92\u4f53",align_top_left:"\u5de6\u4e0a",align_center:"\u7f6e\u4e2d",align_left:"\u9760\u5de6",align_bottom:"\u9760\u4e0b",align_right:"\u9760\u53f3",align_top:"\u9760\u4e0a",qt_stream_warn:"\u4e32\u6d41\u5a92\u4f53rtsp\u8d44\u6e90\u5e94\u8be5\u52a0\u5230\u300c\u9ad8\u7ea7\u300d\u4e2dQT src. \\n\u540c\u65f6\u589e\u52a0\u975e\u4e32\u6d41\u5a92\u4f53\u8d44\u6e90\u5230src.",qtsrc:"QT Src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u7f29\u653e\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u7f29\u653e\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u7f29\u653e\u6837\u5f0f",scriptcallbacks:"Script \u553f\u53eb",align_top_right:"\u53f3\u4e0a",uimode:"\u9762\u677f\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9884\u8bbe\u753b\u9762",currentposition:"\u76ee\u524d\u4f4d\u7f6e",currentmarker:"\u76ee\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55\u7f16\u53f7",baseurl:"\u57fa\u5e95 URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u89c6\u7a97\u64ad\u653e",stretchtofit:"\u7f29\u653e\u81f3\u6700\u4f73\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528\u7684 URLs",fullscreen:"\u5168\u8424\u5e55",enabled:"\u53ef\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u963b\u585e\u901f\u5ea6",href:"\u8d85\u8fde\u7ed3",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u683c\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u9009\u9879",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",class_name:"\u7c7b\u522b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5927\u5c0f",preview:"\u9884\u89c8",constrain_proportions:"\u7ea6\u675f\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash \u53d8\u91cf",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u89c6\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8f7d",nojava:"No Java",maintainaspect:"\u9501\u5b9a\u6bd4\u4f8b",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u7f6e\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u81f3 URL",shockwave_options:"Shockwave \u9009\u9879",rmp_options:"Real Media Player \u9009\u9879",wmp_options:"Windows Media Player \u9009\u9879",qt_options:"Quick Time \u9009\u9879",flash_options:"Flash \u9009\u9879",hidden:"\u9690\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u5f71\u7247\u9009\u9879",flv_scalemode:"\u7f29\u653e\u6a21\u5f0f",flv_buffer:"\u7f13\u51b2\u533a",flv_startimage:"\u5f00\u59cb\u753b\u9762",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9884\u8bbe\u97f3\u91cf",flv_hiddengui:"\u9690\u85cf GUI",flv_autostart:"\u81ea\u52a8\u64ad\u653e",flv_loop:"\u5faa\u73af",flv_showscalemodes:"\u663e\u793a\u7f29\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u64ad\u653e",flv_jscallback:"Script \u553f\u53eb"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/cn_dlg.js b/js/tiny_mce/plugins/media/langs/cn_dlg.js new file mode 100755 index 000000000..4432e2e5a --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cn.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6\u4f4d\u7f6e/URL",advanced:"\u9ad8\u7ea7",general:"\u5e38\u89c4",title:"\u63d2\u5165/\u7f16\u8f91\u5d4c\u5165\u5f0f\u5a92\u4f53","align_top_left":"\u5de6\u4e0a","align_center":"\u5c45\u4e2d","align_left":"\u5c45\u5de6","align_bottom":"\u5c45\u4e0b","align_right":"\u5c45\u53f3","align_top":"\u5c45\u4e0a","qt_stream_warn":"\u6d41\u5a92\u4f53\u7684RTSP\u8d44\u6e90\u5e94\u6dfb\u52a0\u5230\u5728\u9ad8\u7ea7\u9009\u9879\u5361\u7684Qt src\u5b57\u6bb5\u3002\\ n\u60a8\u4e5f\u53ef\u4ee5\u6dfb\u52a0\u975e\u6d41\u5a92\u4f53\u7248\u672c\u7684",qtsrc:"QuickTime\u6e90\u6587\u4ef6",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u7f29\u653e\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u7f29\u653e\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u7f29\u653e\u6837\u5f0f",scriptcallbacks:"\u811a\u672c\u8fd4\u56de","align_top_right":"\u53f3\u4e0a",uimode:"\u9762\u677f\u6a21\u5f0f",rate:"\u6bd4\u7279\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9884\u8bbe\u753b\u9762",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bc6",captioningid:"\u5b57\u5e55\u6807\u8bc6",baseurl:"\u57fa\u672cURL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u89c6\u7a97\u64ad\u653e",stretchtofit:"\u7f29\u653e\u81f3\u6700\u4f73\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528\u7684 URLs",fullscreen:"\u5168\u5c4f",enabled:"\u53ef\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u963b\u585e\u901f\u5ea6",href:"\u8d85\u94fe\u63a5",endtime:"\u5f00\u59cb\u65f6\u95f4",starttime:"\u7ed3\u675f\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u5e27\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u5668",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd","class_name":"\u7c7b\u522b",name:"\u540d\u79f0",id:"Id\u7f16\u53f7",type:"\u5a92\u4f53\u7c7b\u578b",size:"\u5c3a\u5bf8",preview:"\u9884\u89c8","constrain_proportions":"\u7ea6\u675f\u6bd4\u4f8b",controls:"\u63a7\u4ef6",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8\u94fe\u63a5",liveconnect:"SWLiveConnect\u5c5e\u6027",flashvars:"Flash\u53c2\u6570",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f",wmode:"\u7a97\u53e3\u6a21\u5f0f",salign:"SAlign\u53c2\u6570",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8f7d",nojava:"\u5173\u95edjava",maintainaspect:"\u9501\u5b9a\u6bd4\u4f8b",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u81f3 URL","shockwave_options":"Shockwave\u9009\u9879","rmp_options":"Real media player\u9009\u9879","wmp_options":"Windows media player\u9009\u9879","qt_options":"Quicktime\u9009\u9879","flash_options":"Flash\u9009\u9879",hidden:"\u9690\u85cf","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b","flv_options":"Flash video\u9009\u9879","flv_scalemode":"\u7f29\u653e\u6a21\u5f0f","flv_buffer":"\u7f13\u51b2\u5927\u5c0f","flv_startimage":"\u5f00\u59cb\u56fe\u7247","flv_starttime":"\u5f00\u59cb\u65f6\u95f4","flv_defaultvolume":"\u521d\u59cb\u97f3\u91cf\u5927\u5c0f","flv_hiddengui":"\u9690\u85cf\u63a7\u4ef6","flv_autostart":"\u81ea\u52a8\u5f00\u59cb","flv_loop":"\u5faa\u73af\u64ad\u653e","flv_showscalemodes":"\u663e\u793a\u7f29\u653e\u6a21\u5f0f","flv_smoothvideo":"\u5e73\u6ed1\u64ad\u653e","flv_jscallback":"JS\u8fd4\u56de","html5_video_options":"HTML5 Video\u9009\u9879",altsource1:"\u66ff\u4ee3\u6765\u6e90 1",altsource2:"\u66ff\u4ee3\u6765\u6e90 2",preload:"\u9884\u8f7d",poster:"\u6807\u8bed",source:"\u6e90\u4ee3\u7801"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/cs_dlg.js b/js/tiny_mce/plugins/media/langs/cs_dlg.js new file mode 100755 index 000000000..2527e0297 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/cs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cs.media_dlg',{list:"Seznam",file:"Soubor/URL",advanced:"Roz\u0161\u00ed\u0159en\u00e9",general:"Obecn\u00e9",title:"Vlo\u017eit/upravit vkl\u00e1dan\u00e1 m\u00e9dia",align_top_left:"Nahoru vlevo",align_center:"Na st\u0159ed",align_left:"Vlevo",align_bottom:"Dol\u016f",align_right:"Vpravo",align_top:"Nahoru",qt_stream_warn:"Streamovan\u00e9 rtsp zdroje mohou b\u00fdt p\u0159id\u00e1ny do pole \'Soubor/URL streamu pro QT\' na z\u00e1lo\u017ece \'Roz\u0161\u00ed\u0159en\u00e9\'.\\nYM\u016f\u017eete tak\u00e9 p\u0159idat nestreamovanou verzi do pole \'Soubor/URL\'.",qtsrc:"Soubor/URL streamu pro QT",progress:"Pr\u016fb\u011bh",sound:"Zvuk",swstretchvalign:"Zarovn\u00e1n\u00ed vert. rozta\u017een\u00ed",swstretchhalign:"Zarovn\u00e1n\u00ed horiz. rozta\u017een\u00ed",swstretchstyle:"Styl rozta\u017een\u00ed",scriptcallbacks:"Skripty zp\u011btn\u00fdch vol\u00e1n\u00ed",align_top_right:"Nahoru vpravo",uimode:"Re\u017eim ovl\u00e1dac\u00edho panelu",rate:"Relativn\u00ed rychlost",playcount:"Po\u010det p\u0159ehr\u00e1n\u00ed",defaultframe:"V\u00fdchoz\u00ed sn\u00edmek",currentposition:"Aktu\u00e1ln\u00ed pozice",currentmarker:"Aktu\u00e1ln\u00ed z\u00e1lo\u017eka",captioningid:"ID popisku m\u00e9dia",baseurl:"Z\u00e1kladn\u00ed URL",balance:"Vyv\u00e1\u017een\u00ed",windowlessvideo:"Video bez okna",stretchtofit:"Rozt\u00e1hnout do okna",mute:"Ztlumit",invokeurls:"Po\u017eadovat URL",fullscreen:"Cel\u00e1 obrazovka",enabled:"Povolit ovl\u00e1dac\u00ed panel",autostart:"Automatick\u00e9 spu\u0161t\u011bn\u00ed",volume:"Hlasitost",target:"C\u00edl",qtsrcchokespeed:"Sn\u00ed\u017een\u00ed rychlosti",href:"Odkaz",endtime:"\u010cas ukon\u010den\u00ed",starttime:"Po\u010d\u00e1te\u010dn\u00ed \u010das",enablejavascript:"Povolit Javascript",correction:"Bez korekc\u00ed",targetcache:"C\u00edlov\u00e1 mezipam\u011b\u0165",playeveryframe:"P\u0159ehr\u00e1t ka\u017ed\u00fd sn\u00edmek",kioskmode:"Zak\u00e1zat ukl\u00e1d\u00e1n\u00ed",controller:"Ovl\u00e1dac\u00ed panel",menu:"Zobrazit nab\u00eddku",loop:"Opakov\u00e1n\u00ed",play:"Automatick\u00e9 p\u0159ehr\u00e1v\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed",class_name:"T\u0159\u00edda",name:"N\u00e1zev",id:"ID",type:"Typ",size:"Rozm\u011bry",preview:"N\u00e1hled",constrain_proportions:"Zachovat proporce",controls:"Ovl\u00e1dac\u00ed panel",numloop:"Po\u010det opakov\u00e1n\u00ed",console:"Konzola",cache:"Mezipam\u011b\u0165",autohref:"Automatick\u00e9 na\u010dten\u00ed",liveconnect:"Spustit Javu (SWLiveConnect)",flashvars:"Parametry (Flashvars)",base:"Z\u00e1kladn\u00ed slo\u017eka",bgcolor:"Pozad\u00ed",wmode:"Re\u017eim okna",salign:"Zarovn\u00e1n\u00ed okna",align:"Zarovn\u00e1n\u00ed",scale:"Pom\u011br",quality:"Kvalita",shuffle:"N\u00e1hodn\u011b",prefetch:"P\u0159edna\u010dten\u00ed",nojava:"Nespout\u011bt Javu",maintainaspect:"Zachovat pom\u011br stran",imagestatus:"Stav obrazu",center:"Na st\u0159ed",autogotourl:"Automatick\u00fd p\u0159echod na URL",shockwave_options:"Mo\u017enosti Shockwave",rmp_options:"Mo\u017enosti p\u0159ehr\u00e1va\u010de Real media",wmp_options:"Mo\u017enosti p\u0159ehr\u00e1va\u010de Windows media",qt_options:"Mo\u017enosti Quicktime",flash_options:"Mo\u017enosti Flashe",hidden:"Skr\u00fdt",align_bottom_left:"Dol\u016f vlevo",align_bottom_right:"Dol\u016f vpravo",flv_options:"Mo\u017enosti Flash video",flv_scalemode:"Zm\u011bna velikosti",flv_buffer:"Z\u00e1sobn\u00edk",flv_startimage:"Po\u010d\u00e1te\u010dn\u00ed obr\u00e1zek",flv_starttime:"Po\u010d\u00e1te\u010dn\u00ed \u010das",flv_defaultvolume:"V\u00fdchoz\u00ed hlasitost",flv_hiddengui:"Skryt\u00fd ovl\u00e1dac\u00ed panel",flv_autostart:"Automatick\u00e9 spu\u0161t\u011bn\u00ed",flv_loop:"Opakov\u00e1n\u00ed",flv_showscalemodes:"Zobrazit volby zm\u011bny velikosti",flv_smoothvideo:"Vyhlazen\u00e9 video",flv_jscallback:"Zp\u011btn\u00e9 vol\u00e1n\u00ed Javascriptu",html5_video_options:"Mo\u017enosti HTML5 video",altsource1:"Alternativn\u00ed zdroj 1",altsource2:"Alternativn\u00ed zdroj 2",preload:"P\u0159edna\u010d\u00edst",poster:"Obr\u00e1zek (zobraz\u00ed se p\u0159i nedostupnosti videa)",source:"Zdroj"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/cy_dlg.js b/js/tiny_mce/plugins/media/langs/cy_dlg.js new file mode 100755 index 000000000..b731a8adf --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/cy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cy.media_dlg',{list:"Rhestr",file:"Ffeil/URL",advanced:"Uwch",general:"Cyffredinol",title:"Mewnosod / golygu cyfrwng planedig",align_top_left:"Pen canol",align_center:"Canol",align_left:"Chwith",align_bottom:"Gwaelod",align_right:"De",align_top:"Pen",qt_stream_warn:"Dylai adnoddau RTSP ffrydio cael eu ychwanegu i\'r maes Fynhonell QT o dan y tab Uwch.\\n Dylai chi hefyd ychwanegu fersiwn heb-ffrydio i\'r maes Fynhonell.",qtsrc:"Fynhonell QT",progress:"Cynnydd",sound:"Sain",swstretchvalign:"Aliniad fertigol ymestyn",swstretchhalign:"Aliniad llorweddol ymestyn",swstretchstyle:"Arddull ymestyn",scriptcallbacks:"N\u00f4l-galwadau sgript",align_top_right:"Pen dde",uimode:"Modd UI",rate:"Cyfradd",playcount:"Cyfrif chwarae",defaultframe:"Ffr\u00e2m rhagosodedig",currentposition:"Lleoliad cyfredol",currentmarker:"Marciwr cyfredol",captioningid:"Id egluro",baseurl:"URL seiledig",balance:"Cydbwysedd",windowlessvideo:"Fideo heb-ffenest",stretchtofit:"Ymestun i ffitio",mute:"Mudo",invokeurls:"Defnyddio URLs",fullscreen:"Sgrin llawn",enabled:"Wedi\'i galluogi",autostart:"Awto-cychwyn",volume:"Cyfrol",target:"Targed",qtsrcchokespeed:"Tagu cyflymder",href:"Href",endtime:"Amser gorffen",starttime:"Amser dechrae",enablejavascript:"Galluogi JavaScript",correction:"Dim cywiriad",targetcache:"Storfa targed",playeveryframe:"Chwarae pob ffr\u00e2m",kioskmode:"Modd ciosk",controller:"Rheolydd",menu:"Dangos dewislen",loop:"Dolen",play:"Awto-chwarae",hspace:"Gofod llorweddol",vspace:"Gofod fertigol",class_name:"Dosbarth",name:"Enw",id:"Id",type:"Math",size:"Dimensiynau",preview:"Rhagolygu",constrain_proportions:"Cynfyngu cyfraneddau",controls:"Rheolyddion",numloop:"Nifer o dolenau",console:"Consol",cache:"Storfa",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Sail",bgcolor:"Cefndir",wmode:"Modd-W",salign:"Alinio-S",align:"Alinio",scale:"Gradd",quality:"Ansawdd",shuffle:"Cymysgu",prefetch:"Cyn-n\u00f4l",nojava:"Dim java",maintainaspect:"Cynnal agwedd",imagestatus:"Statws delwedd",center:"Canol",autogotourl:"URL awto-mynd-i",shockwave_options:"Dewisiadau Shockwave",rmp_options:"Dewisiadau Real Media Player",wmp_options:"Dewisiadau Windows Media Player",qt_options:"Dewisiadau Quicktime",flash_options:"Dewisiadau Flash",hidden:"Wedi\'i cuddio",align_bottom_left:"Gwaelod chwith",align_bottom_right:"Gwaelod dde",flv_options:"Dewisiadau fideo Flash",flv_scalemode:"Modd graddfa",flv_buffer:"Buffer",flv_startimage:"Delwedd cychwyn",flv_starttime:"Amser cychwyn",flv_defaultvolume:"Cyfrol rhagosodedig",flv_hiddengui:"GUI wedi\'i cuddio",flv_autostart:"Awto-cychwyn",flv_loop:"Doleni",flv_showscalemodes:"Dangos moddau graddfa",flv_smoothvideo:"Fideo llyfn",flv_jscallback:"N\u00f4l-galwad JS"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/da_dlg.js b/js/tiny_mce/plugins/media/langs/da_dlg.js new file mode 100755 index 000000000..471139b34 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/da_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('da.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avanceret",general:"Generelt",title:"Inds\u00e6t/rediger indlejret mediefil",align_top_left:"\u00d8verste venstre hj\u00f8rne",align_center:"Centreret",align_left:"Venstre",align_bottom:"Bund",align_right:"H\u00f8jret",align_top:"Top",qt_stream_warn:"Streamede rtsp resourcer skal tilf\u00f8jes til QT Src feltet under tabben avanceret.\\nDu skal ogs\u00e5 tilf\u00f8je en ikke streamet version til Src feltet..",qtsrc:"QT Src",progress:"Fremskridt",sound:"Lyd",swstretchvalign:"Str\u00e6k V-justering",swstretchhalign:"Str\u00e6k H-justering",swstretchstyle:"Str\u00e6k stil",scriptcallbacks:"Script callbacks",align_top_right:"\u00d8verste h\u00f8jre hj\u00f8rne",uimode:"UI-tilstand",rate:"Vurder",playcount:"Afspil indhold",defaultframe:"Standard ramme",currentposition:"Aktuel position",currentmarker:"Aktuel mark\u00f8r",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Vinduesl\u00f8s video",stretchtofit:"Str\u00e6k for at tilpasse",mute:"Lydl\u00f8s",invokeurls:"Aktiver URL\'er",fullscreen:"Fulssk\u00e6rm",enabled:"Valgt",autostart:"Afspil automatisk",volume:"Lydstyrke",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighed",href:"Href",endtime:"Sluttidspunkt",starttime:"Starttidspunkt",enablejavascript:"Tillad JavaScript",correction:"Ingen korrektion",targetcache:"M\u00e5l-cache",playeveryframe:"Afsplil alle rammer",kioskmode:"Kiosk-tilstand",controller:"Controller",menu:"Vis menu",loop:"Gentag",play:"Start",hspace:"H-afstand",vspace:"V-afstand",class_name:"Klasse",name:"Navn",id:"Id",type:"Type",size:"Dimensioner",preview:"Vis udskrift",constrain_proportions:"Bevar proportioner",controls:"Kontroller",numloop:"Antal loops",console:"Konsol",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Baggrund",wmode:"WMode",salign:"SAlign",align:"Juster",scale:"Skaler",quality:"Kvalitet",shuffle:"Bland",prefetch:"Forh\u00e5ndshent",nojava:"Ingen java",maintainaspect:"Bevar aspekt",imagestatus:"Billedstatus",center:"Center",autogotourl:"Auto g\u00e5 til URL",shockwave_options:"Shockwave options",rmp_options:"Real media player egenskaber",wmp_options:"Windows media player egenskaber",qt_options:"Quicktime egenskaber",flash_options:"Flash egenskaber",hidden:"Skjul",align_bottom_left:"Nederste venstre hj\u00f8rne",align_bottom_right:"\u00d8verste h\u00f8jre hj\u00f8rne",flv_options:"Flash video egenskaber",flv_scalemode:"Skaleringstilstand",flv_buffer:"Buffer",flv_startimage:"Startbillede",flv_starttime:"Starttidspunkt",flv_defaultvolume:"Standard lydstyrke",flv_hiddengui:"Skjul sk\u00e6rmbillede",flv_autostart:"Autostart",flv_loop:"Gentag",flv_showscalemodes:"Vis skaleringstilstande",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Indstillinger",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forudindl\u00e6s",poster:"Poster",source:"Kilde"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/de_dlg.js b/js/tiny_mce/plugins/media/langs/de_dlg.js new file mode 100755 index 000000000..e7d3cfde3 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/de_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('de.media_dlg',{list:"Liste",file:"Datei/URL",advanced:"Erweitert",general:"Allgemein",title:"Multimedia-Inhalte einf\u00fcgen/bearbeiten",align_top_left:"Oben Links",align_center:"Zentriert",align_left:"Links",align_bottom:"Unten",align_right:"Rechts",align_top:"Oben",qt_stream_warn:"In den Erweiterten Einstellungen sollten im Feld \'QT Src\' gestreamte RTSP Resourcen hinzugef\u00fcgt werden.\\nZus\u00e4tzlich sollten Sie dort auch eine nicht-gestreamte Resource angeben.",qtsrc:"Angabe zu QT Src",progress:"Fortschritt",sound:"Ton",swstretchvalign:"Stretch V-Ausrichtung",swstretchhalign:"Stretch H-Ausrichtung",swstretchstyle:"Stretch-Art",scriptcallbacks:"Script callbacks",align_top_right:"Oben Rechts",uimode:"UI Modus",rate:"Rate",playcount:"Z\u00e4hler",defaultframe:"Frame-Voreinstellung",currentposition:"Aktuelle Position",currentmarker:"Aktueller Marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Fensterloses Video",stretchtofit:"Anzeigefl\u00e4che an verf\u00fcgbaren Platz anpassen",mute:"Stumm",invokeurls:"Invoke URLs",fullscreen:"Vollbild",enabled:"Aktiviert",autostart:"Autostart",volume:"Lautst\u00e4rke",target:"Ziel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Endzeitpunkt",starttime:"Startzeitpunkt",enablejavascript:"JavaScript aktivieren",correction:"Ohne Korrektur",targetcache:"Ziel zwischenspeichern",playeveryframe:"Jeden Frame abspielen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Men\u00fc anzeigen",loop:"Wiederholung",play:"Automatisches Abspielen",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand",class_name:"CSS-Klasse",name:"Name",id:"Id",type:"Typ",size:"Abmessungen",preview:"Vorschau",constrain_proportions:"Proportionen erhalten",controls:"Steuerung",numloop:"Anzahl Wiederholungen",console:"Konsole",cache:"Zwischenspeicher",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvariablen",base:"Base",bgcolor:"Hintergrund",wmode:"WMode",salign:"S-Ausrichtung",align:"Ausrichtung",scale:"Skalierung",quality:"Qualit\u00e4t",shuffle:"Zuf\u00e4llige Wiedergabe",prefetch:"Prefetch",nojava:"Kein Java",maintainaspect:"Bildverh\u00e4ltnis beibehalten",imagestatus:"Bildstatus",center:"Zentriert",autogotourl:"Auto goto URL",shockwave_options:"Shockwave-Optionen",rmp_options:"Optionen f\u00fcr Real Media Player",wmp_options:"Optionen f\u00fcr Windows Media Player",qt_options:"Quicktime-Optionen",flash_options:"Flash-Optionen",hidden:"Versteckt",align_bottom_left:"Unten Links",align_bottom_right:"Unten Rechts",flv_options:"Optionen f\u00fcr Flash Video",flv_scalemode:"Skalierungsmodus",flv_buffer:"Puffer",flv_startimage:"Startbild",flv_starttime:"Startzeitpunkt",flv_defaultvolume:"Standardlautst\u00e4rke",flv_hiddengui:"Versteckte GUI",flv_autostart:"Autostart",flv_loop:"Wiederholung",flv_showscalemodes:"Skalierungsmodi anzeigen",flv_smoothvideo:"Smooth Video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Optionen",altsource1:"Alternative Quelle 1",altsource2:"Alternative Quelle 2",preload:"Preload",poster:"Poster",source:"Quelle"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/dv_dlg.js b/js/tiny_mce/plugins/media/langs/dv_dlg.js new file mode 100755 index 000000000..205d6ee56 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/dv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('dv.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/el_dlg.js b/js/tiny_mce/plugins/media/langs/el_dlg.js new file mode 100755 index 000000000..efcf71821 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/el_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('el.media_dlg',{list:"\u039b\u03af\u03c3\u03c4\u03b1",file:"\u0391\u03c1\u03c7\u03b5\u03af\u03bf/URL",advanced:"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03c9\u03bd media",align_top_left:"\u03a0\u03ac\u03bd\u03c9 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",align_center:"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf",align_left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",align_bottom:"\u039a\u03ac\u03c4\u03c9",align_right:"\u0394\u03b5\u03be\u03b9\u03ac",align_top:"\u03a0\u03ac\u03bd\u03c9",qt_stream_warn:"\u03a0\u03b7\u03b3\u03ad\u03c2 \u03c1\u03bf\u03ce\u03bd rtsp \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03c3\u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf \u03a0\u03b7\u03b3\u03ae QT \u03ba\u03ac\u03c4\u03c9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03ba\u03b1\u03c1\u03c4\u03ad\u03bb\u03b1 \u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2.\\n\u0395\u03c0\u03af\u03c3\u03b7\u03c2 \u03ba\u03b1\u03bb\u03cc \u03b8\u03b1 \u03ae\u03c4\u03b1\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b1\u03c0\u03bb\u03ae (\u03cc\u03c7\u03b9 \u03c1\u03bf\u03ae\u03c2) \u03c0\u03b7\u03b3\u03ae..",qtsrc:"\u03a0\u03b7\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",progress:"\u03a0\u03c1\u03cc\u03bf\u03b4\u03bf\u03c2",sound:"\u0389\u03c7\u03bf\u03c2",swstretchvalign:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7",swstretchhalign:"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7",swstretchstyle:"\u03a3\u03c4\u03c5\u03bb \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7\u03c2",scriptcallbacks:"Script callbacks",align_top_right:"\u03a0\u03ac\u03bd\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac",uimode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 UI",rate:"\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2",playcount:"\u03a0\u03cc\u03c3\u03b5\u03c2 \u03c6\u03bf\u03c1\u03ad\u03c2 \u03b8\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03b9",defaultframe:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03ba\u03b1\u03c1\u03ad",currentposition:"\u03a4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1 \u03b8\u03ad\u03c3\u03b7",currentmarker:"\u03a4\u03c1\u03ad\u03c7\u03bf\u03bd \u03c3\u03b7\u03bc\u03ac\u03b4\u03b9",captioningid:"Captioning id",baseurl:"URL \u03b2\u03ac\u03c3\u03b7\u03c2",balance:"\u0399\u03c3\u03bf\u03c1\u03c1\u03bf\u03c0\u03af\u03b1",windowlessvideo:"\u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",stretchtofit:"\u0395\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c7\u03c9\u03c1\u03ad\u03c3\u03b5\u03b9",mute:"\u03a3\u03af\u03b3\u03b1\u03c3\u03b7",invokeurls:"\u039a\u03bb\u03ae\u03c3\u03b7 URLs",fullscreen:"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7",enabled:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",autostart:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",volume:"\u0388\u03bd\u03c4\u03b1\u03c3\u03b7",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03bb\u03ae\u03be\u03b7\u03c2",starttime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7\u03c2",enablejavascript:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 JavaScript",correction:"\u03a7\u03c9\u03c1\u03af\u03c2 \u03b4\u03b9\u03cc\u03c1\u03b8\u03c9\u03c3\u03b7",targetcache:"\u039c\u03bd\u03ae\u03bc\u03b7 cache \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",playeveryframe:"\u03a0\u03b1\u03af\u03be\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b1\u03c1\u03ad",kioskmode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 Kiosk",controller:"\u0395\u03bb\u03b5\u03b3\u03ba\u03c4\u03ae\u03c2",menu:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bc\u03b5\u03bd\u03bf\u03cd",loop:"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",play:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",hspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1",vspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7",class_name:"\u039a\u03bb\u03ac\u03c3\u03b7",name:"\u038c\u03bd\u03bf\u03bc\u03b1",id:"Id",type:"\u03a4\u03cd\u03c0\u03bf\u03c2",size:"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",constrain_proportions:"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",controls:"\u03a7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03b1",numloop:"\u03a0\u03cc\u03c3\u03b5\u03c2 \u03c6\u03bf\u03c1\u03ad\u03c2 \u03b8\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03b9",console:"\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1",cache:"\u039c\u03bd\u03ae\u03bc\u03b7 cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"\u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 Flash",base:"\u0392\u03ac\u03c3\u03b7",bgcolor:"\u03a6\u03cc\u03bd\u03c4\u03bf",wmode:"WMode",salign:"SAlign",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",scale:"\u039a\u03bb\u03af\u03bc\u03b1\u03ba\u03b1",quality:"\u03a0\u03bf\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1",shuffle:"\u03a4\u03c5\u03c7\u03b1\u03af\u03b1 \u03c3\u03b5\u03b9\u03c1\u03ac",prefetch:"\u03a0\u03c1\u03bf\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7",nojava:"\u03a7\u03c9\u03c1\u03af\u03c2 java",maintainaspect:"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",imagestatus:"\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",center:"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf",autogotourl:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bc\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf URL",shockwave_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Shockwave",rmp_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Real media player",wmp_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Windows media player",qt_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Quicktime",flash_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Flash",hidden:"\u039a\u03c1\u03c5\u03c6\u03cc",align_bottom_left:"\u039a\u03ac\u03c4\u03c9 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",align_bottom_right:"\u039a\u03ac\u03c4\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac",flv_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf Flash",flv_scalemode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03bb\u03af\u03bc\u03b1\u03ba\u03b1\u03c2",flv_buffer:"\u0395\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03b7 \u03bc\u03bd\u03ae\u03bc\u03b7",flv_startimage:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03b1\u03c1\u03c7\u03ae\u03c2",flv_starttime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7\u03c2",flv_defaultvolume:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03c4\u03b1\u03c3\u03b7",flv_hiddengui:"\u039a\u03c1\u03c5\u03bc\u03bc\u03ad\u03bd\u03bf GUI",flv_autostart:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",flv_loop:"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",flv_showscalemodes:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b9\u03ce\u03bd \u03ba\u03bb\u03af\u03bc\u03b1\u03ba\u03b1\u03c2",flv_smoothvideo:"\u039f\u03bc\u03b1\u03bb\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/en_dlg.js b/js/tiny_mce/plugins/media/langs/en_dlg.js new file mode 100644 index 000000000..e191cee09 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","flv_options":"Flash video options","flv_scalemode":"Scale mode","flv_buffer":"Buffer","flv_startimage":"Start image","flv_starttime":"Start time","flv_defaultvolume":"Default volumne","flv_hiddengui":"Hidden GUI","flv_autostart":"Auto start","flv_loop":"Loop","flv_showscalemodes":"Show scale modes","flv_smoothvideo":"Smooth video","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/es_dlg.js b/js/tiny_mce/plugins/media/langs/es_dlg.js new file mode 100755 index 000000000..84edec616 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.media_dlg',{list:"Lista",file:"Archivo/URL",advanced:"Avanzado",general:"General",title:"Insertar/editar medio embebido","align_top_left":"Arriba Izda.","align_center":"Centrado","align_left":"Izquierda","align_bottom":"Debajo","align_right":"Derecha","align_top":"Arriba","qt_stream_warn":"Los recursos rtsp de Streaming deber\u00edan a\u00f1adirse en el campo QT Src de la pesta\u00f1a avanzada.\\nAdem\u00e1s deber\u00eda a\u00f1adir una versi\u00f3n no Streaming en el campo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Sonido",swstretchvalign:"Alin. V. Estiramiento",swstretchhalign:"Alin. H. Estiramiento",swstretchstyle:"Estilo estiramiento",scriptcallbacks:"Script callbacks","align_top_right":"Arriba Dcha.",uimode:"Modo UI",rate:"Ratio",playcount:"Cuantas reproducciones",defaultframe:"Frame predet.",currentposition:"Posici\u00f3n actual",currentmarker:"Marcador actual",captioningid:"Captioning id",baseurl:"URL Base",balance:"Balance",windowlessvideo:"Video sin ventana",stretchtofit:"Estirar para ajustar",mute:"Silencio",invokeurls:"Invocar URLs",fullscreen:"Pantalla Completa",enabled:"Habilitado",autostart:"Comienzo Autom\u00e1tico",volume:"Volumen",target:"Target",qtsrcchokespeed:"Vel. de choque",href:"Href",endtime:"Fin",starttime:"Inicio",enablejavascript:"Habilitar JavaScript",correction:"Sin correci\u00f3n",targetcache:"Target cache",playeveryframe:"Reproducir todo los frames",kioskmode:"Kiosk mode",controller:"Controller",menu:"Mostrar Men\u00fa",loop:"Repetitivo",play:"Comienzo Autom\u00e1tico",hspace:"H-Space",vspace:"V-Space","class_name":"Clase",name:"Nombre",id:"Id",type:"Tipo",size:"Dimensiones",preview:"Vista Previa","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",controls:"Controles",numloop:"N\u00fam. repeticiones",console:"Consola",cache:"Cach\u00e9",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Alineaci\u00f3n",scale:"Scale",quality:"Calidad",shuffle:"Aleatorio",prefetch:"Preb\u00fasqueda",nojava:"No java",maintainaspect:"Mantener aspecto",imagestatus:"Estado de imagen",center:"Centrado",autogotourl:"Ir a URL autom\u00e1t.","shockwave_options":"Opciones Shockwave","rmp_options":"Opciones Real media player","wmp_options":"Opciones Windows media player","qt_options":"Opciones Quicktime","flash_options":"Opciones Flash",hidden:"Hidden","align_bottom_left":"Debajo Izda.","align_bottom_right":"Debajo Dcha.","flv_options":"Opciones Video Flash","flv_scalemode":"Modo escalado","flv_buffer":"Buffer","flv_startimage":"Imagen inicio","flv_starttime":"Tiempo inicio","flv_defaultvolume":"Volumen predet.","flv_hiddengui":"Ocultar GUI","flv_autostart":"Inicio auto.","flv_loop":"Repetitivo","flv_showscalemodes":"Mostrar modos escala","flv_smoothvideo":"Video suave","flv_jscallback":"JS Callback","html5_video_options":"Opciones Video HTML5",altsource1:"Fuente alternativa 1",altsource2:"Fuente alternativa 2",preload:"Precarga",poster:"P\u00f3ster",source:"Fuente"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/et_dlg.js b/js/tiny_mce/plugins/media/langs/et_dlg.js new file mode 100755 index 000000000..25e5ee1b7 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.media_dlg',{list:"Nimekiri",file:"Fail/URL",advanced:"T\u00e4psem",general:"\u00dcldine",title:"Sisesta/muuda meediat",align_top_left:"\u00dcleval vasakul",align_center:"Keskel",align_left:"Vasakul",align_bottom:"All",align_right:"Paremal",align_top:"\u00dcleval",qt_stream_warn:"Striimitav variant peaks olema lisatud.",qtsrc:"QT Src",progress:"Progress",sound:"Heli",swstretchvalign:"Venita V-joondust",swstretchhalign:"Venita H-joondust",swstretchstyle:"Venita stiili",scriptcallbacks:"Skripti tagasikutse",align_top_right:"Pleval paremal",uimode:"UI Reziim",rate:"Hinda",playcount:"M\u00e4ngukorrad",defaultframe:"Vaikimisi raam",currentposition:"Antud positioon",currentmarker:"Antud marker",captioningid:"Tiitri ID",baseurl:"Baas URL",balance:"Tasakaal",windowlessvideo:"Aknata video",stretchtofit:"Venita sobivaks",mute:"Vaigista",invokeurls:"N\u00e4ita URL\u2019e",fullscreen:"T\u00e4isekraan",enabled:"Lubatud",autostart:"Auto-start",volume:"Valjudus",target:"Sihtm\u00e4rk",qtsrcchokespeed:"Kiirus",href:"Href",endtime:"L\u00f5pu aeg",starttime:"Stardi aeg",enablejavascript:"Luba JavaScript\u2019i",correction:"Parandust ei ole",targetcache:"Sihtm\u00e4rgi vahem\u00e4lu",playeveryframe:"M\u00e4ngi igat raami",kioskmode:"Kioski reziim",controller:"Kontrollija",menu:"N\u00e4ita men\u00fc\u00fcd",loop:"Auto-kordus",play:"Auto-start",hspace:"H-vahe",vspace:"V-vahe",class_name:"Klass",name:"Nime",id:"ID",type:"T\u00fc\u00fcp",size:"M\u00f5\u00f5dud",preview:"Eelvaade",constrain_proportions:"S\u00e4ilita proportsioon",controls:"Kontrollid",numloop:"Kordused",console:"Konsool",cache:"Vahem\u00e4lu",autohref:"Auto-HREF",liveconnect:"SWLive-\u00dchendus",flashvars:"Flashiv\u00e4rk",base:"Baas",bgcolor:"Taust",wmode:"WMoodus",salign:"SJoondus",align:"Joondus",scale:"M\u00f5\u00f5tkava",quality:"Kvaliteet",shuffle:"Sega",prefetch:"Prefetch",nojava:"Ilma java\u2019ta",maintainaspect:"S\u00e4ilitamise aspekt",imagestatus:"Pildi staatus",center:"Keskel",autogotourl:"Auto-URL",shockwave_options:"Shockwave\u2019i seaded",rmp_options:"Real media player\u2019i seaded",wmp_options:"Windows media player\u2019i seaded",qt_options:"Quicktime\u2019 seaded",flash_options:"Flash\u2019i seaded",hidden:"Peidetud",align_bottom_left:"All vasakul",align_bottom_right:"All paremal",flv_options:"Flash video seaded",flv_scalemode:"Skaala reziim",flv_buffer:"Puffer",flv_startimage:"Stardi pilt",flv_starttime:"Stardi aeg",flv_defaultvolume:"Vaikimisi helitugevus",flv_hiddengui:"Peidetud GUI",flv_autostart:"Auto-start",flv_loop:"Auto.kordus",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Sujuv video",flv_jscallback:"JS tagasikutse"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/eu_dlg.js b/js/tiny_mce/plugins/media/langs/eu_dlg.js new file mode 100755 index 000000000..84ae35711 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/eu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('eu.media_dlg',{list:"Zerrenda",file:"Fitxategia/URL",advanced:"Aurreratua",general:"Orokorra",title:"Sartu / editatu ahokatutako euskarria",align_top_left:"Goian ezkerran",align_center:"Erdian",align_left:"Ezkerrean",align_bottom:"Behean",align_right:"Eskuinean",align_top:"Goian",qt_stream_warn:"Streaming bidez ematen diren rtsp baliabideak aurreratuak fitxa n dagoen QT Src eremuan gehitu behar dira.\\n Streaming gabeko bertsio bat ere gehitu beharko zenuke.",qtsrc:"QT Src",progress:"Aurrerapena",sound:"Soinua",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Goian eskuinean",uimode:"UI Modua",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Uneko posizioa",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balanzea",windowlessvideo:"Lehiogabeko bideoa",stretchtofit:"Neurrikoa izateko zabaldu",mute:"Ixilik",invokeurls:"URLa deitu",fullscreen:"Pantaila osoa",enabled:"Gaituta",autostart:"Automatikoki hasi",volume:"Bolumena",target:"Helburua",qtsrcchokespeed:"Talka abiadura",href:"Href",endtime:"Noiz bukatu",starttime:"Noiz hasi",enablejavascript:"Gaitu JavaScript",correction:"Zuzenketarik ez",targetcache:"Helburu katxea",playeveryframe:"Marko guztiak erreproduzitu",kioskmode:"Kiosko modua",controller:"Controller",menu:"Erakutsi menua",loop:"Begizta",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Klasea",name:"Izena",id:"Id",type:"Mota",size:"Tamaina",preview:"Aurrebista",constrain_proportions:"Itxura erlazioa blokeatu",controls:"Kontrolak",numloop:"Begizta kopurua",console:"Konsola",cache:"Katxea",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Oinarria",bgcolor:"Atzea",wmode:"WMode",salign:"SAlign",align:"Lerrokatu",scale:"Eskalatu",quality:"Kalitatea",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"Java ez",maintainaspect:"Maintain aspect",imagestatus:"Irudi edoera",center:"Erdian",autogotourl:"Automatikoi joan URLra",shockwave_options:"Shockwave aukerak",rmp_options:"Real media player aukerak",wmp_options:"Windows media player aukerak",qt_options:"Quicktime aukerak",flash_options:"Flash aukerak",hidden:"Ezkutuan",align_bottom_left:"Behean ezkerrean",align_bottom_right:"Behean eskuinean",flv_options:"Flash bideo aukerak",flv_scalemode:"Eskala modua",flv_buffer:"Buffer",flv_startimage:"Hasiera irudia",flv_starttime:"Noiz hasi",flv_defaultvolume:"Bolumen lehenetsia",flv_hiddengui:"Ezkutuko GUI",flv_autostart:"Auto start",flv_loop:"Begizta",flv_showscalemodes:"Erakutsi eskala moduak",flv_smoothvideo:"Bideo leuna",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/fa_dlg.js b/js/tiny_mce/plugins/media/langs/fa_dlg.js new file mode 100755 index 000000000..bcaf3a01f --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/fa_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fa.media_dlg',{list:"\u0644\u06cc\u0633\u062a",file:"\u0641\u0627\u06cc\u0644/URL",advanced:"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",general:"\u0639\u0645\u0648\u0645\u06cc",title:"\u062f\u0631\u062c / \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0633\u0627\u0646\u0647 \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 (Embeded Media)",align_top_left:"\u0628\u0627\u0644\u0627 \u0686\u067e",align_center:"\u0648\u0633\u0637",align_left:"\u0686\u067e",align_bottom:"\u067e\u0627\u06cc\u06cc\u0646",align_right:"\u0631\u0627\u0633\u062a",align_top:"\u0628\u0627\u0644\u0627",qt_stream_warn:"\u0645\u0646\u0627\u0628\u0639 Streamed rtsp \u0628\u0627\u06cc\u062f \u062f\u0631 \u0628\u0631\u06af\u0647 (Tab) \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062f\u0631 \u0641\u06cc\u0644\u062f \u0645\u0646\u0628\u0639 QT \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u062f.\\n\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u063a\u06cc\u0631 streamed \u0631\u0627 \u062f\u0631 \u0641\u06cc\u0644\u062f \u0645\u0646\u0628\u0639 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f..",qtsrc:"\u0645\u0646\u0628\u0639 QT",progress:"\u067e\u06cc\u0634\u0631\u0641\u062a",sound:"\u0635\u062f\u0627",swstretchvalign:"\u06a9\u0634\u06cc\u062f\u0646 \u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc",swstretchhalign:"\u06a9\u0634\u06cc\u062f\u0646 \u062a\u0631\u0627\u0632 \u0627\u0641\u0642\u06cc",swstretchstyle:"\u06a9\u0634\u06cc\u062f\u0646 \u0627\u0633\u062a\u06cc\u0644",scriptcallbacks:"\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Callbacks",align_top_right:"\u0628\u0627\u0644\u0627 \u0631\u0627\u0633\u062a",uimode:"\u062d\u0627\u0644\u062a UI",rate:"\u0646\u0631\u062e",playcount:"\u062a\u0639\u062f\u0627\u062f \u067e\u062e\u0634",defaultframe:"\u0641\u0631\u06cc\u0645 \u067e\u06cc\u0634\u0641\u0631\u0636",currentposition:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc",currentmarker:"\u0646\u0634\u0627\u0646\u06af\u0631 \u0641\u0639\u0644\u06cc",captioningid:"\u0634\u0646\u0627\u0633\u0647 \u0639\u0646\u0648\u0627\u0646",baseurl:"URL \u067e\u0627\u06cc\u0647",balance:"\u062a\u0648\u0627\u0632\u0646 (Balance)",windowlessvideo:"\u0648\u06cc\u062f\u0626\u0648\u06cc \u06a9\u0645 \u067e\u0646\u062c\u0631\u0647",stretchtofit:"\u06a9\u0634\u06cc\u062f\u0646 \u062c\u0647\u062a \u06af\u0646\u062c\u0627\u0646\u062f\u0646 \u06a9\u0627\u0645\u0644",mute:"\u0628\u06cc \u0635\u062f\u0627",invokeurls:"Invoke URLs",fullscreen:"\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",enabled:"\u0641\u0639\u0627\u0644 \u0634\u062f\u0647",autostart:"\u0634\u0631\u0648\u0639 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",volume:"\u0628\u0644\u0646\u062f\u06cc \u0635\u062f\u0627",target:"\u0645\u0642\u0635\u062f (Target)",qtsrcchokespeed:"\u0633\u0631\u0639\u062a Choke",href:"Href",endtime:"\u0632\u0645\u0627\u0646 \u067e\u0627\u06cc\u0627\u0646",starttime:"\u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639",enablejavascript:"\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 JavaScript",correction:"\u0628\u062f\u0648\u0646 \u062a\u0635\u062d\u06cc\u062d",targetcache:"\u06a9\u0634 \u0645\u0642\u0635\u062f (Target Cache)",playeveryframe:"\u067e\u062e\u0634 \u0647\u0631 \u0641\u0631\u06cc\u0645 (Frame)",kioskmode:"\u062d\u0627\u0644\u062a Kiosk",controller:"\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647",menu:"\u0646\u0645\u0627\u06cc\u0634 \u0645\u0646\u0648",loop:"\u062d\u0644\u0642\u0647 (Loop)",play:"\u067e\u062e\u0634 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",hspace:"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc",vspace:"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc",class_name:"\u06a9\u0644\u0627\u0633",name:"\u0646\u0627\u0645",id:"\u0634\u0646\u0627\u0633\u0647",type:"\u0646\u0648\u0639",size:"\u0627\u0628\u0639\u0627\u062f",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",constrain_proportions:"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",controls:"\u06a9\u0646\u062a\u0631\u0644 \u0647\u0627",numloop:"\u062a\u0639\u062f\u0627\u062f \u062d\u0644\u0642\u0647 \u0647\u0627",console:"\u06a9\u0646\u0633\u0648\u0644",cache:"\u06a9\u0634",autohref:"HREF \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",liveconnect:"\u0627\u0631\u062a\u0628\u0627\u0637 SWLive",flashvars:"\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc Flash",base:"\u067e\u0627\u06cc\u0647 (Base)",bgcolor:"\u0632\u0645\u06cc\u0646\u0647",wmode:"WMode",salign:"SAlign",align:"\u062a\u0631\u0627\u0632",scale:"\u0645\u0642\u06cc\u0627\u0633",quality:"\u06a9\u06cc\u0641\u06cc\u062a",shuffle:"\u062f\u0631 \u0647\u0645 \u0622\u0645\u06cc\u062e\u062a\u0646",prefetch:"\u067e\u06cc\u0634 \u0648\u0627\u06a9\u0634\u06cc",nojava:"\u0628\u062f\u0648\u0646 java",maintainaspect:"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628 \u0648\u062c\u0648\u0647",imagestatus:"\u0648\u0636\u0639\u06cc\u062a \u062a\u0635\u0648\u06cc\u0631",center:"\u0648\u0633\u0637",autogotourl:"\u0631\u0641\u062a\u0646 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 \u0628\u0647 URL",shockwave_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Shockwave",rmp_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Real media player",wmp_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Windows media player",qt_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Quicktime",flash_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u0644\u0634",hidden:"\u0645\u062e\u0641\u06cc",align_bottom_left:"\u067e\u0627\u06cc\u06cc\u0646 \u0686\u067e",align_bottom_right:"\u067e\u0627\u06cc\u06cc\u0646 \u0631\u0627\u0633\u062a",flv_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648\u06cc\u062f\u0626\u0648\u06cc \u0641\u0644\u0634",flv_scalemode:"\u062d\u0627\u0644\u062a \u0645\u0642\u06cc\u0627\u0633",flv_buffer:"\u0628\u0627\u0641\u0631 (Buffer)",flv_startimage:"\u062a\u0635\u0648\u06cc\u0631 \u0634\u0631\u0648\u0639",flv_starttime:"\u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639",flv_defaultvolume:"\u0628\u0644\u0646\u062f\u06cc \u0635\u062f\u0627\u06cc \u067e\u06cc\u0634\u0641\u0631\u0636",flv_hiddengui:"GUI \u0645\u062e\u0641\u06cc",flv_autostart:"\u0634\u0631\u0648\u0639 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",flv_loop:"\u062d\u0644\u0642\u0647 (Loop)",flv_showscalemodes:"\u0646\u0645\u0627\u06cc\u0634 \u062d\u0627\u0644\u062a \u0647\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633",flv_smoothvideo:"\u0648\u06cc\u062f\u0626\u0648\u06cc \u0635\u0627\u0641",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/fi_dlg.js b/js/tiny_mce/plugins/media/langs/fi_dlg.js new file mode 100755 index 000000000..d950a0ceb --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.media_dlg',{list:"Lista",file:"Tiedosto/URL",advanced:"Edistyneet",general:"Yleiset",title:"Lis\u00e4\u00e4/muokkaa upotettua mediaa",align_top_left:"Yl\u00e4-vasemmalla",align_center:"Keskell\u00e4",align_left:"Vasemmalla",align_bottom:"Alhaalla",align_right:"Oikealla",align_top:"Ylh\u00e4\u00e4ll\u00e4",qt_stream_warn:"Streamatut rtsp-resurssit tulisi lis\u00e4t\u00e4 QT Src -kentt\u00e4\u00e4n edistynyt-v\u00e4lilehdelle.\\nSinun kannattaa lis\u00e4t\u00e4 my\u00f6s ei-streamattu versio Src-kentt\u00e4\u00e4n.",qtsrc:"QT Src",progress:"Eteneminen",sound:"\u00c4\u00e4ni",swstretchvalign:"Venyt\u00e4 pystysuunnassa",swstretchhalign:"Venyt\u00e4 vaakasuunnassa",swstretchstyle:"Venytystyyli",scriptcallbacks:"Skriptin takaisinkutsut",align_top_right:"Yl\u00e4-oikealla",uimode:"UI-moodi",rate:"Rate",playcount:"Toistolaskin",defaultframe:"Oletusruutu",currentposition:"T\u00e4m\u00e4nhetkinen sijainti",currentmarker:"T\u00e4m\u00e4nhetkinen merkki",captioningid:"Otsikointi-id",baseurl:"Perus URL-osoitteet",balance:"Tasapaino",windowlessvideo:"Ikkunaton video",stretchtofit:"Venyt\u00e4 sopimaan",mute:"Hiljennys",invokeurls:"Kutsu URL-osoitteet",fullscreen:"Kokoruutu",enabled:"P\u00e4\u00e4ll\u00e4",autostart:"Automaattinen aloitus",volume:"\u00c4\u00e4nen voimakkuus",target:"Kohde",qtsrcchokespeed:"Choke-nopeus",href:"Href",endtime:"Lopetusaika",starttime:"Aloitusaika",enablejavascript:"Salli JavaScript",correction:"Ei korjausta",targetcache:"Kohteen v\u00e4limuisti",playeveryframe:"Toista jokainen ruutu",kioskmode:"Kioskitila",controller:"Ohjain",menu:"N\u00e4yt\u00e4 valikko",loop:"Silmukka",play:"Automaattinen toisto",hspace:"Vaakatason tila",vspace:"Pystytason tila",class_name:"Luokka",name:"Nimi",id:"Tunniste",type:"Tyyppi",size:"Mitat",preview:"Esikatselu",constrain_proportions:"S\u00e4ilyt\u00e4 mittasuhteet",controls:"Kontrollit",numloop:"Toistojen m\u00e4\u00e4r\u00e4",console:"Konsoli",cache:"V\u00e4limuisti",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-muuttujat",base:"Perusta",bgcolor:"Tausta",wmode:"WMode",salign:"SAlign",align:"Tasaus",scale:"Skaala",quality:"Laatu",shuffle:"Sekoita",prefetch:"Esinouda",nojava:"Ei Javaa",maintainaspect:"S\u00e4ilyt\u00e4 kuvasuhde",imagestatus:"Kuvan tila",center:"Keskit\u00e4",autogotourl:"Mene automaattisesti URL:iin",shockwave_options:"Shockwaven asetukset",rmp_options:"Real media playerin asetukset",wmp_options:"Windows media playerin asetukset",qt_options:"Quicktimen asetukset",flash_options:"Flashin asetukset",hidden:"Piilotettu",align_bottom_left:"Ala-vasemmalla",align_bottom_right:"Ala-oikealla",flv_options:"Flash videon asetukset",flv_scalemode:"Skaalausmoodi",flv_buffer:"Puskuri",flv_startimage:"Aloituskuva",flv_starttime:"Aloitusaika",flv_defaultvolume:"Oletus\u00e4\u00e4nenpaine",flv_hiddengui:"Piilotettu k\u00e4ytt\u00f6liittym\u00e4",flv_autostart:"Automaattinen aloitus",flv_loop:"Silmukka",flv_showscalemodes:"N\u00e4yt\u00e4 skaalausmoodit",flv_smoothvideo:"Smoothi video",flv_jscallback:"JS takaisinkutsu",html5_video_options:"HTML5 videoasetukset",altsource1:"Vaihtoehtoinen l\u00e4hde 1",altsource2:"Vaihtoehtoinen l\u00e4hde 2",preload:"Esilataa",poster:"Posteri",source:"L\u00e4hde"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/fr_dlg.js b/js/tiny_mce/plugins/media/langs/fr_dlg.js new file mode 100755 index 000000000..4a3f5d4a7 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.media_dlg',{list:"Liste",file:"Fichier / URL",advanced:"Avanc\u00e9",general:"G\u00e9n\u00e9ral",title:"Ins\u00e9rer / \u00e9diter un fichier m\u00e9dia",align_top_left:"En haut \u00e0 gauche",align_center:"Centr\u00e9",align_left:"Gauche",align_bottom:"Bas",align_right:"Droite",align_top:"Haut",qt_stream_warn:"Les ressources rtsp en streaming doivent \u00eatre ajout\u00e9es au champ \u00ab Source QT \u00bb dans l\'onglet avanc\u00e9.\\nVous devriez aussi ajouter une version n\'\u00e9tant pas en streaming au champ \u00ab source QT \u00bb.",qtsrc:"Source QT",progress:"Progression",sound:"Son",swstretchvalign:"Stretch vertical",swstretchhalign:"Stretch horizontal",swstretchstyle:"Stretch style",scriptcallbacks:"Callback de script",align_top_right:"En haut \u00e0 droite",uimode:"Mode UI",rate:"Taux",playcount:"Compteur",defaultframe:"Image par d\u00e9faut",currentposition:"Position actuelle",currentmarker:"Marqueur actuel",captioningid:"ID sous-titrage",baseurl:"Adresse de base",balance:"Balance",windowlessvideo:"Vid\u00e9o sans fen\u00eatre",stretchtofit:"\u00c9tendre pour adapter la taille",mute:"Muet",invokeurls:"Invoquer URLs",fullscreen:"Plein \u00e9cran",enabled:"Activ\u00e9",autostart:"Lire automatiquement",volume:"Volume",target:"Cible",qtsrcchokespeed:"D\u00e9bit maximum",href:"Href",endtime:"Fin",starttime:"D\u00e9but",enablejavascript:"Activer le JavaScript",correction:"Pas de correction",targetcache:"Cache cible",playeveryframe:"Jouer toutes les images",kioskmode:"Mode kiosque",controller:"Contr\u00f4leur",menu:"Afficher le menu",loop:"Lire en boucle",play:"Lecture automatique",hspace:"Espacement horizontal",vspace:"Espacement vertical",class_name:"Classe",name:"Nom",id:"Id",type:"Type",size:"Dimensions",preview:"Pr\u00e9visualisation",constrain_proportions:"Conserver les proportions",controls:"Contr\u00f4les",numloop:"Nombre de tours",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variables flash",base:"Base",bgcolor:"Fond",wmode:"WMode",salign:"SAlign",align:"Alignement",scale:"\u00c9chelle",quality:"Qualit\u00e9",shuffle:"Al\u00e9atoire",prefetch:"Pr\u00e9chargement",nojava:"Pas java",maintainaspect:"Maintenir l\'aspect",imagestatus:"Statut de l\'image",center:"Centrer",autogotourl:"Aller automatiquement \u00e0 l\'URL",shockwave_options:"Options Shockwave",rmp_options:"Options Real media player",wmp_options:"Windows media player options",qt_options:"Options Quicktime",flash_options:"Options Flash",hidden:"Cach\u00e9",align_bottom_left:"En bas \u00e0 gauche",align_bottom_right:"En bas \u00e0 droite",flv_options:"Options de la vid\u00e9o Flash",flv_scalemode:"\u00c9chelle",flv_buffer:"Tampon",flv_startimage:"Image de d\u00e9marrage",flv_starttime:"Temps au d\u00e9but",flv_defaultvolume:"Volume par d\u00e9faut",flv_hiddengui:"Interface utilisateur cach\u00e9e",flv_autostart:"D\u00e9marrage automatique",flv_loop:"En boucle",flv_showscalemodes:"Montrer les diff\u00e9rentes \u00e9chelles",flv_smoothvideo:"Vid\u00e9o adoucie",flv_jscallback:"Callback JavaScript",html5_video_options:"Options Vid\u00e9o HTML 5",altsource1:"Source alternative 1",altsource2:"Source alternative 2",preload:"Pr\u00e9chargement",poster:"Poster",source:"Source"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/gl_dlg.js b/js/tiny_mce/plugins/media/langs/gl_dlg.js new file mode 100755 index 000000000..14a05f8b1 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avanzado",general:"Xeral",title:"Insertar/editar medio embebido",align_top_left:"Arriba Izda.",align_center:"Centrado",align_left:"Esquerda",align_bottom:"Abaixo",align_right:"Dereita",align_top:"Arriba",qt_stream_warn:"Os recursos rtsp de Streaming deber\u00edan engadirse no campo QT Src da pesta\u00f1a avanzada.\\nAdem\u00e1is deber\u00eda engadir unha versi\u00f3n no Streaming no campo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Son",swstretchvalign:"Esturar ali\u00f1. V.",swstretchhalign:"Estirar ali\u00f1. H.",swstretchstyle:"Estilo estiramento",scriptcallbacks:"Script callbacks",align_top_right:"Arriba Dta.",uimode:"Modo UI",rate:"Relaci\u00f3n",playcount:"Cantas reproducci\u00f3ns",defaultframe:"Frame predet.",currentposition:"Posici\u00f3n actual",currentmarker:"Marcador actual",captioningid:"Id de lenda",baseurl:"URL Base",balance:"Balance",windowlessvideo:"Video sen vent\u00e1",stretchtofit:"Estirar pra axustar",mute:"Silencio",invokeurls:"Invocar URLs",fullscreen:"Pantalla Completa",enabled:"Habilitado",autostart:"Comezo Autom\u00e1tico",volume:"Volume",target:"Obxetivo",qtsrcchokespeed:"Vel. de choque",href:"Href",endtime:"Fin",starttime:"Inicio",enablejavascript:"Habilitar JavaScript",correction:"Sen correci\u00f3n",targetcache:"Obxetivo cache",playeveryframe:"Reproducir t\u00f3dolos frames",kioskmode:"Modo kiosco",controller:"Controller",menu:"Mostrar Men\u00fa",loop:"Repetitivo",play:"Comezo Autom\u00e1tico",hspace:"Espacio H.",vspace:"Espacio V.",class_name:"Clase",name:"Nome",id:"Id",type:"Tipo",size:"Tama\u00f1o",preview:"Vista Previa",constrain_proportions:"Bloquear proporci\u00f3ns",controls:"Controis",numloop:"N\u00fam. repetici\u00f3ns",console:"Consola",cache:"Cach\u00e9",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Ali\u00f1aci\u00f3n",scale:"Escala",quality:"Calidade",shuffle:"Aleatorio",prefetch:"PreBusca",nojava:"No java",maintainaspect:"Manter aspecto",imagestatus:"Estado de imaxe",center:"Centrado",autogotourl:"Ir a URL autom\u00e1t.",shockwave_options:"Opci\u00f3ns Shockwave",rmp_options:"Opci\u00f3ns Real media player",wmp_options:"Opci\u00f3ns Windows media player",qt_options:"Opci\u00f3ns Quicktime",flash_options:"Opci\u00f3ns Flash",hidden:"Oculto",align_bottom_left:"Abaixo Izda.",align_bottom_right:"Abaixo Dta.",flv_options:"Opci\u00f3ns Video Flash",flv_scalemode:"Modo escalado",flv_buffer:"Buffer",flv_startimage:"Imaxe inicio",flv_starttime:"Tempo inicio",flv_defaultvolume:"Volume predet.",flv_hiddengui:"Ocultar GUI",flv_autostart:"Inicio auto.",flv_loop:"Repetitivo",flv_showscalemodes:"Mostrar modos escala",flv_smoothvideo:"Video suave",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/gu_dlg.js b/js/tiny_mce/plugins/media/langs/gu_dlg.js new file mode 100755 index 000000000..c666774a4 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/gu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gu.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/he_dlg.js b/js/tiny_mce/plugins/media/langs/he_dlg.js new file mode 100755 index 000000000..15ca07ac5 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.media_dlg',{list:"\u05e8\u05e9\u05d9\u05de\u05d4",file:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d5\u05d1\u05e5",advanced:"\u05de\u05ea\u05e7\u05d3\u05dd",general:"\u05db\u05dc\u05dc\u05d9",title:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df",align_top_left:"\u05e9\u05de\u05d0\u05dc \u05dc\u05de\u05e2\u05dc\u05d4",align_center:"\u05de\u05e8\u05db\u05d6",align_left:"\u05dc\u05e9\u05de\u05d0\u05dc",align_bottom:"\u05dc\u05de\u05d8\u05d4",align_right:"\u05d9\u05de\u05d9\u05df",align_top:"\u05dc\u05de\u05e2\u05dc\u05d4",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"\u05d4\u05ea\u05e7\u05d3\u05de\u05d5\u05ea",sound:"\u05e6\u05dc\u05d9\u05dc",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"\u05d9\u05de\u05d9\u05df \u05dc\u05de\u05e2\u05dc\u05d4",uimode:"\u05de\u05e6\u05d1 \u05ea\u05e6\u05d5\u05d2\u05d4",rate:"\u05e7\u05e6\u05d1",playcount:"\u05de\u05e1\u05e4\u05e8 \u05d4\u05e9\u05de\u05e2\u05d5\u05ea",defaultframe:"Default frame",currentposition:"\u05de\u05d9\u05e7\u05d5\u05dd \u05e0\u05d5\u05db\u05d7\u05d9",currentmarker:"\u05e1\u05de\u05df \u05e0\u05d5\u05db\u05d7\u05d9",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"\u05de\u05ea\u05d7 \u05dc\u05d4\u05ea\u05d0\u05de\u05d4",mute:"\u05d4\u05e9\u05ea\u05e7",invokeurls:"Invoke URLs",fullscreen:"\u05de\u05e1\u05da \u05de\u05dc\u05d0",enabled:"\u05de\u05d5\u05e4\u05e2\u05dc",autostart:"\u05d4\u05ea\u05d7\u05dc \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea",volume:"\u05e2\u05d5\u05e6\u05de\u05d4",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u05d4\u05e6\u05d2\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8",loop:"\u05e0\u05d2\u05d9\u05e0\u05d4 \u05de\u05d7\u05d6\u05d5\u05e8\u05d9\u05ea",play:"\u05e0\u05d2\u05d9\u05e0\u05d4 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea \u05e2\u05dd \u05d4\u05d8\u05e2\u05d9\u05e0\u05d4",hspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",vspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9",class_name:"Class",name:"Name",id:"Id",type:"\u05e1\u05d5\u05d2",size:"\u05e8\u05d5\u05d7\u05d1 \u05d5\u05d2\u05d5\u05d1\u05d4",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",constrain_proportions:"\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"\u05d0\u05d9\u05db\u05d5\u05ea \u05d4\u05e1\u05e8\u05d8\u05d5\u05df",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"\u05de\u05e8\u05db\u05d6",autogotourl:"Auto goto URL",shockwave_options:"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea Shockwave",rmp_options:"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d2\u05df Real Media",wmp_options:"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05d3\u05d9\u05d4 \u05e4\u05dc\u05d9\u05d9\u05e8",qt_options:"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea Quicktime",flash_options:"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e4\u05dc\u05d0\u05e9",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/hi_dlg.js b/js/tiny_mce/plugins/media/langs/hi_dlg.js new file mode 100755 index 000000000..21619d699 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/hi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hi.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/hr_dlg.js b/js/tiny_mce/plugins/media/langs/hr_dlg.js new file mode 100755 index 000000000..f80bcfaa9 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/hr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hr.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/hu_dlg.js b/js/tiny_mce/plugins/media/langs/hu_dlg.js new file mode 100755 index 000000000..7cf8c9558 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.media_dlg',{list:"Lista",file:"F\u00e1jl/URL",advanced:"Halad\u00f3",general:"\u00c1ltal\u00e1nos",title:"Be\u00e1gyazott m\u00e9dia besz\u00far\u00e1sa/szerkeszt\u00e9se","align_top_left":"Bal-fent","align_center":"K\u00f6z\u00e9pen","align_left":"Balra","align_bottom":"Lent","align_right":"Jobbra","align_top":"Fent","qt_stream_warn":"Streamelt rtsp forr\u00e1sok a QT Src mez\u0151be val\u00f3k a halad\u00f3 lapon.\\nHozz\u00e1 kellene adnia egy nem streamelt verzi\u00f3t a Src mez\u0151ben.",qtsrc:"QT Src",progress:"Folymat",sound:"Hang",swstretchvalign:"Ny\u00fajt\u00e1s F-igaz\u00edt\u00e1s",swstretchhalign:"Ny\u00fajt\u00e1s V-igaz\u00edt\u00e1s",swstretchstyle:"Ny\u00fajt\u00e1s st\u00edlus",scriptcallbacks:"Script callbacks","align_top_right":"Jobb-fent",uimode:"UI M\u00f3d",rate:"Rate",playcount:"Lej\u00e1tsz\u00e1ssz\u00e1m",defaultframe:"Alap\u00e9rtelmezett frame",currentposition:"Aktu\u00e1lis poz\u00edci\u00f3",currentmarker:"Aktu\u00e1lis marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Ablak n\u00e9lk\u00fcli vide\u00f3",stretchtofit:"Ny\u00fajtva igaz\u00edt\u00e1s",mute:"N\u00e9ma",invokeurls:"URL-ek bevon\u00e1sa",fullscreen:"Teljes k\u00e9perny\u0151",enabled:"Enged\u00e9lyezve",autostart:"Automatikus kezd\u00e9s",volume:"Hanger\u0151",target:"C\u00e9l",qtsrcchokespeed:"Folyt\u00e1s sebess\u00e9ge",href:"Href",endtime:"Z\u00e1r\u00f3 id\u0151",starttime:"Kezd\u00e9si id\u0151",enablejavascript:"JavaScript enged\u00e9se",correction:"Nincs jav\u00edt\u00e1s",targetcache:"C\u00e9l cache",playeveryframe:"Minden kocka lej\u00e1tsz\u00e1sa",kioskmode:"Kiosk m\u00f3d",controller:"Vez\u00e9rl\u0151",menu:"Men\u00fc mutat\u00e1sa",loop:"Ism\u00e9tl\u00e9s",play:"Automatikus lej\u00e1tsz\u00e1s",hspace:"V-t\u00e1v",vspace:"F-t\u00e1v","class_name":"Oszt\u00e1ly",name:"N\u00e9v",id:"Id",type:"T\u00edpus",size:"Dimenzi\u00f3k",preview:"El\u0151n\u00e9zet","constrain_proportions":"Ar\u00e1nytart\u00e1s",controls:"Kezel\u0151k",numloop:"Ism\u00e9tl\u00e9ssz\u00e1m",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"H\u00e1tt\u00e9r",wmode:"WM\u00f3d",salign:"SElrendez\u00e9s",align:"Elrendez\u00e9s",scale:"Nagy\u00edt\u00e1s",quality:"Min\u0151s\u00e9g",shuffle:"V\u00e9letlenszer\u0171",prefetch:"El\u0151t\u00f6lt\u00e9s",nojava:"Nincs java",maintainaspect:"Ar\u00e1nytart\u00e1s",imagestatus:"K\u00e9p \u00e1llapot",center:"K\u00f6z\u00e9pre",autogotourl:"Automatikus URL-re ugr\u00e1s","shockwave_options":"Shockwave be\u00e1ll\u00edt\u00e1sai","rmp_options":"Real media player be\u00e1ll\u00edt\u00e1sai","wmp_options":"Windows media player be\u00e1ll\u00edt\u00e1sai","qt_options":"Quicktime be\u00e1ll\u00edt\u00e1sai","flash_options":"Flash be\u00e1ll\u00edt\u00e1sai",hidden:"Rejtett","align_bottom_left":"Bal-lent","align_bottom_right":"Bal-jobbra","flv_options":"Flash vide\u00f3 be\u00e1ll\u00edt\u00e1sai","flv_scalemode":"Nagy\u00edt\u00e1s m\u00f3d","flv_buffer":"Buffer","flv_startimage":"Start k\u00e9p","flv_starttime":"Start id\u0151","flv_defaultvolume":"Alap\u00e9rtelmezett hanger\u0151","flv_hiddengui":"Rejtett GUI","flv_autostart":"Aut\u00f3 start","flv_loop":"Ism\u00e9tl\u00e9s","flv_showscalemodes":"Nagy\u00edt\u00e1si m\u00f3dok mutat\u00e1sa","flv_smoothvideo":"Vide\u00f3 sim\u00edt\u00e1sa","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Video be\u00e1ll\u00edt\u00e1sok",altsource1:"Alternat\u00edv forr\u00e1s 1",altsource2:"Alternat\u00edv forr\u00e1s 2",preload:"El\u0151t\u00f6lt\u00e9s",poster:"Hozz\u00e1ad\u00f3",source:"Forr\u00e1s"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/hy_dlg.js b/js/tiny_mce/plugins/media/langs/hy_dlg.js new file mode 100755 index 000000000..0d7dd886d --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/hy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hy.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0424\u0430\u0439\u043b / URL",advanced:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",general:"\u041e\u0431\u0449\u0435\u0435",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c / \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab \\ nYou should also add a non streamed version to the Src field ..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"\u0410\u0432\u0442\u043e\u0441\u0442\u0430\u0440\u0442",volume:"\u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e",loop:"\u041b\u0443\u043f",play:"\u0410\u0432\u0442\u043e\u043f\u043b\u0435\u0439",hspace:"\u0433\u043e\u0440. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0432\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f",class_name:"\u041a\u043b\u0430\u0441\u0441",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",id:"Id",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u044b",preview:"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",constrain_proportions:"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",controls:"Controls",numloop:"Num loops",console:"Console",cache:"\u041a\u044d\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ia_dlg.js b/js/tiny_mce/plugins/media/langs/ia_dlg.js new file mode 100755 index 000000000..b03a3c7d9 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ia_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ia.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/\u5730\u5740",advanced:"\u9ad8\u7ea7",general:"\u57fa\u672c",title:"\u63d2\u5165/\u7f16\u8f91 \u5a92\u4f53",align_top_left:"\u9876\u90e8\u5c45\u5de6",align_center:"\u5c45\u4e2d",align_left:"\u5c45\u5de6",align_bottom:"\u5e95\u90e8",align_right:"\u5c45\u53f3",align_top:"\u9876\u90e8",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u7f29\u653e\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u7f29\u653e\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u7f29\u653e\u6837\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u6863",align_top_right:"\u9876\u90e8\u5c45\u53f3",uimode:"UI \u6a21\u5f0f",rate:"\u7801\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u7b7e",captioningid:"\u5b57\u5e55 id",baseurl:"Base URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u7a97\u53e3\u89c6\u9891",stretchtofit:"\u7f29\u653e\u81f3\u5408\u9002\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u8c03\u7528\u7684URLs",fullscreen:"\u5168\u5c4f\u5e55",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u5f00\u59cb",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u5e27\u64ad\u653e",kioskmode:"Kiosk \u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",class_name:"\u7c7b\u540d",name:"\u540d\u79f0",id:"Id",type:"\u7c7b\u578b",size:"\u5927\u5c0f",preview:"\u9884\u89c8",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash\u53d8\u6570",base:"\u57fa\u7ebf",bgcolor:"\u80cc\u666f\u8272",wmode:"WMode",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8bfb",nojava:"No java",maintainaspect:"\u7ef4\u62a4\u72b6\u6001",imagestatus:"\u56fe\u50cf\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8df3\u8f6c URL",shockwave_options:"Shockwave \u9009\u9879",rmp_options:"Real media player \u9009\u9879",wmp_options:"Windows media player \u9009\u9879",qt_options:"Quicktime \u9009\u9879",flash_options:"Flash \u9009\u9879",hidden:"\u9690\u85cf",align_bottom_left:"\u5e95\u90e8\u5c45\u5de6",align_bottom_right:"\u5e95\u90e8\u5c45\u53f3",flv_options:"Flash \u89c6\u9891\u9009\u9879",flv_scalemode:"\u7f29\u653e\u6a21\u5f0f",flv_buffer:"\u7f13\u51b2",flv_startimage:"\u5f00\u59cb\u56fe\u50cf",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9ed8\u8ba4\u58f0\u97f3",flv_hiddengui:"\u9690\u85cfGUI",flv_autostart:"\u81ea\u52a8\u5f00\u59cb",flv_loop:"\u5faa\u73af",flv_showscalemodes:"\u663e\u793a\u7f29\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u89c6\u9891",flv_jscallback:"JS \u56de\u6a94"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/id_dlg.js b/js/tiny_mce/plugins/media/langs/id_dlg.js new file mode 100755 index 000000000..a5781c4c0 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Atas Kiri",align_center:"Tengah",align_left:"Kiri",align_bottom:"Bawah",align_right:"Kanan",align_top:"Atas",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Atas Kanan",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bawah Kiri",align_bottom_right:"Bawah kanan",flv_options:"Opsi Flash video",flv_scalemode:"Mode Skala",flv_buffer:"Buffer",flv_startimage:"Gambar Mulai",flv_starttime:"Waktu mulai",flv_defaultvolume:"Volume suara default",flv_hiddengui:"GUI tersembunyi",flv_autostart:"Mulai otomatis",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ii_dlg.js b/js/tiny_mce/plugins/media/langs/ii_dlg.js new file mode 100755 index 000000000..6f26ec23b --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ii_dlg.js @@ -0,0 +1,103 @@ +tinyMCE.addI18n('ii.media_dlg',{ +title:"\u63D2\u5165/\u7F16\u8F91\u5D4C\u5165\u5A92\u4F53", +general:"\u4E00\u822C", +advanced:"\u9AD8\u7EA7", +file:"\u6587\u4EF6/\u7F51\u5740", +list:"\u5217\u8868", +size:"\u5C3A\u5BF8", +preview:"\u9884\u89C8", +constrain_proportions:"\u4FDD\u6301\u6BD4\u4F8B", +type:"\u7C7B\u578B", +id:"Id", +name:"\u540D\u79F0", +class_name:"\u7C7B\u578B", +vspace:"\u6C34\u51C6\u95F4\u8DDD", +hspace:"\u5782\u76F4\u95F4\u8DDD", +play:"\u81EA\u52A8\u64AD\u653E", +loop:"\u56DE\u5708\u64AD\u653E", +menu:"\u663E\u793A\u529F\u80FD\u8868", +quality:"\u54C1\u8D28", +scale:"\u6BD4\u4F8B", +align:"\u5BF9\u9F50", +salign:"SAlign", +wmode:"\u7A97\u53E3\u6A21\u5F0F", +bgcolor:"\u80CC\u666F\u8272", +base:"\u57FA\u5E95", +flashvars:"\u53C2\u6570", +liveconnect:"SWLiveConnect", +autohref:"\u81EA\u52A8HREF", +cache:"\u7F13\u5B58", +hidden:"\u9690\u85CF", +controller:"\u63A7\u5236\u53F0", +kioskmode:"Kiosk\u6A21\u5F0F", +playeveryframe:"\u64AD\u653E\u6BCF\u4E00\u5E27", +targetcache:"\u76EE\u6807\u7F13\u5B58", +correction:"\u6CA1\u6709\u4FEE\u6B63", +enablejavascript:"\u542F\u7528JavaScript", +starttime:"\u5F00\u59CB\u65F6\u95F4", +endtime:"\u7ED3\u675F\u65F6\u95F4", +href:"\u8FDE\u7ED3", +qtsrcchokespeed:"Choke speed", +target:"\u76EE\u6807", +volume:"\u97F3\u91CF", +autostart:"\u81EA\u52A8\u5F00\u59CB", +enabled:"\u542F\u7528", +fullscreen:"\u5168\u5C4F", +invokeurls:"\u76F8\u5173URLs", +mute:"\u9759\u97F3", +stretchtofit:"\u62C9\u4F38", +windowlessvideo:"\u65E0\u8FB9\u6846", +balance:"\u5E73\u8861", +baseurl:"\u57FA\u51C6URL", +captioningid:"Captioning id", +currentmarker:"\u5F53\u524D\u6807\u8BB0", +currentposition:"\u5F53\u524D\u4F4D\u7F6E", +defaultframe:"\u9ED8\u8BA4\u5E27", +playcount:"\u64AD\u653E\u8BA1\u6570", +rate:"\u5E27\u7387", +uimode:"\u9762\u677F\u6A21\u5F0F", +flash_options:"Flash\u9009\u9879", +qt_options:"Quicktime\u9009\u9879", +wmp_options:"Windows media player\u9009\u9879", +rmp_options:"Real media player\u9009\u9879", +shockwave_options:"Shockwave\u9009\u9879", +autogotourl:"\u81EA\u52A8\u8F6C\u5230URL", +center:"\u4E2D\u5FC3", +imagestatus:"\u56FE\u50CF\u72B6\u6001", +maintainaspect:"Maintain aspect", +nojava:"No java", +prefetch:"\u9884\u8BFB\u53D6", +shuffle:"Shuffle", +console:"\u63A7\u5236\u53F0", +numloop:"\u56DE\u5708\u6B21\u6570", +controls:"\u63A7\u5236\u5668", +scriptcallbacks:"\u811A\u672C\u56DE\u6863", +swstretchstyle:"\u62C9\u5347\u6A21\u5F0F", +swstretchhalign:"\u6C34\u51C6\u62C9\u5347", +swstretchvalign:"\u5782\u76F4\u62C9\u5347", +sound:"\u58F0\u97F3", +progress:"\u8FDB\u5EA6", +qtsrc:"QT Src", +qt_stream_warn:"\u6D41\u5F0Frtsp\u8D44\u6E90\u5E94\u8BE5\u6DFB\u52A0\u5230\u201C\u9AD8\u7EA7\u201D\u4E2DQT Src\u3002\n\u540C\u65F6\u6DFB\u52A0\u975E\u6D41\u5F0F\u8D44\u6E90\u5230Src\u3002", +align_top:"\u4E0A\u65B9", +align_right:"\u9760\u53F3", +align_bottom:"\u4E0B\u65B9", +align_left:"\u9760\u5DE6", +align_center:"\u4E2D\u95F4", +align_top_left:"\u5DE6\u4E0A", +align_top_right:"\u53F3\u4E0A", +align_bottom_left:"\u5DE6\u4E0B", +align_bottom_right:"\u53F3\u4E0B", +flv_options:"Flash\u89C6\u9891\u9009\u9879", +flv_scalemode:"Scale mode", +flv_buffer:"\u7F13\u51B2", +flv_startimage:"\u5F00\u59CB\u753B\u9762", +flv_starttime:"\u5F00\u59CB\u65F6\u95F4", +flv_defaultvolume:"\u9884\u8BBE\u97F3\u91CF", +flv_hiddengui:"\u9690\u85CFGUI", +flv_autostart:"\u81EA\u52A8\u64AD\u653E", +flv_loop:"\u56DE\u5708", +flv_showscalemodes:"Show scale modes", +flv_smoothvideo:"\u5E73\u6ED1\u56FE\u50CF", +flv_jscallback:"JS\u56DE\u6863" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/is_dlg.js b/js/tiny_mce/plugins/media/langs/is_dlg.js new file mode 100755 index 000000000..4d20a5cb4 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/is_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('is.media_dlg',{list:"Listi",file:"Skr\u00e1/Sl\u00f3\u00f0",advanced:"\u00cdtarlegt",general:"Almennt",title:"Setja inn / Breyta birtingu margmi\u00f0lunar",align_top_left:"Efst vinstri",align_center:"Mi\u00f0ja",align_left:"Vinstri",align_bottom:"Ne\u00f0st",align_right:"H\u00e6gri",align_top:"Efst",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Sta\u00f0a",sound:"Hlj\u00f3\u00f0",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Efst h\u00e6gri",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Upprunalegur rammi",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Gluggalaust myndband",stretchtofit:"Teigja til a\u00f0 passa",mute:"Dempa",invokeurls:"Virkja sl\u00f3\u00f0ir",fullscreen:"Heilskj\u00e1r",enabled:"Virkt",autostart:"Byrja sj\u00e1lfvirkt",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"S\u00fdna valmynd",loop:"Endurtaka",play:"Sj\u00e1lfvirk spilun",hspace:"L\u00e1r-bil",vspace:"L\u00f3\u00f0r-bil",class_name:"Flokkur",name:"Nafn",id:"Id",type:"Ger\u00f0",size:"V\u00edddir",preview:"Forsko\u00f0un",constrain_proportions:"Halda hlutf\u00f6llum",controls:"Stj\u00f3rn",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Bakgrunnur",wmode:"WMode",salign:"SAlign",align:"J\u00f6fnun",scale:"A\u00f0l\u00f6gun",quality:"G\u00e6\u00f0i",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"Ekkert java",maintainaspect:"Halda hlutf\u00f6llum",imagestatus:"Sta\u00f0a myndar",center:"Mi\u00f0ja",autogotourl:"Auto goto URL",shockwave_options:"Shockwave m\u00f6guleikar",rmp_options:"Real media player m\u00f6guleikar",wmp_options:"Windows media player m\u00f6guleikar",qt_options:"Quicktime m\u00f6guleikar",flash_options:"Flash m\u00f6guleikar",hidden:"Hidden",align_bottom_left:"Ne\u00f0st vinstri",align_bottom_right:"Ne\u00f0st h\u00e6gri",flv_options:"Flash m\u00f6guleikar",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/it_dlg.js b/js/tiny_mce/plugins/media/langs/it_dlg.js new file mode 100755 index 000000000..36e80448f --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.media_dlg',{list:"Lista",file:"File/URL",advanced:"Avanzate",general:"Generale",title:"Inserisci/modifica file multimediale",align_top_left:"Alto a sinistra",align_center:"Centro",align_left:"Sinistra",align_bottom:"Basso",align_right:"Destra",align_top:"Alto",qt_stream_warn:"Le risorse rstp \'streamed\' devono essere aggiunte al campo Sorgente QT nella tabella Avanzate.\\nSi dovrebbe inserire anche una versione non \'streamed\' al campo Sorgente..",qtsrc:"Sorgente QT",progress:"Avanzamento",sound:"Suono",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Alto a destra",uimode:"Modalit\u00e0 Interfaccia Utente",rate:"Qualit\u00e0",playcount:"Conteggio esecuzione",defaultframe:"frame predefinito",currentposition:"Posizione corrente",currentmarker:"Indicatore corrente",captioningid:"Didascalia dell\'Id",baseurl:"URL base",balance:"Bilanciamento",windowlessvideo:"Video senza finestra",stretchtofit:"Adatta dimensioni",mute:"Muto",invokeurls:"Invoca URLs",fullscreen:"Tutto schermo",enabled:"Abilitato",autostart:"Avvio automatico",volume:"Volume",target:"Target",qtsrcchokespeed:"Velocit\u00e0 cursore",href:"Href",endtime:"Ora fine",starttime:"Ora inizio",enablejavascript:"Abilita JavaScript",correction:"Nessuna correzione",targetcache:"Cache del target",playeveryframe:"Esegui ogni frame",kioskmode:"Modalit\u00e0 Kiosk",controller:"Controller",menu:"Mostra menu",loop:"Riproduzione ciclica",play:"Esecuzione automatica",hspace:"H-Space",vspace:"V-Space",class_name:"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimensioni",preview:"Anteprima",constrain_proportions:"Mantieni proporzioni",controls:"Controlli",numloop:"Numero cicli",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Sfondo",wmode:"WMode",salign:"SAlign",align:"Allineamento",scale:"Scala",quality:"Qualit\u00e0",shuffle:"Shuffle",prefetch:"Precaricamento",nojava:"No java",maintainaspect:"Mantieni aspetto",imagestatus:"Stato immagine",center:"Centra",autogotourl:"Vai a URL automatico",shockwave_options:"Opzioni Shockwave",rmp_options:"Opzioni Real media player",wmp_options:"Opzioni Windows media player",qt_options:"Opzioni Quicktime",flash_options:"Opzioni Flash",hidden:"Nascosto",align_bottom_left:"Basso a sinistra",align_bottom_right:"Basso a destra",flv_options:"Opzioni video Flash",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Immagine avvio",flv_starttime:"Tempo avvio",flv_defaultvolume:"Volume predefinito",flv_hiddengui:"GUI nascosta",flv_autostart:"Avvio automatico",flv_loop:"Riproduzione ciclica",flv_showscalemodes:"Mostra scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ja_dlg.js b/js/tiny_mce/plugins/media/langs/ja_dlg.js new file mode 100755 index 000000000..5fa0f6436 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ja_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ja.media_dlg',{list:"\u4e00\u89a7\u304b\u3089\u9078\u3076",file:"\u30d5\u30a1\u30a4\u30eb/URL",advanced:"\u4e0a\u7d1a\u8005\u5411\u3051",general:"\u4e00\u822c",title:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165/\u7de8\u96c6","align_top_left":"\u5de6\u4e0a","align_center":"\u4e2d\u592e","align_left":"\u5de6","align_bottom":"\u4e0b","align_right":"\u53f3","align_top":"\u4e0a","qt_stream_warn":"rtsp\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ea\u30bd\u30fc\u30b9\u3092\u300c\u4e0a\u7d1a\u8005\u5411\u3051\u300d\u30bf\u30d6\u306e\u300cQT Src\u300d\u6b04\u306b\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\u307e\u305f\u3001\u300cSrc\u300d\u6b04\u306b\u306f\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u306f\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30fc\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",qtsrc:"QT Src",progress:"Progress",sound:"\u30b5\u30a6\u30f3\u30c9",swstretchvalign:"\u5782\u76f4\u4f4d\u7f6e",swstretchhalign:"\u6c34\u5e73\u4f4d\u7f6e",swstretchstyle:"\u4f38\u7e2e",scriptcallbacks:"\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u30a4\u30d9\u30f3\u30c8","align_top_right":"\u53f3\u4e0a",uimode:"UI\u8868\u793a\u30e2\u30fc\u30c9",rate:"\u518d\u751f\u30ec\u30fc\u30c8",playcount:"\u518d\u751f\u56de\u6570",defaultframe:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30d5\u30ec\u30fc\u30e0",currentposition:"\u518d\u751f\u4f4d\u7f6e\uff08\u79d2\u5358\u4f4d\uff09",currentmarker:"\u30de\u30fc\u30ab\u30fc\u756a\u53f7",captioningid:"\u30ad\u30e3\u30d7\u30b7\u30e7\u30f3\u8868\u793a\u8981\u7d20ID",baseurl:"Base URL",balance:"\u30b9\u30c6\u30ec\u30aa\u306e\u30d0\u30e9\u30f3\u30b9",windowlessvideo:"windowless\u30e2\u30fc\u30c9",stretchtofit:"\u81ea\u52d5\u30b5\u30a4\u30ba\u5909\u66f4",mute:"\u30df\u30e5\u30fc\u30c8",invokeurls:"URL\u3092\u958b\u304f",fullscreen:"\u30d5\u30eb\u30b9\u30af\u30ea\u30fc\u30f3",enabled:"\u6709\u52b9\u306b\u3059\u308b",autostart:"\u81ea\u52d5\u518d\u751f",volume:"\u97f3\u91cf",target:"\u30bf\u30fc\u30b2\u30c3\u30c8",qtsrcchokespeed:"\u518d\u751f\u30c7\u30fc\u30bf\u30ec\u30fc\u30c8",href:"\u30ea\u30f3\u30af\u5148URL",endtime:"\u7d42\u4e86\u30d5\u30ec\u30fc\u30e0",starttime:"\u958b\u59cb\u30d5\u30ec\u30fc\u30e0",enablejavascript:"JavaScript\u3092\u6709\u52b9\u306b\u3059\u308b",correction:"No correction",targetcache:"\u30bf\u30fc\u30b2\u30c3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5",playeveryframe:"\u5168\u30d5\u30ec\u30fc\u30e0\u518d\u751f",kioskmode:"Kiosk\u30e2\u30fc\u30c9",controller:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u8868\u793a",menu:"\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a",loop:"\u7e70\u308a\u8fd4\u3057\u518d\u751f",play:"\u81ea\u52d5\u518d\u751f",hspace:"\u5de6\u53f3\u4f59\u767d",vspace:"\u4e0a\u4e0b\u4f59\u767d","class_name":"\u30af\u30e9\u30b9",name:"\u540d\u524d",id:"ID",type:"\u30bf\u30a4\u30d7",size:"\u30b5\u30a4\u30ba",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc","constrain_proportions":"\u7e26\u6a2a\u6bd4\u3092\u4fdd\u5b58",controls:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u8868\u793a",numloop:"\u7e70\u308a\u8fd4\u3057\u56de\u6570",console:"\u30b3\u30f3\u30bd\u30fc\u30eb",cache:"\u30ad\u30e3\u30c3\u30b7\u30e5",autohref:"\u81ea\u52d5\u8aad\u8fbc",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u80cc\u666f\u8272",wmode:"WMode",salign:"SAlign",align:"\u914d\u7f6e",scale:"\u4f38\u7e2e",quality:"\u54c1\u8cea",shuffle:"\u30b7\u30e3\u30c3\u30d5\u30eb",prefetch:"\u30d7\u30ea\u30d5\u30a7\u30c3\u30c1",nojava:"Java\u3092\u7981\u6b62",maintainaspect:"\u7e26\u6a2a\u6bd4\u4fdd\u5b58",imagestatus:"\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a",center:"\u30bb\u30f3\u30bf\u30ea\u30f3\u30b0",autogotourl:"autogotourl","shockwave_options":"Shockwave\u30aa\u30d7\u30b7\u30e7\u30f3","rmp_options":"Real media player\u30aa\u30d7\u30b7\u30e7\u30f3","wmp_options":"Windows media player\u30aa\u30d7\u30b7\u30e7\u30f3","qt_options":"Quicktime\u30aa\u30d7\u30b7\u30e7\u30f3","flash_options":"Flash\u30aa\u30d7\u30b7\u30e7\u30f3",hidden:"\u975e\u8868\u793a","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b","flv_options":"Flash video\u30aa\u30d7\u30b7\u30e7\u30f3","flv_scalemode":"\u4f38\u7e2e\u30e2\u30fc\u30c9","flv_buffer":"\u30d0\u30c3\u30d5\u30a1\u79d2\u6570","flv_startimage":"\u521d\u671f\u753b\u50cfURL","flv_starttime":"\u958b\u59cb\u30d5\u30ec\u30fc\u30e0","flv_defaultvolume":"\u97f3\u91cf","flv_hiddengui":"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u975e\u8868\u793a","flv_autostart":"\u81ea\u52d5\u518d\u751f","flv_loop":"\u7e70\u308a\u8fd4\u3057\u518d\u751f","flv_showscalemodes":"\u4f38\u7e2e\u5207\u66ff\u30dc\u30bf\u30f3\u8868\u793a","flv_smoothvideo":"\u30b9\u30e0\u30fc\u30b8\u30f3\u30b0","flv_jscallback":"JS\u30b3\u30fc\u30eb\u30d0\u30c3\u30af","html5_video_options":"HTML5 Video \u30aa\u30d7\u30b7\u30e7\u30f3",altsource1:"\u4ee3\u66ff\u30bd\u30fc\u30b91",altsource2:"\u4ee3\u66ff\u30bd\u30fc\u30b92",preload:"preload\u5c5e\u6027",poster:"poster\u5c5e\u6027",source:"HTML"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ka_dlg.js b/js/tiny_mce/plugins/media/langs/ka_dlg.js new file mode 100755 index 000000000..09ee13cc7 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ka_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ka.media_dlg',{list:"\u10e9\u10d0\u10db\u10dd\u10dc\u10d0\u10d7\u10d5\u10d0\u10da\u10d8",file:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",advanced:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7",general:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",title:"\u10d9\u10da\u10d8\u10de\u10d8\u10e1 \u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8",align_top_left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4",align_center:"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d8",align_left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_bottom:"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_top:"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",qt_stream_warn:"\u10dc\u10d0\u10d9\u10d0\u10d3\u10dd\u10d5\u10d0\u10dc\u10d8 rtsp \u10e0\u10d4\u10e1\u10e3\u10e0\u10e1\u10d4\u10d1\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10e9\u10d0\u10d0\u10db\u10d0\u10e2\u10dd\u10d7 QT Src \u10d5\u10d4\u10da\u10e8\u10d8, \"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\" \u10d2\u10d5\u10d4\u10e0\u10d3\u10d6\u10d4.\n\u10ee\u10dd\u10da\u10dd \u10d0\u10e0\u10d0 \u10dc\u10d0\u10d9\u10d0\u10d3\u10dd\u10d5\u10d0\u10dc\u10d8 \u10d5\u10d4\u10e0\u10e1\u10d8\u10d0 - Src \u10d5\u10d4\u10da\u10e8\u10d8.",qtsrc:"QT Src",progress:"\u10de\u10e0\u10dd\u10d2\u10e0\u10d4\u10e1\u10d8",sound:"\u10ee\u10db\u10d0",swstretchvalign:"\u10d5\u10d4\u10e0\u10e2. \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10d2\u10d0\u10ec\u10d4\u10da\u10d5\u10d8\u10d7",swstretchhalign:"\u10f0\u10dd\u10e0\u10d8\u10d6. \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10d2\u10d0\u10ec\u10d4\u10da\u10d5\u10d8\u10d7",swstretchstyle:"\u10d2\u10d0\u10ec\u10d4\u10da\u10d5\u10d8\u10e1 \u10e1\u10e2\u10d8\u10da\u10d8",scriptcallbacks:"\u10e1\u10e5\u10e0\u10d8\u10de\u10e2\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0",align_top_right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4",uimode:"\u10d8\u10dc\u10e2\u10d4\u10e0\u10e4\u10d4\u10d8\u10e1\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10d8",rate:"\u10e0\u10d4\u10d8\u10e2\u10d8\u10dc\u10d2\u10d8",playcount:"\u10dc\u10d0\u10ee\u10d5\u10d4\u10d1\u10d8\u10e1 \u10db\u10d7\u10d5\u10da\u10d4\u10da\u10d8",defaultframe:"\u10db\u10d7\u10d0\u10d5\u10d0\u10e0\u10d8 \u10d9\u10d0\u10d3\u10e0\u10d8",currentposition:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0",currentmarker:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10db\u10d0\u10e0\u10d9\u10d4\u10e0\u10d8",captioningid:"\u10e1\u10e3\u10d1\u10e2\u10d8\u10e2\u10e0\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8",baseurl:"\u10e1\u10d0\u10d1\u10d0\u10d6\u10d8\u10e1\u10dd \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",balance:"\u10d1\u10d0\u10da\u10d0\u10dc\u10e1\u10d8",windowlessvideo:"\u10e4\u10d0\u10dc\u10ef\u10e0\u10d8\u10e1 \u10d5\u10d8\u10d3\u10d4\u10dd",stretchtofit:"\u10e4\u10d0\u10dc\u10ef\u10e0\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0\u10d6\u10d4",mute:"\u10ee\u10db\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",invokeurls:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10eb\u10d0\u10ee\u10d4\u10d1\u10d0",fullscreen:"\u10db\u10d7\u10d4\u10da \u10d4\u10d9\u10e0\u10d0\u10dc\u10d6\u10d4",enabled:"\u10e9\u10d0\u10e0\u10d7\u10e3\u10da\u10d8\u10d0",autostart:"\u10d0\u10d5\u10e2\u10dd\u10d2\u10d0\u10e8\u10d5\u10d4\u10d1\u10d0",volume:"\u10ee\u10db\u10d0",target:"\u10db\u10d8\u10d6\u10d0\u10dc\u10d8",qtsrcchokespeed:"\u10e1\u10d8\u10ee\u10e8\u10d8\u10e0\u10d4",href:"\u10d1\u10db\u10e3\u10da\u10d8",endtime:"\u10d3\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10d3\u10e0\u10dd",starttime:"\u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d8\u10e1 \u10d3\u10e0\u10dd",enablejavascript:"JavaScript-\u10d8\u10e1 \u10e9\u10d0\u10e0\u10d7\u10d5\u10d0",correction:"\u10d9\u10dd\u10e0\u10d4\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",targetcache:"\u10e5\u10d4\u10e8\u10d8",playeveryframe:"\u10e7\u10d5\u10d4\u10da\u10d0 \u10d9\u10d0\u10d3\u10e0\u10d8\u10e1 \u10d0\u10e1\u10d0\u10ee\u10d5\u10d0",kioskmode:"\u10d9\u10d8\u10dd\u10e1\u10d9\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10d8",controller:"\u10db\u10d0\u10e0\u10d7\u10d5\u10d0",menu:"\u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",loop:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",play:"\u10d0\u10d5\u10e2\u10dd\u10d2\u10d0\u10e8\u10d5\u10d4\u10d1\u10d0",hspace:"\u10f0\u10dd\u10e0\u10d8\u10d6. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",vspace:"\u10d5\u10d4\u10e0\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",class_name:"\u10d9\u10da\u10d0\u10e1\u10d8",name:"\u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0",id:"\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8",type:"\u10e2\u10d8\u10de\u10d8",size:"\u10d6\u10dd\u10db\u10d4\u10d1\u10d8",preview:"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0\u10d8 \u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0",constrain_proportions:"\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10e0\u10e9\u10e3\u10dc\u10d4\u10d1\u10d0",controls:"\u10db\u10d0\u10e0\u10d7\u10d5\u10d0",numloop:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0\u10d7\u10d0 \u10e0\u10d8\u10ea\u10ee\u10d5\u10d8",console:"\u10d9\u10dd\u10dc\u10e1\u10dd\u10da\u10d8",cache:"\u10e5\u10d4\u10e8\u10d8",autohref:"\u10d0\u10d5\u10e2\u10dd \u10d1\u10db\u10e3\u10da\u10d8",liveconnect:"SWLiveConnect",flashvars:"Flas \u10d1\u10e0\u10eb\u10d0\u10dc\u10d4\u10d1\u10d4\u10d1\u10d8",base:"Base",bgcolor:"\u10e4\u10dd\u10dc\u10d8",wmode:"\u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0",salign:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",align:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",scale:"\u10db\u10d8\u10d3\u10d0\u10db\u10dd",quality:"\u10ee\u10d0\u10e0\u10d8\u10e1\u10ee\u10d8",shuffle:"\u0412 \u0440\u0430\u0437\u0431\u0440\u043e\u0441",prefetch:"\u10d0\u10db\u10dd\u10d9\u10e0\u10d4\u10e4\u10d0",nojava:"Java-\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",maintainaspect:"\u10d6\u10dd\u10db\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10ee\u10e1\u10dd\u10d5\u10e0\u10d4\u10d1\u10d0",imagestatus:"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10e2\u10d0\u10e2\u10e3\u10e1\u10d8",center:"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d8",autogotourl:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d6\u10d4 \u10d0\u10d5\u10e2\u10dd \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0",shockwave_options:"Shockwave \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",rmp_options:"Real Media \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",wmp_options:"Windows Media \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",qt_options:"Quicktime \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",flash_options:"Flash \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",hidden:"\u10d3\u10d0\u10e4\u10d0\u10e0\u10e3\u10da\u10d8",align_bottom_left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4",align_bottom_right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4",flv_options:"Flash \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",flv_scalemode:"\u10db\u10d0\u10e1\u10e8\u10e2\u10d0\u10d1\u10d8",flv_buffer:"\u10d1\u10e3\u10e4\u10d4\u10e0\u10d8",flv_startimage:"\u10e1\u10d0\u10ec\u10e7\u10d8\u10e1\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",flv_starttime:"\u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d8\u10e1 \u10d3\u10e0\u10dd",flv_defaultvolume:"\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8 \u10ee\u10db\u10d0",flv_hiddengui:"\u10d3\u10d0\u10e4\u10d0\u10e0\u10e3\u10da\u10d8 \u10d8\u10dc\u10e2\u10d4\u10e0\u10e4\u10d4\u10d8\u10e1\u10d8",flv_autostart:"\u10d0\u10d5\u10e2\u10dd \u10ee\u10db\u10d0",flv_loop:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",flv_showscalemodes:"\u10db\u10d0\u10e8\u10e2\u10d0\u10d1\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10d8",flv_smoothvideo:"\u10d7\u10d0\u10dc\u10d0\u10d5\u10d0\u10e0\u10d8 \u10d5\u10d8\u10d3\u10d4\u10dd",flv_jscallback:"JS \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0",html5_video_options:"HTML5-\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",altsource1:"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd 1",altsource2:"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd 2",preload:"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0\u10d8 \u10e9\u10d0\u10db\u10dd\u10e2\u10d5\u10d8\u10e0\u10d7\u10d5\u10d0",poster:"\u10de\u10dd\u10e1\u10e2\u10d4\u10e0\u10d8",source:"\u10ec\u10e7\u10d0\u10e0\u10dd"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/kl_dlg.js b/js/tiny_mce/plugins/media/langs/kl_dlg.js new file mode 100755 index 000000000..8f995ec01 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/kl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('kl.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/km_dlg.js b/js/tiny_mce/plugins/media/langs/km_dlg.js new file mode 100755 index 000000000..420b5f57a --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/km_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('km.media_dlg',{list:"\u1794\u1789\u17d2\u1787\u17b8",file:"\u17af\u1780\u179f\u17b6\u179a/\u17a2\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u00a0URL",advanced:"\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb",general:"\u1791\u17bc\u1791\u17c5",title:"\u1794\u1789\u17d2\u1785\u17bc\u179b / \u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u1798\u17c1\u178c\u17c0\u1794\u1784\u17d2\u1780\u1794\u17cb",align_top_left:"\u179b\u17be\u1786\u17d2\u179c\u17c1\u1784",align_center:"\u1780\u178e\u17d2\u178a\u17b6\u179b",align_left:"\u1786\u17d2\u179c\u17c1\u1784",align_bottom:"\u1794\u17b6\u178f",align_right:"\u179f\u17d2\u178a\u17b6\u17c6",align_top:"\u1780\u17c6\u1796\u17bc\u179b",qt_stream_warn:"\u1794\u17d2\u179a\u1797\u1796\u179f\u17d2\u1791\u17d2\u179a\u17b8\u1798 rtsp (\u1796\u17b7\u1792\u17b8\u1780\u17b6\u179a\u1794\u1784\u17d2\u17a0\u17bc\u179a\u1796\u17c1\u179b\u1796\u17b7\u178f)\u1782\u17bd\u179a\u178f\u17d2\u179a\u17bc\u179c\u1794\u1793\u17d2\u1790\u17c2\u1798\u1791\u17c5\u1780\u17d2\u1793\u17bb\u1784\u179c\u17b6\u179b QT Src \u1780\u17d2\u179a\u17c4\u1798\u1795\u17d2\u1791\u17b6\u17c6\u1784\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb\u00a0\u17d4n\u179f\u17d2\u179a\u1794\u1782\u17d2\u1793\u17b6\u1793\u17c1\u17c7 \u17a2\u17d2\u1793\u1780\u1782\u17bd\u179a\u1794\u1793\u17d2\u1790\u17c2\u1798\u1780\u17c6\u178e\u17c2\u1798\u17b7\u1793\u1798\u17c2\u1793\u179f\u17d2\u1791\u17d2\u179a\u17b8\u1798\u1791\u17c5\u1780\u17d2\u1793\u17bb\u1784\u179c\u17b6\u179b\u1794\u17d2\u179a\u1797\u1796 Src\u00a0\u17d4\"",qtsrc:"\u1794\u17d2\u179a\u1797\u1796 QT",progress:"\u179c\u178c\u17d2\u178d\u1793\u1797\u17b6\u1796",sound:"\u179f\u1798\u17d2\u179b\u17c1\u1784",swstretchvalign:"\u1791\u17b6\u1789\u178f\u1798\u17d2\u179a\u17b9\u1798\u1794\u1789\u17d2\u1788\u179a",swstretchhalign:"\u1791\u17b6\u1789\u178f\u1798\u17d2\u179a\u17b9\u1798\u1795\u17d2\u178a\u17c1\u1780",swstretchstyle:"\u179a\u1785\u1793\u17b6\u1794\u17d0\u1791\u17d2\u1798\u1791\u17b6\u1789\u179c\u17c2\u1784",scriptcallbacks:"\u179f\u17d2\u1782\u17d2\u179a\u17b8\u1794\u17a0\u17c5\u1798\u1780\u179c\u17b7\u1789",align_top_right:"\u179b\u17be\u179f\u17d2\u178a\u17b6\u17c6",uimode:"\u1798\u17c9\u17bc\u178a UI",rate:"\u17a2\u178f\u17d2\u179a\u17b6",playcount:"\u1785\u17c6\u1793\u17bd\u1793\u178a\u1784\u1785\u17b6\u1780\u17cb",defaultframe:"\u179f\u1793\u17d2\u179b\u17b9\u1780\u179b\u17c6\u1793\u17b6\u17c6\u178a\u17be\u1798",currentposition:"\u1791\u17b8\u178f\u17b6\u17c6\u1784\u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793",currentmarker:"\u1785\u17c6\u178e\u17b6\u17c6\u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793",captioningid:"\u179f\u179b.\u1785\u17c6\u178e\u1784\u1787\u17be\u1784\u178f\u17bc\u1785",baseurl:"URL\u00a0\u1782\u17c4\u179b",balance:"\u179f\u1798\u178f\u17bb\u179b\u17d2\u1799",windowlessvideo:"\u1797\u17b6\u1796\u1799\u1793\u17d2\u178f\u1782\u17d2\u1798\u17b6\u1793\u1794\u1784\u17d2\u17a2\u17bd\u1785",stretchtofit:"\u1791\u17b6\u1789\u17b1\u17d2\u1799\u179f\u1798",mute:"\u1794\u17b7\u1791\u179f\u1798\u17d2\u179b\u17c1\u1784",invokeurls:"\u17a0\u17c5 URLs",fullscreen:"\u1796\u17c1\u1789\u17a2\u17c1\u1780\u17d2\u179a\u1784\u17cb",enabled:"\u1794\u17b6\u1793\u1794\u17be\u1780\u1794\u17d2\u179a\u17be",autostart:"\u179f\u17d2\u179c\u17d0\u1799\u1785\u17b6\u1794\u17cb\u1795\u17d2\u178a\u17be\u1798",volume:"\u1780\u1798\u17d2\u179a\u17b7\u178f\u179f\u1798\u17d2\u179b\u17c1\u1784",target:"\u1782\u17c4\u179b\u178a\u17c5",qtsrcchokespeed:"\u1794\u1784\u17d2\u17a2\u1793\u17cb\u179b\u17d2\u1794\u17bf\u1793",href:"\u178f\u17c6\u178e\u1781\u17d2\u1796\u179f\u17cb",endtime:"\u179c\u17c1\u179b\u17b6\u1794\u1789\u17d2\u1785\u1794\u17cb",starttime:"\u179c\u17c1\u179b\u17b6\u1785\u17b6\u1794\u17cb\u1795\u17d2\u178a\u17be\u1798",enablejavascript:"\u1794\u17be\u1780\u1794\u17d2\u179a\u17be\u00a0JavaScript",correction:"\u1782\u17d2\u1798\u17b6\u1793\u1780\u17b6\u179a\u1780\u17c2\u178f\u1798\u17d2\u179a\u17bc\u179c",targetcache:"\u1783\u17d2\u179b\u17b6\u17c6\u1784\u179f\u1798\u17d2\u1784\u17b6\u178f\u17cb\u1782\u17c4\u179b\u178a\u17c5",playeveryframe:"\u1785\u17b6\u1780\u17cb\u1782\u17d2\u179a\u1794\u17cb\u179f\u1793\u17d2\u179b\u17b9\u1780",kioskmode:"\u1798\u17c9\u17bc\u178a Kiosk",controller:"\u1794\u17d2\u179a\u178a\u17b6\u1794\u17cb\u1794\u1789\u17d2\u1787\u17b6",menu:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u1798\u17c9\u17ba\u1793\u17bb\u1799",loop:"\u179a\u1784\u17d2\u179c\u17b7\u179b\u1787\u17bb\u17c6",play:"\u1785\u17b6\u1780\u17cb\u179f\u17d2\u179c\u17d0\u1799\u1794\u17d2\u179a\u179c\u178f\u17d2\u178f\u17b7",hspace:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1795\u17d2\u178a\u17c1\u1780",vspace:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1794\u1789\u17d2\u1788\u179a",class_name:"\u1790\u17d2\u1793\u17b6\u1780\u17cb",name:"\u1788\u17d2\u1798\u17c4\u17c7",id:"\u179b\u179f.",type:"\u1794\u17d2\u179a\u1797\u17c1\u1791",size:"\u179c\u17b7\u1798\u17b6\u178f\u17d2\u179a",preview:"\u1798\u17be\u179b\u1787\u17b6\u1798\u17bb\u1793",constrain_proportions:"\u1794\u1784\u17d2\u1781\u17c6\u17b2\u17d2\u1799\u1798\u17b6\u1793\u179f\u1798\u17b6\u1798\u17b6\u178f\u17d2\u179a",controls:"\u1794\u1789\u17d2\u1787\u17b6",numloop:"\u1785\u17c6\u1793\u17bd\u1793\u179a\u1784\u17d2\u179c\u17b7\u179b\u1787\u17bb\u17c6",console:"\u1786\u17b6\u1780\u1782\u17d2\u179a\u1794\u17cb\u1782\u17d2\u179a\u1784",cache:"\u1783\u17d2\u179b\u17b6\u17c6\u1784\u179f\u1798\u17d2\u1784\u17b6\u178f\u17cb",autohref:"\u179f\u17d2\u179c\u17d0\u1799HREF",liveconnect:"SW\u1797\u17d2\u1787\u17b6\u1794\u17cb\u1795\u17d2\u1791\u17b6\u179b\u17cb",flashvars:"\u17a2\u1790\u17c1\u179a Flash",base:"\u1782\u17c4\u179b",bgcolor:"\u1795\u17d2\u1791\u17c2\u1781\u17b6\u1784\u1780\u17d2\u179a\u17c4\u1799",wmode:"\u1798\u17c9\u17bc\u178a\u1794\u1784\u17d2\u17a2\u17bd\u1785",salign:"\u178f\u1798\u17d2\u179a\u17b9\u1798\u1787\u17d2\u179a\u17bb\u1784",align:"\u178f\u1798\u17d2\u179a\u17b9\u1798",scale:"\u1798\u17b6\u178f\u17d2\u179a\u178a\u17d2\u178b\u17b6\u1793",quality:"\u1782\u17bb\u178e\u1797\u17b6\u1796",shuffle:"\u1794\u1784\u17d2\u17a2\u17bc\u179f",prefetch:"\u1799\u1780\u1798\u17bb\u1793",nojava:"\u1782\u17d2\u1798\u17b6\u1793 java",maintainaspect:"\u179a\u1780\u17d2\u179f\u17b6\u179f\u1798\u17b6\u1798\u17b6\u178f\u17d2\u179a",imagestatus:"\u179f\u17d2\u1790\u17b6\u1793\u1797\u17b6\u1796\u179a\u17bc\u1794\u1797\u17b6\u1796",center:"\u1780\u178e\u17d2\u178a\u17b6\u179b",autogotourl:"\u179f\u17d2\u179c\u17d0\u1799\u1791\u17c5\u1780\u17b6\u1793\u17cb URL",shockwave_options:"\u1787\u1798\u17d2\u179a\u17be\u179f Shockwav",rmp_options:"\u1787\u1798\u17d2\u179a\u17be\u179f\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u1785\u17b6\u1780\u17cb Real Media",wmp_options:"\u1787\u1798\u17d2\u179a\u17be\u179f\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u1785\u17b6\u1780\u17cb Window Media",qt_options:"\u1787\u1798\u17d2\u179a\u17be\u179f Quicktime",flash_options:"\u1787\u1798\u17d2\u179a\u17be\u179f Flash",hidden:"\u1794\u17c6\u1796\u17bd\u1793",align_bottom_left:"\u1780\u17d2\u179a\u17c4\u1798\u1786\u17d2\u179c\u17c1\u1784",align_bottom_right:"\u1780\u17d2\u179a\u17c4\u1798\u179f\u17d2\u178a\u17b6\u17c6",flv_options:"\u1787\u1798\u17d2\u179a\u17be\u179f\u1797\u17b6\u1796\u1799\u1793\u17d2\u178f Flash",flv_scalemode:"\u1798\u17c9\u17bc\u178a\u1798\u17b6\u178f\u17d2\u179a\u178a\u17d2\u178b\u17b6\u1793",flv_buffer:"\u179f\u178f\u17b7\u1794\u178e\u17d2\u178a\u17c4\u17c7\u17a2\u17b6\u179f\u1793\u17d2\u1793",flv_startimage:"\u179a\u17bc\u1794\u1797\u17b6\u1796\u1785\u17b6\u1794\u17cb\u1795\u17d2\u178a\u17be\u1798",flv_starttime:"\u179c\u17c1\u179b\u17b6\u1785\u17b6\u1794\u17cb\u1795\u17d2\u178a\u17be\u1798",flv_defaultvolume:"\u1780\u1798\u17d2\u179a\u17b7\u178f\u179f\u1798\u17d2\u179b\u17c1\u1784\u179b\u17c6\u1793\u17b6\u17c6\u178a\u17be\u1798",flv_hiddengui:"\u1785\u17c6\u178e\u17bb\u1785\u1794\u17d2\u179a\u1791\u17b6\u1780\u17cb\u17a2\u17d2\u1793\u1780\u1794\u17d2\u179a\u17be\u1780\u17d2\u179a\u17b6\u17a0\u17d2\u179c\u17b7\u1780\u1794\u17c6\u1796\u17bd\u1793",flv_autostart:"\u1785\u17b6\u1794\u17cb\u1795\u17d2\u178a\u17be\u1798\u179f\u17d2\u179c\u17d0\u1799\u1794\u17d2\u179a\u179c\u178f\u17d2\u178f\u17b7",flv_loop:"\u179a\u1784\u17d2\u179c\u17b7\u179b\u1787\u17bb\u17c6",flv_showscalemodes:"\u1794\u1784\u17d2\u17a0\u17b6\u1789\u1798\u17c9\u17bc\u178a\u1798\u17b6\u178f\u17d2\u179a\u178a\u17d2\u178b\u17b6\u1793",flv_smoothvideo:"\u179a\u179b\u17bc\u1793\u1797\u17b6\u1796\u1799\u1793\u17d2\u178f",flv_jscallback:"\u17a0\u17c5JS\u1798\u1780\u179c\u17b7\u1789",html5_video_options:"\u1787\u1798\u17d2\u179a\u17be\u179f\u1797\u17b6\u1796\u1799\u1793\u17d2\u178f HTML5",altsource1:"\u1794\u17d2\u179a\u1797\u1796\u1787\u17c6\u1793\u17bd\u179f\u17e1",altsource2:"\u1794\u17d2\u179a\u1797\u1796\u1787\u17c6\u1793\u17bd\u179f\u17e2",preload:"\u1795\u17d2\u1791\u17bb\u1780\u1787\u17b6\u1798\u17bb\u1793",poster:"\u1795\u17d2\u1791\u17b6\u17c6\u1784\u1795\u17d2\u179f\u1796\u17d2\u179c\u1795\u17d2\u179f\u17b6\u1799",source:"\u1794\u17d2\u179a\u1797\u1796"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ko_dlg.js b/js/tiny_mce/plugins/media/langs/ko_dlg.js new file mode 100755 index 000000000..878337af8 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ko_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ko.media_dlg',{list:"\ubaa9\ub85d",file:"\ud30c\uc77c/URL",advanced:"\uace0\uae09",general:"\uc77c\ubc18",title:"\ubbf8\ub514\uc5b4\uc758 \uc0bd\uc785/\ud3b8\uc9d1",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"JavaScript\ub97c \ud5c8\uac00",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"\uba54\ub274 \ud45c\uc2dc",loop:"\uc5f0\uc18d \uc7ac\uc0dd",play:"\uc790\ub3d9 \uc7ac\uc0dd",hspace:"\uc88c\uc6b0 \uc5ec\ubc31",vspace:"\uc0c1\ud558 \uc5ec\ubc31",class_name:"Class",name:"Name",id:"Id",type:"\ud0c0\uc785",size:"\ud06c\uae30",preview:"\ubbf8\ub9ac\ubcf4\uae30",constrain_proportions:"\uc885\ud6a1\ube44 \uc720\uc9c0",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"\uc2a4\ucf00\uc77c",quality:"\ud488\uc9c8",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/lb_dlg.js b/js/tiny_mce/plugins/media/langs/lb_dlg.js new file mode 100755 index 000000000..e3ee25947 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/lb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lb.media_dlg',{list:"L\u00ebscht",file:"Datei/URL",advanced:"Erweidert",general:"Allgemeng",title:"Multimedia-Inhalt abannen/beaarbechten",align_top_left:"Uewe L\u00e9nks",align_center:"Zentr\u00e9iert",align_left:"L\u00e9nks",align_bottom:"\u00cbnnen",align_right:"Riets",align_top:"Uewen",qt_stream_warn:"An den erweiderten Astellunge sollten am Feld \'QT Src\' gestreamte RTSP Ressourcen b\u00e4igesat ginn.\\nZous\u00e4tzlech sollt Dir do och eng net-gestreamte Ressource uginn.",qtsrc:"QT Src",progress:"Fortschr\u00ebtt",sound:"Toun",swstretchvalign:"Stretch V-Ausriichtung",swstretchhalign:"Stretch H-Ausriichtung",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Uewe Riets",uimode:"UI Modus",rate:"Quote",playcount:"Zieler",defaultframe:"Frame-Virastellung",currentposition:"Aktuell Positioun",currentmarker:"Aktuelle Marker",captioningid:"Beschr\u00ebftungs Id",baseurl:"Basis-URL",balance:"Balance",windowlessvideo:"F\u00ebnsterlose Video",stretchtofit:"Breet un d\u00e9i verf\u00fcgbar Plaz upassen",mute:"Stomm",invokeurls:"URLen opruffen",fullscreen:"Vollbild",enabled:"Aktiv\u00e9iert",autostart:"Autostart",volume:"Lautst\u00e4rkt",target:"Zil",qtsrcchokespeed:"Vitesse drosselen",href:"Href",endtime:"Endz\u00e4itpunkt",starttime:"Startz\u00e4itpunkt",enablejavascript:"JavaScript aktiv\u00e9ieren",correction:"Ouni Korrektur",targetcache:"Zil zw\u00ebschesp\u00e4icheren",playeveryframe:"All Frame ofspillen",kioskmode:"Kioskmodus",controller:"Kontroller",menu:"Men\u00fc uweisen",loop:"Widderhuelung",play:"Automatesch Ofspillen",hspace:"Horizontalen Ofstand",vspace:"Vertikalen Ofstand",class_name:"CSS-Klass",name:"Numm",id:"Id",type:"Typ",size:"Ofmiessungen",preview:"Virschau",constrain_proportions:"Proportiounen erhalen",controls:"Steierung",numloop:"Unzuel Widderhuelungen",console:"Konsol",cache:"Zw\u00ebschesp\u00e4icher",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-Variablen",base:"Basis",bgcolor:"Hannergrond",wmode:"WMode",salign:"S-Ausriichtung",align:"Ausriichtung",scale:"Skal\u00e9ierung",quality:"Qualit\u00e9it",shuffle:"Zouf\u00e4lleg Widdergab",prefetch:"Prefetch",nojava:"Kee Java",maintainaspect:"Bildverh\u00e4ltnis b\u00e4ibehalen",imagestatus:"Bildstatus",center:"Zentr\u00e9iert",autogotourl:"Auto goto URL",shockwave_options:"Shockwave-Optiounen",rmp_options:"Optiounen fir Real Media Player",wmp_options:"Optiounen fir Windows Media Player",qt_options:"Quicktime-Optiounen",flash_options:"Flash-Optiounen",hidden:"Verstoppt",align_bottom_left:"\u00cbnne L\u00e9nks",align_bottom_right:"\u00cbnne Riets",flv_options:"Optiounen fir Flash Video",flv_scalemode:"Skal\u00e9ierungsmodus",flv_buffer:"Puffer",flv_startimage:"Startbild",flv_starttime:"Startz\u00e4itpunkt",flv_defaultvolume:"Standardlautst\u00e4rk",flv_hiddengui:"Verstoppte GUI",flv_autostart:"Autostart",flv_loop:"Widderhuelung",flv_showscalemodes:"Skal\u00e9ierungsmodi uweisen",flv_smoothvideo:"Smooth Video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/lt_dlg.js b/js/tiny_mce/plugins/media/langs/lt_dlg.js new file mode 100755 index 000000000..848dca958 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.media_dlg',{list:"S\u0105ra\u0161as",file:"Failas/URL",advanced:"I\u0161pl\u0117sta",general:"Bendra",title:"\u012eterpti/redaguoti integruot\u0105 daugialyp\u0119 terp\u0119",align_top_left:"Vir\u0161uje, kair\u0117je",align_center:"Centre",align_left:"Kair\u0117je",align_bottom:"Apa\u010dioje",align_right:"De\u0161in\u0117je",align_top:"Vir\u0161uje",qt_stream_warn:"Transliuojami rtsp i\u0161tekliai tur\u0117t\u0173 b\u016bti prid\u0117ti prie QT Src lauko \u201ePapildom\u0173 nustatym\u0173\u201c kortel\u0117je.\\nTaip pat reikt\u0173 prid\u0117ti ir netransliuojam\u0105j\u0105 Src lauko versij\u0105.",qtsrc:"QT Src",progress:"Progresas",sound:"Garsas",swstretchvalign:"I\u0161tempti V-lygiavim\u0105",swstretchhalign:"I\u0161tempti H-lygiavim\u0105",swstretchstyle:"I\u0161tempti stili\u0173",scriptcallbacks:"Scenarijaus atgalinis atsakas",align_top_right:"Vir\u0161uje, de\u0161in\u0117je",uimode:"UI re\u017eimas",rate:"Da\u017enis",playcount:"Grojimo kartai",defaultframe:"Numatytas kadras",currentposition:"Dabartin\u0117 pozicija",currentmarker:"Dabartinis \u017eymeklis",captioningid:"Antra\u0161t\u0117s id",baseurl:"Prad\u017eios URL adresas",balance:"Balansas",windowlessvideo:"Vaizdas be lango",stretchtofit:"I\u0161tempti iki atitikimo",mute:"Nutildyti",invokeurls:"I\u0161kviesti URL adresus",fullscreen:"Viso ekrano re\u017eimas",enabled:"\u012ejungta",autostart:"Automatinis paleidimas",volume:"Garsis",target:"Paskirtis",qtsrcchokespeed:"Dusinimo greitis",href:"Href",endtime:"Pabaigos laikas",starttime:"Prad\u017eios laikas",enablejavascript:"\u012egalinti JavaScript",correction:"Joki\u0173 korekcij\u0173",targetcache:"Paskirties laikinoji talpykla",playeveryframe:"Paleisti kiekvien\u0105 kadr\u0105",kioskmode:"Kiosko re\u017eimas",controller:"Valdiklis",menu:"Rodyti meniu",loop:"Kartoti",play:"Automatinis paleidimas",hspace:"Horizontalus tarpas",vspace:"Vertikalus tarpas",class_name:"Klas\u0117",name:"Vardas",id:"Id",type:"Tipas",size:"I\u0161matavimai",preview:"Per\u017ei\u016bra",constrain_proportions:"Priverstin\u0117s proporcijos",controls:"Valdikliai",numloop:"Cikl\u0173 kiekis",console:"Konsol\u0117",cache:"Laikinoji talpykla",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash kintamieji",base:"Baz\u0117",bgcolor:"Fono spalva",wmode:"W-re\u017eimas",salign:"S-lygiavimas",align:"Lygiavimas",scale:"Mastelis",quality:"Kokyb\u0117",shuffle:"Atsitiktinis mai\u0161ymasis",prefetch:"I\u0161ankstinis duom. i\u0161rinkimas",nojava:"Be Java",maintainaspect:"I\u0161laikyti aspekt\u0105",imagestatus:"Paveiksl\u0117lio b\u016bsena",center:"Centre",autogotourl:"Automatinis \u0117jimas URL adresu",shockwave_options:"Shockwave nustatymai",rmp_options:"Real media player nustatymai",wmp_options:"Windows media player nustatymai",qt_options:"Quicktime nustatymai",flash_options:"Flash nustatymai",hidden:"Pasl\u0117pta",align_bottom_left:"Apa\u010dioje, kair\u0117je",align_bottom_right:"Apa\u010dioje, de\u0161in\u0117je",flv_options:"Flash vaizdo nustatymai",flv_scalemode:"Mastelio re\u017eimas",flv_buffer:"Buferis",flv_startimage:"Prad\u017eios paveiksl\u0117lis",flv_starttime:"Prad\u017eios laikas",flv_defaultvolume:"Pradinis garsis",flv_hiddengui:"Pasl\u0117pta grafin\u0117 s\u0105saja",flv_autostart:"Auto grojimas",flv_loop:"Kartoti",flv_showscalemodes:"Rodyti mastelio re\u017eimus",flv_smoothvideo:"Tolygus vaizdas",flv_jscallback:"JS atgalinis atsakas"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/lv_dlg.js b/js/tiny_mce/plugins/media/langs/lv_dlg.js new file mode 100755 index 000000000..40285808c --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/mk_dlg.js b/js/tiny_mce/plugins/media/langs/mk_dlg.js new file mode 100755 index 000000000..56f0b106a --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/mk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mk.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ml_dlg.js b/js/tiny_mce/plugins/media/langs/ml_dlg.js new file mode 100755 index 000000000..6799e9d82 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ml_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ml.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/mn_dlg.js b/js/tiny_mce/plugins/media/langs/mn_dlg.js new file mode 100755 index 000000000..b3106204c --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/mn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mn.media_dlg',{list:"\u0416\u0430\u0433\u0441\u0430\u0430\u043b\u0442",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d",general:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439",title:"\u041c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u0430\u0433\u0443\u0443\u043b\u0433\u0430 \u0431\u0443\u0443\u043b\u0433\u0430\u0445/ \u0437\u0430\u0441\u0432\u0430\u0440\u043b\u0430\u0445",align_top_left:"\u0417\u04af\u04af\u043d \u0434\u044d\u044d\u0434",align_center:"\u0413\u043e\u043b\u0434",align_left:"\u0417\u04af\u04af\u043d",align_bottom:"\u0414\u043e\u043e\u0440",align_right:"\u0411\u0430\u0440\u0443\u0443\u043d",align_top:"\u0414\u044d\u044d\u0440",qt_stream_warn:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d \u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e\u043d \u0434\u0430\u0445\u044c \'QT Src\' \u0442\u0430\u043b\u0431\u0430\u0440\u0442 \u0446\u0430\u0446\u0430\u0436 \u0431\u0443\u0439 rtsp \u043d\u04e9\u04e9\u0446\u0438\u0439\u0433 \u043e\u0440\u0443\u0443\u043b\u0436 \u04e9\u0433\u043d\u04e9.\\n\u041c\u04e9\u043d \u0442\u0430 \u0442\u044d\u043d\u0434 \u0446\u0430\u0446\u0430\u0430\u0433\u04af\u0439 \u043d\u04e9\u04e9\u0446\u0438\u0439\u0433 \u043d\u044d\u043c\u044d\u0445 \u0445\u044d\u0440\u044d\u0433\u0442\u044d\u0439.",qtsrc:"QT Src",progress:"\u042f\u0432\u0446",sound:"\u0414\u0443\u0443",swstretchvalign:"Stretch V-\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",swstretchhalign:"Stretch H-\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"\u0411\u0430\u0440\u0443\u0443\u043d \u0434\u044d\u044d\u0434",uimode:"UI \u0433\u043e\u0440\u0438\u043c",rate:"Rate",playcount:"\u0422\u043e\u043e\u043b\u0443\u0443\u0440",defaultframe:"\u0424\u0440\u044d\u0439\u043c-\u04e9\u0433\u04e9\u0433\u0434\u043c\u04e9\u043b \u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",currentposition:"\u0418\u0434\u044d\u0432\u0445\u0442\u044d\u0439 \u0431\u0430\u0439\u0440\u043b\u0430\u043b",currentmarker:"\u0418\u0434\u044d\u0432\u0445\u0442\u044d\u0439 \u0442\u044d\u043c\u0434\u044d\u0433\u043b\u044d\u0433\u0447",captioningid:"Captioning id",baseurl:"\u04ae\u043d\u0434\u0441\u044d\u043d URL",balance:"\u0422\u044d\u043d\u0446\u0432\u044d\u0440\u0436\u04af\u04af\u043b\u044d\u043b\u0442",windowlessvideo:"\u0426\u043e\u043d\u0445\u0433\u04af\u0439 \u0432\u0438\u0434\u0435\u043e",stretchtofit:"\u0425\u0430\u0440\u0443\u0443\u043b\u0430\u0445 \u043c\u0443\u0436\u0438\u0439\u0433 \u0441\u0443\u043b \u0431\u0430\u0439\u0433\u0430\u0430 \u0437\u0430\u0439\u0434 \u0442\u0430\u0430\u0440\u0443\u0443\u043b\u0430\u0445",mute:"\u0414\u0443\u0443\u0433\u04af\u0439",invokeurls:"\u0414\u0443\u0443\u0434\u0430\u0445 URLs",fullscreen:"\u0414\u044d\u043b\u0433\u044d\u0446 \u0434\u04af\u04af\u0440\u044d\u043d",enabled:"\u0418\u0434\u044d\u0432\u0445\u0442\u044d\u0439",autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u044d\u0445\u043b\u044d\u043b",volume:"\u0414\u0443\u0443",target:"\u0422\u043e\u0432\u043b\u043e\u0441\u043e\u043d",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u0422\u04e9\u0433\u0441\u04e9\u0445 \u0446\u0430\u0433",starttime:"\u042d\u0445\u043b\u044d\u0445 \u0446\u0430\u0433",enablejavascript:"JavaScript \u0438\u0434\u044d\u0432\u0445\u0436\u04af\u04af\u043b\u044d\u0445",correction:"\u0417\u0430\u0441\u0432\u0430\u0440\u0433\u04af\u0439",targetcache:"\u0417\u043e\u0440\u0438\u043b\u0433\u044b\u0433 \u0442\u04af\u0440 \u0445\u0430\u0434\u0433\u0430\u043b\u043d\u0430",playeveryframe:"\u0424\u0440\u044d\u0439\u043c \u0431\u04af\u0440\u0438\u0439\u0433 \u0442\u043e\u0433\u043b\u0443\u0443\u043b\u043d\u0430",kioskmode:"\u041a\u0438\u043e\u0441\u043a \u0433\u043e\u0440\u0438\u043c",controller:"Controller",menu:"\u0426\u044d\u0441 \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",loop:"\u0414\u0430\u0432\u0442\u0430\u043b\u0442",play:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0430\u0430\u0440 \u0442\u043e\u0433\u043b\u0443\u0443\u043b\u043d\u0430",hspace:"\u0425\u044d\u0432\u0442\u044d\u044d \u0430\u043b\u0441\u043b\u0430\u043b\u0442",vspace:"\u0411\u043e\u0441\u043e\u043e \u0430\u043b\u0441\u043b\u0430\u043b\u0442",class_name:"CSS-\u0430\u043d\u0433\u0438",name:"\u041d\u044d\u0440",id:"\u0422\u0442",type:"\u0422\u04e9\u0440\u04e9\u043b",size:"\u0425\u044d\u043c\u0436\u044d\u044d",preview:"\u041d\u044f\u0433\u0442\u043b\u0430\u0445",constrain_proportions:"\u0425\u0430\u0440\u044c\u0446\u0430\u0430\u0433 \u0431\u0430\u0440\u0438\u0445",controls:"\u0423\u0434\u0438\u0440\u0434\u043b\u0430\u0433\u0430",numloop:"\u0414\u0430\u0432\u0442\u0430\u0445 \u0442\u043e\u043e",console:"\u041a\u043e\u043d\u0441\u043e\u043b",cache:"\u0417\u0430\u0432\u0441\u0440\u044b\u043d \u0445\u0430\u0434\u0433\u0430\u043b\u0430\u0433\u0447",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"\u0424\u043b\u044d\u0439\u0448 \u0445\u0443\u0432\u044c\u0441\u0430\u0433\u0447",base:"\u0421\u0443\u0443\u0440\u044c",bgcolor:"\u0414\u044d\u0432\u0441\u0433\u044d\u0440",wmode:"WMode",salign:"S-\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",align:"\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",scale:"\u0425\u0443\u0432\u0430\u0430\u0440\u0438\u043b\u0430\u043b\u0442",quality:"\u0427\u0430\u043d\u0430\u0440",shuffle:"\u0421\u0430\u043d\u0430\u043c\u0441\u0430\u0440\u0433\u04af\u0439\u0433\u044d\u044d\u0440 \u0442\u043e\u0433\u043b\u0443\u0443\u043b\u0430\u0445",prefetch:"Prefetch",nojava:"\u0416\u0430\u0432\u0430\u0433\u04af\u0439",maintainaspect:"\u0417\u0443\u0440\u0433\u0438\u0439\u043d \u0445\u0430\u0440\u044c\u0446\u0430\u0430\u0433 \u0445\u0430\u0434\u0433\u0430\u043b\u0430\u043d\u0430",imagestatus:"\u0417\u0443\u0440\u0433\u0438\u0439\u043d \u0442\u04e9\u043b\u04e9\u0432",center:"\u0413\u043e\u043b\u043b\u0443\u0443\u043b\u0441\u0430\u043d",autogotourl:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0430\u0430\u0440 \u043e\u0447\u0438\u0445 URL",shockwave_options:"Shockwave-\u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",rmp_options:"Real Media Player-\u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",wmp_options:"Windows Media Player-\u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",qt_options:"Quicktime-\u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",flash_options:"\u0424\u043b\u044d\u0439\u0448-\u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",hidden:"\u0414\u0430\u043b\u0434\u0430\u043b\u0441\u0430\u043d",align_bottom_left:"\u0417\u04af\u04af\u043d \u0434\u043e\u043e\u0434",align_bottom_right:"\u0411\u0430\u0440\u0443\u0443\u043d \u0434\u043e\u043e\u0434",flv_options:"\u0424\u043b\u044d\u0439\u0448 \u0432\u0438\u0434\u0435\u043e\u043d\u044b \u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",flv_scalemode:"\u0425\u0443\u0432\u0430\u0430\u0440\u044c\u0442 \u0433\u043e\u0440\u0438\u043c",flv_buffer:"\u0411\u0443\u0444\u0435\u0440",flv_startimage:"\u042d\u0445\u043b\u044d\u043b \u0437\u0443\u0440\u0430\u0433",flv_starttime:"\u042d\u0445\u043b\u044d\u0445 \u0446\u0430\u0433",flv_defaultvolume:"\u04e8\u0433\u04e9\u0433\u0434\u043c\u04e9\u043b \u0434\u0443\u0443",flv_hiddengui:"\u0414\u0430\u043b\u0434 GUI",flv_autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u044d\u0445\u043b\u04af\u04af\u043b\u044d\u043b\u0442",flv_loop:"\u0414\u0430\u0432\u0442\u0430\u043b\u0442",flv_showscalemodes:"\u0425\u0443\u0432\u0430\u0430\u0440\u044c\u0442 \u0433\u043e\u0440\u0438\u043c \u0445\u0430\u0440\u0443\u0443\u043b\u0430\u0445",flv_smoothvideo:"Smooth \u0412\u0438\u0434\u0435\u043e",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ms_dlg.js b/js/tiny_mce/plugins/media/langs/ms_dlg.js new file mode 100755 index 000000000..743d9cfe4 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ms_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ms.media_dlg',{list:"Senarai",file:"Fail/URL",advanced:"Lanjutan",general:"Am",title:"Masukkan / sunting media",align_top_left:"Kiri atas",align_center:"Tengah",align_left:"Kiri",align_bottom:"Bawah",align_right:"Kanan",align_top:"Atas",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch Selarian-Tegak",swstretchhalign:"Bentangan Selarian-Ufuk",swstretchstyle:"Gaya bentangan",scriptcallbacks:"Panggilan balik skrip",align_top_right:"Kanan atas",uimode:"Mod Grafik",rate:"Undi",playcount:"Kira",defaultframe:"Bingkai asal",currentposition:"Posisi semasa",currentmarker:"Penanda semasa",captioningid:"Tajuk id",baseurl:"URL dasar",balance:"Baki",windowlessvideo:"Tetingkap tanpa video",stretchtofit:"Bujurkan supaya sesuai",mute:"Bisu",invokeurls:"Panggil URL",fullscreen:"Skrin penuh",enabled:"Dibolehkan",autostart:"Auto mula",volume:"Ketinggian suara",target:"Sasaran",qtsrcchokespeed:"Kelajuan sumbatan",href:"Href",endtime:"Masa tamat",starttime:"Masa bermula",enablejavascript:"Bolehkan JavaScript",correction:"Tiada pembetulan",targetcache:"Sasaran tersembunyi",playeveryframe:"Main setiap bingkai",kioskmode:"Mode toko",controller:"Kendali",menu:"Tunjuk menu",loop:"Gelung",play:"Auto main",hspace:"Ruangan-Datar",vspace:"Ruangan-Tegak",class_name:"Kelas",name:"Nama",id:"Id",type:"Jenis",size:"Dimensi",preview:"Pratonton",constrain_proportions:"Kadar tahanan",controls:"Kendali",numloop:"Nombor gelungan",console:"Konsol",cache:"Tempat menyembunyikan",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Dasar",bgcolor:"Latar belakang",wmode:"WMod",salign:"SLuruskan",align:"Luruskan",scale:"Ukuran",quality:"Kualiti",shuffle:"Merangkak",prefetch:"Preambilan",nojava:"Java tidak dibenarkan",maintainaspect:"Pelihara aspek",imagestatus:"Status imej",center:"Tengah",autogotourl:"Auto pergi-ke URL",shockwave_options:"Shockwave",rmp_options:"Pemain Real media",wmp_options:"Pemain Windows media",qt_options:"Quicktime",flash_options:"Flash",hidden:"Tersorok",align_bottom_left:"Bawah kiri",align_bottom_right:"Bawah kanan",flv_options:"Alatan flash video",flv_scalemode:"Skala mod",flv_buffer:"Buffer",flv_startimage:"Start imej",flv_starttime:"Masa mula",flv_defaultvolume:"Bunyi asal",flv_hiddengui:"GUI tersorok",flv_autostart:"Auto mula",flv_loop:"Gegelung",flv_showscalemodes:"Tunjuk skala mod",flv_smoothvideo:"Perlahankan video",flv_jscallback:"JS Callback",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field.."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/my_dlg.js b/js/tiny_mce/plugins/media/langs/my_dlg.js new file mode 100755 index 000000000..675092633 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/my_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('my.media_dlg',{list:"\u1005\u102c\u101b\u1004\u103a\u1038",file:"\u1016\u102d\u102f\u1004\u103a/URL",advanced:"\u1021\u1011\u1030\u1038",general:"\u1021\u1031\u1011\u103d\u1031\u1011\u103d",title:"\u1019\u102e\u1012\u102e\u101a\u102c \u103c\u1019\u103e\u102f\u1015\u103a\u1011\u100a\u103a\u1037 / \u103c\u1015\u102f\u103c\u1015\u1004\u103a",align_top_left:"\u1011\u102d\u1015\u103a\u1006\u1036\u102f\u1038\u1018\u101a\u103a\u1018\u1000\u103a",align_center:"\u1021\u101c\u101a\u103a\u1017\u101f\u102d\u102f",align_left:"\u1018\u101a\u103a",align_bottom:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001",align_right:"\u100a\u102c\u1018\u1000\u103a",align_top:"\u1011\u102d\u1015\u103a\u1015\u102d\u102f\u1004\u103a\u1038",qt_stream_warn:"Streamed rtsp resources \u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1021\u1011\u1030\u1038 tab \u1031\u1021\u102c\u1000\u103a\u101b\u103e\u102d QT Src field \u1010\u103d\u1004\u103a \u1011\u100a\u103a\u1037\u101e\u1004\u103a\u1037\u101e\u100a\u103a\u104bn non streamed version \u1000\u102d\u102f\u101c\u100a\u103a\u1038 Src field.. \u1010\u103d\u1004\u103a \u1011\u100a\u103a\u1037\u1031\u1015\u1038\u101e\u1004\u103a\u1037\u101e\u100a\u103a\u104b",qtsrc:"QT SRC",progress:"\u101c\u102f\u1015\u103a\u1031\u1006\u102c\u1004\u103a\u1019\u103e\u102f \u1021\u1031\u103c\u1001\u1021\u1031\u1014",sound:"\u1021\u101e\u1036",swstretchvalign:"V-Align \u103c\u1016\u1004\u103a\u1037 \u1006\u103d\u1032\u1006\u1014\u103a\u1037",swstretchhalign:"H-Align \u103c\u1016\u1004\u103a\u1037 \u1006\u103d\u1032\u1006\u1014\u103a\u1037",swstretchstyle:"\u1006\u103d\u1032\u1006\u1014\u103a\u1037\u1019\u103e\u102f \u1005\u1010\u102d\u102f\u1004\u103a",scriptcallbacks:"Script callbacks",align_top_right:"\u1011\u102d\u1015\u103a\u1006\u1036\u102f\u1038 \u100a\u102c\u1018\u1000\u103a",uimode:"UI \u1019\u102f(\u1012\u103a)",rate:"\u1014\u103e\u102f\u1014\u103a\u1038",playcount:"\u1016\u103d\u1004\u103a\u1037\u101c\u103e\u1005\u103a\u1019\u103e\u102f \u1021\u1031\u101b\u1021\u1010\u103d\u1000\u103a",defaultframe:"\u1019\u1030\u101c \u1016\u101b\u102d\u1019\u103a",currentposition:"\u101c\u1000\u103a\u101b\u103e\u102d \u1031\u1014\u101b\u102c",currentmarker:"\u101c\u1000\u103a\u101b\u103e\u102d \u1021\u1019\u103e\u1010\u103a\u1021\u101e\u102c\u1038",captioningid:"\u1031\u1001\u102b\u1004\u103a\u1038\u1005\u1009\u103a\u1010\u1015\u103a\u103c\u1001\u1004\u103a\u1038 id",baseurl:"\u1021\u1031\u103c\u1001\u1001\u1036 URL",balance:"\u1001\u103b\u102d\u1014\u103a\u100a\u102d\u103e\u1019\u103e\u102f",windowlessvideo:"\u101d\u1004\u103a\u1038\u1012\u102d\u102f\u1038\u1019\u1015\u102b\u1031\u101e\u102c \u1017\u103d\u102e\u1012\u102e\u101a\u102d\u102f",stretchtofit:"\u1021\u1036\u1037\u1000\u102d\u102f\u1000\u103a\u103c\u1016\u1005\u103a\u1031\u1005\u101b\u1014\u103a \u1006\u103d\u1032\u1006\u1014\u103a\u1037",mute:"\u1021\u101e\u1036\u1015\u102d\u1010\u103a",invokeurls:"\u1031\u1016\u102c\u103a\u103c\u1015 URL \u1019\u103b\u102c\u1038",fullscreen:"\u1005\u1000\u101b\u1004\u103a \u1021\u103c\u1015\u100a\u103a\u1037",enabled:"\u1016\u103d\u1004\u103a\u1037\u1011\u102c\u1038\u1031\u101e\u102c",autostart:"\u1021\u101c\u102d\u102f\u101c\u102d\u102f \u1005\u1016\u103d\u1004\u103a\u1037",volume:"\u1021\u101e\u1036 \u1021\u1010\u102d\u102f\u1038\u1021\u1000\u103b\u101a\u103a",target:"\u101b\u100a\u103a\u1019\u103e\u1014\u103a\u1038\u1001\u103b\u1000\u103a(\u1010\u102c\u1038\u1002\u1000\u103a)",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"\u1021\u1006\u1036\u102f\u1038\u101e\u1010\u103a\u1001\u103b\u102d\u1014\u103a",starttime:"\u1021\u1005\u103c\u1015\u102f\u1001\u103b\u102d\u1014\u103a",enablejavascript:"JavaScript \u1016\u103d\u1004\u103a\u1037\u101b\u1014\u103a",correction:"\u1021\u1019\u103e\u1014\u103a\u1019\u103c\u1015\u1004\u103a\u1015\u102b",targetcache:"\u1010\u102c\u1038\u1002\u1000\u103a cache",playeveryframe:"\u1016\u101b\u102d\u1019\u103a\u1021\u102c\u1038\u101c\u1036\u102f\u1038\u1000\u102d\u102f \u1016\u103d\u1004\u103a\u1037\u1015\u102b",kioskmode:"Kiosk \u1019\u102f(\u1012\u103a)",controller:"\u1011\u102d\u1014\u103a\u1038\u1001\u103b\u102f\u1015\u103a\u1001\u101c\u102f\u1015\u103a",menu:"\u1019\u102e\u1014\u1030\u1038\u1005\u102c\u101b\u1004\u103a\u1038\u1000\u102d\u102f \u103c\u1015\u1011\u102c\u1038\u1015\u102b",loop:"\u103c\u1015\u1014\u103a\u101b\u1005\u103a\u1016\u103d\u1004\u103a\u1037\u1015\u102b",play:"\u1021\u101c\u102d\u102f\u101c\u102d\u102f\u1016\u103d\u1004\u103a\u1037",hspace:"H-\u1000\u103d\u1000\u103a\u101c\u1015\u103a",vspace:"V-\u1000\u103d\u1000\u103a\u101c\u1015\u103a",class_name:"class \u1021\u1019\u100a\u103a",name:"\u1021\u1019\u100a\u103a",id:"ID",type:"\u1021\u1019\u103b\u102d\u102f\u1038\u1021\u1005\u102c\u1038",size:"\u1021\u1010\u102d\u102f\u1004\u103a\u1038\u1021\u1011\u103d\u102c\u1019\u103b\u102c\u1038",preview:"\u1021\u1005\u1019\u103a\u1038\u103c\u1000\u100a\u103a\u1037\u101b\u1014\u103a",constrain_proportions:"\u103c\u1019\u1004\u103a\u1000\u103d\u1004\u103a\u1038\u1021\u1001\u103b\u102d\u102f\u1038\u1000\u102d\u102f \u1011\u102d\u1014\u103a\u1038\u100a\u103e\u102d\u1015\u102b",controls:"\u1011\u102d\u1014\u103a\u1038\u1001\u103b\u102f\u1015\u103a\u1019\u103e\u102f\u1019\u103b\u102c\u1038",numloop:"\u103c\u1015\u1014\u103a\u101b\u1005\u103a\u101b\u1014\u103a \u1021\u103c\u1000\u102d\u1019\u103a\u1021\u1031\u101b\u1021\u1010\u103d\u1000\u103a",console:"CONSOLE",cache:"CACHE",autohref:"\u1021\u101c\u102d\u102f\u101c\u102d\u102fHREF\u1011\u100a\u103a\u1037",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u1021\u1031\u103c\u1001\u1001\u1036",bgcolor:"\u1031\u1014\u102c\u1000\u103a\u1001\u1036",wmode:"WMode",salign:"SAlign",align:"Align",scale:"\u1005\u1031\u1000\u1038",quality:"\u1021\u101b\u100a\u103a\u1021\u1031\u101e\u103d\u1038",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain aspect",imagestatus:"\u101b\u102f\u1015\u103a\u1015\u1036\u102f\u1021\u1031\u103c\u1001\u1021\u1031\u1014",center:"\u1021\u101c\u101a\u103a\u1017\u101f\u102d\u102f",autogotourl:"\u1021\u101c\u102d\u102f\u101c\u102d\u102f\u101e\u103d\u102c\u1038\u101b\u1014\u103a URL",shockwave_options:"Shockwave \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",rmp_options:"Real media player \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",wmp_options:"Windows media player \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",qt_options:"Quicktime \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",flash_options:"Flash \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",hidden:"\u101d\u103e\u1000\u103a\u1011\u102c\u1038\u1031\u101e\u102c",align_bottom_left:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001\u1018\u101a\u103a",align_bottom_right:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001\u100a\u102c",flv_options:"Flash \u1017\u103d\u102e\u1012\u102e\u101a\u102d\u102f\u1006\u102d\u102f\u1004\u103a\u101b\u102c \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",flv_scalemode:"\u1005\u1031\u1000\u1038 mode",flv_buffer:"Buffer",flv_startimage:"\u1021\u1005\u101b\u102f\u1015\u103a\u1015\u1036\u102f",flv_starttime:"\u1005\u1010\u1004\u103a\u1001\u103b\u102d\u1014\u103a",flv_defaultvolume:"\u1019\u1030\u101c \u1021\u101e\u1036\u1021\u1000\u103b\u101a\u103a",flv_hiddengui:"Hidden GUI",flv_autostart:"\u1021\u101c\u102d\u102f\u101c\u102d\u102f\u1005\u1016\u103d\u1004\u103a\u1037",flv_loop:"\u103c\u1015\u1014\u103a\u1031\u1000\u103b\u102c\u1037",flv_showscalemodes:"\u1005\u1031\u1000\u1038 mode\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u103c\u1015\u1015\u102b",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 \u1017\u103d\u102e\u1012\u102e\u101a\u102d\u102f \u1031\u101b\u103d\u1038\u1001\u103b\u101a\u103a\u1005\u101b\u102c\u1019\u103b\u102c\u1038",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"\u1015\u102d\u102f\u1005\u1010\u102c",source:"\u101b\u1004\u103a\u1038\u103c\u1019\u1005\u103a"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/nb_dlg.js b/js/tiny_mce/plugins/media/langs/nb_dlg.js new file mode 100755 index 000000000..e8fe8b692 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/nb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nb.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Sett inn / rediger inkludert objekt","align_top_left":"Topp venstre","align_center":"Midtstill","align_left":"Venstre","align_bottom":"Bunn","align_right":"H\u00f8yre","align_top":"Topp","qt_stream_warn":"Streamede rtsp-ressurser b\u00f8r legges til QT Src-felt i avansert-fanen.\\nDu b\u00f8r ogs\u00e5 legge til en ikke-streamet versjon i Src-felt",qtsrc:"QT Src",progress:"Framdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekkstil",scriptcallbacks:"Skript-referanser","align_top_right":"Topp h\u00f8yre",uimode:"UI-modus",rate:"Rate",playcount:"Teller",defaultframe:"Standardramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fang opp id",baseurl:"Utgangsadresse (URL)",balance:"Balanse",windowlessvideo:"Video uten vindu",stretchtofit:"Strekk for \u00e5 passe inn",mute:"Demp",invokeurls:"Aktiviser URL-er",fullscreen:"Fullskjerm",enabled:"Kj\u00f8rbar",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighet",href:"Href",endtime:"Stopptid",starttime:"Starttid",enablejavascript:"Tillat Javaskript",correction:"Ingen korreksjon",targetcache:"M\u00e5l-mellomlagring",playeveryframe:"Spill hver ramme",kioskmode:"Kiosk-modus",controller:"Kontroller",menu:"Vis meny",loop:"L\u00f8kke",play:"Autostart",hspace:"Horisontal avstand",vspace:"Vertikal avstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"St\u00f8rrelse",preview:"Forh\u00e5ndsvisning","constrain_proportions":"Behold st\u00f8rrelsesforhold",controls:"Kontroller",numloop:"Antall gjennoml\u00f8p",console:"Konsoll",cache:"Mellomlager",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-variabler",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skalering",quality:"Kvalitet",shuffle:"Miks",prefetch:"Forh\u00e5ndsregistrer",nojava:"Ingen Java",maintainaspect:"Behold st\u00f8rrelsesforhold",imagestatus:"Bildestatus",center:"Midtstill",autogotourl:"Auto-g\u00e5-til-URL","shockwave_options":"Shockwave-innstillinger","rmp_options":"Real mediaplayer-innstillinger","wmp_options":"Windows mediaplayer-innstillinger","qt_options":"Quicktime-innstillinger","flash_options":"Flash-egenskaper",hidden:"Skjult","align_bottom_left":"Bunn venstre","align_bottom_right":"Bunn h\u00f8yre","flv_options":"Flash video-valg","flv_scalemode":"Skalering","flv_buffer":"Buffer","flv_startimage":"Startbilde","flv_starttime":"Starttid","flv_defaultvolume":"Standardvolum","flv_hiddengui":"Skjult GUI","flv_autostart":"Auto-start","flv_loop":"L\u00f8kke","flv_showscalemodes":"Vis skalering","flv_smoothvideo":"Jevn video","flv_jscallback":"JS-tilbakekall","html5_video_options":"HTML5-videovalg",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forh\u00e5ndsvis",poster:"Poster",source:"Kilde"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/nl_dlg.js b/js/tiny_mce/plugins/media/langs/nl_dlg.js new file mode 100755 index 000000000..22da230cd --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.media_dlg',{list:"Lijst",file:"Bestand/URL",advanced:"Geavanceerd",general:"Algemeen",title:"Media invoegen/bewerken","align_top_left":"Linksboven","align_center":"Centreren","align_left":"Links","align_bottom":"Onder","align_right":"Rechts","align_top":"Boven","qt_stream_warn":"Gestreamde RTSP bronnen dienen op het tabblad geavanceerd bij Quicktime bron te worden opgegeven.\\nDe niet-gestreamde versie kan dan bij het tabblad algemeen worden opgegeven.",qtsrc:"Quicktime bron",progress:"Voortgang",sound:"Geluid",swstretchvalign:"V-Schaal",swstretchhalign:"H-Schaal",swstretchstyle:"Schaal",scriptcallbacks:"Script callbacks","align_top_right":"Rechtsboven",uimode:"UI Modus",rate:"Snelheid",playcount:"Afspeelteller",defaultframe:"Standaard frame",currentposition:"Huidige positie",currentmarker:"Huidige markering",captioningid:"Ondertiteling id",baseurl:"Basis URL",balance:"Balans",windowlessvideo:"Video zonder venster",stretchtofit:"Passend maken",mute:"Dempen",invokeurls:"URLs laden",fullscreen:"Volledig scherm",enabled:"Ingeschakeld",autostart:"Automatisch afspelen",volume:"Volume",target:"Doel",qtsrcchokespeed:"Chokesnelheid",href:"Href",endtime:"Eindtijd",starttime:"Starttijd",enablejavascript:"JavaScript Inschakelen",correction:"Geen correctie",targetcache:"Doelcache",playeveryframe:"Elk frame afspelen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Menu weergeven",loop:"Herhalen",play:"Automatisch afspelen",hspace:"H-Ruimte",vspace:"V-Ruimte","class_name":"Klasse",name:"Naam",id:"Id",type:"Type",size:"Afmetingen",preview:"Voorbeeld","constrain_proportions":"Verhouding bewaren",controls:"Bediening",numloop:"Aantal herhalingen",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variabelen",base:"Basis",bgcolor:"Achtergrond",wmode:"WMode",salign:"Schaaluitlijning",align:"Uitlijning",scale:"Schaal",quality:"Kwaliteit",shuffle:"Willekeurige volgorde",prefetch:"Voorladen",nojava:"Geen java",maintainaspect:"Verhouding bewaren",imagestatus:"Afbeeldingstatus",center:"Centreren",autogotourl:"Automatisch naar URL","shockwave_options":"Shockwave opties","rmp_options":"Real mediaspeler opties","wmp_options":"Windows mediaspeler opties","qt_options":"Quicktime opties","flash_options":"Flash opties",hidden:"Verborgen","align_bottom_left":"Linksonder","align_bottom_right":"Rechtsonder","flv_options":"Flash video-opties","flv_scalemode":"Schaalmodus","flv_buffer":"Buffer","flv_startimage":"Startafbeelding","flv_starttime":"Starttijd","flv_defaultvolume":"Standaard volume","flv_hiddengui":"GUI verbergen","flv_autostart":"Automatisch afspelen","flv_loop":"Herhalen","flv_showscalemodes":"Schaalmodus weergeven","flv_smoothvideo":"Soepele video","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Video Opties",altsource1:"Alternatieve bron 1",altsource2:"Alternatieve bron 2",preload:"Voorladen",poster:"Poster",source:"Bron"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/nn_dlg.js b/js/tiny_mce/plugins/media/langs/nn_dlg.js new file mode 100755 index 000000000..e223605dd --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/nn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nn.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Set inn / rediger inkludert objekt",align_top_left:"Topp venstre",align_center:"Midt",align_left:"Venstre",align_bottom:"Botn",align_right:"H\u00f8gre",align_top:"Topp",qt_stream_warn:"Streama rtsp-ressursar b\u00f8r leggsst til QT Src field i avansert-fana.\\nDu b\u00f8r ogs\u00e5 leggje til ein ikkje-streama versjon i src field",qtsrc:"QT Src",progress:"Framdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekkstil",scriptcallbacks:"Skript-referanser",align_top_right:"Top h\u00f8gre",uimode:"UI-modus",rate:"Rate",playcount:"Tellar",defaultframe:"Standardramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fange opp id",baseurl:"Base URL",balance:"Balanse",windowlessvideo:"Video utan vindauge",stretchtofit:"Strekk for \u00e5 passe inn",mute:"Demp",invokeurls:"Aktiviser URL-ar",fullscreen:"Fullskjerm",enabled:"K\u00f8yrbar",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Stopptid",starttime:"Starttid",enablejavascript:"Tillat Javaskript",correction:"Ingen korreksjon",targetcache:"M\u00e5l-cache",playeveryframe:"Spel kvar ramme",kioskmode:"Kiosk-modus",controller:"Kontroller",menu:"Vis meny",loop:"Lykkje",play:"Autostart",hspace:"Horisontal avstand",vspace:"Vertikal avstand",class_name:"Klasse",name:"Namn",id:"Id",type:"Type",size:"Storleik",preview:"Sj\u00e5 f\u00f8rebels utkast",constrain_proportions:"Behald proporsjonar",controls:"Kontroller",numloop:"Antal gjennoml\u00f8p",console:"Konsoll",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-variablar",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skalering",quality:"Kvalitet",shuffle:"Miks",prefetch:"Registrer p\u00e5 f\u00f8rehand",nojava:"Ikke Java",maintainaspect:"Behald proporsjonar",imagestatus:"Status for bilete",center:"Midtstill",autogotourl:"Auto-g\u00e5-til-URL",shockwave_options:"Shockwave-innstillinger",rmp_options:"Real mediaplayer-innstillingar",wmp_options:"Windows mediaplayer-innstillingar",qt_options:"Quicktime-innstillingar",flash_options:"Flash-eigenskapar",hidden:"Skjult",align_bottom_left:"Botn venste",align_bottom_right:"Botn h\u00f8gre",flv_options:"Flash video-val",flv_scalemode:"Skalering",flv_buffer:"Buffer",flv_startimage:"Startbilde",flv_starttime:"Starttid",flv_defaultvolume:"Standardvolum",flv_hiddengui:"Skjult GUI",flv_autostart:"Autostart",flv_loop:"L\u00f8kke",flv_showscalemodes:"Vis skalering",flv_smoothvideo:"Jamn video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/no_dlg.js b/js/tiny_mce/plugins/media/langs/no_dlg.js new file mode 100755 index 000000000..7d5c9a089 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Sett inn/rediger inkludert objekt","align_top_left":"Topp venstre","align_center":"Midten","align_left":"Venstre","align_bottom":"Bunn","align_right":"H\u00f8yre","align_top":"Topp","qt_stream_warn":"Streamede rtsp ressurser b\u00f8r legges til QT Src-feltet under fanen avansert.\\nDu b\u00f8r ogs\u00e5 legge til en ikke-streamet versjon i src-feltet.",qtsrc:"QT Src",progress:"Fremdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekk stil",scriptcallbacks:"Skript referanser","align_top_right":"Topp h\u00f8yre",uimode:"UI-modus",rate:"Rate",playcount:"Teller",defaultframe:"Standard ramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fange opp id",baseurl:"Utgangsadresse (URL)",balance:"Balanse",windowlessvideo:"Video uten vindu",stretchtofit:"Strekk for \u00e5 passe",mute:"Dempe",invokeurls:"Aktiver URLer",fullscreen:"Fullskjerm",enabled:"Aktivert",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighet",href:"Href",endtime:"Stopp tid",starttime:"Start tid",enablejavascript:"Tillat Javaskript",correction:"Ingen korreksjon",targetcache:"M\u00e5l-mellomlagring",playeveryframe:"Spill hver ramme",kioskmode:"Kiosk-modus",controller:"Kontroller",menu:"Vis meny",loop:"L\u00f8kke",play:"Autostart",hspace:"H-avstand",vspace:"V-avstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"Dimmensjoner",preview:"Forh\u00e5ndsvis","constrain_proportions":"Behold proporsjoner",controls:"Kontroller",numloop:"Antall gjennomganger",console:"Konsoll",cache:"Mellomlager",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash variabler",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skala",quality:"Kvalitet",shuffle:"Mikse",prefetch:"Hente p\u00e5 forh\u00e5nd",nojava:"Ingen Java",maintainaspect:"Behold st\u00f8rrelsesforhold",imagestatus:"Bildestatus",center:"Midtstill",autogotourl:"Auto g\u00e5-til URL","shockwave_options":"Shockwave egenskaper","rmp_options":"Real mediaplayer egenskaper","wmp_options":"Windows Media Player egenskaper","qt_options":"Quicktime egenskaper","flash_options":"Flash egenskaper",hidden:"Skjult","align_bottom_left":"Bunn venste","align_bottom_right":"Bunn h\u00f8gre","flv_options":"Flash video egenskaper","flv_scalemode":"Skalerings modus","flv_buffer":"Buffer","flv_startimage":"Startbilde","flv_starttime":"Starttid","flv_defaultvolume":"Standardvolum","flv_hiddengui":"Skjult GUI","flv_autostart":"Autostart","flv_loop":"L\u00f8kke","flv_showscalemodes":"Vis skalering","flv_smoothvideo":"Jevn video","flv_jscallback":"JS-tilbakekall","html5_video_options":"HTML5-videovalg",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forh\u00e5ndsvis",poster:"Poster",source:"Kilde"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/pl_dlg.js b/js/tiny_mce/plugins/media/langs/pl_dlg.js new file mode 100755 index 000000000..7b8695faa --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.media_dlg',{list:"Lista",file:"Plik/URL",advanced:"Zaawansowane",general:"G\u0142\u00f3wne",title:"Wstaw/Edytuj wbudowane media","align_top_left":"G\u00f3rny lewy","align_center":"\u015arodek","align_left":"Lewo","align_bottom":"D\u00f3\u0142","align_right":"Prawo","align_top":"G\u00f3ra","qt_stream_warn":"Emitowane \u017ar\u00f3d\u0142a rtsp powinny by\u0107 dodane do pola QT Src w zak\u0142adce zaawansowane.nPowiniene\u015b r\u00f3wnie\u017c doda\u0107 niestrumieniow\u0105 wersj\u0119 do pola Src.",qtsrc:"QT Src",progress:"Post\u0119p",sound:"D\u017awi\u0119k",swstretchvalign:"Wyr\u00f3wnaj w pionie",swstretchhalign:"Wyr\u00f3wnaj w poziomie",swstretchstyle:"Styl rozci\u0105gania",scriptcallbacks:"Funkcje zwrotne skryptu","align_top_right":"G\u00f3rny prawy",uimode:"Tryb UI",rate:"Tempo",playcount:"Ilo\u015b\u0107 odtworze\u0144",defaultframe:"Domy\u015blna ramka",currentposition:"Aktualna pozycja",currentmarker:"Aktualny znacznik",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balans",windowlessvideo:"Wideo bez okienka",stretchtofit:"Rozci\u0105gnij aby dopasowa\u0107",mute:"Wycisz",invokeurls:"Odwo\u0142aj si\u0119 do URLi",fullscreen:"Pe\u0142ny ekran",enabled:"Aktywny",autostart:"Auto start",volume:"G\u0142o\u015bno\u015b\u0107",target:"Cel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Ko\u0144cowy czas",starttime:"Pocz\u0105tkowy czas",enablejavascript:"W\u0142\u0105cz JavaScript",correction:"Bez korekcji",targetcache:"Target cache",playeveryframe:"Odtwarzaj ka\u017cd\u0105 ramk\u0119",kioskmode:"Tryb kiosku",controller:"Kontroler",menu:"Poka\u017c menu",loop:"Zap\u0119tlenie",play:"Autoodtwarzanie",hspace:"H-Space",vspace:"V-Space","class_name":"Klasa",name:"Nazwa",id:"Id",type:"Typ",size:"Wymiary",preview:"Podgl\u0105d","constrain_proportions":"Zachowaj proporcje",controls:"Controls",numloop:"Liczba powt\u00f3rze\u0144",console:"Konsola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Baza",bgcolor:"T\u0142o",wmode:"WMode",salign:"SAlign",align:"Wyr\u00f3wnaj",scale:"Skala",quality:"Jako\u015b\u0107",shuffle:"Losuj",prefetch:"Prze\u0142aduj",nojava:"Bez javy",maintainaspect:"Utrzymaj aspekt",imagestatus:"Obraz statusu",center:"Wy\u015brodkuj",autogotourl:"Automatycznie przejd\u017a pod adres","shockwave_options":"Opcje Shockwave","rmp_options":"Opcje Real media player","wmp_options":"Opcje Windows media player","qt_options":"Opcje Quicktime","flash_options":"Opcje flasha",hidden:"Ukryty","align_bottom_left":"Dolny lewy","align_bottom_right":"Dolny prawy","flv_options":"Opcje wideo flasha","flv_scalemode":"Tryb skalowania","flv_buffer":"Bufor","flv_startimage":"Obraz startowy","flv_starttime":"Czas startu","flv_defaultvolume":"Domy\u015blna g\u0142o\u015bno\u015b\u0107","flv_hiddengui":"Ukryte GUI","flv_autostart":"Autostart","flv_loop":"Zap\u0119tlaj","flv_showscalemodes":"Pokazuj tryby skali","flv_smoothvideo":"P\u0142ynne wideo","flv_jscallback":"Funkcja zwrotna JS","html5_video_options":"Opcje HTML5 Video",altsource1:"Alternatywne \u017ar\u00f3d\u0142o 1",altsource2:"Alternatywne \u017ar\u00f3d\u0142o 2",preload:"Prze\u0142aduj",poster:"Obraz",source:"\u0179r\u00f3d\u0142o"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ps_dlg.js b/js/tiny_mce/plugins/media/langs/ps_dlg.js new file mode 100755 index 000000000..f9d802ef4 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ps_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ps.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/pt_dlg.js b/js/tiny_mce/plugins/media/langs/pt_dlg.js new file mode 100755 index 000000000..0747dd04e --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avan\u00e7ado",general:"Geral",title:"Inserir/Editar m\u00eddia incorporada",align_top_left:"Topo esquerda",align_center:"Centro",align_left:"Esquerda",align_bottom:"Abaixo",align_right:"Direita",align_top:"Topo",qt_stream_warn:"Fluxos de recursos rtsp devem ser acrescentados ao campo QT Src no Modo Avan\u00e7ado.\\Numa vers\u00e3o sem fluxo tamb\u00e9m deve ser acrescentada ao campo Src.",qtsrc:"QT Src",progress:"Progresso",sound:"Som",swstretchvalign:"For\u00e7ar V-Alinhamento",swstretchhalign:"For\u00e7ar H-Alinhamento",swstretchstyle:"For\u00e7ar Estilo",scriptcallbacks:"Retornos de script",align_top_right:"Topo direita",uimode:"Modo UI",rate:"Taxa",playcount:"Contagem de ouvintes",defaultframe:"Frame padr\u00e3o",currentposition:"Posi\u00e7\u00e3o atual",currentmarker:"Marcador atual",captioningid:"Id de legenda",baseurl:"URL Base",balance:"Stereo",windowlessvideo:"V\u00eddeo sem janela",stretchtofit:"Estender",mute:"Mudo",invokeurls:"Chamar URLs",fullscreen:"Tela inteira",enabled:"Ativado",autostart:"Execu\u00e7\u00e3o autom\u00e1tica",volume:"Volume",target:"Alvo",qtsrcchokespeed:"Diminuir Velocidade",href:"Link",endtime:"Hora do fim",starttime:"Hora de in\u00edcio",enablejavascript:"Disponibilizar javaScript",correction:"Sem correc\u00e7\u00f5es",targetcache:"Cache alvo",playeveryframe:"Executar todas as frames",kioskmode:"Modo Quiosque",controller:"Controlador",menu:"Mostrar menu",loop:"Repeti\u00e7\u00e3o autom\u00e1tica",play:"Execu\u00e7\u00e3o autom\u00e1tica",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",class_name:"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimens\u00f5es",preview:"Previs\u00e3o",constrain_proportions:"Manter propor\u00e7\u00f5es",controls:"Controles",numloop:"Repeti\u00e7\u00f5es",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fundo",wmode:"WMode",salign:"SAlign",align:"Alinhamento",scale:"Escala",quality:"Qualidade",shuffle:"Aleat\u00f3rio",prefetch:"Pr\u00e9-buscar",nojava:"Sem java",maintainaspect:"Manter aspecto",imagestatus:"Status da imagem",center:"Centro",autogotourl:"Auto abrir URL",shockwave_options:"Op\u00e7\u00f5es Shockwave",rmp_options:"Op\u00e7\u00f5es Real Media Player",wmp_options:"Op\u00e7\u00f5es Windows Media Player",qt_options:"Op\u00e7\u00f5es Quicktime",flash_options:"Op\u00e7\u00f5es Flash",hidden:"Oculto",align_bottom_left:"Abaixo esquerda",align_bottom_right:"Abaixo direita",flv_options:"Op\u00e7\u00f5es de Flash video",flv_scalemode:"Modo escala",flv_buffer:"Buffer",flv_startimage:"Imagem inicial",flv_starttime:"Hora inicial",flv_defaultvolume:"Volume padr\u00e3o",flv_hiddengui:"GUI oculta",flv_autostart:"Execu\u00e7\u00e3o Autom\u00e1tica",flv_loop:"Repeti\u00e7\u00e3o",flv_showscalemodes:"Mostrar modos escala",flv_smoothvideo:"Suavilizar video",flv_jscallback:"Retorno de JS",html5_video_options:"Op\u00e7\u00f5es de v\u00eddeo HTML5",altsource1:"C\u00f3digo alternativo 1",altsource2:"C\u00f3digo alternativo 2",preload:"Pr\u00e9-carregar",poster:"Poster",source:"Fonte"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ro_dlg.js b/js/tiny_mce/plugins/media/langs/ro_dlg.js new file mode 100755 index 000000000..7c08c7a24 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.media_dlg',{list:"List\u0103",file:"Fi\u015fier/URL",advanced:"Avansat\u0103",general:"General",title:"Insereaz\u0103 / editeaz\u0103 media",align_top_left:"St\u00e2nga sus",align_center:"Centru",align_left:"St\u00e2nga",align_bottom:"Jos",align_right:"Dreapta",align_top:"Sus",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progres",sound:"Sunet",swstretchvalign:"Stretch V-Aliniere",swstretchhalign:"Stretch H-Aliniere",swstretchstyle:"Stil strech",scriptcallbacks:"Script callback",align_top_right:"Dreapta sus",uimode:"Mod UI",rate:"Vot",playcount:"Numar red\u0103ri",defaultframe:"Frame implicit",currentposition:"Pozi\u0163ie curent\u0103",currentmarker:"Marcator curent",captioningid:"Titlu id",baseurl:"URL baz\u0103",balance:"Balan\u0163\u0103",windowlessvideo:"Video f\u0103r\u0103 fereastr\u0103",stretchtofit:"\u00centinde pentru a se \u00eencadra",mute:"Mut",invokeurls:"Invoc\u0103 URL-uri",fullscreen:"Ecran complet",enabled:"Activat",autostart:"Pornire automat\u0103",volume:"Volum",target:"Tin\u0163a",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Timp de sf\u00e2r\u015fit",starttime:"Timp de \u00eenceput",enablejavascript:"Activeaz\u0103 JavaScript",correction:"F\u0103r\u0103 corecturi",targetcache:"Target cache",playeveryframe:"Red\u0103 fiecare frame",kioskmode:"Mod Kiosk",controller:"Controler",menu:"Arat\u0103 meniu",loop:"Repetare",play:"Redare automat\u0103",hspace:"H-Space",vspace:"V-Space",class_name:"Clas\u0103",name:"Nume",id:"Id",type:"Tip",size:"Dimensiuni",preview:"Previzualizare",constrain_proportions:"Men\u0163inere propor\u0163ii",controls:"Controale",numloop:"Num\u0103r de repet\u0103ri",console:"Consola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variabile Flash",base:"URL de baza",bgcolor:"Fundal",wmode:"WMode",salign:"SAlign",align:"Aliniere",scale:"Scar\u0103",quality:"Calitate",shuffle:"Aleator",prefetch:"Prefetch",nojava:"F\u0103r\u0103 java",maintainaspect:"Men\u0163ine aspect",imagestatus:"Status imagine",center:"Centru",autogotourl:"Auto goto URL",shockwave_options:"Op\u0163iuni Shockwave",rmp_options:"Op\u0163iuni Real media player",wmp_options:"Op\u0163iuni Windows media player",qt_options:"Op\u0163iuni QuickTime",flash_options:"Op\u0163iuni Flash",hidden:"Ascuns",align_bottom_left:"St\u00e2nga jos",align_bottom_right:"Dreapta jos",flv_options:"Op\u0163iuni Flash video",flv_scalemode:"Moduri scal\u0103",flv_buffer:"Buffer",flv_startimage:"Imagine start ",flv_starttime:"Timp start",flv_defaultvolume:"Volum implicit",flv_hiddengui:"GUI ascuns",flv_autostart:"Auto pornire",flv_loop:"Repetare",flv_showscalemodes:"Afi\u015fare moduri scalare",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ru_dlg.js b/js/tiny_mce/plugins/media/langs/ru_dlg.js new file mode 100755 index 000000000..8d19a3afa --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0410\u0434\u0440\u0435\u0441",advanced:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",general:"\u041e\u0431\u0449\u0435\u0435",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043b\u0438\u043f\u0430","align_top_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_center":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","qt_stream_warn":"\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 QT Src.",qtsrc:"QT Src",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0412\u0435\u0440. \u0432\u044b\u0440-\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u044f",swstretchhalign:"\u0413\u043e\u0440. \u0432\u044b\u0440-\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u044f",swstretchstyle:"\u0421\u0442\u0438\u043b\u044c \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435",scriptcallbacks:"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430","align_top_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",uimode:"\u0420\u0435\u0436\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430",rate:"\u0420\u0435\u0439\u0442\u0438\u043d\u0433",playcount:"\u0429\u0435\u0442\u0447\u0438\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439",defaultframe:"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u0430\u0434\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u0418\u043c\u044f \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432",baseurl:"\u0411\u0430\u0437\u043e\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u041e\u043a\u043e\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e",stretchtofit:"\u041f\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430",mute:"\u0411\u0435\u0437 \u0437\u0432\u0443\u043a\u0430",invokeurls:"\u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441",fullscreen:"\u041d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e",autostart:"\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a",volume:"\u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c",target:"\u0426\u0435\u043b\u044c",qtsrcchokespeed:"Choke speed",href:"\u0421\u0441\u044b\u043b\u043a\u0430",endtime:"\u0412\u0440\u0435\u043c\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f",starttime:"\u0412\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c JavaScript",correction:"\u0411\u0435\u0437 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438",targetcache:"\u041a\u044d\u0448 \u0446\u0435\u043b\u0438",playeveryframe:"\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440",kioskmode:"\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043e\u0441\u043a",controller:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",menu:"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u043e\u0440",play:"\u0410\u0432\u0442\u0437\u0430\u043f\u0443\u0441\u043a",hspace:"\u0413\u043e\u0440. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","class_name":"\u041a\u043b\u0430\u0441\u0441",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",id:"\u0418\u043c\u044f",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u044b",preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u041f\u043e\u0432\u0442\u043e\u0440\u044b",console:"\u041a\u043e\u043d\u0441\u043e\u043b\u044c",cache:"\u041a\u044d\u0448",autohref:"\u0410\u0432\u0442\u043e-\u0441\u0441\u044b\u043b\u043a\u0430",liveconnect:"SWLiveConnect",flashvars:"Flash \u043a\u043e\u043c\u0430\u043d\u0434\u044b",base:"Base",bgcolor:"\u0424\u043e\u043d",wmode:"\u041e\u043a\u043d\u043e",salign:"\u0412\u044b\u0440-\u0435",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",scale:"\u041e\u0431\u043b\u0430\u0441\u0442\u044c",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0412 \u0440\u0430\u0437\u0431\u0440\u043e\u0441",prefetch:"\u0423\u043f\u0440\u0435\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430",nojava:"\u0411\u0435\u0437 Java",maintainaspect:"\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",center:"\u0426\u0435\u043d\u0442\u0440",autogotourl:"\u0410\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441","shockwave_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Shockwave","rmp_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Real Media","wmp_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Windows Media","qt_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Quicktime","flash_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Flash",hidden:"\u0421\u043a\u0440\u044b\u0442\u044b\u0439","align_bottom_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_bottom_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","flv_options":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Flash","flv_scalemode":"\u041c\u0430\u0441\u0448\u0442\u0430\u0431","flv_buffer":"\u0411\u0443\u0444\u0435\u0440","flv_startimage":"\u0421\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","flv_starttime":"\u0421\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f","flv_defaultvolume":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0437\u0432\u0443\u043a","flv_hiddengui":"\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441","flv_autostart":"\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a","flv_loop":"\u041f\u043e\u0432\u0442\u043e\u0440","flv_showscalemodes":"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430","flv_smoothvideo":"\u041f\u043b\u0430\u0432\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e","flv_jscallback":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 JS","html5_video_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b HTML5 Video",altsource1:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 1",altsource2:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 2",preload:"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430",poster:"\u041f\u043e\u0441\u0442\u0435\u0440",source:"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/sc_dlg.js b/js/tiny_mce/plugins/media/langs/sc_dlg.js new file mode 100755 index 000000000..679998cf5 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/sc_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sc.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/\u7f51\u5740",advanced:"\u9ad8\u7ea7",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7f16\u8f91\u5d4c\u5165\u5a92\u4f53",align_top_left:"\u5de6\u4e0a",align_center:"\u4e2d\u95f4",align_left:"\u9760\u5de6",align_bottom:"\u4e0b\u65b9",align_right:"\u9760\u53f3",align_top:"\u4e0a\u65b9",qt_stream_warn:"\u6d41\u5f0frtsp\u8d44\u6e90\u5e94\u8be5\u6dfb\u52a0\u5230\u300c\u9ad8\u7ea7\u300d\u4e2dQT Src\u3002 \\n\u540c\u65f6\u6dfb\u52a0\u975e\u6d41\u5f0f\u8d44\u6e90\u5230Src\u3002 ",qtsrc:"QT Src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u5782\u76f4\u62c9\u5347",swstretchhalign:"\u6c34\u51c6\u62c9\u5347",swstretchstyle:"\u62c9\u5347\u6a21\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u8c03",align_top_right:"\u53f3\u4e0a",uimode:"\u5916\u89c2\u6a21\u5f0f",rate:"\u5e27\u7387",playcount:"\u64ad\u653e\u8ba1\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bb0",captioningid:"Captioning id",baseurl:"\u57fa\u51c6URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u8fb9\u6846",stretchtofit:"\u62c9\u4f38",mute:"\u9759\u97f3",invokeurls:"\u76f8\u5173URLs",fullscreen:"\u5168\u5c4f",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u5f00\u59cb",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"Choke speed",href:"\u8fde\u7ed3",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u6ca1\u6709\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u64ad\u653e\u6bcf\u4e00\u5e27",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u529f\u80fd\u8868",loop:"\u56de\u5708\u64ad\u653e",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u5782\u76f4\u95f4\u8ddd",vspace:"\u6c34\u51c6\u95f4\u8ddd",class_name:"\u7c7b\u578b",name:"\u540d\u79f0",id:"Id",type:"\u7c7b\u578b",size:"\u5c3a\u5bf8",preview:"\u9884\u89c8",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u63a7\u5236\u5668",numloop:"\u56de\u5708\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8HREF",liveconnect:"SWLiveConnect",flashvars:"\u53c2\u6570",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u89c6\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u6bd4\u4f8b",quality:"\u54c1\u8d28",shuffle:"Shuffle",prefetch:"\u9884\u8bfb\u53d6",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"\u56fe\u50cf\u72b6\u6001",center:"\u4e2d\u5fc3",autogotourl:"\u81ea\u52a8\u8f6c\u5230URL",shockwave_options:"Shockwave\u9009\u9879",rmp_options:"Real media player\u9009\u9879",wmp_options:"Windows media player\u9009\u9879",qt_options:"Quicktime\u9009\u9879",flash_options:"Flash\u9009\u9879",hidden:"\u9690\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u89c6\u9891\u9009\u9879",flv_scalemode:"Scale mode",flv_buffer:"\u7f13\u51b2",flv_startimage:"\u5f00\u59cb\u753b\u9762",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9ed8\u8ba4\u97f3\u91cf",flv_hiddengui:"\u9690\u85cfGUI",flv_autostart:"\u81ea\u52a8\u64ad\u653e",flv_loop:"\u56de\u5708",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"\u5e73\u6ed1\u56fe\u50cf",flv_jscallback:"JS\u56de\u8c03"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/se_dlg.js b/js/tiny_mce/plugins/media/langs/se_dlg.js new file mode 100755 index 000000000..fe1755ac3 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/se_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('se.media_dlg',{list:"Lista",file:"Fil/URL",advanced:"Avancerat",general:"Generellt",title:"Infoga/redigera inb\u00e4ddad media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullsk\u00e4rm",enabled:"Enabled",autostart:"Starta automatiskt",volume:"Volym",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Spela varje bildruta",kioskmode:"Kiosk mode",controller:"Controller",menu:"Visa menyn",loop:"Loopa",play:"Spela upp automatiskt",hspace:"H-Space",vspace:"V-Space",class_name:"Klass",name:"Namn",id:"Id",type:"Typ",size:"Dimensioner",preview:"F\u00f6rhandsvisning",constrain_proportions:"Bibeh\u00e5ll proportionerna",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Bakgrundsf\u00e4rg",wmode:"WMode",salign:"SAlign",align:"Justera",scale:"Skala",quality:"Kvalit\u00e9",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/si_dlg.js b/js/tiny_mce/plugins/media/langs/si_dlg.js new file mode 100755 index 000000000..6ac7ae79d --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/si_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('si.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/sk_dlg.js b/js/tiny_mce/plugins/media/langs/sk_dlg.js new file mode 100755 index 000000000..176c2ebb9 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/sk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sk.media_dlg',{list:"Zoznam",file:"S\u00fabor/URL",advanced:"Roz\u0161\u00edren\u00e9",general:"Obecn\u00e9",title:"Vlo\u017ei\u0165/upravi\u0165 vkladan\u00e9 m\u00e9di\u00e1",align_top_left:"Hore v\u013eavo",align_center:"Na stred",align_left:"V\u013eavo",align_bottom:"Dolu",align_right:"Vpravo",align_top:"Hore",qt_stream_warn:"Streamovan\u00e9 rtsp zdroje m\u00f4\u017eu by\u0165 pridan\u00e9 do polia \'S\u00fabor/URL streamu pre QT\' na z\u00e1lo\u017eke \'Roz\u0161\u00edren\u00e9\'.\\nYM\u00f4\u017ete tie\u017e prida\u0165 nie streamovan\u00fa verziu do polia \'S\u00fabor/URL\'.",qtsrc:"S\u00fabor/URL streamu pre QT",progress:"Priebeh",sound:"Zvuk",swstretchvalign:"Zarovnanie vert. roztiahnutia",swstretchhalign:"Zarovnanie horiz. roztiahnutia",swstretchstyle:"\u0160t\u00fdl roztiahnutia",scriptcallbacks:"Skripty sp\u00e4tn\u00fdch volan\u00ed",align_top_right:"Hore vpravo",uimode:"Re\u017eim ovl\u00e1dacieho panelu",rate:"Relat\u00edvna r\u00fdchlos\u0165",playcount:"Po\u010d\u00edtadlo prehrat\u00ed",defaultframe:"Predvolen\u00fd sn\u00edmok",currentposition:"Aktu\u00e1lna poz\u00edcia",currentmarker:"Aktu\u00e1lna z\u00e1lo\u017eka",captioningid:"ID popisku m\u00e9dia",baseurl:"Z\u00e1kladn\u00e1 URL",balance:"Rovnov\u00e1ha",windowlessvideo:"Video bez okna",stretchtofit:"Roztiahn\u00fa\u0165 do okna",mute:"Uml\u010da\u0165",invokeurls:"Po\u017eadova\u0165 URL",fullscreen:"Cel\u00e1 obrazovka",enabled:"Povoli\u0165 ovl\u00e1dac\u00ed panel",autostart:"Automatick\u00e9 spustenie",volume:"Hlasitos\u0165",target:"Cie\u013e",qtsrcchokespeed:"Zn\u00ed\u017eenie r\u00fdchlosti",href:"Odkaz",endtime:"Koncov\u00fd \u010das",starttime:"Po\u010diato\u010dn\u00fd \u010das",enablejavascript:"Povoli\u0165 JavaScript",correction:"Bez korekci\u00ed",targetcache:"Cie\u013eov\u00e1 medzipam\u00e4\u0165",playeveryframe:"Prehra\u0165 ka\u017ed\u00fd sn\u00edmok",kioskmode:"Zak\u00e1za\u0165 ukladanie",controller:"Ovl\u00e1dac\u00ed panel",menu:"Zobrazi\u0165 ponuku",loop:"Opakovanie",play:"Automatick\u00e9 prehr\u00e1vanie",hspace:"Horizont\u00e1lne odsadenie",vspace:"Vertik\u00e1lne odsadenie",class_name:"Trieda",name:"N\u00e1zov",id:"ID",type:"Typ",size:"Rozmery",preview:"N\u00e1h\u013ead",constrain_proportions:"Zachova\u0165 proporcie",controls:"Ovl\u00e1dac\u00ed panel",numloop:"Po\u010det opakovan\u00ed",console:"Konzola",cache:"Medzipam\u00e4\u0165",autohref:"Automatick\u00e9 na\u010d\u00edtanie",liveconnect:"Spusti\u0165 Javu (SWLiveConnect)",flashvars:"Parametre (Flashvars)",base:"Z\u00e1kladn\u00fd prie\u010dinok",bgcolor:"Pozadie",wmode:"Re\u017eim okna",salign:"Zarovnanie okna",align:"Zarovnanie",scale:"Pomer",quality:"Kvalita",shuffle:"N\u00e1hodne",prefetch:"Predna\u010d\u00edtanie",nojava:"Nesp\u00fa\u0161\u0165a\u0165 Javu",maintainaspect:"Zachova\u0165 pomer str\u00e1n",imagestatus:"Stav obrazu",center:"Na stred",autogotourl:"Automatick\u00fd prechod na URL",shockwave_options:"Mo\u017enosti Shockwave",rmp_options:"Mo\u017enosti prehr\u00e1va\u010da Real media",wmp_options:"Mo\u017enosti prehr\u00e1va\u010da Windows media",qt_options:"Mo\u017enosti Quicktime",flash_options:"Mo\u017enosti Flashu",hidden:"Skry\u0165",align_bottom_left:"Dolu v\u013eavo",align_bottom_right:"Dolu vpravo",flv_options:"Mo\u017enosti Flash video",flv_scalemode:"Zmena ve\u013ekosti",flv_buffer:"Z\u00e1sobn\u00edk",flv_startimage:"Po\u010diato\u010dn\u00fd obr\u00e1zok",flv_starttime:"Po\u010diato\u010dn\u00fd \u010das",flv_defaultvolume:"Predvolen\u00e1 hlasitos\u0165",flv_hiddengui:"Skryt\u00fd ovl\u00e1dac\u00ed panel",flv_autostart:"Automatick\u00e9 spustenie",flv_loop:"Opakovanie",flv_showscalemodes:"Zobrazi\u0165 vo\u013eby zmeny ve\u013ekosti",flv_smoothvideo:"Vyhladzovan\u00fd obraz",flv_jscallback:"Sp\u00e4tn\u00e9 volanie JavaScriptu",html5_video_options:"Mo\u017enosti HTML5 video",altsource1:"Alternat\u00edvny zdroj 1",altsource2:"Alternat\u00edvny zdroj 2",preload:"Predna\u010d\u00edtanie",poster:"Obr\u00e1zok (zobraz\u00ed sa pri nedostupnosti videa)",source:"Zdroj"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/sl_dlg.js b/js/tiny_mce/plugins/media/langs/sl_dlg.js new file mode 100755 index 000000000..2c564aec0 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/sl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sl.media_dlg',{list:"Seznam",file:"Datoteka/URL",advanced:"Napredno",general:"Splo\u0161no",title:"Vstavi / uredi multimedijsko vsebino",align_top_left:"zgoraj levo",align_center:"sredina",align_left:"levo",align_bottom:"spodaj",align_right:"desno",align_top:"zgoraj",qt_stream_warn:"V polje \"QT vir\" pod zavihkom napredno, morajo biti dodani Preto\u010dni RTSP viri.nNepreto\u010dna razli\u010dica mora biti dodana v polje \"vir\".",qtsrc:"QT vir",progress:"Napredek",sound:"Zvok",swstretchvalign:"raztegni n-poravnano",swstretchhalign:"raztegni v-poravnano",swstretchstyle:"Slog raztegovanja",scriptcallbacks:"Povratni klici",align_top_right:"zgoraj desno",uimode:"Na\u010din uporabni\u0161kega vmesnika",rate:"Ocena",playcount:"\u0160tevilo predvajanj",defaultframe:"Privzeti okvir",currentposition:"Trenutni polo\u017eaj",currentmarker:"Trenutna oznaka",captioningid:"Oznaka podnapisov",baseurl:"Temeljni URL",balance:"Ravnovesje",windowlessvideo:"Video brez okna",stretchtofit:"Raz\u0161iri",mute:"Uti\u0161aj",invokeurls:"Naslovi URLje",fullscreen:"Cel zaslon",enabled:"Omogo\u010deno",autostart:"Samodejno predvajaj",volume:"Glasnost",target:"Cilj",qtsrcchokespeed:"Hitrost predpomnenja",href:"Povezava",endtime:"Kon\u010dni \u010das",starttime:"Za\u010detni \u010das",enablejavascript:"Omogo\u010di JavaScript",correction:"Brez popravkov",targetcache:"Ciljno predpomnjenje",playeveryframe:"Predvajaj vsak okvir",kioskmode:"Kiosk na\u010din",controller:"Nadzorni element",menu:"Prika\u017ei meni",loop:"Ponavljaj",play:"Samodejno predvajaj",hspace:"H-razmik",vspace:"V-razmik",class_name:"Razred",name:"Ime",id:"Id",type:"Tip",size:"Dimenzije",preview:"Predogled",constrain_proportions:"Obdr\u017ei razmerje",controls:"Nadzorni elementi",numloop:"\u0160t. zank",console:"Konzola",cache:"Predpomnjenje",autohref:"Avtomatska povezava",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Osnova",bgcolor:"Ozadje",wmode:"WM na\u010din",salign:"S-poravnava",align:"Poravnava",scale:"Stopnja pove\u010dave",quality:"Kakovost",shuffle:"Pome\u0161aj",prefetch:"Predpomnenje",nojava:"Brez Jave",maintainaspect:"Zakleni razmerje",imagestatus:"Slika stanja",center:"Sredina",autogotourl:"Samodejno na URL",shockwave_options:"Mo\u017enosti Shockwave",rmp_options:"Mo\u017enosti Real media player",wmp_options:"Mo\u017enosti Windows media player",qt_options:"Mo\u017enosti Quicktime",flash_options:"Mo\u017enosti Flash",hidden:"Skrito",align_bottom_left:"spodaj levo",align_bottom_right:"spodaj desno",flv_options:"Mo\u017enosti videa Flash",flv_scalemode:"Na\u010din pove\u010devanja",flv_buffer:"Medpomnjenje",flv_startimage:"Za\u010detna slika",flv_starttime:"Za\u010detni \u010das",flv_defaultvolume:"Privzeta glasnost",flv_hiddengui:"Skrit up. vmesnik",flv_autostart:"Samodejni zagon",flv_loop:"Zanka",flv_showscalemodes:"Prika\u017ei na\u010dine pove\u010dave",flv_smoothvideo:"Glajenje videa",flv_jscallback:"JS povratni klic",html5_video_options:"HTML5 video nastavitve",altsource1:"Alternativni vir 1",altsource2:"Alternativni vir 2",preload:"Predpomnenje",poster:"Poster",source:"Vir"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/sq_dlg.js b/js/tiny_mce/plugins/media/langs/sq_dlg.js new file mode 100755 index 000000000..878010bc4 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/sq_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sq.media_dlg',{list:"Lista",file:"Skedari/URL",advanced:"T\u00eb Avancuara",general:"T\u00eb P\u00ebrgjithshme",title:"Fut / edito media",align_top_left:"Krye-majtas",align_center:"Qend\u00ebr",align_left:"Majtas",align_bottom:"Fund",align_right:"Djathtas",align_top:"Krye",qt_stream_warn:"Risurset rtsp duhet t\u00eb shtohen n\u00eb fush\u00ebn QT Src n\u00eb opsionet e avancuara.\\nDuhet t\u00eb shtoni gjithashtu nj\u00eb version jo stream n\u00eb fush\u00ebn src..",qtsrc:"QT Src",progress:"Progresi",sound:"Z\u00ebri",swstretchvalign:"Zmadho Drejtim-V",swstretchhalign:"Zmadho Drejtim-H",swstretchstyle:"Stili i zmadhimit",scriptcallbacks:"Script Callbacks",align_top_right:"Krye-djathtas",uimode:"M\u00ebnyra UI",rate:"Raporti",playcount:"Numri i luajtjeve",defaultframe:"Kuadri fillestar",currentposition:"Pozicioni aktual",currentmarker:"Sh\u00ebnjuesi aktual",captioningid:"Id e titullit",baseurl:"URL baz\u00eb",balance:"Balanci",windowlessvideo:"Video pa dritare",stretchtofit:"Zmadho me p\u00ebrshtatje",mute:"Mbyll z\u00ebrin",invokeurls:"Th\u00ebrrit URL",fullscreen:"Pamje e plot\u00eb",enabled:"Aktivizuar",autostart:"Nisje automatike",volume:"Volumi",target:"Sh\u00ebnjestra",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Koha e p\u00ebrfundimit",starttime:"Koha e nisjes",enablejavascript:"Aktivizo JavaScript",correction:"Pa rregullime",targetcache:"Cache sh\u00ebnjestr\u00ebn",playeveryframe:"Luaj \u00e7do kuader",kioskmode:"M\u00ebnyra Kiosk",controller:"Kontrollues",menu:"Shfaq menu",loop:"Lak",play:"Luaj automatikisht",hspace:"Hap\u00ebsira-H",vspace:"Hap\u00ebsira-V",class_name:"Klasa",name:"Emri",id:"Id",type:"Tipi",size:"P\u00ebrmasat",preview:"Paraqitje",constrain_proportions:"Ruaj raportet",controls:"Kontrollet",numloop:"Numri lak\u00ebve",console:"Konsola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Baza",bgcolor:"Fusha",wmode:"WMode",salign:"Drejtimi S",align:"Drejtimi",scale:"Shkalla",quality:"Cil\u00ebsia",shuffle:"Shuffle",prefetch:"Para ngarko",nojava:"Pa Java",maintainaspect:"Ruaj raportet",imagestatus:"Statusi fotos",center:"Qend\u00ebr",autogotourl:"Shko n\u00eb URL automatikisht",shockwave_options:"Opsionet e Shockwave",rmp_options:"Opsionet e Real media player",wmp_options:"Opsionet e Windows media player",qt_options:"Opsionet e Quicktime",flash_options:"Opsionet e Flash",hidden:"Fshehur",align_bottom_left:"Fund-majtas",align_bottom_right:"Fund-djathtas",flv_options:"Opsionet e videos Flash",flv_scalemode:"M\u00ebnyra e shkall\u00ebs",flv_buffer:"Buffer",flv_startimage:"Foto fillestare",flv_starttime:"Foto p\u00ebrfundimtare",flv_defaultvolume:"Volumi fillestar",flv_hiddengui:"GUI e fshehur",flv_autostart:"Nis automatikisht",flv_loop:"Lak",flv_showscalemodes:"Trego shkall\u00ebt",flv_smoothvideo:"Video pa ngecje",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/sr_dlg.js b/js/tiny_mce/plugins/media/langs/sr_dlg.js new file mode 100755 index 000000000..e65e6e2e5 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/sr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sr.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/sv_dlg.js b/js/tiny_mce/plugins/media/langs/sv_dlg.js new file mode 100755 index 000000000..0fcac5622 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/sv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sv.media_dlg',{list:"Lista",file:"Fil/URL",advanced:"Avancerat",general:"Generellt",title:"Infoga/redigera inb\u00e4ddad media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullsk\u00e4rm",enabled:"Enabled",autostart:"Starta automatiskt",volume:"Volym",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Spela varje bildruta",kioskmode:"Kiosk mode",controller:"Controller",menu:"Visa menyn",loop:"Loopa",play:"Spela upp automatiskt",hspace:"H-Space",vspace:"V-Space","class_name":"Klass",name:"Namn",id:"Id",type:"Typ",size:"Dimensioner",preview:"F\u00f6rhandsvisning","constrain_proportions":"Bibeh\u00e5ll proportionerna",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Bakgrundsf\u00e4rg",wmode:"WMode",salign:"SAlign",align:"Justera",scale:"Skala",quality:"Kvalit\u00e9",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","flv_options":"Flash video options","flv_scalemode":"Scale mode","flv_buffer":"Buffer","flv_startimage":"Start image","flv_starttime":"Start time","flv_defaultvolume":"Default volumne","flv_hiddengui":"Hidden GUI","flv_autostart":"Auto start","flv_loop":"Loop","flv_showscalemodes":"Show scale modes","flv_smoothvideo":"Smooth video","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Filmegenskaper",altsource1:"Alternativk\u00e4lla 1",altsource2:"Alternativk\u00e4lla 2",preload:"Preload",poster:"Poster",source:"Source"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ta_dlg.js b/js/tiny_mce/plugins/media/langs/ta_dlg.js new file mode 100755 index 000000000..ee10a44ae --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ta_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ta.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/te_dlg.js b/js/tiny_mce/plugins/media/langs/te_dlg.js new file mode 100755 index 000000000..f62cf0182 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/te_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('te.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/th_dlg.js b/js/tiny_mce/plugins/media/langs/th_dlg.js new file mode 100755 index 000000000..b1eb3a92d --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/th_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('th.media_dlg',{list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23",file:"\u0e44\u0e1f\u0e25\u0e4c/URL",advanced:"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",general:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21 / \u0e41\u0e01\u0e49\u0e44\u0e02 \u0e21\u0e35\u0e40\u0e14\u0e35\u0e22",align_top_left:"\u0e1a\u0e19 \u0e0b\u0e49\u0e32\u0e22",align_center:"\u0e01\u0e25\u0e32\u0e07",align_left:"\u0e0b\u0e49\u0e32\u0e22",align_bottom:"\u0e25\u0e48\u0e32\u0e07",align_right:"\u0e02\u0e27\u0e32",align_top:"\u0e1a\u0e19",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"\u0e1a\u0e19 \u0e02\u0e27\u0e32",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34",volume:"Volume",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"\u0e41\u0e1c\u0e07\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21",menu:"\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e21\u0e19\u0e39",loop:"\u0e40\u0e25\u0e48\u0e19\u0e0b\u0e49\u0e33",play:"\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34",hspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",vspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",class_name:"\u0e04\u0e25\u0e32\u0e2a",name:"\u0e0a\u0e37\u0e48\u0e2d",id:"Id",type:"\u0e0a\u0e19\u0e34\u0e14",size:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07",preview:"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",constrain_proportions:"\u0e04\u0e07\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e2a\u0e48\u0e27\u0e19",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",wmode:"WMode",salign:"SAlign",align:"Align",scale:"\u0e02\u0e19\u0e32\u0e14",quality:"\u0e04\u0e27\u0e32\u0e21\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"\u0e25\u0e48\u0e32\u0e07 \u0e0b\u0e49\u0e32\u0e22",align_bottom_right:"\u0e25\u0e48\u0e32\u0e07 \u0e02\u0e27\u0e32",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/tn_dlg.js b/js/tiny_mce/plugins/media/langs/tn_dlg.js new file mode 100755 index 000000000..f6f8cf0a9 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/tn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tn.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/tr_dlg.js b/js/tiny_mce/plugins/media/langs/tr_dlg.js new file mode 100755 index 000000000..d36786bb3 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/tr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tr.media_dlg',{list:"Listele",file:"Dosya/URL",advanced:"Geli\u015fmi\u015f",general:"Genel",title:"T\u00fcmle\u015fik medya ekle / d\u00fczenle",align_top_left:"Sol \u00fcst",align_center:"Orta",align_left:"Sol",align_bottom:"Alt",align_right:"Sa\u011f",align_top:"\u00dcst",qt_stream_warn:"Ak\u0131\u015f rtsp kaynaklar\u0131 geli\u015fmi\u015f alt\u0131ndaki QT Kay. alan\u0131na girilmeli.\\nKay. alan\u0131na ayr\u0131ca ak\u0131\u015fkan olmayan eklenir.",qtsrc:"QT Kay.",progress:"\u0130lerle",sound:"Ses",swstretchvalign:"Esnetme D-Hiza",swstretchhalign:"Esnetme Y-Hiza",swstretchstyle:"Esnetme stili",scriptcallbacks:"Script \u00e7a\u011f\u0131r",align_top_right:"Sa\u011f \u00fcst",uimode:"UI Modu",rate:"Oran",playcount:"Oynatma say\u0131s\u0131",defaultframe:"Varsay\u0131lan \u00e7er\u00e7eve",currentposition:"Se\u00e7ili konum",currentmarker:"Se\u00e7ili i\u015faret\u00e7i",captioningid:"Ba\u015fl\u0131k id",baseurl:"Ge\u00e7erli URL",balance:"Denge",windowlessvideo:"Penceresiz video",stretchtofit:"S\u0131\u011facak \u015fekilde boyutland\u0131r",mute:"Sessiz",invokeurls:"Ba\u015flatma URL\'si",fullscreen:"Tam ekran",enabled:"Aktif",autostart:"Otomatik ba\u015flat",volume:"Ses d\u00fczeyi",target:"Hedef",qtsrcchokespeed:"S\u0131k\u0131\u015ft\u0131rma h\u0131z\u0131",href:"Href",endtime:"Biti\u015f zaman\u0131",starttime:"Ba\u015flang\u0131\u00e7 zaman\u0131",enablejavascript:"Javascript Aktif",correction:"D\u00fczeltme yok",targetcache:"Hedef \u00f6nbellek",playeveryframe:"Her \u00e7er\u00e7eveyi oynat",kioskmode:"Kiosk modu",controller:"Kontroller",menu:"Men\u00fcy\u00fc g\u00f6ster",loop:"D\u00f6nd\u00fcr",play:"Otomatik oynat",hspace:"Yatay bo\u015fluk",vspace:"Dikey bo\u015fluk",class_name:"S\u0131n\u0131f",name:"\u0130sim",id:"Id",type:"Tip",size:"Boyutlar",preview:"\u00d6nizleme",constrain_proportions:"Oran\u0131 s\u0131n\u0131rla",controls:"Kontroller",numloop:"D\u00f6ng\u00fc say\u0131s\u0131",console:"Konsol",cache:"\u00d6nbellek",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash de\u011fi\u015fkeni",base:"Taban",bgcolor:"Arkaplan",wmode:"WModu",salign:"SHizala",align:"Hizala",scale:"\u00d6l\u00e7ek",quality:"Kalite",shuffle:"Kar\u0131\u015ft\u0131r",prefetch:"\u00d6n belle\u011fe al",nojava:"Java yok",maintainaspect:"Orant\u0131y\u0131 koru",imagestatus:"Resim durumu",center:"Orta",autogotourl:"URL\'e otomatik git",shockwave_options:"Shockware se\u00e7enekleri",rmp_options:"Real media player se\u00e7enekleri",wmp_options:"Windows media player se\u00e7enekleri",qt_options:"Quicktime se\u00e7enekleri",flash_options:"Flash se\u00e7enekleri",hidden:"Gizli",align_bottom_left:"Sol alt",align_bottom_right:"Sa\u011f alt",flv_options:"Flash video se\u00e7enekleri",flv_scalemode:"\u00d6l\u00e7ek modu",flv_buffer:"Tampon",flv_startimage:"Resmi ba\u015flat",flv_starttime:"Ba\u015flang\u0131\u00e7 zaman\u0131",flv_defaultvolume:"Varsay\u0131lan ses d\u00fczeyi",flv_hiddengui:"Gizli GUI",flv_autostart:"Otomatik ba\u015flat",flv_loop:"D\u00f6nd\u00fcr",flv_showscalemodes:"\u00d6l\u00e7ek modunu g\u00f6ster",flv_smoothvideo:"D\u00fczg\u00fcn video",flv_jscallback:"JS \u00c7e\u011f\u0131r"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/tt_dlg.js b/js/tiny_mce/plugins/media/langs/tt_dlg.js new file mode 100755 index 000000000..e2374c94b --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/tt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tt.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/\u5730\u5740",advanced:"\u9032\u968e",general:"\u57fa\u672c",title:"\u63d2\u5165/\u7de8\u8f2f \u5a92\u9ad4",align_top_left:"\u9802\u90e8\u5c45\u5de6",align_center:"\u7f6e\u4e2d",align_left:"\u5c45\u5de6",align_bottom:"\u5e95\u90e8",align_right:"\u5c45\u53f3",align_top:"\u9802\u90e8",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"\u9032\u5ea6",sound:"\u8072\u97f3",swstretchvalign:"\u7e2e\u653e\u81f3\u5782\u76f4\u5c0d\u9f4a",swstretchhalign:"\u7e2e\u653e\u81f3\u6c34\u5e73\u5c0d\u9f4a",swstretchstyle:"\u7e2e\u653e\u6a23\u5f0f",scriptcallbacks:"\u8173\u672c\u56de\u6a94",align_top_right:"\u9802\u90e8\u5c45\u53f3",uimode:"UI \u6a21\u5f0f",rate:"\u78bc\u7387",playcount:"\u64ad\u653e\u6b21\u6578",defaultframe:"\u9810\u8a2d\u683c",currentposition:"\u7576\u524d\u4f4d\u7f6e",currentmarker:"\u7576\u524d\u6a19\u7c64",captioningid:"\u5b57\u5e55 id",baseurl:"Base URL",balance:"\u5e73\u8861",windowlessvideo:"\u7121\u8996\u7a97\u5f71\u50cf",stretchtofit:"\u7e2e\u653e\u81f3\u5408\u9069\u5927\u5c0f",mute:"\u975c\u97f3",invokeurls:"\u8abf\u7528\u7684URLs",fullscreen:"\u5168\u87a2\u5e55",enabled:"\u5553\u7528",autostart:"\u81ea\u52d5\u958b\u59cb",volume:"\u97f3\u91cf",target:"\u76ee\u6a19",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u7d50\u675f\u6642\u9593",starttime:"\u958b\u59cb\u6642\u9593",enablejavascript:"\u5553\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6a19\u66ab\u5b58",playeveryframe:"\u9010\u683c\u64ad\u653e",kioskmode:"Kiosk \u6a21\u5f0f",controller:"\u63a7\u5236\u81fa",menu:"\u986f\u793a\u529f\u80fd\u8868",loop:"\u8ff4\u5708",play:"\u81ea\u52d5\u64ad\u653e",hspace:"\u6c34\u5e73\u9593\u8ddd",vspace:"\u5782\u76f4\u9593\u8ddd",class_name:"\u985e\u540d",name:"\u540d\u7a31",id:"Id",type:"\u985e\u578b",size:"\u5927\u5c0f",preview:"\u9810\u89bd",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u8ff4\u5708\u6b21\u6578",console:"\u63a7\u5236\u81fa",cache:"\u66ab\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash\u8b8a\u6578",base:"\u57fa\u7dda",bgcolor:"\u80cc\u666f\u8272",wmode:"WMode",salign:"SAlign",align:"\u5c0d\u9f4a",scale:"\u7e2e\u653e",quality:"\u54c1\u8cea",shuffle:"\u96a8\u6a5f",prefetch:"\u9810\u8b80",nojava:"No java",maintainaspect:"\u7dad\u8b77\u72c0\u614b",imagestatus:"\u5716\u50cf\u72c0\u614b",center:"\u7f6e\u4e2d",autogotourl:"\u81ea\u52d5\u8df3\u8f49 URL",shockwave_options:"Shockwave \u9078\u9805",rmp_options:"Real media player \u9078\u9805",wmp_options:"Windows media player \u9078\u9805",qt_options:"Quicktime \u9078\u9805",flash_options:"Flash \u9078\u9805",hidden:"\u96b1\u85cf",align_bottom_left:"\u5e95\u90e8\u5c45\u5de6",align_bottom_right:"\u5e95\u90e8\u5c45\u53f3",flv_options:"Flash \u5f71\u50cf\u9078\u9805",flv_scalemode:"\u7e2e\u653e\u6a21\u5f0f",flv_buffer:"\u7de9\u885d",flv_startimage:"\u958b\u59cb\u5716\u50cf",flv_starttime:"\u958b\u59cb\u6642\u9593",flv_defaultvolume:"\u9810\u8a2d\u8072\u97f3",flv_hiddengui:"\u96b1\u85cfGUI",flv_autostart:"\u81ea\u52d5\u958b\u59cb",flv_loop:"\u8ff4\u5708",flv_showscalemodes:"\u986f\u793a\u7e2e\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u5f71\u50cf",flv_jscallback:"JS \u56de\u6a94"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/tw_dlg.js b/js/tiny_mce/plugins/media/langs/tw_dlg.js new file mode 100755 index 000000000..fb448411b --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/tw_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tw.media_dlg',{list:"\u5217\u8868",file:"\u5a92\u9ad4URL",advanced:"\u9032\u968e",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7de8\u8f2f\u5a92\u9ad4",align_top_left:"\u5de6\u4e0a",align_center:"\u7f6e\u4e2d",align_left:"\u9760\u5de6",align_bottom:"\u9760\u4e0b",align_right:"\u9760\u53f3",align_top:"\u9760\u4e0a",qt_stream_warn:"\u4e32\u6d41\u5a92\u9ad4rtsp\u8cc7\u6e90\u61c9\u8a72\u52a0\u5230\u300c\u9032\u968e\u300d\u4e2dQT src\u3002 \\n\u540c\u6642\u589e\u52a0\u975e\u4e32\u6d41\u5a92\u9ad4\u8cc7\u6e90\u5230src\u3002",qtsrc:"QT Src",progress:"\u9032\u5ea6",sound:"\u8072\u97f3",swstretchvalign:"\u7e2e\u653e\u81f3\u5782\u76f4\u5c0d\u9f4a",swstretchhalign:"\u7e2e\u653e\u81f3\u6c34\u5e73\u5c0d\u9f4a",swstretchstyle:"\u7e2e\u653e\u6a23\u5f0f",scriptcallbacks:"Script \u547c\u53eb",align_top_right:"\u53f3\u4e0a",uimode:"\u5916\u89c0\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6578",defaultframe:"\u9810\u8a2d\u756b\u9762",currentposition:"\u76ee\u524d\u4f4d\u7f6e",currentmarker:"\u76ee\u524d\u6a19\u8a18",captioningid:"\u5b57\u5e55\u7de8\u865f",baseurl:"\u57fa\u5e95 URL",balance:"\u5e73\u8861",windowlessvideo:"\u7121\u8996\u7a97\u64ad\u653e",stretchtofit:"\u7e2e\u653e\u81f3\u9069\u5408\u5927\u5c0f",mute:"\u975c\u97f3",invokeurls:"\u5f15\u7528\u7684 URLs",fullscreen:"\u5168\u87a2\u5e55",enabled:"\u53ef\u7528",autostart:"\u81ea\u52d5\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6a19",qtsrcchokespeed:"\u963b\u585e\u901f\u5ea6",href:"\u8d85\u9023\u7d50",endtime:"\u7d50\u675f\u6642\u9593",starttime:"\u958b\u59cb\u6642\u9593",enablejavascript:"\u555f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6a19\u66ab\u5b58",playeveryframe:"\u9010\u756b\u9762\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u9762\u677f",menu:"\u986f\u793a\u9078\u9805",loop:"\u5faa\u74b0",play:"\u81ea\u52d5\u64ad\u653e",hspace:"\u6c34\u5e73\u9593\u8ddd",vspace:"\u5782\u76f4\u9593\u8ddd",class_name:"\u985e\u5225",name:"\u540d\u7a31",id:"ID",type:"\u985e\u578b",size:"\u5927\u5c0f",preview:"\u9810\u89bd",constrain_proportions:"\u9396\u5b9a\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u74b0\u6b21\u6578",console:"\u63a7\u5236\u53f0",cache:"\u66ab\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash \u8b8a\u6578",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u8996\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5c0d\u9f4a",scale:"\u7e2e\u653e",quality:"\u54c1\u8cea",shuffle:"\u96a8\u6a5f",prefetch:"\u9810\u5148\u8f09\u5165",nojava:"No Java",maintainaspect:"\u9396\u5b9a\u6bd4\u4f8b",imagestatus:"\u5716\u7247\u72c0\u614b",center:"\u7f6e\u4e2d",autogotourl:"\u81ea\u52d5\u8f49\u81f3 URL",shockwave_options:"Shockwave \u9078\u9805",rmp_options:"Real Media Player \u9078\u9805",wmp_options:"Windows Media Player \u9078\u9805",qt_options:"Quick Time \u9078\u9805",flash_options:"Flash \u9078\u9805",hidden:"\u96b1\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u5f71\u7247\u9078\u9805",flv_scalemode:"\u7e2e\u653e\u6a21\u5f0f",flv_buffer:"\u7de9\u885d\u5340",flv_startimage:"\u958b\u59cb\u756b\u9762",flv_starttime:"\u958b\u59cb\u6642\u9593",flv_defaultvolume:"\u9810\u8a2d\u97f3\u91cf",flv_hiddengui:"\u96b1\u85cf GUI",flv_autostart:"\u81ea\u52d5\u64ad\u653e",flv_loop:"\u5faa\u74b0",flv_showscalemodes:"\u986f\u793a\u7e2e\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u64ad\u653e",flv_jscallback:"Script \u547c\u53eb"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/uk_dlg.js b/js/tiny_mce/plugins/media/langs/uk_dlg.js new file mode 100755 index 000000000..9379de0e9 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/uk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('uk.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",general:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 / \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456 \u043c\u0435\u0434\u0456\u0430",align_top_left:"\u0417\u0432\u0435\u0440\u0445\u0443 \u0437\u043b\u0456\u0432\u0430",align_center:"\u0426\u0435\u043d\u0442\u0440",align_left:"\u041b\u0456\u0432\u043e",align_bottom:"\u041d\u0438\u0437",align_right:"\u041f\u0440\u0430\u0432\u043e",align_top:"\u0412\u0435\u0440\u0445",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"\u0414\u0436\u0435\u0440\u0435\u043b\u043e QT",progress:"\u0425\u0456\u0434",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u043e\u0437\u0442\u044f\u0433\u043d\u0443\u0442\u0438 \u0432\u0435\u0440\u0442. \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0430\u043d\u043d\u044f",swstretchhalign:"\u0420\u043e\u0437\u0442\u044f\u0433\u043d\u0443\u0442\u0438 \u0433\u043e\u0440\u0438\u0437. \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0430\u043d\u043d\u044f",swstretchstyle:"\u0420\u043e\u0437\u0442\u044f\u0433\u043d\u0443\u0442\u0438\u0439 \u0441\u0442\u0438\u043b\u044c",scriptcallbacks:"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0456\u0439 \u0432\u0438\u043a\u043b\u0438\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0456\u044e",align_top_right:"\u0417\u0432\u0435\u0440\u0445\u0443 \u0437\u043f\u0440\u0430\u0432\u0430",uimode:"\u0420\u0435\u0436\u0438\u043c \u0456\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443",rate:"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c",playcount:"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u043d\u044c",defaultframe:"\u041a\u0430\u0434\u0440 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c",currentposition:"\u041f\u043e\u0442\u043e\u0447\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0456\u044f",currentmarker:"\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440 \u043d\u0430\u0434\u043f\u0438\u0441\u0443",baseurl:"\u041e\u0441\u043d\u043e\u0432\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"Windowless video",stretchtofit:"\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438, \u0449\u043e\u0431 \u0432\u043c\u0456\u0441\u0442\u0438\u043b\u043e\u0441\u044c",mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0438\u0442\u0438",invokeurls:"\u0412\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438 URLs",fullscreen:"\u041f\u043e\u0432\u043d\u0438\u0439 \u0435\u043a\u0440\u0430\u043d",enabled:"\u0414\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u0438\u0439",autostart:"\u0410\u0432\u0442\u043e\u0441\u0442\u0430\u0440\u0442",volume:"\u0413\u0443\u0447\u043d\u0456\u0441\u0442\u044c",target:"\u0426\u0456\u043b\u044c",qtsrcchokespeed:"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c \u0437\u0430\u0433\u0430\u0441\u0430\u043d\u043d\u044f",href:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",endtime:"\u0427\u0430\u0441 \u043a\u0456\u043d\u0446\u044f",starttime:"\u0427\u0430\u0441 \u043f\u043e\u0447\u0430\u0442\u043a\u0443",enablejavascript:"\u0414\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043a\u043e\u0440\u0435\u043a\u0446\u0456\u0457",targetcache:"\u0426\u0456\u043b\u044c\u043e\u0432\u0438\u0439 \u043a\u0435\u0448",playeveryframe:"\u041f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u0442\u0438 \u043a\u043e\u0436\u0435\u043d \u043a\u0430\u0434\u0440",kioskmode:"\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0432\u0430\u0442\u0438",play:"\u0410\u0432\u0442\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u0432\u043d\u043d\u044f",hspace:"\u0433\u043e\u0440.\u0432\u0456\u0434\u0441\u0442\u0443\u043f",vspace:"\u0432\u0435\u0440\u0442.\u0432\u0456\u0434\u0441\u0442\u0443\u043f",class_name:"\u041a\u043b\u0430\u0441",name:"\u041d\u0430\u0437\u0432\u0430",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440",type:"\u0422\u0438\u043f",size:"\u0420\u043e\u0437\u043c\u0456\u0440\u0438",preview:"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",constrain_proportions:"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",controls:"\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f",numloop:"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0446\u0438\u043a\u043b\u0456\u0432",console:"\u041a\u043e\u043d\u0441\u043e\u043b\u044c",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438",base:"\u0411\u0430\u0437\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"W-\u0440\u0435\u0436\u0438\u043c",salign:"S-\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",scale:"\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0443\u0432\u0430\u043d\u043d\u044f",quality:"\u042f\u043a\u0456\u0441\u0442\u044c",shuffle:"\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u0443\u0432\u0430\u0442\u0438",prefetch:"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454 \u0432\u0438\u043b\u0443\u0447\u0435\u043d\u043d\u044f",nojava:"\u0411\u0435\u0437 Java",maintainaspect:"\u0412\u0434\u0435\u0440\u0436\u0443\u0432\u0430\u0442\u0438 \u0440\u0430\u043a\u0443\u0440\u0441",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",center:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",autogotourl:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0430\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443",shockwave_options:"\u041e\u043f\u0446\u0456\u0457 Shockwave",rmp_options:"\u041e\u043f\u0446\u0456\u0457 Real media player",wmp_options:"\u041e\u043f\u0446\u0456\u0457 Windows media player",qt_options:"\u041e\u043f\u0446\u0456\u0457 Quicktime",flash_options:"\u041e\u043f\u0446\u0456\u0457 Flash",hidden:"\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u043d\u0438\u0439",align_bottom_left:"\u0417\u043d\u0438\u0437\u0443 \u0437\u043b\u0456\u0432\u0430",align_bottom_right:"\u0417\u043d\u0438\u0437\u0443 \u0437\u043f\u0440\u0430\u0432\u0430",flv_options:"\u041e\u043f\u0446\u0456\u0457 Flash video",flv_scalemode:"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u0448\u0442\u0430\u0431\u0443\u0432\u0430\u043d\u043d\u044f",flv_buffer:"\u0411\u0443\u0444\u0435\u0440",flv_startimage:"\u041f\u043e\u0447\u0430\u0442\u043a\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",flv_starttime:"\u041f\u043e\u0447\u0430\u0442\u043a\u043e\u0432\u0438\u0439 \u0447\u0430\u0441",flv_defaultvolume:"\u0413\u0443\u0447\u043d\u0456\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c",flv_hiddengui:"\u0421\u0445\u043e\u0432\u0430\u043d\u0438\u0439 \u0433\u0440\u0430\u0444\u0456\u0447\u043d\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u0456\u043d\u0444\u0435\u0440\u0444\u0435\u0439\u0441",flv_autostart:"\u0410\u0432\u0442\u043e\u043f\u043e\u0447\u0430\u0442\u043e\u043a",flv_loop:"\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u043d\u044f",flv_showscalemodes:"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0438 \u043c\u0430\u0448\u0442\u0430\u0431\u0443\u0432\u0430\u043d\u043d\u044f",flv_smoothvideo:"\u041f\u043b\u0430\u0432\u043d\u0435 \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0432\u0456\u0434\u0435\u043e",flv_jscallback:"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0456\u0439 \u0432\u0438\u043a\u043b\u0438\u043a JS"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/ur_dlg.js b/js/tiny_mce/plugins/media/langs/ur_dlg.js new file mode 100755 index 000000000..37e5eb47d --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/ur_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ur.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",align_left:"Left",align_bottom:"Bottom",align_right:"Right",align_top:"Top",qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",align_top_right:"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space",class_name:"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview",constrain_proportions:"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL",shockwave_options:"Shockwave options",rmp_options:"Real media player options",wmp_options:"Windows media player options",qt_options:"Quicktime options",flash_options:"Flash options",hidden:"Hidden",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/vi_dlg.js b/js/tiny_mce/plugins/media/langs/vi_dlg.js new file mode 100755 index 000000000..d9ecaef24 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/vi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('vi.media_dlg',{list:"Danh s\u00e1ch",file:"T\u1eadp tin/URL",advanced:"N\u00e2ng cao",general:"Chung",title:"Ch\u00e8n / s\u1eeda ph\u01b0\u01a1ng ti\u1ec7n truy\u1ec1n th\u00f4ng nh\u00fang",align_top_left:"Tr\u00ean c\u00f9ng tr\u00e1i",align_center:"Gi\u1eefa",align_left:"Tr\u00e1i",align_bottom:"D\u01b0\u1edbi c\u00f9ng",align_right:"Ph\u1ea3i",align_top:"Tr\u00ean c\u00f9ng",qt_stream_warn:"Ngu\u1ed3n rtsp theo lu\u1ed3ng n\u00ean \u0111\u01b0\u1ee3c th\u00eam v\u00e0o tr\u01b0\u1eddng QT Src d\u01b0\u1edbi th\u1ebb n\u00e2ng cao.\\nB\u1ea1n c\u0169ng n\u00ean th\u00eam m\u1ed9t phi\u00ean b\u1ea3n kh\u00f4ng theo lu\u1ed3ng v\u00e0o tr\u01b0\u1eddng Src..",qtsrc:"QT Src",progress:"\u0110ang ti\u1ebfn tri\u1ec3n",sound:"\u00c2m thanh",swstretchvalign:"D\u00e3n theo V-Align",swstretchhalign:"D\u00e3n theo H-Align",swstretchstyle:"Ki\u1ec3u d\u00e3n",scriptcallbacks:"H\u00e0m g\u1ecdi ng\u01b0\u1ee3c Script",align_top_right:"Tr\u00ean c\u00f9ng ph\u1ea3i",uimode:"Ch\u1ebf \u0111\u1ed9 UI",rate:"T\u1ed1c \u0111\u1ed9",playcount:"\u0110\u1ebfm l\u1ea7n ph\u00e1t",defaultframe:"Khung m\u1eb7c \u0111\u1ecbnh",currentposition:"V\u1ecb tr\u00ed hi\u1ec7n th\u1eddi",currentmarker:"B\u1ed9 t\u1ea1o hi\u1ec7n th\u1eddi",captioningid:"id \u0111\u1ea7u \u0111\u1ec1",baseurl:"Base URL",balance:"C\u00e2n b\u1eb1ng",windowlessvideo:"Video kh\u00f4ng c\u1eeda s\u1ed5",stretchtofit:"D\u00e3n \u0111\u1ec3 ph\u00f9 h\u1ee3p",mute:"T\u1eaft \u00e2m thanh",invokeurls:"URL tri\u1ec7u g\u1ecdi",fullscreen:"To\u00e0n m\u00e0n h\u00ecnh",enabled:"Cho ph\u00e9p",autostart:"T\u1ef1 \u0111\u1ed9ng b\u1eaft \u0111\u1ea7u",volume:"\u00c2m l\u01b0\u1ee3ng",target:"\u0110\u00edch",qtsrcchokespeed:"T\u1ed1c \u0111\u1ed9 Choke",href:"Href",endtime:"Th\u1eddi gian k\u1ebft th\u00fac",starttime:"Th\u1eddi gian b\u1eaft \u0111\u1ea7u",enablejavascript:"Cho ph\u00e9p JavaScript",correction:"Kh\u00f4ng ch\u1ec9nh",targetcache:"B\u1ed9 nh\u1edb \u0111\u1ec7m \u0111\u00edch",playeveryframe:"Ph\u00e1t t\u1ea5t c\u1ea3 khung",kioskmode:"Ch\u1ebf \u0111\u1ed9 Kiosk",controller:"Tr\u00ecnh \u0111i\u1ec1u khi\u1ec3n",menu:"Hi\u1ec3n th\u1ecb menu",loop:"L\u1eb7p",play:"T\u1ef1 \u0111\u1ed9ng ph\u00e1t",hspace:"H-Space",vspace:"V-Space",class_name:"L\u1edbp",name:"T\u00ean",id:"Id",type:"Ki\u1ec3u",size:"K\u00edch th\u01b0\u1edbc",preview:"Xem tr\u01b0\u1edbc",constrain_proportions:"R\u00e0ng bu\u1ed9c t\u1ec9 l\u1ec7",controls:"\u0110i\u1ec1u khi\u1ec3n",numloop:"S\u1ed1 l\u1eb7p",console:"B\u00e0n \u0111i\u1ec1u khi\u1ec3n",cache:"B\u1ed9 nh\u1edb \u0111\u1ec7m",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"C\u01a1 s\u1edf",bgcolor:"N\u1ec1n",wmode:"WMode",salign:"SAlign",align:"Canh l\u1ec1",scale:"T\u1ec9 l\u1ec7",quality:"Ch\u1ea5t l\u01b0\u1ee3ng",shuffle:"Kh\u00f4ng theo tr\u1eadt t\u1ef1",prefetch:"T\u00ecm n\u1ea1p tr\u01b0\u1edbc",nojava:"Kh\u00f4ng c\u00f3 java",maintainaspect:"Duy tr\u00ec c\u1ea1nh",imagestatus:"Tr\u1ea1ng th\u00e1i \u1ea3nh",center:"Gi\u1eefa",autogotourl:"T\u1ef1 \u0111\u1ed9ng nh\u1ea3y t\u1edbi URL",shockwave_options:"T\u00f9y ch\u1ecdn Shockwave",rmp_options:"T\u00f9y ch\u1ecdn tr\u00ecnh ch\u01a1i media Real",wmp_options:"T\u00f9y ch\u1ecdn tr\u00ecnh ch\u01a1i media Windows",qt_options:"T\u00f9y ch\u1ecdn Quicktime",flash_options:"T\u00f9y ch\u1ecdn Flash",hidden:"\u1ea8n",align_bottom_left:"D\u01b0\u1edbi c\u00f9ng tr\u00e1i",align_bottom_right:"D\u01b0\u1edbi c\u00f9ng ph\u1ea3i",flv_options:"T\u00f9y ch\u1ecdn video Flash",flv_scalemode:"Ch\u1ebf \u0111\u1ed9 thang",flv_buffer:"B\u1ed9 \u0111\u1ec7m",flv_startimage:"\u1ea2nh b\u1eaft \u0111\u1ea7u",flv_starttime:"Th\u1eddi gian b\u1eaft \u0111\u1ea7u",flv_defaultvolume:"\u00c2m l\u01b0\u1ee3ng m\u1eb7c \u0111\u1ecbnh",flv_hiddengui:"\u1ea8n GUI",flv_autostart:"T\u1ef1 b\u1eaft \u0111\u1ea7u",flv_loop:"L\u1eb7p",flv_showscalemodes:"Hi\u1ec3n th\u1ecb ch\u1ebf \u0111\u1ed9 thang",flv_smoothvideo:"Video m\u01b0\u1ee3t",flv_jscallback:"H\u00e0m g\u1ecdi ng\u01b0\u1ee3c JS"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js b/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js new file mode 100755 index 000000000..ee4fa6ea9 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh-cn.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/URL",advanced:"\u9ad8\u7ea7",general:"\u666e\u901a",title:"\u63d2\u5165/\u7f16\u8f91 \u5d4c\u5165\u5f0f\u5a92\u4f53","align_top_left":"\u5de6\u4e0a","align_center":"\u5c45\u4e2d","align_left":"\u5c45\u5de6","align_bottom":"\u5c45\u4e0b","align_right":"\u5c45\u53f3","align_top":"\u5c45\u4e0a","qt_stream_warn":"\u6d41\u5a92\u4f53RTSP\u8d44\u6e90\u5e94\u6dfb\u52a0\u5230\u9ad8\u7ea7\u9009\u9879\u7684QT\u8d44\u6e90\u4e2d\u3002n\u540c\u65f6\uff0c\u60a8\u4e5f\u53ef\u4ee5\u5728\u8fd9\u91cc\u52a0\u5165\u4e00\u4e2a\u975e\u6d41\u5a92\u4f53\u3002",qtsrc:"QT\u8d44\u6e90",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u5782\u76f4\u62c9\u4f38",swstretchhalign:"\u6c34\u5e73\u62c9\u4f38",swstretchstyle:"\u62c9\u4f38\u65b9\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u8c03","align_top_right":"\u53f3\u4e0a",uimode:"\u5916\u89c2\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55ID",baseurl:"\u57fa\u7840\u8def\u5f84",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u8fb9\u6846",stretchtofit:"\u62c9\u4f38\u5230\u9002\u5408",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528URL",fullscreen:"\u5168\u5c4f",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u9650\u5236\u901f\u5ea6",href:"\u8d85\u94fe\u63a5",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u65e0\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u5e27\u64ad\u653e",kioskmode:"\u5168\u5c4f\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u8ddd\u79bb",vspace:"\u5782\u76f4\u8ddd\u79bb","class_name":"\u7c7b\u522b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5c3a\u5bf8",preview:"\u9884\u89c8","constrain_proportions":"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u64ad\u653e\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8\u8df3\u8f6c",liveconnect:"JavaScript\u5f00\u542f",flashvars:"Flash\u53d8\u91cf",base:"\u57fa\u7840\u8def\u5f84",bgcolor:"\u80cc\u666f",wmode:"\u7a97\u4f53\u6a21\u5f0f",salign:"\u5a92\u4f53\u5bf9\u9f50",align:"\u6587\u672c\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u753b\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u52a0\u8f7d",nojava:"\u65e0java",maintainaspect:"\u4fdd\u6301\u5916\u89c2",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u5230URL","shockwave_options":"Shockwave\u9009\u9879","rmp_options":"Real media player\u9009\u9879","wmp_options":"Windows media player\u9009\u9879","qt_options":"Quicktime\u9009\u9879","flash_options":"Flash\u9009\u9879",hidden:"\u9690\u85cf","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b","flv_options":"FLV\u9009\u9879","flv_scalemode":"\u7f29\u653e\u6a21\u5f0f","flv_buffer":"\u7f13\u51b2","flv_startimage":"\u5f00\u59cb\u753b\u9762","flv_starttime":"\u5f00\u59cb\u65f6\u95f4","flv_defaultvolume":"\u9ed8\u8ba4\u97f3\u91cf","flv_hiddengui":"\u9690\u85cfGUI","flv_autostart":"\u81ea\u52a8\u64ad\u653e","flv_loop":"\u5faa\u73af","flv_showscalemodes":"\u663e\u793a\u7f29\u653e\u6a21\u5f0f","flv_smoothvideo":"\u6d88\u9664\u952f\u9f7f","flv_jscallback":"JS\u56de\u8c03","html5_video_options":"HTML5\u89c6\u9891\u9009\u9879",altsource1:"\u66ff\u4ee3\u8d44\u6e901",altsource2:"\u66ff\u4ee3\u8d44\u6e902",preload:"\u9884\u52a0\u8f7d",poster:"\u6d77\u62a5",source:"\u8d44\u6e90"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/zh_dlg.js b/js/tiny_mce/plugins/media/langs/zh_dlg.js new file mode 100755 index 000000000..e6700c05a --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/zh_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh.media_dlg',{list:"\u5217\u8868",file:"\u5a92\u4f53URL",advanced:"\u9ad8\u7ea7",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7f16\u8f91\u5a92\u4f53",align_top_left:"\u5de6\u4e0a",align_center:"\u7f6e\u4e2d",align_left:"\u9760\u5de6",align_bottom:"\u9760\u4e0b",align_right:"\u9760\u53f3",align_top:"\u9760\u4e0a",qt_stream_warn:"\u4e32\u6d41\u5a92\u4f53rtsp\u8d44\u6e90\u5e94\u8be5\u52a0\u5230\u300c\u9ad8\u7ea7\u300d\u4e2dQT src\u3002 \\n\u540c\u65f6\u589e\u52a0\u975e\u4e32\u6d41\u5a92\u4f53\u8d44\u6e90\u5230src\u3002",qtsrc:"QT Src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u7f29\u653e\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u7f29\u653e\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u7f29\u653e\u6837\u5f0f",scriptcallbacks:"Script \u553f\u53eb",align_top_right:"\u53f3\u4e0a",uimode:"\u9762\u677f\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9884\u8bbe\u753b\u9762",currentposition:"\u76ee\u524d\u4f4d\u7f6e",currentmarker:"\u76ee\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55\u7f16\u53f7",baseurl:"\u57fa\u5e95 URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u89c6\u7a97\u64ad\u653e",stretchtofit:"\u7f29\u653e\u81f3\u6700\u4f73\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528\u7684 URLs",fullscreen:"\u5168\u8424\u5e55",enabled:"\u53ef\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u963b\u585e\u901f\u5ea6",href:"\u8d85\u8fde\u7ed3",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u683c\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u9009\u9879",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",class_name:"\u7c7b\u522b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5927\u5c0f",preview:"\u9884\u89c8",constrain_proportions:"\u7ea6\u675f\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash \u53d8\u91cf",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u89c6\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8f7d",nojava:"No Java",maintainaspect:"\u9501\u5b9a\u6bd4\u4f8b",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u7f6e\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u81f3 URL",shockwave_options:"Shockwave \u9009\u9879",rmp_options:"Real Media Player \u9009\u9879",wmp_options:"Windows Media Player \u9009\u9879",qt_options:"Quick Time \u9009\u9879",flash_options:"Flash \u9009\u9879",hidden:"\u9690\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u5f71\u7247\u9009\u9879",flv_scalemode:"\u7f29\u653e\u6a21\u5f0f",flv_buffer:"\u7f13\u885d\u533a",flv_startimage:"\u5f00\u59cb\u753b\u9762",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9884\u8bbe\u97f3\u91cf",flv_hiddengui:"\u9690\u85cf GUI",flv_autostart:"\u81ea\u52a8\u64ad\u653e",flv_loop:"\u5faa\u73af",flv_showscalemodes:"\u663e\u793a\u7f29\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u64ad\u653e",flv_jscallback:"Script \u553f\u53eb"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/langs/zu_dlg.js b/js/tiny_mce/plugins/media/langs/zu_dlg.js new file mode 100755 index 000000000..269c54f68 --- /dev/null +++ b/js/tiny_mce/plugins/media/langs/zu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zu.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/\u7f51\u5740",advanced:"\u9ad8\u7ea7",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7f16\u8f91\u5d4c\u5165\u5a92\u4f53",align_top_left:"\u5de6\u4e0a",align_center:"\u4e2d\u95f4",align_left:"\u9760\u5de6",align_bottom:"\u4e0b\u65b9",align_right:"\u9760\u53f3",align_top:"\u4e0a\u65b9",qt_stream_warn:"\u6d41\u5f0frtsp\u8d44\u6e90\u5e94\u8be5\u6dfb\u52a0\u5230\u201c\u9ad8\u7ea7\u201d\u4e2dQT Src\u3002\\n\u540c\u65f6\u6dfb\u52a0\u975e\u6d41\u5f0f\u8d44\u6e90\u5230Src\u3002",qtsrc:"QT Src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u5782\u76f4\u62c9\u5347",swstretchhalign:"\u6c34\u51c6\u62c9\u5347",swstretchstyle:"\u62c9\u5347\u6a21\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u6863",align_top_right:"\u53f3\u4e0a",uimode:"\u9762\u677f\u6a21\u5f0f",rate:"\u5e27\u7387",playcount:"\u64ad\u653e\u8ba1\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bb0",captioningid:"Captioning id",baseurl:"\u57fa\u51c6URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u8fb9\u6846",stretchtofit:"\u62c9\u4f38",mute:"\u9759\u97f3",invokeurls:"\u76f8\u5173URLs",fullscreen:"\u5168\u5c4f",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u5f00\u59cb",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"Choke speed",href:"\u8fde\u7ed3",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u6ca1\u6709\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u64ad\u653e\u6bcf\u4e00\u5e27",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u529f\u80fd\u8868",loop:"\u56de\u5708\u64ad\u653e",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u5782\u76f4\u95f4\u8ddd",vspace:"\u6c34\u51c6\u95f4\u8ddd",class_name:"\u7c7b\u578b",name:"\u540d\u79f0",id:"Id",type:"\u7c7b\u578b",size:"\u5c3a\u5bf8",preview:"\u9884\u89c8",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u63a7\u5236\u5668",numloop:"\u56de\u5708\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8HREF",liveconnect:"SWLiveConnect",flashvars:"\u53c2\u6570",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u89c6\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u6bd4\u4f8b",quality:"\u54c1\u8d28",shuffle:"Shuffle",prefetch:"\u9884\u8bfb\u53d6",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"\u56fe\u50cf\u72b6\u6001",center:"\u4e2d\u5fc3",autogotourl:"\u81ea\u52a8\u8f6c\u5230URL",shockwave_options:"Shockwave\u9009\u9879",rmp_options:"Real media player\u9009\u9879",wmp_options:"Windows media player\u9009\u9879",qt_options:"Quicktime\u9009\u9879",flash_options:"Flash\u9009\u9879",hidden:"\u9690\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u89c6\u9891\u9009\u9879",flv_scalemode:"Scale mode",flv_buffer:"\u7f13\u51b2",flv_startimage:"\u5f00\u59cb\u753b\u9762",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9884\u8bbe\u97f3\u91cf",flv_hiddengui:"\u9690\u85cfGUI",flv_autostart:"\u81ea\u52a8\u64ad\u653e",flv_loop:"\u56de\u5708",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"\u5e73\u6ed1\u56fe\u50cf",flv_jscallback:"JS\u56de\u6863"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/media/media.htm b/js/tiny_mce/plugins/media/media.htm new file mode 100644 index 000000000..807a537dc --- /dev/null +++ b/js/tiny_mce/plugins/media/media.htm @@ -0,0 +1,812 @@ + + + + {#media_dlg.title} + + + + + + + + + +
        + + +
        +
        +
        + {#media_dlg.general} + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + +
         
        +
        + + + + + + +
        x   
        +
        +
        + +
        + {#media_dlg.preview} + +
        +
        + +
        +
        + {#media_dlg.advanced} + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + +
         
        +
        +
        + +
        + {#media_dlg.html5_video_options} + + + + + + + + + + + + + + + + +
        + + + + + +
         
        +
        + + + + + +
         
        +
        + + + + + +
         
        +
        + + + + + + + + + + + +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        +
        + +
        + {#media_dlg.flash_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + +
        + + + +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + + + + + + + +
        +
        + +
        + {#media_dlg.qt_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        +  
        + + + + + +
         
        +
        +
        + +
        + {#media_dlg.wmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        +
        + +
        + {#media_dlg.rmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        +   +
        +
        + +
        + {#media_dlg.shockwave_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        + + + + + +
        +
        +
        +
        + +
        +
        + {#media_dlg.source} + +
        +
        +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/media/moxieplayer.swf b/js/tiny_mce/plugins/media/moxieplayer.swf new file mode 100644 index 0000000000000000000000000000000000000000..2a040358df0d1f8eb784d2ec0919626198d6eb47 GIT binary patch literal 33931 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 literal 0 HcmV?d00001 diff --git a/js/tiny_mce/plugins/pagebreak/editor_plugin.js b/js/tiny_mce/plugins/pagebreak/editor_plugin.js new file mode 100644 index 000000000..35085e8ad --- /dev/null +++ b/js/tiny_mce/plugins/pagebreak/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js b/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js new file mode 100644 index 000000000..a094c1916 --- /dev/null +++ b/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js @@ -0,0 +1,74 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.PageBreakPlugin', { + init : function(ed, url) { + var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; + + pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g'); + + // Register commands + ed.addCommand('mcePageBreak', function() { + ed.execCommand('mceInsertContent', 0, pb); + }); + + // Register buttons + ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); + + ed.onInit.add(function() { + if (ed.theme.onResolveName) { + ed.theme.onResolveName.add(function(th, o) { + if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls)) + o.name = 'pagebreak'; + }); + } + }); + + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls)) + ed.selection.select(e); + }); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls)); + }); + + ed.onBeforeSetContent.add(function(ed, o) { + o.content = o.content.replace(pbRE, pb); + }); + + ed.onPostProcess.add(function(ed, o) { + if (o.get) + o.content = o.content.replace(/]+>/g, function(im) { + if (im.indexOf('class="mcePageBreak') !== -1) + im = sep; + + return im; + }); + }); + }, + + getInfo : function() { + return { + longname : 'PageBreak', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/editor_plugin.js b/js/tiny_mce/plugins/paste/editor_plugin.js new file mode 100644 index 000000000..769f6cff1 --- /dev/null +++ b/js/tiny_mce/plugins/paste/editor_plugin.js @@ -0,0 +1 @@ +(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_notifyalways:false,paste_text_linebreaktype:"p",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=false;function h(m,k){var l=d.dom,i,j;f.onPreProcess.dispatch(f,m);m.node=l.create("div",0,m.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){j=l.select("p,h1,h2,h3,h4,h5,h6,pre",m.node);if(j.length==1&&m.content.indexOf("__MCE_ITEM__")===-1){l.remove(j.reverse(),true)}}}f.onPostProcess.dispatch(f,m);m.content=d.serializer.serialize(m.node,{getInner:1});if((!k)&&(d.pasteAsPlainText)){f._insertPlainText(d,l,m.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(m.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:r.replace(/\r?\n/g,"
        ")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},'\uFEFF\uFEFF
        ');if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort().y}o.setStyles(l,{position:"absolute",left:-10000,top:i,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,1);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="
        "+o.encode(r).replace(/\r?\n/g,"
        ")+"
        "}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}if(b(d,"paste_block_drop")){d.onInit.add(function(){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})})}f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:
         [\s\r\n]+|
        )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
         [\s\r\n]+|
        )*/g,"$1"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*( )+/gi,/( |]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/

        ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

        $1

        ")}if(b(k,"paste_convert_middot_lists")){d([[//gi,"$&__MCE_ITEM__"],[/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([//gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/"/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/]*>/gi,"

        "],[/<\/h[1-6][^>]*>/gi,"

        "]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.( |\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(j,x,v){var t,u,l,k,r,e,p,f,n=j.getWin(),z=j.getDoc(),s=j.selection,m=tinymce.is,y=tinymce.inArray,g=b(j,"paste_text_linebreaktype"),o=b(j,"paste_text_replacements");function q(d){c(d,function(h){if(h.constructor==RegExp){v=v.replace(h,"")}else{v=v.replace(h[0],h[1])}})}if((typeof(v)==="string")&&(v.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(v)){q([/[\n\r]+/g])}else{q([/\r+/g])}q([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/ /gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"],/^\s+|\s+$/g]);v=x.decode(tinymce.html.Entities.encodeRaw(v));if(!s.isCollapsed()){z.execCommand("Delete",false,null)}if(m(o,"array")||(m(o,"array"))){q(o)}else{if(m(o,"string")){q(new RegExp(o,"gi"))}}if(g=="none"){q([[/\n+/g," "]])}else{if(g=="br"){q([[/\n/g,"
        "]])}else{q([/^\s+|\s+$/g,[/\n\n/g,"

        "],[/\n/g,"
        "]])}}if((l=v.indexOf("

        "))!=-1){k=v.lastIndexOf("

        ");r=s.getNode();e=[];do{if(r.nodeType==1){if(r.nodeName=="TD"||r.nodeName=="BODY"){break}e[e.length]=r}}while(r=r.parentNode);if(e.length>0){p=v.substring(0,l);f="";for(t=0,u=e.length;t";f+="<"+e[e.length-t-1].nodeName.toLowerCase()+">"}if(l==k){v=p+f+v.substring(l+7)}else{v=p+v.substring(l+4,k+4)+f+v.substring(k+7)}}}j.execCommand("mceInsertRawHTML",false,v+' ');window.setTimeout(function(){var d=x.get("_plain_text_marker"),A,h,w,i;s.select(d,false);z.execCommand("Delete",false,null);d=null;A=s.getStart();h=x.getViewPort(n);w=x.getPos(A).y;i=A.clientHeight;if((wh.y+h.h)){z.body.scrollTop=w

        ' + dom.encode(textContent).replace(/\r?\n/g, '
        ') + '
        '; + } + + // Remove the nodes + each(dom.select('div.mcePaste'), function(n) { + dom.remove(n); + }); + + // Restore the old selection + if (or) + sel.setRng(or); + + process({content : h}); + + // Unblock events ones we got the contents + dom.unbind(ed.getDoc(), 'mousedown', block); + dom.unbind(ed.getDoc(), 'keydown', block); + }, 0); + } + } + + // Check if we should use the new auto process method + if (getParam(ed, "paste_auto_cleanup_on_paste")) { + // Is it's Opera or older FF use key handler + if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) { + ed.onKeyDown.addToTop(function(ed, e) { + if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) + grabContent(e); + }); + } else { + // Grab contents on paste event on Gecko and WebKit + ed.onPaste.addToTop(function(ed, e) { + return grabContent(e); + }); + } + } + + // Block all drag/drop events + if (getParam(ed, "paste_block_drop")) { + ed.onInit.add(function() { + ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) { + e.preventDefault(); + e.stopPropagation(); + + return false; + }); + }); + } + + // Add legacy support + t._legacySupport(); + }, + + getInfo : function() { + return { + longname : 'Paste text/word', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + _preProcess : function(pl, o) { + var ed = this.editor, + h = o.content, + grep = tinymce.grep, + explode = tinymce.explode, + trim = tinymce.trim, + len, stripClass; + + //console.log('Before preprocess:' + o.content); + + function process(items) { + each(items, function(v) { + // Remove or replace + if (v.constructor == RegExp) + h = h.replace(v, ''); + else + h = h.replace(v[0], v[1]); + }); + } + + if (ed.settings.paste_enable_default_filters == false) { + return; + } + + // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser + if (tinymce.isIE && document.documentMode >= 9) + process([[/(?:
         [\s\r\n]+|
        )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
         [\s\r\n]+|
        )*/g, '$1']]); + + // Detect Word content and process it more aggressive + if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) { + o.wordContent = true; // Mark the pasted contents as word specific content + //console.log('Word contents detected.'); + + // Process away some basic content + process([ + /^\s*( )+/gi, //   entities at the start of contents + /( |]*>)+\s*$/gi //   entities at the end of contents + ]); + + if (getParam(ed, "paste_convert_headers_to_strong")) { + h = h.replace(/

        ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

        $1

        "); + } + + if (getParam(ed, "paste_convert_middot_lists")) { + process([ + [//gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker + [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'], // Convert mso-list and symbol spans to item markers + [/(]+(?:MsoListParagraph)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol paragraphs to item markers (FF) + ]); + } + + process([ + // Word comments like conditional comments etc + //gi, + + // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags + /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, + + // Convert into for line-though + [/<(\/?)s>/gi, "<$1strike>"], + + // Replace nsbp entites to char since it's easier to handle + [/ /gi, "\u00a0"] + ]); + + // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag. + // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot. + do { + len = h.length; + h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1"); + } while (len != h.length); + + // Remove all spans if no styles is to be retained + if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) { + h = h.replace(/<\/?span[^>]*>/gi, ""); + } else { + // We're keeping styles, so at least clean them up. + // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx + + process([ + // Convert ___ to string of alternating breaking/non-breaking spaces of same length + [/([\s\u00a0]*)<\/span>/gi, + function(str, spaces) { + return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : ""; + } + ], + + // Examine all styles: delete junk, transform some, and keep the rest + [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi, + function(str, tag, style) { + var n = [], + i = 0, + s = explode(trim(style).replace(/"/gi, "'"), ";"); + + // Examine each style definition within the tag's style attribute + each(s, function(v) { + var name, value, + parts = explode(v, ":"); + + function ensureUnits(v) { + return v + ((v !== "0") && (/\d$/.test(v)))? "px" : ""; + } + + if (parts.length == 2) { + name = parts[0].toLowerCase(); + value = parts[1].toLowerCase(); + + // Translate certain MS Office styles into their CSS equivalents + switch (name) { + case "mso-padding-alt": + case "mso-padding-top-alt": + case "mso-padding-right-alt": + case "mso-padding-bottom-alt": + case "mso-padding-left-alt": + case "mso-margin-alt": + case "mso-margin-top-alt": + case "mso-margin-right-alt": + case "mso-margin-bottom-alt": + case "mso-margin-left-alt": + case "mso-table-layout-alt": + case "mso-height": + case "mso-width": + case "mso-vertical-align-alt": + n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value); + return; + + case "horiz-align": + n[i++] = "text-align:" + value; + return; + + case "vert-align": + n[i++] = "vertical-align:" + value; + return; + + case "font-color": + case "mso-foreground": + n[i++] = "color:" + value; + return; + + case "mso-background": + case "mso-highlight": + n[i++] = "background:" + value; + return; + + case "mso-default-height": + n[i++] = "min-height:" + ensureUnits(value); + return; + + case "mso-default-width": + n[i++] = "min-width:" + ensureUnits(value); + return; + + case "mso-padding-between-alt": + n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value); + return; + + case "text-line-through": + if ((value == "single") || (value == "double")) { + n[i++] = "text-decoration:line-through"; + } + return; + + case "mso-zero-height": + if (value == "yes") { + n[i++] = "display:none"; + } + return; + } + + // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name + if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) { + return; + } + + // If it reached this point, it must be a valid CSS style + n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case + } + }); + + // If style attribute contained any valid styles the re-write it; otherwise delete style attribute. + if (i > 0) { + return tag + ' style="' + n.join(';') + '"'; + } else { + return tag; + } + } + ] + ]); + } + } + + // Replace headers with + if (getParam(ed, "paste_convert_headers_to_strong")) { + process([ + [/]*>/gi, "

        "], + [/<\/h[1-6][^>]*>/gi, "

        "] + ]); + } + + process([ + // Copy paste from Java like Open Office will produce this junk on FF + [/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi, ''] + ]); + + // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso"). + // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation. + stripClass = getParam(ed, "paste_strip_class_attributes"); + + if (stripClass !== "none") { + function removeClasses(match, g1) { + if (stripClass === "all") + return ''; + + var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "), + function(v) { + return (/^(?!mso)/i.test(v)); + } + ); + + return cls.length ? ' class="' + cls.join(" ") + '"' : ''; + }; + + h = h.replace(/ class="([^"]+)"/gi, removeClasses); + h = h.replace(/ class=([\-\w]+)/gi, removeClasses); + } + + // Remove spans option + if (getParam(ed, "paste_remove_spans")) { + h = h.replace(/<\/?span[^>]*>/gi, ""); + } + + //console.log('After preprocess:' + h); + + o.content = h; + }, + + /** + * Various post process items. + */ + _postProcess : function(pl, o) { + var t = this, ed = t.editor, dom = ed.dom, styleProps; + + if (ed.settings.paste_enable_default_filters == false) { + return; + } + + if (o.wordContent) { + // Remove named anchors or TOC links + each(dom.select('a', o.node), function(a) { + if (!a.href || a.href.indexOf('#_Toc') != -1) + dom.remove(a, 1); + }); + + if (getParam(ed, "paste_convert_middot_lists")) { + t._convertLists(pl, o); + } + + // Process styles + styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties + + // Process only if a string was specified and not equal to "all" or "*" + if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) { + styleProps = tinymce.explode(styleProps.replace(/^none$/i, "")); + + // Retains some style properties + each(dom.select('*', o.node), function(el) { + var newStyle = {}, npc = 0, i, sp, sv; + + // Store a subset of the existing styles + if (styleProps) { + for (i = 0; i < styleProps.length; i++) { + sp = styleProps[i]; + sv = dom.getStyle(el, sp); + + if (sv) { + newStyle[sp] = sv; + npc++; + } + } + } + + // Remove all of the existing styles + dom.setAttrib(el, 'style', ''); + + if (styleProps && npc > 0) + dom.setStyles(el, newStyle); // Add back the stored subset of styles + else // Remove empty span tags that do not have class attributes + if (el.nodeName == 'SPAN' && !el.className) + dom.remove(el, true); + }); + } + } + + // Remove all style information or only specifically on WebKit to avoid the style bug on that browser + if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) { + each(dom.select('*[style]', o.node), function(el) { + el.removeAttribute('style'); + el.removeAttribute('data-mce-style'); + }); + } else { + if (tinymce.isWebKit) { + // We need to compress the styles on WebKit since if you paste it will become + // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles + each(dom.select('*', o.node), function(el) { + el.removeAttribute('data-mce-style'); + }); + } + } + }, + + /** + * Converts the most common bullet and number formats in Office into a real semantic UL/LI list. + */ + _convertLists : function(pl, o) { + var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html; + + // Convert middot lists into real semantic lists + each(dom.select('p', o.node), function(p) { + var sib, val = '', type, html, idx, parents; + + // Get text node value at beginning of paragraph + for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling) + val += sib.nodeValue; + + val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/ /g, '\u00a0'); + + // Detect unordered lists look for bullets + if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(val)) + type = 'ul'; + + // Detect ordered lists 1., a. or ixv. + if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(val)) + type = 'ol'; + + // Check if node value matches the list pattern: o   + if (type) { + margin = parseFloat(p.style.marginLeft || 0); + + if (margin > lastMargin) + levels.push(margin); + + if (!listElm || type != lastType) { + listElm = dom.create(type); + dom.insertAfter(listElm, p); + } else { + // Nested list element + if (margin > lastMargin) { + listElm = li.appendChild(dom.create(type)); + } else if (margin < lastMargin) { + // Find parent level based on margin value + idx = tinymce.inArray(levels, margin); + parents = dom.getParents(listElm.parentNode, type); + listElm = parents[parents.length - 1 - idx] || listElm; + } + } + + // Remove middot or number spans if they exists + each(dom.select('span', p), function(span) { + var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, ''); + + // Remove span with the middot or the number + if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html)) + dom.remove(span); + else if (/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) + dom.remove(span); + }); + + html = p.innerHTML; + + // Remove middot/list items + if (type == 'ul') + html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/, ''); + else + html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, ''); + + // Create li and add paragraph data into the new li + li = listElm.appendChild(dom.create('li', 0, html)); + dom.remove(p); + + lastMargin = margin; + lastType = type; + } else + listElm = lastMargin = 0; // End list element + }); + + // Remove any left over makers + html = o.node.innerHTML; + if (html.indexOf('__MCE_ITEM__') != -1) + o.node.innerHTML = html.replace(/__MCE_ITEM__/g, ''); + }, + + /** + * Inserts the specified contents at the caret position. + */ + _insert : function(h, skip_undo) { + var ed = this.editor, r = ed.selection.getRng(); + + // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells. + if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer) + ed.getDoc().execCommand('Delete', false, null); + + ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo}); + }, + + /** + * Instead of the old plain text method which tried to re-create a paste operation, the + * new approach adds a plain text mode toggle switch that changes the behavior of paste. + * This function is passed the same input that the regular paste plugin produces. + * It performs additional scrubbing and produces (and inserts) the plain text. + * This approach leverages all of the great existing functionality in the paste + * plugin, and requires minimal changes to add the new functionality. + * Speednet - June 2009 + */ + _insertPlainText : function(ed, dom, h) { + var i, len, pos, rpos, node, breakElms, before, after, + w = ed.getWin(), + d = ed.getDoc(), + sel = ed.selection, + is = tinymce.is, + inArray = tinymce.inArray, + linebr = getParam(ed, "paste_text_linebreaktype"), + rl = getParam(ed, "paste_text_replacements"); + + function process(items) { + each(items, function(v) { + if (v.constructor == RegExp) + h = h.replace(v, ""); + else + h = h.replace(v[0], v[1]); + }); + }; + + if ((typeof(h) === "string") && (h.length > 0)) { + // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line + if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) { + process([ + /[\n\r]+/g + ]); + } else { + // Otherwise just get rid of carriage returns (only need linefeeds) + process([ + /\r+/g + ]); + } + + process([ + [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them + [/]*>|<\/tr>/gi, "\n"], // Single linebreak for
        tags and table rows + [/<\/t[dh]>\s*]*>/gi, "\t"], // Table cells get tabs betweem them + /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags + [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*) + [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"], // Cool little RegExp deletes whitespace around linebreak chars. + [/\n{3,}/g, "\n\n"], // Max. 2 consecutive linebreaks + /^\s+|\s+$/g // Trim the front & back + ]); + + h = dom.decode(tinymce.html.Entities.encodeRaw(h)); + + // Delete any highlighted text before pasting + if (!sel.isCollapsed()) { + d.execCommand("Delete", false, null); + } + + // Perform default or custom replacements + if (is(rl, "array") || (is(rl, "array"))) { + process(rl); + } + else if (is(rl, "string")) { + process(new RegExp(rl, "gi")); + } + + // Treat paragraphs as specified in the config + if (linebr == "none") { + process([ + [/\n+/g, " "] + ]); + } + else if (linebr == "br") { + process([ + [/\n/g, "
        "] + ]); + } + else { + process([ + /^\s+|\s+$/g, + [/\n\n/g, "

        "], + [/\n/g, "
        "] + ]); + } + + // This next piece of code handles the situation where we're pasting more than one paragraph of plain + // text, and we are pasting the content into the middle of a block node in the editor. The block + // node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining). + // The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the + // pasted text is prepended to "Para B". Any other paragraphs of pasted text are placed between + // "Para A" and "Para B". This code solves a host of problems with the original plain text plugin and + // now handles styles correctly. (Pasting plain text into a styled paragraph is supposed to make the + // plain text take the same style as the existing paragraph.) + if ((pos = h.indexOf("

        ")) != -1) { + rpos = h.lastIndexOf("

        "); + node = sel.getNode(); + breakElms = []; // Get list of elements to break + + do { + if (node.nodeType == 1) { + // Don't break tables and break at body + if (node.nodeName == "TD" || node.nodeName == "BODY") { + break; + } + + breakElms[breakElms.length] = node; + } + } while (node = node.parentNode); + + // Are we in the middle of a block node? + if (breakElms.length > 0) { + before = h.substring(0, pos); + after = ""; + + for (i=0, len=breakElms.length; i"; + after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">"; + } + + if (pos == rpos) { + h = before + after + h.substring(pos+7); + } + else { + h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7); + } + } + } + + // Insert content at the caret, plus add a marker for repositioning the caret + ed.execCommand("mceInsertRawHTML", false, h + ' '); + + // Reposition the caret to the marker, which was placed immediately after the inserted content. + // Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers. + // The second part of the code scrolls the content up if the caret is positioned off-screen. + // This is only necessary for WebKit browsers, but it doesn't hurt to use for all. + window.setTimeout(function() { + var marker = dom.get('_plain_text_marker'), + elm, vp, y, elmHeight; + + sel.select(marker, false); + d.execCommand("Delete", false, null); + marker = null; + + // Get element, position and height + elm = sel.getStart(); + vp = dom.getViewPort(w); + y = dom.getPos(elm).y; + elmHeight = elm.clientHeight; + + // Is element within viewport if not then scroll it into view + if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) { + d.body.scrollTop = y < vp.y ? y : y - vp.h + 25; + } + }, 0); + } + }, + + /** + * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine. + */ + _legacySupport : function() { + var t = this, ed = t.editor; + + // Register command(s) for backwards compatibility + ed.addCommand("mcePasteWord", function() { + ed.windowManager.open({ + file: t.url + "/pasteword.htm", + width: parseInt(getParam(ed, "paste_dialog_width")), + height: parseInt(getParam(ed, "paste_dialog_height")), + inline: 1 + }); + }); + + if (getParam(ed, "paste_text_use_dialog")) { + ed.addCommand("mcePasteText", function() { + ed.windowManager.open({ + file : t.url + "/pastetext.htm", + width: parseInt(getParam(ed, "paste_dialog_width")), + height: parseInt(getParam(ed, "paste_dialog_height")), + inline : 1 + }); + }); + } + + // Register button for backwards compatibility + ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"}); + } + }); + + // Register plugin + tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin); +})(); diff --git a/js/tiny_mce/plugins/paste/js/pastetext.js b/js/tiny_mce/plugins/paste/js/pastetext.js new file mode 100644 index 000000000..c524f9eb0 --- /dev/null +++ b/js/tiny_mce/plugins/paste/js/pastetext.js @@ -0,0 +1,36 @@ +tinyMCEPopup.requireLangPack(); + +var PasteTextDialog = { + init : function() { + this.resize(); + }, + + insert : function() { + var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; + + // Convert linebreaks into paragraphs + if (document.getElementById('linebreaks').checked) { + lines = h.split(/\r?\n/); + if (lines.length > 1) { + h = ''; + tinymce.each(lines, function(row) { + h += '

        ' + row + '

        '; + }); + } + } + + tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); + tinyMCEPopup.close(); + }, + + resize : function() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('content'); + + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 90) + 'px'; + } +}; + +tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); diff --git a/js/tiny_mce/plugins/paste/js/pasteword.js b/js/tiny_mce/plugins/paste/js/pasteword.js new file mode 100644 index 000000000..a52731c36 --- /dev/null +++ b/js/tiny_mce/plugins/paste/js/pasteword.js @@ -0,0 +1,51 @@ +tinyMCEPopup.requireLangPack(); + +var PasteWordDialog = { + init : function() { + var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; + + // Create iframe + el.innerHTML = ''; + ifr = document.getElementById('iframe'); + doc = ifr.contentWindow.document; + + // Force absolute CSS urls + css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; + css = css.concat(tinymce.explode(ed.settings.content_css) || []); + tinymce.each(css, function(u) { + cssHTML += ''; + }); + + // Write content into iframe + doc.open(); + doc.write('' + cssHTML + ''); + doc.close(); + + doc.designMode = 'on'; + this.resize(); + + window.setTimeout(function() { + ifr.contentWindow.focus(); + }, 10); + }, + + insert : function() { + var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; + + tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); + tinyMCEPopup.close(); + }, + + resize : function() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('iframe'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 90) + 'px'; + } + } +}; + +tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); diff --git a/js/tiny_mce/plugins/paste/langs/ar_dlg.js b/js/tiny_mce/plugins/paste/langs/ar_dlg.js new file mode 100755 index 000000000..a5d0c9ed5 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ar_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ar.paste_dlg',{word_title:"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0644\u0644\u0635\u0642 \u0627\u0644\u0646\u0635 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631.( CTRL+V )",text_linebreaks:"\u0627\u062d\u062a\u0641\u0638 \u0628\u0641\u0648\u0627\u0635\u0644 \u0627\u0644\u0623\u0633\u0637\u0631",text_title:"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0644\u0644\u0635\u0642 \u0627\u0644\u0646\u0635 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631.( CTRL+V )"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/az_dlg.js b/js/tiny_mce/plugins/paste/langs/az_dlg.js new file mode 100755 index 000000000..8371ae1e0 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/az_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('az.paste_dlg',{word_title:"P\u0259nc\u0259r\u0259y\u0259 s\u00f6z \u0259lav\u0259 etm\u0259k \u00fc\u00e7\u00fcn CTRL+V klavi\u015f birl\u0259\u015fm\u0259sini istifad\u0259 edin.",text_linebreaks:"S\u0259tr s\u0131nmalar\u0131n\u0131 saxla",text_title:"P\u0259nc\u0259r\u0259y\u0259 m\u0259tn \u0259lav\u0259 etm\u0259k \u00fc\u00e7\u00fcn CTRL+V klavi\u015f birl\u0259\u015fm\u0259sini istifad\u0259 edin."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/be_dlg.js b/js/tiny_mce/plugins/paste/langs/be_dlg.js new file mode 100755 index 000000000..63d134b09 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/be_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('be.paste_dlg',{word_title:"\u0412\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0439\u0446\u0435 \u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u0435 \u043a\u043b\u0430\u0432\u0456\u0448 CTRL+V \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0442\u044d\u043a\u0441\u0442 \u0443 \u0430\u043a\u043d\u043e.",text_linebreaks:"\u0417\u0430\u0445\u043e\u045e\u0432\u0430\u0446\u044c \u043f\u0430\u0440\u044b\u0432\u044b \u0440\u0430\u0434\u043a\u043e\u045e",text_title:"\u0412\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0439\u0446\u0435 \u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u0435 \u043a\u043b\u0430\u0432\u0456\u0448 CTRL+V \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0442\u044d\u043a\u0441\u0442 \u0443 \u0430\u043a\u043d\u043e."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/bg_dlg.js b/js/tiny_mce/plugins/paste/langs/bg_dlg.js new file mode 100755 index 000000000..2761efa81 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/bg_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bg.paste_dlg',{word_title:"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL+V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430.",text_linebreaks:"\u0417\u0430\u043f\u0430\u0437\u0438 \u043d\u043e\u0432\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435",text_title:"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL+V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/bn_dlg.js b/js/tiny_mce/plugins/paste/langs/bn_dlg.js new file mode 100755 index 000000000..592080db9 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/bn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bn.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/br_dlg.js b/js/tiny_mce/plugins/paste/langs/br_dlg.js new file mode 100755 index 000000000..679cd6c52 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/br_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('br.paste_dlg',{word_title:"Use CTRL+V para colar o texto na janela.",text_linebreaks:"Manter quebras de linha",text_title:"Use CTRL+V para colar o texto na janela."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/bs_dlg.js b/js/tiny_mce/plugins/paste/langs/bs_dlg.js new file mode 100755 index 000000000..51ae381f2 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/bs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bs.paste_dlg',{word_title:"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prijelome",text_title:"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ca_dlg.js b/js/tiny_mce/plugins/paste/langs/ca_dlg.js new file mode 100755 index 000000000..ac180fb11 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ca_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ca.paste_dlg',{"word_title":"Amb el teclat utilitzeu CTRL+V per a enganxar el text dins la finestra.","text_linebreaks":"Conserva els salts de l\u00ednia","text_title":"Amb el teclat utilitzeu CTRL+V per a enganxar el text dins la finestra."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ch_dlg.js b/js/tiny_mce/plugins/paste/langs/ch_dlg.js new file mode 100755 index 000000000..1762781c0 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ch_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ch.paste_dlg',{word_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7",text_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/cn_dlg.js b/js/tiny_mce/plugins/paste/langs/cn_dlg.js new file mode 100755 index 000000000..274905a94 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cn.paste_dlg',{"word_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u5185\u5bb9","text_linebreaks":"\u4fdd\u7559\u5206\u884c\u7b26\u53f7","text_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u5185\u5bb9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/cs_dlg.js b/js/tiny_mce/plugins/paste/langs/cs_dlg.js new file mode 100755 index 000000000..104458b93 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/cs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cs.paste_dlg',{word_title:"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna.",text_linebreaks:"Zachovat zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f",text_title:"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/cy_dlg.js b/js/tiny_mce/plugins/paste/langs/cy_dlg.js new file mode 100755 index 000000000..c7b6ac74f --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/cy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cy.paste_dlg',{word_title:"Defnyddiwch CTRL+V ar eich bysellfwrdd i ludo\'r testun i fewn i\'r ffenest.",text_linebreaks:"Cadw toriadau llinell",text_title:"Defnyddiwch CTRL+V ar eich bysellfwrdd i ludo\'r testun i fewn i\'r ffenest."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/da_dlg.js b/js/tiny_mce/plugins/paste/langs/da_dlg.js new file mode 100755 index 000000000..e5c175d30 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/da_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('da.paste_dlg',{word_title:"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten.",text_linebreaks:"Bevar linieskift",text_title:"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/de_dlg.js b/js/tiny_mce/plugins/paste/langs/de_dlg.js new file mode 100755 index 000000000..316384588 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/de_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('de.paste_dlg',{word_title:"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen.",text_linebreaks:"Zeilenumbr\u00fcche beibehalten",text_title:"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/dv_dlg.js b/js/tiny_mce/plugins/paste/langs/dv_dlg.js new file mode 100755 index 000000000..250d9b953 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/dv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('dv.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/el_dlg.js b/js/tiny_mce/plugins/paste/langs/el_dlg.js new file mode 100755 index 000000000..0ca1903b0 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/el_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('el.paste_dlg',{word_title:"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf.",text_linebreaks:"\u039d\u03b1 \u03ba\u03c1\u03b1\u03c4\u03b7\u03b8\u03bf\u03cd\u03bd \u03c4\u03b1 linebreaks",text_title:"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/en_dlg.js b/js/tiny_mce/plugins/paste/langs/en_dlg.js new file mode 100644 index 000000000..ad41eb95b --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/es_dlg.js b/js/tiny_mce/plugins/paste/langs/es_dlg.js new file mode 100755 index 000000000..82d8dc278 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.paste_dlg',{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/et_dlg.js b/js/tiny_mce/plugins/paste/langs/et_dlg.js new file mode 100755 index 000000000..c9a4fa90e --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.paste_dlg',{word_title:"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks.",text_linebreaks:"J\u00e4ta reavahetused",text_title:"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/eu_dlg.js b/js/tiny_mce/plugins/paste/langs/eu_dlg.js new file mode 100755 index 000000000..cd54c8d0a --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/eu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('eu.paste_dlg',{word_title:"Erabili CTRL+V testua lehioan itsasteko.",text_linebreaks:"Mantendu lerro-jauziak",text_title:"Erabili CTRL+V testua lehioan itsasteko."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/fa_dlg.js b/js/tiny_mce/plugins/paste/langs/fa_dlg.js new file mode 100755 index 000000000..c555ac8ea --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/fa_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fa.paste_dlg',{word_title:"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f.",text_linebreaks:"\u062d\u0641\u0638 \u0642\u0637\u0639 \u062e\u0637\u0648\u0637",text_title:"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/fi_dlg.js b/js/tiny_mce/plugins/paste/langs/fi_dlg.js new file mode 100755 index 000000000..d4e2b284f --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.paste_dlg',{word_title:"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan.",text_linebreaks:"S\u00e4ilyt\u00e4 rivinvaihdot",text_title:"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/fr_dlg.js b/js/tiny_mce/plugins/paste/langs/fr_dlg.js new file mode 100755 index 000000000..1431de182 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.paste_dlg',{word_title:"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre.",text_linebreaks:"Conserver les retours \u00e0 la ligne",text_title:"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/gl_dlg.js b/js/tiny_mce/plugins/paste/langs/gl_dlg.js new file mode 100755 index 000000000..4c4bcb61d --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.paste_dlg',{word_title:"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1.",text_linebreaks:"Manter salto de li\u00f1as",text_title:"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/gu_dlg.js b/js/tiny_mce/plugins/paste/langs/gu_dlg.js new file mode 100755 index 000000000..c8a537d0d --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/gu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gu.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/he_dlg.js b/js/tiny_mce/plugins/paste/langs/he_dlg.js new file mode 100755 index 000000000..e69c41565 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.paste_dlg',{word_title:"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V.",text_linebreaks:"\u05d4\u05e9\u05d0\u05e8 \u05d0\u05ea \u05e9\u05d5\u05e8\u05d5\u05ea \u05d4\u05e8\u05d5\u05d5\u05d7",text_title:"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/hi_dlg.js b/js/tiny_mce/plugins/paste/langs/hi_dlg.js new file mode 100755 index 000000000..6a6a903f2 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/hi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hi.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/hr_dlg.js b/js/tiny_mce/plugins/paste/langs/hr_dlg.js new file mode 100755 index 000000000..a1dbefe79 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/hr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hr.paste_dlg',{word_title:"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prijelome",text_title:"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/hu_dlg.js b/js/tiny_mce/plugins/paste/langs/hu_dlg.js new file mode 100755 index 000000000..7f4fb7e7b --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.paste_dlg',{"word_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez.","text_linebreaks":"Sort\u00f6r\u00e9sek megtart\u00e1sa","text_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/hy_dlg.js b/js/tiny_mce/plugins/paste/langs/hy_dlg.js new file mode 100755 index 000000000..7bfd0adb2 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/hy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hy.paste_dlg',{word_title:"\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 CTRL + V \u057a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0574\u0561\u0576 \u0570\u0561\u0574\u0561\u0580",text_linebreaks:"\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u057f\u0578\u0572\u0561\u0564\u0561\u0580\u0571\u0565\u0580\u0568",text_title:"\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 CTRL + V \u057a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0574\u0561\u0576 \u0570\u0561\u0574\u0561\u0580"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ia_dlg.js b/js/tiny_mce/plugins/paste/langs/ia_dlg.js new file mode 100755 index 000000000..b7906e916 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ia_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ia.paste_dlg',{word_title:"\u5c06\u590d\u5236(CTRL + C)\u7684\u5185\u5bb9\u7c98\u8d34(CTRL + V)\u5230\u7a97\u53e3\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7\u53f7",text_title:"\u5c06\u590d\u5236(CTRL + C)\u7684\u5185\u5bb9\u7c98\u8d34(CTRL + V)\u5230\u7a97\u53e3\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/id_dlg.js b/js/tiny_mce/plugins/paste/langs/id_dlg.js new file mode 100755 index 000000000..316ad15cc --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.paste_dlg',{word_title:"Gunakan CTRL+V pada keyboard untuk paste.",text_linebreaks:"Keep linebreaks",text_title:"Gunakan CTRL+V pada keyboard untuk paste."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ii_dlg.js b/js/tiny_mce/plugins/paste/langs/ii_dlg.js new file mode 100755 index 000000000..4a2d0983a --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ii_dlg.js @@ -0,0 +1,5 @@ +tinyMCE.addI18n('ii.paste_dlg',{ +text_title:"\u5728\u952E\u76D8\u4E0A\u540C\u65F6\u6309\u4E0BCTRL\u548CV\u952E\uFF0C\u4EE5\u7C98\u8D34\u6587\u5B57\u5230\u6B64\u7A97\u53E3\u3002", +text_linebreaks:"\u4FDD\u7559\u5206\u884C\u7B26\u53F7\u53F7", +word_title:"\u5728\u952E\u76D8\u4E0A\u540C\u65F6\u6309\u4E0BCTRL\u548CV\u952E\uFF0C\u4EE5\u7C98\u8D34\u6587\u5B57\u5230\u6B64\u7A97\u53E3\u3002" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/is_dlg.js b/js/tiny_mce/plugins/paste/langs/is_dlg.js new file mode 100755 index 000000000..a0e80907f --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/is_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('is.paste_dlg',{word_title:"Nota\u00f0u CTRL+V \u00e1 lyklabo\u00f0rinu til a\u00f0 l\u00edma textanum \u00ed ritilinn.",text_linebreaks:"Halda endingu l\u00edna",text_title:"Nota\u00f0u CTRL+V \u00e1 lyklabor\u00f0inu til a\u00f0 l\u00edma textanum \u00ed ritilinn."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/it_dlg.js b/js/tiny_mce/plugins/paste/langs/it_dlg.js new file mode 100755 index 000000000..70da57811 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.paste_dlg',{word_title:"Premere CTRL+V sulla tastiera per incollare il testo nella finestra.",text_linebreaks:"Mantieni interruzioni di riga",text_title:"Premere CTRL+V sulla tastiera per incollare il testo nella finestra."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ja_dlg.js b/js/tiny_mce/plugins/paste/langs/ja_dlg.js new file mode 100755 index 000000000..77ec5302c --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ja_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ja.paste_dlg',{"word_title":"Ctrl+V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3067\u30c6\u30ad\u30b9\u30c8\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002","text_linebreaks":"\u6539\u884c\u3092\u4fdd\u6301\u3059\u308b","text_title":"Ctrl+V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3067\u30c6\u30ad\u30b9\u30c8\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ka_dlg.js b/js/tiny_mce/plugins/paste/langs/ka_dlg.js new file mode 100755 index 000000000..d0a6b0383 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ka_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ka.paste_dlg',{word_title:"\u0418\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10d0\u10e1\u10db\u10d4\u10da\u10d0\u10d3 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d0 CTRL+V.",text_linebreaks:"\u10d2\u10d0\u10d3\u10d0\u10e2\u10d0\u10dc\u10d8\u10da\u10d8 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",text_title:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10d0\u10e1\u10db\u10d4\u10da\u10d0\u10d3 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d0 CTRL+V."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/kl_dlg.js b/js/tiny_mce/plugins/paste/langs/kl_dlg.js new file mode 100755 index 000000000..94c8b5c80 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/kl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('kl.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/km_dlg.js b/js/tiny_mce/plugins/paste/langs/km_dlg.js new file mode 100755 index 000000000..8c3c36c8e --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/km_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('km.paste_dlg',{word_title:"\u1794\u17d2\u179a\u17be CTRL V \u1793\u17c5\u179b\u17be\u1780\u17d2\u178a\u17b6\u179a\u1785\u17bb\u1785\u178a\u17be\u1798\u17d2\u1794\u17b8\u1794\u17b7\u1791\u1797\u17d2\u1787\u17b6\u1794\u17cb\u17a2\u178f\u17d2\u1790\u1794\u1791\u1791\u17c5\u1793\u17b9\u1784\u1794\u1784\u17d2\u17a2\u17bd\u1785\u1793\u17c1\u17c7\u00a0\u17d4",text_linebreaks:"\u179a\u1780\u17d2\u179f\u17b6\u179f\u1789\u17d2\u1789\u17b6\u1785\u17bb\u17c7\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb",text_title:"\u1794\u17d2\u179a\u17be CTRL V \u1793\u17c5\u179b\u17be\u1780\u17d2\u178a\u17b6\u179a\u1785\u17bb\u1785\u178a\u17be\u1798\u17d2\u1794\u17b8\u1794\u17b7\u1791\u1797\u17d2\u1787\u17b6\u1794\u17cb\u17a2\u178f\u17d2\u1790\u1794\u1791\u1791\u17c5\u1793\u17b9\u1784\u1794\u1784\u17d2\u17a2\u17bd\u1785\u1793\u17c1\u17c7\u00a0\u17d4"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ko_dlg.js b/js/tiny_mce/plugins/paste/langs/ko_dlg.js new file mode 100755 index 000000000..4c009fe66 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ko_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ko.paste_dlg',{word_title:"\uc708\ub3c4\uc6b0\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ubd99\uc774\ub824\uba74 \ud0a4\ubcf4\ub4dc\ub85cCtrl+V\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694.",text_linebreaks:"\uac1c\ud589\uc744 \ubcf4\uad00 \uc720\uc9c0",text_title:"\uc708\ub3c4\uc6b0\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ubd99\uc774\ub824\uba74 \ud0a4\ubcf4\ub4dc\ub85c Ctrl+V\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/lb_dlg.js b/js/tiny_mce/plugins/paste/langs/lb_dlg.js new file mode 100755 index 000000000..381de1072 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/lb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lb.paste_dlg',{word_title:"Dr\u00e9ckt op \u00c4rer Tastatur Ctrl+V, um den Text an ze f\u00fcgen.",text_linebreaks:"Zeilen\u00ebmbr\u00ebch b\u00e4ibehalen",text_title:"Dr\u00e9ckt op \u00c4rer Tastatur Ctrl+V, fir den Text an ze f\u00fcgen."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/lt_dlg.js b/js/tiny_mce/plugins/paste/langs/lt_dlg.js new file mode 100755 index 000000000..d1eac566b --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.paste_dlg',{word_title:"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105.",text_linebreaks:"Palikti eilu\u010di\u0173 l\u016b\u017eius",text_title:"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/lv_dlg.js b/js/tiny_mce/plugins/paste/langs/lv_dlg.js new file mode 100755 index 000000000..b9f8ef963 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.paste_dlg',{word_title:"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101.",text_linebreaks:"Sagl\u0101b\u0101t l\u012bniju sadal\u012bt\u0101jus",text_title:"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/mk_dlg.js b/js/tiny_mce/plugins/paste/langs/mk_dlg.js new file mode 100755 index 000000000..dffbe0d85 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/mk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mk.paste_dlg',{word_title:"Koristite CTRL+V na tipkovnici da zalepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prelome",text_title:"Koristite CTRL+V na tipkovnici da zalepite tekst u prozor."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ml_dlg.js b/js/tiny_mce/plugins/paste/langs/ml_dlg.js new file mode 100755 index 000000000..e22058716 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ml_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ml.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/mn_dlg.js b/js/tiny_mce/plugins/paste/langs/mn_dlg.js new file mode 100755 index 000000000..76f212ddc --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/mn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mn.paste_dlg',{word_title:"\u0422\u0430 \u0431\u0438\u0447\u0432\u044d\u0440 \u043e\u0440\u0443\u0443\u043b\u0430\u0445\u044b\u0433 \u0445\u04af\u0441\u0432\u044d\u043b Ctrl+V \u0434\u044d\u044d\u0440 \u0434\u0430\u0440\u043d\u0430 \u0443\u0443.",text_linebreaks:"\u041c\u04e9\u0440 \u0442\u0430\u0441\u043b\u0430\u043b\u0442\u044b\u0433 \u04af\u043b\u0434\u044d\u044d\u043d\u044d",text_title:"\u0422\u0430 \u0431\u0438\u0447\u0432\u044d\u0440 \u043e\u0440\u0443\u0443\u043b\u0430\u0445\u044b\u0433 \u0445\u04af\u0441\u0432\u044d\u043b Ctrl+V \u0434\u044d\u044d\u0440 \u0434\u0430\u0440\u043d\u0430 \u0443\u0443."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ms_dlg.js b/js/tiny_mce/plugins/paste/langs/ms_dlg.js new file mode 100755 index 000000000..46b55d666 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ms_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ms.paste_dlg',{word_title:"Guna CTRL+V pada papan kekunci anda untuk teks ke dalam tetingkap.",text_linebreaks:"Biarkan garisan pemisah",text_title:"Guna CTRL+V pada papan kekunci anda untuk Tempel teks ke dalam tetingkap."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/my_dlg.js b/js/tiny_mce/plugins/paste/langs/my_dlg.js new file mode 100755 index 000000000..5b598ca0e --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/my_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('my.paste_dlg',{word_title:"\u101d\u1004\u103a\u1038\u1012\u102d\u102f\u1038\u1011\u1032\u101e\u102d\u102f\u1037 \u1005\u102c\u101e\u102c\u1038\u1000\u102d\u102f \u1000\u1030\u1038\u103c\u1016\u100a\u103a\u1037\u101b\u1014\u103a \u101e\u1004\u103a\u1037 \u1000\u102e\u1038\u1018\u102f\u1010\u103a\u101c\u1000\u103a\u1000\u103d\u1000\u103a\u101b\u103e\u102d CTRL V \u1000\u102d\u102f \u101e\u1036\u102f\u1038\u1015\u102b",text_linebreaks:"\u1005\u102c\u1031\u103c\u1000\u102c\u1004\u103a\u1038\u1001\u103d\u1032\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1001\u103d\u1032\u101c\u103b\u103e\u1000\u103a\u1011\u102c\u1038\u1015\u102b",text_title:"\u101d\u1004\u103a\u1038\u1012\u102d\u102f\u1038\u1011\u1032\u101e\u102d\u102f\u1037 \u1005\u102c\u101e\u102c\u1038\u1000\u102d\u102f \u1000\u1030\u1038\u103c\u1016\u100a\u103a\u1037\u101b\u1014\u103a \u101e\u1004\u103a\u1037 \u1000\u102e\u1038\u1018\u102f\u1010\u103a\u101c\u1000\u103a\u1000\u103d\u1000\u103a\u101b\u103e\u102d CTRL V \u1000\u102d\u102f \u101e\u1036\u102f\u1038\u1015\u102b"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/nb_dlg.js b/js/tiny_mce/plugins/paste/langs/nb_dlg.js new file mode 100755 index 000000000..bfb2266f8 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/nb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nb.paste_dlg',{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vinduet."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/nl_dlg.js b/js/tiny_mce/plugins/paste/langs/nl_dlg.js new file mode 100755 index 000000000..bac8ac046 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.paste_dlg',{"word_title":"Gebruik Ctrl+V om tekst in het venster te plakken.","text_linebreaks":"Regelafbreking bewaren","text_title":"Gebruik Ctrl+V om tekst in het venster te plakken."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/nn_dlg.js b/js/tiny_mce/plugins/paste/langs/nn_dlg.js new file mode 100755 index 000000000..0f421ae7f --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/nn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nn.paste_dlg',{word_title:"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget.",text_linebreaks:"Behald tekstbryting",text_title:"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/no_dlg.js b/js/tiny_mce/plugins/paste/langs/no_dlg.js new file mode 100755 index 000000000..3f8e333d0 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.paste_dlg',{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/pl_dlg.js b/js/tiny_mce/plugins/paste/langs/pl_dlg.js new file mode 100755 index 000000000..54fd41c37 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.paste_dlg',{"word_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna.","text_linebreaks":"Zachowaj ko\u0144ce linii.","text_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ps_dlg.js b/js/tiny_mce/plugins/paste/langs/ps_dlg.js new file mode 100755 index 000000000..721f1010a --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ps_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ps.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/pt_dlg.js b/js/tiny_mce/plugins/paste/langs/pt_dlg.js new file mode 100755 index 000000000..f49d5dd4b --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.paste_dlg',{word_title:"Use CTRL+V para colar o texto na janela.",text_linebreaks:"Manter quebras de linha",text_title:"Use CTRL+V para colar o texto na janela."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ro_dlg.js b/js/tiny_mce/plugins/paste/langs/ro_dlg.js new file mode 100755 index 000000000..91a8d2140 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.paste_dlg',{word_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103.",text_linebreaks:"P\u0103streaz\u0103 separatoarele de linii.",text_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ru_dlg.js b/js/tiny_mce/plugins/paste/langs/ru_dlg.js new file mode 100755 index 000000000..b360b075d --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.paste_dlg',{"word_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e.","text_linebreaks":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a","text_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/sc_dlg.js b/js/tiny_mce/plugins/paste/langs/sc_dlg.js new file mode 100755 index 000000000..5bc79d234 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/sc_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sc.paste_dlg',{word_title:"\u5728\u952e\u76d8\u4e0a\u540c\u65f6\u6309\u4e0bCTRL\u548cV\u952e\uff0c\u4ee5\u8d34\u4e0a\u6587\u5b57\u5230\u6b64\u89c6\u7a97\u3002 ",text_linebreaks:"\u4fdd\u7559\u6362\u884c\u7b26\u53f7",text_title:"\u5728\u952e\u76d8\u4e0a\u540c\u65f6\u6309\u4e0bCTRL\u548cV\u952e\uff0c\u4ee5\u8d34\u4e0a\u6587\u5b57\u5230\u6b64\u89c6\u7a97\u3002 "}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/se_dlg.js b/js/tiny_mce/plugins/paste/langs/se_dlg.js new file mode 100755 index 000000000..8c7e86bfb --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/se_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('se.paste_dlg',{word_title:"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster.",text_linebreaks:"Spara radbrytningar",text_title:"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/si_dlg.js b/js/tiny_mce/plugins/paste/langs/si_dlg.js new file mode 100755 index 000000000..058c014fa --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/si_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('si.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/sk_dlg.js b/js/tiny_mce/plugins/paste/langs/sk_dlg.js new file mode 100755 index 000000000..eb3b2dba7 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/sk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sk.paste_dlg',{word_title:"Pou\u017eite CTRL+V pre vlo\u017eenie textu do okna.",text_linebreaks:"Zachova\u0165 zalamovanie riadkov",text_title:"Pou\u017eite CTRL+V pre vlo\u017eenie textu do okna."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/sl_dlg.js b/js/tiny_mce/plugins/paste/langs/sl_dlg.js new file mode 100755 index 000000000..1757bcd43 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/sl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sl.paste_dlg',{word_title:"Uporabite kombinacijo tipk CTRL+V, da prilepite vsebino v okno.",text_linebreaks:"Obdr\u017ei prelome vrstic",text_title:"Uporabite kombinacijo tipk CTRL+V, da prilepite vsebino v okno."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/sq_dlg.js b/js/tiny_mce/plugins/paste/langs/sq_dlg.js new file mode 100755 index 000000000..7e763e4d3 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/sq_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sq.paste_dlg',{word_title:"P\u00ebrdor CTRL+V p\u00ebr t\u00eb ngjitur tekstin.",text_linebreaks:"Ruaj linjat e reja",text_title:"P\u00ebrdor CTRL+V p\u00ebr t\u00eb ngjitur tekstin."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/sr_dlg.js b/js/tiny_mce/plugins/paste/langs/sr_dlg.js new file mode 100755 index 000000000..841442a11 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/sr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sr.paste_dlg',{word_title:"Koristite CTRL+V na tastaturi da zalepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prelome",text_title:"Koristite CTRL+V na tastaturi da zalepite tekst u prozor."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/sv_dlg.js b/js/tiny_mce/plugins/paste/langs/sv_dlg.js new file mode 100755 index 000000000..1c99e2b1b --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/sv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sv.paste_dlg',{"word_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster.","text_linebreaks":"Spara radbrytningar","text_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ta_dlg.js b/js/tiny_mce/plugins/paste/langs/ta_dlg.js new file mode 100755 index 000000000..0865a582c --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ta_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ta.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/te_dlg.js b/js/tiny_mce/plugins/paste/langs/te_dlg.js new file mode 100755 index 000000000..f7117790c --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/te_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('te.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/th_dlg.js b/js/tiny_mce/plugins/paste/langs/th_dlg.js new file mode 100755 index 000000000..646a460fe --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/th_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('th.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/tn_dlg.js b/js/tiny_mce/plugins/paste/langs/tn_dlg.js new file mode 100755 index 000000000..2c5c22db7 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/tn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tn.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/tr_dlg.js b/js/tiny_mce/plugins/paste/langs/tr_dlg.js new file mode 100755 index 000000000..99e1b73da --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/tr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tr.paste_dlg',{word_title:"Pencereye metin yap\u0131\u015ft\u0131rmak i\u00e7in klavyeden CTRL+V i kullan\u0131n.",text_linebreaks:"Sat\u0131r kesmelerini tut",text_title:"Pencereye metin yap\u0131\u015ft\u0131rmak i\u00e7in klavyeden CTRL+V i kullan\u0131n."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/tt_dlg.js b/js/tiny_mce/plugins/paste/langs/tt_dlg.js new file mode 100755 index 000000000..4eea8875f --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/tt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tt.paste_dlg',{word_title:"\u5c07\u8907\u88fd(CTRL + C)\u7684\u5167\u5bb9\u8cbc\u4e0a(CTRL + V)\u5230\u8996\u7a97\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u865f\u865f",text_title:"\u5c07\u8907\u88fd(CTRL + C)\u7684\u5167\u5bb9\u8cbc\u4e0a(CTRL + V)\u5230\u8996\u7a97\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/tw_dlg.js b/js/tiny_mce/plugins/paste/langs/tw_dlg.js new file mode 100755 index 000000000..ae63d51a4 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/tw_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tw.paste_dlg',{word_title:"\u7528 Ctrl+V \u5c07\u5167\u5bb9\u8cbc\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u63db\u884c\u7b26\u865f",text_title:"\u7528 Ctrl+V \u5c07\u5167\u5bb9\u8cbc\u4e0a\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/uk_dlg.js b/js/tiny_mce/plugins/paste/langs/uk_dlg.js new file mode 100755 index 000000000..7a1f28ac1 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/uk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('uk.paste_dlg',{word_title:"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0443 \u0432\u0456\u043a\u043d\u043e.",text_linebreaks:"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438 \u0440\u044f\u0434\u043a\u0456\u0432",text_title:"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0443 \u0432\u0456\u043a\u043d\u043e."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/ur_dlg.js b/js/tiny_mce/plugins/paste/langs/ur_dlg.js new file mode 100755 index 000000000..94ac588e8 --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/ur_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ur.paste_dlg',{word_title:"Use CTRL+V on your keyboard to paste the text into the window.",text_linebreaks:"Keep linebreaks",text_title:"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/vi_dlg.js b/js/tiny_mce/plugins/paste/langs/vi_dlg.js new file mode 100755 index 000000000..63a74d27f --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/vi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('vi.paste_dlg',{word_title:"S\u1eed d\u1ee5ng CTRL+V tr\u00ean b\u00e0n ph\u00edm \u0111\u1ec3 d\u00e1n v\u0103n b\u1ea3n v\u00e0o c\u1eeda s\u1ed5.",text_linebreaks:"Gi\u1eef ng\u1eaft d\u00f2ng",text_title:"S\u1eed d\u1ee5ng CTRL+V tr\u00ean b\u00e0n ph\u00edm \u0111\u1ec3 d\u00e1n v\u0103n b\u1ea3n v\u00e0o c\u1eeda s\u1ed5."}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js b/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js new file mode 100755 index 000000000..4abd1a96c --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh-cn.paste_dlg',{"word_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002","text_linebreaks":"\u4fdd\u7559\u65ad\u884c","text_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/zh_dlg.js b/js/tiny_mce/plugins/paste/langs/zh_dlg.js new file mode 100755 index 000000000..94fb061eb --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/zh_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh.paste_dlg',{word_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7",text_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/langs/zu_dlg.js b/js/tiny_mce/plugins/paste/langs/zu_dlg.js new file mode 100755 index 000000000..c977b26ad --- /dev/null +++ b/js/tiny_mce/plugins/paste/langs/zu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zu.paste_dlg',{word_title:"\u5728\u952e\u76d8\u4e0a\u540c\u65f6\u6309\u4e0bCTRL\u548cV\u952e\uff0c\u4ee5\u8d34\u4e0a\u6587\u5b57\u5230\u6b64\u89c6\u7a97\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7\u53f7",text_title:"\u5728\u952e\u76d8\u4e0a\u540c\u65f6\u6309\u4e0bCTRL\u548cV\u952e\uff0c\u4ee5\u8d34\u4e0a\u6587\u5b57\u5230\u6b64\u89c6\u7a97\u3002"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/pastetext.htm b/js/tiny_mce/plugins/paste/pastetext.htm new file mode 100644 index 000000000..b65594547 --- /dev/null +++ b/js/tiny_mce/plugins/paste/pastetext.htm @@ -0,0 +1,27 @@ + + + {#paste.paste_text_desc} + + + + +
        +
        {#paste.paste_text_desc}
        + +
        + +
        + +
        + +
        {#paste_dlg.text_title}
        + + + +
        + + +
        +
        + + \ No newline at end of file diff --git a/js/tiny_mce/plugins/paste/pasteword.htm b/js/tiny_mce/plugins/paste/pasteword.htm new file mode 100644 index 000000000..0f6bb4121 --- /dev/null +++ b/js/tiny_mce/plugins/paste/pasteword.htm @@ -0,0 +1,21 @@ + + + {#paste.paste_word_desc} + + + + +
        +
        {#paste.paste_word_desc}
        + +
        {#paste_dlg.word_title}
        + +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/preview/editor_plugin.js b/js/tiny_mce/plugins/preview/editor_plugin.js new file mode 100644 index 000000000..507909c5f --- /dev/null +++ b/js/tiny_mce/plugins/preview/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/preview/editor_plugin_src.js b/js/tiny_mce/plugins/preview/editor_plugin_src.js new file mode 100644 index 000000000..80f00f0d9 --- /dev/null +++ b/js/tiny_mce/plugins/preview/editor_plugin_src.js @@ -0,0 +1,53 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Preview', { + init : function(ed, url) { + var t = this, css = tinymce.explode(ed.settings.content_css); + + t.editor = ed; + + // Force absolute CSS urls + tinymce.each(css, function(u, k) { + css[k] = ed.documentBaseURI.toAbsolute(u); + }); + + ed.addCommand('mcePreview', function() { + ed.windowManager.open({ + file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"), + width : parseInt(ed.getParam("plugin_preview_width", "550")), + height : parseInt(ed.getParam("plugin_preview_height", "600")), + resizable : "yes", + scrollbars : "yes", + popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"), + inline : ed.getParam("plugin_preview_inline", 1) + }, { + base : ed.documentBaseURI.getURI() + }); + }); + + ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'}); + }, + + getInfo : function() { + return { + longname : 'Preview', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('preview', tinymce.plugins.Preview); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/preview/example.html b/js/tiny_mce/plugins/preview/example.html new file mode 100644 index 000000000..b2c3d90ce --- /dev/null +++ b/js/tiny_mce/plugins/preview/example.html @@ -0,0 +1,28 @@ + + + + + +Example of a custom preview page + + + +Editor contents:
        +
        + +
        + + + diff --git a/js/tiny_mce/plugins/preview/jscripts/embed.js b/js/tiny_mce/plugins/preview/jscripts/embed.js new file mode 100644 index 000000000..f8dc81052 --- /dev/null +++ b/js/tiny_mce/plugins/preview/jscripts/embed.js @@ -0,0 +1,73 @@ +/** + * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. + */ + +function writeFlash(p) { + writeEmbed( + 'D27CDB6E-AE6D-11cf-96B8-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'application/x-shockwave-flash', + p + ); +} + +function writeShockWave(p) { + writeEmbed( + '166B1BCA-3F9C-11CF-8075-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', + 'application/x-director', + p + ); +} + +function writeQuickTime(p) { + writeEmbed( + '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', + 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', + 'video/quicktime', + p + ); +} + +function writeRealMedia(p) { + writeEmbed( + 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'audio/x-pn-realaudio-plugin', + p + ); +} + +function writeWindowsMedia(p) { + p.url = p.src; + writeEmbed( + '6BF52A52-394A-11D3-B153-00C04F79FAA6', + 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', + 'application/x-mplayer2', + p + ); +} + +function writeEmbed(cls, cb, mt, p) { + var h = '', n; + + h += ''; + + h += ' + + + + + +{#preview.preview_desc} + + + + + diff --git a/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js new file mode 100755 index 000000000..dc74b5dcf --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ar.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js new file mode 100755 index 000000000..47210e43c --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('az.searchreplace_dlg',{ +searchnext_desc:"S\u00F6zl\u0259ri axtar", +notfound:"Axtar\u0131\u015F bitdi. S\u0259tr tap\u0131lmad\u0131.", +search_title:"Axtar", +replace_title:"Axtar/D\u0259yi\u015F", +allreplaced:"B\u00FCt\u00FCn qar\u015F\u0131la\u015Fm\u0131\u015F s\u0259trl\u0259r d\u0259yi\u015Fdirildi.", +findwhat:"N\u0259 axtar\u0131ls\u0131n", +replacewith:"N\u0259y\u0259 d\u0259yi\u015Filsin", +direction:"\u0130stiqam\u0259tl\u0259ndirm\u0259", +up:"Yuxar\u0131", +down:"A\u015Fa\u011F\u0131", +mcase:"Registr\u0131 n\u0259z\u0259r\u0259 al", +findnext:"Sonrak\u0131n\u0131 axtar", +replace:"D\u0259yi\u015F", +replaceall:"Ham\u0131s\u0131n\u0131 d\u0259yi\u015F" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/be_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/be_dlg.js new file mode 100755 index 000000000..387eefc0a --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/be_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('be.searchreplace_dlg',{ +searchnext_desc:"\u0417\u043D\u0430\u0439\u0441\u0446\u0456 \u0437\u043D\u043E\u045E", +notfound:"\u041F\u043E\u0448\u0443\u043A \u0441\u043A\u043E\u043D\u0447\u0430\u043D\u044B. \u0420\u0430\u0434\u043E\u043A \u043D\u0435 \u0437\u043D\u043E\u0439\u0434\u0437\u0435\u043D\u0430\u044F.", +search_title:"\u0417\u043D\u0430\u0439\u0441\u0446\u0456", +replace_title:"\u0417\u043D\u0430\u0439\u0441\u0446\u0456/\u0417\u0430\u043C\u044F\u043D\u0456\u0446\u044C", +allreplaced:"\u0423\u0441\u0435 \u0441\u0443\u0441\u0442\u0440\u0430\u043A\u0430\u0435\u043C\u044B\u044F \u0440\u0430\u0434\u043A\u0456 \u0431\u044B\u043B\u0456 \u0437\u0430\u043C\u0435\u043D\u0435\u043D\u044B\u044F.", +findwhat:"\u0428\u0442\u043E \u0437\u043D\u0430\u0439\u0441\u0446\u0456", +replacewith:"\u0417\u0430\u043C\u044F\u043D\u0456\u0446\u044C \u043D\u0430", +direction:"\u041A\u0456\u0440\u0443\u043D\u0430\u043A", +up:"\u0423\u0432\u0435\u0440\u0445", +down:"\u0423\u043D\u0456\u0437", +mcase:"\u0423\u043B\u0456\u0447\u0432\u0430\u0446\u044C \u0440\u044D\u0433\u0456\u0441\u0442\u0440", +findnext:"\u0417\u043D\u0430\u0439\u0441\u0446\u0456 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0443\u044E", +replace:"\u0417\u0430\u043C\u044F\u043D\u0456\u0446\u044C", +replaceall:"\u0417\u0430\u043C\u044F\u043D\u0456\u0446\u044C \u0443\u0441\u0451" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js new file mode 100755 index 000000000..7347d3340 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('bg.searchreplace_dlg',{ +searchnext_desc:"\u0422\u044A\u0440\u0441\u0438 \u043E\u0442\u043D\u043E\u0432\u043E", +notfound:"\u0422\u044A\u0440\u0441\u0435\u043D\u0435\u0442\u043E \u0437\u0430\u0432\u044A\u0440\u0448\u0438. \u0422\u044A\u0440\u0441\u0435\u043D\u0438\u0442\u0435 \u0434\u0443\u043C\u0438 \u043D\u0435 \u0431\u044F\u0445\u0430 \u043E\u0442\u043A\u0440\u0438\u0442\u0438.", +search_title:"\u0422\u044A\u0440\u0441\u0438", +replace_title:"\u0422\u044A\u0440\u0441\u0438/\u0417\u0430\u043C\u0435\u0441\u0442\u0438", +allreplaced:"\u0412\u0441\u0438\u0447\u043A\u0438 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438 \u0434\u0443\u043C\u0438 \u0431\u044F\u0445\u0430 \u0437\u0430\u043C\u0435\u0441\u0442\u0435\u043D\u0438.", +findwhat:"\u0422\u044A\u0440\u0441\u0438", +replacewith:"\u0417\u0430\u043C\u0435\u0441\u0442\u0438 \u0441", +direction:"\u041F\u043E\u0441\u043E\u043A\u0430", +up:"\u041D\u0430\u0433\u043E\u0440\u0435", +down:"\u041D\u0430\u0434\u043E\u043B\u0443", +mcase:"\u0421\u044A\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044A\u0440\u0430", +findnext:"\u0422\u044A\u0440\u0441\u0438 \u0441\u043B\u0435\u0434\u0432\u0430\u0449\u0438", +replace:"\u0417\u0430\u043C\u0435\u0441\u0442\u0438", +replaceall:"\u0417\u0430\u043C\u0435\u0441\u0442\u0438 \u0432\u0441\u0438\u0447\u043A\u0438" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js new file mode 100755 index 000000000..4fe802094 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('bn.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js new file mode 100755 index 000000000..22b8d322c --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('br.searchreplace_dlg',{ +searchnext_desc:"Localizar novamente", +notfound:"A pesquisa foi conclu\u00EDda sem resultados.", +search_title:"Localizar", +replace_title:"Localizar/substituir", +allreplaced:"Todas as substitui\u00E7\u00F5es foram efetuadas.", +findwhat:"Localizar", +replacewith:"Substituir com", +direction:"Dire\u00E7\u00E3o", +up:"Acima", +down:"Abaixo", +mcase:"Diferenciar mai\u00FAsculas/min\u00FAsculas", +findnext:"Localizar pr\u00F3ximo", +replace:"Substituir", +replaceall:"Substituir todos" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js new file mode 100755 index 000000000..72f08cf95 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('bs.searchreplace_dlg',{ +searchnext_desc:"Prona\u0111i opet", +notfound:"Pretra\u017Eivanje je zavr\u0161eno. Tra\u017Eeni tekst nije prona\u0111en.", +search_title:"Prona\u0111i", +replace_title:"Prona\u0111i/Zamijeni", +allreplaced:"Sva pojavljivanja tra\u017Eenog teksta su zamijenjena.", +findwhat:"Prona\u0111i tekst", +replacewith:"Zamijeni sa", +direction:"Smjer", +up:"Gore", +down:"Dolje", +mcase:"Match case", +findnext:"Prona\u0111i sljede\u0107e", +replace:"Zamijeni", +replaceall:"Zamijeni sve" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js new file mode 100755 index 000000000..e634ccd08 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ca.searchreplace_dlg',{ +searchnext_desc:"Cerca de nou", +notfound:"S\'ha completat la cerca. No s\'ha trobat la cadena cercada.", +search_title:"Cerca", +replace_title:"Cerca/Reempla\u00E7a", +allreplaced:"S\'han reempla\u00E7at totes les ocurr\u00E8ncies de la cadena cercada.", +findwhat:"Cerca", +replacewith:"Reempla\u00E7a amb", +direction:"Direcci\u00F3", +up:"Amunt", +down:"Avall", +mcase:"Distingeix maj\u00FAscules/min\u00FAscules", +findnext:"Seg\u00FCent", +replace:"Reempla\u00E7a", +replaceall:"Reempla\u00E7a-ho tot" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ch_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ch_dlg.js new file mode 100755 index 000000000..089d18783 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ch_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ch.searchreplace_dlg',{ +searchnext_desc:"\u518D\u6B21\u67E5\u627E", +notfound:"\u67E5\u627E\u5DF2\u5B8C\u6210!\u627E\u4E0D\u5230\u4EFB\u4F55\u76EE\u6807\u3002", +search_title:"\u67E5\u627E", +replace_title:"\u67E5\u627E/\u66FF\u6362", +allreplaced:"\u5DF2\u66FF\u6362\u6240\u6709\u5339\u914D\u7684\u7B26\u4E32.", +findwhat:"\u67E5\u627E\u76EE\u6807", +replacewith:"\u66FF\u6362\u4E3A", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5927\u5C0F\u5199\u5339\u914D", +findnext:"\u4E0B\u4E00\u4E2A", +replace:"\u66FF\u6362", +replaceall:"\u66FF\u6362\u5168\u90E8" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js new file mode 100755 index 000000000..a1928789a --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('cs.searchreplace_dlg',{ +searchnext_desc:"Naj\u00EDt dal\u0161\u00ED", +notfound:"Hled\u00E1n\u00ED bylo dokon\u010Deno. Hledan\u00FD text nebyl nalezen.", +search_title:"Naj\u00EDt", +replace_title:"Naj\u00EDt/nahradit", +allreplaced:"V\u0161echny v\u00FDskyty byly nahrazeny.", +findwhat:"Co hledat", +replacewith:"\u010C\u00EDm nahradit", +direction:"Sm\u011Br", +up:"Nahoru", +down:"Dol\u016F", +mcase:"Rozli\u0161ovat velikost", +findnext:"Naj\u00EDt dal\u0161\u00ED", +replace:"Nahradit", +replaceall:"Nahradit v\u0161e" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js new file mode 100755 index 000000000..fe959246e --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('cy.searchreplace_dlg',{ +searchnext_desc:"Canfod eto", +notfound:"Mae'r chwiliad wedi cwblhau. Methu canfod y llinyn chwiliad.", +search_title:"Canfod", +replace_title:"Canfod/Amnewid", +allreplaced:"Amnewidwyd pob digwyddiad o'r llinyn chwiliad.", +findwhat:"Canfod beth", +replacewith:"Adnewid gyda", +direction:"Cyfeiriad", +up:"I fyny", +down:"I lawr", +mcase:"Cydweddu priflythrennedd", +findnext:"Canfod nesaf", +replace:"Amnewid", +replaceall:"Amnewid pob un" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js new file mode 100755 index 000000000..9c49354df --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('da.searchreplace_dlg',{ +searchnext_desc:"S\u00F8g igen", +notfound:"S\u00F8gningen gav intet resultat.", +search_title:"S\u00F8g", +replace_title:"S\u00F8g / erstat", +allreplaced:"Alle forekomster af s\u00F8gestrengen er erstattet.", +findwhat:"S\u00F8g efter", +replacewith:"Erstat med", +direction:"Retning", +up:"Op", +down:"Ned", +mcase:"Forskel p\u00E5 store og sm\u00E5 bogstaver", +findnext:"Find n\u00E6ste", +replace:"Erstat", +replaceall:"Erstat alle" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js new file mode 100755 index 000000000..52c0b0625 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('de.searchreplace_dlg',{ +searchnext_desc:"Weitersuchen", +notfound:"Die Suche ist am Ende angelangt. Die Zeichenkette konnte nicht gefunden werden.", +search_title:"Suchen", +replace_title:"Suchen/Ersetzen", +allreplaced:"Alle Vorkommen der Zeichenkette wurden ersetzt.", +findwhat:"Zu suchender Text", +replacewith:"Ersetzen durch", +direction:"Suchrichtung", +up:"Aufw\u00E4rts", +down:"Abw\u00E4rts", +mcase:"Gro\u00DF-/Kleinschreibung beachten", +findnext:"Weitersuchen", +replace:"Ersetzen", +replaceall:"Alle ersetzen" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/dv_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/dv_dlg.js new file mode 100755 index 000000000..4c88a5458 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/dv_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('dv.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js new file mode 100755 index 000000000..6ece85fcc --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('el.searchreplace_dlg',{ +searchnext_desc:"\u0395\u03CD\u03C1\u03B5\u03C3\u03B7 \u03BE\u03B1\u03BD\u03AC", +notfound:"\u0397 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03C4\u03B5\u03BB\u03B5\u03AF\u03C9\u03C3\u03B5. \u03A4\u03BF \u03B6\u03B7\u03C4\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5.", +search_title:"\u0395\u03CD\u03C1\u03B5\u03C3\u03B7", +replace_title:"\u0395\u03CD\u03C1\u03B5\u03C3\u03B7/\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7", +allreplaced:"\u038C\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03C3\u03B5\u03B9\u03C2 \u03C4\u03BF\u03C5 \u03B6\u03B7\u03C4\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AC\u03B8\u03B7\u03BA\u03B1\u03BD.", +findwhat:"\u0395\u03CD\u03C1\u03B5\u03C3\u03B7 \u03C4\u03BF\u03C5", +replacewith:"\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03BC\u03B5", +direction:"\u039A\u03B1\u03C4\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7", +up:"\u03A0\u03AC\u03BD\u03C9", +down:"\u039A\u03AC\u03C4\u03C9", +mcase:"\u03A4\u03B1\u03AF\u03C1\u03B9\u03B1\u03C3\u03BC\u03B1 \u03BA\u03B5\u03C6\u03B1\u03BB\u03B1\u03AF\u03B1/\u03BC\u03B9\u03BA\u03C1\u03AC", +findnext:"\u0392\u03C1\u03B5\u03C2 \u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF", +replace:"\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7", +replaceall:"\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4. \u03CC\u03BB\u03C9\u03BD" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js new file mode 100755 index 000000000..370959afa --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('en.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js new file mode 100755 index 000000000..b54c74bb2 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('es.searchreplace_dlg',{ +searchnext_desc:"Buscar de nuevo", +notfound:"La b\u00FAsqueda se ha completado. No se encontr\u00F3 el texto introducido.", +search_title:"Buscar", +replace_title:"Buscar/Reemplazar", +allreplaced:"Se ha reemplazado el texto.", +findwhat:"Qu\u00E9 buscar", +replacewith:"Reemplazar por", +direction:"Direcci\u00F3n", +up:"Arriba", +down:"Abajo", +mcase:"Min\u00FAs./May\u00FAs.", +findnext:"Buscar siguiente", +replace:"Reemplazar", +replaceall:"Reemplazar todo" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js new file mode 100755 index 000000000..fcafedd78 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('et.searchreplace_dlg',{ +searchnext_desc:"Otsi uuesti", +notfound:"Otsing on l\u00F5petatud. Otsis\u00F5na ei leitud.", +search_title:"Otsi", +replace_title:"Otsi/Asenda", +allreplaced:"K\u00F5ik otsis\u00F5na ilmingud on asendatud.", +findwhat:"Otsi mida", +replacewith:"Asenda millega", +direction:"Suund", +up:"\u00DCles", +down:"Alla", +mcase:"Vasta suurusele", +findnext:"Otsi j\u00E4rgmine", +replace:"Asenda", +replaceall:"Asenda k\u00F5ik" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js new file mode 100755 index 000000000..769f5f8de --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('eu.searchreplace_dlg',{ +searchnext_desc:"Berriz bilatu", +notfound:"Bilaketa bukatu da. Bilatutakoa ez da aurkitu.", +search_title:"Bilatu", +replace_title:"Bilatu/Ordezkatu", +allreplaced:"Bilatutakoaren agerpen guztiak ordezkatu dira.", +findwhat:"Zer bilatu", +replacewith:"Zerekin ordezkatu", +direction:"Norabidea", +up:"Gorantz", +down:"Beherantz", +mcase:"Maiuskulak eta minuskulak kontuan hartu", +findnext:"Hurrengoa", +replace:"Ordezkatu", +replaceall:"Ordezkatu guztiak" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js new file mode 100755 index 000000000..cc0ea9abb --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('fa.searchreplace_dlg',{ +searchnext_desc:"\u062C\u0633\u062A\u062C\u0648\u06CC \u0645\u062C\u062F\u062F", +notfound:"\u062C\u0633\u062A\u062C\u0648 \u06A9\u0627\u0645\u0644 \u0634\u062F. \u06A9\u0644\u0645\u0647 \u062C\u0633\u062A\u062C\u0648 \u0634\u062F\u0647 \u06CC\u0627\u0641\u062A \u0646\u0634\u062F", +search_title:"\u062C\u0633\u062A\u062C\u0648", +replace_title:"\u062C\u0633\u062A\u062C\u0648/\u062A\u0639\u0648\u06CC\u0636", +allreplaced:"\u062A\u0645\u0627\u0645\u06CC \u06A9\u0644\u0645\u0627\u062A \u06CC\u0627\u0641\u062A \u0634\u062F\u0647 \u062A\u063A\u06CC\u06CC\u0631 \u06CC\u0627\u0641\u062A\u0646\u062F", +findwhat:"\u062C\u0633\u062A\u062C\u0648\u06CC \u0686\u0647 \u0686\u06CC\u0632\u06CC", +replacewith:"\u062A\u0639\u0648\u06CC\u0636 \u0628\u0627", +direction:"\u062C\u0647\u062A", +up:"\u0628\u0627\u0644\u0627", +down:"\u067E\u0627\u06CC\u06CC\u0646", +mcase:"\u0647\u0645\u0633\u0627\u0646 \u0628\u0648\u062F\u0646 \u062D\u0631\u0648\u0641", +findnext:"\u062C\u0633\u062A\u062C\u0648\u06CC \u0628\u0639\u062F\u06CC", +replace:"\u062A\u0639\u0648\u06CC\u0636", +replaceall:"\u062A\u0639\u0648\u06CC\u0636 \u0647\u0645\u0647" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js new file mode 100755 index 000000000..370125048 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('fi.searchreplace_dlg',{ +searchnext_desc:"Etsi uudestaan", +notfound:"Haku on valmis. Haettua teksti\u00E4 ei l\u00F6ytynyt.", +search_title:"Haku", +replace_title:"Etsi ja korvaa", +allreplaced:"Kaikki l\u00F6ydetyt merkkijonot korvattiin.", +findwhat:"Etsit\u00E4\u00E4n", +replacewith:"Korvataan", +direction:"Suunta", +up:"Yl\u00F6s", +down:"Alas", +mcase:"Huomioi isot ja pienet kirjaimet", +findnext:"Etsi seuraavaa", +replace:"Korvaa", +replaceall:"Korvaa kaikki" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js new file mode 100755 index 000000000..a151c6c39 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('fr.searchreplace_dlg',{ +searchnext_desc:"Suivant", +notfound:"La recherche est termin\u00E9e. La cha\u00EEne recherch\u00E9e n'a pas \u00E9t\u00E9 trouv\u00E9e.", +search_title:"Rechercher", +replace_title:"Rechercher / remplacer", +allreplaced:"Toutes les occurrences de la cha\u00EEne recherch\u00E9e ont \u00E9t\u00E9 remplac\u00E9es.", +findwhat:"Rechercher ceci", +replacewith:"Remplacer par", +direction:"Direction", +up:"Vers le haut", +down:"Vers le bas", +mcase:"Sensible \u00E0 la casse", +findnext:"Rechercher le suivant", +replace:"Remplacer", +replaceall:"Tout remplacer" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js new file mode 100755 index 000000000..fefcd0802 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('gl.searchreplace_dlg',{ +searchnext_desc:"Buscar outra vez", +notfound:"A busca rematou. No se atopou o texto buscado.", +search_title:"Buscar", +replace_title:"Buscar/Reemplazar", +allreplaced:"T\u00F3da-las coincidencias do texto buscado foron reemplazadas.", +findwhat:"Localizar", +replacewith:"Reemplazar por", +direction:"Direcci\u00F3n", +up:"Arriba", +down:"Abaixo", +mcase:"Min\u00FAs./Mai\u00FAs.", +findnext:"Buscar seginte", +replace:"Reemplazar", +replaceall:"Reemplazar todo" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/gu_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/gu_dlg.js new file mode 100755 index 000000000..cdbeed131 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/gu_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('gu.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js new file mode 100755 index 000000000..475ee8483 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('he.searchreplace_dlg',{ +searchnext_desc:"\u05D7\u05D9\u05E4\u05D5\u05E9 \u05D4\u05D1\u05D0", +notfound:"\u05D4\u05D7\u05D9\u05E4\u05D5\u05E9 \u05D4\u05E1\u05EA\u05D9\u05D9\u05DD. \u05E4\u05E8\u05D9\u05D8 \u05D4\u05D7\u05D9\u05E4\u05D5\u05E9 \u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0.", +search_title:"\u05D7\u05D9\u05E4\u05D5\u05E9", +replace_title:"\u05D7\u05D9\u05E4\u05D5\u05E9 \u05D5\u05D4\u05D7\u05DC\u05E4\u05D4", +allreplaced:"\u05DB\u05DC \u05E4\u05E8\u05D9\u05D8\u05D9 \u05D4\u05D7\u05D9\u05E4\u05D5\u05E9 \u05D4\u05D5\u05D7\u05DC\u05E4\u05D5", +findwhat:"\u05DC\u05D7\u05E4\u05E9 \u05D0\u05EA", +replacewith:"\u05DC\u05D4\u05D7\u05DC\u05D9\u05E3 \u05D1", +direction:"\u05DB\u05D9\u05D5\u05D5\u05DF", +up:"\u05DC\u05DE\u05E2\u05DC\u05D4", +down:"\u05DC\u05DE\u05D8\u05D4", +mcase:"\u05D4\u05EA\u05D0\u05DD \u05D0\u05D5\u05EA\u05D9\u05D5\u05EA \u05E8\u05D9\u05E9\u05D9\u05D5\u05EA", +findnext:"\u05D7\u05E4\u05E9 \u05D0\u05EA \u05D4\u05D1\u05D0", +replace:"\u05D4\u05D7\u05DC\u05E4\u05D4", +replaceall:"\u05D4\u05D7\u05DC\u05E4\u05EA \u05D4\u05DB\u05DC" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js new file mode 100755 index 000000000..c5687c2b2 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('hi.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js new file mode 100755 index 000000000..ad95bfc67 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('hr.searchreplace_dlg',{ +searchnext_desc:"Prona\u0111i opet", +notfound:"Pretra\u017Eivanje je zavr\u0161eno. Tra\u017Eeni tekst nije prona\u0111en.", +search_title:"Prona\u0111i", +replace_title:"Prona\u0111i/Zamijeni", +allreplaced:"Sva pojavljivanja tra\u017Eenog teksta su zamijenjena.", +findwhat:"Prona\u0111i tekst", +replacewith:"Zamijeni sa", +direction:"Smjer", +up:"Gore", +down:"Dolje", +mcase:"Match case", +findnext:"Prona\u0111i sljede\u0107e", +replace:"Zamijeni", +replaceall:"Zamijeni sve" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js new file mode 100755 index 000000000..7c6dee711 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('hu.searchreplace_dlg',{ +searchnext_desc:"Keres\u00E9s megint", +notfound:"A keres\u00E9s v\u00E9get \u00E9rt. A keresett sz\u00F6vegr\u00E9sz nem tal\u00E1lhat\u00F3.", +search_title:"Keres\u00E9s", +replace_title:"Keres\u00E9s/Csere", +allreplaced:"A keresett r\u00E9szsz\u00F6veg minden el\u0151fordul\u00E1sa cser\u00E9lve lett.", +findwhat:"Mit cser\u00E9l", +replacewith:"Mire cser\u00E9l", +direction:"Ir\u00E1ny", +up:"Fel", +down:"Le", +mcase:"Kis- \u00E9s nagybet\u0171k megk\u00FCl\u00F6nb\u00F6ztet\u00E9se", +findnext:"Keres\u00E9s", +replace:"Csere", +replaceall:"Minden tal\u00E1lat cser\u00E9je" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js new file mode 100755 index 000000000..6dd8034f3 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('hy.searchreplace_dlg',{ +searchnext_desc:"\u0546\u0578\u0580\u056B\u0581 \u0578\u0580\u0578\u0576\u0565\u056C", +notfound:"\u0548\u0580\u0578\u0576\u0578\u0582\u0574\u0568 \u0561\u057E\u0561\u0580\u057F\u057E\u0565\u0581\u0589 \u0548\u0579\u056B\u0576\u0579 \u0579\u056B \u0563\u057F\u0576\u057E\u0565\u056C", +search_title:"\u0548\u0580\u0578\u0576\u0565\u056C", +replace_title:"\u0548\u0580\u0578\u0576\u0565\u056C / \u0553\u0578\u0583\u0578\u056D\u0565\u056C", +allreplaced:"\u0532\u0578\u056C\u0578\u0580 \u0563\u057F\u0576\u057E\u0561\u056E\u0576\u0565\u0580\u0568 \u0583\u0578\u0583\u0578\u056D\u057E\u0565\u0581\u056B\u0576", +findwhat:"\u0548\u0580\u0578\u0576\u0565\u056C", +replacewith:"\u0553\u0578\u0583\u0578\u056D\u0565\u056C", +direction:"\u0548\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576", +up:"\u054E\u0565\u0580\u0587 ", +down:"\u0546\u0565\u0580\u0584\u0587", +mcase:"\u0540\u0561\u0577\u057E\u056B \u0561\u057C\u0576\u0565\u056C \u057C\u0565\u0563\u056B\u057D\u057F\u0578\u0580\u0568", +findnext:"\u0533\u057F\u0576\u0565\u056C \u0570\u0561\u057B\u0578\u0580\u0564\u0568", +replace:"\u0553\u0578\u0583\u0578\u056D\u0565\u056C", +replaceall:"\u0553\u0578\u0583\u0578\u056D\u0565\u056C \u0562\u0561\u056C\u0578\u0580\u0568" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ia_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ia_dlg.js new file mode 100755 index 000000000..4a9bad642 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ia_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ia.searchreplace_dlg',{ +searchnext_desc:"\u518D\u6B21\u67E5\u627E", +notfound:"\u67E5\u627E\u5DF2\u5B8C\u6210 ! \u627E\u4E0D\u5230\u4EFB\u4F55\u76EE\u6807\u3002 ", +search_title:"\u67E5\u627E", +replace_title:"\u67E5\u627E/\u66FF\u6362", +allreplaced:"\u5DF2\u66FF\u6362\u6240\u6709\u5339\u914D\u7684\u5B57\u7B26\u4E32.", +findwhat:"\u67E5\u627E\u76EE\u6807", +replacewith:"\u66FF\u6362\u4E3A", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u533A\u5206\u5927\u5C0F\u5199", +findnext:"\u67E5\u627E\u4E0B\u4E00\u4E2A", +replace:"\u66FF\u6362", +replaceall:"\u5168\u90E8\u66FF\u6362" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js new file mode 100755 index 000000000..cd4de4296 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('id.searchreplace_dlg',{ +searchnext_desc:"Cari Lagi", +notfound:"Pencarian selesai. Hasil tidak ditemukan.", +search_title:"Cari", +replace_title:"Cari/Ganti", +allreplaced:"Seluruh kata dari string pencarian telah digantikan", +findwhat:"Cari apa...", +replacewith:"Ganti dengan...", +direction:"Arah", +up:"Atas", +down:"Bawah", +mcase:"Match case", +findnext:"Cari selanjutnya", +replace:"Ganti", +replaceall:"Ganti semua" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ii_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ii_dlg.js new file mode 100755 index 000000000..ccc66243d --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ii_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ii.searchreplace_dlg',{ +searchnext_desc:"\u518D\u6B21\u67E5\u627E", +notfound:"\u67E5\u627E\u5DF2\u5B8C\u6210!\u627E\u4E0D\u5230\u4EFB\u4F55\u76EE\u6807\u3002", +search_title:"\u67E5\u627E", +replace_title:"\u67E5\u627E/\u66FF\u6362", +allreplaced:"\u5DF2\u66FF\u6362\u6240\u6709\u5339\u914D\u7684\u7B26\u4E32.", +findwhat:"\u67E5\u627E\u76EE\u6807", +replacewith:"\u66FF\u6362\u4E3A", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5927\u5C0F\u5199\u5339\u914D", +findnext:"\u4E0B\u4E00\u4E2A", +replace:"\u66FF\u6362", +replaceall:"\u66FF\u6362\u5168\u90E8" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js new file mode 100755 index 000000000..70a527d89 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('is.searchreplace_dlg',{ +searchnext_desc:"Finna aftur", +notfound:"Leitinni er loki\u00F0. Leitarstrengurinn fannst ekki.", +search_title:"Finna", +replace_title:"Finna/Skipta \u00FAt", +allreplaced:"\u00D6llum ni\u00F0urst\u00F6\u00F0um leitar var skipt \u00FAt.", +findwhat:"Finna hva\u00F0", +replacewith:"Skipta \u00FAt me\u00F0", +direction:"\u00C1tt", +up:"Upp", +down:"Ni\u00F0ur", +mcase:"Match case", +findnext:"Finna n\u00E6sta", +replace:"Skipta \u00FAt", +replaceall:"Skipta \u00FAt \u00F6llu" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js new file mode 100755 index 000000000..cbaf13ab2 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('it.searchreplace_dlg',{ +searchnext_desc:"Trova successivo", +notfound:"Ricerca completata. Nessun risultato trovato.", +search_title:"Trova", +replace_title:"Trova/Sostituisci", +allreplaced:"Tutte le occorrenze del criterio di ricerca sono state sostituite.", +findwhat:"Trova:", +replacewith:"Sostituisci con:", +direction:"Direzione", +up:"Avanti", +down:"Indietro", +mcase:"Maiuscole/minuscole", +findnext:"Trova succ.", +replace:"Sostituisci", +replaceall:"Sost. tutto" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js new file mode 100755 index 000000000..926a6766b --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ja.searchreplace_dlg',{ +searchnext_desc:"\u518D\u691C\u7D22", +notfound:"\u6700\u5F8C\u307E\u3067\u691C\u7D22\u3057\u307E\u3057\u305F\u304C\u3001\u691C\u7D22\u6587\u5B57\u5217\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002", +search_title:"\u691C\u7D22", +replace_title:"\u691C\u7D22/\u7F6E\u63DB", +allreplaced:"\u5168\u3066\u7F6E\u63DB\u3055\u308C\u307E\u3057\u305F\u3002", +findwhat:"\u691C\u7D22\u6587\u5B57\u5217", +replacewith:"\u7F6E\u63DB\u6587\u5B57\u5217", +direction:"\u65B9\u5411", +up:"\u4E0A\u3078", +down:"\u4E0B\u3078", +mcase:"\u5927\u6587\u5B57/\u5C0F\u6587\u5B57\u3092\u533A\u5225\u3059\u308B", +findnext:"\u6B21\u3078", +replace:"\u7F6E\u63DB", +replaceall:"\u5168\u3066\u7F6E\u63DB" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js new file mode 100755 index 000000000..d4b7db3a6 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ka.searchreplace_dlg',{ +searchnext_desc:"\u10D3\u10D0\u10DB\u10D0\u10E2\u10D4\u10D1\u10D8\u10D7 \u10DE\u10DD\u10D5\u10DC\u10D0", +notfound:"\u10EB\u10D4\u10D1\u10DC\u10D0 \u10D3\u10D0\u10E1\u10E0\u10E3\u10DA\u10D4\u10D1\u10E3\u10DA\u10D8\u10D0. \u10E8\u10D4\u10E1\u10D0\u10E2\u10E7\u10D5\u10D8\u10E1\u10D1\u10D8 \u10D0\u10E0 \u10D0\u10E0\u10D8\u10E1 \u10DC\u10D0\u10DE\u10DD\u10D5\u10DC\u10D8.", +search_title:"\u10EB\u10D8\u10D4\u10D1\u10D0", +replace_title:"\u10DB\u10DD\u10EB\u10D4\u10D1\u10DC\u10D0 \u10D3\u10D0 \u10E8\u10D4\u10EA\u10D5\u10DA\u10D0", +allreplaced:"\u10E7\u10D5\u10D4\u10DA\u10D0 \u10DB\u10DC\u10D8\u10E8\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 \u10E8\u10D4\u10EA\u10D5\u10DA\u10D8\u10DA\u10D8\u10D0.", +findwhat:"\u10EB\u10D4\u10D5\u10DC\u10D0", +replacewith:"\u10E8\u10D4\u10EA\u10D5\u10DA\u10D0 ..", +direction:"\u10DB\u10D8\u10DB\u10D0\u10E0\u10D7\u10E3\u10DA\u10D4\u10D1\u10D0", +up:"\u10D6\u10D4\u10DB\u10DD\u10D7 ", +down:"\u10E5\u10D5\u10D4\u10DB\u10DD\u10D7", +mcase:"\u10E0\u10D4\u10D2\u10D8\u10E1\u10E2\u10E0\u10D8\u10E1 \u10D2\u10D0\u10D7\u10D5\u10D0\u10DA\u10D8\u10E1\u10EC\u10D8\u10DC\u10D4\u10D1\u10D0", +findnext:"\u10D8\u10DE\u10DD\u10D5\u10DC\u10D4 \u10E8\u10D4\u10DB\u10D3\u10D4\u10D2", +replace:"\u10E8\u10D4\u10EA\u10D5\u10DA\u10D0", +replaceall:"\u10E7\u10D5\u10D4\u10DA\u10D0\u10E4\u10D4\u10E0\u10D8\u10E1 \u10E8\u10D4\u10EA\u10D5\u10DA\u10D0" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/kl_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/kl_dlg.js new file mode 100755 index 000000000..50268b318 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/kl_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('kl.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js new file mode 100755 index 000000000..d559f6bd3 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ko.searchreplace_dlg',{ +searchnext_desc:"\uC7AC\uAC80\uC0C9", +notfound:"\uAC80\uC0C9\uC774 \uC644\uB8CC\uD588\uC2B5\uB2C8\uB2E4. \uAC80\uC0C9 \uBB38\uC790\uC5F4\uC740 \uBC1C\uACAC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.", +search_title:"\uAC80\uC0C9", +replace_title:"\uAC80\uC0C9/\uCE58\uD658", +allreplaced:"\uBAA8\uB450 \uCE58\uD658\uB418\uC5C8\uC2B5\uB2C8\uB2E4.", +findwhat:"\uAC80\uC0C9 \uBB38\uC790\uC5F4", +replacewith:"\uCE58\uD658 \uBB38\uC790\uC5F4", +direction:"\uBC29\uD5A5", +up:"\uC704\uC5D0", +down:"\uC544\uB798\uC5D0", +mcase:"\uB300\uBB38\uC790/\uC18C\uBB38\uC790\uB97C \uAD6C\uBCC4", +findnext:"\uAC80\uC0C9", +replace:"\uCE58\uD658", +replaceall:"\uBAA8\uB450 \uCE58\uD658" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/lb_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/lb_dlg.js new file mode 100755 index 000000000..0267ceae4 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/lb_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('lb.searchreplace_dlg',{ +searchnext_desc:"Weidersichen", +notfound:"D'Sich ass um Enn ukomm. D'Zeechekette konnt net fonnt ginn.", +search_title:"Sichen", +replace_title:"Sichen/Ersetzen", +allreplaced:"All d'Virkomme vun der Zeechekette goufen ersat.", +findwhat:"Ze sichenden Text", +replacewith:"Ersetzen duerch", +direction:"Sichrichtung", +up:"No uewen", +down:"No \u00EBnnen", +mcase:"Grouss-/Klengschreiwung beuechten", +findnext:"Weidersichen", +replace:"Ersetzen", +replaceall:"All ersetzen" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js new file mode 100755 index 000000000..88a807e57 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('lt.searchreplace_dlg',{ +searchnext_desc:"Ie\u0161koti dar kart\u0105", +notfound:"Paie\u0161ka baigta. Paie\u0161kos fraz\u0117 nerasta.", +search_title:"Ie\u0161koti", +replace_title:"Ie\u0161koti/Pakeisti", +allreplaced:"Visi paie\u0161kos fraz\u0117s pasikartojimai pakeisti.", +findwhat:"Ko ie\u0161koti", +replacewith:"Kuo pakeisti", +direction:"Kryptis", +up:"\u012E vir\u0161\u0173", +down:"\u012E apa\u010Di\u0105", +mcase:"Visi\u0161kas atitikimas", +findnext:"Ie\u0161koti sek.", +replace:"Pakeisti", +replaceall:"Pakeisti visus" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js new file mode 100755 index 000000000..e947d21a0 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('lv.searchreplace_dlg',{ +searchnext_desc:"Mekl\u0113t v\u0113lreiz", +notfound:"Mekl\u0113\u0161ana pabeigta. Mekl\u0113t\u0101 fr\u0101ze/v\u0101rds netika atrasta.", +search_title:"Mekl\u0113t", +replace_title:"Mekl\u0113t/Aizvietot", +allreplaced:"Visas fr\u0101zes/v\u0101rdi tika veiksm\u012Bgi aizvietoti.", +findwhat:"Ko atrast", +replacewith:"Aizvietot ar", +direction:"Virziens", +up:"Uz aug\u0161u", +down:"Uz leju", +mcase:"Re\u0123istrj\u016Bt\u012Bgs", +findnext:"Mekl\u0113t n\u0101kamo", +replace:"Aizvietot", +replaceall:"Aizvietot visu" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js new file mode 100755 index 000000000..d7d531fda --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('mk.searchreplace_dlg',{ +searchnext_desc:"Prona\u0111i opet", +notfound:"Pretra\u017Eivanje je zavr\u0161eno. Tra\u017Eeni tekst nije prona\u0111en.", +search_title:"Prona\u0111i", +replace_title:"Prona\u0111i/Zameni", +allreplaced:"Sva pojavljivanja tra\u017Eenog teksta su zamenjena.", +findwhat:"Prona\u0111i tekst", +replacewith:"Zameni sa", +direction:"Smjer", +up:"Gore", +down:"Dolje", +mcase:"Match case", +findnext:"Prona\u0111i sljede\u0107e", +replace:"Zameni", +replaceall:"Zameni sve" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ml_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ml_dlg.js new file mode 100755 index 000000000..6960ae981 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ml_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ml.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/mn_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/mn_dlg.js new file mode 100755 index 000000000..07b8fc39d --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/mn_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('mn.searchreplace_dlg',{ +searchnext_desc:"\u0426\u0430\u0430\u0448 \u0445\u0430\u0439\u0445", +notfound:"\u0425\u0430\u0439\u043B\u0442 \u0442\u04E9\u0433\u0441\u0433\u04E9\u043B\u0434 \u0445\u04AF\u0440\u044D\u0432. \u0422\u044D\u043C\u0434\u044D\u0433\u0442 \u043C\u04E9\u0440 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.", +search_title:"\u0425\u0430\u0439\u0445", +replace_title:"\u0425\u0430\u0439\u0445/\u043E\u0440\u043B\u0443\u0443\u043B\u0430\u0445", +allreplaced:"\u0422\u044D\u043C\u0434\u044D\u0433\u0442 \u043C\u04E9\u0440\u0438\u0439\u043D \u0431\u04AF\u0445 \u0442\u043E\u0445\u0438\u043E\u043B\u0434\u043B\u0443\u0443\u0434 \u043E\u0440\u043B\u0443\u0443\u043B\u0430\u0433\u0434\u0441\u0430\u043D.", +findwhat:"\u0425\u0430\u0439\u0445 \u0431\u0438\u0447\u0432\u044D\u0440", +replacewith:"\u041E\u0440\u043B\u0443\u0443\u043B\u0430\u0433\u0430", +direction:"\u0425\u0430\u0439\u0445 \u0447\u0438\u0433\u043B\u044D\u043B", +up:"\u0413\u044D\u0434\u0440\u044D\u0433", +down:"\u0426\u0430\u0430\u0448", +mcase:"\u0422\u043E\u043C/\u0416\u0438\u0436\u0438\u0433 \u0431\u0438\u0447\u0438\u043B\u0442 \u044F\u043B\u0433\u0430\u0445", +findnext:"\u0426\u0430\u0430\u0448 \u0445\u0430\u0439\u0445", +replace:"\u041E\u0440\u043B\u0443\u0443\u043B", +replaceall:"\u0411\u04AF\u0433\u0434\u0438\u0439\u0433 \u043E\u0440\u043B\u0443\u0443\u043B" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js new file mode 100755 index 000000000..bd52c34ed --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ms.searchreplace_dlg',{ +searchnext_desc:"Cari lagi", +notfound:"Carian tamat. Perkataan yang dicari tiada.", +search_title:"Cari", +replace_title:"Cari/Ganti", +allreplaced:"Kesemua perkataan telah digantikan.", +findwhat:"Cari apa", +replacewith:"Ganti dengan", +direction:"Arah", +up:"Atas", +down:"Bawah", +mcase:"Samakan kes", +findnext:"Carian seterusnya", +replace:"Ganti", +replaceall:"Ganti kesemuanya" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js new file mode 100755 index 000000000..670df521d --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('nb.searchreplace_dlg',{ +searchnext_desc:"S\u00F8k igjen", +notfound:"S\u00F8ket er avsluttet. Fant ikke s\u00F8kestrengen.", +search_title:"S\u00F8k", +replace_title:"S\u00F8k/Erstatt", +allreplaced:"Alle forekomster av s\u00F8kestrengen er erstattet.", +findwhat:"Finn hva", +replacewith:"Erstatt med", +direction:"Retning", +up:"Oppover", +down:"Nedover", +mcase:"Skill mellom store og sm\u00E5 tegn", +findnext:"Finn neste", +replace:"Erstatt", +replaceall:"Erstatt alt" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js new file mode 100755 index 000000000..6ad59dbfe --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('nl.searchreplace_dlg',{ +searchnext_desc:"Opnieuw zoeken", +notfound:"Het doorzoeken is voltooid. De zoekterm kon niet meer worden gevonden.", +search_title:"Zoeken", +replace_title:"Zoeken/Vervangen", +allreplaced:"Alle instanties van de zoekterm zijn vervangen.", +findwhat:"Zoeken naar", +replacewith:"Vervangen door", +direction:"Richting", +up:"Omhoog", +down:"Omlaag", +mcase:"Identieke hoofdletters/kleine letters", +findnext:"Zoeken", +replace:"Vervangen", +replaceall:"Alles verv." +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js new file mode 100755 index 000000000..3bb232d3f --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('nn.searchreplace_dlg',{ +searchnext_desc:"S\u00F8k igjen", +notfound:"S\u00F8ket avslutta. Fann ikkje s\u00F8kjestrengen.", +search_title:"S\u00F8k", +replace_title:"S\u00F8k/Erstatt", +allreplaced:"Alle f\u00F8rekomstar av s\u00F8kjestrengen er erstatta.", +findwhat:"Finn kva", +replacewith:"Erstatt med", +direction:"Retning", +up:"Oppover", +down:"Nedover", +mcase:"Skill mellom store og sm\u00E5 teikn", +findnext:"Finn neste", +replace:"Erstatt", +replaceall:"Erstatt alt" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/no_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/no_dlg.js new file mode 100755 index 000000000..c958a3370 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/no_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('no.searchreplace_dlg',{ +searchnext_desc:"S\u00F8k igjen", +notfound:"S\u00F8ket avsluttet. Fant ikke s\u00F8kestrengen.", +search_title:"S\u00F8k", +replace_title:"S\u00F8k/Erstatt", +allreplaced:"Alle forekomster av s\u00F8kestrengen er erstattet.", +findwhat:"Finn hva", +replacewith:"Erstatt med", +direction:"Retning", +up:"Oppover", +down:"Nedover", +mcase:"Skille mellom store og sm\u00E5 bokstaver", +findnext:"Finn neste", +replace:"Erstatt", +replaceall:"Erstatt alle" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js new file mode 100755 index 000000000..f220fc221 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('pl.searchreplace_dlg',{ +searchnext_desc:"Znajd\u017A ponownie", +notfound:"Wyszukiwanie zako\u0144czone. Poszukiwany fragment nie zosta\u0142 znaleziony.", +search_title:"Znajd\u017A", +replace_title:"Znajd\u017A/Zamie\u0144", +allreplaced:"Wszystkie wyst\u0105pienia szukanego fragmentu zosta\u0142y zast\u0105pione.", +findwhat:"Znajd\u017A...", +replacewith:"Zamie\u0144 z...", +direction:"Kierunek", +up:"W g\u00F3r\u0119", +down:"W d\u00F3\u0142", +mcase:"Dopasuj wielko\u015B\u0107 liter", +findnext:"Znajd\u017A nast\u0119pny", +replace:"Zamie\u0144", +replaceall:"Zamien wszystko" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js new file mode 100755 index 000000000..1895f4cef --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ps.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js new file mode 100755 index 000000000..df9c0297a --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('pt.searchreplace_dlg',{ +searchnext_desc:"Localizar novamente", +notfound:"A pesquisa foi conclu\u00EDda sem resultados.", +search_title:"Localizar", +replace_title:"Localizar/substituir", +allreplaced:"Todas as substitui\u00E7\u00F5es foram efetuadas.", +findwhat:"Localizar", +replacewith:"Substituir com", +direction:"Dire\u00E7\u00E3o", +up:"Acima", +down:"Abaixo", +mcase:"Diferenciar mai\u00FAsculas", +findnext:"Localizar pr\u00F3ximo", +replace:"Substituir", +replaceall:"Substituir todos" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js new file mode 100755 index 000000000..b159afa2c --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ro.searchreplace_dlg',{ +searchnext_desc:"Caut\u0103 din nou", +notfound:"C\u0103utarea a fost terminat\u0103. Nu am g\u0103sit termenul c\u0103utat.", +search_title:"Caut\u0103", +replace_title:"Caut\u0103/\u00EEnlocuie\u015Fte", +allreplaced:"Toate instan\u0163ele termenului c\u0103utat au fost \u00EEnlocuite.", +findwhat:"Termen c\u0103utat:", +replacewith:"\u00CEnlocuie\u015Fte cu:", +direction:"Direc\u0163ia", +up:"\u00CEn sus", +down:"\u00CEn jos", +mcase:"Conteaz\u0103 litere mici/mari?", +findnext:"Caut\u0103 urm\u0103torul", +replace:"\u00CEnlocuie\u015Fte", +replaceall:"\u00CEnlocuie\u015Fte toate" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js new file mode 100755 index 000000000..b2ec4402c --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ru.searchreplace_dlg',{ +searchnext_desc:"\u041D\u0430\u0439\u0442\u0438 \u0435\u0449\u0435", +notfound:"\u041F\u043E\u0438\u0441\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D. \u0421\u043E\u043E\u0442\u0432\u0435\u0441\u0442\u0432\u0438\u0439 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E.", +search_title:"\u041F\u043E\u0438\u0441\u043A", +replace_title:"\u041F\u043E\u0438\u0441\u043A \u0438 \u0437\u0430\u043C\u0435\u043D\u0430", +allreplaced:"\u0412\u0441\u0435 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044F \u043F\u043E\u0438\u0441\u043A\u0430 \u0431\u044B\u043B\u0438 \u0437\u0430\u043C\u0435\u043D\u0435\u043D\u044B.", +findwhat:"\u041F\u043E\u0438\u0441\u043A", +replacewith:"\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430", +direction:"\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435", +up:"\u0412\u0432\u0435\u0440\u0445 ", +down:"\u0412\u043D\u0438\u0437", +mcase:"\u0423\u0447\u0438\u0442\u044B\u0432\u0430\u0442\u044C \u0440\u0435\u0433\u0438\u0441\u0442\u0440", +findnext:"\u041D\u0430\u0439\u0442\u0438 \u0434\u0430\u043B\u0435\u0435", +replace:"\u0417\u0430\u043C\u0435\u043D\u0430", +replaceall:"\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C \u0432\u0441\u0435" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/sc_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/sc_dlg.js new file mode 100755 index 000000000..2c1a86975 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/sc_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('sc.searchreplace_dlg',{ +searchnext_desc:"\u518D\u6B21\u67E5\u627E", +notfound:"\u67E5\u627E\u5DF2\u5B8C\u6210!\u627E\u4E0D\u5230\u4EFB\u4F55\u76EE\u6807\u3002 ", +search_title:"\u67E5\u627E", +replace_title:"\u67E5\u627E/\u66FF\u6362", +allreplaced:"\u5DF2\u66FF\u6362\u6240\u6709\u5339\u914D\u7684\u7B26\u4E32.", +findwhat:"\u67E5\u627E\u76EE\u6807", +replacewith:"\u66FF\u6362\u4E3A", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5927\u5C0F\u5199\u5339\u914D", +findnext:"\u4E0B\u4E00\u4E2A", +replace:"\u66FF\u6362", +replaceall:"\u66FF\u6362\u5168\u90E8" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/se_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/se_dlg.js new file mode 100755 index 000000000..71c695b10 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/se_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('se.searchreplace_dlg',{ +searchnext_desc:"S\u00F6k igen", +notfound:"S\u00F6kningen har slutf\u00F6rts. S\u00F6kstr\u00E4ngen kunde inte hittas.", +search_title:"S\u00F6k", +replace_title:"S\u00F6k/ers\u00E4tt", +allreplaced:"Alla st\u00E4llen d\u00E4r s\u00F6kstr\u00E4ngen kunde hittas har ersatts.", +findwhat:"Hitta vad", +replacewith:"Ers\u00E4tt med", +direction:"Riktning", +up:"Upp\u00E5t", +down:"Ner\u00E5t", +mcase:"Matcha gemener/versaler", +findnext:"Hitta n\u00E4sta", +replace:"Ers\u00E4tt", +replaceall:"Ers\u00E4tt alla" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js new file mode 100755 index 000000000..ecdf51afd --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('si.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js new file mode 100755 index 000000000..eba8a3010 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('sk.searchreplace_dlg',{ +searchnext_desc:"H\u013Eada\u0165 \u010Falej", +notfound:"H\u013Eadanie bolo dokon\u010Den\u00E9. H\u013Eadan\u00FD text nebol n\u00E1jden\u00FD.", +search_title:"H\u013Eada\u0165", +replace_title:"H\u013Eada\u0165 a nahradi\u0165", +allreplaced:"V\u0161etky v\u00FDskyty boli nahraden\u00E9.", +findwhat:"H\u013Eada\u0165 \u010Do", +replacewith:"Nahradi\u0165 \u010D\u00EDm", +direction:"Smer", +up:"Nahor", +down:"Nadol", +mcase:"Rozli\u0161ova\u0165 mal\u00E9 a VE\u013DK\u00C9 p\u00EDsmen\u00E1", +findnext:"H\u013Eada\u0165 dalej", +replace:"Nahradi\u0165", +replaceall:"Nahradi\u0165 v\u0161etko" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js new file mode 100755 index 000000000..67abcc695 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('sl.searchreplace_dlg',{ +searchnext_desc:"Najdi znova", +notfound:"Preiskovanje zaklju\u010Deno. Iskanega besedila nisem na\u0161el.", +search_title:"Najdi", +replace_title:"Najdi/zamenjaj", +allreplaced:"Vse pojavitve iskanega besedila so bile zamenjane.", +findwhat:"I\u0161\u010Dem za", +replacewith:"Zamenjam z", +direction:"Smer", +up:"navzgor", +down:"navzdol", +mcase:"ujemanje velikosti", +findnext:"Najdi nasled.", +replace:"Zamenjaj", +replaceall:"Zamenjaj vse" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js new file mode 100755 index 000000000..7287d211e --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('sq.searchreplace_dlg',{ +searchnext_desc:"K\u00EBrko p\u00EBrs\u00EBri", +notfound:"K\u00EBrkimi p\u00EBrfundoi dhe nuk ktheu asnj\u00EB rezultat.", +search_title:"K\u00EBrko", +replace_title:"K\u00EBrko/Z\u00EBvend\u00EBso", +allreplaced:"T\u00EB gjitha tekstet e gjetura u z\u00EBvend\u00EBsuan.", +findwhat:"K\u00EBrko p\u00EBr", +replacewith:"Z\u00EBvend\u00EBso me", +direction:"Drejtimi", +up:"Lart", +down:"Posht\u00EB", +mcase:"P\u00EBrshtat madh\u00EBsin\u00EB e g\u00EBrm\u00EBs", +findnext:"K\u00EBrko tjetr\u00EBn", +replace:"Z\u00EBvend\u00EBso", +replaceall:"Z\u00EBv. t\u00EB gjitha" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js new file mode 100755 index 000000000..e36325195 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('sr.searchreplace_dlg',{ +searchnext_desc:"Prona\u0111i opet", +notfound:"Pretra\u017Eivanje je zavr\u0161eno. Tra\u017Eeni tekst nije prona\u0111en.", +search_title:"Prona\u0111i", +replace_title:"Prona\u0111i/Zameni", +allreplaced:"Sva pojavljivanja tra\u017Eenog teksta su zamenjena.", +findwhat:"Prona\u0111i tekst", +replacewith:"Zameni sa", +direction:"Smjer", +up:"Gore", +down:"Dolje", +mcase:"Match case", +findnext:"Prona\u0111i sljede\u0107e", +replace:"Zameni", +replaceall:"Zameni sve" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js new file mode 100755 index 000000000..a3f6f196a --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('sv.searchreplace_dlg',{ +searchnext_desc:"S\u00F6k igen", +notfound:"S\u00F6kningen har slutf\u00F6rts. S\u00F6kstr\u00E4ngen kunde inte hittas.", +search_title:"S\u00F6k", +replace_title:"S\u00F6k/ers\u00E4tt", +allreplaced:"Alla st\u00E4llen d\u00E4r s\u00F6kstr\u00E4ngen kunde hittas har ersatts.", +findwhat:"Hitta vad", +replacewith:"Ers\u00E4tt med", +direction:"Riktning", +up:"Upp\u00E5t", +down:"Ner\u00E5t", +mcase:"Matcha gemener/versaler", +findnext:"Hitta n\u00E4sta", +replace:"Ers\u00E4tt", +replaceall:"Ers\u00E4tt alla" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js new file mode 100755 index 000000000..6dbae4537 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ta.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/te_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/te_dlg.js new file mode 100755 index 000000000..5f7e35f3a --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/te_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('te.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js new file mode 100755 index 000000000..53b4eb802 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('th.searchreplace_dlg',{ +searchnext_desc:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07", +notfound:"\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14 \u0E40\u0E23\u0E32\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E2D\u0E30\u0E44\u0E23\u0E40\u0E25\u0E22", +search_title:"\u0E04\u0E49\u0E19\u0E2B\u0E32", +replace_title:"\u0E04\u0E49\u0E19\u0E2B\u0E32/\u0E41\u0E17\u0E19\u0E17\u0E35\u0E48", +allreplaced:"\u0E17\u0E38\u0E01\u0E04\u0E33\u0E17\u0E35\u0E48\u0E43\u0E2A\u0E48\u0E16\u0E39\u0E01\u0E41\u0E17\u0E19\u0E17\u0E35\u0E48\u0E41\u0E25\u0E49\u0E27", +findwhat:"\u0E04\u0E49\u0E19\u0E2B\u0E32", +replacewith:"\u0E41\u0E17\u0E19\u0E17\u0E35\u0E48\u0E14\u0E49\u0E27\u0E22", +direction:"\u0E15\u0E33\u0E41\u0E2B\u0E19\u0E48\u0E07", +up:"\u0E1A\u0E19", +down:"\u0E25\u0E48\u0E32\u0E07", +mcase:"\u0E40\u0E2B\u0E21\u0E37\u0E2D\u0E19\u0E17\u0E38\u0E01\u0E2D\u0E22\u0E48\u0E32\u0E07", +findnext:"\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E15\u0E48\u0E2D\u0E44\u0E1B", +replace:"\u0E41\u0E17\u0E19\u0E17\u0E35\u0E48", +replaceall:"\u0E41\u0E17\u0E19\u0E17\u0E35\u0E48\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js new file mode 100755 index 000000000..eaedc798c --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('tr.searchreplace_dlg',{ +searchnext_desc:"Tekrar ara", +notfound:"Arama tamamland\u0131. Aranan metin bulunamad\u0131.", +search_title:"Bul", +replace_title:"Bul/De\u011Fi\u015Ftir", +allreplaced:"Aranan metin bulundu\u011Fu yerlede de\u011Fi\u015Ftirildi.", +findwhat:"Aranan", +replacewith:"Yeni de\u011Fer", +direction:"Y\u00F6n", +up:"Yukar\u0131", +down:"A\u015Fa\u011F\u0131", +mcase:"B\u00FCy\u00FCk/k\u00FC\u00E7\u00FCk duyarl\u0131", +findnext:"Sonrakini bul", +replace:"De\u011Fi\u015Ftir", +replaceall:"T\u00FCm\u00FCn\u00FC de\u011Fi\u015Ftir" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/tt_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/tt_dlg.js new file mode 100755 index 000000000..62f741c83 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/tt_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('tt.searchreplace_dlg',{ +searchnext_desc:"\u518D\u6B21\u641C\u5C0B", +notfound:"\u641C\u5C0B\u5DF2\u5B8C\u6210 ! \u627E\u4E0D\u5230\u4EFB\u4F55\u76EE\u6A19\u3002 ", +search_title:"\u641C\u5C0B", +replace_title:"\u641C\u5C0B/\u53D6\u4EE3", +allreplaced:"\u5DF2\u53D6\u4EE3\u6240\u6709\u5339\u914D\u7684\u5B57\u4E32.", +findwhat:"\u641C\u5C0B\u76EE\u6A19", +replacewith:"\u53D6\u4EE3\u7232", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5340\u5206\u5927\u5C0F\u5BEB", +findnext:"\u641C\u5C0B\u4E0B\u4E00\u500B", +replace:"\u53D6\u4EE3", +replaceall:"\u5168\u90E8\u53D6\u4EE3" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/tw_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/tw_dlg.js new file mode 100755 index 000000000..88b308b35 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/tw_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('tw.searchreplace_dlg',{ +searchnext_desc:"\u7E7C\u7E8C\u641C\u5C0B", +notfound:"\u641C\u5C0B\u5B8C\u7562\uFF0C\u6C92\u6709\u627E\u5230\u7B26\u5408\u7684\u5B57\u4E32\u3002", +search_title:"\u641C\u5C0B", +replace_title:"\u641C\u5C0B/\u66FF\u63DB", +allreplaced:"\u6240\u6709\u7B26\u5408\u7684\u5B57\u4E32\u5747\u5DF2\u66FF\u63DB\u3002", +findwhat:"\u641C\u5C0B\u76EE\u6A19", +replacewith:"\u66FF\u63DB\u70BA", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5340\u5206\u5927\u5C0F\u5BEB", +findnext:"\u641C\u5C0B\u4E0B\u4E00\u500B", +replace:"\u66FF\u63DB", +replaceall:"\u5168\u90E8\u66FF\u63DB" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js new file mode 100755 index 000000000..6ff203cb1 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('uk.searchreplace_dlg',{ +searchnext_desc:"\u0417\u043D\u0430\u0439\u0442\u0438 \u0449\u0435", +notfound:"\u041F\u043E\u0448\u0443\u043A \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E. \u041F\u043E\u0448\u0443\u043A\u043E\u0432\u0438\u0439 \u0440\u044F\u0434\u043E\u043A \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E.", +search_title:"\u0428\u0443\u043A\u0430\u0442\u0438", +replace_title:"\u0428\u0443\u043A\u0430\u0442\u0438/\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438", +allreplaced:"\u0412\u0441\u0456 \u0432\u0445\u043E\u0434\u0436\u0435\u043D\u043D\u044F \u0440\u044F\u0434\u043A\u0430 \u0431\u0443\u043B\u0438 \u0437\u0430\u043C\u0456\u043D\u0435\u043D\u0456.", +findwhat:"\u0417\u043D\u0430\u0439\u0442\u0438", +replacewith:"\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u043D\u0430", +direction:"\u041D\u0430\u043F\u0440\u044F\u043C\u043E\u043A \u043F\u043E\u0448\u0443\u043A\u0443", +up:"\u0412\u0433\u043E\u0440\u0443", +down:"\u0412\u043D\u0438\u0437", +mcase:"\u0412\u0440\u0430\u0445\u043E\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0454\u0441\u0442\u0440", +findnext:"\u0417\u043D\u0430\u0439\u0442\u0438 \u043D\u0430\u0441\u0442\u0443\u043F\u043D\u0435", +replace:"\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438", +replaceall:"\u0417\u0430\u043C\u0456\u043D\u0438\u0442\u0438 \u0432\u0441\u0435" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/ur_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/ur_dlg.js new file mode 100755 index 000000000..adfff9840 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/ur_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('ur.searchreplace_dlg',{ +searchnext_desc:"Find again", +notfound:"The search has been completed. The search string could not be found.", +search_title:"Find", +replace_title:"Find/Replace", +allreplaced:"All occurrences of the search string were replaced.", +findwhat:"Find what", +replacewith:"Replace with", +direction:"Direction", +up:"Up", +down:"Down", +mcase:"Match case", +findnext:"Find next", +replace:"Replace", +replaceall:"Replace all" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js new file mode 100755 index 000000000..2ac3ca964 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('vi.searchreplace_dlg',{ +searchnext_desc:"T\u00ECm l\u1EA1i", +notfound:"Vi\u1EC7c t\u00ECm ki\u1EBFm \u0111\u00E3 ho\u00E0n th\u00E0nh. Chu\u1ED7i t\u00ECm ki\u1EBFm kh\u00F4ng \u0111\u01B0\u1EE3c t\u00ECm th\u1EA5y.", +search_title:"T\u00ECm ki\u1EBFm", +replace_title:"T\u00ECm/Thay th\u1EBF", +allreplaced:"T\u1EA5t c\u1EA3 c\u00E1c l\u1EA7n xu\u1EA5t hi\u1EC7n c\u1EE7a c\u00E1c chu\u1ED7i t\u00ECm ki\u1EBFm \u0111\u01B0\u1EE3c thay th\u1EBF.", +findwhat:"T\u00ECm ki\u1EBFm g\u00EC", +replacewith:"Thay th\u1EBF v\u1EDBi", +direction:"H\u01B0\u1EDBng", +up:"L\u00EAn", +down:"Xu\u1ED1ng", +mcase:"Theo c\u1EA3 ch\u1EEF hoa", +findnext:"T\u00ECm k\u1EBF ti\u1EBFp", +replace:"Thay th\u1EBF", +replaceall:"Thay th\u1EBF t\u1EA5t" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/zh_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/zh_dlg.js new file mode 100755 index 000000000..9a4ddfcfe --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/zh_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('zh.searchreplace_dlg',{ +searchnext_desc:"\u7E7C\u7E8C\u641C\u5C0B", +notfound:"\u641C\u5C0B\u5B8C\u7562\uFF0C\u6C92\u6709\u627E\u5230\u7B26\u5408\u7684\u5B57\u7B26\u4E32\u3002", +search_title:"\u641C\u5C0B", +replace_title:"\u641C\u5C0B/\u53D6\u4EE3", +allreplaced:"\u6240\u6709\u7B26\u5408\u7684\u5B57\u7B26\u4E32\u5747\u5DF2\u53D6\u4EE3\u3002", +findwhat:"\u641C\u5C0B\u76EE\u6A19", +replacewith:"\u53D6\u4EE3\u70BA", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5340\u5206\u5927\u5C0F\u5BEB", +findnext:"\u5C0B\u627E\u4E0B\u4E00\u500B", +replace:"\u53D6\u4EE3", +replaceall:"\u5168\u90E8\u53D6\u4EE3" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/searchreplace/langs/zu_dlg.js b/js/tiny_mce/plugins/searchreplace/langs/zu_dlg.js new file mode 100755 index 000000000..489266023 --- /dev/null +++ b/js/tiny_mce/plugins/searchreplace/langs/zu_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('zu.searchreplace_dlg',{ +searchnext_desc:"\u518D\u6B21\u67E5\u627E", +notfound:"\u67E5\u627E\u5DF2\u5B8C\u6210!\u627E\u4E0D\u5230\u4EFB\u4F55\u76EE\u6807\u3002", +search_title:"\u67E5\u627E", +replace_title:"\u67E5\u627E/\u66FF\u6362", +allreplaced:"\u5DF2\u66FF\u6362\u6240\u6709\u5339\u914D\u7684\u7B26\u4E32.", +findwhat:"\u67E5\u627E\u76EE\u6807", +replacewith:"\u66FF\u6362\u4E3A", +direction:"\u65B9\u5411", +up:"\u5411\u4E0A", +down:"\u5411\u4E0B", +mcase:"\u5927\u5C0F\u5199\u5339\u914D", +findnext:"\u4E0B\u4E00\u4E2A", +replace:"\u66FF\u6362", +replaceall:"\u66FF\u6362\u5168\u90E8" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/css/props.css b/js/tiny_mce/plugins/style/css/props.css new file mode 100644 index 000000000..eb1f26496 --- /dev/null +++ b/js/tiny_mce/plugins/style/css/props.css @@ -0,0 +1,13 @@ +#text_font {width:250px;} +#text_size {width:70px;} +.mceAddSelectValue {background:#DDD;} +select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} +#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} +#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} +#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} +.panel_wrapper div.current {padding-top:10px;height:230px;} +.delim {border-left:1px solid gray;} +.tdelim {border-bottom:1px solid gray;} +#block_display {width:145px;} +#list_type {width:115px;} +.disabled {background:#EEE;} diff --git a/js/tiny_mce/plugins/style/editor_plugin.js b/js/tiny_mce/plugins/style/editor_plugin.js new file mode 100644 index 000000000..cab2153c4 --- /dev/null +++ b/js/tiny_mce/plugins/style/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/editor_plugin_src.js b/js/tiny_mce/plugins/style/editor_plugin_src.js new file mode 100644 index 000000000..5f7755f18 --- /dev/null +++ b/js/tiny_mce/plugins/style/editor_plugin_src.js @@ -0,0 +1,55 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.StylePlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceStyleProps', function() { + ed.windowManager.open({ + file : url + '/props.htm', + width : 480 + parseInt(ed.getLang('style.delta_width', 0)), + height : 320 + parseInt(ed.getLang('style.delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + style_text : ed.selection.getNode().style.cssText + }); + }); + + ed.addCommand('mceSetElementStyle', function(ui, v) { + if (e = ed.selection.getNode()) { + ed.dom.setAttrib(e, 'style', v); + ed.execCommand('mceRepaint'); + } + }); + + ed.onNodeChange.add(function(ed, cm, n) { + cm.setDisabled('styleprops', n.nodeName === 'BODY'); + }); + + // Register buttons + ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); + }, + + getInfo : function() { + return { + longname : 'Style', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/js/props.js b/js/tiny_mce/plugins/style/js/props.js new file mode 100644 index 000000000..c8e160424 --- /dev/null +++ b/js/tiny_mce/plugins/style/js/props.js @@ -0,0 +1,635 @@ +tinyMCEPopup.requireLangPack(); + +var defaultFonts = "" + + "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Courier New, Courier, mono=Courier New, Courier, mono;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + + "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + + "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; + +var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; +var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; +var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%"; +var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; +var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; +var defaultTextStyle = "normal;italic;oblique"; +var defaultVariant = "normal;small-caps"; +var defaultLineHeight = "normal"; +var defaultAttachment = "fixed;scroll"; +var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; +var defaultPosH = "left;center;right"; +var defaultPosV = "top;center;bottom"; +var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; +var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; +var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; +var defaultBorderWidth = "thin;medium;thick"; +var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; + +function init() { + var ce = document.getElementById('container'), h; + + ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); + + h = getBrowserHTML('background_image_browser','background_image','image','advimage'); + document.getElementById("background_image_browser").innerHTML = h; + + document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); + document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); + document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); + document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); + document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); + document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); + + fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); + fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); + fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); + fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); + fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); + fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); + fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); + fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); + fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); + + fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); + fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); + + fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); + fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); + fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); + fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); + fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); + fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); + fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); + + fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); + fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); + fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); + + fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); + + fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); + fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); + + fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); + fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); + + fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); + + fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); + + TinyMCE_EditableSelects.init(); + setupFormData(); + showDisabledControls(); +} + +function setupFormData() { + var ce = document.getElementById('container'), f = document.forms[0], s, b, i; + + // Setup text fields + + selectByValue(f, 'text_font', ce.style.fontFamily, true, true); + selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); + selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); + selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); + selectByValue(f, 'text_style', ce.style.fontStyle, true, true); + selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); + selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); + selectByValue(f, 'text_case', ce.style.textTransform, true, true); + selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); + f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color); + updateColor('text_color_pick', 'text_color'); + f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); + f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); + f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); + f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); + + // Setup background fields + + f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor); + updateColor('background_color_pick', 'background_color'); + f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); + selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); + selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); + selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); + selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); + selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); + + // Setup block fields + + selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); + selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); + selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); + selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); + selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); + selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); + f.block_text_indent.value = getNum(ce.style.textIndent); + selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); + selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); + selectByValue(f, 'block_display', ce.style.display, true, true); + + // Setup box fields + + f.box_width.value = getNum(ce.style.width); + selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); + + f.box_height.value = getNum(ce.style.height); + selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); + selectByValue(f, 'box_float', ce.style.cssFloat || ce.style.styleFloat, true, true); + + selectByValue(f, 'box_clear', ce.style.clear, true, true); + + setupBox(f, ce, 'box_padding', 'padding', ''); + setupBox(f, ce, 'box_margin', 'margin', ''); + + // Setup border fields + + setupBox(f, ce, 'border_style', 'border', 'Style'); + setupBox(f, ce, 'border_width', 'border', 'Width'); + setupBox(f, ce, 'border_color', 'border', 'Color'); + + updateColor('border_color_top_pick', 'border_color_top'); + updateColor('border_color_right_pick', 'border_color_right'); + updateColor('border_color_bottom_pick', 'border_color_bottom'); + updateColor('border_color_left_pick', 'border_color_left'); + + f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value); + f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value); + f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value); + f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value); + + // Setup list fields + + selectByValue(f, 'list_type', ce.style.listStyleType, true, true); + selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); + f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + + // Setup box fields + + selectByValue(f, 'positioning_type', ce.style.position, true, true); + selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); + selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); + f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; + + f.positioning_width.value = getNum(ce.style.width); + selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); + + f.positioning_height.value = getNum(ce.style.height); + selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); + + setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']); + + s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); + s = s.replace(/,/g, ' '); + + if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = getNum(getVal(s, 1)); + selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); + f.positioning_clip_bottom.value = getNum(getVal(s, 2)); + selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); + f.positioning_clip_left.value = getNum(getVal(s, 3)); + selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); + } else { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; + } + +// setupBox(f, ce, '', 'border', 'Color'); +} + +function getMeasurement(s) { + return s.replace(/^([0-9.]+)(.*)$/, "$2"); +} + +function getNum(s) { + if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s)) + return s.replace(/[^0-9.]/g, ''); + + return s; +} + +function inStr(s, n) { + return new RegExp(n, 'gi').test(s); +} + +function getVal(s, i) { + var a = s.split(' '); + + if (a.length > 1) + return a[i]; + + return ""; +} + +function setValue(f, n, v) { + if (f.elements[n].type == "text") + f.elements[n].value = v; + else + selectByValue(f, n, v, true, true); +} + +function setupBox(f, ce, fp, pr, sf, b) { + if (typeof(b) == "undefined") + b = ['Top', 'Right', 'Bottom', 'Left']; + + if (isSame(ce, pr, sf, b)) { + f.elements[fp + "_same"].checked = true; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + f.elements[fp + "_right"].value = ""; + f.elements[fp + "_right"].disabled = true; + f.elements[fp + "_bottom"].value = ""; + f.elements[fp + "_bottom"].disabled = true; + f.elements[fp + "_left"].value = ""; + f.elements[fp + "_left"].disabled = true; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + f.elements[fp + "_left_measurement"].disabled = true; + f.elements[fp + "_bottom_measurement"].disabled = true; + f.elements[fp + "_right_measurement"].disabled = true; + } + } else { + f.elements[fp + "_same"].checked = false; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); + f.elements[fp + "_right"].disabled = false; + + setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); + f.elements[fp + "_bottom"].disabled = false; + + setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left"].disabled = false; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); + selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); + selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left_measurement"].disabled = false; + f.elements[fp + "_bottom_measurement"].disabled = false; + f.elements[fp + "_right_measurement"].disabled = false; + } + } +} + +function isSame(e, pr, sf, b) { + var a = [], i, x; + + if (typeof(b) == "undefined") + b = ['Top', 'Right', 'Bottom', 'Left']; + + if (typeof(sf) == "undefined" || sf == null) + sf = ""; + + a[0] = e.style[pr + b[0] + sf]; + a[1] = e.style[pr + b[1] + sf]; + a[2] = e.style[pr + b[2] + sf]; + a[3] = e.style[pr + b[3] + sf]; + + for (i=0; i 0 ? s.substring(1) : s; + + if (f.text_none.checked) + s = "none"; + + ce.style.textDecoration = s; + + // Build background styles + + ce.style.backgroundColor = f.background_color.value; + ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; + ce.style.backgroundRepeat = f.background_repeat.value; + ce.style.backgroundAttachment = f.background_attachment.value; + + if (f.background_hpos.value != "") { + s = ""; + s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; + s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); + ce.style.backgroundPosition = s; + } + + // Build block styles + + ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); + ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); + ce.style.verticalAlign = f.block_vertical_alignment.value; + ce.style.textAlign = f.block_text_align.value; + ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); + ce.style.whiteSpace = f.block_whitespace.value; + ce.style.display = f.block_display.value; + + // Build box styles + + ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); + ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); + ce.style.styleFloat = f.box_float.value; + ce.style.cssFloat = f.box_float.value; + + ce.style.clear = f.box_clear.value; + + if (!f.box_padding_same.checked) { + ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); + ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); + ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); + } else + ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + + if (!f.box_margin_same.checked) { + ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); + ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); + ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); + } else + ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + + // Build border styles + + if (!f.border_style_same.checked) { + ce.style.borderTopStyle = f.border_style_top.value; + ce.style.borderRightStyle = f.border_style_right.value; + ce.style.borderBottomStyle = f.border_style_bottom.value; + ce.style.borderLeftStyle = f.border_style_left.value; + } else + ce.style.borderStyle = f.border_style_top.value; + + if (!f.border_width_same.checked) { + ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); + ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); + ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); + } else + ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + + if (!f.border_color_same.checked) { + ce.style.borderTopColor = f.border_color_top.value; + ce.style.borderRightColor = f.border_color_right.value; + ce.style.borderBottomColor = f.border_color_bottom.value; + ce.style.borderLeftColor = f.border_color_left.value; + } else + ce.style.borderColor = f.border_color_top.value; + + // Build list styles + + ce.style.listStyleType = f.list_type.value; + ce.style.listStylePosition = f.list_position.value; + ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; + + // Build positioning styles + + ce.style.position = f.positioning_type.value; + ce.style.visibility = f.positioning_visibility.value; + + if (ce.style.width == "") + ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); + + if (ce.style.height == "") + ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); + + ce.style.zIndex = f.positioning_zindex.value; + ce.style.overflow = f.positioning_overflow.value; + + if (!f.positioning_placement_same.checked) { + ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); + ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); + ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); + } else { + s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.top = s; + ce.style.right = s; + ce.style.bottom = s; + ce.style.left = s; + } + + if (!f.positioning_clip_same.checked) { + s = "rect("; + s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); + s += ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } else { + s = "rect("; + t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; + s += t + " "; + s += t + " "; + s += t + " "; + s += t + ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } + + ce.style.cssText = ce.style.cssText; +} + +function isNum(s) { + return new RegExp('[0-9]+', 'g').test(s); +} + +function showDisabledControls() { + var f = document.forms, i, a; + + for (i=0; i 1) { + addSelectValue(f, s, p[0], p[1]); + + if (se) + selectByValue(f, s, p[1]); + } else { + addSelectValue(f, s, p[0], p[0]); + + if (se) + selectByValue(f, s, p[0]); + } + } +} + +function toggleSame(ce, pre) { + var el = document.forms[0].elements, i; + + if (ce.checked) { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = true; + el[pre + "_bottom"].disabled = true; + el[pre + "_left"].disabled = true; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = true; + el[pre + "_bottom_measurement"].disabled = true; + el[pre + "_left_measurement"].disabled = true; + } + } else { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = false; + el[pre + "_bottom"].disabled = false; + el[pre + "_left"].disabled = false; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = false; + el[pre + "_bottom_measurement"].disabled = false; + el[pre + "_left_measurement"].disabled = false; + } + } + + showDisabledControls(); +} + +function synch(fr, to) { + var f = document.forms[0]; + + f.elements[to].value = f.elements[fr].value; + + if (f.elements[fr + "_measurement"]) + selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); +} + +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/plugins/style/langs/ar_dlg.js b/js/tiny_mce/plugins/style/langs/ar_dlg.js new file mode 100755 index 000000000..448d4401a --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ar_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ar.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"\u064a\u0633\u0627\u0631",bottom:"\u0627\u0633\u0641\u0644",right:"\u064a\u0645\u064a\u0646",top:"\u0627\u0644\u0627\u0639\u0644\u0649",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/az_dlg.js b/js/tiny_mce/plugins/style/langs/az_dlg.js new file mode 100755 index 000000000..5d52d9b9f --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/az_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('az.style_dlg',{text_lineheight:"S\u0259tr h\u00fcnd\u00fcrl\u00fcy\u00fc",text_variant:"Variant",text_style:"Stil",text_weight:"\u00c7\u0259kisi",text_size:"\u00d6l\u00e7\u00fcs\u00fc",text_font:"\u015erift",text_props:"M\u0259tn",positioning_tab:"M\u00f6vqe",list_tab:"Siyah\u0131",border_tab:"S\u0259rh\u0259d",box_tab:"Konteyner",block_tab:"Blok",background_tab:"Fon",text_tab:"M\u0259tn",apply:"T\u0259tbiq et",title:"CSS stili redakt\u0259 et",clip:"K\u0259sm\u0259k",placement:"Yerl\u0259\u015fdirm\u0259",overflow:"Axma",zindex:"Z-indeks",visibility:"G\u00f6r\u00fcn\u00fc\u015f",positioning_type:"N\u00f6v",position:"M\u00f6vqe",bullet_image:"Marker \u015f\u0259kli",list_type:"N\u00f6v",color:"R\u0259ng",height:"H\u00fcnd\u00fcrl\u00fck",width:"En",style:"Stil",margin:"Sah\u0259l\u0259r",left:"Soldan",bottom:"A\u015fa\u011f\u0131dan",right:"Sa\u011fdan",top:"Yuxar\u0131dan",same:"Ham\u0131s\u0131 \u00fc\u00e7\u00fcn eyni",padding:"Doldurma",box_clear:"T\u0259mizl\u0259",box_float:"\u00dcz\u0259n",box_height:"Uzunlu\u011fu",box_width:"Eni",block_display:"N\u00fcmayis",block_whitespace:"Bo\u015fluq",block_text_indent:"M\u0259tn bo\u015flu\u011fu",block_text_align:"M\u0259tn tara\u015fla\u015fd\u0131r\u0131lmas\u0131",block_vertical_alignment:"\u015eaquli tarazla\u015fd\u0131r\u0131lma",block_letterspacing:"Simvol aras\u0131 bo\u015fluqlar",block_wordspacing:"S\u00f6zaras\u0131 bo\u015fluqlar",background_vpos:"\u015eaquli m\u00f6vqe",background_hpos:"\u00dcf\u00fcqi m\u00f6vqe",background_attachment:"B\u0259rkitm\u0259k",background_repeat:"T\u0259krar",background_image:"fon \u015f\u0259kli",background_color:"Fon r\u0259ngi",text_none:"he\u00e7 biri",text_blink:"Yan\u0131b-s\u00f6n\u0259n",text_case:"Registr",text_striketrough:"\u00fcst\u00fcnd\u0259n x\u0259tt",text_underline:"alt\u0131ndan x\u0259tt",text_overline:"\u00fcz\u0259rind\u0259n x\u0259tt",text_decoration:"B\u0259z\u0259k",text_color:"\u015e\u0259kil"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/be_dlg.js b/js/tiny_mce/plugins/style/langs/be_dlg.js new file mode 100755 index 000000000..d497669e6 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/be_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('be.style_dlg',{text_lineheight:"\u0412\u044b\u0448\u044b\u043d\u044f \u0440\u0430\u0434\u043a\u0430",text_variant:"\u041d\u0430\u043f\u0456\u0441\u0430\u043d\u043d\u0435",text_style:"\u0421\u0442\u044b\u043b\u044c",text_weight:"\u0412\u0430\u0433\u0430",text_size:"\u041f\u0430\u043c\u0435\u0440",text_font:"\u0428\u0440\u044b\u0444\u0442",text_props:"\u0422\u044d\u043a\u0441\u0442",positioning_tab:"\u041f\u0430\u0437\u0456\u0446\u044b\u044f\u043d\u0430\u0432\u0430\u043d\u043d\u0435",list_tab:"\u0421\u043f\u0456\u0441",border_tab:"\u041c\u044f\u0436\u0430",box_tab:"\u041a\u0430\u043d\u0442\u044d\u0439\u043d\u0435\u0440",block_tab:"\u0411\u043b\u043e\u043a",background_tab:"\u0424\u043e\u043d",text_tab:"\u0422\u044d\u043a\u0441\u0442",apply:"\u0423\u0436\u044b\u0446\u044c",title:"\u0420\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0441\u0442\u044b\u043b\u044c CSS",clip:"\u0410\u0431\u0440\u0430\u0437\u0430\u043d\u043d\u0435",placement:"\u0420\u0430\u0437\u043c\u044f\u0448\u0447\u044d\u043d\u043d\u0435",overflow:"\u0410\u0431\u0446\u044f\u0447\u044d\u043d\u043d\u0435",zindex:"Z-\u0430\u0437\u043d\u0430\u0447\u043d\u0456\u043a",visibility:"\u0411\u0430\u0447\u043d\u0430\u0441\u0446\u044c",positioning_type:"\u0422\u044b\u043f",position:"\u041f\u0430\u0437\u0456\u0446\u044b\u044f",bullet_image:"\u041c\u0430\u043b\u044e\u043d\u0430\u043a \u043c\u0430\u0440\u043a\u0435\u0440\u0430",list_type:"\u0422\u044b\u043f",color:"\u041a\u043e\u043b\u0435\u0440",height:"\u0412\u044b\u0448\u044b\u043d\u044f",width:"\u0428\u044b\u0440\u044b\u043d\u044f",style:"\u0421\u0442\u044b\u043b\u044c",margin:"\u041f\u0430\u043b\u0456",left:"\u0417\u043b\u0435\u0432\u0430",bottom:"\u0417\u043d\u0456\u0437\u0443",right:"\u0421\u043f\u0440\u0430\u0432\u0430",top:"\u0417\u0432\u0435\u0440\u0445\u0443",same:"\u0410\u0434\u043d\u043e\u043b\u044c\u043a\u0430\u0432\u0430 \u0434\u043b\u044f \u045e\u0441\u0456\u0445",padding:"\u041d\u0430\u0431\u0456\u0432\u0430\u043d\u043d\u0435",box_clear:"\u0410\u0447\u044b\u0441\u0446\u0456\u0446\u044c",box_float:"\u042f\u043a\u043e\u0435 \u043f\u043b\u0430\u0432\u0430\u0435",box_height:"\u0412\u044b\u0448\u044b\u043d\u044f",box_width:"\u0428\u044b\u0440\u044b\u043d\u044f",block_display:"\u0410\u0434\u043b\u044e\u0441\u0442\u0440\u0430\u0432\u0430\u043d\u043d\u0435",block_whitespace:"\u041f\u0440\u0430\u0431\u0435\u043b",block_text_indent:"\u0412\u043e\u0434\u0441\u0442\u0443\u043f \u0442\u044d\u043a\u0441\u0442\u0443",block_text_align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u0442\u044d\u043a\u0441\u0442\u0443",block_vertical_alignment:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u0435 \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",block_letterspacing:"\u041f\u0440\u0430\u043c\u0435\u0436\u043a\u0456 \u043f\u0430\u043c\u0456\u0436 \u0437\u043d\u0430\u043a\u0430\u043c\u0456",block_wordspacing:"\u041f\u0440\u0430\u043c\u0435\u0436\u043a\u0456 \u043f\u0430\u043c\u0456\u0436 \u0441\u043b\u043e\u0432\u0430\u043c\u0456",background_vpos:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u0437\u0456\u0446\u044b\u044f",background_hpos:"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u0437\u0456\u0446\u044b\u044f",background_attachment:"\u041f\u0440\u044b\u043c\u0430\u0446\u0430\u0432\u0430\u043d\u043d\u0435",background_repeat:"\u041f\u0430\u045e\u0442\u043e\u0440",background_image:"\u0424\u043e\u043d\u0430\u0432\u044b \u043c\u0430\u043b\u044e\u043d\u0430\u043a",background_color:"\u041a\u043e\u043b\u0435\u0440 \u0444\u043e\u043d\u0443",text_none:"\u043d\u0456\u044f\u043a\u0430\u0433\u0430",text_blink:"\u044f\u043a\u0456 \u043c\u0456\u0433\u0446\u0456\u0446\u044c",text_case:"\u0420\u044d\u0433\u0456\u0441\u0442\u0440",text_striketrough:"\u043f\u0435\u0440\u0430\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",text_underline:"\u043f\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",text_overline:"\u043d\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",text_decoration:"\u0423\u043f\u0440\u044b\u0433\u043e\u0436\u0432\u0430\u043d\u043d\u0435",text_color:"\u041a\u043e\u043b\u0435\u0440"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/bg_dlg.js b/js/tiny_mce/plugins/style/langs/bg_dlg.js new file mode 100755 index 000000000..e12c15d2f --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/bg_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bg.style_dlg',{text_lineheight:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430",text_variant:"\u041f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432",text_style:"\u0421\u0442\u0438\u043b",text_weight:"\u0422\u0435\u0433\u043b\u043e",text_size:"\u0420\u0430\u0437\u043c\u0435\u0440",text_font:"\u0428\u0440\u0438\u0444\u0442",text_props:"\u0422\u0435\u043a\u0441\u0442",positioning_tab:"\u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u043d\u0435",list_tab:"\u0421\u043f\u0438\u0441\u044a\u043a",border_tab:"\u0420\u0430\u043c\u043a\u0430",box_tab:"\u041a\u0443\u0442\u0438\u044f",block_tab:"\u0411\u043b\u043e\u043a",background_tab:"\u0424\u043e\u043d",text_tab:"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 CSS \u0441\u0442\u0438\u043b",clip:"\u041e\u0442\u0440\u0435\u0436\u0438",placement:"\u0420\u0430\u0437\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435",overflow:"Overflow",zindex:"Z-index",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442",positioning_type:"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f",bullet_image:"\u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u0432\u043e\u0434\u0430\u0447\u0438\u0442\u0435",list_type:"\u0422\u0438\u043f",color:"\u0426\u0432\u044f\u0442",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b",margin:"Margin",left:"\u041b\u044f\u0432\u043e",bottom:"\u0414\u043e\u043b\u0443",right:"\u0414\u044f\u0441\u043d\u043e",top:"\u0413\u043e\u0440\u0435",same:"\u0417\u0430 \u0432\u0441\u0438\u0447\u043a\u0438",padding:"Padding",box_clear:"\u0418\u0437\u0447\u0438\u0441\u0442\u0438",box_float:"Float",box_height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",box_width:"\u0428\u0438\u0440\u0438\u043d\u0430",block_display:"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435",block_whitespace:"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b",block_text_indent:"\u041e\u0442\u0441\u0442\u044a\u043f \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",block_text_align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",block_vertical_alignment:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",block_letterspacing:"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0438\u0442\u0435",block_wordspacing:"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0443\u043c\u0438\u0442\u0435",background_vpos:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f",background_hpos:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f",background_attachment:"\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u0438",background_repeat:"\u041f\u043e\u0432\u0442\u043e\u0440\u0438",background_image:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",background_color:"\u0424\u043e\u043d\u0438\u0432 \u0446\u0432\u044f\u0442",text_none:"\u043d\u0438\u0449\u043e",text_blink:"\u043c\u0438\u0433\u0430",text_case:"\u0420\u0435\u0433\u0438\u0441\u0442\u044a\u0440",text_striketrough:"\u0437\u0430\u0447\u0435\u0440\u0442\u0430\u043d",text_underline:"\u043f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d",text_overline:"\u043d\u0430\u0434\u0447\u0435\u0440\u0442\u0430\u043d",text_decoration:"\u0414\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044f",text_color:"\u0426\u0432\u044f\u0442"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/bn_dlg.js b/js/tiny_mce/plugins/style/langs/bn_dlg.js new file mode 100755 index 000000000..b8eb00c27 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/bn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bn.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/br_dlg.js b/js/tiny_mce/plugins/style/langs/br_dlg.js new file mode 100755 index 000000000..c18da7133 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/br_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('br.style_dlg',{text_lineheight:"Altura da linha",text_variant:"Variante",text_style:"Estilo",text_weight:"Peso",text_size:"Tamanho",text_font:"Fonte",text_props:"Texto",positioning_tab:"Posicionamento",list_tab:"Lista",border_tab:"Limites",box_tab:"Caixa",block_tab:"Bloco",background_tab:"Fundo",text_tab:"Texto",apply:"Aplicar",title:"Editar CSS",clip:"Clip",placement:"Posicionamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidade",positioning_type:"Tipo",position:"Posi\u00e7\u00e3o",bullet_image:"Imagem de lista",list_type:"Tipo",color:"Cor",height:"Altura",width:"Largura",style:"Estilo",margin:"Margem",left:"Esquerda",bottom:"Abaixo",right:"Direita",top:"Topo",same:"O mesmo para todos",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Altura",box_width:"Largura",block_display:"Display",block_whitespace:"Espa\u00e7o",block_text_indent:"Indent",block_text_align:"Alinhamento de texto",block_vertical_alignment:"Alinhamento vertical",block_letterspacing:"Espa\u00e7amento de letras",block_wordspacing:"Espa\u00e7amento de palavras",background_vpos:"Posi\u00e7\u00e3o vertical",background_hpos:"Posi\u00e7\u00e3o horizontal",background_attachment:"Fixar",background_repeat:"Repetir",background_image:"Imagem de fundo",background_color:"Cor de fundo",text_none:"nenhum",text_blink:"Piscar",text_case:"Mai\u00fascula/min\u00fascula",text_striketrough:"Riscado",text_underline:"Sublinhado",text_overline:"Sobrelinha",text_decoration:"Decora\u00e7\u00e3o",text_color:"Cor"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/bs_dlg.js b/js/tiny_mce/plugins/style/langs/bs_dlg.js new file mode 100755 index 000000000..51d2e1610 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/bs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bs.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ca_dlg.js b/js/tiny_mce/plugins/style/langs/ca_dlg.js new file mode 100755 index 000000000..a6b25e476 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ca_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ca.style_dlg',{"text_lineheight":"Al\u00e7ada de l\u00ednia","text_variant":"Variant","text_style":"Estil","text_weight":"Pes","text_size":"Mida","text_font":"Font","text_props":"Text","positioning_tab":"Posicionament","list_tab":"Llista","border_tab":"Contorn","box_tab":"Quadre","block_tab":"Bloc","background_tab":"Fons","text_tab":"Text",apply:"Aplica",title:"Edita l\'estil CSS",clip:"Retall",placement:"Empla\u00e7ament",overflow:"Desbordament",zindex:"\u00cdndex Z",visibility:"Visibilitat","positioning_type":"Tipus",position:"Posici\u00f3","bullet_image":"Imatge pic","list_type":"Tipus",color:"Color",height:"Al\u00e7ada",width:"Amplada",style:"Estil",margin:"Marge",left:"Esquerra",bottom:"Avall",right:"Dreta",top:"Dalt",same:"Igual per a tot",padding:"Separaci\u00f3","box_clear":"Buida","box_float":"Flota","box_height":"Al\u00e7ada","box_width":"Amplada","block_display":"Visualitzaci\u00f3","block_whitespace":"Espai en blanc","block_text_indent":"Sagna el text","block_text_align":"Alinea el text","block_vertical_alignment":"Alineaci\u00f3 vertical","block_letterspacing":"Espaiat entre lletres","block_wordspacing":"Espaiat entre paraules","background_vpos":"Posici\u00f3 vertical","background_hpos":"Posici\u00f3 horitzontal","background_attachment":"Adjunt","background_repeat":"Repeteix","background_image":"Imatge de fons","background_color":"Color de fons","text_none":"cap","text_blink":"parpelleig","text_case":"Cas","text_striketrough":"barrat","text_underline":"subratllat","text_overline":"sobreratllat","text_decoration":"Decoraci\u00f3","text_color":"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ch_dlg.js b/js/tiny_mce/plugins/style/langs/ch_dlg.js new file mode 100755 index 000000000..e99e154e2 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ch_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ch.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u53d8\u91cf",text_style:"\u6837\u5f0f",text_weight:"\u5b57\u91cd",text_size:"\u6587\u5b57\u5927\u5c0f",text_font:"\u5b57\u4f53",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u8fb9\u6846",box_tab:"\u65b9\u5757",block_tab:"\u533a\u5757",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u5957\u7528",title:"\u7f16\u8f91 CSS \u6837\u5f0f\u8868",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z-\u5750\u6807",visibility:"\u53ef\u89c1",positioning_type:"\u7c7b\u578b",position:"\u4f4d\u7f6e",bullet_image:"\u56fe\u7247\u9879\u76ee\u7b26\u53f7",list_type:"\u7c7b\u8868\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8",width:"\u5bbd",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u8ddd",left:"\u5de6\u4fa7",bottom:"\u9760\u4e0b",right:"\u53f3\u4fa7",top:"\u5b9a\u90e8",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u8ddd",box_clear:"\u6e05\u9664\u6d6e\u52a8",box_float:"\u6d6e\u52a8",box_height:"\u9ad8",box_width:"\u5bbd",block_display:"\u663e\u793a",block_whitespace:"\u7a7a\u683c",block_text_indent:"\u6587\u5b57\u7f29\u6392",block_text_align:"\u6587\u5b57\u5bf9\u9f50",block_vertical_alignment:"\u5782\u76f4\u5bf9\u9f50",block_letterspacing:"\u5b57\u6bcd\u95f4\u8ddd",block_wordspacing:"\u95f4\u8ddd",background_vpos:"\u5782\u76f4\u4f4d\u7f6e",background_hpos:"\u6c34\u5e73\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u590d",background_image:"\u80cc\u666f\u56fe\u7247",background_color:"\u80cc\u666f\u989c\u8272",text_none:"\u65e0",text_blink:"\u95ea\u70c1",text_case:"\u5b57\u578b",text_striketrough:"\u5220\u9664\u7ebf",text_underline:"\u5e95\u7ebf",text_overline:"\u4e0a\u5212\u7ebf",text_decoration:"\u88c5\u9970",text_color:"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/cn_dlg.js b/js/tiny_mce/plugins/style/langs/cn_dlg.js new file mode 100755 index 000000000..1fad24fe0 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cn.style_dlg',{"text_lineheight":"\u884c\u9ad8","text_variant":"\u6587\u672c\u53d8\u91cf\uff08\u4e2d\u6587\u65e0\u6548\uff09","text_style":"\u6837\u5f0f","text_weight":"\u9ad8\u5ea6","text_size":"\u5b57\u4f53\u5927\u5c0f","text_font":"\u5b57\u4f53","text_props":"\u6587\u672c","positioning_tab":"\u653e\u7f6e","list_tab":"\u5217\u8868","border_tab":"\u8fb9\u6846","box_tab":"\u65b9\u5757","block_tab":"\u533a\u5757","background_tab":"\u80cc\u666f","text_tab":"\u6587\u672c",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS\u6837\u5f0f",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"\u5143\u7d20\u5806\u53e0\u987a\u5e8f\uff08Z-index)",visibility:"\u53ef\u89c1","positioning_type":"\u7c7b\u578b",position:"\u4f4d\u7f6e","bullet_image":"\u56fe\u7247\u9879\u76ee\u7b26\u53f7","list_type":"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u6846",left:"\u5de6\u4fa7",bottom:"\u5e95\u90e8",right:"\u53f3\u4fa7",top:"\u9876\u90e8",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u6846","box_clear":"\u6e05\u9664\u6d6e\u52a8","box_float":"\u6d6e\u52a8","box_height":"\u9ad8\u5ea6","box_width":"\u5bbd\u5ea6","block_display":"\u663e\u793a\u65b9\u5f0f","block_whitespace":"\u7a7a\u683c","block_text_indent":"\u6587\u672c\u7f29\u8fdb","block_text_align":"\u6587\u672c\u5bf9\u9f50\u65b9\u5f0f","block_vertical_alignment":"\u5782\u76f4\u5bf9\u9f50","block_letterspacing":"\u5b57\u6bcd\u95f4\u8ddd","block_wordspacing":"\u95f4\u8ddd","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u9644\u4ef6","background_repeat":"\u91cd\u590d","background_image":"\u80cc\u666f\u56fe\u7247","background_color":"\u80cc\u666f\u989c\u8272","text_none":"\u65e0","text_blink":"\u95ea\u70c1","text_case":"\u5b57\u578b","text_striketrough":"\u5220\u9664\u7ebf","text_underline":"\u4e0b\u5212\u7ebf","text_overline":"\u4e0a\u5212\u7ebf","text_decoration":"\u88c5\u9970","text_color":"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/cs_dlg.js b/js/tiny_mce/plugins/style/langs/cs_dlg.js new file mode 100755 index 000000000..bac01dcba --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/cs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cs.style_dlg',{text_lineheight:"V\u00fd\u0161ka \u0159\u00e1dku",text_variant:"Varianta",text_style:"Styl textu",text_weight:"Tu\u010dnost p\u00edsma",text_size:"Velikost",text_font:"P\u00edsmo",text_props:"Text",positioning_tab:"Um\u00edst\u011bn\u00ed",list_tab:"Seznam",border_tab:"Ohrani\u010den\u00ed",box_tab:"Box",block_tab:"Blok",background_tab:"Pozad\u00ed",text_tab:"Text",apply:"Pou\u017e\u00edt",title:"Upravit CSS styl",clip:"O\u0159ez\u00e1n\u00ed (clip)",placement:"Um\u00edst\u011bni",overflow:"P\u0159ete\u010den\u00ed (overflow)",zindex:"Z-index",visibility:"Viditelnost",positioning_type:"Typ",position:"Um\u00edst\u011bn\u00ed",bullet_image:"Styl odr\u00e1\u017eek",list_type:"Typ",color:"Barva",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",style:"Styl",margin:"Okraje (margin)",left:"Vlevo",bottom:"Dole",right:"Vpravo",top:"Naho\u0159e",same:"Stejn\u00e9 pro v\u0161echny",padding:"Odsazen\u00ed (padding)",box_clear:"Vy\u010distit",box_float:"Plovouc\u00ed",box_height:"V\u00fd\u0161ka",box_width:"\u0160\u00ed\u0159ka",block_display:"Blokov\u00e9 zobrazen\u00ed",block_whitespace:"Zalamov\u00e1n\u00ed textu",block_text_indent:"Odsazen\u00ed textu",block_text_align:"Zarovn\u00e1n\u00ed textu",block_vertical_alignment:"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed",block_letterspacing:"Rozestup znak\u016f",block_wordspacing:"Rozestup slov",background_vpos:"Vertik\u00e1ln\u00ed um\u00edst\u011bn\u00ed",background_hpos:"Horizont\u00e1ln\u00ed um\u00edst\u011bn\u00ed",background_attachment:"Rolov\u00e1n\u00ed",background_repeat:"Opakov\u00e1n\u00ed",background_image:"Obr\u00e1zek pozad\u00ed",background_color:"Barva pozad\u00ed",text_none:"\u017e\u00e1dn\u00e1",text_blink:"blik\u00e1n\u00ed",text_case:"Velk\u00e1 p\u00edsmena",text_striketrough:"p\u0159e\u0161krtnut\u00ed",text_underline:"podtr\u017een\u00ed",text_overline:"nadtr\u017een\u00ed",text_decoration:"Dekorace",text_color:"Barva"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/cy_dlg.js b/js/tiny_mce/plugins/style/langs/cy_dlg.js new file mode 100755 index 000000000..1c0b5bcf1 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/cy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cy.style_dlg',{text_lineheight:"Uchder llinell",text_variant:"Amrywiad",text_style:"Arddull",text_weight:"Pwysau",text_size:"Maint",text_font:"Ffont",text_props:"Testun",positioning_tab:"Lleoli",list_tab:"Rhestr",border_tab:"Border",box_tab:"Blwch",block_tab:"Bloc",background_tab:"Cefndir",text_tab:"Testun",apply:"Gosod",title:"Golygu Arddull CSS",clip:"Clip",placement:"Gosodiad",overflow:"Gorlif",zindex:"Mynegai-Z",visibility:"Gwelededd",positioning_type:"Math",position:"Lleoliad",bullet_image:"Delwedd bwled",list_type:"Math",color:"Lliw",height:"Uchder",width:"Lled",style:"Arddull",margin:"Ymyl",left:"Chwith",bottom:"Gwaelod",right:"De",top:"Pen",same:"Yr un ar gyfer pob un",padding:"Padio",box_clear:"Clirio",box_float:"Arnofio",box_height:"Uchder",box_width:"Lled",block_display:"Arddangos",block_whitespace:"Whitespace",block_text_indent:"Mewnoli tetun",block_text_align:"Alinio testun",block_vertical_alignment:"Aliniad fertigol",block_letterspacing:"Bylchiad lythyren",block_wordspacing:"Bylchiad gair",background_vpos:"Lleoliad fertigol",background_hpos:"Lleoliad llorweddol",background_attachment:"Atodiad",background_repeat:"Ailadrodd",background_image:"Delwedd cefndir",background_color:"Lliw cefndir",text_none:"Dim un",text_blink:"Blincio",text_case:"Llythrennau bach/mawr",text_striketrough:"Taro drwodd",text_underline:"Llinell o dan",text_overline:"Llinell drosodd",text_decoration:"Addurniadau",text_color:"Lliw"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/da_dlg.js b/js/tiny_mce/plugins/style/langs/da_dlg.js new file mode 100755 index 000000000..0edb86878 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/da_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('da.style_dlg',{text_lineheight:"Linieh\u00f8jde",text_variant:"Variant",text_style:"Stil",text_weight:"V\u00e6gt",text_size:"St\u00f8rrelse",text_font:"Skrifttype",text_props:"Tekst",positioning_tab:"Positionering",list_tab:"Liste",border_tab:"Kant",box_tab:"Boks",block_tab:"Blok",background_tab:"Baggrund",text_tab:"Tekst",apply:"Anvend",title:"Rediger CSS stil",clip:"Klip",placement:"Placering",overflow:"Overl\u00f8b",zindex:"Z-index",visibility:"Synlighed",positioning_type:"Type",position:"Position",bullet_image:"Punktopstillings-billede",list_type:"Type",color:"Farve",height:"H\u00f8jde",width:"Bredde",style:"Style",margin:"Margin",left:"Venstre",bottom:"Bund",right:"H\u00f8jre",top:"Top",same:"Ens for alle",padding:"Afstand til indhold",box_clear:"Ryd",box_float:"Flydende",box_height:"H\u00f8jde",box_width:"Bredde",block_display:"Vis",block_whitespace:"Mellemrum",block_text_indent:"Tekstindrykning",block_text_align:"Tekstjustering",block_vertical_alignment:"Vertikal justering",block_letterspacing:"Afstand mellem bogstaver",block_wordspacing:"Afstand mellem ord",background_vpos:"Vertikal position",background_hpos:"Horisontal position",background_attachment:"Vedh\u00e6ftede fil",background_repeat:"Gentag",background_image:"Baggrundsbillede",background_color:"Baggrundsfarve",text_none:"ingen",text_blink:"blink",text_case:"Vesaltilstand",text_striketrough:"gennemstreget",text_underline:"understreget",text_overline:"overstreget",text_decoration:"Dekoration",text_color:"Farve"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/de_dlg.js b/js/tiny_mce/plugins/style/langs/de_dlg.js new file mode 100755 index 000000000..65e3497b0 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/de_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('de.style_dlg',{text_lineheight:"Zeilenh\u00f6he",text_variant:"Variante",text_style:"Stil",text_weight:"Dicke",text_size:"Gr\u00f6\u00dfe",text_font:"Schriftart",text_props:"Text",positioning_tab:"Positionierung",list_tab:"Liste",border_tab:"Rahmen",box_tab:"Box",block_tab:"Block",background_tab:"Hintergrund",text_tab:"Text",apply:"\u00dcbernehmen",title:"CSS-Styles bearbeiten",clip:"Ausschnitt",placement:"Platzierung",overflow:"Verhalten bei \u00dcbergr\u00f6\u00dfe",zindex:"Z-Wert",visibility:"Sichtbar",positioning_type:"Art der Positionierung",position:"Positionierung",bullet_image:"Listenpunkt-Grafik",list_type:"Listenpunkt-Art",color:"Textfarbe",height:"H\u00f6he",width:"Breite",style:"Format",margin:"\u00c4u\u00dferer Abstand",left:"Links",bottom:"Unten",right:"Rechts",top:"Oben",same:"Alle gleich",padding:"Innerer Abstand",box_clear:"Umflie\u00dfung verhindern",box_float:"Umflie\u00dfung",box_height:"H\u00f6he",box_width:"Breite",block_display:"Umbruchverhalten",block_whitespace:"Automatischer Umbruch",block_text_indent:"Einr\u00fcckung",block_text_align:"Ausrichtung",block_vertical_alignment:"Vertikale Ausrichtung",block_letterspacing:"Buchstabenabstand",block_wordspacing:"Wortabstand",background_vpos:"Position Y",background_hpos:"Position X",background_attachment:"Wasserzeicheneffekt",background_repeat:"Wiederholung",background_image:"Hintergrundbild",background_color:"Hintergrundfarbe",text_none:"keine",text_blink:"blinkend",text_case:"Schreibung",text_striketrough:"durchgestrichen",text_underline:"unterstrichen",text_overline:"\u00fcberstrichen",text_decoration:"Gestaltung",text_color:"Farbe"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/dv_dlg.js b/js/tiny_mce/plugins/style/langs/dv_dlg.js new file mode 100755 index 000000000..0c4efa4bb --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/dv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('dv.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/el_dlg.js b/js/tiny_mce/plugins/style/langs/el_dlg.js new file mode 100755 index 000000000..586a8a16d --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/el_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('el.style_dlg',{text_lineheight:"\u038e\u03c8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",text_variant:"\u03a0\u03b1\u03c1\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae",text_style:"\u03a3\u03c4\u03c5\u03bb",text_weight:"\u0392\u03ac\u03c1\u03bf\u03c2",text_size:"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd",text_font:"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac",text_props:"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",positioning_tab:"\u03a4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7",list_tab:"\u039b\u03af\u03c3\u03c4\u03b1",border_tab:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",box_tab:"\u039a\u03bf\u03c5\u03c4\u03af",block_tab:"\u039c\u03c0\u03bb\u03bf\u03ba",background_tab:"\u03a6\u03cc\u03bd\u03c4\u03bf",text_tab:"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",apply:"\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",title:"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c4\u03c5\u03bb CSS",clip:"Clip",placement:"\u03a4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7",overflow:"\u03a5\u03c0\u03b5\u03c1\u03c7\u03b5\u03af\u03bb\u03b9\u03c3\u03b7",zindex:"Z-index",visibility:"\u039f\u03c1\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1",positioning_type:"\u03a4\u03cd\u03c0\u03bf\u03c2",position:"\u0398\u03ad\u03c3\u03b7",bullet_image:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c4\u03b5\u03bb\u03b5\u03af\u03b1\u03c2",list_type:"\u03a4\u03cd\u03c0\u03bf\u03c2",color:"\u03a7\u03c1\u03ce\u03bc\u03b1",height:"\u038e\u03c8\u03bf\u03c2",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",margin:"\u03a0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf",left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",bottom:"\u039a\u03ac\u03c4\u03c9",right:"\u0394\u03b5\u03be\u03b9\u03ac",top:"\u03a0\u03ac\u03bd\u03c9",same:"\u038a\u03b4\u03b9\u03bf \u03b3\u03b9\u03b1 \u03cc\u03bb\u03b1",padding:"\u0393\u03ad\u03bc\u03b9\u03c3\u03bc\u03b1",box_clear:"Clear",box_float:"Float",box_height:"\u038e\u03c8\u03bf\u03c2",box_width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",block_display:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",block_whitespace:"\u039a\u03b5\u03bd\u03cc\u03c2 \u03c7\u03ce\u03c1\u03bf\u03c2",block_text_indent:"\u0395\u03c3\u03bf\u03c7\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5",block_text_align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5",block_vertical_alignment:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",block_letterspacing:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd",block_wordspacing:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bb\u03ad\u03be\u03b5\u03c9\u03bd",background_vpos:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03b8\u03ad\u03c3\u03b7",background_hpos:"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b8\u03ad\u03c3\u03b7",background_attachment:"\u03a0\u03c1\u03bf\u03c3\u03ac\u03c1\u03c4\u03b7\u03bc\u03b1",background_repeat:"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",background_image:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",background_color:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",text_none:"\u039a\u03b1\u03bc\u03af\u03b1",text_blink:"\u039d\u03b1 \u03b1\u03bd\u03b1\u03b2\u03bf\u03c3\u03b2\u03ae\u03bd\u03b5\u03b9",text_case:"\u039a\u03b5\u03c6./\u039c\u03b9\u03ba\u03c1\u03ac",text_striketrough:"\u0394\u03b9\u03b1\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",text_underline:"\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",text_overline:"\u03a5\u03c0\u03b5\u03c1\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",text_decoration:"\u0394\u03b9\u03b1\u03ba\u03cc\u03c3\u03bc\u03b7\u03c3\u03b7",text_color:"\u03a7\u03c1\u03ce\u03bc\u03b1"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/en_dlg.js b/js/tiny_mce/plugins/style/langs/en_dlg.js new file mode 100644 index 000000000..0bd435eee --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/es_dlg.js b/js/tiny_mce/plugins/style/langs/es_dlg.js new file mode 100755 index 000000000..b37cce32c --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.style_dlg',{"text_lineheight":"Ancho de la fila","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tama\u00f1o","text_font":"Fuente","text_props":"Texto","positioning_tab":"Posici\u00f3n","list_tab":"Lista","border_tab":"Borde","box_tab":"Caja","block_tab":"Bloque","background_tab":"Fondo","text_tab":"Texto",apply:"Aplicar",title:"Editar Estilo CSS",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidad","positioning_type":"Tipo",position:"Posici\u00f3n","bullet_image":"Imagen de la vi\u00f1eta","list_type":"Tipo",color:"Color",height:"Alto",width:"Ancho",style:"Estilo",margin:"Margen",left:"Izquierda",bottom:"Debajo",right:"Derecha",top:"Arriba",same:"Lo mismo en todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Alto","box_width":"Ancho","block_display":"Display","block_whitespace":"Espacio en blanco","block_text_indent":"Sangr\u00eda","block_text_align":"Alineaci\u00f3n del texto","block_vertical_alignment":"Alineaci\u00f3n vertical","block_letterspacing":"Espacio entre letra","block_wordspacing":"Espacio entre palabra","background_vpos":"Posici\u00f3n vertical","background_hpos":"Posici\u00f3n horizontal","background_attachment":"Adjunto","background_repeat":"Repetici\u00f3n","background_image":"Imagen de fondo","background_color":"Color de fondo","text_none":"Ninguno","text_blink":"Parpadeo","text_case":"Min\u00fas./May\u00fas.","text_striketrough":"Tachado","text_underline":"Subrayado","text_overline":"Subrayado superior","text_decoration":"Decorativos","text_color":"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/et_dlg.js b/js/tiny_mce/plugins/style/langs/et_dlg.js new file mode 100755 index 000000000..8940e8e0c --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.style_dlg',{text_lineheight:"Joone k\u00f5rgus",text_variant:"Variant",text_style:"Stiil",text_weight:"Raskus",text_size:"Suurus",text_font:"Font",text_props:"Tekst",positioning_tab:"Positsioneerimine",list_tab:"Nimekiri",border_tab:"Raam",box_tab:"Kast",block_tab:"Plokk",background_tab:"Taust",text_tab:"Tekst",apply:"Rakenda",title:"Muuda CSS stiili",clip:"Klipp",placement:"Asetus",overflow:"\u00dclevool",zindex:"Z-viit",visibility:"N\u00e4htavus",positioning_type:"T\u00fc\u00fcp",position:"Positsioon",bullet_image:"Punkt pilt",list_type:"T\u00fc\u00fcp",color:"V\u00e4rv",height:"K\u00f5rgus",width:"Laius",style:"Stiil",margin:"Serv",left:"Vasakul",bottom:"All",right:"Paremal",top:"\u00dcleval",same:"Sama k\u00f5igile",padding:"T\u00e4idis",box_clear:"Puhas",box_float:"H\u00f5ljuv",box_height:"K\u00f5rgus",box_width:"Laius",block_display:"Kuva",block_whitespace:"T\u00fchimik",block_text_indent:"Teksti taandus",block_text_align:"Teksti joondus",block_vertical_alignment:"Vertikaalne joondus",block_letterspacing:"T\u00e4he avardamine",block_wordspacing:"S\u00f5nade avardamine",background_vpos:"Vertikaalne asend",background_hpos:"Horisontaalne asend",background_attachment:"Manus",background_repeat:"Kordus",background_image:"Tausta pilt",background_color:"Tausta v\u00e4rv",text_none:"mitte \u00fckski",text_blink:"vilgutus",text_case:"Kast",text_striketrough:"l\u00e4bikriipsutus",text_underline:"alajoon",text_overline:"\u00fclejoon",text_decoration:"Dekoratioon",text_color:"V\u00e4rv"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/eu_dlg.js b/js/tiny_mce/plugins/style/langs/eu_dlg.js new file mode 100755 index 000000000..06aa6e0ce --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/eu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('eu.style_dlg',{text_lineheight:"Lerro garaiera",text_variant:"Aldaera",text_style:"Estiloa",text_weight:"Weight",text_size:"Tamaina",text_font:"Letra-tipoa",text_props:"Testua",positioning_tab:"Kokapena",list_tab:"Zerrenda",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Atzea",text_tab:"Testua",apply:"Apikatu",title:"Aldatu CSS estiloa",clip:"Klip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Ikusgarritasuna",positioning_type:"Mora",position:"Kokapena",bullet_image:"Bulet-irudia",list_type:"Mota",color:"Kolorea",height:"Altuera",width:"Zabalera",style:"Estiloa",margin:"Margina",left:"Ezkerra",bottom:"Behera",right:"Eskuina",top:"Gora",same:"Guztientzat berdina",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Altuera",box_width:"Zabalera",block_display:"Erakutsi",block_whitespace:"Zuriunea",block_text_indent:"Koska",block_text_align:"Testu lerrokatzea",block_vertical_alignment:"Lerrokatze bertikala",block_letterspacing:"Letra banaketa",block_wordspacing:"Hitz banaketa",background_vpos:"Posizio bertikala",background_hpos:"Posizio horizontala",background_attachment:"Eranskina",background_repeat:"Errepikatu",background_image:"Atzeko irudia",background_color:"Atzeko kolorea",text_none:"Bat ere ez",text_blink:"Keinada",text_case:"Minus./Maius.",text_striketrough:"Marratua",text_underline:"Azpimarra",text_overline:"Goimarra",text_decoration:"Apaingarriak",text_color:"Kolorea"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/fa_dlg.js b/js/tiny_mce/plugins/style/langs/fa_dlg.js new file mode 100755 index 000000000..5a8bfdd3c --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/fa_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fa.style_dlg',{text_lineheight:"\u0628\u0644\u0646\u062f\u06cc \u062e\u0637",text_variant:"\u0646\u0648\u0639 \u062a\u063a\u06cc\u06cc\u0631",text_style:"\u0627\u0633\u062a\u06cc\u0644",text_weight:"\u062d\u0627\u0644\u062a",text_size:"\u0627\u0646\u062f\u0627\u0632\u0647",text_font:"\u0642\u0644\u0645",text_props:"\u0645\u062a\u0646",positioning_tab:"\u0645\u0648\u0642\u0639\u06cc\u062a",list_tab:"\u0644\u06cc\u0633\u062a",border_tab:"\u062d\u0627\u0634\u06cc\u0647",box_tab:"\u062c\u0639\u0628\u0647",block_tab:"\u0628\u0644\u0648\u06a9",background_tab:"\u0632\u0645\u06cc\u0646\u0647",text_tab:"\u0645\u062a\u0646",apply:"\u0628\u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc",title:"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0633\u062a\u06cc\u0644 CSS",clip:"\u0628\u0631\u0634 (Clip)",placement:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0645\u06a9\u0627\u0646\u06cc",overflow:"\u0633\u0631 \u0631\u06cc\u0632",zindex:"\u0645\u062d\u0648\u0631 Z",visibility:"\u0642\u0627\u0628\u0644\u06cc\u062a \u0631\u0648\u06cc\u062a",positioning_type:"\u0646\u0648\u0639",position:"\u0645\u0648\u0642\u0639\u06cc\u062a",bullet_image:"\u062a\u0635\u0648\u06cc\u0631 \u06af\u0644\u0648\u0644\u0647",list_type:"\u0646\u0648\u0639",color:"\u0631\u0646\u06af",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u067e\u0647\u0646\u0627",style:"\u0627\u0633\u062a\u06cc\u0644",margin:"\u062d\u0627\u0634\u06cc\u0647",left:"\u0686\u067e",bottom:"\u067e\u0627\u06cc\u06cc\u0646",right:"\u0631\u0627\u0633\u062a",top:"\u0628\u0627\u0644\u0627",same:"\u0647\u0645\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647",padding:"\u0644\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc",box_clear:"\u067e\u0627\u06a9 \u0633\u0627\u0632\u06cc",box_float:"\u0634\u0646\u0627\u0648\u0631",box_height:"\u0627\u0631\u062a\u0641\u0627\u0639",box_width:"\u067e\u0647\u0646\u0627",block_display:"\u0646\u0645\u0627\u06cc\u0634",block_whitespace:"\u0641\u0627\u0635\u0644\u0647 \u0633\u0641\u06cc\u062f",block_text_indent:"\u062a\u0648\u0631\u0641\u062a\u06af\u06cc \u0645\u062a\u0646",block_text_align:"\u062a\u0631\u0627\u0632 \u0645\u062a\u0646",block_vertical_alignment:"\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc",block_letterspacing:"\u0641\u0627\u0635\u0644\u0647 \u062d\u0631\u0648\u0641",block_wordspacing:"\u0641\u0627\u0635\u0644\u0647 \u06a9\u0644\u0645\u0627\u062a",background_vpos:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0639\u0645\u0648\u062f\u06cc",background_hpos:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0627\u0641\u0642\u06cc",background_attachment:"\u0632\u0645\u06cc\u0645\u0647",background_repeat:"\u062a\u06a9\u0631\u0627\u0631",background_image:"\u062a\u0635\u0648\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647",background_color:"\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647",text_none:"\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",text_blink:"\u0686\u0634\u0645\u06a9 \u0632\u0646",text_case:"\u062d\u0627\u0644\u062a",text_striketrough:"\u062e\u0637 \u0648\u0633\u0637",text_underline:"\u0632\u06cc\u0631 \u062e\u0637",text_overline:"\u0628\u0627\u0644\u0627 \u062e\u0637",text_decoration:"\u0622\u0631\u0627\u06cc\u0634",text_color:"\u0631\u0646\u06af"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/fi_dlg.js b/js/tiny_mce/plugins/style/langs/fi_dlg.js new file mode 100755 index 000000000..02289edc3 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.style_dlg',{text_lineheight:"Rivin korkeus",text_variant:"Variantti",text_style:"Tyyli",text_weight:"Paino",text_size:"Koko",text_font:"Kirjasin",text_props:"Teksti",positioning_tab:"Sijainti",list_tab:"Lista",border_tab:"Kehys",box_tab:"Laatikko",block_tab:"Palkki",background_tab:"Tausta",text_tab:"Teksti",apply:"K\u00e4yt\u00e4",title:"Muokkaa CSS-tyyli\u00e4",clip:"Leike",placement:"Sijoittelu",overflow:"Ylivuoto",zindex:"Z-indeksi",visibility:"N\u00e4kyvyys",positioning_type:"Tyyppi",position:"Sijainti",bullet_image:"Listauskuva",list_type:"Tyyppi",color:"V\u00e4ri",height:"Korkeus",width:"Leveys",style:"Tyyli",margin:"Marginaali",left:"Vasemmalla",bottom:"Alhaalla",right:"Oikealla",top:"Ylh\u00e4\u00e4ll\u00e4",same:"Sama kaikille",padding:"Tyhj\u00e4 tila",box_clear:"Nollaus",box_float:"Kellunta",box_height:"Korkeus",box_width:"Leveys",block_display:"N\u00e4ytt\u00f6",block_whitespace:"Tyhj\u00e4 tila",block_text_indent:"Tekstin sisennys",block_text_align:"Tekstin asettelu",block_vertical_alignment:"Pystyasettelu",block_letterspacing:"Kirjainten v\u00e4listys",block_wordspacing:"Sanojen v\u00e4listys",background_vpos:"Pystyasettelu",background_hpos:"Vaaka-asettelu",background_attachment:"Liite",background_repeat:"Toistuvuus",background_image:"Taustakuva",background_color:"Taustav\u00e4ri",text_none:"ei mit\u00e4\u00e4n",text_blink:"V\u00e4l\u00e4hdys",text_case:"Isot/pienet kirjaimet",text_striketrough:"Yliviivattu",text_underline:"Alleviivattu (Ctrl+U)",text_overline:"Yliviivattu",text_decoration:"Koristelu",text_color:"V\u00e4ri"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/fr_dlg.js b/js/tiny_mce/plugins/style/langs/fr_dlg.js new file mode 100755 index 000000000..16710c6fe --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.style_dlg',{text_lineheight:"Hauteur de ligne",text_variant:"Variante",text_style:"Style",text_weight:"Gras",text_size:"Taille",text_font:"Police",text_props:"Texte",positioning_tab:"Positionnement",list_tab:"Liste",border_tab:"Bordure",box_tab:"Bo\u00eete",block_tab:"Bloc",background_tab:"Fond",text_tab:"Texte",apply:"Appliquer",title:"\u00c9diter la feuille de style",clip:"Clip",placement:"Placement",overflow:"D\u00e9bordement",zindex:"Z-index",visibility:"Visibilit\u00e9",positioning_type:"Type",position:"Position",bullet_image:"Image de puce",list_type:"Type",color:"Couleur",height:"Hauteur",width:"Largeur",style:"Style",margin:"Marge",left:"Gauche",bottom:"Bas",right:"Droit",top:"Haut",same:"Identique pour tous",padding:"Espacement",box_clear:"Vider",box_float:"Flottant",box_height:"Hauteur",box_width:"Largeur",block_display:"Affichage",block_whitespace:"Fin de ligne",block_text_indent:"Indentation du texte",block_text_align:"Alignement du texte",block_vertical_alignment:"Alignement vertical",block_letterspacing:"Espacement des lettres",block_wordspacing:"Espacement des mots ",background_vpos:"Position verticale",background_hpos:"Position horizontale",background_attachment:"Attachement",background_repeat:"R\u00e9p\u00e9ter",background_image:"Image de fond",background_color:"Couleur de fond",text_none:"aucun",text_blink:"clignotant",text_case:"Casse",text_striketrough:"barr\u00e9",text_underline:"soulign\u00e9",text_overline:"ligne au-dessus",text_decoration:"D\u00e9coration",text_color:"Couleur"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/gl_dlg.js b/js/tiny_mce/plugins/style/langs/gl_dlg.js new file mode 100755 index 000000000..0b37ea4e1 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.style_dlg',{text_lineheight:"Ancho da fila",text_variant:"Variante",text_style:"Estilo",text_weight:"Peso",text_size:"Tama\u00f1o",text_font:"Fonte",text_props:"Texto",positioning_tab:"Posici\u00f3n",list_tab:"Lista",border_tab:"Borde",box_tab:"Caixa",block_tab:"Bloque",background_tab:"Fondo",text_tab:"Texto",apply:"Aplicar",title:"Editar Estilo CSS",clip:"Clip",placement:"Colocaci\u00f3n",overflow:"Desbodramento",zindex:"\u00cdndize Z",visibility:"Visibilidade",positioning_type:"Tipo",position:"Posici\u00f3n",bullet_image:"Imaxe da vi\u00f1eta",list_type:"Tipo",color:"Cor",height:"Alto",width:"Ancho",style:"Estilo",margin:"Marxe",left:"Esquerda",bottom:"Abaixo",right:"Dereita",top:"Arriba",same:"O mesmo en todos",padding:"Recheo",box_clear:"Limpar",box_float:"Float",box_height:"Alto",box_width:"Ancho",block_display:"Display",block_whitespace:"Espacio en branco",block_text_indent:"Sangr\u00eda",block_text_align:"Ali\u00f1aci\u00f3n do texto",block_vertical_alignment:"Ali\u00f1aci\u00f3n vertical",block_letterspacing:"Espacio entre letras",block_wordspacing:"Espacio entre verbas",background_vpos:"Posici\u00f3n vertical",background_hpos:"Posici\u00f3n horizontal",background_attachment:"Adxunto",background_repeat:"Repetir",background_image:"Imaxe de fondo",background_color:"Cor de fondo",text_none:"Neng\u00fan",text_blink:"Parpadeo",text_case:"Min\u00fas./May\u00fas.",text_striketrough:"Tachado",text_underline:"Suli\u00f1ado",text_overline:"Li\u00f1a superior",text_decoration:"Decorativos",text_color:"Cor"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/gu_dlg.js b/js/tiny_mce/plugins/style/langs/gu_dlg.js new file mode 100755 index 000000000..0cd6116a7 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/gu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gu.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/he_dlg.js b/js/tiny_mce/plugins/style/langs/he_dlg.js new file mode 100755 index 000000000..a29c03358 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.style_dlg',{text_lineheight:"\u05d2\u05d5\u05d1\u05d4 \u05e9\u05d5\u05e8\u05d4",text_variant:"Variant",text_style:"\u05e1\u05d2\u05e0\u05d5\u05df",text_weight:"\u05e2\u05d5\u05d1\u05d9",text_size:"\u05d2\u05d5\u05d3\u05dc",text_font:"\u05e4\u05d5\u05e0\u05d8",text_props:"\u05d8\u05e7\u05e1\u05d8",positioning_tab:"\u05de\u05d9\u05e7\u05d5\u05dd",list_tab:"\u05e8\u05e9\u05d9\u05de\u05d4",border_tab:"\u05d2\u05d1\u05d5\u05dc",box_tab:"\u05e7\u05d5\u05e4\u05e1\u05d0",block_tab:"\u05d7\u05e1\u05d5\u05dd",background_tab:"\u05e8\u05e7\u05e2",text_tab:"\u05d8\u05e7\u05e1\u05d8",apply:"\u05d4\u05d7\u05dc",title:"\u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea CSS",clip:"\u05e7\u05dc\u05d9\u05e4",placement:"\u05de\u05d9\u05e7\u05d5\u05dd",overflow:"\u05d2\u05dc\u05d9\u05e9\u05d4",zindex:"Z-index",visibility:"\u05e8\u05d0\u05d5\u05ea",positioning_type:"\u05e1\u05d5\u05d2",position:"\u05de\u05d9\u05e7\u05d5\u05dd",bullet_image:"Bullet image",list_type:"\u05e1\u05d5\u05d2",color:"\u05e6\u05d1\u05e2",height:"\u05d2\u05d5\u05d1\u05d4",width:"\u05e8\u05d5\u05d7\u05d1",style:"\u05e1\u05d2\u05e0\u05d5\u05df",margin:"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd",left:"\u05e9\u05de\u05d0\u05dc",bottom:"\u05ea\u05d7\u05ea\u05d9\u05ea",right:"\u05d9\u05de\u05d9\u05df",top:"\u05e2\u05dc\u05d9\u05d5\u05df",same:"\u05d0\u05d5\u05ea\u05d5 \u05d3\u05d1\u05e8 \u05e2\u05d1\u05d5\u05e8 \u05db\u05d5\u05dc\u05dd",padding:"\u05e8\u05d9\u05e4\u05d5\u05d3",box_clear:"\u05e0\u05e7\u05d4",box_float:"\u05d4\u05e6\u05e4\u05d4",box_height:"\u05d2\u05d5\u05d1\u05d4",box_width:"\u05e8\u05d5\u05d7\u05d1",block_display:"\u05d4\u05e6\u05d2",block_whitespace:"\u05e8\u05d5\u05d5\u05d7",block_text_indent:"\u05d4\u05d6\u05d7\u05d4",block_text_align:"\u05de\u05d9\u05e7\u05d5\u05dd \u05d8\u05e7\u05e1\u05d8",block_vertical_alignment:"Vertical alignment",block_letterspacing:"\u05de\u05e8\u05d7\u05e7 \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea",block_wordspacing:"\u05de\u05e8\u05d7\u05e7 \u05d1\u05d9\u05df \u05de\u05d9\u05dc\u05d9\u05dd",background_vpos:"\u05de\u05d9\u05e7\u05d5\u05dd \u05e8\u05d5\u05d7\u05d1\u05d9",background_hpos:"\u05de\u05d9\u05e7\u05d5\u05dd \u05d0\u05d5\u05e4\u05e7\u05d9",background_attachment:"\u05e7\u05d1\u05e6\u05d9\u05dd \u05de\u05e6\u05d5\u05e8\u05e4\u05d9\u05dd",background_repeat:"\u05d7\u05d6\u05d5\u05e8",background_image:"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2",background_color:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",text_none:"\u05dc\u05dc\u05d0",text_blink:"\u05d4\u05d1\u05d4\u05d5\u05d1",text_case:"Case",text_striketrough:"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4",text_underline:"\u05e9\u05d5\u05e8\u05d4 \u05de\u05ea\u05d7\u05ea",text_overline:"\u05e9\u05d5\u05e8\u05d4 \u05de\u05e2\u05dc",text_decoration:"\u05e2\u05d9\u05e6\u05d5\u05d1",text_color:"\u05e6\u05d1\u05e2"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/hi_dlg.js b/js/tiny_mce/plugins/style/langs/hi_dlg.js new file mode 100755 index 000000000..de82f9238 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/hi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hi.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/hr_dlg.js b/js/tiny_mce/plugins/style/langs/hr_dlg.js new file mode 100755 index 000000000..4fe1faea4 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/hr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hr.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/hu_dlg.js b/js/tiny_mce/plugins/style/langs/hu_dlg.js new file mode 100755 index 000000000..1915c45e9 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.style_dlg',{"text_lineheight":"Sormagass\u00e1g","text_variant":"V\u00e1ltozat","text_style":"St\u00edlus","text_weight":"Sz\u00e9less\u00e9g","text_size":"M\u00e9ret","text_font":"Bet\u0171t\u00edpus","text_props":"Sz\u00f6veg","positioning_tab":"Poz\u00edci\u00f3","list_tab":"Lista","border_tab":"Keret","box_tab":"Doboz","block_tab":"Blokk","background_tab":"H\u00e1tt\u00e9r","text_tab":"Sz\u00f6veg",apply:"Alkalmaz",title:"CSS st\u00edlus szerkest\u00e9se",clip:"Lev\u00e1g\u00e1s",placement:"Elhelyez\u00e9s",overflow:"Kifut\u00e1s",zindex:"Z-index",visibility:"L\u00e1that\u00f3s\u00e1g","positioning_type":"T\u00edpus",position:"Poz\u00edci\u00f3","bullet_image":"Elemk\u00e9p","list_type":"T\u00edpus",color:"Sz\u00edn",height:"Magass\u00e1g",width:"Sz\u00e9less\u00e9g",style:"St\u00edlus",margin:"Marg\u00f3",left:"Balra",bottom:"Lent",right:"Jobbra",top:"Fel\u00fcl",same:"Mindenhol ugyanaz",padding:"Bels\u0151 marg\u00f3","box_clear":"Lebeg\u00e9s (float) t\u00f6rl\u00e9se","box_float":"Lebeg\u00e9s (float)","box_height":"Magass\u00e1g","box_width":"Sz\u00e9less\u00e9g","block_display":"Megjelen\u00edt\u00e9s","block_whitespace":"\u00dcres helyek","block_text_indent":"Sz\u00f6veg beh\u00faz\u00e1sa","block_text_align":"Sz\u00f6veg igaz\u00edt\u00e1sa","block_vertical_alignment":"F\u00fcgg\u0151leges igaz\u00edt\u00e1s","block_letterspacing":"Bet\u0171t\u00e1vols\u00e1g","block_wordspacing":"Sz\u00f3t\u00e1vols\u00e1g","background_vpos":"F\u00fcgg\u0151leges hely","background_hpos":"V\u00edzszintes hely","background_attachment":"Csatolm\u00e1ny","background_repeat":"Ism\u00e9tl\u00e9s","background_image":"H\u00e1tt\u00e9rk\u00e9p","background_color":"H\u00e1tt\u00e9rsz\u00edn","text_none":"egyik sem","text_blink":"villog\u00e1s","text_case":"eset","text_striketrough":"\u00e1th\u00faz\u00e1s","text_underline":"alulh\u00faz\u00e1s","text_overline":"fel\u00fclh\u00faz\u00e1s","text_decoration":"dekor\u00e1ci\u00f3","text_color":"sz\u00edn"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/hy_dlg.js b/js/tiny_mce/plugins/style/langs/hy_dlg.js new file mode 100755 index 000000000..8e5f689be --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/hy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hy.style_dlg',{text_lineheight:"\u054f\u0578\u0572\u056b \u0562\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",text_variant:"Variant",text_style:"\u0548\u0573",text_weight:"\u0540\u0561\u057d\u057f\u0578\u0582\u0569\u0575\u0578\u0582\u0576",text_size:"\u0549\u0561\u0583\u057d",text_font:"\u054f\u0561\u057c\u0561\u057f\u0565\u057d\u0561\u056f",text_props:"\u054f\u0565\u0584\u057d\u057f",positioning_tab:"\u054f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574",list_tab:"\u0551\u0578\u0582\u0581\u0561\u056f",border_tab:"\u0535\u0566\u0580",box_tab:"Box",block_tab:"\u0532\u056c\u0578\u056f",background_tab:"\u0556\u0578\u0576",text_tab:"\u054f\u0565\u0584\u057d\u057f",apply:"\u0540\u0561\u057d\u057f\u0561\u057f\u0565\u056c",title:"CSS \u0578\u0573\u0565\u0580\u056b \u056d\u0574\u0562\u0561\u0563\u0580\u0578\u0582\u0574",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"\u054f\u0565\u057d\u0561\u0576\u0565\u056c\u056b\u0578\u0582\u0569\u0575\u0578\u0582\u0576",positioning_type:"\u054f\u0565\u057d\u0561\u056f",position:"\u0534\u056b\u0580\u0584",bullet_image:"Bullet image",list_type:"\u054f\u0565\u057d\u0561\u056f",color:"\u0533\u0578\u0582\u0575\u0576",height:"\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",width:"\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",style:"\u0548\u0573",margin:"Margin",left:"\u0541\u0561\u056d\u056b\u0581",bottom:"\u0546\u0565\u0580\u0584\u0587\u056b\u0581",right:"\u0531\u057b\u056b\u0581",top:"\u054e\u0565\u0580\u0587\u056b\u0581",same:"\u0544\u056b\u0587\u0576\u0578\u0582\u0575\u0576 \u0561\u0574\u0565\u0576 \u056b\u0576\u0579\u056b \u0570\u0561\u0574\u0561\u0580",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",box_width:"\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"\u054f\u0565\u0584\u057d\u057f\u056b \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",block_vertical_alignment:"\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",block_letterspacing:"\u0532\u0561\u0581\u0561\u0580\u056f\u0576\u0565\u0580 \u057f\u0561\u057c\u0565\u0580\u056b \u0574\u056b\u057b\u0587",block_wordspacing:"\u0532\u0561\u0581\u0561\u0580\u056f\u0576\u0565\u0580 \u0562\u0561\u057c\u0565\u0580\u056b \u0574\u056b\u057b\u0587",background_vpos:"\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u057f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574",background_hpos:"\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u057f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574",background_attachment:"Attachment",background_repeat:"\u053f\u0580\u056f\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",background_image:"\u0556\u0578\u0576\u0561\u0575\u056b\u0576 \u0576\u056f\u0561\u0580",background_color:"\u0556\u0578\u0576\u056b \u0563\u0578\u0582\u0575\u0576",text_none:"\u0578\u0579\u056b\u0576\u0579",text_blink:"\u0569\u0561\u0580\u0569\u0578\u0582\u0574\u0576\u0565\u0580",text_case:"Case",text_striketrough:"\u0561\u0580\u057f\u0561\u0563\u056e\u057e\u0561\u056e",text_underline:"\u057d\u057f\u0578\u0580\u056b\u0576 \u0563\u056b\u056e",text_overline:"\u057e\u0565\u0580\u056b\u0576 \u0563\u056b\u056e",text_decoration:"\u0541\u0587\u0561\u057e\u0578\u0580\u0578\u0582\u0574",text_color:"\u0533\u0578\u0582\u0575\u0576"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ia_dlg.js b/js/tiny_mce/plugins/style/langs/ia_dlg.js new file mode 100755 index 000000000..2edb17560 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ia_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ia.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u53d8\u4f53",text_style:"\u6837\u5f0f",text_weight:"\u5bbd\u5ea6",text_size:"\u5927\u5c0f",text_font:"\u5b57\u4f53",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u8fb9\u6846",box_tab:"\u76d2\u6a21\u578b",block_tab:"\u533a\u5757",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u5e94\u7528",title:"\u7f16\u8f91 CSS \u6837\u5f0f\u8868",clip:"\u526a\u8f91",placement:"\u5e03\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z\u5750\u6807",visibility:"\u662f\u5426\u53ef\u89c1",positioning_type:"\u4f4d\u7f6e\u7c7b\u578b",position:"\u56fe\u7247\u4f4d\u7f6e",bullet_image:"\u6e05\u5355\u56fe\u7247",list_type:"\u5217\u8868\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u8fb9\u8ddd",left:"\u5de6\u4fa7",bottom:"\u5e95\u90e8",right:"\u53f3\u4fa7",top:"\u9876\u90e8",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u8ddd",box_clear:"\u6e05\u9664",box_float:"\u6d6e\u52a8",box_height:"\u9ad8\u5ea6",box_width:"\u5bbd\u5ea6",block_display:"\u663e\u793a\u65b9\u5f0f",block_whitespace:"\u7a7a\u683c",block_text_indent:"\u6587\u5b57\u7f29\u8fdb",block_text_align:"\u6587\u5b57\u5bf9\u9f50",block_vertical_alignment:"\u5782\u76f4\u5bf9\u9f50\u65b9\u5f0f",block_letterspacing:"\u5b57\u6bcd\u95f4\u8ddd",block_wordspacing:"\u8bcd\u95f4\u8ddd",background_vpos:"\u5782\u76f4\u4f4d\u7f6e",background_hpos:"\u6c34\u5e73\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u590d",background_image:"\u80cc\u666f\u56fe\u7247",background_color:"\u80cc\u666f\u989c\u8272",text_none:"\u65e0",text_blink:"\u95ea\u70c1",text_case:"\u5b57\u4f53",text_striketrough:"\u4e2d\u5212\u7ebf",text_underline:"\u5e95\u7ebf",text_overline:"\u4e0a\u5212\u7ebf",text_decoration:"\u88c5\u9970",text_color:"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/id_dlg.js b/js/tiny_mce/plugins/style/langs/id_dlg.js new file mode 100755 index 000000000..326756fb9 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ii_dlg.js b/js/tiny_mce/plugins/style/langs/ii_dlg.js new file mode 100755 index 000000000..d6d940cfb --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ii_dlg.js @@ -0,0 +1,63 @@ +tinyMCE.addI18n('ii.style_dlg',{ +title:"\u7F16\u8F91CSS\u6837\u5F0F\u8868", +apply:"\u5E94\u7528", +text_tab:"\u6587\u5B57", +background_tab:"\u80CC\u666F", +block_tab:"\u5757", +box_tab:"\u7BB1\u578B", +border_tab:"\u8FB9\u6846", +list_tab:"\u5217\u8868", +positioning_tab:"\u4F4D\u7F6E", +text_props:"\u6587\u5B57", +text_font:"\u5B57\u4F53", +text_size:"\u5C3A\u5BF8", +text_weight:"\u5BBD\u5EA6", +text_style:"\u6837\u5F0F", +text_variant:"\u53D8\u4F53", +text_lineheight:"\u884C\u9AD8", +text_case:"\u5B57\u4F53", +text_color:"\u989C\u8272", +text_decoration:"\u4FEE\u9970", +text_overline:"\u4E0A\u5212\u7EBF", +text_underline:"\u5E95\u7EBF", +text_striketrough:"\u5220\u9664\u7EBF", +text_blink:"\u95EA\u70C1", +text_none:"\u65E0", +background_color:"\u80CC\u666F\u989C\u8272", +background_image:"\u80CC\u666F\u56FE\u7247", +background_repeat:"\u91CD\u590D", +background_attachment:"\u9644\u4EF6", +background_hpos:"\u5782\u76F4\u4F4D\u7F6E", +background_vpos:"\u6C34\u51C6\u4F4D\u7F6E", +block_wordspacing:"\u5355\u5B57\u95F4\u8DDD", +block_letterspacing:"\u5B57\u5143\u95F4\u8DDD", +block_vertical_alignment:"\u6C34\u51C6\u5BF9\u9F50\u65B9\u5F0F", +block_text_align:"\u6587\u5B57\u5BF9\u9F50", +block_text_indent:"\u6587\u5B57\u7F29\u6392", +block_whitespace:"\u7A7A\u767D", +block_display:"\u663E\u793A\u65B9\u5F0F", +box_width:"\u5BBD\u5EA6", +box_height:"\u9AD8\u5EA6", +box_float:"\u6D6E\u52A8", +box_clear:"\u6E05\u9664", +padding:"\u7559\u767D", +same:"\u5168\u90E8\u4E00\u6837", +top:"\u4E0A\u65B9", +right:"\u9760\u53F3", +bottom:"\u4E0B\u65B9", +left:"\u9760\u5DE6", +margin:"\u8FB9\u754C", +style:"\u6837\u5F0F", +width:"\u5BBD\u5EA6", +height:"\u9AD8\u5EA6", +color:"\u989C\u8272", +list_type:"\u7C7B\u578B", +bullet_image:"\u9879\u76EE\u56FE\u793A", +position:"\u56FE\u793A\u4F4D\u7F6E", +positioning_type:"\u7C7B\u578B", +visibility:"\u53EF\u89C1\u6027", +zindex:"Z\u8F74\u6DF1\u5EA6", +overflow:"\u6EA2\u51FA", +placement:"\u5E03\u7F6E", +clip:"\u526A\u8F91" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/is_dlg.js b/js/tiny_mce/plugins/style/langs/is_dlg.js new file mode 100755 index 000000000..54b974ba9 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/is_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('is.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/it_dlg.js b/js/tiny_mce/plugins/style/langs/it_dlg.js new file mode 100755 index 000000000..45109f854 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.style_dlg',{text_lineheight:"Altezza linea",text_variant:"Variante",text_style:"Stile",text_weight:"Spessore",text_size:"Dimensione",text_font:"Carattere",text_props:"Testo",positioning_tab:"Posizionamento",list_tab:"Liste",border_tab:"Bordi",box_tab:"Contenitore",block_tab:"Blocco",background_tab:"Sfondo",text_tab:"Testo",apply:"Applica",title:"Modifica stile CSS",clip:"Clip",placement:"Piazzamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilit\u00e0",positioning_type:"Tipo",position:"Posizione",bullet_image:"Immagine Punto",list_type:"Tipo",color:"Colore",height:"Altezza",width:"Larghezza",style:"Stile",margin:"Margine",left:"Sinistro",bottom:"Inferiore",right:"Destro",top:"Superiore",same:"Uguale per tutti",padding:"Spazio dal bordo",box_clear:"Pulito",box_float:"Fluttuante",box_height:"Altezza",box_width:"Larghezza",block_display:"Visualizzazione",block_whitespace:"Whitespace",block_text_indent:"Indentazione testo",block_text_align:"Allineamento testo",block_vertical_alignment:"Allineamento verticale",block_letterspacing:"Spaziatura caratteri",block_wordspacing:"Spaziatura parole",background_vpos:"Posizione verticale",background_hpos:"Posizione orizzontale",background_attachment:"Allegato",background_repeat:"Repetizione",background_image:"Immagine sfondo",background_color:"Colore sfondo",text_none:"nessuna",text_blink:"lampeggiante",text_case:"Tipo",text_striketrough:"barrato",text_underline:"sottolineato",text_overline:"sopralineato",text_decoration:"Decorazione",text_color:"Colore"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ja_dlg.js b/js/tiny_mce/plugins/style/langs/ja_dlg.js new file mode 100755 index 000000000..700f19489 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ja_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ja.style_dlg',{"text_lineheight":"\u884c\u9ad8\u3055","text_variant":"\u5909\u5f62","text_style":"\u30b9\u30bf\u30a4\u30eb","text_weight":"\u592a\u3055","text_size":"\u30b5\u30a4\u30ba","text_font":"\u30d5\u30a9\u30f3\u30c8","text_props":"Text","positioning_tab":"\u30dd\u30b8\u30b7\u30e7\u30f3","list_tab":"\u30ea\u30b9\u30c8","border_tab":"\u67a0\u7dda","box_tab":"\u30dc\u30c3\u30af\u30b9","block_tab":"\u30d6\u30ed\u30c3\u30af","background_tab":"\u80cc\u666f","text_tab":"\u6587\u5b57",apply:"\u9069\u7528",title:"CSS\u7de8\u96c6",clip:"\u5207\u308a\u629c\u304d",placement:"\u4f4d\u7f6e",overflow:"\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc",zindex:"Z-Index",visibility:"\u8868\u793a","positioning_type":"\u914d\u7f6e\u65b9\u6cd5",position:"\u30de\u30fc\u30ab\u30fc\u8868\u793a\u4f4d\u7f6e","bullet_image":"\u30de\u30fc\u30ab\u30fc\u753b\u50cf","list_type":"\u30de\u30fc\u30ab\u30fc\u7a2e\u985e",color:"\u8272",height:"\u9ad8\u3055",width:"\u5e45",style:"\u30b9\u30bf\u30a4\u30eb",margin:"\u30de\u30fc\u30b8\u30f3",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u5168\u3066\u540c\u3058\u306b\u3059\u308b",padding:"\u30d1\u30c7\u30a3\u30f3\u30b0","box_clear":"\u56de\u308a\u8fbc\u307f\u89e3\u9664","box_float":"\u56de\u308a\u8fbc\u307f","box_height":"\u9ad8\u3055","box_width":"\u5e45","block_display":"\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4","block_whitespace":"\u7a7a\u767d\u6587\u5b57","block_text_indent":"\u30a4\u30f3\u30c7\u30f3\u30c8","block_text_align":"\u6c34\u5e73\u914d\u7f6e","block_vertical_alignment":"\u5782\u76f4\u914d\u7f6e","block_letterspacing":"\u6587\u5b57\u9593\u9694","block_wordspacing":"\u5358\u8a9e\u611f\u899a","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"Attachment","background_repeat":"\u7e70\u308a\u8fd4\u3057","background_image":"\u80cc\u666f\u753b\u50cf","background_color":"\u80cc\u666f\u8272","text_none":"\u306a\u3057","text_blink":"\u70b9\u6ec5","text_case":"\u5927\u6587\u5b57/\u5c0f\u6587\u5b57","text_striketrough":"\u6253\u6d88\u3057\u7dda","text_underline":"\u4e0b\u7dda","text_overline":"\u4e0a\u7dda","text_decoration":"\u88c5\u98fe","text_color":"\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ka_dlg.js b/js/tiny_mce/plugins/style/langs/ka_dlg.js new file mode 100755 index 000000000..6d2acf423 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ka_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ka.style_dlg',{text_lineheight:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",text_variant:"\u10d5\u10d0\u10e0\u10d8\u10d0\u10dc\u10e2\u10d8",text_style:"\u10e1\u10e2\u10d8\u10da\u10d8",text_weight:"\u10e1\u10d8\u10e1\u10e5\u10d4",text_size:"\u10d6\u10dd\u10db\u10d0",text_font:"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8",text_props:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",positioning_tab:"\u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10dd\u10dc\u10d8\u10e0\u10d4\u10d1\u10d0",list_tab:"\u10e1\u10d8\u10d0",border_tab:"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",box_tab:"\u10d9\u10d8\u10d3\u10d4\u10d4\u10d1\u10d8",block_tab:"\u10d1\u10da\u10dd\u10d9\u10d8",background_tab:"\u10e4\u10dd\u10dc\u10d8",text_tab:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",apply:"\u10d2\u10d0\u10db\u10dd\u10d5\u10d8\u10e7\u10d4\u10dc\u10dd\u10d7",title:"CSS \u10e1\u10e2\u10d8\u10da\u10d8\u10e1 \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10dd\u10e0\u10d8",clip:"\u10db\u10dd\u10d9\u10d5\u10d4\u10d7\u10d0",placement:"\u10d2\u10d0\u10dc\u10d7\u10d0\u10d5\u10e1\u10d4\u10d1\u10d0",overflow:"\u10d2\u10d0\u10d3\u10d0\u10d5\u10e1\u10d4\u10d1\u10d0",zindex:"Z-\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",visibility:"\u10ee\u10d8\u10da\u10d5\u10d0\u10d3\u10dd\u10d1\u10d0",positioning_type:"\u10e2\u10d8\u10de\u10d8",position:"\u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0",bullet_image:"\u10db\u10d0\u10e0\u10d9\u10d4\u10e0\u10d8",list_type:"\u10e2\u10d8\u10de\u10d8",color:"\u10e4\u10d4\u10e0\u10d8",height:"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",width:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",style:"\u10e1\u10e2\u10d8\u10da\u10d8",margin:"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",bottom:"\u10e5\u10d5\u10d4\u10db\u10dd\u10d7",right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",top:"\u10d6\u10d4\u10db\u10dd\u10d7",same:"\u10e7\u10d5\u10d4\u10da\u10d0\u10e1\u10d7\u10d5\u10d8\u10e1 \u10d4\u10e0\u10d7\u10dc\u10d0\u10d4\u10e0\u10d0\u10d3",padding:"\u10db\u10d8\u10dc\u10d3\u10d5\u10e0\u10d4\u10d1\u10d8",box_clear:"\u10db\u10dd\u10e1\u10e3\u10e4\u10d7\u10d0\u10d5\u10d4\u10d1\u10d0",box_float:"\u10db\u10dd\u10ea\u10e3\u10e0\u10d0\u10d5\u10d4",box_height:"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",box_width:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",block_display:"\u10d0\u10e1\u10d0\u10ee\u10d5\u10d0",block_whitespace:"\u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",block_text_indent:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",block_text_align:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",block_vertical_alignment:"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",block_letterspacing:"\u10d0\u10e1\u10dd\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",block_wordspacing:"\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",background_vpos:"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0",background_hpos:"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0",background_attachment:"\u10db\u10d8\u10d1\u10db\u10d0",background_repeat:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",background_image:"\u10e4\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",background_color:"\u10e4\u10dd\u10dc\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",text_none:"\u10e7\u10d5\u10d4\u10da\u10d0\u10e4\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",text_blink:"\u10db\u10dd\u10ea\u10d8\u10db\u10ea\u10d8\u10db\u10d4",text_case:"\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d8",text_striketrough:"\u10d2\u10d0\u10d3\u10d0\u10ee\u10d0\u10d6\u10e3\u10da\u10d8",text_underline:"\u10db\u10dd\u10ee\u10d0\u10d6\u10e3\u10da\u10d8",text_overline:"\u10d6\u10d4\u10d3\u10d0 \u10ee\u10d0\u10d6\u10d8\u10d7",text_decoration:"\u10d2\u10d0\u10e4\u10dd\u10e0\u10db\u10d4\u10d1\u10d0",text_color:"\u10e4\u10d4\u10e0\u10d8"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/kl_dlg.js b/js/tiny_mce/plugins/style/langs/kl_dlg.js new file mode 100755 index 000000000..eef4f01c3 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/kl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('kl.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/km_dlg.js b/js/tiny_mce/plugins/style/langs/km_dlg.js new file mode 100755 index 000000000..479a159fe --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/km_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('km.style_dlg',{text_lineheight:"\u1780\u1798\u17d2\u1796\u179f\u17cb\u1787\u17bd\u179a",text_variant:"\u1780\u17c6\u179b\u17b6\u1799",text_style:"\u179a\u1785\u1793\u17b6\u1794\u17d0\u1791\u17d2\u1798",text_weight:"\u1780\u1798\u17d2\u179a\u17b6\u179f\u17cb",text_size:"\u1791\u17c6\u17a0\u17c6",text_font:"\u1796\u17bb\u1798\u17d2\u1796\u17a2\u1780\u17d2\u179f\u179a",text_props:"\u17a2\u178f\u17d2\u1790\u1794\u1791",positioning_tab:"\u1780\u17b6\u179a\u1780\u17c6\u178e\u178f\u17cb\u1791\u17b8\u178f\u17b6\u17c6\u1784",list_tab:"\u1794\u1789\u17d2\u1787\u17b8",border_tab:"\u179f\u17ca\u17bb\u1798",box_tab:"\u1794\u17d2\u179a\u17a2\u1794\u17cb",block_tab:"\u1794\u17d2\u179b\u17bb\u1780",background_tab:"\u1795\u17d2\u1791\u17c2\u1781\u17b6\u1784\u1780\u17d2\u179a\u17c4\u1799",text_tab:"\u17a2\u178f\u17d2\u1790\u1794\u1791",apply:"\u17a2\u1793\u17bb\u179c\u178f\u17d2\u178f",title:"\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u179a\u1785\u1793\u17b6\u1794\u17d0\u1791\u17d2\u1798 CSS",clip:"\u178f\u1798\u17d2\u1794\u17c0\u178f\u1781\u17d2\u1791\u17b6\u179f\u17cb",placement:"\u1780\u17b6\u179a\u178a\u17b6\u1780\u17cb",overflow:"\u179b\u17be\u179f\u1785\u17c6\u178e\u17bb\u17c7",zindex:"\u17a2\u17d0\u1780\u17d2\u179f Z",visibility:"\u1797\u17b6\u1796\u17a2\u17b6\u1785\u1798\u17be\u179b\u1783\u17be\u1789",positioning_type:"\u1794\u17d2\u179a\u1797\u17c1\u1791",position:"\u1791\u17b8\u178f\u17b6\u17c6\u1784",bullet_image:"\u179a\u17bc\u1794\u1797\u17b6\u1796\u1785\u17c6\u178e\u17bb\u1785",list_type:"\u1794\u17d2\u179a\u1797\u17c1\u1791",color:"\u1796\u178e\u17cc",height:"\u1780\u1798\u17d2\u1796\u179f\u17cb",width:"\u1791\u1791\u17b9\u1784",style:"\u179a\u1785\u1793\u17b6\u1794\u17d0\u1791\u17d2\u1798",margin:"\u179a\u17b9\u1798",left:"\u1786\u17d2\u179c\u17c1\u1784",bottom:"\u1794\u17b6\u178f",right:"\u179f\u17d2\u178a\u17b6\u17c6",top:"\u1780\u17c6\u1796\u17bc\u179b",same:"\u178f\u17bc\u1785\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb",padding:"\u1785\u1793\u17d2\u179b\u17c4\u17c7",box_clear:"\u179f\u17c6\u17a2\u17b6\u178f",box_float:"\u17a2\u178e\u17d2\u178a\u17c2\u178f",box_height:"\u1780\u1798\u17d2\u1796\u179f\u17cb",box_width:"\u1791\u1791\u17b9\u1784",block_display:"\u1794\u1784\u17d2\u17a0\u17b6\u1789",block_whitespace:"\u1791\u1791\u17c1\u179f\u17d2\u17a2\u17b6\u178f",block_text_indent:"\u1785\u17bc\u179b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u17a2\u178f\u17d2\u1790\u1794\u1791",block_text_align:"\u178f\u1798\u17d2\u179a\u17b9\u1798\u17a2\u178f\u17d2\u1790\u1794\u1791",block_vertical_alignment:"\u178f\u1798\u17d2\u179a\u17b9\u1798\u1794\u1789\u17d2\u1788\u179a",block_letterspacing:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u17a2\u1780\u17d2\u179f\u179a",block_wordspacing:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1796\u17b6\u1780\u17d2\u1799",background_vpos:"\u1791\u17b8\u178f\u17b6\u17c6\u1784\u1794\u1789\u17d2\u1788\u179a",background_hpos:"\u1791\u17b8\u178f\u17b6\u17c6\u1784\u1795\u17d2\u178a\u17c1\u1780",background_attachment:"\u17af\u1780\u179f\u17b6\u179a\u1797\u17d2\u1787\u17b6\u1794\u17cb",background_repeat:"\u1792\u17d2\u179c\u17be\u1798\u17d2\u178a\u1784\u1791\u17c0\u178f",background_image:"\u179a\u17bc\u1794\u1797\u17b6\u1796\u1795\u17d2\u1791\u17c3\u1781\u17b6\u1784\u1780\u17d2\u179a\u17c4\u1799",background_color:"\u1796\u178e\u17cc\u1795\u17d2\u1791\u17c3\u1781\u17b6\u1784\u1780\u17d2\u179a\u17c4\u1799",text_none:"\u1782\u17d2\u1798\u17b6\u1793",text_blink:"\u1797\u17d2\u179b\u17b9\u1794\u1797\u17d2\u179b\u17c2\u178f",text_case:"\u1780\u179a\u178e\u17b8",text_striketrough:"\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u1786\u17bc\u178f",text_underline:"\u1782\u17bc\u179f\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u1780\u17d2\u179a\u17c4\u1798",text_overline:"\u1782\u17bc\u179f\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u179b\u17be",text_decoration:"\u1780\u17b6\u179a\u178f\u17bb\u1794\u178f\u17c2\u1784",text_color:"\u1796\u178e\u17cc"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ko_dlg.js b/js/tiny_mce/plugins/style/langs/ko_dlg.js new file mode 100755 index 000000000..05cd8362e --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ko_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ko.style_dlg',{text_lineheight:"\ud589 \ub192\uc774",text_variant:"Variant",text_style:"\uc2a4\ud0c0\uc77c",text_weight:"\uad75\uae30",text_size:"\ud06c\uae30",text_font:"\ud3f0\ud2b8",text_props:"\ud14d\uc2a4\ud2b8",positioning_tab:"\uc704\uce58",list_tab:"\ub9ac\uc2a4\ud2b8",border_tab:"\ud14c\ub450\ub9ac\uc120",box_tab:"\ubc15\uc2a4",block_tab:"\ube14\ub85d",background_tab:"\ubc30\uacbd",text_tab:"\ud14d\uc2a4\ud2b8",apply:"\uc801\uc6a9",title:"CSS\ud3b8\uc9d1",clip:"Clip",placement:"\uc704\uce58(placement)",overflow:"\uc624\ubc84\ud50c\ub85c\uc6b0",zindex:"Z-index",visibility:"\uac00\uc2dc\uc131",positioning_type:"\ud0c0\uc785",position:"\uc704\uce58",bullet_image:"\ube14\ub9bf \uc774\ubbf8\uc9c0",list_type:"\ubaa9\ub85d\uc885\ub958",color:"\uc0c9",height:"\ub192\uc774",width:"\ud3ed",style:"\uc2a4\ud0c0\uc77c",margin:"\ub9c8\uc9c4",left:"\uc88c",bottom:"\ud558",right:"\uc6b0",top:"\uc0c1",same:"\ubaa8\ub450 \ub611\uac19\uc774",padding:"padding",box_clear:"Clear",box_float:"float",box_height:"\ub192\uc774",box_width:"\ud3ed",block_display:"\ud45c\uc2dc",block_whitespace:"\uacf5\ubc31 \ubb38\uc790",block_text_indent:"\ub4e4\uc5ec\uc4f0\uae30",block_text_align:"\ud14d\uc2a4\ud2b8 \uc815\ub82c",block_vertical_alignment:"\uc218\uc9c1 \uc704\uce58",block_letterspacing:"\ubb38\uc790 \uac04\uaca9",block_wordspacing:"\ub2e8\uc5b4 \uac04\uaca9",background_vpos:"\uc218\uc9c1 \uc704\uce58",background_hpos:"\uc218\ud3c9 \uc704\uce58",background_attachment:"\ucca8\ubd80",background_repeat:"\ubc18\ubcf5",background_image:"\ubc30\uacbd \uc774\ubbf8\uc9c0",background_color:"\ubc30\uacbd\uc0c9",text_none:"\uc5c6\uc74c",text_blink:"\uc810\uba78",text_case:"\ub300/\uc18c\ubb38\uc790",text_striketrough:"\ucde8\uc18c\uc120",text_underline:"\ubc11\uc904",text_overline:"\uc717\uc904",text_decoration:"\uc7a5\uc2dd",text_color:"\uc0c9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/lb_dlg.js b/js/tiny_mce/plugins/style/langs/lb_dlg.js new file mode 100755 index 000000000..56009130c --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/lb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lb.style_dlg',{text_lineheight:"Zeilenh\u00e9icht",text_variant:"Variant",text_style:"Stil",text_weight:"D\u00e9ckt",text_size:"Gr\u00e9isst",text_font:"Schr\u00ebftaart",text_props:"Text",positioning_tab:"Position\u00e9ierung",list_tab:"L\u00ebscht",border_tab:"Rumm",box_tab:"Box",block_tab:"Block",background_tab:"Hannergrond",text_tab:"Text",apply:"Iwwerhuelen",title:"CSS-Styles beaarbechten",clip:"Ausschn\u00ebtt",placement:"Plaz\u00e9ierung",overflow:"Verhale bei Iwwergr\u00e9isst",zindex:"Z-W\u00e4ert",visibility:"Siichtbar",positioning_type:"Aart vun der Position\u00e9ierung",position:"Position\u00e9ierung",bullet_image:"L\u00ebschtepunkt-Grafik",list_type:"L\u00ebschtepunkt-Aart",color:"Textfuerf",height:"H\u00e9icht",width:"Breet",style:"Format",margin:"Baussechten Ofstand",left:"L\u00e9nks",bottom:"\u00cbnnen",right:"Riets",top:"Uewen",same:"All selwecht",padding:"Banneschten Ofstand",box_clear:"\u00cbmfl\u00e9issung verh\u00ebnneren",box_float:"\u00cbmfl\u00e9issung",box_height:"H\u00e9icht",box_width:"Breet",block_display:"\u00cbmbrochverhalen",block_whitespace:"Automateschen \u00cbmbroch",block_text_indent:"Ar\u00e9ckung",block_text_align:"Ausriichtung",block_vertical_alignment:"Vertikal Ausriichtung",block_letterspacing:"Buschtawenofstand",block_wordspacing:"Wuertofstand",background_vpos:"Positioun Y",background_hpos:"Positioun X",background_attachment:"Waasserzeecheneffekt",background_repeat:"Widderhuelung",background_image:"Hannergrondbild",background_color:"Hannergrondfuerf",text_none:"keng",text_blink:"bl\u00ebnkend",text_case:"Schreiwung",text_striketrough:"duerchgestrach",text_underline:"\u00ebnnerstrach",text_overline:"iwwerstrach",text_decoration:"Gestaltung",text_color:"Fuerf"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/lt_dlg.js b/js/tiny_mce/plugins/style/langs/lt_dlg.js new file mode 100755 index 000000000..06cb8500e --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.style_dlg',{text_lineheight:"Eilut\u0117s auk\u0161tis",text_variant:"Variantas",text_style:"Stilius",text_weight:"Storis",text_size:"Dydis",text_font:"\u0160riftas",text_props:"Tekstas",positioning_tab:"Pozicionavimas",list_tab:"S\u0105ra\u0161as",border_tab:"R\u0117melis",box_tab:"D\u0117\u017eut\u0117",block_tab:"Blokas",background_tab:"Fonas",text_tab:"Tekstas",apply:"Taikyti",title:"Redaguoti CSS stili\u0173",clip:"\u012era\u0161as",placement:"Talpinimas",overflow:"Perpildymas",zindex:"Z-indeksas",visibility:"Matomumas",positioning_type:"Tipas",position:"Pozicija",bullet_image:"\u017denklelio paveiksl\u0117lis",list_type:"Tipas",color:"Spalva",height:"Auk\u0161tis",width:"Ilgis",style:"Stilius",margin:"Para\u0161t\u0117",left:"Kair\u0117je",bottom:"Apa\u010dioje",right:"De\u0161in\u0117je",top:"Vir\u0161uje",same:"Tas pats visiems",padding:"U\u017epildymas",box_clear:"I\u0161valyti",box_float:"Slankus",box_height:"Auk\u0161tis",box_width:"Ilgis",block_display:"Rodymas",block_whitespace:"Tarpai",block_text_indent:"Teksto atitraukimas",block_text_align:"Teksto lygiavimas",block_vertical_alignment:"Vertikalus lygiavimas",block_letterspacing:"Tarpai tarp raid\u017ei\u0173",block_wordspacing:"Tarpai tarp \u017eod\u017ei\u0173",background_vpos:"Vertikali pozicija",background_hpos:"Horizontali pozicija",background_attachment:"Priedas",background_repeat:"Kartoti",background_image:"Fono paveiksl\u0117lis",background_color:"Fono spalva",text_none:"joks",text_blink:"mirks\u0117jimas",text_case:"Ma\u017eosios/did\u017eiosios raid\u0117s",text_striketrough:"perbraukta",text_underline:"pabraukta apa\u010dioje",text_overline:"pabraukta vir\u0161uje",text_decoration:"Dekoracija",text_color:"Spalva"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/lv_dlg.js b/js/tiny_mce/plugins/style/langs/lv_dlg.js new file mode 100755 index 000000000..c3a3b5c0c --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Klips",placement:"Izvietojums",overflow:"P\u0101rm\u0113rs",zindex:"Z-index",visibility:"Redzam\u012bba",positioning_type:"Tips",position:"Poz\u012bcija",bullet_image:"Bullet bilde",list_type:"Tips",color:"Kr\u0101sa",height:"Augstums",width:"Platums",style:"St\u012bls",margin:"Mala",left:"Pa kreisi",bottom:"Apak\u0161a",right:"Pa labi",top:"Aug\u0161a",same:"Same for all",padding:"Atstarpe",box_clear:"Clear",box_float:"Float",box_height:"Augstums",box_width:"Platums",block_display:"Display",block_whitespace:"Tuk\u0161ais laukums",block_text_indent:"\u00c9crit indent",block_text_align:"Teksta izl\u012bdzin\u0101jums",block_vertical_alignment:"Vertik\u0101lais izl\u012bdzin\u0101jums",block_letterspacing:"Burtu atstarpe",block_wordspacing:"V\u0101rdu atstarpe",background_vpos:"Vertik\u0101l\u0101 poz\u012bcija",background_hpos:"Horizont\u0101l\u0101 poz\u012bcija",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/mk_dlg.js b/js/tiny_mce/plugins/style/langs/mk_dlg.js new file mode 100755 index 000000000..00b5428fa --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/mk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mk.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ml_dlg.js b/js/tiny_mce/plugins/style/langs/ml_dlg.js new file mode 100755 index 000000000..c56213510 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ml_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ml.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/mn_dlg.js b/js/tiny_mce/plugins/style/langs/mn_dlg.js new file mode 100755 index 000000000..3ac2a8cc7 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/mn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mn.style_dlg',{text_lineheight:"\u041c\u04e9\u0440\u043d\u0438\u0439 \u04e9\u043d\u0434\u04e9\u0440",text_variant:"\u0412\u0430\u0440\u0438\u0430\u043d\u0442",text_style:"\u0425\u044d\u043b\u0431\u044d\u0440",text_weight:"\u04e8\u0440\u0433\u04e9\u043d \u043d\u0430\u0440\u0438\u0439\u043d",text_size:"\u0425\u044d\u043c\u0436\u044d\u044d",text_font:"\u0424\u043e\u043d\u0442",text_props:"\u0411\u0438\u0447\u0432\u044d\u0440",positioning_tab:"\u0411\u0430\u0439\u0440\u0448\u0438\u043b",list_tab:"\u0416\u0430\u0433\u0441\u0430\u0430\u043b\u0442",border_tab:"\u0425\u04af\u0440\u044d\u044d",box_tab:"\u0425\u0430\u0439\u0440\u0446\u0430\u0433",block_tab:"\u0411\u043b\u043e\u043a",background_tab:"\u0414\u044d\u0432\u0441\u0433\u044d\u0440",text_tab:"\u0411\u0438\u0447\u0432\u044d\u0440",apply:"\u0425\u044d\u0440\u044d\u0433\u043b\u044d\u0445",title:"CSS-Styles \u0437\u0430\u0441\u0432\u0430\u0440\u043b\u0430\u0445",clip:"\u0422\u0430\u0439\u0440\u0434\u0430\u0441",placement:"\u0411\u0430\u0439\u0440\u0448\u0438\u043b",overflow:"\u0425\u044d\u0442\u044d\u0440\u0441\u044d\u043d \u0445\u044d\u043c\u0436\u044d\u044d\u043d\u0438\u0439 \u0445\u0430\u0440\u044c\u0446\u0430\u0430",zindex:"Z \u0443\u0442\u0433\u0430",visibility:"\u0425\u0430\u0440\u0430\u0433\u0434\u0430\u0445\u0443\u0439\u0446",positioning_type:"\u0411\u0430\u0439\u0440\u0448\u043b\u044b\u043d \u0442\u04e9\u0440\u04e9\u043b",position:"\u0411\u0430\u0439\u0440\u0448\u0438\u043b",bullet_image:"\u0413\u0440\u0430\u0444\u0438\u043a \u0442\u043e\u043e\u0447\u0438\u043b\u0442\u044b\u043d \u0446\u044d\u0433",list_type:"\u0422\u043e\u043e\u0447\u0438\u043b\u0442\u044b\u043d \u0446\u044d\u0433\u0438\u0439\u043d \u0445\u044d\u043b\u0431\u044d\u0440",color:"\u0411\u0438\u0447\u0432\u044d\u0440\u0438\u0439\u043d \u04e9\u043d\u0433\u04e9",height:"\u04e8\u043d\u0434\u04e9\u0440",width:"\u04e8\u0440\u0433\u04e9\u043d",style:"\u0424\u043e\u0440\u043c\u0430\u0442",margin:"\u0413\u0430\u0434\u0430\u0430\u0434 \u0437\u0430\u0439",left:"\u0417\u04af\u04af\u043d",bottom:"\u0414\u043e\u043e\u0440",right:"\u0411\u0430\u0440\u0443\u0443\u043d",top:"\u0414\u044d\u044d\u0440",same:"\u0411\u04af\u0433\u0434 \u0438\u0436\u0438\u043b",padding:"\u0414\u043e\u0442\u043e\u043e\u0434 \u0437\u0430\u0439",box_clear:"\u0413\u04af\u0439\u043b\u0433\u044d\u043b\u0442 \u0445\u0430\u0430\u0445",box_float:"\u0413\u04af\u0439\u043b\u0433\u044d\u043b\u0442",box_height:"\u04e8\u043d\u0434\u04e9\u0440",box_width:"\u04e8\u0440\u0433\u04e9\u043d",block_display:"\u041e\u0440\u043e\u043e\u0445 \u0445\u044d\u043b\u0431\u044d\u0440",block_whitespace:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442 \u043c\u04e9\u0440 \u043e\u0440\u043e\u043e\u043b\u0442",block_text_indent:"\u0414\u043e\u0433\u043e\u043b \u043c\u04e9\u0440",block_text_align:"\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",block_vertical_alignment:"\u0411\u043e\u0441\u043e\u043e \u0436\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",block_letterspacing:"\u04ae\u0441\u044d\u0433 \u0445\u043e\u043e\u0440\u043e\u043d\u0434\u044b\u043d \u0437\u0430\u0439",block_wordspacing:"\u04ae\u0433 \u0445\u043e\u043e\u0440\u043e\u043d\u0434\u044b\u043d \u0437\u0430\u0439",background_vpos:"\u0411\u0430\u0439\u0440\u043b\u0430\u043b Y",background_hpos:"\u0411\u0430\u0439\u0440\u043b\u0430\u043b X",background_attachment:"\u0423\u0441\u0430\u043d \u0442\u044d\u043c\u0434\u0433\u0438\u0439\u043d \u044d\u0444\u0444\u0435\u043a\u0442",background_repeat:"\u0414\u0430\u0432\u0442\u0430\u043b\u0442",background_image:"\u0414\u044d\u0432\u0441\u0433\u044d\u0440 \u0437\u0443\u0440\u0430\u0433",background_color:"\u0414\u044d\u0432\u0441\u0433\u044d\u0440 \u04e9\u043d\u0433\u04e9",text_none:"\u0431\u0430\u0439\u0445\u0433\u04af\u0439",text_blink:"\u0430\u043d\u0438\u0432\u0447\u0438\u043b\u0442",text_case:"\u0411\u0438\u0447\u0432\u044d\u0440",text_striketrough:"\u0434\u0430\u0440\u0441\u0430\u043d",text_underline:"\u0434\u043e\u043e\u0433\u0443\u0443\u0440 \u043d\u044c \u0437\u0443\u0440\u0441\u0430\u043d",text_overline:"\u0434\u044d\u044d\u0433\u04af\u04af\u0440 \u043d\u044c \u0437\u0443\u0440\u0441\u0430\u043d",text_decoration:"\u0427\u0438\u043c\u044d\u0433\u043b\u044d\u043b",text_color:"\u04e8\u043d\u0433\u04e9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ms_dlg.js b/js/tiny_mce/plugins/style/langs/ms_dlg.js new file mode 100755 index 000000000..deea226cd --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ms_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ms.style_dlg',{text_lineheight:"Tinggi garisan",text_variant:"Varian",text_style:"Gaya",text_weight:"Beban",text_size:"Saiz",text_font:"Huruf",text_props:"Teks",positioning_tab:"Kedudukan",list_tab:"Senarai",border_tab:"Sempadan",box_tab:"Kotak",block_tab:"Landasan",background_tab:"Latar belakang",text_tab:"Teks",apply:"Guna",title:"Sunting Gaya CSS",clip:"Klip",placement:"Penempatan",overflow:"Limpahan",zindex:"Indeks-Z",visibility:"Kelihatan",positioning_type:"Jenis",position:"Posisi",bullet_image:"Imej peluru",list_type:"Jenis",color:"Warna",height:"Tinggi",width:"Lebar",style:"Gaya",margin:"Ruangan tepi",left:"Kiri",bottom:"Bawah",right:"Kanan",top:"Atas",same:"Samakan kesemuanya",padding:"Lapisan",box_clear:"Ruangan jelas",box_float:"Apungan",box_height:"Tinggi",box_width:"Lebar",block_display:"Pamer",block_whitespace:"Ruangan putih",block_text_indent:"Takukan teks",block_text_align:"Penjajaran teks",block_vertical_alignment:"Penjajaran tegak",block_letterspacing:"Jarak huruf",block_wordspacing:"Jarak perkataan",background_vpos:"Posisi tegak",background_hpos:"Posisi mengufuk",background_attachment:"Sisipan",background_repeat:"Ulangan",background_image:"Imej Latar",background_color:"Warna Latar",text_none:"tiada",text_blink:"kelip",text_case:"Kes",text_striketrough:"garis tengah",text_underline:"garis bawah",text_overline:"garis atas",text_decoration:"Dekorasi",text_color:"Warna"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/my_dlg.js b/js/tiny_mce/plugins/style/langs/my_dlg.js new file mode 100755 index 000000000..06ff3d272 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/my_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('my.style_dlg',{text_lineheight:"\u1005\u102c\u1031\u103c\u1000\u102c\u1004\u103a\u1038 \u1021\u103c\u1019\u1004\u103a\u1037",text_variant:"\u1015\u1036\u102f\u1005\u1036\u1000\u103d\u1032",text_style:"\u1005\u102c\u101c\u1036\u102f\u1038 \u1005\u1010\u102d\u102f\u1004\u103a",text_weight:"\u1005\u102c\u101c\u1036\u102f\u1038 \u1021\u1011\u1030\u1021\u1015\u102b\u1038",text_size:"\u1005\u102c\u101c\u1036\u102f\u1038 \u1021\u101b\u103d\u101a\u103a",text_font:"\u1005\u102c\u101c\u1036\u102f\u1038 \u1031\u1016\u102c\u1004\u103a\u1037",text_props:"\u1005\u102c\u101e\u102c\u1038",positioning_tab:"\u1010\u100a\u103a\u1031\u1014\u101b\u102c",list_tab:"\u1005\u102c\u101b\u1004\u103a\u1038",border_tab:"\u1014\u101a\u103a\u1005\u100a\u103a\u1038",box_tab:"\u1015\u1036\u102f\u1038",block_tab:"\u1021\u1000\u103d\u1000\u103a",background_tab:"\u1031\u1014\u102c\u1000\u103a\u1001",text_tab:"\u1005\u102c\u101e\u102c\u1038",apply:"\u1021\u101e\u1036\u102f\u1038\u103c\u1015\u102f\u1019\u100a\u103a",title:"CSS \u1005\u1010\u102d\u102f\u1004\u103a \u103c\u1015\u102f\u103c\u1015\u1004\u103a\u101b\u1014\u103a",clip:"\u1000\u101c\u1005\u103a",placement:"\u1031\u1014\u101b\u102c\u1021\u1011\u102c\u1038\u1021\u101e\u102d\u102f",overflow:"\u101c\u103b\u103e\u1036\u1011\u103d\u1000\u103a\u1019\u103e\u102f",zindex:"Z-Index",visibility:"\u103c\u1019\u1004\u103a\u1014\u102d\u102f\u1004\u103a\u1005\u103d\u1019\u103a\u1038",positioning_type:"\u1021\u1019\u103b\u102d\u102f\u1038\u1021\u1005\u102c\u1038",position:"\u1010\u100a\u103a\u1031\u1014\u101b\u102c",bullet_image:"\u1021\u1019\u103e\u1010\u103a\u1021\u101e\u102c\u1038 \u101b\u102f\u1015\u103a\u1015\u1036\u102f",list_type:"\u1021\u1019\u102d\u103b\u102f\u1038\u1021\u1005\u102c\u1038",color:"\u1021\u1031\u101b\u102c\u1004\u103a",height:"\u1021\u103c\u1019\u1004\u103a\u1037",width:"\u1021\u1000\u103b\u101a\u103a",style:"\u1005\u1010\u102d\u102f\u1004\u103a",margin:"\u1031\u1018\u1038\u1019\u103b\u1009\u103a\u1038",left:"\u1018\u101a\u103a",bottom:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001",right:"\u100a\u102c",top:"\u1021\u1011\u1000\u103a",same:"\u1021\u102c\u1038\u101c\u1036\u102f\u1038\u1021\u1010\u1030\u1010\u1030",padding:"\u1031\u1018\u1038\u1021\u1000\u102c\u1000\u103d\u1000\u103a\u101c\u1015\u103a",box_clear:"\u1015\u101a\u103a\u101b\u103e\u1004\u103a\u1038",box_float:"\u1031\u1019\u103b\u102c\u101c\u103d\u1004\u103a\u1037",box_height:"\u1021\u103c\u1019\u1004\u103a\u1037",box_width:"\u1021\u1000\u103b\u101a\u103a",block_display:"\u103c\u1015\u101e\u1015\u1036\u102f \u103c\u1019\u1004\u103a\u1000\u103d\u1004\u103a\u1038",block_whitespace:"\u1021\u103c\u1016\u1030\u1031\u101b\u102c\u1004\u103a\u1000\u103d\u1000\u103a\u101c\u1015\u103a",block_text_indent:"\u1005\u102c\u101e\u102c\u1038 Indent",block_text_align:"\u1005\u102c\u101e\u102c\u1038 \u1001\u103b\u102d\u1014\u103a\u100a\u102d\u103e\u1015\u1036\u102f",block_vertical_alignment:"\u1031\u1012\u102b\u1004\u103a\u101c\u102d\u102f\u1000\u103a \u1001\u103b\u102d\u1014\u103a\u100a\u102d\u103e\u1019\u103e\u102f",block_letterspacing:"\u1005\u102c\u101c\u1036\u102f\u1038 \u1021\u1000\u103d\u102c\u1021\u1031\u101d\u1038",block_wordspacing:"\u1005\u1000\u102c\u1038\u101c\u1036\u102f\u1038 \u1021\u1000\u103d\u102c\u1021\u1031\u101d\u1038",background_vpos:"\u1031\u1012\u102b\u1004\u103a\u101c\u102d\u102f\u1000\u103a \u1010\u100a\u103a\u1031\u1014\u101b\u102c",background_hpos:"\u1021\u101c\u103b\u102c\u1038\u101c\u102d\u102f\u1000\u103a \u1010\u100a\u103a\u1031\u1014\u101b\u102c",background_attachment:"\u1010\u103d\u1032\u1001\u103b\u102d\u1010\u103a\u1019\u103e\u102f",background_repeat:"\u103c\u1015\u1014\u103a\u1031\u1000\u103b\u102c\u1037",background_image:"\u1031\u1014\u102c\u1000\u103a\u1001\u1036 \u101b\u102f\u1015\u103a\u1015\u1036\u102f",background_color:"\u1031\u1014\u102c\u1000\u103a\u1001\u1036 \u1021\u1031\u101b\u102c\u1004\u103a",text_none:"\u1010\u1005\u103a\u1001\u102f\u1019\u103b\u103e\u1019\u101f\u102f\u1010\u103a",text_blink:"\u1019\u103e\u102d\u1010\u103a\u1010\u102f\u1010\u103a\u1019\u103e\u102d\u1010\u103a\u1010\u102f\u1010\u103a",text_case:"\u1031\u1000\u1037\u1005\u103a(\u1005\u102c\u101c\u1036\u102f\u1038\u1021\u103c\u1000\u102e\u1038\u1021\u1031\u101e\u1038)",text_striketrough:"\u103c\u1016\u1010\u103a\u1019\u103b\u1009\u103a\u1038",text_underline:"\u1031\u1021\u102c\u1000\u103a\u1019\u103b\u1009\u103a\u1038",text_overline:"\u1021\u1031\u1015\u102b\u103a\u1019\u103b\u1009\u103a\u1038",text_decoration:"\u1021\u101c\u103e\u1021\u1015\u1021\u103c\u1015\u1004\u103a\u1021\u1006\u1004\u103a",text_color:"\u1021\u1031\u101b\u102c\u1004\u103a"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/nb_dlg.js b/js/tiny_mce/plugins/style/langs/nb_dlg.js new file mode 100755 index 000000000..485802e87 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/nb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nb.style_dlg',{"text_lineheight":"Linjeh\u00f8yde","text_variant":"Variant","text_style":"Skriftstil","text_weight":"Skriftvekt","text_size":"Skriftst\u00f8rrelse","text_font":"Skrifttype","text_props":"Skriftegenskaper","positioning_tab":"Posisjon","list_tab":"Liste","border_tab":"Ramme","box_tab":"Boks","block_tab":"Blokk","background_tab":"Bakgrunn","text_tab":"Tekst",apply:"Legg til",title:"Rediger CSS-stil",clip:"Klipp",placement:"Plassering",overflow:"Overfyll",zindex:"Z-indeks",visibility:"Synlighet","positioning_type":"Type",position:"Posisjon","bullet_image":"Punktbilde","list_type":"Type",color:"Farge",height:"H\u00f8yde",width:"Bredde",style:"Stil",margin:"Marg",left:"Venstre",bottom:"Bunn",right:"H\u00f8yre",top:"Topp",same:"Lik i alle",padding:"Utfylling","box_clear":"Slett","box_float":"Flyt","box_height":"H\u00f8yde","box_width":"Bredde","block_display":"Framvising","block_whitespace":"Mellomrom","block_text_indent":"Innrykk","block_text_align":"Justering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Bokstavmellomrom","block_wordspacing":"Ordmellomrom","background_vpos":"Vertikal posisjon","background_hpos":"Horisontal posisjon","background_attachment":"Vedlegg","background_repeat":"Gjenta","background_image":"Bakgrunnsbilde","background_color":"Bakgrunnsfarge","text_none":"Ingen","text_blink":"Blink","text_case":"Store / sm\u00e5 bokstaver","text_striketrough":"Gjennomstreking","text_underline":"Senke skrift","text_overline":"Heve skrift","text_decoration":"Dekorasjon","text_color":"Farge"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/nl_dlg.js b/js/tiny_mce/plugins/style/langs/nl_dlg.js new file mode 100755 index 000000000..5bcc2c5a1 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.style_dlg',{"text_lineheight":"Lijnhoogte","text_variant":"Variant","text_style":"Stijl","text_weight":"Gewicht","text_size":"Tekengrootte","text_font":"Lettertype","text_props":"Tekst","positioning_tab":"Positionering","list_tab":"Lijst","border_tab":"Rand","box_tab":"Box","block_tab":"Blok","background_tab":"Achtergrond","text_tab":"Tekst",apply:"Toepassen",title:"CSS Stijl bewerken",clip:"Clip",placement:"Plaatsing",overflow:"Overvloeien",zindex:"Z-index",visibility:"Zichtbaarheid","positioning_type":"Type",position:"Positie","bullet_image":"Opsommingsteken","list_type":"Type",color:"Kleur",height:"Hoogte",width:"Breedte",style:"Stijl",margin:"Marge",left:"Links",bottom:"Onder",right:"Rechts",top:"Boven",same:"Alles hetzelfde",padding:"Opening","box_clear":"Vrijhouden","box_float":"Zweven","box_height":"Hoogte","box_width":"Breedte","block_display":"Weergave","block_whitespace":"Witruimte","block_text_indent":"Inspringen","block_text_align":"Tekstuitlijning","block_vertical_alignment":"Verticale uitlijning","block_letterspacing":"Letterruimte","block_wordspacing":"Woordruimte","background_vpos":"Verticale positie","background_hpos":"Horizontale positie","background_attachment":"Bijlage","background_repeat":"Herhalen","background_image":"Achtergrondafbeelding","background_color":"Achtergrondkleur","text_none":"Niets","text_blink":"Knipperen","text_case":"Hoofdlettergebruik","text_striketrough":"Doorhalen","text_underline":"Onderstrepen","text_overline":"Overhalen","text_decoration":"Decoratie","text_color":"Kleur"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/nn_dlg.js b/js/tiny_mce/plugins/style/langs/nn_dlg.js new file mode 100755 index 000000000..563b80bdb --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/nn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nn.style_dlg',{text_lineheight:"Linjeh\u00f8gd",text_variant:"Variant",text_style:"Skriftstil",text_weight:"Skriftvekt",text_size:"Skriftstorleik",text_font:"Skrifttype",text_props:"Eigenskapar for skrift",positioning_tab:"Posisjon",list_tab:"Liste",border_tab:"Ramme",box_tab:"Boks",block_tab:"Blokk",background_tab:"Bakgrunn",text_tab:"Tekst",apply:"Legg til",title:"Rediger CSS-stil",clip:"Klipp",placement:"Plassering",overflow:"Overfylt",zindex:"Z-indeks",visibility:"Synlegheit",positioning_type:"Type",position:"Posisjon",bullet_image:"Kulepunktbilete",list_type:"Type",color:"Farge",height:"H\u00f8gd",width:"Breidd",style:"Stil",margin:"Marg",left:"Venstre",bottom:"Bunn",right:"H\u00f8gre",top:"Topp",same:"Likt i alle",padding:"Utfylling",box_clear:"Slett",box_float:"Flyt",box_height:"H\u00f8gd",box_width:"Breidd",block_display:"Framsyning",block_whitespace:"Mellomrom",block_text_indent:"Innrykk",block_text_align:"Justering",block_vertical_alignment:"Vertikal justering",block_letterspacing:"Bokstavmellomrom",block_wordspacing:"Ordmellomrom",background_vpos:"Vertikal posisjon",background_hpos:"Horisontal posisjon",background_attachment:"Vedlegg",background_repeat:"Gjenta",background_image:"Bakgrunnsbilete",background_color:"Bakgrunnsfarge",text_none:"Ingen",text_blink:"Blink",text_case:"Kapitelar/minusklar",text_striketrough:"Gjennomstreking",text_underline:"Senka skrift",text_overline:"Heva skrift",text_decoration:"Dekorasjon",text_color:"Farge"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/no_dlg.js b/js/tiny_mce/plugins/style/langs/no_dlg.js new file mode 100755 index 000000000..db721c185 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.style_dlg',{"text_lineheight":"Linjeh\u00f8yde","text_variant":"Variant","text_style":"Skriftstil","text_weight":"Skriftvekt","text_size":"Skriftst\u00f8rrelse","text_font":"Skrifttype","text_props":"Tekst","positioning_tab":"Posisjon","list_tab":"Liste","border_tab":"Ramme","box_tab":"Boks","block_tab":"Blokk","background_tab":"Bakgrunn","text_tab":"Tekst",apply:"Bruk",title:"Rediger CSS-stil",clip:"Klipp",placement:"Plassering",overflow:"Overfylt",zindex:"Z-indeks",visibility:"Synlighet","positioning_type":"Type",position:"Posisjon","bullet_image":"Punkt bilde","list_type":"Type",color:"Farge",height:"H\u00f8yde",width:"Bredde",style:"Stil",margin:"Marg",left:"Venstre",bottom:"Bunn",right:"H\u00f8yre",top:"Topp",same:"Likt for alle",padding:"Utfylling","box_clear":"Slette","box_float":"Flytende","box_height":"H\u00f8yde","box_width":"Bredde","block_display":"Visning","block_whitespace":"Mellomrom","block_text_indent":"Innrykk","block_text_align":"Justering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Bokstav mellomrom","block_wordspacing":"Mellomrom","background_vpos":"Vertikal posisjon","background_hpos":"Horisontal posisjon","background_attachment":"Vedlegg","background_repeat":"Repetere","background_image":"Bakgrunnsbilde","background_color":"Bakgrunnsfarge","text_none":"Ingen","text_blink":"Blinke","text_case":"Store/sm\u00e5 bokstaver","text_striketrough":"Gjennomstreke","text_underline":"Senke skrift","text_overline":"Heve skrift","text_decoration":"Dekorasjon","text_color":"Farge"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/pl_dlg.js b/js/tiny_mce/plugins/style/langs/pl_dlg.js new file mode 100755 index 000000000..a015749f9 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.style_dlg',{"text_lineheight":"Wysoko\u015b\u0107 linii","text_variant":"Wariant","text_style":"Styl","text_weight":"Waga","text_size":"Rozmiar","text_font":"Wz\u00f3r czcionki","text_props":"Tekst","positioning_tab":"Pozycjonowanie","list_tab":"Lista","border_tab":"Obramowanie","box_tab":"Boks","block_tab":"Blok","background_tab":"T\u0142o","text_tab":"Text",apply:"Zastosuj",title:"Edytuj style CSS",clip:"Klip",placement:"Umieszczenie",overflow:"Przepe\u0142niony",zindex:"Z-index",visibility:"Widoczno\u015b\u0107","positioning_type":"Typ",position:"Pozycja","bullet_image":"Obrazek listy","list_type":"Typ",color:"Kolor",height:"Wysoko\u015b\u0107",width:"Szeroko\u015b\u0107",style:"Styl",margin:"Margines",left:"Lewy",bottom:"D\u00f3\u0142",right:"Prawy",top:"G\u00f3ra",same:"To samo dla wszystkich",padding:"Odst\u0119py","box_clear":"Op\u0142ywanie (Clear)","box_float":"Op\u0142ywanie (Float)","box_height":"Wysoko\u015b\u0107","box_width":"Szeroko\u015b\u0107","block_display":"Spos\u00f3b wy\u015bwietlania","block_whitespace":"Bia\u0142e znaki","block_text_indent":"Przesuni\u0119cie tekstu","block_text_align":"Wyr\u00f3wnanie tekstu","block_vertical_alignment":"Pionowe wyr\u00f3wnanie","block_letterspacing":"Odst\u0119p mi\u0119dzy literami","block_wordspacing":"Odst\u0119p mi\u0119dzy wyrazami","background_vpos":"Pozycja pionowa","background_hpos":"Pozycja pozioma","background_attachment":"Za\u0142\u0105cznik","background_repeat":"Powt\u00f3rz","background_image":"Obrazek t\u0142a","background_color":"Kolor t\u0142a","text_none":"\u017caden","text_blink":"miganie","text_case":"Znaki","text_striketrough":"przekre\u015blenie","text_underline":"podkre\u015blenie","text_overline":"nadkre\u015blenie","text_decoration":"Dekoracja","text_color":"Kolor"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ps_dlg.js b/js/tiny_mce/plugins/style/langs/ps_dlg.js new file mode 100755 index 000000000..82735a531 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ps_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ps.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/pt_dlg.js b/js/tiny_mce/plugins/style/langs/pt_dlg.js new file mode 100755 index 000000000..d9c174715 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.style_dlg',{text_lineheight:"Altura da linha",text_variant:"Variante",text_style:"Estilo",text_weight:"Peso",text_size:"Tamanho",text_font:"Fonte",text_props:"Texto",positioning_tab:"Posicionamento",list_tab:"Lista",border_tab:"Limites",box_tab:"Caixa",block_tab:"Bloco",background_tab:"Fundo",text_tab:"Texto",apply:"Aplicar",title:"Editar CSS",clip:"Clip",placement:"Posicionamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidade",positioning_type:"Tipo",position:"Posi\u00e7\u00e3o",bullet_image:"Imagem de lista",list_type:"Tipo",color:"Cor",height:"Altura",width:"Largura",style:"Estilo",margin:"Margem",left:"Esquerda",bottom:"Abaixo",right:"Direita",top:"Topo",same:"O mesmo para todos",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Altura",box_width:"Largura",block_display:"Display",block_whitespace:"Espa\u00e7o",block_text_indent:"Indent",block_text_align:"Alinhamento de texto",block_vertical_alignment:"Alinhamento vertical",block_letterspacing:"Espa\u00e7amento de letras",block_wordspacing:"Espa\u00e7amento de palavras",background_vpos:"Posi\u00e7\u00e3o vertical",background_hpos:"Posi\u00e7\u00e3o horizontal",background_attachment:"Fixar",background_repeat:"Repetir",background_image:"Imagem de fundo",background_color:"Cor de fundo",text_none:"nenhum",text_blink:"Piscar",text_case:"Mai\u00fascula",text_striketrough:"Riscado",text_underline:"Sublinhado",text_overline:"Sobrelinha",text_decoration:"Decora\u00e7\u00e3o",text_color:"Cor"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ro_dlg.js b/js/tiny_mce/plugins/style/langs/ro_dlg.js new file mode 100755 index 000000000..89792a51d --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.style_dlg',{text_lineheight:"\u00cen\u0103l\u0163ime linie",text_variant:"Variant\u0103",text_style:"Stil",text_weight:"Greutate",text_size:"M\u0103rime",text_font:"Font",text_props:"Text",positioning_tab:"Pozi\u0163ionare",list_tab:"List\u0103",border_tab:"Bordur\u0103",box_tab:"Box",block_tab:"Block",background_tab:"Fundal",text_tab:"Text",apply:"Aplic\u0103",title:"Editare CSS",clip:"Clip",placement:"Plasament",overflow:"Overflow",zindex:"Z-index",visibility:"Vizibilitate",positioning_type:"Tip",position:"Pozi\u0163ionare",bullet_image:"Imagine",list_type:"Tip",color:"Culoare",height:"\u00cen\u0103l\u0163ime",width:"L\u0103\u0163ime",style:"Stil",margin:"Margini",left:"St\u00e2nga",bottom:"Jos",right:"Dreapta",top:"Sus",same:"La fel pentru toate",padding:"Margini interne",box_clear:"Normal\u0103",box_float:"Plutitoare",box_height:"\u00cen\u0103l\u0163ime",box_width:"L\u0103\u0163ime",block_display:"Afi\u015fare",block_whitespace:"Spa\u0163iu alb",block_text_indent:"Indentare text",block_text_align:"Aliniere text",block_vertical_alignment:"Aliniere vertical\u0103",block_letterspacing:"Spa\u0163iere litere",block_wordspacing:"Spa\u0163iere cuvinte",background_vpos:"Pozi\u0163ionare vertical\u0103",background_hpos:"Pozi\u0163ionare orizontal\u0103",background_attachment:"Ata\u015fament",background_repeat:"Repet\u0103",background_image:"Imagine fundal",background_color:"Culoare fundal",text_none:"Nici unul",text_blink:"Clipire",text_case:"Caz",text_striketrough:"T\u0103iere",text_underline:"Sub linie",text_overline:"Peste linie",text_decoration:"Decora\u0163ii",text_color:"Culoare"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ru_dlg.js b/js/tiny_mce/plugins/style/langs/ru_dlg.js new file mode 100755 index 000000000..c7acb88d8 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.style_dlg',{"text_lineheight":"\u0412\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438","text_variant":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442","text_style":"\u0421\u0442\u0438\u043b\u044c","text_weight":"\u0422\u043e\u043b\u0449\u0438\u043d\u0430","text_size":"\u0420\u0430\u0437\u043c\u0435\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","list_tab":"\u0421\u043f\u0438\u0441\u043e\u043a","border_tab":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430","box_tab":"\u041a\u0440\u0430\u044f","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 CSS \u0441\u0442\u0438\u043b\u044f",clip:"\u041e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435",placement:"\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435",overflow:"\u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435",zindex:"Z-\u0438\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f","bullet_image":"\u041c\u0430\u0440\u043a\u0435\u0440","list_type":"\u0422\u0438\u043f",color:"\u0426\u0432\u0435\u0442",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b\u044c",margin:"\u041e\u0442\u0441\u0442\u0443\u043f",left:"\u0421\u043b\u0435\u0432\u0430",bottom:"\u0421\u043d\u0438\u0437\u0443",right:"\u0421\u043f\u0440\u0430\u0432\u0430",top:"\u0412\u0432\u0435\u0440\u0445",same:"\u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445",padding:"\u041f\u043e\u043b\u044f","box_clear":"\u042f\u0432\u043d\u044b\u0439","box_float":"\u041f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0439","box_height":"\u0412\u044b\u0441\u043e\u0442\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","block_whitespace":"\u041f\u0440\u043e\u0431\u0435\u043b","block_text_indent":"\u041e\u0442\u0441\u0442\u0443\u043f \u0442\u0435\u043a\u0441\u0442\u0430","block_text_align":"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","block_letterspacing":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0430\u043c\u0438","block_wordspacing":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u0432\u0430\u043c\u0438","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_hpos":"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_attachment":"\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440","background_image":"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","background_color":"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430","text_none":"\u0411\u0435\u0437 \u0432\u0441\u0435\u0433\u043e","text_blink":"\u041c\u0435\u0440\u0446\u0430\u044e\u0449\u0438\u0439","text_case":"\u0420\u0435\u0433\u0438\u0441\u0442\u0440","text_striketrough":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text_underline":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text_overline":"\u0421 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0435\u0440\u0442\u043e\u0439","text_decoration":"\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435","text_color":"\u0426\u0432\u0435\u0442"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/sc_dlg.js b/js/tiny_mce/plugins/style/langs/sc_dlg.js new file mode 100755 index 000000000..9b473d702 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/sc_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sc.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u53d8\u4f53",text_style:"\u6837\u5f0f",text_weight:"\u5bbd\u5ea6",text_size:"\u5c3a\u5bf8",text_font:"\u5b57\u4f53",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u8fb9\u6846",box_tab:"\u7bb1\u578b",block_tab:"\u5757",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS\u6837\u5f0f\u8868\u5355",clip:"\u526a\u8f91",placement:"\u5e03\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z\u8f74\u6df1\u5ea6",visibility:"\u53ef\u89c1\u6027",positioning_type:"\u7c7b\u578b",position:"\u56fe\u793a\u4f4d\u7f6e",bullet_image:"\u4e13\u6848\u56fe\u793a",list_type:"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u8fb9\u754c",left:"\u9760\u5de6",bottom:"\u4e0b\u65b9",right:"\u9760\u53f3",top:"\u4e0a\u65b9",same:"\u5168\u90e8\u4e00\u6837",padding:"\u7559\u767d",box_clear:"\u6e05\u9664",box_float:"\u6d6e\u52a8",box_height:"\u9ad8\u5ea6",box_width:"\u5bbd\u5ea6",block_display:"\u663e\u793a\u65b9\u5f0f",block_whitespace:"\u7a7a\u767d",block_text_indent:"\u6587\u5b57\u7f29\u6392",block_text_align:"\u6587\u5b57\u5bf9\u9f50",block_vertical_alignment:"\u6c34\u51c6\u5bf9\u9f50\u65b9\u5f0f",block_letterspacing:"\u5b57\u5143\u95f4\u8ddd",block_wordspacing:"\u5355\u5b57\u95f4\u8ddd",background_vpos:"\u6c34\u51c6\u4f4d\u7f6e",background_hpos:"\u5782\u76f4\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u590d",background_image:"\u80cc\u666f\u56fe\u7247",background_color:"\u80cc\u666f\u989c\u8272",text_none:"\u65e0",text_blink:"\u95ea\u70c1",text_case:"\u5b57\u4f53",text_striketrough:"\u5220\u9664\u7ebf",text_underline:"\u5e95\u7ebf",text_overline:"\u4e0a\u5212\u7ebf",text_decoration:"\u4fee\u9970",text_color:"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/se_dlg.js b/js/tiny_mce/plugins/style/langs/se_dlg.js new file mode 100755 index 000000000..f650e8d76 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/se_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('se.style_dlg',{text_lineheight:"Radh\u00f6jd",text_variant:"Variant",text_style:"Stil",text_weight:"Tjocklek",text_size:"Storlek",text_font:"Typsnitt",text_props:"Text",positioning_tab:"Positionering",list_tab:"Listor",border_tab:"Ramar",box_tab:"Box",block_tab:"Block",background_tab:"Bakgrund",text_tab:"Text",apply:"Applicera",title:"Redigera inline CSS",clip:"Besk\u00e4rning",placement:"Placering",overflow:"\u00d6verfl\u00f6de",zindex:"Z-index",visibility:"Synlighet",positioning_type:"Positionstyp",position:"Position",bullet_image:"Punktbild",list_type:"Listtyp",color:"F\u00e4rg",height:"H\u00f6jd",width:"Bredd",style:"Stil",margin:"Marginal",left:"V\u00e4nster",bottom:"Botten",right:"H\u00f6ger",top:"Toppen",same:"Samma f\u00f6r alla",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"H\u00f6jd",box_width:"Bredd",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Textindrag",block_text_align:"Textjustering",block_vertical_alignment:"Vertikal justering",block_letterspacing:"Teckenmellanrum",block_wordspacing:"Ordavbrytning",background_vpos:"Vertikal position",background_hpos:"Horisontell position",background_attachment:"F\u00e4stpunkt",background_repeat:"Upprepning",background_image:"Bakgrundsbild",background_color:"Bakgrundsf\u00e4rg",text_none:"Inget",text_blink:"Blinka",text_case:"Sm\u00e5/stora",text_striketrough:"Genomstruken",text_underline:"Understruken",text_overline:"\u00d6verstruken",text_decoration:"Dekoration",text_color:"F\u00e4rg"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/si_dlg.js b/js/tiny_mce/plugins/style/langs/si_dlg.js new file mode 100755 index 000000000..00edbb357 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/si_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('si.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/sk_dlg.js b/js/tiny_mce/plugins/style/langs/sk_dlg.js new file mode 100755 index 000000000..72ba466c7 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/sk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sk.style_dlg',{text_lineheight:"V\u00fd\u0161ka riadkov",text_variant:"Varianta",text_style:"\u0160t\u00fdl textu",text_weight:"Tu\u010dnos\u0165 p\u00edsma",text_size:"Ve\u013ekos\u0165",text_font:"P\u00edsmo",text_props:"Text",positioning_tab:"Umiesnenie",list_tab:"Zoznam",border_tab:"Or\u00e1movanie",box_tab:"Box",block_tab:"Blok",background_tab:"Pozadie",text_tab:"Text",apply:"Pou\u017ei\u0165",title:"Upravi\u0165 CSS \u0161t\u00fdl",clip:"Orezanie (clip)",placement:"Umiestnenie",overflow:"Prete\u010denie (overflow)",zindex:"Z-index",visibility:"Vidite\u013enos\u0165",positioning_type:"Typ",position:"Umiestnenie",bullet_image:"\u0160t\u00fdl odr\u00e1\u017eok",list_type:"Typ",color:"Farba",height:"V\u00fd\u0161ka",width:"\u0160\u00edrka",style:"\u0160t\u00fdl",margin:"Okraje (margin)",left:"V\u013eavo",bottom:"Dole",right:"Vpravo",top:"Hore",same:"Rovnak\u00e9 pre v\u0161etky",padding:"Odsadenie (padding)",box_clear:"Vy\u010disti\u0165",box_float:"Pl\u00e1vaj\u00faci",box_height:"V\u00fd\u0161ka",box_width:"\u0160\u00edrka",block_display:"Blokov\u00e9 zobrazenie",block_whitespace:"Zalamovanie textu",block_text_indent:"Odsadenie textu",block_text_align:"Zarovnanie textu",block_vertical_alignment:"Vertik\u00e1lne zarovnanie",block_letterspacing:"Rozstup znakov",block_wordspacing:"Rozstup slov",background_vpos:"Vertik\u00e1lne umiestnenie",background_hpos:"Horizont\u00e1lne umiestnenie",background_attachment:"Rolovanie",background_repeat:"Opakovanie",background_image:"Obr\u00e1zok pozadia",background_color:"Farba pozadia",text_none:"\u017eiadna",text_blink:"blikanie",text_case:"Ve\u013ek\u00e9 p\u00edsmen\u00e1",text_striketrough:"pre\u010diarknutie",text_underline:"pod\u010diarknutie",text_overline:"nad\u010diarknutie",text_decoration:"Dekor\u00e1cia",text_color:"Farba"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/sl_dlg.js b/js/tiny_mce/plugins/style/langs/sl_dlg.js new file mode 100755 index 000000000..047979577 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/sl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sl.style_dlg',{text_lineheight:"Vi\u0161ina vrstice",text_variant:"Razli\u010dica",text_style:"Slog",text_weight:"Ute\u017e",text_size:"Velikost",text_font:"Pisava",text_props:"Besedilo",positioning_tab:"Polo\u017eaj",list_tab:"Seznam",border_tab:"Obroba",box_tab:"Okvir",block_tab:"Blok",background_tab:"Ozadje",text_tab:"Besedilo",apply:"Uporabi",title:"Uredi sloge CSS",clip:"Obre\u017ei",placement:"Polo\u017eaj",overflow:"Prelivanje",zindex:"Z-indeks",visibility:"Vidnost",positioning_type:"Vrsta",position:"Polo\u017eaj",bullet_image:"Slika alineje",list_type:"Vrsta",color:"Barva",height:"Vi\u0161ina",width:"\u0160irina",style:"Slog",margin:"Rob",left:"Levo",bottom:"Spodaj",right:"Desno",top:"Zgoraj",same:"Enako za vse",padding:"Podlaganje",box_clear:"\u010cisto",box_float:"Plavojo\u010de",box_height:"Vi\u0161ina",box_width:"\u0160irina",block_display:"Prikaz",block_whitespace:"Beli prostor",block_text_indent:"Zamik besedila",block_text_align:"Poravnava besedila",block_vertical_alignment:"Navpi\u010dna poravnava",block_letterspacing:"Razmik znakov",block_wordspacing:"Razmik besed",background_vpos:"Navpi\u010dni polo\u017eaj",background_hpos:"Vodoravni polo\u017eaj",background_attachment:"Priponka",background_repeat:"Ponavljaj",background_image:"Slika ozadja",background_color:"Barva ozadja",text_none:"brez",text_blink:"utripajo\u010de",text_case:"Velikost",text_striketrough:"pre\u010drtano",text_underline:"pod\u010drtano",text_overline:"nad\u010drtano",text_decoration:"Okras",text_color:"Barva"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/sq_dlg.js b/js/tiny_mce/plugins/style/langs/sq_dlg.js new file mode 100755 index 000000000..7d5942b84 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/sq_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sq.style_dlg',{text_lineheight:"Gjat\u00ebsia e linj\u00ebs",text_variant:"Varianti",text_style:"Stili",text_weight:"Pesha",text_size:"Madh\u00ebsia",text_font:"Teksti",text_props:"Teksti",positioning_tab:"Pozicionimi",list_tab:"Lista",border_tab:"Korniza",box_tab:"Kuti",block_tab:"Bllok",background_tab:"Fusha",text_tab:"Teksti",apply:"Apliko",title:"Edito t\u00eb gjitha stilet",clip:"Prerja",placement:"Vendosja",overflow:"Mbivendosja",zindex:"Indeksi Z",visibility:"Shikueshm\u00ebria",positioning_type:"Tipi",position:"Pozicioni",bullet_image:"Foto ndar\u00ebse",list_type:"Tipi",color:"Ngjyra",height:"Gjat\u00ebsia",width:"Gjer\u00ebsia",style:"Stili",margin:"Hap\u00ebsira",left:"Majtas",bottom:"Fund",right:"Djathtas",top:"Krye",same:"E nj\u00ebjt\u00eb p\u00ebr t\u00eb gjitha",padding:"Hap\u00ebsira e br\u00ebndshme",box_clear:"Pastro",box_float:"Pluskimi",box_height:"Gjat\u00ebsia",box_width:"Gjer\u00ebsia",block_display:"Shfaqja",block_whitespace:"Hap\u00ebsira bosh",block_text_indent:"Kryerradha",block_text_align:"Drejtimi i tekstit",block_vertical_alignment:"Drejtimi vertikal",block_letterspacing:"Hap\u00ebsira e g\u00ebrmave",block_wordspacing:"Hap\u00ebsira e fjal\u00ebve",background_vpos:"Pozicionimi vertikal",background_hpos:"Pozicionimi horizontal",background_attachment:"Bashk\u00ebngjitja",background_repeat:"P\u00ebrs\u00ebritja",background_image:"Foto e fush\u00ebs",background_color:"Ngjyra e fush\u00ebs",text_none:"asnj\u00eb",text_blink:"fik-ndiz",text_case:"Madh\u00ebsia e g\u00ebrm\u00ebs",text_striketrough:"n\u00eb mes",text_underline:"n\u00ebn linj\u00eb",text_overline:"mbi linj\u00eb",text_decoration:"Zbukurimi",text_color:"Ngjyra"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/sr_dlg.js b/js/tiny_mce/plugins/style/langs/sr_dlg.js new file mode 100755 index 000000000..8a8d022c6 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/sr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sr.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/sv_dlg.js b/js/tiny_mce/plugins/style/langs/sv_dlg.js new file mode 100755 index 000000000..6a8d3e459 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/sv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sv.style_dlg',{"text_lineheight":"Radh\u00f6jd","text_variant":"Variant","text_style":"Stil","text_weight":"Tjocklek","text_size":"Storlek","text_font":"Typsnitt","text_props":"Text","positioning_tab":"Positionering","list_tab":"Listor","border_tab":"Ramar","box_tab":"Box","block_tab":"Block","background_tab":"Bakgrund","text_tab":"Text",apply:"Applicera",title:"Redigera inline CSS",clip:"Besk\u00e4rning",placement:"Placering",overflow:"\u00d6\u0096verfl\u00f6de",zindex:"Z-index",visibility:"Synlighet","positioning_type":"Positionstyp",position:"Position","bullet_image":"Punktbild","list_type":"Listtyp",color:"F\u00e4rg",height:"H\u00f6jd",width:"Bredd",style:"Stil",margin:"Marginal",left:"V\u00e4nster",bottom:"Botten",right:"H\u00f6ger",top:"Toppen",same:"Samma f\u00f6r alla",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"H\u00f6jd","box_width":"Bredd","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Textindrag","block_text_align":"Textjustering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Teckenmellanrum","block_wordspacing":"Ordavbrytning","background_vpos":"Vertikal position","background_hpos":"Horisontell position","background_attachment":"F\u00e4stpunkt","background_repeat":"Upprepning","background_image":"Bakgrundsbild","background_color":"Bakgrundsf\u00e4rg","text_none":"Inget","text_blink":"Blinka","text_case":"Sm\u00e5/stora","text_striketrough":"Genomstruken","text_underline":"Understruken","text_overline":"\u00d6verstruken","text_decoration":"Dekoration","text_color":"F\u00e4rg"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ta_dlg.js b/js/tiny_mce/plugins/style/langs/ta_dlg.js new file mode 100755 index 000000000..a8fd368d5 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ta_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ta.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/te_dlg.js b/js/tiny_mce/plugins/style/langs/te_dlg.js new file mode 100755 index 000000000..29e896cb7 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/te_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('te.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/th_dlg.js b/js/tiny_mce/plugins/style/langs/th_dlg.js new file mode 100755 index 000000000..984aeee58 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/th_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('th.style_dlg',{text_lineheight:"\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14",text_variant:"Variant",text_style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",text_weight:"\u0e19\u0e49\u0e33\u0e2b\u0e19\u0e31\u0e01",text_size:"\u0e02\u0e19\u0e32\u0e14",text_font:"\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d",text_props:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",positioning_tab:"Positioning",list_tab:"List",border_tab:"\u0e01\u0e23\u0e2d\u0e1a",box_tab:"Box",block_tab:"Block",background_tab:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",text_tab:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",apply:"\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19",title:"\u0e41\u0e01\u0e49\u0e44\u0e02 CSS",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"\u0e2a\u0e35",height:"\u0e2a\u0e39\u0e07",width:"\u0e01\u0e27\u0e49\u0e32\u0e07",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",margin:"Margin",left:"\u0e0b\u0e49\u0e32\u0e22",bottom:"\u0e25\u0e48\u0e32\u0e07",right:"\u0e02\u0e27\u0e32",top:"\u0e1a\u0e19",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 indent",block_text_align:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21 align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"\u0e23\u0e39\u0e1b\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",background_color:"\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"\u0e2a\u0e35"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/tn_dlg.js b/js/tiny_mce/plugins/style/langs/tn_dlg.js new file mode 100755 index 000000000..5124240dd --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/tn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tn.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/tr_dlg.js b/js/tiny_mce/plugins/style/langs/tr_dlg.js new file mode 100755 index 000000000..8e6591bbd --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/tr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tr.style_dlg',{text_lineheight:"\u00c7izgi y\u00fcksekli\u011fi",text_variant:"De\u011fi\u015fken",text_style:"Stil",text_weight:"Kal\u0131nl\u0131k",text_size:"Boyut",text_font:"Yaz\u0131 tipi",text_props:"Metin",positioning_tab:"Konumland\u0131rma",list_tab:"Listele",border_tab:"Kenarl\u0131k",box_tab:"Kutu",block_tab:"Blok",background_tab:"Arkaplan",text_tab:"Metin",apply:"Uygula",title:"CSS Stilini D\u00fczenle",clip:"K\u0131rp",placement:"Yerle\u015ftir",overflow:"Ta\u015fma",zindex:"Z-indeksi",visibility:"G\u00f6r\u00fcn\u00fcrl\u00fck",positioning_type:"Tip",position:"Konum",bullet_image:"Madde imi resmi",list_type:"Tip",color:"Renk",height:"Y\u00fckseklik",width:"Geni\u015flik",style:"Stil",margin:"Kenar bo\u015flu\u011fu",left:"Sol",bottom:"Alt",right:"Sa\u011f",top:"\u00dcst",same:"T\u00fcm\u00fc i\u00e7in",padding:"Dolgu",box_clear:"Serbest",box_float:"Kayan",box_height:"Y\u00fckseklik",box_width:"Geni\u015flik",block_display:"G\u00f6r\u00fcnt\u00fcle",block_whitespace:"Bo\u015fluk",block_text_indent:"Metnin girintisini art\u0131r",block_text_align:"Metin hizala",block_vertical_alignment:"Dikey hizalama",block_letterspacing:"harf bo\u015flu\u011fu",block_wordspacing:"Kelime bo\u015flu\u011fu",background_vpos:"Dikey konum",background_hpos:"Yatay konum",background_attachment:"Eklenti",background_repeat:"Tekrarla",background_image:"Arkaplan resmi",background_color:"Arkaplan rengi",text_none:"hi\u00e7biri",text_blink:"yan\u0131p s\u00f6nen",text_case:"Ko\u015ful",text_striketrough:"\u00fcst\u00fc \u00e7izgili",text_underline:"alt \u00e7izgi",text_overline:"\u00fcst \u00e7izgi",text_decoration:"Dekorasyon",text_color:"Renk"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/tt_dlg.js b/js/tiny_mce/plugins/style/langs/tt_dlg.js new file mode 100755 index 000000000..cdd6b191f --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/tt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tt.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u8b8a\u9ad4",text_style:"\u6a23\u5f0f",text_weight:"\u5bec\u5ea6",text_size:"\u5927\u5c0f",text_font:"\u5b57\u9ad4",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u908a\u6846",box_tab:"\u76d2\u6a21\u578b",block_tab:"\u5340\u584a",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u61c9\u7528",title:"\u7de8\u8f2f CSS \u6a23\u5f0f\u8868",clip:"\u526a\u8f2f",placement:"\u4f48\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z\u5ea7\u6a19",visibility:"\u662f\u5426\u53ef\u898b",positioning_type:"\u4f4d\u7f6e\u985e\u578b",position:"\u5716\u7247\u4f4d\u7f6e",bullet_image:"\u6e05\u55ae\u5716\u7247",list_type:"\u5217\u8868\u985e\u578b",color:"\u9854\u8272",height:"\u9ad8\u5ea6",width:"\u5bec\u5ea6",style:"\u6a23\u5f0f",margin:"\u908a\u8ddd",left:"\u5de6\u5074",bottom:"\u5e95\u90e8",right:"\u53f3\u5074",top:"\u9802\u90e8",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5167\u908a\u8ddd",box_clear:"\u6e05\u9664",box_float:"\u6d6e\u52d5",box_height:"\u9ad8\u5ea6",box_width:"\u5bec\u5ea6",block_display:"\u986f\u793a\u65b9\u5f0f",block_whitespace:"\u7a7a\u683c",block_text_indent:"\u6587\u5b57\u7e2e\u6392",block_text_align:"\u6587\u5b57\u5c0d\u9f4a",block_vertical_alignment:"\u5782\u76f4\u5c0d\u9f4a\u65b9\u5f0f",block_letterspacing:"\u5b57\u6bcd\u9593\u8ddd",block_wordspacing:"\u8a5e\u9593\u8ddd",background_vpos:"\u5782\u76f4\u4f4d\u7f6e",background_hpos:"\u6c34\u5e73\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u5fa9",background_image:"\u80cc\u666f\u5716\u7247",background_color:"\u80cc\u666f\u9854\u8272",text_none:"\u7121",text_blink:"\u9583\u720d",text_case:"\u5b57\u9ad4",text_striketrough:"\u4e2d\u5283\u7dda",text_underline:"\u5e95\u7dda",text_overline:"\u4e0a\u5283\u7dda",text_decoration:"\u88dd\u98fe",text_color:"\u9854\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/tw_dlg.js b/js/tiny_mce/plugins/style/langs/tw_dlg.js new file mode 100755 index 000000000..d7a4ae160 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/tw_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tw.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u8b8a\u9ad4",text_style:"\u6a23\u5f0f",text_weight:"\u5b57\u5bec",text_size:"\u5b57\u578b\u5927\u5c0f",text_font:"\u5b57\u9ad4",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u908a\u6846",box_tab:"\u65b9\u584a",block_tab:"\u5340\u584a",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u5957\u7528",title:"\u7de8\u8f2f CSS \u6a23\u5f0f\u8868",clip:"\u526a\u8f2f",placement:"\u4f48\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z-\u5750\u6a19",visibility:"\u53ef\u898b",positioning_type:"\u985e\u578b",position:"\u4f4d\u7f6e",bullet_image:"\u5716\u7247\u9805\u76ee\u7b26\u865f",list_type:"\u985e\u578b\u5217\u8868",color:"\u984f\u8272",height:"\u9ad8",width:"\u5bec",style:"\u6a23\u5f0f",margin:"\u5916\u908a\u8ddd",left:"\u5de6\u5074",bottom:"\u9760\u4e0b",right:"\u53f3\u5074",top:"\u9802\u90e8",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5167\u908a\u8ddd",box_clear:"\u6e05\u9664\u6d6e\u52d5",box_float:"\u6d6e\u52d5",box_height:"\u9ad8",box_width:"\u5bec",block_display:"\u986f\u793a",block_whitespace:"\u7a7a\u683c",block_text_indent:"\u6587\u5b57\u7e2e\u6392",block_text_align:"\u6587\u5b57\u5c0d\u9f4a",block_vertical_alignment:"\u5782\u76f4\u5c0d\u9f4a",block_letterspacing:"\u5b57\u6bcd\u9593\u8ddd",block_wordspacing:"\u8a5e\u9593\u8ddd",background_vpos:"\u5782\u76f4\u4f4d\u7f6e",background_hpos:"\u6c34\u5e73\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u8907",background_image:"\u80cc\u666f\u5716\u7247",background_color:"\u80cc\u666f\u984f\u8272",text_none:"\u7121",text_blink:"\u9583\u720d",text_case:"\u5b57\u578b",text_striketrough:"\u522a\u9664\u7dda",text_underline:"\u5e95\u7dda",text_overline:"\u4e0a\u5283\u7dda",text_decoration:"\u88dd\u98fe",text_color:"\u984f\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/uk_dlg.js b/js/tiny_mce/plugins/style/langs/uk_dlg.js new file mode 100755 index 000000000..f323e392a --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/uk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('uk.style_dlg',{text_lineheight:"\u0412\u0438\u0441\u043e\u0442\u0430 \u0440\u044f\u0434\u043a\u0443",text_variant:"\u0412\u0430\u0440\u0456\u0430\u043d\u0442",text_style:"\u0421\u0442\u0438\u043b\u044c",text_weight:"\u0422\u043e\u0432\u0449\u0438\u043d\u0430",text_size:"\u0420\u043e\u0437\u043c\u0456\u0440",text_font:"\u0428\u0440\u0438\u0444\u0442",text_props:"\u0422\u0435\u043a\u0441\u0442",positioning_tab:"\u041f\u043e\u0437\u0438\u0446\u0456\u043e\u043d\u0443\u0432\u0430\u043d\u043d\u044f",list_tab:"\u0421\u043f\u0438\u0441\u043e\u043a",border_tab:"\u0420\u0430\u043c\u043a\u0430",box_tab:"\u042f\u0449\u0438\u043a(box)",block_tab:"\u0411\u043b\u043e\u043a",background_tab:"\u0424\u043e\u043d",text_tab:"\u0422\u0435\u043a\u0441\u0442",apply:"\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438",title:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043d\u043d\u044f CSS \u0441\u0442\u0438\u043b\u044e",clip:"\u0421\u043a\u0440\u0456\u043f\u043b\u0435\u043d\u043d\u044f",placement:"\u0420\u043e\u0437\u043c\u0456\u0449\u0435\u043d\u043d\u044f",overflow:"\u041f\u0435\u0440\u0435\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f",zindex:"Z-\u0456\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u0456\u0441\u0442\u044c",positioning_type:"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0456\u044f",bullet_image:"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u043d\u0430\u0447\u043a\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0443",list_type:"\u0422\u0438\u043f",color:"\u041a\u043e\u043b\u0456\u0440",height:"\u0412\u0438\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b\u044c",margin:"Margin",left:"\u041b\u0456\u0432\u043e\u0440\u0443\u0447",bottom:"\u0417\u043d\u0438\u0437\u0443",right:"\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",top:"\u0412\u0433\u043e\u0440\u0443",same:"\u041e\u0434\u043d\u0430\u043a\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0456\u0445",padding:"\u0412\u043d\u0443\u0442\u0440\u0456\u0448\u043d\u0456\u0439 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",box_clear:"\u041e\u0447\u0438\u0441\u0442\u043a\u0430",box_float:"\u041f\u043b\u0430\u0432\u0430\u043d\u043d\u044f",box_height:"\u0412\u0438\u0441\u043e\u0442\u0430",box_width:"\u0428\u0438\u0440\u0438\u043d\u0430",block_display:"\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u0438",block_whitespace:"\u041f\u0440\u043e\u0431\u0456\u043b",block_text_indent:"\u0412\u0456\u0434\u0441\u0442\u0443\u043f",block_text_align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f \u0442\u0435\u043a\u0441\u0442\u0443",block_vertical_alignment:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",block_letterspacing:"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438 \u043c\u0456\u0436 \u043b\u0456\u0442\u0435\u0440\u0430\u043c\u0438",block_wordspacing:"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438 \u043c\u0456\u0436 \u0441\u043b\u043e\u0432\u0430\u043c\u0438",background_vpos:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0456\u044f",background_hpos:"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0456\u044f",background_attachment:"\u0412\u043a\u043b\u0430\u0434\u0435\u043d\u043d\u044f",background_repeat:"\u041f\u043e\u0432\u0442\u043e\u0440",background_image:"\u0424\u043e\u043d\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",background_color:"\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",text_none:"\u041d\u0456\u0447\u043e\u0433\u043e",text_blink:"\u041c\u0435\u0440\u0435\u0445\u0442\u0456\u043d\u043d\u044f",text_case:"\u0420\u0435\u0433\u0456\u0441\u0442\u0440",text_striketrough:"\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",text_underline:"\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",text_overline:"\u041d\u0430\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",text_decoration:"\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044f",text_color:"\u041a\u043e\u043b\u0456\u0440"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/ur_dlg.js b/js/tiny_mce/plugins/style/langs/ur_dlg.js new file mode 100755 index 000000000..c52148f24 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/ur_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ur.style_dlg',{text_lineheight:"Line height",text_variant:"Variant",text_style:"Style",text_weight:"Weight",text_size:"Size",text_font:"Font",text_props:"Text",positioning_tab:"Positioning",list_tab:"List",border_tab:"Border",box_tab:"Box",block_tab:"Block",background_tab:"Background",text_tab:"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility",positioning_type:"Type",position:"Position",bullet_image:"Bullet image",list_type:"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding",box_clear:"Clear",box_float:"Float",box_height:"Height",box_width:"Width",block_display:"Display",block_whitespace:"Whitespace",block_text_indent:"Text indent",block_text_align:"Text align",block_vertical_alignment:"Vertical alignment",block_letterspacing:"Letter spacing",block_wordspacing:"Word spacing",background_vpos:"Vertical position",background_hpos:"Horizontal position",background_attachment:"Attachment",background_repeat:"Repeat",background_image:"Background image",background_color:"Background color",text_none:"none",text_blink:"blink",text_case:"Case",text_striketrough:"strikethrough",text_underline:"underline",text_overline:"overline",text_decoration:"Decoration",text_color:"Color"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/vi_dlg.js b/js/tiny_mce/plugins/style/langs/vi_dlg.js new file mode 100755 index 000000000..43c54aefd --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/vi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('vi.style_dlg',{text_lineheight:"Chi\u1ec1u cao \u0111\u01b0\u1eddng",text_variant:"Bi\u1ebfn \u0111\u1ed5i",text_style:"Ki\u1ec3u d\u00e1ng",text_weight:"Tr\u1ecdng l\u01b0\u1ee3ng",text_size:"K\u00edch c\u1ee1",text_font:"Ph\u00f4ng",text_props:"V\u0103n b\u1ea3n",positioning_tab:"V\u1ecb tr\u00ed",list_tab:"Danh s\u00e1ch",border_tab:"Vi\u1ec1n",box_tab:"H\u1ed9p",block_tab:"Kh\u1ed1i",background_tab:"N\u1ec1n",text_tab:"V\u0103n b\u1ea3n",apply:"\u00c1p d\u1ee5ng",title:"S\u1eeda ki\u1ec3u d\u00e1ng CSS",clip:"Ghim",placement:"S\u1eafp \u0111\u1eb7t",overflow:"Tr\u00e0n",zindex:"Ch\u1ec9 m\u1ee5c Z",visibility:"Nh\u00ecn th\u1ea5y",positioning_type:"Ki\u1ec3u",position:"V\u1ecb tr\u00ed",bullet_image:"\u1ea2nh Bullet",list_type:"Ki\u1ec3u",color:"M\u00e0u",height:"Chi\u1ec1u cao",width:"Chi\u1ec1u r\u1ed9ng",style:"Ki\u1ec3u",margin:"Bi\u00ean",left:"Tr\u00e1i",bottom:"D\u01b0\u1edbi",right:"Ph\u1ea3i",top:"Tr\u00ean",same:"\u00c1p d\u1ee5ng cho t\u1ea5t c\u1ea3",padding:"\u0110\u1ec7m l\u00f3t",box_clear:"L\u00e0m s\u1ea1ch",box_float:"N\u1ed5i",box_height:"Chi\u1ec1u cao",box_width:"Chi\u1ec1u r\u1ed9ng",block_display:"Hi\u1ec3n th\u1ecb",block_whitespace:"Kho\u1ea3ng tr\u1eafng",block_text_indent:"Th\u1ee5t d\u00f2ng v\u0103n b\u1ea3n",block_text_align:"Canh l\u1ec1 v\u0103n b\u1ea3n",block_vertical_alignment:"Canh l\u1ec1 d\u1ecdc",block_letterspacing:"Kho\u1ea3ng c\u00e1c k\u00fd t\u1ef1",block_wordspacing:"Kho\u1ea3ng c\u00e1c t\u1eeb",background_vpos:"V\u1ecb tr\u00ed d\u1ecdc",background_hpos:"V\u1ecb tr\u00ed ngang",background_attachment:"\u0110\u00ednh k\u00e8m",background_repeat:"L\u1eb7p l\u1ea1i",background_image:"\u1ea2nh n\u1ec1n",background_color:"M\u00e0u n\u1ec1n",text_none:"kh\u00f4ng",text_blink:"nh\u1ea5p nh\u00e1y",text_case:"Bo\u0323c",text_striketrough:"g\u1ea1ch xuy\u00ean",text_underline:"g\u1ea1ch d\u01b0\u1edbi",text_overline:"g\u1ea1ch tr\u00ean",text_decoration:"Trang tr\u00ed",text_color:"M\u00e0u"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js b/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js new file mode 100755 index 000000000..ac56b1418 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh-cn.style_dlg',{"text_lineheight":"\u884c\u9ad8","text_variant":"\u53d8\u5f62","text_style":"\u6837\u5f0f","text_weight":"\u7c97\u7ec6","text_size":"\u5927\u5c0f","text_font":"\u5b57\u4f53","text_props":"\u6587\u672c","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u5217\u8868","border_tab":"\u8fb9\u6846","box_tab":"Box","block_tab":"\u533a\u5757","background_tab":"\u80cc\u666f","text_tab":"\u6587\u672c",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS\u6837\u5f0f",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z-Index",visibility:"\u53ef\u89c1","positioning_type":"\u7c7b\u578b",position:"\u4f4d\u7f6e","bullet_image":"\u56fe\u7247\u9879\u76ee\u7b26\u53f7","list_type":"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u8ddd",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u8ddd","box_clear":"\u6e05\u9664\u6d6e\u52a8","box_float":"\u6d6e\u52a8","box_height":"\u9ad8\u5ea6","box_width":"\u5bbd\u5ea6","block_display":"\u663e\u793a","block_whitespace":"\u7a7a\u683c","block_text_indent":"\u6587\u5b57\u7f29\u6392","block_text_align":"\u6587\u5b57\u5bf9\u9f50","block_vertical_alignment":"\u5782\u76f4\u5bf9\u9f50","block_letterspacing":"\u5b57\u95f4\u8ddd","block_wordspacing":"\u8bcd\u95f4\u8ddd","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u9644\u4ef6","background_repeat":"\u91cd\u590d","background_image":"\u80cc\u666f\u56fe\u7247","background_color":"\u80cc\u666f\u989c\u8272","text_none":"\u65e0","text_blink":"\u95ea\u70c1","text_case":"\u5b57\u4f53\u5f62\u5f0f","text_striketrough":"\u5220\u9664\u7ebf","text_underline":"\u4e0b\u5212\u7ebf","text_overline":"\u4e0a\u5212\u7ebf","text_decoration":"\u5b57\u4f53\u88c5\u9970","text_color":"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/zh_dlg.js b/js/tiny_mce/plugins/style/langs/zh_dlg.js new file mode 100755 index 000000000..2f5dc0216 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/zh_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u53d8\u91cf",text_style:"\u6837\u5f0f",text_weight:"\u5b57\u91cd",text_size:"\u6587\u5b57\u5927\u5c0f",text_font:"\u5b57\u4f53",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u8fb9\u6846",box_tab:"\u65b9\u5757",block_tab:"\u533a\u5757",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u5957\u7528",title:"\u7f16\u8f91 CSS \u6837\u5f0f\u8868",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z-\u5750\u6807",visibility:"\u53ef\u89c1",positioning_type:"\u7c7b\u578b",position:"\u4f4d\u7f6e",bullet_image:"\u56fe\u7247\u9879\u76ee\u7b26\u53f7",list_type:"\u7c7b\u8868\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8",width:"\u5bbd",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u8ddd",left:"\u5de6\u4fa7",bottom:"\u9760\u4e0b",right:"\u53f3\u4fa7",top:"\u5b9a\u90e8",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u8ddd",box_clear:"\u6e05\u9664\u6d6e\u52a8",box_float:"\u6d6e\u52a8",box_height:"\u9ad8",box_width:"\u5bbd",block_display:"\u663e\u793a",block_whitespace:"\u7a7a\u683c",block_text_indent:"\u6587\u5b57\u7f29\u6392",block_text_align:"\u6587\u5b57\u5bf9\u9f50",block_vertical_alignment:"\u5782\u76f4\u5bf9\u9f50",block_letterspacing:"\u5b57\u6bcd\u95f4\u8ddd",block_wordspacing:"\u95f4\u8ddd",background_vpos:"\u5782\u76f4\u4f4d\u7f6e",background_hpos:"\u6c34\u5e73\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u590d",background_image:"\u80cc\u666f\u56fe\u7247",background_color:"\u80cc\u666f\u989c\u8272",text_none:"\u65e0",text_blink:"\u95ea\u70c1",text_case:"\u5b57\u578b",text_striketrough:"\u5220\u9664\u7ebf",text_underline:"\u5e95\u7ebf",text_overline:"\u4e0a\u5212\u7ebf",text_decoration:"\u88c5\u9970",text_color:"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/langs/zu_dlg.js b/js/tiny_mce/plugins/style/langs/zu_dlg.js new file mode 100755 index 000000000..8ef113491 --- /dev/null +++ b/js/tiny_mce/plugins/style/langs/zu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zu.style_dlg',{text_lineheight:"\u884c\u9ad8",text_variant:"\u53d8\u4f53",text_style:"\u6837\u5f0f",text_weight:"\u5bbd\u5ea6",text_size:"\u5c3a\u5bf8",text_font:"\u5b57\u4f53",text_props:"\u6587\u5b57",positioning_tab:"\u4f4d\u7f6e",list_tab:"\u5217\u8868",border_tab:"\u8fb9\u6846",box_tab:"\u7bb1\u578b",block_tab:"\u5757",background_tab:"\u80cc\u666f",text_tab:"\u6587\u5b57",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS\u6837\u5f0f\u8868",clip:"\u526a\u8f91",placement:"\u5e03\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z\u8f74\u6df1\u5ea6",visibility:"\u53ef\u89c1\u6027",positioning_type:"\u7c7b\u578b",position:"\u56fe\u793a\u4f4d\u7f6e",bullet_image:"\u9879\u76ee\u56fe\u793a",list_type:"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u8fb9\u754c",left:"\u9760\u5de6",bottom:"\u4e0b\u65b9",right:"\u9760\u53f3",top:"\u4e0a\u65b9",same:"\u5168\u90e8\u4e00\u6837",padding:"\u7559\u767d",box_clear:"\u6e05\u9664",box_float:"\u6d6e\u52a8",box_height:"\u9ad8\u5ea6",box_width:"\u5bbd\u5ea6",block_display:"\u663e\u793a\u65b9\u5f0f",block_whitespace:"\u7a7a\u767d",block_text_indent:"\u6587\u5b57\u7f29\u6392",block_text_align:"\u6587\u5b57\u5bf9\u9f50",block_vertical_alignment:"\u6c34\u51c6\u5bf9\u9f50\u65b9\u5f0f",block_letterspacing:"\u5b57\u5143\u95f4\u8ddd",block_wordspacing:"\u5355\u5b57\u95f4\u8ddd",background_vpos:"\u6c34\u51c6\u4f4d\u7f6e",background_hpos:"\u5782\u76f4\u4f4d\u7f6e",background_attachment:"\u9644\u4ef6",background_repeat:"\u91cd\u590d",background_image:"\u80cc\u666f\u56fe\u7247",background_color:"\u80cc\u666f\u989c\u8272",text_none:"\u65e0",text_blink:"\u95ea\u70c1",text_case:"\u5b57\u4f53",text_striketrough:"\u5220\u9664\u7ebf",text_underline:"\u5e95\u7ebf",text_overline:"\u4e0a\u5212\u7ebf",text_decoration:"\u4fee\u9970",text_color:"\u989c\u8272"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/style/props.htm b/js/tiny_mce/plugins/style/props.htm new file mode 100644 index 000000000..b5a3d15d9 --- /dev/null +++ b/js/tiny_mce/plugins/style/props.htm @@ -0,0 +1,838 @@ + + + + {#style_dlg.title} + + + + + + + + + + +
        + + +
        +
        +
        + {#style_dlg.text} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + + +
          + + +
        +
        + +
        + + + +
        + + + + + + +
        + +   + + +
        +
        + +
        + + + + + +
         
        +
        {#style_dlg.text_decoration} + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        +
        + +
        +
        + {#style_dlg.background} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + +
         
        +
        + + + + +
         
        +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        +
        +
        + +
        +
        + {#style_dlg.block} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + + +
        +
        +
        +
        + +
        +
        + {#style_dlg.box} + + + + + + + + + + + + + + +
        + + + + + + +
          + + +
        +
           
        + + + + + + +
          + + +
        +
           
        +
        +
        + {#style_dlg.padding} + + + + + + + + + + + + + + + + + + + + + + +
         
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        +
        +
        + +
        +
        + {#style_dlg.margin} + + + + + + + + + + + + + + + + + + + + + + +
         
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        + + + + + + +
          + + +
        +
        +
        +
        +
        +
        + +
        +
        + {#style_dlg.border} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
              
        {#style_dlg.top}   + + + + + + +
          + + +
        +
          + + + + + +
         
        +
        {#style_dlg.right}   + + + + + + +
          + + +
        +
          + + + + + +
         
        +
        {#style_dlg.bottom}   + + + + + + +
          + + +
        +
          + + + + + +
         
        +
        {#style_dlg.left}   + + + + + + +
          + + +
        +
          + + + + + +
         
        +
        +
        +
        + +
        +
        + {#style_dlg.list} + + + + + + + + + + + + + + + +
        +
        +
        + +
        +
        + {#style_dlg.position} + + + + + + + + + + + + + + + + + + + + + +
           
        + + + + + + +
          + + +
        +
           
        + + + + + + +
          + + +
        +
           
        + +
        +
        + {#style_dlg.placement} + + + + + + + + + + + + + + + + + + + + + + +
         
        {#style_dlg.top} + + + + + + +
          + + +
        +
        {#style_dlg.right} + + + + + + +
          + + +
        +
        {#style_dlg.bottom} + + + + + + +
          + + +
        +
        {#style_dlg.left} + + + + + + +
          + + +
        +
        +
        +
        + +
        +
        + {#style_dlg.clip} + + + + + + + + + + + + + + + + + + + + + + +
         
        {#style_dlg.top} + + + + + + +
          + + +
        +
        {#style_dlg.right} + + + + + + +
          + + +
        +
        {#style_dlg.bottom} + + + + + + +
          + + +
        +
        {#style_dlg.left} + + + + + + +
          + + +
        +
        +
        +
        +
        +
        + +
        + +
        + + + +
        +
        + +
        +
        +
        + + + diff --git a/js/tiny_mce/plugins/table/cell.htm b/js/tiny_mce/plugins/table/cell.htm new file mode 100644 index 000000000..4afb6afa3 --- /dev/null +++ b/js/tiny_mce/plugins/table/cell.htm @@ -0,0 +1,178 @@ + + + + {#table_dlg.cell_title} + + + + + + + + +
        + + +
        +
        +
        + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + +
        + + + +
        + +
        +
        +
        + +
        +
        + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + + + + + +
         
        +
        + + + + + +
         
        +
        + + + + + +
         
        +
        +
        +
        +
        + +
        +
        + +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/table/css/cell.css b/js/tiny_mce/plugins/table/css/cell.css new file mode 100644 index 000000000..a067ecdfe --- /dev/null +++ b/js/tiny_mce/plugins/table/css/cell.css @@ -0,0 +1,17 @@ +/* CSS file for cell dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#class { + width: 150px; +} \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/css/row.css b/js/tiny_mce/plugins/table/css/row.css new file mode 100644 index 000000000..1f7755daf --- /dev/null +++ b/js/tiny_mce/plugins/table/css/row.css @@ -0,0 +1,25 @@ +/* CSS file for row dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#rowtype,#align,#valign,#class,#height { + width: 150px; +} + +#height { + width: 50px; +} + +.col2 { + padding-left: 20px; +} diff --git a/js/tiny_mce/plugins/table/css/table.css b/js/tiny_mce/plugins/table/css/table.css new file mode 100644 index 000000000..d11c3f69c --- /dev/null +++ b/js/tiny_mce/plugins/table/css/table.css @@ -0,0 +1,13 @@ +/* CSS file for table dialog in the table plugin */ + +.panel_wrapper div.current { + height: 245px; +} + +.advfield { + width: 200px; +} + +#class { + width: 150px; +} diff --git a/js/tiny_mce/plugins/table/editor_plugin.js b/js/tiny_mce/plugins/table/editor_plugin.js new file mode 100644 index 000000000..67b8cc859 --- /dev/null +++ b/js/tiny_mce/plugins/table/editor_plugin.js @@ -0,0 +1 @@ +(function(c){var d=c.each;function b(f,g){var h=g.ownerDocument,e=h.createRange(),j;e.setStartBefore(g);e.setEnd(f.endContainer,f.endOffset);j=h.createElement("body");j.appendChild(e.cloneContents());return j.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(H,G,K){var f,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;f=[];d(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);d(O,function(P,Q){Q+=M;d(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(f[Q]){while(f[Q][R]){R++}}U=h(W,"rowspan");V=h(W,"colspan");for(T=Q;T'}return false}},"childNodes");M=A(M,false);s(M,"rowspan",1);s(M,"colspan",1);if(N){M.appendChild(N)}else{if(!c.isIE){M.innerHTML='
        '}}return M}function q(){var M=G.createRng();d(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}d(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=f[Math.min(f.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=f[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=f[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(e(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(e(P.cells[0]),P.cells[0])}}}}}function C(){d(f,function(M,N){d(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=h(P,"colspan");R=h(P,"rowspan");if(S>1||R>1){s(P,"rowspan",1);s(P,"colspan",1);for(Q=0;Q1){s(S,"rowspan",O+1);continue}}else{if(M>0&&f[M-1][R]){V=f[M-1][R].elm;O=h(V,"rowspan");if(O>1){s(V,"rowspan",O+1);continue}}}N=e(S);s(N,"colspan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function g(N){var O,M;d(f,function(P,Q){d(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});d(f,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=h(P,"colspan");Q=h(P,"rowspan");if(R==1){if(!N){G.insertAfter(e(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(e(P),P);u(O,T,Q-1,R)}}else{s(P,"colspan",P.colSpan+1)}M=P}})}function n(){var M=[];d(f,function(N,O){d(N,function(Q,P){if(j(Q)&&c.inArray(M,P)===-1){d(f,function(T){var R=T[P].elm,S;S=h(R,"colspan");if(S>1){s(R,"colspan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");d(Q.cells,function(S){var T=h(S,"rowspan");if(T>1){s(S,"rowspan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);d(f[R.y],function(S){var T;S=S.elm;if(S!=O){T=h(S,"rowspan");if(T<=1){G.remove(S)}else{s(S,"rowspan",T-1)}O=S}})}N=k();d(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();d(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;d(f,function(S){var R;Q=0;d(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}d(O,function(T){var S=T.cells.length,R;for(i=0;iN){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=f[y][P];if(!S.real){if(P-(S.colspan-1)N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(f[y][x]){G.addClass(f[y][x].elm,"mceSelected")}}}}}c.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:g,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}c.create("tinymce.plugins.TablePlugin",{init:function(f,g){var e,k;function j(n){var m=f.selection,l=f.dom.getParent(n||m.getNode(),"table");if(l){return new a(l,f.dom,m)}}function h(){f.getBody().style.webkitUserSelect="";f.dom.removeClass(f.dom.select("td.mceSelected,th.mceSelected"),"mceSelected")}d([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(l){f.addButton(l[0],{title:l[1],cmd:l[2],ui:l[3]})});if(!c.isIE){f.onClick.add(function(l,m){m=m.target;if(m.nodeName==="TABLE"){l.selection.select(m);l.nodeChanged()}})}f.onPreProcess.add(function(m,n){var l,o,p,r=m.dom,q;l=r.select("table",n.node);o=l.length;while(o--){p=l[o];r.setAttrib(p,"data-mce-style","");if((q=r.getAttrib(p,"width"))){r.setStyle(p,"width",q);r.setAttrib(p,"width","")}if((q=r.getAttrib(p,"height"))){r.setStyle(p,"height",q);r.setAttrib(p,"height","")}}});f.onNodeChange.add(function(m,l,q){var o;q=m.selection.getStart();o=m.dom.getParent(q,"td,th,caption");l.setActive("table",q.nodeName==="TABLE"||!!o);if(o&&o.nodeName==="CAPTION"){o=0}l.setDisabled("delete_table",!o);l.setDisabled("delete_col",!o);l.setDisabled("delete_table",!o);l.setDisabled("delete_row",!o);l.setDisabled("col_after",!o);l.setDisabled("col_before",!o);l.setDisabled("row_after",!o);l.setDisabled("row_before",!o);l.setDisabled("row_props",!o);l.setDisabled("cell_props",!o);l.setDisabled("split_cells",!o);l.setDisabled("merge_cells",!o)});f.onInit.add(function(m){var l,p,q=m.dom,n;e=m.windowManager;m.onMouseDown.add(function(r,s){if(s.button!=2){h();p=q.getParent(s.target,"td,th");l=q.getParent(p,"table")}});q.bind(m.getDoc(),"mouseover",function(u){var s,r,t=u.target;if(p&&(n||t!=p)&&(t.nodeName=="TD"||t.nodeName=="TH")){r=q.getParent(t,"table");if(r==l){if(!n){n=j(r);n.setStartCell(p);m.getBody().style.webkitUserSelect="none"}n.setEndCell(t)}s=m.selection.getSel();if(s.removeAllRanges){s.removeAllRanges()}else{s.empty()}u.preventDefault()}});m.onMouseUp.add(function(A,B){var s,u=A.selection,C,D=u.getSel(),r,v,t,z;if(p){if(n){A.getBody().style.webkitUserSelect=""}function w(E,G){var F=new c.dom.TreeWalker(E,E);do{if(E.nodeType==3&&c.trim(E.nodeValue).length!=0){if(G){s.setStart(E,0)}else{s.setEnd(E,E.nodeValue.length)}return}if(E.nodeName=="BR"){if(G){s.setStartBefore(E)}else{s.setEndBefore(E)}return}}while(E=(G?F.next():F.prev()))}C=q.select("td.mceSelected,th.mceSelected");if(C.length>0){s=q.createRng();v=C[0];z=C[C.length-1];w(v,1);r=new c.dom.TreeWalker(v,q.getParent(C[0],"table"));do{if(v.nodeName=="TD"||v.nodeName=="TH"){if(!q.hasClass(v,"mceSelected")){break}t=v}}while(v=r.next());w(t);u.setRng(s)}A.nodeChanged();p=n=l=null}});m.onKeyUp.add(function(r,s){h()});if(m&&m.plugins.contextmenu){m.plugins.contextmenu.onContextMenu.add(function(t,r,v){var w,u=m.selection,s=u.getNode()||m.getBody();if(m.dom.getParent(v,"td")||m.dom.getParent(v,"th")||m.dom.select("td.mceSelected,th.mceSelected").length){r.removeAll();if(s.nodeName=="A"&&!m.dom.getAttrib(s,"name")){r.add({title:"advanced.link_desc",icon:"link",cmd:m.plugins.advlink?"mceAdvLink":"mceLink",ui:true});r.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});r.addSeparator()}if(s.nodeName=="IMG"&&s.className.indexOf("mceItem")==-1){r.add({title:"advanced.image_desc",icon:"image",cmd:m.plugins.advimage?"mceAdvImage":"mceImage",ui:true});r.addSeparator()}r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});r.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});r.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});r.addSeparator();w=r.addMenu({title:"table.cell"});w.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});w.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});w.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});w=r.addMenu({title:"table.row"});w.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});w.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});w.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});w.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});w.addSeparator();w.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});w.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});w.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!k);w.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!k);w=r.addMenu({title:"table.col"});w.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});w.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});w.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(!c.isIE){function o(){var r;for(r=m.getBody().lastChild;r&&r.nodeType==3&&!r.nodeValue.length;r=r.previousSibling){}if(r&&r.nodeName=="TABLE"){m.dom.add(m.getBody(),"p",null,'
        ')}}if(c.isGecko){m.onKeyDown.add(function(s,u){var r,t,v=s.dom;if(u.keyCode==37||u.keyCode==38){r=s.selection.getRng();t=v.getParent(r.startContainer,"table");if(t&&s.getBody().firstChild==t){if(b(r,t)){r=v.createRng();r.setStartBefore(t);r.setEndBefore(t);s.selection.setRng(r);u.preventDefault()}}}})}m.onKeyUp.add(o);m.onSetContent.add(o);m.onVisualAid.add(o);m.onPreProcess.add(function(r,t){var s=t.node.lastChild;if(s&&s.childNodes.length==1&&s.firstChild.nodeName=="BR"){r.dom.remove(s)}});o()}});d({mceTableSplitCells:function(l){l.split()},mceTableMergeCells:function(m){var n,o,l;l=f.dom.getParent(f.selection.getNode(),"th,td");if(l){n=l.rowSpan;o=l.colSpan}if(!f.dom.select("td.mceSelected,th.mceSelected").length){e.open({url:g+"/merge_cells.htm",width:240+parseInt(f.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(f.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:n,cols:o,onaction:function(p){m.merge(l,p.cols,p.rows)},plugin_url:g})}else{m.merge()}},mceTableInsertRowBefore:function(l){l.insertRow(true)},mceTableInsertRowAfter:function(l){l.insertRow()},mceTableInsertColBefore:function(l){l.insertCol(true)},mceTableInsertColAfter:function(l){l.insertCol()},mceTableDeleteCol:function(l){l.deleteCols()},mceTableDeleteRow:function(l){l.deleteRows()},mceTableCutRow:function(l){k=l.cutRows()},mceTableCopyRow:function(l){k=l.copyRows()},mceTablePasteRowBefore:function(l){l.pasteRows(k,true)},mceTablePasteRowAfter:function(l){l.pasteRows(k)},mceTableDelete:function(l){l.deleteTable()}},function(m,l){f.addCommand(l,function(){var n=j();if(n){m(n);f.execCommand("mceRepaint");h()}})});d({mceInsertTable:function(l){e.open({url:g+"/table.htm",width:400+parseInt(f.getLang("table.table_delta_width",0)),height:320+parseInt(f.getLang("table.table_delta_height",0)),inline:1},{plugin_url:g,action:l?l.action:0})},mceTableRowProps:function(){e.open({url:g+"/row.htm",width:400+parseInt(f.getLang("table.rowprops_delta_width",0)),height:295+parseInt(f.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:g})},mceTableCellProps:function(){e.open({url:g+"/cell.htm",width:400+parseInt(f.getLang("table.cellprops_delta_width",0)),height:295+parseInt(f.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:g})}},function(m,l){f.addCommand(l,function(n,o){m(o)})})}});c.PluginManager.add("table",c.plugins.TablePlugin)})(tinymce); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/editor_plugin_src.js b/js/tiny_mce/plugins/table/editor_plugin_src.js new file mode 100644 index 000000000..7bfe2735c --- /dev/null +++ b/js/tiny_mce/plugins/table/editor_plugin_src.js @@ -0,0 +1,1198 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var each = tinymce.each; + + // Checks if the selection/caret is at the start of the specified block element + function isAtStart(rng, par) { + var doc = par.ownerDocument, rng2 = doc.createRange(), elm; + + rng2.setStartBefore(par); + rng2.setEnd(rng.endContainer, rng.endOffset); + + elm = doc.createElement('body'); + elm.appendChild(rng2.cloneContents()); + + // Check for text characters of other elements that should be treated as content + return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0; + }; + + /** + * Table Grid class. + */ + function TableGrid(table, dom, selection) { + var grid, startPos, endPos, selectedCell; + + buildGrid(); + selectedCell = dom.getParent(selection.getStart(), 'th,td'); + if (selectedCell) { + startPos = getPos(selectedCell); + endPos = findEndPos(); + selectedCell = getCell(startPos.x, startPos.y); + } + + function cloneNode(node, children) { + node = node.cloneNode(children); + node.removeAttribute('id'); + + return node; + } + + function buildGrid() { + var startY = 0; + + grid = []; + + each(['thead', 'tbody', 'tfoot'], function(part) { + var rows = dom.select('> ' + part + ' tr', table); + + each(rows, function(tr, y) { + y += startY; + + each(dom.select('> td, > th', tr), function(td, x) { + var x2, y2, rowspan, colspan; + + // Skip over existing cells produced by rowspan + if (grid[y]) { + while (grid[y][x]) + x++; + } + + // Get col/rowspan from cell + rowspan = getSpanVal(td, 'rowspan'); + colspan = getSpanVal(td, 'colspan'); + + // Fill out rowspan/colspan right and down + for (y2 = y; y2 < y + rowspan; y2++) { + if (!grid[y2]) + grid[y2] = []; + + for (x2 = x; x2 < x + colspan; x2++) { + grid[y2][x2] = { + part : part, + real : y2 == y && x2 == x, + elm : td, + rowspan : rowspan, + colspan : colspan + }; + } + } + }); + }); + + startY += rows.length; + }); + }; + + function getCell(x, y) { + var row; + + row = grid[y]; + if (row) + return row[x]; + }; + + function getSpanVal(td, name) { + return parseInt(td.getAttribute(name) || 1); + }; + + function setSpanVal(td, name, val) { + if (td) { + val = parseInt(val); + + if (val === 1) + td.removeAttribute(name, 1); + else + td.setAttribute(name, val, 1); + } + } + + function isCellSelected(cell) { + return cell && (dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell); + }; + + function getSelectedRows() { + var rows = []; + + each(table.rows, function(row) { + each(row.cells, function(cell) { + if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { + rows.push(row); + return false; + } + }); + }); + + return rows; + }; + + function deleteTable() { + var rng = dom.createRng(); + + rng.setStartAfter(table); + rng.setEndAfter(table); + + selection.setRng(rng); + + dom.remove(table); + }; + + function cloneCell(cell) { + var formatNode; + + // Clone formats + tinymce.walk(cell, function(node) { + var curNode; + + if (node.nodeType == 3) { + each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { + node = cloneNode(node, false); + + if (!formatNode) + formatNode = curNode = node; + else if (curNode) + curNode.appendChild(node); + + curNode = node; + }); + + // Add something to the inner node + if (curNode) + curNode.innerHTML = tinymce.isIE ? ' ' : '
        '; + + return false; + } + }, 'childNodes'); + + cell = cloneNode(cell, false); + setSpanVal(cell, 'rowspan', 1); + setSpanVal(cell, 'colspan', 1); + + if (formatNode) { + cell.appendChild(formatNode); + } else { + if (!tinymce.isIE) + cell.innerHTML = '
        '; + } + + return cell; + }; + + function cleanup() { + var rng = dom.createRng(); + + // Empty rows + each(dom.select('tr', table), function(tr) { + if (tr.cells.length == 0) + dom.remove(tr); + }); + + // Empty table + if (dom.select('tr', table).length == 0) { + rng.setStartAfter(table); + rng.setEndAfter(table); + selection.setRng(rng); + dom.remove(table); + return; + } + + // Empty header/body/footer + each(dom.select('thead,tbody,tfoot', table), function(part) { + if (part.rows.length == 0) + dom.remove(part); + }); + + // Restore selection to start position if it still exists + buildGrid(); + + // Restore the selection to the closest table position + row = grid[Math.min(grid.length - 1, startPos.y)]; + if (row) { + selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); + selection.collapse(true); + } + }; + + function fillLeftDown(x, y, rows, cols) { + var tr, x2, r, c, cell; + + tr = grid[y][x].elm.parentNode; + for (r = 1; r <= rows; r++) { + tr = dom.getNext(tr, 'tr'); + + if (tr) { + // Loop left to find real cell + for (x2 = x; x2 >= 0; x2--) { + cell = grid[y + r][x2].elm; + + if (cell.parentNode == tr) { + // Append clones after + for (c = 1; c <= cols; c++) + dom.insertAfter(cloneCell(cell), cell); + + break; + } + } + + if (x2 == -1) { + // Insert nodes before first cell + for (c = 1; c <= cols; c++) + tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); + } + } + } + }; + + function split() { + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan, newCell, i; + + if (isCellSelected(cell)) { + cell = cell.elm; + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan > 1 || rowSpan > 1) { + setSpanVal(cell, 'rowspan', 1); + setSpanVal(cell, 'colspan', 1); + + // Insert cells right + for (i = 0; i < colSpan - 1; i++) + dom.insertAfter(cloneCell(cell), cell); + + fillLeftDown(x, y, rowSpan - 1, colSpan); + } + } + }); + }); + }; + + function merge(cell, cols, rows) { + var startX, startY, endX, endY, x, y, startCell, endCell, cell, children, count; + + // Use specified cell and cols/rows + if (cell) { + pos = getPos(cell); + startX = pos.x; + startY = pos.y; + endX = startX + (cols - 1); + endY = startY + (rows - 1); + } else { + // Use selection + startX = startPos.x; + startY = startPos.y; + endX = endPos.x; + endY = endPos.y; + } + + // Find start/end cells + startCell = getCell(startX, startY); + endCell = getCell(endX, endY); + + // Check if the cells exists and if they are of the same part for example tbody = tbody + if (startCell && endCell && startCell.part == endCell.part) { + // Split and rebuild grid + split(); + buildGrid(); + + // Set row/col span to start cell + startCell = getCell(startX, startY).elm; + setSpanVal(startCell, 'colspan', (endX - startX) + 1); + setSpanVal(startCell, 'rowspan', (endY - startY) + 1); + + // Remove other cells and add it's contents to the start cell + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + if (!grid[y] || !grid[y][x]) + continue; + + cell = grid[y][x].elm; + + if (cell != startCell) { + // Move children to startCell + children = tinymce.grep(cell.childNodes); + each(children, function(node) { + startCell.appendChild(node); + }); + + // Remove bogus nodes if there is children in the target cell + if (children.length) { + children = tinymce.grep(startCell.childNodes); + count = 0; + each(children, function(node) { + if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1) + startCell.removeChild(node); + }); + } + + // Remove cell + dom.remove(cell); + } + } + } + + // Remove empty rows etc and restore caret location + cleanup(); + } + }; + + function insertRow(before) { + var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan; + + // Find first/last row + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + cell = cell.elm; + rowElm = cell.parentNode; + newRow = cloneNode(rowElm, false); + posY = y; + + if (before) + return false; + } + }); + + if (before) + return !posY; + }); + + for (x = 0; x < grid[0].length; x++) { + // Cell not found could be because of an invalid table structure + if (!grid[posY][x]) + continue; + + cell = grid[posY][x].elm; + + if (cell != lastCell) { + if (!before) { + rowSpan = getSpanVal(cell, 'rowspan'); + if (rowSpan > 1) { + setSpanVal(cell, 'rowspan', rowSpan + 1); + continue; + } + } else { + // Check if cell above can be expanded + if (posY > 0 && grid[posY - 1][x]) { + otherCell = grid[posY - 1][x].elm; + rowSpan = getSpanVal(otherCell, 'rowspan'); + if (rowSpan > 1) { + setSpanVal(otherCell, 'rowspan', rowSpan + 1); + continue; + } + } + } + + // Insert new cell into new row + newCell = cloneCell(cell); + setSpanVal(newCell, 'colspan', cell.colSpan); + + newRow.appendChild(newCell); + + lastCell = cell; + } + } + + if (newRow.hasChildNodes()) { + if (!before) + dom.insertAfter(newRow, rowElm); + else + rowElm.parentNode.insertBefore(newRow, rowElm); + } + }; + + function insertCol(before) { + var posX, lastCell; + + // Find first/last column + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + posX = x; + + if (before) + return false; + } + }); + + if (before) + return !posX; + }); + + each(grid, function(row, y) { + var cell, rowSpan, colSpan; + + if (!row[posX]) + return; + + cell = row[posX].elm; + if (cell != lastCell) { + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan == 1) { + if (!before) { + dom.insertAfter(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } else { + cell.parentNode.insertBefore(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } + } else + setSpanVal(cell, 'colspan', cell.colSpan + 1); + + lastCell = cell; + } + }); + }; + + function deleteCols() { + var cols = []; + + // Get selected column indexes + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { + each(grid, function(row) { + var cell = row[x].elm, colSpan; + + colSpan = getSpanVal(cell, 'colspan'); + + if (colSpan > 1) + setSpanVal(cell, 'colspan', colSpan - 1); + else + dom.remove(cell); + }); + + cols.push(x); + } + }); + }); + + cleanup(); + }; + + function deleteRows() { + var rows; + + function deleteRow(tr) { + var nextTr, pos, lastCell; + + nextTr = dom.getNext(tr, 'tr'); + + // Move down row spanned cells + each(tr.cells, function(cell) { + var rowSpan = getSpanVal(cell, 'rowspan'); + + if (rowSpan > 1) { + setSpanVal(cell, 'rowspan', rowSpan - 1); + pos = getPos(cell); + fillLeftDown(pos.x, pos.y, 1, 1); + } + }); + + // Delete cells + pos = getPos(tr.cells[0]); + each(grid[pos.y], function(cell) { + var rowSpan; + + cell = cell.elm; + + if (cell != lastCell) { + rowSpan = getSpanVal(cell, 'rowspan'); + + if (rowSpan <= 1) + dom.remove(cell); + else + setSpanVal(cell, 'rowspan', rowSpan - 1); + + lastCell = cell; + } + }); + }; + + // Get selected rows and move selection out of scope + rows = getSelectedRows(); + + // Delete all selected rows + each(rows.reverse(), function(tr) { + deleteRow(tr); + }); + + cleanup(); + }; + + function cutRows() { + var rows = getSelectedRows(); + + dom.remove(rows); + cleanup(); + + return rows; + }; + + function copyRows() { + var rows = getSelectedRows(); + + each(rows, function(row, i) { + rows[i] = cloneNode(row, true); + }); + + return rows; + }; + + function pasteRows(rows, before) { + var selectedRows = getSelectedRows(), + targetRow = selectedRows[before ? 0 : selectedRows.length - 1], + targetCellCount = targetRow.cells.length; + + // Calc target cell count + each(grid, function(row) { + var match; + + targetCellCount = 0; + each(row, function(cell, x) { + if (cell.real) + targetCellCount += cell.colspan; + + if (cell.elm.parentNode == targetRow) + match = 1; + }); + + if (match) + return false; + }); + + if (!before) + rows.reverse(); + + each(rows, function(row) { + var cellCount = row.cells.length, cell; + + // Remove col/rowspans + for (i = 0; i < cellCount; i++) { + cell = row.cells[i]; + setSpanVal(cell, 'colspan', 1); + setSpanVal(cell, 'rowspan', 1); + } + + // Needs more cells + for (i = cellCount; i < targetCellCount; i++) + row.appendChild(cloneCell(row.cells[cellCount - 1])); + + // Needs less cells + for (i = targetCellCount; i < cellCount; i++) + dom.remove(row.cells[i]); + + // Add before/after + if (before) + targetRow.parentNode.insertBefore(row, targetRow); + else + dom.insertAfter(row, targetRow); + }); + }; + + function getPos(target) { + var pos; + + each(grid, function(row, y) { + each(row, function(cell, x) { + if (cell.elm == target) { + pos = {x : x, y : y}; + return false; + } + }); + + return !pos; + }); + + return pos; + }; + + function setStartCell(cell) { + startPos = getPos(cell); + }; + + function findEndPos() { + var pos, maxX, maxY; + + maxX = maxY = 0; + + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan; + + if (isCellSelected(cell)) { + cell = grid[y][x]; + + if (x > maxX) + maxX = x; + + if (y > maxY) + maxY = y; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + }); + }); + + return {x : maxX, y : maxY}; + }; + + function setEndCell(cell) { + var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; + + endPos = getPos(cell); + + if (startPos && endPos) { + // Get start/end positions + startX = Math.min(startPos.x, endPos.x); + startY = Math.min(startPos.y, endPos.y); + endX = Math.max(startPos.x, endPos.x); + endY = Math.max(startPos.y, endPos.y); + + // Expand end positon to include spans + maxX = endX; + maxY = endY; + + // Expand startX + for (y = startY; y <= maxY; y++) { + cell = grid[y][startX]; + + if (!cell.real) { + if (startX - (cell.colspan - 1) < startX) + startX -= cell.colspan - 1; + } + } + + // Expand startY + for (x = startX; x <= maxX; x++) { + cell = grid[startY][x]; + + if (!cell.real) { + if (startY - (cell.rowspan - 1) < startY) + startY -= cell.rowspan - 1; + } + } + + // Find max X, Y + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + cell = grid[y][x]; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + } + + // Remove current selection + dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + + // Add new selection + for (y = startY; y <= maxY; y++) { + for (x = startX; x <= maxX; x++) { + if (grid[y][x]) + dom.addClass(grid[y][x].elm, 'mceSelected'); + } + } + } + }; + + // Expose to public + tinymce.extend(this, { + deleteTable : deleteTable, + split : split, + merge : merge, + insertRow : insertRow, + insertCol : insertCol, + deleteCols : deleteCols, + deleteRows : deleteRows, + cutRows : cutRows, + copyRows : copyRows, + pasteRows : pasteRows, + getPos : getPos, + setStartCell : setStartCell, + setEndCell : setEndCell + }); + }; + + tinymce.create('tinymce.plugins.TablePlugin', { + init : function(ed, url) { + var winMan, clipboardRows; + + function createTableGrid(node) { + var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); + + if (tblElm) + return new TableGrid(tblElm, ed.dom, selection); + }; + + function cleanup() { + // Restore selection possibilities + ed.getBody().style.webkitUserSelect = ''; + ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + }; + + // Register buttons + each([ + ['table', 'table.desc', 'mceInsertTable', true], + ['delete_table', 'table.del', 'mceTableDelete'], + ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], + ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], + ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], + ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], + ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], + ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], + ['row_props', 'table.row_desc', 'mceTableRowProps', true], + ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], + ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], + ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] + ], function(c) { + ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); + }); + + // Select whole table is a table border is clicked + if (!tinymce.isIE) { + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'TABLE') { + ed.selection.select(e); + ed.nodeChanged(); + } + }); + } + + ed.onPreProcess.add(function(ed, args) { + var nodes, i, node, dom = ed.dom, value; + + nodes = dom.select('table', args.node); + i = nodes.length; + while (i--) { + node = nodes[i]; + dom.setAttrib(node, 'data-mce-style', ''); + + if ((value = dom.getAttrib(node, 'width'))) { + dom.setStyle(node, 'width', value); + dom.setAttrib(node, 'width', ''); + } + + if ((value = dom.getAttrib(node, 'height'))) { + dom.setStyle(node, 'height', value); + dom.setAttrib(node, 'height', ''); + } + } + }); + + // Handle node change updates + ed.onNodeChange.add(function(ed, cm, n) { + var p; + + n = ed.selection.getStart(); + p = ed.dom.getParent(n, 'td,th,caption'); + cm.setActive('table', n.nodeName === 'TABLE' || !!p); + + // Disable table tools if we are in caption + if (p && p.nodeName === 'CAPTION') + p = 0; + + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_col', !p); + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_row', !p); + cm.setDisabled('col_after', !p); + cm.setDisabled('col_before', !p); + cm.setDisabled('row_after', !p); + cm.setDisabled('row_before', !p); + cm.setDisabled('row_props', !p); + cm.setDisabled('cell_props', !p); + cm.setDisabled('split_cells', !p); + cm.setDisabled('merge_cells', !p); + }); + + ed.onInit.add(function(ed) { + var startTable, startCell, dom = ed.dom, tableGrid; + + winMan = ed.windowManager; + + // Add cell selection logic + ed.onMouseDown.add(function(ed, e) { + if (e.button != 2) { + cleanup(); + + startCell = dom.getParent(e.target, 'td,th'); + startTable = dom.getParent(startCell, 'table'); + } + }); + + dom.bind(ed.getDoc(), 'mouseover', function(e) { + var sel, table, target = e.target; + + if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { + table = dom.getParent(target, 'table'); + if (table == startTable) { + if (!tableGrid) { + tableGrid = createTableGrid(table); + tableGrid.setStartCell(startCell); + + ed.getBody().style.webkitUserSelect = 'none'; + } + + tableGrid.setEndCell(target); + } + + // Remove current selection + sel = ed.selection.getSel(); + + if (sel.removeAllRanges) + sel.removeAllRanges(); + else + sel.empty(); + + e.preventDefault(); + } + }); + + ed.onMouseUp.add(function(ed, e) { + var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; + + // Move selection to startCell + if (startCell) { + if (tableGrid) + ed.getBody().style.webkitUserSelect = ''; + + function setPoint(node, start) { + var walker = new tinymce.dom.TreeWalker(node, node); + + do { + // Text node + if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { + if (start) + rng.setStart(node, 0); + else + rng.setEnd(node, node.nodeValue.length); + + return; + } + + // BR element + if (node.nodeName == 'BR') { + if (start) + rng.setStartBefore(node); + else + rng.setEndBefore(node); + + return; + } + } while (node = (start ? walker.next() : walker.prev())); + }; + + // Try to expand text selection as much as we can only Gecko supports cell selection + selectedCells = dom.select('td.mceSelected,th.mceSelected'); + if (selectedCells.length > 0) { + rng = dom.createRng(); + node = selectedCells[0]; + endNode = selectedCells[selectedCells.length - 1]; + + setPoint(node, 1); + walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); + + do { + if (node.nodeName == 'TD' || node.nodeName == 'TH') { + if (!dom.hasClass(node, 'mceSelected')) + break; + + lastNode = node; + } + } while (node = walker.next()); + + setPoint(lastNode); + + sel.setRng(rng); + } + + ed.nodeChanged(); + startCell = tableGrid = startTable = null; + } + }); + + ed.onKeyUp.add(function(ed, e) { + cleanup(); + }); + + // Add context menu + if (ed && ed.plugins.contextmenu) { + ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { + var sm, se = ed.selection, el = se.getNode() || ed.getBody(); + + if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { + m.removeAll(); + + if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + m.addSeparator(); + } + + if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + m.addSeparator(); + } + + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); + m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); + m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); + m.addSeparator(); + + // Cell menu + sm = m.addMenu({title : 'table.cell'}); + sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); + sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); + sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); + + // Row menu + sm = m.addMenu({title : 'table.row'}); + sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); + sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); + sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); + sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); + sm.addSeparator(); + sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); + sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); + sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); + sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); + + // Column menu + sm = m.addMenu({title : 'table.col'}); + sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); + sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); + sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); + } else + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); + }); + } + + // Fixes an issue on Gecko where it's impossible to place the caret behind a table + // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled + if (!tinymce.isIE) { + function fixTableCaretPos() { + var last; + + // Skip empty text nodes form the end + for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; + + if (last && last.nodeName == 'TABLE') + ed.dom.add(ed.getBody(), 'p', null, '
        '); + }; + + // Fixes an bug where it's impossible to place the caret before a table in Gecko + // this fix solves it by detecting when the caret is at the beginning of such a table + // and then manually moves the caret infront of the table + if (tinymce.isGecko) { + ed.onKeyDown.add(function(ed, e) { + var rng, table, dom = ed.dom; + + // On gecko it's not possible to place the caret before a table + if (e.keyCode == 37 || e.keyCode == 38) { + rng = ed.selection.getRng(); + table = dom.getParent(rng.startContainer, 'table'); + + if (table && ed.getBody().firstChild == table) { + if (isAtStart(rng, table)) { + rng = dom.createRng(); + + rng.setStartBefore(table); + rng.setEndBefore(table); + + ed.selection.setRng(rng); + + e.preventDefault(); + } + } + } + }); + } + + ed.onKeyUp.add(fixTableCaretPos); + ed.onSetContent.add(fixTableCaretPos); + ed.onVisualAid.add(fixTableCaretPos); + + ed.onPreProcess.add(function(ed, o) { + var last = o.node.lastChild; + + if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') + ed.dom.remove(last); + }); + + fixTableCaretPos(); + } + }); + + // Register action commands + each({ + mceTableSplitCells : function(grid) { + grid.split(); + }, + + mceTableMergeCells : function(grid) { + var rowSpan, colSpan, cell; + + cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); + if (cell) { + rowSpan = cell.rowSpan; + colSpan = cell.colSpan; + } + + if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { + winMan.open({ + url : url + '/merge_cells.htm', + width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), + height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), + inline : 1 + }, { + rows : rowSpan, + cols : colSpan, + onaction : function(data) { + grid.merge(cell, data.cols, data.rows); + }, + plugin_url : url + }); + } else + grid.merge(); + }, + + mceTableInsertRowBefore : function(grid) { + grid.insertRow(true); + }, + + mceTableInsertRowAfter : function(grid) { + grid.insertRow(); + }, + + mceTableInsertColBefore : function(grid) { + grid.insertCol(true); + }, + + mceTableInsertColAfter : function(grid) { + grid.insertCol(); + }, + + mceTableDeleteCol : function(grid) { + grid.deleteCols(); + }, + + mceTableDeleteRow : function(grid) { + grid.deleteRows(); + }, + + mceTableCutRow : function(grid) { + clipboardRows = grid.cutRows(); + }, + + mceTableCopyRow : function(grid) { + clipboardRows = grid.copyRows(); + }, + + mceTablePasteRowBefore : function(grid) { + grid.pasteRows(clipboardRows, true); + }, + + mceTablePasteRowAfter : function(grid) { + grid.pasteRows(clipboardRows); + }, + + mceTableDelete : function(grid) { + grid.deleteTable(); + } + }, function(func, name) { + ed.addCommand(name, function() { + var grid = createTableGrid(); + + if (grid) { + func(grid); + ed.execCommand('mceRepaint'); + cleanup(); + } + }); + }); + + // Register dialog commands + each({ + mceInsertTable : function(val) { + winMan.open({ + url : url + '/table.htm', + width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), + height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + action : val ? val.action : 0 + }); + }, + + mceTableRowProps : function() { + winMan.open({ + url : url + '/row.htm', + width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }, + + mceTableCellProps : function() { + winMan.open({ + url : url + '/cell.htm', + width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + } + }, function(func, name) { + ed.addCommand(name, function(ui, val) { + func(val); + }); + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); +})(tinymce); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/js/cell.js b/js/tiny_mce/plugins/table/js/cell.js new file mode 100644 index 000000000..45e6061fd --- /dev/null +++ b/js/tiny_mce/plugins/table/js/cell.js @@ -0,0 +1,284 @@ +tinyMCEPopup.requireLangPack(); + +var ed; + +function init() { + ed = tinyMCEPopup.editor; + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') + + var inst = ed; + var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th"); + var formObj = document.forms[0]; + var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style")); + + // Get table cell data + var celltype = tdElm.nodeName.toLowerCase(); + var align = ed.dom.getAttrib(tdElm, 'align'); + var valign = ed.dom.getAttrib(tdElm, 'valign'); + var width = trimSize(getStyle(tdElm, 'width', 'width')); + var height = trimSize(getStyle(tdElm, 'height', 'height')); + var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); + var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); + var className = ed.dom.getAttrib(tdElm, 'class'); + var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + var id = ed.dom.getAttrib(tdElm, 'id'); + var lang = ed.dom.getAttrib(tdElm, 'lang'); + var dir = ed.dom.getAttrib(tdElm, 'dir'); + var scope = ed.dom.getAttrib(tdElm, 'scope'); + + // Setup form + addClassesToList('class', 'table_cell_styles'); + TinyMCE_EditableSelects.init(); + + if (!ed.dom.hasClass(tdElm, 'mceSelected')) { + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.backgroundimage.value = backgroundimage; + formObj.width.value = width; + formObj.height.value = height; + formObj.id.value = id; + formObj.lang.value = lang; + formObj.style.value = ed.dom.serializeStyle(st); + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'valign', valign); + selectByValue(formObj, 'class', className, true, true); + selectByValue(formObj, 'celltype', celltype); + selectByValue(formObj, 'dir', dir); + selectByValue(formObj, 'scope', scope); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + } else + tinyMCEPopup.dom.hide('action'); +} + +function updateAction() { + var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; + + tinyMCEPopup.restoreSelection(); + el = ed.selection.getStart(); + tdElm = ed.dom.getParent(el, "td,th"); + trElm = ed.dom.getParent(el, "tr"); + tableElm = ed.dom.getParent(el, "table"); + + // Cell is selected + if (ed.dom.hasClass(tdElm, 'mceSelected')) { + // Update all selected sells + tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) { + updateCell(td); + }); + + ed.addVisual(); + ed.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + return; + } + + switch (getSelectValue(formObj, 'action')) { + case "cell": + var celltype = getSelectValue(formObj, 'celltype'); + var scope = getSelectValue(formObj, 'scope'); + + function doUpdate(s) { + if (s) { + updateCell(tdElm); + + ed.addVisual(); + ed.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + } + }; + + if (ed.getParam("accessibility_warnings", 1)) { + if (celltype == "th" && scope == "") + tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate); + else + doUpdate(1); + + return; + } + + updateCell(tdElm); + break; + + case "row": + var cell = trElm.firstChild; + + if (cell.nodeName != "TD" && cell.nodeName != "TH") + cell = nextCell(cell); + + do { + cell = updateCell(cell, true); + } while ((cell = nextCell(cell)) != null); + + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i 0) { + tinymce.each(tableElm.rows, function(tr) { + var i; + + for (i = 0; i < tr.cells.length; i++) { + if (dom.hasClass(tr.cells[i], 'mceSelected')) { + updateRow(tr, true); + return; + } + } + }); + + inst.addVisual(); + inst.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + tinyMCEPopup.close(); + return; + } + + switch (action) { + case "row": + updateRow(trElm); + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i colLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); + return false; + } else if (rowLimit && rows > rowLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); + return false; + } else if (cellLimit && cols * rows > cellLimit) { + tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); + return false; + } + + // Update table + if (action == "update") { + dom.setAttrib(elm, 'cellPadding', cellpadding, true); + dom.setAttrib(elm, 'cellSpacing', cellspacing, true); + dom.setAttrib(elm, 'border', border); + dom.setAttrib(elm, 'align', align); + dom.setAttrib(elm, 'frame', frame); + dom.setAttrib(elm, 'rules', rules); + dom.setAttrib(elm, 'class', className); + dom.setAttrib(elm, 'style', style); + dom.setAttrib(elm, 'id', id); + dom.setAttrib(elm, 'summary', summary); + dom.setAttrib(elm, 'dir', dir); + dom.setAttrib(elm, 'lang', lang); + + capEl = inst.dom.select('caption', elm)[0]; + + if (capEl && !caption) + capEl.parentNode.removeChild(capEl); + + if (!capEl && caption) { + capEl = elm.ownerDocument.createElement('caption'); + + if (!tinymce.isIE) + capEl.innerHTML = '
        '; + + elm.insertBefore(capEl, elm.firstChild); + } + + if (width && inst.settings.inline_styles) { + dom.setStyle(elm, 'width', width); + dom.setAttrib(elm, 'width', ''); + } else { + dom.setAttrib(elm, 'width', width, true); + dom.setStyle(elm, 'width', ''); + } + + // Remove these since they are not valid XHTML + dom.setAttrib(elm, 'borderColor', ''); + dom.setAttrib(elm, 'bgColor', ''); + dom.setAttrib(elm, 'background', ''); + + if (height && inst.settings.inline_styles) { + dom.setStyle(elm, 'height', height); + dom.setAttrib(elm, 'height', ''); + } else { + dom.setAttrib(elm, 'height', height, true); + dom.setStyle(elm, 'height', ''); + } + + if (background != '') + elm.style.backgroundImage = "url('" + background + "')"; + else + elm.style.backgroundImage = ''; + +/* if (tinyMCEPopup.getParam("inline_styles")) { + if (width != '') + elm.style.width = getCSSSize(width); + }*/ + + if (bordercolor != "") { + elm.style.borderColor = bordercolor; + elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; + elm.style.borderWidth = border == "" ? "1px" : border; + } else + elm.style.borderColor = ''; + + elm.style.backgroundColor = bgcolor; + elm.style.height = getCSSSize(height); + + inst.addVisual(); + + // Fix for stange MSIE align bug + //elm.outerHTML = elm.outerHTML; + + inst.nodeChanged(); + inst.execCommand('mceEndUndoLevel'); + + // Repaint if dimensions changed + if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) + inst.execCommand('mceRepaint'); + + tinyMCEPopup.close(); + return true; + } + + // Create new table + html += ''); + + tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { + if (patt) + patt += ','; + + patt += n + ' ._mce_marker'; + }); + + tinymce.each(inst.dom.select(patt), function(n) { + inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); + }); + + dom.setOuterHTML(dom.select('br._mce_marker')[0], html); + } else + inst.execCommand('mceInsertContent', false, html); + + tinymce.each(dom.select('table[data-mce-new]'), function(node) { + var td = dom.select('td', node); + + try { + // IE9 might fail to do this selection + inst.selection.select(td[0], true); + inst.selection.collapse(); + } catch (ex) { + // Ignore + } + + dom.setAttrib(node, 'data-mce-new', ''); + }); + + inst.addVisual(); + inst.execCommand('mceEndUndoLevel'); + + tinyMCEPopup.close(); +} + +function makeAttrib(attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value == "") + return ""; + + // XML encode it + value = value.replace(/&/g, '&'); + value = value.replace(/\"/g, '"'); + value = value.replace(//g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', ''); + var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; + var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = ""; + var inst = tinyMCEPopup.editor, dom = inst.dom; + var formObj = document.forms[0]; + var elm = dom.getParent(inst.selection.getNode(), "table"); + + action = tinyMCEPopup.getWindowArg('action'); + + if (!action) + action = elm ? "update" : "insert"; + + if (elm && action != "insert") { + var rowsAr = elm.rows; + var cols = 0; + for (var i=0; i cols) + cols = rowsAr[i].cells.length; + + cols = cols; + rows = rowsAr.length; + + st = dom.parseStyle(dom.getAttrib(elm, "style")); + border = trimSize(getStyle(elm, 'border', 'borderWidth')); + cellpadding = dom.getAttrib(elm, 'cellpadding', ""); + cellspacing = dom.getAttrib(elm, 'cellspacing', ""); + width = trimSize(getStyle(elm, 'width', 'width')); + height = trimSize(getStyle(elm, 'height', 'height')); + bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); + bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); + align = dom.getAttrib(elm, 'align', align); + frame = dom.getAttrib(elm, 'frame'); + rules = dom.getAttrib(elm, 'rules'); + className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, '')); + id = dom.getAttrib(elm, 'id'); + summary = dom.getAttrib(elm, 'summary'); + style = dom.serializeStyle(st); + dir = dom.getAttrib(elm, 'dir'); + lang = dom.getAttrib(elm, 'lang'); + background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + formObj.caption.checked = elm.getElementsByTagName('caption').length > 0; + + orgTableWidth = width; + orgTableHeight = height; + + action = "update"; + formObj.insert.value = inst.getLang('update'); + } + + addClassesToList('class', "table_styles"); + TinyMCE_EditableSelects.init(); + + // Update form + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'tframe', frame); + selectByValue(formObj, 'rules', rules); + selectByValue(formObj, 'class', className, true, true); + formObj.cols.value = cols; + formObj.rows.value = rows; + formObj.border.value = border; + formObj.cellpadding.value = cellpadding; + formObj.cellspacing.value = cellspacing; + formObj.width.value = width; + formObj.height.value = height; + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.id.value = id; + formObj.summary.value = summary; + formObj.style.value = style; + formObj.dir.value = dir; + formObj.lang.value = lang; + formObj.backgroundimage.value = background; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + // Disable some fields in update mode + if (action == "update") { + formObj.cols.disabled = true; + formObj.rows.disabled = true; + } +} + +function changedSize() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + +/* var width = formObj.width.value; + if (width != "") + st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : ""; + else + st['width'] = "";*/ + + var height = formObj.height.value; + if (height != "") + st['height'] = getCSSSize(height); + else + st['height'] = ""; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedBackgroundImage() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedBorder() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + // Update border width if the element has a color + if (formObj.border.value != "" && formObj.bordercolor.value != "") + st['border-width'] = formObj.border.value + "px"; + + formObj.style.value = dom.serializeStyle(st); +} + +function changedColor() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + st['background-color'] = formObj.bgcolor.value; + + if (formObj.bordercolor.value != "") { + st['border-color'] = formObj.bordercolor.value; + + // Add border-width if it's missing + if (!st['border-width']) + st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; + } + + formObj.style.value = dom.serializeStyle(st); +} + +function changedStyle() { + var formObj = document.forms[0]; + var st = dom.parseStyle(formObj.style.value); + + if (st['background-image']) + formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); + else + formObj.backgroundimage.value = ''; + + if (st['width']) + formObj.width.value = trimSize(st['width']); + + if (st['height']) + formObj.height.value = trimSize(st['height']); + + if (st['background-color']) { + formObj.bgcolor.value = st['background-color']; + updateColor('bgcolor_pick','bgcolor'); + } + + if (st['border-color']) { + formObj.bordercolor.value = st['border-color']; + updateColor('bordercolor_pick','bordercolor'); + } +} + +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/plugins/table/langs/ar_dlg.js b/js/tiny_mce/plugins/table/langs/ar_dlg.js new file mode 100755 index 000000000..4870568cc --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ar_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ar.table_dlg',{rules_border:"\u0627\u0644\u062d\u062f\u0648\u062f",rules_box:"\u0635\u0646\u062f\u0648\u0642",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"\u0623\u062f\u0646\u0627\u0647",rules_above:"\u0623\u0639\u0644\u0649",rules_void:"\u0623\u0644\u063a\u0649",rules:"\u0642\u0648\u0627\u0639\u062f",frame_all:"\u0643\u0627\u0641\u0629",frame_cols:"\u0623\u0639\u0645\u062f\u0629",frame_rows:"\u0627\u0644\u0635\u0641\u0648\u0641",frame_groups:"\u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0627\u062a",frame_none:"\u0644\u0627 \u0634\u064a\u0621",frame:"\u0627\u0644\u0625\u0637\u0627\u0631",caption:"\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062a\u0648\u0636\u064a\u062d\u064a\u0629",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"\u0644\u0642\u062f \u062a\u062c\u0627\u0648\u0632\u062a \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0645\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 {$cells}.",row_limit:"\u0644\u0642\u062f \u062a\u062c\u0627\u0648\u0632\u062a \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641 {$rows}.",col_limit:"\u0644\u0642\u062f \u062a\u062c\u0627\u0648\u0632\u062a \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0623\u0639\u0645\u062f\u0629 {$cols}.",colgroup:"\u0645\u062c\u0645\u0648\u0639\u0629 \u0623\u0639\u0645\u062f\u0629 ",rowgroup:" \u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641",scope:"\u0646\u0637\u0627\u0642",tfoot:"\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0642\u062f\u0645",tbody:" \u0627\u0644\u062c\u062f\u0648\u0644 \u062c\u0633\u062f",thead:"\u0627\u0644\u062c\u062f\u0648\u0644 \u0631\u0626\u064a\u0633",row_all:"\u062a\u062d\u062f\u064a\u062b \u0643\u0627\u0641\u0629 \u0627\u0644\u0635\u0641\u0648\u0641 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644",row_even:" \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u0648\u0641 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644 \u0632\u0648\u062c\u0649 \u0639\u062f\u062f",row_odd:"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u0648\u0641 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644 \u0645\u0641\u0631\u062f",row_row:"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641 \u0627\u0644\u062d\u0627\u0644\u064a",cell_all:"\u062d\u062f\u064a\u062b \u0643\u0627\u0641\u0629 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644",cell_row:"\u062a\u062d\u062f\u064a\u062b \u0643\u0627\u0641\u0629 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 \u0641\u064a \u0627\u0644\u0635\u0641",cell_cell:"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062e\u0644\u064a\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629",th:"\u0631\u0623\u0633",td:"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a",summary:"\u0645\u0644\u062e\u0635",bgimage:"\u0635\u0648\u0631\u0629 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",rtl:"\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u064a\u0633\u0627\u0631",ltr:"\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0625\u0644\u0649 \u0627\u0644\u064a\u0645\u064a\u0646",mime:"\u0627\u0644\u0647\u062f\u0641 \u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641",langcode:"\u0631\u0645\u0632 \u0627\u0644\u0644\u063a\u0629",langdir:"\u0627\u062a\u062c\u0627\u0647 \u0644\u063a\u0629",style:"\u0634\u0643\u0644",id:"Id",merge_cells_title:"\u062f\u0645\u062c \u0627\u0644\u062e\u0644\u0627\u064a\u0627",bgcolor:"\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",bordercolor:"\u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f",align_bottom:"\u0627\u0633\u0641\u0644",align_top:"\u0627\u0644\u0627\u0639\u0644\u0649",valign:"\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0639\u0645\u0648\u062f\u064a\u0629",cell_type:"\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629",cell_title:"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062e\u0644\u064a\u0629",row_title:"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0635\u0641",align_middle:"\u0648\u0633\u0637",align_right:"\u064a\u0645\u064a\u0646",align_left:"\u064a\u0633\u0627\u0631",align_default:"\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",align:"\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629",border:"\u0627\u0644\u062d\u062f\u0648\u062f",cellpadding:"\u0628\u0637\u0627\u0646\u0629 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",cellspacing:"\u0628\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062e\u0644\u0627\u064a\u0627 ",rows:"\u0627\u0644\u0635\u0641\u0648\u0641",cols:"\u0623\u0639\u0645\u062f\u0629",height:"\u0637\u0648\u0644",width:"\u0639\u0631\u0636",title:"\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644 / \u062a\u0639\u062f\u064a\u0644",rowtype:"\u0635\u0641 \u0641\u064a \u062c\u0632\u0621 \u0627\u0644\u062c\u062f\u0648\u0644",advanced_props:"\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0639\u0627\u0645\u0629",general_props:"General properties",advanced_tab:"\u0645\u062a\u0642\u062f\u0645",general_tab:"\u0639\u0627\u0645"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/az_dlg.js b/js/tiny_mce/plugins/table/langs/az_dlg.js new file mode 100755 index 000000000..ba254dc96 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/az_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('az.table_dlg',{rules_border:"s\u0259rh\u0259d",rules_box:"konteyner",rules_vsides:"\u015faquli t\u0259r\u0259fl\u0259r",rules_rhs:"sa\u011f \u00fcf\u00fcqi t\u0259r\u0259fl\u0259r",rules_lhs:"sol \u00fcf\u00fcqi t\u0259r\u0259fl\u0259r",rules_hsides:"\u00fcf\u00fcqi t\u0259r\u0259fl\u0259r",rules_below:"a\u015fa\u011f\u0131dan",rules_above:"yuxar\u0131dan",rules_void:"he\u00e7 n\u0259",rules:"X\u0259ttl\u0259r",frame_all:"ham\u0131s\u0131",frame_cols:"s\u00fctunlar",frame_rows:"s\u0259trl\u0259r",frame_groups:"qruplar",frame_none:"he\u00e7n\u0259",frame:"\u00c7\u0259r\u00e7iv\u0259",caption:"C\u0259dv\u0259l ba\u015fl\u0131\u011f\u0131",missing_scope:"\u018fminsiniz ki, ba\u015fl\u0131q \u00f6z\u0259yinin h\u0259ddini g\u00f6st\u0259rm\u0259d\u0259n davam etm\u0259k ist\u0259yirsiniz? Bunsuz b\u0259zi i\u015f qabiliyy\u0259ti a\u015fa\u011f\u0131 olan istifad\u0259\u00e7il\u0259r\u0259 c\u0259dv\u0259lin m\u0259lumatlar\u0131 v\u0259 t\u0259rkibini anlamaq \u00e7\u0259tin olacaq.",cell_limit:"Siz \u00f6z\u0259kl\u0259rd\u0259 {$cells} maksimum say\u0131 a\u015fd\u0131n\u0131z.",row_limit:"Siz s\u0259trl\u0259rd\u0259 {$rows} maksimum say\u0131 a\u015fd\u0131n\u0131z.",col_limit:"Siz s\u00fctunlarda {$cols} maksimum say\u0131 a\u015fd\u0131n\u0131z.",colgroup:"S\u00fctun qrupu",rowgroup:"S\u0259tr qrupu",scope:"H\u0259dd",tfoot:"C\u0259dv\u0259lin a\u015fa\u011f\u0131 hiss\u0259si",tbody:"C\u0259dv\u0259lin \u0259sas hiss\u0259si",thead:"C\u0259dv\u0259lin yuxar\u0131 hiss\u0259si",row_all:"C\u0259dv\u0259ld\u0259ki b\u00fct\u00fcn s\u0259trl\u0259ri yenil\u0259",row_even:"C\u0259dv\u0259ld\u0259ki c\u00fct (\u0259d\u0259d) s\u0259trl\u0259ri yenil\u0259",row_odd:"C\u0259d\u0259ld\u0259ki t\u0259k (\u0259d\u0259d) s\u0259trl\u0259ri yenil\u0259",row_row:"Haz\u0131rki s\u0259tri yenil\u0259",cell_all:"C\u0259dv\u0259ld\u0259ki b\u00fct\u00fcn \u00f6z\u0259kl\u0259ri yenil\u0259",cell_row:"S\u0259trd\u0259ki b\u00fct\u00fcn \u00f6z\u0259kl\u0259ri yenil\u0259",cell_cell:"Haz\u0131rki \u00f6z\u0259yi yenil\u0259",th:"Ba\u015fl\u0131q",td:"Veril\u0259nl\u0259r",summary:"X\u00fclas\u0259",bgimage:"Fon \u015f\u0259kli",rtl:"Sa\u011fda-sola",ltr:"Solda-sa\u011fa",mime:"H\u0259d\u0259fli MIME-n\u00f6v",langcode:"Dil kodu",langdir:"Dil istiqam\u0259ti",style:"Stil",id:"\u0130dentifikator",merge_cells_title:"\u00d6z\u0259k stili",bgcolor:"Fon r\u0259ngi",bordercolor:"S\u0259rh\u0259d r\u0259ngi",align_bottom:"A\u015fa\u011f\u0131 il\u0259",align_top:"Yuxar\u0131 il\u0259",valign:"\u015eaquli tarazla\u015fma",cell_type:"\u00d6z\u0259k n\u00f6v\u00fc",cell_title:"\u00d6z\u0259k x\u00fcsusiyy\u0259ti",row_title:"S\u0259tr x\u00fcsusiyy\u0259ti",align_middle:"M\u0259rk\u0259z il\u0259",align_right:"Sa\u011fa",align_left:"Sola",align_default:"Default",align:"Tarazla\u015fd\u0131rma",border:"S\u0259rh\u0259d",cellpadding:"\u00d6z\u0259kl\u0259rd\u0259 doldurma",cellspacing:"\u00d6z\u0259kl\u0259r aras\u0131ndak\u0131 m\u0259saf\u0259",rows:"S\u0259trl\u0259r",cols:"S\u00fctunlar",height:"H\u00fcnd\u00fcrl\u00fcy\u00fc",width:"Eni",title:"C\u0259dv\u0259li \u0259lav\u0259 et/d\u0259yi\u015fdir",rowtype:"C\u0259dv\u0259l hiss\u0259sind\u0259ki s\u0259tr",advanced_props:"\u018flav\u0259 x\u00fcsusiyy\u0259tl\u0259r",general_props:"\u00dcmumi x\u00fcsusiyy\u0259tl\u0259r",advanced_tab:"\u018flav\u0259l\u0259r",general_tab:"\u00dcmumi"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/be_dlg.js b/js/tiny_mce/plugins/table/langs/be_dlg.js new file mode 100755 index 000000000..ee49c0d1e --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/be_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('be.table_dlg',{rules_border:"\u043c\u044f\u0436\u0430",rules_box:"\u043a\u0430\u043d\u0442\u044d\u0439\u043d\u0435\u0440",rules_vsides:"\u0432\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_rhs:"\u043f\u0440\u0430\u0432\u044b\u044f \u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_lhs:"\u043b\u0435\u0432\u044b\u044f \u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_hsides:"\u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_below:"\u0437\u043d\u0456\u0437\u0443",rules_above:"\u0437\u0432\u0435\u0440\u0445\u0443",rules_void:"\u043d\u0456\u0448\u0442\u043e",rules:"\u041b\u0456\u043d\u0435\u0439\u043a\u0456",frame_all:"\u0443\u0441\u0451",frame_cols:"\u0441\u043b\u0443\u043f\u043a\u0456",frame_rows:"\u0440\u0430\u0434\u043a\u0456",frame_groups:"\u0433\u0440\u0443\u043f\u044b",frame_none:"\u043d\u0456\u0447\u043e\u0433\u0430",frame:"\u0420\u0430\u043c\u043a\u0430",caption:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a \u0442\u0430\u0431\u043b\u0456\u0446\u044b",missing_scope:"\u0412\u044b \u0441\u0430\u043f\u0440\u0430\u045e\u0434\u044b \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u043f\u0440\u0430\u0446\u044f\u0433\u043d\u0443\u0446\u044c \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044f \u043c\u0435\u0436 \u0433\u044d\u0442\u0430\u0433\u0430 \u0432\u043e\u0447\u043a\u0430 \u0437\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0430? \u0411\u0435\u0437 \u0433\u044d\u0442\u0430\u0433\u0430 \u043d\u0435\u043a\u0430\u0442\u043e\u0440\u044b\u043c \u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0447\u0430\u043c \u0437 \u0430\u0431\u043c\u0435\u0436\u0430\u0432\u0430\u043d\u0430\u0439 \u043f\u0440\u0430\u0446\u0430\u0437\u0434\u043e\u043b\u044c\u043d\u0430\u0441\u0446\u044e \u043c\u043e\u0436\u0430 \u0431\u044b\u0446\u044c \u0446\u044f\u0436\u043a\u0430 \u0437\u0440\u0430\u0437\u0443\u043c\u0435\u0446\u044c \u0443\u0442\u0440\u044b\u043c\u0430\u043d\u043d\u0435 \u0430\u0431\u043e \u0434\u0430\u0434\u0437\u0435\u043d\u044b\u044f \u0442\u0430\u0431\u043b\u0456\u0446\u044b.",cell_limit:"\u0412\u044b \u043f\u0435\u0440\u0430\u0432\u044b\u0441\u0456\u043b\u0456 \u043c\u0430\u043a\u0441\u0456\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0443 {$cells} \u0432\u043e\u0447\u0430\u043a.",row_limit:"\u0412\u044b \u043f\u0435\u0440\u0430\u0432\u044b\u0441\u0456\u043b\u0456 \u043c\u0430\u043a\u0441\u0456\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0443 {$rows} \u0440\u0430\u0434\u043a\u043e\u045e.",col_limit:"\u0412\u044b \u043f\u0435\u0440\u0430\u0432\u044b\u0441\u0456\u043b\u0456 \u043c\u0430\u043a\u0441\u0456\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0443 {$cols} \u0441\u043b\u0443\u043f\u043a\u043e\u045e.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u0441\u043b\u0443\u043f\u043a\u043e\u045e",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u0440\u0430\u0434\u043a\u043e\u045e",scope:"\u041c\u0435\u0436\u044b",tfoot:"\u041d\u0456\u0436\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u043a\u0430 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",tbody:"\u0410\u0441\u043d\u043e\u045e\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043a\u0430 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",thead:"\u0412\u0435\u0440\u0445\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u043a\u0430 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_all:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0443\u0441\u0435 \u0440\u0430\u0434\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_even:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0446\u043e\u0442\u043d\u044b\u044f \u0440\u0430\u0434\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_odd:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u043d\u044f\u0446\u043e\u0442\u043d\u044b\u044f \u0440\u0430\u0434\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_row:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0431\u044f\u0433\u0443\u0447\u044b \u0440\u0430\u0434\u043e\u043a",cell_all:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0443\u0441\u0435 \u0432\u043e\u0447\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",cell_row:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0443\u0441\u0435 \u0432\u043e\u0447\u043a\u0456 \u045e \u0440\u0430\u0434\u043a\u0443",cell_cell:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0431\u044f\u0433\u0443\u0447\u0430\u0435 \u0432\u043e\u0447\u043a\u0430",th:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",td:"\u0414\u0430\u0434\u0437\u0435\u043d\u044b\u044f",summary:"\u0417\u0432\u043e\u0434\u043a\u0430",bgimage:"\u0424\u043e\u043d\u0430\u0432\u044b \u043c\u0430\u043b\u044e\u043d\u0430\u043a",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u0430",ltr:"\u0417\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",mime:"\u041c\u044d\u0442\u0430\u0432\u044b MIME-\u0442\u044b\u043f",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u044b",langdir:"\u041a\u0456\u0440\u0443\u043d\u0430\u043a \u043c\u043e\u0432\u044b",style:"\u0421\u0442\u044b\u043b\u044c",id:"\u0406\u0434\u044d\u043d\u0442\u044b\u0444\u0456\u043a\u0430\u0442\u0430\u0440",merge_cells_title:"\u0417\u043b\u0456\u0446\u044c \u0432\u043e\u0447\u043a\u0456",bgcolor:"\u041a\u043e\u043b\u0435\u0440 \u0444\u043e\u043d\u0443",bordercolor:"\u041a\u043e\u043b\u0435\u0440 \u043c\u044f\u0436\u044b",align_bottom:"\u041f\u0430 \u043d\u0456\u0437\u0435",align_top:"\u041f\u0430 \u0432\u0435\u0440\u0441\u0435",valign:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u0435 \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",cell_type:"\u0422\u044b\u043f \u0432\u043e\u0447\u043a\u0430",cell_title:"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0432\u043e\u0447\u043a\u0430",row_title:"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0440\u0430\u0434\u043a\u0430",align_middle:"\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",align_right:"\u041d\u0430\u043f\u0440\u0430\u0432\u0430",align_left:"\u041d\u0430\u043b\u0435\u0432\u0430",align_default:"\u041f\u0430 \u0437\u043c\u0430\u045e\u0447\u0430\u043d\u043d\u0456",align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",border:"\u041c\u044f\u0436\u0430",cellpadding:"\u041d\u0430\u0431\u0456\u0432\u0430\u043d\u043d\u0435 \u045e \u0432\u043e\u0447\u043a\u0430\u0445",cellspacing:"\u0410\u0434\u043b\u0435\u0433\u043b\u0430\u0441\u0446\u044c \u043f\u0430\u043c\u0456\u0436 \u0432\u043e\u0447\u043a\u0430\u043c\u0456",rows:"\u0420\u0430\u0434\u043a\u0456",cols:"\u0421\u043b\u0443\u043f\u043a\u0456",height:"\u0412\u044b\u0448\u044b\u043d\u044f",width:"\u0428\u044b\u0440\u044b\u043d\u044f",title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0437\u043c\u044f\u043d\u0456\u0446\u044c \u0442\u0430\u0431\u043b\u0456\u0446\u0443",rowtype:"\u0420\u0430\u0434\u043e\u043a \u0443 \u0447\u0430\u0441\u0442\u043a\u0456 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",advanced_props:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f \u045e\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456",general_props:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f \u045e\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456",advanced_tab:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f",general_tab:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/bg_dlg.js b/js/tiny_mce/plugins/table/langs/bg_dlg.js new file mode 100755 index 000000000..e04585109 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/bg_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bg.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430",frame_all:"\u0432\u0441\u0438\u0447\u043a\u0438",frame_cols:"\u043a\u043e\u043b\u043e\u043d\u0438",frame_rows:"\u0440\u0435\u0434\u043e\u0432\u0435",frame_groups:"\u0433\u0440\u0443\u043f\u0438",frame_none:"\u0431\u0435\u0437",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",missing_scope:"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435 \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u0434\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u0435 \u043e\u0431\u0445\u0432\u0430\u0442 \u043d\u0430 \u0433\u043b\u0430\u0432\u0430\u0442\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e, \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u043d\u0435\u0434\u044a\u0437\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0438\u043c\u0430\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0430\u0442 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430.",cell_limit:"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0435\u0442\u043a\u0438: {$cells}.",row_limit:"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u0440\u0435\u0434\u043e\u0432\u0435: {$rows}.",col_limit:"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043b\u043e\u043d\u0438: {$cols}.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u0438",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u0440\u0435\u0434\u043e\u0432\u0435",scope:"\u041e\u0431\u0445\u0432\u0430\u0442",tfoot:"\u0414\u044a\u043d\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",tbody:"\u0422\u044f\u043b\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",thead:"\u0413\u043b\u0430\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",row_all:"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",row_even:"\u041e\u0431\u043d\u043e\u0432\u0438 \u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",row_odd:"\u041e\u0431\u043d\u043e\u0432\u0438 \u043d\u0435\u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u043b\u0438\u0446\u0430\u0442\u0430",row_row:"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u044f \u0440\u0435\u0434",cell_all:"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",cell_row:"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u043d\u0430 \u0440\u0435\u0434\u0430",cell_cell:"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u043a\u043b\u0435\u0442\u043a\u0430Update current cell",th:"\u0413\u043b\u0430\u0432\u0430",td:"\u0414\u0430\u043d\u0438\u043d",summary:"\u041e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",mime:"MIME \u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",style:"\u0421\u0442\u0438\u043b",id:"Id",merge_cells_title:"\u0421\u043b\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",bgcolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430",bordercolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430",align_bottom:"\u0414\u043e\u043b\u0443",align_top:"\u0413\u043e\u0440\u0435",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",cell_type:"\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",cell_title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",row_title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430",align_middle:"\u0426\u0435\u043d\u0442\u044a\u0440",align_right:"\u0414\u044f\u0441\u043d\u043e",align_left:"\u041b\u044f\u0432\u043e",align_default:"\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",border:"\u0420\u0430\u043c\u043a\u0430",cellpadding:"Padding \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",cellspacing:"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u044a\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",rows:"\u0420\u0435\u0434\u043e\u0432\u0435",cols:"\u041a\u043e\u043b\u043e\u043d\u0438",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",rowtype:"\u0420\u043e\u043b\u044f \u043d\u0430 \u0440\u0435\u0434\u0430",advanced_props:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",general_props:"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",advanced_tab:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",general_tab:"\u041e\u0431\u0449\u0438"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/bn_dlg.js b/js/tiny_mce/plugins/table/langs/bn_dlg.js new file mode 100755 index 000000000..9912fbe20 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/bn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bn.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/br_dlg.js b/js/tiny_mce/plugins/table/langs/br_dlg.js new file mode 100755 index 000000000..97847f467 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/br_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('br.table_dlg',{rules_border:"Limites",rules_box:"Box",rules_vsides:"Vsides",rules_rhs:"Rhs",rules_lhs:"Lhs",rules_hsides:"Hsides",rules_below:"abaixo",rules_above:"acima",rules_void:"void",rules:"Regras",frame_all:"Todos",frame_cols:"colunas",frame_rows:"Linhas",frame_groups:"Grupos",frame_none:"Nenhum",frame:"Frame",caption:"T\u00edtulo da tabela",missing_scope:"Tem certeza de que quer continuar sem especificar um escopo para esta c\u00e9lula? (Isso poder\u00e1 causar dificuldades a usu\u00e1rios deficientes)",cell_limit:"Excedeu o n\u00famero m\u00e1ximo de c\u00e9lulas de {$cells}.",row_limit:"Excedeu o n\u00famero m\u00e1ximo de linhas de {$rows}.",col_limit:"Excedeu o n\u00famero m\u00e1ximo de colunas de {$cols}.",colgroup:"Grupo colunas",rowgroup:"Grupo linhas",scope:"Alcance",tfoot:"Rodap\u00e9 da tabela",tbody:"Corpo da tabela",thead:"Topo da tabela",row_all:"Atualizar todas as linhas",row_even:"Atualizar linhas pares",row_odd:"Atualizar linhas \u00edmpares",row_row:"Atcualizar esta linha",cell_all:"Atualizar todas as c\u00e9lulas na tabela",cell_row:"Atualizar todas as c\u00e9lulas na linha",cell_cell:"Atualizar esta c\u00e9lula",th:"Campo",td:"Dados",summary:"Sum\u00e1rio",bgimage:"Imagem de fundo",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",mime:"MIME alvo",langcode:"C\u00f3digo da linguagem",langdir:"Dire\u00e7\u00e3o do texto",style:"Estilo",id:"Id",merge_cells_title:"Unir c\u00e9lulas",bgcolor:"Cor de fundo",bordercolor:"Cor dos limites",align_bottom:"Abaixo",align_top:"Topo",valign:"Alinhamento vertical",cell_type:"Tipo de c\u00e9lula",cell_title:"Propriedades de c\u00e9lulas",row_title:"Propriedades de linhas",align_middle:"Centro",align_right:"Direita",align_left:"Esquerda",align_default:"Padr\u00e3o",align:"Alinhamento",border:"Limites",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Linhas",cols:"Colunas",height:"Altura",width:"Largura",title:"Inserir/modificar tabela",rowtype:"Linha na parte da tabela",advanced_props:"Propriedades avan\u00e7adas",general_props:"Propriedades gerais",advanced_tab:"Avan\u00e7ado",general_tab:"Geral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/bs_dlg.js b/js/tiny_mce/plugins/table/langs/bs_dlg.js new file mode 100755 index 000000000..b1926862c --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/bs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('bs.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Opis tablice",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"Prema\u0161ili ste maksimalni broj \u0107elija ({$cells}).",row_limit:"Prema\u0161ili ste maksimalni broj redaka ({$rows}).",col_limit:"Prema\u0161ili ste maksimalni broj stupaca ({$cols}).",colgroup:"Grupa stupaca",rowgroup:"Grupa redaka",scope:"Domet",tfoot:"Podno\u017eje tablice",tbody:"Tijelo tablice",thead:"Zaglavlje tablice",row_all:"Primjeni na sve retke u tablici",row_even:"Primjeni na parne retke u tablici",row_odd:"Primjeni na neparne retke u tablici",row_row:"Primjeni na odabrani redak",cell_all:"Primjeni na sve \u0107elije u tablici",cell_row:"Primjeni na sve \u0107elije u retku",cell_cell:"Primjeni na odabranu \u0107eliju",th:"Zaglavlje",td:"Podatkovna",summary:"Sa\u017eetak",bgimage:"Slika pozadine",rtl:"S desna na lijevo",ltr:"S lijeva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smjer jezika",style:"Stil",id:"Id",merge_cells_title:"Spoji \u0107elije",bgcolor:"Background color",bordercolor:"Boja obruba",align_bottom:"Dno",align_top:"Vrh",valign:"Okomito poravnavanje",cell_type:"Tip \u0107elije",cell_title:"Svojstva \u0107elije",row_title:"Svojstva retka",align_middle:"Sredina",align_right:"Desno",align_left:"Lijevo",align_default:"Zadano",align:"Poravnavanje",border:"Obrub",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redaka",cols:"Stupaca",height:"Visina",width:"\u0160irina",title:"Umetni/uredi tablicu",rowtype:"Row in table part",advanced_props:"Napredna svojstva",general_props:"Osnovna svojstva",advanced_tab:"Napredno",general_tab:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ca_dlg.js b/js/tiny_mce/plugins/table/langs/ca_dlg.js new file mode 100755 index 000000000..60736026f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ca_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ca.table_dlg',{"rules_border":"vora","rules_box":"quadre","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"per sota de","rules_above":"per damunt de","rules_void":"buit",rules:"Regles","frame_all":"tot","frame_cols":"columnes","frame_rows":"files","frame_groups":"grups","frame_none":"cap",frame:"Marc",caption:"T\u00edtol de la taula","missing_scope":"Esteu segur que voleu continuar sense indicar un abast per a aquesta cel\u00b7la de cap\u00e7alera. Pot ser dif\u00edcil per a alguns usuaris amb discapacitats entendre el contingut o les dades mostrades a la taula.","cell_limit":"Heu superat el nombre m\u00e0xim de cel\u00b7les de {$cells}..","row_limit":"Heu superat el nombre m\u00e0xim de files de {$rows}.","col_limit":"Heu superat el nombre m\u00e0xim de columnes de {$cols}.",colgroup:"Grup de columnes",rowgroup:"Grup de files",scope:"Abast",tfoot:"Peu de la taula",tbody:"Cos de la taula",thead:"Cap\u00e7alera de la taula","row_all":"Actualitza totes les files","row_even":"Actualitza les files parells","row_odd":"Actualitza les files senars","row_row":"Actualitza la fila","cell_all":"Actualitza totes les cel\u00b7les de la taula","cell_row":"Actualitza totes les cel\u00b7les de la fila","cell_cell":"Actualitza la cel\u00b7la",th:"Cap\u00e7alera",td:"Dades",summary:"Resum",bgimage:"Imatge de fons",rtl:"De dreta a esquerra",ltr:"D\'esquerra a dreta",mime:"Tipus MIME",langcode:"Codi de l\'idioma",langdir:"Direcci\u00f3 de l\'idioma",style:"Estil",id:"Id","merge_cells_title":"Fusiona cel\u00b7les",bgcolor:"Color de fons",bordercolor:"Color de vora","align_bottom":"A baix","align_top":"A dalt",valign:"Alineaci\u00f3 vertical","cell_type":"Tipus de cel\u00b7la","cell_title":"Propietats de cel\u00b7la","row_title":"Propietats de fila","align_middle":"Centre","align_right":"Dreta","align_left":"Esquerra","align_default":"Per defecte",align:"Alineaci\u00f3",border:"Vora",cellpadding:"Separaci\u00f3 de cel\u00b7la",cellspacing:"Espaiat de cel\u00b7la",rows:"Files",cols:"Columnes",height:"Al\u00e7ada",width:"Amplada",title:"Insereix/Modifica taula",rowtype:"Fila","advanced_props":"Propietats avan\u00e7ades","general_props":"Propietats generals","advanced_tab":"Avan\u00e7at","general_tab":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ch_dlg.js b/js/tiny_mce/plugins/table/langs/ch_dlg.js new file mode 100755 index 000000000..3fcb9e288 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ch_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ch.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",rules_vsides:"\u5782\u76f4",rules_rhs:"\u53f3\u8fb9",rules_lhs:"\u5de6\u8fb9",rules_hsides:"\u6c34\u5e73",rules_below:"\u4e0b",rules_above:"\u4e0a",rules_void:"\u7a7a",rules:"\u89c4\u5219",frame_all:"\u5168\u90e8",frame_cols:"\u680f",frame_rows:"\u884c",frame_groups:"\u7fa4\u7ec4",frame_none:"\u65e0",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u4f60\u786e\u5b9a\u4e0d\u6307\u5b9a\u8868\u683c\u5934\u90e8\u50a8\u5b58\u683c\u4e00\u4e2a\u8303\u56f4\u5417\uff1f\u6ca1\u6709\u5b83\uff0c\u6216\u8bb8\u5bf9\u90a3\u4e9b\u6709\u969c\u788d\u7684\u7528\u6237\u7406\u89e3\u8868\u683c\u5c55\u793a\u7684\u5185\u5bb9\u6216\u6570\u636e\u66f4\u52a0\u7684\u56f0\u96be\u3002",cell_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u50a8\u5b58\u683c\u9650\u5236{$cells} \u50a8\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u884c\u6570\u9650\u5236 {$rows} \u5217\u3002",col_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u680f\u6570\u9650\u5236 {$cols} \u680f\u3002",colgroup:"\u680f\u7fa4\u7ec4",rowgroup:"\u884c\u7fa4\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c",row_row:"\u66f4\u65b0\u76ee\u524d\u884c",cell_all:"\u66f4\u65b0\u6240\u6709\u50a8\u5b58\u683c",cell_row:"\u66f4\u65b0\u76ee\u524d\u884c\u7684\u50a8\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u50a8\u5b58\u683c",th:"\u8868\u5934",td:"\u5185\u5bb9",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"MIME \u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID",merge_cells_title:"\u5408\u5e76\u50a8\u5b58\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272",align_bottom:"\u9760\u4e0b",align_top:"\u9760\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50",cell_type:"\u50a8\u5b58\u683c\u7c7b\u578b",cell_title:"\u50a8\u5b58\u683c\u6807\u9898",row_title:"\u884c\u5c5e\u6027",align_middle:"\u7f6e\u4e2d\u5bf9\u9f50",align_right:"\u9760\u53f3\u5bf9\u9f50",align_left:"\u9760\u5de6\u5bf9\u9f50",align_default:"\u9ed8\u8ba4",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u50a8\u5b58\u683c\u8fb9\u8ddd",cellspacing:"\u50a8\u5b58\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u680f\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/cn_dlg.js b/js/tiny_mce/plugins/table/langs/cn_dlg.js new file mode 100755 index 000000000..889880d7f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cn.table_dlg',{"rules_border":"\u8868\u683c\u8fb9\u6846","rules_box":"\u65b9\u5757","rules_vsides":"\u5782\u76f4","rules_rhs":"\u53f3\u8fb9","rules_lhs":"\u5de6\u8fb9","rules_hsides":"\u6c34\u5e73","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u7a7a",rules:"\u89c4\u5219","frame_all":"\u5168\u90e8","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u7ec4","frame_none":"\u65e0",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6807\u9898","missing_scope":"\u4f60\u786e\u5b9a\u4e0d\u6307\u5b9a\u8868\u683c\u5934\u90e8\u50a8\u5b58\u683c\u4e00\u4e2a\u8303\u56f4\u5417\uff1f\u6ca1\u6709\u5b83\uff0c\u6216\u8bb8\u5bf9\u90a3\u4e9b\u6709\u969c\u788d\u7684\u7528\u6237\u7406\u89e3\u8868\u683c\u5c55\u793a\u7684\u5185\u5bb9\u6216\u6570\u636e\u66f4\u52a0\u7684\u56f0\u96be\u3002","cell_limit":"\u5df2\u8d85\u8fc7\u6700\u5927\u50a8\u5b58\u683c\u9650\u5236{$cells} \u50a8\u5b58\u683c\u3002","row_limit":"\u5df2\u8d85\u8fc7\u6700\u5927\u884c\u6570\u9650\u5236 {$rows} \u884c","col_limit":"\u5df2\u8d85\u8fc7\u6700\u5927\u884c\u6570\u9650\u5236 {$cols} \u5217",colgroup:"\u5217\u7ec4",rowgroup:"\u884c\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934","row_all":"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c","row_even":"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c","row_odd":"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c","row_row":"\u66f4\u65b0\u76ee\u524d\u884c","cell_all":"\u66f4\u65b0\u6240\u6709\u50a8\u5b58\u683c","cell_row":"\u66f4\u65b0\u76ee\u524d\u884c\u7684\u50a8\u5b58\u683c","cell_cell":"\u66f4\u65b0\u76ee\u524d\u50a8\u5b58\u683c",th:"\u8868\u5934",td:"\u5185\u5bb9",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"MIME \u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"Id\u7f16\u53f7","merge_cells_title":"\u5408\u4f75\u50a8\u5b58\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272","align_bottom":"\u5c45\u4e0b","align_top":"\u5c45\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50","cell_type":"\u50a8\u5b58\u683c\u7c7b\u578b","cell_title":"\u50a8\u5b58\u683c\u5c5e\u6027","row_title":"\u884c\u5c5e\u6027","align_middle":"\u5c45\u4e2d","align_right":"\u5c45\u53f3","align_left":"\u5c45\u5de6","align_default":"\u9ed8\u8ba4",align:"\u5bf9\u9f50",border:"\u8fb9\u6846",cellpadding:"\u8868\u683c\u8fb9\u8ddd",cellspacing:"\u8868\u683c\u95f4\u8ddd",rows:"\u884c",cols:"\u5217",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u4fee\u6539\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e","advanced_props":"\u9ad8\u7ea7\u9009\u9879","general_props":"\u5e38\u89c4\u9009\u9879","advanced_tab":"\u9ad8\u7ea7","general_tab":"\u5e38\u89c4"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/cs_dlg.js b/js/tiny_mce/plugins/table/langs/cs_dlg.js new file mode 100755 index 000000000..58acd350a --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/cs_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cs.table_dlg',{rules_border:"r\u00e1me\u010dek okolo",rules_box:"box okolo",rules_vsides:"vlevo a vpravo",rules_rhs:"vpravo",rules_lhs:"vlevo",rules_hsides:"naho\u0159e a dole",rules_below:"dole",rules_above:"naho\u0159e",rules_void:"\u017e\u00e1dn\u00fd",rules:"Vykreslen\u00ed m\u0159\u00ed\u017eky",frame_all:"v\u0161e",frame_cols:"sloupce",frame_rows:"\u0159\u00e1dky",frame_groups:"oblasti a skupiny sloupc\u016f",frame_none:"\u017e\u00e1dn\u00e1",frame:"R\u00e1me\u010dek tabulky",caption:"Nadpis tabulky",missing_scope:"Skute\u010dn\u011b chcete pokra\u010dovat bez ur\u010den\u00ed oblasti hlavi\u010dky t\u00e9to tabulky? Bez n\u00ed m\u016f\u017ee u n\u011bkter\u00fdch u\u017eivatel\u016f doch\u00e1zet k ur\u010dit\u00fdm probl\u00e9m\u016fm p\u0159i interpretaci a zobrazov\u00e1n\u00ed dat v tabulce.",cell_limit:"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det bun\u011bk {$cells}.",row_limit:"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det \u0159\u00e1dk\u016f {$rows}.",col_limit:"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det sloupc\u016f {$cols}.",colgroup:"Skupina sloupc\u016f",rowgroup:"Skupina \u0159\u00e1dk\u016f",scope:"Hlavi\u010dka pro",tfoot:"Pata tabulky",tbody:"T\u011blo tabulky",thead:"Hlavi\u010dka tabulky",row_all:"Aktualizovat v\u0161echny \u0159\u00e1dky tabulky",row_even:"Aktualizovat sud\u00e9 \u0159\u00e1dky tabulky",row_odd:"Aktualizovat lich\u00e9 \u0159\u00e1dky tabulky",row_row:"Aktualizovat zvolen\u00fd \u0159\u00e1dek",cell_all:"Aktualizovat v\u0161echny bu\u0148ky v tabulce",cell_row:"Aktualizovat v\u0161echny bu\u0148ky v \u0159\u00e1dku",cell_cell:"Aktualizovat zvolenou bu\u0148ku",th:"Z\u00e1hlav\u00ed",td:"Data",summary:"Shrnut\u00ed obsahu",bgimage:"Obr\u00e1zek pozad\u00ed",rtl:"Zprava doleva",ltr:"Zleva doprava",mime:"MIME typ c\u00edle",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",style:"Styl",id:"ID",merge_cells_title:"Spojit bu\u0148ky",bgcolor:"Barva pozad\u00ed",bordercolor:"Barva r\u00e1me\u010dku",align_bottom:"Dol\u016f",align_top:"Nahoru",valign:"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed",cell_type:"Typ bu\u0148ky",cell_title:"Vlastnosti bu\u0148ky",row_title:"Vlastnosti \u0159\u00e1dku",align_middle:"Na st\u0159ed",align_right:"Vpravo",align_left:"Vlevo",align_default:"V\u00fdchoz\u00ed",align:"Zarovn\u00e1n\u00ed",border:"R\u00e1me\u010dek",cellpadding:"Odsazen\u00ed obsahu",cellspacing:"Rozestup bun\u011bk",rows:"\u0158\u00e1dky",cols:"Sloupce",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",title:"Vlo\u017eit/upravit tabulku",rowtype:"Typ \u0159\u00e1dku",advanced_props:"Roz\u0161\u00ed\u0159en\u00e9 parametry",general_props:"Obecn\u00e9 parametry",advanced_tab:"Roz\u0161\u00ed\u0159en\u00e9",general_tab:"Obecn\u00e9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/cy_dlg.js b/js/tiny_mce/plugins/table/langs/cy_dlg.js new file mode 100755 index 000000000..e4628528f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/cy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('cy.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"o dan",rules_above:"above",rules_void:"void",rules:"Rheolau",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Ffr\u00e2m",caption:"Egluryn tabl",missing_scope:"A ydych chi\'n si\u0175r eich bod eisiau parhau heb penodi cwmpas i\'r cell pennyn yma? Hebddo fo, efallai fydd o\'n anodd i rhai ddefnyddwyr gyda anableddau i ddeallt y cynnwys neu\'r data yn y tabl.",cell_limit:"Rydych wedi mynd tu twnt i\'r nifer uchafswm {$cells} o celloedd.",row_limit:"Rydych wedi mynd tu twnt i\'r nifer uchafswm {$rows} o rhesi.",col_limit:"Rydych wedi mynd tu twnt i\'r nifer uchafswm {$cols} o golofnau.",colgroup:"Gr\u0175p Colofnau",rowgroup:"Gr\u0175p Rhesi",scope:"Cwmpas",tfoot:"Troed Tabl",tbody:"Corff Tabl",thead:"Pen Tabl",row_all:"Diweddaru pob rhes yn y tabl",row_even:"Diweddaru rhesi eilrif yn y tabl",row_odd:"Diweddaru rhesi odrif yn y tabl",row_row:"Diweddaru rhes cyfredol",cell_all:"Diweddaru pob cell yn y tabl",cell_row:"Diweddaru pob cell yn y rhes",cell_cell:"Diweddaru cell cyfredol",th:"Pennyn",td:"Data",summary:"Crynodeb",bgimage:"Delwedd cefndir",rtl:"De i\'r chwith",ltr:"Chwith i\'r dde",mime:"Math MIME targed",langcode:"Cod iaith",langdir:"Cyfeiriad iaith",style:"Arddull",id:"Id",merge_cells_title:"Cyfuno celloedd tabl",bgcolor:"Lliw cefndir",bordercolor:"Lliw border",align_bottom:"Gwaelod",align_top:"Pen",valign:"Aliniad ferigol",cell_type:"Math cell",cell_title:"Priodweddau cell tabl",row_title:"Priodweddau rhes tabl",align_middle:"Canol",align_right:"De",align_left:"Chwith",align_default:"Rhagosodedig",align:"Aliniad",border:"Border",cellpadding:"Padio celloedd",cellspacing:"Bylchiad celloedd",rows:"Rhesi",cols:"Colofnau",height:"Uchder",width:"Lled",title:"Mewnosod/Golygu tabl",rowtype:"Rhes mewn rhan tabl",advanced_props:"Priodweddau uwch",general_props:"Priodweddau cyffredinol",advanced_tab:"Uwch",general_tab:"Cyffredinol"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/da_dlg.js b/js/tiny_mce/plugins/table/langs/da_dlg.js new file mode 100755 index 000000000..04c34b848 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/da_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('da.table_dlg',{rules_border:"kant",rules_box:"boks",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"under",rules_above:"over",rules_void:"void",rules:"Regler",frame_all:"alle",frame_cols:"kolonner",frame_rows:"r\u00e6kker",frame_groups:"grupper",frame_none:"ingen",frame:"Ramme",caption:"Tabeloverskrift",missing_scope:"Er du sikker p\u00e5, du vil forts\u00e6tte uden at angive forklaring for denne overskriftscelle? Uden forklaring vil v\u00e6re sv\u00e6rt for f.ek.s blinde at l\u00e6se og forst\u00e5 indholdet i tabellen.",cell_limit:"Du har overskredet antallet af tilladte celler p\u00e5 {$cells}.",row_limit:"Du har overskredet antallet af tilladte r\u00e6kker p\u00e5 {$rows}.",col_limit:"Du har overskredet antallet af tilladte kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"R\u00e6kkegruppe",scope:"Forklaring",tfoot:"Tabelfod",tbody:"Tabelkrop",thead:"Tabelhoved",row_all:"Opdater alle r\u00e6kker",row_even:"Opdater lige r\u00e6kker",row_odd:"Opdater ulige r\u00e6kker",row_row:"Opdater aktuelle celle",cell_all:"Opdater alle celler i tabellen",cell_row:"Opdater alle celler i r\u00e6kken",cell_cell:"Opdater aktuelle celle",th:"Hoved",td:"Data",summary:"Beskrivelse",bgimage:"Baggrundsbillede",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",mime:"Destinations-MIME-type",langcode:"Sprogkode",langdir:"Sprogretning",style:"Style",id:"Id",merge_cells_title:"Flet celler",bgcolor:"Baggrundsfarve",bordercolor:"Kantfarve",align_bottom:"Bund",align_top:"Top",valign:"Vertikal justering",cell_type:"Celletype",cell_title:"Celleegenskaber",row_title:"R\u00e6kkeegenskaber",align_middle:"Centreret",align_right:"H\u00f8jre",align_left:"Venstre",align_default:"Standard",align:"Justering",border:"Kant",cellpadding:"Afstand til celleindhold",cellspacing:"Afstand mellem celler",rows:"R\u00e6kker",cols:"Kolonner",height:"H\u00f8jde",width:"Bredde",title:"Inds\u00e6t/rediger tabel",rowtype:"Row in table part",advanced_props:"Avancerede egenskaber",general_props:"Generelle egenskaber",advanced_tab:"Avanceret",general_tab:"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/de_dlg.js b/js/tiny_mce/plugins/table/langs/de_dlg.js new file mode 100755 index 000000000..8e34ae724 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/de_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('de.table_dlg',{rules_border:"alle 4 Seiten (Border)",rules_box:"alle 4 Seiten (Box)",rules_vsides:"links und rechts",rules_rhs:"nur rechts",rules_lhs:"nur links",rules_hsides:"oben und unten",rules_below:"nur unten",rules_above:"nur oben",rules_void:"keins",rules:"Gitter",frame_all:"zwischen allen Zellen",frame_cols:"zwischen Spalten",frame_rows:"zwischen Zeilen",frame_groups:"zwischen Gruppen",frame_none:"keine",frame:"Rahmen",caption:"Beschriftung der Tabelle",missing_scope:"Wollen Sie wirklich keine Beziehung f\u00fcr diese \u00dcberschrift angeben? Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnten Schwierigkeiten haben, den Inhalt der Tabelle zu verstehen.",cell_limit:"Sie haben die maximale Zellenzahl von {$cells} \u00fcberschritten.",row_limit:"Sie haben die maximale Zeilenzahl von {$rows} \u00fcberschritten.",col_limit:"Sie haben die maximale Spaltenzahl von {$cols} \u00fcberschritten.",colgroup:"Horizontal gruppieren",rowgroup:"Vertikal gruppieren",scope:"Bezug",tfoot:"Tabellenfu\u00df",tbody:"Tabelleninhalt",thead:"Tabellenkopf",row_all:"Alle Zeilen ver\u00e4ndern",row_even:"Gerade Zeilen ver\u00e4ndern",row_odd:"Ungerade Zeilen ver\u00e4ndern",row_row:"Diese Zeile ver\u00e4ndern",cell_all:"Alle Zellen der Tabelle ver\u00e4ndern",cell_row:"Alle Zellen in dieser Zeile ver\u00e4ndern",cell_cell:"Diese Zelle ver\u00e4ndern",th:"\u00dcberschrift",td:"Textzelle",summary:"Zusammenfassung",bgimage:"Hintergrundbild",rtl:"Rechts nach links",ltr:"Links nach rechts",mime:"MIME-Type des Inhalts",langcode:"Sprachcode",langdir:"Schriftrichtung",style:"Format",id:"ID",merge_cells_title:"Zellen vereinen",bgcolor:"Hintergrundfarbe",bordercolor:"Rahmenfarbe",align_bottom:"Unten",align_top:"Oben",valign:"Vertikale Ausrichtung",cell_type:"Zellentyp",cell_title:"Eigenschaften der Zelle",row_title:"Eigenschaften der Zeile",align_middle:"Mittig",align_right:"Rechts",align_left:"Links",align_default:"Standard",align:"Ausrichtung",border:"Rahmen",cellpadding:"Abstand innerhalb der Zellen",cellspacing:"Zellenabstand",rows:"Zeilen",cols:"Spalten",height:"H\u00f6he",width:"Breite",title:"Tabelle einf\u00fcgen/bearbeiten",rowtype:"Gruppierung",advanced_props:"Erweiterte Einstellungen",general_props:"Allgemeine Einstellungen",advanced_tab:"Erweitert",general_tab:"Allgemein"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/dv_dlg.js b/js/tiny_mce/plugins/table/langs/dv_dlg.js new file mode 100755 index 000000000..20816e3a7 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/dv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('dv.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/el_dlg.js b/js/tiny_mce/plugins/table/langs/el_dlg.js new file mode 100755 index 000000000..3810efe9c --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/el_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('el.table_dlg',{rules_border:"\u03c0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",rules_box:"\u03ba\u03bf\u03c5\u03c4\u03af",rules_vsides:"\u03ba\u03ac\u03b8\u03b5\u03c4\u03b5\u03c2 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ad\u03c2",rules_rhs:"\u03b4\u03b5\u03be\u03b9\u03ac \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ac",rules_lhs:"\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ae \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ac",rules_hsides:"\u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b5\u03c2 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ad\u03c2",rules_below:"\u03b1\u03c0\u03cc \u03ba\u03ac\u03c4\u03c9",rules_above:"\u03b1\u03c0\u03cc \u03c0\u03ac\u03bd\u03c9",rules_void:"\u03ba\u03b5\u03bd\u03cc",rules:"\u039a\u03b1\u03bd\u03cc\u03bd\u03b5\u03c2",frame_all:"\u03cc\u03bb\u03b1",frame_cols:"\u03c3\u03c4\u03ae\u03bb\u03b5\u03c2",frame_rows:"\u03b3\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",frame_groups:"\u03bf\u03bc\u03ac\u03b4\u03b5\u03c2",frame_none:"\u03ba\u03b1\u03bd\u03ad\u03bd\u03b1",frame:"Frame",caption:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",missing_scope:"\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c7\u03c9\u03c1\u03af\u03c2 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03ba\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b5\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c4\u03b7\u03c2 \u03ba\u03bf\u03c1\u03c5\u03c6\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1. \u03a7\u03c9\u03c1\u03af\u03c2 \u03b1\u03c5\u03c4\u03ae, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03cd\u03c3\u03ba\u03bf\u03bb\u03bf \u03b3\u03b9\u03b1 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b1\u03bb\u03ac\u03b2\u03bf\u03c5\u03bd \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1.",cell_limit:"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$cells}.",row_limit:"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$rows}.",col_limit:"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03c3\u03c4\u03b7\u03bb\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$cols}.",colgroup:"\u039f\u03bc\u03ac\u03b4\u03b1 \u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",rowgroup:"\u039f\u03bc\u03ac\u03b4\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",scope:"\u0395\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1",tfoot:"\u0392\u03ac\u03c3\u03b7 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",tbody:"\u03a3\u03ce\u03bc\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",thead:"\u039a\u03bf\u03c1\u03c5\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",row_all:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",row_even:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03b6\u03c5\u03b3\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",row_odd:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03bc\u03bf\u03bd\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",row_row:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",cell_all:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",cell_row:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",cell_cell:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",th:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",td:"\u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1",summary:"\u03a0\u03b5\u03c1\u03af\u03bb\u03b7\u03c8\u03b7",bgimage:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",mime:"\u03a4\u03cd\u03c0\u03bf\u03c2 MIME \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",id:"Id",merge_cells_title:"\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",bgcolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",bordercolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c0\u03bb\u03b1\u03b9\u03c3\u03af\u03bf\u03c5",align_bottom:"\u039a\u03ac\u03c4\u03c9",align_top:"\u03a0\u03ac\u03bd\u03c9",valign:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",cell_type:"\u03a4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",cell_title:"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",row_title:"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",align_middle:"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf",align_right:"\u0394\u03b5\u03be\u03b9\u03ac",align_left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",align_default:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",border:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",cellpadding:"\u0393\u03ad\u03bc\u03b9\u03c3\u03bc\u03b1 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",cellspacing:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",rows:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",cols:"\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",height:"\u038e\u03c8\u03bf\u03c2",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",rowtype:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03b5 \u03bc\u03ad\u03c1\u03bf\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",advanced_props:"\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2",general_props:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2",advanced_tab:"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",general_tab:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/en_dlg.js b/js/tiny_mce/plugins/table/langs/en_dlg.js new file mode 100644 index 000000000..deee0f15f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/es_dlg.js b/js/tiny_mce/plugins/table/langs/es_dlg.js new file mode 100755 index 000000000..1e41db657 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"debajo","rules_above":"encima","rules_void":"vac\u00edo",rules:"Reglas","frame_all":"todos","frame_cols":"cols","frame_rows":"filas","frame_groups":"grupos","frame_none":"ninguno",frame:"Recuadro",caption:"Subt\u00edtulo de la tabla","missing_scope":" \u00bfEst\u00e1 seguro que desea continuar sin especificar el alcance del encabezado de celda? Sin \u00e9l podr\u00eda ser dificultoso para algunos usuarios entender el contenido o los datos mostrados en la tabla.","cell_limit":"Ha superado el n\u00famero m\u00e1ximo de celdas: {$cells}.","row_limit":"Ha superado el n\u00famero m\u00e1ximo de filas: {$rows}.","col_limit":"Ha superado el n\u00famero m\u00e1ximo de columnas: {$cols}.",colgroup:"Grupo de columnas",rowgroup:"Grupo de filas",scope:"Alcance",tfoot:"Pie de la tabla",tbody:"Cuerpo de la tabla",thead:"Encabezado de la tabla","row_all":"Actualizar todas las filas","row_even":"Actualizar filas pares","row_odd":"Actualizar filas impares","row_row":"Actualizar fila actual","cell_all":"Actualizar todas las celdas en la tabla","cell_row":"Actualizar todas las celdas en la fila","cell_cell":"Actualizar celda actual",th:"Encabezado",td:"Datos",summary:"Resumen",bgimage:"Imagen de fondo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",mime:"Tipo MIME",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje",style:"Estilo",id:"Id","merge_cells_title":"Vincular celdas",bgcolor:"Color de fondo",bordercolor:"Color del borde","align_bottom":"Debajo","align_top":"Arriba",valign:"Alineaci\u00f3n vertical","cell_type":"Tipo de celda","cell_title":"Propiedades de la celda","row_title":"Propiedades de la fila","align_middle":"Centrado","align_right":"Derecha","align_left":"Izquierda","align_default":"Predet.",align:"Alineaci\u00f3n",border:"Borde",cellpadding:"Relleno de celda",cellspacing:"Espaciado de celda",rows:"Filas",cols:"Cols",height:"Alto",width:"Ancho",title:"Insertar/Modificar tabla",rowtype:"Tipo de fila","advanced_props":"Propiedades avanzadas","general_props":"Propiedades generales","advanced_tab":"Avanzado","general_tab":"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/et_dlg.js b/js/tiny_mce/plugins/table/langs/et_dlg.js new file mode 100755 index 000000000..504e54537 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.table_dlg',{rules_border:"raam",rules_box:"kast",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"all",rules_above:"\u00fcleval",rules_void:"t\u00fchi",rules:"Reeglid",frame_all:"k\u00f5ik",frame_cols:"veerud",frame_rows:"read",frame_groups:"grupid",frame_none:"mitte \u00fckski",frame:"Raam",caption:"Tabeli seletus",missing_scope:"Oled kindel, et soovid j\u00e4tkata t\u00e4psustamata antud tabeli p\u00e4ise nime?",cell_limit:"Oled j\u00f5udnud maksimaalse arvu elementideni",row_limit:"Oled j\u00f5udnud maksimaalse arvu ridadeni",col_limit:"Oled j\u00f5udnud maksemaalse arvu veegudeni.",colgroup:"Veeru grupp",rowgroup:"Rea grupp",scope:"Ulatus",tfoot:"Tabeli jalus",tbody:"Tabeli sisu",thead:"Tabeli p\u00e4is",row_all:"Uuenda k\u00f5iki ridu tabelis",row_even:"Uuenda paaris ridu tabelis",row_odd:"Uuenda paarituid ridu tabelis",row_row:"Uuenda antud rida",cell_all:"Uuenda k\u00f5iki lahtreid tabelis",cell_row:"Uuenda k\u00f5iki lahtreid reas",cell_cell:"Uuenda antud lahtrit",th:"P\u00e4is",td:"Info",summary:"Kokkuv\u00f5te",bgimage:"Tausta pilt",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",mime:"M\u00e4rgista MIME t\u00fc\u00fcp",langcode:"Keele kood",langdir:"Keele suund",style:"Stiil",id:"ID",merge_cells_title:"\u00dchenda lahtrid",bgcolor:"Tausta v\u00e4rv",bordercolor:"Raami v\u00e4rv",align_bottom:"All",align_top:"\u00dcleval",valign:"Vertikaalne joondus",cell_type:"Veeru t\u00fc\u00fcp",cell_title:"Tabeli veeru seaded",row_title:"Tabeli rea seaded",align_middle:"Keskel",align_right:"Parem",align_left:"Vasak",align_default:"Vaikimisi",align:"Joondus",border:"Raam",cellpadding:"Veeru t\u00e4ide",cellspacing:"Veeru laius",rows:"Ridu",cols:"Veerge",height:"K\u00f5rgus",width:"Laius",title:"Sisesta/muuda tabelit",rowtype:"Rida rea osas",advanced_props:"T\u00e4psustatud seaded",general_props:"\u00dcldised seaded",advanced_tab:"T\u00e4psustatud",general_tab:"\u00dcldine"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/eu_dlg.js b/js/tiny_mce/plugins/table/langs/eu_dlg.js new file mode 100755 index 000000000..4e78d7541 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/eu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('eu.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"azpian",rules_above:"gainean",rules_void:"hutsa",rules:"Erregelak",frame_all:"guztiak",frame_cols:"zutabeak",frame_rows:"lerroak",frame_groups:"taldeak",frame_none:"Bat ere ez",frame:"Markoa",caption:"Taularen azpititulua",missing_scope:"Taularen goiburukoari eremu bat zehaztu gabe jarritu nahi duzula ziur zaude? Eremu hori gabe, ezintasunak dituzten erabiltzaileentzat zaila izango da taularen datuak ulertzea.",cell_limit:"Gelaxka kopuru maximoa ({$cells}) gainditu duzu..",row_limit:"Lerro kopuru maximoa ({$rows}) gainditu duzu.",col_limit:"Zutabe kopuru maximoa ({$cols}) gainditu duzu.",colgroup:"Zutabe Taldea",rowgroup:"Lerro Taldea",scope:"Eremua",tfoot:"Taularen Oina",tbody:"Taularen Gorputza",thead:"Taularen Goiburukoa",row_all:"Eguneratu lerro guztiak",row_even:"Eguneratu lerro bakoitiak",row_odd:"Eguneratu lerro bikoitiak",row_row:"Eguneratu uneko lerroa",cell_all:"Eguneratu gelaxka guztiak",cell_row:"Eguneratu lerroko gelaxka guztiak",cell_cell:"Eguneratu uneko gelaxka",th:"Goiburua",td:"Datuak",summary:"Laburpena",bgimage:"Atzeko irudia",rtl:"Eskuinetik ezkerrera",ltr:"Ezkerretik eskuinera",mime:"Helburuareb MIME mota",langcode:"Hizkuntza kodea",langdir:"Hizkuntza norabidea",style:"Estiloa",id:"Id",merge_cells_title:"Bateratu gelaxkak",bgcolor:"Atzeko kolorea",bordercolor:"Ertz kolorea",align_bottom:"Behean",align_top:"Goian",valign:"Lerrokatze bertikala",cell_type:"Gelaxka mota",cell_title:"Gelaxka ezaugarriak",row_title:"Lerro ezaugarriak",align_middle:"Erdian",align_right:"Eskuinera",align_left:"Ezkerrera",align_default:"Lehenetsia",align:"Lerrokatzea",border:"Ertza",cellpadding:"Gelaxkaren betegarria",cellspacing:"Gelaxkaren tartea",rows:"Lerroak",cols:"Zutabeak",height:"Altuera",width:"Zabalera",title:"Txertatu/Aldatu taula",rowtype:"Lerro mota",advanced_props:"Ezaugarri aurreratuak",general_props:"Ezaugarri orokorrak",advanced_tab:"Aurreratua",general_tab:"Orokorra"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/fa_dlg.js b/js/tiny_mce/plugins/table/langs/fa_dlg.js new file mode 100755 index 000000000..3ef675054 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/fa_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fa.table_dlg',{rules_border:"\u062d\u0627\u0634\u06cc\u0647",rules_box:"\u062c\u0639\u0628\u0647",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"\u067e\u0627\u06cc\u06cc\u0646",rules_above:"\u0628\u0627\u0644\u0627",rules_void:"\u062e\u0627\u0644\u06cc",rules:"\u062e\u0637 \u0647\u0627",frame_all:"\u0647\u0645\u0647",frame_cols:"\u0633\u062a\u0648\u0646 \u0647\u0627",frame_rows:"\u0633\u0637\u0631\u0647\u0627",frame_groups:"\u06af\u0631\u0648\u0647 \u0647\u0627",frame_none:"\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",frame:"\u0642\u0627\u0628 (Frame)",caption:"\u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644",missing_scope:"\u0622\u06cc\u0627 \u0628\u062f\u0648\u0646 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0644\u0648\u0644 \u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644\u060c \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc \u062f\u0647\u06cc\u062f\u061f. \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0628\u0639\u0636\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0634\u06a9\u0644 \u0628\u0627\u0634\u062f.",cell_limit:"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$cells} \u0633\u0644\u0648\u0644 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.",row_limit:"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$rows} \u0633\u0637\u0631 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.",col_limit:"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$cols} \u0633\u062a\u0648\u0646 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.",colgroup:"\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646",rowgroup:"\u06af\u0631\u0648\u0647 \u0633\u0637\u0631",scope:"\u0645\u062d\u062f\u0648\u062f\u0647",tfoot:"\u067e\u0627\u06cc\u06cc\u0646 \u062c\u062f\u0648\u0644",tbody:"\u0628\u062f\u0646\u0647 \u062c\u062f\u0648\u0644",thead:"\u0628\u0627\u0644\u0627\u06cc \u062c\u062f\u0648\u0644",row_all:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0637\u0631\u0647\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644",row_even:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631\u0647\u0627\u06cc \u0632\u0648\u062c \u062f\u0631 \u062c\u062f\u0648\u0644",row_odd:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631\u0647\u0627\u06cc \u0641\u0631\u062f \u062f\u0631 \u062c\u062f\u0648\u0644",row_row:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631 \u0641\u0639\u0644\u06cc",cell_all:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644",cell_row:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u0633\u0637\u0631",cell_cell:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0644\u0648\u0644 \u0641\u0639\u0644\u06cc",th:"\u0633\u0631 \u062c\u062f\u0648\u0644",td:"\u062f\u0627\u062f\u0647",summary:"\u062e\u0644\u0627\u0635\u0647",bgimage:"\u062a\u0635\u0648\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",mime:"\u0646\u0648\u0639 MIME \u0645\u0642\u0635\u062f (Target)",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",style:"\u0627\u0633\u062a\u06cc\u0644",id:"\u0634\u0646\u0627\u0633\u0647",merge_cells_title:"\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644",bgcolor:"\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647",bordercolor:"\u0631\u0646\u06af \u062d\u0627\u0634\u06cc\u0647",align_bottom:"\u067e\u0627\u06cc\u06cc\u0646",align_top:"\u0628\u0627\u0644\u0627",valign:"\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc",cell_type:"\u0646\u0648\u0639 \u0633\u0644\u0648\u0644",cell_title:"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644",row_title:"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0637\u0631 \u062c\u062f\u0648\u0644",align_middle:"\u0648\u0633\u0637",align_right:"\u0631\u0627\u0633\u062a",align_left:"\u0686\u067e",align_default:"\u067e\u06cc\u0634\u0641\u0631\u0636",align:"\u062a\u0631\u0627\u0632",border:"\u062d\u0627\u0634\u06cc\u0647",cellpadding:"\u0644\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627",cellspacing:"\u0641\u0627\u0635\u0644\u0647 \u0633\u0644\u0648\u0644 \u0647\u0627",rows:"\u0633\u0637\u0631\u0647\u0627",cols:"\u0633\u062a\u0648\u0646 \u0647\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u067e\u0647\u0646\u0627",title:"\u062f\u0631\u062c/\u0627\u0635\u0644\u0627\u062d \u062c\u062f\u0648\u0644",rowtype:"\u0633\u0637\u0631 \u062f\u0631 \u0628\u062e\u0634 \u062c\u062f\u0648\u0644",advanced_props:"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647",general_props:"\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u0645\u0648\u0645\u06cc",advanced_tab:"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",general_tab:"\u0639\u0645\u0648\u0645\u06cc"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/fi_dlg.js b/js/tiny_mce/plugins/table/langs/fi_dlg.js new file mode 100755 index 000000000..78a1129db --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.table_dlg',{rules_border:"kehys",rules_box:"laatikko",rules_vsides:"pystysuorat reunat",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"vaakasuorat reunat",rules_below:"alapuoli",rules_above:"yl\u00e4puoli",rules_void:"tyhj\u00e4",rules:"S\u00e4\u00e4nn\u00f6t",frame_all:"kaikki",frame_cols:"sarakkeet",frame_rows:"rivit",frame_groups:"ryhm\u00e4t",frame_none:"ei mit\u00e4\u00e4n",frame:"kehys",caption:"Taulukon seloste",missing_scope:"Haluatko varmasti jatkaa m\u00e4\u00e4ritt\u00e4m\u00e4tt\u00e4 tilaa t\u00e4lle taulukon otsakesolulle? Ilman sit\u00e4 joidenkin k\u00e4ytt\u00e4jien voi olla vaikea ymm\u00e4rt\u00e4\u00e4 taulukon sis\u00e4lt\u00e4m\u00e4\u00e4 informaatiota.",cell_limit:"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n soluja {$cells}.",row_limit:"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n rivej\u00e4 {$rows}.",col_limit:"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n sarakkeita {$cols}.",colgroup:"Sarake ryhm\u00e4",rowgroup:"Rivi ryhm\u00e4",scope:"Tila",tfoot:"Taulukon alaosa",tbody:"Taulukon runko",thead:"Taulukon otsake",row_all:"P\u00e4ivit\u00e4 kaikki taulukon rivit",row_even:"P\u00e4ivit\u00e4 taulukon parilliset rivit",row_odd:"P\u00e4ivit\u00e4 taulukon parittomat rivit",row_row:"P\u00e4ivit\u00e4 rivi",cell_all:"P\u00e4ivit\u00e4 kaikki taulukon solut",cell_row:"P\u00e4ivit\u00e4 kaikki rivin solut",cell_cell:"P\u00e4ivit\u00e4 solu",th:"Otsake",td:"Tietue",summary:"Yhteenveto",bgimage:"Taustakuva",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",mime:"Kohteen MIME-tyyppi",langcode:"Kielen koodi",langdir:"Kielen suunta",style:"Tyyli",id:"Id",merge_cells_title:"Yhdist\u00e4 taulukon solut",bgcolor:"Taustan v\u00e4ri",bordercolor:"Kehyksen v\u00e4ri",align_bottom:"Alas",align_top:"Yl\u00f6s",valign:"Pystysuunnan tasaus",cell_type:"Solun tyyppi",cell_title:"Taulukon solun asetukset",row_title:"Taulukon rivin asetukset",align_middle:"Keskitetty",align_right:"Oikea",align_left:"Vasen",align_default:"Oletus",align:"Tasaus",border:"Kehys",cellpadding:"Solun tyhj\u00e4 tila",cellspacing:"Solun v\u00e4li",rows:"Rivit",cols:"Sarakkeet",height:"Korkeus",width:"Leveys",title:"Lis\u00e4\u00e4/muokkaa taulukkoa",rowtype:"Rivi taulukon osassa",advanced_props:"Edistyneet asetukset",general_props:"Yleiset asetukset",advanced_tab:"Edistynyt",general_tab:"Yleiset"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/fr_dlg.js b/js/tiny_mce/plugins/table/langs/fr_dlg.js new file mode 100755 index 000000000..cc69de577 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.table_dlg',{rules_border:"bordure",rules_box:"bo\u00eete",rules_vsides:"verticales",rules_rhs:"\u00e0 droite",rules_lhs:"\u00e0 gauche",rules_hsides:"horizontales",rules_below:"au-dessous",rules_above:"au-dessus",rules_void:"aucune",rules:"R\u00e8gles",frame_all:"tous",frame_cols:"colonnes",frame_rows:"lignes",frame_groups:"groupe",frame_none:"aucun",frame:"Cadre",caption:"Afficher la l\u00e9gende du tableau",missing_scope:"\u00cates-vous s\u00fbr de vouloir continuer sans sp\u00e9cifier de port\u00e9e pour cette cellule de titre ? Sans port\u00e9e, cela peut \u00eatre difficile pour certains utilisateurs de comprendre le contenu ou les donn\u00e9es affich\u00e9es dans le tableau.",cell_limit:"Vous avez d\u00e9pass\u00e9 le nombre maximum de cellules ({$cells}).",row_limit:"Vous avez d\u00e9pass\u00e9 le nombre maximum de lignes ({$rows}).",col_limit:"Vous avez d\u00e9pass\u00e9 le nombre maximum de colonnes ({$cols}).",colgroup:"Groupe de colonnes",rowgroup:"Groupe de lignes",scope:"Port\u00e9e",tfoot:"Pied de tableau",tbody:"Corps de tableau",thead:"En-t\u00eates de tableau",row_all:"Mettre \u00e0 jour toutes les lignes du tableau",row_even:"Mettre \u00e0 jour les lignes paires",row_odd:"Mettre \u00e0 jour les lignes impaires",row_row:"Mettre \u00e0 jour la ligne courante",cell_all:"Mettre \u00e0 jour toutes les cellules du tableau",cell_row:"Mettre \u00e0 jour toutes les cellules de la ligne",cell_cell:"Mettre \u00e0 jour la cellule courante",th:"Titre",td:"Donn\u00e9es",summary:"R\u00e9sum\u00e9",bgimage:"Image de fond",rtl:"de droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",mime:"Type MIME de la cible",langcode:"Code de la langue",langdir:"Sens de lecture",style:"Style",id:"Id",merge_cells_title:"Fusionner les cellules",bgcolor:"Couleur du fond",bordercolor:"Couleur de la bordure",align_bottom:"Bas",align_top:"Haut",valign:"Alignement vertical",cell_type:"Type de cellule",cell_title:"Propri\u00e9t\u00e9s de la cellule",row_title:"Propri\u00e9t\u00e9s de la ligne",align_middle:"Centr\u00e9",align_right:"Droite",align_left:"Gauche",align_default:"Par d\u00e9faut",align:"Alignement",border:"Bordure",cellpadding:"Espacement dans les cellules",cellspacing:"Espacement entre les cellules",rows:"Lignes",cols:"Colonnes",height:"Hauteur",width:"Largeur",title:"Ins\u00e9rer / modifier un tableau",rowtype:"Type de ligne",advanced_props:"Propri\u00e9t\u00e9s avanc\u00e9es",general_props:"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales",advanced_tab:"Avanc\u00e9",general_tab:"G\u00e9n\u00e9ral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/gl_dlg.js b/js/tiny_mce/plugins/table/langs/gl_dlg.js new file mode 100755 index 000000000..2075f2900 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.table_dlg',{rules_border:"borde",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"debaixo",rules_above:"encima",rules_void:"vac\u00edo",rules:"Regras",frame_all:"todos",frame_cols:"columnas",frame_rows:"filas",frame_groups:"grupos",frame_none:"ning\u00fan",frame:"Recadro",caption:"Subt\u00edtulo da t\u00e1boa",missing_scope:"\u00bfEst\u00e1 seguro que desexa continuar sen especifica-lo \u00e1mbito do encabezado de celda? Sen \u00e9l podr\u00eda ser dificultoso pra algunos usuarios entende-lo contido ou os datos mostrados na t\u00e1boa.",cell_limit:"Super\u00f3u o n\u00famero m\u00e1ximo de celdas: {$cells}.",row_limit:"Super\u00f3u o n\u00famero m\u00e1ximo de filas: {$rows}.",col_limit:"Super\u00f3u o n\u00famero m\u00e1ximo de columnas: {$cols}.",colgroup:"Grupo de columnas",rowgroup:"Grupo de filas",scope:"\u00c1mbito",tfoot:"Pe da t\u00e1boa",tbody:"Corpo da t\u00e1boa",thead:"Encabezamento da t\u00e1boa",row_all:"Actualizar todalas filas",row_even:"Actualizar filas pares",row_odd:"Actualizar filas impares",row_row:"Actualizar fila actual",cell_all:"Actualizar todalas celdas na t\u00e1boa",cell_row:"Actualizar todalas celdas na fila",cell_cell:"Actualizar celda actual",th:"Encabezamento",td:"Datos",summary:"Resumen",bgimage:"Imaxe de fondo",rtl:"Dereita a esquerda",ltr:"Esquerda a dereita",mime:"Tipo MIME",langcode:"C\u00f3digo da lenguaxe",langdir:"Direcci\u00f3n da lenguaxe",style:"Estilo",id:"Id",merge_cells_title:"Unir celdas",bgcolor:"Cor de fondo",bordercolor:"Cor do borde",align_bottom:"Abaixo",align_top:"Arriba",valign:"Ali\u00f1aci\u00f3n vertical",cell_type:"Tipo de celda",cell_title:"Propiedades da celda",row_title:"Propiedades da fila",align_middle:"Centrado",align_right:"Dereita",align_left:"Esquerda",align_default:"Predet.",align:"Ali\u00f1aci\u00f3n",border:"Borde",cellpadding:"Relleno de celda",cellspacing:"Espaciado de celda",rows:"Filas",cols:"Cols",height:"Alto",width:"Ancho",title:"Insertar/Modificar t\u00e1boa",rowtype:"Tipo de fila",advanced_props:"Propiedades avanzadas",general_props:"Propiedades xerales",advanced_tab:"Avanzado",general_tab:"Xeral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/gu_dlg.js b/js/tiny_mce/plugins/table/langs/gu_dlg.js new file mode 100755 index 000000000..68b75a0cc --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/gu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gu.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/he_dlg.js b/js/tiny_mce/plugins/table/langs/he_dlg.js new file mode 100755 index 000000000..156611443 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.table_dlg',{rules_border:"\u05d2\u05d1\u05d5\u05dc",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"\u05de\u05ea\u05d7\u05ea",rules_above:"\u05de\u05e2\u05dc",rules_void:"void",rules:"\u05d7\u05d5\u05e7\u05d9\u05dd",frame_all:"\u05d4\u05db\u05d5\u05dc",frame_cols:"\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",frame_rows:"\u05e9\u05d5\u05e8\u05d5\u05ea",frame_groups:"\u05e7\u05d1\u05d5\u05e6\u05d5\u05ea",frame_none:"\u05dc\u05dc\u05d0",frame:"Frame",caption:"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05d8\u05d1\u05dc\u05d4",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc \u05d4\u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4 \u05e9\u05dc {$cells}.",row_limit:"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc \u05d4\u05e9\u05d5\u05e8\u05d5\u05ea \u05e9\u05dc {$rows}.",col_limit:"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05e2\u05de\u05d5\u05d3\u05d5\u05ea \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"\u05e9\u05d5\u05e8\u05d4 \u05ea\u05d7\u05ea\u05d9\u05ea",tbody:"\u05e9\u05d5\u05e8\u05d4 \u05e8\u05d2\u05d9\u05dc\u05d4",thead:"\u05e9\u05d5\u05e8\u05ea \u05db\u05d5\u05ea\u05e8\u05ea",row_all:"\u05e2\u05d3\u05db\u05d5\u05df\u05db\u05dc \u05d4\u05e9\u05d5\u05e8\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4",row_even:"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d5\u05ea \u05d6\u05d5\u05d2\u05d9\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4",row_odd:"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d5\u05ea \u05d0\u05d9-\u05d6\u05d5\u05d2\u05d9\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4",row_row:"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d4 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea",cell_all:"\u05e2\u05d3\u05db\u05d5\u05df \u05db\u05dc \u05ea\u05d0\u05d9 \u05d4\u05d8\u05d1\u05dc\u05d4",cell_row:"\u05e2\u05d3\u05db\u05d5\u05df \u05db\u05dc \u05ea\u05d0\u05d9 \u05d4\u05e9\u05d5\u05e8\u05d4",cell_cell:"\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9",th:"\u05db\u05d5\u05ea\u05e8\u05ea",td:"\u05ea\u05d0 \u05de\u05d9\u05d3\u05e2",summary:"\u05ea\u05de\u05e6\u05d9\u05ea",bgimage:"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",mime:"Target MIME type",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",style:"\u05e2\u05d9\u05e6\u05d5\u05d1",id:"Id",merge_cells_title:"\u05d0\u05d7\u05d3 \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4",bgcolor:"\u05e6\u05d1\u05e2 \u05d4\u05e8\u05e7\u05e2",bordercolor:"\u05e6\u05d1\u05e2 \u05d4\u05d2\u05d1\u05d5\u05dc",align_bottom:"\u05ea\u05d7\u05ea\u05d9\u05ea",align_top:"\u05e2\u05dc\u05d9\u05d5\u05df",valign:"\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9",cell_type:"\u05e1\u05d2\u05e0\u05d5\u05df \u05d4\u05ea\u05d0",cell_title:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05ea\u05d0 \u05d1\u05d8\u05d1\u05dc\u05d4",row_title:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4",align_middle:"\u05d0\u05de\u05e6\u05e2",align_right:"\u05dc\u05d9\u05de\u05d9\u05df",align_left:"\u05dc\u05e9\u05de\u05d0\u05dc",align_default:"Default",align:"\u05d9\u05e9\u05d5\u05e8 \u05d0\u05d5\u05e4\u05e7\u05d9",border:"\u05d2\u05d1\u05d5\u05dc",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u05e9\u05d5\u05e8\u05d5\u05ea",cols:"\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",height:"\u05d2\u05d5\u05d1\u05d4",width:"\u05e8\u05d5\u05d7\u05d1",title:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05d1\u05dc\u05d4",rowtype:"\u05e1\u05d5\u05d2 \u05d4\u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4",advanced_props:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea",general_props:"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea",advanced_tab:"\u05de\u05ea\u05e7\u05d3\u05dd",general_tab:"\u05db\u05dc\u05dc\u05d9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/hi_dlg.js b/js/tiny_mce/plugins/table/langs/hi_dlg.js new file mode 100755 index 000000000..563089b94 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/hi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hi.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/hr_dlg.js b/js/tiny_mce/plugins/table/langs/hr_dlg.js new file mode 100755 index 000000000..511eb922e --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/hr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hr.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Opis tablice",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"Prema\u0161ili ste maksimalni broj \u0107elija ({$cells}).",row_limit:"Prema\u0161ili ste maksimalni broj redaka ({$rows}).",col_limit:"Prema\u0161ili ste maksimalni broj stupaca ({$cols}).",colgroup:"Grupa stupaca",rowgroup:"Grupa redaka",scope:"Domet",tfoot:"Podno\u017eje tablice",tbody:"Tijelo tablice",thead:"Zaglavlje tablice",row_all:"Primjeni na sve retke u tablici",row_even:"Primjeni na parne retke u tablici",row_odd:"Primjeni na neparne retke u tablici",row_row:"Primjeni na odabrani redak",cell_all:"Primjeni na sve \u0107elije u tablici",cell_row:"Primjeni na sve \u0107elije u retku",cell_cell:"Primjeni na odabranu \u0107eliju",th:"Zaglavlje",td:"Podatkovna",summary:"Sa\u017eetak",bgimage:"Slika pozadine",rtl:"S desna na lijevo",ltr:"S lijeva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smjer jezika",style:"Stil",id:"Id",merge_cells_title:"Spoji \u0107elije",bgcolor:"Background color",bordercolor:"Boja obruba",align_bottom:"Dno",align_top:"Vrh",valign:"Okomito poravnavanje",cell_type:"Tip \u0107elije",cell_title:"Svojstva \u0107elije",row_title:"Svojstva retka",align_middle:"Sredina",align_right:"Desno",align_left:"Lijevo",align_default:"Zadano",align:"Poravnavanje",border:"Obrub",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redaka",cols:"Stupaca",height:"Visina",width:"\u0160irina",title:"Umetni/uredi tablicu",rowtype:"Row in table part",advanced_props:"Napredna svojstva",general_props:"Osnovna svojstva",advanced_tab:"Napredno",general_tab:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/hu_dlg.js b/js/tiny_mce/plugins/table/langs/hu_dlg.js new file mode 100755 index 000000000..0a2b8c167 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.table_dlg',{"rules_border":"keret","rules_box":"doboz","rules_vsides":"f. oldalak","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"v. oldalak","rules_below":"alatta","rules_above":"f\u00f6l\u00f6tte","rules_void":"sehol",rules:"Vonalak","frame_all":"mind","frame_cols":"oszlopok","frame_rows":"sorok","frame_groups":"csoportok","frame_none":"nincs",frame:"Keret",caption:"C\u00edmsor","missing_scope":"Biztosan folytatni akarja an\u00e9lk\u00fcl, hogy hat\u00f3k\u00f6rt adna ennek a fejl\u00e9ccell\u00e1nak? Korl\u00e1toz\u00e1sokkal \u00e9l\u0151k sz\u00e1m\u00e1ra neh\u00e9z lesz meg\u00e9rteni a t\u00e1bl\u00e1zat tartalm\u00e1t.","cell_limit":"T\u00fall\u00e9pte a maxim\u00e1lis cellasz\u00e1mot, ami {$cells}.","row_limit":"T\u00fall\u00e9pte a maxim\u00e1lis sorsz\u00e1mot, ami {$rows}.","col_limit":"T\u00fall\u00e9pte a maxim\u00e1lis oszlopsz\u00e1mot, ami {$cols}.",colgroup:"Oszlop csoport",rowgroup:"Sor csoport",scope:"Hat\u00f3k\u00f6r",tfoot:"T\u00e1bl\u00e1zat l\u00e1b",tbody:"T\u00e1bl\u00e1zat test",thead:"T\u00e1bl\u00e1zat fej","row_all":"Minden sor friss\u00edt\u00e9se","row_even":"P\u00e1ros sorok friss\u00edt\u00e9se","row_odd":"P\u00e1ratlan sorok friss\u00edt\u00e9se","row_row":"Sor friss\u00edt\u00e9se","cell_all":"T\u00e1bl\u00e1zat \u00f6sszes cell\u00e1j\u00e1nak friss\u00edt\u00e9se","cell_row":"Sor \u00f6sszes cell\u00e1j\u00e1nak friss\u00edt\u00e9se","cell_cell":"Cella friss\u00edt\u00e9se",th:"Fejl\u00e9c",td:"Adat",summary:"\u00d6sszegz\u00e9s",bgimage:"H\u00e1tt\u00e9rk\u00e9p",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",mime:"C\u00e9l MIME t\u00edpus",langcode:"Nyelvk\u00f3d",langdir:"\u00cdr\u00e1s ir\u00e1ny",style:"St\u00edlus",id:"Id","merge_cells_title":"Cell\u00e1k \u00f6sszevon\u00e1sa",bgcolor:"H\u00e1tt\u00e9rsz\u00edn",bordercolor:"Keretsz\u00edn","align_bottom":"Le","align_top":"Fel",valign:"F\u00fcgg\u0151leges igaz\u00edt\u00e1s","cell_type":"Cellat\u00edpus","cell_title":"Cella tulajdons\u00e1gai","row_title":"Sor tulajdons\u00e1gai","align_middle":"K\u00f6z\u00e9pre","align_right":"Jobbra","align_left":"Balra","align_default":"Alap\u00e9rtelmezett",align:"Igaz\u00edt\u00e1s",border:"Keret",cellpadding:"Cella bels\u0151k\u00f6z",cellspacing:"Cellak\u00f6z",rows:"Sorok",cols:"Oszlopok",height:"Magass\u00e1g",width:"Sz\u00e9less\u00e9g",title:"T\u00e1bl\u00e1zat besz\u00far\u00e1sa/szerkeszt\u00e9se",rowtype:"Sor a t\u00e1bl\u00e1ban","advanced_props":"Halad\u00f3 tulajdons\u00e1gok","general_props":"\u00c1ltal\u00e1nos tulajdons\u00e1gok","advanced_tab":"Halad\u00f3","general_tab":"\u00c1ltal\u00e1nos"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/hy_dlg.js b/js/tiny_mce/plugins/table/langs/hy_dlg.js new file mode 100755 index 000000000..3f1805a26 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/hy_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hy.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table",cell_limit:"You\'ve exceeded the maximum number of cells of ($ cells)",row_limit:"You\'ve exceeded the maximum number of rows of ($ rows)",col_limit:"You\'ve exceeded the maximum number of columns of ($ cols)",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"\u041d\u0438\u0436\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u0441\u0438\u043d\u0430",tbody:"\u0422\u0435\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u044b",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b",row_all:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435",row_even:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435",row_odd:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435",row_row:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443",cell_all:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435",cell_row:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435",cell_cell:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u044b\u0435",summary:"\u041e\u0431\u0449\u0435\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"Target MIME-\u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430",style:"\u0421\u0442\u0438\u043b\u044c",id:"Id",merge_cells_title:"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",bgcolor:"\u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",bordercolor:"\u0446\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b",align_bottom:"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",align_top:"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",cell_type:"\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438",cell_title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",row_title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",align_middle:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",align_right:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_left:"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_default:"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445",cellspacing:"\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438",rows:"\u0421\u0440\u043e\u043a\u0438",cols:"\u0421\u0442\u043e\u043b\u0431\u0446\u044b",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 / \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",rowtype:"Row in table part",advanced_props:"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430",general_props:"\u041e\u0431\u0449\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430",advanced_tab:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",general_tab:"\u041e\u0431\u0449\u0435\u0435"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ia_dlg.js b/js/tiny_mce/plugins/table/langs/ia_dlg.js new file mode 100755 index 000000000..3b8f5feaf --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ia_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ia.table_dlg',{rules_border:"\u8fb9\u6846",rules_box:"\u76d2",rules_vsides:"\u5782\u76f4\u5927\u5c0f",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"\u6c34\u5e73\u5927\u5c0f",rules_below:"\u4e4b\u4e0b",rules_above:"\u4e4b\u4e0a",rules_void:"\u7a7a",rules:"\u6807\u5c3a",frame_all:"\u5168\u90e8",frame_cols:"\u5217",frame_rows:"\u884c",frame_groups:"\u7ec4",frame_none:"\u65e0",frame:"\u8fb9\u6846",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u60a8\u786e\u5b9a\u4e0d\u6307\u5b9a\u8868\u5934\u50a8\u5b58\u683c\u7684\u8303\u56f4\u5417\uff1f\u5982\u679c\u4e0d\u6307\u5b9a\uff0c\u90e8\u5206\u4f7f\u7528\u8005\u5c06\u5f88\u96be\u67e5\u770b\u8868\u683c\u5185\u5bb9",cell_limit:"\u5df2\u8d85\u8fc7\u9650\u5236\uff0c\u6700\u591a\u4e3a{$cells} \u50a8\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u8fc7\u9650\u5236\uff0c\u6700\u591a\u4e3a {$rows} \u884c\u3002",col_limit:"\u5df2\u8d85\u8fc7\u9650\u5236\uff0c\u6700\u591a\u4e3a {$cols} \u5217\u3002",colgroup:"\u5217\u7ec4",rowgroup:"\u884c\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u811a",tbody:"\u8868\u4f53",thead:"\u8868\u5934",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u5168\u90e8\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c",row_row:"\u66f4\u65b0\u6240\u5728\u884c",cell_all:"\u66f4\u65b0\u5168\u90e8\u50a8\u5b58\u683c",cell_row:"\u66f4\u65b0\u5f53\u524d\u884c\u7684\u50a8\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u7684\u50a8\u5b58\u683c",th:"\u8868\u5934",td:"\u8868\u683c",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"\u76ee\u6807 MIME \u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"Id",merge_cells_title:"\u5408\u5e76\u50a8\u5b58\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272",align_bottom:"\u5e95\u90e8",align_top:"\u9876\u90e8",valign:"\u5782\u76f4\u5bf9\u9f50\u65b9\u5f0f",cell_type:"\u50a8\u5b58\u683c \u7c7b\u522b",cell_title:"\u50a8\u5b58\u683c \u5c5e\u6027",row_title:"\u884c \u5c5e\u6027",align_middle:"\u5c45\u4e2d",align_right:"\u5c45\u53f3",align_left:"\u5c45\u5de6",align_default:"\u9ed8\u8ba4",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u50a8\u5b58\u683c\u5185\u8ddd",cellspacing:"\u50a8\u5b58\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91 \u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",general_props:"\u57fa\u672c \u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u57fa\u672c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/id_dlg.js b/js/tiny_mce/plugins/table/langs/id_dlg.js new file mode 100755 index 000000000..d14fd155b --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Yakin ingin melanjutkan tanpa menetapkan cakupan sel header tabel ini. Tanpa itu, mungkin sulit bagi beberapa pengguna yang memiliki keterbatasan untuk memahami isi atau data yang ditampilkan dari tabel.",cell_limit:"Anda telah melebihi jumlah maksimum cell {$cells}.",row_limit:"Anda telah melebihi jumlah maksimum row {$rows}.",col_limit:"Anda telah melebihi jumlah maksimum kolom {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Gambar Background",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",mime:"Target MIME type",langcode:"Kode Bahasa",langdir:"Bahasa",style:"Style",id:"Id",merge_cells_title:"Merge cell tabel",bgcolor:"Warna Background",bordercolor:"Warna Border",align_bottom:"Bawah",align_top:"Atas",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Properti cell tabel",row_title:"Properti row tabel",align_middle:"Tengah",align_right:"Kanan",align_left:"Kiri",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Tinggi",width:"Lebar",title:"Sisipkan/Ubah Tabel",rowtype:"Row in table part",advanced_props:"Properti Advanced",general_props:"Properti Umum",advanced_tab:"Advanced",general_tab:"Umum"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ii_dlg.js b/js/tiny_mce/plugins/table/langs/ii_dlg.js new file mode 100755 index 000000000..b931c3e8e --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ii_dlg.js @@ -0,0 +1,74 @@ +tinyMCE.addI18n('ii.table_dlg',{ +general_tab:"\u4E00\u822C", +advanced_tab:"\u9AD8\u7EA7", +general_props:"\u4E00\u822C\u5C5E\u6027", +advanced_props:"\u9AD8\u7EA7\u5C5E\u6027", +rowtype:"\u884C\u6240\u5728\u7684\u8868\u683C\u4F4D\u7F6E", +title:"\u63D2\u5165/\u7F16\u8F91\u8868\u683C", +width:"\u5BBD\u5EA6", +height:"\u9AD8\u5EA6", +cols:"\u5217\u6570", +rows:"\u884C\u6570", +cellspacing:"\u50A8\u5B58\u683C\u95F4\u8DDD", +cellpadding:"\u50A8\u5B58\u683C\u7559\u767D", +border:"\u8FB9\u6846", +align:"\u5BF9\u9F50\u65B9\u5F0F", +align_default:"\u9884\u8BBE", +align_left:"\u9760\u5DE6", +align_right:"\u9760\u53F3", +align_middle:"\u5C45\u4E2D", +row_title:"\u884C\u5C5E\u6027", +cell_title:"\u50A8\u5B58\u683C\u5C5E\u6027", +cell_type:"\u50A8\u5B58\u683C\u522B", +valign:"\u6C34\u51C6\u5BF9\u9F50\u65B9\u5F0F", +align_top:"\u4E0A\u65B9", +align_bottom:"\u4E0B\u65B9", +bordercolor:"\u8FB9\u6846\u989C\u8272", +bgcolor:"\u80CC\u666F\u989C\u8272", +merge_cells_title:"\u5408\u5E76\u50A8\u5B58\u683C", +id:"Id", +style:"\u6837\u5F0F", +langdir:"\u8BED\u8A00\u4E66\u5199\u65B9\u5411", +langcode:"\u8BED\u8A00\u7F16\u7801", +mime:"\u76EE\u6807MIME\u7C7B\u578B", +ltr:"\u7531\u5DE6\u5230\u53F3", +rtl:"\u7531\u53F3\u5230\u5DE6", +bgimage:"\u80CC\u666F\u56FE\u7247", +summary:"\u6982\u8981", +td:"\u6570\u636E", +th:"\u8868\u5934", +cell_cell:"\u66F4\u65B0\u6240\u7684\u50A8\u5B58\u683C", +cell_row:"\u66F4\u65B0\u6240\u5728\u884C\u7684\u5168\u90E8\u50A8\u5B58\u683C", +cell_all:"\u66F4\u65B0\u8868\u683C\u5185\u7684\u5168\u90E8\u50A8\u5B58\u683C", +row_row:"\u66F4\u65B0\u6240\u5728\u884C", +row_odd:"\u66F4\u65B0\u8868\u683C\u5185\u7684\u5947\u6570\u884C", +row_even:"\u66F4\u65B0\u8868\u683C\u5185\u7684\u5076\u6570\u884C", +row_all:"\u66F4\u65B0\u8868\u683C\u5185\u5168\u90E8\u884C", +thead:"\u8868\u5934", +tbody:"\u8868\u8EAB", +tfoot:"\u8868\u5C3E", +scope:"\u8303\u56F4", +rowgroup:"\u884C\u7FA4\u7EC4", +colgroup:"\u5217\u7FA4\u7EC4", +col_limit:"\u5DF2\u8D85\u8FC7\u53EF\u7528\u6570\uFF0C\u6700\u9AD8\u7684\u5217\u6570\u4E3A{$cols}\u5217\u3002", +row_limit:"\u5DF2\u8D85\u8FC7\u53EF\u7528\u6570\uFF0C\u6700\u9AD8\u7684\u884C\u6570\u4E3A{$rows}\u884C\u3002", +cell_limit:"\u5DF2\u8D85\u8FC7\u53EF\u7528\u6570\uFF0C\u6700\u9AD8\u7684\u50A8\u5B58\u683C\u6570\u4E3A{$cells}\u683C\u3002", +missing_scope:"\u6807\u9898\u884C\u7F3A\u5931\uFF01", +caption:"\u8868\u683C\u6807\u9898", +frame:"\u8FB9\u6846", +frame_none:"\u65E0", +frame_groups:"\u7FA4\u7EC4", +frame_rows:"\u884C", +frame_cols:"\u5217", +frame_all:"\u5168\u90E8", +rules:"\u7EBF\u6761", +rules_void:"\u7A7A", +rules_above:"\u4E0A", +rules_below:"\u4E0B", +rules_hsides:"\u6C34\u51C6\u8FB9", +rules_lhs:"\u5DE6\u8FB9", +rules_rhs:"\u53F3\u8FB9", +rules_vsides:"\u5782\u76F4\u8FB9", +rules_box:"\u76D2\u578B", +rules_border:"\u5916\u6846" +}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/is_dlg.js b/js/tiny_mce/plugins/table/langs/is_dlg.js new file mode 100755 index 000000000..b2fb158ad --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/is_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('is.table_dlg',{rules_border:"rammi",rules_box:"box",rules_vsides:"vsides",rules_rhs:"hhl",rules_lhs:"vhl",rules_hsides:"hli\u00f0ar",rules_below:"ne\u00f0an",rules_above:"ofan",rules_void:"\u00f3gilt",rules:"Rules",frame_all:"allt",frame_cols:"d\u00e1lkar",frame_rows:"ra\u00f0ir",frame_groups:"h\u00f3par",frame_none:"ekkert",frame:"rammi",caption:"T\u00f6fluval",missing_scope:"Ertu viss um a\u00f0 \u00fe\u00fa viljir halda \u00e1fram \u00e1n \u00feess a\u00f0 skilgreina innihaldi\u00f0 fyrir \u00feessa t\u00f6flu fyrirs\u00f6gn. \u00c1n hennar getur veri\u00f0 erfitt fyrir suma notendur me\u00f0 h\u00f6mlun a\u00f0 skilja innihaldi\u00f0 e\u00f0a \u00fea\u00f0 efni sem er til sta\u00f0ar \u00ed t\u00f6flunni.",cell_limit:"\u00de\u00fa ert komin yfir leyfilegan fj\u00f6lda reita {$cells}.",row_limit:"\u00de\u00fa ert komin yfir leyfilegna fj\u00f6lda ra\u00f0a {$rows}.",col_limit:"\u00de\u00fa ert komin yfir leyfilegan fj\u00f6lda d\u00e1lka {$cols}.",colgroup:"D\u00e1lkah\u00f3pur",rowgroup:"Ra\u00f0arh\u00f3pur",scope:"Umfang",tfoot:"T\u00f6fluf\u00f3tur",tbody:"T\u00f6flusv\u00e6\u00f0i",thead:"Fyrirs\u00f6gn t\u00f6flu",row_all:"Uppf\u00e6ra allar ra\u00f0ir \u00ed t\u00f6flunni",row_even:"Uppf\u00e6ra sl\u00e9ttra\u00f0ir",row_odd:"Uppf\u00e6ra oodara\u00f0ir",row_row:"Uppf\u00e6ra n\u00faverandi r\u00f6\u00f0",cell_all:"Uppf\u00e6ra alla reiti i t\u00f6flunni",cell_row:"Uppf\u00e6ra alla reiti \u00ed r\u00f6\u00f0inni",cell_cell:"Uppf\u00e6ra n\u00faverandi reit",th:"Fyrirs\u00f6gn",td:"G\u00f6gn",summary:"Yfirlit",bgimage:"Bakgrunnsmynd",rtl:"Fr\u00e1 h\u00e6gri til vinstri",ltr:"Fr\u00e1 vinstri til h\u00e6gri",mime:"Velja MIME tegund",langcode:"Tungum\u00e1la k\u00f3\u00f0i",langdir:"Tungum\u00e1la \u00e1tt",style:"St\u00edll",id:"id",merge_cells_title:"Sameina reiti",bgcolor:"Bakgrunnslitur",bordercolor:"Rammalitur",align_bottom:"Ne\u00f0st",align_top:"Efst",valign:"L\u00f3\u00f0r\u00e9tt j\u00f6fnun",cell_type:"Reitartegund",cell_title:"Eiginleikar reits",row_title:"Eiginleikar ra\u00f0ar",align_middle:"Mi\u00f0ja",align_right:"H\u00e6gri",align_left:"Vinstri",align_default:"St\u00f6\u00f0lu\u00f0",align:"J\u00f6fnun",border:"Rammi",cellpadding:"Reita \u00f6ndun",cellspacing:"Reitabil",rows:"Ra\u00f0ir",cols:"Cols",height:"H\u00e6\u00f0",width:"Breidd",title:"Setja inn/Breyta t\u00f6flu",rowtype:"R\u00f6\u00f0 \u00ed t\u00f6fluhluta",advanced_props:"Frekari eiginleikar",general_props:"Almennir eiginleikar",advanced_tab:"N\u00e1nar",general_tab:"Almennt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/it_dlg.js b/js/tiny_mce/plugins/table/langs/it_dlg.js new file mode 100755 index 000000000..35bc2d95f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.table_dlg',{rules_border:"bordo",rules_box:"box",rules_vsides:"lato vert.",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"lato orizz.",rules_below:"sotto",rules_above:"sopra",rules_void:"vuoto",rules:"Regole",frame_all:"tutte",frame_cols:"colonne",frame_rows:"righe",frame_groups:"gruppi",frame_none:"nessuna",frame:"Cornice",caption:"Table caption",missing_scope:"Sicuro di proseguire senza aver specificato uno scope per l\'intestazione di questa tabella? Senza di esso, potrebbe essere difficoltoso per alcuni utenti con disabilit\u00e0 capire il contenuto o i dati mostrati nella tabella.",cell_limit:"Superato il numero massimo di celle di {$cells}.",row_limit:"Superato il numero massimo di righe di {$rows}.",col_limit:"Superato il numero massimo di colonne di {$cols}.",colgroup:"Gruppo colonna",rowgroup:"Gruppo riga",scope:"Scope",tfoot:"Pedice tabella",tbody:"Corpo tabella",thead:"Intestazione tabella",row_all:"Update tutte le righe della tabella",row_even:"Aggiorna righe pari della tabella",row_odd:"Aggiorna righe dispari della tabella",row_row:"Aggiorna riga corrente",cell_all:"Aggiorna tutte le celle della tabella",cell_row:"Aggiorna tutte le celle della riga",cell_cell:"Aggiorna cella corrente",th:"Intestazione",td:"Data",summary:"Sommario",bgimage:"Immagine sfondo",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",mime:"Tipo MIME del target",langcode:"Lingua",langdir:"Direzione testo",style:"Stile",id:"Id",merge_cells_title:"Unisci celle",bgcolor:"Colore sfondo",bordercolor:"Colore bordo",align_bottom:"In basso",align_top:"In alto",valign:"Allineamento verticale",cell_type:"Tipo cella",cell_title:"Propriet\u00e0 cella",row_title:"Propriet\u00e0 riga",align_middle:"Centra",align_right:"A destra",align_left:"A sinistra",align_default:"Predefinito",align:"Allineamento",border:"Bordo",cellpadding:"Padding celle",cellspacing:"Spaziatura celle",rows:"Righe",cols:"Colonne",height:"Altezza",width:"Larghezza",title:"Inserisci/Modifica tabella",rowtype:"Riga in una parte di tabella",advanced_props:"Propriet\u00e0 avanzate",general_props:"Propriet\u00e0 generali",advanced_tab:"Avanzate",general_tab:"Generale"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ja_dlg.js b/js/tiny_mce/plugins/table/langs/ja_dlg.js new file mode 100755 index 000000000..b79166a01 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ja_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ja.table_dlg',{"rules_border":"\u4e0a\u4e0b\u5de6\u53f3(border)","rules_box":"\u4e0a\u4e0b\u5de6\u53f3(box)","rules_vsides":"\u5de6\u53f3","rules_rhs":"\u53f3","rules_lhs":"\u5de6","rules_hsides":"\u4e0a\u4e0b","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u306a\u3057",rules:"\u8868\u306e\u5916\u67a0","frame_all":"\u5168\u3066","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u30b0\u30eb\u30fc\u30d7\u6bce","frame_none":"\u306a\u3057",frame:"\u30bb\u30eb\u67a0\u7dda",caption:"\u8868\u306b\u898b\u51fa\u3057\u3092\u4ed8\u3051\u308b","missing_scope":"\u8868\u306e\u30b9\u30b3\u30fc\u30d7\u5c5e\u6027\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f","cell_limit":"\u30bb\u30eb\u306e\u6700\u5927\u6570\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","row_limit":"\u884c\u306e\u6700\u5927\u6570\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","col_limit":"\u5217\u306e\u6700\u5927\u6570\u3092\u8d85\u3048\u307e\u3057\u305f\u3002",colgroup:"\u5217\u30b0\u30eb\u30fc\u30d7",rowgroup:"\u884c\u30b0\u30eb\u30fc\u30d7",scope:"\u30b9\u30b3\u30fc\u30d7",tfoot:"\u8868\u30d5\u30c3\u30bf",tbody:"\u8868\u30dc\u30c7\u30a3",thead:"\u8868\u30d8\u30c3\u30c0","row_all":"\u5168\u3066\u306e\u884c\u306e\u66f4\u65b0","row_even":"\u5076\u6570\u884c\u306e\u66f4\u65b0","row_odd":"\u5947\u6570\u884c\u306e\u66f4\u65b0","row_row":"\u9078\u629e\u884c\u306e\u66f4\u65b0","cell_all":"\u5168\u3066\u306e\u30bb\u30eb\u306e\u66f4\u65b0","cell_row":"\u884c\u5185\u306e\u30bb\u30eb\u306e\u66f4\u65b0","cell_cell":"\u9078\u629e\u30bb\u30eb\u306e\u66f4\u65b0",th:"\u30d8\u30c3\u30c0",td:"\u30c7\u30fc\u30bf",summary:"\u30b5\u30de\u30ea\u30fc",bgimage:"\u80cc\u666f\u753b\u50cf",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",mime:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306eMIME\u30bf\u30a4\u30d7",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411",style:"\u30b9\u30bf\u30a4\u30eb",id:"ID","merge_cells_title":"\u30bb\u30eb\u306e\u7d50\u5408",bgcolor:"\u80cc\u666f\u8272",bordercolor:"\u67a0\u7dda\u306e\u8272","align_bottom":"\u4e0b\u63c3\u3048","align_top":"\u4e0a\u63c3\u3048",valign:"\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e","cell_type":"\u30bb\u30eb\u7a2e\u5225","cell_title":"\u30bb\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","row_title":"\u884c\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","align_middle":"\u4e2d\u592e\u63c3\u3048","align_right":"\u53f3\u63c3\u3048","align_left":"\u5de6\u63c3\u3048","align_default":"\u30c7\u30d5\u30a9\u30eb\u30c8",align:"\u914d\u7f6e",border:"\u67a0\u7dda",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u884c",cols:"\u5217",height:"\u9ad8\u3055",width:"\u5e45",title:"\u8868\u306e\u633f\u5165/\u7de8\u96c6",rowtype:"\u884c","advanced_props":"\u4e0a\u7d1a\u8005\u5411\u3051","general_props":"\u4e00\u822c","advanced_tab":"\u4e0a\u7d1a\u8005\u5411\u3051","general_tab":"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ka_dlg.js b/js/tiny_mce/plugins/table/langs/ka_dlg.js new file mode 100755 index 000000000..757007531 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ka_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ka.table_dlg',{rules_border:"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",rules_box:"\u10d9\u10dd\u10da\u10dd\u10e4\u10d8",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"wesebi",frame_all:"\u10e7\u10d5\u10d4\u10da\u10d0",frame_cols:"\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",frame_rows:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",frame_groups:"\u10ef\u10d2\u10e3\u10e4\u10d4\u10d1\u10d8",frame_none:"none",frame:"\u10d9\u10d0\u10d3\u10e0\u10d8",caption:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",missing_scope:"\u10d7\u10e3 \u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 \u10d0\u10e0 \u10d8\u10e5\u10dc\u10d4\u10d1\u10d0 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8, \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0 \u10e7\u10d5\u10d4\u10da\u10d0\u10db \u10d5\u10d4\u10e0 \u10dc\u10d0\u10ee\u10dd\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0.",cell_limit:"\u10db\u10d8\u10e6\u10ec\u10d4\u10e3\u10da\u10d8\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10d6\u10e6\u10d5\u10d0\u10e0\u10d8, $ \u10e3\u10ef\u10e0\u10d0.",row_limit:"\u10db\u10d8\u10e6\u10ec\u10d4\u10e3\u10da\u10d8\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10d6\u10e6\u10d5\u10d0\u10e0\u10d8, $ \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8.",col_limit:"\u10db\u10d8\u10e6\u10ec\u10d4\u10e3\u10da\u10d8\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10d6\u10e6\u10d5\u10d0\u10e0\u10d8, $ \u10e1\u10d5\u10d4\u10e2\u10d8.",colgroup:"\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",rowgroup:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",scope:"\u10db\u10d8\u10d3\u10d0\u10db\u10dd",tfoot:"\u10d3\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10d0",tbody:"\u10e1\u10ee\u10d4\u10e3\u10da\u10d8",thead:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",row_all:"\u10ea\u10ee\u10e0\u10d8\u10da\u10e1\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",row_even:"\u10ea\u10ee\u10e0\u10d8\u10da\u10e8\u10d8 \u10da\u10e3\u10ec\u10d8\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",row_odd:"\u10ea\u10ee\u10e0\u10e3\u10da\u10e1\u10d8 \u10d9\u10d4\u10dc\u10e2\u10d8 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",row_row:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e1\u10e2\u10d8\u10e0\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",cell_all:"\u10ea\u10ee\u10e0\u10d8\u10da\u10e1\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",cell_row:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10e8\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10e3\u10ef\u10e0\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",cell_cell:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",th:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",td:"\u10db\u10dd\u10dc\u10d0\u10ea\u10d4\u10db\u10d4\u10d1\u10d8",summary:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",bgimage:"\u10e4\u10dd\u10dc\u10e3\u10e0\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d1\u10d0",rtl:"\u10db\u10d0\u10e0\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",ltr:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",mime:"MIME \u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0",style:"\u10e1\u10e2\u10d8\u10da\u10d8",id:"\u10e1\u10d0\u10ee\u10d4\u10da\u10d8",merge_cells_title:"\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0",bgcolor:"\u10e8\u10d4\u10d5\u10e1\u10d4\u10d1\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",bordercolor:"\u10e1\u10d0\u10d6\u10e6\u10d5\u10e0\u10d4\u10d1\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",align_bottom:"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_top:"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",valign:"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",cell_type:"\u10e2\u10d8\u10de\u10d8",cell_title:"\u10e3\u10ef\u10e0\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",row_title:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",align_middle:"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4",align_right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align_default:"\u10e1\u10d0\u10ec\u10d8\u10e1\u10d0\u10d3",align:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",border:"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",cellpadding:"\u10e3\u10ef\u10e0\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",cellspacing:"\u10e3\u10ef\u10e0\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",rows:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",cols:"\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",height:"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",width:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",title:"\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",rowtype:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e0\u10d8\u10de\u10d8",advanced_props:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",general_props:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",advanced_tab:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7",general_tab:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/kl_dlg.js b/js/tiny_mce/plugins/table/langs/kl_dlg.js new file mode 100755 index 000000000..0370cd248 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/kl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('kl.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/km_dlg.js b/js/tiny_mce/plugins/table/langs/km_dlg.js new file mode 100755 index 000000000..3f6c38952 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/km_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('km.table_dlg',{rules_border:"\u179f\u17ca\u17bb\u1798",rules_box:"\u1794\u17d2\u179a\u17a2\u1794\u17cb",rules_vsides:"\u1782\u17c2\u1798\u1794\u1789\u17d2\u1788\u179a",rules_rhs:"\u1782\u17c2\u1798\u179f\u17d2\u178a\u17b6\u17c6",rules_lhs:"\u1782\u17c2\u1798\u1786\u17d2\u179c\u17c1\u1784",rules_hsides:"\u1782\u17c2\u1798\u1795\u17d2\u178a\u17c1\u1780",rules_below:"\u1780\u17d2\u179a\u17c4\u1798",rules_above:"\u179b\u17be",rules_void:"\u1791\u17b8\u1785\u17c6\u17a0",rules:"\u1785\u17d2\u1794\u17b6\u1794\u17cb",frame_all:"\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb",frame_cols:"\u1785\u17c6\u1793\u17bd\u1793\u1787\u17bd\u179a\u1788\u179a",frame_rows:"\u1785\u17c6\u1793\u17bd\u1793\u1787\u17bd\u179a\u1795\u17d2\u178a\u17c1\u1780",frame_groups:"\u1780\u17d2\u179a\u17bb\u1798",frame_none:"\u1782\u17d2\u1798\u17b6\u1793",frame:"\u179f\u1793\u17d2\u179b\u17b9\u1780",caption:"\u1785\u17c6\u178e\u1784\u1787\u17be\u1784\u178f\u17bc\u1785\u178f\u17b6\u179a\u17b6\u1784",missing_scope:"\u17a2\u17d2\u1793\u1780\u1794\u17d2\u179a\u17b6\u1780\u178a\u1787\u17b6\u1785\u1784\u17cb\u1794\u1793\u17d2\u178f\u178a\u17c4\u1799\u1798\u17b7\u1793\u1794\u17b6\u1793\u1780\u17c6\u178e\u178f\u17cb\u179c\u17b7\u179f\u17b6\u179b\u1797\u17b6\u1796\u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u1780\u17d2\u179a\u17a1\u17b6\u1780\u17d2\u1794\u17b6\u179b\u17ac? \u1794\u17be\u1782\u17d2\u1798\u17b6\u1793\u179c\u17b6 \u1782\u17ba\u17a2\u17b6\u1785\u1787\u17b6\u1780\u17b6\u179a\u179b\u17c6\u1794\u17b6\u1780\u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u17a2\u17d2\u1793\u1780\u1794\u17d2\u179a\u17be\u1794\u17d2\u179a\u17b6\u179f\u17cb\u17a2\u179f\u1798\u178f\u17d2\u1790\u1797\u17b6\u1796\u1798\u17bd\u1799\u1785\u17c6\u1793\u17bd\u1793\u1780\u17d2\u1793\u17bb\u1784\u1780\u17b6\u179a\u1799\u179b\u17cb\u17a2\u178f\u17d2\u1790\u1793\u17d0\u1799 \u17ac\u1791\u17b7\u1793\u17d2\u1793\u1793\u17d0\u1799\u178a\u17c2\u179b\u1794\u1784\u17d2\u17a0\u17b6\u1789\u1780\u17d2\u1793\u17bb\u1784\u178f\u17b6\u179a\u17b6\u1784\u1798\u17bd\u1799\u1793\u17c1\u17c7 \u17d4",cell_limit:"\u17a2\u17d2\u1793\u1780\u1794\u17b6\u1793\u1792\u17d2\u179c\u17be\u179b\u17be\u179f\u1785\u17c6\u1793\u17bd\u1793\u17a2\u178f\u17b7\u1794\u179a\u1798\u17b6{$cells}\u1793\u17c3\u1780\u17d2\u179a\u17a1\u17b6\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb\u00a0\u17d4",row_limit:"\u17a2\u17d2\u1793\u1780\u1794\u17b6\u1793\u1792\u17d2\u179c\u17be\u179b\u17be\u179f\u1785\u17c6\u1793\u17bd\u1793\u17a2\u178f\u17b7\u1794\u179a\u1798\u17b6{$rows}\u1793\u17c3\u1787\u17bd\u179a\u178a\u17c1\u1780\u00a0\u17d4",col_limit:"\u17a2\u17d2\u1793\u1780\u1794\u17b6\u1793\u1792\u17d2\u179c\u17be\u179b\u17be\u179f\u1785\u17c6\u1793\u17bd\u1793\u17a2\u178f\u17b7\u1794\u179a\u1798\u17b6{$cols}\u1793\u17c3\u1787\u17bd\u179a\u1788\u179a\u00a0\u17d4",colgroup:"\u1780\u17d2\u179a\u17bb\u1798\u1787\u17bd\u179a\u1788\u179a",rowgroup:"\u1780\u17d2\u179a\u17bb\u1798\u1787\u17bd\u179a\u178a\u17c1\u1780",scope:"\u179c\u17b7\u179f\u17b6\u179b\u1797\u17b6\u1796",tfoot:"\u1787\u17be\u1784\u178f\u17b6\u179a\u17b6\u1784",tbody:"\u178f\u17bd\u178f\u17b6\u179a\u17b6\u1784",thead:"\u1780\u17d2\u1794\u17b6\u179b\u178f\u17b6\u179a\u17b6\u1784",row_all:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1787\u17bd\u179a\u178a\u17c1\u1780\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb\u1780\u17d2\u1793\u17bb\u1784\u178f\u17b6\u179a\u17b6\u1784",row_even:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1787\u17bd\u179a\u178a\u17c1\u1780\u1782\u17bc\u179a\u1791\u17b6\u17c6\u1784\u17a1\u17b6\u1799\u1780\u17d2\u1793\u17bb\u1784\u178f\u17b6\u179a\u17b6\u1784",row_odd:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1787\u17bd\u179a\u178a\u17c1\u1780\u179f\u17c1\u179f\u1791\u17b6\u17c6\u1784\u17a1\u17b6\u1799\u1780\u17d2\u1793\u17bb\u1784\u178f\u17b6\u179a\u17b6\u1784",row_row:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1787\u17bd\u179a\u178a\u17c1\u1780\u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793",cell_all:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1780\u17d2\u179a\u17a1\u17b6\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb\u1780\u17d2\u1793\u17bb\u1784\u178f\u17b6\u179a\u17b6\u1784",cell_row:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1780\u17d2\u179a\u17a1\u17b6\u1791\u17b6\u17c6\u1784\u17a2\u179f\u17cb\u1780\u17d2\u1793\u17bb\u1784\u1787\u17bd\u179a\u178a\u17c1\u1780",cell_cell:"\u1794\u1793\u17d2\u1791\u17b6\u1793\u17cb\u179f\u1798\u17d0\u1799\u1780\u17d2\u179a\u17a1\u17b6\u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793",th:"\u1780\u17d2\u1794\u17b6\u179b\u178f\u17b6\u179a\u17b6\u1784",td:"\u1791\u17b7\u1793\u17d2\u1793\u1793\u17d0\u1799",summary:"\u179f\u1784\u17d2\u1781\u17c1\u1794",bgimage:"\u179a\u17bc\u1794\u1797\u17b6\u1796\u1795\u17d2\u1791\u17c3\u1781\u17b6\u1784\u1780\u17d2\u179a\u17c4\u1799",rtl:"\u1796\u17b8\u179f\u17d2\u178f\u17b6\u17c6\u1791\u17c5\u1786\u17d2\u179c\u17c1\u1784",ltr:"\u1796\u17b8\u1786\u17d2\u179c\u17c1\u1784\u1791\u17c5\u179f\u17d2\u178a\u17b6\u17c6",mime:"\u1794\u17d2\u179a\u1797\u17c1\u1791\u1782\u17c4\u179b\u178a\u17c5 MIME",langcode:"\u1780\u17bc\u178a\u1797\u17b6\u179f\u17b6",langdir:"\u1791\u17b7\u179f\u178a\u17c5\u1797\u17b6\u179f\u17b6",style:"\u179a\u1785\u1793\u17b6\u1794\u17d0\u1791\u17d2\u1798",id:"\u179b\u179f.",merge_cells_title:"\u179a\u17c6\u179b\u17b6\u1799\u1780\u17d2\u179a\u17a1\u17b6\u178f\u17b6\u179a\u17b6\u1784\u1794\u1789\u17d2\u1785\u17bc\u179b\u1782\u17d2\u1793\u17b6",bgcolor:"\u1796\u178e\u17cc\u1795\u17d2\u1791\u17c3\u1781\u17b6\u1784\u1780\u17d2\u179a\u17c4\u1799",bordercolor:"\u1796\u178e\u17cc\u179f\u17ca\u17bb\u1798",align_bottom:"\u1794\u17b6\u178f",align_top:"\u1780\u17c6\u1796\u17bc\u179b",valign:"\u1780\u17b6\u179a\u178f\u1798\u17d2\u179a\u17b9\u1798\u1794\u1789\u17d2\u1788\u179a",cell_type:"\u1794\u17d2\u179a\u1797\u17c1\u1791\u1780\u17d2\u179a\u17a1\u17b6",cell_title:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1780\u17d2\u179a\u17a1\u17b6\u178f\u17b6\u179a\u17b6\u1784",row_title:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1787\u17bd\u179a\u178a\u17c1\u1780\u178f\u17b6\u179a\u17b6\u1784",align_middle:"\u1780\u178e\u17d2\u178a\u17b6\u179b",align_right:"\u179f\u17d2\u178a\u17b6\u17c6",align_left:"\u1786\u17d2\u179c\u17c1\u1784",align_default:"\u179b\u17c6\u1793\u17b6\u17c6\u178a\u17be\u1798",align:"\u1780\u17b6\u179a\u178f\u1798\u17d2\u179a\u17b9\u1798",border:"\u179f\u17ca\u17bb\u1798",cellpadding:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1780\u17d2\u179a\u17a1\u17b6",cellspacing:"\u1782\u1798\u17d2\u179b\u17b6\u178f\u1780\u17d2\u1793\u17bb\u1784\u1780\u17d2\u179a\u17a1\u17b6",rows:"\u1785\u17c6\u1793\u17bd\u1793\u1787\u17bd\u179a\u178a\u17c1\u1780",cols:"\u1785\u17c6\u1793\u17bd\u1793\u1787\u17bd\u179a\u1788\u179a",height:"\u1780\u1798\u17d2\u1796\u179f\u17cb",width:"\u1791\u1791\u17b9\u1784",title:"\u1794\u1789\u17d2\u1785\u17bc\u179b/\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u178f\u17b6\u179a\u17b6\u1784",rowtype:"\u1791\u17b8\u178f\u17b6\u17c6\u1784\u1787\u17bd\u179a\u178a\u17c1\u1780\u1780\u17d2\u1793\u17bb\u1784\u178f\u17b6\u179a\u17b6\u1784",advanced_props:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb",general_props:"\u179b\u1780\u17d2\u1781\u178e\u17c8\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u1791\u17bc\u1791\u17c5",advanced_tab:"\u1780\u1798\u17d2\u179a\u17b7\u178f\u1781\u17d2\u1796\u179f\u17cb",general_tab:"\u1791\u17bc\u1791\u17c5"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ko_dlg.js b/js/tiny_mce/plugins/table/langs/ko_dlg.js new file mode 100755 index 000000000..348608a58 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ko_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ko.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"\uc88c\uc6b0\ubc94\uc704\ub9cc",rules_rhs:"\uc6b0\uce21 \ubc94\uc704\ub9cc",rules_lhs:"\uc88c\uce21 \ubc94\uc704\ub9cc",rules_hsides:"\uc0c1\ud558\ubc94\uc704\ub9cc",rules_below:"\uc544\ub798",rules_above:"\uc704",rules_void:"Void",rules:"Rules",frame_all:"\ubaa8\ub450",frame_cols:"\uc5f4",frame_rows:"\ud589",frame_groups:"\uadf8\ub8f9",frame_none:"\uc5c6\uc74c",frame:"Frame",caption:"\ud45c\uc81c",missing_scope:"\uc774 \ud45c \ud5e4\ub354\uc140\uc5d0 scope\uc18d\uc131\uc744 \uc9c0\uc815\ud558\uc9c0\uc54a\uc544\ub3c4 \uad1c\ucc2e\uc2b5\ub2c8\uae4c? \uc9c0\uc815\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0, \uc2dc\uac04\uc801\uc73c\ub85c \ud14c\uc774\ube14\uc758 \uad6c\uc870\ub97c \ud30c\uc545\ud558\ub294 \uac83\uc774 \uc5b4\ub824\uc6b4 \ubd84\uc758 \uc811\uadfc\uc131\uc774 \uc800\ud558\ud569\ub2c8\ub2e4.",cell_limit:"\uc140\uc218\uc758 \uc0c1\ud55c{$cells}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.",row_limit:"\ud589\uc218\uc758 \uc0c1\ud55c{$rows}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.",col_limit:"\ub82c\uc218\uc758 \uc0c1\ud55c{$cols}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.",colgroup:"\uc5f4\uadf8\ub8f9",rowgroup:"\ud589\uadf8\ub8f9",scope:"Scope",tfoot:"\ud14c\uc774\ube14 \ud48b\ud130",tbody:"Table Body",thead:"Table Head",row_all:"\uc804\ud589\uc744 \uac31\uc2e0",row_even:"\uc9dd\uc218\ud589\uc744 \uac31\uc2e0",row_odd:"\ud640\uc218\ud589\uc744 \uac31\uc2e0",row_row:"\ud604\uc7ac\uc758 \ud589\uc744 \uac31\uc2e0",cell_all:"\ud14c\uc774\ube14\uc758 \ubaa8\ub4e0 \uc140\uc744 \uac31\uc2e0",cell_row:"\ud589\uc758 \uc804\uc140\uc744 \uac31\uc2e0",cell_cell:"\ud604\uc7ac\uc758 \uc140\uc744 \uac31\uc2e0",th:"Header",td:"Data",summary:"\uc694\uc57d",bgimage:"\ubc30\uacbd \uc774\ubbf8\uc9c0",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",mime:"Target MIME \ud0c0\uc785",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",langdir:"\ubb38\uc790 \ubc29\ud5a5",style:"\uc2a4\ud0c0\uc77c",id:"Id",merge_cells_title:"\uc140 \uacb0\ud569",bgcolor:"\ubc30\uacbd\uc0c9",bordercolor:"\ud14c\ub450\ub9ac\uc120\uc0c9",align_bottom:"\ud558",align_top:"\uc0c1",valign:"\uc218\uc9c1 \uc704\uce58",cell_type:"\uc140 \uc885\ub958",cell_title:"\uc140 \uc124\uc815",row_title:"\ud589 \uc124\uc815",align_middle:"\uac00\uc6b4\ub370 \ub9de\ucda4",align_right:"\uc624\ub978\ucabd \ub9de\ucda4",align_left:"\uc67c\ucabd \ub9de\ucda4",align_default:"\uae30\ubcf8\uac12",align:"\uc815\ub82c",border:"\ud14c\ub450\ub9ac\uc120",cellpadding:"\uc140\ub0b4 \uc5ec\ubc31",cellspacing:"\uc140 \uac04\uaca9",rows:"\ud589",cols:"\ub82c",height:"\ub192\uc774",width:"\ud3ed",title:"\ud14c\uc774\ube14\uc758 \uc0bd\uc785/\ud3b8\uc9d1",rowtype:"\ud589",advanced_props:"\uace0\uae09 \uc124\uc815",general_props:"\uc77c\ubc18 \uc124\uc815",advanced_tab:"\uace0\uae09",general_tab:"\uc77c\ubc18"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/lb_dlg.js b/js/tiny_mce/plugins/table/langs/lb_dlg.js new file mode 100755 index 000000000..cbcef1e52 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/lb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lb.table_dlg',{rules_border:"all 4 S\u00e4iten (Bord)",rules_box:"all 4 S\u00e4iten (Box)",rules_vsides:"l\u00e9nks a riets",rules_rhs:"n\u00ebmmen riets",rules_lhs:"n\u00ebmmen l\u00e9nks",rules_hsides:"uewen an \u00ebnnen",rules_below:"n\u00ebmmen \u00ebnnen",rules_above:"n\u00ebmmen uewen",rules_void:"keen",rules:"Gitter",frame_all:"zw\u00ebschen allen Zellen",frame_cols:"zw\u00ebschen Spalten",frame_rows:"zw\u00ebschen Zeilen",frame_groups:"zw\u00ebschen Gruppen",frame_none:"keng",frame:"Rumm",caption:"Beschr\u00ebftung vun der Tabelle",missing_scope:"W\u00ebllt Dir wierklech keng Bez\u00e9iung fir d\u00ebs Iwwerschr\u00ebft uginn? Benotzer mat kierperlechen Aschr\u00e4nkungen k\u00ebnne Schwieregkeeten hunn, den Inhalt vun der Tabelle ze verstoen.",cell_limit:"Dir hutt d\u00e9i maximal Zellenzuel vun {$cells} iwwerschratt.",row_limit:"Dir hutt d\u00e9i maximal Zeilenzuel vun {$rows} iwwerschratt.",col_limit:"Dir hutt d\u00e9i maximal Spaltenzuel vun {$cols} iwwerschratt.",colgroup:"Horizontal grupp\u00e9ieren",rowgroup:"Vertikal grupp\u00e9ieren",scope:"Bezuch",tfoot:"Tabellefouss",tbody:"Tabelleninhalt",thead:"Tabellekapp",row_all:"All d\'Zeilen ver\u00e4nneren",row_even:"Grued Zeilen ver\u00e4nneren",row_odd:"Ongrued Zeilen ver\u00e4nneren",row_row:"D\u00ebs Zeil ver\u00e4nneren",cell_all:"All Zellen der Tabelle ver\u00e4nneren",cell_row:"All Zellen an d\u00ebser Zeil ver\u00e4nneren",cell_cell:"D\u00ebs Zell ver\u00e4nneren",th:"Iwwerschr\u00ebft",td:"Textzell",summary:"Zesummefaassung",bgimage:"Hannergrondbild",rtl:"Riets no l\u00e9nks",ltr:"L\u00e9nks no riets",mime:"MIME-Typ vum Inhalt",langcode:"Sproochecode",langdir:"Schr\u00ebftrichtung",style:"Format",id:"ID",merge_cells_title:"Zelle vereenen",bgcolor:"Hannergrondfuerf",bordercolor:"Fuerf vun der Rumm",align_bottom:"\u00cbnnen",align_top:"Uewen",valign:"Vertikal Ausriichtung",cell_type:"Zellentyp",cell_title:"Eegeschafte vun der Zell",row_title:"Eegeschafte vun der Zeil",align_middle:"M\u00ebtteg",align_right:"Riets",align_left:"L\u00e9nks",align_default:"Standard",align:"Ausriichtung",border:"Rumm",cellpadding:"Ofstand innerhalb vun den Zellen",cellspacing:"Zellenofstand",rows:"Zeilen",cols:"Spalten",height:"H\u00e9icht",width:"Breet",title:"Tabelle af\u00fcgen/beaarbechten",rowtype:"Grupp\u00e9ierung",advanced_props:"Erweidert Astellungen",general_props:"Allgemeng Astellungen",advanced_tab:"Erweidert",general_tab:"Allgemeng"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/lt_dlg.js b/js/tiny_mce/plugins/table/langs/lt_dlg.js new file mode 100755 index 000000000..4cecfd142 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.table_dlg',{rules_border:"r\u0117melis",rules_box:"d\u0117\u017eut\u0117",rules_vsides:"vert. pus\u0117s",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hor. pus\u0117s",rules_below:"apatinis",rules_above:"vir\u0161utinis",rules_void:"negaliojantis",rules:"Taisykl\u0117s",frame_all:"visi",frame_cols:"stulpeliai",frame_rows:"eilut\u0117s",frame_groups:"grup\u0117s",frame_none:"joks",frame:"R\u0117melis",caption:"Lentel\u0117s antra\u0161t\u0117",missing_scope:"Ar norite t\u0119sti nenurod\u0119 galiojimo srities \u0161iam lentel\u0117s vir\u0161utiniam langeliui. Be nurodymo, kai kuriems naudotojams su negalia gali b\u016bti sunku suprasti lentel\u0117je atvaizduojam\u0173 duomen\u0173 turin\u012f.",cell_limit:"Vir\u0161ijote did\u017eiausi\u0105 ({$cells}) langeli\u0173 kiek\u012f.",row_limit:"Vir\u0161ijote did\u017eiausi\u0105 ({$rows}) eilu\u010di\u0173 kiek\u012f.",col_limit:"Vir\u0161ijote did\u017eiausi\u0105 ({$cols}) stulpeli\u0173 kiek\u012f.",colgroup:"Stulpeli\u0173 grup\u0117",rowgroup:"Eilu\u010di\u0173 grup\u0117",scope:"Galiojimo sritis",tfoot:"Lentel\u0117s apa\u010dia",tbody:"Lentel\u0117s vidus",thead:"Lentel\u0117s vir\u0161us",row_all:"Atnaujinti visas lentel\u0117s eilutes",row_even:"Atnaujinti lygines lentel\u0117s eilutes",row_odd:"Atnaujinti nelygines lentel\u0117s eilutes",row_row:"Atnaujinti dabartin\u0119 eilut\u0119",cell_all:"Atnaujinti visus lentel\u0117s langelius",cell_row:"Atnaujinti visus eilut\u0117s langelius",cell_cell:"Atnaujinti dabartin\u012f langel\u012f",th:"Antra\u0161t\u0117",td:"Duomenys",summary:"Apibendrinimas",bgimage:"Fono paveiksl\u0117lis",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",mime:"Paskirties MIME tipas",langcode:"Kalbos kodas",langdir:"Kalbos kryptis",style:"Stilius",id:"Id",merge_cells_title:"Sujungti lentel\u0117s langelius",bgcolor:"Fono spalva",bordercolor:"R\u0117melio spalva",align_bottom:"Apa\u010dioje",align_top:"Vir\u0161uje",valign:"Vertikalus lygiavimas",cell_type:"Langelio tipas",cell_title:"Lentel\u0117s langeli\u0173 nustatymai",row_title:"Lentel\u0117s eilut\u0117s nustatymai",align_middle:"Centruoti",align_right:"Lygiuoti de\u0161in\u0117je",align_left:"Lygiuoti kair\u0117je",align_default:"Standartinis",align:"Lygiavimas",border:"R\u0117melis",cellpadding:"Tarpas langelio viduje",cellspacing:"Tarpas tarp langeli\u0173",rows:"Eilut\u0117s",cols:"Stulpeliai",height:"Auk\u0161tis",width:"Ilgis",title:"\u012eterpti/modifikuoti lentel\u0119",rowtype:"Eilut\u0117 lentel\u0117s dalyje",advanced_props:"I\u0161pl\u0117stiniai nustatymai",general_props:"Bendri nustatymai",advanced_tab:"I\u0161pl\u0117sta",general_tab:"Bendra"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/lv_dlg.js b/js/tiny_mce/plugins/table/langs/lv_dlg.js new file mode 100755 index 000000000..7e9ff1c75 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/mk_dlg.js b/js/tiny_mce/plugins/table/langs/mk_dlg.js new file mode 100755 index 000000000..168ba3863 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/mk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mk.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Opis tablice",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"Prema\u0161ili ste maksimalni broj \u0107elija ({$cells}).",row_limit:"Prema\u0161ili ste maksimalni broj redaka ({$rows}).",col_limit:"Prema\u0161ili ste maksimalni broj stupaca ({$cols}).",colgroup:"Grupa stupaca",rowgroup:"Grupa redaka",scope:"Domet",tfoot:"Podno\u017eje tablice",tbody:"Telo tablice",thead:"Zaglavlje tablice",row_all:"Primjeni na sve retke u tablici",row_even:"Primjeni na parne retke u tablici",row_odd:"Primjeni na neparne retke u tablici",row_row:"Primjeni na odabrani redak",cell_all:"Primjeni na sve \u0107elije u tablici",cell_row:"Primjeni na sve \u0107elije u retku",cell_cell:"Primjeni na odabranu \u0107eliju",th:"Zaglavlje",td:"Podatkovna",summary:"Sa\u017eetak",bgimage:"Slika pozadine",rtl:"S desna na levo",ltr:"S leva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smjer jezika",style:"Stil",id:"Id",merge_cells_title:"Spoji \u0107elije",bgcolor:"Background color",bordercolor:"Boja obruba",align_bottom:"Dno",align_top:"Vrh",valign:"Okomito poravnavanje",cell_type:"Tip \u0107elije",cell_title:"Svojstva \u0107elije",row_title:"Svojstva retka",align_middle:"Sredina",align_right:"Desno",align_left:"Levo",align_default:"Zadano",align:"Poravnavanje",border:"Obrub",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redaka",cols:"Stupaca",height:"Visina",width:"\u0160irina",title:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi tablicu",rowtype:"Row in table part",advanced_props:"Napredna svojstva",general_props:"Osnovna svojstva",advanced_tab:"Napredno",general_tab:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ml_dlg.js b/js/tiny_mce/plugins/table/langs/ml_dlg.js new file mode 100755 index 000000000..824cd03f2 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ml_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ml.table_dlg',{rules_border:"\u0d05\u0d24\u0d3f\u0d30\u0d41\u0d4d",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"\u0d24\u0d3e\u0d34\u0d46",rules_above:"\u0d2e\u0d41\u0d15\u0d33\u0d3f\u0d32\u0d4d\u200d",rules_void:"void",rules:"Rules",frame_all:"\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/mn_dlg.js b/js/tiny_mce/plugins/table/langs/mn_dlg.js new file mode 100755 index 000000000..95c3a531d --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/mn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('mn.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"\u0434\u043e\u043e\u0440",rules_above:"\u0434\u044d\u044d\u0440",rules_void:"void",rules:"\u0428\u0443\u0433\u0430\u043c",frame_all:"\u0431\u04af\u0445",frame_cols:"\u0411\u0430\u0433\u0430\u043d\u0430",frame_rows:"\u041c\u04e9\u0440",frame_groups:"\u0411\u04af\u043b\u044d\u0433",frame_none:"\u0431\u0430\u0439\u0445\u0433\u04af\u0439",frame:"\u0424\u0440\u044d\u0439\u043c",caption:"\u0425\u04af\u0441\u043d\u044d\u0433\u0442\u0438\u0439\u043d \u0442\u0430\u0439\u043b\u0431\u0430\u0440",missing_scope:"\u0422\u0430 \u044d\u043d\u044d \u0433\u0430\u0440\u0447\u0433\u0438\u0439\u043d \u0445\u0443\u0432\u044c\u0434 \u04af\u043d\u044d\u0445\u044d\u044d\u0440 \u0442\u0430\u0439\u043b\u0431\u0430\u0440 \u0445\u0438\u0439\u0445\u0433\u04af\u0439 \u0431\u0430\u0439\u0445\u044b\u0433 \u0445\u04af\u0441\u044d\u0436 \u0431\u0430\u0439\u043d\u0430 \u0443\u0443? \u0417\u0430\u0440\u0438\u043c \u0445\u04e9\u0433\u0436\u043b\u0438\u0439\u043d \u0431\u044d\u0440\u0445\u0448\u044d\u044d\u043b\u0442\u044d\u0439 \u0445\u04af\u043c\u04af\u04af\u0441 \u0445\u04af\u0441\u043d\u044d\u0433\u0442\u0438\u0439\u043d \u0430\u0433\u0443\u0443\u043b\u0433\u044b\u0433 \u043e\u0439\u043b\u0433\u043e\u0445\u043e\u0434 \u0445\u04af\u043d\u0434\u0440\u044d\u043b\u0442\u044d\u0439 \u0431\u0430\u0439\u0445 \u0431\u043e\u043b\u043d\u043e.",cell_limit:"\u041d\u04af\u0434\u043d\u0438\u0439 \u0442\u043e\u043e\u043d\u044b \u0445\u044f\u0437\u0433\u0430\u0430\u0440 {$cells}-\u0441 \u0445\u044d\u0442\u044d\u0440\u043b\u044d\u044d.",row_limit:"\u041c\u04e9\u0440\u0438\u0439\u043d \u0442\u043e\u043e\u043d\u044b \u0445\u044f\u0437\u0433\u0430\u0430\u0440 {$rows}-\u0441 \u0445\u044d\u0442\u044d\u0440\u043b\u044d\u044d.",col_limit:"\u0411\u0430\u0433\u0430\u043d\u044b\u043d \u0442\u043e\u043e\u043d\u044b \u0445\u044f\u0437\u0433\u0430\u0430\u0440 {$cols}-\u0441 \u0445\u044d\u0442\u044d\u0440\u043b\u044d\u044d.",colgroup:"\u0425\u044d\u0432\u0442\u044d\u044d \u0431\u04af\u043b\u044d\u0433\u043b\u044d\u0445",rowgroup:"\u0411\u043e\u0441\u043e\u043e \u0431\u04af\u043b\u044d\u0433\u043b\u044d\u0445",scope:"\u0423\u044f\u043b\u0434\u0430\u0430",tfoot:"\u0425\u04af\u0441\u043d\u044d\u0433\u0442\u0438\u0439\u043d \u0445\u04e9\u043b",tbody:"\u0425\u04af\u0441\u043d\u044d\u0433\u0442\u0438\u0439\u043d \u0430\u0433\u0443\u0443\u043b\u0433\u0430",thead:"\u0425\u04af\u0441\u043d\u044d\u0433\u0442\u0438\u0439\u043d \u0442\u043e\u043b\u0433\u043e\u0439",row_all:"\u0411\u04af\u0445 \u043c\u04e9\u0440\u0438\u0439\u043d \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",row_even:"\u0422\u044d\u0433\u0448 \u043c\u04e9\u0440\u04af\u04af\u0434\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",row_odd:"\u0421\u043e\u043d\u0434\u0433\u043e\u0439 \u043c\u04e9\u0440\u04af\u04af\u0434\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",row_row:"\u042d\u043d\u044d \u043c\u04e9\u0440\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",cell_all:"\u0425\u04af\u0441\u043d\u044d\u0433\u0442\u0438\u0439\u043d \u0431\u04af\u0445 \u043d\u04af\u0434\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",cell_row:"\u042d\u043d\u044d \u043c\u04e9\u0440\u04e9\u043d \u0434\u04e9\u0445 \u0431\u04af\u0445 \u043d\u04af\u0434\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",cell_cell:"\u042d\u043d\u044d \u043d\u04af\u0434\u0438\u0439\u0433 \u04e9\u04e9\u0440\u0447\u043b\u04e9\u0445",th:"\u0413\u0430\u0440\u0447\u0438\u0433",td:"\u0411\u0438\u0447\u0432\u044d\u0440 \u043d\u04af\u0434",summary:"\u0414\u04af\u0433\u043d\u044d\u043b\u0442",bgimage:"\u0414\u044d\u0432\u0441\u0433\u044d\u0440 \u0437\u0443\u0440\u0430\u0433",rtl:"\u0411\u0430\u0440\u0443\u0443\u043d\u0430\u0430\u0441 \u0437\u04af\u04af\u043d",ltr:"\u0417\u04af\u04af\u043d\u044d\u044d\u0441 \u0431\u0430\u0440\u0443\u0443\u043d",mime:"\u0410\u0433\u0443\u0443\u043b\u0433\u044b\u043d MIME-\u0442\u04e9\u0440\u04e9\u043b",langcode:"\u0425\u044d\u043b\u043d\u0438\u0439 \u043a\u043e\u0434",langdir:"\u0411\u0438\u0447\u0433\u0438\u0439\u043d \u0447\u0438\u0433\u043b\u044d\u043b",style:"\u0425\u044d\u043b\u0431\u044d\u0440\u0436\u04af\u04af\u043b\u044d\u043b\u0442",id:"\u0422\u0422",merge_cells_title:"\u041d\u04af\u0434 \u043d\u044d\u0433\u0442\u0433\u044d\u0445",bgcolor:"\u0414\u044d\u0432\u0441\u0433\u044d\u0440 \u04e9\u043d\u0433\u04e9",bordercolor:"\u0425\u04af\u0440\u044d\u044d\u043d\u0438\u0439 \u04e9\u043d\u0433\u04e9",align_bottom:"\u0414\u043e\u043e\u0440",align_top:"\u0414\u044d\u044d\u0440",valign:"\u0411\u043e\u0441\u043e\u043e \u0436\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",cell_type:"\u041d\u04af\u0434\u043d\u0438\u0439 \u0442\u04e9\u0440\u04e9\u043b",cell_title:"\u041d\u04af\u0434\u043d\u0438\u0439 \u0448\u0438\u043d\u0436",row_title:"\u041c\u04e9\u0440\u0438\u0439\u043d \u0448\u0438\u043d\u0436",align_middle:"\u0413\u043e\u043b\u0434",align_right:"\u0411\u0430\u0440\u0443\u0443\u043d",align_left:"\u0417\u04af\u04af\u043d",align_default:"\u04e8\u0433\u04e9\u0433\u0434\u043c\u04e9\u043b",align:"\u0416\u0438\u0433\u0434\u0440\u04af\u04af\u043b\u044d\u043b\u0442",border:"\u0425\u04af\u0440\u044d\u044d",cellpadding:"\u041d\u04af\u0434\u043d\u0438\u0439 \u0434\u043e\u0442\u043e\u043e\u0434 \u0430\u043b\u0441\u043b\u0430\u043b\u0442",cellspacing:"\u041d\u04af\u0434\u043d\u0438\u0439 \u0430\u043b\u0441\u043b\u0430\u043b\u0442",rows:"\u041c\u04e9\u0440",cols:"\u0411\u0430\u0433\u0430\u043d\u0430",height:"\u04e8\u043d\u0434\u04e9\u0440",width:"\u04e8\u0440\u0433\u04e9\u043d",title:"\u0425\u04af\u0441\u043d\u044d\u0433\u0442 \u043e\u0440\u0443\u0443\u043b\u0430\u0445/\u0437\u0430\u0441\u0430\u0445",rowtype:"\u041c\u04e9\u0440\u0438\u0439\u043d \u0442\u04e9\u0440\u04e9\u043b",advanced_props:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d \u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",general_props:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439 \u0442\u043e\u0445\u0438\u0440\u0433\u043e\u043e",advanced_tab:"\u04e8\u0440\u0433\u04e9\u0442\u0433\u04e9\u0441\u04e9\u043d",general_tab:"\u0415\u0440\u04e9\u043d\u0445\u0438\u0439"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ms_dlg.js b/js/tiny_mce/plugins/table/langs/ms_dlg.js new file mode 100755 index 000000000..019e26558 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ms_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ms.table_dlg',{rules_border:"sempadan",rules_box:"kotak",rules_vsides:"tepian tegak",rules_rhs:"hs-kanan",rules_lhs:"hs-kiri",rules_hsides:"tepian datar",rules_below:"bawah",rules_above:"atas",rules_void:"batal",rules:"Peraturan",frame_all:"semua",frame_cols:"kol",frame_rows:"row",frame_groups:"kumpulan",frame_none:"tiada",frame:"Bingkai",caption:"Tajuk jadual",missing_scope:"Adakah anda pasti terhadap skop sel jadual ini. Ia mungkin memberi kesan kepada OKU memahami isi jadual.",cell_limit:"Anda telah melebihi maxima sel dibenarkan iaitu {$cells}.",row_limit:"Anda telah melebihi maxima row dibenarkan iaitu {$rows}.",col_limit:"Anda telah melebihi maxima kolum dibenarkan iaitu {$cols}.",colgroup:"Kumpulan kol",rowgroup:"Kumpulan row",scope:"Skop",tfoot:"Penutup jadual Foot",tbody:"Isi jadual",thead:"Pembuka jadual",row_all:"Baharui semua row dalam jadual",row_even:"Baharui row genap dalam jadual",row_odd:"Baharui row ganjil dalam jadual",row_row:"Baharui row semasa",cell_all:"Baharui semua sel dalam jadual",cell_row:"Baharui semua sel dalam row",cell_cell:"Baharui sel ini",th:"Kepala",td:"Data",summary:"Kesimpulan",bgimage:"Imej latar",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",mime:"Sasaran jenis MIME",langcode:"Kod bahasa",langdir:"Arah bahasa",style:"Gaya",id:"Id",merge_cells_title:"Gabung sel jadual",bgcolor:"Warna latar",bordercolor:"Warna sempadan",align_bottom:"Bawah",align_top:"Atas",valign:"Penjajaran tegak",cell_type:"Jenis sel",cell_title:"Alatan sel jadual",row_title:"Alatan row jadual",align_middle:"Tengah",align_right:"Kanan",align_left:"Kiri",align_default:"Asal",align:"Penyelarian",border:"Sempadan",cellpadding:"Lapisan sel",cellspacing:"Ruang sel",rows:"Row",cols:"Kol",height:"Tinggi",width:"Lebar",title:"Masuk/Ubah jadual",rowtype:"Row dalam jadual",advanced_props:"Alatan lanjutan",general_props:"Alatan am",advanced_tab:"Lanjutan",general_tab:"Am"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/my_dlg.js b/js/tiny_mce/plugins/table/langs/my_dlg.js new file mode 100755 index 000000000..bea78df83 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/my_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('my.table_dlg',{rules_border:"\u1014\u101a\u103a\u1005\u100a\u103a\u1038",rules_box:"\u1015\u1036\u102f\u1038",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"\u1031\u1021\u102c\u1000\u103a\u1010\u103d\u1004\u103a",rules_above:"\u1021\u1011\u1000\u103a\u1010\u103d\u1004\u103a",rules_void:"void",rules:"\u1005\u100a\u103a\u1038\u1019\u103b\u1009\u103a\u1038\u1019\u103b\u102c\u1038",frame_all:"\u1021\u102c\u1038\u101c\u1036\u102f\u1038",frame_cols:"\u1031\u1000\u102c\u103a\u101c\u1036\u1019\u103b\u102c\u1038",frame_rows:"\u1021\u1010\u1014\u103a\u1038\u1019\u103b\u102c\u1038",frame_groups:"\u1021\u102f\u1015\u103a\u1005\u102f\u1019\u103b\u102c\u1038",frame_none:"\u1010\u1005\u103a\u1001\u102f\u1019\u103b\u103e\u1019\u101f\u102f\u1010\u103a",frame:"\u1016\u101b\u102d\u1019\u103a",caption:"\u1007\u101a\u102c\u1038\u1000\u103d\u1000\u103a \u1031\u1001\u102b\u1004\u103a\u1038\u1005\u1009\u103a",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You",row_limit:"You",col_limit:"You",colgroup:"\u1031\u1000\u102c\u103a\u101c\u1036 \u1021\u102f\u1015\u103a\u1005\u102f",rowgroup:"\u1021\u1010\u1014\u103a\u1038 \u1021\u102f\u1015\u103a\u1005\u102f",scope:"Scope",tfoot:"\u1007\u101a\u102c\u1038 \u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001",tbody:"\u1007\u101a\u102c\u1038 \u1000\u102d\u102f\u101a\u103a\u1011\u100a\u103a",thead:"\u1007\u101a\u102c\u1038 \u1014\u1016\u1030\u1038\u1005\u100a\u103a\u1038",row_all:"\u1007\u101a\u102c\u1038\u1011\u1032\u1019\u103e \u1021\u1010\u1014\u103a\u1038\u1021\u102c\u1038\u101c\u1036\u102f\u1038\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",row_even:"\u1007\u101a\u102c\u1038\u1011\u1032\u1019\u103e \u1005\u1036\u102f \u1021\u1010\u1014\u103a\u1038\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",row_odd:"\u1007\u101a\u102c\u1038\u1011\u1032\u1019\u103e \u1019 \u1021\u1010\u1014\u103a\u1038\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",row_row:"\u101c\u1000\u103a\u101b\u103e\u102d \u1021\u1010\u1014\u103a\u1038\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",cell_all:"\u1007\u101a\u102c\u1038\u1011\u1032\u1019\u103e \u1021\u1000\u103d\u1000\u103a\u1021\u102c\u1038\u101c\u1036\u102f\u1038\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",cell_row:"\u1021\u1010\u1014\u103a\u1038\u1011\u1032\u1019\u103e \u1021\u1000\u103d\u1000\u103a\u1021\u102c\u1038\u101c\u1036\u102f\u1038\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",cell_cell:"\u101c\u1000\u103a\u101b\u103e\u102d \u1021\u1000\u103d\u1000\u103a\u1000\u102d\u102f \u1021\u101e\u1005\u103a\u103c\u1016\u100a\u103a\u1037\u1005\u103d\u1000\u103a\u1015\u102b",th:"\u1031\u1001\u102b\u1004\u103a\u1038\u1005\u102e\u1038\u1015\u102d\u102f\u1004\u103a\u1038",td:"\u1021\u1001\u103b\u1000\u103a\u1021\u101c\u1000\u103a",summary:"\u1021\u1014\u103e\u1005\u103a\u1001\u103b\u102f\u1015\u103a",bgimage:"\u1031\u1014\u102c\u1000\u103a\u1001\u1036 \u101b\u102f\u1015\u103a\u1015\u1036\u102f",rtl:"\u100a\u102c\u1019\u103e \u1018\u101a\u103a",ltr:"\u1018\u101a\u103a\u1019\u103e \u100a\u102c",mime:"Target MIME type",langcode:"\u1018\u102c\u101e\u102c\u1005\u1000\u102c\u1038 \u1000\u102f\u1010\u103a",langdir:"\u1005\u102c\u1031\u101b\u1038\u101e\u102c\u1038\u1019\u103e\u102f \u1025\u102e\u1038\u1010\u100a\u103a\u1001\u103b\u1000\u103a",style:"\u1005\u1010\u102d\u102f\u1004\u103a",id:"ID",merge_cells_title:"\u1007\u101a\u102c\u1038\u1000\u103d\u1000\u103a\u1019\u103b\u102c\u1038\u1000\u102d\u102f \u1031\u1015\u102b\u1004\u103a\u1038\u1015\u102b",bgcolor:"\u1031\u1014\u102c\u1000\u103a\u1001\u1036 \u1021\u1031\u101b\u102c\u1004\u103a",bordercolor:"\u1014\u101a\u103a\u1005\u100a\u103a\u1038 \u1021\u1031\u101b\u102c\u1004\u103a",align_bottom:"\u1031\u1021\u102c\u1000\u103a\u1031\u103c\u1001",align_top:"\u1011\u102d\u1015\u103a",valign:"\u1031\u1012\u102b\u1004\u103a\u101c\u102d\u102f\u1000\u103a \u1001\u103b\u102d\u1014\u103a\u100a\u102d\u103e\u1019\u103e\u102f",cell_type:"\u1021\u1000\u103d\u1000\u103a \u1021\u1019\u103b\u102d\u102f\u1038\u1021\u1005\u102c\u1038",cell_title:"\u1007\u101a\u102c\u1038\u1000\u103d\u1000\u103a \u101d\u102d\u1031\u101e\u101e \u101c\u1000\u1039\u1001\u100f\u102c\u1019\u103b\u102c\u1038",row_title:"\u1007\u101a\u102c\u1038 \u1021\u1010\u1014\u103a\u1038 \u101d\u102d\u1031\u101e\u101e \u101c\u1000\u1039\u1001\u100f\u102c\u1019\u103b\u102c\u1038",align_middle:"\u1017\u101f\u102d\u102f",align_right:"\u100a\u102c",align_left:"\u1018\u101a\u103a",align_default:"\u1019\u1030\u101c",align:"\u1001\u103b\u102d\u1014\u103a\u100a\u102d\u103e\u1019\u103e\u102f",border:"\u1014\u101a\u103a\u1005\u1015\u103a\u1005\u100a\u103a\u1038",cellpadding:"\u1000\u103d\u1000\u103a\u1031\u1018\u1038\u1031\u1014\u101b\u102c\u101c\u103d\u1010\u103a",cellspacing:"\u1000\u103d\u1000\u103a\u103c\u1000\u102c\u1038\u101c\u1015\u103a",rows:"\u1021\u1010\u1014\u103a\u1038",cols:"\u1031\u1000\u102c\u103a\u101c\u1036",height:"\u1021\u103c\u1019\u1004\u103a\u1037",width:"\u1021\u1000\u103b\u101a\u103a",title:"\u1007\u101a\u102c\u1038 \u1011\u100a\u103a\u1037/\u103c\u1015\u102f\u103c\u1015\u1004\u103a",rowtype:"\u1021\u1010\u1014\u103a\u1038\u101b\u103e\u102d\u1019\u100a\u103a\u1037 \u1007\u101a\u102c\u1038 \u1021\u1015\u102d\u102f\u1004\u103a\u1038",advanced_props:"\u1021\u1011\u1030\u1038 \u101d\u102d\u1031\u101e\u101e\u101c\u1000\u1039\u1001\u100f\u102c\u1019\u103b\u102c\u1038",general_props:"\u1021\u1031\u1011\u103d\u1031\u1011\u103d \u101d\u102d\u1031\u101e\u101e\u101c\u1000\u1039\u1001\u100f\u102c\u1019\u103b\u102c\u1038",advanced_tab:"\u1021\u1011\u1030\u1038",general_tab:"\u1021\u1031\u1011\u103d\u1031\u1011\u103d"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/nb_dlg.js b/js/tiny_mce/plugins/table/langs/nb_dlg.js new file mode 100755 index 000000000..f8a9ea849 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/nb_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nb.table_dlg',{"rules_border":"ramme","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsider","rules_below":"under","rules_above":"over","rules_void":"ingen",rules:"Streker","frame_all":"alle","frame_cols":"kolonner","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabelloverskrift","missing_scope":"Er du sikker p\u00e5 at du vil fortsette uten \u00e5 angi et omr\u00e5de for denne overskrifscellen? Uten dette kan det bli vanskelig for enkelte funksjonshemmede brukere \u00e5 forst\u00e5 innholdet eller dataene som blir presentert i tabellen.","cell_limit":"Du har overskredet maksimalt antall celler p\u00e5 {$cells}.","row_limit":"Du har overskredet maksimalt antall rader p\u00e5 {$rows}.","col_limit":"Du har overskredet maksimalt antall kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"Radgruppe",scope:"Omr\u00e5de",tfoot:"Tabellfot",tbody:"Tabellkropp",thead:"Tabellhode","row_all":"Oppdater alle rader","row_even":"Oppdater partallsrader","row_odd":"Oppdater oddetallsrader","row_row":"Oppdater aktuell rad","cell_all":"Oppdater alle celler i tabellen","cell_row":"Oppdater alle celler i raden","cell_cell":"Oppdater aktuell celle",th:"Overskrift",td:"Data",summary:"Sammendrag",bgimage:"Bakgrunnsbilde",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",mime:"M\u00e5lets MIME-type",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",style:"Stil",id:"Id","merge_cells_title":"Sl\u00e5 sammen celler",bgcolor:"Bakgrunn",bordercolor:"Rammefarge","align_bottom":"Bunn","align_top":"Topp",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleegenskaper","row_title":"Radegenskaper","align_middle":"Midtstilt","align_right":"H\u00f8yre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Ramme",cellpadding:"Cellefylling",cellspacing:"Celleavstand",rows:"Rader",cols:"Kolonner",height:"H\u00f8yde",width:"Bredde",title:"Sett inn / rediger tabell",rowtype:"Rad i tabell","advanced_props":"Generelle egenskaper","general_props":"Generelt","advanced_tab":"Avansert","general_tab":"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/nl_dlg.js b/js/tiny_mce/plugins/table/langs/nl_dlg.js new file mode 100755 index 000000000..fa7f2225f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.table_dlg',{"rules_border":"Rand","rules_box":"Box","rules_vsides":"Verticale zijden","rules_rhs":"Rechterzijkant","rules_lhs":"Linkerzijkant","rules_hsides":"Horizontale zijden","rules_below":"Onder","rules_above":"Boven","rules_void":"Geen",rules:"Hulplijnen","frame_all":"Alles","frame_cols":"Kolommen","frame_rows":"Rijen","frame_groups":"Groepen","frame_none":"Geen",frame:"Frame",caption:"Tabelbeschrijving","missing_scope":"Weet u zeker dat u door wilt gaan met het toewijzen van een kop zonder een bereik op te geven? Mensen met een visuele handicap kunnen hierdoor waarschijnlijk slecht bij de gegevens.","cell_limit":"U heeft het maximale aantal cellen van {$cells} overschreden.","row_limit":"U heeft hebt het maximale aantal rijen van {$rows} overschreden.","col_limit":"U heeft het maximale aantal kolommen van {$cols} overschreden.",colgroup:"Kolomgroep",rowgroup:"Rijgroep",scope:"Bereik",tfoot:"Tabelvoet",tbody:"Tabellichaam",thead:"Tabelkop","row_all":"Alle rijen bijwerken","row_even":"Even rijen bijwerken","row_odd":"Oneven rijen bijwerken","row_row":"Huidige rij bijwerken","cell_all":"Alle cellen in tabel bijwerken","cell_row":"Alle cellen in rij bijwerken","cell_cell":"Huidige cel bijwerken",th:"Kop",td:"Gegevens",summary:"Samenvatting",bgimage:"Achtergrondafbeelding",rtl:"Van rechts naar links",ltr:"Van links naar rechts",mime:"Doel MIME type",langcode:"Taalcode",langdir:"Taalrichting",style:"Stijl",id:"Id","merge_cells_title":"Cellen samenvoegen",bgcolor:"Achtergrondkleur",bordercolor:"Randkleur","align_bottom":"Onder","align_top":"Boven",valign:"Verticale uitlijning","cell_type":"Celtype","cell_title":"Celeigenschappen","row_title":"Rij-eigenschappen","align_middle":"Centreren","align_right":"Rechts","align_left":"Links","align_default":"Standaard",align:"Uitlijning",border:"Rand",cellpadding:"Ruimte in cel",cellspacing:"Ruimte om cel",rows:"Rijen",cols:"Kolommen",height:"Hoogte",width:"Breedte",title:"Tabel invoegen/bewerken",rowtype:"Rijtype","advanced_props":"Geavanceerde eigenschappen","general_props":"Algemene eigenschappen","advanced_tab":"Geavanceerd","general_tab":"Algemeen"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/nn_dlg.js b/js/tiny_mce/plugins/table/langs/nn_dlg.js new file mode 100755 index 000000000..5e145db2f --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/nn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nn.table_dlg',{rules_border:"ramme",rules_box:"boks",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"under",rules_above:"over",rules_void:"ingen",rules:"Strekar",frame_all:"alle",frame_cols:"kolonnar",frame_rows:"rader",frame_groups:"grupper",frame_none:"ingen",frame:"Ramme",caption:"Tabelloverskrift",missing_scope:"Er du sikker p\u00e5 at du vil fortsetje utan \u00e5 angi eit omr\u00e5de for denne overskrifscella? Utan dette kan det bli vanskeleg for enkelte funksjonshemma brukarar \u00e5 forst\u00e5 innhaldet eller dataane som blir presenterte i tabellen.",cell_limit:"Du har fleire enn maksimalt tal celler p\u00e5 {$cells}.",row_limit:"Du har fleire enn maksimalt tal rader p\u00e5 {$rows}.",col_limit:"Du har fleire enn maksimalt tal kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"Radgruppe",scope:"Omr\u00e5de",tfoot:"Tabellfot",tbody:"Tabellkropp",thead:"Tabellhovud",row_all:"Oppdater alle rader",row_even:"Oppdater partallrader",row_odd:"Oppdater oddetallrader",row_row:"Oppdater aktuell rad",cell_all:"Oppdater alle celler i tabellen",cell_row:"Oppdater alle celler i rada",cell_cell:"Oppdater aktuell celle",th:"Overskrift",td:"Data",summary:"Samandrag",bgimage:"Bakgrunnsbilete",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",mime:"M\u00e5let sin MIME-type",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",style:"Stil",id:"Id",merge_cells_title:"Sl\u00e5 saman celler",bgcolor:"Bakgrunn",bordercolor:"Rammefarge",align_bottom:"Botn",align_top:"Topp",valign:"Vertikal justering",cell_type:"Celletype",cell_title:"Celleeigenskapar",row_title:"Radeigenskapar",align_middle:"Midtstilt",align_right:"H\u00f8gre",align_left:"Venstre",align_default:"Standard",align:"Justering",border:"Ramme",cellpadding:"Cellefylling",cellspacing:"Celleavstand",rows:"Rader",cols:"Kolonner",height:"H\u00f8gd",width:"Breidd",title:"Set inn / rediger tabell",rowtype:"Rad i tabell",advanced_props:"Generelle eigenskapar",general_props:"Generelt",advanced_tab:"Avansert",general_tab:"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/no_dlg.js b/js/tiny_mce/plugins/table/langs/no_dlg.js new file mode 100755 index 000000000..ec7c0af45 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.table_dlg',{"rules_border":"ramme","rules_box":"boks","rules_vsides":"vside","rules_rhs":"hs","rules_lhs":"vs","rules_hsides":"hside","rules_below":"under","rules_above":"over","rules_void":"tom",rules:"Streker","frame_all":"alle","frame_cols":"kolonner","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabell tittel","missing_scope":"Er du sikker du vil fortsette uten \u00e5 angi tittel for denne overskrifscellen? Uten denne kan det bli vanskelig for enkelte funksjonshemmede brukere \u00e5 forst\u00e5 innhold eller data som presenteres i tabellen.","cell_limit":"Du har overg\u00e5tt maksimalt antall tillatt celler p\u00e5 {$cells}.","row_limit":"Du har overg\u00e5tt maksimalt antall tillatte rader p\u00e5 {$rows}.","col_limit":"Du har overg\u00e5tt maksimalt antall tillatte kolonner p\u00e5 {$cols}.",colgroup:"Kolonne gruppe",rowgroup:"Rad gruppe",scope:"Tittel",tfoot:"Tabell foot",tbody:"Tabell body",thead:"Tabell head","row_all":"Oppdater alle rader","row_even":"Oppdater rader med partall","row_odd":"Oppdater rader med oddetall","row_row":"Oppdater aktuell rad","cell_all":"Oppdater alle celler i tabellen","cell_row":"Oppdater alle celler i raden","cell_cell":"Oppdater aktuell celle",th:"Overskrift",td:"Data",summary:"Sammendrag",bgimage:"Bakgrunnsbilde",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",mime:"M\u00e5lets MIME-type",langcode:"Spr\u00e5k kode",langdir:"Skriftretning",style:"Stil",id:"Id","merge_cells_title":"Sl\u00e5 sammen celler",bgcolor:"Bakgrunnsfarge",bordercolor:"Rammefarge","align_bottom":"Bunn","align_top":"Topp",valign:"Vertikal justering","cell_type":"Celle type","cell_title":"Celle egenskaper","row_title":"Rad egenskaper","align_middle":"Midtstilt","align_right":"H\u00f8yre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Ramme",cellpadding:"Cellefylling",cellspacing:"Celleavstand",rows:"Rader",cols:"Kolonner",height:"H\u00f8yde",width:"Bredde",title:"Sett inn/editer tabell",rowtype:"Rad i tabell","advanced_props":"Avanserte egenskaper","general_props":"Generelle egenskaper","advanced_tab":"Avansert","general_tab":"Generelt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/pl_dlg.js b/js/tiny_mce/plugins/table/langs/pl_dlg.js new file mode 100755 index 000000000..7e78c474d --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"pod","rules_above":"nad","rules_void":"void",rules:"Prowadnice","frame_all":"wszystkie","frame_cols":"kolumny","frame_rows":"wiersze","frame_groups":"grupy","frame_none":"brak",frame:"Ramka",caption:"Nag\u0142\u00f3wek tabeli","missing_scope":"Jeste\u015b pewny \u017ce chcesz kontynuowa\u0107 bez definiowania zasi\u0119gu dla kom\u00f3rki tabeli. Bez niej, mo\u017ce by\u0107 trudne dla niekt\u00f3rych u\u017cytkownik\u00f3w zrozuminie zawarto\u015bci albo danych wy\u015bwietlanych poza tabel\u0105.","cell_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 kom\u00f3rek kt\u00f3ra wynosi {$cells}.","row_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 wierszy kt\u00f3ra wynosi {$rows}.","col_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 kolumn kt\u00f3ra wynosi {$cols}.",colgroup:"Grupa kolumn",rowgroup:"Grupa wierszy",scope:"Zakres",tfoot:"Stopka tabeli",tbody:"Cia\u0142o tabeli",thead:"Nag\u0142\u00f3wek tabeli","row_all":"Zmie\u0144 wszystkie wiersze","row_even":"Zmie\u0144 parzyste wiersze","row_odd":"Zmie\u0144 nieparzyste wiersze","row_row":"Zmie\u0144 aktualny wiersz","cell_all":"Zmie\u0144 wszytkie kom\u00f3rki w tabeli","cell_row":"Zmie\u0144 wszytkie kom\u00f3rki w wierszu","cell_cell":"Zmie\u0144 aktualn\u0105 kom\u00f3rk\u0119",th:"Nag\u0142owek",td:"Dane",summary:"Podsumowanie",bgimage:"Obrazek t\u0142a",rtl:"Kierunek z prawej do lewej",ltr:"Kierunek z lewej do prawej",mime:"Docelowy typ MIME",langcode:"Kod j\u0119zyka",langdir:"Kierunek czytania tekstu",style:"Styl",id:"Id","merge_cells_title":"Po\u0142\u0105cz kom\u00f3rki",bgcolor:"Kolor t\u0142a",bordercolor:"Kolor ramki","align_bottom":"D\u00f3\u0142","align_top":"G\u00f3ra",valign:"Pionowe wyr\u00f3wnanie","cell_type":"Typ kom\u00f3rki","cell_title":"W\u0142a\u015bciwo\u015bci kom\u00f3rki","row_title":"W\u0142a\u015bciwo\u015bci wiersza","align_middle":"\u015arodek","align_right":"Prawy","align_left":"Lewy","align_default":"Domy\u015blnie",align:"Wyr\u00f3wnanie",border:"Ramka",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Wiersze",cols:"Kolumny",height:"Wysoko\u015b\u0107",width:"Szeroko\u015b\u0107",title:"Wklej/Zmie\u0144 tabel\u0119",rowtype:"Wiersz w cz\u0119\u015bci tabeli","advanced_props":"Zaawansowane w\u0142a\u015bciwo\u015bci","general_props":"G\u0142\u00f3wne w\u0142a\u015bciwo\u015bci","advanced_tab":"Zaawansowane","general_tab":"G\u0142\u00f3wne"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ps_dlg.js b/js/tiny_mce/plugins/table/langs/ps_dlg.js new file mode 100755 index 000000000..686211c8b --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ps_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ps.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/pt_dlg.js b/js/tiny_mce/plugins/table/langs/pt_dlg.js new file mode 100755 index 000000000..7534c5cd9 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.table_dlg',{rules_border:"Limites",rules_box:"Box",rules_vsides:"Vsides",rules_rhs:"Rhs",rules_lhs:"Lhs",rules_hsides:"Hsides",rules_below:"abaixo",rules_above:"acima",rules_void:"void",rules:"Regras",frame_all:"Todos",frame_cols:"colunas",frame_rows:"Linhas",frame_groups:"Grupos",frame_none:"Nenhum",frame:"Frame",caption:"T\u00edtulo da tabela",missing_scope:"Tem certeza de que quer continuar sem especificar um escopo para esta c\u00e9lula? (Isso poder\u00e1 causar dificuldades a usu\u00e1rios deficientes)",cell_limit:"Excedeu o n\u00famero m\u00e1ximo de c\u00e9lulas de {$cells}.",row_limit:"Excedeu o n\u00famero m\u00e1ximo de linhas de {$rows}.",col_limit:"Excedeu o n\u00famero m\u00e1ximo de colunas de {$cols}.",colgroup:"Grupo colunas",rowgroup:"Grupo linhas",scope:"Alcance",tfoot:"Rodap\u00e9 da tabela",tbody:"Corpo da tabela",thead:"Topo da tabela",row_all:"Atualizar todas as linhas",row_even:"Atualizar linhas pares",row_odd:"Atualizar linhas \u00edmpares",row_row:"Atualizar esta linha",cell_all:"Atualizar todas as c\u00e9lulas na tabela",cell_row:"Atualizar todas as c\u00e9lulas na linha",cell_cell:"Atualizar esta c\u00e9lula",th:"Campo",td:"Dados",summary:"Sum\u00e1rio",bgimage:"Imagem de fundo",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",mime:"MIME alvo",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto",style:"Estilo",id:"Id",merge_cells_title:"Unir c\u00e9lulas",bgcolor:"Cor de fundo",bordercolor:"Cor dos limites",align_bottom:"Abaixo",align_top:"Topo",valign:"Alinha. vert.",cell_type:"Tipo c\u00e9l.",cell_title:"Propriedades de c\u00e9lulas",row_title:"Propriedades de linhas",align_middle:"Centro",align_right:"Direita",align_left:"Esquerda",align_default:"Padr\u00e3o",align:"Alinha.",border:"Limites",cellpadding:"Enchimento da C\u00e9lula",cellspacing:"Espa\u00e7amento da C\u00e9lula",rows:"Linhas",cols:"Colunas",height:"Altura",width:"Largura",title:"Inserir/modificar tabela",rowtype:"Linha na parte da tabela",advanced_props:"Propriedades avan\u00e7adas",general_props:"Propriedades gerais",advanced_tab:"Avan\u00e7ado",general_tab:"Geral"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ro_dlg.js b/js/tiny_mce/plugins/table/langs/ro_dlg.js new file mode 100755 index 000000000..5e4a11880 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"dedesubt",rules_above:"deasupra",rules_void:"gol",rules:"Reguli",frame_all:"toate",frame_cols:"coloane",frame_rows:"r\u00e2nduri",frame_groups:"grupuri",frame_none:"niciuna",frame:"Frame",caption:"Titlu tabel",missing_scope:"Sigur dori\u0163i s\u0103 l\u0103sa\u0163i scopul necompletat? ",cell_limit:"A\u0163i dep\u0103\u015fit num\u0103rul maxim de celule: {$cells}.",row_limit:"A\u0163i dep\u0103\u015fit num\u0103rul maxim de r\u00e2nduri: {$rows}.",col_limit:"A\u0163i dep\u0103\u015fit num\u0103rul maxim de coloane: {$cols}.",colgroup:"Grupeaz\u0103 celule",rowgroup:"Grupeaz\u0103 r\u00e2nduri",scope:"Scop",tfoot:"Subsol tabel",tbody:"Corp tabel",thead:"Antet tabel",row_all:"Actualizeaz\u0103 toate r\u00e2ndurile",row_even:"Actualizeaz\u0103 r\u00e2ndurile pare",row_odd:"Actualizeaz\u0103 r\u00e2ndurile impare",row_row:"Actualizeaz\u0103 r\u00e2nd curent",cell_all:"Actualizeaz\u0103 toate celulele din tabel",cell_row:"Actualizeaz\u0103 toate celulele din r\u00e2nd",cell_cell:"Actualizeaz\u0103 celula curent\u0103",th:"Antet",td:"Date",summary:"Sumar",bgimage:"Imagine de fundal",rtl:"De la dreapta la st\u00e2nga",ltr:"De la st\u00e2nga la dreapta",mime:"MIME type \u0163int\u0103",langcode:"Cod limb\u0103",langdir:"Direc\u0163ie limb\u0103",style:"Stil",id:"Id",merge_cells_title:"Uni\u0163i celulele",bgcolor:"Culoare fundal",bordercolor:"Culoare bordur\u0103",align_bottom:"Jos",align_top:"Sus",valign:"Aliniere vertical\u0103",cell_type:"Tip celul\u0103",cell_title:"Propriet\u0103\u0163i celul\u0103",row_title:"Propriet\u0103\u0163i r\u00e2nd",align_middle:"Centru",align_right:"Dreapta",align_left:"St\u00e2nga",align_default:"Implicit\u0103",align:"Aliniere",border:"Bordur\u0103",cellpadding:"Spa\u0163iu \u00een celule",cellspacing:"Spa\u0163iu \u00eentre celule",rows:"R\u00e2nduri",cols:"Coloane",height:"\u00cen\u0103l\u0163ime",width:"L\u0103\u0163ime",title:"Inserare/modificare tabel",rowtype:"R\u0103nd \u00een tabel",advanced_props:"Propriet\u0103\u0163i avansate",general_props:"Propriet\u0103\u0163i generale",advanced_tab:"Avansat",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ru_dlg.js b/js/tiny_mce/plugins/table/langs/ru_dlg.js new file mode 100755 index 000000000..0721ef80c --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"\u041a\u0430\u0434\u0440",caption:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","missing_scope":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0437\u0430\u0433\u043b\u043e\u043b\u0432\u043a\u0430? \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c.","cell_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u044f\u0447\u0435\u0435\u043a.","row_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u0441\u0442\u0440\u043e\u043a.","col_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u043a\u043e\u043b\u043e\u043d\u043e\u043a.",colgroup:"\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432",rowgroup:"\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",scope:"\u041e\u0431\u043b\u0430\u0441\u0442\u044c",tfoot:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435",tbody:"\u0422\u0435\u043b\u043e",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u044b\u0435",summary:"\u041e\u0431\u0449\u0435\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"MIME \u0442\u0438\u043f \u0446\u0435\u043b\u0438",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0418\u043c\u044f","merge_cells_title":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",bgcolor:"\u0426\u0432\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u043a\u0438",bordercolor:"\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442. \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","cell_type":"\u0422\u0438\u043f","cell_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438","row_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_default":"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445",cellspacing:"\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438",rows:"\u0421\u0442\u0440\u043e\u043a\u0438",cols:"\u0421\u0442\u043e\u043b\u0431\u0446\u044b",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b",rowtype:"\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","general_props":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","general_tab":"\u041e\u0431\u0449\u0435\u0435"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/sc_dlg.js b/js/tiny_mce/plugins/table/langs/sc_dlg.js new file mode 100755 index 000000000..863e499f0 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/sc_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sc.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",rules_vsides:"\u5782\u76f4\u8fb9",rules_rhs:"\u53f3\u8fb9",rules_lhs:"\u5de6\u8fb9",rules_hsides:"\u6c34\u51c6\u8fb9",rules_below:"\u4e0b",rules_above:"\u4e0a",rules_void:"\u7a7a",rules:"\u7ebf\u6761",frame_all:"\u5168\u90e8",frame_cols:"\u5217",frame_rows:"\u884c",frame_groups:"\u7fa4\u7ec4",frame_none:"\u65e0",frame:"\u8fb9\u6846",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u6807\u9898\u884c\u7f3a\u5931\uff01 ",cell_limit:"\u5df2\u8d85\u8fc7\u53ef\u7528\u6570\uff0c\u6700\u9ad8\u7684\u5355\u683c\u6570\u4e3a{$cells}\u683c\u3002 ",row_limit:"\u5df2\u8d85\u8fc7\u53ef\u7528\u6570\uff0c\u6700\u9ad8\u7684\u884c\u6570\u4e3a{$rows}\u884c\u3002 ",col_limit:"\u5df2\u8d85\u8fc7\u53ef\u7528\u6570\uff0c\u6700\u9ad8\u7684\u5217\u6570\u4e3a{$cols}\u5217\u3002 ",colgroup:"\u5217\u7fa4\u7ec4",rowgroup:"\u884c\u7fa4\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u8eab",thead:"\u8868\u5934",row_all:"\u66f4\u65b0\u8868\u683c\u5185\u5168\u90e8\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u5185\u7684\u5076\u6570\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u5185\u7684\u5947\u6570\u884c",row_row:"\u66f4\u65b0\u6240\u5728\u884c",cell_all:"\u66f4\u65b0\u8868\u683c\u5185\u7684\u5168\u90e8\u5355\u683c",cell_row:"\u66f4\u65b0\u6240\u5728\u884c\u7684\u5168\u90e8\u5355\u683c",cell_cell:"\u66f4\u65b0\u6240\u7684\u5355\u683c",th:"\u8868\u5934",td:"\u6570\u636e",summary:"\u6982\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u7531\u53f3\u5230\u5de6",ltr:"\u7531\u5de6\u5230\u53f3",mime:"\u76ee\u6807MIME\u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"Id",merge_cells_title:"\u5408\u5e76\u5355\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272",align_bottom:"\u4e0b\u65b9",align_top:"\u4e0a\u65b9",valign:"\u6c34\u51c6\u5bf9\u9f50\u65b9\u5f0f",cell_type:"\u5355\u683c\u522b",cell_title:"\u5355\u683c\u5c5e\u6027",row_title:"\u884c\u5c5e\u6027",align_middle:"\u5c45\u4e2d",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_default:"\u9884\u8bbe",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u5355\u683c\u7559\u767d",cellspacing:"\u5355\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/se_dlg.js b/js/tiny_mce/plugins/table/langs/se_dlg.js new file mode 100755 index 000000000..de5c4b7e6 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/se_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('se.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Regler",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Ram",caption:"\u00d6verskrift",missing_scope:"\u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta utan att ange en omfattning, denna underl\u00e4ttar f\u00f6r icke-grafiska webbl\u00e4sare.",cell_limit:"Du kan inte skapa en tabell med fler \u00e4n {$cells} celler.",row_limit:"Du kan inte ange fler \u00e4n {$rows} rader.",col_limit:"Du kan inte ange fler \u00e4n {$cols} kolumner.",colgroup:"Kolumngrupp",rowgroup:"Radgrupp",scope:"Omfattning",tfoot:"tabellfot",tbody:"tabellkropp",thead:"tabellhuvud",row_all:"Uppdatera alla rader i tabellen",row_even:"Uppdatera j\u00e4mna rader i tabellen",row_odd:"Uppdatera udda rader i tabellen",row_row:"Uppdatera nuvarande rad",cell_all:"Uppdatera alla celler i tabellen",cell_row:"Uppdatera alla celler i raden",cell_cell:"Uppdatera nuvarande cell",th:"Huvud",td:"Data",summary:"Sammanfattning",bgimage:"Bakgrundsbild",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",style:"Stil",id:"Id",merge_cells_title:"Sammanfoga celler",bgcolor:"Bakgrundsf\u00e4rg",bordercolor:"Ramf\u00e4rg",align_bottom:"Botten",align_top:"Toppen",valign:"Vertikal justering",cell_type:"Celltyp",cell_title:"Tabellcellsinst\u00e4llningar",row_title:"Tabellradsinst\u00e4llningar",align_middle:"Mitten",align_right:"H\u00f6ger",align_left:"V\u00e4nster",align_default:"Ingen",align:"Justering",border:"Ram",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rader",cols:"Kolumner",height:"H\u00f6jd",width:"Bredd",title:"Infoga/redigera ny tabell",rowtype:"Radtyp",advanced_props:"Avancerade inst\u00e4llningar",general_props:"Generella inst\u00e4llningar",advanced_tab:"Avancerat",general_tab:"Generellt",mime:"Target MIME type"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/si_dlg.js b/js/tiny_mce/plugins/table/langs/si_dlg.js new file mode 100755 index 000000000..abd3e9d66 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/si_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('si.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/sk_dlg.js b/js/tiny_mce/plugins/table/langs/sk_dlg.js new file mode 100755 index 000000000..f232c30d4 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/sk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sk.table_dlg',{rules_border:"or\u00e1movanie okolo",rules_box:"box okolo",rules_vsides:"v\u013eavo a vpravo",rules_rhs:"vpravo",rules_lhs:"v\u013eavo",rules_hsides:"hore a dole",rules_below:"dole",rules_above:"hore",rules_void:"\u017eiadne",rules:"Vykreslenie mrie\u017eky",frame_all:"v\u0161etko",frame_cols:"st\u013apce",frame_rows:"riadky",frame_groups:"oblasti a skupiny st\u013apcov",frame_none:"\u017eiadna",frame:"Or\u00e1movanie tabu\u013eky",caption:"Nadpis tabu\u013eky",missing_scope:"Skuto\u010dne chcete pokra\u010dova\u0165 bez ur\u010denia oblasti hlavi\u010dky tejto tabu\u013eky? Bez nej m\u00f4\u017ee u niektor\u00fdch u\u017e\u00edvate\u013eov doch\u00e1dza\u0165 k ur\u010dit\u00fdm probl\u00e9mom pri intepret\u00e1cii a zobrazovan\u00ed d\u00e1t v tabu\u013eke.",cell_limit:"Prekro\u010dili ste maxim\u00e1lny po\u010det buniek {$cells}.",row_limit:"Prekro\u010dili ste maxim\u00e1lny po\u010det riadkov {$rows}.",col_limit:"Prekro\u010dili ste maxim\u00e1lny po\u010det st\u013apcov {$cols}.",colgroup:"Skupina st\u013apcov",rowgroup:"Skupina riadkov",scope:"Hlavi\u010dka pre",tfoot:"P\u00e4ta tabu\u013eky",tbody:"Telo tabu\u013eky",thead:"Hlavi\u010dka tabu\u013eky",row_all:"Aktualizova\u0165 v\u0161etky riadky tabu\u013eky",row_even:"Aktualizova\u0165 p\u00e1rne riadky tabu\u013eky",row_odd:"Aktualizova\u0165 nep\u00e1rne riadky tabu\u013eky",row_row:"Aktualizova\u0165 aktu\u00e1lny riadok",cell_all:"Aktualizova\u0165 v\u0161etky bunky v tabu\u013eke",cell_row:"Aktualizova\u0165 v\u0161etky bunky v riadku",cell_cell:"Aktualizova\u0165 aktu\u00e1lnu bunku",th:"Hlavi\u010dka",td:"D\u00e1ta",summary:"Obsah tabu\u013eky",bgimage:"Obr\u00e1zok pozadia",rtl:"Sprava do\u013eava",ltr:"Z\u013eava doprava",mime:"MIME typ cie\u013ea",langcode:"K\u00f3d jazyka",langdir:"Smer textu",style:"\u0160t\u00fdl",id:"ID",merge_cells_title:"Zl\u00fa\u010di\u0165 bunky",bgcolor:"Farba pozadia",bordercolor:"Farba or\u00e1movania",align_bottom:"Dolu",align_top:"Hore",valign:"Vertik\u00e1lne zarovnanie",cell_type:"Typ bunky",cell_title:"Vlastnosti bunky",row_title:"Vlastnosti riadkov",align_middle:"Na stred",align_right:"Vpravo",align_left:"V\u013eavo",align_default:"Predvolen\u00e9",align:"Zarovnanie",border:"Or\u00e1movanie",cellpadding:"Odsadenie obsahu",cellspacing:"Rozstup buniek",rows:"Riadky",cols:"St\u013apce",height:"V\u00fd\u0161ka",width:"\u0160\u00edrka",title:"Vlo\u017ei\u0165/Upravi\u0165 tabu\u013eku",rowtype:"Typ riadku",advanced_props:"Roz\u0161\u00edren\u00e9 parametre",general_props:"Obecn\u00e9 parametre",advanced_tab:"Roz\u0161\u00edren\u00e9",general_tab:"Obecn\u00e9"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/sl_dlg.js b/js/tiny_mce/plugins/table/langs/sl_dlg.js new file mode 100755 index 000000000..f5e9464c0 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/sl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sl.table_dlg',{rules_border:"obroba",rules_box:"\u0161katla",rules_vsides:"n-strani",rules_rhs:"d-strani",rules_lhs:"l-strani",rules_hsides:"v-strani",rules_below:"pod",rules_above:"nad",rules_void:"prazno",rules:"Pravila",frame_all:"vse",frame_cols:"stolpci",frame_rows:"vrstice",frame_groups:"skupine",frame_none:"brez",frame:"Okvir",caption:"Opis tabele",missing_scope:"Ste prepri\u010dani, da \u017eelite nadaljevati brez dolo\u010denega dosega? Brez dosega je razumevanje tabele lahko ote\u017eeno ljudem s slab\u0161o zaznavo!",cell_limit:"Presegli ste dovoljeno \u0161tevilo celic: {$cells}.",row_limit:"Presegli ste dovoljeno \u0161tevilo vrstic: {$rows}.",col_limit:"Presegli ste dovoljeno \u0161tevilo stolpcev: {$cols}.",colgroup:"Skup. stolp.",rowgroup:"Skup. vrst.",scope:"Doseg",tfoot:"Noga tabele",tbody:"Telo tabele",thead:"Glava tabele",row_all:"Posodobi vse vrstice",row_even:"Posodobi sode vrstice",row_odd:"Posodobi lihe vrstice",row_row:"Posodobi trenutno vrstico",cell_all:"Posodobi vse celice tabele",cell_row:"Posodobi vse celice vrstice",cell_cell:"Posodobi trenutno celico",th:"Glava",td:"Podatek",summary:"Povzetek",bgimage:"Slika ozadja",rtl:"Od desne proti levi",ltr:"Od leve proti desni",mime:"Ciljni tip MIME",langcode:"Koda jezika",langdir:"Smer pisave",style:"Slog",id:"Oznaka",merge_cells_title:"Spoji celice",bgcolor:"Barva ozadja",bordercolor:"Barva obrobe",align_bottom:"Dno",align_top:"Vrh",valign:"Navpi\u010dna poravnava",cell_type:"Tip celice",cell_title:"Lastnosti celice",row_title:"Lastnosti vrstice",align_middle:"Sredina",align_right:"Desno",align_left:"Levo",align_default:"Privzeto",align:"Poravnava",border:"Obroba",cellpadding:"Podlaganje celic",cellspacing:"Razmik celic",rows:"Vrstic",cols:"Stolpcev",height:"Vi\u0161ina",width:"\u0160irina",title:"Vstavi/posodobi tabelo",rowtype:"Vrstica v tabeli",advanced_props:"Napredne lastnosti",general_props:"Splo\u0161ne lastnosti",advanced_tab:"Napredno",general_tab:"Splo\u0161no"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/sq_dlg.js b/js/tiny_mce/plugins/table/langs/sq_dlg.js new file mode 100755 index 000000000..15aa4531c --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/sq_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sq.table_dlg',{rules_border:"korniz\u00eb",rules_box:"kuti",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"posht\u00eb",rules_above:"sip\u00ebr",rules_void:"zbrazur",rules:"Rregullat",frame_all:"t\u00eb gjitha",frame_cols:"kolona",frame_rows:"rreshta",frame_groups:"grupe",frame_none:"asnj\u00eb",frame:"Korniza",caption:"Krijo hap\u00ebsir\u00eb p\u00ebr titull",missing_scope:"Jeni t\u00eb sigurt q\u00eb nuk doni t\u00eb vendosni objektiv p\u00ebr k\u00ebt\u00eb qeliz\u00eb t\u00eb kok\u00ebs. Pa t\u00eb mund t\u00eb jet\u00eb e v\u00ebshtir\u00eb p\u00ebr disa p\u00ebrdorues me aft\u00ebsi t\u00eb kufizuara t\u00eb lexojn\u00eb p\u00ebrmbajtjen e tabel\u00ebs.",cell_limit:"Keni kaluar numrin maksimal t\u00eb qelizave {$cells}.",row_limit:"Keni kaluar numrin maksimal t\u00eb rreshtave: {$rows}.",col_limit:"Keni kaluar numrin maksimal t\u00eb kolonave: {$cols}.",colgroup:"Grup Kolonash",rowgroup:"Grup Rreshtash",scope:"Objektivi",tfoot:"K\u00ebmb\u00ebt e Tabel\u00ebs",tbody:"Trupin e Tabel\u00ebs",thead:"Kok\u00ebn e Tabel\u00ebs",row_all:"Rifresko t\u00eb gjitha rreshtat n\u00eb tabel\u00eb",row_even:"Rifresko rreshtat \u00e7ift",row_odd:"Rifresko rreshtat tek",row_row:"Rifresko rreshtin aktual",cell_all:"Rifresko t\u00eb gjitha qelizat",cell_row:"Rifresko t\u00eb gjitha qelizat n\u00eb rresht",cell_cell:"Rifresko qeliz\u00ebn aktuale",th:"Kok\u00eb",td:"T\u00eb dh\u00ebna",summary:"P\u00ebrmbledhja",bgimage:"Foto e fush\u00ebs",rtl:"Djathtas-Majtas",ltr:"Majtas-Djathtas",mime:"Tipi MIME i sh\u00ebnjestr\u00ebs",langcode:"Kodi i gjuh\u00ebs",langdir:"Drejtimi i gjuh\u00ebs",style:"Stili",id:"Id",merge_cells_title:"Bashko qelizat",bgcolor:"Ngjyra e fush\u00ebs",bordercolor:"Ngjyra e korniz\u00ebs",align_bottom:"Fund",align_top:"Krye",valign:"Drejtimi vertikal",cell_type:"Tipi i qeliz\u00ebs",cell_title:"Tiparet e qeliz\u00ebs",row_title:"Tiparet e rreshtit",align_middle:"Qend\u00ebr",align_right:"Djathtas",align_left:"Majtas",align_default:"Paracaktuar",align:"Drejtimi",border:"Korniza",cellpadding:"Hap\u00ebsira e br\u00ebndshme",cellspacing:"Hap\u00ebsira midis qelizave",rows:"Rreshta",cols:"Kolona",height:"Gjat\u00ebsia",width:"Gjer\u00ebsia",title:"Fut/Edito tabel\u00eb",rowtype:"Rresht n\u00eb",advanced_props:"Tipare t\u00eb avancuara",general_props:"Tipare t\u00eb p\u00ebrgjithshme",advanced_tab:"T\u00eb avancuara",general_tab:"T\u00eb p\u00ebrgjithshme"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/sr_dlg.js b/js/tiny_mce/plugins/table/langs/sr_dlg.js new file mode 100755 index 000000000..49e051f80 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/sr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sr.table_dlg',{rules_border:"sve ivice",rules_box:"sve strane",rules_vsides:"levo i desno",rules_rhs:"samo desno",rules_lhs:"samo levo",rules_hsides:"gornja i donja",rules_below:"ispod",rules_above:"iznad",rules_void:"prazno",rules:"Linije",frame_all:"sve",frame_cols:"kolone",frame_rows:"redovi",frame_groups:"grupe",frame_none:"bez rama",frame:"ram",caption:"Opis tabele",missing_scope:"Da li ste sigurni da \u017eelite da nastavite a da niste definisali obim \u0107elije zaglavlja tabele. Kada nije definisan, korisnicima sa smetnjama u razvoju mo\u017eda ne\u0107e biti razumljiv njihov sadr\u017eaj.",cell_limit:"Prema\u0161ili ste maksimalni broj \u0107elija ({$cells}).",row_limit:"Prema\u0161ili ste maksimalni broj redova ({$rows}).",col_limit:"Prema\u0161ili ste maksimalni broj kolona ({$cols}).",colgroup:"Grupa kolona",rowgroup:"Grupa redova",scope:"Obim",tfoot:"Podno\u017eje tabele",tbody:"Sadr\u017eaj tabele",thead:"Zaglavlje tabele",row_all:"Primeni na sve redove u tabeli",row_even:"Primeni na parne redove u tabeli",row_odd:"Primeni na neparne redove u tabeli",row_row:"Primeni na izabrani red",cell_all:"Primeni na sve \u0107elije u tabeli",cell_row:"Primeni na sve \u0107elije u redu",cell_cell:"Primeni na izabranu \u0107eliju",th:"Zaglavlje",td:"Podaci",summary:"Prikaz",bgimage:"Slika pozadine",rtl:"S desna na levo",ltr:"S leva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smer jezika",style:"Stil",id:"Id",merge_cells_title:"Spoji \u0107elije",bgcolor:"Boja pozadine",bordercolor:"Boja ivice",align_bottom:"Dno",align_top:"Vrh",valign:"Vertikalno poravnavanje",cell_type:"Tip \u0107elije",cell_title:"Svojstva \u0107elije",row_title:"Svojstva reda",align_middle:"Sredina",align_right:"Desno",align_left:"Levo",align_default:"Zadato",align:"Poravnavanje",border:"Ivica",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redova",cols:"Kolona",height:"Visina",width:"\u0160irina",title:"Ubaci/uredi tabelu",rowtype:"Red u tabeli",advanced_props:"Napredna svojstva",general_props:"Osnovna svojstva",advanced_tab:"Napredno",general_tab:"Osnovno"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/sv_dlg.js b/js/tiny_mce/plugins/table/langs/sv_dlg.js new file mode 100755 index 000000000..687daa4d3 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/sv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('sv.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Regler","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Ram",caption:"\u00d6verskrift","missing_scope":"\u00d6\u0084r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta utan att ange en omfattning, denna underl\u00e4ttar f\u00f6r icke-grafiska webbl\u00e4sare.","cell_limit":"Du kan inte skapa en tabell med fler \u00e4n {$cells} celler.","row_limit":"Du kan inte ange fler \u00e4n {$rows} rader.","col_limit":"Du kan inte ange fler \u00e4n {$cols} kolumner.",colgroup:"Kolumngrupp",rowgroup:"Radgrupp",scope:"Omfattning",tfoot:"tabellfot",tbody:"tabellkropp",thead:"tabellhuvud","row_all":"Uppdatera alla rader i tabellen","row_even":"Uppdatera j\u00e4mna rader i tabellen","row_odd":"Uppdatera udda rader i tabellen","row_row":"Uppdatera nuvarande rad","cell_all":"Uppdatera alla celler i tabellen","cell_row":"Uppdatera alla celler i raden","cell_cell":"Uppdatera nuvarande cell",th:"Huvud",td:"Data",summary:"Sammanfattning",bgimage:"Bakgrundsbild",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",mime:"Target MIME type",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",style:"Stil",id:"Id","merge_cells_title":"Sammanfoga celler",bgcolor:"Bakgrundsf\u00e4rg",bordercolor:"Ramf\u00e4rg","align_bottom":"Botten","align_top":"Toppen",valign:"Vertikal justering","cell_type":"Celltyp","cell_title":"Tabellcellsinst\u00e4llningar","row_title":"Tabellradsinst\u00e4llningar","align_middle":"Mitten","align_right":"H\u00f6ger","align_left":"V\u00e4nster","align_default":"Ingen",align:"Justering",border:"Ram",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rader",cols:"Kolumner",height:"H\u00f6jd",width:"Bredd",title:"Infoga/redigera ny tabell",rowtype:"Radtyp","advanced_props":"Avancerade inst\u00e4llningar","general_props":"Generella inst\u00e4llningar","advanced_tab":"Avancerat","general_tab":"Generellt"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ta_dlg.js b/js/tiny_mce/plugins/table/langs/ta_dlg.js new file mode 100755 index 000000000..3d60f8959 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ta_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ta.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/te_dlg.js b/js/tiny_mce/plugins/table/langs/te_dlg.js new file mode 100755 index 000000000..6ce7b3c14 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/te_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('te.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/th_dlg.js b/js/tiny_mce/plugins/table/langs/th_dlg.js new file mode 100755 index 000000000..cd8f8ab4d --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/th_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('th.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07 image",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",mime:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 MIME type",langcode:"\u0e42\u0e04\u0e4a\u0e14\u0e20\u0e32\u0e29\u0e32",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",bordercolor:"\u0e2a\u0e35\u0e01\u0e23\u0e2d\u0e1a",align_bottom:"\u0e25\u0e48\u0e32\u0e07",align_top:"\u0e1a\u0e19",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e43\u0e19\u0e32\u0e23\u0e32\u0e07",row_title:"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e41\u0e16\u0e27\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07",align_middle:"\u0e01\u0e25\u0e32\u0e07",align_right:"\u0e02\u0e27\u0e32",align_left:"\u0e0b\u0e49\u0e32\u0e22",align_default:"\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",align:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07",border:"\u0e01\u0e23\u0e2d\u0e1a",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u0e41\u0e16\u0e27",cols:"\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e1e\u0e4c",height:"\u0e2a\u0e39\u0e07",width:"\u0e01\u0e27\u0e49\u0e32\u0e07",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e15\u0e32\u0e23\u0e32\u0e07",rowtype:"Row in table part",advanced_props:"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",general_props:"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",advanced_tab:"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",general_tab:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/tn_dlg.js b/js/tiny_mce/plugins/table/langs/tn_dlg.js new file mode 100755 index 000000000..d342f79fd --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/tn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tn.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/tr_dlg.js b/js/tiny_mce/plugins/table/langs/tr_dlg.js new file mode 100755 index 000000000..3ce108fd6 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/tr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tr.table_dlg',{rules_border:"kenarl\u0131k",rules_box:"kutu",rules_vsides:"dikey kenarlar",rules_rhs:"sa\u011f yatay kenarlar",rules_lhs:"sol yatay kenarlar",rules_hsides:"yatay kenarlar",rules_below:"alt\u0131nda",rules_above:"\u00fcst\u00fcnde",rules_void:"yok",rules:"\u00c7izgiler",frame_all:"t\u00fcm\u00fc",frame_cols:"s\u00fctunlar",frame_rows:"sat\u0131rlar",frame_groups:"gruplar",frame_none:"hi\u00e7biri",frame:"\u00c7er\u00e7eve",caption:"Tablo ba\u015fl\u0131\u011f\u0131",missing_scope:"Tablo ba\u015fl\u0131k h\u00fccresi i\u00e7in bir kapsam belirlemeden devam etmek istedi\u011finize emin misiniz? Bu de\u011fer olmadan, engelli kullan\u0131c\u0131lar tabloda g\u00f6sterilen verileri ve i\u00e7eri\u011fi anlamas\u0131 zordur.",cell_limit:"Maksimum h\u00fccre say\u0131s\u0131 ($cells) a\u015f\u0131ld\u0131.",row_limit:"Maksimum sat\u0131r say\u0131s\u0131 ($rows) a\u015f\u0131ld\u0131.",col_limit:"Maksimum s\u00fctun say\u0131s\u0131 ($cols) a\u015f\u0131ld\u0131.",colgroup:"S\u00fctun Grubu",rowgroup:"Sat\u0131r Grubu",scope:"Kapsam",tfoot:"Tablo Alt\u0131",tbody:"Tablo G\u00f6vdesi",thead:"Tablo Ba\u015fl\u0131\u011f\u0131",row_all:"Tablodaki t\u00fcm sat\u0131rlar\u0131 g\u00fcncelle",row_even:"Tablodaki \u00e7ift nolu sat\u0131rlar\u0131 g\u00fcncelle",row_odd:"Tablodaki tek nolu sat\u0131rlar\u0131 g\u00fcncelle",row_row:"Se\u00e7ili sat\u0131r\u0131 g\u00fcncelle",cell_all:"Tablodaki t\u00fcm h\u00fccreleri g\u00fcncelle",cell_row:"Sat\u0131rdaki t\u00fcm h\u00fccreleri g\u00fcncelle",cell_cell:"Se\u00e7ili h\u00fccreleri g\u00fcncelle",th:"Ba\u015fl\u0131k",td:"Veri",summary:"\u00d6zet",bgimage:"Arkaplan resmi",rtl:"Soldan sa\u011fa",ltr:"Sa\u011fdan sola",mime:"Hedef MIME tipi",langcode:"Dil kodu",langdir:"Dil y\u00f6n\u00fc",style:"Stil",id:"Id",merge_cells_title:"Tablo h\u00fccrelerini birle\u015ftir",bgcolor:"Arkaplan rengi",bordercolor:"Kenarl\u0131k rengi",align_bottom:"Alt",align_top:"\u00dcst",valign:"Dikey hizalama",cell_type:"H\u00fccre tipi",cell_title:"Tablo h\u00fccre \u00f6zellikleri",row_title:"Tablo sat\u0131r \u00f6zellikleri",align_middle:"Orta",align_right:"Sa\u011f",align_left:"Sol",align_default:"Varsay\u0131lan",align:"Hizalama",border:"Kenarl\u0131k",cellpadding:"H\u00fccre d\u0131\u015f\u0131 bo\u015flu\u011fu",cellspacing:"H\u00fccre i\u00e7i bo\u015flu\u011fu",rows:"Sat\u0131rlar",cols:"S\u00fctunlar",height:"Y\u00fckseklik",width:"Geni\u015flik",title:"Tablo Ekle/D\u00fczenle",rowtype:"Tablo b\u00f6l\u00fcm\u00fcndeki sat\u0131r",advanced_props:"Geli\u015fmi\u015f \u00f6zellikler",general_props:"Genel \u00f6zellikler",advanced_tab:"Geli\u015fmi\u015f",general_tab:"Genel"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/tt_dlg.js b/js/tiny_mce/plugins/table/langs/tt_dlg.js new file mode 100755 index 000000000..638e8a920 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/tt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tt.table_dlg',{rules_border:"\u908a\u6846",rules_box:"\u76d2",rules_vsides:"\u5782\u76f4\u5927\u5c0f",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"\u6c34\u5e73\u5927\u5c0f",rules_below:"\u4e4b\u4e0b",rules_above:"\u4e4b\u4e0a",rules_void:"\u7a7a",rules:"\u5c3a\u898f",frame_all:"\u5168\u90e8",frame_cols:"\u5217",frame_rows:"\u884c",frame_groups:"\u7d44",frame_none:"\u7121",frame:"\u908a\u6846",caption:"\u8868\u683c\u6a19\u984c",missing_scope:"\u60a8\u78ba\u5b9a\u4e0d\u6307\u5b9a\u8868\u982d\u5132\u5b58\u683c\u7684\u7bc4\u570d\u55ce\uff1f\u5982\u679c\u4e0d\u6307\u5b9a\uff0c\u90e8\u5206\u4f7f\u7528\u8005\u5c07\u5f88\u96e3\u67e5\u770b\u8868\u683c\u5167\u5bb9",cell_limit:"\u5df2\u8d85\u904e\u9650\u5236\uff0c\u6700\u591a\u7232{$cells} \u5132\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u904e\u9650\u5236\uff0c\u6700\u591a\u7232 {$rows} \u884c\u3002",col_limit:"\u5df2\u8d85\u904e\u9650\u5236\uff0c\u6700\u591a\u7232 {$cols} \u5217\u3002",colgroup:"\u5217\u7d44",rowgroup:"\u884c\u7d44",scope:"\u7bc4\u570d",tfoot:"\u8868\u8173",tbody:"\u8868\u9ad4",thead:"\u8868\u982d",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u5168\u90e8\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6578\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6578\u884c",row_row:"\u66f4\u65b0\u6240\u5728\u884c",cell_all:"\u66f4\u65b0\u5168\u90e8\u5132\u5b58\u683c",cell_row:"\u66f4\u65b0\u7576\u524d\u884c\u7684\u5132\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u7684\u5132\u5b58\u683c",th:"\u8868\u982d",td:"\u8868\u683c",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u5716\u7247",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",mime:"\u76ee\u6a19 MIME \u985e\u578b",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",style:"\u6a23\u5f0f",id:"Id",merge_cells_title:"\u5408\u4f75\u5132\u5b58\u683c",bgcolor:"\u80cc\u666f\u9854\u8272",bordercolor:"\u908a\u6846\u9854\u8272",align_bottom:"\u5e95\u90e8",align_top:"\u9802\u90e8",valign:"\u5782\u76f4\u5c0d\u9f4a\u65b9\u5f0f",cell_type:"\u5132\u5b58\u683c \u985e\u5225",cell_title:"\u5132\u5b58\u683c \u5c6c\u6027",row_title:"\u884c \u5c6c\u6027",align_middle:"\u7f6e\u4e2d",align_right:"\u5c45\u53f3",align_left:"\u5c45\u5de6",align_default:"\u9810\u8a2d",align:"\u5c0d\u9f4a\u65b9\u5f0f",border:"\u908a\u6846",cellpadding:"\u5132\u5b58\u683c\u5167\u8ddd",cellspacing:"\u5132\u5b58\u683c\u9593\u8ddd",rows:"\u884c\u6578",cols:"\u5217\u6578",height:"\u9ad8\u5ea6",width:"\u5bec\u5ea6",title:"\u63d2\u5165/\u7de8\u8f2f \u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9032\u968e\u5c6c\u6027",general_props:"\u57fa\u672c \u5c6c\u6027",advanced_tab:"\u9032\u968e",general_tab:"\u57fa\u672c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/tw_dlg.js b/js/tiny_mce/plugins/table/langs/tw_dlg.js new file mode 100755 index 000000000..6cd369e74 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/tw_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('tw.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",rules_vsides:"\u5782\u76f4",rules_rhs:"\u53f3\u908a",rules_lhs:"\u5de6\u908a",rules_hsides:"\u6c34\u5e73",rules_below:"\u4e0b",rules_above:"\u4e0a",rules_void:"\u7a7a",rules:"\u898f\u5247",frame_all:"\u5168\u90e8",frame_cols:"\u6b04",frame_rows:"\u884c",frame_groups:"\u7fa4\u7d44",frame_none:"\u7121",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6a19\u984c",missing_scope:"\u60a8\u78ba\u5b9a\u4e0d\u6307\u5b9a\u8868\u683c\u982d\u90e8\u5132\u5b58\u683c\u4e00\u500b\u7bc4\u570d\u55ce\uff1f\u6c92\u6709\u5b83\uff0c\u6216\u8a31\u5c0d\u90a3\u4e9b\u6709\u969c\u7919\u7684\u4f7f\u7528\u8005\u7406\u89e3\u8868\u683c\u5c55\u793a\u7684\u5167\u5bb9\u6216\u6578\u64da\u66f4\u52a0\u7684\u56f0\u96e3\u3002",cell_limit:"\u5df2\u8d85\u904e\u6700\u5927\u5132\u5b58\u683c\u9650\u5236{$cells} \u5132\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u904e\u6700\u5927\u884c\u6578\u9650\u5236 {$rows} \u5217\u3002",col_limit:"\u5df2\u8d85\u904e\u6700\u5927\u6b04\u6578\u9650\u5236 {$cols} \u6b04\u3002",colgroup:"\u6b04\u7fa4\u7d44",rowgroup:"\u884c\u7fa4\u7d44",scope:"\u7bc4\u570d",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u9ad4",thead:"\u8868\u982d",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6578\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6578\u884c",row_row:"\u66f4\u65b0\u76ee\u524d\u884c",cell_all:"\u66f4\u65b0\u6240\u6709\u5132\u5b58\u683c",cell_row:"\u66f4\u65b0\u76ee\u524d\u884c\u7684\u5132\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u5132\u5b58\u683c",th:"\u8868\u982d",td:"\u8cc7\u6599",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u5716\u7247",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",mime:"MIME \u985e\u578b",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",style:"\u6a23\u5f0f",id:"ID",merge_cells_title:"\u5408\u4f75\u5132\u5b58\u683c",bgcolor:"\u80cc\u666f\u984f\u8272",bordercolor:"\u908a\u6846\u984f\u8272",align_bottom:"\u9760\u4e0b",align_top:"\u9760\u4e0a",valign:"\u5782\u76f4\u5c0d\u9f4a",cell_type:"\u5132\u5b58\u683c\u985e\u578b",cell_title:"\u5132\u5b58\u683c\u6a19\u984c",row_title:"\u884c\u5c6c\u6027",align_middle:"\u7f6e\u4e2d\u5c0d\u9f4a",align_right:"\u9760\u53f3\u5c0d\u9f4a",align_left:"\u9760\u5de6\u5c0d\u9f4a",align_default:"\u9810\u8a2d",align:"\u5c0d\u9f4a\u65b9\u5f0f",border:"\u908a\u6846",cellpadding:"\u5132\u5b58\u683c\u908a\u8ddd",cellspacing:"\u5132\u5b58\u683c\u9593\u8ddd",rows:"\u884c\u6578",cols:"\u6b04\u6578",height:"\u9ad8\u5ea6",width:"\u5bec\u5ea6",title:"\u63d2\u5165/\u7de8\u8f2f\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9032\u968e\u5c6c\u6027",general_props:"\u4e00\u822c\u5c6c\u6027",advanced_tab:"\u9032\u968e",general_tab:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/uk_dlg.js b/js/tiny_mce/plugins/table/langs/uk_dlg.js new file mode 100755 index 000000000..e3ae70236 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/uk_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('uk.table_dlg',{rules_border:"\u0440\u0430\u043c\u043a\u0430",rules_box:"\u0431\u043e\u043a\u0441",rules_vsides:"v-\u0441\u0442\u043e\u0440\u043e\u043d\u0438",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"h-\u0441\u0442\u043e\u0440\u043e\u043d\u0438",rules_below:"\u0437\u043d\u0438\u0437\u0443",rules_above:"\u0437\u0432\u0435\u0440\u0445\u0443",rules_void:"\u043f\u0443\u0441\u0442\u043e",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430",frame_all:"\u0432\u0441\u0456",frame_cols:"\u0441\u0442\u043e\u0432\u043f\u0446\u0456",frame_rows:"\u0440\u044f\u0434\u043a\u0438",frame_groups:"\u0433\u0440\u0443\u043f\u0438",frame_none:"\u043d\u0456\u044f\u043a\u0438\u0439",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0456",missing_scope:"\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u043d\u0435 \u0432\u043a\u0430\u0437\u0430\u0432\u0448\u0438 \u043c\u0435\u0436\u0456 \u0434\u043b\u044f \u0446\u0456\u0454\u0457 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443. \u0411\u0435\u0437 \u0446\u044c\u043e\u0433\u043e \u0434\u0435\u044f\u043a\u0438\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430\u043c \u0431\u0443\u0434\u0435 \u0432\u0430\u0436\u043a\u043e \u0437\u0440\u043e\u0437\u0443\u043c\u0456\u0442\u0438 \u0437\u043c\u0456\u0441\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0456.",cell_limit:"\u0412\u0438 \u043f\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443 \u043a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043a\u043e\u043c\u0456\u0440\u043e\u043a: {$cells}.",row_limit:"\u0412\u0438 \u043f\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443 \u043a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0440\u044f\u0434\u043a\u0456\u0432: {$rows}.",col_limit:"\u0412\u0438 \u043f\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443 \u043a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432: {$cols}.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u043a\u043e\u043c\u0456\u0440\u043e\u043a",scope:"\u0420\u043e\u0437\u043c\u0430\u0445",tfoot:"\u041d\u0438\u0436\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430",tbody:"\u0422\u0456\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0456",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0456",row_all:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u0440\u044f\u0434\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",row_even:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u0430\u0440\u043d\u0456 \u0440\u044f\u0434\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",row_odd:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043d\u0435\u043f\u0430\u0440\u043d\u0456 \u0440\u044f\u0434\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446",row_row:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a",cell_all:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",cell_row:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0432 \u0440\u044f\u0434\u043a\u0443",cell_cell:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0443 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u0456",summary:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"MIME-\u0442\u0438\u043f \u0446\u0456\u043b\u0456",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c \u043c\u043e\u0432\u0438",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440",merge_cells_title:"\u041e\u0431\'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",bgcolor:"\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",bordercolor:"\u041a\u043e\u043b\u0456\u0440 \u0433\u0440\u0430\u043d\u0438\u0446\u0456",align_bottom:"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_top:"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",cell_type:"\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438",cell_title:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",row_title:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",align_middle:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",align_right:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_left:"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align_default:"\u0417\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",border:"\u0420\u0430\u043c\u043a\u0430",cellpadding:"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438 \u0443 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u0445",cellspacing:"\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",rows:"\u0420\u044f\u0434\u043a\u0438",cols:"\u0421\u0442\u043e\u0432\u043f\u0446\u0456",height:"\u0412\u0438\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0414\u043e\u0434\u0430\u0442\u0438/\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",rowtype:"\u0420\u044f\u0434\u043e\u043a \u0432 \u0447\u0430\u0441\u0442\u0438\u043d\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",advanced_props:"\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",general_props:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",advanced_tab:"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",general_tab:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/ur_dlg.js b/js/tiny_mce/plugins/table/langs/ur_dlg.js new file mode 100755 index 000000000..7232648b1 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/ur_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ur.table_dlg',{rules_border:"border",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"below",rules_above:"above",rules_void:"void",rules:"Rules",frame_all:"all",frame_cols:"cols",frame_rows:"rows",frame_groups:"groups",frame_none:"none",frame:"Frame",caption:"Table caption",missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",cell_limit:"You\'ve exceeded the maximum number of cells of {$cells}.",row_limit:"You\'ve exceeded the maximum number of rows of {$rows}.",col_limit:"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head",row_all:"Update all rows in table",row_even:"Update even rows in table",row_odd:"Update odd rows in table",row_row:"Update current row",cell_all:"Update all cells in table",cell_row:"Update all cells in row",cell_cell:"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id",merge_cells_title:"Merge table cells",bgcolor:"Background color",bordercolor:"Border color",align_bottom:"Bottom",align_top:"Top",valign:"Vertical alignment",cell_type:"Cell type",cell_title:"Table cell properties",row_title:"Table row properties",align_middle:"Center",align_right:"Right",align_left:"Left",align_default:"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part",advanced_props:"Advanced properties",general_props:"General properties",advanced_tab:"Advanced",general_tab:"General"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/vi_dlg.js b/js/tiny_mce/plugins/table/langs/vi_dlg.js new file mode 100755 index 000000000..a182b002a --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/vi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('vi.table_dlg',{rules_border:"vi\u1ec1n",rules_box:"box",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",rules_below:"d\u01b0\u1edbi",rules_above:"tr\u00ean",rules_void:"tr\u1ed1ng kh\u00f4ng",rules:"Th\u01b0\u1edbc",frame_all:"t\u1ea5t",frame_cols:"c\u1ed9t",frame_rows:"h\u00e0ng",frame_groups:"nh\u00f3m",frame_none:"kh\u00f4ng",frame:"Khung",caption:"Ch\u00fa t\u00edch b\u1ea3ng",missing_scope:"Ti\u1ebfp t\u1ee5c v\u1edbi \u0111\u01b0\u1eddng d\u1eabn kh\u00f4ng t\u1ed3n t\u1ea1i ?",cell_limit:"B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t qu\u00e1 s\u1ed1 t\u1ed1i \u0111a \u00f4 c\u1ee7a {$cells}.",row_limit:"B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t qu\u00e1 s\u1ed1 t\u1ed1i \u0111a h\u00e0ng c\u1ee7a {$rows}.",col_limit:"B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t qu\u00e1 s\u1ed1 t\u1ed1i \u0111a c\u1ed9t c\u1ee7a {$cols}.",colgroup:"Nh\u00f3m c\u1ed9t",rowgroup:"Nh\u00f3m h\u00e0ng",scope:"Ph\u1ea1m vi",tfoot:"Ch\u00e2n b\u1ea3ng",tbody:"Th\u00e2n b\u1ea3n",thead:"\u0110\u1ea7u b\u1ea3ng",row_all:"C\u1eadp nh\u1eadt t\u1ea5t h\u00e0ng trong b\u1ea3ng",row_even:"C\u1eadp nh\u1eadt h\u00e0ng ch\u1eb5n trong b\u1ea3ng",row_odd:"C\u1eadp nh\u1eadt h\u00e0ng l\u1ebb trong b\u1ea3ng",row_row:"C\u1eadp nh\u1eadt h\u00e0ng hi\u1ec7n th\u1eddi",cell_all:"C\u1eadp nh\u1ea5t t\u1ea5t c\u00e1c \u00f4 trong b\u1ea3ng",cell_row:"C\u1eadp nh\u1ea5t t\u1ea5t c\u00e1c \u00f4 trong h\u00e0ng",cell_cell:"C\u1eadp nh\u1eadt \u00f4 hi\u1ec7n th\u1eddi",th:"\u0110\u1ea7u \u0111\u1ec1",td:"D\u1eef li\u1ec7u",summary:"T\u00f3m l\u01b0\u1ee3c",bgimage:"\u1ea2nh n\u1ec1n",rtl:"Ph\u1ea3i qua tr\u00e1i",ltr:"Tr\u00e1i qua ph\u1ea3i",mime:"Ki\u1ec3u MIME \u0111\u00edch",langcode:"M\u00e3 ng\u00f4n ng\u1eef",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef",style:"Ki\u1ec3u d\u00e1ng",id:"Id",merge_cells_title:"K\u1ebft h\u1ee3p c\u00e1c \u00f4 c\u1ee7a b\u1ea3ng",bgcolor:"M\u00e0u n\u1ec1n",bordercolor:"M\u00e0u vi\u1ec1n",align_bottom:"D\u01b0\u1edbi",align_top:"Tr\u00ean",valign:"Canh l\u1ec1 d\u1ecdc",cell_type:"Lo\u1ea1i \u00f4",cell_title:"Thu\u1ed9c t\u00ednh \u00f4",row_title:"Thu\u1ed9c t\u00ednh h\u00e0ng",align_middle:"Gi\u1eefa",align_right:"Ph\u1ea3i",align_left:"Tr\u00e1i",align_default:"M\u1eb7c \u0111\u1ecbnh",align:"Canh l\u1ec1",border:"Vi\u1ec1n",cellpadding:"Kho\u1ea3ng l\u00f3t \u00f4",cellspacing:"Kho\u1ea3ng c\u00e1ch \u00f4",rows:"H\u00e0ng",cols:"C\u1ed9t",height:"Chi\u1ec1u cao",width:"Chi\u1ec1u r\u1ed9ng",title:"Ch\u00e8n/S\u1eeda b\u1ea3ng",rowtype:"H\u00e0ng trong t\u1eebng ph\u1ea7n b\u1ea3ng",advanced_props:"Thu\u1ed9c t\u00ednh n\u00e2ng cao",general_props:"Thu\u1ed9c t\u00ednh chung",advanced_tab:"N\u00e2ng cao",general_tab:"Chung"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js b/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js new file mode 100755 index 000000000..bfcad0871 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh-cn.table_dlg',{"rules_border":"\u8fb9\u6846","rules_box":"\u6846","rules_vsides":"\u5782\u76f4","rules_rhs":"\u53f3\u8fb9","rules_lhs":"\u5de6\u8fb9","rules_hsides":"\u6c34\u5e73","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u7a7a",rules:"\u89c4\u5219","frame_all":"\u5168\u90e8","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u5206\u7ec4","frame_none":"\u65e0",frame:"\u6846\u67b6",caption:"\u683c\u6807\u9898","missing_scope":"\u60a8\u6ca1\u6709\u6307\u5b9a\u8868\u683c\u7684\u6807\u9898\u5355\u5143\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\uff0c\u53ef\u80fd\u4f1a\u4f7f\u7528\u6237\u96be\u4ee5\u7406\u89e3\u60a8\u7684\u8868\u683c\u7684\u5185\u5bb9\u3002\u60a8\u8981\u7ee7\u7eed\u5417\uff1f","cell_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u5355\u5143\u683c\u6570{$cells}\u3002","row_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u884c\u6570{$rows}\u3002","col_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u5217\u6570{$cols}\u3002",colgroup:"\u5217\u5206\u7ec4",rowgroup:"\u884c\u5206\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934","row_all":"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c","row_even":"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c","row_odd":"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c","row_row":"\u66f4\u65b0\u5f53\u524d\u884c","cell_all":"\u66f4\u65b0\u6240\u6709\u5355\u5143\u683c","cell_row":"\u66f4\u65b0\u5f53\u524d\u884c\u7684\u5355\u5143\u683c","cell_cell":"\u66f4\u65b0\u5f53\u524d\u5355\u5143\u683c",th:"\u8868\u5934",td:"\u5185\u5bb9",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"\u76ee\u6807MIME\u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID","merge_cells_title":"\u5408\u5e76\u5355\u5143\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272","align_bottom":"\u9760\u4e0b","align_top":"\u9760\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50","cell_type":"\u5355\u5143\u683c\u7c7b\u578b","cell_title":"\u5355\u5143\u683c\u5c5e\u6027","row_title":"\u884c\u5c5e\u6027","align_middle":"\u5c45\u4e2d","align_right":"\u53f3\u5bf9\u9f50","align_left":"\u5de6\u5bf9\u9f50","align_default":"\u9ed8\u8ba4",align:"\u5bf9\u9f50",border:"\u8fb9\u6846",cellpadding:"\u5355\u5143\u683c\u8fb9\u8ddd",cellspacing:"\u5355\u5143\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91 \u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","general_tab":"\u666e\u901a"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/zh_dlg.js b/js/tiny_mce/plugins/table/langs/zh_dlg.js new file mode 100755 index 000000000..496c27eff --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/zh_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zh.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",rules_vsides:"\u5782\u76f4",rules_rhs:"\u53f3\u8fb9",rules_lhs:"\u5de6\u8fb9",rules_hsides:"\u6c34\u5e73",rules_below:"\u4e0b",rules_above:"\u4e0a",rules_void:"\u7a7a",rules:"\u89c4\u5219",frame_all:"\u5168\u90e8",frame_cols:"\u680f",frame_rows:"\u884c",frame_groups:"\u7fa4\u7ec4",frame_none:"\u65e0",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u4f60\u786e\u5b9a\u4e0d\u6307\u5b9a\u8868\u683c\u5934\u90e8\u50a8\u5b58\u683c\u4e00\u4e2a\u8303\u56f4\u5417\uff1f\u6ca1\u6709\u5b83\uff0c\u6216\u8bb8\u5bf9\u90a3\u4e9b\u6709\u969c\u788d\u7684\u7528\u6237\u7406\u89e3\u8868\u683c\u5c55\u793a\u7684\u5185\u5bb9\u6216\u6570\u636e\u66f4\u52a0\u7684\u56f0\u96be\u3002",cell_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u50a8\u5b58\u683c\u9650\u5236{$cells} \u50a8\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u884c\u6570\u9650\u5236 {$rows} \u5217\u3002",col_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u680f\u6570\u9650\u5236 {$cols} \u680f\u3002",colgroup:"\u680f\u7fa4\u7ec4",rowgroup:"\u884c\u7fa4\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c",row_row:"\u66f4\u65b0\u76ee\u524d\u884c",cell_all:"\u66f4\u65b0\u6240\u6709\u50a8\u5b58\u683c",cell_row:"\u66f4\u65b0\u76ee\u524d\u884c\u7684\u50a8\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u50a8\u5b58\u683c",th:"\u8868\u5934",td:"\u5185\u5bb9",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"MIME \u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID",merge_cells_title:"\u5408\u4f75\u50a8\u5b58\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272",align_bottom:"\u9760\u4e0b",align_top:"\u9760\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50",cell_type:"\u50a8\u5b58\u683c\u7c7b\u578b",cell_title:"\u50a8\u5b58\u683c\u6807\u9898",row_title:"\u884c\u5c5e\u6027",align_middle:"\u7f6e\u4e2d\u5bf9\u9f50",align_right:"\u9760\u53f3\u5bf9\u9f50",align_left:"\u9760\u5de6\u5bf9\u9f50",align_default:"\u9ed8\u8ba4",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u50a8\u5b58\u683c\u8fb9\u8ddd",cellspacing:"\u50a8\u5b58\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u680f\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/langs/zu_dlg.js b/js/tiny_mce/plugins/table/langs/zu_dlg.js new file mode 100755 index 000000000..4ac0335d3 --- /dev/null +++ b/js/tiny_mce/plugins/table/langs/zu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('zu.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",rules_vsides:"\u5782\u76f4\u8fb9",rules_rhs:"\u53f3\u8fb9",rules_lhs:"\u5de6\u8fb9",rules_hsides:"\u6c34\u51c6\u8fb9",rules_below:"\u4e0b",rules_above:"\u4e0a",rules_void:"\u7a7a",rules:"\u7ebf\u6761",frame_all:"\u5168\u90e8",frame_cols:"\u5217",frame_rows:"\u884c",frame_groups:"\u7fa4\u7ec4",frame_none:"\u65e0",frame:"\u8fb9\u6846",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u6807\u9898\u884c\u7f3a\u5931\uff01",cell_limit:"\u5df2\u8d85\u8fc7\u53ef\u7528\u6570\uff0c\u6700\u9ad8\u7684\u50a8\u5b58\u683c\u6570\u4e3a{$cells}\u683c\u3002",row_limit:"\u5df2\u8d85\u8fc7\u53ef\u7528\u6570\uff0c\u6700\u9ad8\u7684\u884c\u6570\u4e3a{$rows}\u884c\u3002",col_limit:"\u5df2\u8d85\u8fc7\u53ef\u7528\u6570\uff0c\u6700\u9ad8\u7684\u5217\u6570\u4e3a{$cols}\u5217\u3002",colgroup:"\u5217\u7fa4\u7ec4",rowgroup:"\u884c\u7fa4\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u8eab",thead:"\u8868\u5934",row_all:"\u66f4\u65b0\u8868\u683c\u5185\u5168\u90e8\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u5185\u7684\u5076\u6570\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u5185\u7684\u5947\u6570\u884c",row_row:"\u66f4\u65b0\u6240\u5728\u884c",cell_all:"\u66f4\u65b0\u8868\u683c\u5185\u7684\u5168\u90e8\u50a8\u5b58\u683c",cell_row:"\u66f4\u65b0\u6240\u5728\u884c\u7684\u5168\u90e8\u50a8\u5b58\u683c",cell_cell:"\u66f4\u65b0\u6240\u7684\u50a8\u5b58\u683c",th:"\u8868\u5934",td:"\u6570\u636e",summary:"\u6982\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u7531\u53f3\u5230\u5de6",ltr:"\u7531\u5de6\u5230\u53f3",mime:"\u76ee\u6807MIME\u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"Id",merge_cells_title:"\u5408\u5e76\u50a8\u5b58\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272",align_bottom:"\u4e0b\u65b9",align_top:"\u4e0a\u65b9",valign:"\u6c34\u51c6\u5bf9\u9f50\u65b9\u5f0f",cell_type:"\u50a8\u5b58\u683c\u522b",cell_title:"\u50a8\u5b58\u683c\u5c5e\u6027",row_title:"\u884c\u5c5e\u6027",align_middle:"\u5c45\u4e2d",align_right:"\u9760\u53f3",align_left:"\u9760\u5de6",align_default:"\u9884\u8bbe",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u50a8\u5b58\u683c\u7559\u767d",cellspacing:"\u50a8\u5b58\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9ad8\u7ea7\u5c5e\u6027",general_props:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u4e00\u822c"}); \ No newline at end of file diff --git a/js/tiny_mce/plugins/table/merge_cells.htm b/js/tiny_mce/plugins/table/merge_cells.htm new file mode 100644 index 000000000..d231090e7 --- /dev/null +++ b/js/tiny_mce/plugins/table/merge_cells.htm @@ -0,0 +1,32 @@ + + + + {#table_dlg.merge_cells_title} + + + + + + +
        +
        + {#table_dlg.merge_cells_title} + + + + + + + + + +
        :
        :
        +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/table/row.htm b/js/tiny_mce/plugins/table/row.htm new file mode 100644 index 000000000..c197ff6c7 --- /dev/null +++ b/js/tiny_mce/plugins/table/row.htm @@ -0,0 +1,157 @@ + + + + {#table_dlg.row_title} + + + + + + + + +
        + + +
        +
        +
        + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + +
        + +
        +
        +
        + +
        +
        + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        + + + + + +
         
        +
        + + + + + + +
         
        +
        +
        +
        +
        +
        + +
        +
        + +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/table/table.htm b/js/tiny_mce/plugins/table/table.htm new file mode 100644 index 000000000..4a873b0a6 --- /dev/null +++ b/js/tiny_mce/plugins/table/table.htm @@ -0,0 +1,188 @@ + + + + {#table_dlg.title} + + + + + + + + + + +
        + + +
        +
        +
        + {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        +
        + +
        +
        + {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + +
         
        +
        + +
        + +
        + +
        + + + + + +
         
        +
        + + + + + +
         
        +
        +
        +
        +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/abbr.htm b/js/tiny_mce/plugins/xhtmlxtras/abbr.htm new file mode 100644 index 000000000..30a894f7c --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/abbr.htm @@ -0,0 +1,142 @@ + + + + {#xhtmlxtras_dlg.title_abbr_element} + + + + + + + + + + +
        + + +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        : + +
        :
        : + +
        : + +
        +
        +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        +
        +
        +
        +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/acronym.htm b/js/tiny_mce/plugins/xhtmlxtras/acronym.htm new file mode 100644 index 000000000..c10934592 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -0,0 +1,142 @@ + + + + {#xhtmlxtras_dlg.title_acronym_element} + + + + + + + + + + +
        + + +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        : + +
        :
        : + +
        : + +
        +
        +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        +
        +
        +
        +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/attributes.htm b/js/tiny_mce/plugins/xhtmlxtras/attributes.htm new file mode 100644 index 000000000..e8d606a34 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -0,0 +1,149 @@ + + + + {#xhtmlxtras_dlg.attribs_title} + + + + + + + + + +
        + + +
        +
        +
        + {#xhtmlxtras_dlg.attribute_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        + +
        :
        : + +
        : + +
        +
        +
        +
        +
        + {#xhtmlxtras_dlg.attribute_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        +
        +
        +
        +
        + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/cite.htm b/js/tiny_mce/plugins/xhtmlxtras/cite.htm new file mode 100644 index 000000000..0ac6bdb66 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -0,0 +1,142 @@ + + + + {#xhtmlxtras_dlg.title_cite_element} + + + + + + + + + + +
        + + +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        : + +
        :
        : + +
        : + +
        +
        +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        +
        +
        +
        +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css new file mode 100644 index 000000000..9a6a235c3 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css @@ -0,0 +1,11 @@ +.panel_wrapper div.current { + height: 290px; +} + +#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/js/tiny_mce/plugins/xhtmlxtras/css/popup.css b/js/tiny_mce/plugins/xhtmlxtras/css/popup.css new file mode 100644 index 000000000..e67114dba --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/css/popup.css @@ -0,0 +1,9 @@ +input.field, select.field {width:200px;} +input.picker {width:179px; margin-left: 5px;} +input.disabled {border-color:#F2F2F2;} +img.picker {vertical-align:text-bottom; cursor:pointer;} +h1 {padding: 0 0 5px 0;} +.panel_wrapper div.current {height:160px;} +#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;} +a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;} +#datetime {width:180px;} diff --git a/js/tiny_mce/plugins/xhtmlxtras/del.htm b/js/tiny_mce/plugins/xhtmlxtras/del.htm new file mode 100644 index 000000000..5f667510f --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/del.htm @@ -0,0 +1,162 @@ + + + + {#xhtmlxtras_dlg.title_del_element} + + + + + + + + + + +
        + + +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
        : + + + + + +
        +
        :
        +
        +
        + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        : + +
        :
        : + +
        : + +
        +
        +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        +
        +
        +
        +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js new file mode 100644 index 000000000..a9393ad6d --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js new file mode 100644 index 000000000..5f9d9bd50 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -0,0 +1,132 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', { + init : function(ed, url) { + // Register commands + ed.addCommand('mceCite', function() { + ed.windowManager.open({ + file : url + '/cite.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAcronym', function() { + ed.windowManager.open({ + file : url + '/acronym.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAbbr', function() { + ed.windowManager.open({ + file : url + '/abbr.htm', + width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceDel', function() { + ed.windowManager.open({ + file : url + '/del.htm', + width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceIns', function() { + ed.windowManager.open({ + file : url + '/ins.htm', + width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + inline : 1 + }, { + plugin_url : url + }); + }); + + ed.addCommand('mceAttributes', function() { + ed.windowManager.open({ + file : url + '/attributes.htm', + width : 380, + height : 370, + inline : 1 + }, { + plugin_url : url + }); + }); + + // Register buttons + ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'}); + ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'}); + ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'}); + ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'}); + ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'}); + ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'}); + + ed.onNodeChange.add(function(ed, cm, n, co) { + n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS'); + + cm.setDisabled('cite', co); + cm.setDisabled('acronym', co); + cm.setDisabled('abbr', co); + cm.setDisabled('del', co); + cm.setDisabled('ins', co); + cm.setDisabled('attribs', n && n.nodeName == 'BODY'); + cm.setActive('cite', 0); + cm.setActive('acronym', 0); + cm.setActive('abbr', 0); + cm.setActive('del', 0); + cm.setActive('ins', 0); + + // Activate all + if (n) { + do { + cm.setDisabled(n.nodeName.toLowerCase(), 0); + cm.setActive(n.nodeName.toLowerCase(), 1); + } while (n = n.parentNode); + } + }); + + ed.onPreInit.add(function() { + // Fixed IE issue where it can't handle these elements correctly + ed.dom.create('abbr'); + }); + }, + + getInfo : function() { + return { + longname : 'XHTML Xtras Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin); +})(); \ No newline at end of file diff --git a/js/tiny_mce/plugins/xhtmlxtras/ins.htm b/js/tiny_mce/plugins/xhtmlxtras/ins.htm new file mode 100644 index 000000000..d001ac7c4 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/ins.htm @@ -0,0 +1,162 @@ + + + + {#xhtmlxtras_dlg.title_ins_element} + + + + + + + + + + +
        + + +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
        : + + + + + +
        +
        :
        +
        +
        + {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        : + +
        :
        : + +
        : + +
        +
        +
        +
        +
        + {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        :
        +
        +
        +
        +
        + + + +
        +
        + + diff --git a/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js new file mode 100644 index 000000000..4b51a2572 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js @@ -0,0 +1,28 @@ +/** + * abbr.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('abbr'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAbbr() { + SXE.insertElement('abbr'); + tinyMCEPopup.close(); +} + +function removeAbbr() { + SXE.removeElement('abbr'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js new file mode 100644 index 000000000..6ec2f8871 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js @@ -0,0 +1,28 @@ +/** + * acronym.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('acronym'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAcronym() { + SXE.insertElement('acronym'); + tinyMCEPopup.close(); +} + +function removeAcronym() { + SXE.removeElement('acronym'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js new file mode 100644 index 000000000..9de9c29c9 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js @@ -0,0 +1,125 @@ +/** + * attributes.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + tinyMCEPopup.resizeToInnerSize(); + var inst = tinyMCEPopup.editor; + var dom = inst.dom; + var elm = inst.selection.getNode(); + var f = document.forms[0]; + var onclick = dom.getAttrib(elm, 'onclick'); + + setFormValue('title', dom.getAttrib(elm, 'title')); + setFormValue('id', dom.getAttrib(elm, 'id')); + setFormValue('style', dom.getAttrib(elm, "style")); + setFormValue('dir', dom.getAttrib(elm, 'dir')); + setFormValue('lang', dom.getAttrib(elm, 'lang')); + setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('onfocus', dom.getAttrib(elm, 'onfocus')); + setFormValue('onblur', dom.getAttrib(elm, 'onblur')); + setFormValue('onclick', onclick); + setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup')); + className = dom.getAttrib(elm, 'class'); + + addClassesToList('classlist', 'advlink_styles'); + selectByValue(f, 'classlist', className, true); + + TinyMCE_EditableSelects.init(); +} + +function setFormValue(name, value) { + if(value && document.forms[0].elements[name]){ + document.forms[0].elements[name].value = value; + } +} + +function insertAction() { + var inst = tinyMCEPopup.editor; + var elm = inst.selection.getNode(); + + setAllAttribs(elm); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib.toLowerCase()]; + var inst = tinyMCEPopup.editor; + var dom = inst.dom; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + dom.setAttrib(elm, attrib.toLowerCase(), value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib.substring(0, 2) == 'on') + value = 'return true;' + value; + + if (attrib == "class") + attrib = "className"; + + elm[attrib]=value; + } else + elm.removeAttribute(attrib); +} + +function setAllAttribs(elm) { + var f = document.forms[0]; + + setAttrib(elm, 'title'); + setAttrib(elm, 'id'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(f, 'classlist')); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'tabindex'); + setAttrib(elm, 'accesskey'); + setAttrib(elm, 'onfocus'); + setAttrib(elm, 'onblur'); + setAttrib(elm, 'onclick'); + setAttrib(elm, 'ondblclick'); + setAttrib(elm, 'onmousedown'); + setAttrib(elm, 'onmouseup'); + setAttrib(elm, 'onmouseover'); + setAttrib(elm, 'onmousemove'); + setAttrib(elm, 'onmouseout'); + setAttrib(elm, 'onkeypress'); + setAttrib(elm, 'onkeydown'); + setAttrib(elm, 'onkeyup'); + + // Refresh in old MSIE +// if (tinyMCE.isMSIE5) +// elm.outerHTML = elm.outerHTML; +} + +function insertAttribute() { + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); +tinyMCEPopup.requireLangPack(); diff --git a/js/tiny_mce/plugins/xhtmlxtras/js/cite.js b/js/tiny_mce/plugins/xhtmlxtras/js/cite.js new file mode 100644 index 000000000..009b71546 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/js/cite.js @@ -0,0 +1,28 @@ +/** + * cite.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('cite'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertCite() { + SXE.insertElement('cite'); + tinyMCEPopup.close(); +} + +function removeCite() { + SXE.removeElement('cite'); + tinyMCEPopup.close(); +} + +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/plugins/xhtmlxtras/js/del.js b/js/tiny_mce/plugins/xhtmlxtras/js/del.js new file mode 100644 index 000000000..1f957dc78 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/js/del.js @@ -0,0 +1,53 @@ +/** + * del.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('del'); + if (SXE.currentAction == "update") { + setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); + setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); + SXE.showRemoveButton(); + } +} + +function setElementAttribs(elm) { + setAllCommonAttribs(elm); + setAttrib(elm, 'datetime'); + setAttrib(elm, 'cite'); + elm.removeAttribute('data-mce-new'); +} + +function insertDel() { + var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); + + if (elm == null) { + var s = SXE.inst.selection.getContent(); + if(s.length > 0) { + insertInlineElement('del'); + var elementArray = SXE.inst.dom.select('del[data-mce-new]'); + for (var i=0; i 0) { + tagName = element_name; + + insertInlineElement(element_name); + var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); + for (var i=0; i -1) ? true : false; +} + +SXE.removeClass = function(elm,cl) { + if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { + return true; + } + var classNames = elm.className.split(" "); + var newClassNames = ""; + for (var x = 0, cnl = classNames.length; x < cnl; x++) { + if (classNames[x] != cl) { + newClassNames += (classNames[x] + " "); + } + } + elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end +} + +SXE.addClass = function(elm,cl) { + if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; + return true; +} + +function insertInlineElement(en) { + var ed = tinyMCEPopup.editor, dom = ed.dom; + + ed.getDoc().execCommand('FontName', false, 'mceinline'); + tinymce.each(dom.select('span,font'), function(n) { + if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') + dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1); + }); +} diff --git a/js/tiny_mce/plugins/xhtmlxtras/js/ins.js b/js/tiny_mce/plugins/xhtmlxtras/js/ins.js new file mode 100644 index 000000000..c4addfb01 --- /dev/null +++ b/js/tiny_mce/plugins/xhtmlxtras/js/ins.js @@ -0,0 +1,53 @@ +/** + * ins.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +function init() { + SXE.initElementDialog('ins'); + if (SXE.currentAction == "update") { + setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); + setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); + SXE.showRemoveButton(); + } +} + +function setElementAttribs(elm) { + setAllCommonAttribs(elm); + setAttrib(elm, 'datetime'); + setAttrib(elm, 'cite'); + elm.removeAttribute('data-mce-new'); +} + +function insertIns() { + var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS'); + + if (elm == null) { + var s = SXE.inst.selection.getContent(); + if(s.length > 0) { + insertInlineElement('ins'); + var elementArray = SXE.inst.dom.select('ins[data-mce-new]'); + for (var i=0; i + + + {#advanced_dlg.about_title} + + + + + + + +
        +
        +

        {#advanced_dlg.about_title}

        +

        Version: ()

        +

        TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

        +

        Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

        +

        For more information about this software visit the TinyMCE website.

        + +
        + Got Moxie? +
        +
        + +
        +
        +

        {#advanced_dlg.about_loaded}

        + +
        +
        + +

         

        +
        +
        + +
        +
        +
        +
        + +
        + +
        + + diff --git a/js/tiny_mce/themes/advanced/anchor.htm b/js/tiny_mce/themes/advanced/anchor.htm new file mode 100644 index 000000000..75c93b799 --- /dev/null +++ b/js/tiny_mce/themes/advanced/anchor.htm @@ -0,0 +1,26 @@ + + + + {#advanced_dlg.anchor_title} + + + + +
        + + + + + + + + +
        {#advanced_dlg.anchor_title}
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/themes/advanced/charmap.htm b/js/tiny_mce/themes/advanced/charmap.htm new file mode 100644 index 000000000..2c3b3f27b --- /dev/null +++ b/js/tiny_mce/themes/advanced/charmap.htm @@ -0,0 +1,51 @@ + + + + {#advanced_dlg.charmap_title} + + + + + + + + + + + + + + + +
        + + + + + + + + + +
         
         
        +
        + + + + + + + + + + + + + + + + +
         
         
         
        +
        + + diff --git a/js/tiny_mce/themes/advanced/color_picker.htm b/js/tiny_mce/themes/advanced/color_picker.htm new file mode 100644 index 000000000..ad1bb0f6c --- /dev/null +++ b/js/tiny_mce/themes/advanced/color_picker.htm @@ -0,0 +1,74 @@ + + + + {#advanced_dlg.colorpicker_title} + + + + + + +
        + + +
        +
        +
        + {#advanced_dlg.colorpicker_picker_title} +
        + + +
        + +
        + +
        +
        +
        +
        + +
        +
        + {#advanced_dlg.colorpicker_palette_title} +
        + +
        + +
        +
        +
        + +
        +
        + {#advanced_dlg.colorpicker_named_title} +
        + +
        + +
        + +
        + {#advanced_dlg.colorpicker_name} +
        +
        +
        +
        + +
        + + +
        + +
        + +
        +
        +
        + + diff --git a/js/tiny_mce/themes/advanced/editor_template.js b/js/tiny_mce/themes/advanced/editor_template.js new file mode 100644 index 000000000..4b5b754e3 --- /dev/null +++ b/js/tiny_mce/themes/advanced/editor_template.js @@ -0,0 +1 @@ +(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"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",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}if(j.settings.content_css!==false){j.contentCSS.push(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){if(p[0]){i.formatter.remove(p[0])}}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});if(m&&m.value==l){k.select(null)}return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});if(o&&(o.value.fontSize==i.fontSize||o.value["class"]==i["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(l){j.editor.execCommand("FormatBlock",false,l);return false}});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},""),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_ifr");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row",role:"group","aria-labelledby":p.id+"_path_voice"});if(w.theme_advanced_path){d.add(k,"span",{id:p.id+"_path_voice"},p.translate("advanced.path"));d.add(k,"span",{},": ")}else{d.add(k,"span",{}," ")}if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","click",function(n){n.preventDefault()});b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){G.preventDefault();n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E,true)}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_updateUndoStatus:function(j){var i=j.controlManager;i.setDisabled("undo",!j.undoManager.hasUndo()&&!j.typing);i.setDisabled("redo",!j.undoManager.hasRedo())},_nodeChanged:function(m,r,D,q,E){var y=this,C,F=0,x,G,z=y.settings,w,k,u,B,l,j,i;e.each(y.stateControls,function(n){r.setActive(n,m.queryCommandState(y.controls[n][1]))});function o(p){var s,n=E.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/editor_template_src.js b/js/tiny_mce/themes/advanced/editor_template_src.js new file mode 100644 index 000000000..2ab0b5482 --- /dev/null +++ b/js/tiny_mce/themes/advanced/editor_template_src.js @@ -0,0 +1,1360 @@ +/** + * editor_template_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; + + // Tell it to load theme specific language pack(s) + tinymce.ThemeManager.requireLangPack('advanced'); + + tinymce.create('tinymce.themes.AdvancedTheme', { + sizes : [8, 10, 12, 14, 18, 24, 36], + + // Control name lookup, format: title, command + controls : { + bold : ['bold_desc', 'Bold'], + italic : ['italic_desc', 'Italic'], + underline : ['underline_desc', 'Underline'], + strikethrough : ['striketrough_desc', 'Strikethrough'], + justifyleft : ['justifyleft_desc', 'JustifyLeft'], + justifycenter : ['justifycenter_desc', 'JustifyCenter'], + justifyright : ['justifyright_desc', 'JustifyRight'], + justifyfull : ['justifyfull_desc', 'JustifyFull'], + bullist : ['bullist_desc', 'InsertUnorderedList'], + numlist : ['numlist_desc', 'InsertOrderedList'], + outdent : ['outdent_desc', 'Outdent'], + indent : ['indent_desc', 'Indent'], + cut : ['cut_desc', 'Cut'], + copy : ['copy_desc', 'Copy'], + paste : ['paste_desc', 'Paste'], + undo : ['undo_desc', 'Undo'], + redo : ['redo_desc', 'Redo'], + link : ['link_desc', 'mceLink'], + unlink : ['unlink_desc', 'unlink'], + image : ['image_desc', 'mceImage'], + cleanup : ['cleanup_desc', 'mceCleanup'], + help : ['help_desc', 'mceHelp'], + code : ['code_desc', 'mceCodeEditor'], + hr : ['hr_desc', 'InsertHorizontalRule'], + removeformat : ['removeformat_desc', 'RemoveFormat'], + sub : ['sub_desc', 'subscript'], + sup : ['sup_desc', 'superscript'], + forecolor : ['forecolor_desc', 'ForeColor'], + forecolorpicker : ['forecolor_desc', 'mceForeColor'], + backcolor : ['backcolor_desc', 'HiliteColor'], + backcolorpicker : ['backcolor_desc', 'mceBackColor'], + charmap : ['charmap_desc', 'mceCharMap'], + visualaid : ['visualaid_desc', 'mceToggleVisualAid'], + anchor : ['anchor_desc', 'mceInsertAnchor'], + newdocument : ['newdocument_desc', 'mceNewDocument'], + blockquote : ['blockquote_desc', 'mceBlockQuote'] + }, + + stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'], + + init : function(ed, url) { + var t = this, s, v, o; + + t.editor = ed; + t.url = url; + t.onResolveName = new tinymce.util.Dispatcher(this); + + ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast(); + ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin; + + // Default settings + t.settings = s = extend({ + theme_advanced_path : true, + theme_advanced_toolbar_location : 'bottom', + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect", + theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code", + theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap", + theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6", + theme_advanced_toolbar_align : "center", + theme_advanced_fonts : "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", + theme_advanced_more_colors : 1, + theme_advanced_row_height : 23, + theme_advanced_resize_horizontal : 1, + theme_advanced_resizing_use_cookie : 1, + theme_advanced_font_sizes : "1,2,3,4,5,6,7", + theme_advanced_font_selector : "span", + theme_advanced_show_current_color: 0, + readonly : ed.settings.readonly + }, ed.settings); + + // Setup default font_size_style_values + if (!s.font_size_style_values) + s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt"; + + if (tinymce.is(s.theme_advanced_font_sizes, 'string')) { + s.font_size_style_values = tinymce.explode(s.font_size_style_values); + s.font_size_classes = tinymce.explode(s.font_size_classes || ''); + + // Parse string value + o = {}; + ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes; + each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) { + var cl; + + if (k == v && v >= 1 && v <= 7) { + k = v + ' (' + t.sizes[v - 1] + 'pt)'; + cl = s.font_size_classes[v - 1]; + v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt'); + } + + if (/^\s*\./.test(v)) + cl = v.replace(/\./g, ''); + + o[k] = cl ? {'class' : cl} : {fontSize : v}; + }); + + s.theme_advanced_font_sizes = o; + } + + if ((v = s.theme_advanced_path_location) && v != 'none') + s.theme_advanced_statusbar_location = s.theme_advanced_path_location; + + if (s.theme_advanced_statusbar_location == 'none') + s.theme_advanced_statusbar_location = 0; + + if (ed.settings.content_css !== false) + ed.contentCSS.push(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css")); + + // Init editor + ed.onInit.add(function() { + if (!ed.settings.readonly) { + ed.onNodeChange.add(t._nodeChanged, t); + ed.onKeyUp.add(t._updateUndoStatus, t); + ed.onMouseUp.add(t._updateUndoStatus, t); + ed.dom.bind(ed.dom.getRoot(), 'dragend', function() { + t._updateUndoStatus(ed); + }); + } + }); + + ed.onSetProgressState.add(function(ed, b, ti) { + var co, id = ed.id, tb; + + if (b) { + t.progressTimer = setTimeout(function() { + co = ed.getContainer(); + co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild); + tb = DOM.get(ed.id + '_tbl'); + + DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}}); + DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}}); + }, ti || 0); + } else { + DOM.remove(id + '_blocker'); + DOM.remove(id + '_progress'); + clearTimeout(t.progressTimer); + } + }); + + DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css"); + + if (s.skin_variant) + DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); + }, + + _isHighContrast : function() { + var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'}); + + actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, ''); + DOM.remove(div); + + return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56'; + }, + + createControl : function(n, cf) { + var cd, c; + + if (c = cf.createControl(n)) + return c; + + switch (n) { + case "styleselect": + return this._createStyleSelect(); + + case "formatselect": + return this._createBlockFormats(); + + case "fontselect": + return this._createFontSelect(); + + case "fontsizeselect": + return this._createFontSizeSelect(); + + case "forecolor": + return this._createForeColorMenu(); + + case "backcolor": + return this._createBackColorMenu(); + } + + if ((cd = this.controls[n])) + return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]}); + }, + + execCommand : function(cmd, ui, val) { + var f = this['_' + cmd]; + + if (f) { + f.call(this, ui, val); + return true; + } + + return false; + }, + + _importClasses : function(e) { + var ed = this.editor, ctrl = ed.controlManager.get('styleselect'); + + if (ctrl.getLength() == 0) { + each(ed.dom.getClasses(), function(o, idx) { + var name = 'style_' + idx; + + ed.formatter.register(name, { + inline : 'span', + attributes : {'class' : o['class']}, + selector : '*' + }); + + ctrl.add(o['class'], name); + }); + } + }, + + _createStyleSelect : function(n) { + var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl; + + // Setup style select box + ctrl = ctrlMan.createListBox('styleselect', { + title : 'advanced.style_select', + onselect : function(name) { + var matches, formatNames = []; + + each(ctrl.items, function(item) { + formatNames.push(item.value); + }); + + ed.focus(); + ed.undoManager.add(); + + // Toggle off the current format + matches = ed.formatter.matchAll(formatNames); + if (!name || matches[0] == name) { + if (matches[0]) + ed.formatter.remove(matches[0]); + } else + ed.formatter.apply(name); + + ed.undoManager.add(); + ed.nodeChanged(); + + return false; // No auto select + } + }); + + // Handle specified format + ed.onInit.add(function() { + var counter = 0, formats = ed.getParam('style_formats'); + + if (formats) { + each(formats, function(fmt) { + var name, keys = 0; + + each(fmt, function() {keys++;}); + + if (keys > 1) { + name = fmt.name = fmt.name || 'style_' + (counter++); + ed.formatter.register(name, fmt); + ctrl.add(fmt.title, name); + } else + ctrl.add(fmt.title); + }); + } else { + each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) { + var name; + + if (val) { + name = 'style_' + (counter++); + + ed.formatter.register(name, { + inline : 'span', + classes : val, + selector : '*' + }); + + ctrl.add(t.editor.translate(key), name); + } + }); + } + }); + + // Auto import classes if the ctrl box is empty + if (ctrl.getLength() == 0) { + ctrl.onPostRender.add(function(ed, n) { + if (!ctrl.NativeListBox) { + Event.add(n.id + '_text', 'focus', t._importClasses, t); + Event.add(n.id + '_text', 'mousedown', t._importClasses, t); + Event.add(n.id + '_open', 'focus', t._importClasses, t); + Event.add(n.id + '_open', 'mousedown', t._importClasses, t); + } else + Event.add(n.id, 'focus', t._importClasses, t); + }); + } + + return ctrl; + }, + + _createFontSelect : function() { + var c, t = this, ed = t.editor; + + c = ed.controlManager.createListBox('fontselect', { + title : 'advanced.fontdefault', + onselect : function(v) { + var cur = c.items[c.selectedIndex]; + + if (!v && cur) { + ed.execCommand('FontName', false, cur.value); + return; + } + + ed.execCommand('FontName', false, v); + + // Fake selection, execCommand will fire a nodeChange and update the selection + c.select(function(sv) { + return v == sv; + }); + + if (cur && cur.value == v) { + c.select(null); + } + + return false; // No auto select + } + }); + + if (c) { + each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { + c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); + }); + } + + return c; + }, + + _createFontSizeSelect : function() { + var t = this, ed = t.editor, c, i = 0, cl = []; + + c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { + var cur = c.items[c.selectedIndex]; + + if (!v && cur) { + cur = cur.value; + + if (cur['class']) { + ed.formatter.toggle('fontsize_class', {value : cur['class']}); + ed.undoManager.add(); + ed.nodeChanged(); + } else { + ed.execCommand('FontSize', false, cur.fontSize); + } + + return; + } + + if (v['class']) { + ed.focus(); + ed.undoManager.add(); + ed.formatter.toggle('fontsize_class', {value : v['class']}); + ed.undoManager.add(); + ed.nodeChanged(); + } else + ed.execCommand('FontSize', false, v.fontSize); + + // Fake selection, execCommand will fire a nodeChange and update the selection + c.select(function(sv) { + return v == sv; + }); + + if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] == v['class'])) { + c.select(null); + } + + return false; // No auto select + }}); + + if (c) { + each(t.settings.theme_advanced_font_sizes, function(v, k) { + var fz = v.fontSize; + + if (fz >= 1 && fz <= 7) + fz = t.sizes[parseInt(fz) - 1] + 'pt'; + + c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))}); + }); + } + + return c; + }, + + _createBlockFormats : function() { + var c, fmts = { + p : 'advanced.paragraph', + address : 'advanced.address', + pre : 'advanced.pre', + h1 : 'advanced.h1', + h2 : 'advanced.h2', + h3 : 'advanced.h3', + h4 : 'advanced.h4', + h5 : 'advanced.h5', + h6 : 'advanced.h6', + div : 'advanced.div', + blockquote : 'advanced.blockquote', + code : 'advanced.code', + dt : 'advanced.dt', + dd : 'advanced.dd', + samp : 'advanced.samp' + }, t = this; + + c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', onselect : function(v) { + t.editor.execCommand('FormatBlock', false, v); + return false; + }}); + + if (c) { + each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { + c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); + }); + } + + return c; + }, + + _createForeColorMenu : function() { + var c, t = this, s = t.settings, o = {}, v; + + if (s.theme_advanced_more_colors) { + o.more_colors_func = function() { + t._mceColorPicker(0, { + color : c.value, + func : function(co) { + c.setColor(co); + } + }); + }; + } + + if (v = s.theme_advanced_text_colors) + o.colors = v; + + if (s.theme_advanced_default_foreground_color) + o.default_color = s.theme_advanced_default_foreground_color; + + o.title = 'advanced.forecolor_desc'; + o.cmd = 'ForeColor'; + o.scope = this; + + c = t.editor.controlManager.createColorSplitButton('forecolor', o); + + return c; + }, + + _createBackColorMenu : function() { + var c, t = this, s = t.settings, o = {}, v; + + if (s.theme_advanced_more_colors) { + o.more_colors_func = function() { + t._mceColorPicker(0, { + color : c.value, + func : function(co) { + c.setColor(co); + } + }); + }; + } + + if (v = s.theme_advanced_background_colors) + o.colors = v; + + if (s.theme_advanced_default_background_color) + o.default_color = s.theme_advanced_default_background_color; + + o.title = 'advanced.backcolor_desc'; + o.cmd = 'HiliteColor'; + o.scope = this; + + c = t.editor.controlManager.createColorSplitButton('backcolor', o); + + return c; + }, + + renderUI : function(o) { + var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl; + + if (ed.settings) { + ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut'); + } + + // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for. + // Maybe actually inherit it from the original textara? + n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); + DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label); + + if (!DOM.boxModel) + n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); + + n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); + n = tb = DOM.add(n, 'tbody'); + + switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { + case "rowlayout": + ic = t._rowLayout(s, tb, o); + break; + + case "customlayout": + ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p); + break; + + default: + ic = t._simpleLayout(s, tb, o, p); + } + + n = o.targetNode; + + // Add classes to first and last TRs + nl = sc.rows; + DOM.addClass(nl[0], 'mceFirst'); + DOM.addClass(nl[nl.length - 1], 'mceLast'); + + // Add classes to first and last TDs + each(DOM.select('tr', tb), function(n) { + DOM.addClass(n.firstChild, 'mceFirst'); + DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast'); + }); + + if (DOM.get(s.theme_advanced_toolbar_container)) + DOM.get(s.theme_advanced_toolbar_container).appendChild(p); + else + DOM.insertAfter(p, n); + + Event.add(ed.id + '_path_row', 'click', function(e) { + e = e.target; + + if (e.nodeName == 'A') { + t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1')); + + return Event.cancel(e); + } + }); +/* + if (DOM.get(ed.id + '_path_row')) { + Event.add(ed.id + '_tbl', 'mouseover', function(e) { + var re; + + e = e.target; + + if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) { + re = DOM.get(ed.id + '_path_row'); + t.lastPath = re.innerHTML; + DOM.setHTML(re, e.parentNode.title); + } + }); + + Event.add(ed.id + '_tbl', 'mouseout', function(e) { + if (t.lastPath) { + DOM.setHTML(ed.id + '_path_row', t.lastPath); + t.lastPath = 0; + } + }); + } +*/ + + if (!ed.getParam('accessibility_focus')) + Event.add(DOM.add(p, 'a', {href : '#'}, ''), 'focus', function() {tinyMCE.get(ed.id).focus();}); + + if (s.theme_advanced_toolbar_location == 'external') + o.deltaHeight = 0; + + t.deltaHeight = o.deltaHeight; + o.targetNode = null; + + ed.onKeyDown.add(function(ed, evt) { + var DOM_VK_F10 = 121, DOM_VK_F11 = 122; + + if (evt.altKey) { + if (evt.keyCode === DOM_VK_F10) { + t.toolbarGroup.focus(); + return Event.cancel(evt); + } else if (evt.keyCode === DOM_VK_F11) { + DOM.get(ed.id + '_path_row').focus(); + return Event.cancel(evt); + } + } + }); + + // alt+0 is the UK recommended shortcut for accessing the list of access controls. + ed.addShortcut('alt+0', '', 'mceShortcuts', t); + + return { + iframeContainer : ic, + editorContainer : ed.id + '_parent', + sizeContainer : sc, + deltaHeight : o.deltaHeight + }; + }, + + getInfo : function() { + return { + longname : 'Advanced theme', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + version : tinymce.majorVersion + "." + tinymce.minorVersion + } + }, + + resizeBy : function(dw, dh) { + var e = DOM.get(this.editor.id + '_ifr'); + + this.resizeTo(e.clientWidth + dw, e.clientHeight + dh); + }, + + resizeTo : function(w, h, store) { + var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'); + + // Boundery fix box + w = Math.max(s.theme_advanced_resizing_min_width || 100, w); + h = Math.max(s.theme_advanced_resizing_min_height || 100, h); + w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w); + h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h); + + // Resize iframe and container + DOM.setStyle(e, 'height', ''); + DOM.setStyle(ifr, 'height', h); + + if (s.theme_advanced_resize_horizontal) { + DOM.setStyle(e, 'width', ''); + DOM.setStyle(ifr, 'width', w); + + // Make sure that the size is never smaller than the over all ui + if (w < e.clientWidth) { + w = e.clientWidth; + DOM.setStyle(ifr, 'width', e.clientWidth); + } + } + + // Store away the size + if (store && s.theme_advanced_resizing_use_cookie) { + Cookie.setHash("TinyMCE_" + ed.id + "_size", { + cw : w, + ch : h + }); + } + }, + + destroy : function() { + var id = this.editor.id; + + Event.clear(id + '_resize'); + Event.clear(id + '_path_row'); + Event.clear(id + '_external_close'); + }, + + // Internal functions + + _simpleLayout : function(s, tb, o, p) { + var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c; + + if (s.readonly) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + return ic; + } + + // Create toolbar container at top + if (lo == 'top') + t._addToolbars(tb, o); + + // Create external toolbar + if (lo == 'external') { + n = c = DOM.create('div', {style : 'position:relative'}); + n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'}); + DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'}); + n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0}); + etb = DOM.add(n, 'tbody'); + + if (p.firstChild.className == 'mceOldBoxModel') + p.firstChild.appendChild(c); + else + p.insertBefore(c, p.firstChild); + + t._addToolbars(etb, o); + + ed.onMouseUp.add(function() { + var e = DOM.get(ed.id + '_external'); + DOM.show(e); + + DOM.hide(lastExtID); + + var f = Event.add(ed.id + '_external_close', 'click', function() { + DOM.hide(ed.id + '_external'); + Event.remove(ed.id + '_external_close', 'click', f); + }); + + DOM.show(e); + DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1); + + // Fixes IE rendering bug + DOM.hide(e); + DOM.show(e); + e.style.filter = ''; + + lastExtID = ed.id + '_external'; + + e = null; + }); + } + + if (sl == 'top') + t._addStatusBar(tb, o); + + // Create iframe container + if (!s.theme_advanced_toolbar_container) { + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + } + + // Create toolbar container at bottom + if (lo == 'bottom') + t._addToolbars(tb, o); + + if (sl == 'bottom') + t._addStatusBar(tb, o); + + return ic; + }, + + _rowLayout : function(s, tb, o) { + var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a; + + dc = s.theme_advanced_containers_default_class || ''; + da = s.theme_advanced_containers_default_align || 'center'; + + each(explode(s.theme_advanced_containers || ''), function(c, i) { + var v = s['theme_advanced_container_' + c] || ''; + + switch (v.toLowerCase()) { + case 'mceeditor': + n = DOM.add(tb, 'tr'); + n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); + break; + + case 'mceelementpath': + t._addStatusBar(tb, o); + break; + + default: + a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase(); + a = 'mce' + t._ufirst(a); + + n = DOM.add(DOM.add(tb, 'tr'), 'td', { + 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da + }); + + to = cf.createToolbar("toolbar" + i); + t._addControls(v, to); + DOM.setHTML(n, to.renderHTML()); + o.deltaHeight -= s.theme_advanced_row_height; + } + }); + + return ic; + }, + + _addControls : function(v, tb) { + var t = this, s = t.settings, di, cf = t.editor.controlManager; + + if (s.theme_advanced_disable && !t._disabled) { + di = {}; + + each(explode(s.theme_advanced_disable), function(v) { + di[v] = 1; + }); + + t._disabled = di; + } else + di = t._disabled; + + each(explode(v), function(n) { + var c; + + if (di && di[n]) + return; + + // Compatiblity with 2.x + if (n == 'tablecontrols') { + each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) { + n = t.createControl(n, cf); + + if (n) + tb.add(n); + }); + + return; + } + + c = t.createControl(n, cf); + + if (c) + tb.add(c); + }); + }, + + _addToolbars : function(c, o) { + var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup; + + toolbarGroup = cf.createToolbarGroup('toolbargroup', { + 'name': ed.getLang('advanced.toolbar'), + 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar') + }); + + t.toolbarGroup = toolbarGroup; + + a = s.theme_advanced_toolbar_align.toLowerCase(); + a = 'mce' + t._ufirst(a); + + n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"}); + + // Create toolbar and add the controls + for (i=1; (v = s['theme_advanced_buttons' + i]); i++) { + tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i}); + + if (s['theme_advanced_buttons' + i + '_add']) + v += ',' + s['theme_advanced_buttons' + i + '_add']; + + if (s['theme_advanced_buttons' + i + '_add_before']) + v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v; + + t._addControls(v, tb); + toolbarGroup.add(tb); + + o.deltaHeight -= s.theme_advanced_row_height; + } + h.push(toolbarGroup.renderHTML()); + h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '')); + DOM.setHTML(n, h.join('')); + }, + + _addStatusBar : function(tb, o) { + var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td; + + n = DOM.add(tb, 'tr'); + n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); + n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'}); + if (s.theme_advanced_path) { + DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path')); + DOM.add(n, 'span', {}, ': '); + } else { + DOM.add(n, 'span', {}, ' '); + } + + + if (s.theme_advanced_resizing) { + DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'}); + + if (s.theme_advanced_resizing_use_cookie) { + ed.onPostRender.add(function() { + var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl'); + + if (!o) + return; + + t.resizeTo(o.cw, o.ch); + }); + } + + ed.onPostRender.add(function() { + Event.add(ed.id + '_resize', 'click', function(e) { + e.preventDefault(); + }); + + Event.add(ed.id + '_resize', 'mousedown', function(e) { + var mouseMoveHandler1, mouseMoveHandler2, + mouseUpHandler1, mouseUpHandler2, + startX, startY, startWidth, startHeight, width, height, ifrElm; + + function resizeOnMove(e) { + e.preventDefault(); + + width = startWidth + (e.screenX - startX); + height = startHeight + (e.screenY - startY); + + t.resizeTo(width, height); + }; + + function endResize(e) { + // Stop listening + Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1); + Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2); + Event.remove(DOM.doc, 'mouseup', mouseUpHandler1); + Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2); + + width = startWidth + (e.screenX - startX); + height = startHeight + (e.screenY - startY); + t.resizeTo(width, height, true); + }; + + e.preventDefault(); + + // Get the current rect size + startX = e.screenX; + startY = e.screenY; + ifrElm = DOM.get(t.editor.id + '_ifr'); + startWidth = width = ifrElm.clientWidth; + startHeight = height = ifrElm.clientHeight; + + // Register envent handlers + mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove); + mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove); + mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize); + mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize); + }); + }); + } + + o.deltaHeight -= 21; + n = tb = null; + }, + + _updateUndoStatus : function(ed) { + var cm = ed.controlManager; + + cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing); + cm.setDisabled('redo', !ed.undoManager.hasRedo()); + }, + + _nodeChanged : function(ed, cm, n, co, ob) { + var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches; + + tinymce.each(t.stateControls, function(c) { + cm.setActive(c, ed.queryCommandState(t.controls[c][1])); + }); + + function getParent(name) { + var i, parents = ob.parents, func = name; + + if (typeof(name) == 'string') { + func = function(node) { + return node.nodeName == name; + }; + } + + for (i = 0; i < parents.length; i++) { + if (func(parents[i])) + return parents[i]; + } + }; + + cm.setActive('visualaid', ed.hasVisual); + t._updateUndoStatus(ed); + cm.setDisabled('outdent', !ed.queryCommandState('Outdent')); + + p = getParent('A'); + if (c = cm.get('link')) { + if (!p || !p.name) { + c.setDisabled(!p && co); + c.setActive(!!p); + } + } + + if (c = cm.get('unlink')) { + c.setDisabled(!p && co); + c.setActive(!!p && !p.name); + } + + if (c = cm.get('anchor')) { + c.setActive(!co && !!p && p.name); + } + + p = getParent('IMG'); + if (c = cm.get('image')) + c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1); + + if (c = cm.get('styleselect')) { + t._importClasses(); + + formatNames = []; + each(c.items, function(item) { + formatNames.push(item.value); + }); + + matches = ed.formatter.matchAll(formatNames); + c.select(matches[0]); + } + + if (c = cm.get('formatselect')) { + p = getParent(DOM.isBlock); + + if (p) + c.select(p.nodeName.toLowerCase()); + } + + // Find out current fontSize, fontFamily and fontClass + getParent(function(n) { + if (n.nodeName === 'SPAN') { + if (!cl && n.className) + cl = n.className; + } + + if (ed.dom.is(n, s.theme_advanced_font_selector)) { + if (!fz && n.style.fontSize) + fz = n.style.fontSize; + + if (!fn && n.style.fontFamily) + fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); + + if (!fc && n.style.color) + fc = n.style.color; + + if (!bc && n.style.backgroundColor) + bc = n.style.backgroundColor; + } + + return false; + }); + + if (c = cm.get('fontselect')) { + c.select(function(v) { + return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn; + }); + } + + // Select font size + if (c = cm.get('fontsizeselect')) { + // Use computed style + if (s.theme_advanced_runtime_fontsize && !fz && !cl) + fz = ed.dom.getStyle(n, 'fontSize', true); + + c.select(function(v) { + if (v.fontSize && v.fontSize === fz) + return true; + + if (v['class'] && v['class'] === cl) + return true; + }); + } + + if (s.theme_advanced_show_current_color) { + function updateColor(controlId, color) { + if (c = cm.get(controlId)) { + if (!color) + color = c.settings.default_color; + if (color !== c.value) { + c.displayColor(color); + } + } + } + updateColor('forecolor', fc); + updateColor('backcolor', bc); + } + + if (s.theme_advanced_show_current_color) { + function updateColor(controlId, color) { + if (c = cm.get(controlId)) { + if (!color) + color = c.settings.default_color; + if (color !== c.value) { + c.displayColor(color); + } + } + }; + + updateColor('forecolor', fc); + updateColor('backcolor', bc); + } + + if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { + p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); + + if (t.statusKeyboardNavigation) { + t.statusKeyboardNavigation.destroy(); + t.statusKeyboardNavigation = null; + } + + DOM.setHTML(p, ''); + + getParent(function(n) { + var na = n.nodeName.toLowerCase(), u, pi, ti = ''; + + if (n.getAttribute('data-mce-bogus')) + return; + + // Ignore non element and hidden elements + if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) + return; + + // Handle prefix + if (tinymce.isIE && n.scopeName !== 'HTML') + na = n.scopeName + ':' + na; + + // Remove internal prefix + na = na.replace(/mce\:/g, ''); + + // Handle node name + switch (na) { + case 'b': + na = 'strong'; + break; + + case 'i': + na = 'em'; + break; + + case 'img': + if (v = DOM.getAttrib(n, 'src')) + ti += 'src: ' + v + ' '; + + break; + + case 'a': + if (v = DOM.getAttrib(n, 'name')) { + ti += 'name: ' + v + ' '; + na += '#' + v; + } + + if (v = DOM.getAttrib(n, 'href')) + ti += 'href: ' + v + ' '; + + break; + + case 'font': + if (v = DOM.getAttrib(n, 'face')) + ti += 'font: ' + v + ' '; + + if (v = DOM.getAttrib(n, 'size')) + ti += 'size: ' + v + ' '; + + if (v = DOM.getAttrib(n, 'color')) + ti += 'color: ' + v + ' '; + + break; + + case 'span': + if (v = DOM.getAttrib(n, 'style')) + ti += 'style: ' + v + ' '; + + break; + } + + if (v = DOM.getAttrib(n, 'id')) + ti += 'id: ' + v + ' '; + + if (v = n.className) { + v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '') + + if (v) { + ti += 'class: ' + v + ' '; + + if (DOM.isBlock(n) || na == 'img' || na == 'span') + na += '.' + v; + } + } + + na = na.replace(/(html:)/g, ''); + na = {name : na, node : n, title : ti}; + t.onResolveName.dispatch(t, na); + ti = na.title; + na = na.name; + + //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');"; + pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); + + if (p.hasChildNodes()) { + p.insertBefore(DOM.create('span', {'aria-hidden': 'true'}, '\u00a0\u00bb '), p.firstChild); + p.insertBefore(pi, p.firstChild); + } else + p.appendChild(pi); + }, ed.getBody()); + + if (DOM.select('a', p).length > 0) { + t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({ + root: ed.id + "_path_row", + items: DOM.select('a', p), + excludeFromTabOrder: true, + onCancel: function() { + ed.focus(); + } + }, DOM); + } + } + }, + + // Commands gets called by execCommand + + _sel : function(v) { + this.editor.execCommand('mceSelectNodeDepth', false, v); + }, + + _mceInsertAnchor : function(ui, v) { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/anchor.htm', + width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)), + height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceCharMap : function() { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/charmap.htm', + width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), + height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceHelp : function() { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/about.htm', + width : 480, + height : 380, + inline : true + }, { + theme_url : this.url + }); + }, + + _mceShortcuts : function() { + var ed = this.editor; + ed.windowManager.open({ + url: this.url + '/shortcuts.htm', + width: 480, + height: 380, + inline: true + }, { + theme_url: this.url + }); + }, + + _mceColorPicker : function(u, v) { + var ed = this.editor; + + v = v || {}; + + ed.windowManager.open({ + url : this.url + '/color_picker.htm', + width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)), + height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)), + close_previous : false, + inline : true + }, { + input_color : v.color, + func : v.func, + theme_url : this.url + }); + }, + + _mceCodeEditor : function(ui, val) { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/source_editor.htm', + width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)), + height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)), + inline : true, + resizable : true, + maximizable : true + }, { + theme_url : this.url + }); + }, + + _mceImage : function(ui, val) { + var ed = this.editor; + + // Internal image object like a flash placeholder + if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) + return; + + ed.windowManager.open({ + url : this.url + '/image.htm', + width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)), + height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceLink : function(ui, val) { + var ed = this.editor; + + ed.windowManager.open({ + url : this.url + '/link.htm', + width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)), + height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)), + inline : true + }, { + theme_url : this.url + }); + }, + + _mceNewDocument : function() { + var ed = this.editor; + + ed.windowManager.confirm('advanced.newdocument', function(s) { + if (s) + ed.execCommand('mceSetContent', false, ''); + }); + }, + + _mceForeColor : function() { + var t = this; + + this._mceColorPicker(0, { + color: t.fgColor, + func : function(co) { + t.fgColor = co; + t.editor.execCommand('ForeColor', false, co); + } + }); + }, + + _mceBackColor : function() { + var t = this; + + this._mceColorPicker(0, { + color: t.bgColor, + func : function(co) { + t.bgColor = co; + t.editor.execCommand('HiliteColor', false, co); + } + }); + }, + + _ufirst : function(s) { + return s.substring(0, 1).toUpperCase() + s.substring(1); + } + }); + + tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); +}(tinymce)); diff --git a/js/tiny_mce/themes/advanced/image.htm b/js/tiny_mce/themes/advanced/image.htm new file mode 100644 index 000000000..b8ba729f6 --- /dev/null +++ b/js/tiny_mce/themes/advanced/image.htm @@ -0,0 +1,80 @@ + + + + {#advanced_dlg.image_title} + + + + + + +
        + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + +
         
        + x +
        +
        +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/themes/advanced/img/colorpicker.jpg b/js/tiny_mce/themes/advanced/img/colorpicker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4c542d107b25f68a9d4f9d7a109d0565d1f1437 GIT binary patch literal 3189 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 literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/flash.gif b/js/tiny_mce/themes/advanced/img/flash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb192e6ceda8d19ad8e7d08dd1cfde0aa72ead2a GIT binary patch literal 241 zcmVOzlLa+Za}7>m0&NpCfJ0FQc3~F7DE)S%o1)Qi1n@vxX46qnD4hRS-NE*Pw!4UvE=#^N( literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/icons.gif b/js/tiny_mce/themes/advanced/img/icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..e46de5333082869b9bdab2576a554a2f9d01a966 GIT binary patch literal 11794 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 F{{gR&nqvR} literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/iframe.gif b/js/tiny_mce/themes/advanced/img/iframe.gif new file mode 100644 index 0000000000000000000000000000000000000000..410c7ad084db698e9f35e3230233aa4040682566 GIT binary patch literal 600 zcmZ?wbhEHb6krfwcoxm@|NsB$<##6SeDUYszh8g<{{H*-%a7k_-3KZc-T3+YPwBiX zzyAIE^Y`z!U%$Wp{QdX;|FQ*Fw;jIy{pasbUw?o3{yVB>Q_sRgx-G9iegFLZcfrha#d9w;%sU=Zx~6K$tw~$%z4`#O^Y@3Z zKV#~)MpSKh@#b63l#}6=>yq2|{`&JLqwny)|NnC)o%r$l&-Y)yKYjo8?#quSuRaGB zt_&<%`RV)bl#YEr{`~p)?RU|v^Y1_Z`u*?Ux8J`*N>>+5JlMAOZr+qr@y$D{mfVhO z+zt#7208-8pDc_F4ABfaAUi>E!oa?@A-bu#r8Qd6oKeb*Lx9UTz)0QBL@+vxY38ii zvqGa87c5+~h&?)zVa3W-D;=U$88}^qMBJ^ERU|z17!;#97+4%Rd1XcXJq#>t8KR;E z7zr5i6BgH5y=gAD)sAQlGB zh8au?j!n~E(Pks?@!j1fR&j*RWY8GF(-=x H6d0@lT&58X literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/pagebreak.gif b/js/tiny_mce/themes/advanced/img/pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..acdf4085f3068c4c0a1d6855f4b80dae8bac3068 GIT binary patch literal 325 zcmV-L0lNN2Nk%w1VPpUd0J9GO`>v<{=;ru;boX6P{`2zsmyZ3>&HK5t_;hIbi-G;z z+4`cI{KdfcXj}GCLjV8&A^8LW000jFEC2ui0Av6R000E?@X1N5y*TU5yZ>M)j$|1M z4Ouvb$pHu>IW8BZq|n;U0s@T!VM5~w1_+1X!EiVl!&PITYdjT!ffYfpt{jAfv%qvh zA63WUHSlr7LkeyaV4(pM0f50(II?RD4RtMg4-E+tFhdAy5{3c=0}3Bg9Y8`B2To20 zR%SO62L%9}0H+dzoKB$+2TOwzUrwi{XiBM^4V#>63q3!LsU3u93zH8CdwqY%62;1g z0g8ze$k93lWExp`CUe|K4qOWk17ZeJ0|5pDP6+}};{>bI@lOWj=kf}r2sHp7w9-Ie XK%9UG6W(*AX-vY05F<*&5CH%?Gwy&_ literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/quicktime.gif b/js/tiny_mce/themes/advanced/img/quicktime.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b0499145b16138249f653a1a3f2c80230fb292c GIT binary patch literal 303 zcmV+~0nq+ONk%w1VGsZi0K^{vH>m7Qv+~s9^fsC5ZpZP=*zu3F=Jxpf8k_5u%JNv6 z=md-84VLU4w)kSE=yI&-yw>b=v+SqE?+kq47pC+YrR?bJ^yu>Zyvpn;hTp*6^mM!O zu+8$^=JX7bb<~J01ZTA{q@86#&8&6~H`Ss{{?p%K!-p%L6P2TpFYz90?pD06UU# BbnE~C literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/realmedia.gif b/js/tiny_mce/themes/advanced/img/realmedia.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdfe0b9ac05869ae845fdd828eaad97cc0c69dbc GIT binary patch literal 439 zcmV;o0Z9HwNk%w1VI=?(0K^{vQcz8xz}f&njBB06v9GQ`Jv%NdDHCI&z`wqZw$(Lw zuFTBL!Pe#<92tv>h)9OE1Xh}vnVEHSaeb-GByg#tqM_B*)YRkdSdqTuipLaF8n=^^LJP4|1^gGRdo_Rl+a*grZQ1hw@Zo1ikN$oB{QbRq&z?QIckdq1aE3;Fq_(WV>Kc7gjQtQh+9OrtFhn-)LUqD<|MOIl_!(Ed#pPRE;S)g;ew3>pd zn`Wa(lc2DGa)peFw3f88dp-|`@*)AXj;@(8hwDr|7Sxsp;&YxjN*Y{PBB!TIU|!b7Zgv0OaG5)&Kwi literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/trans.gif b/js/tiny_mce/themes/advanced/img/trans.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/img/video.gif b/js/tiny_mce/themes/advanced/img/video.gif new file mode 100644 index 0000000000000000000000000000000000000000..3570104077a3b3585f11403c8d4c3fc9351f35d2 GIT binary patch literal 597 zcmZ?wbhEHb6krfwc$UTx9v<%P?Ok48Ze?YanwpxCkzrwBk(ZYzB_&l;Qw!gmM(Ep^QBwbzIoSdAh>*2n> zz9l6k0Xw#(?);y5^ls9w|LObxXI*si^YfcEYu3*P8J(S-PEJlaNB-yTd}C^Ax@_69 zzP`Ryt5)S5`=P3;TDk9SbaeFk_3NiTjGA~aFd-pf@}tlxQ>GLb7jM|Gp`oFHlaq7F zk|nvhxjsHV=g+oST3Rl6T(N1>rn0iK*Ed>3MMVn>3vF#}**q!otE>Sy|^jDoRUBoBANRc=wyaJged$+}u3x zK}ld>puWET{||NozXdO-0f3nK$V8iNkVNKl+Guy1NeYie$3 zZB}=&Zex!RYq8YfVwgNdMpdFkN|rU!Fha}0m66q>CDxczOhH^pM9qvxw1p`;Rftzu zQJ&9}g>iErlc2ORw;aC_=l*6UJ=st%r*ISVV2jgDT<)w>rXHGL<21Kdo z#uyug^O^t z0hZGrt*x!>$1C!zn`W5@`ts6_uMW)2%<0NUEKIo?SIPPE=}U0}7Z(?JcX!y=*;bF< zCWz-=h7+2ao9)(dOHM;+X=xs9)%!~xc&ICMZdRYdUQ2$^@9y(6X3NCIz{cM7f^Z=Q z1_tQ95kgl8b%R%OiYTIo7LSdE^@}A^8LW002J#EC2ui01p5U000KOz@O0K01zUifeIyT9%!RzMDgehG|mwLz+Eh; z7Z~iE zrX?OfJ^>XeDJK)xJuWOB3_l1N0Ra>g4Gk^=ED0V6LI?>4;Q|6OB{LplLMRLg8U5-E J?0y6R06W6!pgRBn literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/js/about.js b/js/tiny_mce/themes/advanced/js/about.js new file mode 100644 index 000000000..5b3584576 --- /dev/null +++ b/js/tiny_mce/themes/advanced/js/about.js @@ -0,0 +1,73 @@ +tinyMCEPopup.requireLangPack(); + +function init() { + var ed, tcont; + + tinyMCEPopup.resizeToInnerSize(); + ed = tinyMCEPopup.editor; + + // Give FF some time + window.setTimeout(insertHelpIFrame, 10); + + tcont = document.getElementById('plugintablecontainer'); + document.getElementById('plugins_tab').style.display = 'none'; + + var html = ""; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + tinymce.each(ed.plugins, function(p, n) { + var info; + + if (!p.getInfo) + return; + + html += ''; + + info = p.getInfo(); + + if (info.infourl != null && info.infourl != '') + html += ''; + else + html += ''; + + if (info.authorurl != null && info.authorurl != '') + html += ''; + else + html += ''; + + html += ''; + html += ''; + + document.getElementById('plugins_tab').style.display = ''; + + }); + + html += ''; + html += '
        ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
        ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
        '; + + tcont.innerHTML = html; + + tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; + tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; +} + +function insertHelpIFrame() { + var html; + + if (tinyMCEPopup.getParam('docs_url')) { + html = ''; + document.getElementById('iframecontainer').innerHTML = html; + document.getElementById('help_tab').style.display = 'block'; + document.getElementById('help_tab').setAttribute("aria-hidden", "false"); + } +} + +tinyMCEPopup.onInit.add(init); diff --git a/js/tiny_mce/themes/advanced/js/anchor.js b/js/tiny_mce/themes/advanced/js/anchor.js new file mode 100644 index 000000000..e528e4f42 --- /dev/null +++ b/js/tiny_mce/themes/advanced/js/anchor.js @@ -0,0 +1,42 @@ +tinyMCEPopup.requireLangPack(); + +var AnchorDialog = { + init : function(ed) { + var action, elm, f = document.forms[0]; + + this.editor = ed; + elm = ed.dom.getParent(ed.selection.getNode(), 'A'); + v = ed.dom.getAttrib(elm, 'name'); + + if (v) { + this.action = 'update'; + f.anchorName.value = v; + } + + f.insert.value = ed.getLang(elm ? 'update' : 'insert'); + }, + + update : function() { + var ed = this.editor, elm, name = document.forms[0].anchorName.value; + + if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) { + tinyMCEPopup.alert('advanced_dlg.anchor_invalid'); + return; + } + + tinyMCEPopup.restoreSelection(); + + if (this.action != 'update') + ed.selection.collapse(1); + + elm = ed.dom.getParent(ed.selection.getNode(), 'A'); + if (elm) + elm.name = name; + else + ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); + + tinyMCEPopup.close(); + } +}; + +tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); diff --git a/js/tiny_mce/themes/advanced/js/charmap.js b/js/tiny_mce/themes/advanced/js/charmap.js new file mode 100644 index 000000000..1cead6dfe --- /dev/null +++ b/js/tiny_mce/themes/advanced/js/charmap.js @@ -0,0 +1,355 @@ +/** + * charmap.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +tinyMCEPopup.requireLangPack(); + +var charmap = [ + [' ', ' ', true, 'no-break space'], + ['&', '&', true, 'ampersand'], + ['"', '"', true, 'quotation mark'], +// finance + ['¢', '¢', true, 'cent sign'], + ['€', '€', true, 'euro sign'], + ['£', '£', true, 'pound sign'], + ['¥', '¥', true, 'yen sign'], +// signs + ['©', '©', true, 'copyright sign'], + ['®', '®', true, 'registered sign'], + ['™', '™', true, 'trade mark sign'], + ['‰', '‰', true, 'per mille sign'], + ['µ', 'µ', true, 'micro sign'], + ['·', '·', true, 'middle dot'], + ['•', '•', true, 'bullet'], + ['…', '…', true, 'three dot leader'], + ['′', '′', true, 'minutes / feet'], + ['″', '″', true, 'seconds / inches'], + ['§', '§', true, 'section sign'], + ['¶', '¶', true, 'paragraph sign'], + ['ß', 'ß', true, 'sharp s / ess-zed'], +// quotations + ['‹', '‹', true, 'single left-pointing angle quotation mark'], + ['›', '›', true, 'single right-pointing angle quotation mark'], + ['«', '«', true, 'left pointing guillemet'], + ['»', '»', true, 'right pointing guillemet'], + ['‘', '‘', true, 'left single quotation mark'], + ['’', '’', true, 'right single quotation mark'], + ['“', '“', true, 'left double quotation mark'], + ['”', '”', true, 'right double quotation mark'], + ['‚', '‚', true, 'single low-9 quotation mark'], + ['„', '„', true, 'double low-9 quotation mark'], + ['<', '<', true, 'less-than sign'], + ['>', '>', true, 'greater-than sign'], + ['≤', '≤', true, 'less-than or equal to'], + ['≥', '≥', true, 'greater-than or equal to'], + ['–', '–', true, 'en dash'], + ['—', '—', true, 'em dash'], + ['¯', '¯', true, 'macron'], + ['‾', '‾', true, 'overline'], + ['¤', '¤', true, 'currency sign'], + ['¦', '¦', true, 'broken bar'], + ['¨', '¨', true, 'diaeresis'], + ['¡', '¡', true, 'inverted exclamation mark'], + ['¿', '¿', true, 'turned question mark'], + ['ˆ', 'ˆ', true, 'circumflex accent'], + ['˜', '˜', true, 'small tilde'], + ['°', '°', true, 'degree sign'], + ['−', '−', true, 'minus sign'], + ['±', '±', true, 'plus-minus sign'], + ['÷', '÷', true, 'division sign'], + ['⁄', '⁄', true, 'fraction slash'], + ['×', '×', true, 'multiplication sign'], + ['¹', '¹', true, 'superscript one'], + ['²', '²', true, 'superscript two'], + ['³', '³', true, 'superscript three'], + ['¼', '¼', true, 'fraction one quarter'], + ['½', '½', true, 'fraction one half'], + ['¾', '¾', true, 'fraction three quarters'], +// math / logical + ['ƒ', 'ƒ', true, 'function / florin'], + ['∫', '∫', true, 'integral'], + ['∑', '∑', true, 'n-ary sumation'], + ['∞', '∞', true, 'infinity'], + ['√', '√', true, 'square root'], + ['∼', '∼', false,'similar to'], + ['≅', '≅', false,'approximately equal to'], + ['≈', '≈', true, 'almost equal to'], + ['≠', '≠', true, 'not equal to'], + ['≡', '≡', true, 'identical to'], + ['∈', '∈', false,'element of'], + ['∉', '∉', false,'not an element of'], + ['∋', '∋', false,'contains as member'], + ['∏', '∏', true, 'n-ary product'], + ['∧', '∧', false,'logical and'], + ['∨', '∨', false,'logical or'], + ['¬', '¬', true, 'not sign'], + ['∩', '∩', true, 'intersection'], + ['∪', '∪', false,'union'], + ['∂', '∂', true, 'partial differential'], + ['∀', '∀', false,'for all'], + ['∃', '∃', false,'there exists'], + ['∅', '∅', false,'diameter'], + ['∇', '∇', false,'backward difference'], + ['∗', '∗', false,'asterisk operator'], + ['∝', '∝', false,'proportional to'], + ['∠', '∠', false,'angle'], +// undefined + ['´', '´', true, 'acute accent'], + ['¸', '¸', true, 'cedilla'], + ['ª', 'ª', true, 'feminine ordinal indicator'], + ['º', 'º', true, 'masculine ordinal indicator'], + ['†', '†', true, 'dagger'], + ['‡', '‡', true, 'double dagger'], +// alphabetical special chars + ['À', 'À', true, 'A - grave'], + ['Á', 'Á', true, 'A - acute'], + ['Â', 'Â', true, 'A - circumflex'], + ['Ã', 'Ã', true, 'A - tilde'], + ['Ä', 'Ä', true, 'A - diaeresis'], + ['Å', 'Å', true, 'A - ring above'], + ['Æ', 'Æ', true, 'ligature AE'], + ['Ç', 'Ç', true, 'C - cedilla'], + ['È', 'È', true, 'E - grave'], + ['É', 'É', true, 'E - acute'], + ['Ê', 'Ê', true, 'E - circumflex'], + ['Ë', 'Ë', true, 'E - diaeresis'], + ['Ì', 'Ì', true, 'I - grave'], + ['Í', 'Í', true, 'I - acute'], + ['Î', 'Î', true, 'I - circumflex'], + ['Ï', 'Ï', true, 'I - diaeresis'], + ['Ð', 'Ð', true, 'ETH'], + ['Ñ', 'Ñ', true, 'N - tilde'], + ['Ò', 'Ò', true, 'O - grave'], + ['Ó', 'Ó', true, 'O - acute'], + ['Ô', 'Ô', true, 'O - circumflex'], + ['Õ', 'Õ', true, 'O - tilde'], + ['Ö', 'Ö', true, 'O - diaeresis'], + ['Ø', 'Ø', true, 'O - slash'], + ['Œ', 'Œ', true, 'ligature OE'], + ['Š', 'Š', true, 'S - caron'], + ['Ù', 'Ù', true, 'U - grave'], + ['Ú', 'Ú', true, 'U - acute'], + ['Û', 'Û', true, 'U - circumflex'], + ['Ü', 'Ü', true, 'U - diaeresis'], + ['Ý', 'Ý', true, 'Y - acute'], + ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], + ['Þ', 'Þ', true, 'THORN'], + ['à', 'à', true, 'a - grave'], + ['á', 'á', true, 'a - acute'], + ['â', 'â', true, 'a - circumflex'], + ['ã', 'ã', true, 'a - tilde'], + ['ä', 'ä', true, 'a - diaeresis'], + ['å', 'å', true, 'a - ring above'], + ['æ', 'æ', true, 'ligature ae'], + ['ç', 'ç', true, 'c - cedilla'], + ['è', 'è', true, 'e - grave'], + ['é', 'é', true, 'e - acute'], + ['ê', 'ê', true, 'e - circumflex'], + ['ë', 'ë', true, 'e - diaeresis'], + ['ì', 'ì', true, 'i - grave'], + ['í', 'í', true, 'i - acute'], + ['î', 'î', true, 'i - circumflex'], + ['ï', 'ï', true, 'i - diaeresis'], + ['ð', 'ð', true, 'eth'], + ['ñ', 'ñ', true, 'n - tilde'], + ['ò', 'ò', true, 'o - grave'], + ['ó', 'ó', true, 'o - acute'], + ['ô', 'ô', true, 'o - circumflex'], + ['õ', 'õ', true, 'o - tilde'], + ['ö', 'ö', true, 'o - diaeresis'], + ['ø', 'ø', true, 'o slash'], + ['œ', 'œ', true, 'ligature oe'], + ['š', 'š', true, 's - caron'], + ['ù', 'ù', true, 'u - grave'], + ['ú', 'ú', true, 'u - acute'], + ['û', 'û', true, 'u - circumflex'], + ['ü', 'ü', true, 'u - diaeresis'], + ['ý', 'ý', true, 'y - acute'], + ['þ', 'þ', true, 'thorn'], + ['ÿ', 'ÿ', true, 'y - diaeresis'], + ['Α', 'Α', true, 'Alpha'], + ['Β', 'Β', true, 'Beta'], + ['Γ', 'Γ', true, 'Gamma'], + ['Δ', 'Δ', true, 'Delta'], + ['Ε', 'Ε', true, 'Epsilon'], + ['Ζ', 'Ζ', true, 'Zeta'], + ['Η', 'Η', true, 'Eta'], + ['Θ', 'Θ', true, 'Theta'], + ['Ι', 'Ι', true, 'Iota'], + ['Κ', 'Κ', true, 'Kappa'], + ['Λ', 'Λ', true, 'Lambda'], + ['Μ', 'Μ', true, 'Mu'], + ['Ν', 'Ν', true, 'Nu'], + ['Ξ', 'Ξ', true, 'Xi'], + ['Ο', 'Ο', true, 'Omicron'], + ['Π', 'Π', true, 'Pi'], + ['Ρ', 'Ρ', true, 'Rho'], + ['Σ', 'Σ', true, 'Sigma'], + ['Τ', 'Τ', true, 'Tau'], + ['Υ', 'Υ', true, 'Upsilon'], + ['Φ', 'Φ', true, 'Phi'], + ['Χ', 'Χ', true, 'Chi'], + ['Ψ', 'Ψ', true, 'Psi'], + ['Ω', 'Ω', true, 'Omega'], + ['α', 'α', true, 'alpha'], + ['β', 'β', true, 'beta'], + ['γ', 'γ', true, 'gamma'], + ['δ', 'δ', true, 'delta'], + ['ε', 'ε', true, 'epsilon'], + ['ζ', 'ζ', true, 'zeta'], + ['η', 'η', true, 'eta'], + ['θ', 'θ', true, 'theta'], + ['ι', 'ι', true, 'iota'], + ['κ', 'κ', true, 'kappa'], + ['λ', 'λ', true, 'lambda'], + ['μ', 'μ', true, 'mu'], + ['ν', 'ν', true, 'nu'], + ['ξ', 'ξ', true, 'xi'], + ['ο', 'ο', true, 'omicron'], + ['π', 'π', true, 'pi'], + ['ρ', 'ρ', true, 'rho'], + ['ς', 'ς', true, 'final sigma'], + ['σ', 'σ', true, 'sigma'], + ['τ', 'τ', true, 'tau'], + ['υ', 'υ', true, 'upsilon'], + ['φ', 'φ', true, 'phi'], + ['χ', 'χ', true, 'chi'], + ['ψ', 'ψ', true, 'psi'], + ['ω', 'ω', true, 'omega'], +// symbols + ['ℵ', 'ℵ', false,'alef symbol'], + ['ϖ', 'ϖ', false,'pi symbol'], + ['ℜ', 'ℜ', false,'real part symbol'], + ['ϑ','ϑ', false,'theta symbol'], + ['ϒ', 'ϒ', false,'upsilon - hook symbol'], + ['℘', '℘', false,'Weierstrass p'], + ['ℑ', 'ℑ', false,'imaginary part'], +// arrows + ['←', '←', true, 'leftwards arrow'], + ['↑', '↑', true, 'upwards arrow'], + ['→', '→', true, 'rightwards arrow'], + ['↓', '↓', true, 'downwards arrow'], + ['↔', '↔', true, 'left right arrow'], + ['↵', '↵', false,'carriage return'], + ['⇐', '⇐', false,'leftwards double arrow'], + ['⇑', '⇑', false,'upwards double arrow'], + ['⇒', '⇒', false,'rightwards double arrow'], + ['⇓', '⇓', false,'downwards double arrow'], + ['⇔', '⇔', false,'left right double arrow'], + ['∴', '∴', false,'therefore'], + ['⊂', '⊂', false,'subset of'], + ['⊃', '⊃', false,'superset of'], + ['⊄', '⊄', false,'not a subset of'], + ['⊆', '⊆', false,'subset of or equal to'], + ['⊇', '⊇', false,'superset of or equal to'], + ['⊕', '⊕', false,'circled plus'], + ['⊗', '⊗', false,'circled times'], + ['⊥', '⊥', false,'perpendicular'], + ['⋅', '⋅', false,'dot operator'], + ['⌈', '⌈', false,'left ceiling'], + ['⌉', '⌉', false,'right ceiling'], + ['⌊', '⌊', false,'left floor'], + ['⌋', '⌋', false,'right floor'], + ['⟨', '〈', false,'left-pointing angle bracket'], + ['⟩', '〉', false,'right-pointing angle bracket'], + ['◊', '◊', true, 'lozenge'], + ['♠', '♠', true, 'black spade suit'], + ['♣', '♣', true, 'black club suit'], + ['♥', '♥', true, 'black heart suit'], + ['♦', '♦', true, 'black diamond suit'], + [' ', ' ', false,'en space'], + [' ', ' ', false,'em space'], + [' ', ' ', false,'thin space'], + ['‌', '‌', false,'zero width non-joiner'], + ['‍', '‍', false,'zero width joiner'], + ['‎', '‎', false,'left-to-right mark'], + ['‏', '‏', false,'right-to-left mark'], + ['­', '­', false,'soft hyphen'] +]; + +tinyMCEPopup.onInit.add(function() { + tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); + addKeyboardNavigation(); +}); + +function addKeyboardNavigation(){ + var tableElm, cells, settings; + + cells = tinyMCEPopup.dom.select(".charmaplink", "charmapgroup"); + + settings ={ + root: "charmapgroup", + items: cells + }; + + tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom); +} + +function renderCharMapHTML() { + var charsPerRow = 20, tdWidth=20, tdHeight=20, i; + var html = '
        '+ + ''; + var cols=-1; + + for (i=0; i' + + '' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + + html += '
        '; + html = html.replace(/<\/tr>/g, ''); + + return html; +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); + + tinyMCEPopup.editor.focus(); + tinyMCEPopup.close(); +} + +function previewChar(codeA, codeB, codeN) { + var elmA = document.getElementById('codeA'); + var elmB = document.getElementById('codeB'); + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmB.innerHTML = '&' + codeA; + elmA.innerHTML = '&' + codeB; + elmN.innerHTML = codeN; +} diff --git a/js/tiny_mce/themes/advanced/js/color_picker.js b/js/tiny_mce/themes/advanced/js/color_picker.js new file mode 100644 index 000000000..7decac5b4 --- /dev/null +++ b/js/tiny_mce/themes/advanced/js/color_picker.js @@ -0,0 +1,329 @@ +tinyMCEPopup.requireLangPack(); + +var detail = 50, strhex = "0123456789ABCDEF", i, isMouseDown = false, isMouseOver = false; + +var colors = [ + "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", + "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", + "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", + "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", + "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", + "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", + "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", + "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", + "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", + "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", + "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", + "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", + "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", + "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", + "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", + "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", + "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", + "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", + "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", + "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", + "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", + "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", + "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", + "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", + "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", + "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", + "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" +]; + +var named = { + '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', + '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown', + '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue', + '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod', + '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green', + '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue', + '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue', + '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green', + '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey', + '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory', + '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue', + '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green', + '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey', + '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', + '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue', + '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin', + '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid', + '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff', + '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue', + '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver', + '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green', + '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', + '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green' +}; + +var namedLookup = {}; + +function init() { + var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value; + + tinyMCEPopup.resizeToInnerSize(); + + generatePicker(); + generateWebColors(); + generateNamedColors(); + + if (inputColor) { + changeFinalColor(inputColor); + + col = convertHexToRGB(inputColor); + + if (col) + updateLight(col.r, col.g, col.b); + } + + for (key in named) { + value = named[key]; + namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase(); + } +} + +function toHexColor(color) { + var matches, red, green, blue, toInt = parseInt; + + function hex(value) { + value = parseInt(value).toString(16); + + return value.length > 1 ? value : '0' + value; // Padd with leading zero + }; + + color = color.replace(/[\s#]+/g, '').toLowerCase(); + color = namedLookup[color] || color; + matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})|([a-f0-9])([a-f0-9])([a-f0-9])$/.exec(color); + + if (matches) { + if (matches[1]) { + red = toInt(matches[1]); + green = toInt(matches[2]); + blue = toInt(matches[3]); + } else if (matches[4]) { + red = toInt(matches[4], 16); + green = toInt(matches[5], 16); + blue = toInt(matches[6], 16); + } else if (matches[7]) { + red = toInt(matches[7] + matches[7], 16); + green = toInt(matches[8] + matches[8], 16); + blue = toInt(matches[9] + matches[9], 16); + } + + return '#' + hex(red) + hex(green) + hex(blue); + } + + return ''; +} + +function insertAction() { + var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); + + tinyMCEPopup.restoreSelection(); + + if (f) + f(toHexColor(color)); + + tinyMCEPopup.close(); +} + +function showColor(color, name) { + if (name) + document.getElementById("colorname").innerHTML = name; + + document.getElementById("preview").style.backgroundColor = color; + document.getElementById("color").value = color.toUpperCase(); +} + +function convertRGBToHex(col) { + var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); + + if (!col) + return col; + + var rgb = col.replace(re, "$1,$2,$3").split(','); + if (rgb.length == 3) { + r = parseInt(rgb[0]).toString(16); + g = parseInt(rgb[1]).toString(16); + b = parseInt(rgb[2]).toString(16); + + r = r.length == 1 ? '0' + r : r; + g = g.length == 1 ? '0' + g : g; + b = b.length == 1 ? '0' + b : b; + + return "#" + r + g + b; + } + + return col; +} + +function convertHexToRGB(col) { + if (col.indexOf('#') != -1) { + col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); + + r = parseInt(col.substring(0, 2), 16); + g = parseInt(col.substring(2, 4), 16); + b = parseInt(col.substring(4, 6), 16); + + return {r : r, g : g, b : b}; + } + + return null; +} + +function generatePicker() { + var el = document.getElementById('light'), h = '', i; + + for (i = 0; i < detail; i++){ + h += '
        '; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby. + h += '
        ' + + ''; + + for (i=0; i' + + ''; + if (tinyMCEPopup.editor.forcedHighContrastMode) { + h += ''; + } + h += ''; + h += ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
        '; + + el.innerHTML = h; + el.className = 'generated'; + + paintCanvas(el); + enableKeyboardNavigation(el.firstChild); +} + +function paintCanvas(el) { + tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) { + var context; + if (canvas.getContext && (context = canvas.getContext("2d"))) { + context.fillStyle = canvas.getAttribute('data-color'); + context.fillRect(0, 0, 10, 10); + } + }); +} +function generateNamedColors() { + var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; + + if (el.className == 'generated') + return; + + for (n in named) { + v = named[n]; + h += ''; + if (tinyMCEPopup.editor.forcedHighContrastMode) { + h += ''; + } + h += ''; + h += ''; + i++; + } + + el.innerHTML = h; + el.className = 'generated'; + + paintCanvas(el); + enableKeyboardNavigation(el); +} + +function enableKeyboardNavigation(el) { + tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', { + root: el, + items: tinyMCEPopup.dom.select('a', el) + }, tinyMCEPopup.dom); +} + +function dechex(n) { + return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); +} + +function computeColor(e) { + var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; + + x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); + y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); + + partWidth = document.getElementById('colors').width / 6; + partDetail = detail / 2; + imHeight = document.getElementById('colors').height; + + r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; + g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); + b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); + + coef = (imHeight - y) / imHeight; + r = 128 + (r - 128) * coef; + g = 128 + (g - 128) * coef; + b = 128 + (b - 128) * coef; + + changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); + updateLight(r, g, b); +} + +function updateLight(r, g, b) { + var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; + + for (i=0; i=0) && (i'); + }, + + init : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor; + + // Setup browse button + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '180px'; + + e = ed.selection.getNode(); + + this.fillFileList('image_list', 'tinyMCEImageList'); + + if (e.nodeName == 'IMG') { + f.src.value = ed.dom.getAttrib(e, 'src'); + f.alt.value = ed.dom.getAttrib(e, 'alt'); + f.border.value = this.getAttrib(e, 'border'); + f.vspace.value = this.getAttrib(e, 'vspace'); + f.hspace.value = this.getAttrib(e, 'hspace'); + f.width.value = ed.dom.getAttrib(e, 'width'); + f.height.value = ed.dom.getAttrib(e, 'height'); + f.insert.value = ed.getLang('update'); + this.styleVal = ed.dom.getAttrib(e, 'style'); + selectByValue(f, 'image_list', f.src.value); + selectByValue(f, 'align', this.getAttrib(e, 'align')); + this.updateStyle(); + } + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + update : function() { + var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el; + + tinyMCEPopup.restoreSelection(); + + if (f.src.value === '') { + if (ed.selection.getNode().nodeName == 'IMG') { + ed.dom.remove(ed.selection.getNode()); + ed.execCommand('mceRepaint'); + } + + tinyMCEPopup.close(); + return; + } + + if (!ed.settings.inline_styles) { + args = tinymce.extend(args, { + vspace : nl.vspace.value, + hspace : nl.hspace.value, + border : nl.border.value, + align : getSelectValue(f, 'align') + }); + } else + args.style = this.styleVal; + + tinymce.extend(args, { + src : f.src.value.replace(/ /g, '%20'), + alt : f.alt.value, + width : f.width.value, + height : f.height.value + }); + + el = ed.selection.getNode(); + + if (el && el.nodeName == 'IMG') { + ed.dom.setAttribs(el, args); + tinyMCEPopup.editor.execCommand('mceRepaint'); + tinyMCEPopup.editor.focus(); + } else { + ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); + ed.dom.setAttribs('__mce_tmp', args); + ed.dom.setAttrib('__mce_tmp', 'id', ''); + ed.undoManager.add(); + } + + tinyMCEPopup.close(); + }, + + updateStyle : function() { + var dom = tinyMCEPopup.dom, st, v, f = document.forms[0]; + + if (tinyMCEPopup.editor.settings.inline_styles) { + st = tinyMCEPopup.dom.parseStyle(this.styleVal); + + // Handle align + v = getSelectValue(f, 'align'); + if (v) { + if (v == 'left' || v == 'right') { + st['float'] = v; + delete st['vertical-align']; + } else { + st['vertical-align'] = v; + delete st['float']; + } + } else { + delete st['float']; + delete st['vertical-align']; + } + + // Handle border + v = f.border.value; + if (v || v == '0') { + if (v == '0') + st['border'] = '0'; + else + st['border'] = v + 'px solid black'; + } else + delete st['border']; + + // Handle hspace + v = f.hspace.value; + if (v) { + delete st['margin']; + st['margin-left'] = v + 'px'; + st['margin-right'] = v + 'px'; + } else { + delete st['margin-left']; + delete st['margin-right']; + } + + // Handle vspace + v = f.vspace.value; + if (v) { + delete st['margin']; + st['margin-top'] = v + 'px'; + st['margin-bottom'] = v + 'px'; + } else { + delete st['margin-top']; + delete st['margin-bottom']; + } + + // Merge + st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img'); + this.styleVal = dom.serializeStyle(st, 'img'); + } + }, + + getAttrib : function(e, at) { + var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; + + if (ed.settings.inline_styles) { + switch (at) { + case 'align': + if (v = dom.getStyle(e, 'float')) + return v; + + if (v = dom.getStyle(e, 'vertical-align')) + return v; + + break; + + case 'hspace': + v = dom.getStyle(e, 'margin-left') + v2 = dom.getStyle(e, 'margin-right'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'vspace': + v = dom.getStyle(e, 'margin-top') + v2 = dom.getStyle(e, 'margin-bottom'); + if (v && v == v2) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + + case 'border': + v = 0; + + tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { + sv = dom.getStyle(e, 'border-' + sv + '-width'); + + // False or not the same as prev + if (!sv || (sv != v && v !== 0)) { + v = 0; + return false; + } + + if (sv) + v = sv; + }); + + if (v) + return parseInt(v.replace(/[^0-9]/g, '')); + + break; + } + } + + if (v = dom.getAttrib(e, at)) + return v; + + return ''; + }, + + resetImageData : function() { + var f = document.forms[0]; + + f.width.value = f.height.value = ""; + }, + + updateImageData : function() { + var f = document.forms[0], t = ImageDialog; + + if (f.width.value == "") + f.width.value = t.preloadImg.width; + + if (f.height.value == "") + f.height.value = t.preloadImg.height; + }, + + getImageData : function() { + var f = document.forms[0]; + + this.preloadImg = new Image(); + this.preloadImg.onload = this.updateImageData; + this.preloadImg.onerror = this.resetImageData; + this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value); + } +}; + +ImageDialog.preInit(); +tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/js/tiny_mce/themes/advanced/js/link.js b/js/tiny_mce/themes/advanced/js/link.js new file mode 100644 index 000000000..53ff409e7 --- /dev/null +++ b/js/tiny_mce/themes/advanced/js/link.js @@ -0,0 +1,153 @@ +tinyMCEPopup.requireLangPack(); + +var LinkDialog = { + preInit : function() { + var url; + + if (url = tinyMCEPopup.getParam("external_link_list_url")) + document.write(''); + }, + + init : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor; + + // Setup browse button + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link'); + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '180px'; + + this.fillClassList('class_list'); + this.fillFileList('link_list', 'tinyMCELinkList'); + this.fillTargetList('target_list'); + + if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) { + f.href.value = ed.dom.getAttrib(e, 'href'); + f.linktitle.value = ed.dom.getAttrib(e, 'title'); + f.insert.value = ed.getLang('update'); + selectByValue(f, 'link_list', f.href.value); + selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target')); + selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class')); + } + }, + + update : function() { + var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20'); + + tinyMCEPopup.restoreSelection(); + e = ed.dom.getParent(ed.selection.getNode(), 'A'); + + // Remove element if there is no href + if (!f.href.value) { + if (e) { + b = ed.selection.getBookmark(); + ed.dom.remove(e, 1); + ed.selection.moveToBookmark(b); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + return; + } + } + + // Create new anchor elements + if (e == null) { + ed.getDoc().execCommand("unlink", false, null); + tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); + + tinymce.each(ed.dom.select("a"), function(n) { + if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { + e = n; + + ed.dom.setAttribs(e, { + href : href, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + }); + } else { + ed.dom.setAttribs(e, { + href : href, + title : f.linktitle.value, + target : f.target_list ? getSelectValue(f, "target_list") : null, + 'class' : f.class_list ? getSelectValue(f, "class_list") : null + }); + } + + // Don't move caret if selection was image + if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { + ed.focus(); + ed.selection.select(e); + ed.selection.collapse(0); + tinyMCEPopup.storeSelection(); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); + }, + + checkPrefix : function(n) { + if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) + n.value = 'mailto:' + n.value; + + if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) + n.value = 'http://' + n.value; + }, + + fillFileList : function(id, l) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + l = window[l]; + + if (l && l.length > 0) { + lst.options[lst.options.length] = new Option('', ''); + + tinymce.each(l, function(o) { + lst.options[lst.options.length] = new Option(o[0], o[1]); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillClassList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; + + if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { + cl = []; + + tinymce.each(v.split(';'), function(v) { + var p = v.split('='); + + cl.push({'title' : p[0], 'class' : p[1]}); + }); + } else + cl = tinyMCEPopup.editor.dom.getClasses(); + + if (cl.length > 0) { + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + + tinymce.each(cl, function(o) { + lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); + }); + } else + dom.remove(dom.getParent(id, 'tr')); + }, + + fillTargetList : function(id) { + var dom = tinyMCEPopup.dom, lst = dom.get(id), v; + + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self'); + lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank'); + + if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { + tinymce.each(v.split(','), function(v) { + v = v.split('='); + lst.options[lst.options.length] = new Option(v[0], v[1]); + }); + } + } +}; + +LinkDialog.preInit(); +tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog); diff --git a/js/tiny_mce/themes/advanced/js/source_editor.js b/js/tiny_mce/themes/advanced/js/source_editor.js new file mode 100644 index 000000000..84546ad52 --- /dev/null +++ b/js/tiny_mce/themes/advanced/js/source_editor.js @@ -0,0 +1,56 @@ +tinyMCEPopup.requireLangPack(); +tinyMCEPopup.onInit.add(onLoadInit); + +function saveContent() { + tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + // Remove Gecko spellchecking + if (tinymce.isGecko) + document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); + + document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); + + if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { + setWrap('soft'); + document.getElementById('wraped').checked = true; + } + + resizeInputs(); +} + +function setWrap(val) { + var v, n, s = document.getElementById('htmlSource'); + + s.wrap = val; + + if (!tinymce.isIE) { + v = s.value; + n = s.cloneNode(false); + n.setAttribute("wrap", val); + s.parentNode.replaceChild(n, s); + n.value = v; + } +} + +function toggleWordWrap(elm) { + if (elm.checked) + setWrap('soft'); + else + setWrap('off'); +} + +function resizeInputs() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; + + el = document.getElementById('htmlSource'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 65) + 'px'; + } +} diff --git a/js/tiny_mce/themes/advanced/langs/en.js b/js/tiny_mce/themes/advanced/langs/en.js new file mode 100755 index 000000000..0668596df --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/en.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family","font_size":"Font size","style_select":"Styles","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"More colors","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Blockquote","help_desc":"Help","newdocument_desc":"New document","image_props_desc":"Image properties","paste_desc":"Paste","copy_desc":"Copy","cut_desc":"Cut","anchor_desc":"Insert/edit anchor","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Insert custom character","backcolor_desc":"Select background color","forecolor_desc":"Select text color","custom1_desc":"Your custom description here","removeformat_desc":"Remove formatting","hr_desc":"Insert horizontal ruler","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup messy code","image_desc":"Insert/edit image","unlink_desc":"Unlink","link_desc":"Insert/edit link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"Ordered list","bullist_desc":"Unordered list","justifyfull_desc":"Align full","justifyright_desc":"Align right","justifycenter_desc":"Align center","justifyleft_desc":"Align left","striketrough_desc":"Strikethrough"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/en_dlg.js b/js/tiny_mce/themes/advanced/langs/en_dlg.js new file mode 100755 index 000000000..a9e999a96 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/en_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('en.advanced_dlg',{"link_list":"Link list","link_is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open link in a new window","link_target_same":"Open link in the same window","link_target":"Target","link_url":"Link URL","link_title":"Insert/edit link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal space","image_vspace":"Vertical space","image_dimensions":"Dimensions","image_alt":"Image description","image_list":"Image list","image_border":"Border","image_src":"Image URL","image_title":"Insert/edit image","charmap_title":"Select custom character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a color","code_wordwrap":"Word wrap","code_title":"HTML Source Editor","anchor_name":"Anchor name","anchor_title":"Insert/edit anchor","about_loaded":"Loaded plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/es.js b/js/tiny_mce/themes/advanced/langs/es.js new file mode 100755 index 000000000..b96da6028 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/es.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.advanced',{"underline_desc":"Subrayado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negrita (Ctrl+B)",dd:"Descripci\u00f3n de definici\u00f3n",dt:"T\u00e9rmino de definici\u00f3n",samp:"Ejemplo de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita",h6:"Encabezado 6",h5:"Encabezado 5",h4:"Encabezado 4",h3:"Encabezado 3",h2:"Encabezado 2",h1:"Encabezado 1",pre:"Preformateado",address:"Direcci\u00f3n",div:"Div",paragraph:"P\u00e1rrafo",block:"Formato",fontdefault:"Fuente","font_size":"Tama\u00f1o","style_select":"Estilos","more_colors":"M\u00e1s colores","toolbar_focus":"Ir a los botones de herramientas - Alt+Q, Ir al editor - Alt-Z, Ir a la ruta del elemento - Alt-X",newdocument:" \u00bfSeguro que desea limpiar todo el contenido?",path:"Ruta","clipboard_msg":"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\\n \u00bfQuiere m\u00e1s informaci\u00f3n sobre este tema?","blockquote_desc":"Cita","help_desc":"Ayuda","newdocument_desc":"Nuevo documento","image_props_desc":"Propiedades de imagen","paste_desc":"Pegar","copy_desc":"Copiar","cut_desc":"Cortar","anchor_desc":"Insertar/editar ancla","visualaid_desc":"Mostrar/ocultar l\u00ednea de gu\u00eda/elementos invisibles","charmap_desc":"Insertar caracteres personalizados","backcolor_desc":"Elegir color de fondo","forecolor_desc":"Elegir color del texto","custom1_desc":"Su descripci\u00f3n personal aqu\u00ed","removeformat_desc":"Limpiar formato","hr_desc":"Insertar regla horizontal","sup_desc":"Super\u00edndice","sub_desc":"Sub\u00edndice","code_desc":"Editar c\u00f3digo HTML","cleanup_desc":"Limpiar c\u00f3digo basura","image_desc":"Insertar/editar imagen","unlink_desc":"Quitar hiperv\u00ednculo","link_desc":"Insertar/editar hiperv\u00ednculo","redo_desc":"Rehacer (Ctrl+Y)","undo_desc":"Deshacer (Ctrl+Z)","indent_desc":"Aumentar sangr\u00eda","outdent_desc":"Reducir sangr\u00eda","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","justifyfull_desc":"Justificar","justifyright_desc":"Alinear a la derecha","justifycenter_desc":"Alinear al centro","justifyleft_desc":"Alinear a la izquierda","striketrough_desc":"Tachado","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/es_dlg.js b/js/tiny_mce/themes/advanced/langs/es_dlg.js new file mode 100755 index 000000000..b7979317f --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/es_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('es.advanced_dlg',{"link_list":"Lista de hiperv\u00ednculos","link_is_external":"La URL que introdujo parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","link_is_email":"La URL que introdujo parece ser una direcci\u00f3n de email, \u00bfdesea agregar el prefijo mailto: necesario?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir v\u00ednculo en una ventana nueva","link_target_same":"Abrir v\u00ednculo en la misma ventana","link_target":"Destino","link_url":"URL del hiperv\u00ednculo","link_title":"Insertar/editar hiperv\u00ednculo","image_align_right":"Derecha","image_align_left":"Izquierda","image_align_textbottom":"Texto debajo","image_align_texttop":"Texto arriba","image_align_bottom":"Debajo","image_align_middle":"Medio","image_align_top":"Arriba","image_align_baseline":"L\u00ednea base","image_align":"Alineaci\u00f3n","image_hspace":"Espacio horizontal","image_vspace":"Espacio vertical","image_dimensions":"Dimensi\u00f3n","image_alt":"Descripci\u00f3n de la Imagen","image_list":"Lista de la Imagen","image_border":"Borde","image_src":"URL de la Imagen","image_title":"Insertar/editar imagen","charmap_title":"Elegir caracter personalizado","colorpicker_name":"Nombre:","colorpicker_color":"Color:","colorpicker_named_title":"Colores nombrados","colorpicker_named_tab":"Nombrados","colorpicker_palette_title":"Paleta de colores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Paleta de color","colorpicker_picker_tab":"Selector","colorpicker_title":"Elegir color","code_wordwrap":"Ajustar al margen","code_title":"Editor del c\u00f3digo fuente HTML","anchor_name":"Nombre del ancla","anchor_title":"Insertar/editar ancla","about_loaded":"Complementos cargados","about_version":"Versi\u00f3n","about_author":"Autor","about_plugin":"Complemento","about_plugins":"Complementos","about_license":"Licencia","about_help":"Ayuda","about_general":"Acerca de ","about_title":"Acerca de TinyMCE","anchor_invalid":"Especifique un nombre v\u00e1lido para liga"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/et.js b/js/tiny_mce/themes/advanced/langs/et.js new file mode 100755 index 000000000..205df1575 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/et.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.advanced',{underline_desc:"Allajoonitud (Ctrl+U)",italic_desc:"Kursiiv (Ctrl+I)",bold_desc:"Rasvane (Ctrl+B)",dd:"Defineeringu kirjeldus",dt:"Defineeringu tingimus",samp:"Koodi n\u00e4ide",code:"Kood",blockquote:"Plokkviide",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Eelformeeritud",address:"Aadress",div:"Div",paragraph:"Paragraaf",block:"Formaat",fontdefault:"Font",font_size:"Fondi suurus",style_select:"Stiilid",more_colors:"Rohkem v\u00e4rve",toolbar_focus:"H\u00fcppa t\u00f6\u00f6riista nuppudele - Alt+Q, H\u00fcppa redigeerijale - Alt-Z, H\u00fcppa elemendi teele - Alt-X",newdocument:"Oled sa kindel, et tahad kustutada k\u00f5ik sisud?",path:"Tee",clipboard_msg:"Kopeeri/L\u00f5ika/Kleebi ei ole Mozillas ja Firefoxis saadaval. Kas soovid rohkem infot selle probleemi kohta?",blockquote_desc:"Plokkviide",help_desc:"Abi",newdocument_desc:"Uus dokument",image_props_desc:"Pildi kirjeldus",paste_desc:"Kleebi",copy_desc:"Kopeeri",cut_desc:"L\u00f5ika",anchor_desc:"Sisesta/redigeeri ankur",visualaid_desc:"L\u00fclita \u00fcmber juhtjooned/n\u00e4htamatud elemendid",charmap_desc:"Sisesta kohandatud kirjam\u00e4rk",backcolor_desc:"Vali tausta v\u00e4rv",forecolor_desc:"Vali teksti v\u00e4rv",custom1_desc:"Teie kohandatud kirjeldus siia",removeformat_desc:"Eemalda vormindus",hr_desc:"Sisesta horisontaalne joonlaud",sup_desc:"\u00dclaindeks",sub_desc:"Alaindeks",code_desc:"Redigeeri HTML l\u00e4htekoodi",cleanup_desc:"Puhasta segane kood",image_desc:"Sisesta/redigeeri pilt",unlink_desc:"Eemalda link",link_desc:"Sisesta/redigeeri link",redo_desc:"Tee uuesti (Ctrl+Y)",undo_desc:"V\u00f5ta tagasi (Ctrl+Z)",indent_desc:"Taanda sisse",outdent_desc:"Taanda v\u00e4lja",numlist_desc:"Korrap\u00e4rane loetelu",bullist_desc:"Ebakorrap\u00e4rane loetelu",justifyfull_desc:"T\u00e4isjoondus",justifyright_desc:"Parem joondus",justifycenter_desc:"Keskjoondus",justifyleft_desc:"Vasak joondus",striketrough_desc:"L\u00e4bijoonitud",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/et_dlg.js b/js/tiny_mce/themes/advanced/langs/et_dlg.js new file mode 100755 index 000000000..329f29b6b --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/et_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('et.advanced_dlg',{link_list:"Lingi loetelu",link_is_external:"URL, mille sisestasite, tundub olevat v\u00e4line link, kas soovite, et lisataks http:// eesliite?",link_is_email:"URL, mille te sisestasite, tundub olevat emaili aadress, kas soovite, et lisataks mailto: eesliite?",link_titlefield:"Tiitel",link_target_blank:"Ava link uues aknas",link_target_same:"Ava link samas aknas",link_target:"Sihtala",link_url:"Link URL",link_title:"Sisesta/redigeeri link",image_align_right:"Parem",image_align_left:"Vasak",image_align_textbottom:"Teksti p\u00f5hi",image_align_texttop:"Teksti tipp",image_align_bottom:"Alumine",image_align_middle:"Keskmine",image_align_top:"\u00dclemine",image_align_baseline:"Kirjajoondus",image_align:"Reastus",image_hspace:"Horisontaalne vahe",image_vspace:"Vertikaalne vahe",image_dimensions:"Dimensioonid",image_alt:"Pildi kirjeldus",image_list:"Pildi loend",image_border:"Raam",image_src:"Pildi URL",image_title:"Sisestal/redigeeri pilt",charmap_title:"Vali kohandatud t\u00e4hem\u00e4rk",colorpicker_name:"Nimi:",colorpicker_color:"V\u00e4rv:",colorpicker_named_title:"Nimetatud v\u00e4rvid",colorpicker_named_tab:"Nimetatud",colorpicker_palette_title:"Palett v\u00e4rvid",colorpicker_palette_tab:"Palett",colorpicker_picker_title:"V\u00e4rvi korjaja",colorpicker_picker_tab:"Korjaja",colorpicker_title:"Vali v\u00e4rv",code_wordwrap:"S\u00f5na pakkimine",code_title:"HTML koodi redaktor",anchor_name:"Ankru nimi",anchor_title:"Sisesta/redigeeri ankur",about_loaded:"Laetud lisad",about_version:"Versioon",about_author:"Autor",about_plugin:"Lisa",about_plugins:"Lisad",about_license:"Litsents",about_help:"Abi",about_general:"Teave",about_title:"Teave TinyMCE kohta"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/fi.js b/js/tiny_mce/themes/advanced/langs/fi.js new file mode 100755 index 000000000..6eb796710 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/fi.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.advanced',{underline_desc:"Alleviivattu (Ctrl+U)",italic_desc:"Kursivoitu (Ctrl+I)",bold_desc:"Lihavoitu (Ctrl+B)",dd:"M\u00e4\u00e4rittelyn kuvaus",dt:"M\u00e4\u00e4rittelyn ehto ",samp:"Koodiesimerkki",code:"Koodi",blockquote:"Pitk\u00e4 lainaus",h6:"Otsikko 6",h5:"Otsikko 5",h4:"Otsikko 4",h3:"Otsikko 3",h2:"Otsikko 2",h1:"Otsikko 1",pre:"Esimuotoiltu (pre)",address:"Osoite",div:"Div",paragraph:"Kappale",block:"Muotoilu",fontdefault:"Kirjasin",font_size:"Kirjasinkoko",style_select:"Tyylit",more_colors:"Enemm\u00e4n v\u00e4rej\u00e4",toolbar_focus:"Siirry ty\u00f6kaluihin - Alt+Q, Siirry tekstieditoriin - Alt-Z, Siirry elementin polkuun - Alt-X",newdocument:"Haluatko varmasti tyhjent\u00e4\u00e4 kaiken sis\u00e4ll\u00f6n?",path:"Polku",clipboard_msg:"Kopioi/Leikkaa/Liit\u00e4 -painikkeet eiv\u00e4t toimi Mozilla ja Firefox -selaimilla. Voit kuitenkin k\u00e4ytt\u00e4\u00e4 n\u00e4pp\u00e4inyhdistelmi\u00e4 kopioimiseen (Ctrl+C), leikkaamiseen (Ctrl+X) ja liitt\u00e4miseen (Ctrl+V). Haluatko lis\u00e4\u00e4 tietoa?",blockquote_desc:"Pitk\u00e4 lainaus",help_desc:"Ohje",newdocument_desc:"Uusi tiedosto",image_props_desc:"Kuvan ominaisuudet",paste_desc:"Liit\u00e4",copy_desc:"Kopioi",cut_desc:"Leikkaa",anchor_desc:"Lis\u00e4\u00e4/Muokkaa ankkuri",visualaid_desc:"Suuntaviivat/N\u00e4kym\u00e4tt\u00f6m\u00e4t elementit",charmap_desc:"Lis\u00e4\u00e4 erikoismerkki",backcolor_desc:"Valitse taustan v\u00e4ri",forecolor_desc:"Valitse tekstin v\u00e4ri",custom1_desc:"Oma kuvauksesi t\u00e4h\u00e4n",removeformat_desc:"Poista muotoilu",hr_desc:"Lis\u00e4\u00e4 vaakasuora viivain",sup_desc:"Yl\u00e4indeksi",sub_desc:"Alaindeksi",code_desc:"Muokkaa HTML-koodia",cleanup_desc:"Siisti sekainen koodi",image_desc:"Lis\u00e4\u00e4/muuta kuva",unlink_desc:"Poista linkki",link_desc:"Lis\u00e4\u00e4/muuta linkki",redo_desc:"Tee uudelleen (Ctrl+Y)",undo_desc:"Peru (Ctrl+Z)",indent_desc:"Sisenn\u00e4",outdent_desc:"Loitonna",numlist_desc:"J\u00e4rjestetty lista",bullist_desc:"J\u00e4rjest\u00e4m\u00e4t\u00f6n lista",justifyfull_desc:"Tasattu",justifyright_desc:"Tasaus oikealle",justifycenter_desc:"Keskitetty",justifyleft_desc:"Tasaus vasemmalle",striketrough_desc:"Yliviivattu",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/fi_dlg.js b/js/tiny_mce/themes/advanced/langs/fi_dlg.js new file mode 100755 index 000000000..3a065f4e9 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/fi_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fi.advanced_dlg',{link_list:"Linkkilista",link_is_external:"Antamasi osoite n\u00e4ytt\u00e4\u00e4 johtavan ulkopuoliselle sivustolle. Haluatko lis\u00e4t\u00e4 linkin eteen http://-etuliitteen? (suositus)",link_is_email:"Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 siihen mailto:-etuliitteen?",link_titlefield:"Otsikko",link_target_blank:"Avaa linkki uuteen ikkunaan",link_target_same:"Avaa linkki samassa ikkunassa",link_target:"Kohde",link_url:"Linkin osoite",link_title:"Lis\u00e4\u00e4/muuta linkki",image_align_right:"Oikealle",image_align_left:"Vasemmalle",image_align_textbottom:"Tekstin alaosaan",image_align_texttop:"Tekstin yl\u00e4osaan",image_align_bottom:"Alas",image_align_middle:"Keskelle",image_align_top:"Yl\u00f6s",image_align_baseline:"Tekstin tasossa",image_align:"Tasaus",image_hspace:"Vaakasuuntainen tila",image_vspace:"Pystysuuntainen tila",image_dimensions:"Mitat",image_alt:"Kuvan kuvaus",image_list:"Kuvalista",image_border:"Reunus",image_src:"Kuvan osoite",image_title:"Lis\u00e4\u00e4/muokkaa kuvaa",charmap_title:"Valitse erikoismerkki",colorpicker_name:"Nimi:",colorpicker_color:"V\u00e4ri:",colorpicker_named_title:"Nimetyt v\u00e4rit",colorpicker_named_tab:"Nimetty",colorpicker_palette_title:"V\u00e4ripaletti",colorpicker_palette_tab:"Paletti",colorpicker_picker_title:"V\u00e4rin valitsin",colorpicker_picker_tab:"Valitsin",colorpicker_title:"Valitse v\u00e4ri",code_wordwrap:"Automaattinen rivinvaihto",code_title:"HTML-koodin muokkaus",anchor_name:"Ankkurin nimi",anchor_title:"Liit\u00e4/muokkaa ankkuria",about_loaded:"Ladatut lis\u00e4osat",about_version:"Versio",about_author:"Kirjoittaja",about_plugin:"Lis\u00e4osa",about_plugins:"Lis\u00e4osat",about_license:"Lisenssi",about_help:"Ohje",about_general:"Tietoja",about_title:"Tietoja TinyMCE:st\u00e4",anchor_invalid:"Ole hyv\u00e4 ja anna hyv\u00e4ksytty ankkurin nimi."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/fr.js b/js/tiny_mce/themes/advanced/langs/fr.js new file mode 100755 index 000000000..23e6e4087 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/fr.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.advanced',{underline_desc:"Soulign\u00e9 (Ctrl+U)",italic_desc:"Italique (Ctrl+I)",bold_desc:"Gras (Ctrl+B)",dd:"D\u00e9finition du terme",dt:"Terme \u00e0 d\u00e9finir",samp:"Exemple de code",code:"Code",blockquote:"Bloc de citation",h6:"Titre 6",h5:"Titre 5",h4:"Titre 4",h3:"Titre 3",h2:"Titre 2",h1:"Titre 1",pre:"Pr\u00e9format\u00e9",address:"Adresse",div:"Div",paragraph:"Paragraphe",block:"Format",fontdefault:"Police",font_size:"Taille police",style_select:"Styles",more_colors:"Plus de couleurs",toolbar_focus:"Atteindre les boutons de l\'\u00e9diteur - Alt+Q, Aller \u00e0 l\'\u00e9diteur - Alt-Z, Aller au chemin de l\'\u00e9l\u00e9ment - Alt-X",newdocument:"\u00cates-vous s\u00fbr de vouloir effacer l\'int\u00e9gralit\u00e9 du document ?",path:"Chemin",clipboard_msg:"Les fonctions Copier/Couper/Coller ne sont pas valables sur Mozilla et Firefox.\\nSouhaitez-vous avoir plus d\'informations sur ce sujet ?",blockquote_desc:"Citation",help_desc:"Aide",newdocument_desc:"Nouveau document",image_props_desc:"Propri\u00e9t\u00e9s de l\'image",paste_desc:"Coller",copy_desc:"Copier",cut_desc:"Couper",anchor_desc:"Ins\u00e9rer / \u00e9diter une ancre",visualaid_desc:"Activer / d\u00e9sactiver les guides et les \u00e9l\u00e9ments invisibles",charmap_desc:"Ins\u00e9rer des caract\u00e8res sp\u00e9ciaux",backcolor_desc:"Choisir la couleur de surlignage",forecolor_desc:"Choisir la couleur du texte",custom1_desc:"Votre description personnalis\u00e9e ici",removeformat_desc:"Supprimer le formatage",hr_desc:"Ins\u00e9rer un trait horizontal",sup_desc:"Exposant",sub_desc:"Indice",code_desc:"\u00c9diter le code source HTML",cleanup_desc:"Nettoyer le code",image_desc:"Ins\u00e9rer / \u00e9diter l\'image",unlink_desc:"Supprimer le lien",link_desc:"Ins\u00e9rer / \u00e9diter le lien",redo_desc:"R\u00e9tablir (Ctrl+Y)",undo_desc:"Annuler (Ctrl+Z)",indent_desc:"Indenter",outdent_desc:"Retirer l\'indentation",numlist_desc:"Liste num\u00e9rot\u00e9e",bullist_desc:"Liste \u00e0 puces",justifyfull_desc:"Justifi\u00e9",justifyright_desc:"Align\u00e9 \u00e0 droite",justifycenter_desc:"Centr\u00e9",justifyleft_desc:"Align\u00e9 \u00e0 gauche",striketrough_desc:"Barr\u00e9",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/fr_dlg.js b/js/tiny_mce/themes/advanced/langs/fr_dlg.js new file mode 100755 index 000000000..6116a5120 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/fr_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('fr.advanced_dlg',{link_list:"Liste de liens",link_is_external:"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?",link_is_email:"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?",link_titlefield:"Titre",link_target_blank:"Ouvrir dans une nouvelle fen\u00eatre",link_target_same:"Ouvrir dans la m\u00eame fen\u00eatre",link_target:"Cible",link_url:"URL du lien",link_title:"Ins\u00e9rer / \u00e9diter un lien",image_align_right:"Droite (flottant)",image_align_left:"Gauche (flottant)",image_align_textbottom:"Texte en bas",image_align_texttop:"Texte en haut",image_align_bottom:"En bas",image_align_middle:"Au milieu",image_align_top:"En haut",image_align_baseline:"Normal",image_align:"Alignement",image_hspace:"Espacement horizontal",image_vspace:"Espacement vertical",image_dimensions:"Dimensions",image_alt:"Description de l\'image",image_list:"Liste d\'images",image_border:"Bordure",image_src:"URL de l\'image",image_title:"Ins\u00e9rer / \u00e9diter une image",charmap_title:"Choisir le caract\u00e8re \u00e0 ins\u00e9rer",colorpicker_name:"Nom :",colorpicker_color:"Couleur :",colorpicker_named_title:"Couleurs nomm\u00e9es",colorpicker_named_tab:"Noms",colorpicker_palette_title:"Couleurs de la palette",colorpicker_palette_tab:"Palette",colorpicker_picker_title:"Nuancier",colorpicker_picker_tab:"Nuancier",colorpicker_title:"Choisir une couleur",code_wordwrap:"Retour \u00e0 la ligne",code_title:"\u00c9diteur de source HTML",anchor_name:"Nom de l\'ancre",anchor_title:"Ins\u00e9rer / \u00e9diter une ancre",about_loaded:"Plugins charg\u00e9s",about_version:"Version",about_author:"Auteur",about_plugin:"Plugin",about_plugins:"Plugins",about_license:"Licence",about_help:"Aide",about_general:"\u00c0 propos",about_title:"\u00c0 propos de TinyMCE",anchor_invalid:"Veuillez sp\u00e9cifier un nom d\'ancre valide."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/gl.js b/js/tiny_mce/themes/advanced/langs/gl.js new file mode 100755 index 000000000..91d68b40d --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/gl.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.advanced',{underline_desc:"Subli\u00f1ado (Ctrl+U)",italic_desc:"Cursiva (Ctrl+I)",bold_desc:"Negrita (Ctrl+B)",dd:"Descripci\u00f3n de definici\u00f3n",dt:"Termo de definici\u00f3n",samp:"Mostra de c\u00f3digo",code:"C\u00f3digo",blockquote:"Bloque de cita",h6:"Encabezamento 6",h5:"Encabezamento 5",h4:"Encabezamento 4",h3:"Encabezamento 3",h2:"Encabezamento 2",h1:"Encabezamento 1",pre:"Pre-formateado",address:"Enderezo",div:"Div",paragraph:"P\u00e1rrafo",block:"Formato",fontdefault:"Fonte",font_size:"Tama\u00f1o",style_select:"Estilos",more_colors:"M\u00e1is cores",toolbar_focus:"Ir \u00f3s bot\u00f3ns de ferramentas - Alt+Q, Ir \u00f3 editor - Alt-Z, Ir \u00e1 ruta do elemento - Alt-X",newdocument:"\u00bfSeguro que desexa limpar todo o contido?",path:"Ruta",clipboard_msg:"Copiar/Cortar/Pegar non est\u00e1 disponible en Mozilla e Firefox.\n\u00bfDesexa obter mais informaci\u00f3n sobre de este asunto?",blockquote_desc:"Cita",help_desc:"Axuda",newdocument_desc:"Novo documento",image_props_desc:"Propiedades de imaxe",paste_desc:"Pegar",copy_desc:"Copiar",cut_desc:"Cortar",anchor_desc:"Insertar/editar \u00e1ncora",visualaid_desc:"Mostrar/ocultar li\u00f1a de gu\u00eda/elementos invisibres",charmap_desc:"Insertar caracteres persoalizados",backcolor_desc:"Seleccionar cor do fondo",forecolor_desc:"Seleccionar cor do texto",custom1_desc:"A s\u00faa descripci\u00f3n persoal aqu\u00ed",removeformat_desc:"quitar formato",hr_desc:"Insertar regra horizontal",sup_desc:"Super\u00edndice",sub_desc:"Sub\u00edndice",code_desc:"Editar c\u00f3digo HTML",cleanup_desc:"Limpiar lixo no c\u00f3digo",image_desc:"Insertar/editar imaxe",unlink_desc:"Quitar hiperv\u00ednculo",link_desc:"Insertar/editar hiperv\u00ednculo",redo_desc:"Re-facer (Ctrl+Y)",undo_desc:"Desfacer (Ctrl+Z)",indent_desc:"Aumentar sangr\u00eda",outdent_desc:"Reducir sangr\u00eda",numlist_desc:"Lista ordenada",bullist_desc:"Lista desordenada",justifyfull_desc:"Xustificar",justifyright_desc:"Ali\u00f1ar \u00e1 dereita",justifycenter_desc:"Ali\u00f1ar \u00f3 centro",justifyleft_desc:"Ali\u00f1ar \u00e1 esquerda",striketrough_desc:"Tachado",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/gl_dlg.js b/js/tiny_mce/themes/advanced/langs/gl_dlg.js new file mode 100755 index 000000000..4496cdc98 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/gl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('gl.advanced_dlg',{link_list:"Lista de hiperv\u00ednculos",link_is_external:"A URL introducida semella ser un v\u00ednculo externo, \u00bfDesexa engadi-lo prefixo necesario http://?",link_is_email:"A URL introducida semella ser un enderezo de e-mail, \u00bfDesexa engadi-lo prefixo necesario mailto:?",link_titlefield:"T\u00edtulo",link_target_blank:"Abrir v\u00ednculo nunha vent\u00e1 nova",link_target_same:"Abrir v\u00ednculo na mesma vent\u00e1",link_target:"Obxetivo",link_url:"URL do enlace",link_title:"Insertar/editar enlace",image_align_right:"Dereita",image_align_left:"Esquerda",image_align_textbottom:"Texto abaixo",image_align_texttop:"Texto arriba",image_align_bottom:"Abaixo",image_align_middle:"Medio",image_align_top:"Arriba",image_align_baseline:"Li\u00f1a base",image_align:"Ali\u00f1aci\u00f3n",image_hspace:"Espacio horizontal",image_vspace:"Espacio vertical",image_dimensions:"Dimensi\u00f3n",image_alt:"Descripci\u00f3n da imaxe",image_list:"Lista de Imaxes",image_border:"Borde",image_src:"URL da imaxe",image_title:"Insertar/editar imaxe",charmap_title:"Seleccionar caracter personalizado",colorpicker_name:"Nome:",colorpicker_color:"Cor:",colorpicker_named_title:"Cores nomeados",colorpicker_named_tab:"Nomeados",colorpicker_palette_title:"Paleta de cores",colorpicker_palette_tab:"Paleta",colorpicker_picker_title:"Selector de cores",colorpicker_picker_tab:"Selector",colorpicker_title:"Seleccionar cor",code_wordwrap:"Cortar li\u00f1as autom\u00e1ticamente",code_title:"Editor HTML",anchor_name:"Nome da \u00e1ncora",anchor_title:"Insertar/editar \u00e1ncora",about_loaded:"Comprementos cargados",about_version:"Versi\u00f3n",about_author:"Autor",about_plugin:"Compremento",about_plugins:"Comprementos",about_license:"Licencia",about_help:"Axuda",about_general:"Sobre",about_title:"Sobre TinyMCE"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/he.js b/js/tiny_mce/themes/advanced/langs/he.js new file mode 100755 index 000000000..a8ed68c02 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/he.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.advanced',{underline_desc:"\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d5\u05df (Ctrl+U)",italic_desc:"\u05e0\u05d8\u05d5\u05d9 (Ctrl+I)",bold_desc:"\u05de\u05d5\u05d3\u05d2\u05e9 (Ctrl+B)",dd:"\u05d4\u05d2\u05d3\u05e8\u05ea \u05d4\u05de\u05d5\u05e9\u05d2",dt:"\u05de\u05d5\u05e9\u05d2",samp:"\u05d3\u05d5\u05d2\u05de\u05ea \u05e7\u05d5\u05d3",code:"\u05e7\u05d5\u05d3",blockquote:"\u05e6\u05d9\u05d8\u05d5\u05d8 \u05e7\u05d8\u05e2",h6:"\u05db\u05d5\u05ea\u05e8\u05ea 6",h5:"\u05db\u05d5\u05ea\u05e8\u05ea 5",h4:"\u05db\u05d5\u05ea\u05e8\u05ea 4",h3:"\u05db\u05d5\u05ea\u05e8\u05ea 3",h2:"\u05db\u05d5\u05ea\u05e8\u05ea 2",h1:"\u05db\u05d5\u05ea\u05e8\u05ea 1",pre:"Preformatted",address:"\u05db\u05ea\u05d5\u05d1\u05ea",div:"Div",paragraph:"\u05e4\u05e1\u05e7\u05d4",block:"\u05e2\u05d9\u05e6\u05d5\u05d1",fontdefault:"\u05d2\u05d5\u05e4\u05df",font_size:"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df",style_select:"\u05e1\u05d2\u05e0\u05d5\u05e0\u05d5\u05ea",more_colors:"\u05e2\u05d5\u05d3 \u05e6\u05d1\u05e2\u05d9\u05dd",toolbar_focus:"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05db\u05dc\u05d9\u05dd - Alt+Q, \u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05de\u05e2\u05d1\u05d3 \u05ea\u05de\u05dc\u05d9\u05dc\u05d9\u05dd - Alt-Z, \u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05e0\u05ea\u05d9\u05d1 \u05d4\u05d0\u05dc\u05de\u05d8\u05d9\u05dd - Alt-X",newdocument:"\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05de\u05d7\u05d5\u05e7 \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d5\u05db\u05df?",path:"path",clipboard_msg:"\u05d4\u05e2\u05ea\u05e7/\u05d2\u05d6\u05d5\u05e8/\u05d4\u05d3\u05d1\u05e7 \u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d9\u05dd \u05d1 Mozilla \u05d5\u05d1-Firefox.\n \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e7\u05d1\u05dc \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3 \u05e2\u05dc \u05d4\u05e0\u05d5\u05e9\u05d0?",blockquote_desc:"\u05e6\u05d9\u05d8\u05d5\u05d8",help_desc:"\u05e2\u05d6\u05e8\u05d4",newdocument_desc:"\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9",image_props_desc:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",paste_desc:"\u05d4\u05d3\u05d1\u05e7\u05d4",copy_desc:"\u05d4\u05e2\u05ea\u05e7\u05d4",cut_desc:"\u05d2\u05d6\u05d9\u05e8\u05d4",anchor_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05d9\u05de\u05e0\u05d9\u05d4",visualaid_desc:"\u05d4\u05e6\u05d2\u05d4 \u05d0\u05d5 \u05d4\u05e1\u05ea\u05e8\u05d4 \u05e9\u05dc \u05e1\u05d9\u05de\u05d5\u05e0\u05d9 \u05e2\u05d9\u05e6\u05d5\u05d1",charmap_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e1\u05d9\u05de\u05df",backcolor_desc:"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",forecolor_desc:"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2 \u05d2\u05d5\u05e4\u05df",custom1_desc:"\u05d4\u05ea\u05d0\u05d5\u05e8 \u05e9\u05dc\u05da \u05db\u05d0\u05d5",removeformat_desc:"\u05d4\u05e1\u05e8\u05ea \u05e2\u05d9\u05e6\u05d5\u05d1",hr_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e7\u05d5 \u05de\u05e4\u05e8\u05d9\u05d3",sup_desc:"\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9",sub_desc:"\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9",code_desc:"\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d5\u05d3 HTML",cleanup_desc:"\u05e0\u05d9\u05e7\u05d5\u05d9 \u05e7\u05d5\u05d3",image_desc:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05d3\u05e3 \u05ea\u05de\u05d5\u05e0\u05d4",unlink_desc:"\u05d4\u05e1\u05e8\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",link_desc:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",redo_desc:"\u05d7\u05d6\u05e8\u05d4 \u05e2\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Y)",undo_desc:"\u05d1\u05d9\u05d8\u05d5\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Z)",indent_desc:"\u05d4\u05e7\u05d8\u05e0\u05ea \u05db\u05e0\u05d9\u05e1\u05d4",outdent_desc:"\u05d4\u05d2\u05d3\u05dc\u05ea \u05db\u05e0\u05d9\u05e1\u05d4",numlist_desc:"\u05de\u05e1\u05e4\u05d5\u05e8",bullist_desc:"\u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd",justifyfull_desc:"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd",justifyright_desc:"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05dc\u05d9\u05de\u05d9\u05df",justifycenter_desc:"\u05de\u05d9\u05e8\u05db\u05d5\u05d6 \u05d8\u05e7\u05e1\u05d8",justifyleft_desc:"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05dc\u05e9\u05de\u05d0\u05dc",striketrough_desc:"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/he_dlg.js b/js/tiny_mce/themes/advanced/langs/he_dlg.js new file mode 100755 index 000000000..13dbc3562 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/he_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('he.advanced_dlg',{link_list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd",link_is_external:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:// \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?",link_is_email:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05d9\u05d9\u05dc \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea MAILTO \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?",link_titlefield:"\u05db\u05d5\u05ea\u05e8\u05ea",link_target_blank:"\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9",link_target_same:"\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d7\u05dc\u05d5\u05df",link_target:"\u05d9\u05e2\u05d3",link_url:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",link_title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",image_align_right:"\u05d9\u05de\u05d9\u05df",image_align_left:"\u05e9\u05de\u05d0\u05dc",image_align_textbottom:"\u05e7\u05e6\u05d4 \u05d4\u05ea\u05d7\u05ea\u05d5\u05df \u05e9\u05dc \u05d4\u05d8\u05e7\u05e1\u05d8",image_align_texttop:"\u05e7\u05e6\u05d4 \u05d4\u05e2\u05dc\u05d9\u05d5\u05df \u05e9\u05dc \u05d4\u05d8\u05e7\u05e1\u05d8",image_align_bottom:"\u05e7\u05e6\u05d4 \u05d4\u05ea\u05d7\u05ea\u05d5\u05df",image_align_middle:"\u05d0\u05de\u05e6\u05e2",image_align_top:"\u05e7\u05e6\u05d4 \u05d4\u05e2\u05dc\u05d9\u05d5\u05df",image_align_baseline:"\u05e7\u05d5 \u05d4\u05d4\u05ea\u05d7\u05dc\u05d4",image_align:"\u05d9\u05d9\u05e9\u05d5\u05e8",image_hspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",image_vspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9",image_dimensions:"\u05d2\u05d5\u05d3\u05dc",image_alt:"\u05ea\u05d9\u05d0\u05d5\u05e8",image_list:"\u05e8\u05e9\u05d9\u05de\u05d4",image_border:"\u05d2\u05d1\u05d5\u05dc",image_src:"\u05db\u05ea\u05d5\u05d1\u05ea:",image_title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",charmap_title:"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e1\u05d9\u05de\u05df",colorpicker_name:"\u05e9\u05dd:",colorpicker_color:"\u05e6\u05d1\u05e2:",colorpicker_named_title:"\u05e6\u05d1\u05e2\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05e9\u05de\u05d5\u05ea",colorpicker_named_tab:"\u05e6\u05d1\u05e2\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05e9\u05de\u05d5\u05ea",colorpicker_palette_title:"\u05dc\u05d5\u05d7 \u05e6\u05d1\u05e2\u05d9\u05dd",colorpicker_palette_tab:"\u05dc\u05d5\u05d7 \u05e6\u05d1\u05e2\u05d9\u05dd",colorpicker_picker_title:"\u05d1\u05d5\u05e8\u05e8 \u05d4\u05e6\u05d1\u05e2\u05d9\u05dd",colorpicker_picker_tab:"\u05d1\u05d5\u05e8\u05e8",colorpicker_title:"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2",code_wordwrap:"\u05d2\u05dc\u05d9\u05e9\u05ea \u05d8\u05e7\u05e1\u05d8",code_title:"\u05e2\u05d5\u05e8\u05da \u05d4-HTML",anchor_name:"\u05e9\u05dd \u05d4\u05e1\u05d9\u05de\u05e0\u05d9\u05d4",anchor_title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05d9\u05de\u05e0\u05d9\u05d4",about_loaded:"\u05ea\u05d5\u05e1\u05e4\u05d5\u05ea \u05e4\u05e2\u05d9\u05dc\u05d5\u05ea",about_version:"\u05d2\u05d9\u05e8\u05e1\u05d4",about_author:"\u05d9\u05d5\u05e6\u05e8",about_plugin:"\u05ea\u05d5\u05e1\u05e4\u05ea",about_plugins:"\u05ea\u05d5\u05e1\u05e4\u05d5\u05ea",about_license:"\u05e8\u05e9\u05d9\u05d5\u05df",about_help:"\u05e2\u05d6\u05e8\u05d4",about_general:"\u05d0\u05d5\u05d3\u05d5\u05ea",about_title:"\u05d0\u05d5\u05d3\u05d5\u05ea TinyMCE",anchor_invalid:"\u05e0\u05d0 \u05dc\u05e6\u05d9\u05d9\u05df \u05e9\u05dd \u05d7\u05d5\u05e7\u05d9"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/hu.js b/js/tiny_mce/themes/advanced/langs/hu.js new file mode 100755 index 000000000..9d731b6ce --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/hu.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.advanced',{"underline_desc":"Al\u00e1h\u00fazott (Ctrl+U)","italic_desc":"D\u0151lt (Ctrl+I)","bold_desc":"F\u00e9lk\u00f6v\u00e9r (Ctrl+B)",dd:"Defin\u00edci\u00f3 a defin\u00edci\u00f3s list\u00e1ban",dt:"Defini\u00e1lt kifejez\u00e9s a defin\u00edci\u00f3s list\u00e1ban",samp:"K\u00f3d minta",code:"K\u00f3d",blockquote:"Id\u00e9zet",h6:"C\u00edmsor 6",h5:"C\u00edmsor 5",h4:"C\u00edmsor 4",h3:"C\u00edmsor 3",h2:"C\u00edmsor 2",h1:"C\u00edmsor 1",pre:"El\u0151form\u00e1zott",address:"C\u00edm",div:"Div",paragraph:"Bekezd\u00e9s",block:"Form\u00e1tum",fontdefault:"Bet\u0171t\u00edpus","font_size":"Bet\u0171m\u00e9ret","style_select":"St\u00edlusok","more_colors":"T\u00f6bb sz\u00edn","toolbar_focus":"Eszk\u00f6zgombokra ugr\u00e1s - Alt+Q, Szerkeszt\u0151h\u00f6z ugr\u00e1s - Alt-Z, Elem\u00fatvonalhoz ugr\u00e1s - Alt-X",newdocument:"Biztosan t\u00f6rli az eddigi tartalmat?",path:"\u00datvonal","clipboard_msg":"A M\u00e1sol\u00e1s/Kiv\u00e1g\u00e1s/Besz\u00far\u00e1s funkci\u00f3k nem \u00e9rhet\u0151ek el Mozilla \u00e9s Firefox alatt. K\u00edv\u00e1n t\u00f6bbet tudni err\u0151l a t\u00e9m\u00e1r\u00f3l?","blockquote_desc":"Id\u00e9zet","help_desc":"Seg\u00edts\u00e9g","newdocument_desc":"\u00daj dokumentum","image_props_desc":"K\u00e9p tulajdons\u00e1gai","paste_desc":"Besz\u00far\u00e1s","copy_desc":"M\u00e1sol\u00e1s","cut_desc":"Kiv\u00e1g\u00e1s","anchor_desc":"Horgony besz\u00far\u00e1sa/szerkeszt\u00e9se","visualaid_desc":"Vezet\u0151vonalak/nem l\u00e1that\u00f3 elemek ki-/bekapcsol\u00e1sa","charmap_desc":"Speci\u00e1lis karakter besz\u00far\u00e1sa","backcolor_desc":"H\u00e1tt\u00e9rsz\u00edn v\u00e1laszt\u00e1sa","forecolor_desc":"Sz\u00f6vegsz\u00edn v\u00e1laszt\u00e1sa","custom1_desc":"Az \u00f6n egyedi le\u00edr\u00e1sa","removeformat_desc":"Form\u00e1z\u00e1s elt\u00e1vol\u00edt\u00e1sa","hr_desc":"V\u00edzszintes elv\u00e1laszt\u00f3 besz\u00far\u00e1sa","sup_desc":"Fels\u0151 index","sub_desc":"Als\u00f3 index","code_desc":"HTML forr\u00e1s szerkeszt\u00e9se","cleanup_desc":"Rendetlen k\u00f3d takar\u00edt\u00e1sa","image_desc":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","unlink_desc":"Link megsz\u00fcntet\u00e9se","link_desc":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","redo_desc":"M\u00e9gis v\u00e9grehajt (Ctrl+Y)","undo_desc":"Visszavon\u00e1s (Ctrl+Z)","indent_desc":"Beh\u00faz\u00e1s n\u00f6vel\u00e9se","outdent_desc":"Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se","numlist_desc":"Rendezett lista","bullist_desc":"Rendezetlen lista","justifyfull_desc":"Sorkiz\u00e1rt","justifyright_desc":"Jobbra z\u00e1rt","justifycenter_desc":"K\u00f6z\u00e9pre z\u00e1rt","justifyleft_desc":"Balra z\u00e1rt","striketrough_desc":"\u00c1th\u00fazott","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/hu_dlg.js b/js/tiny_mce/themes/advanced/langs/hu_dlg.js new file mode 100755 index 000000000..3da818a0d --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/hu_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('hu.advanced_dlg',{"link_list":"Link lista","link_is_external":"A be\u00edrt URL k\u00fcls\u0151 hivatkoz\u00e1snak t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges http://-vel kieg\u00e9sz\u00edteni?","link_is_email":"A be\u00edrt URL e-mail c\u00edmnek t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges mailto:-val kieg\u00e9sz\u00edteni?","link_titlefield":"C\u00edm","link_target_blank":"Link \u00faj ablakba nyit\u00e1sa","link_target_same":"Link azonos ablakba nyit\u00e1sa","link_target":"Target","link_url":"Link URL","link_title":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","image_align_right":"Jobbra","image_align_left":"Balra","image_align_textbottom":"Sz\u00f6veg alj\u00e1hoz","image_align_texttop":"Sz\u00f6veg tetej\u00e9hez","image_align_bottom":"Lentre","image_align_middle":"K\u00f6z\u00e9pre","image_align_top":"Fentre","image_align_baseline":"Alapvonalhoz","image_align":"Igaz\u00edt\u00e1s","image_hspace":"V\u00edzszintes t\u00e1v","image_vspace":"F\u00fcgg\u0151leges t\u00e1v","image_dimensions":"M\u00e9retek","image_alt":"K\u00e9p le\u00edr\u00e1s","image_list":"K\u00e9p lista","image_border":"Keret","image_src":"K\u00e9p URL","image_title":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","charmap_title":"Egyedi karakter v\u00e1laszt\u00e1sa","colorpicker_name":"N\u00e9v:","colorpicker_color":"Sz\u00edn:","colorpicker_named_title":"Elnevezett sz\u00ednek","colorpicker_named_tab":"Elnevezettek","colorpicker_palette_title":"Paletta sz\u00ednek","colorpicker_palette_tab":"Paletta","colorpicker_picker_title":"Sz\u00ednv\u00e1laszt\u00f3","colorpicker_picker_tab":"V\u00e1laszt\u00f3","colorpicker_title":"Sz\u00ednv\u00e1laszt\u00e1s","code_wordwrap":"Sz\u00f6veg t\u00f6rdel\u00e9se","code_title":"HTML forr\u00e1s szerkeszt\u00e9se","anchor_name":"Horgonyn\u00e9v","anchor_title":"Horgony besz\u00far\u00e1sa/szerkeszt\u00e9se","about_loaded":"Bet\u00f6lt\u00f6tt pluginok","about_version":"Verzi\u00f3","about_author":"Szerz\u0151","about_plugin":"Plugin","about_plugins":"Pluginok","about_license":"Licenc","about_help":"Seg\u00edts\u00e9g","about_general":"R\u00f3lunk","about_title":"A TinyMCE-r\u0151l","anchor_invalid":"Adjon meg egy helyes horgony nevet."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/id.js b/js/tiny_mce/themes/advanced/langs/id.js new file mode 100755 index 000000000..f91c64106 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/id.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.advanced',{underline_desc:"Underline (Ctrl+U)",italic_desc:"Italic (Ctrl+I)",bold_desc:"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family",font_size:"Font size",style_select:"Styles",more_colors:"More colors",toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Yakin untuk menghapus semua konten?",path:"Path",clipboard_msg:"Copy/Cut/Paste tidak tersedia pada Mozilla dan Firefox.\\nButuh info selengkapnya?",blockquote_desc:"Blockquote",help_desc:"Help",newdocument_desc:"New document",image_props_desc:"Image properties",paste_desc:"Paste",copy_desc:"Copy",cut_desc:"Cut",anchor_desc:"Insert/edit anchor",visualaid_desc:"Toggle guidelines/invisible elements",charmap_desc:"Insert custom character",backcolor_desc:"Pilih background color",forecolor_desc:"Pilih text color",custom1_desc:"Deskripsi disini",removeformat_desc:"Remove formatting",hr_desc:"Insert horizontal ruler",sup_desc:"Superscript",sub_desc:"Subscript",code_desc:"Edit HTML Source",cleanup_desc:"Cleanup messy code",image_desc:"Insert/edit image",unlink_desc:"Unlink",link_desc:"Insert/edit link",redo_desc:"Redo (Ctrl+Y)",undo_desc:"Undo (Ctrl+Z)",indent_desc:"Indent",outdent_desc:"Outdent",numlist_desc:"Ordered list",bullist_desc:"Unordered list",justifyfull_desc:"Align full",justifyright_desc:"Align right",justifycenter_desc:"Align center",justifyleft_desc:"Align left",striketrough_desc:"Strikethrough",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/id_dlg.js b/js/tiny_mce/themes/advanced/langs/id_dlg.js new file mode 100755 index 000000000..5cb66e397 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/id_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('id.advanced_dlg',{link_list:"Daftar Link",link_is_external:"URL yang Anda sisipkan tampaknya link eksternal, Anda ingin menambahkan awalan \'http://\'?",link_is_email:"URL yang Anda sisipkan tampaknya e-mail, Anda ingin menambahkan awalan \'mailto:\'?",link_titlefield:"Judul",link_target_blank:"Buka link pada window baru",link_target_same:"Buka link pada window yang sama",link_target:"Target",link_url:"Link URL",link_title:"Insert/edit link",image_align_right:"Right",image_align_left:"Left",image_align_textbottom:"Text bottom",image_align_texttop:"Text top",image_align_bottom:"Bottom",image_align_middle:"Middle",image_align_top:"Top",image_align_baseline:"Baseline",image_align:"Alignment",image_hspace:"Horizontal space",image_vspace:"Vertical space",image_dimensions:"Dimensions",image_alt:"Image description",image_list:"Image list",image_border:"Border",image_src:"Image URL",image_title:"Insert/edit image",charmap_title:"Pilih custom character",colorpicker_name:"Name:",colorpicker_color:"Color:",colorpicker_named_title:"Named colors",colorpicker_named_tab:"Named",colorpicker_palette_title:"Palette colors",colorpicker_palette_tab:"Palette",colorpicker_picker_title:"Color picker",colorpicker_picker_tab:"Picker",colorpicker_title:"Select a color",code_wordwrap:"Word wrap",code_title:"HTML Source Editor",anchor_name:"Anchor name",anchor_title:"Insert/edit anchor",about_loaded:"Loaded plugins",about_version:"Versi",about_author:"Penulis",about_plugin:"Plugin",about_plugins:"Plugins",about_license:"Lisensi",about_help:"Bantuan",about_general:"Tentang",about_title:"Tentang TinyMCE"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/it.js b/js/tiny_mce/themes/advanced/langs/it.js new file mode 100755 index 000000000..d77ffb117 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/it.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.advanced',{underline_desc:"Sottolineato (Ctrl+U)",italic_desc:"Corsivo (Ctrl+I)",bold_desc:"Grassetto (Ctrl+B)",dd:"Descrizione definizione",dt:"Termine definizione",samp:"Esempio codice",code:"Codice",blockquote:"Testo quotato",h6:"Intestazione 6",h5:"Intestazione 5",h4:"Intestazione 4",h3:"Intestazione 3",h2:"Intestazione 2",h1:"Intestazione 1",pre:"Preformattato",address:"Indirizzo",div:"Div",paragraph:"Paragrafo",block:"Formato",fontdefault:"Famiglia carattere",font_size:"Grandezza carattere",style_select:"Stili",more_colors:"Colori aggiuntivi",toolbar_focus:"Vai ai pulsanti strumento - Alt+Q, Vai all\'editor - Alt-Z, Vai al percorso dell\'elemento - Alt-X",newdocument:"Sei sicuro di voler cancellare tutti i contenuti?",path:"Percorso",clipboard_msg:"Copia/Taglia/Incolla non \u00e8 disponibile in Mozilla e Firefox..\nSi desidera avere maggiori informazioni su questo problema?",blockquote_desc:"Testo quotato",help_desc:"Aiuto",newdocument_desc:"Nuovo documento",image_props_desc:"Propriet\u00e0 immagine",paste_desc:"Incolla",copy_desc:"Copia",cut_desc:"Taglia",anchor_desc:"Inserisci/modifica ancora",visualaid_desc:"Mostra/nascondi linee guida/elementi invisibili",charmap_desc:"Inserisci carattere speciale",backcolor_desc:"Seleziona colore sfondo",forecolor_desc:"Seleziona colore testo",custom1_desc:"La tua descrizione personalizzata qui",removeformat_desc:"Rimuovi formattazione",hr_desc:"Inserisci riga orizzontale",sup_desc:"Apice",sub_desc:"Pedice",code_desc:"Modifica sorgente HTML",cleanup_desc:"Pulisci codice disordinato",image_desc:"Inserisci/modifica immagine",unlink_desc:"Togli collegamento",link_desc:"Inserisci/modifica collegamento",redo_desc:"Ripristina (Ctrl+Y)",undo_desc:"Annulla (Ctrl+Z)",indent_desc:"Sposta verso interno",outdent_desc:"Sposta verso esterno",numlist_desc:"Lista ordinata",bullist_desc:"Lista non ordinata",justifyfull_desc:"Giustifica",justifyright_desc:"Allinea a destra",justifycenter_desc:"Centra",justifyleft_desc:"Allinea a sinistra",striketrough_desc:"Barrato",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/it_dlg.js b/js/tiny_mce/themes/advanced/langs/it_dlg.js new file mode 100755 index 000000000..1d3f96710 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/it_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('it.advanced_dlg',{link_list:"Lista link",link_is_external:"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?",link_is_email:"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?",link_titlefield:"Titolo",link_target_blank:"Apri link in una nuova finestra",link_target_same:"Apri link nella stessa finestra",link_target:"Target",link_url:"URL link",link_title:"Inserisci/modifica collegamento",image_align_right:"A destra",image_align_left:"A sinistra",image_align_textbottom:"In basso al testo",image_align_texttop:"In alto al testo",image_align_bottom:"In basso",image_align_middle:"In mezzo",image_align_top:"In alto",image_align_baseline:"Alla base",image_align:"Allineamentot",image_hspace:"Spaziatura orizz.",image_vspace:"Spaziatura vert.",image_dimensions:"Dimensioni",image_alt:"Descrizione",image_list:"Lista immagini",image_border:"Bordo",image_src:"URL immagine",image_title:"Inserisci/modifica immagine",charmap_title:"Seleziona carattere speciale",colorpicker_name:"Nome:",colorpicker_color:"Colore:",colorpicker_named_title:"Colori per nome",colorpicker_named_tab:"Per nome",colorpicker_palette_title:"Tavolozza dei colori",colorpicker_palette_tab:"Tavolozza",colorpicker_picker_title:"Selettore colori",colorpicker_picker_tab:"Selettore",colorpicker_title:"Seleziona un colore",code_wordwrap:"A capo automatico",code_title:"Editor sorgente HTML",anchor_name:"Nome ancora",anchor_title:"Inserisci/modifica ancora",about_loaded:"Plugin caricati",about_version:"Versione",about_author:"Autore",about_plugin:"Plugin",about_plugins:"Plugins",about_license:"Licenza",about_help:"Aiuto",about_general:"Informazioni",about_title:"Informazioni su TinyMCE"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/lt.js b/js/tiny_mce/themes/advanced/langs/lt.js new file mode 100755 index 000000000..dcaaefdec --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/lt.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.advanced',{underline_desc:"Pabrauktas (Ctrl+U)",italic_desc:"Kursyvas (Ctrl+I)",bold_desc:"Pusjuodis (Ctrl+B)",dd:"Apibr\u0117\u017eimo apra\u0161as",dt:"Apibr\u0117\u017eimo terminas",samp:"Kodo pavyzdys",code:"Kodas",blockquote:"Citatos blokas",h6:"Antra\u0161t\u0117 6",h5:"Antra\u0161t\u0117 5",h4:"Antra\u0161t\u0117 4",h3:"Antra\u0161t\u0117 3",h2:"Antra\u0161t\u0117 2",h1:"Antra\u0161t\u0117 1",pre:"I\u0161 anksto formatuotas",address:"Adresas",div:"Div \u017eym\u0117",paragraph:"Paragrafas",block:"Formatas",fontdefault:"\u0160rifto \u0161eima",font_size:"\u0160rifto dydis",style_select:"Stiliai",link_delta_width:"70",more_colors:"Daugiau spalv\u0173",toolbar_focus:"Per\u0161okimas prie \u012franki\u0173 juostos mygtuk\u0173 - Alt+Q, Per\u0161okimas prie redaktoriaus - Alt-Z, Per\u0161okimas prie element\u0173 kelio - Alt-X",newdocument:"Ar tikrai norite i\u0161valyti vis\u0105 turin\u012f?",path:"Kelias",clipboard_msg:"Kopijavimas/I\u0161kirpimas/\u012ed\u0117jimas negalimas Mozilla ir Firefox nar\u0161ykl\u0117se.\nAr norite daugiau informacijos apie \u0161i\u0105 problem\u0105?",blockquote_desc:"Citatos blokas",help_desc:"Pagalba",newdocument_desc:"Naujas dokumentas",image_props_desc:"Paveiksl\u0117lio nustatymai",paste_desc:"\u012ed\u0117ti",copy_desc:"Kopijuoti",cut_desc:"I\u0161kirpti",anchor_desc:"\u012eterpti/redaguoti prierai\u0161\u0105",visualaid_desc:"Kaitalioti gaires/nematom\u0173 element\u0173 rodym\u0105",charmap_desc:"\u012eterpti nestandartin\u012f simbol\u012f",backcolor_desc:"Parinkti fono spalv\u0105",forecolor_desc:"Parinkti teksto spalv\u0105",custom1_desc:"J\u016bs\u0173 apra\u0161as \u010dia",removeformat_desc:"Pa\u0161alinti formatavim\u0105",hr_desc:"\u012eterpti horizontali\u0105 linij\u0105",sup_desc:"Vir\u0161utinis indeksas",sub_desc:"Apatinis indeksas",code_desc:"Redaguoti HTML i\u0161eities kod\u0105",cleanup_desc:"I\u0161valyti netvarking\u0105 kod\u0105",image_desc:"\u012eterpti/redaguoti paveiksl\u0117l\u012f",unlink_desc:"Pa\u0161alinti nuorod\u0105",link_desc:"\u012eterpti/redaguoti nuorod\u0105",redo_desc:"Gr\u0105\u017einti (Ctrl+Y)",undo_desc:"At\u0161aukti (Ctrl+Z)",indent_desc:"\u012etrauka",outdent_desc:"Atvirk\u0161tin\u0117 \u012ftrauka",numlist_desc:"Sunumeruotas s\u0105ra\u0161as",bullist_desc:"Nesunumeruotas s\u0105ra\u0161as",justifyfull_desc:"Lygiuoti pagal abu kra\u0161tus",justifyright_desc:"Lygiuoti pagal de\u0161in\u0119",justifycenter_desc:"Centruoti",justifyleft_desc:"Lygiuoti pagal kair\u0119",striketrough_desc:"Perbrauktas",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/lt_dlg.js b/js/tiny_mce/themes/advanced/langs/lt_dlg.js new file mode 100755 index 000000000..6535e503c --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/lt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lt.advanced_dlg',{link_list:"Nuorod\u0173 s\u0105ra\u0161as",link_is_external:"URL adresas, kur\u012f \u012fved\u0117te yra i\u0161orin\u0117 nuoroda, ar norite prid\u0117ti reikaling\u0105 http:// prefiks\u0105?",link_is_email:"URL adresas, kur\u012f \u012fved\u0117te yra el. pa\u0161to adresas, ar norite prid\u0117ti reikaling\u0105 mailto: prefiks\u0105?",link_titlefield:"Pavadinimas",link_target_blank:"Atverti naujame lange",link_target_same:"Atverti tame pa\u010diame lange",link_target:"Paskirtis",link_url:"Nuorodos URL adresas",link_title:"\u012eterpti/redaguoti nuorod\u0105",image_align_right:"De\u0161in\u0117je",image_align_left:"Kair\u0117je",image_align_textbottom:"Teksto apa\u010dioje",image_align_texttop:"Teksto vir\u0161uje",image_align_bottom:"Apa\u010dioje",image_align_middle:"Viduryje",image_align_top:"Vir\u0161uje",image_align_baseline:"Pradiniame ta\u0161ke",image_align:"Lygiavimas",image_hspace:"Horizontalus tarpas",image_vspace:"Vertikalus tarpas",image_dimensions:"I\u0161matavimai",image_alt:"Paveiksl\u0117lio apra\u0161as",image_list:"Paveiksl\u0117li\u0173 s\u0105ra\u0161as",image_border:"R\u0117melis",image_src:"Paveiksl\u0117lio URL adresas",image_title:"\u012eterpti/redaguoti paveiksl\u0117l\u012f",charmap_title:"Pasirinkti nestandartin\u012f simbol\u012f",colorpicker_name:"Pavadinimas:",colorpicker_color:"Spalva:",colorpicker_named_title:"\u012evardintosios spalvos",colorpicker_named_tab:"\u012evardintosios",colorpicker_palette_title:"Palet\u0117s spalvos",colorpicker_palette_tab:"Palet\u0117",colorpicker_picker_title:"Spalvos parinkiklis",colorpicker_picker_tab:"Parinkiklis",colorpicker_title:"Pasirinkti spalv\u0105",code_wordwrap:"Skaidyti tekst\u0105",code_title:"HTML i\u0161eities kodo redaktorius",anchor_name:"Prierai\u0161o vardas",anchor_title:"\u012eterpti/redaguoti prierai\u0161\u0105",about_loaded:"\u012ekelti papildiniai",about_version:"Versija",about_author:"Autorius",about_plugin:"Papildinys",about_plugins:"Papildiniai",about_license:"Licencija",about_help:"Pagalba",about_general:"Apie",about_title:"Apie TinyMCE"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/lv.js b/js/tiny_mce/themes/advanced/langs/lv.js new file mode 100755 index 000000000..04557b628 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/lv.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.advanced',{underline_desc:"Pasv\u012btrojums (Ctrl+U)",italic_desc:"Sl\u012bpraksts (Ctrl+I)",bold_desc:"Treknraksts (Ctrl+B)",dd:"Defin\u012bcijas apraksts",dt:"Defin\u012bcijas termins ",samp:"Koda piem\u0113rs",code:"Kods",blockquote:"Cit\u0101ts",h6:"Virsraksts 6",h5:"Virsraksts 5",h4:"Virsraksts 4",h3:"Virsraksts 3",h2:"Virsraksts 2",h1:"Virsraksts 1",pre:"Priek\u0161format\u0113ts",address:"Adrese",div:"Div\u012bzija",paragraph:"Rindkopa",block:"Form\u0101ts",fontdefault:"Fonta veids",font_size:"Fonta lielums",style_select:"Stili",more_colors:"Vair\u0101k kr\u0101su",toolbar_focus:"Iet uz r\u012bkpog\u0101m - Alt+Q, Iet uz redaktoru - Alt-Z, Iet uz elementa atra\u0161an\u0101s vietu - Alt-X",newdocument:"Vai J\u016bs esat p\u0101rliecin\u0101ti, ka v\u0113laties izdz\u0113st visu saturu?",path:"Atra\u0161an\u0101s vieta",clipboard_msg:"Iesp\u0113ja Kop\u0113t/Izgriezt/Iekop\u0113t nav pieejama p\u0101rl\u016bkiem Mozilla and Firefox.\nVai J\u016bs v\u0113laties uzzin\u0101t vair\u0101k par \u0161o probl\u0113mu?",blockquote_desc:"Cit\u0101ts",help_desc:"Pal\u012bdz\u012bba",newdocument_desc:"Jauns dokuments",image_props_desc:"Bildes iestat\u012bjumi",paste_desc:"Iekop\u0113t",copy_desc:"Kop\u0113t",cut_desc:"Izgriezt",anchor_desc:"Ievietot/Redi\u0123\u0113t enkursaiti",visualaid_desc:"Uzlikt/Nov\u0101kt pal\u012bgsv\u012btras/neredzamos elementus",charmap_desc:"Ievietot simbolu",backcolor_desc:"Uzst\u0101d\u012bt fona kr\u0101su",forecolor_desc:"Uzst\u0101d\u012bt teksta kr\u0101su",custom1_desc:"Tevis izdom\u0101ts apraksts \u0161eit",removeformat_desc:"Izdz\u0113st format\u0113to",hr_desc:"Ievietot horizont\u0101lu sv\u012btru",sup_desc:"Aug\u0161raksts",sub_desc:"Apak\u0161raksts",code_desc:"Redi\u0123\u0113t HTML kodu",cleanup_desc:"Izt\u012br\u012bt nek\u0101rt\u012bgu kodu",image_desc:"Ievietot/Redi\u0123\u0113t att\u0113lu",unlink_desc:"Atsait\u0113t",link_desc:"Ievietot/Redi\u0123\u0113t saiti",redo_desc:"Atatsaukt (Ctrl+Y)",undo_desc:"Atsaukt (Ctrl+Z)",indent_desc:"Atk\u0101pe",outdent_desc:"Uzk\u0101pe",numlist_desc:"Numur\u0113ts saraksts",bullist_desc:"Nenumur\u0113ts saraksts",justifyfull_desc:"Nol\u012bdzin\u0101t malas",justifyright_desc:"Novietot pa labi",justifycenter_desc:"Centr\u0113t",justifyleft_desc:"Novietot pa kreisi",striketrough_desc:"P\u0101rsv\u012btrojums",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/lv_dlg.js b/js/tiny_mce/themes/advanced/langs/lv_dlg.js new file mode 100755 index 000000000..1ee3b86c8 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/lv_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('lv.advanced_dlg',{link_list:"Sai\u0161u saraksts",link_is_external:"Ievad\u012btais URL \u0161\u0137iet ir \u0101r\u0113j\u0101 saite, vai tu v\u0113lies pirms t\u0101s pievienot http:// pried\u0113kli?",link_is_email:"Ievad\u012btais URL \u0161\u0137iet ir e-pasta adrese, vai tu v\u0113lies pirms t\u0101s pievienot mailto: pried\u0113kli? ",link_titlefield:"Nosaukums",link_target_blank:"Atv\u0113rt saiti jaun\u0101 log\u0101",link_target_same:"Atv\u0113rt saiti \u0161ai pa\u0161\u0101 log\u0101",link_target:"M\u0113r\u0137is",link_url:"Saites URL",link_title:"Ievietot/Redi\u0123\u0113t saiti",image_align_right:"Pa labi",image_align_left:"Pa kreisi",image_align_textbottom:"Teksta apak\u0161a",image_align_texttop:"Teksta aug\u0161a",image_align_bottom:"Apak\u0161a",image_align_middle:"Vidus",image_align_top:"Aug\u0161a",image_align_baseline:"Pati apak\u0161a",image_align:"Novietojums",image_hspace:"Horizont\u0101l\u0101 atstarpe",image_vspace:"Vertik\u0101l\u0101 atstarpe",image_dimensions:"Izm\u0113ri",image_alt:"Att\u0113la apraksts",image_list:"Att\u0113lu saraksts",image_border:"Apmale",image_src:"Att\u0113la URL",image_title:"Ievietot/Redi\u0123\u0113t att\u0113lu",charmap_title:"Izv\u0113lies simbolu",colorpicker_name:"Nosaukums:",colorpicker_color:"Kr\u0101sa:",colorpicker_named_title:"Nosaukt\u0101s kr\u0101sas",colorpicker_named_tab:"Nosaukts",colorpicker_palette_title:"Kr\u0101su palete",colorpicker_palette_tab:"Palete",colorpicker_picker_title:"Kr\u0101su izv\u0113lnis",colorpicker_picker_tab:"Izv\u0113lnis",colorpicker_title:"Izv\u0113l\u0113ties kr\u0101su",code_wordwrap:"V\u0101rdu p\u0101rne\u0161ana jaun\u0101 rind\u0101",code_title:"HTML koda redaktors",anchor_name:"Enkursaites nosaukums",anchor_title:"Ievietot/Redi\u0123\u0113t enkursaiti",about_loaded:"Iestat\u012btie papildmodu\u013ci",about_version:"Versija",about_author:"Autors",about_plugin:"Papildmodulis",about_plugins:"Papildmodu\u013ci",about_license:"Licence",about_help:"Pal\u012bdz\u012bba",about_general:"Par",about_title:"Par TinyMCE"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/nl.js b/js/tiny_mce/themes/advanced/langs/nl.js new file mode 100755 index 000000000..fb1712af2 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/nl.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.advanced',{"underline_desc":"Onderstrepen (Ctrl+U)","italic_desc":"Cursief (Ctrl+I)","bold_desc":"Vet (Ctrl+B)",dd:"Definitiebeschrijving",dt:"Definitieterm",samp:"Codevoorbeeld",code:"Code",blockquote:"Citaat",h6:"Kop 6",h5:"Kop 5",h4:"Kop 4",h3:"Kop 3",h2:"Kop 2",h1:"Kop 1",pre:"Vaste opmaak",address:"Adres",div:"Div",paragraph:"Alinea",block:"Opmaak",fontdefault:"Lettertype","font_size":"Tekengrootte","style_select":"Stijlen","more_colors":"Meer kleuren","toolbar_focus":"Spring naar werkbalk - Alt+Q, Spring naar tekst - Alt-Z, Spring naar elementpad - Alt-X",newdocument:"Weet u zeker dat u alle inhoud wilt wissen?",path:"Pad","clipboard_msg":"Kopi\u00ebren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\\nWilt u meer informatie over deze beperking?","blockquote_desc":"Citaat","help_desc":"Help","newdocument_desc":"Nieuw document","image_props_desc":"Afbeeldingseigenschappen","paste_desc":"Plakken","copy_desc":"Kopi\u00ebren","cut_desc":"Knippen","anchor_desc":"Anker invoegen/bewerken","visualaid_desc":"Hulplijnen weergeven","charmap_desc":"Symbool invoegen","backcolor_desc":"Tekstmarkeringskleur","forecolor_desc":"Tekstkleur","custom1_desc":"Uw eigen beschrijving hier","removeformat_desc":"Opmaak verwijderen","hr_desc":"Scheidingslijn invoegen","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"HTML bron bewerken","cleanup_desc":"Code opruimen","image_desc":"Afbeelding invoegen/bewerken","unlink_desc":"Link verwijderen","link_desc":"Link invoegen/bewerken","redo_desc":"Herhalen (Ctrl+Y)","undo_desc":"Ongedaan maken (Ctrl+Z)","indent_desc":"Inspringing vergroten","outdent_desc":"Inspringing verkleinen","numlist_desc":"Nummering","bullist_desc":"Opsommingstekens","justifyfull_desc":"Uitvullen","justifyright_desc":"Rechts uitlijnen","justifycenter_desc":"Centreren","justifyleft_desc":"Links uitlijnen","striketrough_desc":"Doorhalen","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/nl_dlg.js b/js/tiny_mce/themes/advanced/langs/nl_dlg.js new file mode 100755 index 000000000..e63a26e4d --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/nl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('nl.advanced_dlg',{"link_list":"Link lijst","link_is_external":"De ingevoerde URL lijkt op een externe link. Wilt u de vereiste http:// tekst voorvoegen?","link_is_email":"De ingevoerde URL lijkt op een e-mailadres. Wilt u de vereiste mailto: tekst voorvoegen?","link_titlefield":"Titel","link_target_blank":"Link in een nieuw venster openen","link_target_same":"Link in hetzelfde venster openen","link_target":"Doel","link_url":"Link URL","link_title":"Link invoegen/bewerken","image_align_right":"Rechts","image_align_left":"Links","image_align_textbottom":"Onderkant tekst","image_align_texttop":"Bovenkant tekst","image_align_bottom":"Onder","image_align_middle":"Midden","image_align_top":"Boven","image_align_baseline":"Basislijn","image_align":"Uitlijning","image_hspace":"Horizontale ruimte","image_vspace":"Verticale ruimte","image_dimensions":"Afmetingen","image_alt":"Beschrijving","image_list":"Lijst","image_border":"Rand","image_src":"Bestand/URL","image_title":"Afbeelding invoegen/bewerken","charmap_title":"Symbolen","colorpicker_name":"Naam:","colorpicker_color":"Kleur:","colorpicker_named_title":"Benoemde kleuren","colorpicker_named_tab":"Benoemd","colorpicker_palette_title":"Paletkleuren","colorpicker_palette_tab":"Palet","colorpicker_picker_title":"Alle kleuren","colorpicker_picker_tab":"Alle kleuren","colorpicker_title":"Kleuren","code_wordwrap":"Automatische terugloop","code_title":"HTML Bron","anchor_name":"Ankernaam","anchor_title":"Anker invoegen/bewerken","about_loaded":"Geladen Invoegtoepassingen","about_version":"Versie","about_author":"Auteur","about_plugin":"Invoegtoepassing","about_plugins":"Invoegtoepassingen","about_license":"Licentie","about_help":"Help","about_general":"Info","about_title":"Over TinyMCE","anchor_invalid":"Geef een geldige ankernaam."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/no.js b/js/tiny_mce/themes/advanced/langs/no.js new file mode 100755 index 000000000..4f9119327 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/no.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.advanced',{"underline_desc":"Understrek (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fet (Ctrl+B)",dd:"Definisjonsbeskrivelse",dt:"Definisjonsuttrykk",samp:"Kodeeksempel",code:"Kode",blockquote:"Innrykk",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pre-formatert",address:"Adresse",div:"Div",paragraph:"Avsnitt",block:"Format",fontdefault:"Skriftfamilie","font_size":"Skriftst\u00f8rrelse","style_select":"Stiler","more_colors":"Flere farger","toolbar_focus":"Skift til verkt\u00f8yknapper - Alt+Q, Skift til editor - Alt-Z, Skift til elementsti - Alt-",newdocument:"Er du sikker p\u00e5 at du vil slette alt innhold?",path:"Sti","clipboard_msg":"Klipp ut/Kopier/Lim er ikke tilgjengelig i Mozilla og Firefox. \n Vil du vite mer om dette?","blockquote_desc":"Innrykk","help_desc":"Hjelp","newdocument_desc":"Nytt dokument","image_props_desc":"Egenskaper for bilde","paste_desc":"Lim inn","copy_desc":"Kopier","cut_desc":"Klipp ut","anchor_desc":"Sett inn/editer anker","visualaid_desc":"Sl\u00e5 av/p\u00e5 usynlige elementer","charmap_desc":"Sett inn spesialtegn","backcolor_desc":"Velg bakgrunnsfarge","forecolor_desc":"Velg skriftfarge","custom1_desc":"Din egen beskriveles her","removeformat_desc":"Fjern formatering","hr_desc":"Sett inn horisontal linje","sup_desc":"Hev skrift","sub_desc":"Senk skrift","code_desc":"Rediger HTML kildekode","cleanup_desc":"Rense grisete kode","image_desc":"Sett inn / endre bilde","unlink_desc":"Fjerne lenke","link_desc":"Sett inn/editer lenke","redo_desc":"Gj\u00f8r om (Ctrl+Y)","undo_desc":"Angre (Ctrl+Z)","indent_desc":"\u00d8k innrykk","outdent_desc":"Reduser innrykk","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","justifyfull_desc":"Blokkjustert","justifyright_desc":"H\u00f8yrejustert","justifycenter_desc":"Midtstilt","justifyleft_desc":"Venstrejustert","striketrough_desc":"Gjennomstreke","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/no_dlg.js b/js/tiny_mce/themes/advanced/langs/no_dlg.js new file mode 100755 index 000000000..bc7ea8b53 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/no_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('no.advanced_dlg',{"link_list":"Liste over lenker","link_is_external":"Nettadressen du skrev inn ser ut til \u00e5 v\u00e6re en ekstern nettadresse. \u00d8nsker du \u00e5 legge til obligatorisk http://-prefiks?","link_is_email":"Nettadressen du skrev inn ser ut til \u00e5 v\u00e6re en Epost adresse. \u00d8nsker du \u00e5 legge til obligatorisk mailto:-prefiks?","link_titlefield":"Tittel","link_target_blank":"\u00c5pne i nytt vindu","link_target_same":"\u00c5pne i dette vindu","link_target":"M\u00e5lvindu","link_url":"Lenke URL","link_title":"Sett inn/editer lenke","image_align_right":"H\u00f8yre","image_align_left":"Venstre","image_align_textbottom":"Tekst bunn","image_align_texttop":"Tekst topp","image_align_bottom":"Bunn","image_align_middle":"Midtstilt","image_align_top":"Topp","image_align_baseline":"Bunnlinje","image_align":"Justering","image_hspace":"Horisontal avstand","image_vspace":"Vertikal avstand","image_dimensions":"Dimensjoner","image_alt":"Bildebeskrivelse","image_list":"Liste med bilder","image_border":"Ramme","image_src":"Bilde URL","image_title":"Sett inn/editer bilde","charmap_title":"Velg spesialtegn","colorpicker_name":"Navn:","colorpicker_color":"Farge:","colorpicker_named_title":"Fargenavn","colorpicker_named_tab":"Navnevalg","colorpicker_palette_title":"Palettfarger","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"Fargevalg","colorpicker_picker_tab":"Fargevelger","colorpicker_title":"Velg farge","code_wordwrap":"Tekstbryting","code_title":"HTML kildeeditor","anchor_name":"Ankernavn","anchor_title":"Sett inn/editer anker","about_loaded":"Innlastede programtillegg","about_version":"Versjon","about_author":"Forfatter","about_plugin":"Programtillegg","about_plugins":"Programtillegg","about_license":"Lisens","about_help":"Hjelp","about_general":"Om","about_title":"Om TinyMCE","anchor_invalid":"Du m\u00e5 angi et gyldig ankernavn."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/pl.js b/js/tiny_mce/themes/advanced/langs/pl.js new file mode 100755 index 000000000..38f445997 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/pl.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.advanced',{"underline_desc":"Podkre\u015blenie (Ctrl+U)","italic_desc":"Kursywa (Ctrl+I)","bold_desc":"Pogrubienie (Ctrl+B)",dd:"Opis terminu",dt:"Definicja terminu ",samp:"Pr\u00f3bka kodu",code:"Kod",blockquote:"Wydzielony blok",h6:"Nag\u0142\u00f3wek 6",h5:"Nag\u0142\u00f3wek 5",h4:"Nag\u0142\u00f3wek 4",h3:"Nag\u0142\u00f3wek 3",h2:"Nag\u0142\u00f3wek 2",h1:"Nag\u0142\u00f3wek 1",pre:"Czcionka o sta\u0142ej szeroko\u015bci",address:"Adres",div:"Div",paragraph:"Akapit",block:"Format",fontdefault:"Rodzaj czcionki","font_size":"Rozmiar czcionki","style_select":"Styl","more_colors":"Wi\u0119cej kolor\u00f3w","toolbar_focus":"Przeskocz do przycisk\u00f3w narz\u0119dzi - Alt+Q, Przeskocz do edytora - Alt-Z, Przeskocz do elementu \u015bcie\u017cki - Alt-X",newdocument:"Czy jeste\u015b pewnien, ze chcesz wyczy\u015bci\u0107 ca\u0142\u0105 zawarto\u015b\u0107?",path:"\u015acie\u017cka","clipboard_msg":"Akcje Kopiuj/Wytnij/Wklej nie s\u0105 dost\u0119pne w Mozilli i Firefox.\\nCzy chcesz wi\u0119cej informacji o tym problemie?","blockquote_desc":"Blok cytatu","help_desc":"Pomoc","newdocument_desc":"Nowy dokument","image_props_desc":"W\u0142a\u015bciwo\u015bci obrazka","paste_desc":"Wklej","copy_desc":"Kopiuj","cut_desc":"Wytnij","anchor_desc":"Wstaw/edytuj kotwic\u0119","visualaid_desc":"Prze\u0142\u0105cz widoczno\u015b\u0107 wska\u017anik\u00f3w i niewidocznych element\u00f3w","charmap_desc":"Wstaw znak specjalny","backcolor_desc":"Wybierz kolor t\u0142a","forecolor_desc":"Wybierz kolor tekstu","custom1_desc":"Tw\u00f3j niestandardowy opis tutaj","removeformat_desc":"Usu\u0144 formatowanie","hr_desc":"Wstaw poziom\u0105 lini\u0119","sup_desc":"Indeks g\u00f3rny","sub_desc":"Indeks dolny","code_desc":"Edytuj \u017ar\u00f3d\u0142o HTML","cleanup_desc":"Wyczy\u015b\u0107 nieuporz\u0105dkowany kod","image_desc":"Wstaw/edytuj obraz","unlink_desc":"Usu\u0144 link","link_desc":"Wstaw/edytuj link","redo_desc":"Pon\u00f3w (Ctrl+Y)","undo_desc":"Cofnij (Ctrl+Z)","indent_desc":"Wci\u0119cie","outdent_desc":"Cofnij wci\u0119cie","numlist_desc":"Lista numerowana","bullist_desc":"Lista nienumerowana","justifyfull_desc":"R\u00f3wnanie do prawej i lewej","justifyright_desc":"Wyr\u00f3wnaj do prawej","justifycenter_desc":"Wycentruj","justifyleft_desc":"Wyr\u00f3wnaj do lewej","striketrough_desc":"Przekre\u015blenie","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/pl_dlg.js b/js/tiny_mce/themes/advanced/langs/pl_dlg.js new file mode 100755 index 000000000..6142361ad --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/pl_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pl.advanced_dlg',{"link_list":"Lista link\u00f3w","link_is_external":"URL kt\u00f3ry otworzy\u0142e\u015b wydaje si\u0119 by\u0107 zewn\u0119trznym linkiem, czy chcesz doda\u0107 wymagany prefiks http:// ?","link_is_email":"URL kt\u00f3ry otworzy\u0142e\u015b wydaje si\u0119 by\u0107 adresem mailowym, czy chcesz doda\u0107 odpowiedni prefiks mailto:?","link_titlefield":"Tytu\u0142","link_target_blank":"Otw\u00f3rz link w nowym oknie","link_target_same":"Otw\u00f3rz link w tym samym oknie","link_target":"Cel","link_url":"URL linka","link_title":"Wstaw/edytuj link","image_align_right":"Prawy","image_align_left":"Lewy","image_align_textbottom":"Dolny tekst","image_align_texttop":"G\u00f3rny tekst","image_align_bottom":"D\u00f3\u0142","image_align_middle":"\u015arodek","image_align_top":"G\u00f3ra","image_align_baseline":"Linia bazowa","image_align":"Wyr\u00f3wnanie","image_hspace":"Odst\u0119p poziomy","image_vspace":"Odst\u0119p pionowy","image_dimensions":"Rozmiary","image_alt":"Opis obrazka","image_list":"Lista obrazk\u00f3w","image_border":"Obramowanie","image_src":"URL obrazka","image_title":"Wstaw/edytuj obraz","charmap_title":"Wybierz niestandardowy znak","colorpicker_name":"Nazwa:","colorpicker_color":"Kolor:","colorpicker_named_title":"Nazwane kolory","colorpicker_named_tab":"Nazwane","colorpicker_palette_title":"Paleta kolor\u00f3w","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Wybieranie kolor\u00f3w","colorpicker_picker_tab":"Wybieranie","colorpicker_title":"Wybierz kolor","code_wordwrap":"Zawijanie s\u0142\u00f3w","code_title":"Edytor \u017ar\u00f3d\u0142a HTML","anchor_name":"Nazwa zakotwiczenia","anchor_title":"Wstaw/Edytuj zakotwiczenie","about_loaded":"Za\u0142adowane wtyczki","about_version":"Wersja","about_author":"Autor","about_plugin":"Wtyczka","about_plugins":"Wtyczki","about_license":"Licencja","about_help":"Pomoc","about_general":"O TinyMCE","about_title":"O TinyMCE","anchor_invalid":"Prosz\u0119 poda\u0107 w\u0142a\u015bciw\u0105 nazw\u0119 zakotwiczenia."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/pt.js b/js/tiny_mce/themes/advanced/langs/pt.js new file mode 100755 index 000000000..9d86b4178 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/pt.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.advanced',{underline_desc:"Sublinhado (Ctrl+U)",italic_desc:"It\u00e1lico (Ctrl+I)",bold_desc:"Negrito (Ctrl+B)",dd:"Descri\u00e7\u00e3o da defini\u00e7\u00e3o",dt:"Termo da defini\u00e7\u00e3o",samp:"Amostra de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita\u00e7\u00e3o em bloco",h6:"T\u00edtulo 6",h5:"T\u00edtulo 5",h4:"T\u00edtulo 4",h3:"T\u00edtulo 3",h2:"T\u00edtulo 2",h1:"T\u00edtulo 1",pre:"Pr\u00e9-formatado",address:"Endere\u00e7o",div:"Div",paragraph:"Par\u00e1grafo",block:"Formata\u00e7\u00e3o",fontdefault:"Tipo de fonte",font_size:"Tamanho",style_select:"Estilos",more_colors:"Mais cores",toolbar_focus:"Ir para as ferramentas - Alt+Q, Ir para o editor - Alt-Z, Ir para o endere\u00e7o do elemento - Alt-X",newdocument:"Tem a certeza que deseja apagar tudo?",path:"Endere\u00e7o",clipboard_msg:"Copiar/recortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla e Firefox. Deseja mais informa\u00e7\u00f5es sobre este problema?",blockquote_desc:"Cita\u00e7\u00e3o em bloco",help_desc:"Ajuda",newdocument_desc:"Novo documento",image_props_desc:"Propriedades da imagem",paste_desc:"Colar",copy_desc:"Copiar",cut_desc:"Recortar",anchor_desc:"Inserir/editar \u00e2ncora",visualaid_desc:"Alternar guias/elementos invis\u00edveis",charmap_desc:"Inserir caracteres especiais",backcolor_desc:"Selecionar a cor de fundo",forecolor_desc:"Selecionar a cor do texto",custom1_desc:"Insira aqui a sua descri\u00e7\u00e3o personalizada",removeformat_desc:"Remover formata\u00e7\u00e3o",hr_desc:"Inserir separador horizontal",sup_desc:"Superior \u00e0 linha",sub_desc:"Inferior \u00e0 linha",code_desc:"Editar c\u00f3digo fonte",cleanup_desc:"Limpar c\u00f3digo incorreto",image_desc:"Inserir/editar imagem",unlink_desc:"Remover hyperlink",link_desc:"Inserir/editar hyperlink",redo_desc:"Refazer (Ctrl+Y)",undo_desc:"Desfazer (Ctrl+Z)",indent_desc:"Aumentar recuo",outdent_desc:"Diminuir recuo",numlist_desc:"Numera\u00e7\u00e3o",bullist_desc:"Marcadores",justifyfull_desc:"Justificar",justifyright_desc:"Alinhar \u00e0 direita",justifycenter_desc:"Centralizar",justifyleft_desc:"Alinhar \u00e0 esquerda",striketrough_desc:"Riscado",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/pt_dlg.js b/js/tiny_mce/themes/advanced/langs/pt_dlg.js new file mode 100755 index 000000000..ad34611ae --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/pt_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('pt.advanced_dlg',{link_list:"Lista de Links",link_is_external:"A URL digitada parece conduzir a um link externo. Deseja acrescentar o prefixo necess\u00e1rio http://?",link_is_email:"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o prefixo necess\u00e1rio mailto:?",link_titlefield:"T\u00edtulo",link_target_blank:"Abrir hyperlink em nova janela",link_target_same:"Abrir hyperlink na mesma janela",link_target:"Alvo",link_url:"URL do hyperink",link_title:"Inserir/editar hyperlink",image_align_right:"Direita",image_align_left:"Esquerda",image_align_textbottom:"Base do texto",image_align_texttop:"Topo do texto",image_align_bottom:"Abaixo",image_align_middle:"Meio",image_align_top:"Topo",image_align_baseline:"Sobre a linha de texto",image_align:"Alinhamento",image_hspace:"Espa\u00e7o Horizontal",image_vspace:"Espa\u00e7o Vertical",image_dimensions:"Dimens\u00f5es",image_alt:"Descri\u00e7\u00e3o da imagem",image_list:"Lista de imagens",image_border:"Limites",image_src:"Endere\u00e7o da imagem",image_title:"Inserir/editar imagem",charmap_title:"Selecionar caracteres personalizados",colorpicker_name:"Nome:",colorpicker_color:"Cor:",colorpicker_named_title:"Cores Personalizadas",colorpicker_named_tab:"Personalizadas",colorpicker_palette_title:"Paleta de Cores",colorpicker_palette_tab:"Paleta",colorpicker_picker_title:"Editor de Cores",colorpicker_picker_tab:"Editor",colorpicker_title:"Selecione uma cor",code_wordwrap:"Quebra autom\u00e1tica de linha",code_title:"Editor HTML",anchor_name:"Nome da \u00e2ncora",anchor_title:"Inserir/editar \u00e2ncora",about_loaded:"Plugins Instalados",about_version:"Vers\u00e3o",about_author:"Autor",about_plugin:"Plugin",about_plugins:"Plugins",about_license:"Licen\u00e7a",about_help:"Ajuda",about_general:"Sobre",about_title:"Sobre o TinyMCE",anchor_invalid:"Por favor, especifique um nome v\u00e1lido de \u00e2ncora."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/ro.js b/js/tiny_mce/themes/advanced/langs/ro.js new file mode 100755 index 000000000..ae6adcb52 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/ro.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.advanced',{underline_desc:"Subliniat (Ctrl+U)",italic_desc:"Italic (Ctrl+I)",bold_desc:"\u00cengro\u015fat (Ctrl+B)",dd:"Defini\u0163ie",dt:"Termen definit ",samp:"Mostr\u0103 de cod",code:"Cod",blockquote:"Citat",h6:"Titlu 6",h5:"Titlu 5",h4:"Titlu 4",h3:"Titlu 3",h2:"Titlu 2",h1:"Titlu 1",pre:"Preformatat",address:"Adres\u0103",div:"Div",paragraph:"Paragraf",block:"Format",fontdefault:"Font",font_size:"M\u0103rime font",style_select:"Stiluri",more_colors:"Mai multe culori",toolbar_focus:"S\u0103ri\u0163i la instrumente - Alt+Q, S\u0103ri\u0163i la editor - Alt-Z, S\u0103ri\u0163i la cale - Alt-X",newdocument:"Sigur dori\u0163i s\u0103 \u015fterge\u0163i tot?",path:"Cale",clipboard_msg:"Copierea/T\u0103ierea/Lipirea nu sunt disponibile \u00een Mozilla \u015fi Firefox.\\nDori\u0163i mai multe informa\u0163ii despre aceast\u0103 problem\u0103?",blockquote_desc:"Citat",help_desc:"Autor",newdocument_desc:"Document nou",image_props_desc:"Detalii imagine",paste_desc:"Lipe\u015fte",copy_desc:"Copiaz\u0103",cut_desc:"Taie",anchor_desc:"Inserare/editare ancor\u0103",visualaid_desc:"Comut\u0103 ghidajele/elementele invizibile",charmap_desc:"Inserare caracter special",backcolor_desc:"Culoare fundal",forecolor_desc:"Culoare text",custom1_desc:"Descriere ...",removeformat_desc:"Anuleaz\u0103 formatarea",hr_desc:"Insereaz\u0103 linie orizontal\u0103",sup_desc:"Superscript",sub_desc:"Subscript",code_desc:"Editare surs\u0103 HTML",cleanup_desc:"Cur\u0103\u0163are cod",image_desc:"Inserare/editare imagine",unlink_desc:"\u015eterge leg\u0103tura",link_desc:"Inserare/editare leg\u0103tur\u0103",redo_desc:"Ref\u0103 (Ctrl+Y)",undo_desc:"Undo (Ctrl+Z)",indent_desc:"Indenteaz\u0103",outdent_desc:"De-indenteaz\u0103",numlist_desc:"List\u0103 ordonat\u0103",bullist_desc:"List\u0103 neordonat\u0103",justifyfull_desc:"Aliniere pe toat\u0103 l\u0103\u0163imea",justifyright_desc:"Aliniere la dreapta",justifycenter_desc:"Centrare",justifyleft_desc:"Aliniere la st\u00e2nga",striketrough_desc:"T\u0103iat",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",link_delta_width:"",image_delta_height:"",image_delta_width:""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/ro_dlg.js b/js/tiny_mce/themes/advanced/langs/ro_dlg.js new file mode 100755 index 000000000..87ce7e90b --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/ro_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ro.advanced_dlg',{link_list:"Lista de leg\u0103turi",link_is_external:"URL-ul pe care l-a\u0163i introdus pare a fi o leg\u0103tur\u0103 extern\u0103. Dori\u0163i s\u0103 adaug \u015fi prefixul http:// necesar?",link_is_email:"URL-ul pe care l-a\u0163i introdus pare a fi o adres\u0103 de e-mail. Dori\u0163i s\u0103 adaug \u015fi prefixul mailto: necesar?",link_titlefield:"Titlu",link_target_blank:"Deschide leg\u0103tura \u00eentr-o fereastr\u0103 nou\u0103",link_target_same:"Deschide leg\u0103tura \u00een aceea\u015fi fereastr\u0103",link_target:"\u0162int\u0103",link_url:"URL leg\u0103tur\u0103",link_title:"Inserare/editare leg\u0103tur\u0103",image_align_right:"Dreapta",image_align_left:"St\u00e2nga",image_align_textbottom:"Textul la mijloc",image_align_texttop:"Textul sus",image_align_bottom:"Jos",image_align_middle:"La mijloc",image_align_top:"Sus",image_align_baseline:"Baseline",image_align:"Aliniere",image_hspace:"Spa\u0163iu orizontal",image_vspace:"Spa\u0163iu vertical",image_dimensions:"Dimensiuni",image_alt:"Descriere imagine",image_list:"List\u0103 de imagini",image_border:"Bordur\u0103",image_src:"URL imagine",image_title:"Insereaz\u0103/editeaz\u0103 o imagine",charmap_title:"Alege\u0163i un caracter special",colorpicker_name:"Nume:",colorpicker_color:"Culoare:",colorpicker_named_title:"Culori denumite",colorpicker_named_tab:"Denumite",colorpicker_palette_title:"Palet\u0103 de culori",colorpicker_palette_tab:"Palet\u0103",colorpicker_picker_title:"Pipet\u0103 de culori",colorpicker_picker_tab:"Pipet\u0103",colorpicker_title:"Alege\u0163i o culoare",code_wordwrap:"Word wrap",code_title:"Editor surs\u0103 HTML",anchor_name:"Nume ancor\u0103",anchor_title:"Inserare/editare ancor\u0103",about_loaded:"Module \u00eenc\u0103rcate",about_version:"Versiune",about_author:"Autor",about_plugin:"Modul",about_plugins:"Module",about_license:"Licen\u0163\u0103",about_help:"Ajutor",about_general:"Despre",about_title:"Despre TinyMCE"}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/ru.js b/js/tiny_mce/themes/advanced/langs/ru.js new file mode 100755 index 000000000..3ab4e6972 --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/ru.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.advanced',{"underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439 (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 (Ctrl+B)",dd:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430",dt:"\u0422\u0435\u0440\u043c\u0438\u043d \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430",samp:"\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442\u0430",h6:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",h5:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",h4:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",h3:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",h2:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",h1:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",pre:"\u041f\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439",address:"\u0410\u0434\u0440\u0435\u0441",div:"Div",paragraph:"\u0410\u0431\u0437\u0430\u0446",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440","style_select":"\u0421\u0442\u0438\u043b\u044c","more_colors":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0446\u0432\u0435\u0442\u0430...","toolbar_focus":"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043a\u043d\u043e\u043f\u043e\u043a (Alt+Q). \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 (Alt+Z). \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u0443\u0442\u0438 (Alt+X).",newdocument:"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c?",path:"\u0422\u0435\u0433\u0438","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b\u0440\u0435\u0437\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 Firefox.\\r\\n\u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442\u0430","help_desc":"\u041f\u043e\u043c\u043e\u0449\u044c","newdocument_desc":"\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","paste_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c","cut_desc":"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c","anchor_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044f\u043a\u043e\u0440\u044c","visualaid_desc":"\u0412\u0441\u0435 \u0437\u043d\u0430\u043a\u0438","charmap_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0426\u0432\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430","forecolor_desc":"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430","custom1_desc":"\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","removeformat_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442","hr_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0443","sup_desc":"\u041d\u0430\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439","sub_desc":"\u041f\u043e\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439","code_desc":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c HTML \u043a\u043e\u0434","cleanup_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434","image_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","unlink_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","link_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","redo_desc":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c (Ctrl+Z)","indent_desc":"\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f","outdent_desc":"\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f","numlist_desc":"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","bullist_desc":"\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","justifyfull_desc":"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435","justifyright_desc":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","justifycenter_desc":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","justifyleft_desc":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/langs/ru_dlg.js b/js/tiny_mce/themes/advanced/langs/ru_dlg.js new file mode 100755 index 000000000..a1ad580bb --- /dev/null +++ b/js/tiny_mce/themes/advanced/langs/ru_dlg.js @@ -0,0 +1 @@ +tinyMCE.addI18n('ru.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a","link_is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http://?","link_is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?","link_titlefield":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","link_target_blank":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435","link_target_same":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435","link_target":"\u0426\u0435\u043b\u044c","link_url":"\u0410\u0434\u0440\u0435\u0441","link_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438","image_align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","image_align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","image_align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","image_align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438","image_align":"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","image_hspace":"\u0413\u043e\u0440\u0438\u0437. \u043e\u0442\u0441\u0442\u0443\u043f","image_vspace":"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","image_dimensions":"\u0420\u0430\u0437\u043c\u0435\u0440","image_alt":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a","image_border":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430","image_src":"\u0410\u0434\u0440\u0435\u0441","image_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","charmap_title":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430","colorpicker_name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:","colorpicker_color":"\u041a\u043e\u0434:","colorpicker_named_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_named_tab":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f","colorpicker_palette_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_palette_tab":"\u041f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_picker_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_picker_tab":"\u0421\u043f\u0435\u043a\u0442\u0440","colorpicker_title":"\u0426\u0432\u0435\u0442\u0430","code_wordwrap":"\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0442\u0440\u043e\u043a","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 HTML \u043a\u043e\u0434\u0430","anchor_name":"\u0418\u043c\u044f \u044f\u043a\u043e\u0440\u044f","anchor_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u043a\u043e\u0440\u044f","about_loaded":"\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b","about_version":"\u0412\u0435\u0440\u0441\u0438\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u041f\u043b\u0430\u0433\u0438\u043d","about_plugins":"\u041f\u043b\u0430\u0433\u0438\u043d\u044b","about_license":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f","about_help":"\u041f\u043e\u043c\u043e\u0449\u044c","about_general":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","about_title":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 TinyMCE","anchor_invalid":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u043a\u043e\u0440\u044f."}); \ No newline at end of file diff --git a/js/tiny_mce/themes/advanced/link.htm b/js/tiny_mce/themes/advanced/link.htm new file mode 100644 index 000000000..5d9dea9b8 --- /dev/null +++ b/js/tiny_mce/themes/advanced/link.htm @@ -0,0 +1,57 @@ + + + + {#advanced_dlg.link_title} + + + + + + + +
        + + +
        +
        + + + + + + + + + + + + + + + + + + + + + +
        + + + + +
         
        +
        +
        + +
        + + +
        +
        + + diff --git a/js/tiny_mce/themes/advanced/shortcuts.htm b/js/tiny_mce/themes/advanced/shortcuts.htm new file mode 100644 index 000000000..20ec2f5a3 --- /dev/null +++ b/js/tiny_mce/themes/advanced/shortcuts.htm @@ -0,0 +1,47 @@ + + + + {#advanced_dlg.accessibility_help} + + + + +

        {#advanced_dlg.accessibility_usage_title}

        +

        Toolbars

        +

        Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys. + Press enter to activate a button and return focus to the editor. + Press escape to return focus to the editor without performing any actions.

        + +

        Status Bar

        +

        To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path. + Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.

        + +

        Context Menu

        +

        Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key. + To close submenus press the left arrow key. Press escape to close the context menu.

        + +

        Keyboard Shortcuts

        + + + + + + + + + + + + + + + + + + + + + +
        KeystrokeFunction
        Control-BBold
        Control-IItalic
        Control-ZUndo
        Control-YRedo
        + + diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/content.css b/js/tiny_mce/themes/advanced/skins/cirkuit/content.css new file mode 100755 index 000000000..9d15a99d9 --- /dev/null +++ b/js/tiny_mce/themes/advanced/skins/cirkuit/content.css @@ -0,0 +1,66 @@ +/*body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} +body {background:#FFF;} +body.mceForceColors {background:#FFF; color:#000;} +h1 {font-size: 2em} +h2 {font-size: 1.5em} +h3 {font-size: 1.17em} +h4 {font-size: 1em} +h5 {font-size: .83em} +h6 {font-size: .75em} +.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} +a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} +td.mceSelected, th.mceSelected {background-color:#3399ff !important} +img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr {border-bottom:1px dashed #CCC; cursor:help} + +* html body { +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +} + +img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} +font[face=mceinline] {font-family:inherit !important}*/ +body, td, pre {color:#000; font: 12px/1.5em "Lucida Grande", Helvetica, Arial, sans-serif; margin:8px;} +html,body {padding: 0 !important; margin: 0 !important; background:#fff !important;} +body {height: 94% !important; padding: 0 !important;} +body.mceForceColors {background:#FFF; color:#000;} +h1 {font-size: 2em} +h2 {font-size: 1.5em} +h3 {font-size: 1.17em} +h4 {font-size: 1em} +h5 {font-size: .83em} +h6 {font-size: .75em} +.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} +a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;} +img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;} +img {border:0;} +table {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help} + +* html body { +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +} diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/dialog.css b/js/tiny_mce/themes/advanced/skins/cirkuit/dialog.css new file mode 100755 index 000000000..bde95fe47 --- /dev/null +++ b/js/tiny_mce/themes/advanced/skins/cirkuit/dialog.css @@ -0,0 +1,117 @@ +/* Generic */ +body { +font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; +background:#f1f1f1; +padding:0; +margin:8px 8px 0 8px; +} + +html {background:#f1f1f1;} +td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +textarea {resize:none;outline:none;} +a:link, a:visited {color:black;} +a:hover {color:#2B6FB6;} +.nowrap {white-space: nowrap} + +/* Forms */ +fieldset {margin:0; padding:4px; border:1px solid #dfdfdf; font-family:Verdana, Arial; font-size:10px;} +legend {color:#2B6FB6; font-weight:bold;} +label.msg {display:none;} +label.invalid {color:#EE0000; display:inline;} +input.invalid {border:1px solid #EE0000;} +input {background:#FFF; border:1px solid #dfdfdf;} +input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +input, select, textarea {border:1px solid #dfdfdf;} +input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} +input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} +.input_noborder {border:0;} + +/* Buttons */ +#insert, #cancel, #apply, .mceActionPanel .button, input.mceButton, .updateButton { + border: 1px solid #bbb; + margin:0; + padding:0 0 1px; + font-weight:bold; + font-size: 11px; + width:94px; + height:24px; + background:url(img/fade-butt.png) 0 0; + color:#000; + cursor:pointer; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +#insert:hover, #cancel:hover, input.mceButton:hover, .updateButton:hover, +#insert:focus, #cancel:focus, input.mceButton:focus, .updateButton:focus { + border: 1px solid #555; +} + +/* Browse */ +a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} +.mceOldBoxModel a.browse span {width:22px; height:20px;} +a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} +a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);} +a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} +a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} +.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} +a.pickcolor:hover span {background-color:#B2BBD0;} +a.pickcolor, a.browse {text-decoration:none} + +/* Charmap */ +table.charmap {border:1px solid #AAA; text-align:center} +td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} +#charmap a {display:block; color:#000; text-decoration:none; border:0} +#charmap a:hover {background:#CCC;color:#2B6FB6} +#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} +#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} +#charmap #charmapView {background-color:#fff;} + +/* Source */ +.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} +.mceActionPanel {margin-top:5px;} + +/* Tabs classes */ +.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;} +.tabs ul {margin:0; padding:0; list-style:none;} +.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} +.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} +.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} +.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} +.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} +.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} + +/* Panels */ +.panel_wrapper div.panel {display:none;} +.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} +.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} + +/* Columns */ +.column {float:left;} +.properties {width:100%;} +.properties .column1 {} +.properties .column2 {text-align:left;} + +/* Titles */ +h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} +h3 {font-size:14px;} +.title {font-size:12px; font-weight:bold; color:#2B6FB6;} + +/* Dialog specific */ +#link .panel_wrapper, #link div.current {height:125px;} +#image .panel_wrapper, #image div.current {height:200px;} +#plugintable thead {font-weight:bold; background:#DDD;} +#plugintable, #about #plugintable td {border:1px solid #919B9C;} +#plugintable {width:96%; margin-top:10px;} +#pluginscontainer {height:290px; overflow:auto;} +#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} +#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} +#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} +#colorpicker #light div {overflow:hidden;} +#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} +#colorpicker .panel_wrapper div.current {height:175px;} +#colorpicker #namedcolors {width:150px;} +#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} +#colorpicker #colornamecontainer {margin-top:5px;} +#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/img/butt2.png b/js/tiny_mce/themes/advanced/skins/cirkuit/img/butt2.png new file mode 100755 index 0000000000000000000000000000000000000000..3baae5e6d75ef9e1963e2f30481a296064fdd99c GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^Ahr<)6OepWc~=WaNtU=qlmzFem6RtIr7}3CTOVxN-gZ^=sFzUA=ns%9SgZFJHcN>C(lE7cX46aQ^)HbLY;TJ$v@d znKM0!P9;FSoCO|{#S9GGLLkg|>2BR0prB}pYeb22QEFmIW`3SRNM>#-gQ32mk-mY2 z+A4?dKm{@&1;P1gCFO}lsSJ)O`AMk?Zka`?<@rU~#R|^B#xt(Df!yon>Eak7G1d3j zMTP?kA`TaqPdFqJh1)DUPQgQu&X%Q~loCIG9gcp?A* literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/img/buttons.png b/js/tiny_mce/themes/advanced/skins/cirkuit/img/buttons.png new file mode 100755 index 0000000000000000000000000000000000000000..7dd58418ba7cfe58ae7efdf174e0b223fe3aa6a0 GIT binary patch literal 3274 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 Jn-3#{H2|P`4%+|# literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/img/fade-butt.png b/js/tiny_mce/themes/advanced/skins/cirkuit/img/fade-butt.png new file mode 100755 index 0000000000000000000000000000000000000000..42f08b79942d32f9d7e693b6952c2d935e352774 GIT binary patch literal 785 zcmb`F-%C?r7{}lJa2&>jxy)rl9Mwn%LP*puyzuCjPMwJ95JKF>j+PKsXg_GsnhtD8 zh=^TCB+KZ+w1O@i>_T)@BanhF!iyL+Vms&T{MtEZJ7;Iq>;Dih&-?H^?}zX6eBpgE zG}u$CKdlD<)Vh0}!!XywXhAgaPSf^0Oxh{bg97mO^W~b@aosrU8k@a3GdX+De+L6- za3+9R-8cPH*f8b~KDeF6Iv|7(4UD)7Bq<02RVXNmg6H!LO&2+?R4U1`OcDggapiKE zFY+wIunf!d#VW*b2^}-T9V2H+?-(*rOF(SfEtt}NrEU;s|w4ql}aU_%l$QMw*#Qsc019L z`$qxet-2wzufeA~GdF29GQ(3k#HwpP=Tp5>sTUs~bbFp^79H8|jwMGn{Nu=E4WHV@ z<`Pj1OGKNZ!frxXz@l>r$fB|FiN4r)-$3m7_{6|c6Ou{+s8EME>s@=BuaUFM*eAr; zY2XyDLos!9uJm+8Ui3todx6%dF|QjeX0yfetkJS=SZ+O-Jgk9eC?1L*hC<0?DEZSH ziYJrFcpRuw8!vzFO2-wvIO)u`0SmbDZ3PihhCn+Q-Xj2f-scY3wf=tci0 Zqyhce4|i>ku8hL(3f!(i=T4U|@(=9Ekd*)c literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/img/icons.png b/js/tiny_mce/themes/advanced/skins/cirkuit/img/icons.png new file mode 100755 index 0000000000000000000000000000000000000000..7525d9d3fc9319c50cb99cfe827e348c33d08d3c GIT binary patch literal 30143 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®@_=OX|e;q)i+VL~7na?;3RY-&?95iSS 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 G2~7aE5>Ze9 literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/img/menu-check.png b/js/tiny_mce/themes/advanced/skins/cirkuit/img/menu-check.png new file mode 100755 index 0000000000000000000000000000000000000000..92a5edb8b253e66272c45b7a36a59830afb17a3f GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h83QrfukcwMxCL3}cP~dU>>@BAM;7RYErta%s9s2$$O;KXy zzLqCdz;V$1Q;&jXJ)2npSkJ-6_M0(4H!yg* L`njxgN@xNA-yl#p literal 0 HcmV?d00001 diff --git a/js/tiny_mce/themes/advanced/skins/cirkuit/img/progress.gif b/js/tiny_mce/themes/advanced/skins/cirkuit/img/progress.gif new file mode 100755 index 0000000000000000000000000000000000000000..5bb90fd6a49107a321c35b9cee4a7b810314b51f GIT binary patch literal 1787 zcmZXTYfw{X9>&iJhvXcHF*h)T1OnEW1i^?zgDfop1p?usL*#PMGT;HQkSO{q6FlJyb$PWkPf|h*eTST}7h8z$}MF(XD(aQ)ZLZ zM?v0rT<1C4XHn<6PbNA{XL@>1^)apdD_@tcYDrW#m`k#MmslI7p^P;Az74wGs`!SI zLs$GEZHsafXsu1i-WleMzAL(yw$-LK{0hv;6hrx8kx!!4$``dAyBnY9Jz&DqJo2$A z!(L$H=KqBeY~CF_viHPz^tTglc?D97CqEBjzUwH}7GI zapg8YZM~>2Wk%E$d&r@9ly9b4Q zJpM7T@}r63I(OExUlG%Xcjz3MU+9U^r!SkpjNThDtaP)7>j6L5z%o5|^hlVOyI*uY zt^UU6NTuY?(Lb4ZIU2Zb5Vz}Pb7KF%ivf&j^CL>$cDz?rMNTQQ|NqDVD7mhghUp%h zhIA{gi{S8y9YhIIbSv$`B!JiPi!0#4#Jge0)p&YVPHchWcyAn zQhvb8ggXGXs9;k`u9Uq*YB>O+Q3Rq=2hlLFcG{Q3ORH_}JnY8C+r%@}6|%ySP%bWG zV~mA;?P`Q2L_Ss})nrJ{$TmeA9Tt*4=}X5x%RioM@_?ZsKSEST-f+GBv~Ya)xX3O{ z8!d=YthI-13OI;RN~`>|6u5L{z20oBp%9MIj)n$!Aw{Wpq&Rtr4~*_74Gjo@3el>B zz(Rk;;>2lp73<2;d=r*8z%WkdsG=vRuG_fvxO#uN^El|+5Qoz^X!2MfxJ3m}vyi?> zMLLDi8+${Z6YbUg?8GNR>-+SwHKdFyr%HqWcs|X_l*-DAC^bG&KCqWg7-_`UlwQ`EdOp_LJkr`L$mHHs75uP?fSgVfsDjuE#ft2b8HDt0yFt!+;C zEgL=)G9ZFt4wa+N3Xg7FGc0~`&EEt6_%7tyzmnb9B_h1~7~GD4V-Bhx7~QKRkF>&aT>(-!Us@aJxAY@8E?HW$G8g zSz@7Jcp>iCp;lU1ieF6n7!oAa-1E!rS0 zF1lBFVS%G#ZO}b@*+bIk+7@Q|iG60vIDVpV%4tW8rKyzwRo_<25;8*Ky@n z-sX>W*b;M){5lB_Edc@m1`VHy0@dg$PTR9uE$O2&a?KAe?xRlCj&Z$iZYw>o1FUl`^eGF(ALoK@apvR@ALES^78HR@$B&M>-P5Y_4V=e^zifZ@AC5Q z@$v2U_Ve}i^85Sw`1tnr_VoSz{QUg;`uh3!`1kSe-|p?^>+0k0?&$36oE*q;kn@I-k&}bV{vSuh^^>3n?4| z;IMd1E}PHjw0g~MyWjA*d`_>=7l@jE&+q&HfPsR8goTEOh>41ejE#(BTJr4xw7TUm@OOFuz`c;&!9t#9!C>oFt6t5zwd>cgW6Pc$+rZ!o zxO3~?&AYen-@tNG7S|k~SJ3z>`o$Ddm(@N@>THSZ1l^mRxq}B^ypwDdw0~ zere{JXr`&=nrnnf=9^WrDd(JY)@f%NZo;W2ly~;&=bwOLndhE*25RV`h$b4qpoG4u z=%bKEiYB9tjw$J-m}V*mrIp61>8GHE8V0AGPATfCs76X^sZplt>Z^dR%IcG_)@rMq zvd((zuDp7gE33T*D{LLV&T8zj$R?}ovdlK?EUU#nEA6z@R%`9G*b0Edw%m5>?YH2D zEAF`DmTT_0=%%ax?z-%@>+ZYox~sqgCd6y+z4+#<@4o!@>u8O)@dg`oiyn5@f zOZ8U}fi7AzZCsRR+3_V>OLn>}1)%^cw%e=FpvysVQRb|NM6=_-7X+Qt{{hiU! oo3$*F>-XQ^-#tDXJ2Wsd1U~0@eEpggGf*>wr>mdKI;Vst0Kir