From 7d6c5167626151ed1a687cff5de5930331517e0a Mon Sep 17 00:00:00 2001 From: Lee Saferite Date: Thu, 31 Dec 2009 11:20:09 -0500 Subject: [PATCH] Import Magento 1.4.0.0-alpha2 --- app/Mage.php | 35 +- app/code/core/Mage/Admin/Model/Config.php | 50 +- .../core/Mage/Admin/Model/Mysql4/Rules.php | 49 +- app/code/core/Mage/Admin/Model/Roles.php | 8 +- app/code/core/Mage/Admin/Model/User.php | 31 +- app/code/core/Mage/Admin/etc/config.xml | 9 - .../Mage/AdminNotification/Model/Observer.php | 12 +- .../Mage/AdminNotification/etc/adminhtml.xml | 74 + .../Mage/AdminNotification/etc/config.xml | 59 - .../Block/Api/User/Edit/Tab/Main.php | 4 +- .../Block/Catalog/Category/Edit/Form.php | 3 + .../Block/Catalog/Category/Widget/Chooser.php | 173 + .../Form/Renderer/Fieldset/Element.php | 2 +- .../Product/Attribute/Edit/Tab/Main.php | 322 +- .../Product/Attribute/Edit/Tab/Options.php | 151 +- .../Block/Catalog/Product/Attribute/Grid.php | 98 +- .../Catalog/Product/Attribute/Set/Main.php | 12 +- .../Product/Attribute/Set/Main/Formset.php | 2 +- .../Product/Edit/Tab/Ajax/Serializer.php | 16 + .../Catalog/Product/Edit/Tab/Crosssell.php | 146 +- .../Product/Edit/Tab/Options/Option.php | 17 +- .../Edit/Tab/Options/Type/Abstract.php | 6 +- .../Catalog/Product/Edit/Tab/Price/Tier.php | 271 +- .../Catalog/Product/Edit/Tab/Related.php | 155 +- .../Super/Config/Grid/Filter/Inventory.php | 2 +- .../Catalog/Product/Edit/Tab/Super/Group.php | 22 +- .../Block/Catalog/Product/Edit/Tab/Tag.php | 15 +- .../Catalog/Product/Edit/Tab/Tag/Customer.php | 8 +- .../Block/Catalog/Product/Edit/Tab/Upsell.php | 131 +- .../Block/Catalog/Product/Widget/Chooser.php | 288 + .../Block/Catalog/Search/Edit/Form.php | 5 +- .../Adminhtml/Block/Catalog/Search/Grid.php | 4 +- .../Adminhtml/Block/Cms/Block/Edit/Form.php | 13 +- .../Block/Cms/Block/Widget/Chooser.php | 158 + .../core/Mage/Adminhtml/Block/Cms/Page.php | 20 +- .../Mage/Adminhtml/Block/Cms/Page/Edit.php | 39 +- .../Block/Cms/Page/Edit/Tab/Content.php | 146 + .../Block/Cms/Page/Edit/Tab/Design.php | 139 +- .../Block/Cms/Page/Edit/Tab/Main.php | 102 +- .../Block/Cms/Page/Edit/Tab/Meta.php | 71 +- .../Adminhtml/Block/Cms/Page/Edit/Tabs.php | 32 - .../Mage/Adminhtml/Block/Cms/Page/Grid.php | 5 +- .../Block/Cms/Page/Widget/Chooser.php | 157 + .../core/Mage/Adminhtml/Block/Cms/Widget.php | 57 + .../Adminhtml/Block/Cms/Widget/Chooser.php | 194 + .../Mage/Adminhtml/Block/Cms/Widget/Form.php | 176 + .../Adminhtml/Block/Cms/Widget/Options.php | 177 + .../Block/Cms/Wysiwyg/Images/Content.php | 132 + .../Cms/Wysiwyg/Images/Content/Files.php | 89 + .../Cms/Wysiwyg/Images/Content/Newfolder.php | 37 + .../Cms/Wysiwyg/Images/Content/Uploader.php | 59 + .../Block/Cms/Wysiwyg/Images/Tree.php | 98 + .../Block/Customer/Edit/Renderer/Region.php | 33 +- .../Block/Customer/Edit/Tab/Account.php | 10 +- .../Block/Customer/Edit/Tab/Addresses.php | 13 +- .../Adminhtml/Block/Customer/Edit/Tab/Tag.php | 3 +- .../Block/Customer/Edit/Tab/Wishlist.php | 15 +- .../Adminhtml/Block/Dashboard/Orders/Grid.php | 4 +- .../Mage/Adminhtml/Block/Dashboard/Totals.php | 9 +- .../Mage/Adminhtml/Block/Media/Uploader.php | 21 + .../Adminhtml/Block/Notification/Baseurl.php | 64 + .../Notification/Grid/Renderer/Severity.php | 2 +- .../core/Mage/Adminhtml/Block/Page/Menu.php | 9 +- .../Block/Permissions/User/Edit/Tab/Roles.php | 11 +- .../Adminhtml/Block/Promo/Catalog/Edit.php | 6 + .../Block/Promo/Catalog/Edit/Tab/Actions.php | 43 +- .../Promo/Catalog/Edit/Tab/Conditions.php | 44 +- .../Block/Promo/Catalog/Edit/Tab/Main.php | 43 +- .../Block/Promo/Catalog/Edit/Tabs.php | 25 - .../Mage/Adminhtml/Block/Promo/Quote/Edit.php | 7 + .../Block/Promo/Quote/Edit/Tab/Actions.php | 44 +- .../Block/Promo/Quote/Edit/Tab/Conditions.php | 44 +- .../Block/Promo/Quote/Edit/Tab/Labels.php | 44 +- .../Block/Promo/Quote/Edit/Tab/Main.php | 43 +- .../Adminhtml/Block/Promo/Quote/Edit/Tabs.php | 27 - .../Block/Promo/Widget/Chooser/Daterange.php | 142 + .../Block/Report/Review/Customer/Grid.php | 3 +- .../Block/Report/Review/Product/Grid.php | 3 +- .../Block/Report/Sales/Sales/Grid.php | 10 + .../Adminhtml/Block/Report/Search/Grid.php | 2 +- .../Block/Report/Tag/Customer/Grid.php | 1 + .../Block/Report/Tag/Popular/Grid.php | 1 + .../Block/Report/Tag/Product/Grid.php | 1 + .../Adminhtml/Block/Sales/Invoice/Grid.php | 5 +- .../Order/Create/Billing/Method/Form.php | 12 +- .../Block/Sales/Order/Create/Form/Address.php | 6 +- .../Block/Sales/Order/Creditmemo/View.php | 19 +- .../Block/Sales/Order/Invoice/View.php | 15 + .../Block/Sales/Order/Shipment/View.php | 7 +- .../Block/Sales/Order/Totals/Item.php | 37 +- .../Mage/Adminhtml/Block/Sales/Order/View.php | 12 + .../Mage/Adminhtml/Block/Sales/Totals.php | 2 +- .../Adminhtml/Block/Tag/Assigned/Grid.php | 271 + .../Adminhtml/Block/Tag/Customer/Grid.php | 38 +- .../core/Mage/Adminhtml/Block/Tag/Edit.php | 100 +- .../Adminhtml/Block/Tag/Edit/Accordion.php | 64 + .../Adminhtml/Block/Tag/Edit/Assigned.php | 58 + .../Mage/Adminhtml/Block/Tag/Edit/Form.php | 41 +- .../Mage/Adminhtml/Block/Tag/Product/Grid.php | 27 +- .../Adminhtml/Block/Tag/Store/Switcher.php | 51 + .../core/Mage/Adminhtml/Block/Tag/Tag.php | 2 +- .../Mage/Adminhtml/Block/Tag/Tag/Edit.php | 24 + .../Adminhtml/Block/Tag/Tag/Edit/Form.php | 7 +- .../Mage/Adminhtml/Block/Tag/Tag/Grid.php | 47 +- .../Mage/Adminhtml/Block/Tax/Rate/Form.php | 1 + .../Mage/Adminhtml/Block/Tax/Rule/Edit.php | 8 + app/code/core/Mage/Adminhtml/Block/Widget.php | 13 +- .../Mage/Adminhtml/Block/Widget/Button.php | 2 +- .../Mage/Adminhtml/Block/Widget/Container.php | 74 +- .../core/Mage/Adminhtml/Block/Widget/Form.php | 8 +- .../core/Mage/Adminhtml/Block/Widget/Grid.php | 91 +- .../Adminhtml/Block/Widget/Grid/Column.php | 6 + .../Block/Widget/Grid/Column/Filter/Store.php | 2 +- .../Block/Widget/Grid/Column/Filter/Theme.php | 121 + .../Widget/Grid/Column/Renderer/Abstract.php | 2 +- .../Widget/Grid/Column/Renderer/Input.php | 6 +- .../Widget/Grid/Column/Renderer/Theme.php | 102 + .../Block/Widget/Grid/Massaction/Abstract.php | 38 +- .../Block/Widget/Grid/Serializer.php | 129 + .../core/Mage/Adminhtml/Block/Widget/Tabs.php | 47 +- .../core/Mage/Adminhtml/Controller/Action.php | 24 +- .../Adminhtml/Controller/Sales/Creditmemo.php | 16 + .../Adminhtml/Controller/Sales/Invoice.php | 31 +- .../Mage/Adminhtml/Helper/Dashboard/Data.php | 2 +- app/code/core/Mage/Adminhtml/Helper/Js.php | 24 +- app/code/core/Mage/Adminhtml/Model/Config.php | 2 +- .../Adminhtml/Model/Extension/Collection.php | 2 + .../Adminhtml/Model/Sales/Order/Create.php | 37 +- .../System/Config/Backend/Price/Scope.php | 4 +- .../System/Config/Backend/Seo/Product.php | 9 +- .../Model/System/Config/Clone/Media/Image.php | 4 +- .../Model/System/Config/Source/Admin/Page.php | 2 +- .../Config/Source/Cms/Wysiwyg/Enabled.php | 53 + .../Catalog/Category/WidgetController.php | 72 + .../Catalog/CategoryController.php | 45 +- .../Product/Action/AttributeController.php | 93 +- .../Catalog/Product/AttributeController.php | 9 +- .../Catalog/Product/WidgetController.php | 66 + .../controllers/Catalog/ProductController.php | 149 +- .../Cms/Block/WidgetController.php | 48 + .../controllers/Cms/BlockController.php | 8 +- .../controllers/Cms/Page/WidgetController.php | 48 + .../controllers/Cms/PageController.php | 89 +- .../controllers/Cms/WidgetController.php | 110 + .../Cms/Wysiwyg/ImagesController.php | 187 + .../controllers/Cms/WysiwygController.php | 62 + .../controllers/CustomerController.php | 14 +- .../controllers/DashboardController.php | 2 +- .../Permissions/UserController.php | 10 + .../controllers/Promo/CatalogController.php | 44 +- .../controllers/Promo/QuoteController.php | 44 +- .../controllers/Sales/OrderController.php | 11 + .../System/Email/TemplateController.php | 8 +- .../Adminhtml/controllers/TagController.php | 170 +- .../controllers/Tax/RuleController.php | 7 +- .../core/Mage/Adminhtml/etc/adminhtml.xml | 276 + app/code/core/Mage/Adminhtml/etc/config.xml | 254 +- .../Mage/AmazonPayments/Model/Payment/Asp.php | 75 +- .../Model/Payment/Asp/Notification.php | 9 +- .../Mage/AmazonPayments/Model/Payment/Cba.php | 12 +- .../core/Mage/AmazonPayments/etc/config.xml | 13 - .../core/Mage/AmazonPayments/etc/system.xml | 4 +- app/code/core/Mage/Api/etc/adminhtml.xml | 82 + app/code/core/Mage/Api/etc/config.xml | 66 - app/code/core/Mage/Api/etc/wsdl2.xml | 4 +- app/code/core/Mage/Backup/Model/Mysql4/Db.php | 4 +- app/code/core/Mage/Backup/etc/adminhtml.xml | 62 + app/code/core/Mage/Backup/etc/config.xml | 46 - .../core/Mage/Bundle/Model/Mysql4/Bundle.php | 15 + .../Bundle/Model/Mysql4/Indexer/Price.php | 438 + .../Bundle/Model/Mysql4/Indexer/Stock.php | 199 + .../Mage/Bundle/Model/Mysql4/Price/Index.php | 4 +- .../core/Mage/Bundle/Model/Product/Price.php | 1 - .../core/Mage/Bundle/Model/Product/Type.php | 26 +- app/code/core/Mage/Bundle/etc/config.xml | 27 +- .../mysql4-upgrade-0.1.8-0.1.9.php | 50 + .../mysql4-upgrade-0.1.9-0.1.10.php | 39 + .../Catalog/Block/Category/Widget/Link.php | 46 + .../core/Mage/Catalog/Block/Navigation.php | 37 +- .../Mage/Catalog/Block/Product/Abstract.php | 2 +- .../Catalog/Block/Product/Compare/List.php | 18 + .../core/Mage/Catalog/Block/Product/New.php | 50 +- .../core/Mage/Catalog/Block/Product/View.php | 59 +- .../Block/Product/View/Options/Type/Date.php | 2 +- .../Block/Product/View/Type/Configurable.php | 2 +- .../Catalog/Block/Product/Widget/Link.php | 46 + .../Mage/Catalog/Block/Product/Widget/New.php | 50 + .../core/Mage/Catalog/Block/Widget/Link.php | 104 + app/code/core/Mage/Catalog/Helper/Image.php | 135 +- app/code/core/Mage/Catalog/Helper/Product.php | 3 +- .../core/Mage/Catalog/Helper/Product/Url.php | 80 +- app/code/core/Mage/Catalog/Model/Abstract.php | 2 +- .../core/Mage/Catalog/Model/Api/Resource.php | 23 +- app/code/core/Mage/Catalog/Model/Category.php | 80 +- .../core/Mage/Catalog/Model/Category/Api.php | 32 +- .../Category/Attribute/Backend/Sortby.php | 189 +- .../Category/Attribute/Backend/Urlkey.php | 10 +- .../Category/Attribute/Source/Sortby.php | 136 +- .../Catalog/Model/Category/Indexer/Flat.php | 224 + .../Model/Category/Indexer/Product.php | 200 + app/code/core/Mage/Catalog/Model/Config.php | 30 +- .../Catalog/Model/Convert/Adapter/Product.php | 17 +- .../Catalog/Model/Convert/Parser/Product.php | 7 +- .../core/Mage/Catalog/Model/Indexer/Url.php | 226 + app/code/core/Mage/Catalog/Model/Layer.php | 19 +- .../Catalog/Model/Layer/Filter/Abstract.php | 54 +- .../Catalog/Model/Layer/Filter/Attribute.php | 31 +- .../Mage/Catalog/Model/Layer/Filter/Price.php | 98 +- app/code/core/Mage/Catalog/Model/Observer.php | 54 +- app/code/core/Mage/Catalog/Model/Product.php | 43 +- .../Mage/Catalog/Model/Product/Action.php | 123 + .../core/Mage/Catalog/Model/Product/Api.php | 12 +- .../Mage/Catalog/Model/Product/Api/V2.php | 8 +- .../Model/Product/Attribute/Backend/Media.php | 2 +- .../Product/Attribute/Backend/Tierprice.php | 221 +- .../Product/Attribute/Backend/Urlkey.php | 10 +- .../Model/Product/Attribute/Media/Api.php | 45 +- .../Model/Product/Attribute/Media/Api/V2.php | 8 +- .../Model/Product/Attribute/Tierprice/Api.php | 30 +- .../Product/Attribute/Tierprice/Api/V2.php | 4 +- .../core/Mage/Catalog/Model/Product/Image.php | 202 +- .../Catalog/Model/Product/Indexer/Eav.php | 259 + .../Catalog/Model/Product/Indexer/Flat.php | 287 + .../Catalog/Model/Product/Indexer/Price.php | 238 + .../Catalog/Model/Product/Indexer/Status.php | 25 + .../core/Mage/Catalog/Model/Product/Link.php | 8 +- .../Mage/Catalog/Model/Product/Link/Api.php | 41 +- .../Catalog/Model/Product/Link/Api/V2.php | 8 +- .../Model/Product/Option/Type/Select.php | 92 +- .../Mage/Catalog/Model/Product/Status.php | 39 +- .../core/Mage/Catalog/Model/Product/Type.php | 36 + .../Catalog/Model/Product/Type/Abstract.php | 11 +- .../Model/Product/Type/Configurable.php | 24 +- .../Product/Type/Configurable/Attribute.php | 19 +- .../Catalog/Model/Product/Type/Grouped.php | 1 + .../Mage/Catalog/Model/Product/Visibility.php | 2 +- .../Mage/Catalog/Model/Product/Website.php | 16 - .../Catalog/Model/Resource/Eav/Attribute.php | 105 + .../Model/Resource/Eav/Mysql4/Abstract.php | 408 +- .../Model/Resource/Eav/Mysql4/Attribute.php | 52 + .../Model/Resource/Eav/Mysql4/Category.php | 1062 +- .../Mysql4/Category/Attribute/Collection.php | 57 + .../Eav/Mysql4/Category/Collection.php | 12 +- .../Resource/Eav/Mysql4/Category/Flat.php | 276 +- .../Eav/Mysql4/Category/Flat/Collection.php | 14 + .../Eav/Mysql4/Category/Indexer/Product.php | 509 + .../Resource/Eav/Mysql4/Category/Tree.php | 13 +- .../Eav/Mysql4/Collection/Abstract.php | 4 +- .../Model/Resource/Eav/Mysql4/Config.php | 60 +- .../Eav/Mysql4/Layer/Filter/Attribute.php | 109 + .../Eav/Mysql4/Layer/Filter/Price.php | 191 + .../Model/Resource/Eav/Mysql4/Product.php | 31 +- .../Resource/Eav/Mysql4/Product/Action.php | 86 + .../Product/Attribute/Backend/Tierprice.php | 139 +- .../Mysql4/Product/Attribute/Collection.php | 124 + .../Eav/Mysql4/Product/Collection.php | 163 +- .../Product/Compare/Item/Collection.php | 16 +- .../Eav/Mysql4/Product/Flat/Indexer.php | 110 +- .../Eav/Mysql4/Product/Indexer/Abstract.php | 198 + .../Eav/Mysql4/Product/Indexer/Eav.php | 434 + .../Eav/Mysql4/Product/Indexer/Price.php | 452 + .../Product/Indexer/Price/Configurable.php | 226 + .../Mysql4/Product/Indexer/Price/Default.php | 611 + .../Mysql4/Product/Indexer/Price/Grouped.php | 122 + .../Product/Indexer/Price/Interface.php | 59 + .../Resource/Eav/Mysql4/Product/Link.php | 74 +- .../Resource/Eav/Mysql4/Product/Relation.php | 84 + .../Resource/Eav/Mysql4/Product/Status.php | 8 +- .../Eav/Mysql4/Product/Type/Configurable.php | 57 +- .../Product/Type/Configurable/Attribute.php | 218 +- .../Configurable/Attribute/Collection.php | 12 +- .../Resource/Eav/Mysql4/Product/Website.php | 38 +- .../Model/Resource/Eav/Mysql4/Setup.php | 177 +- .../Catalog/Model/Resource/Eav/Mysql4/Url.php | 62 +- app/code/core/Mage/Catalog/Model/Url.php | 100 +- app/code/core/Mage/Catalog/etc/adminhtml.xml | 117 + app/code/core/Mage/Catalog/etc/config.xml | 881 +- app/code/core/Mage/Catalog/etc/widget.xml | 110 + app/code/core/Mage/Catalog/etc/wsdl.xml | 25 +- .../mysql4-install-1.4.0.0.0.php | 800 + .../mysql4-upgrade-0.7.72-0.7.73.php | 50 + .../mysql4-upgrade-0.7.73-1.4.0.0.0.php | 95 + .../mysql4-upgrade-1.4.0.0.0-1.4.0.0.1.php | 38 + .../mysql4-upgrade-1.4.0.0.1-1.4.0.0.2.php | 38 + .../mysql4-upgrade-1.4.0.0.2-1.4.0.0.3.php | 50 + .../mysql4-upgrade-1.4.0.0.3-1.4.0.0.4.php | 36 + .../mysql4-upgrade-1.4.0.0.4-1.4.0.0.5.php | 73 + .../mysql4-upgrade-1.4.0.0.5-1.4.0.0.6.php | 52 + .../mysql4-upgrade-1.4.0.0.6-1.4.0.0.7.php | 33 + .../mysql4-upgrade-1.4.0.0.7-1.4.0.0.8.php | 34 + .../mysql4-upgrade-1.4.0.0.8-1.4.0.0.9.php | 36 + .../mysql4-upgrade-1.4.0.0.9-1.4.0.0.10.php | 51 + .../core/Mage/CatalogIndex/Model/Indexer.php | 5 +- .../Mage/CatalogIndex/Model/Indexer/Eav.php | 2 +- .../Model/Mysql4/Data/Abstract.php | 10 +- .../Model/Mysql4/Indexer/Abstract.php | 4 +- .../core/Mage/CatalogIndex/Model/Observer.php | 7 +- .../core/Mage/CatalogIndex/etc/config.xml | 309 +- .../Mage/CatalogInventory/Helper/Data.php | 12 + .../CatalogInventory/Model/Indexer/Stock.php | 325 + .../Model/Mysql4/Indexer/Stock.php | 373 + .../Mysql4/Indexer/Stock/Configurable.php | 120 + .../Model/Mysql4/Indexer/Stock/Default.php | 192 + .../Model/Mysql4/Indexer/Stock/Grouped.php | 121 + .../Model/Mysql4/Indexer/Stock/Interface.php | 67 + .../Model/Mysql4/Stock/Status.php | 20 + .../Mage/CatalogInventory/Model/Observer.php | 18 + .../Mage/CatalogInventory/Model/Stock.php | 334 +- .../CatalogInventory/Model/Stock/Item.php | 38 +- .../CatalogInventory/Model/Stock/Status.php | 19 + .../Mage/CatalogInventory/etc/adminhtml.xml | 48 + .../core/Mage/CatalogInventory/etc/config.xml | 77 +- .../core/Mage/CatalogInventory/etc/system.xml | 9 + .../Mage/CatalogRule/Model/Mysql4/Rule.php | 289 +- .../Model/Mysql4/Rule/Product/Price.php | 65 +- .../core/Mage/CatalogRule/Model/Observer.php | 27 +- app/code/core/Mage/CatalogRule/Model/Rule.php | 100 +- .../Model/Rule/Condition/Product.php | 9 +- .../CatalogRule/Model/Rule/Product/Price.php | 61 +- .../core/Mage/CatalogRule/etc/adminhtml.xml | 60 + app/code/core/Mage/CatalogRule/etc/config.xml | 75 +- .../CatalogSearch/Block/Advanced/Form.php | 4 +- .../core/Mage/CatalogSearch/Block/Result.php | 2 +- .../core/Mage/CatalogSearch/Helper/Data.php | 10 +- .../Mage/CatalogSearch/Model/Advanced.php | 9 +- .../Mage/CatalogSearch/Model/Fulltext.php | 4 +- .../CatalogSearch/Model/Indexer/Fulltext.php | 302 + .../core/Mage/CatalogSearch/Model/Layer.php | 6 +- .../Model/Mysql4/Advanced/Collection.php | 4 +- .../CatalogSearch/Model/Mysql4/Fulltext.php | 14 +- .../Model/Mysql4/Query/Collection.php | 4 +- .../Model/Mysql4/Search/Collection.php | 7 +- .../core/Mage/CatalogSearch/Model/Query.php | 23 +- .../Model/System/Config/Backend/Sitemap.php | 40 + .../controllers/AjaxController.php | 4 + .../core/Mage/CatalogSearch/etc/adminhtml.xml | 54 + .../core/Mage/CatalogSearch/etc/config.xml | 59 +- .../core/Mage/CatalogSearch/etc/system.xml | 1 + .../mysql4-upgrade-0.7.6-0.7.7.php | 36 + app/code/core/Mage/Checkout/Block/Cart.php | 2 +- .../Checkout/Block/Cart/Item/Renderer.php | 4 +- app/code/core/Mage/Checkout/Model/Cart.php | 18 + .../core/Mage/Checkout/Model/Mysql4/Setup.php | 37 + app/code/core/Mage/Checkout/Model/Session.php | 2 + .../Mage/Checkout/Model/Type/Abstract.php | 7 + .../Checkout/Model/Type/Multishipping.php | 3 +- .../core/Mage/Checkout/Model/Type/Onepage.php | 18 +- .../controllers/MultishippingController.php | 2 +- .../controllers/OnepageController.php | 3 + app/code/core/Mage/Checkout/etc/adminhtml.xml | 69 + app/code/core/Mage/Checkout/etc/config.xml | 60 +- .../mysql4-upgrade-0.9.3-0.9.4.php | 702 + app/code/core/Mage/Chronopay/etc/config.xml | 13 - app/code/core/Mage/Cms/Block/Block.php | 28 +- app/code/core/Mage/Cms/Block/Page.php | 32 +- app/code/core/Mage/Cms/Block/Widget/Block.php | 60 + .../core/Mage/Cms/Block/Widget/Interface.php | 80 + .../core/Mage/Cms/Block/Widget/Page/Link.php | 127 + app/code/core/Mage/Cms/Controller/Router.php | 23 + app/code/core/Mage/Cms/Helper/Data.php | 24 + app/code/core/Mage/Cms/Helper/Page.php | 56 +- .../core/Mage/Cms/Helper/Wysiwyg/Images.php | 183 + app/code/core/Mage/Cms/Model/Config.php | 73 + app/code/core/Mage/Cms/Model/Mysql4/Page.php | 65 +- .../Mage/Cms/Model/Mysql4/Page/Collection.php | 41 +- .../core/Mage/Cms/Model/Mysql4/Widget.php | 65 + app/code/core/Mage/Cms/Model/Page.php | 24 + .../core/Mage/Cms/Model/Template/Filter.php | 73 + app/code/core/Mage/Cms/Model/Widget.php | 146 + .../core/Mage/Cms/Model/Wysiwyg/Config.php | 160 + .../Mage/Cms/Model/Wysiwyg/Images/Storage.php | 230 + .../Wysiwyg/Images/Storage/Collection.php | 50 + app/code/core/Mage/Cms/etc/adminhtml.xml | 99 + app/code/core/Mage/Cms/etc/config.xml | 95 +- app/code/core/Mage/Cms/etc/system.xml | 39 + app/code/core/Mage/Cms/etc/widget.xml | 73 + .../mysql4-upgrade-0.7.10-0.7.11.php | 41 + .../cms_setup/mysql4-upgrade-0.7.8-0.7.9.php | 42 + .../cms_setup/mysql4-upgrade-0.7.9-0.7.10.php | 36 + app/code/core/Mage/Compiler/Block/Process.php | 2 +- app/code/core/Mage/Compiler/Model/Process.php | 12 +- .../controllers/ProcessController.php | 3 - app/code/core/Mage/Compiler/etc/adminhtml.xml | 65 + .../core/Mage/Compiler/etc/compilation.xml | 5 +- app/code/core/Mage/Compiler/etc/config.xml | 48 - .../Model/System/Config/Backend/Links.php | 40 + app/code/core/Mage/Contacts/etc/adminhtml.xml | 48 + app/code/core/Mage/Contacts/etc/config.xml | 22 - app/code/core/Mage/Contacts/etc/system.xml | 1 + app/code/core/Mage/Core/Block/Abstract.php | 28 +- app/code/core/Mage/Core/Block/Html/Date.php | 6 +- app/code/core/Mage/Core/Block/Html/Link.php | 97 + app/code/core/Mage/Core/Block/Messages.php | 31 +- app/code/core/Mage/Core/Block/Template.php | 46 +- .../Mage/Core/Controller/Front/Action.php | 16 +- .../Mage/Core/Controller/Request/Http.php | 46 + .../Mage/Core/Controller/Varien/Action.php | 33 +- .../Controller/Varien/Router/Standard.php | 8 +- app/code/core/Mage/Core/Helper/String.php | 40 +- app/code/core/Mage/Core/Model/Abstract.php | 74 +- app/code/core/Mage/Core/Model/App.php | 15 +- app/code/core/Mage/Core/Model/Config.php | 12 +- app/code/core/Mage/Core/Model/Config/Data.php | 16 + .../core/Mage/Core/Model/Config/Element.php | 8 +- .../core/Mage/Core/Model/Config/Options.php | 1 - app/code/core/Mage/Core/Model/Cookie.php | 17 +- .../Mage/Core/Model/Design/Source/Design.php | 48 +- .../core/Mage/Core/Model/Email/Template.php | 12 +- .../Mage/Core/Model/Email/Template/Filter.php | 18 +- app/code/core/Mage/Core/Model/Layout.php | 2 +- .../core/Mage/Core/Model/Layout/Update.php | 197 +- app/code/core/Mage/Core/Model/Locale.php | 37 +- .../core/Mage/Core/Model/Locale/Currency.php | 197 - .../core/Mage/Core/Model/Mysql4/Abstract.php | 40 +- .../Mage/Core/Model/Mysql4/Email/Template.php | 2 +- .../core/Mage/Core/Model/Mysql4/Layout.php | 22 +- .../core/Mage/Core/Model/Mysql4/Session.php | 15 +- .../Core/Model/Mysql4/Store/Collection.php | 14 +- .../Mage/Core/Model/Mysql4/Url/Rewrite.php | 27 +- .../Core/Model/Mysql4/Website/Collection.php | 57 +- app/code/core/Mage/Core/Model/Resource.php | 19 +- .../core/Mage/Core/Model/Resource/Setup.php | 9 +- .../Core/Model/Session/Abstract/Varien.php | 44 +- app/code/core/Mage/Core/Model/Store.php | 26 +- app/code/core/Mage/Core/Model/Store/Group.php | 1 + .../core/Mage/Core/Model/Translate/Inline.php | 1 - app/code/core/Mage/Core/Model/Url/Rewrite.php | 23 + app/code/core/Mage/Core/Model/Website.php | 1 + app/code/core/Mage/Core/etc/system.xml | 42 +- app/code/core/Mage/Core/functions.php | 10 +- app/code/core/Mage/Cron/etc/config.xml | 14 - .../Mage/Customer/Block/Widget/Gender.php | 74 + .../core/Mage/Customer/Model/Attribute.php | 56 + .../Model/Convert/Adapter/Customer.php | 16 +- .../Model/Convert/Parser/Customer.php | 16 +- .../core/Mage/Customer/Model/Customer.php | 8 +- .../Entity/Address/Attribute/Collection.php | 69 + .../Mage/Customer/Model/Entity/Attribute.php | 53 + .../Model/Entity/Attribute/Collection.php | 69 + .../Model/Entity/Customer/Collection.php | 20 +- .../core/Mage/Customer/Model/Entity/Setup.php | 28 +- app/code/core/Mage/Customer/Model/Group.php | 221 +- .../controllers/AccountController.php | 10 +- app/code/core/Mage/Customer/etc/adminhtml.xml | 91 + app/code/core/Mage/Customer/etc/config.xml | 83 +- app/code/core/Mage/Customer/etc/system.xml | 9 + .../mysql4-install-1.4.0.0.0.php | 640 + .../mysql4-upgrade-0.8.11-0.8.12.php | 392 + .../mysql4-upgrade-0.8.12-1.4.0.0.0.php | 78 + .../mysql4-upgrade-1.4.0.0.0-1.4.0.0.1.php | 67 + .../mysql4-upgrade-1.4.0.0.1-1.4.0.0.2.php | 35 + app/code/core/Mage/Cybermut/etc/config.xml | 13 - app/code/core/Mage/Cybersource/etc/config.xml | 13 - .../Model/Mysql4/Profile/Collection.php | 2 +- app/code/core/Mage/Dataflow/etc/config.xml | 13 - app/code/core/Mage/Directory/Helper/Data.php | 27 +- .../Mage/Directory/Model/Currency/Filter.php | 2 +- app/code/core/Mage/Directory/etc/config.xml | 7 - app/code/core/Mage/Directory/etc/system.xml | 26 +- .../core/Mage/Downloadable/Helper/File.php | 626 +- .../Model/Mysql4/Indexer/Price.php | 171 + .../Mage/Downloadable/Model/Product/Type.php | 35 +- .../core/Mage/Downloadable/etc/adminhtml.xml | 48 + .../core/Mage/Downloadable/etc/config.xml | 642 +- .../mysql4-upgrade-0.1.15-0.1.16.php | 70 + .../Eav/Block/Adminhtml/Attribute/Edit/Js.php | 41 + .../Attribute/Edit/Main/Abstract.php | 219 + .../Attribute/Edit/Options/Abstract.php | 224 + .../Adminhtml/Attribute/Grid/Abstract.php | 103 + app/code/core/Mage/Eav/Helper/Data.php | 98 + .../System/Config/Source/Inputtype.php | 41 + app/code/core/Mage/Eav/Model/Config.php | 9 +- .../Mage/Eav/Model/Convert/Adapter/Entity.php | 4 +- .../core/Mage/Eav/Model/Entity/Abstract.php | 76 +- .../core/Mage/Eav/Model/Entity/Attribute.php | 40 +- .../Eav/Model/Entity/Attribute/Abstract.php | 6 + .../Entity/Attribute/Backend/Datetime.php | 11 +- .../Model/Entity/Attribute/Source/Table.php | 2 +- .../Eav/Model/Entity/Collection/Abstract.php | 19 +- app/code/core/Mage/Eav/Model/Entity/Setup.php | 219 +- app/code/core/Mage/Eav/Model/Entity/Type.php | 13 + app/code/core/Mage/Eav/Model/Form/Element.php | 105 + .../core/Mage/Eav/Model/Form/Fieldset.php | 143 + app/code/core/Mage/Eav/Model/Form/Type.php | 158 + .../Eav/Model/Mysql4/Entity/Attribute.php | 144 +- .../Mysql4/Entity/Attribute/Collection.php | 102 +- .../Model/Mysql4/Entity/Attribute/Group.php | 15 + .../Model/Mysql4/Entity/Attribute/Option.php | 2 +- .../Entity/Attribute/Option/Collection.php | 2 +- .../Eav/Model/Mysql4/Entity/Attribute/Set.php | 1 + .../Mage/Eav/Model/Mysql4/Entity/Type.php | 14 + .../Mage/Eav/Model/Mysql4/Form/Element.php | 68 + .../Model/Mysql4/Form/Element/Collection.php | 138 + .../Mage/Eav/Model/Mysql4/Form/Fieldset.php | 161 + .../Model/Mysql4/Form/Fieldset/Collection.php | 129 + .../core/Mage/Eav/Model/Mysql4/Form/Type.php | 147 + .../Eav/Model/Mysql4/Form/Type/Collection.php | 76 + app/code/core/Mage/Eav/etc/config.xml | 91 +- .../mysql4-upgrade-0.7.13-0.7.14.php | 48 + .../mysql4-upgrade-0.7.14-0.7.15.php | 97 + app/code/core/Mage/Eway/etc/config.xml | 13 - app/code/core/Mage/Flo2Cash/etc/config.xml | 13 - app/code/core/Mage/GiftMessage/etc/config.xml | 13 - .../core/Mage/GiftRegistry/etc/config.xml | 13 - .../Mage/GoogleAnalytics/Model/Observer.php | 15 +- .../Mage/GoogleAnalytics/etc/adminhtml.xml | 48 + .../core/Mage/GoogleAnalytics/etc/config.xml | 30 +- .../Mage/GoogleBase/Model/Service/Item.php | 1 + .../core/Mage/GoogleBase/etc/adminhtml.xml | 74 + app/code/core/Mage/GoogleBase/etc/config.xml | 60 - .../GoogleCheckout/Model/Mysql4/Setup.php | 2 +- .../Mage/GoogleCheckout/Model/Payment.php | 11 - .../Mage/GoogleCheckout/etc/adminhtml.xml | 48 + .../core/Mage/GoogleCheckout/etc/config.xml | 40 +- .../Block/Adminhtml/Cms/Page/Edit/Enable.php | 80 + .../Cms/Page/Edit/Tab/Googleoptimizer.php | 79 +- .../core/Mage/GoogleOptimizer/etc/config.xml | 29 - app/code/core/Mage/Ideal/etc/config.xml | 14 - .../Index/Block/Adminhtml/Notifications.php | 55 + .../Mage/Index/Block/Adminhtml/Process.php | 37 + .../Index/Block/Adminhtml/Process/Edit.php | 81 + .../Block/Adminhtml/Process/Edit/Form.php | 41 + .../Block/Adminhtml/Process/Edit/Tab/Main.php | 118 + .../Block/Adminhtml/Process/Edit/Tabs.php | 37 + .../Index/Block/Adminhtml/Process/Grid.php | 213 + app/code/core/Mage/Index/Helper/Data.php | 30 + app/code/core/Mage/Index/Model/Event.php | 288 + app/code/core/Mage/Index/Model/Indexer.php | 214 + .../Mage/Index/Model/Indexer/Abstract.php | 148 + .../core/Mage/Index/Model/Mysql4/Abstract.php | 167 + .../core/Mage/Index/Model/Mysql4/Event.php | 87 + .../Index/Model/Mysql4/Event/Collection.php | 122 + .../core/Mage/Index/Model/Mysql4/Process.php | 110 + .../Index/Model/Mysql4/Process/Collection.php | 32 + .../core/Mage/Index/Model/Mysql4/Setup.php | 61 + app/code/core/Mage/Index/Model/Observer.php | 146 + app/code/core/Mage/Index/Model/Process.php | 390 + .../Adminhtml/ProcessController.php | 217 + app/code/core/Mage/Index/etc/adminhtml.xml | 55 + app/code/core/Mage/Index/etc/config.xml | 145 + .../index_setup/mysql4-install-1.4.0.0.php | 63 + .../mysql4-upgrade-1.4.0.0-1.4.0.1.php | 33 + .../mysql4-upgrade-1.4.0.1-1.4.0.2.php | 34 + app/code/core/Mage/Install/etc/config.xml | 11 - app/code/core/Mage/Log/Model/Mysql4/Log.php | 30 + .../core/Mage/Log/Model/Mysql4/Visitor.php | 30 + app/code/core/Mage/Log/Model/Visitor.php | 11 +- app/code/core/Mage/Log/etc/config.xml | 19 - .../core/Mage/Newsletter/Block/Subscribe.php | 13 +- .../Model/Mysql4/Queue/Collection.php | 129 +- .../core/Mage/Newsletter/Model/Subscriber.php | 33 +- .../core/Mage/Newsletter/Model/Template.php | 2 +- .../core/Mage/Newsletter/etc/adminhtml.xml | 94 + app/code/core/Mage/Newsletter/etc/config.xml | 84 +- app/code/core/Mage/Newsletter/etc/system.xml | 19 - .../mysql4-upgrade-0.8.0-0.8.1.php | 44 + app/code/core/Mage/Ogone/Block/Form.php | 39 + app/code/core/Mage/Ogone/Block/Info.php | 41 + app/code/core/Mage/Ogone/Block/Paypage.php | 41 + app/code/core/Mage/Ogone/Block/Placeform.php | 90 + app/code/core/Mage/Ogone/Helper/Data.php | 68 + app/code/core/Mage/Ogone/Model/Api.php | 257 + app/code/core/Mage/Ogone/Model/Api/Debug.php | 40 + app/code/core/Mage/Ogone/Model/Config.php | 151 + .../Mage/Ogone/Model/Mysql4/Api/Debug.php | 40 + .../Mage/Ogone/Model/Source/PaymentAction.php | 45 + .../core/Mage/Ogone/Model/Source/Pmlist.php | 45 + .../core/Mage/Ogone/Model/Source/Template.php | 44 + .../Mage/Ogone/controllers/ApiController.php | 474 + app/code/core/Mage/Ogone/etc/config.xml | 112 + app/code/core/Mage/Ogone/etc/system.xml | 236 + .../sql/ogone_setup/mysql4-install-0.0.1.php | 46 + .../Oscommerce/Block/Adminhtml/Order/View.php | 11 +- .../core/Mage/Oscommerce/etc/adminhtml.xml | 80 + app/code/core/Mage/Oscommerce/etc/config.xml | 65 - app/code/core/Mage/Page/Block/Html/Head.php | 160 +- .../core/Mage/Page/Model/Source/Layout.php | 6 +- app/code/core/Mage/Paybox/etc/config.xml | 13 - .../core/Mage/Paygate/Model/Authorizenet.php | 7 + app/code/core/Mage/Paygate/etc/config.xml | 23 +- app/code/core/Mage/Paygate/etc/system.xml | 3 +- .../mysql4-upgrade-0.7.0-0.7.1.php | 44 + app/code/core/Mage/Payment/Helper/Data.php | 43 +- .../Mage/Payment/Model/Method/Abstract.php | 17 +- .../core/Mage/Payment/Model/Method/Cc.php | 18 +- .../core/Mage/Payment/Model/Method/Free.php | 14 +- app/code/core/Mage/Payment/etc/adminhtml.xml | 48 + app/code/core/Mage/Payment/etc/config.xml | 23 - .../core/Mage/Paypal/Block/Link/Shortcut.php | 16 +- app/code/core/Mage/Paypal/Model/Standard.php | 2 +- app/code/core/Mage/Paypal/etc/adminhtml.xml | 48 + app/code/core/Mage/Paypal/etc/config.xml | 46 +- app/code/core/Mage/PaypalUk/etc/config.xml | 27 +- app/code/core/Mage/Poll/Block/ActivePoll.php | 2 +- .../Poll/Model/Mysql4/Poll/Collection.php | 2 +- app/code/core/Mage/Poll/etc/config.xml | 13 - .../core/Mage/ProductAlert/Model/Observer.php | 5 +- .../core/Mage/ProductAlert/etc/config.xml | 13 - .../core/Mage/ProductAlert/etc/system.xml | 8 +- app/code/core/Mage/Protx/etc/config.xml | 13 - app/code/core/Mage/Rating/etc/adminhtml.xml | 48 + app/code/core/Mage/Rating/etc/config.xml | 32 - .../Mage/Reports/Block/Product/Abstract.php | 4 +- .../Reports/Block/Product/Widget/Compared.php | 39 + .../Reports/Block/Product/Widget/Viewed.php | 39 + .../Reports/Model/Mysql4/Order/Collection.php | 30 +- .../Model/Mysql4/Product/Index/Abstract.php | 2 +- .../Mysql4/Product/Lowstock/Collection.php | 411 +- .../Reports/Model/Mysql4/Quote/Collection.php | 17 +- app/code/core/Mage/Reports/etc/adminhtml.xml | 300 + app/code/core/Mage/Reports/etc/config.xml | 298 +- app/code/core/Mage/Reports/etc/system.xml | 2 +- app/code/core/Mage/Reports/etc/widget.xml | 65 + .../mysql4-upgrade-0.7.8-0.7.9.php | 33 + app/code/core/Mage/Review/Block/Helper.php | 2 +- app/code/core/Mage/Review/Model/Review.php | 8 + app/code/core/Mage/Review/etc/adminhtml.xml | 85 + app/code/core/Mage/Review/etc/config.xml | 79 +- .../core/Mage/Rss/Block/Catalog/Category.php | 81 +- app/code/core/Mage/Rss/Block/Catalog/New.php | 34 +- .../Mage/Rss/Block/Catalog/NotifyStock.php | 11 +- .../core/Mage/Rss/Block/Catalog/Review.php | 11 +- .../core/Mage/Rss/Block/Catalog/Special.php | 79 +- app/code/core/Mage/Rss/Block/Catalog/Tag.php | 24 +- app/code/core/Mage/Rss/Block/Order/New.php | 16 +- app/code/core/Mage/Rss/Helper/Catalog.php | 2 +- app/code/core/Mage/Rss/Helper/Data.php | 4 +- app/code/core/Mage/Rss/Model/Observer.php | 76 + .../Rss/controllers/CatalogController.php | 2 +- .../Mage/Rss/controllers/OrderController.php | 17 +- app/code/core/Mage/Rss/etc/adminhtml.xml | 49 + app/code/core/Mage/Rss/etc/config.xml | 38 +- app/code/core/Mage/Rule/Block/Editable.php | 49 +- app/code/core/Mage/Rule/Block/Newchild.php | 21 +- .../Mage/Rule/Model/Condition/Abstract.php | 69 +- .../Mage/Rule/Model/Condition/Combine.php | 8 +- app/code/core/Mage/Rule/Model/Rule.php | 6 +- .../core/Mage/Sales/Block/Order/Totals.php | 6 +- .../core/Mage/Sales/Block/Reorder/Sidebar.php | 11 + .../Sales/Model/Mysql4/Order/Collection.php | 17 +- .../Model/Mysql4/Order/Invoice/Collection.php | 25 +- .../core/Mage/Sales/Model/Mysql4/Setup.php | 2 + app/code/core/Mage/Sales/Model/Order.php | 21 +- .../Mage/Sales/Model/Order/Creditmemo.php | 4 + .../Model/Order/Creditmemo/Total/Cost.php | 47 + .../core/Mage/Sales/Model/Order/Invoice.php | 3 + .../Sales/Model/Order/Invoice/Total/Cost.php | 47 + .../core/Mage/Sales/Model/Order/Shipment.php | 11 + .../Mage/Sales/Model/Order/Shipment/Track.php | 10 + app/code/core/Mage/Sales/Model/Quote.php | 32 +- .../core/Mage/Sales/Model/Quote/Address.php | 38 +- .../Model/Quote/Address/Total/Abstract.php | 10 +- app/code/core/Mage/Sales/Model/Quote/Item.php | 24 +- app/code/core/Mage/Sales/etc/adminhtml.xml | 127 + app/code/core/Mage/Sales/etc/config.xml | 140 +- .../sql/sales_setup/mysql4-install-0.9.0.php | 20 +- .../mysql4-upgrade-0.9.40-0.9.41.php | 58 + .../mysql4-upgrade-0.9.41-0.9.42.php | 29 + .../mysql4-upgrade-0.9.42-0.9.43.php | 47 + .../mysql4-upgrade-0.9.43-0.9.44.php | 34 + app/code/core/Mage/SalesRule/Helper/Data.php | 34 + app/code/core/Mage/SalesRule/Model/Rule.php | 16 + .../Model/Rule/Condition/Combine.php | 7 + .../Model/Rule/Condition/Product/Found.php | 19 +- .../core/Mage/SalesRule/Model/Validator.php | 18 +- .../core/Mage/SalesRule/etc/adminhtml.xml | 56 + app/code/core/Mage/SalesRule/etc/config.xml | 41 - app/code/core/Mage/Sendfriend/etc/config.xml | 14 - .../Mage/Shipping/Block/Tracking/Popup.php | 96 +- app/code/core/Mage/Shipping/Helper/Data.php | 87 +- app/code/core/Mage/Shipping/Model/Config.php | 32 +- .../controllers/ShippingController.php | 14 +- app/code/core/Mage/Shipping/etc/adminhtml.xml | 53 + app/code/core/Mage/Shipping/etc/config.xml | 37 - .../Sitemap/Model/Mysql4/Catalog/Category.php | 2 +- .../Sitemap/Model/Mysql4/Catalog/Product.php | 2 +- app/code/core/Mage/Sitemap/etc/adminhtml.xml | 66 + app/code/core/Mage/Sitemap/etc/config.xml | 50 - .../core/Mage/Strikeiron/etc/adminhtml.xml | 49 + app/code/core/Mage/Strikeiron/etc/config.xml | 36 - .../core/Mage/Tag/Block/Customer/Tags.php | 3 +- app/code/core/Mage/Tag/Block/Product/List.php | 2 +- .../Tag/Model/Mysql4/Customer/Collection.php | 73 +- .../Tag/Model/Mysql4/Popular/Collection.php | 21 +- .../Tag/Model/Mysql4/Product/Collection.php | 82 +- app/code/core/Mage/Tag/Model/Mysql4/Tag.php | 215 +- .../Mage/Tag/Model/Mysql4/Tag/Collection.php | 162 +- .../Mage/Tag/Model/Mysql4/Tag/Relation.php | 56 +- app/code/core/Mage/Tag/Model/Tag.php | 14 + app/code/core/Mage/Tag/Model/Tag/Relation.php | 17 + .../Tag/controllers/CustomerController.php | 120 +- app/code/core/Mage/Tag/etc/adminhtml.xml | 75 + app/code/core/Mage/Tag/etc/config.xml | 74 +- .../tag_setup/mysql4-upgrade-0.7.2-0.7.3.php | 41 + app/code/core/Mage/Tax/Helper/Data.php | 45 +- .../core/Mage/Tax/Model/Calculation/Rate.php | 23 +- .../Mage/Tax/Model/Mysql4/Calculation.php | 68 +- app/code/core/Mage/Tax/Model/Observer.php | 5 +- .../Tax/Model/Sales/Total/Quote/Subtotal.php | 5 +- .../Mage/Tax/Model/Sales/Total/Quote/Tax.php | 71 +- app/code/core/Mage/Tax/etc/adminhtml.xml | 111 + app/code/core/Mage/Tax/etc/config.xml | 101 +- .../tax_setup/mysql4-upgrade-0.7.9-0.7.10.php | 40 + app/code/core/Mage/Usa/etc/config.xml | 12 +- .../usa_setup/mysql4-upgrade-0.7.0-0.7.1.php | 34 + app/code/core/Mage/Weee/Helper/Data.php | 181 +- .../Mage/Weee/Model/Config/Source/Display.php | 25 +- app/code/core/Mage/Weee/Model/Mysql4/Tax.php | 86 +- app/code/core/Mage/Weee/Model/Observer.php | 72 +- app/code/core/Mage/Weee/Model/Tax.php | 66 +- .../core/Mage/Weee/Model/Total/Quote/Weee.php | 352 +- app/code/core/Mage/Weee/etc/config.xml | 40 +- app/code/core/Mage/Weee/etc/system.xml | 2 +- app/code/core/Mage/Wishlist/Helper/Data.php | 19 +- .../Model/Mysql4/Product/Collection.php | 51 +- .../Model/Mysql4/Wishlist/Collection.php | 7 +- .../core/Mage/Wishlist/Model/Observer.php | 1 + .../Wishlist/controllers/IndexController.php | 20 + app/code/core/Mage/Wishlist/etc/adminhtml.xml | 48 + app/code/core/Mage/Wishlist/etc/config.xml | 36 - .../default/default/layout/catalog.xml | 89 +- .../adminhtml/default/default/layout/cms.xml | 106 + .../default/default/layout/customer.xml | 3 + .../default/layout/googleoptimizer.xml | 29 +- .../default/default/layout/index.xml | 45 + .../adminhtml/default/default/layout/main.xml | 7 +- .../default/default/layout/promo.xml | 87 + .../default/default/layout/sales.xml | 3 +- .../adminhtml/default/default/layout/tag.xml | 52 + .../catalog/category/widget/tree.phtml | 191 + .../catalog/product/attribute/set/main.phtml | 11 +- .../template/catalog/product/edit.phtml | 87 - .../product/edit/action/websites.phtml | 4 +- .../catalog/product/edit/price/tier.phtml | 190 +- .../catalog/product/edit/serializer.phtml | 27 + .../catalog/product/edit/super/config.phtml | 4 +- .../default/template/chronopay/pdf/info.phtml | 4 +- .../cms/page/edit/form/renderer/content.phtml | 33 + .../edit.phtml => cms/wysiwyg/content.phtml} | 37 +- .../template/cms/wysiwyg/content/files.phtml | 48 + .../cms/wysiwyg/content/newfolder.phtml | 33 + .../cms/wysiwyg/content/uploader.phtml | 71 + .../default/template/cms/wysiwyg/js.phtml | 262 + .../default/template/cms/wysiwyg/tree.phtml | 76 + .../template/customer/tab/addresses.phtml | 24 +- .../template/cybersource/pdf/info.phtml | 2 - .../default/template/dashboard/index.phtml | 23 + .../default/template/dashboard/totalbar.phtml | 2 +- .../directory/js/optional_zip_countries.phtml | 66 + .../template/eav/attribute/edit/js.phtml | 26 + .../default/template/eway/pdf/info.phtml | 2 - .../default/template/flo2cash/pdf/info.phtml | 2 - .../template/index/notifications.phtml | 34 + .../default/template/media/uploader.phtml | 13 +- .../template/newsletter/template/edit.phtml | 2 + .../template/notification/baseurl.phtml | 35 + .../default/default/template/ogone/info.phtml | 29 + .../default/default/template/page.phtml | 24 +- .../default/default/template/page/head.phtml | 7 +- .../template/paybox/direct/pdf/info.phtml | 2 - .../template/payment/info/pdf/cc.phtml | 4 +- .../template/payment/info/pdf/ccsave.phtml | 4 +- .../template/paypaluk/direct/pdf/info.phtml | 2 - .../default/default/template/popup.phtml | 4 +- .../default/template/report/grid.phtml | 3 +- .../template/report/store/switcher.phtml | 7 +- .../sales/order/create/coupons/form.phtml | 6 + .../template/sales/order/view/info.phtml | 2 +- .../default/template/system/cache/edit.phtml | 2 + .../system/convert/profile/wizard.phtml | 10 +- .../template/system/email/template/edit.phtml | 2 + .../default/template/tag/edit/container.phtml | 59 + .../template/tag/edit/serializer.phtml | 33 + .../default/default/template/tag/index.phtml | 8 +- .../form/renderer/fieldset/element.phtml | 3 +- .../default/template/widget/grid.phtml | 2 +- .../template/widget/grid/massaction.phtml | 4 +- .../template/widget/grid/serializer.phtml | 37 + .../default/blank/layout/checkout.xml | 3 + .../default/blank/layout/customer.xml | 8 +- .../frontend/default/blank/layout/ogone.xml | 47 + .../template/amazonpayments/cba/success.phtml | 2 +- .../blank/template/callouts/right_col.phtml | 2 +- .../template/catalog/navigation/top.phtml | 6 +- .../catalog/product/compare/list.phtml | 8 +- .../catalog/product/compare/sidebar.phtml | 2 +- .../blank/template/catalog/product/list.phtml | 4 +- .../blank/template/catalog/product/new.phtml | 2 +- .../catalog/product/view/addtocart.phtml | 2 +- .../catalogsearch/advanced/form.phtml | 3 +- .../template/catalogsearch/form.mini.phtml | 2 +- .../blank/template/checkout/cart.phtml | 4 +- .../blank/template/checkout/cart/coupon.phtml | 9 +- .../template/checkout/cart/crosssell.phtml | 2 +- .../template/checkout/cart/shipping.phtml | 4 +- .../template/checkout/cart/sidebar.phtml | 2 +- .../multishipping/address/select.phtml | 2 +- .../checkout/multishipping/addresses.phtml | 6 +- .../checkout/multishipping/billing.phtml | 2 +- .../checkout/multishipping/overview.phtml | 2 +- .../checkout/multishipping/shipping.phtml | 2 +- .../checkout/multishipping/success.phtml | 2 +- .../template/checkout/onepage/billing.phtml | 12 +- .../template/checkout/onepage/link.phtml | 2 +- .../template/checkout/onepage/login.phtml | 4 +- .../template/checkout/onepage/payment.phtml | 2 +- .../template/checkout/onepage/review.phtml | 2 +- .../template/checkout/onepage/shipping.phtml | 4 +- .../checkout/onepage/shipping_method.phtml | 2 +- .../blank/template/checkout/success.phtml | 2 +- .../blank/template/chronopay/info.phtml | 3 +- .../blank/template/contacts/form.phtml | 2 +- .../blank/template/customer/address.phtml | 2 +- .../template/customer/address/book.phtml | 2 +- .../template/customer/address/edit.phtml | 4 +- .../template/customer/form/address.phtml | 6 +- .../customer/form/changepassword.phtml | 2 +- .../template/customer/form/confirmation.phtml | 2 +- .../blank/template/customer/form/edit.phtml | 6 +- .../customer/form/forgotpassword.phtml | 2 +- .../blank/template/customer/form/login.phtml | 4 +- .../template/customer/form/newsletter.phtml | 2 +- .../template/customer/form/register.phtml | 8 +- .../template/customer/widget/gender.phtml | 34 + .../blank/template/cybersource/form.phtml | 61 +- .../blank/template/cybersource/info.phtml | 1 - .../default/blank/template/eway/info.phtml | 3 +- .../blank/template/flo2cash/info.phtml | 3 +- .../blank/template/giftmessage/form.phtml | 18 +- .../blank/template/giftmessage/helper.phtml | 8 +- .../blank/template/giftmessage/inline.phtml | 8 +- .../blank/template/newsletter/subscribe.phtml | 4 +- .../default/blank/template/ogone/form.phtml | 35 + .../default/blank/template/ogone/info.phtml | 27 + .../blank/template/ogone/paypage.phtml | 28 + .../blank/template/ogone/placeform.phtml | 42 + .../blank/template/page/2columns-right.phtml | 2 +- .../default/blank/template/page/print.phtml | 2 +- .../blank/template/paybox/direct/info.phtml | 3 +- .../blank/template/payment/info/cc.phtml | 3 +- .../blank/template/payment/info/ccsave.phtml | 3 +- .../template/paypal/express/review.phtml | 4 +- .../blank/template/paypaluk/direct/form.phtml | 41 +- .../blank/template/paypaluk/direct/info.phtml | 1 - .../template/paypaluk/express/review.phtml | 6 +- .../default/blank/template/poll/active.phtml | 2 +- .../reports/home_product_compared.phtml | 2 +- .../reports/home_product_viewed.phtml | 2 +- .../reports/product/widget/compared.phtml | 67 + .../reports/product/widget/viewed.phtml | 70 + .../blank/template/review/customer/view.phtml | 61 +- .../default/blank/template/review/form.phtml | 2 +- .../blank/template/sales/order/details.phtml | 2 +- .../template/sales/order/shipment/items.phtml | 6 +- .../blank/template/sales/order/view.phtml | 2 +- .../template/sales/reorder/sidebar.phtml | 4 +- .../blank/template/sendfriend/send.phtml | 4 +- .../template/shipping/tracking/popup.phtml | 4 +- .../blank/template/tag/customer/edit.phtml | 2 +- .../blank/template/tag/customer/view.phtml | 6 +- .../default/blank/template/tag/list.phtml | 2 +- .../blank/template/tag/product/result.phtml | 2 +- .../blank/template/wishlist/shared.phtml | 2 +- .../blank/template/wishlist/sharing.phtml | 2 +- .../blank/template/wishlist/view.phtml | 8 +- .../default/default/layout/checkout.xml | 3 + .../default/default/layout/customer.xml | 6 + .../frontend/default/default/layout/ogone.xml | 47 + .../default/template/callouts/right_col.phtml | 2 +- .../template/catalog/layer/filter.phtml | 3 + .../template/catalog/navigation/top.phtml | 14 +- .../catalog/product/compare/list.phtml | 2 +- .../catalogsearch/advanced/form.phtml | 1 - .../template/checkout/onepage/billing.phtml | 10 +- .../template/checkout/onepage/shipping.phtml | 2 +- .../default/template/chronopay/info.phtml | 3 +- .../template/customer/address/edit.phtml | 2 +- .../template/customer/form/address.phtml | 4 +- .../default/template/customer/form/edit.phtml | 4 + .../template/customer/form/register.phtml | 8 +- .../template/customer/widget/gender.phtml | 34 + .../default/template/cybersource/form.phtml | 63 +- .../default/template/cybersource/info.phtml | 3 +- .../directory/js/optional_zip_countries.phtml | 39 + .../default/default/template/eway/info.phtml | 3 +- .../default/template/flo2cash/info.phtml | 3 +- .../default/template/giftmessage/inline.phtml | 6 +- .../template/newsletter/subscribe.phtml | 2 +- .../default/default/template/ogone/form.phtml | 35 + .../default/default/template/ogone/info.phtml | 27 + .../default/template/ogone/paypage.phtml | 28 + .../default/template/ogone/placeform.phtml | 42 + .../template/page/2columns-right.phtml | 2 +- .../default/template/paybox/direct/info.phtml | 3 +- .../default/template/payment/info/cc.phtml | 3 +- .../template/payment/info/ccsave.phtml | 3 +- .../template/paypaluk/direct/form.phtml | 38 +- .../template/paypaluk/direct/info.phtml | 1 - .../reports/product/widget/compared.phtml | 67 + .../reports/product/widget/viewed.phtml | 70 + .../template/sales/order/shipment/items.phtml | 6 +- .../default/template/sales/order/view.phtml | 2 +- .../template/sales/reorder/sidebar.phtml | 2 +- .../default/template/tag/customer/view.phtml | 4 +- .../default/template/wishlist/view.phtml | 2 +- .../default/iphone/layout/checkout.xml | 3 + .../default/iphone/layout/customer.xml | 438 +- .../frontend/default/iphone/layout/ogone.xml | 47 + .../template/catalog/navigation/top.phtml | 84 +- .../catalog/product/compare/list.phtml | 2 +- .../catalogsearch/advanced/form.phtml | 1 - .../template/checkout/onepage/billing.phtml | 14 +- .../template/checkout/onepage/shipping.phtml | 6 +- .../iphone/template/chronopay/info.phtml | 3 +- .../template/customer/address/edit.phtml | 6 +- .../template/customer/form/address.phtml | 4 +- .../iphone/template/customer/form/edit.phtml | 4 + .../template/customer/form/register.phtml | 12 +- .../template/customer/widget/gender.phtml | 34 + .../iphone/template/cybersource/form.phtml | 89 +- .../iphone/template/cybersource/info.phtml | 1 - .../default/iphone/template/eway/info.phtml | 3 +- .../iphone/template/flo2cash/info.phtml | 3 +- .../iphone/template/giftmessage/inline.phtml | 6 +- .../template/newsletter/subscribe.phtml | 2 +- .../default/iphone/template/ogone/form.phtml | 35 + .../default/iphone/template/ogone/info.phtml | 27 + .../iphone/template/ogone/paypage.phtml | 28 + .../iphone/template/ogone/placeform.phtml | 42 + .../iphone/template/paybox/direct/info.phtml | 3 +- .../iphone/template/payment/info/cc.phtml | 3 +- .../iphone/template/payment/info/ccsave.phtml | 3 +- .../template/paypaluk/direct/form.phtml | 39 +- .../template/paypaluk/direct/info.phtml | 1 - .../template/sales/order/shipment.phtml | 10 +- .../iphone/template/sales/order/view.phtml | 2 +- .../template/sales/reorder/sidebar.phtml | 2 +- .../iphone/template/tag/customer/view.phtml | 9 +- .../iphone/template/wishlist/view.phtml | 2 +- .../default/modern/layout/checkout.xml | 3 + .../default/modern/layout/customer.xml | 6 + .../frontend/default/modern/layout/ogone.xml | 47 + .../modern/template/callouts/right_col.phtml | 2 +- .../template/catalog/navigation/top.phtml | 14 +- .../catalog/product/compare/list.phtml | 2 +- .../catalogsearch/advanced/form.phtml | 1 - .../template/checkout/onepage/billing.phtml | 9 +- .../template/checkout/onepage/shipping.phtml | 2 +- .../modern/template/chronopay/info.phtml | 3 +- .../template/customer/address/edit.phtml | 2 +- .../template/customer/form/address.phtml | 4 +- .../modern/template/customer/form/edit.phtml | 4 + .../template/customer/form/register.phtml | 8 +- .../template/customer/widget/gender.phtml | 34 + .../modern/template/cybersource/form.phtml | 87 +- .../modern/template/cybersource/info.phtml | 1 - .../default/modern/template/eway/info.phtml | 3 +- .../modern/template/flo2cash/info.phtml | 3 +- .../modern/template/giftmessage/inline.phtml | 6 +- .../template/newsletter/subscribe.phtml | 2 +- .../default/modern/template/ogone/form.phtml | 35 + .../default/modern/template/ogone/info.phtml | 27 + .../modern/template/ogone/paypage.phtml | 28 + .../modern/template/ogone/placeform.phtml | 42 + .../modern/template/paybox/direct/info.phtml | 3 +- .../modern/template/payment/form/cc.phtml | 26 +- .../modern/template/payment/info/cc.phtml | 3 +- .../modern/template/payment/info/ccsave.phtml | 3 +- .../template/paypaluk/direct/form.phtml | 39 +- .../template/paypaluk/direct/info.phtml | 1 - .../reports/product/widget/compared.phtml | 67 + .../reports/product/widget/viewed.phtml | 70 + .../template/sales/order/shipment/items.phtml | 6 +- .../modern/template/sales/order/view.phtml | 2 +- .../template/sales/reorder/sidebar.phtml | 2 +- .../modern/template/tag/customer/view.phtml | 4 +- .../modern/template/wishlist/view.phtml | 3 +- app/etc/config.xml | 7 + app/etc/modules/Mage_All.xml | 9 + app/etc/modules/Mage_Ogone.xml | 39 + index.php | 10 +- js/mage/adminhtml/form.js | 4 + js/mage/adminhtml/grid.js | 167 +- js/mage/adminhtml/product.js | 29 +- js/mage/adminhtml/rules.js | 28 +- js/mage/adminhtml/tools.js | 160 + .../plugins/magentowidget/editor_plugin.js | 90 + .../magentowidget/editor_plugin_src.js | 90 + .../plugins/magentowidget/img/icon.gif | Bin 0 -> 572 bytes js/mage/adminhtml/wysiwyg/tiny_mce/setup.js | 222 + .../themes/advanced/skins/default/content.css | 32 + .../themes/advanced/skins/default/dialog.css | 62 + js/mage/adminhtml/wysiwyg/widget.js | 334 + js/prototype/validation.js | 41 +- js/scriptaculous/controls.js | 2 +- js/tiny_mce/blank.htm | 9 + js/tiny_mce/classes/AddOnManager.js | 95 + js/tiny_mce/classes/CommandManager.js | 54 + js/tiny_mce/classes/ControlManager.js | 489 + js/tiny_mce/classes/Developer.js | 91 + js/tiny_mce/classes/Editor.js | 2295 +++ js/tiny_mce/classes/EditorCommands.js | 934 ++ js/tiny_mce/classes/EditorManager.js | 453 + js/tiny_mce/classes/ForceBlocks.js | 644 + js/tiny_mce/classes/Popup.js | 412 + js/tiny_mce/classes/UndoManager.js | 183 + js/tiny_mce/classes/WindowManager.js | 169 + js/tiny_mce/classes/adapter/jquery/adapter.js | 240 + .../classes/adapter/jquery/jquery.tinymce.js | 179 + .../classes/adapter/prototype/adapter.js | 38 + js/tiny_mce/classes/commands/BlockQuote.js | 135 + js/tiny_mce/classes/commands/CutCopyPaste.js | 24 + .../classes/commands/InsertHorizontalRule.js | 15 + js/tiny_mce/classes/commands/RemoveFormat.js | 173 + js/tiny_mce/classes/commands/UndoRedo.js | 38 + js/tiny_mce/classes/dom/DOMUtils.js | 1823 +++ js/tiny_mce/classes/dom/Element.js | 199 + js/tiny_mce/classes/dom/EventUtils.js | 349 + js/tiny_mce/classes/dom/Range.js | 721 + js/tiny_mce/classes/dom/ScriptLoader.js | 351 + js/tiny_mce/classes/dom/Selection.js | 747 + js/tiny_mce/classes/dom/Serializer.js | 979 ++ js/tiny_mce/classes/dom/Sizzle.js | 975 ++ js/tiny_mce/classes/dom/StringWriter.js | 200 + js/tiny_mce/classes/dom/TridentSelection.js | 273 + js/tiny_mce/classes/dom/XMLWriter.js | 155 + js/tiny_mce/classes/firebug/firebug-lite.js | 2518 +++ js/tiny_mce/classes/tinymce.js | 549 + js/tiny_mce/classes/ui/Button.js | 68 + js/tiny_mce/classes/ui/ColorSplitButton.js | 212 + js/tiny_mce/classes/ui/Container.js | 56 + js/tiny_mce/classes/ui/Control.js | 182 + js/tiny_mce/classes/ui/DropMenu.js | 397 + js/tiny_mce/classes/ui/ListBox.js | 320 + js/tiny_mce/classes/ui/Menu.js | 175 + js/tiny_mce/classes/ui/MenuButton.js | 128 + js/tiny_mce/classes/ui/MenuItem.js | 69 + js/tiny_mce/classes/ui/NativeListBox.js | 198 + js/tiny_mce/classes/ui/Separator.js | 34 + js/tiny_mce/classes/ui/SplitButton.js | 99 + js/tiny_mce/classes/ui/Toolbar.js | 86 + js/tiny_mce/classes/util/Cookie.js | 126 + js/tiny_mce/classes/util/Dispatcher.js | 101 + js/tiny_mce/classes/util/JSON.js | 81 + js/tiny_mce/classes/util/JSONP.js | 25 + js/tiny_mce/classes/util/JSONRequest.js | 87 + js/tiny_mce/classes/util/URI.js | 289 + js/tiny_mce/classes/util/XHR.js | 80 + js/tiny_mce/classes/xml/Parser.js | 126 + js/tiny_mce/jquery.tinymce.js | 1 + js/tiny_mce/langs/en.js | 154 + js/tiny_mce/license.txt | 504 + js/tiny_mce/plugins/advhr/css/advhr.css | 5 + js/tiny_mce/plugins/advhr/editor_plugin.js | 1 + .../plugins/advhr/editor_plugin_src.js | 54 + js/tiny_mce/plugins/advhr/js/rule.js | 43 + js/tiny_mce/plugins/advhr/langs/en_dlg.js | 5 + js/tiny_mce/plugins/advhr/rule.htm | 62 + js/tiny_mce/plugins/advimage/css/advimage.css | 13 + js/tiny_mce/plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 47 + js/tiny_mce/plugins/advimage/image.htm | 237 + js/tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes js/tiny_mce/plugins/advimage/js/image.js | 443 + js/tiny_mce/plugins/advimage/langs/en_dlg.js | 43 + js/tiny_mce/plugins/advlink/css/advlink.css | 8 + js/tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 58 + js/tiny_mce/plugins/advlink/js/advlink.js | 528 + js/tiny_mce/plugins/advlink/langs/en_dlg.js | 52 + js/tiny_mce/plugins/advlink/link.htm | 338 + .../plugins/autoresize/editor_plugin.js | 1 + .../plugins/autoresize/editor_plugin_src.js | 111 + js/tiny_mce/plugins/autosave/editor_plugin.js | 1 + .../plugins/autosave/editor_plugin_src.js | 51 + js/tiny_mce/plugins/bbcode/editor_plugin.js | 1 + .../plugins/bbcode/editor_plugin_src.js | 117 + js/tiny_mce/plugins/compat2x/editor_plugin.js | 1 + .../plugins/compat2x/editor_plugin_src.js | 616 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 95 + .../plugins/directionality/editor_plugin.js | 1 + .../directionality/editor_plugin_src.js | 79 + js/tiny_mce/plugins/emotions/editor_plugin.js | 1 + .../plugins/emotions/editor_plugin_src.js | 40 + js/tiny_mce/plugins/emotions/emotions.htm | 40 + .../plugins/emotions/img/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emotions/img/smiley-cry.gif | Bin 0 -> 329 bytes .../emotions/img/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emotions/img/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes .../plugins/emotions/img/smiley-frown.gif | Bin 0 -> 340 bytes .../plugins/emotions/img/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emotions/img/smiley-kiss.gif | Bin 0 -> 338 bytes .../plugins/emotions/img/smiley-laughing.gif | Bin 0 -> 344 bytes .../emotions/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emotions/img/smiley-sealed.gif | Bin 0 -> 325 bytes .../plugins/emotions/img/smiley-smile.gif | Bin 0 -> 345 bytes .../plugins/emotions/img/smiley-surprised.gif | Bin 0 -> 342 bytes .../emotions/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../plugins/emotions/img/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emotions/img/smiley-wink.gif | Bin 0 -> 351 bytes .../plugins/emotions/img/smiley-yell.gif | Bin 0 -> 336 bytes js/tiny_mce/plugins/emotions/js/emotions.js | 22 + js/tiny_mce/plugins/emotions/langs/en_dlg.js | 20 + js/tiny_mce/plugins/example/dialog.htm | 27 + js/tiny_mce/plugins/example/editor_plugin.js | 1 + .../plugins/example/editor_plugin_src.js | 81 + js/tiny_mce/plugins/example/img/example.gif | Bin 0 -> 87 bytes js/tiny_mce/plugins/example/js/dialog.js | 19 + js/tiny_mce/plugins/example/langs/en.js | 3 + js/tiny_mce/plugins/example/langs/en_dlg.js | 3 + js/tiny_mce/plugins/fullpage/css/fullpage.css | 182 + js/tiny_mce/plugins/fullpage/editor_plugin.js | 1 + .../plugins/fullpage/editor_plugin_src.js | 146 + js/tiny_mce/plugins/fullpage/fullpage.htm | 576 + js/tiny_mce/plugins/fullpage/js/fullpage.js | 461 + js/tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 145 + js/tiny_mce/plugins/fullscreen/fullscreen.htm | 110 + js/tiny_mce/plugins/iespell/editor_plugin.js | 1 + .../plugins/iespell/editor_plugin_src.js | 51 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 632 + .../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 + .../plugins/insertdatetime/editor_plugin.js | 1 + .../insertdatetime/editor_plugin_src.js | 80 + js/tiny_mce/plugins/layer/editor_plugin.js | 1 + .../plugins/layer/editor_plugin_src.js | 209 + js/tiny_mce/plugins/media/css/content.css | 6 + js/tiny_mce/plugins/media/css/media.css | 16 + js/tiny_mce/plugins/media/editor_plugin.js | 1 + .../plugins/media/editor_plugin_src.js | 405 + js/tiny_mce/plugins/media/img/flash.gif | Bin 0 -> 241 bytes js/tiny_mce/plugins/media/img/flv_player.swf | Bin 0 -> 11668 bytes js/tiny_mce/plugins/media/img/quicktime.gif | Bin 0 -> 303 bytes js/tiny_mce/plugins/media/img/realmedia.gif | Bin 0 -> 439 bytes js/tiny_mce/plugins/media/img/shockwave.gif | Bin 0 -> 387 bytes js/tiny_mce/plugins/media/img/trans.gif | Bin 0 -> 43 bytes .../plugins/media/img/windowsmedia.gif | Bin 0 -> 415 bytes js/tiny_mce/plugins/media/js/embed.js | 73 + js/tiny_mce/plugins/media/js/media.js | 630 + js/tiny_mce/plugins/media/langs/en_dlg.js | 103 + js/tiny_mce/plugins/media/media.htm | 822 + .../plugins/nonbreaking/editor_plugin.js | 1 + .../plugins/nonbreaking/editor_plugin_src.js | 50 + .../plugins/noneditable/editor_plugin.js | 1 + .../plugins/noneditable/editor_plugin_src.js | 87 + js/tiny_mce/plugins/pagebreak/css/content.css | 1 + .../plugins/pagebreak/editor_plugin.js | 1 + .../plugins/pagebreak/editor_plugin_src.js | 74 + .../plugins/pagebreak/img/pagebreak.gif | Bin 0 -> 325 bytes js/tiny_mce/plugins/pagebreak/img/trans.gif | Bin 0 -> 43 bytes js/tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 512 + js/tiny_mce/plugins/paste/js/pastetext.js | 36 + js/tiny_mce/plugins/paste/js/pasteword.js | 51 + js/tiny_mce/plugins/paste/langs/en_dlg.js | 5 + js/tiny_mce/plugins/paste/pastetext.htm | 33 + js/tiny_mce/plugins/paste/pasteword.htm | 27 + js/tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 50 + 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 + js/tiny_mce/plugins/print/editor_plugin.js | 1 + .../plugins/print/editor_plugin_src.js | 31 + js/tiny_mce/plugins/safari/blank.htm | 1 + js/tiny_mce/plugins/safari/editor_plugin.js | 1 + .../plugins/safari/editor_plugin_src.js | 438 + js/tiny_mce/plugins/save/editor_plugin.js | 1 + js/tiny_mce/plugins/save/editor_plugin_src.js | 98 + .../searchreplace/css/searchreplace.css | 6 + .../plugins/searchreplace/editor_plugin.js | 1 + .../searchreplace/editor_plugin_src.js | 54 + .../plugins/searchreplace/js/searchreplace.js | 126 + .../plugins/searchreplace/langs/en_dlg.js | 16 + .../plugins/searchreplace/searchreplace.htm | 104 + .../plugins/spellchecker/css/content.css | 1 + .../plugins/spellchecker/editor_plugin.js | 1 + .../plugins/spellchecker/editor_plugin_src.js | 338 + .../plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes js/tiny_mce/plugins/style/css/props.css | 13 + js/tiny_mce/plugins/style/editor_plugin.js | 1 + .../plugins/style/editor_plugin_src.js | 52 + js/tiny_mce/plugins/style/js/props.js | 641 + js/tiny_mce/plugins/style/langs/en_dlg.js | 63 + js/tiny_mce/plugins/style/props.htm | 730 + js/tiny_mce/plugins/tabfocus/editor_plugin.js | 1 + .../plugins/tabfocus/editor_plugin_src.js | 109 + js/tiny_mce/plugins/table/cell.htm | 183 + 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 | 1136 ++ js/tiny_mce/plugins/table/js/cell.js | 269 + js/tiny_mce/plugins/table/js/merge_cells.js | 29 + js/tiny_mce/plugins/table/js/row.js | 212 + js/tiny_mce/plugins/table/js/table.js | 440 + js/tiny_mce/plugins/table/langs/en_dlg.js | 74 + js/tiny_mce/plugins/table/merge_cells.htm | 37 + js/tiny_mce/plugins/table/row.htm | 160 + js/tiny_mce/plugins/table/table.htm | 192 + js/tiny_mce/plugins/template/blank.htm | 12 + js/tiny_mce/plugins/template/css/template.css | 23 + js/tiny_mce/plugins/template/editor_plugin.js | 1 + .../plugins/template/editor_plugin_src.js | 156 + js/tiny_mce/plugins/template/js/template.js | 106 + js/tiny_mce/plugins/template/langs/en_dlg.js | 15 + js/tiny_mce/plugins/template/template.htm | 38 + .../plugins/visualchars/editor_plugin.js | 1 + .../plugins/visualchars/editor_plugin_src.js | 73 + js/tiny_mce/plugins/xhtmlxtras/abbr.htm | 148 + js/tiny_mce/plugins/xhtmlxtras/acronym.htm | 148 + js/tiny_mce/plugins/xhtmlxtras/attributes.htm | 153 + js/tiny_mce/plugins/xhtmlxtras/cite.htm | 148 + .../plugins/xhtmlxtras/css/attributes.css | 11 + js/tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 + js/tiny_mce/plugins/xhtmlxtras/del.htm | 169 + .../plugins/xhtmlxtras/editor_plugin.js | 1 + .../plugins/xhtmlxtras/editor_plugin_src.js | 136 + js/tiny_mce/plugins/xhtmlxtras/ins.htm | 169 + js/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 25 + js/tiny_mce/plugins/xhtmlxtras/js/acronym.js | 25 + .../plugins/xhtmlxtras/js/attributes.js | 123 + js/tiny_mce/plugins/xhtmlxtras/js/cite.js | 25 + js/tiny_mce/plugins/xhtmlxtras/js/del.js | 60 + .../plugins/xhtmlxtras/js/element_common.js | 231 + js/tiny_mce/plugins/xhtmlxtras/js/ins.js | 59 + .../plugins/xhtmlxtras/langs/en_dlg.js | 32 + js/tiny_mce/themes/advanced/about.htm | 56 + js/tiny_mce/themes/advanced/anchor.htm | 31 + js/tiny_mce/themes/advanced/charmap.htm | 53 + js/tiny_mce/themes/advanced/color_picker.htm | 75 + .../themes/advanced/editor_template.js | 1 + .../themes/advanced/editor_template_src.js | 1153 ++ js/tiny_mce/themes/advanced/image.htm | 85 + .../themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes js/tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11505 bytes js/tiny_mce/themes/advanced/js/about.js | 72 + js/tiny_mce/themes/advanced/js/anchor.js | 37 + js/tiny_mce/themes/advanced/js/charmap.js | 325 + .../themes/advanced/js/color_picker.js | 253 + js/tiny_mce/themes/advanced/js/image.js | 245 + js/tiny_mce/themes/advanced/js/link.js | 156 + .../themes/advanced/js/source_editor.js | 62 + js/tiny_mce/themes/advanced/langs/en.js | 62 + js/tiny_mce/themes/advanced/langs/en_dlg.js | 51 + js/tiny_mce/themes/advanced/link.htm | 63 + .../themes/advanced/skins/default/content.css | 32 + .../themes/advanced/skins/default/dialog.css | 116 + .../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 | 214 + .../themes/advanced/skins/o2k7/content.css | 32 + .../themes/advanced/skins/o2k7/dialog.css | 115 + .../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 | 215 + .../themes/advanced/skins/o2k7/ui_black.css | 8 + .../themes/advanced/skins/o2k7/ui_silver.css | 5 + js/tiny_mce/themes/advanced/source_editor.htm | 31 + js/tiny_mce/themes/simple/editor_template.js | 1 + .../themes/simple/editor_template_src.js | 85 + js/tiny_mce/themes/simple/img/icons.gif | Bin 0 -> 1440 bytes js/tiny_mce/themes/simple/langs/en.js | 11 + .../themes/simple/skins/default/content.css | 25 + .../themes/simple/skins/default/ui.css | 32 + .../themes/simple/skins/o2k7/content.css | 17 + .../simple/skins/o2k7/img/button_bg.png | Bin 0 -> 5102 bytes js/tiny_mce/themes/simple/skins/o2k7/ui.css | 35 + js/tiny_mce/tiny_mce.js | 1 + js/tiny_mce/tiny_mce_dev.js | 128 + js/tiny_mce/tiny_mce_jquery.js | 1 + js/tiny_mce/tiny_mce_jquery_src.js | 12198 +++++++++++++++ js/tiny_mce/tiny_mce_popup.js | 5 + js/tiny_mce/tiny_mce_prototype.js | 1 + js/tiny_mce/tiny_mce_prototype_src.js | 13057 ++++++++++++++++ js/tiny_mce/tiny_mce_src.js | 13030 +++++++++++++++ js/tiny_mce/utils/editable_selects.js | 69 + js/tiny_mce/utils/form_utils.js | 199 + js/tiny_mce/utils/mctabs.js | 76 + js/tiny_mce/utils/validate.js | 219 + js/varien/form.js | 81 +- lib/Varien/Autoload.php | 8 +- lib/Varien/Convert/Validator/Dryrun.php | 2 +- lib/Varien/Data/Collection/Filesystem.php | 16 +- lib/Varien/Data/Form.php | 11 + lib/Varien/Data/Form/Element/Abstract.php | 9 + lib/Varien/Data/Form/Element/Checkboxes.php | 6 +- lib/Varien/Data/Form/Element/Date.php | 4 +- lib/Varien/Data/Form/Element/Editor.php | 225 +- lib/Varien/Data/Form/Element/Gallery.php | 6 +- lib/Varien/Data/Form/Element/Image.php | 2 +- lib/Varien/Data/Form/Element/Link.php | 68 + lib/Varien/Date.php | 3 +- lib/Varien/Db/Adapter/Pdo/Mysql.php | 60 +- lib/Varien/Db/Select.php | 21 + lib/Varien/Filter/Template.php | 2 +- lib/Varien/Image.php | 34 + lib/Varien/Image/Adapter/Abstract.php | 15 + lib/Varien/Image/Adapter/Gd2.php | 26 +- lib/Varien/Object.php | 7 - lib/Varien/Simplexml/Element.php | 37 +- lib/Zend/Acl.php | 87 +- lib/Zend/Acl/Assert/Interface.php | 6 +- lib/Zend/Acl/Exception.php | 6 +- lib/Zend/Acl/Resource.php | 6 +- lib/Zend/Acl/Resource/Interface.php | 6 +- lib/Zend/Acl/Role.php | 6 +- lib/Zend/Acl/Role/Interface.php | 6 +- lib/Zend/Acl/Role/Registry.php | 6 +- lib/Zend/Acl/Role/Registry/Exception.php | 6 +- lib/Zend/Amf/Adobe/Auth.php | 5 +- lib/Zend/Amf/Adobe/DbInspector.php | 3 +- lib/Zend/Amf/Adobe/Introspector.php | 3 +- lib/Zend/Amf/Auth/Abstract.php | 3 +- lib/Zend/Amf/Constants.php | 1 + lib/Zend/Amf/Exception.php | 1 + lib/Zend/Amf/Parse/Amf0/Deserializer.php | 2 +- lib/Zend/Amf/Parse/Amf0/Serializer.php | 1 + lib/Zend/Amf/Parse/Amf3/Deserializer.php | 5 +- lib/Zend/Amf/Parse/Amf3/Serializer.php | 1 + lib/Zend/Amf/Parse/Deserializer.php | 1 + lib/Zend/Amf/Parse/InputStream.php | 1 + lib/Zend/Amf/Parse/OutputStream.php | 1 + lib/Zend/Amf/Parse/Resource/MysqlResult.php | 11 +- lib/Zend/Amf/Parse/Resource/MysqliResult.php | 7 +- lib/Zend/Amf/Parse/Resource/Stream.php | 7 +- lib/Zend/Amf/Parse/Serializer.php | 1 + lib/Zend/Amf/Parse/TypeLoader.php | 16 + lib/Zend/Amf/Request.php | 1 + lib/Zend/Amf/Request/Http.php | 1 + lib/Zend/Amf/Response.php | 1 + lib/Zend/Amf/Response/Http.php | 1 + lib/Zend/Amf/Server.php | 20 +- lib/Zend/Amf/Server/Exception.php | 16 +- lib/Zend/Amf/Util/BinaryStream.php | 1 + lib/Zend/Amf/Value/ByteArray.php | 1 + lib/Zend/Amf/Value/MessageBody.php | 1 + lib/Zend/Amf/Value/MessageHeader.php | 1 + .../Amf/Value/Messaging/AbstractMessage.php | 1 + .../Value/Messaging/AcknowledgeMessage.php | 1 + .../Amf/Value/Messaging/ArrayCollection.php | 7 +- lib/Zend/Amf/Value/Messaging/AsyncMessage.php | 1 + .../Amf/Value/Messaging/CommandMessage.php | 6 +- lib/Zend/Amf/Value/Messaging/ErrorMessage.php | 1 + .../Amf/Value/Messaging/RemotingMessage.php | 1 + lib/Zend/Amf/Value/TraitsInfo.php | 1 + lib/Zend/Application.php | 34 +- lib/Zend/Application/Bootstrap/Bootstrap.php | 6 +- .../Bootstrap/BootstrapAbstract.php | 84 +- .../Application/Bootstrap/Bootstrapper.php | 6 +- lib/Zend/Application/Bootstrap/Exception.php | 6 +- .../Bootstrap/ResourceBootstrapper.php | 6 +- lib/Zend/Application/Exception.php | 6 +- lib/Zend/Application/Module/Autoloader.php | 8 +- lib/Zend/Application/Module/Bootstrap.php | 10 +- lib/Zend/Application/Resource/Db.php | 6 +- lib/Zend/Application/Resource/Exception.php | 6 +- .../Application/Resource/Frontcontroller.php | 10 +- lib/Zend/Application/Resource/Layout.php | 6 +- lib/Zend/Application/Resource/Locale.php | 6 +- lib/Zend/Application/Resource/Modules.php | 39 +- lib/Zend/Application/Resource/Navigation.php | 22 +- lib/Zend/Application/Resource/Resource.php | 6 +- .../Application/Resource/ResourceAbstract.php | 6 +- lib/Zend/Application/Resource/Router.php | 18 +- lib/Zend/Application/Resource/Session.php | 6 +- lib/Zend/Application/Resource/Translate.php | 6 +- lib/Zend/Application/Resource/View.php | 6 +- lib/Zend/Auth.php | 6 +- lib/Zend/Auth/Adapter/DbTable.php | 6 +- lib/Zend/Auth/Adapter/Digest.php | 6 +- lib/Zend/Auth/Adapter/Exception.php | 6 +- lib/Zend/Auth/Adapter/Http.php | 6 +- .../Auth/Adapter/Http/Resolver/Exception.php | 6 +- lib/Zend/Auth/Adapter/Http/Resolver/File.php | 6 +- .../Auth/Adapter/Http/Resolver/Interface.php | 6 +- lib/Zend/Auth/Adapter/InfoCard.php | 6 +- lib/Zend/Auth/Adapter/Interface.php | 6 +- lib/Zend/Auth/Adapter/Ldap.php | 184 +- lib/Zend/Auth/Adapter/OpenId.php | 6 +- lib/Zend/Auth/Exception.php | 6 +- lib/Zend/Auth/Result.php | 6 +- lib/Zend/Auth/Storage/Exception.php | 6 +- lib/Zend/Auth/Storage/Interface.php | 6 +- lib/Zend/Auth/Storage/NonPersistent.php | 6 +- lib/Zend/Auth/Storage/Session.php | 6 +- lib/Zend/Cache.php | 6 +- lib/Zend/Cache/Backend.php | 5 +- lib/Zend/Cache/Backend/Apc.php | 5 +- lib/Zend/Cache/Backend/ExtendedInterface.php | 5 +- lib/Zend/Cache/Backend/File.php | 60 +- lib/Zend/Cache/Backend/Interface.php | 5 +- lib/Zend/Cache/Backend/Memcached.php | 5 +- lib/Zend/Cache/Backend/Sqlite.php | 5 +- lib/Zend/Cache/Backend/Test.php | 5 +- lib/Zend/Cache/Backend/TwoLevels.php | 19 +- lib/Zend/Cache/Backend/Xcache.php | 5 +- lib/Zend/Cache/Backend/ZendPlatform.php | 5 +- lib/Zend/Cache/Backend/ZendServer.php | 415 +- lib/Zend/Cache/Backend/ZendServer/Disk.php | 15 +- lib/Zend/Cache/Backend/ZendServer/ShMem.php | 15 +- lib/Zend/Cache/Core.php | 25 +- lib/Zend/Cache/Exception.php | 5 +- lib/Zend/Cache/Frontend/Class.php | 5 +- lib/Zend/Cache/Frontend/File.php | 5 +- lib/Zend/Cache/Frontend/Function.php | 5 +- lib/Zend/Cache/Frontend/Output.php | 5 +- lib/Zend/Cache/Frontend/Page.php | 7 +- lib/Zend/Captcha/Adapter.php | 6 +- lib/Zend/Captcha/Base.php | 6 +- lib/Zend/Captcha/Dumb.php | 6 +- lib/Zend/Captcha/Exception.php | 6 +- lib/Zend/Captcha/Figlet.php | 6 +- lib/Zend/Captcha/Image.php | 6 +- lib/Zend/Captcha/ReCaptcha.php | 6 +- lib/Zend/Captcha/Word.php | 6 +- lib/Zend/CodeGenerator/Abstract.php | 2 +- lib/Zend/CodeGenerator/Exception.php | 2 +- lib/Zend/CodeGenerator/Php/Abstract.php | 10 +- lib/Zend/CodeGenerator/Php/Body.php | 2 +- lib/Zend/CodeGenerator/Php/Class.php | 21 +- lib/Zend/CodeGenerator/Php/Docblock.php | 18 +- lib/Zend/CodeGenerator/Php/Docblock/Tag.php | 8 +- .../Php/Docblock/Tag/License.php | 4 +- .../CodeGenerator/Php/Docblock/Tag/Param.php | 7 +- .../CodeGenerator/Php/Docblock/Tag/Return.php | 4 +- lib/Zend/CodeGenerator/Php/Exception.php | 2 +- lib/Zend/CodeGenerator/Php/File.php | 16 +- .../CodeGenerator/Php/Member/Abstract.php | 42 +- .../CodeGenerator/Php/Member/Container.php | 2 +- lib/Zend/CodeGenerator/Php/Method.php | 27 +- lib/Zend/CodeGenerator/Php/Parameter.php | 2 +- lib/Zend/CodeGenerator/Php/Property.php | 77 +- .../Php/Property/DefaultValue.php | 314 + lib/Zend/Config.php | 6 +- lib/Zend/Config/Exception.php | 5 +- lib/Zend/Config/Ini.php | 6 +- lib/Zend/Config/Writer.php | 6 +- lib/Zend/Config/Writer/Array.php | 6 +- lib/Zend/Config/Writer/Ini.php | 6 +- lib/Zend/Config/Writer/Xml.php | 15 +- lib/Zend/Config/Xml.php | 84 +- lib/Zend/Console/Getopt.php | 10 +- lib/Zend/Console/Getopt/Exception.php | 5 +- lib/Zend/Controller/Action.php | 5 +- lib/Zend/Controller/Action/Exception.php | 5 +- .../Controller/Action/Helper/Abstract.php | 5 +- .../Controller/Action/Helper/ActionStack.php | 6 +- .../Controller/Action/Helper/AjaxContext.php | 6 +- .../Action/Helper/AutoComplete/Abstract.php | 6 +- .../Action/Helper/AutoCompleteDojo.php | 6 +- .../Helper/AutoCompleteScriptaculous.php | 6 +- .../Action/Helper/ContextSwitch.php | 6 +- .../Action/Helper/FlashMessenger.php | 6 +- lib/Zend/Controller/Action/Helper/Json.php | 6 +- .../Controller/Action/Helper/Redirector.php | 5 +- lib/Zend/Controller/Action/Helper/Url.php | 6 +- .../Controller/Action/Helper/ViewRenderer.php | 33 +- lib/Zend/Controller/Action/HelperBroker.php | 5 +- .../Action/HelperBroker/PriorityStack.php | 5 +- lib/Zend/Controller/Action/Interface.php | 7 +- lib/Zend/Controller/Dispatcher/Abstract.php | 5 +- lib/Zend/Controller/Dispatcher/Exception.php | 5 +- lib/Zend/Controller/Dispatcher/Interface.php | 6 +- lib/Zend/Controller/Dispatcher/Standard.php | 5 +- lib/Zend/Controller/Exception.php | 5 +- lib/Zend/Controller/Front.php | 5 +- lib/Zend/Controller/Plugin/Abstract.php | 5 +- lib/Zend/Controller/Plugin/ActionStack.php | 6 +- lib/Zend/Controller/Plugin/Broker.php | 5 +- lib/Zend/Controller/Plugin/ErrorHandler.php | 6 +- lib/Zend/Controller/Plugin/PutHandler.php | 60 + lib/Zend/Controller/Request/Abstract.php | 5 +- lib/Zend/Controller/Request/Apache404.php | 3 +- lib/Zend/Controller/Request/Exception.php | 5 +- lib/Zend/Controller/Request/Http.php | 28 +- lib/Zend/Controller/Request/HttpTestCase.php | 3 +- lib/Zend/Controller/Request/Simple.php | 5 +- lib/Zend/Controller/Response/Abstract.php | 10 +- lib/Zend/Controller/Response/Cli.php | 5 +- lib/Zend/Controller/Response/Exception.php | 6 +- lib/Zend/Controller/Response/Http.php | 3 +- lib/Zend/Controller/Response/HttpTestCase.php | 3 +- lib/Zend/Controller/Router/Abstract.php | 5 +- lib/Zend/Controller/Router/Exception.php | 7 +- lib/Zend/Controller/Router/Interface.php | 6 +- lib/Zend/Controller/Router/Rewrite.php | 37 +- lib/Zend/Controller/Router/Route.php | 7 +- lib/Zend/Controller/Router/Route/Abstract.php | 7 +- lib/Zend/Controller/Router/Route/Chain.php | 7 +- lib/Zend/Controller/Router/Route/Hostname.php | 7 +- .../Controller/Router/Route/Interface.php | 7 +- lib/Zend/Controller/Router/Route/Module.php | 7 +- lib/Zend/Controller/Router/Route/Regex.php | 7 +- lib/Zend/Controller/Router/Route/Static.php | 7 +- lib/Zend/Crypt.php | 62 + lib/Zend/Crypt/DiffieHellman.php | 2 +- lib/Zend/Crypt/DiffieHellman/Exception.php | 2 +- lib/Zend/Crypt/Exception.php | 2 +- lib/Zend/Crypt/Hmac.php | 2 +- lib/Zend/Crypt/Hmac/Exception.php | 2 +- lib/Zend/Crypt/Math.php | 2 +- lib/Zend/Crypt/Math/BigInteger.php | 2 +- lib/Zend/Crypt/Math/BigInteger/Bcmath.php | 2 +- lib/Zend/Crypt/Math/BigInteger/Exception.php | 2 +- lib/Zend/Crypt/Math/BigInteger/Gmp.php | 2 +- lib/Zend/Crypt/Math/BigInteger/Interface.php | 2 +- lib/Zend/Crypt/Math/Exception.php | 2 +- lib/Zend/Crypt/Rsa.php | 2 +- lib/Zend/Crypt/Rsa/Key.php | 2 +- lib/Zend/Crypt/Rsa/Key/Private.php | 2 +- lib/Zend/Crypt/Rsa/Key/Public.php | 2 +- lib/Zend/Currency.php | 51 +- lib/Zend/Currency/Exception.php | 6 +- lib/Zend/Date.php | 283 +- lib/Zend/Date/Cities.php | 6 +- lib/Zend/Date/DateObject.php | 10 +- lib/Zend/Date/Exception.php | 6 +- lib/Zend/Db.php | 6 +- lib/Zend/Db/Adapter/Abstract.php | 26 +- lib/Zend/Db/Adapter/Db2.php | 6 +- lib/Zend/Db/Adapter/Db2/Exception.php | 6 +- lib/Zend/Db/Adapter/Exception.php | 5 +- lib/Zend/Db/Adapter/Mysqli.php | 6 +- lib/Zend/Db/Adapter/Mysqli/Exception.php | 5 +- lib/Zend/Db/Adapter/Oracle.php | 12 +- lib/Zend/Db/Adapter/Oracle/Exception.php | 5 +- lib/Zend/Db/Adapter/Pdo/Abstract.php | 14 +- lib/Zend/Db/Adapter/Pdo/Ibm.php | 6 +- lib/Zend/Db/Adapter/Pdo/Ibm/Db2.php | 6 +- lib/Zend/Db/Adapter/Pdo/Ibm/Ids.php | 6 +- lib/Zend/Db/Adapter/Pdo/Mssql.php | 84 +- lib/Zend/Db/Adapter/Pdo/Mysql.php | 8 +- lib/Zend/Db/Adapter/Pdo/Oci.php | 6 +- lib/Zend/Db/Adapter/Pdo/Pgsql.php | 8 +- lib/Zend/Db/Adapter/Pdo/Sqlite.php | 6 +- lib/Zend/Db/Adapter/Sqlsrv.php | 661 + lib/Zend/Db/Adapter/Sqlsrv/Exception.php | 63 + lib/Zend/Db/Exception.php | 5 +- lib/Zend/Db/Expr.php | 6 +- lib/Zend/Db/Profiler.php | 6 +- lib/Zend/Db/Profiler/Exception.php | 6 +- lib/Zend/Db/Profiler/Firebug.php | 5 +- lib/Zend/Db/Profiler/Query.php | 6 +- lib/Zend/Db/Select.php | 10 +- lib/Zend/Db/Select/Exception.php | 5 +- lib/Zend/Db/Statement.php | 5 +- lib/Zend/Db/Statement/Db2.php | 6 +- lib/Zend/Db/Statement/Db2/Exception.php | 6 +- lib/Zend/Db/Statement/Exception.php | 5 +- lib/Zend/Db/Statement/Interface.php | 5 +- lib/Zend/Db/Statement/Mysqli.php | 24 +- lib/Zend/Db/Statement/Mysqli/Exception.php | 6 +- lib/Zend/Db/Statement/Oracle.php | 5 +- lib/Zend/Db/Statement/Oracle/Exception.php | 5 +- lib/Zend/Db/Statement/Pdo.php | 6 +- lib/Zend/Db/Statement/Pdo/Ibm.php | 6 +- lib/Zend/Db/Statement/Pdo/Oci.php | 6 +- lib/Zend/Db/Statement/Sqlsrv.php | 414 + lib/Zend/Db/Statement/Sqlsrv/Exception.php | 59 + lib/Zend/Db/Table.php | 53 +- lib/Zend/Db/Table/Abstract.php | 114 +- lib/Zend/Db/Table/Definition.php | 131 + lib/Zend/Db/Table/Exception.php | 5 +- lib/Zend/Db/Table/Row.php | 6 +- lib/Zend/Db/Table/Row/Abstract.php | 180 +- lib/Zend/Db/Table/Row/Exception.php | 5 +- lib/Zend/Db/Table/Rowset.php | 6 +- lib/Zend/Db/Table/Rowset/Abstract.php | 6 +- lib/Zend/Db/Table/Rowset/Exception.php | 5 +- lib/Zend/Db/Table/Select.php | 8 +- lib/Zend/Db/Table/Select/Exception.php | 5 +- lib/Zend/Debug.php | 5 +- lib/Zend/Dojo.php | 6 +- lib/Zend/Dojo/BuildLayer.php | 536 + lib/Zend/Dojo/Data.php | 6 +- lib/Zend/Dojo/Exception.php | 6 +- lib/Zend/Dojo/Form.php | 6 +- .../Form/Decorator/AccordionContainer.php | 6 +- .../Dojo/Form/Decorator/AccordionPane.php | 6 +- .../Dojo/Form/Decorator/BorderContainer.php | 6 +- lib/Zend/Dojo/Form/Decorator/ContentPane.php | 6 +- .../Dojo/Form/Decorator/DijitContainer.php | 6 +- lib/Zend/Dojo/Form/Decorator/DijitElement.php | 6 +- lib/Zend/Dojo/Form/Decorator/DijitForm.php | 6 +- .../Dojo/Form/Decorator/SplitContainer.php | 6 +- .../Dojo/Form/Decorator/StackContainer.php | 6 +- lib/Zend/Dojo/Form/Decorator/TabContainer.php | 6 +- lib/Zend/Dojo/Form/DisplayGroup.php | 6 +- lib/Zend/Dojo/Form/Element/Button.php | 6 +- lib/Zend/Dojo/Form/Element/CheckBox.php | 35 +- lib/Zend/Dojo/Form/Element/ComboBox.php | 6 +- .../Dojo/Form/Element/CurrencyTextBox.php | 6 +- lib/Zend/Dojo/Form/Element/DateTextBox.php | 6 +- lib/Zend/Dojo/Form/Element/Dijit.php | 6 +- lib/Zend/Dojo/Form/Element/DijitMulti.php | 6 +- lib/Zend/Dojo/Form/Element/Editor.php | 5 +- .../Dojo/Form/Element/FilteringSelect.php | 6 +- .../Dojo/Form/Element/HorizontalSlider.php | 6 +- lib/Zend/Dojo/Form/Element/NumberSpinner.php | 6 +- lib/Zend/Dojo/Form/Element/NumberTextBox.php | 6 +- .../Dojo/Form/Element/PasswordTextBox.php | 6 +- lib/Zend/Dojo/Form/Element/RadioButton.php | 6 +- lib/Zend/Dojo/Form/Element/SimpleTextarea.php | 6 +- lib/Zend/Dojo/Form/Element/Slider.php | 6 +- lib/Zend/Dojo/Form/Element/SubmitButton.php | 6 +- lib/Zend/Dojo/Form/Element/TextBox.php | 6 +- lib/Zend/Dojo/Form/Element/Textarea.php | 6 +- lib/Zend/Dojo/Form/Element/TimeTextBox.php | 6 +- .../Dojo/Form/Element/ValidationTextBox.php | 6 +- lib/Zend/Dojo/Form/Element/VerticalSlider.php | 6 +- lib/Zend/Dojo/Form/SubForm.php | 6 +- lib/Zend/Dojo/View/Exception.php | 9 +- .../Dojo/View/Helper/AccordionContainer.php | 6 +- lib/Zend/Dojo/View/Helper/AccordionPane.php | 6 +- lib/Zend/Dojo/View/Helper/BorderContainer.php | 6 +- lib/Zend/Dojo/View/Helper/Button.php | 6 +- lib/Zend/Dojo/View/Helper/CheckBox.php | 10 +- lib/Zend/Dojo/View/Helper/ComboBox.php | 6 +- lib/Zend/Dojo/View/Helper/ContentPane.php | 6 +- lib/Zend/Dojo/View/Helper/CurrencyTextBox.php | 6 +- lib/Zend/Dojo/View/Helper/CustomDijit.php | 6 +- lib/Zend/Dojo/View/Helper/DateTextBox.php | 6 +- lib/Zend/Dojo/View/Helper/Dijit.php | 6 +- lib/Zend/Dojo/View/Helper/DijitContainer.php | 6 +- lib/Zend/Dojo/View/Helper/Dojo.php | 8 +- lib/Zend/Dojo/View/Helper/Dojo/Container.php | 8 +- lib/Zend/Dojo/View/Helper/Editor.php | 6 +- lib/Zend/Dojo/View/Helper/FilteringSelect.php | 6 +- lib/Zend/Dojo/View/Helper/Form.php | 6 +- .../Dojo/View/Helper/HorizontalSlider.php | 6 +- lib/Zend/Dojo/View/Helper/NumberSpinner.php | 6 +- lib/Zend/Dojo/View/Helper/NumberTextBox.php | 6 +- lib/Zend/Dojo/View/Helper/PasswordTextBox.php | 6 +- lib/Zend/Dojo/View/Helper/RadioButton.php | 6 +- lib/Zend/Dojo/View/Helper/SimpleTextarea.php | 10 +- lib/Zend/Dojo/View/Helper/Slider.php | 6 +- lib/Zend/Dojo/View/Helper/SplitContainer.php | 6 +- lib/Zend/Dojo/View/Helper/StackContainer.php | 6 +- lib/Zend/Dojo/View/Helper/SubmitButton.php | 6 +- lib/Zend/Dojo/View/Helper/TabContainer.php | 6 +- lib/Zend/Dojo/View/Helper/TextBox.php | 6 +- lib/Zend/Dojo/View/Helper/Textarea.php | 6 +- lib/Zend/Dojo/View/Helper/TimeTextBox.php | 6 +- .../Dojo/View/Helper/ValidationTextBox.php | 6 +- lib/Zend/Dojo/View/Helper/VerticalSlider.php | 6 +- lib/Zend/Dom/Exception.php | 7 +- lib/Zend/Dom/Query.php | 52 +- lib/Zend/Dom/Query/Css2Xpath.php | 28 +- lib/Zend/Dom/Query/Result.php | 8 +- lib/Zend/Exception.php | 5 +- lib/Zend/Feed.php | 6 +- lib/Zend/Feed/Abstract.php | 6 +- lib/Zend/Feed/Atom.php | 6 +- lib/Zend/Feed/Builder.php | 6 +- lib/Zend/Feed/Builder/Entry.php | 6 +- lib/Zend/Feed/Builder/Exception.php | 6 +- lib/Zend/Feed/Builder/Header.php | 6 +- lib/Zend/Feed/Builder/Header/Itunes.php | 6 +- lib/Zend/Feed/Builder/Interface.php | 6 +- lib/Zend/Feed/Element.php | 6 +- lib/Zend/Feed/Entry/Abstract.php | 6 +- lib/Zend/Feed/Entry/Atom.php | 6 +- lib/Zend/Feed/Entry/Rss.php | 6 +- lib/Zend/Feed/Exception.php | 6 +- lib/Zend/Feed/Reader.php | 692 + lib/Zend/Feed/Reader/Entry/Atom.php | 357 + lib/Zend/Feed/Reader/Entry/Rss.php | 611 + lib/Zend/Feed/Reader/EntryAbstract.php | 242 + lib/Zend/Feed/Reader/EntryInterface.php | 136 + lib/Zend/Feed/Reader/Extension/Atom/Entry.php | 506 + lib/Zend/Feed/Reader/Extension/Atom/Feed.php | 441 + .../Feed/Reader/Extension/Content/Entry.php | 64 + .../Extension/CreativeCommons/Entry.php | 97 + .../Reader/Extension/CreativeCommons/Feed.php | 89 + .../Reader/Extension/DublinCore/Entry.php | 232 + .../Feed/Reader/Extension/DublinCore/Feed.php | 265 + .../Feed/Reader/Extension/EntryAbstract.php | 197 + .../Feed/Reader/Extension/FeedAbstract.php | 166 + .../Feed/Reader/Extension/Podcast/Entry.php | 202 + .../Feed/Reader/Extension/Podcast/Feed.php | 293 + .../Feed/Reader/Extension/Slash/Entry.php | 144 + .../Reader/Extension/Syndication/Feed.php | 168 + .../Feed/Reader/Extension/Thread/Entry.php | 91 + .../Reader/Extension/WellFormedWeb/Entry.php | 73 + lib/Zend/Feed/Reader/Feed/Atom.php | 329 + lib/Zend/Feed/Reader/Feed/Rss.php | 533 + lib/Zend/Feed/Reader/FeedAbstract.php | 304 + lib/Zend/Feed/Reader/FeedInterface.php | 115 + lib/Zend/Feed/Rss.php | 6 +- lib/Zend/File/Transfer.php | 6 +- lib/Zend/File/Transfer/Adapter/Abstract.php | 70 +- lib/Zend/File/Transfer/Adapter/Http.php | 19 +- lib/Zend/File/Transfer/Exception.php | 6 +- lib/Zend/Filter.php | 89 +- lib/Zend/Filter/Alnum.php | 8 +- lib/Zend/Filter/Alpha.php | 8 +- lib/Zend/Filter/BaseName.php | 6 +- lib/Zend/Filter/Decrypt.php | 6 +- lib/Zend/Filter/Digits.php | 6 +- lib/Zend/Filter/Dir.php | 6 +- lib/Zend/Filter/Encrypt.php | 6 +- lib/Zend/Filter/Encrypt/Interface.php | 6 +- lib/Zend/Filter/Encrypt/Mcrypt.php | 6 +- lib/Zend/Filter/Encrypt/Openssl.php | 16 +- lib/Zend/Filter/Exception.php | 6 +- lib/Zend/Filter/File/Decrypt.php | 6 +- lib/Zend/Filter/File/Encrypt.php | 6 +- lib/Zend/Filter/File/LowerCase.php | 6 +- lib/Zend/Filter/File/Rename.php | 6 +- lib/Zend/Filter/File/UpperCase.php | 6 +- lib/Zend/Filter/HtmlEntities.php | 76 +- lib/Zend/Filter/Inflector.php | 111 +- lib/Zend/Filter/Input.php | 107 +- lib/Zend/Filter/Int.php | 6 +- lib/Zend/Filter/Interface.php | 6 +- lib/Zend/Filter/LocalizedToNormalized.php | 21 +- lib/Zend/Filter/NormalizedToLocalized.php | 8 +- lib/Zend/Filter/PregReplace.php | 42 +- lib/Zend/Filter/RealPath.php | 98 +- lib/Zend/Filter/StringToLower.php | 6 +- lib/Zend/Filter/StringToUpper.php | 6 +- lib/Zend/Filter/StringTrim.php | 33 +- lib/Zend/Filter/StripNewlines.php | 6 +- lib/Zend/Filter/StripTags.php | 8 +- lib/Zend/Filter/Word/CamelCaseToDash.php | 6 +- lib/Zend/Filter/Word/CamelCaseToSeparator.php | 6 +- .../Filter/Word/CamelCaseToUnderscore.php | 6 +- lib/Zend/Filter/Word/DashToCamelCase.php | 6 +- lib/Zend/Filter/Word/DashToSeparator.php | 6 +- lib/Zend/Filter/Word/DashToUnderscore.php | 6 +- lib/Zend/Filter/Word/Separator/Abstract.php | 6 +- lib/Zend/Filter/Word/SeparatorToCamelCase.php | 8 +- lib/Zend/Filter/Word/SeparatorToDash.php | 6 +- lib/Zend/Filter/Word/SeparatorToSeparator.php | 6 +- .../Filter/Word/UnderscoreToCamelCase.php | 6 +- lib/Zend/Filter/Word/UnderscoreToDash.php | 6 +- .../Filter/Word/UnderscoreToSeparator.php | 6 +- lib/Zend/Form.php | 578 +- lib/Zend/Form/Decorator/Abstract.php | 6 +- lib/Zend/Form/Decorator/Callback.php | 6 +- lib/Zend/Form/Decorator/Captcha.php | 6 +- lib/Zend/Form/Decorator/Captcha/Word.php | 6 +- lib/Zend/Form/Decorator/Description.php | 6 +- lib/Zend/Form/Decorator/DtDdWrapper.php | 6 +- lib/Zend/Form/Decorator/Errors.php | 6 +- lib/Zend/Form/Decorator/Exception.php | 6 +- lib/Zend/Form/Decorator/Fieldset.php | 6 +- lib/Zend/Form/Decorator/File.php | 6 +- lib/Zend/Form/Decorator/Form.php | 6 +- lib/Zend/Form/Decorator/FormElements.php | 6 +- lib/Zend/Form/Decorator/FormErrors.php | 6 +- lib/Zend/Form/Decorator/HtmlTag.php | 6 +- lib/Zend/Form/Decorator/Image.php | 6 +- lib/Zend/Form/Decorator/Interface.php | 6 +- lib/Zend/Form/Decorator/Label.php | 6 +- .../Form/Decorator/Marker/File/Interface.php | 6 +- lib/Zend/Form/Decorator/PrepareElements.php | 6 +- lib/Zend/Form/Decorator/Tooltip.php | 2 +- lib/Zend/Form/Decorator/ViewHelper.php | 6 +- lib/Zend/Form/Decorator/ViewScript.php | 6 +- lib/Zend/Form/DisplayGroup.php | 6 +- lib/Zend/Form/Element.php | 10 +- lib/Zend/Form/Element/Button.php | 6 +- lib/Zend/Form/Element/Captcha.php | 76 +- lib/Zend/Form/Element/Checkbox.php | 34 +- lib/Zend/Form/Element/Exception.php | 6 +- lib/Zend/Form/Element/File.php | 6 +- lib/Zend/Form/Element/Hash.php | 6 +- lib/Zend/Form/Element/Hidden.php | 6 +- lib/Zend/Form/Element/Image.php | 6 +- lib/Zend/Form/Element/Multi.php | 6 +- lib/Zend/Form/Element/MultiCheckbox.php | 6 +- lib/Zend/Form/Element/Multiselect.php | 6 +- lib/Zend/Form/Element/Password.php | 6 +- lib/Zend/Form/Element/Radio.php | 6 +- lib/Zend/Form/Element/Reset.php | 6 +- lib/Zend/Form/Element/Select.php | 6 +- lib/Zend/Form/Element/Submit.php | 6 +- lib/Zend/Form/Element/Text.php | 6 +- lib/Zend/Form/Element/Textarea.php | 6 +- lib/Zend/Form/Element/Xhtml.php | 6 +- lib/Zend/Form/Exception.php | 6 +- lib/Zend/Form/SubForm.php | 6 +- lib/Zend/Gdata.php | 5 +- lib/Zend/Gdata/App.php | 9 +- lib/Zend/Gdata/App/AuthException.php | 5 +- lib/Zend/Gdata/App/BadMethodCallException.php | 5 +- lib/Zend/Gdata/App/Base.php | 5 +- lib/Zend/Gdata/App/BaseMediaSource.php | 5 +- .../Gdata/App/CaptchaRequiredException.php | 5 +- lib/Zend/Gdata/App/Entry.php | 5 +- lib/Zend/Gdata/App/Exception.php | 5 +- lib/Zend/Gdata/App/Extension.php | 5 +- lib/Zend/Gdata/App/Extension/Author.php | 5 +- lib/Zend/Gdata/App/Extension/Category.php | 5 +- lib/Zend/Gdata/App/Extension/Content.php | 5 +- lib/Zend/Gdata/App/Extension/Contributor.php | 5 +- lib/Zend/Gdata/App/Extension/Control.php | 5 +- lib/Zend/Gdata/App/Extension/Draft.php | 5 +- lib/Zend/Gdata/App/Extension/Edited.php | 1 + lib/Zend/Gdata/App/Extension/Element.php | 5 +- lib/Zend/Gdata/App/Extension/Email.php | 5 +- lib/Zend/Gdata/App/Extension/Generator.php | 5 +- lib/Zend/Gdata/App/Extension/Icon.php | 5 +- lib/Zend/Gdata/App/Extension/Id.php | 5 +- lib/Zend/Gdata/App/Extension/Link.php | 5 +- lib/Zend/Gdata/App/Extension/Logo.php | 5 +- lib/Zend/Gdata/App/Extension/Name.php | 5 +- lib/Zend/Gdata/App/Extension/Person.php | 5 +- lib/Zend/Gdata/App/Extension/Published.php | 5 +- lib/Zend/Gdata/App/Extension/Rights.php | 5 +- lib/Zend/Gdata/App/Extension/Source.php | 5 +- lib/Zend/Gdata/App/Extension/Subtitle.php | 5 +- lib/Zend/Gdata/App/Extension/Summary.php | 5 +- lib/Zend/Gdata/App/Extension/Text.php | 5 +- lib/Zend/Gdata/App/Extension/Title.php | 5 +- lib/Zend/Gdata/App/Extension/Updated.php | 5 +- lib/Zend/Gdata/App/Extension/Uri.php | 5 +- lib/Zend/Gdata/App/Feed.php | 5 +- lib/Zend/Gdata/App/FeedEntryParent.php | 5 +- lib/Zend/Gdata/App/FeedSourceParent.php | 5 +- lib/Zend/Gdata/App/HttpException.php | 5 +- lib/Zend/Gdata/App/IOException.php | 5 +- .../Gdata/App/InvalidArgumentException.php | 5 +- .../App/LoggingHttpClientAdapterSocket.php | 9 +- lib/Zend/Gdata/App/MediaEntry.php | 1 + lib/Zend/Gdata/App/MediaFileSource.php | 5 +- lib/Zend/Gdata/App/MediaSource.php | 5 +- lib/Zend/Gdata/App/Util.php | 5 +- lib/Zend/Gdata/App/VersionException.php | 5 +- lib/Zend/Gdata/AuthSub.php | 5 +- lib/Zend/Gdata/Books.php | 8 +- lib/Zend/Gdata/Books/CollectionEntry.php | 7 +- lib/Zend/Gdata/Books/CollectionFeed.php | 7 +- .../Gdata/Books/Extension/AnnotationLink.php | 7 +- .../Gdata/Books/Extension/BooksCategory.php | 7 +- lib/Zend/Gdata/Books/Extension/BooksLink.php | 7 +- .../Gdata/Books/Extension/Embeddability.php | 7 +- lib/Zend/Gdata/Books/Extension/InfoLink.php | 6 +- .../Gdata/Books/Extension/PreviewLink.php | 7 +- lib/Zend/Gdata/Books/Extension/Review.php | 7 +- .../Gdata/Books/Extension/ThumbnailLink.php | 7 +- .../Gdata/Books/Extension/Viewability.php | 7 +- lib/Zend/Gdata/Books/VolumeEntry.php | 7 +- lib/Zend/Gdata/Books/VolumeFeed.php | 7 +- lib/Zend/Gdata/Books/VolumeQuery.php | 5 +- lib/Zend/Gdata/Calendar.php | 5 +- lib/Zend/Gdata/Calendar/EventEntry.php | 5 +- lib/Zend/Gdata/Calendar/EventFeed.php | 5 +- lib/Zend/Gdata/Calendar/EventQuery.php | 5 +- .../Gdata/Calendar/Extension/AccessLevel.php | 10 +- lib/Zend/Gdata/Calendar/Extension/Color.php | 5 +- lib/Zend/Gdata/Calendar/Extension/Hidden.php | 5 +- lib/Zend/Gdata/Calendar/Extension/Link.php | 6 +- .../Gdata/Calendar/Extension/QuickAdd.php | 5 +- .../Gdata/Calendar/Extension/Selected.php | 5 +- .../Extension/SendEventNotifications.php | 5 +- .../Gdata/Calendar/Extension/Timezone.php | 5 +- .../Gdata/Calendar/Extension/WebContent.php | 5 +- lib/Zend/Gdata/Calendar/ListEntry.php | 5 +- lib/Zend/Gdata/Calendar/ListFeed.php | 5 +- lib/Zend/Gdata/ClientLogin.php | 1 + lib/Zend/Gdata/Docs.php | 8 +- lib/Zend/Gdata/Docs/DocumentListEntry.php | 5 +- lib/Zend/Gdata/Docs/DocumentListFeed.php | 5 +- lib/Zend/Gdata/Docs/Query.php | 5 +- lib/Zend/Gdata/DublinCore.php | 5 +- .../Gdata/DublinCore/Extension/Creator.php | 7 +- lib/Zend/Gdata/DublinCore/Extension/Date.php | 7 +- .../DublinCore/Extension/Description.php | 7 +- .../Gdata/DublinCore/Extension/Format.php | 7 +- .../Gdata/DublinCore/Extension/Identifier.php | 7 +- .../Gdata/DublinCore/Extension/Language.php | 7 +- .../Gdata/DublinCore/Extension/Publisher.php | 7 +- .../Gdata/DublinCore/Extension/Rights.php | 7 +- .../Gdata/DublinCore/Extension/Subject.php | 7 +- lib/Zend/Gdata/DublinCore/Extension/Title.php | 7 +- lib/Zend/Gdata/Entry.php | 5 +- lib/Zend/Gdata/Exif.php | 5 +- lib/Zend/Gdata/Exif/Entry.php | 5 +- lib/Zend/Gdata/Exif/Extension/Distance.php | 5 +- lib/Zend/Gdata/Exif/Extension/Exposure.php | 5 +- lib/Zend/Gdata/Exif/Extension/FStop.php | 5 +- lib/Zend/Gdata/Exif/Extension/Flash.php | 5 +- lib/Zend/Gdata/Exif/Extension/FocalLength.php | 5 +- .../Gdata/Exif/Extension/ImageUniqueId.php | 5 +- lib/Zend/Gdata/Exif/Extension/Iso.php | 5 +- lib/Zend/Gdata/Exif/Extension/Make.php | 5 +- lib/Zend/Gdata/Exif/Extension/Model.php | 5 +- lib/Zend/Gdata/Exif/Extension/Tags.php | 5 +- lib/Zend/Gdata/Exif/Extension/Time.php | 5 +- lib/Zend/Gdata/Exif/Feed.php | 5 +- lib/Zend/Gdata/Extension.php | 5 +- lib/Zend/Gdata/Extension/AttendeeStatus.php | 5 +- lib/Zend/Gdata/Extension/AttendeeType.php | 5 +- lib/Zend/Gdata/Extension/Comments.php | 5 +- lib/Zend/Gdata/Extension/EntryLink.php | 5 +- lib/Zend/Gdata/Extension/EventStatus.php | 5 +- lib/Zend/Gdata/Extension/ExtendedProperty.php | 5 +- lib/Zend/Gdata/Extension/FeedLink.php | 5 +- .../Extension/OpenSearchItemsPerPage.php | 5 +- .../Gdata/Extension/OpenSearchStartIndex.php | 5 +- .../Extension/OpenSearchTotalResults.php | 5 +- lib/Zend/Gdata/Extension/OriginalEvent.php | 5 +- lib/Zend/Gdata/Extension/Rating.php | 5 +- lib/Zend/Gdata/Extension/Recurrence.php | 5 +- .../Gdata/Extension/RecurrenceException.php | 5 +- lib/Zend/Gdata/Extension/Reminder.php | 5 +- lib/Zend/Gdata/Extension/Transparency.php | 5 +- lib/Zend/Gdata/Extension/Visibility.php | 5 +- lib/Zend/Gdata/Extension/When.php | 5 +- lib/Zend/Gdata/Extension/Where.php | 5 +- lib/Zend/Gdata/Extension/Who.php | 5 +- lib/Zend/Gdata/Feed.php | 5 +- lib/Zend/Gdata/Gapps.php | 9 +- lib/Zend/Gdata/Gapps/EmailListEntry.php | 5 +- lib/Zend/Gdata/Gapps/EmailListFeed.php | 5 +- lib/Zend/Gdata/Gapps/EmailListQuery.php | 5 +- .../Gdata/Gapps/EmailListRecipientEntry.php | 5 +- .../Gdata/Gapps/EmailListRecipientFeed.php | 5 +- .../Gdata/Gapps/EmailListRecipientQuery.php | 5 +- lib/Zend/Gdata/Gapps/Error.php | 5 +- lib/Zend/Gdata/Gapps/Extension/EmailList.php | 5 +- lib/Zend/Gdata/Gapps/Extension/Login.php | 5 +- lib/Zend/Gdata/Gapps/Extension/Name.php | 5 +- lib/Zend/Gdata/Gapps/Extension/Nickname.php | 5 +- lib/Zend/Gdata/Gapps/Extension/Quota.php | 5 +- lib/Zend/Gdata/Gapps/NicknameEntry.php | 5 +- lib/Zend/Gdata/Gapps/NicknameFeed.php | 5 +- lib/Zend/Gdata/Gapps/NicknameQuery.php | 5 +- lib/Zend/Gdata/Gapps/Query.php | 5 +- lib/Zend/Gdata/Gapps/ServiceException.php | 5 +- lib/Zend/Gdata/Gapps/UserEntry.php | 5 +- lib/Zend/Gdata/Gapps/UserFeed.php | 5 +- lib/Zend/Gdata/Gapps/UserQuery.php | 5 +- lib/Zend/Gdata/Gbase.php | 5 +- lib/Zend/Gdata/Gbase/Entry.php | 5 +- .../Gdata/Gbase/Extension/BaseAttribute.php | 6 +- lib/Zend/Gdata/Gbase/Feed.php | 5 +- lib/Zend/Gdata/Gbase/ItemEntry.php | 5 +- lib/Zend/Gdata/Gbase/ItemFeed.php | 5 +- lib/Zend/Gdata/Gbase/ItemQuery.php | 5 +- lib/Zend/Gdata/Gbase/Query.php | 5 +- lib/Zend/Gdata/Gbase/SnippetEntry.php | 5 +- lib/Zend/Gdata/Gbase/SnippetFeed.php | 5 +- lib/Zend/Gdata/Gbase/SnippetQuery.php | 5 +- lib/Zend/Gdata/Geo.php | 5 +- lib/Zend/Gdata/Geo/Entry.php | 5 +- lib/Zend/Gdata/Geo/Extension/GeoRssWhere.php | 5 +- lib/Zend/Gdata/Geo/Extension/GmlPoint.php | 5 +- lib/Zend/Gdata/Geo/Extension/GmlPos.php | 5 +- lib/Zend/Gdata/Geo/Feed.php | 5 +- lib/Zend/Gdata/Health.php | 5 +- lib/Zend/Gdata/Health/Extension/Ccr.php | 6 +- lib/Zend/Gdata/Health/ProfileEntry.php | 5 +- lib/Zend/Gdata/Health/ProfileFeed.php | 5 +- lib/Zend/Gdata/Health/ProfileListEntry.php | 5 +- lib/Zend/Gdata/Health/ProfileListFeed.php | 5 +- lib/Zend/Gdata/Health/Query.php | 5 +- lib/Zend/Gdata/HttpAdapterStreamingProxy.php | 1 + lib/Zend/Gdata/HttpAdapterStreamingSocket.php | 1 + lib/Zend/Gdata/HttpClient.php | 1 + lib/Zend/Gdata/Kind/EventEntry.php | 5 +- lib/Zend/Gdata/Media.php | 5 +- lib/Zend/Gdata/Media/Entry.php | 5 +- .../Gdata/Media/Extension/MediaCategory.php | 5 +- .../Gdata/Media/Extension/MediaContent.php | 5 +- .../Gdata/Media/Extension/MediaCopyright.php | 5 +- .../Gdata/Media/Extension/MediaCredit.php | 5 +- .../Media/Extension/MediaDescription.php | 5 +- lib/Zend/Gdata/Media/Extension/MediaGroup.php | 5 +- lib/Zend/Gdata/Media/Extension/MediaHash.php | 5 +- .../Gdata/Media/Extension/MediaKeywords.php | 5 +- .../Gdata/Media/Extension/MediaPlayer.php | 5 +- .../Gdata/Media/Extension/MediaRating.php | 5 +- .../Media/Extension/MediaRestriction.php | 5 +- lib/Zend/Gdata/Media/Extension/MediaText.php | 5 +- .../Gdata/Media/Extension/MediaThumbnail.php | 5 +- lib/Zend/Gdata/Media/Extension/MediaTitle.php | 5 +- lib/Zend/Gdata/Media/Feed.php | 5 +- lib/Zend/Gdata/MediaMimeStream.php | 1 + lib/Zend/Gdata/MimeBodyString.php | 1 + lib/Zend/Gdata/MimeFile.php | 1 + lib/Zend/Gdata/Photos.php | 5 +- lib/Zend/Gdata/Photos/AlbumEntry.php | 5 +- lib/Zend/Gdata/Photos/AlbumFeed.php | 5 +- lib/Zend/Gdata/Photos/AlbumQuery.php | 5 +- lib/Zend/Gdata/Photos/CommentEntry.php | 5 +- lib/Zend/Gdata/Photos/Extension/Access.php | 5 +- lib/Zend/Gdata/Photos/Extension/AlbumId.php | 5 +- lib/Zend/Gdata/Photos/Extension/BytesUsed.php | 5 +- lib/Zend/Gdata/Photos/Extension/Checksum.php | 5 +- lib/Zend/Gdata/Photos/Extension/Client.php | 5 +- .../Gdata/Photos/Extension/CommentCount.php | 5 +- .../Photos/Extension/CommentingEnabled.php | 5 +- lib/Zend/Gdata/Photos/Extension/Height.php | 5 +- lib/Zend/Gdata/Photos/Extension/Id.php | 5 +- lib/Zend/Gdata/Photos/Extension/Location.php | 5 +- .../Photos/Extension/MaxPhotosPerAlbum.php | 5 +- lib/Zend/Gdata/Photos/Extension/Name.php | 5 +- lib/Zend/Gdata/Photos/Extension/Nickname.php | 5 +- lib/Zend/Gdata/Photos/Extension/NumPhotos.php | 5 +- .../Photos/Extension/NumPhotosRemaining.php | 5 +- lib/Zend/Gdata/Photos/Extension/PhotoId.php | 5 +- lib/Zend/Gdata/Photos/Extension/Position.php | 5 +- .../Gdata/Photos/Extension/QuotaCurrent.php | 5 +- .../Gdata/Photos/Extension/QuotaLimit.php | 5 +- lib/Zend/Gdata/Photos/Extension/Rotation.php | 5 +- lib/Zend/Gdata/Photos/Extension/Size.php | 5 +- lib/Zend/Gdata/Photos/Extension/Thumbnail.php | 5 +- lib/Zend/Gdata/Photos/Extension/Timestamp.php | 5 +- lib/Zend/Gdata/Photos/Extension/User.php | 5 +- lib/Zend/Gdata/Photos/Extension/Version.php | 5 +- lib/Zend/Gdata/Photos/Extension/Weight.php | 5 +- lib/Zend/Gdata/Photos/Extension/Width.php | 5 +- lib/Zend/Gdata/Photos/PhotoEntry.php | 5 +- lib/Zend/Gdata/Photos/PhotoFeed.php | 5 +- lib/Zend/Gdata/Photos/PhotoQuery.php | 5 +- lib/Zend/Gdata/Photos/TagEntry.php | 5 +- lib/Zend/Gdata/Photos/UserEntry.php | 5 +- lib/Zend/Gdata/Photos/UserFeed.php | 5 +- lib/Zend/Gdata/Photos/UserQuery.php | 5 +- lib/Zend/Gdata/Query.php | 5 +- lib/Zend/Gdata/Spreadsheets.php | 5 +- lib/Zend/Gdata/Spreadsheets/CellEntry.php | 5 +- lib/Zend/Gdata/Spreadsheets/CellFeed.php | 5 +- lib/Zend/Gdata/Spreadsheets/CellQuery.php | 5 +- lib/Zend/Gdata/Spreadsheets/DocumentQuery.php | 5 +- .../Gdata/Spreadsheets/Extension/Cell.php | 6 +- .../Gdata/Spreadsheets/Extension/ColCount.php | 6 +- .../Gdata/Spreadsheets/Extension/Custom.php | 6 +- .../Gdata/Spreadsheets/Extension/RowCount.php | 6 +- lib/Zend/Gdata/Spreadsheets/ListEntry.php | 5 +- lib/Zend/Gdata/Spreadsheets/ListFeed.php | 5 +- lib/Zend/Gdata/Spreadsheets/ListQuery.php | 5 +- .../Gdata/Spreadsheets/SpreadsheetEntry.php | 5 +- .../Gdata/Spreadsheets/SpreadsheetFeed.php | 5 +- .../Gdata/Spreadsheets/WorksheetEntry.php | 5 +- lib/Zend/Gdata/Spreadsheets/WorksheetFeed.php | 5 +- lib/Zend/Gdata/YouTube.php | 1 + lib/Zend/Gdata/YouTube/ActivityEntry.php | 1 + lib/Zend/Gdata/YouTube/ActivityFeed.php | 1 + lib/Zend/Gdata/YouTube/CommentEntry.php | 5 +- lib/Zend/Gdata/YouTube/CommentFeed.php | 5 +- lib/Zend/Gdata/YouTube/ContactEntry.php | 5 +- lib/Zend/Gdata/YouTube/ContactFeed.php | 5 +- lib/Zend/Gdata/YouTube/Extension/AboutMe.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Age.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Books.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Company.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Control.php | 5 +- .../Gdata/YouTube/Extension/CountHint.php | 5 +- .../Gdata/YouTube/Extension/Description.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Duration.php | 5 +- .../Gdata/YouTube/Extension/FirstName.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Gender.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Hobbies.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Hometown.php | 5 +- lib/Zend/Gdata/YouTube/Extension/LastName.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Link.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Location.php | 5 +- .../Gdata/YouTube/Extension/MediaContent.php | 5 +- .../Gdata/YouTube/Extension/MediaCredit.php | 7 +- .../Gdata/YouTube/Extension/MediaGroup.php | 5 +- .../Gdata/YouTube/Extension/MediaRating.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Movies.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Music.php | 5 +- lib/Zend/Gdata/YouTube/Extension/NoEmbed.php | 5 +- .../Gdata/YouTube/Extension/Occupation.php | 5 +- .../Gdata/YouTube/Extension/PlaylistId.php | 5 +- .../Gdata/YouTube/Extension/PlaylistTitle.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Position.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Private.php | 5 +- .../Gdata/YouTube/Extension/QueryString.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Racy.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Recorded.php | 5 +- .../Gdata/YouTube/Extension/Relationship.php | 5 +- .../Gdata/YouTube/Extension/ReleaseDate.php | 5 +- lib/Zend/Gdata/YouTube/Extension/School.php | 5 +- lib/Zend/Gdata/YouTube/Extension/State.php | 5 +- .../Gdata/YouTube/Extension/Statistics.php | 1 + lib/Zend/Gdata/YouTube/Extension/Status.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Token.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Uploaded.php | 5 +- lib/Zend/Gdata/YouTube/Extension/Username.php | 5 +- lib/Zend/Gdata/YouTube/Extension/VideoId.php | 5 +- lib/Zend/Gdata/YouTube/InboxEntry.php | 1 + lib/Zend/Gdata/YouTube/InboxFeed.php | 5 +- lib/Zend/Gdata/YouTube/MediaEntry.php | 5 +- lib/Zend/Gdata/YouTube/PlaylistListEntry.php | 5 +- lib/Zend/Gdata/YouTube/PlaylistListFeed.php | 5 +- lib/Zend/Gdata/YouTube/PlaylistVideoEntry.php | 5 +- lib/Zend/Gdata/YouTube/PlaylistVideoFeed.php | 5 +- lib/Zend/Gdata/YouTube/SubscriptionEntry.php | 5 +- lib/Zend/Gdata/YouTube/SubscriptionFeed.php | 5 +- lib/Zend/Gdata/YouTube/UserProfileEntry.php | 5 +- lib/Zend/Gdata/YouTube/VideoEntry.php | 8 +- lib/Zend/Gdata/YouTube/VideoFeed.php | 5 +- lib/Zend/Gdata/YouTube/VideoQuery.php | 5 +- lib/Zend/Http/Client.php | 158 +- lib/Zend/Http/Client/Adapter/Curl.php | 55 +- lib/Zend/Http/Client/Adapter/Exception.php | 13 +- lib/Zend/Http/Client/Adapter/Interface.php | 6 +- lib/Zend/Http/Client/Adapter/Proxy.php | 100 +- lib/Zend/Http/Client/Adapter/Socket.php | 187 +- lib/Zend/Http/Client/Adapter/Test.php | 34 +- lib/Zend/Http/Client/Exception.php | 9 +- lib/Zend/Http/Cookie.php | 92 +- lib/Zend/Http/CookieJar.php | 56 +- lib/Zend/Http/Exception.php | 9 +- lib/Zend/Http/Response.php | 58 +- lib/Zend/InfoCard.php | 6 +- lib/Zend/InfoCard/Adapter/Default.php | 6 +- lib/Zend/InfoCard/Adapter/Exception.php | 8 +- lib/Zend/InfoCard/Adapter/Interface.php | 6 +- lib/Zend/InfoCard/Cipher.php | 6 +- lib/Zend/InfoCard/Cipher/Exception.php | 6 +- .../InfoCard/Cipher/Pki/Adapter/Abstract.php | 6 +- lib/Zend/InfoCard/Cipher/Pki/Adapter/Rsa.php | 6 +- lib/Zend/InfoCard/Cipher/Pki/Interface.php | 6 +- .../InfoCard/Cipher/Pki/Rsa/Interface.php | 6 +- .../Cipher/Symmetric/Adapter/Abstract.php | 6 +- .../Cipher/Symmetric/Adapter/Aes128cbc.php | 6 +- .../Cipher/Symmetric/Adapter/Aes256cbc.php | 6 +- .../Cipher/Symmetric/Aes128cbc/Interface.php | 6 +- .../Cipher/Symmetric/Aes256cbc/Interface.php | 6 +- .../InfoCard/Cipher/Symmetric/Interface.php | 6 +- lib/Zend/InfoCard/Claims.php | 6 +- lib/Zend/InfoCard/Exception.php | 6 +- lib/Zend/InfoCard/Xml/Assertion.php | 6 +- lib/Zend/InfoCard/Xml/Assertion/Interface.php | 6 +- lib/Zend/InfoCard/Xml/Assertion/Saml.php | 6 +- lib/Zend/InfoCard/Xml/Element.php | 6 +- lib/Zend/InfoCard/Xml/Element/Interface.php | 6 +- lib/Zend/InfoCard/Xml/EncryptedData.php | 6 +- .../InfoCard/Xml/EncryptedData/Abstract.php | 6 +- .../InfoCard/Xml/EncryptedData/XmlEnc.php | 6 +- lib/Zend/InfoCard/Xml/EncryptedKey.php | 6 +- lib/Zend/InfoCard/Xml/Exception.php | 6 +- lib/Zend/InfoCard/Xml/KeyInfo.php | 6 +- lib/Zend/InfoCard/Xml/KeyInfo/Abstract.php | 6 +- lib/Zend/InfoCard/Xml/KeyInfo/Default.php | 6 +- lib/Zend/InfoCard/Xml/KeyInfo/Interface.php | 6 +- lib/Zend/InfoCard/Xml/KeyInfo/XmlDSig.php | 6 +- lib/Zend/InfoCard/Xml/Security.php | 6 +- lib/Zend/InfoCard/Xml/Security/Exception.php | 6 +- lib/Zend/InfoCard/Xml/Security/Transform.php | 6 +- .../Security/Transform/EnvelopedSignature.php | 6 +- .../Xml/Security/Transform/Exception.php | 6 +- .../Xml/Security/Transform/Interface.php | 6 +- .../Xml/Security/Transform/XmlExcC14N.php | 6 +- .../InfoCard/Xml/SecurityTokenReference.php | 6 +- lib/Zend/Json.php | 5 +- lib/Zend/Json/Decoder.php | 5 +- lib/Zend/Json/Encoder.php | 5 +- lib/Zend/Json/Exception.php | 5 +- lib/Zend/Json/Expr.php | 6 +- lib/Zend/Json/Server.php | 5 +- lib/Zend/Json/Server/Cache.php | 6 +- lib/Zend/Json/Server/Error.php | 5 +- lib/Zend/Json/Server/Exception.php | 5 +- lib/Zend/Json/Server/Request.php | 5 +- lib/Zend/Json/Server/Request/Http.php | 5 +- lib/Zend/Json/Server/Response.php | 5 +- lib/Zend/Json/Server/Response/Http.php | 5 +- lib/Zend/Json/Server/Smd.php | 5 +- lib/Zend/Json/Server/Smd/Service.php | 6 +- lib/Zend/Layout.php | 14 +- .../Controller/Action/Helper/Layout.php | 6 +- lib/Zend/Layout/Controller/Plugin/Layout.php | 6 +- lib/Zend/Layout/Exception.php | 5 +- lib/Zend/Ldap.php | 1195 +- lib/Zend/Ldap/Attribute.php | 364 + lib/Zend/Ldap/Collection.php | 197 + lib/Zend/Ldap/Collection/Iterator/Default.php | 253 + .../Collection/Iterator/Interface.php} | 87 +- lib/Zend/Ldap/Converter.php | 71 + lib/Zend/Ldap/Dn.php | 794 + lib/Zend/Ldap/Exception.php | 256 +- lib/Zend/Ldap/Filter.php | 265 + lib/Zend/Ldap/Filter/Abstract.php | 157 + lib/Zend/Ldap/Filter/And.php | 48 + lib/Zend/Ldap/Filter/Exception.php | 37 + lib/Zend/Ldap/Filter/Logical.php | 107 + lib/Zend/Ldap/Filter/Mask.php | 66 + lib/Zend/Ldap/Filter/Not.php | 75 + lib/Zend/Ldap/Filter/Or.php | 48 + lib/Zend/Ldap/Filter/String.php | 65 + lib/Zend/Ldap/Ldif/Encoder.php | 301 + lib/Zend/Ldap/Node.php | 1098 ++ lib/Zend/Ldap/Node/Abstract.php | 485 + lib/Zend/Ldap/Node/ChildrenIterator.php | 209 + lib/Zend/Ldap/Node/Collection.php | 67 + lib/Zend/Ldap/Node/RootDse.php | 158 + .../Ldap/Node/RootDse/ActiveDirectory.php | 247 + lib/Zend/Ldap/Node/RootDse/OpenLdap.php | 102 + lib/Zend/Ldap/Node/RootDse/eDirectory.php | 160 + lib/Zend/Ldap/Node/Schema.php | 120 + lib/Zend/Ldap/Node/Schema/ActiveDirectory.php | 103 + .../Schema/AttributeType/ActiveDirectory.php | 104 + .../Node/Schema/AttributeType/Interface.php | 75 + .../Node/Schema/AttributeType/OpenLdap.php | 129 + lib/Zend/Ldap/Node/Schema/Item.php | 163 + .../Schema/ObjectClass/ActiveDirectory.php | 115 + .../Node/Schema/ObjectClass/Interface.php | 83 + .../Ldap/Node/Schema/ObjectClass/OpenLdap.php | 175 + lib/Zend/Ldap/Node/Schema/OpenLdap.php | 502 + lib/Zend/Loader.php | 6 +- lib/Zend/Loader/Autoloader.php | 8 +- lib/Zend/Loader/Autoloader/Interface.php | 8 +- lib/Zend/Loader/Autoloader/Resource.php | 13 +- lib/Zend/Loader/Exception.php | 6 +- lib/Zend/Loader/PluginLoader.php | 8 +- lib/Zend/Loader/PluginLoader/Exception.php | 5 +- lib/Zend/Loader/PluginLoader/Interface.php | 5 +- lib/Zend/Locale.php | 171 +- lib/Zend/Locale/Data.php | 169 +- lib/Zend/Locale/Data/Translation.php | 6 +- lib/Zend/Locale/Data/aa.xml | 55 +- lib/Zend/Locale/Data/aa_DJ.xml | 17 +- lib/Zend/Locale/Data/aa_ER.xml | 17 +- lib/Zend/Locale/Data/aa_ER_SAAHO.xml | 39 + lib/Zend/Locale/Data/aa_ET.xml | 6 +- lib/Zend/Locale/Data/af.xml | 41 +- lib/Zend/Locale/Data/af_NA.xml | 15 +- lib/Zend/Locale/Data/af_ZA.xml | 6 +- lib/Zend/Locale/Data/ak.xml | 21 +- lib/Zend/Locale/Data/ak_GH.xml | 6 +- lib/Zend/Locale/Data/am.xml | 41 +- lib/Zend/Locale/Data/am_ET.xml | 6 +- lib/Zend/Locale/Data/ar.xml | 6219 ++++---- lib/Zend/Locale/Data/ar_AE.xml | 6 +- lib/Zend/Locale/Data/ar_BH.xml | 6 +- lib/Zend/Locale/Data/ar_DZ.xml | 30 +- lib/Zend/Locale/Data/ar_EG.xml | 6 +- lib/Zend/Locale/Data/ar_IQ.xml | 6 +- lib/Zend/Locale/Data/ar_JO.xml | 6 +- lib/Zend/Locale/Data/ar_KW.xml | 6 +- lib/Zend/Locale/Data/ar_LB.xml | 11 +- lib/Zend/Locale/Data/ar_LY.xml | 6 +- lib/Zend/Locale/Data/ar_MA.xml | 33 +- lib/Zend/Locale/Data/ar_OM.xml | 6 +- lib/Zend/Locale/Data/ar_QA.xml | 6 +- lib/Zend/Locale/Data/ar_SA.xml | 6 +- lib/Zend/Locale/Data/ar_SD.xml | 6 +- lib/Zend/Locale/Data/ar_SY.xml | 6 +- lib/Zend/Locale/Data/ar_TN.xml | 27 +- lib/Zend/Locale/Data/ar_YE.xml | 6 +- lib/Zend/Locale/Data/as.xml | 20 +- lib/Zend/Locale/Data/as_IN.xml | 6 +- lib/Zend/Locale/Data/az.xml | 64 +- lib/Zend/Locale/Data/az_AZ.xml | 6 +- lib/Zend/Locale/Data/az_Cyrl.xml | 8 +- lib/Zend/Locale/Data/az_Cyrl_AZ.xml | 6 +- lib/Zend/Locale/Data/az_Latn.xml | 6 +- lib/Zend/Locale/Data/az_Latn_AZ.xml | 6 +- lib/Zend/Locale/Data/be.xml | 170 +- lib/Zend/Locale/Data/be_BY.xml | 6 +- lib/Zend/Locale/Data/bg.xml | 1401 +- lib/Zend/Locale/Data/bg_BG.xml | 6 +- lib/Zend/Locale/Data/bn.xml | 381 +- lib/Zend/Locale/Data/bn_BD.xml | 6 +- lib/Zend/Locale/Data/bn_IN.xml | 176 +- lib/Zend/Locale/Data/bo.xml | 441 + lib/Zend/Locale/Data/bo_CN.xml | 10 + lib/Zend/Locale/Data/bo_IN.xml | 10 + lib/Zend/Locale/Data/bs.xml | 21 +- lib/Zend/Locale/Data/bs_BA.xml | 6 +- lib/Zend/Locale/Data/byn.xml | 26 +- lib/Zend/Locale/Data/byn_ER.xml | 6 +- lib/Zend/Locale/Data/ca.xml | 2123 ++- lib/Zend/Locale/Data/ca_ES.xml | 6 +- lib/Zend/Locale/Data/cch.xml | 23 +- lib/Zend/Locale/Data/cch_NG.xml | 6 +- lib/Zend/Locale/Data/characters.xml | 2362 +-- lib/Zend/Locale/Data/cop.xml | 19 +- lib/Zend/Locale/Data/cs.xml | 494 +- lib/Zend/Locale/Data/cs_CZ.xml | 6 +- lib/Zend/Locale/Data/cy.xml | 43 +- lib/Zend/Locale/Data/cy_GB.xml | 6 +- lib/Zend/Locale/Data/da.xml | 458 +- lib/Zend/Locale/Data/da_DK.xml | 6 +- lib/Zend/Locale/Data/de.xml | 362 +- lib/Zend/Locale/Data/de_AT.xml | 23 +- lib/Zend/Locale/Data/de_BE.xml | 32 +- lib/Zend/Locale/Data/de_CH.xml | 12 +- lib/Zend/Locale/Data/de_DE.xml | 6 +- lib/Zend/Locale/Data/de_LI.xml | 7 +- lib/Zend/Locale/Data/de_LU.xml | 6 +- lib/Zend/Locale/Data/dv.xml | 21 +- lib/Zend/Locale/Data/dv_MV.xml | 6 +- lib/Zend/Locale/Data/dz.xml | 32 +- lib/Zend/Locale/Data/dz_BT.xml | 6 +- lib/Zend/Locale/Data/ee.xml | 22 +- lib/Zend/Locale/Data/ee_GH.xml | 6 +- lib/Zend/Locale/Data/ee_TG.xml | 6 +- lib/Zend/Locale/Data/el.xml | 2012 ++- lib/Zend/Locale/Data/el_CY.xml | 7 +- lib/Zend/Locale/Data/el_GR.xml | 6 +- lib/Zend/Locale/Data/el_POLYTON.xml | 12 +- lib/Zend/Locale/Data/en.xml | 8141 +++++----- lib/Zend/Locale/Data/en_AS.xml | 6 +- lib/Zend/Locale/Data/en_AU.xml | 29 +- lib/Zend/Locale/Data/en_BE.xml | 30 +- lib/Zend/Locale/Data/en_BW.xml | 32 +- lib/Zend/Locale/Data/en_BZ.xml | 32 +- lib/Zend/Locale/Data/en_CA.xml | 23 +- lib/Zend/Locale/Data/en_Dsrt.xml | 1024 ++ lib/Zend/Locale/Data/en_Dsrt_US.xml | 11 + lib/Zend/Locale/Data/en_GB.xml | 33 +- lib/Zend/Locale/Data/en_GU.xml | 6 +- lib/Zend/Locale/Data/en_HK.xml | 109 +- lib/Zend/Locale/Data/en_IE.xml | 34 +- lib/Zend/Locale/Data/en_IN.xml | 31 +- lib/Zend/Locale/Data/en_JM.xml | 14 +- lib/Zend/Locale/Data/en_MH.xml | 6 +- lib/Zend/Locale/Data/en_MP.xml | 6 +- lib/Zend/Locale/Data/en_MT.xml | 34 +- lib/Zend/Locale/Data/en_NA.xml | 14 +- lib/Zend/Locale/Data/en_NZ.xml | 30 +- lib/Zend/Locale/Data/en_PH.xml | 6 +- lib/Zend/Locale/Data/en_PK.xml | 39 +- lib/Zend/Locale/Data/en_SG.xml | 129 +- lib/Zend/Locale/Data/en_Shaw.xml | 14 +- lib/Zend/Locale/Data/en_TT.xml | 14 +- lib/Zend/Locale/Data/en_UM.xml | 6 +- lib/Zend/Locale/Data/en_US.xml | 6 +- lib/Zend/Locale/Data/en_US_POSIX.xml | 84 +- lib/Zend/Locale/Data/en_VI.xml | 6 +- lib/Zend/Locale/Data/en_ZA.xml | 31 +- lib/Zend/Locale/Data/en_ZW.xml | 36 +- lib/Zend/Locale/Data/eo.xml | 36 +- lib/Zend/Locale/Data/es.xml | 427 +- lib/Zend/Locale/Data/es_AR.xml | 29 +- lib/Zend/Locale/Data/es_BO.xml | 6 +- lib/Zend/Locale/Data/es_CL.xml | 28 +- lib/Zend/Locale/Data/es_CO.xml | 29 +- lib/Zend/Locale/Data/es_CR.xml | 13 +- lib/Zend/Locale/Data/es_DO.xml | 6 +- lib/Zend/Locale/Data/es_EC.xml | 28 +- lib/Zend/Locale/Data/es_ES.xml | 7 +- lib/Zend/Locale/Data/es_GT.xml | 27 +- lib/Zend/Locale/Data/es_HN.xml | 31 +- lib/Zend/Locale/Data/es_MX.xml | 6 +- lib/Zend/Locale/Data/es_NI.xml | 6 +- lib/Zend/Locale/Data/es_PA.xml | 26 +- lib/Zend/Locale/Data/es_PE.xml | 24 +- lib/Zend/Locale/Data/es_PR.xml | 26 +- lib/Zend/Locale/Data/es_PY.xml | 7 +- lib/Zend/Locale/Data/es_SV.xml | 6 +- lib/Zend/Locale/Data/es_US.xml | 34 +- lib/Zend/Locale/Data/es_UY.xml | 9 +- lib/Zend/Locale/Data/es_VE.xml | 7 +- lib/Zend/Locale/Data/et.xml | 99 +- lib/Zend/Locale/Data/et_EE.xml | 6 +- lib/Zend/Locale/Data/eu.xml | 515 +- lib/Zend/Locale/Data/eu_ES.xml | 6 +- lib/Zend/Locale/Data/fa.xml | 484 +- lib/Zend/Locale/Data/fa_AF.xml | 9 +- lib/Zend/Locale/Data/fa_IR.xml | 6 +- lib/Zend/Locale/Data/fi.xml | 1320 +- lib/Zend/Locale/Data/fi_FI.xml | 6 +- lib/Zend/Locale/Data/fil.xml | 63 +- lib/Zend/Locale/Data/fil_PH.xml | 16 +- lib/Zend/Locale/Data/fo.xml | 209 +- lib/Zend/Locale/Data/fo_FO.xml | 6 +- lib/Zend/Locale/Data/fr.xml | 915 +- lib/Zend/Locale/Data/fr_BE.xml | 25 +- lib/Zend/Locale/Data/fr_CA.xml | 25 +- lib/Zend/Locale/Data/fr_CH.xml | 27 +- lib/Zend/Locale/Data/fr_FR.xml | 6 +- lib/Zend/Locale/Data/fr_LU.xml | 6 +- lib/Zend/Locale/Data/fr_MC.xml | 6 +- lib/Zend/Locale/Data/fr_SN.xml | 6 +- lib/Zend/Locale/Data/fur.xml | 190 +- lib/Zend/Locale/Data/fur_IT.xml | 6 +- lib/Zend/Locale/Data/ga.xml | 128 +- lib/Zend/Locale/Data/ga_IE.xml | 6 +- lib/Zend/Locale/Data/gaa.xml | 20 +- lib/Zend/Locale/Data/gaa_GH.xml | 6 +- lib/Zend/Locale/Data/gez.xml | 30 +- lib/Zend/Locale/Data/gez_ER.xml | 6 +- lib/Zend/Locale/Data/gez_ET.xml | 16 +- lib/Zend/Locale/Data/gl.xml | 42 +- lib/Zend/Locale/Data/gl_ES.xml | 6 +- lib/Zend/Locale/Data/gsw.xml | 2920 ++++ lib/Zend/Locale/Data/gsw_CH.xml | 10 + lib/Zend/Locale/Data/gu.xml | 1030 +- lib/Zend/Locale/Data/gu_IN.xml | 6 +- lib/Zend/Locale/Data/gv.xml | 21 +- lib/Zend/Locale/Data/gv_GB.xml | 6 +- lib/Zend/Locale/Data/ha.xml | 29 +- lib/Zend/Locale/Data/ha_Arab.xml | 6 +- lib/Zend/Locale/Data/ha_Arab_NG.xml | 6 +- lib/Zend/Locale/Data/ha_Arab_SD.xml | 6 +- lib/Zend/Locale/Data/ha_GH.xml | 6 +- lib/Zend/Locale/Data/ha_Latn.xml | 6 +- lib/Zend/Locale/Data/ha_Latn_GH.xml | 6 +- lib/Zend/Locale/Data/ha_Latn_NE.xml | 6 +- lib/Zend/Locale/Data/ha_Latn_NG.xml | 6 +- lib/Zend/Locale/Data/ha_NE.xml | 6 +- lib/Zend/Locale/Data/ha_NG.xml | 6 +- lib/Zend/Locale/Data/ha_SD.xml | 6 +- lib/Zend/Locale/Data/haw.xml | 21 +- lib/Zend/Locale/Data/haw_US.xml | 6 +- lib/Zend/Locale/Data/he.xml | 514 +- lib/Zend/Locale/Data/he_IL.xml | 6 +- lib/Zend/Locale/Data/hi.xml | 655 +- lib/Zend/Locale/Data/hi_IN.xml | 6 +- lib/Zend/Locale/Data/hr.xml | 2738 +++- lib/Zend/Locale/Data/hr_HR.xml | 6 +- lib/Zend/Locale/Data/hu.xml | 446 +- lib/Zend/Locale/Data/hu_HU.xml | 6 +- lib/Zend/Locale/Data/hy.xml | 35 +- lib/Zend/Locale/Data/hy_AM.xml | 6 +- lib/Zend/Locale/Data/hy_AM_REVISED.xml | 6 +- lib/Zend/Locale/Data/ia.xml | 19 +- lib/Zend/Locale/Data/id.xml | 51 +- lib/Zend/Locale/Data/id_ID.xml | 6 +- lib/Zend/Locale/Data/ig.xml | 20 +- lib/Zend/Locale/Data/ig_NG.xml | 6 +- lib/Zend/Locale/Data/ii.xml | 13 +- lib/Zend/Locale/Data/ii_CN.xml | 6 +- lib/Zend/Locale/Data/in.xml | 14 +- lib/Zend/Locale/Data/is.xml | 240 +- lib/Zend/Locale/Data/is_IS.xml | 6 +- lib/Zend/Locale/Data/it.xml | 176 +- lib/Zend/Locale/Data/it_CH.xml | 27 +- lib/Zend/Locale/Data/it_IT.xml | 6 +- lib/Zend/Locale/Data/iu.xml | 19 +- lib/Zend/Locale/Data/iw.xml | 16 +- lib/Zend/Locale/Data/ja.xml | 207 +- lib/Zend/Locale/Data/ja_JP.xml | 6 +- lib/Zend/Locale/Data/ka.xml | 33 +- lib/Zend/Locale/Data/ka_GE.xml | 6 +- lib/Zend/Locale/Data/kaj.xml | 21 +- lib/Zend/Locale/Data/kaj_NG.xml | 6 +- lib/Zend/Locale/Data/kam.xml | 20 +- lib/Zend/Locale/Data/kam_KE.xml | 6 +- lib/Zend/Locale/Data/kcg.xml | 23 +- lib/Zend/Locale/Data/kcg_NG.xml | 6 +- lib/Zend/Locale/Data/kfo.xml | 21 +- lib/Zend/Locale/Data/kfo_CI.xml | 6 +- lib/Zend/Locale/Data/kk.xml | 41 +- lib/Zend/Locale/Data/kk_Cyrl.xml | 6 +- lib/Zend/Locale/Data/kk_Cyrl_KZ.xml | 6 +- lib/Zend/Locale/Data/kk_KZ.xml | 6 +- lib/Zend/Locale/Data/kl.xml | 22 +- lib/Zend/Locale/Data/kl_GL.xml | 6 +- lib/Zend/Locale/Data/km.xml | 98 +- lib/Zend/Locale/Data/km_KH.xml | 6 +- lib/Zend/Locale/Data/kn.xml | 920 +- lib/Zend/Locale/Data/kn_IN.xml | 6 +- lib/Zend/Locale/Data/ko.xml | 727 +- lib/Zend/Locale/Data/ko_KR.xml | 6 +- lib/Zend/Locale/Data/kok.xml | 19 +- lib/Zend/Locale/Data/kok_IN.xml | 6 +- lib/Zend/Locale/Data/kpe.xml | 26 +- lib/Zend/Locale/Data/kpe_GN.xml | 13 +- lib/Zend/Locale/Data/kpe_LR.xml | 6 +- lib/Zend/Locale/Data/ku.xml | 31 +- lib/Zend/Locale/Data/ku_Arab.xml | 6 +- lib/Zend/Locale/Data/ku_Arab_IQ.xml | 11 + lib/Zend/Locale/Data/ku_Arab_IR.xml | 11 + lib/Zend/Locale/Data/ku_Arab_SY.xml | 11 + lib/Zend/Locale/Data/ku_IQ.xml | 11 + lib/Zend/Locale/Data/ku_IR.xml | 11 + lib/Zend/Locale/Data/ku_Latn.xml | 10 +- lib/Zend/Locale/Data/ku_Latn_TR.xml | 6 +- lib/Zend/Locale/Data/ku_SY.xml | 11 + lib/Zend/Locale/Data/ku_TR.xml | 6 +- lib/Zend/Locale/Data/kw.xml | 21 +- lib/Zend/Locale/Data/kw_GB.xml | 6 +- lib/Zend/Locale/Data/ky.xml | 19 +- lib/Zend/Locale/Data/ky_KG.xml | 6 +- lib/Zend/Locale/Data/likelySubtags.xml | 463 + lib/Zend/Locale/Data/ln.xml | 25 +- lib/Zend/Locale/Data/ln_CD.xml | 6 +- lib/Zend/Locale/Data/ln_CG.xml | 6 +- lib/Zend/Locale/Data/lo.xml | 86 +- lib/Zend/Locale/Data/lo_LA.xml | 6 +- lib/Zend/Locale/Data/lt.xml | 986 +- lib/Zend/Locale/Data/lt_LT.xml | 6 +- lib/Zend/Locale/Data/lv.xml | 921 +- lib/Zend/Locale/Data/lv_LV.xml | 6 +- lib/Zend/Locale/Data/metazoneInfo.xml | 1404 ++ lib/Zend/Locale/Data/mk.xml | 1424 +- lib/Zend/Locale/Data/mk_MK.xml | 6 +- lib/Zend/Locale/Data/ml.xml | 501 +- lib/Zend/Locale/Data/ml_IN.xml | 6 +- lib/Zend/Locale/Data/mn.xml | 24 +- lib/Zend/Locale/Data/mn_CN.xml | 6 +- lib/Zend/Locale/Data/mn_Cyrl.xml | 6 +- lib/Zend/Locale/Data/mn_Cyrl_MN.xml | 6 +- lib/Zend/Locale/Data/mn_MN.xml | 6 +- lib/Zend/Locale/Data/mn_Mong.xml | 6 +- lib/Zend/Locale/Data/mn_Mong_CN.xml | 6 +- lib/Zend/Locale/Data/mo.xml | 16 +- lib/Zend/Locale/Data/mr.xml | 1133 +- lib/Zend/Locale/Data/mr_IN.xml | 6 +- lib/Zend/Locale/Data/ms.xml | 22 +- lib/Zend/Locale/Data/ms_BN.xml | 27 +- lib/Zend/Locale/Data/ms_MY.xml | 6 +- lib/Zend/Locale/Data/mt.xml | 46 +- lib/Zend/Locale/Data/mt_MT.xml | 6 +- lib/Zend/Locale/Data/my.xml | 62 +- lib/Zend/Locale/Data/my_MM.xml | 6 +- lib/Zend/Locale/Data/nb.xml | 542 +- lib/Zend/Locale/Data/nb_NO.xml | 6 +- lib/Zend/Locale/Data/nds.xml | 1149 ++ lib/Zend/Locale/Data/nds_DE.xml | 10 + lib/Zend/Locale/Data/ne.xml | 35 +- lib/Zend/Locale/Data/ne_IN.xml | 6 +- lib/Zend/Locale/Data/ne_NP.xml | 6 +- lib/Zend/Locale/Data/nl.xml | 292 +- lib/Zend/Locale/Data/nl_BE.xml | 9 +- lib/Zend/Locale/Data/nl_NL.xml | 6 +- lib/Zend/Locale/Data/nn.xml | 1301 +- lib/Zend/Locale/Data/nn_NO.xml | 6 +- lib/Zend/Locale/Data/no.xml | 16 +- lib/Zend/Locale/Data/nr.xml | 25 +- lib/Zend/Locale/Data/nr_ZA.xml | 6 +- lib/Zend/Locale/Data/nso.xml | 25 +- lib/Zend/Locale/Data/nso_ZA.xml | 6 +- lib/Zend/Locale/Data/numberingSystems.xml | 42 + lib/Zend/Locale/Data/ny.xml | 20 +- lib/Zend/Locale/Data/ny_MW.xml | 6 +- lib/Zend/Locale/Data/oc.xml | 280 + lib/Zend/Locale/Data/oc_FR.xml | 10 + lib/Zend/Locale/Data/om.xml | 26 +- lib/Zend/Locale/Data/om_ET.xml | 6 +- lib/Zend/Locale/Data/om_KE.xml | 13 +- lib/Zend/Locale/Data/or.xml | 1010 +- lib/Zend/Locale/Data/or_IN.xml | 6 +- lib/Zend/Locale/Data/pa.xml | 53 +- lib/Zend/Locale/Data/pa_Arab.xml | 12 +- lib/Zend/Locale/Data/pa_Arab_PK.xml | 6 +- lib/Zend/Locale/Data/pa_Guru.xml | 6 +- lib/Zend/Locale/Data/pa_Guru_IN.xml | 6 +- lib/Zend/Locale/Data/pa_IN.xml | 6 +- lib/Zend/Locale/Data/pa_PK.xml | 6 +- lib/Zend/Locale/Data/pl.xml | 223 +- lib/Zend/Locale/Data/pl_PL.xml | 6 +- lib/Zend/Locale/Data/plurals.xml | 76 - lib/Zend/Locale/Data/postalCodeData.xml | 166 + lib/Zend/Locale/Data/ps.xml | 39 +- lib/Zend/Locale/Data/ps_AF.xml | 6 +- lib/Zend/Locale/Data/pt.xml | 941 +- lib/Zend/Locale/Data/pt_BR.xml | 6 +- lib/Zend/Locale/Data/pt_PT.xml | 155 +- lib/Zend/Locale/Data/ro.xml | 915 +- lib/Zend/Locale/Data/ro_MD.xml | 14 +- lib/Zend/Locale/Data/ro_RO.xml | 6 +- lib/Zend/Locale/Data/root.xml | 738 +- lib/Zend/Locale/Data/ru.xml | 273 +- lib/Zend/Locale/Data/ru_RU.xml | 6 +- lib/Zend/Locale/Data/ru_UA.xml | 33 +- lib/Zend/Locale/Data/rw.xml | 19 +- lib/Zend/Locale/Data/rw_RW.xml | 6 +- lib/Zend/Locale/Data/sa.xml | 125 +- lib/Zend/Locale/Data/sa_IN.xml | 6 +- lib/Zend/Locale/Data/se.xml | 167 +- lib/Zend/Locale/Data/se_FI.xml | 11 +- lib/Zend/Locale/Data/se_NO.xml | 6 +- lib/Zend/Locale/Data/sh.xml | 6 +- lib/Zend/Locale/Data/sh_BA.xml | 6 +- lib/Zend/Locale/Data/sh_CS.xml | 6 +- lib/Zend/Locale/Data/sh_YU.xml | 6 +- lib/Zend/Locale/Data/si.xml | 23 +- lib/Zend/Locale/Data/si_LK.xml | 6 +- lib/Zend/Locale/Data/sid.xml | 24 +- lib/Zend/Locale/Data/sid_ET.xml | 6 +- lib/Zend/Locale/Data/sk.xml | 759 +- lib/Zend/Locale/Data/sk_SK.xml | 6 +- lib/Zend/Locale/Data/sl.xml | 1584 +- lib/Zend/Locale/Data/sl_SI.xml | 6 +- lib/Zend/Locale/Data/so.xml | 44 +- lib/Zend/Locale/Data/so_DJ.xml | 16 +- lib/Zend/Locale/Data/so_ET.xml | 16 +- lib/Zend/Locale/Data/so_KE.xml | 13 +- lib/Zend/Locale/Data/so_SO.xml | 6 +- lib/Zend/Locale/Data/sq.xml | 52 +- lib/Zend/Locale/Data/sq_AL.xml | 6 +- lib/Zend/Locale/Data/sr.xml | 4164 ++++- lib/Zend/Locale/Data/sr_BA.xml | 6 +- lib/Zend/Locale/Data/sr_CS.xml | 6 +- lib/Zend/Locale/Data/sr_Cyrl.xml | 6 +- lib/Zend/Locale/Data/sr_Cyrl_BA.xml | 8 +- lib/Zend/Locale/Data/sr_Cyrl_CS.xml | 6 +- lib/Zend/Locale/Data/sr_Cyrl_ME.xml | 6 +- lib/Zend/Locale/Data/sr_Cyrl_RS.xml | 6 +- lib/Zend/Locale/Data/sr_Cyrl_YU.xml | 6 +- lib/Zend/Locale/Data/sr_Latn.xml | 4117 ++++- lib/Zend/Locale/Data/sr_Latn_BA.xml | 6 +- lib/Zend/Locale/Data/sr_Latn_CS.xml | 6 +- lib/Zend/Locale/Data/sr_Latn_ME.xml | 13 +- lib/Zend/Locale/Data/sr_Latn_RS.xml | 7 +- lib/Zend/Locale/Data/sr_Latn_YU.xml | 6 +- lib/Zend/Locale/Data/sr_ME.xml | 6 +- lib/Zend/Locale/Data/sr_RS.xml | 6 +- lib/Zend/Locale/Data/sr_YU.xml | 6 +- lib/Zend/Locale/Data/ss.xml | 23 +- lib/Zend/Locale/Data/ss_SZ.xml | 7 +- lib/Zend/Locale/Data/ss_ZA.xml | 6 +- lib/Zend/Locale/Data/st.xml | 25 +- lib/Zend/Locale/Data/st_LS.xml | 13 +- lib/Zend/Locale/Data/st_ZA.xml | 6 +- lib/Zend/Locale/Data/supplementalData.xml | 4284 ++--- lib/Zend/Locale/Data/sv.xml | 802 +- lib/Zend/Locale/Data/sv_FI.xml | 15 +- lib/Zend/Locale/Data/sv_SE.xml | 6 +- lib/Zend/Locale/Data/sw.xml | 24 +- lib/Zend/Locale/Data/sw_KE.xml | 6 +- lib/Zend/Locale/Data/sw_TZ.xml | 6 +- lib/Zend/Locale/Data/syr.xml | 108 +- lib/Zend/Locale/Data/syr_SY.xml | 6 +- lib/Zend/Locale/Data/ta.xml | 794 +- lib/Zend/Locale/Data/ta_IN.xml | 6 +- lib/Zend/Locale/Data/te.xml | 965 +- lib/Zend/Locale/Data/te_IN.xml | 6 +- lib/Zend/Locale/Data/telephoneCodeData.xml | 8 +- lib/Zend/Locale/Data/tg.xml | 62 +- lib/Zend/Locale/Data/tg_Cyrl.xml | 6 +- lib/Zend/Locale/Data/tg_Cyrl_TJ.xml | 6 +- lib/Zend/Locale/Data/tg_TJ.xml | 6 +- lib/Zend/Locale/Data/th.xml | 1445 +- lib/Zend/Locale/Data/th_TH.xml | 6 +- lib/Zend/Locale/Data/ti.xml | 27 +- lib/Zend/Locale/Data/ti_ER.xml | 37 +- lib/Zend/Locale/Data/ti_ET.xml | 6 +- lib/Zend/Locale/Data/tig.xml | 28 +- lib/Zend/Locale/Data/tig_ER.xml | 6 +- lib/Zend/Locale/Data/tl.xml | 16 +- lib/Zend/Locale/Data/tn.xml | 27 +- lib/Zend/Locale/Data/tn_ZA.xml | 6 +- lib/Zend/Locale/Data/to.xml | 36 +- lib/Zend/Locale/Data/to_TO.xml | 6 +- lib/Zend/Locale/Data/tr.xml | 711 +- lib/Zend/Locale/Data/tr_TR.xml | 6 +- lib/Zend/Locale/Data/trv.xml | 561 + lib/Zend/Locale/Data/trv_TW.xml | 10 + lib/Zend/Locale/Data/ts.xml | 93 +- lib/Zend/Locale/Data/ts_ZA.xml | 6 +- lib/Zend/Locale/Data/tt.xml | 124 +- lib/Zend/Locale/Data/tt_RU.xml | 6 +- lib/Zend/Locale/Data/ug.xml | 160 +- lib/Zend/Locale/Data/ug_Arab.xml | 7 +- lib/Zend/Locale/Data/ug_Arab_CN.xml | 6 +- lib/Zend/Locale/Data/ug_CN.xml | 6 +- lib/Zend/Locale/Data/uk.xml | 268 +- lib/Zend/Locale/Data/uk_UA.xml | 6 +- lib/Zend/Locale/Data/ur.xml | 82 +- lib/Zend/Locale/Data/ur_IN.xml | 7 +- lib/Zend/Locale/Data/ur_PK.xml | 6 +- lib/Zend/Locale/Data/uz.xml | 45 +- lib/Zend/Locale/Data/uz_AF.xml | 6 +- lib/Zend/Locale/Data/uz_Arab.xml | 17 +- lib/Zend/Locale/Data/uz_Arab_AF.xml | 6 +- lib/Zend/Locale/Data/uz_Cyrl.xml | 6 +- lib/Zend/Locale/Data/uz_Cyrl_UZ.xml | 6 +- lib/Zend/Locale/Data/uz_Latn.xml | 43 +- lib/Zend/Locale/Data/uz_Latn_UZ.xml | 6 +- lib/Zend/Locale/Data/uz_UZ.xml | 6 +- lib/Zend/Locale/Data/ve.xml | 57 +- lib/Zend/Locale/Data/ve_ZA.xml | 6 +- lib/Zend/Locale/Data/vi.xml | 107 +- lib/Zend/Locale/Data/vi_VN.xml | 6 +- lib/Zend/Locale/Data/wal.xml | 51 +- lib/Zend/Locale/Data/wal_ET.xml | 6 +- lib/Zend/Locale/Data/wo.xml | 169 +- lib/Zend/Locale/Data/wo_Latn.xml | 6 +- lib/Zend/Locale/Data/wo_Latn_SN.xml | 6 +- lib/Zend/Locale/Data/wo_SN.xml | 6 +- lib/Zend/Locale/Data/xh.xml | 99 +- lib/Zend/Locale/Data/xh_ZA.xml | 6 +- lib/Zend/Locale/Data/yo.xml | 112 +- lib/Zend/Locale/Data/yo_NG.xml | 6 +- lib/Zend/Locale/Data/zh.xml | 403 +- lib/Zend/Locale/Data/zh_CN.xml | 6 +- lib/Zend/Locale/Data/zh_HK.xml | 6 +- lib/Zend/Locale/Data/zh_Hans.xml | 6 +- lib/Zend/Locale/Data/zh_Hans_CN.xml | 6 +- lib/Zend/Locale/Data/zh_Hans_HK.xml | 13 +- lib/Zend/Locale/Data/zh_Hans_MO.xml | 6 +- lib/Zend/Locale/Data/zh_Hans_SG.xml | 23 +- lib/Zend/Locale/Data/zh_Hant.xml | 449 +- lib/Zend/Locale/Data/zh_Hant_HK.xml | 38 +- lib/Zend/Locale/Data/zh_Hant_MO.xml | 35 +- lib/Zend/Locale/Data/zh_Hant_TW.xml | 6 +- lib/Zend/Locale/Data/zh_MO.xml | 6 +- lib/Zend/Locale/Data/zh_SG.xml | 6 +- lib/Zend/Locale/Data/zh_TW.xml | 6 +- lib/Zend/Locale/Data/zu.xml | 55 +- lib/Zend/Locale/Data/zu_ZA.xml | 6 +- lib/Zend/Locale/Exception.php | 6 +- lib/Zend/Locale/Format.php | 302 +- lib/Zend/Locale/Math.php | 23 +- lib/Zend/Locale/Math/Exception.php | 10 +- lib/Zend/Locale/Math/PhpMath.php | 20 +- lib/Zend/Log.php | 8 +- lib/Zend/Log/Exception.php | 8 +- lib/Zend/Log/Filter/Interface.php | 8 +- lib/Zend/Log/Filter/Message.php | 8 +- lib/Zend/Log/Filter/Priority.php | 8 +- lib/Zend/Log/Filter/Suppress.php | 8 +- lib/Zend/Log/Formatter/Firebug.php | 5 +- lib/Zend/Log/Formatter/Interface.php | 8 +- lib/Zend/Log/Formatter/Simple.php | 8 +- lib/Zend/Log/Formatter/Xml.php | 8 +- lib/Zend/Log/Writer/Abstract.php | 8 +- lib/Zend/Log/Writer/Db.php | 8 +- lib/Zend/Log/Writer/Firebug.php | 5 +- lib/Zend/Log/Writer/Mail.php | 37 +- lib/Zend/Log/Writer/Mock.php | 8 +- lib/Zend/Log/Writer/Null.php | 8 +- lib/Zend/Log/Writer/Stream.php | 8 +- lib/Zend/Log/Writer/Syslog.php | 175 + lib/Zend/Mail.php | 19 +- lib/Zend/Mail/Exception.php | 6 +- lib/Zend/Mail/Message.php | 6 +- lib/Zend/Mail/Message/File.php | 6 +- lib/Zend/Mail/Message/Interface.php | 6 +- lib/Zend/Mail/Part.php | 6 +- lib/Zend/Mail/Part/File.php | 6 +- lib/Zend/Mail/Part/Interface.php | 6 +- lib/Zend/Mail/Protocol/Abstract.php | 8 +- lib/Zend/Mail/Protocol/Exception.php | 6 +- lib/Zend/Mail/Protocol/Imap.php | 6 +- lib/Zend/Mail/Protocol/Pop3.php | 6 +- lib/Zend/Mail/Protocol/Smtp.php | 6 +- lib/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php | 6 +- lib/Zend/Mail/Protocol/Smtp/Auth/Login.php | 6 +- lib/Zend/Mail/Protocol/Smtp/Auth/Plain.php | 6 +- lib/Zend/Mail/Storage.php | 6 +- lib/Zend/Mail/Storage/Abstract.php | 6 +- lib/Zend/Mail/Storage/Exception.php | 6 +- lib/Zend/Mail/Storage/Folder.php | 6 +- lib/Zend/Mail/Storage/Folder/Interface.php | 6 +- lib/Zend/Mail/Storage/Folder/Maildir.php | 6 +- lib/Zend/Mail/Storage/Folder/Mbox.php | 6 +- lib/Zend/Mail/Storage/Imap.php | 6 +- lib/Zend/Mail/Storage/Maildir.php | 6 +- lib/Zend/Mail/Storage/Mbox.php | 6 +- lib/Zend/Mail/Storage/Pop3.php | 6 +- lib/Zend/Mail/Storage/Writable/Interface.php | 6 +- lib/Zend/Mail/Storage/Writable/Maildir.php | 6 +- lib/Zend/Mail/Transport/Abstract.php | 8 +- lib/Zend/Mail/Transport/Exception.php | 6 +- lib/Zend/Mail/Transport/Sendmail.php | 6 +- lib/Zend/Mail/Transport/Smtp.php | 6 +- lib/Zend/Measure/Abstract.php | 114 +- lib/Zend/Measure/Acceleration.php | 6 +- lib/Zend/Measure/Angle.php | 6 +- lib/Zend/Measure/Area.php | 6 +- lib/Zend/Measure/Binary.php | 6 +- lib/Zend/Measure/Capacitance.php | 6 +- lib/Zend/Measure/Cooking/Volume.php | 6 +- lib/Zend/Measure/Cooking/Weight.php | 6 +- lib/Zend/Measure/Current.php | 6 +- lib/Zend/Measure/Density.php | 6 +- lib/Zend/Measure/Energy.php | 6 +- lib/Zend/Measure/Exception.php | 6 +- lib/Zend/Measure/Flow/Mass.php | 6 +- lib/Zend/Measure/Flow/Mole.php | 6 +- lib/Zend/Measure/Flow/Volume.php | 6 +- lib/Zend/Measure/Force.php | 6 +- lib/Zend/Measure/Frequency.php | 6 +- lib/Zend/Measure/Illumination.php | 6 +- lib/Zend/Measure/Length.php | 6 +- lib/Zend/Measure/Lightness.php | 6 +- lib/Zend/Measure/Number.php | 18 +- lib/Zend/Measure/Power.php | 6 +- lib/Zend/Measure/Pressure.php | 6 +- lib/Zend/Measure/Speed.php | 6 +- lib/Zend/Measure/Temperature.php | 6 +- lib/Zend/Measure/Time.php | 6 +- lib/Zend/Measure/Torque.php | 6 +- lib/Zend/Measure/Viscosity/Dynamic.php | 6 +- lib/Zend/Measure/Viscosity/Kinematic.php | 6 +- lib/Zend/Measure/Volume.php | 6 +- lib/Zend/Measure/Weight.php | 6 +- lib/Zend/Memory.php | 5 +- lib/Zend/Memory/AccessController.php | 5 +- lib/Zend/Memory/Container.php | 5 +- lib/Zend/Memory/Container/Interface.php | 5 +- lib/Zend/Memory/Container/Locked.php | 5 +- lib/Zend/Memory/Container/Movable.php | 5 +- lib/Zend/Memory/Exception.php | 7 +- lib/Zend/Memory/Manager.php | 7 +- lib/Zend/Memory/Value.php | 6 +- lib/Zend/Mime.php | 8 +- lib/Zend/Mime/Decode.php | 5 +- lib/Zend/Mime/Exception.php | 5 +- lib/Zend/Mime/Message.php | 5 +- lib/Zend/Mime/Part.php | 5 +- lib/Zend/Navigation.php | 7 +- lib/Zend/Navigation/Container.php | 7 +- lib/Zend/Navigation/Exception.php | 7 +- lib/Zend/Navigation/Page.php | 5 +- lib/Zend/Navigation/Page/Mvc.php | 7 +- lib/Zend/Navigation/Page/Uri.php | 7 +- lib/Zend/OpenId.php | 6 +- lib/Zend/OpenId/Consumer.php | 6 +- lib/Zend/OpenId/Consumer/Storage.php | 6 +- lib/Zend/OpenId/Consumer/Storage/File.php | 6 +- lib/Zend/OpenId/Exception.php | 6 +- lib/Zend/OpenId/Extension.php | 6 +- lib/Zend/OpenId/Extension/Sreg.php | 6 +- lib/Zend/OpenId/Provider.php | 6 +- lib/Zend/OpenId/Provider/Storage.php | 6 +- lib/Zend/OpenId/Provider/Storage/File.php | 6 +- lib/Zend/OpenId/Provider/User.php | 6 +- lib/Zend/OpenId/Provider/User/Session.php | 6 +- lib/Zend/Paginator.php | 116 +- lib/Zend/Paginator/Adapter/Array.php | 6 +- lib/Zend/Paginator/Adapter/DbSelect.php | 9 +- lib/Zend/Paginator/Adapter/DbTableSelect.php | 6 +- lib/Zend/Paginator/Adapter/Interface.php | 6 +- lib/Zend/Paginator/Adapter/Iterator.php | 6 +- lib/Zend/Paginator/Adapter/Null.php | 6 +- lib/Zend/Paginator/AdapterAggregate.php | 40 + lib/Zend/Paginator/Exception.php | 6 +- lib/Zend/Paginator/ScrollingStyle/All.php | 6 +- lib/Zend/Paginator/ScrollingStyle/Elastic.php | 6 +- .../Paginator/ScrollingStyle/Interface.php | 6 +- lib/Zend/Paginator/ScrollingStyle/Jumping.php | 6 +- lib/Zend/Paginator/ScrollingStyle/Sliding.php | 6 +- lib/Zend/Pdf.php | 576 +- lib/Zend/Pdf/Action.php | 398 + lib/Zend/Pdf/Action/GoTo.php | 114 + lib/Zend/Pdf/Action/GoTo3DView.php | 39 + lib/Zend/Pdf/Action/GoToE.php | 38 + lib/Zend/Pdf/Action/GoToR.php | 38 + lib/Zend/Pdf/Action/Hide.php | 39 + lib/Zend/Pdf/Action/ImportData.php | 39 + lib/Zend/Pdf/Action/JavaScript.php | 39 + lib/Zend/Pdf/Action/Launch.php | 38 + lib/Zend/Pdf/Action/Movie.php | 38 + lib/Zend/Pdf/Action/Named.php | 39 + lib/Zend/Pdf/Action/Rendition.php | 39 + lib/Zend/Pdf/Action/ResetForm.php | 39 + lib/Zend/Pdf/Action/SetOCGState.php | 39 + lib/Zend/Pdf/Action/Sound.php | 39 + lib/Zend/Pdf/Action/SubmitForm.php | 39 + lib/Zend/Pdf/Action/Thread.php | 38 + lib/Zend/Pdf/Action/Trans.php | 39 + lib/Zend/Pdf/Action/URI.php | 37 + lib/Zend/Pdf/Action/Unknown.php | 38 + lib/Zend/Pdf/Annotation.php | 230 + lib/Zend/Pdf/Annotation/FileAttachment.php | 93 + lib/Zend/Pdf/Annotation/Link.php | 156 + lib/Zend/Pdf/Annotation/Text.php | 87 + lib/Zend/Pdf/Cmap.php | 6 +- lib/Zend/Pdf/Cmap/ByteEncoding.php | 6 +- lib/Zend/Pdf/Cmap/ByteEncoding/Static.php | 6 +- lib/Zend/Pdf/Cmap/SegmentToDelta.php | 6 +- lib/Zend/Pdf/Cmap/TrimmedTable.php | 6 +- lib/Zend/Pdf/Color.php | 13 +- lib/Zend/Pdf/Color/Cmyk.php | 39 +- lib/Zend/Pdf/Color/GrayScale.php | 26 +- lib/Zend/Pdf/Color/Html.php | 15 +- lib/Zend/Pdf/Color/Rgb.php | 15 +- lib/Zend/Pdf/Destination.php | 113 + lib/Zend/Pdf/Destination/Explicit.php | 121 + lib/Zend/Pdf/Destination/Fit.php | 69 + lib/Zend/Pdf/Destination/FitBoundingBox.php | 69 + .../FitBoundingBoxHorizontally.php | 92 + .../Destination/FitBoundingBoxVertically.php | 93 + lib/Zend/Pdf/Destination/FitHorizontally.php | 92 + lib/Zend/Pdf/Destination/FitRectangle.php | 165 + lib/Zend/Pdf/Destination/FitVertically.php | 92 + lib/Zend/Pdf/Destination/Named.php | 97 + lib/Zend/Pdf/Destination/Unknown.php | 37 + lib/Zend/Pdf/Destination/Zoom.php | 171 + lib/Zend/Pdf/Element.php | 13 +- lib/Zend/Pdf/Element/Array.php | 53 +- lib/Zend/Pdf/Element/Boolean.php | 5 +- lib/Zend/Pdf/Element/Dictionary.php | 5 +- lib/Zend/Pdf/Element/Name.php | 5 +- lib/Zend/Pdf/Element/Null.php | 5 +- lib/Zend/Pdf/Element/Numeric.php | 8 +- lib/Zend/Pdf/Element/Object.php | 36 +- lib/Zend/Pdf/Element/Object/Stream.php | 5 +- lib/Zend/Pdf/Element/Reference.php | 46 +- lib/Zend/Pdf/Element/Reference/Context.php | 7 +- lib/Zend/Pdf/Element/Reference/Table.php | 5 +- lib/Zend/Pdf/Element/Stream.php | 5 +- lib/Zend/Pdf/Element/String.php | 5 +- lib/Zend/Pdf/Element/String/Binary.php | 5 +- lib/Zend/Pdf/ElementFactory.php | 58 +- lib/Zend/Pdf/ElementFactory/Interface.php | 16 +- lib/Zend/Pdf/ElementFactory/Proxy.php | 18 +- lib/Zend/Pdf/Exception.php | 6 +- lib/Zend/Pdf/FileParser.php | 6 +- lib/Zend/Pdf/FileParser/Font.php | 6 +- lib/Zend/Pdf/FileParser/Font/OpenType.php | 6 +- .../Pdf/FileParser/Font/OpenType/TrueType.php | 6 +- lib/Zend/Pdf/FileParser/Image.php | 18 +- lib/Zend/Pdf/FileParser/Image/Png.php | 6 +- lib/Zend/Pdf/FileParserDataSource.php | 6 +- lib/Zend/Pdf/FileParserDataSource/File.php | 6 +- lib/Zend/Pdf/FileParserDataSource/String.php | 6 +- lib/Zend/Pdf/Filter/Ascii85.php | 6 +- lib/Zend/Pdf/Filter/AsciiHex.php | 6 +- lib/Zend/Pdf/Filter/Compression.php | 6 +- lib/Zend/Pdf/Filter/Compression/Flate.php | 6 +- lib/Zend/Pdf/Filter/Compression/Lzw.php | 6 +- lib/Zend/Pdf/Filter/Interface.php | 6 +- lib/Zend/Pdf/Font.php | 6 +- lib/Zend/Pdf/Image.php | 6 +- lib/Zend/Pdf/NameTree.php | 154 + lib/Zend/Pdf/Outline.php | 376 + lib/Zend/Pdf/Outline/Created.php | 317 + lib/Zend/Pdf/Outline/Loaded.php | 462 + lib/Zend/Pdf/Page.php | 68 +- lib/Zend/Pdf/Parser.php | 36 +- lib/Zend/Pdf/PhpArray.php | 128 - .../RecursivelyIteratableObjectsContainer.php | 45 + lib/Zend/Pdf/Resource.php | 6 +- lib/Zend/Pdf/Resource/Font.php | 6 +- lib/Zend/Pdf/Resource/Font/CidFont.php | 6 +- .../Pdf/Resource/Font/CidFont/TrueType.php | 6 +- lib/Zend/Pdf/Resource/Font/Extracted.php | 63 +- lib/Zend/Pdf/Resource/Font/FontDescriptor.php | 6 +- lib/Zend/Pdf/Resource/Font/Simple.php | 6 +- lib/Zend/Pdf/Resource/Font/Simple/Parsed.php | 6 +- .../Resource/Font/Simple/Parsed/TrueType.php | 6 +- .../Pdf/Resource/Font/Simple/Standard.php | 6 +- .../Resource/Font/Simple/Standard/Courier.php | 6 +- .../Font/Simple/Standard/CourierBold.php | 6 +- .../Simple/Standard/CourierBoldOblique.php | 6 +- .../Font/Simple/Standard/CourierOblique.php | 6 +- .../Font/Simple/Standard/Helvetica.php | 6 +- .../Font/Simple/Standard/HelveticaBold.php | 6 +- .../Simple/Standard/HelveticaBoldOblique.php | 6 +- .../Font/Simple/Standard/HelveticaOblique.php | 6 +- .../Resource/Font/Simple/Standard/Symbol.php | 6 +- .../Font/Simple/Standard/TimesBold.php | 6 +- .../Font/Simple/Standard/TimesBoldItalic.php | 6 +- .../Font/Simple/Standard/TimesItalic.php | 6 +- .../Font/Simple/Standard/TimesRoman.php | 6 +- .../Font/Simple/Standard/ZapfDingbats.php | 6 +- lib/Zend/Pdf/Resource/Font/Type0.php | 6 +- lib/Zend/Pdf/Resource/Image.php | 6 +- lib/Zend/Pdf/Resource/Image/Jpeg.php | 6 +- lib/Zend/Pdf/Resource/Image/Png.php | 6 +- lib/Zend/Pdf/Resource/Image/Tiff.php | 6 +- lib/Zend/Pdf/Resource/ImageFactory.php | 6 +- lib/Zend/Pdf/StringParser.php | 25 +- lib/Zend/Pdf/Style.php | 6 +- lib/Zend/Pdf/Target.php | 76 + lib/Zend/Pdf/Trailer.php | 6 +- lib/Zend/Pdf/Trailer/Generator.php | 6 +- lib/Zend/Pdf/Trailer/Keeper.php | 6 +- lib/Zend/Pdf/UpdateInfoContainer.php | 6 +- lib/Zend/ProgressBar.php | 6 +- lib/Zend/ProgressBar/Adapter.php | 6 +- lib/Zend/ProgressBar/Adapter/Console.php | 6 +- lib/Zend/ProgressBar/Adapter/Exception.php | 6 +- lib/Zend/ProgressBar/Adapter/JsPull.php | 6 +- lib/Zend/ProgressBar/Adapter/JsPush.php | 6 +- lib/Zend/ProgressBar/Exception.php | 6 +- lib/Zend/Queue.php | 569 + lib/Zend/Queue/Adapter/Activemq.php | 333 + lib/Zend/Queue/Adapter/AdapterAbstract.php | 191 + lib/Zend/Queue/Adapter/AdapterInterface.php | 174 + lib/Zend/Queue/Adapter/Array.php | 350 + lib/Zend/Queue/Adapter/Db.php | 481 + lib/Zend/Queue/Adapter/Db/Message.php | 51 + lib/Zend/Queue/Adapter/Db/Queue.php | 51 + lib/Zend/Queue/Adapter/Db/queue.sql | 75 + lib/Zend/Queue/Adapter/Memcacheq.php | 405 + lib/Zend/Queue/Adapter/Null.php | 174 + lib/Zend/Queue/Adapter/PlatformJobQueue.php | 343 + lib/Zend/Queue/Exception.php | 35 + lib/Zend/Queue/Message.php | 230 + lib/Zend/Queue/Message/Iterator.php | 285 + lib/Zend/Queue/Message/PlatformJob.php | 194 + lib/Zend/Queue/Stomp/Client.php | 173 + lib/Zend/Queue/Stomp/Client/Connection.php | 280 + .../Stomp/Client/ConnectionInterface.php | 103 + lib/Zend/Queue/Stomp/Frame.php | 363 + lib/Zend/Queue/Stomp/FrameInterface.php | 154 + lib/Zend/Reflection/Class.php | 2 +- lib/Zend/Reflection/Docblock.php | 2 +- lib/Zend/Reflection/Docblock/Tag.php | 6 +- lib/Zend/Reflection/Docblock/Tag/Param.php | 2 +- lib/Zend/Reflection/Docblock/Tag/Return.php | 2 +- lib/Zend/Reflection/Exception.php | 2 +- lib/Zend/Reflection/Extension.php | 2 +- lib/Zend/Reflection/File.php | 3 +- lib/Zend/Reflection/Function.php | 2 +- lib/Zend/Reflection/Method.php | 19 +- lib/Zend/Reflection/Parameter.php | 2 +- lib/Zend/Reflection/Property.php | 2 +- lib/Zend/Registry.php | 6 +- lib/Zend/Rest/Client.php | 5 +- lib/Zend/Rest/Client/Exception.php | 5 +- lib/Zend/Rest/Client/Result.php | 5 +- lib/Zend/Rest/Client/Result/Exception.php | 13 +- lib/Zend/Rest/Controller.php | 68 + lib/Zend/Rest/Exception.php | 5 +- lib/Zend/Rest/Route.php | 348 + lib/Zend/Rest/Server.php | 7 +- lib/Zend/Rest/Server/Exception.php | 6 +- lib/Zend/Search/Exception.php | 5 +- lib/Zend/Search/Lucene.php | 32 +- lib/Zend/Search/Lucene/Analysis/Analyzer.php | 5 +- .../Lucene/Analysis/Analyzer/Common.php | 5 +- .../Lucene/Analysis/Analyzer/Common/Text.php | 5 +- .../Analyzer/Common/Text/CaseInsensitive.php | 5 +- .../Analysis/Analyzer/Common/TextNum.php | 5 +- .../Common/TextNum/CaseInsensitive.php | 5 +- .../Lucene/Analysis/Analyzer/Common/Utf8.php | 5 +- .../Analyzer/Common/Utf8/CaseInsensitive.php | 5 +- .../Analysis/Analyzer/Common/Utf8Num.php | 5 +- .../Common/Utf8Num/CaseInsensitive.php | 5 +- lib/Zend/Search/Lucene/Analysis/Token.php | 5 +- .../Search/Lucene/Analysis/TokenFilter.php | 5 +- .../Lucene/Analysis/TokenFilter/LowerCase.php | 5 +- .../Analysis/TokenFilter/LowerCaseUtf8.php | 5 +- .../Analysis/TokenFilter/ShortWords.php | 5 +- .../Lucene/Analysis/TokenFilter/StopWords.php | 5 +- lib/Zend/Search/Lucene/Document.php | 6 +- lib/Zend/Search/Lucene/Document/Docx.php | 5 +- lib/Zend/Search/Lucene/Document/Exception.php | 5 +- lib/Zend/Search/Lucene/Document/Html.php | 5 +- lib/Zend/Search/Lucene/Document/OpenXml.php | 5 +- lib/Zend/Search/Lucene/Document/Pptx.php | 5 +- lib/Zend/Search/Lucene/Document/Xlsx.php | 5 +- lib/Zend/Search/Lucene/Exception.php | 5 +- lib/Zend/Search/Lucene/FSM.php | 5 +- lib/Zend/Search/Lucene/FSMAction.php | 5 +- lib/Zend/Search/Lucene/Field.php | 5 +- .../Search/Lucene/Index/DictionaryLoader.php | 5 +- lib/Zend/Search/Lucene/Index/DocsFilter.php | 5 +- lib/Zend/Search/Lucene/Index/FieldInfo.php | 5 +- lib/Zend/Search/Lucene/Index/SegmentInfo.php | 5 +- .../Search/Lucene/Index/SegmentMerger.php | 5 +- .../Search/Lucene/Index/SegmentWriter.php | 5 +- .../Index/SegmentWriter/DocumentWriter.php | 5 +- .../Index/SegmentWriter/StreamWriter.php | 5 +- lib/Zend/Search/Lucene/Index/Term.php | 5 +- lib/Zend/Search/Lucene/Index/TermInfo.php | 5 +- .../Lucene/Index/TermsPriorityQueue.php | 5 +- .../Lucene/Index/TermsStream/Interface.php | 5 +- lib/Zend/Search/Lucene/Index/Writer.php | 5 +- lib/Zend/Search/Lucene/Interface.php | 5 +- lib/Zend/Search/Lucene/LockManager.php | 5 +- lib/Zend/Search/Lucene/MultiSearcher.php | 5 +- lib/Zend/Search/Lucene/PriorityQueue.php | 5 +- lib/Zend/Search/Lucene/Proxy.php | 5 +- .../Search/BooleanExpressionRecognizer.php | 5 +- .../Lucene/Search/Highlighter/Default.php | 5 +- .../Lucene/Search/Highlighter/Interface.php | 5 +- lib/Zend/Search/Lucene/Search/Query.php | 5 +- .../Search/Lucene/Search/Query/Boolean.php | 5 +- lib/Zend/Search/Lucene/Search/Query/Empty.php | 5 +- lib/Zend/Search/Lucene/Search/Query/Fuzzy.php | 5 +- .../Lucene/Search/Query/Insignificant.php | 5 +- .../Search/Lucene/Search/Query/MultiTerm.php | 5 +- .../Search/Lucene/Search/Query/Phrase.php | 5 +- .../Lucene/Search/Query/Preprocessing.php | 5 +- .../Search/Query/Preprocessing/Fuzzy.php | 5 +- .../Search/Query/Preprocessing/Phrase.php | 5 +- .../Search/Query/Preprocessing/Term.php | 5 +- lib/Zend/Search/Lucene/Search/Query/Range.php | 5 +- lib/Zend/Search/Lucene/Search/Query/Term.php | 5 +- .../Search/Lucene/Search/Query/Wildcard.php | 7 +- lib/Zend/Search/Lucene/Search/QueryEntry.php | 5 +- .../Lucene/Search/QueryEntry/Phrase.php | 5 +- .../Lucene/Search/QueryEntry/Subquery.php | 5 +- .../Search/Lucene/Search/QueryEntry/Term.php | 5 +- lib/Zend/Search/Lucene/Search/QueryHit.php | 5 +- lib/Zend/Search/Lucene/Search/QueryLexer.php | 5 +- lib/Zend/Search/Lucene/Search/QueryParser.php | 5 +- .../Lucene/Search/QueryParserContext.php | 5 +- .../Lucene/Search/QueryParserException.php | 5 +- lib/Zend/Search/Lucene/Search/QueryToken.php | 5 +- lib/Zend/Search/Lucene/Search/Similarity.php | 5 +- .../Lucene/Search/Similarity/Default.php | 5 +- lib/Zend/Search/Lucene/Search/Weight.php | 5 +- .../Search/Lucene/Search/Weight/Boolean.php | 5 +- .../Search/Lucene/Search/Weight/Empty.php | 5 +- .../Search/Lucene/Search/Weight/MultiTerm.php | 5 +- .../Search/Lucene/Search/Weight/Phrase.php | 5 +- lib/Zend/Search/Lucene/Search/Weight/Term.php | 5 +- lib/Zend/Search/Lucene/Storage/Directory.php | 5 +- .../Lucene/Storage/Directory/Filesystem.php | 5 +- lib/Zend/Search/Lucene/Storage/File.php | 5 +- .../Search/Lucene/Storage/File/Filesystem.php | 5 +- .../Search/Lucene/Storage/File/Memory.php | 5 +- .../Lucene/TermStreamsPriorityQueue.php | 5 +- lib/Zend/Server/Abstract.php | 6 +- lib/Zend/Server/Cache.php | 6 +- lib/Zend/Server/Definition.php | 6 +- lib/Zend/Server/Exception.php | 4 +- lib/Zend/Server/Interface.php | 6 +- lib/Zend/Server/Method/Callback.php | 6 +- lib/Zend/Server/Method/Definition.php | 6 +- lib/Zend/Server/Method/Parameter.php | 6 +- lib/Zend/Server/Method/Prototype.php | 6 +- lib/Zend/Server/Reflection.php | 6 +- lib/Zend/Server/Reflection/Class.php | 6 +- lib/Zend/Server/Reflection/Exception.php | 12 +- lib/Zend/Server/Reflection/Function.php | 6 +- .../Server/Reflection/Function/Abstract.php | 6 +- lib/Zend/Server/Reflection/Method.php | 6 +- lib/Zend/Server/Reflection/Node.php | 6 +- lib/Zend/Server/Reflection/Parameter.php | 6 +- lib/Zend/Server/Reflection/Prototype.php | 6 +- lib/Zend/Server/Reflection/ReturnValue.php | 6 +- lib/Zend/Service/Abstract.php | 6 +- lib/Zend/Service/Akismet.php | 6 +- lib/Zend/Service/Amazon.php | 120 +- lib/Zend/Service/Amazon/Abstract.php | 6 +- lib/Zend/Service/Amazon/Accessories.php | 6 +- lib/Zend/Service/Amazon/CustomerReview.php | 6 +- lib/Zend/Service/Amazon/Ec2.php | 4 +- lib/Zend/Service/Amazon/Ec2/Abstract.php | 33 +- .../Service/Amazon/Ec2/Availabilityzones.php | 4 +- lib/Zend/Service/Amazon/Ec2/CloudWatch.php | 350 + lib/Zend/Service/Amazon/Ec2/Ebs.php | 10 +- lib/Zend/Service/Amazon/Ec2/Elasticip.php | 4 +- lib/Zend/Service/Amazon/Ec2/Exception.php | 4 +- lib/Zend/Service/Amazon/Ec2/Image.php | 6 +- lib/Zend/Service/Amazon/Ec2/Instance.php | 108 +- .../Service/Amazon/Ec2/Instance/Reserved.php | 140 + .../Service/Amazon/Ec2/Instance/Windows.php | 192 + lib/Zend/Service/Amazon/Ec2/Keypair.php | 4 +- lib/Zend/Service/Amazon/Ec2/Region.php | 4 +- lib/Zend/Service/Amazon/Ec2/Response.php | 29 +- .../Service/Amazon/Ec2/Securitygroups.php | 4 +- lib/Zend/Service/Amazon/EditorialReview.php | 6 +- lib/Zend/Service/Amazon/Exception.php | 6 +- lib/Zend/Service/Amazon/Image.php | 6 +- lib/Zend/Service/Amazon/Item.php | 6 +- lib/Zend/Service/Amazon/ListmaniaList.php | 6 +- lib/Zend/Service/Amazon/Offer.php | 6 +- lib/Zend/Service/Amazon/OfferSet.php | 6 +- lib/Zend/Service/Amazon/Query.php | 6 +- lib/Zend/Service/Amazon/ResultSet.php | 6 +- lib/Zend/Service/Amazon/S3.php | 144 +- lib/Zend/Service/Amazon/S3/Exception.php | 6 +- lib/Zend/Service/Amazon/S3/Stream.php | 6 +- lib/Zend/Service/Amazon/SimilarProduct.php | 6 +- lib/Zend/Service/Amazon/Sqs.php | 436 + lib/Zend/Service/Amazon/Sqs/Exception.php | 38 + lib/Zend/Service/Audioscrobbler.php | 6 +- lib/Zend/Service/Delicious.php | 6 +- lib/Zend/Service/Delicious/Exception.php | 6 +- lib/Zend/Service/Delicious/Post.php | 6 +- lib/Zend/Service/Delicious/PostList.php | 6 +- lib/Zend/Service/Delicious/SimplePost.php | 6 +- lib/Zend/Service/Exception.php | 6 +- lib/Zend/Service/Flickr.php | 6 +- lib/Zend/Service/Flickr/Image.php | 6 +- lib/Zend/Service/Flickr/Result.php | 6 +- lib/Zend/Service/Flickr/ResultSet.php | 6 +- lib/Zend/Service/Nirvanix.php | 5 +- lib/Zend/Service/Nirvanix/Exception.php | 13 +- lib/Zend/Service/Nirvanix/Namespace/Base.php | 7 +- lib/Zend/Service/Nirvanix/Namespace/Imfs.php | 7 +- lib/Zend/Service/Nirvanix/Response.php | 5 +- lib/Zend/Service/ReCaptcha.php | 10 +- lib/Zend/Service/ReCaptcha/Exception.php | 12 +- lib/Zend/Service/ReCaptcha/MailHide.php | 6 +- .../Service/ReCaptcha/MailHide/Exception.php | 6 +- lib/Zend/Service/ReCaptcha/Response.php | 6 +- lib/Zend/Service/Simpy.php | 6 +- lib/Zend/Service/Simpy/Link.php | 6 +- lib/Zend/Service/Simpy/LinkQuery.php | 6 +- lib/Zend/Service/Simpy/LinkSet.php | 6 +- lib/Zend/Service/Simpy/Note.php | 6 +- lib/Zend/Service/Simpy/NoteSet.php | 6 +- lib/Zend/Service/Simpy/Tag.php | 6 +- lib/Zend/Service/Simpy/TagSet.php | 6 +- lib/Zend/Service/Simpy/Watchlist.php | 6 +- lib/Zend/Service/Simpy/WatchlistFilter.php | 6 +- lib/Zend/Service/Simpy/WatchlistFilterSet.php | 6 +- lib/Zend/Service/Simpy/WatchlistSet.php | 6 +- lib/Zend/Service/SlideShare.php | 6 +- lib/Zend/Service/SlideShare/Exception.php | 12 +- lib/Zend/Service/SlideShare/SlideShow.php | 6 +- lib/Zend/Service/StrikeIron.php | 6 +- lib/Zend/Service/StrikeIron/Base.php | 6 +- lib/Zend/Service/StrikeIron/Decorator.php | 6 +- lib/Zend/Service/StrikeIron/Exception.php | 14 +- .../Service/StrikeIron/SalesUseTaxBasic.php | 6 +- .../StrikeIron/USAddressVerification.php | 6 +- lib/Zend/Service/StrikeIron/ZipCodeInfo.php | 6 +- lib/Zend/Service/Technorati.php | 6 +- lib/Zend/Service/Technorati/Author.php | 6 +- .../Service/Technorati/BlogInfoResult.php | 6 +- lib/Zend/Service/Technorati/CosmosResult.php | 6 +- .../Service/Technorati/CosmosResultSet.php | 6 +- .../Service/Technorati/DailyCountsResult.php | 6 +- .../Technorati/DailyCountsResultSet.php | 6 +- lib/Zend/Service/Technorati/Exception.php | 6 +- lib/Zend/Service/Technorati/GetInfoResult.php | 6 +- lib/Zend/Service/Technorati/KeyInfoResult.php | 6 +- lib/Zend/Service/Technorati/Result.php | 6 +- lib/Zend/Service/Technorati/ResultSet.php | 6 +- lib/Zend/Service/Technorati/SearchResult.php | 6 +- .../Service/Technorati/SearchResultSet.php | 6 +- lib/Zend/Service/Technorati/TagResult.php | 6 +- lib/Zend/Service/Technorati/TagResultSet.php | 6 +- lib/Zend/Service/Technorati/TagsResult.php | 6 +- lib/Zend/Service/Technorati/TagsResultSet.php | 6 +- lib/Zend/Service/Technorati/Utils.php | 6 +- lib/Zend/Service/Technorati/Weblog.php | 6 +- lib/Zend/Service/Twitter.php | 12 +- lib/Zend/Service/Twitter/Exception.php | 13 +- lib/Zend/Service/Twitter/Search.php | 9 +- lib/Zend/Service/Yahoo.php | 6 +- lib/Zend/Service/Yahoo/Image.php | 6 +- lib/Zend/Service/Yahoo/ImageResult.php | 6 +- lib/Zend/Service/Yahoo/ImageResultSet.php | 6 +- lib/Zend/Service/Yahoo/InlinkDataResult.php | 6 +- .../Service/Yahoo/InlinkDataResultSet.php | 6 +- lib/Zend/Service/Yahoo/LocalResult.php | 6 +- lib/Zend/Service/Yahoo/LocalResultSet.php | 6 +- lib/Zend/Service/Yahoo/NewsResult.php | 6 +- lib/Zend/Service/Yahoo/NewsResultSet.php | 6 +- lib/Zend/Service/Yahoo/PageDataResult.php | 6 +- lib/Zend/Service/Yahoo/PageDataResultSet.php | 6 +- lib/Zend/Service/Yahoo/Result.php | 6 +- lib/Zend/Service/Yahoo/ResultSet.php | 6 +- lib/Zend/Service/Yahoo/VideoResult.php | 6 +- lib/Zend/Service/Yahoo/VideoResultSet.php | 6 +- lib/Zend/Service/Yahoo/WebResult.php | 6 +- lib/Zend/Service/Yahoo/WebResultSet.php | 6 +- lib/Zend/Session.php | 76 +- lib/Zend/Session/Abstract.php | 6 +- lib/Zend/Session/Exception.php | 6 +- lib/Zend/Session/Namespace.php | 25 +- lib/Zend/Session/SaveHandler/DbTable.php | 10 +- lib/Zend/Session/SaveHandler/Exception.php | 6 +- lib/Zend/Session/SaveHandler/Interface.php | 6 +- lib/Zend/Session/Validator/Abstract.php | 6 +- lib/Zend/Session/Validator/HttpUserAgent.php | 6 +- lib/Zend/Session/Validator/Interface.php | 6 +- lib/Zend/Soap/AutoDiscover.php | 189 +- lib/Zend/Soap/AutoDiscover/Exception.php | 5 +- lib/Zend/Soap/Client.php | 53 +- lib/Zend/Soap/Client/Common.php | 3 +- lib/Zend/Soap/Client/DotNet.php | 3 +- lib/Zend/Soap/Client/Exception.php | 6 +- lib/Zend/Soap/Client/Local.php | 3 +- lib/Zend/Soap/Server.php | 6 +- lib/Zend/Soap/Server/Exception.php | 6 +- lib/Zend/Soap/Wsdl.php | 75 +- lib/Zend/Soap/Wsdl/Exception.php | 4 +- lib/Zend/Soap/Wsdl/Strategy/Abstract.php | 8 +- lib/Zend/Soap/Wsdl/Strategy/AnyType.php | 6 +- .../Soap/Wsdl/Strategy/ArrayOfTypeComplex.php | 4 +- .../Wsdl/Strategy/ArrayOfTypeSequence.php | 31 +- lib/Zend/Soap/Wsdl/Strategy/Composite.php | 6 +- .../Soap/Wsdl/Strategy/DefaultComplexType.php | 6 +- lib/Zend/Soap/Wsdl/Strategy/Interface.php | 4 +- lib/Zend/Tag/Cloud.php | 6 +- lib/Zend/Tag/Cloud/Decorator/Cloud.php | 6 +- lib/Zend/Tag/Cloud/Decorator/Exception.php | 6 +- lib/Zend/Tag/Cloud/Decorator/HtmlCloud.php | 8 +- lib/Zend/Tag/Cloud/Decorator/HtmlTag.php | 6 +- lib/Zend/Tag/Cloud/Decorator/Tag.php | 6 +- lib/Zend/Tag/Cloud/Exception.php | 6 +- lib/Zend/Tag/Exception.php | 6 +- lib/Zend/Tag/Item.php | 6 +- lib/Zend/Tag/ItemList.php | 6 +- lib/Zend/Tag/Taggable.php | 6 +- lib/Zend/Test/DbAdapter.php | 316 + lib/Zend/Test/DbStatement.php | 381 + lib/Zend/Test/PHPUnit/Constraint/DomQuery.php | 72 +- .../Test/PHPUnit/Constraint/Exception.php | 28 +- lib/Zend/Test/PHPUnit/Constraint/Redirect.php | 52 +- .../PHPUnit/Constraint/ResponseHeader.php | 108 +- lib/Zend/Test/PHPUnit/ControllerTestCase.php | 249 +- lib/Zend/Test/PHPUnit/DatabaseTestCase.php | 151 + lib/Zend/Test/PHPUnit/Db/Connection.php | 149 + lib/Zend/Test/PHPUnit/Db/DataSet/DbRowset.php | 75 + lib/Zend/Test/PHPUnit/Db/DataSet/DbTable.php | 123 + .../PHPUnit/Db/DataSet/DbTableDataSet.php | 103 + .../Test/PHPUnit/Db/DataSet/QueryDataSet.php | 86 + .../Test/PHPUnit/Db/DataSet/QueryTable.php | 86 + lib/Zend/Test/PHPUnit/Db/Exception.php | 41 + lib/Zend/Test/PHPUnit/Db/Metadata/Generic.php | 164 + .../Test/PHPUnit/Db/Operation/DeleteAll.php | 69 + lib/Zend/Test/PHPUnit/Db/Operation/Insert.php | 92 + .../Test/PHPUnit/Db/Operation/Truncate.php | 98 + lib/Zend/Test/PHPUnit/Db/SimpleTester.php | 95 + lib/Zend/Text/Exception.php | 6 +- lib/Zend/Text/Figlet.php | 6 +- lib/Zend/Text/Figlet/Exception.php | 6 +- lib/Zend/Text/Figlet/zend-framework.flf | 2 +- lib/Zend/Text/MultiByte.php | 6 +- lib/Zend/Text/Table.php | 6 +- lib/Zend/Text/Table/Column.php | 6 +- lib/Zend/Text/Table/Decorator/Ascii.php | 6 +- lib/Zend/Text/Table/Decorator/Interface.php | 6 +- lib/Zend/Text/Table/Decorator/Unicode.php | 6 +- lib/Zend/Text/Table/Exception.php | 6 +- lib/Zend/Text/Table/Row.php | 6 +- lib/Zend/TimeSync.php | 6 +- lib/Zend/TimeSync/Exception.php | 6 +- lib/Zend/TimeSync/Ntp.php | 6 +- lib/Zend/TimeSync/Protocol.php | 6 +- lib/Zend/TimeSync/Sntp.php | 6 +- lib/Zend/Tool/Framework/Action/Base.php | 2 +- lib/Zend/Tool/Framework/Action/Exception.php | 2 +- lib/Zend/Tool/Framework/Action/Interface.php | 2 +- lib/Zend/Tool/Framework/Action/Repository.php | 2 +- lib/Zend/Tool/Framework/Client/Abstract.php | 19 +- lib/Zend/Tool/Framework/Client/Config.php | 105 + lib/Zend/Tool/Framework/Client/Console.php | 43 +- .../Client/Console/ArgumentParser.php | 2 +- .../Framework/Client/Console/HelpSystem.php | 2 +- .../Framework/Client/Console/Manifest.php | 2 +- .../Console/ResponseDecorator/Colorizer.php | 49 +- lib/Zend/Tool/Framework/Client/Exception.php | 2 +- .../Client/Interactive/InputHandler.php | 27 +- .../Client/Interactive/InputInterface.php | 27 +- .../Client/Interactive/InputRequest.php | 27 +- .../Client/Interactive/InputResponse.php | 25 + .../Client/Interactive/OutputInterface.php | 27 +- lib/Zend/Tool/Framework/Client/Request.php | 2 +- lib/Zend/Tool/Framework/Client/Response.php | 2 +- .../Response/ContentDecorator/Interface.php | 25 + .../Response/ContentDecorator/Separator.php | 2 +- lib/Zend/Tool/Framework/Client/Storage.php | 117 + .../Client/Storage/AdapterInterface.php | 42 + .../Framework/Client/Storage/Directory.php | 73 + lib/Zend/Tool/Framework/Exception.php | 2 +- lib/Zend/Tool/Framework/Loader/Abstract.php | 2 +- .../Framework/Loader/IncludePathLoader.php | 2 +- .../RecursiveFilterIterator.php | 2 +- .../Framework/Manifest/ActionManifestable.php | 2 +- .../Tool/Framework/Manifest/Exception.php | 2 +- .../Tool/Framework/Manifest/Indexable.php | 2 +- .../Tool/Framework/Manifest/Interface.php | 25 + .../Manifest/MetadataManifestable.php | 2 +- .../Manifest/ProviderManifestable.php | 2 +- .../Tool/Framework/Manifest/Repository.php | 2 +- lib/Zend/Tool/Framework/Metadata/Basic.php | 2 +- lib/Zend/Tool/Framework/Metadata/Dynamic.php | 53 +- .../Tool/Framework/Metadata/Interface.php | 2 +- lib/Zend/Tool/Framework/Metadata/Tool.php | 2 +- lib/Zend/Tool/Framework/Provider/Abstract.php | 2 +- .../Provider/DocblockManifestable.php | 25 + .../Tool/Framework/Provider/Exception.php | 2 +- .../Tool/Framework/Provider/Interactable.php | 25 + .../Tool/Framework/Provider/Interface.php | 2 +- .../Tool/Framework/Provider/Pretendable.php | 2 +- .../Tool/Framework/Provider/Repository.php | 5 +- .../Tool/Framework/Provider/Signature.php | 2 +- lib/Zend/Tool/Framework/Registry.php | 66 +- .../Framework/Registry/EnabledInterface.php | 2 +- .../Tool/Framework/Registry/Exception.php | 25 + .../Tool/Framework/Registry/Interface.php | 25 + .../Tool/Framework/System/Action/Create.php | 2 +- .../Tool/Framework/System/Action/Delete.php | 2 +- lib/Zend/Tool/Framework/System/Manifest.php | 2 +- .../Framework/System/Provider/Manifest.php | 2 +- .../Framework/System/Provider/Phpinfo.php | 27 +- .../Framework/System/Provider/Version.php | 23 + .../Tool/Project/Context/Content/Engine.php | 106 + .../Context/Content/Engine/CodeGenerator.php | 98 + .../Project/Context/Content/Engine/Phtml.php | 89 + lib/Zend/Tool/Project/Context/Exception.php | 27 +- .../Project/Context/Filesystem/Abstract.php | 2 +- .../Project/Context/Filesystem/Directory.php | 4 +- .../Tool/Project/Context/Filesystem/File.php | 2 +- lib/Zend/Tool/Project/Context/Interface.php | 23 + lib/Zend/Tool/Project/Context/Repository.php | 25 + .../Tool/Project/Context/System/Interface.php | 2 +- .../Context/System/NotOverwritable.php | 2 +- .../Context/System/ProjectDirectory.php | 2 +- .../Context/System/ProjectProfileFile.php | 2 +- .../System/ProjectProvidersDirectory.php | 2 +- .../Context/System/TopLevelRestrictable.php | 2 +- .../Tool/Project/Context/Zf/ActionMethod.php | 2 +- .../Tool/Project/Context/Zf/ApisDirectory.php | 2 +- .../Context/Zf/ApplicationConfigFile.php | 2 +- .../Context/Zf/ApplicationDirectory.php | 2 +- .../Tool/Project/Context/Zf/BootstrapFile.php | 2 +- .../Project/Context/Zf/CacheDirectory.php | 2 +- .../Tool/Project/Context/Zf/ConfigFile.php | 2 +- .../Project/Context/Zf/ConfigsDirectory.php | 2 +- .../Project/Context/Zf/ControllerFile.php | 19 +- .../Context/Zf/ControllersDirectory.php | 2 +- .../Tool/Project/Context/Zf/DataDirectory.php | 2 +- .../Project/Context/Zf/DbTableDirectory.php | 2 +- .../Tool/Project/Context/Zf/DbTableFile.php | 2 +- lib/Zend/Tool/Project/Context/Zf/FormFile.php | 2 +- .../Project/Context/Zf/FormsDirectory.php | 2 +- .../Tool/Project/Context/Zf/HtaccessFile.php | 4 +- .../Project/Context/Zf/LayoutsDirectory.php | 2 +- .../Project/Context/Zf/LibraryDirectory.php | 2 +- .../Project/Context/Zf/LocalesDirectory.php | 2 +- .../Tool/Project/Context/Zf/LogsDirectory.php | 2 +- .../Tool/Project/Context/Zf/ModelFile.php | 2 +- .../Project/Context/Zf/ModelsDirectory.php | 2 +- .../Project/Context/Zf/ModuleDirectory.php | 2 +- .../Project/Context/Zf/ModulesDirectory.php | 2 +- .../Context/Zf/ProjectProviderFile.php | 2 +- .../Project/Context/Zf/PublicDirectory.php | 2 +- .../Context/Zf/PublicImagesDirectory.php | 2 +- .../Project/Context/Zf/PublicIndexFile.php | 2 +- .../Context/Zf/PublicScriptsDirectory.php | 2 +- .../Context/Zf/PublicStylesheetsDirectory.php | 2 +- .../Context/Zf/SearchIndexesDirectory.php | 2 +- .../Project/Context/Zf/SessionsDirectory.php | 2 +- .../Project/Context/Zf/TemporaryDirectory.php | 2 +- .../Zf/TestApplicationBootstrapFile.php | 2 +- .../Zf/TestApplicationControllerDirectory.php | 2 +- .../Zf/TestApplicationControllerFile.php | 2 +- .../Context/Zf/TestApplicationDirectory.php | 2 +- .../Context/Zf/TestLibraryBootstrapFile.php | 2 +- .../Context/Zf/TestLibraryDirectory.php | 2 +- .../Project/Context/Zf/TestLibraryFile.php | 2 +- .../Zf/TestLibraryNamespaceDirectory.php | 2 +- .../Context/Zf/TestPHPUnitConfigFile.php | 2 +- .../Project/Context/Zf/TestsDirectory.php | 2 +- .../Project/Context/Zf/UploadsDirectory.php | 2 +- .../Zf/ViewControllerScriptsDirectory.php | 2 +- .../Context/Zf/ViewFiltersDirectory.php | 2 +- .../Context/Zf/ViewHelpersDirectory.php | 2 +- .../Project/Context/Zf/ViewScriptFile.php | 37 +- .../Context/Zf/ViewScriptsDirectory.php | 2 +- .../Project/Context/Zf/ViewsDirectory.php | 2 +- .../Context/Zf/ZfStandardLibraryDirectory.php | 2 +- lib/Zend/Tool/Project/Exception.php | 2 +- lib/Zend/Tool/Project/Profile.php | 4 +- lib/Zend/Tool/Project/Profile/Exception.php | 2 +- .../Project/Profile/FileParser/Interface.php | 2 +- .../Tool/Project/Profile/FileParser/Xml.php | 2 +- .../Profile/Iterator/ContextFilter.php | 2 +- .../Iterator/EnabledResourceFilter.php | 2 +- lib/Zend/Tool/Project/Profile/Resource.php | 2 +- .../Project/Profile/Resource/Container.php | 2 +- .../Profile/Resource/SearchConstraints.php | 2 +- lib/Zend/Tool/Project/Provider/Abstract.php | 61 +- lib/Zend/Tool/Project/Provider/Action.php | 2 +- lib/Zend/Tool/Project/Provider/Controller.php | 2 +- lib/Zend/Tool/Project/Provider/Exception.php | 2 +- lib/Zend/Tool/Project/Provider/Form.php | 2 +- lib/Zend/Tool/Project/Provider/Manifest.php | 2 +- lib/Zend/Tool/Project/Provider/Model.php | 2 +- lib/Zend/Tool/Project/Provider/Module.php | 2 +- lib/Zend/Tool/Project/Provider/Profile.php | 2 +- lib/Zend/Tool/Project/Provider/Project.php | 38 +- .../Tool/Project/Provider/ProjectProvider.php | 196 +- lib/Zend/Tool/Project/Provider/Test.php | 2 +- lib/Zend/Tool/Project/Provider/View.php | 2 +- lib/Zend/Translate.php | 6 +- lib/Zend/Translate/Adapter.php | 107 +- lib/Zend/Translate/Adapter/Array.php | 6 +- lib/Zend/Translate/Adapter/Csv.php | 15 +- lib/Zend/Translate/Adapter/Gettext.php | 21 +- lib/Zend/Translate/Adapter/Ini.php | 8 +- lib/Zend/Translate/Adapter/Qt.php | 6 +- lib/Zend/Translate/Adapter/Tbx.php | 6 +- lib/Zend/Translate/Adapter/Tmx.php | 6 +- lib/Zend/Translate/Adapter/Xliff.php | 6 +- lib/Zend/Translate/Adapter/XmlTm.php | 6 +- lib/Zend/Translate/Exception.php | 6 +- lib/Zend/Translate/Plural.php | 177 + lib/Zend/Uri.php | 6 +- lib/Zend/Uri/Exception.php | 6 +- lib/Zend/Uri/Http.php | 6 +- lib/Zend/Validate.php | 86 +- lib/Zend/Validate/Abstract.php | 39 +- lib/Zend/Validate/Alnum.php | 28 +- lib/Zend/Validate/Alpha.php | 31 +- lib/Zend/Validate/Barcode.php | 6 +- lib/Zend/Validate/Barcode/Ean13.php | 18 +- lib/Zend/Validate/Barcode/UpcA.php | 19 +- lib/Zend/Validate/Between.php | 6 +- lib/Zend/Validate/Ccnum.php | 6 +- lib/Zend/Validate/Date.php | 51 +- lib/Zend/Validate/Db/Abstract.php | 34 +- lib/Zend/Validate/Db/NoRecordExists.php | 2 +- lib/Zend/Validate/Db/RecordExists.php | 6 +- lib/Zend/Validate/Digits.php | 33 +- lib/Zend/Validate/EmailAddress.php | 24 +- lib/Zend/Validate/Exception.php | 6 +- lib/Zend/Validate/File/Count.php | 6 +- lib/Zend/Validate/File/Crc32.php | 6 +- lib/Zend/Validate/File/ExcludeExtension.php | 6 +- lib/Zend/Validate/File/ExcludeMimeType.php | 6 +- lib/Zend/Validate/File/Exists.php | 6 +- lib/Zend/Validate/File/Extension.php | 6 +- lib/Zend/Validate/File/FilesSize.php | 6 +- lib/Zend/Validate/File/Hash.php | 6 +- lib/Zend/Validate/File/ImageSize.php | 6 +- lib/Zend/Validate/File/IsCompressed.php | 6 +- lib/Zend/Validate/File/IsImage.php | 6 +- lib/Zend/Validate/File/Md5.php | 6 +- lib/Zend/Validate/File/MimeType.php | 30 +- lib/Zend/Validate/File/NotExists.php | 6 +- lib/Zend/Validate/File/Sha1.php | 6 +- lib/Zend/Validate/File/Size.php | 6 +- lib/Zend/Validate/File/Upload.php | 6 +- lib/Zend/Validate/File/WordCount.php | 6 +- lib/Zend/Validate/Float.php | 44 +- lib/Zend/Validate/GreaterThan.php | 8 +- lib/Zend/Validate/Hex.php | 23 +- lib/Zend/Validate/Hostname.php | 43 +- lib/Zend/Validate/Hostname/Biz.php | 6 +- lib/Zend/Validate/Hostname/Cn.php | 6 +- lib/Zend/Validate/Hostname/Com.php | 11 +- lib/Zend/Validate/Hostname/Jp.php | 6 +- lib/Zend/Validate/Iban.php | 6 +- lib/Zend/Validate/Identical.php | 42 +- lib/Zend/Validate/InArray.php | 8 +- lib/Zend/Validate/Int.php | 46 +- lib/Zend/Validate/Interface.php | 6 +- lib/Zend/Validate/Ip.php | 23 +- lib/Zend/Validate/LessThan.php | 8 +- lib/Zend/Validate/NotEmpty.php | 21 +- lib/Zend/Validate/Regex.php | 25 +- lib/Zend/Validate/Sitemap/Changefreq.php | 9 +- lib/Zend/Validate/Sitemap/Lastmod.php | 7 +- lib/Zend/Validate/Sitemap/Loc.php | 7 +- lib/Zend/Validate/Sitemap/Priority.php | 7 +- lib/Zend/Validate/StringLength.php | 20 +- lib/Zend/Version.php | 8 +- lib/Zend/View.php | 5 +- lib/Zend/View/Abstract.php | 5 +- lib/Zend/View/Exception.php | 6 +- lib/Zend/View/Helper/Abstract.php | 6 +- lib/Zend/View/Helper/Action.php | 6 +- lib/Zend/View/Helper/BaseUrl.php | 116 + lib/Zend/View/Helper/Cycle.php | 451 +- lib/Zend/View/Helper/DeclareVars.php | 6 +- lib/Zend/View/Helper/Doctype.php | 7 +- lib/Zend/View/Helper/Fieldset.php | 6 +- lib/Zend/View/Helper/Form.php | 6 +- lib/Zend/View/Helper/FormButton.php | 5 +- lib/Zend/View/Helper/FormCheckbox.php | 37 +- lib/Zend/View/Helper/FormElement.php | 5 +- lib/Zend/View/Helper/FormErrors.php | 5 +- lib/Zend/View/Helper/FormFile.php | 5 +- lib/Zend/View/Helper/FormHidden.php | 5 +- lib/Zend/View/Helper/FormImage.php | 5 +- lib/Zend/View/Helper/FormLabel.php | 5 +- lib/Zend/View/Helper/FormMultiCheckbox.php | 5 +- lib/Zend/View/Helper/FormNote.php | 5 +- lib/Zend/View/Helper/FormPassword.php | 5 +- lib/Zend/View/Helper/FormRadio.php | 5 +- lib/Zend/View/Helper/FormReset.php | 5 +- lib/Zend/View/Helper/FormSelect.php | 5 +- lib/Zend/View/Helper/FormSubmit.php | 5 +- lib/Zend/View/Helper/FormText.php | 5 +- lib/Zend/View/Helper/FormTextarea.php | 5 +- lib/Zend/View/Helper/HeadLink.php | 7 +- lib/Zend/View/Helper/HeadMeta.php | 9 +- lib/Zend/View/Helper/HeadScript.php | 7 +- lib/Zend/View/Helper/HeadStyle.php | 7 +- lib/Zend/View/Helper/HeadTitle.php | 7 +- lib/Zend/View/Helper/HtmlElement.php | 6 +- lib/Zend/View/Helper/HtmlFlash.php | 6 +- lib/Zend/View/Helper/HtmlList.php | 5 +- lib/Zend/View/Helper/HtmlObject.php | 6 +- lib/Zend/View/Helper/HtmlPage.php | 6 +- lib/Zend/View/Helper/HtmlQuicktime.php | 6 +- lib/Zend/View/Helper/InlineScript.php | 7 +- lib/Zend/View/Helper/Interface.php | 6 +- lib/Zend/View/Helper/Json.php | 6 +- lib/Zend/View/Helper/Layout.php | 6 +- lib/Zend/View/Helper/Navigation.php | 7 +- .../View/Helper/Navigation/Breadcrumbs.php | 7 +- lib/Zend/View/Helper/Navigation/Helper.php | 7 +- .../View/Helper/Navigation/HelperAbstract.php | 7 +- lib/Zend/View/Helper/Navigation/Links.php | 7 +- lib/Zend/View/Helper/Navigation/Menu.php | 34 +- lib/Zend/View/Helper/Navigation/Sitemap.php | 7 +- lib/Zend/View/Helper/PaginationControl.php | 6 +- lib/Zend/View/Helper/Partial.php | 6 +- lib/Zend/View/Helper/Partial/Exception.php | 6 +- lib/Zend/View/Helper/PartialLoop.php | 6 +- lib/Zend/View/Helper/Placeholder.php | 7 +- .../View/Helper/Placeholder/Container.php | 7 +- .../Helper/Placeholder/Container/Abstract.php | 7 +- .../Placeholder/Container/Exception.php | 6 +- .../Placeholder/Container/Standalone.php | 7 +- lib/Zend/View/Helper/Placeholder/Registry.php | 7 +- .../Helper/Placeholder/Registry/Exception.php | 6 +- lib/Zend/View/Helper/RenderToPlaceholder.php | 6 +- lib/Zend/View/Helper/ServerUrl.php | 7 +- lib/Zend/View/Helper/Translate.php | 6 +- lib/Zend/View/Helper/Url.php | 6 +- lib/Zend/View/Interface.php | 5 +- lib/Zend/View/Stream.php | 5 +- lib/Zend/Wildfire/Channel/HttpHeaders.php | 19 +- lib/Zend/Wildfire/Channel/Interface.php | 5 +- lib/Zend/Wildfire/Exception.php | 6 +- lib/Zend/Wildfire/Plugin/FirePhp.php | 5 +- lib/Zend/Wildfire/Plugin/FirePhp/Message.php | 5 +- .../Wildfire/Plugin/FirePhp/TableMessage.php | 5 +- lib/Zend/Wildfire/Plugin/Interface.php | 5 +- lib/Zend/Wildfire/Protocol/JsonStream.php | 5 +- lib/Zend/XmlRpc/Client.php | 59 +- lib/Zend/XmlRpc/Client/Exception.php | 5 +- lib/Zend/XmlRpc/Client/FaultException.php | 5 +- lib/Zend/XmlRpc/Client/HttpException.php | 5 +- .../XmlRpc/Client/IntrospectException.php | 5 +- .../XmlRpc/Client/ServerIntrospection.php | 5 +- lib/Zend/XmlRpc/Client/ServerProxy.php | 5 +- lib/Zend/XmlRpc/Exception.php | 5 +- lib/Zend/XmlRpc/Fault.php | 5 +- lib/Zend/XmlRpc/Request.php | 8 +- lib/Zend/XmlRpc/Request/Http.php | 6 +- lib/Zend/XmlRpc/Request/Stdin.php | 6 +- lib/Zend/XmlRpc/Response.php | 6 +- lib/Zend/XmlRpc/Response/Http.php | 6 +- lib/Zend/XmlRpc/Server.php | 62 +- lib/Zend/XmlRpc/Server/Cache.php | 6 +- lib/Zend/XmlRpc/Server/Exception.php | 6 +- lib/Zend/XmlRpc/Server/Fault.php | 6 +- lib/Zend/XmlRpc/Server/System.php | 20 +- lib/Zend/XmlRpc/Value.php | 101 +- lib/Zend/XmlRpc/Value/Array.php | 6 +- lib/Zend/XmlRpc/Value/Base64.php | 6 +- lib/Zend/XmlRpc/Value/Boolean.php | 6 +- lib/Zend/XmlRpc/Value/Collection.php | 12 +- lib/Zend/XmlRpc/Value/DateTime.php | 24 +- lib/Zend/XmlRpc/Value/Double.php | 6 +- lib/Zend/XmlRpc/Value/Exception.php | 6 +- lib/Zend/XmlRpc/Value/Integer.php | 11 +- lib/Zend/XmlRpc/Value/Nil.php | 25 +- lib/Zend/XmlRpc/Value/Scalar.php | 6 +- lib/Zend/XmlRpc/Value/String.php | 22 +- lib/Zend/XmlRpc/Value/Struct.php | 8 +- skin/adminhtml/default/default/boxes.css | 22 +- .../default/images/bg_notifications.gif | Bin 0 -> 1962 bytes .../default/images/bg_severity-critical.gif | Bin 331 -> 0 bytes .../default/images/bg_severity-major.gif | Bin 331 -> 0 bytes .../default/images/bg_severity-minor.gif | Bin 331 -> 0 bytes .../default/images/bg_severity-notice.gif | Bin 331 -> 0 bytes .../widget/catalog__category_widget_link.gif | Bin 0 -> 1390 bytes .../widget/catalog__product_widget_link.gif | Bin 0 -> 1417 bytes .../widget/catalog__product_widget_new.gif | Bin 0 -> 1445 bytes .../images/widget/cms__widget_page_link.gif | Bin 0 -> 1337 bytes .../default/default/images/widget/default.gif | Bin 0 -> 1406 bytes .../reports__product_widget_compared.gif | Bin 0 -> 1572 bytes .../widget/reports__product_widget_viewed.gif | Bin 0 -> 1528 bytes .../default/images/widget_placeholder.gif | Bin 0 -> 965 bytes skin/frontend/default/blank/css/styles-ie.css | 6 +- skin/frontend/default/blank/css/styles.css | 6 +- .../default/blank/images/bkg_button.gif | Bin 1381 -> 1610 bytes skin/frontend/default/blank/js/opcheckout.js | 4 +- skin/frontend/default/blue/js/opcheckout.js | 4 +- .../frontend/default/default/js/opcheckout.js | 4 +- skin/frontend/default/default/js/paypal.js | 2 +- skin/frontend/default/iphone/js/opcheckout.js | 2 +- skin/frontend/default/modern/css/boxes.css | 10 + skin/frontend/default/modern/js/opcheckout.js | 2 +- 3676 files changed, 226236 insertions(+), 44779 deletions(-) create mode 100644 app/code/core/Mage/AdminNotification/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Adminhtml/Block/Catalog/Category/Widget/Chooser.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Catalog/Product/Widget/Chooser.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Block/Widget/Chooser.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Page/Widget/Chooser.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Widget.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Widget/Chooser.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Widget/Form.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Widget/Options.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Files.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Newfolder.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Uploader.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Tree.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Notification/Baseurl.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Promo/Widget/Chooser/Daterange.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Tag/Assigned/Grid.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Tag/Edit/Accordion.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Tag/Edit/Assigned.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Tag/Store/Switcher.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Filter/Theme.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Theme.php create mode 100644 app/code/core/Mage/Adminhtml/Block/Widget/Grid/Serializer.php create mode 100644 app/code/core/Mage/Adminhtml/Model/System/Config/Source/Cms/Wysiwyg/Enabled.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Catalog/Category/WidgetController.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Catalog/Product/WidgetController.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Cms/Block/WidgetController.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Cms/Page/WidgetController.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Cms/WidgetController.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Cms/Wysiwyg/ImagesController.php create mode 100644 app/code/core/Mage/Adminhtml/controllers/Cms/WysiwygController.php create mode 100644 app/code/core/Mage/Adminhtml/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Api/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Backup/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Bundle/Model/Mysql4/Indexer/Price.php create mode 100644 app/code/core/Mage/Bundle/Model/Mysql4/Indexer/Stock.php create mode 100644 app/code/core/Mage/Bundle/sql/bundle_setup/mysql4-upgrade-0.1.8-0.1.9.php create mode 100644 app/code/core/Mage/Bundle/sql/bundle_setup/mysql4-upgrade-0.1.9-0.1.10.php create mode 100644 app/code/core/Mage/Catalog/Block/Category/Widget/Link.php create mode 100644 app/code/core/Mage/Catalog/Block/Product/Widget/Link.php create mode 100644 app/code/core/Mage/Catalog/Block/Product/Widget/New.php create mode 100644 app/code/core/Mage/Catalog/Block/Widget/Link.php create mode 100644 app/code/core/Mage/Catalog/Model/Category/Indexer/Flat.php create mode 100644 app/code/core/Mage/Catalog/Model/Category/Indexer/Product.php create mode 100644 app/code/core/Mage/Catalog/Model/Indexer/Url.php create mode 100644 app/code/core/Mage/Catalog/Model/Product/Action.php create mode 100644 app/code/core/Mage/Catalog/Model/Product/Indexer/Eav.php create mode 100644 app/code/core/Mage/Catalog/Model/Product/Indexer/Flat.php create mode 100644 app/code/core/Mage/Catalog/Model/Product/Indexer/Price.php create mode 100644 app/code/core/Mage/Catalog/Model/Product/Indexer/Status.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Attribute.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Attribute/Collection.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Indexer/Product.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Layer/Filter/Attribute.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Layer/Filter/Price.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Action.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Attribute/Collection.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Abstract.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Configurable.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Default.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Grouped.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Interface.php create mode 100644 app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Relation.php create mode 100644 app/code/core/Mage/Catalog/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Catalog/etc/widget.xml create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-1.4.0.0.0.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.72-0.7.73.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-0.7.73-1.4.0.0.0.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.0-1.4.0.0.1.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.1-1.4.0.0.2.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.2-1.4.0.0.3.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.3-1.4.0.0.4.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.4-1.4.0.0.5.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.5-1.4.0.0.6.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.6-1.4.0.0.7.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.7-1.4.0.0.8.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.8-1.4.0.0.9.php create mode 100644 app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-upgrade-1.4.0.0.9-1.4.0.0.10.php create mode 100644 app/code/core/Mage/CatalogInventory/Model/Indexer/Stock.php create mode 100644 app/code/core/Mage/CatalogInventory/Model/Mysql4/Indexer/Stock.php create mode 100644 app/code/core/Mage/CatalogInventory/Model/Mysql4/Indexer/Stock/Configurable.php create mode 100644 app/code/core/Mage/CatalogInventory/Model/Mysql4/Indexer/Stock/Default.php create mode 100644 app/code/core/Mage/CatalogInventory/Model/Mysql4/Indexer/Stock/Grouped.php create mode 100644 app/code/core/Mage/CatalogInventory/Model/Mysql4/Indexer/Stock/Interface.php create mode 100644 app/code/core/Mage/CatalogInventory/etc/adminhtml.xml create mode 100644 app/code/core/Mage/CatalogRule/etc/adminhtml.xml create mode 100644 app/code/core/Mage/CatalogSearch/Model/Indexer/Fulltext.php create mode 100644 app/code/core/Mage/CatalogSearch/Model/System/Config/Backend/Sitemap.php create mode 100644 app/code/core/Mage/CatalogSearch/etc/adminhtml.xml create mode 100644 app/code/core/Mage/CatalogSearch/sql/catalogsearch_setup/mysql4-upgrade-0.7.6-0.7.7.php create mode 100644 app/code/core/Mage/Checkout/Model/Mysql4/Setup.php create mode 100644 app/code/core/Mage/Checkout/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Checkout/sql/checkout_setup/mysql4-upgrade-0.9.3-0.9.4.php create mode 100644 app/code/core/Mage/Cms/Block/Widget/Block.php create mode 100644 app/code/core/Mage/Cms/Block/Widget/Interface.php create mode 100644 app/code/core/Mage/Cms/Block/Widget/Page/Link.php create mode 100644 app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php create mode 100644 app/code/core/Mage/Cms/Model/Config.php create mode 100644 app/code/core/Mage/Cms/Model/Mysql4/Widget.php create mode 100644 app/code/core/Mage/Cms/Model/Template/Filter.php create mode 100644 app/code/core/Mage/Cms/Model/Widget.php create mode 100644 app/code/core/Mage/Cms/Model/Wysiwyg/Config.php create mode 100644 app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php create mode 100644 app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage/Collection.php create mode 100644 app/code/core/Mage/Cms/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Cms/etc/widget.xml create mode 100644 app/code/core/Mage/Cms/sql/cms_setup/mysql4-upgrade-0.7.10-0.7.11.php create mode 100644 app/code/core/Mage/Cms/sql/cms_setup/mysql4-upgrade-0.7.8-0.7.9.php create mode 100644 app/code/core/Mage/Cms/sql/cms_setup/mysql4-upgrade-0.7.9-0.7.10.php create mode 100644 app/code/core/Mage/Compiler/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Contacts/Model/System/Config/Backend/Links.php create mode 100644 app/code/core/Mage/Contacts/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Core/Block/Html/Link.php delete mode 100644 app/code/core/Mage/Core/Model/Locale/Currency.php create mode 100644 app/code/core/Mage/Customer/Block/Widget/Gender.php create mode 100644 app/code/core/Mage/Customer/Model/Attribute.php create mode 100644 app/code/core/Mage/Customer/Model/Entity/Address/Attribute/Collection.php create mode 100644 app/code/core/Mage/Customer/Model/Entity/Attribute.php create mode 100644 app/code/core/Mage/Customer/Model/Entity/Attribute/Collection.php create mode 100644 app/code/core/Mage/Customer/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Customer/sql/customer_setup/mysql4-install-1.4.0.0.0.php create mode 100644 app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-0.8.11-0.8.12.php create mode 100644 app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-0.8.12-1.4.0.0.0.php create mode 100644 app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-1.4.0.0.0-1.4.0.0.1.php create mode 100644 app/code/core/Mage/Customer/sql/customer_setup/mysql4-upgrade-1.4.0.0.1-1.4.0.0.2.php create mode 100644 app/code/core/Mage/Downloadable/Model/Mysql4/Indexer/Price.php create mode 100644 app/code/core/Mage/Downloadable/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Downloadable/sql/downloadable_setup/mysql4-upgrade-0.1.15-0.1.16.php create mode 100644 app/code/core/Mage/Eav/Block/Adminhtml/Attribute/Edit/Js.php create mode 100644 app/code/core/Mage/Eav/Block/Adminhtml/Attribute/Edit/Main/Abstract.php create mode 100644 app/code/core/Mage/Eav/Block/Adminhtml/Attribute/Edit/Options/Abstract.php create mode 100644 app/code/core/Mage/Eav/Block/Adminhtml/Attribute/Grid/Abstract.php create mode 100644 app/code/core/Mage/Eav/Model/Adminhtml/System/Config/Source/Inputtype.php create mode 100644 app/code/core/Mage/Eav/Model/Form/Element.php create mode 100644 app/code/core/Mage/Eav/Model/Form/Fieldset.php create mode 100644 app/code/core/Mage/Eav/Model/Form/Type.php create mode 100644 app/code/core/Mage/Eav/Model/Mysql4/Form/Element.php create mode 100644 app/code/core/Mage/Eav/Model/Mysql4/Form/Element/Collection.php create mode 100644 app/code/core/Mage/Eav/Model/Mysql4/Form/Fieldset.php create mode 100644 app/code/core/Mage/Eav/Model/Mysql4/Form/Fieldset/Collection.php create mode 100644 app/code/core/Mage/Eav/Model/Mysql4/Form/Type.php create mode 100644 app/code/core/Mage/Eav/Model/Mysql4/Form/Type/Collection.php create mode 100644 app/code/core/Mage/Eav/sql/eav_setup/mysql4-upgrade-0.7.13-0.7.14.php create mode 100644 app/code/core/Mage/Eav/sql/eav_setup/mysql4-upgrade-0.7.14-0.7.15.php create mode 100644 app/code/core/Mage/GoogleAnalytics/etc/adminhtml.xml create mode 100644 app/code/core/Mage/GoogleBase/etc/adminhtml.xml create mode 100644 app/code/core/Mage/GoogleCheckout/etc/adminhtml.xml create mode 100644 app/code/core/Mage/GoogleOptimizer/Block/Adminhtml/Cms/Page/Edit/Enable.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Notifications.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Process.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Process/Edit.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Process/Edit/Form.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Process/Edit/Tab/Main.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Process/Edit/Tabs.php create mode 100644 app/code/core/Mage/Index/Block/Adminhtml/Process/Grid.php create mode 100644 app/code/core/Mage/Index/Helper/Data.php create mode 100644 app/code/core/Mage/Index/Model/Event.php create mode 100644 app/code/core/Mage/Index/Model/Indexer.php create mode 100644 app/code/core/Mage/Index/Model/Indexer/Abstract.php create mode 100644 app/code/core/Mage/Index/Model/Mysql4/Abstract.php create mode 100644 app/code/core/Mage/Index/Model/Mysql4/Event.php create mode 100644 app/code/core/Mage/Index/Model/Mysql4/Event/Collection.php create mode 100644 app/code/core/Mage/Index/Model/Mysql4/Process.php create mode 100644 app/code/core/Mage/Index/Model/Mysql4/Process/Collection.php create mode 100644 app/code/core/Mage/Index/Model/Mysql4/Setup.php create mode 100644 app/code/core/Mage/Index/Model/Observer.php create mode 100644 app/code/core/Mage/Index/Model/Process.php create mode 100644 app/code/core/Mage/Index/controllers/Adminhtml/ProcessController.php create mode 100644 app/code/core/Mage/Index/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Index/etc/config.xml create mode 100644 app/code/core/Mage/Index/sql/index_setup/mysql4-install-1.4.0.0.php create mode 100644 app/code/core/Mage/Index/sql/index_setup/mysql4-upgrade-1.4.0.0-1.4.0.1.php create mode 100644 app/code/core/Mage/Index/sql/index_setup/mysql4-upgrade-1.4.0.1-1.4.0.2.php create mode 100644 app/code/core/Mage/Newsletter/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Newsletter/sql/newsletter_setup/mysql4-upgrade-0.8.0-0.8.1.php create mode 100644 app/code/core/Mage/Ogone/Block/Form.php create mode 100644 app/code/core/Mage/Ogone/Block/Info.php create mode 100644 app/code/core/Mage/Ogone/Block/Paypage.php create mode 100644 app/code/core/Mage/Ogone/Block/Placeform.php create mode 100644 app/code/core/Mage/Ogone/Helper/Data.php create mode 100644 app/code/core/Mage/Ogone/Model/Api.php create mode 100644 app/code/core/Mage/Ogone/Model/Api/Debug.php create mode 100644 app/code/core/Mage/Ogone/Model/Config.php create mode 100644 app/code/core/Mage/Ogone/Model/Mysql4/Api/Debug.php create mode 100644 app/code/core/Mage/Ogone/Model/Source/PaymentAction.php create mode 100644 app/code/core/Mage/Ogone/Model/Source/Pmlist.php create mode 100644 app/code/core/Mage/Ogone/Model/Source/Template.php create mode 100644 app/code/core/Mage/Ogone/controllers/ApiController.php create mode 100644 app/code/core/Mage/Ogone/etc/config.xml create mode 100644 app/code/core/Mage/Ogone/etc/system.xml create mode 100644 app/code/core/Mage/Ogone/sql/ogone_setup/mysql4-install-0.0.1.php create mode 100644 app/code/core/Mage/Oscommerce/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Paygate/sql/paygate_setup/mysql4-upgrade-0.7.0-0.7.1.php create mode 100644 app/code/core/Mage/Payment/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Paypal/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Rating/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Reports/Block/Product/Widget/Compared.php create mode 100644 app/code/core/Mage/Reports/Block/Product/Widget/Viewed.php create mode 100644 app/code/core/Mage/Reports/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Reports/etc/widget.xml create mode 100644 app/code/core/Mage/Reports/sql/reports_setup/mysql4-upgrade-0.7.8-0.7.9.php create mode 100644 app/code/core/Mage/Review/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Rss/Model/Observer.php create mode 100644 app/code/core/Mage/Rss/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Sales/Model/Order/Creditmemo/Total/Cost.php create mode 100644 app/code/core/Mage/Sales/Model/Order/Invoice/Total/Cost.php create mode 100644 app/code/core/Mage/Sales/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.40-0.9.41.php create mode 100644 app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.41-0.9.42.php create mode 100644 app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.42-0.9.43.php create mode 100644 app/code/core/Mage/Sales/sql/sales_setup/mysql4-upgrade-0.9.43-0.9.44.php create mode 100644 app/code/core/Mage/SalesRule/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Shipping/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Sitemap/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Strikeiron/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Tag/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Tag/sql/tag_setup/mysql4-upgrade-0.7.2-0.7.3.php create mode 100644 app/code/core/Mage/Tax/etc/adminhtml.xml create mode 100644 app/code/core/Mage/Tax/sql/tax_setup/mysql4-upgrade-0.7.9-0.7.10.php create mode 100644 app/code/core/Mage/Usa/sql/usa_setup/mysql4-upgrade-0.7.0-0.7.1.php create mode 100644 app/code/core/Mage/Wishlist/etc/adminhtml.xml create mode 100644 app/design/adminhtml/default/default/layout/cms.xml create mode 100644 app/design/adminhtml/default/default/layout/index.xml create mode 100644 app/design/adminhtml/default/default/layout/promo.xml create mode 100644 app/design/adminhtml/default/default/layout/tag.xml create mode 100644 app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml create mode 100644 app/design/adminhtml/default/default/template/cms/page/edit/form/renderer/content.phtml rename app/design/adminhtml/default/default/template/{tag/edit.phtml => cms/wysiwyg/content.phtml} (59%) create mode 100644 app/design/adminhtml/default/default/template/cms/wysiwyg/content/files.phtml create mode 100644 app/design/adminhtml/default/default/template/cms/wysiwyg/content/newfolder.phtml create mode 100644 app/design/adminhtml/default/default/template/cms/wysiwyg/content/uploader.phtml create mode 100644 app/design/adminhtml/default/default/template/cms/wysiwyg/js.phtml create mode 100644 app/design/adminhtml/default/default/template/cms/wysiwyg/tree.phtml create mode 100644 app/design/adminhtml/default/default/template/directory/js/optional_zip_countries.phtml create mode 100644 app/design/adminhtml/default/default/template/eav/attribute/edit/js.phtml create mode 100644 app/design/adminhtml/default/default/template/index/notifications.phtml create mode 100644 app/design/adminhtml/default/default/template/notification/baseurl.phtml create mode 100644 app/design/adminhtml/default/default/template/ogone/info.phtml create mode 100644 app/design/adminhtml/default/default/template/tag/edit/container.phtml create mode 100644 app/design/adminhtml/default/default/template/tag/edit/serializer.phtml create mode 100644 app/design/adminhtml/default/default/template/widget/grid/serializer.phtml create mode 100644 app/design/frontend/default/blank/layout/ogone.xml create mode 100644 app/design/frontend/default/blank/template/customer/widget/gender.phtml create mode 100644 app/design/frontend/default/blank/template/ogone/form.phtml create mode 100644 app/design/frontend/default/blank/template/ogone/info.phtml create mode 100644 app/design/frontend/default/blank/template/ogone/paypage.phtml create mode 100644 app/design/frontend/default/blank/template/ogone/placeform.phtml create mode 100644 app/design/frontend/default/blank/template/reports/product/widget/compared.phtml create mode 100644 app/design/frontend/default/blank/template/reports/product/widget/viewed.phtml create mode 100644 app/design/frontend/default/default/layout/ogone.xml create mode 100644 app/design/frontend/default/default/template/customer/widget/gender.phtml create mode 100644 app/design/frontend/default/default/template/directory/js/optional_zip_countries.phtml create mode 100644 app/design/frontend/default/default/template/ogone/form.phtml create mode 100644 app/design/frontend/default/default/template/ogone/info.phtml create mode 100644 app/design/frontend/default/default/template/ogone/paypage.phtml create mode 100644 app/design/frontend/default/default/template/ogone/placeform.phtml create mode 100644 app/design/frontend/default/default/template/reports/product/widget/compared.phtml create mode 100644 app/design/frontend/default/default/template/reports/product/widget/viewed.phtml create mode 100644 app/design/frontend/default/iphone/layout/ogone.xml create mode 100644 app/design/frontend/default/iphone/template/customer/widget/gender.phtml create mode 100644 app/design/frontend/default/iphone/template/ogone/form.phtml create mode 100644 app/design/frontend/default/iphone/template/ogone/info.phtml create mode 100644 app/design/frontend/default/iphone/template/ogone/paypage.phtml create mode 100644 app/design/frontend/default/iphone/template/ogone/placeform.phtml create mode 100644 app/design/frontend/default/modern/layout/ogone.xml create mode 100644 app/design/frontend/default/modern/template/customer/widget/gender.phtml create mode 100644 app/design/frontend/default/modern/template/ogone/form.phtml create mode 100644 app/design/frontend/default/modern/template/ogone/info.phtml create mode 100644 app/design/frontend/default/modern/template/ogone/paypage.phtml create mode 100644 app/design/frontend/default/modern/template/ogone/placeform.phtml create mode 100644 app/design/frontend/default/modern/template/reports/product/widget/compared.phtml create mode 100644 app/design/frontend/default/modern/template/reports/product/widget/viewed.phtml create mode 100644 app/etc/modules/Mage_Ogone.xml create mode 100644 js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentowidget/editor_plugin.js create mode 100644 js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentowidget/editor_plugin_src.js create mode 100644 js/mage/adminhtml/wysiwyg/tiny_mce/plugins/magentowidget/img/icon.gif create mode 100644 js/mage/adminhtml/wysiwyg/tiny_mce/setup.js create mode 100644 js/mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/content.css create mode 100644 js/mage/adminhtml/wysiwyg/tiny_mce/themes/advanced/skins/default/dialog.css create mode 100644 js/mage/adminhtml/wysiwyg/widget.js create mode 100644 js/tiny_mce/blank.htm create mode 100644 js/tiny_mce/classes/AddOnManager.js create mode 100644 js/tiny_mce/classes/CommandManager.js create mode 100644 js/tiny_mce/classes/ControlManager.js create mode 100644 js/tiny_mce/classes/Developer.js create mode 100644 js/tiny_mce/classes/Editor.js create mode 100644 js/tiny_mce/classes/EditorCommands.js create mode 100644 js/tiny_mce/classes/EditorManager.js create mode 100644 js/tiny_mce/classes/ForceBlocks.js create mode 100644 js/tiny_mce/classes/Popup.js create mode 100644 js/tiny_mce/classes/UndoManager.js create mode 100644 js/tiny_mce/classes/WindowManager.js create mode 100644 js/tiny_mce/classes/adapter/jquery/adapter.js create mode 100644 js/tiny_mce/classes/adapter/jquery/jquery.tinymce.js create mode 100644 js/tiny_mce/classes/adapter/prototype/adapter.js create mode 100644 js/tiny_mce/classes/commands/BlockQuote.js create mode 100644 js/tiny_mce/classes/commands/CutCopyPaste.js create mode 100644 js/tiny_mce/classes/commands/InsertHorizontalRule.js create mode 100644 js/tiny_mce/classes/commands/RemoveFormat.js create mode 100644 js/tiny_mce/classes/commands/UndoRedo.js create mode 100644 js/tiny_mce/classes/dom/DOMUtils.js create mode 100644 js/tiny_mce/classes/dom/Element.js create mode 100644 js/tiny_mce/classes/dom/EventUtils.js create mode 100644 js/tiny_mce/classes/dom/Range.js create mode 100644 js/tiny_mce/classes/dom/ScriptLoader.js create mode 100644 js/tiny_mce/classes/dom/Selection.js create mode 100644 js/tiny_mce/classes/dom/Serializer.js create mode 100644 js/tiny_mce/classes/dom/Sizzle.js create mode 100644 js/tiny_mce/classes/dom/StringWriter.js create mode 100644 js/tiny_mce/classes/dom/TridentSelection.js create mode 100644 js/tiny_mce/classes/dom/XMLWriter.js create mode 100644 js/tiny_mce/classes/firebug/firebug-lite.js create mode 100644 js/tiny_mce/classes/tinymce.js create mode 100644 js/tiny_mce/classes/ui/Button.js create mode 100644 js/tiny_mce/classes/ui/ColorSplitButton.js create mode 100644 js/tiny_mce/classes/ui/Container.js create mode 100644 js/tiny_mce/classes/ui/Control.js create mode 100644 js/tiny_mce/classes/ui/DropMenu.js create mode 100644 js/tiny_mce/classes/ui/ListBox.js create mode 100644 js/tiny_mce/classes/ui/Menu.js create mode 100644 js/tiny_mce/classes/ui/MenuButton.js create mode 100644 js/tiny_mce/classes/ui/MenuItem.js create mode 100644 js/tiny_mce/classes/ui/NativeListBox.js create mode 100644 js/tiny_mce/classes/ui/Separator.js create mode 100644 js/tiny_mce/classes/ui/SplitButton.js create mode 100644 js/tiny_mce/classes/ui/Toolbar.js create mode 100644 js/tiny_mce/classes/util/Cookie.js create mode 100644 js/tiny_mce/classes/util/Dispatcher.js create mode 100644 js/tiny_mce/classes/util/JSON.js create mode 100644 js/tiny_mce/classes/util/JSONP.js create mode 100644 js/tiny_mce/classes/util/JSONRequest.js create mode 100644 js/tiny_mce/classes/util/URI.js create mode 100644 js/tiny_mce/classes/util/XHR.js create mode 100644 js/tiny_mce/classes/xml/Parser.js create mode 100644 js/tiny_mce/jquery.tinymce.js create mode 100644 js/tiny_mce/langs/en.js create mode 100644 js/tiny_mce/license.txt create mode 100644 js/tiny_mce/plugins/advhr/css/advhr.css create mode 100644 js/tiny_mce/plugins/advhr/editor_plugin.js create mode 100644 js/tiny_mce/plugins/advhr/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/advhr/js/rule.js create mode 100644 js/tiny_mce/plugins/advhr/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/advhr/rule.htm 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 100644 js/tiny_mce/plugins/advimage/langs/en_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 100644 js/tiny_mce/plugins/advlink/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/advlink/link.htm create mode 100644 js/tiny_mce/plugins/autoresize/editor_plugin.js create mode 100644 js/tiny_mce/plugins/autoresize/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/autosave/editor_plugin.js create mode 100644 js/tiny_mce/plugins/autosave/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/bbcode/editor_plugin.js create mode 100644 js/tiny_mce/plugins/bbcode/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/compat2x/editor_plugin.js create mode 100644 js/tiny_mce/plugins/compat2x/editor_plugin_src.js 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/directionality/editor_plugin.js create mode 100644 js/tiny_mce/plugins/directionality/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/emotions/editor_plugin.js create mode 100644 js/tiny_mce/plugins/emotions/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/emotions/emotions.htm create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-cool.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-cry.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-frown.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-innocent.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-kiss.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-laughing.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-sealed.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-smile.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-surprised.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-undecided.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-wink.gif create mode 100644 js/tiny_mce/plugins/emotions/img/smiley-yell.gif create mode 100644 js/tiny_mce/plugins/emotions/js/emotions.js create mode 100644 js/tiny_mce/plugins/emotions/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/example/dialog.htm create mode 100644 js/tiny_mce/plugins/example/editor_plugin.js create mode 100644 js/tiny_mce/plugins/example/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/example/img/example.gif create mode 100644 js/tiny_mce/plugins/example/js/dialog.js create mode 100644 js/tiny_mce/plugins/example/langs/en.js create mode 100644 js/tiny_mce/plugins/example/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/fullpage/css/fullpage.css create mode 100644 js/tiny_mce/plugins/fullpage/editor_plugin.js create mode 100644 js/tiny_mce/plugins/fullpage/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/fullpage/fullpage.htm create mode 100644 js/tiny_mce/plugins/fullpage/js/fullpage.js create mode 100644 js/tiny_mce/plugins/fullpage/langs/en_dlg.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/iespell/editor_plugin.js create mode 100644 js/tiny_mce/plugins/iespell/editor_plugin_src.js 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/insertdatetime/editor_plugin.js create mode 100644 js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/layer/editor_plugin.js create mode 100644 js/tiny_mce/plugins/layer/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/media/css/content.css 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/img/flash.gif create mode 100644 js/tiny_mce/plugins/media/img/flv_player.swf create mode 100644 js/tiny_mce/plugins/media/img/quicktime.gif create mode 100644 js/tiny_mce/plugins/media/img/realmedia.gif create mode 100644 js/tiny_mce/plugins/media/img/shockwave.gif create mode 100644 js/tiny_mce/plugins/media/img/trans.gif create mode 100644 js/tiny_mce/plugins/media/img/windowsmedia.gif create mode 100644 js/tiny_mce/plugins/media/js/embed.js create mode 100644 js/tiny_mce/plugins/media/js/media.js create mode 100644 js/tiny_mce/plugins/media/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/media/media.htm create mode 100644 js/tiny_mce/plugins/nonbreaking/editor_plugin.js create mode 100644 js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/noneditable/editor_plugin.js create mode 100644 js/tiny_mce/plugins/noneditable/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/pagebreak/css/content.css 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/pagebreak/img/pagebreak.gif create mode 100644 js/tiny_mce/plugins/pagebreak/img/trans.gif 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 100644 js/tiny_mce/plugins/paste/langs/en_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 100644 js/tiny_mce/plugins/print/editor_plugin.js create mode 100644 js/tiny_mce/plugins/print/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/safari/blank.htm create mode 100644 js/tiny_mce/plugins/safari/editor_plugin.js create mode 100644 js/tiny_mce/plugins/safari/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/save/editor_plugin.js create mode 100644 js/tiny_mce/plugins/save/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/searchreplace/css/searchreplace.css create mode 100644 js/tiny_mce/plugins/searchreplace/editor_plugin.js create mode 100644 js/tiny_mce/plugins/searchreplace/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/searchreplace/js/searchreplace.js create mode 100644 js/tiny_mce/plugins/searchreplace/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/searchreplace/searchreplace.htm create mode 100644 js/tiny_mce/plugins/spellchecker/css/content.css create mode 100644 js/tiny_mce/plugins/spellchecker/editor_plugin.js create mode 100644 js/tiny_mce/plugins/spellchecker/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/spellchecker/img/wline.gif 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 100644 js/tiny_mce/plugins/style/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/style/props.htm create mode 100644 js/tiny_mce/plugins/tabfocus/editor_plugin.js create mode 100644 js/tiny_mce/plugins/tabfocus/editor_plugin_src.js 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 100644 js/tiny_mce/plugins/table/langs/en_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/template/blank.htm create mode 100644 js/tiny_mce/plugins/template/css/template.css create mode 100644 js/tiny_mce/plugins/template/editor_plugin.js create mode 100644 js/tiny_mce/plugins/template/editor_plugin_src.js create mode 100644 js/tiny_mce/plugins/template/js/template.js create mode 100644 js/tiny_mce/plugins/template/langs/en_dlg.js create mode 100644 js/tiny_mce/plugins/template/template.htm create mode 100644 js/tiny_mce/plugins/visualchars/editor_plugin.js create mode 100644 js/tiny_mce/plugins/visualchars/editor_plugin_src.js 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 100644 js/tiny_mce/plugins/xhtmlxtras/langs/en_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/icons.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 100644 js/tiny_mce/themes/advanced/langs/en.js create mode 100644 js/tiny_mce/themes/advanced/langs/en_dlg.js create mode 100644 js/tiny_mce/themes/advanced/link.htm 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/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/themes/simple/editor_template.js create mode 100644 js/tiny_mce/themes/simple/editor_template_src.js create mode 100644 js/tiny_mce/themes/simple/img/icons.gif create mode 100644 js/tiny_mce/themes/simple/langs/en.js create mode 100644 js/tiny_mce/themes/simple/skins/default/content.css create mode 100644 js/tiny_mce/themes/simple/skins/default/ui.css create mode 100644 js/tiny_mce/themes/simple/skins/o2k7/content.css create mode 100644 js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png create mode 100644 js/tiny_mce/themes/simple/skins/o2k7/ui.css create mode 100644 js/tiny_mce/tiny_mce.js create mode 100644 js/tiny_mce/tiny_mce_dev.js create mode 100644 js/tiny_mce/tiny_mce_jquery.js create mode 100644 js/tiny_mce/tiny_mce_jquery_src.js create mode 100644 js/tiny_mce/tiny_mce_popup.js create mode 100644 js/tiny_mce/tiny_mce_prototype.js create mode 100644 js/tiny_mce/tiny_mce_prototype_src.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 lib/Varien/Data/Form/Element/Link.php create mode 100644 lib/Zend/CodeGenerator/Php/Property/DefaultValue.php create mode 100644 lib/Zend/Controller/Plugin/PutHandler.php create mode 100644 lib/Zend/Db/Adapter/Sqlsrv.php create mode 100644 lib/Zend/Db/Adapter/Sqlsrv/Exception.php create mode 100644 lib/Zend/Db/Statement/Sqlsrv.php create mode 100644 lib/Zend/Db/Statement/Sqlsrv/Exception.php create mode 100644 lib/Zend/Db/Table/Definition.php create mode 100644 lib/Zend/Dojo/BuildLayer.php create mode 100644 lib/Zend/Feed/Reader.php create mode 100644 lib/Zend/Feed/Reader/Entry/Atom.php create mode 100644 lib/Zend/Feed/Reader/Entry/Rss.php create mode 100644 lib/Zend/Feed/Reader/EntryAbstract.php create mode 100644 lib/Zend/Feed/Reader/EntryInterface.php create mode 100644 lib/Zend/Feed/Reader/Extension/Atom/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/Atom/Feed.php create mode 100644 lib/Zend/Feed/Reader/Extension/Content/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/CreativeCommons/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/CreativeCommons/Feed.php create mode 100644 lib/Zend/Feed/Reader/Extension/DublinCore/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/DublinCore/Feed.php create mode 100644 lib/Zend/Feed/Reader/Extension/EntryAbstract.php create mode 100644 lib/Zend/Feed/Reader/Extension/FeedAbstract.php create mode 100644 lib/Zend/Feed/Reader/Extension/Podcast/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/Podcast/Feed.php create mode 100644 lib/Zend/Feed/Reader/Extension/Slash/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/Syndication/Feed.php create mode 100644 lib/Zend/Feed/Reader/Extension/Thread/Entry.php create mode 100644 lib/Zend/Feed/Reader/Extension/WellFormedWeb/Entry.php create mode 100644 lib/Zend/Feed/Reader/Feed/Atom.php create mode 100644 lib/Zend/Feed/Reader/Feed/Rss.php create mode 100644 lib/Zend/Feed/Reader/FeedAbstract.php create mode 100644 lib/Zend/Feed/Reader/FeedInterface.php create mode 100644 lib/Zend/Ldap/Attribute.php create mode 100644 lib/Zend/Ldap/Collection.php create mode 100644 lib/Zend/Ldap/Collection/Iterator/Default.php rename lib/Zend/{Pdf/Parser/Stream.php => Ldap/Collection/Iterator/Interface.php} (50%) create mode 100644 lib/Zend/Ldap/Converter.php create mode 100644 lib/Zend/Ldap/Dn.php create mode 100644 lib/Zend/Ldap/Filter.php create mode 100644 lib/Zend/Ldap/Filter/Abstract.php create mode 100644 lib/Zend/Ldap/Filter/And.php create mode 100644 lib/Zend/Ldap/Filter/Exception.php create mode 100644 lib/Zend/Ldap/Filter/Logical.php create mode 100644 lib/Zend/Ldap/Filter/Mask.php create mode 100644 lib/Zend/Ldap/Filter/Not.php create mode 100644 lib/Zend/Ldap/Filter/Or.php create mode 100644 lib/Zend/Ldap/Filter/String.php create mode 100644 lib/Zend/Ldap/Ldif/Encoder.php create mode 100644 lib/Zend/Ldap/Node.php create mode 100644 lib/Zend/Ldap/Node/Abstract.php create mode 100644 lib/Zend/Ldap/Node/ChildrenIterator.php create mode 100644 lib/Zend/Ldap/Node/Collection.php create mode 100644 lib/Zend/Ldap/Node/RootDse.php create mode 100644 lib/Zend/Ldap/Node/RootDse/ActiveDirectory.php create mode 100644 lib/Zend/Ldap/Node/RootDse/OpenLdap.php create mode 100644 lib/Zend/Ldap/Node/RootDse/eDirectory.php create mode 100644 lib/Zend/Ldap/Node/Schema.php create mode 100644 lib/Zend/Ldap/Node/Schema/ActiveDirectory.php create mode 100644 lib/Zend/Ldap/Node/Schema/AttributeType/ActiveDirectory.php create mode 100644 lib/Zend/Ldap/Node/Schema/AttributeType/Interface.php create mode 100644 lib/Zend/Ldap/Node/Schema/AttributeType/OpenLdap.php create mode 100644 lib/Zend/Ldap/Node/Schema/Item.php create mode 100644 lib/Zend/Ldap/Node/Schema/ObjectClass/ActiveDirectory.php create mode 100644 lib/Zend/Ldap/Node/Schema/ObjectClass/Interface.php create mode 100644 lib/Zend/Ldap/Node/Schema/ObjectClass/OpenLdap.php create mode 100644 lib/Zend/Ldap/Node/Schema/OpenLdap.php create mode 100644 lib/Zend/Locale/Data/aa_ER_SAAHO.xml create mode 100644 lib/Zend/Locale/Data/bo.xml create mode 100644 lib/Zend/Locale/Data/bo_CN.xml create mode 100644 lib/Zend/Locale/Data/bo_IN.xml create mode 100644 lib/Zend/Locale/Data/en_Dsrt.xml create mode 100644 lib/Zend/Locale/Data/en_Dsrt_US.xml create mode 100644 lib/Zend/Locale/Data/gsw.xml create mode 100644 lib/Zend/Locale/Data/gsw_CH.xml create mode 100644 lib/Zend/Locale/Data/ku_Arab_IQ.xml create mode 100644 lib/Zend/Locale/Data/ku_Arab_IR.xml create mode 100644 lib/Zend/Locale/Data/ku_Arab_SY.xml create mode 100644 lib/Zend/Locale/Data/ku_IQ.xml create mode 100644 lib/Zend/Locale/Data/ku_IR.xml create mode 100644 lib/Zend/Locale/Data/ku_SY.xml create mode 100644 lib/Zend/Locale/Data/likelySubtags.xml create mode 100644 lib/Zend/Locale/Data/metazoneInfo.xml create mode 100644 lib/Zend/Locale/Data/nds.xml create mode 100644 lib/Zend/Locale/Data/nds_DE.xml create mode 100644 lib/Zend/Locale/Data/numberingSystems.xml create mode 100644 lib/Zend/Locale/Data/oc.xml create mode 100644 lib/Zend/Locale/Data/oc_FR.xml delete mode 100644 lib/Zend/Locale/Data/plurals.xml create mode 100644 lib/Zend/Locale/Data/postalCodeData.xml create mode 100644 lib/Zend/Locale/Data/trv.xml create mode 100644 lib/Zend/Locale/Data/trv_TW.xml create mode 100644 lib/Zend/Log/Writer/Syslog.php create mode 100644 lib/Zend/Paginator/AdapterAggregate.php create mode 100644 lib/Zend/Pdf/Action.php create mode 100644 lib/Zend/Pdf/Action/GoTo.php create mode 100644 lib/Zend/Pdf/Action/GoTo3DView.php create mode 100644 lib/Zend/Pdf/Action/GoToE.php create mode 100644 lib/Zend/Pdf/Action/GoToR.php create mode 100644 lib/Zend/Pdf/Action/Hide.php create mode 100644 lib/Zend/Pdf/Action/ImportData.php create mode 100644 lib/Zend/Pdf/Action/JavaScript.php create mode 100644 lib/Zend/Pdf/Action/Launch.php create mode 100644 lib/Zend/Pdf/Action/Movie.php create mode 100644 lib/Zend/Pdf/Action/Named.php create mode 100644 lib/Zend/Pdf/Action/Rendition.php create mode 100644 lib/Zend/Pdf/Action/ResetForm.php create mode 100644 lib/Zend/Pdf/Action/SetOCGState.php create mode 100644 lib/Zend/Pdf/Action/Sound.php create mode 100644 lib/Zend/Pdf/Action/SubmitForm.php create mode 100644 lib/Zend/Pdf/Action/Thread.php create mode 100644 lib/Zend/Pdf/Action/Trans.php create mode 100644 lib/Zend/Pdf/Action/URI.php create mode 100644 lib/Zend/Pdf/Action/Unknown.php create mode 100644 lib/Zend/Pdf/Annotation.php create mode 100644 lib/Zend/Pdf/Annotation/FileAttachment.php create mode 100644 lib/Zend/Pdf/Annotation/Link.php create mode 100644 lib/Zend/Pdf/Annotation/Text.php create mode 100644 lib/Zend/Pdf/Destination.php create mode 100644 lib/Zend/Pdf/Destination/Explicit.php create mode 100644 lib/Zend/Pdf/Destination/Fit.php create mode 100644 lib/Zend/Pdf/Destination/FitBoundingBox.php create mode 100644 lib/Zend/Pdf/Destination/FitBoundingBoxHorizontally.php create mode 100644 lib/Zend/Pdf/Destination/FitBoundingBoxVertically.php create mode 100644 lib/Zend/Pdf/Destination/FitHorizontally.php create mode 100644 lib/Zend/Pdf/Destination/FitRectangle.php create mode 100644 lib/Zend/Pdf/Destination/FitVertically.php create mode 100644 lib/Zend/Pdf/Destination/Named.php create mode 100644 lib/Zend/Pdf/Destination/Unknown.php create mode 100644 lib/Zend/Pdf/Destination/Zoom.php create mode 100644 lib/Zend/Pdf/NameTree.php create mode 100644 lib/Zend/Pdf/Outline.php create mode 100644 lib/Zend/Pdf/Outline/Created.php create mode 100644 lib/Zend/Pdf/Outline/Loaded.php delete mode 100644 lib/Zend/Pdf/PhpArray.php create mode 100644 lib/Zend/Pdf/RecursivelyIteratableObjectsContainer.php create mode 100644 lib/Zend/Pdf/Target.php create mode 100644 lib/Zend/Queue.php create mode 100644 lib/Zend/Queue/Adapter/Activemq.php create mode 100644 lib/Zend/Queue/Adapter/AdapterAbstract.php create mode 100644 lib/Zend/Queue/Adapter/AdapterInterface.php create mode 100644 lib/Zend/Queue/Adapter/Array.php create mode 100644 lib/Zend/Queue/Adapter/Db.php create mode 100644 lib/Zend/Queue/Adapter/Db/Message.php create mode 100644 lib/Zend/Queue/Adapter/Db/Queue.php create mode 100644 lib/Zend/Queue/Adapter/Db/queue.sql create mode 100644 lib/Zend/Queue/Adapter/Memcacheq.php create mode 100644 lib/Zend/Queue/Adapter/Null.php create mode 100644 lib/Zend/Queue/Adapter/PlatformJobQueue.php create mode 100644 lib/Zend/Queue/Exception.php create mode 100644 lib/Zend/Queue/Message.php create mode 100644 lib/Zend/Queue/Message/Iterator.php create mode 100644 lib/Zend/Queue/Message/PlatformJob.php create mode 100644 lib/Zend/Queue/Stomp/Client.php create mode 100644 lib/Zend/Queue/Stomp/Client/Connection.php create mode 100644 lib/Zend/Queue/Stomp/Client/ConnectionInterface.php create mode 100644 lib/Zend/Queue/Stomp/Frame.php create mode 100644 lib/Zend/Queue/Stomp/FrameInterface.php create mode 100644 lib/Zend/Rest/Controller.php create mode 100644 lib/Zend/Rest/Route.php create mode 100644 lib/Zend/Service/Amazon/Ec2/CloudWatch.php create mode 100644 lib/Zend/Service/Amazon/Ec2/Instance/Reserved.php create mode 100644 lib/Zend/Service/Amazon/Ec2/Instance/Windows.php create mode 100644 lib/Zend/Service/Amazon/Sqs.php create mode 100644 lib/Zend/Service/Amazon/Sqs/Exception.php create mode 100644 lib/Zend/Test/DbAdapter.php create mode 100644 lib/Zend/Test/DbStatement.php create mode 100644 lib/Zend/Test/PHPUnit/DatabaseTestCase.php create mode 100644 lib/Zend/Test/PHPUnit/Db/Connection.php create mode 100644 lib/Zend/Test/PHPUnit/Db/DataSet/DbRowset.php create mode 100644 lib/Zend/Test/PHPUnit/Db/DataSet/DbTable.php create mode 100644 lib/Zend/Test/PHPUnit/Db/DataSet/DbTableDataSet.php create mode 100644 lib/Zend/Test/PHPUnit/Db/DataSet/QueryDataSet.php create mode 100644 lib/Zend/Test/PHPUnit/Db/DataSet/QueryTable.php create mode 100644 lib/Zend/Test/PHPUnit/Db/Exception.php create mode 100644 lib/Zend/Test/PHPUnit/Db/Metadata/Generic.php create mode 100644 lib/Zend/Test/PHPUnit/Db/Operation/DeleteAll.php create mode 100644 lib/Zend/Test/PHPUnit/Db/Operation/Insert.php create mode 100644 lib/Zend/Test/PHPUnit/Db/Operation/Truncate.php create mode 100644 lib/Zend/Test/PHPUnit/Db/SimpleTester.php create mode 100644 lib/Zend/Tool/Framework/Client/Config.php create mode 100644 lib/Zend/Tool/Framework/Client/Storage.php create mode 100644 lib/Zend/Tool/Framework/Client/Storage/AdapterInterface.php create mode 100644 lib/Zend/Tool/Framework/Client/Storage/Directory.php create mode 100644 lib/Zend/Tool/Project/Context/Content/Engine.php create mode 100644 lib/Zend/Tool/Project/Context/Content/Engine/CodeGenerator.php create mode 100644 lib/Zend/Tool/Project/Context/Content/Engine/Phtml.php create mode 100644 lib/Zend/Translate/Plural.php create mode 100644 lib/Zend/View/Helper/BaseUrl.php create mode 100644 skin/adminhtml/default/default/images/bg_notifications.gif delete mode 100644 skin/adminhtml/default/default/images/bg_severity-critical.gif delete mode 100644 skin/adminhtml/default/default/images/bg_severity-major.gif delete mode 100644 skin/adminhtml/default/default/images/bg_severity-minor.gif delete mode 100644 skin/adminhtml/default/default/images/bg_severity-notice.gif create mode 100644 skin/adminhtml/default/default/images/widget/catalog__category_widget_link.gif create mode 100644 skin/adminhtml/default/default/images/widget/catalog__product_widget_link.gif create mode 100644 skin/adminhtml/default/default/images/widget/catalog__product_widget_new.gif create mode 100644 skin/adminhtml/default/default/images/widget/cms__widget_page_link.gif create mode 100644 skin/adminhtml/default/default/images/widget/default.gif create mode 100644 skin/adminhtml/default/default/images/widget/reports__product_widget_compared.gif create mode 100644 skin/adminhtml/default/default/images/widget/reports__product_widget_viewed.gif create mode 100644 skin/adminhtml/default/default/images/widget_placeholder.gif diff --git a/app/Mage.php b/app/Mage.php index 6702f50c6a..68be8b1bd8 100644 --- a/app/Mage.php +++ b/app/Mage.php @@ -130,13 +130,32 @@ final class Mage static private $_isInstalled; /** - * Retrieve current Magento version + * Gets the current Magento version string + * @link http://www.magentocommerce.com/blog/new-community-edition-release-process/ * * @return string */ public static function getVersion() { - return '1.4.0.0-alpha1'; + return '1.4.0.0-alpha2'; + } + + /** + * Gets the detailed Magento version information + * @link http://www.magentocommerce.com/blog/new-community-edition-release-process/ + * + * @return array + */ + public static function getVersionInfo() + { + return array( + 'major' => '1', + 'minor' => '4', + 'revision' => '0', + 'patch' => '0', + 'stability' => 'alpha', + 'number' => '2', + ); } /** @@ -312,7 +331,7 @@ public static function getStoreConfig($path, $store = null) public static function getStoreConfigFlag($path, $store = null) { $flag = strtolower(self::getStoreConfig($path, $store)); - if (!empty($flag) && 'false'!==$flag && '0'!==$flag) { + if (!empty($flag) && 'false' !== $flag) { return true; } else { return false; @@ -665,8 +684,11 @@ public static function log($message, $level = null, $file = '') if (!self::getConfig()) { return; } - if (!self::getStoreConfig('dev/log/active')) { - return; + + if (!self::$_isDeveloperMode) { + if (!self::getStoreConfig('dev/log/active')) { + return; + } } static $loggers = array(); @@ -768,6 +790,9 @@ public static function printException(Exception $e, $extra = '') !empty($extra) ? $extra . "\n\n" : '' . $e->getMessage(), $e->getTraceAsString() ); + if (isset($_SERVER) && isset($_SERVER['REQUEST_URI'])) { + $reportData[] = $_SERVER['REQUEST_URI']; + } $reportData = serialize($reportData); file_put_contents($reportFile, $reportData); diff --git a/app/code/core/Mage/Admin/Model/Config.php b/app/code/core/Mage/Admin/Model/Config.php index 8681c43321..088f72a1e8 100644 --- a/app/code/core/Mage/Admin/Model/Config.php +++ b/app/code/core/Mage/Admin/Model/Config.php @@ -34,11 +34,46 @@ */ class Mage_Admin_Model_Config extends Varien_Simplexml_Config { + /** + * adminhtml.xml merged config + * + * @var Varien_Simplexml_Config + */ + protected $_adminhtmlConfig; + + /** + * Load config from merged adminhtml.xml files + */ public function __construct() { parent::__construct(); - #$this->_elementClass = 'Mage_Core_Model_Config_Element'; - #$this->loadFile(Mage::getModuleDir('etc', 'Mage_Admin').DS.'admin.xml'); + $this->setCacheId('adminhtml_acl_menu_config'); + /* @var $adminhtmlConfig Varien_Simplexml_Config */ + $adminhtmlConfig = Mage::app()->loadCache($this->getCacheId()); + if ($adminhtmlConfig) { + $this->_adminhtmlConfig = new Varien_Simplexml_Config($adminhtmlConfig); + } else { + $adminhtmlConfig = new Varien_Simplexml_Config; + $adminhtmlConfig->loadString(''); + Mage::getConfig()->loadModulesConfiguration('adminhtml.xml', $adminhtmlConfig); + $this->_adminhtmlConfig = $adminhtmlConfig; + + // support back compatibility with base config + $aclConfig = Mage::getConfig()->getNode('adminhtml/acl'); + if ($aclConfig) { + $adminhtmlConfig->getNode()->extendChild($aclConfig, true); + } + + $menuConfig = Mage::getConfig()->getNode('adminhtml/menu'); + if ($menuConfig) { + $adminhtmlConfig->getNode()->extendChild($menuConfig, true); + } + + if (Mage::app()->useCache('config')) { + Mage::app()->saveCache($adminhtmlConfig->getXmlString(), $this->getCacheId(), + array(Mage_Core_Model_Config::CACHE_TAG)); + } + } } /** @@ -52,7 +87,7 @@ public function __construct() public function loadAclResources(Mage_Admin_Model_Acl $acl, $resource=null, $parentName=null) { if (is_null($resource)) { - $resource = Mage::getConfig()->getNode("adminhtml/acl/resources"); + $resource = $this->getAdminhtmlConfig()->getNode("acl/resources"); $resourceName = null; } else { $resourceName = (is_null($parentName) ? '' : $parentName.'/').$resource->getName(); @@ -121,4 +156,13 @@ public function getAclPrivilegeSet($name='') return false; } + /** + * Retrieve xml config + * + * @return Varien_Simplexml_Config + */ + public function getAdminhtmlConfig() + { + return $this->_adminhtmlConfig; + } } \ No newline at end of file diff --git a/app/code/core/Mage/Admin/Model/Mysql4/Rules.php b/app/code/core/Mage/Admin/Model/Mysql4/Rules.php index 257dde77b3..b3fa0a20ba 100644 --- a/app/code/core/Mage/Admin/Model/Mysql4/Rules.php +++ b/app/code/core/Mage/Admin/Model/Mysql4/Rules.php @@ -30,38 +30,47 @@ protected function _construct() { $this->_init('admin/rule', 'rule_id'); } - public function saveRel(Mage_Admin_Model_Rules $rule) { - $this->_getWriteAdapter()->beginTransaction(); - + /** + * Save ACL resources + * + * @param Mage_Admin_Model_Rules $rule + */ + public function saveRel(Mage_Admin_Model_Rules $rule) + { try { + $this->_getWriteAdapter()->beginTransaction(); $roleId = $rule->getRoleId(); $this->_getWriteAdapter()->delete($this->getMainTable(), "role_id = {$roleId}"); - $masterResources = Mage::getModel('admin/roles')->getResourcesList2D(); - $masterAdmin = false; - if ( $postedResources = $rule->getResources() ) { - foreach ($masterResources as $index => $resName) { - if ( !$masterAdmin ) { - $permission = ( in_array($resName, $postedResources) )? 'allow' : 'deny'; - $this->_getWriteAdapter()->insert($this->getMainTable(), array( - 'role_type' => 'G', - 'resource_id' => trim($resName, '/'), - 'privileges' => '', # FIXME !!! - 'assert_id' => 0, - 'role_id' => $roleId, - 'permission' => $permission - )); - } - if ( $resName == 'all' && $permission == 'allow' ) { - $masterAdmin = true; + $postedResources = $rule->getResources(); + if ($postedResources) { + $row = array( + 'role_type' => 'G', + 'resource_id' => 'all', + 'privileges' => '', // not used yet + 'assert_id' => 0, + 'role_id' => $roleId, + 'permission' => 'allow' + ); + + // If all was selected save it only and nothing else. + if ($postedResources === array('all')) { + $this->_getWriteAdapter()->insert($this->getMainTable(), $row); + } else { + foreach (Mage::getModel('admin/roles')->getResourcesList2D() as $index => $resName) { + $row['permission'] = (in_array($resName, $postedResources) ? 'allow' : 'deny'); + $row['resource_id'] = trim($resName, '/'); + $this->_getWriteAdapter()->insert($this->getMainTable(), $row); } } } $this->_getWriteAdapter()->commit(); } catch (Mage_Core_Exception $e) { + $this->_getWriteAdapter()->rollBack(); throw $e; } catch (Exception $e){ $this->_getWriteAdapter()->rollBack(); + Mage::logException($e); } } } diff --git a/app/code/core/Mage/Admin/Model/Roles.php b/app/code/core/Mage/Admin/Model/Roles.php index 1902ee42f9..fe49529e22 100644 --- a/app/code/core/Mage/Admin/Model/Roles.php +++ b/app/code/core/Mage/Admin/Model/Roles.php @@ -71,7 +71,7 @@ protected function _buildResourcesArray(Varien_Simplexml_Element $resource=null, { static $result; if (is_null($resource)) { - $resource = Mage::getConfig()->getNode('adminhtml/acl/resources'); + $resource = Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode('acl/resources'); $resourceName = null; $level = -1; } else { @@ -89,12 +89,6 @@ protected function _buildResourcesArray(Varien_Simplexml_Element $resource=null, $resource->addAttribute("module_c", $module); } - //if (!(string)$resource->title) { - // return array(); - //} - - //$resource->title = Mage::helper($module)->__((string)$resource->title); - if ( is_null($represent2Darray) ) { $result[$resourceName]['name'] = Mage::helper($module)->__((string)$resource->title); $result[$resourceName]['level'] = $level; diff --git a/app/code/core/Mage/Admin/Model/User.php b/app/code/core/Mage/Admin/Model/User.php index aee3ccb533..8c6407f349 100644 --- a/app/code/core/Mage/Admin/Model/User.php +++ b/app/code/core/Mage/Admin/Model/User.php @@ -56,13 +56,12 @@ protected function _construct() } /** - * Save user + * Processing data before model save * * @return Mage_Admin_Model_User */ - public function save() + protected function _beforeSave() { - $this->_beforeSave(); $data = array( 'firstname' => $this->getFirstname(), 'lastname' => $this->getLastname(), @@ -85,8 +84,7 @@ public function save() if ($this->getNewPassword()) { $data['password'] = $this->_getEncodedPassword($this->getNewPassword()); - } - elseif ($this->getPassword()) { + } elseif ($this->getPassword()) { $data['new_password'] = $this->getPassword(); } @@ -95,9 +93,8 @@ public function save() } $this->addData($data); - $this->_getResource()->save($this); - $this->_afterSave(); - return $this; + + return parent::_beforeSave(); } /** @@ -115,17 +112,6 @@ public function saveExtra($data) return $this; } - /** - * Delete user - * - * @return Mage_Admin_Model_User - */ - public function delete() - { - $this->_getResource()->delete($this); - return $this; - } - /** * Save user roles * @@ -323,7 +309,7 @@ protected function _getEncodedPassword($pwd) public function findFirstAvailableMenu($parent=null, $path='', $level=0) { if ($parent == null) { - $parent = Mage::getConfig()->getNode('adminhtml/menu'); + $parent = Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode('menu'); } foreach ($parent->children() as $childName=>$child) { $aclResource = 'admin/' . $path . $childName; @@ -372,8 +358,9 @@ public function getStartupPageUrl() $startupPage = Mage::getStoreConfig(self::XML_PATH_STARTUP_PAGE); $aclResource = 'admin/' . $startupPage; if (Mage::getSingleton('admin/session')->isAllowed($aclResource)) { - $nodePath = 'adminhtml/menu/' . join('/children/', explode('/', $startupPage)) . '/action'; - if ($url = Mage::getConfig()->getNode($nodePath)) { + $nodePath = 'menu/' . join('/children/', explode('/', $startupPage)) . '/action'; + $url = Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode($nodePath); + if ($url) { return $url; } } diff --git a/app/code/core/Mage/Admin/etc/config.xml b/app/code/core/Mage/Admin/etc/config.xml index 2a7e371ce3..686d5b1291 100644 --- a/app/code/core/Mage/Admin/etc/config.xml +++ b/app/code/core/Mage/Admin/etc/config.xml @@ -54,16 +54,7 @@ Mage_Admin - - core_setup - - - core_write - - - core_read - Mage_Admin_Block diff --git a/app/code/core/Mage/AdminNotification/Model/Observer.php b/app/code/core/Mage/AdminNotification/Model/Observer.php index fb56f37380..fdfac46446 100644 --- a/app/code/core/Mage/AdminNotification/Model/Observer.php +++ b/app/code/core/Mage/AdminNotification/Model/Observer.php @@ -41,9 +41,15 @@ class Mage_AdminNotification_Model_Observer */ public function preDispatch(Varien_Event_Observer $observer) { - $feedModel = Mage::getModel('adminnotification/feed'); - /* @var $feedModel Mage_AdminNotification_Model_Feed */ - $feedModel->checkUpdate(); + if (Mage::getSingleton('admin/session')->isLoggedIn()) { + + $feedModel = Mage::getModel('adminnotification/feed'); + /* @var $feedModel Mage_AdminNotification_Model_Feed */ + + $feedModel->checkUpdate(); + + } + } } \ No newline at end of file diff --git a/app/code/core/Mage/AdminNotification/etc/adminhtml.xml b/app/code/core/Mage/AdminNotification/etc/adminhtml.xml new file mode 100644 index 0000000000..28a4dd0812 --- /dev/null +++ b/app/code/core/Mage/AdminNotification/etc/adminhtml.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + Notifications + 10 + + + Show Toolbar + 10 + + + Show List + 20 + + + Mark as read + 30 + + + Remove + 40 + + + + + + + + + + + + + + Notifications + adminhtml/notification + 15 + + + + + diff --git a/app/code/core/Mage/AdminNotification/etc/config.xml b/app/code/core/Mage/AdminNotification/etc/config.xml index b5673be53d..62404ad191 100644 --- a/app/code/core/Mage/AdminNotification/etc/config.xml +++ b/app/code/core/Mage/AdminNotification/etc/config.xml @@ -57,20 +57,7 @@ Mage_AdminNotification - - core_setup - - - - core_setup - - - - - core_setup - - @@ -80,51 +67,6 @@ - - - - - - - - Notifications - 10 - - - Show Toolbar - 10 - - - Show List - 20 - - - Mark as read - 30 - - - Remove - 40 - - - - - - - - - - - - - - Notifications - adminhtml/notification - 15 - - - - @@ -138,7 +80,6 @@ - singleton adminnotification/observer preDispatch diff --git a/app/code/core/Mage/Adminhtml/Block/Api/User/Edit/Tab/Main.php b/app/code/core/Mage/Adminhtml/Block/Api/User/Edit/Tab/Main.php index 54f186078e..b02f24424c 100644 --- a/app/code/core/Mage/Adminhtml/Block/Api/User/Edit/Tab/Main.php +++ b/app/code/core/Mage/Adminhtml/Block/Api/User/Edit/Tab/Main.php @@ -94,7 +94,7 @@ protected function _prepareForm() 'label' => Mage::helper('adminhtml')->__('New Api Key'), 'id' => 'new_pass', 'title' => Mage::helper('adminhtml')->__('New Api Key'), - 'class' => 'input-text validate-admin-password', + 'class' => 'input-text validate-password', )); $fieldset->addField('confirmation', 'password', array( @@ -110,7 +110,7 @@ protected function _prepareForm() 'label' => Mage::helper('adminhtml')->__('Api Key'), 'id' => 'customer_pass', 'title' => Mage::helper('adminhtml')->__('Api Key'), - 'class' => 'input-text required-entry validate-admin-password', + 'class' => 'input-text required-entry validate-password', 'required' => true, )); $fieldset->addField('confirmation', 'password', array( diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Edit/Form.php index c79ba06c52..5b608bf301 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Edit/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Edit/Form.php @@ -145,6 +145,9 @@ public function getAdditionalButtonsHtml() */ public function addAdditionalButton($alias, $config) { + if (isset($config['name'])) { + $config['element_name'] = $config['name']; + } $this->setChild($alias . '_button', $this->getLayout()->createBlock('adminhtml/widget_button')->addData($config)); $this->_additionalButtons[$alias] = $alias . '_button'; diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Widget/Chooser.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Widget/Chooser.php new file mode 100644 index 0000000000..cea17d37bb --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Widget/Chooser.php @@ -0,0 +1,173 @@ + + */ +class Mage_Adminhtml_Block_Catalog_Category_Widget_Chooser extends Mage_Adminhtml_Block_Catalog_Category_Tree +{ + protected $_selectedCategories = array(); + + /** + * Block construction + * Defines tree template and init tree params + */ + public function __construct() + { + parent::__construct(); + $this->setTemplate('catalog/category/widget/tree.phtml'); + $this->_withProductCount = false; + } + + /** + * Setter + * + * @param array $selectedCategories + * @return Mage_Adminhtml_Block_Catalog_Category_Widget_Chooser + */ + public function setSelectedCategories($selectedCategories) + { + $this->_selectedCategories = $selectedCategories; + return $this; + } + + /** + * Getter + * + * @return array + */ + public function getSelectedCategories() + { + return $this->_selectedCategories; + } + + /** + * Prepare chooser element HTML + * + * @param Varien_Data_Form_Element_Abstract $element Form Element + * @return Varien_Data_Form_Element_Abstract + */ + public function prepareElementHtml(Varien_Data_Form_Element_Abstract $element) + { + $uniqId = $element->getId() . md5(microtime()); + $sourceUrl = $this->getUrl('*/catalog_category_widget/chooser', array('uniq_id' => $uniqId, 'use_massaction' => false)); + + $chooser = $this->getLayout()->createBlock('adminhtml/cms_widget_chooser') + ->setElement($element) + ->setTranslationHelper($this->getTranslationHelper()) + ->setConfig($this->getConfig()) + ->setFieldsetId($this->getFieldsetId()) + ->setSourceUrl($sourceUrl) + ->setUniqId($uniqId); + + if ($element->getValue()) { + $value = explode('/', $element->getValue()); + $categoryId = isset($value[1]) ? $value[1] : false; + if ($categoryId) { + $label = Mage::getSingleton('catalog/category')->load($categoryId)->getName(); + $chooser->setLabel($label); + } + } + + $element->setData('after_element_html', $chooser->toHtml()); + return $element; + } + + /** + * Category Tree node onClick listener js function + * + * @return string + */ + public function getNodeClickListener() + { + if ($this->getData('node_click_listener')) { + return $this->getData('node_click_listener'); + } + if ($this->getUseMassaction()) { + $js = ' + function (node, e) { + node.ui.toggleCheck(true); + } + '; + } else { + $chooserJsObject = $this->getId(); + $js = ' + function (node, e) { + '.$chooserJsObject.'.setElementValue("category/" + node.attributes.id); + '.$chooserJsObject.'.setElementLabel(node.text); + '.$chooserJsObject.'.close(); + } + '; + } + return $js; + } + + /** + * Get JSON of a tree node or an associative array + * + * @param Varien_Data_Tree_Node|array $node + * @param int $level + * @return string + */ + protected function _getNodeJson($node, $level = 0) + { + $item = parent::_getNodeJson($node, $level); + if (in_array($node->getId(), $this->getSelectedCategories())) { + $item['checked'] = true; + } + $item['is_anchor'] = (int)$node->getIsAnchor(); + $item['url_key'] = $node->getData('url_key'); + return $item; + } + + /** + * Adds some extra params to categories collection + * + * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection + */ + public function getCategoryCollection() + { + return parent::getCategoryCollection()->addAttributeToSelect('url_key')->addAttributeToSelect('is_anchor'); + } + + /** + * Tree JSON source URL + * + * @return string + */ + public function getLoadTreeUrl($expanded=null) + { + return $this->getUrl('*/catalog_category_widget/categoriesJson', array( + '_current'=>true, + 'uniq_id' => $this->getId(), + 'use_massaction' => $this->getUseMassaction() + )); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Form/Renderer/Fieldset/Element.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Form/Renderer/Fieldset/Element.php index 180b6f3b1c..a0edfb0af7 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Form/Renderer/Fieldset/Element.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Form/Renderer/Fieldset/Element.php @@ -97,7 +97,7 @@ public function canDisplayUseDefault() public function usedDefault() { $devaultValue = $this->getDataObject()->getAttributeDefaultValue($this->getAttribute()->getAttributeCode()); - return is_null($devaultValue); + return $devaultValue === false; } /** diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php index 8526e7d60b..c8edeaf5f4 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php @@ -30,70 +30,45 @@ * * @category Mage * @package Mage_Adminhtml - * @author Magento Core Team + * @author Magento Core Team */ -class Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Main extends Mage_Adminhtml_Block_Widget_Form +class Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Main extends Mage_Eav_Block_Adminhtml_Attribute_Edit_Main_Abstract { - + /** + * Adding product form elements for editing attribute + * + * @return Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Main + */ protected function _prepareForm() { - $model = Mage::registry('entity_attribute'); - - $form = new Varien_Data_Form(array( - 'id' => 'edit_form', - 'action' => $this->getData('action'), - 'method' => 'post' - )); - - $disableAttributeFields = array( - 'sku' => array( - 'is_global', - 'is_unique', - ), - 'url_key' => array( - 'is_unique', - ), - 'status' => array( - 'is_configurable', - 'is_filterable', - 'is_filterable_in_search' - ), - 'visibility' => array( - 'is_configurable', - 'is_filterable', - 'is_filterable_in_search' - ), - ); - - $fieldset = $form->addFieldset('base_fieldset', - array('legend'=>Mage::helper('catalog')->__('Attribute Properties')) - ); - if ($model->getAttributeId()) { - $fieldset->addField('attribute_id', 'hidden', array( - 'name' => 'attribute_id', - )); - } - - $this->_addElementTypes($fieldset); - - $yesno = array( + parent::_prepareForm(); + $attributeObject = $this->getAttributeObject(); + /* @var $form Varien_Data_Form */ + $form = $this->getForm(); + /* @var $fieldset Varien_Data_Form_Element_Fieldset */ + $fieldset = $form->getElement('base_fieldset'); + + $frontendInputElm = $form->getElement('frontend_input'); + $additionalTypes = array( array( - 'value' => 0, - 'label' => Mage::helper('catalog')->__('No') + 'value' => 'price', + 'label' => Mage::helper('catalog')->__('Price') ), array( - 'value' => 1, - 'label' => Mage::helper('catalog')->__('Yes') - )); + 'value' => 'media_image', + 'label' => Mage::helper('catalog')->__('Media Image') + ) + ); + if ($attributeObject->getFrontendInput() == 'gallery') { + $inputTypes[] = array( + 'value' => 'gallery', + 'label' => Mage::helper('catalog')->__('Gallery') + ); + } + $frontendInputValues = array_merge($frontendInputElm->getValues(), $additionalTypes); + $frontendInputElm->setValues($frontendInputValues); - $fieldset->addField('attribute_code', 'text', array( - 'name' => 'attribute_code', - 'label' => Mage::helper('catalog')->__('Attribute Code'), - 'title' => Mage::helper('catalog')->__('Attribute Code'), - 'note' => Mage::helper('catalog')->__('For internal use. Must be unique with no spaces'), - 'class' => 'validate-code', - 'required' => true, - )); + $yesnoSource = Mage::getModel('adminhtml/system_config_source_yesno')->toOptionArray(); $scopes = array( Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE =>Mage::helper('catalog')->__('Store View'), @@ -101,7 +76,7 @@ protected function _prepareForm() Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'), ); - if ($model->getAttributeCode() == 'status' || $model->getAttributeCode() == 'tax_class_id') { + if ($attributeObject->getAttributeCode() == 'status' || $attributeObject->getAttributeCode() == 'tax_class_id') { unset($scopes[Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE]); } @@ -111,165 +86,7 @@ protected function _prepareForm() 'title' => Mage::helper('catalog')->__('Scope'), 'note' => Mage::helper('catalog')->__('Declare attribute value saving scope'), 'values'=> $scopes - )); - - $inputTypes = array( - array( - 'value' => 'text', - 'label' => Mage::helper('catalog')->__('Text Field') - ), - array( - 'value' => 'textarea', - 'label' => Mage::helper('catalog')->__('Text Area') - ), - array( - 'value' => 'date', - 'label' => Mage::helper('catalog')->__('Date') - ), - array( - 'value' => 'boolean', - 'label' => Mage::helper('catalog')->__('Yes/No') - ), - array( - 'value' => 'multiselect', - 'label' => Mage::helper('catalog')->__('Multiple Select') - ), - array( - 'value' => 'select', - 'label' => Mage::helper('catalog')->__('Dropdown') - ), - array( - 'value' => 'price', - 'label' => Mage::helper('catalog')->__('Price') - ), - array( - 'value' => 'media_image', - 'label' => Mage::helper('catalog')->__('Media Image') - ), - ); - - if ($model->getFrontendInput() == 'gallery') { - $inputTypes[] = array( - 'value' => 'gallery', - 'label' => Mage::helper('catalog')->__('Gallery') - ); - } - - $response = new Varien_Object(); - $response->setTypes(array()); - Mage::dispatchEvent('adminhtml_product_attribute_types', array('response'=>$response)); - - $_disabledTypes = array(); - $_hiddenFields = array(); - foreach ($response->getTypes() as $type) { - $inputTypes[] = $type; - if (isset($type['hide_fields'])) { - $_hiddenFields[$type['value']] = $type['hide_fields']; - } - if (isset($type['disabled_types'])) { - $_disabledTypes[$type['value']] = $type['disabled_types']; - } - } - Mage::register('attribute_type_hidden_fields', $_hiddenFields); - Mage::register('attribute_type_disabled_types', $_disabledTypes); - - - $fieldset->addField('frontend_input', 'select', array( - 'name' => 'frontend_input', - 'label' => Mage::helper('catalog')->__('Catalog Input Type for Store Owner'), - 'title' => Mage::helper('catalog')->__('Catalog Input Type for Store Owner'), - 'value' => 'text', - 'values'=> $inputTypes - )); - - $fieldset->addField('default_value_text', 'text', array( - 'name' => 'default_value_text', - 'label' => Mage::helper('catalog')->__('Default value'), - 'title' => Mage::helper('catalog')->__('Default value'), - 'value' => $model->getDefaultValue(), - )); - - $fieldset->addField('default_value_yesno', 'select', array( - 'name' => 'default_value_yesno', - 'label' => Mage::helper('catalog')->__('Default value'), - 'title' => Mage::helper('catalog')->__('Default value'), - 'values' => $yesno, - 'value' => $model->getDefaultValue(), - )); - - $dateFormatIso = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT); - $fieldset->addField('default_value_date', 'date', array( - 'name' => 'default_value_date', - 'label' => Mage::helper('catalog')->__('Default value'), - 'title' => Mage::helper('catalog')->__('Default value'), - 'image' => $this->getSkinUrl('images/grid-cal.gif'), - 'value' => $model->getDefaultValue(), - 'format' => $dateFormatIso - )); - - $fieldset->addField('default_value_textarea', 'textarea', array( - 'name' => 'default_value_textarea', - 'label' => Mage::helper('catalog')->__('Default value'), - 'title' => Mage::helper('catalog')->__('Default value'), - 'value' => $model->getDefaultValue(), - )); - - $fieldset->addField('is_unique', 'select', array( - 'name' => 'is_unique', - 'label' => Mage::helper('catalog')->__('Unique Value'), - 'title' => Mage::helper('catalog')->__('Unique Value (not shared with other products)'), - 'note' => Mage::helper('catalog')->__('Not shared with other products'), - 'values' => $yesno, - )); - - $fieldset->addField('is_required', 'select', array( - 'name' => 'is_required', - 'label' => Mage::helper('catalog')->__('Values Required'), - 'title' => Mage::helper('catalog')->__('Values Required'), - 'values' => $yesno, - )); - - $fieldset->addField('frontend_class', 'select', array( - 'name' => 'frontend_class', - 'label' => Mage::helper('catalog')->__('Input Validation for Store Owner'), - 'title' => Mage::helper('catalog')->__('Input Validation for Store Owner'), - 'values'=> array( - array( - 'value' => '', - 'label' => Mage::helper('catalog')->__('None') - ), - array( - 'value' => 'validate-number', - 'label' => Mage::helper('catalog')->__('Decimal Number') - ), - array( - 'value' => 'validate-digits', - 'label' => Mage::helper('catalog')->__('Integer Number') - ), - array( - 'value' => 'validate-email', - 'label' => Mage::helper('catalog')->__('Email') - ), - array( - 'value' => 'validate-url', - 'label' => Mage::helper('catalog')->__('Url') - ), - array( - 'value' => 'validate-alpha', - 'label' => Mage::helper('catalog')->__('Letters') - ), - array( - 'value' => 'validate-alphanum', - 'label' => Mage::helper('catalog')->__('Letters(a-zA-Z) or Numbers(0-9)') - ), - ) - )); -/* - $fieldset->addField('use_in_super_product', 'select', array( - 'name' => 'use_in_super_product', - 'label' => Mage::helper('catalog')->__('Apply To Configurable/Grouped Product'), - 'values' => $yesno, - )); */ + ), 'attribute_code'); $fieldset->addField('apply_to', 'apply', array( 'name' => 'apply_to[]', @@ -280,15 +97,13 @@ protected function _prepareForm() 'custom' => Mage::helper('catalog')->__('Selected Product Types') ), 'required' => true - )); + ), 'frontend_class'); $fieldset->addField('is_configurable', 'select', array( 'name' => 'is_configurable', 'label' => Mage::helper('catalog')->__('Use To Create Configurable Product'), - 'values' => $yesno, - )); - // ----- - + 'values' => $yesnoSource, + ), 'apply_to'); // frontend properties fieldset $fieldset = $form->addFieldset('front_fieldset', array('legend'=>Mage::helper('catalog')->__('Frontend Properties'))); @@ -297,24 +112,23 @@ protected function _prepareForm() 'name' => 'is_searchable', 'label' => Mage::helper('catalog')->__('Use in quick search'), 'title' => Mage::helper('catalog')->__('Use in quick search'), - 'values' => $yesno, + 'values' => $yesnoSource, )); $fieldset->addField('is_visible_in_advanced_search', 'select', array( 'name' => 'is_visible_in_advanced_search', 'label' => Mage::helper('catalog')->__('Use in advanced search'), 'title' => Mage::helper('catalog')->__('Use in advanced search'), - 'values' => $yesno, + 'values' => $yesnoSource, )); $fieldset->addField('is_comparable', 'select', array( 'name' => 'is_comparable', 'label' => Mage::helper('catalog')->__('Comparable on Front-end'), 'title' => Mage::helper('catalog')->__('Comparable on Front-end'), - 'values' => $yesno, + 'values' => $yesnoSource, )); - $fieldset->addField('is_filterable', 'select', array( 'name' => 'is_filterable', 'label' => Mage::helper('catalog')->__("Use In Layered Navigation"), @@ -332,14 +146,14 @@ protected function _prepareForm() 'label' => Mage::helper('catalog')->__("Use In Search Results Layered Navigation"), 'title' => Mage::helper('catalog')->__('Can be used only with catalog input type Dropdown, Multiple Select and Price'), 'note' => Mage::helper('catalog')->__('Can be used only with catalog input type Dropdown, Multiple Select and Price'), - 'values' => $yesno, + 'values' => $yesnoSource, )); $fieldset->addField('is_used_for_price_rules', 'select', array( 'name' => 'is_used_for_price_rules', 'label' => Mage::helper('catalog')->__('Use for Price Rule Conditions'), 'title' => Mage::helper('catalog')->__('Use for Price Rule Conditions'), - 'values' => $yesno, + 'values' => $yesnoSource, )); $fieldset->addField('position', 'text', array( @@ -354,9 +168,9 @@ protected function _prepareForm() 'name' => 'is_html_allowed_on_front', 'label' => Mage::helper('catalog')->__('Allow HTML-tags on Front-end'), 'title' => Mage::helper('catalog')->__('Allow HTML-tags on Front-end'), - 'values' => $yesno, + 'values' => $yesnoSource, )); - if (!$model->getId()) { + if (!$attributeObject->getId()) { $htmlAllowed->setValue(1); } @@ -364,7 +178,7 @@ protected function _prepareForm() 'name' => 'is_visible_on_front', 'label' => Mage::helper('catalog')->__('Visible on Product View Page on Front-end'), 'title' => Mage::helper('catalog')->__('Visible on Product View Page on Front-end'), - 'values' => $yesno, + 'values' => $yesnoSource, )); $fieldset->addField('used_in_product_listing', 'select', array( @@ -372,52 +186,54 @@ protected function _prepareForm() 'label' => Mage::helper('catalog')->__('Used in product listing'), 'title' => Mage::helper('catalog')->__('Used in product listing'), 'note' => Mage::helper('catalog')->__('Depends on design theme'), - 'values' => $yesno, + 'values' => $yesnoSource, )); $fieldset->addField('used_for_sort_by', 'select', array( 'name' => 'used_for_sort_by', 'label' => Mage::helper('catalog')->__('Used for sorting in product listing'), 'title' => Mage::helper('catalog')->__('Used for sorting in product listing'), 'note' => Mage::helper('catalog')->__('Depends on design theme'), - 'values' => $yesno, + 'values' => $yesnoSource, )); - if ($model->getId()) { - $form->getElement('attribute_code')->setDisabled(1); - $form->getElement('frontend_input')->setDisabled(1); - - if (isset($disableAttributeFields[$model->getAttributeCode()])) { - foreach ($disableAttributeFields[$model->getAttributeCode()] as $field) { - $form->getElement($field)->setDisabled(1); - $form->getElement($field)->setReadonly(1); - } - } - } - if (!$model->getIsUserDefined() && $model->getId()) { - $form->getElement('is_unique')->setDisabled(1); - } - - $form->addValues($model->getData()); - $form->getElement('apply_to')->setSize(5); - if ($applyTo = $model->getApplyTo()) { + if ($applyTo = $attributeObject->getApplyTo()) { $applyTo = is_array($applyTo) ? $applyTo : explode(',', $applyTo); $form->getElement('apply_to')->setValue($applyTo); } else { $form->getElement('apply_to')->addClass('no-display ignore-validate'); } - $this->setForm($form); + $response = new Varien_Object(); + $response->setTypes(array()); + Mage::dispatchEvent('adminhtml_product_attribute_types', array('response'=>$response)); + $_disabledTypes = array(); + $_hiddenFields = array(); + foreach ($response->getTypes() as $type) { + $inputTypes[] = $type; + if (isset($type['hide_fields'])) { + $_hiddenFields[$type['value']] = $type['hide_fields']; + } + if (isset($type['disabled_types'])) { + $_disabledTypes[$type['value']] = $type['disabled_types']; + } + } + Mage::register('attribute_type_hidden_fields', $_hiddenFields); + Mage::register('attribute_type_disabled_types', $_disabledTypes); - return parent::_prepareForm(); + return $this; } + /** + * Retrieve additional element types for product attributes + * + * @return array + */ protected function _getAdditionalElementTypes() { return array( 'apply' => Mage::getConfig()->getBlockClassName('adminhtml/catalog_product_helper_form_apply') ); } - } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Options.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Options.php index 0e3d17b042..637333b377 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Options.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Options.php @@ -31,155 +31,6 @@ * @package Mage_Adminhtml * @author Magento Core Team */ -class Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options extends Mage_Adminhtml_Block_Widget +class Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options extends Mage_Eav_Block_Adminhtml_Attribute_Edit_Options_Abstract { - - public function __construct() - { - parent::__construct(); - $this->setTemplate('catalog/product/attribute/options.phtml'); - } - - protected function _prepareLayout() - { - $this->setChild('delete_button', - $this->getLayout()->createBlock('adminhtml/widget_button') - ->setData(array( - 'label' => Mage::helper('catalog')->__('Delete'), - 'class' => 'delete delete-option' - ))); - - $this->setChild('add_button', - $this->getLayout()->createBlock('adminhtml/widget_button') - ->setData(array( - 'label' => Mage::helper('catalog')->__('Add Option'), - 'class' => 'add', - 'id' => 'add_new_option_button' - ))); - return parent::_prepareLayout(); - } - - public function getDeleteButtonHtml() - { - return $this->getChildHtml('delete_button'); - } - - public function getAddNewButtonHtml() - { - return $this->getChildHtml('add_button'); - } - - public function getStores() - { - $stores = $this->getData('stores'); - if (is_null($stores)) { - $stores = Mage::getModel('core/store') - ->getResourceCollection() - ->setLoadDefault(true) - ->load(); - $this->setData('stores', $stores); - } - return $stores; - } - - public function getOptionValues() - { - $attributeType = $this->getAttributeObject()->getFrontendInput(); - $defaultValues = $this->getAttributeObject()->getDefaultValue(); - if ($attributeType == 'select' || $attributeType == 'multiselect') { - $defaultValues = explode(',', $defaultValues); - } else { - $defaultValues = array(); - } - - switch ($attributeType) { - case 'select': - $inputType = 'radio'; - break; - case 'multiselect': - $inputType = 'checkbox'; - break; - default: - $inputType = ''; - break; - } - - $values = $this->getData('option_values'); - if (is_null($values)) { - $values = array(); - $optionCollection = Mage::getResourceModel('eav/entity_attribute_option_collection') - ->setAttributeFilter($this->getAttributeObject()->getId()) - ->setPositionOrder('desc', true) - ->load(); - - foreach ($optionCollection as $option) { - $value = array(); - if (in_array($option->getId(), $defaultValues)) { - $value['checked'] = 'checked="checked"'; - } else { - $value['checked'] = ''; - } - - $value['intype'] = $inputType; - $value['id'] = $option->getId(); - $value['sort_order'] = $option->getSortOrder(); - foreach ($this->getStores() as $store) { - $storeValues = $this->getStoreOptionValues($store->getId()); - if (isset($storeValues[$option->getId()])) { - $value['store'.$store->getId()] = htmlspecialchars($storeValues[$option->getId()]); - } - else { - $value['store'.$store->getId()] = ''; - } - } - $values[] = new Varien_Object($value); - } - $this->setData('option_values', $values); - } - - return $values; - } - - public function getLabelValues() - { - $values = array(); - $values[0] = $this->getAttributeObject()->getFrontend()->getLabel(); - // it can be array and cause bug - $frontendLabel = $this->getAttributeObject()->getFrontend()->getLabel(); - if (is_array($frontendLabel)) { - $frontendLabel = array_shift($frontendLabel); - } - $translations = Mage::getModel('core/translate_string') - ->load(Mage_Catalog_Model_Entity_Attribute::MODULE_NAME.Mage_Core_Model_Translate::SCOPE_SEPARATOR.$frontendLabel) - ->getStoreTranslations(); - foreach ($this->getStores() as $store) { - if ($store->getId() != 0) { - $values[$store->getId()] = isset($translations[$store->getId()]) ? $translations[$store->getId()] : ''; - } - } - return $values; - } - - public function getStoreOptionValues($storeId) - { - $values = $this->getData('store_option_values_'.$storeId); - if (is_null($values)) { - $values = array(); - $valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection') - ->setAttributeFilter($this->getAttributeObject()->getId()) - ->setStoreFilter($storeId, false) - ->load(); - foreach ($valuesCollection as $item) { - $values[$item->getId()] = $item->getValue(); - } - $this->setData('store_option_values_'.$storeId, $values); - } - return $values; - } - - public function getAttributeObject() - { - return Mage::registry('entity_attribute'); - } - } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Grid.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Grid.php index 6b7a39d803..2137742cc2 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Grid.php @@ -29,54 +29,34 @@ * * @category Mage * @package Mage_Adminhtml - * @author Magento Core Team + * @author Magento Core Team */ -class Mage_Adminhtml_Block_Catalog_Product_Attribute_Grid extends Mage_Adminhtml_Block_Widget_Grid +class Mage_Adminhtml_Block_Catalog_Product_Attribute_Grid extends Mage_Eav_Block_Adminhtml_Attribute_Grid_Abstract { - - public function __construct() - { - parent::__construct(); - $this->setId('attributeGrid'); - $this->setDefaultSort('attribute_code'); - $this->setDefaultDir('ASC'); - } - + /** + * Prepare product attributes grid collection object + * + * @return Mage_Adminhtml_Block_Catalog_Product_Attribute_Grid + */ protected function _prepareCollection() { - $collection = Mage::getResourceModel('eav/entity_attribute_collection') - ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType('catalog_product')->getTypeId() ) + $collection = Mage::getResourceModel('catalog/product_attribute_collection') ->addVisibleFilter(); $this->setCollection($collection); return parent::_prepareCollection(); } + /** + * Prepare product attributes grid columns + * + * @return Mage_Adminhtml_Block_Catalog_Product_Attribute_Grid + */ protected function _prepareColumns() { - /* - $this->addColumn('attribute_id', array( - 'header'=>Mage::helper('catalog')->__('ID'), - 'align'=>'right', - 'sortable'=>true, - 'width' => '50px', - 'index'=>'attribute_id' - )); - */ - - $this->addColumn('attribute_code', array( - 'header'=>Mage::helper('catalog')->__('Attribute Code'), - 'sortable'=>true, - 'index'=>'attribute_code' - )); + parent::_prepareColumns(); - $this->addColumn('frontend_label', array( - 'header'=>Mage::helper('catalog')->__('Attribute Label'), - 'sortable'=>true, - 'index'=>'frontend_label' - )); - - $this->addColumn('is_visible', array( + $this->addColumnAfter('is_visible', array( 'header'=>Mage::helper('catalog')->__('Visible'), 'sortable'=>true, 'index'=>'is_visible_on_front', @@ -86,9 +66,9 @@ protected function _prepareColumns() '0' => Mage::helper('catalog')->__('No'), ), 'align' => 'center', - )); + ), 'frontend_label'); - $this->addColumn('is_global', array( + $this->addColumnAfter('is_global', array( 'header'=>Mage::helper('catalog')->__('Scope'), 'sortable'=>true, 'index'=>'is_global', @@ -99,31 +79,7 @@ protected function _prepareColumns() Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL =>Mage::helper('catalog')->__('Global'), ), 'align' => 'center', - )); - - $this->addColumn('is_required', array( - 'header'=>Mage::helper('catalog')->__('Required'), - 'sortable'=>true, - 'index'=>'is_required', - 'type' => 'options', - 'options' => array( - '1' => Mage::helper('catalog')->__('Yes'), - '0' => Mage::helper('catalog')->__('No'), - ), - 'align' => 'center', - )); - - $this->addColumn('is_user_defined', array( - 'header'=>Mage::helper('catalog')->__('System'), - 'sortable'=>true, - 'index'=>'is_user_defined', - 'type' => 'options', - 'align' => 'center', - 'options' => array( - '0' => Mage::helper('catalog')->__('Yes'), // intended reverted use - '1' => Mage::helper('catalog')->__('No'), // intended reverted use - ), - )); + ), 'is_visible'); $this->addColumn('is_searchable', array( 'header'=>Mage::helper('catalog')->__('Searchable'), @@ -135,9 +91,9 @@ protected function _prepareColumns() '0' => Mage::helper('catalog')->__('No'), ), 'align' => 'center', - )); + ), 'is_user_defined'); - $this->addColumn('is_filterable', array( + $this->addColumnAfter('is_filterable', array( 'header'=>Mage::helper('catalog')->__('Use In Layered Navigation'), 'sortable'=>true, 'index'=>'is_filterable', @@ -148,9 +104,9 @@ protected function _prepareColumns() '0' => Mage::helper('catalog')->__('No'), ), 'align' => 'center', - )); + ), 'is_searchable'); - $this->addColumn('is_comparable', array( + $this->addColumnAfter('is_comparable', array( 'header'=>Mage::helper('catalog')->__('Comparable'), 'sortable'=>true, 'index'=>'is_comparable', @@ -160,14 +116,8 @@ protected function _prepareColumns() '0' => Mage::helper('catalog')->__('No'), ), 'align' => 'center', - )); - - return parent::_prepareColumns(); - } + ), 'is_filterable'); - public function getRowUrl($row) - { - return $this->getUrl('*/*/edit', array('attribute_id' => $row->getAttributeId())); + return $this; } - } \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php index bca0c3bbcb..91a083cd99 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php @@ -187,8 +187,7 @@ public function getGroupTreeJson() $item['allowDrop'] = true; $item['allowDrag'] = true; - $nodeChildren = Mage::getModel('eav/entity_attribute') - ->getResourceCollection() + $nodeChildren = Mage::getResourceModel('catalog/product_attribute_collection') ->setAttributeGroupFilter($node->getId()) ->addVisibleFilter() ->checkConfigurableProducts() @@ -207,7 +206,7 @@ public function getGroupTreeJson() 'leaf' => true, 'is_user_defined' => $child->getIsUserDefined(), 'is_configurable' => (int)in_array($child->getAttributeId(), $configurable), - 'entity_id' => $child->getEntityId() + 'entity_id' => $child->getEntityAttributeId() ); $item['children'][] = $attr; @@ -230,8 +229,7 @@ public function getAttributeTreeJson() $items = array(); $setId = $this->_getSetId(); - $collection = Mage::getModel('eav/entity_attribute') - ->getResourceCollection() + $collection = Mage::getResourceModel('catalog/product_attribute_collection') ->setAttributeSetFilter($setId) ->load(); @@ -241,9 +239,7 @@ public function getAttributeTreeJson() $attributesIds[] = $item->getAttributeId(); } - $attributes = Mage::getModel('eav/entity_attribute') - ->getResourceCollection() - ->setEntityTypeFilter(Mage::registry('entityType')) + $attributes = Mage::getResourceModel('catalog/product_attribute_collection') ->setAttributesExcludeFilter($attributesIds) ->addVisibleFilter() ->load(); diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main/Formset.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main/Formset.php index ea29de7b9e..c5678f1440 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main/Formset.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main/Formset.php @@ -43,7 +43,7 @@ protected function _prepareForm() ->load($this->getRequest()->getParam('id')); $form = new Varien_Data_Form(); - $fieldset = $form->addFieldset('set_name', array('legend'=>__('Edit Set Name'))); + $fieldset = $form->addFieldset('set_name', array('legend'=> Mage::helper('catalog')->__('Edit Set Name'))); $fieldset->addField('attribute_set_name', 'text', array( 'label' => Mage::helper('catalog')->__('Name
(For internal use)'), diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Ajax/Serializer.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Ajax/Serializer.php index 7200b4bbd8..3a48bb52ac 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Ajax/Serializer.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Ajax/Serializer.php @@ -52,4 +52,20 @@ public function getProductsJSON() } return $result ? Zend_Json_Encoder::encode($result) : '{}'; } + + /** + * Initialize grid block under the "Related Products", "Up-sells", "Cross-sells" sections + * + * @param string $blockName + * @param string $getProductFunction + * @param string $inputName + */ + public function initSerializerBlock($blockName, $getProductFunction, $inputName) + { + if ($block = $this->getLayout()->getBlock($blockName)) { + $this->setGridBlock($block) + ->setProducts(Mage::registry('current_product')->$getProductFunction()) + ->setInputElementName($inputName); + } + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php index bf7d8330ed..08e8578211 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Crosssell.php @@ -33,6 +33,10 @@ */ class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Crosssell extends Mage_Adminhtml_Block_Widget_Grid { + /** + * Set grid params + * + */ public function __construct() { parent::__construct(); @@ -54,6 +58,12 @@ protected function _getProduct() return Mage::registry('current_product'); } + /** + * Add filter + * + * @param object $column + * @return Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Crosssell + */ protected function _addColumnFilterToCollection($column) { // Set custom filter for in product flag @@ -64,19 +74,22 @@ protected function _addColumnFilterToCollection($column) } if ($column->getFilter()->getValue()) { $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$productIds)); - } - else { + } else { if($productIds) { $this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$productIds)); } } - } - else { + } else { parent::_addColumnFilterToCollection($column); } return $this; } + /** + * Prepare collection + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ protected function _prepareCollection() { $collection = Mage::getModel('catalog/product_link')->useCrossSellLinks() @@ -107,37 +120,42 @@ public function isReadonly() return $this->_getProduct()->getCrosssellReadonly(); } + /** + * Add columns to grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ protected function _prepareColumns() { if (!$this->isReadonly()) { $this->addColumn('in_products', array( - 'header_css_class' => 'a-center', - 'type' => 'checkbox', - 'name' => 'in_products', - 'values' => $this->_getSelectedProducts(), - 'align' => 'center', - 'index' => 'entity_id' + 'header_css_class' => 'a-center', + 'type' => 'checkbox', + 'name' => 'in_products', + 'values' => $this->_getSelectedProducts(), + 'align' => 'center', + 'index' => 'entity_id' )); } $this->addColumn('entity_id', array( 'header' => Mage::helper('catalog')->__('ID'), 'sortable' => true, - 'width' => '60px', + 'width' => 60, 'index' => 'entity_id' )); + $this->addColumn('name', array( 'header' => Mage::helper('catalog')->__('Name'), 'index' => 'name' )); - $this->addColumn('type', - array( - 'header'=> Mage::helper('catalog')->__('Type'), - 'width' => '100px', - 'index' => 'type_id', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), + $this->addColumn('type', array( + 'header' => Mage::helper('catalog')->__('Type'), + 'width' => 100, + 'index' => 'type_id', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), )); $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') @@ -145,73 +163,89 @@ protected function _prepareColumns() ->load() ->toOptionHash(); - $this->addColumn('set_name', - array( - 'header'=> Mage::helper('catalog')->__('Attrib. Set Name'), - 'width' => '130px', - 'index' => 'attribute_set_id', - 'type' => 'options', - 'options' => $sets, + $this->addColumn('set_name', array( + 'header' => Mage::helper('catalog')->__('Attrib. Set Name'), + 'width' => 130, + 'index' => 'attribute_set_id', + 'type' => 'options', + 'options' => $sets, )); - $this->addColumn('status', - array( - 'header'=> Mage::helper('catalog')->__('Status'), - 'width' => '90px', - 'index' => 'status', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), + $this->addColumn('status', array( + 'header' => Mage::helper('catalog')->__('Status'), + 'width' => 90, + 'index' => 'status', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), )); - $this->addColumn('visibility', - array( - 'header'=> Mage::helper('catalog')->__('Visibility'), - 'width' => '90px', - 'index' => 'visibility', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_visibility')->getOptionArray(), + $this->addColumn('visibility', array( + 'header' => Mage::helper('catalog')->__('Visibility'), + 'width' => 90, + 'index' => 'visibility', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_visibility')->getOptionArray(), )); $this->addColumn('sku', array( 'header' => Mage::helper('catalog')->__('SKU'), - 'width' => '80px', + 'width' => 80, 'index' => 'sku' )); + $this->addColumn('price', array( - 'header' => Mage::helper('catalog')->__('Price'), - 'type' => 'currency', + 'header' => Mage::helper('catalog')->__('Price'), + 'type' => 'currency', 'currency_code' => (string) Mage::getStoreConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE), - 'index' => 'price' + 'index' => 'price' )); $this->addColumn('position', array( - 'header' => Mage::helper('catalog')->__('Position'), - 'name' => 'position', - 'width' => '60px', - 'type' => 'number', - 'validate_class' => 'validate-number', - 'index' => 'position', - 'editable' => !$this->isReadonly(), - 'edit_only' => !$this->_getProduct()->getId() + 'header' => Mage::helper('catalog')->__('Position'), + 'name' => 'position', + 'width' => 60, + 'type' => 'number', + 'validate_class' => 'validate-number', + 'index' => 'position', + 'editable' => !$this->isReadonly(), + 'edit_only' => !$this->_getProduct()->getId() )); - - return parent::_prepareColumns(); } + /** + * Rerieve grid URL + * + * @return string + */ public function getGridUrl() { - return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/crosssell', array('_current'=>true)); + return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/crosssellGrid', array('_current'=>true)); } + /** + * Retrieve selected crosssell products + * + * @return array + */ protected function _getSelectedProducts() { - $products = $this->getRequest()->getPost('products', null); + $products = $this->getProductsCrossSell(); if (!is_array($products)) { - $products = $this->_getProduct()->getCrossSellProductIds(); + $products = $this->getSelectedCrossSellProducts(); } return $products; } + + /** + * Retrieve crosssell products + * + * @return array + */ + public function getSelectedCrossSellProducts() + { + return Mage::registry('current_product')->getCrossSellProductIds(); + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php index bdf569c05f..63c23c3bc8 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Option.php @@ -38,9 +38,6 @@ class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Options_Option extends Mage_ protected $_productInstance; - protected $_name = 'product[options]'; - protected $_id = 'product_option'; - protected $_values; protected $_itemCount = 1; @@ -86,14 +83,24 @@ public function setProduct($product) return $this; } + /** + * Retrieve options field name prefix + * + * @return string + */ public function getFieldName() { - return $this->_name; + return 'product[options]'; } + /** + * Retrieve options field id prefix + * + * @return string + */ public function getFieldId() { - return $this->_id; + return 'product_option'; } /** diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Type/Abstract.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Type/Abstract.php index 3fb72af344..2d38dffe35 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Type/Abstract.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Options/Type/Abstract.php @@ -44,10 +44,12 @@ protected function _prepareLayout() 'id' => 'product_option_{{option_id}}_price_type', 'class' => 'select product-option-price-type' )) - ->setName('product[options][{{option_id}}][price_type]') - ->setOptions(Mage::getSingleton('adminhtml/system_config_source_product_options_price')->toOptionArray()) ); + $this->getChild('option_price_type')->setName('product[options][{{option_id}}][price_type]') + ->setOptions(Mage::getSingleton('adminhtml/system_config_source_product_options_price') + ->toOptionArray()); + return parent::_prepareLayout(); } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price/Tier.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price/Tier.php index 10f9199c1d..654f4d8c54 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price/Tier.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price/Tier.php @@ -25,154 +25,273 @@ */ /** - * Adminhtml tier pricing item renderer + * Adminhtml tier price item renderer * * @category Mage * @package Mage_Adminhtml - * @author Magento Core Team + * @author Magento Core Team */ -class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Price_Tier extends Mage_Adminhtml_Block_Widget implements Varien_Data_Form_Element_Renderer_Interface +class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Price_Tier + extends Mage_Adminhtml_Block_Widget + implements Varien_Data_Form_Element_Renderer_Interface { + /** + * Form element instance + * + * @var Varien_Data_Form_Element + */ + protected $_element; + + /** + * Customer Groups cache + * + * @var array + */ + protected $_customerGroups; - protected $_element = null; - protected $_customerGroups = null; - protected $_websites = null; + /** + * Websites cache + * + * @var array + */ + protected $_websites; + /** + * Define tier price template file + * + */ public function __construct() { $this->setTemplate('catalog/product/edit/price/tier.phtml'); } + /** + * Retrieve current edit product instance + * + * @return Mage_Catalog_Model_Product + */ public function getProduct() { return Mage::registry('product'); } + /** + * Render HTML + * + * @param Varien_Data_Form_Element_Abstract $element + * @return string + */ public function render(Varien_Data_Form_Element_Abstract $element) { $this->setElement($element); return $this->toHtml(); } + /** + * Set form element instance + * + * @param Varien_Data_Form_Element_Abstract $element + * @return Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Price_Tier + */ public function setElement(Varien_Data_Form_Element_Abstract $element) { $this->_element = $element; return $this; } + /** + * Retrieve form element instance + * + * @return Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Price_Tier + */ public function getElement() { return $this->_element; } + /** + * Prepare Tier Price values + * + * @return array + */ public function getValues() { - $values =array(); - $data = $this->getElement()->getValue(); + $values = array(); + $data = $this->getElement()->getValue(); if (is_array($data)) { usort($data, array($this, '_sortTierPrices')); $values = $data; } + + foreach ($values as &$v) { + $v['readonly'] = $v['website_id'] == 0 && $this->isShowWebsiteColumn() && !$this->isAllowChangeWebsite(); + } + return $values; } + /** + * Sort tier price values callback method + * + * @param array $a + * @param array $b + * @return int + */ protected function _sortTierPrices($a, $b) { - if ($a['website_id']!=$b['website_id']) { - return $a['website_id']<$b['website_id'] ? -1 : 1; + if ($a['website_id'] != $b['website_id']) { + return $a['website_id'] < $b['website_id'] ? -1 : 1; } - if ($a['cust_group']!=$b['cust_group']) { - return $this->getCustomerGroups($a['cust_group'])<$this->getCustomerGroups($b['cust_group']) ? -1 : 1; + if ($a['cust_group'] != $b['cust_group']) { + return $this->getCustomerGroups($a['cust_group']) < $this->getCustomerGroups($b['cust_group']) ? -1 : 1; } - if ($a['price_qty']!=$b['price_qty']) { - return $a['price_qty']<$b['price_qty'] ? -1 : 1; + if ($a['price_qty'] != $b['price_qty']) { + return $a['price_qty'] < $b['price_qty'] ? -1 : 1; } + return 0; } - public function getCustomerGroups($groupId=null) + /** + * Retrieve allowed customer groups + * + * @param int $groupId return name by customer group id + * @return array|string + */ + public function getCustomerGroups($groupId = null) { - if (!$this->_customerGroups) { - $collection = Mage::getModel('customer/group')->getCollection() - ->load(); + if (is_null($this->_customerGroups)) { + $collection = Mage::getModel('customer/group')->getCollection(); $this->_customerGroups = array( - Mage_Customer_Model_Group::CUST_GROUP_ALL => Mage::helper('catalog')->__('ALL GROUPS'), + Mage_Customer_Model_Group::CUST_GROUP_ALL => Mage::helper('catalog')->__('ALL GROUPS') ); - foreach ($collection->getIterator() as $item) { + + foreach ($collection as $item) { + /* @var $item Mage_Customer_Model_Group */ $this->_customerGroups[$item->getId()] = $item->getCustomerGroupCode(); } } - return is_null($groupId) ? $this->_customerGroups : - (isset($this->_customerGroups[$groupId]) ? $this->_customerGroups[$groupId] : null); + + if (!is_null($groupId)) { + return isset($this->_customerGroups[$groupId]) ? $this->_customerGroups[$groupId] : null; + } + + return $this->_customerGroups; } + /** + * Retrieve count of websites + * + * @return int + */ public function getWebsiteCount() { return count($this->getWebsites()); } + /** + * Show Website column and switcher for tier price table + * + * @return bool + */ public function isMultiWebsites() { return !Mage::app()->isSingleStoreMode(); } + /** + * Retrieve allowed for edit websites + * + * @return array + */ public function getWebsites() { if (!is_null($this->_websites)) { return $this->_websites; } - $websites = array(); - $websites[0] = array( - 'name' => $this->__('All Websites'), - 'currency' => Mage::app()->getBaseCurrencyCode() + + $this->_websites = array( + 0 => array( + 'name' => Mage::helper('catalog')->__('All Websites'), + 'currency' => Mage::app()->getBaseCurrencyCode() + ) ); - if (Mage::app()->isSingleStoreMode() || $this->getElement()->getEntityAttribute()->isScopeGlobal()) { - return $websites; - } - elseif ($storeId = $this->getProduct()->getStoreId()) { - $website = Mage::app()->getStore($storeId)->getWebsite(); - $websites[$website->getId()] = array( + + if (!$this->isScopeGlobal() && $this->getProduct()->getStoreId()) { + /* @var $website Mage_Core_Model_Website */ + $website = Mage::app()->getStore($this->getProduct()->getStoreId())->getWebsite(); + + $this->_websites[$website->getId()] = array( 'name' => $website->getName(), - 'currency' => $website->getConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE), - ); - } - else { - $websites[0] = array( - 'name' => $this->__('All Websites'), - 'currency' => Mage::app()->getBaseCurrencyCode() + 'currency' => $website->getBaseCurrencyCode() ); - foreach (Mage::app()->getWebsites() as $website) { - if (!in_array($website->getId(), $this->getProduct()->getWebsiteIds())) { + } else if (!$this->isScopeGlobal()) { + $websites = Mage::app()->getWebsites(false); + $productWebsiteIds = $this->getProduct()->getWebsiteIds(); + foreach ($websites as $website) { + /* @var $website Mage_Core_Model_Website */ + if (!in_array($website->getId(), $productWebsiteIds)) { continue; } - $websites[$website->getId()] = array( + $this->_websites[$website->getId()] = array( 'name' => $website->getName(), - 'currency' => $website->getConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE), + 'currency' => $website->getBaseCurrencyCode() ); } } - $this->_websites = $websites; + return $this->_websites; } + /** + * Retrieve default value for customer group + * + * @return int + */ public function getDefaultCustomerGroup() { return Mage_Customer_Model_Group::CUST_GROUP_ALL; } + /** + * Retrieve default value for website + * + * @return int + */ + public function getDefaultWebsite() + { + if ($this->isShowWebsiteColumn() && !$this->isAllowChangeWebsite()) { + return Mage::app()->getStore($this->getProduct()->getStoreId())->getWebsiteId(); + } + return 0; + } + + /** + * Prepare global layout + * Add "Add tier" button to layout + * + * @return Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Price_Tier + */ protected function _prepareLayout() { - $this->setChild('add_button', - $this->getLayout()->createBlock('adminhtml/widget_button') - ->setData(array( - 'label' => Mage::helper('catalog')->__('Add Tier'), - 'onclick' => 'tierPriceControl.addItem()', - 'class' => 'add' - ))); + $button = $this->getLayout()->createBlock('adminhtml/widget_button') + ->setData(array( + 'label' => Mage::helper('catalog')->__('Add Tier'), + 'onclick' => 'return tierPriceControl.addItem()', + 'class' => 'add' + )); + $button->setName('add_tier_price_item_button'); + + $this->setChild('add_button', $button); return parent::_prepareLayout(); } + /** + * Retrieve Add Tier Price Item button HTML + * + * @return string + */ public function getAddButtonHtml() { return $this->getChildHtml('add_button'); @@ -193,4 +312,52 @@ public function getPriceColumnHeader($default) return $default; } } -} \ No newline at end of file + + /** + * Retrieve Tier Price entity attribute + * + * @return Mage_Catalog_Model_Resource_Eav_Attribute + */ + public function getAttribute() + { + return $this->getElement()->getEntityAttribute(); + } + + /** + * Check tier price attribute scope is global + * + * @return bool + */ + public function isScopeGlobal() + { + return $this->getAttribute()->isScopeGlobal(); + } + + /** + * Show tier prices grid website column + * + * @return bool + */ + public function isShowWebsiteColumn() + { + if ($this->isScopeGlobal()) { + return false; + } else if (Mage::app()->isSingleStoreMode()) { + return false; + } + return true; + } + + /** + * Check is allow change website value for combination + * + * @return bool + */ + public function isAllowChangeWebsite() + { + if (!$this->isShowWebsiteColumn() || $this->getProduct()->getStoreId()) { + return false; + } + return true; + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Related.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Related.php index 5f957300ea..50d351ad84 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Related.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Related.php @@ -33,6 +33,10 @@ */ class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Related extends Mage_Adminhtml_Block_Widget_Grid { + /** + * Set grid params + * + */ public function __construct() { parent::__construct(); @@ -54,6 +58,12 @@ protected function _getProduct() return Mage::registry('current_product'); } + /** + * Add filter + * + * @param object $column + * @return Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Related + */ protected function _addColumnFilterToCollection($column) { // Set custom filter for in product flag @@ -64,19 +74,22 @@ protected function _addColumnFilterToCollection($column) } if ($column->getFilter()->getValue()) { $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$productIds)); - } - else { + } else { if($productIds) { $this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$productIds)); } } - } - else { + } else { parent::_addColumnFilterToCollection($column); } return $this; } + /** + * Prepare collection + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ protected function _prepareCollection() { $collection = Mage::getModel('catalog/product_link')->useRelatedLinks() @@ -106,24 +119,28 @@ public function isReadonly() return $this->_getProduct()->getRelatedReadonly(); } - + /** + * Add columns to grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ protected function _prepareColumns() { if (!$this->isReadonly()) { $this->addColumn('in_products', array( - 'header_css_class' => 'a-center', - 'type' => 'checkbox', - 'name' => 'in_products', - 'values' => $this->_getSelectedProducts(), - 'align' => 'center', - 'index' => 'entity_id' + 'header_css_class' => 'a-center', + 'type' => 'checkbox', + 'name' => 'in_products', + 'values' => $this->_getSelectedProducts(), + 'align' => 'center', + 'index' => 'entity_id' )); } $this->addColumn('entity_id', array( 'header' => Mage::helper('catalog')->__('ID'), 'sortable' => true, - 'width' => '60px', + 'width' => 60, 'index' => 'entity_id' )); $this->addColumn('name', array( @@ -131,13 +148,12 @@ protected function _prepareColumns() 'index' => 'name' )); - $this->addColumn('type', - array( - 'header'=> Mage::helper('catalog')->__('Type'), - 'width' => '100px', - 'index' => 'type_id', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), + $this->addColumn('type', array( + 'header' => Mage::helper('catalog')->__('Type'), + 'width' => 100, + 'index' => 'type_id', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), )); $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') @@ -145,81 +161,88 @@ protected function _prepareColumns() ->load() ->toOptionHash(); - $this->addColumn('set_name', - array( - 'header'=> Mage::helper('catalog')->__('Attrib. Set Name'), - 'width' => '130px', - 'index' => 'attribute_set_id', - 'type' => 'options', - 'options' => $sets, + $this->addColumn('set_name', array( + 'header' => Mage::helper('catalog')->__('Attrib. Set Name'), + 'width' => 130, + 'index' => 'attribute_set_id', + 'type' => 'options', + 'options' => $sets, )); - $this->addColumn('status', - array( - 'header'=> Mage::helper('catalog')->__('Status'), - 'width' => '90px', - 'index' => 'status', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), + $this->addColumn('status', array( + 'header' => Mage::helper('catalog')->__('Status'), + 'width' => 90, + 'index' => 'status', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), )); - $this->addColumn('visibility', - array( - 'header'=> Mage::helper('catalog')->__('Visibility'), - 'width' => '90px', - 'index' => 'visibility', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_visibility')->getOptionArray(), + $this->addColumn('visibility', array( + 'header' => Mage::helper('catalog')->__('Visibility'), + 'width' => 90, + 'index' => 'visibility', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_visibility')->getOptionArray(), )); $this->addColumn('sku', array( 'header' => Mage::helper('catalog')->__('SKU'), - 'width' => '80px', + 'width' => 80, 'index' => 'sku' )); + $this->addColumn('price', array( - 'header' => Mage::helper('catalog')->__('Price'), - 'type' => 'currency', + 'header' => Mage::helper('catalog')->__('Price'), + 'type' => 'currency', 'currency_code' => (string) Mage::getStoreConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE), - 'index' => 'price' + 'index' => 'price' )); - /*$this->addColumn('qty', array( - 'header' => Mage::helper('catalog')->__('Default Qty'), - 'name' => 'qty', - 'align' => 'center', - 'type' => 'number', - 'validate_class' => 'validate-number', - 'index' => 'qty', - 'width' => '60px', - 'editable' => true - ));*/ - $this->addColumn('position', array( - 'header' => Mage::helper('catalog')->__('Position'), - 'name' => 'position', - 'type' => 'number', - 'validate_class' => 'validate-number', - 'index' => 'position', - 'width' => '60px', - 'editable' => !$this->isReadonly(), - 'edit_only' => !$this->_getProduct()->getId() + 'header' => Mage::helper('catalog')->__('Position'), + 'name' => 'position', + 'type' => 'number', + 'validate_class' => 'validate-number', + 'index' => 'position', + 'width' => 60, + 'editable' => !$this->isReadonly(), + 'edit_only' => !$this->_getProduct()->getId() )); return parent::_prepareColumns(); } + /** + * Rerieve grid URL + * + * @return string + */ public function getGridUrl() { - return $this->getData('grid_url') ? $this->getData('grid_url') : $this->getUrl('*/*/related', array('_current'=>true)); + return $this->getData('grid_url') ? $this->getData('grid_url') : $this->getUrl('*/*/relatedGrid', array('_current'=>true)); } + /** + * Retrieve selected related products + * + * @return array + */ protected function _getSelectedProducts() { - $products = $this->getRequest()->getPost('products', null); + $products = $this->getProductsRelated(); if (!is_array($products)) { - $products = $this->_getProduct()->getRelatedProductIds(); + $products = $this->getSelectedRelatedProducts(); } return $products; } + + /** + * Retrieve related products + * + * @return array + */ + public function getSelectedRelatedProducts() + { + return Mage::registry('current_product')->getRelatedProductIds(); + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Config/Grid/Filter/Inventory.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Config/Grid/Filter/Inventory.php index 732a343b8e..a948597e47 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Config/Grid/Filter/Inventory.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Config/Grid/Filter/Inventory.php @@ -40,7 +40,7 @@ protected function _getOptions() return array( array( 'value' => '', - 'label' => Mage::helper('catalog')->__('') + 'label' => '' ), array( 'value' => 1, diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php index 551b07c022..9d2bd64756 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Super/Group.php @@ -164,18 +164,34 @@ protected function _prepareColumns() public function getGridUrl() { - return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/superGroup', array('_current'=>true)); + return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/superGroupGridOnly', array('_current'=>true)); } + /** + * Retrieve selected grouped products + * + * @return array + */ protected function _getSelectedProducts() { - $products = $this->getRequest()->getPost('products', null); + $products = $this->getProductsGrouped(); if (!is_array($products)) { - $products = $this->_getProduct()->getTypeInstance(true)->getAssociatedProductIds($this->_getProduct()); + $products = $this->getSelectedGroupedProducts(); } return $products; } + /** + * Retrieve grouped products + * + * @return array + */ + public function getSelectedGroupedProducts() + { + return Mage::registry('current_product')->getTypeInstance(true) + ->getAssociatedProductIds(Mage::registry('current_product')); + } + public function getTabLabel() { return Mage::helper('catalog')->__('Associated Products'); diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag.php index f46288f744..caa5f4df25 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag.php @@ -45,11 +45,10 @@ public function __construct() protected function _prepareCollection() { - $tagId = Mage::registry('tagId'); $collection = Mage::getModel('tag/tag') ->getResourceCollection() ->addProductFilter($this->getProductId()) - ->addPopularity($tagId); + ->addPopularity(); $this->setCollection($collection); return parent::_prepareCollection(); @@ -80,7 +79,7 @@ protected function _prepareColumns() 'width' => '90px', 'index' => 'status', 'type' => 'options', - 'options' => array( + 'options' => array( Mage_Tag_Model_Tag::STATUS_DISABLED => Mage::helper('catalog')->__('Disabled'), Mage_Tag_Model_Tag::STATUS_PENDING => Mage::helper('catalog')->__('Pending'), Mage_Tag_Model_Tag::STATUS_APPROVED => Mage::helper('catalog')->__('Approved'), @@ -93,17 +92,17 @@ protected function _prepareColumns() protected function getRowUrl($row) { return $this->getUrl('*/tag/edit', array( - 'tag_id' => $row->getId(), - 'product_id' => $this->getProductId(), + 'tag_id' => $row->getId(), + 'product_id' => $this->getProductId(), )); } public function getGridUrl() { return $this->getUrl('*/catalog_product/tagGrid', array( - '_current' => true, - 'id' => $this->getProductId(), - 'product_id' => $this->getProductId(), + '_current' => true, + 'id' => $this->getProductId(), + 'product_id' => $this->getProductId(), )); } } \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag/Customer.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag/Customer.php index 2688a679dc..648bdb37df 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag/Customer.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Tag/Customer.php @@ -49,7 +49,8 @@ protected function _prepareCollection() $collection = Mage::getModel('tag/tag') ->getCustomerCollection() ->addProductFilter($this->getProductId()) - ->addGroupByTag(); + ->addGroupByTag() + ->addDescOrder(); $this->setCollection($collection); return parent::_prepareCollection(); @@ -87,10 +88,7 @@ protected function _prepareColumns() protected function getRowUrl($row) { - return $this->getUrl('*/tag/edit', array( - 'tag_id' => $row->getTagId(), - 'product_id' => $this->getProductId(), - )); + return $this->getUrl('*/customer/edit', array('id' => $row->getCustomerId())); } public function getGridUrl() diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Upsell.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Upsell.php index ba48494b5b..c3c0920305 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Upsell.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Upsell.php @@ -34,6 +34,10 @@ class Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Upsell extends Mage_Adminhtml_Block_Widget_Grid { + /** + * Set grid params + * + */ public function __construct() { parent::__construct(); @@ -55,6 +59,12 @@ protected function _getProduct() return Mage::registry('current_product'); } + /** + * Add filter + * + * @param object $column + * @return Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Upsell + */ protected function _addColumnFilterToCollection($column) { // Set custom filter for in product flag @@ -65,14 +75,12 @@ protected function _addColumnFilterToCollection($column) } if ($column->getFilter()->getValue()) { $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$productIds)); - } - else { + } else { if($productIds) { $this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$productIds)); } } - } - else { + } else { parent::_addColumnFilterToCollection($column); } return $this; @@ -88,6 +96,11 @@ public function isReadonly() return $this->_getProduct()->getUpsellReadonly(); } + /** + * Prepare collection + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ protected function _prepareCollection() { $collection = Mage::getModel('catalog/product_link')->useUpSellLinks() @@ -107,6 +120,11 @@ protected function _prepareCollection() return parent::_prepareCollection(); } + /** + * Add columns to grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ protected function _prepareColumns() { if (!$this->_getProduct()->getUpsellReadonly()) { @@ -123,7 +141,7 @@ protected function _prepareColumns() $this->addColumn('entity_id', array( 'header' => Mage::helper('catalog')->__('ID'), 'sortable' => true, - 'width' => '60px', + 'width' => 60, 'index' => 'entity_id' )); $this->addColumn('name', array( @@ -131,13 +149,12 @@ protected function _prepareColumns() 'index' => 'name' )); - $this->addColumn('type', - array( - 'header'=> Mage::helper('catalog')->__('Type'), - 'width' => '100px', - 'index' => 'type_id', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), + $this->addColumn('type', array( + 'header' => Mage::helper('catalog')->__('Type'), + 'width' => 100, + 'index' => 'type_id', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), )); $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') @@ -145,71 +162,89 @@ protected function _prepareColumns() ->load() ->toOptionHash(); - $this->addColumn('set_name', - array( - 'header'=> Mage::helper('catalog')->__('Attrib. Set Name'), - 'width' => '130px', - 'index' => 'attribute_set_id', - 'type' => 'options', - 'options' => $sets, + $this->addColumn('set_name', array( + 'header' => Mage::helper('catalog')->__('Attrib. Set Name'), + 'width' => 130, + 'index' => 'attribute_set_id', + 'type' => 'options', + 'options' => $sets, )); - $this->addColumn('status', - array( - 'header'=> Mage::helper('catalog')->__('Status'), - 'width' => '90px', - 'index' => 'status', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), + $this->addColumn('status', array( + 'header' => Mage::helper('catalog')->__('Status'), + 'width' => 90, + 'index' => 'status', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), )); - $this->addColumn('visibility', - array( - 'header'=> Mage::helper('catalog')->__('Visibility'), - 'width' => '90px', - 'index' => 'visibility', - 'type' => 'options', - 'options' => Mage::getSingleton('catalog/product_visibility')->getOptionArray(), + $this->addColumn('visibility', array( + 'header' => Mage::helper('catalog')->__('Visibility'), + 'width' => 90, + 'index' => 'visibility', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_visibility')->getOptionArray(), )); $this->addColumn('sku', array( 'header' => Mage::helper('catalog')->__('SKU'), - 'width' => '80px', + 'width' => 80, 'index' => 'sku' )); + $this->addColumn('price', array( - 'header' => Mage::helper('catalog')->__('Price'), - 'type' => 'currency', + 'header' => Mage::helper('catalog')->__('Price'), + 'type' => 'currency', 'currency_code' => (string) Mage::getStoreConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_BASE), - 'index' => 'price' + 'index' => 'price' )); $this->addColumn('position', array( - 'header' => Mage::helper('catalog')->__('Position'), - 'name' => 'position', - 'type' => 'number', - 'width' => '60px', - 'validate_class' => 'validate-number', - 'index' => 'position', - 'editable' => !$this->_getProduct()->getUpsellReadonly(), - 'edit_only' => !$this->_getProduct()->getId() + 'header' => Mage::helper('catalog')->__('Position'), + 'name' => 'position', + 'type' => 'number', + 'width' => 60, + 'validate_class' => 'validate-number', + 'index' => 'position', + 'editable' => !$this->_getProduct()->getUpsellReadonly(), + 'edit_only' => !$this->_getProduct()->getId() )); return parent::_prepareColumns(); } + /** + * Rerieve grid URL + * + * @return string + */ public function getGridUrl() { - return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/upsell', array('_current'=>true)); + return $this->_getData('grid_url') ? $this->_getData('grid_url') : $this->getUrl('*/*/upsellGrid', array('_current'=>true)); } + /** + * Retrieve selected upsell products + * + * @return array + */ protected function _getSelectedProducts() { - $products = $this->getRequest()->getPost('products', null); + $products = $this->getProductsUpsell(); if (!is_array($products)) { - $products = $this->_getProduct()->getUpSellProductIds(); + $products = $this->getSelectedUpsellProducts(); } return $products; } + /** + * Retrieve upsell products + * + * @return array + */ + public function getSelectedUpsellProducts() + { + return Mage::registry('current_product')->getUpSellProductIds(); + } + } diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Widget/Chooser.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Widget/Chooser.php new file mode 100644 index 0000000000..92d0ecc79a --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Widget/Chooser.php @@ -0,0 +1,288 @@ + + */ +class Mage_Adminhtml_Block_Catalog_Product_Widget_Chooser extends Mage_Adminhtml_Block_Widget_Grid +{ + protected $_selectedProducts = array(); + + /** + * Block construction, prepare grid params + * + * @param array $arguments Object data + */ + public function __construct($arguments=array()) + { + parent::__construct($arguments); + $this->setDefaultSort('name'); + $this->setUseAjax(true); + } + + /** + * Prepare chooser element HTML + * + * @param Varien_Data_Form_Element_Abstract $element Form Element + * @return Varien_Data_Form_Element_Abstract + */ + public function prepareElementHtml(Varien_Data_Form_Element_Abstract $element) + { + $uniqId = $element->getId() . md5(microtime()); + $sourceUrl = $this->getUrl('*/catalog_product_widget/chooser', array( + 'uniq_id' => $uniqId, + 'use_massaction' => false, + )); + + $chooser = $this->getLayout()->createBlock('adminhtml/cms_widget_chooser') + ->setElement($element) + ->setTranslationHelper($this->getTranslationHelper()) + ->setConfig($this->getConfig()) + ->setFieldsetId($this->getFieldsetId()) + ->setSourceUrl($sourceUrl) + ->setUniqId($uniqId); + + + if ($element->getValue()) { + $value = explode('/', $element->getValue()); + $productId = isset($value[1]) ? $value[1] : false; + $categoryId = isset($value[2]) ? $value[2] : false; + $label = ''; + if ($categoryId) { + $label = Mage::getSingleton('catalog/category')->load($categoryId)->getName() . ' / ' . $label; + } + if ($productId) { + $label .= Mage::getSingleton('catalog/product')->load($productId)->getName(); + } + $chooser->setLabel($label); + } + + $element->setData('after_element_html', $chooser->toHtml()); + return $element; + } + + /** + * Checkbox Check JS Callback + * + * @return string + */ + public function getCheckboxCheckCallback() + { + if ($this->getUseMassaction()) { + return "function (grid, event) { + $(grid.containerId).fire('product:changed', {}); + }"; + } + } + + /** + * Grid Row JS Callback + * + * @return string + */ + public function getRowClickCallback() + { + if (!$this->getUseMassaction()) { + $chooserJsObject = $this->getId(); + return ' + function (grid, event) { + var trElement = Event.findElement(event, "tr"); + var productId = trElement.down("td").innerHTML; + var productName = trElement.down("td").next().next().innerHTML; + var optionLabel = productName; + var optionValue = "product/" + productId; + if (grid.categoryId) { + optionValue += "/" + grid.categoryId; + } + if (grid.categoryName) { + optionLabel = grid.categoryName + " / " + optionLabel; + } + '.$chooserJsObject.'.setElementValue(optionValue); + '.$chooserJsObject.'.setElementLabel(optionLabel); + '.$chooserJsObject.'.close(); + } + '; + } + } + + /** + * Category Tree node onClick listener js function + * + * @return string + */ + public function getCategoryClickListenerJs() + { + $js = ' + function (node, e) { + {jsObject}.addVarToUrl("category_id", node.attributes.id); + {jsObject}.reload({jsObject}.url); + {jsObject}.categoryId = node.attributes.id; + {jsObject}.categoryName = node.text; + } + '; + $js = str_replace('{jsObject}', $this->getJsObjectName(), $js); + return $js; + } + + /** + * Filter checked/unchecked rows in grid + * + * @param Mage_Adminhtml_Block_Widget_Grid_Column $column + * @return Mage_Adminhtml_Block_Catalog_Product_Widget_Chooser + */ + protected function _addColumnFilterToCollection($column) + { + if ($column->getId() == 'in_products') { + $selected = $this->getSelectedProducts(); + if ($column->getFilter()->getValue()) { + $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$selected)); + } else { + $this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$selected)); + } + } else { + parent::_addColumnFilterToCollection($column); + } + return $this; + } + + /** + * Prepare products collection, defined collection filters (category, product type) + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareCollection() + { + /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection */ + $collection = Mage::getResourceModel('catalog/product_collection') + ->setStoreId(0) + ->addAttributeToSelect('name'); + + if ($categoryId = $this->getCategoryId()) { + $category = Mage::getModel('catalog/category')->load($categoryId); + // $collection->addCategoryFilter($category); + $productIds = $category->getProductsPosition(); + $productIds = array_keys($productIds); + if (empty($productIds)) { + $productIds = 0; + } + $collection->addFieldToFilter('entity_id', array('in' => $productIds)); + } + + if ($productTypeId = $this->getProductTypeId()) { + $collection->addAttributeToFilter('type_id', $productTypeId); + } + + $this->setCollection($collection); + return parent::_prepareCollection(); + } + + /** + * Prepare columns for products grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareColumns() + { + if ($this->getUseMassaction()) { + $this->addColumn('in_products', array( + 'header_css_class' => 'a-center', + 'type' => 'checkbox', + 'name' => 'in_products', + 'inline_css' => 'checkbox entities', + 'field_name' => 'in_products', + 'values' => $this->getSelectedProducts(), + 'align' => 'center', + 'index' => 'entity_id', + 'use_index' => true, + )); + } + + $this->addColumn('entity_id', array( + 'header' => Mage::helper('catalog')->__('ID'), + 'sortable' => true, + 'width' => '60px', + 'index' => 'entity_id' + )); + $this->addColumn('chooser_sku', array( + 'header' => Mage::helper('catalog')->__('SKU'), + 'name' => 'chooser_sku', + 'width' => '80px', + 'index' => 'sku' + )); + $this->addColumn('chooser_name', array( + 'header' => Mage::helper('catalog')->__('Product Name'), + 'name' => 'chooser_name', + 'index' => 'name' + )); + + return parent::_prepareColumns(); + } + + /** + * Adds additional parameter to URL for loading only products grid + * + * @return string + */ + public function getGridUrl() + { + return $this->getUrl('*/catalog_product_widget/chooser', array( + 'products_grid' => true, + '_current' => true, + 'uniq_id' => $this->getId(), + 'use_massaction' => $this->getUseMassaction(), + 'product_type_id' => $this->getProductTypeId() + )); + } + + /** + * Setter + * + * @param array $selectedProducts + * @return Mage_Adminhtml_Block_Catalog_Product_Widget_Chooser + */ + public function setSelectedProducts($selectedProducts) + { + $this->_selectedProducts = $selectedProducts; + return $this; + } + + /** + * Getter + * + * @return array + */ + public function getSelectedProducts() + { + if ($selectedProducts = $this->getRequest()->getParam('selected_products', null)) { + $this->setSelectedProducts($selectedProducts); + } + return $this->_selectedProducts; + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php index a7271a0a5f..da9e6eaf91 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Edit/Form.php @@ -122,8 +122,8 @@ protected function _prepareForm() . Mage::helper('catalog')->__('(Will make search for the query above return results for this search.)') . '

'; - $fieldset->addField('synonim_for', 'text', array( - 'name' => 'synonim_for', + $fieldset->addField('synonym_for', 'text', array( + 'name' => 'synonym_for', 'label' => Mage::helper('catalog')->__('Synonym For'), 'title' => Mage::helper('catalog')->__('Synonym For'), 'after_element_html' => $afterElementHtml, @@ -137,6 +137,7 @@ protected function _prepareForm() 'name' => 'redirect', 'label' => Mage::helper('catalog')->__('Redirect URL'), 'title' => Mage::helper('catalog')->__('Redirect URL'), + 'class' => 'validate-url', 'after_element_html' => $afterElementHtml, )); diff --git a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php index c03b8a9965..67d8ed9526 100644 --- a/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Catalog/Search/Grid.php @@ -100,10 +100,10 @@ protected function _prepareColumns() 'type' => 'number' )); - $this->addColumn('synonim_for', array( + $this->addColumn('synonym_for', array( 'header' => Mage::helper('catalog')->__('Synonym for'), 'align' => 'left', - 'index' => 'synonim_for', + 'index' => 'synonym_for', 'width' => '160px' )); diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Block/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/Cms/Block/Edit/Form.php index 3c162c8fc2..86de942ba2 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Block/Edit/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Block/Edit/Form.php @@ -45,6 +45,17 @@ public function __construct() $this->setTitle(Mage::helper('cms')->__('Block Information')); } + /** + * Load Wysiwyg on demand and Prepare layout + */ + protected function _prepareLayout() + { + parent::_prepareLayout(); + if (Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) { + $this->getLayout()->getBlock('head')->setCanLoadTinyMce(true); + } + } + protected function _prepareForm() { $model = Mage::registry('cms_block'); @@ -112,8 +123,8 @@ protected function _prepareForm() 'label' => Mage::helper('cms')->__('Content'), 'title' => Mage::helper('cms')->__('Content'), 'style' => 'height:36em', - 'wysiwyg' => false, 'required' => true, + 'config' => Mage::getSingleton('cms/wysiwyg_config')->getConfig() )); $form->setValues($model->getData()); diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Block/Widget/Chooser.php b/app/code/core/Mage/Adminhtml/Block/Cms/Block/Widget/Chooser.php new file mode 100644 index 0000000000..79ed5c9148 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Block/Widget/Chooser.php @@ -0,0 +1,158 @@ + + */ +class Mage_Adminhtml_Block_Cms_Block_Widget_Chooser extends Mage_Adminhtml_Block_Widget_Grid +{ + /** + * Block construction, prepare grid params + * + * @param array $arguments Object data + */ + public function __construct($arguments=array()) + { + parent::__construct($arguments); + $this->setDefaultSort('block_identifier'); + $this->setDefaultDir('ASC'); + $this->setUseAjax(true); + } + + /** + * Prepare chooser element HTML + * + * @param Varien_Data_Form_Element_Abstract $element Form Element + * @return Varien_Data_Form_Element_Abstract + */ + public function prepareElementHtml(Varien_Data_Form_Element_Abstract $element) + { + $uniqId = $element->getId() . md5(microtime()); + $sourceUrl = $this->getUrl('*/cms_block_widget/chooser', array('uniq_id' => $uniqId)); + + $chooser = $this->getLayout()->createBlock('adminhtml/cms_widget_chooser') + ->setElement($element) + ->setTranslationHelper($this->getTranslationHelper()) + ->setConfig($this->getConfig()) + ->setFieldsetId($this->getFieldsetId()) + ->setSourceUrl($sourceUrl) + ->setUniqId($uniqId); + + + if ($element->getValue()) { + $block = Mage::getModel('cms/block')->load($element->getValue()); + if ($block->getId()) { + $chooser->setLabel($block->getTitle()); + } + } + + $element->setData('after_element_html', $chooser->toHtml()); + return $element; + } + + /** + * Grid Row JS Callback + * + * @return string + */ + public function getRowClickCallback() + { + $chooserJsObject = $this->getId(); + $js = ' + function (grid, event) { + var trElement = Event.findElement(event, "tr"); + var blockId = trElement.down("td").innerHTML; + var blockTitle = trElement.down("td").next().innerHTML; + '.$chooserJsObject.'.setElementValue(blockId); + '.$chooserJsObject.'.setElementLabel(blockTitle); + '.$chooserJsObject.'.close(); + } + '; + return $js; + } + + /** + * Prepare Cms static blocks collection + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareCollection() + { + $collection = Mage::getModel('cms/block')->getCollection(); + /* @var $collection Mage_Cms_Model_Mysql4_Block_Collection */ + $this->setCollection($collection); + return parent::_prepareCollection(); + } + + /** + * Prepare columns for Cms blocks grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareColumns() + { + $this->addColumn('chooser_id', array( + 'header' => Mage::helper('cms')->__('ID'), + 'align' => 'right', + 'index' => 'block_id', + 'width' => 50 + )); + + $this->addColumn('chooser_title', array( + 'header' => Mage::helper('cms')->__('Title'), + 'align' => 'left', + 'index' => 'title', + )); + + $this->addColumn('chooser_identifier', array( + 'header' => Mage::helper('cms')->__('Identifier'), + 'align' => 'left', + 'index' => 'identifier' + )); + + + $this->addColumn('chooser_is_active', array( + 'header' => Mage::helper('cms')->__('Status'), + 'index' => 'is_active', + 'type' => 'options', + 'options' => array( + 0 => Mage::helper('cms')->__('Disabled'), + 1 => Mage::helper('cms')->__('Enabled') + ), + )); + + return parent::_prepareColumns(); + } + + public function getGridUrl() + { + return $this->getUrl('*/cms_block_widget/chooser', array('_current' => true)); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page.php index 81af057660..b0a439dd18 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page.php @@ -42,8 +42,26 @@ public function __construct() { $this->_controller = 'cms_page'; $this->_headerText = Mage::helper('cms')->__('Manage Pages'); - $this->_addButtonLabel = Mage::helper('cms')->__('Add New Page'); + parent::__construct(); + + if ($this->_isAllowedAction('save')) { + $this->_updateButton('add', 'label', Mage::helper('cms')->__('Add New Page')); + } else { + $this->_removeButton('add'); + } + + } + + /** + * Check permission for passed action + * + * @param string $action + * @return bool + */ + protected function _isAllowedAction($action) + { + return Mage::getSingleton('admin/session')->isAllowed('cms/page/' . $action); } } diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit.php index 7f96bebac9..55f0ec0bf4 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit.php @@ -41,14 +41,22 @@ public function __construct() parent::__construct(); - $this->_updateButton('save', 'label', Mage::helper('cms')->__('Save Page')); - $this->_updateButton('delete', 'label', Mage::helper('cms')->__('Delete Page')); + if ($this->_isAllowedAction('save')) { + $this->_updateButton('save', 'label', Mage::helper('cms')->__('Save Page')); + $this->_addButton('saveandcontinue', array( + 'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'), + 'onclick' => 'saveAndContinueEdit()', + 'class' => 'save', + ), -100); + } else { + $this->_removeButton('save'); + } - $this->_addButton('saveandcontinue', array( - 'label' => Mage::helper('adminhtml')->__('Save And Continue Edit'), - 'onclick' => 'saveAndContinueEdit()', - 'class' => 'save', - ), -100); + if ($this->_isAllowedAction('delete')) { + $this->_updateButton('delete', 'label', Mage::helper('cms')->__('Delete Page')); + } else { + $this->_removeButton('delete'); + } $this->_formScripts[] = " function toggleEditor() { @@ -65,6 +73,11 @@ function saveAndContinueEdit(){ "; } + /** + * Retrieve text for header element depending on loaded page + * + * @return string + */ public function getHeaderText() { if (Mage::registry('cms_page')->getId()) { @@ -75,4 +88,14 @@ public function getHeaderText() } } -} \ No newline at end of file + /** + * Check permission for passed action + * + * @param string $action + * @return bool + */ + protected function _isAllowedAction($action) + { + return Mage::getSingleton('admin/session')->isAllowed('cms/page/' . $action); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php new file mode 100644 index 0000000000..65e14001b3 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php @@ -0,0 +1,146 @@ + + */ + +class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Content + extends Mage_Adminhtml_Block_Widget_Form + implements Mage_Adminhtml_Block_Widget_Tab_Interface +{ + /** + * Load Wysiwyg on demand and Prepare layout + */ + protected function _prepareLayout() + { + parent::_prepareLayout(); + if (Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) { + $this->getLayout()->getBlock('head')->setCanLoadTinyMce(true); + } + } + + protected function _prepareForm() + { + /** @var $model Mage_Cms_Model_Page */ + $model = Mage::registry('cms_page'); + + /* + * Checking if user have permissions to save information + */ + if ($this->_isAllowedAction('save')) { + $isElementDisabled = false; + } else { + $isElementDisabled = true; + } + + + $form = new Varien_Data_Form(); + + $form->setHtmlIdPrefix('page_'); + + $fieldset = $form->addFieldset('content_fieldset', array('legend'=>Mage::helper('cms')->__('Content'),'class'=>'fieldset-wide')); + + $wysiwygConfig = Mage::getSingleton('cms/wysiwyg_config')->getConfig( + array('tab_id' => $this->getTabId()) + ); + + $contentField = $fieldset->addField('content', 'editor', array( + 'name' => 'content', + 'style' => 'width:99.15% !important; height:36em;', + 'required' => true, + 'disabled' => $isElementDisabled, + 'config' => $wysiwygConfig + )); + + // Setting custom renderer for content field to remove label column + $renderer = $this->getLayout()->createBlock('adminhtml/widget_form_renderer_fieldset_element') + ->setTemplate('cms/page/edit/form/renderer/content.phtml'); + $contentField->setRenderer($renderer); + + $form->setValues($model->getData()); + $this->setForm($form); + + Mage::dispatchEvent('adminhtml_cms_page_edit_tab_content_prepare_form', array('form' => $form)); + + return parent::_prepareForm(); + } + + /** + * Prepare label for tab + * + * @return string + */ + public function getTabLabel() + { + return Mage::helper('cms')->__('Content'); + } + + /** + * Prepare title for tab + * + * @return string + */ + public function getTabTitle() + { + return Mage::helper('cms')->__('Content'); + } + + /** + * Returns status flag about this tab can be shown or not + * + * @return true + */ + public function canShowTab() + { + return true; + } + + /** + * Returns status flag about this tab hidden or not + * + * @return true + */ + public function isHidden() + { + return false; + } + + /** + * Check permission for passed action + * + * @param string $action + * @return bool + */ + protected function _isAllowedAction($action) + { + return Mage::getSingleton('admin/session')->isAllowed('cms/page/' . $action); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php index 63c7e1c207..ae4efb32ec 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php @@ -23,7 +23,9 @@ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ -class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Design extends Mage_Adminhtml_Block_Widget_Form +class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Design + extends Mage_Adminhtml_Block_Widget_Form + implements Mage_Adminhtml_Block_Widget_Tab_Interface { public function __construct() { @@ -31,53 +33,94 @@ public function __construct() $this->setShowGlobalIcon(true); } - public function _prepareForm() + protected function _prepareForm() { + /* + * Checking if user have permissions to save information + */ + if ($this->_isAllowedAction('save')) { + $isElementDisabled = false; + } else { + $isElementDisabled = true; + } + $form = new Varien_Data_Form(); $form->setHtmlIdPrefix('page_'); $model = Mage::registry('cms_page'); - $fieldset = $form->addFieldset('design_fieldset', array( - 'legend' => Mage::helper('cms')->__('Custom Design'), + $layoutFieldset = $form->addFieldset('layout_fieldset', array( + 'legend' => Mage::helper('cms')->__('Page Layout'), 'class' => 'fieldset-wide', + 'disabled' => $isElementDisabled )); - $fieldset->addField('custom_theme', 'select', array( - 'name' => 'custom_theme', - 'label' => Mage::helper('cms')->__('Custom Theme'), - 'values' => Mage::getModel('core/design_source_design')->getAllOptions(), + $layoutFieldset->addField('root_template', 'select', array( + 'name' => 'root_template', + 'label' => Mage::helper('cms')->__('Layout'), + 'required' => true, + 'values' => Mage::getSingleton('page/source_layout')->toOptionArray(), + 'disabled' => $isElementDisabled + )); + + $layoutFieldset->addField('layout_update_xml', 'textarea', array( + 'name' => 'layout_update_xml', + 'label' => Mage::helper('cms')->__('Layout Update XML'), + 'style' => 'height:24em;', + 'disabled' => $isElementDisabled + )); + + $designFieldset = $form->addFieldset('design_fieldset', array( + 'legend' => Mage::helper('cms')->__('Custom Design'), + 'class' => 'fieldset-wide', + 'disabled' => $isElementDisabled )); - $fieldset->addField('custom_theme_from', 'date', array( + $dateFormatIso = Mage::app()->getLocale()->getDateFormat( + Mage_Core_Model_Locale::FORMAT_TYPE_SHORT + ); + + $designFieldset->addField('custom_theme_from', 'date', array( 'name' => 'custom_theme_from', - 'label' => Mage::helper('cms')->__('Custom Theme From'), + 'label' => Mage::helper('cms')->__('Custom Design From'), 'image' => $this->getSkinUrl('images/grid-cal.gif'), - 'format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT) + 'format' => $dateFormatIso, + 'disabled' => $isElementDisabled )); - $fieldset->addField('custom_theme_to', 'date', array( + $designFieldset->addField('custom_theme_to', 'date', array( 'name' => 'custom_theme_to', - 'label' => Mage::helper('cms')->__('Custom Theme To'), + 'label' => Mage::helper('cms')->__('Custom Design To'), 'image' => $this->getSkinUrl('images/grid-cal.gif'), - 'format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT) + 'format' => $dateFormatIso, + 'disabled' => $isElementDisabled + )); + + $designFieldset->addField('custom_theme', 'select', array( + 'name' => 'custom_theme', + 'label' => Mage::helper('cms')->__('Custom Theme'), + 'values' => Mage::getModel('core/design_source_design')->getAllOptions(), + 'disabled' => $isElementDisabled )); - $fieldset->addField('root_template', 'select', array( - 'name' => 'root_template', - 'label' => Mage::helper('cms')->__('Layout'), - 'required' => true, - 'values' => Mage::getSingleton('page/source_layout')->toOptionArray(), + $designFieldset->addField('custom_root_template', 'select', array( + 'name' => 'custom_root_template', + 'label' => Mage::helper('cms')->__('Custom Layout'), + 'values' => Mage::getSingleton('page/source_layout')->toOptionArray(true), + 'disabled' => $isElementDisabled )); - $fieldset->addField('layout_update_xml', 'editor', array( - 'name' => 'layout_update_xml', - 'label' => Mage::helper('cms')->__('Layout Update XML'), - 'style' => 'height:24em;' + $designFieldset->addField('custom_layout_update_xml', 'textarea', array( + 'name' => 'custom_layout_update_xml', + 'label' => Mage::helper('cms')->__('Custom Layout Update XML'), + 'style' => 'height:24em;', + 'disabled' => $isElementDisabled )); + Mage::dispatchEvent('adminhtml_cms_page_edit_tab_design_prepare_form', array('form' => $form)); + $form->setValues($model->getData()); $this->setForm($form); @@ -85,4 +128,54 @@ public function _prepareForm() return parent::_prepareForm(); } + /** + * Prepare label for tab + * + * @return string + */ + public function getTabLabel() + { + return Mage::helper('cms')->__('Design'); + } + + /** + * Prepare title for tab + * + * @return string + */ + public function getTabTitle() + { + return Mage::helper('cms')->__('Design'); + } + + /** + * Returns status flag about this tab can be showen or not + * + * @return true + */ + public function canShowTab() + { + return true; + } + + /** + * Returns status flag about this tab hidden or not + * + * @return true + */ + public function isHidden() + { + return false; + } + + /** + * Check permission for passed action + * + * @param string $action + * @return bool + */ + protected function _isAllowedAction($action) + { + return Mage::getSingleton('admin/session')->isAllowed('cms/page/' . $action); + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php index aa584e3dff..8e76726d8a 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php @@ -32,39 +32,53 @@ * @author Magento Core Team */ -class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Main extends Mage_Adminhtml_Block_Widget_Form +class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Main + extends Mage_Adminhtml_Block_Widget_Form + implements Mage_Adminhtml_Block_Widget_Tab_Interface { - protected function _prepareForm() - {/** @var Cms_Model_Page */ + { + /* @var $model Mage_Cms_Model_Page */ $model = Mage::registry('cms_page'); + /* + * Checking if user have permissions to save information + */ + if ($this->_isAllowedAction('save')) { + $isElementDisabled = false; + } else { + $isElementDisabled = true; + } + + $form = new Varien_Data_Form(); $form->setHtmlIdPrefix('page_'); - $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('cms')->__('General Information'),'class'=>'fieldset-wide')); + $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('cms')->__('Page Information'),'class'=>'fieldset-wide')); if ($model->getPageId()) { - $fieldset->addField('page_id', 'hidden', array( + $fieldset->addField('page_id', 'hidden', array( 'name' => 'page_id', )); } - $fieldset->addField('title', 'text', array( + $fieldset->addField('title', 'text', array( 'name' => 'title', 'label' => Mage::helper('cms')->__('Page Title'), 'title' => Mage::helper('cms')->__('Page Title'), 'required' => true, + 'disabled' => $isElementDisabled )); - $fieldset->addField('identifier', 'text', array( + $fieldset->addField('identifier', 'text', array( 'name' => 'identifier', - 'label' => Mage::helper('cms')->__('SEF URL Identifier'), - 'title' => Mage::helper('cms')->__('SEF URL Identifier'), + 'label' => Mage::helper('cms')->__('URL Key'), + 'title' => Mage::helper('cms')->__('URL Key'), 'required' => true, 'class' => 'validate-identifier', 'after_element_html' => '

' . Mage::helper('cms')->__('(eg: domain.com/identifier)') . '

', + 'disabled' => $isElementDisabled )); /** @@ -77,6 +91,7 @@ protected function _prepareForm() 'title' => Mage::helper('cms')->__('Store View'), 'required' => true, 'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true), + 'disabled' => $isElementDisabled )); } else { @@ -87,30 +102,71 @@ protected function _prepareForm() $model->setStoreId(Mage::app()->getStore(true)->getId()); } - $fieldset->addField('is_active', 'select', array( + $fieldset->addField('is_active', 'select', array( 'label' => Mage::helper('cms')->__('Status'), 'title' => Mage::helper('cms')->__('Page Status'), 'name' => 'is_active', 'required' => true, - 'options' => array( - '1' => Mage::helper('cms')->__('Enabled'), - '0' => Mage::helper('cms')->__('Disabled'), - ), - )); - - $fieldset->addField('content', 'editor', array( - 'name' => 'content', - 'label' => Mage::helper('cms')->__('Content'), - 'title' => Mage::helper('cms')->__('Content'), - 'style' => 'height:36em;', - 'wysiwyg' => false, - 'required' => true, + 'options' => $model->getAvailableStatuses(), + 'disabled' => $isElementDisabled )); + Mage::dispatchEvent('adminhtml_cms_page_edit_tab_main_prepare_form', array('form' => $form)); $form->setValues($model->getData()); $this->setForm($form); return parent::_prepareForm(); } + + /** + * Prepare label for tab + * + * @return string + */ + public function getTabLabel() + { + return Mage::helper('cms')->__('Page Information'); + } + + /** + * Prepare title for tab + * + * @return string + */ + public function getTabTitle() + { + return Mage::helper('cms')->__('Page Information'); + } + + /** + * Returns status flag about this tab can be shown or not + * + * @return true + */ + public function canShowTab() + { + return true; + } + + /** + * Returns status flag about this tab hidden or not + * + * @return true + */ + public function isHidden() + { + return false; + } + + /** + * Check permission for passed action + * + * @param string $action + * @return bool + */ + protected function _isAllowedAction($action) + { + return Mage::getSingleton('admin/session')->isAllowed('cms/page/' . $action); + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php index d4eab819a2..a0f2121633 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php @@ -31,7 +31,9 @@ * @package Mage_Adminhtml * @author Magento Core Team */ -class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Meta extends Mage_Adminhtml_Block_Widget_Form +class Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Meta + extends Mage_Adminhtml_Block_Widget_Form + implements Mage_Adminhtml_Block_Widget_Tab_Interface { public function __construct() { @@ -40,6 +42,15 @@ public function __construct() protected function _prepareForm() { + /* + * Checking if user have permissions to save information + */ + if ($this->_isAllowedAction('save')) { + $isElementDisabled = false; + } else { + $isElementDisabled = true; + } + $form = new Varien_Data_Form(); $form->setHtmlIdPrefix('page_'); @@ -48,18 +59,22 @@ protected function _prepareForm() $fieldset = $form->addFieldset('meta_fieldset', array('legend' => Mage::helper('cms')->__('Meta Data'), 'class' => 'fieldset-wide')); - $fieldset->addField('meta_keywords', 'editor', array( + $fieldset->addField('meta_keywords', 'textarea', array( 'name' => 'meta_keywords', 'label' => Mage::helper('cms')->__('Keywords'), 'title' => Mage::helper('cms')->__('Meta Keywords'), + 'disabled' => $isElementDisabled )); - $fieldset->addField('meta_description', 'editor', array( + $fieldset->addField('meta_description', 'textarea', array( 'name' => 'meta_description', 'label' => Mage::helper('cms')->__('Description'), 'title' => Mage::helper('cms')->__('Meta Description'), + 'disabled' => $isElementDisabled )); + Mage::dispatchEvent('adminhtml_cms_page_edit_tab_meta_prepare_form', array('form' => $form)); + $form->setValues($model->getData()); $this->setForm($form); @@ -67,4 +82,54 @@ protected function _prepareForm() return parent::_prepareForm(); } + /** + * Prepare label for tab + * + * @return string + */ + public function getTabLabel() + { + return Mage::helper('cms')->__('Meta Data'); + } + + /** + * Prepare title for tab + * + * @return string + */ + public function getTabTitle() + { + return Mage::helper('cms')->__('Meta Data'); + } + + /** + * Returns status flag about this tab can be showen or not + * + * @return true + */ + public function canShowTab() + { + return true; + } + + /** + * Returns status flag about this tab hidden or not + * + * @return true + */ + public function isHidden() + { + return false; + } + + /** + * Check permission for passed action + * + * @param string $action + * @return bool + */ + protected function _isAllowedAction($action) + { + return Mage::getSingleton('admin/session')->isAllowed('cms/page/' . $action); + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tabs.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tabs.php index bbb99b93b6..c2f85ff3e5 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tabs.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tabs.php @@ -41,36 +41,4 @@ public function __construct() $this->setDestElementId('edit_form'); $this->setTitle(Mage::helper('cms')->__('Page Information')); } - - protected function _beforeToHtml() - { - $this->addTab('main_section', array( - 'label' => Mage::helper('cms')->__('General Information'), - 'title' => Mage::helper('cms')->__('General Information'), - 'content' => $this->getLayout()->createBlock('adminhtml/cms_page_edit_tab_main')->toHtml(), - 'active' => true - )); - - $this->addTab('design_section', array( - 'label' => Mage::helper('cms')->__('Custom Design'), - 'title' => Mage::helper('cms')->__('Custom Design'), - 'content' => $this->getLayout()->createBlock('adminhtml/cms_page_edit_tab_design')->toHtml(), - )); - - $this->addTab('meta_section', array( - 'label' => Mage::helper('cms')->__('Meta Data'), - 'title' => Mage::helper('cms')->__('Meta Data'), - 'content' => $this->getLayout()->createBlock('adminhtml/cms_page_edit_tab_meta')->toHtml(), - )); - if (Mage::app()->getConfig()->getModuleConfig('Mage_GoogleOptimizer')->is('active', true) - && Mage::helper('googleoptimizer')->isOptimizerActiveForCms()) { - $this->addTab('googleoptimizer_section', array( - 'label' => Mage::helper('googleoptimizer')->__('Page View Optimization'), - 'title' => Mage::helper('googleoptimizer')->__('Page View Optimization'), - 'content' => $this->getLayout()->createBlock('googleoptimizer/adminhtml_cms_page_edit_tab_googleoptimizer')->toHtml(), - )); - } - return parent::_beforeToHtml(); - } - } diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Grid.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Grid.php index 6ff54640df..768e066c42 100644 --- a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Grid.php @@ -97,10 +97,7 @@ protected function _prepareColumns() 'header' => Mage::helper('cms')->__('Status'), 'index' => 'is_active', 'type' => 'options', - 'options' => array( - 0 => Mage::helper('cms')->__('Disabled'), - 1 => Mage::helper('cms')->__('Enabled') - ), + 'options' => Mage::getSingleton('cms/page')->getAvailableStatuses() )); $this->addColumn('creation_time', array( diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Page/Widget/Chooser.php b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Widget/Chooser.php new file mode 100644 index 0000000000..f9d458a42a --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Page/Widget/Chooser.php @@ -0,0 +1,157 @@ + + */ +class Mage_Adminhtml_Block_Cms_Page_Widget_Chooser extends Mage_Adminhtml_Block_Widget_Grid +{ + /** + * Block construction, prepare grid params + * + * @param array $arguments Object data + */ + public function __construct($arguments=array()) + { + parent::__construct($arguments); + //$this->setDefaultSort('name'); + $this->setUseAjax(true); + } + + /** + * Prepare chooser element HTML + * + * @param Varien_Data_Form_Element_Abstract $element Form Element + * @return Varien_Data_Form_Element_Abstract + */ + public function prepareElementHtml(Varien_Data_Form_Element_Abstract $element) + { + $uniqId = $element->getId() . md5(microtime()); + $sourceUrl = $this->getUrl('*/cms_page_widget/chooser', array('uniq_id' => $uniqId)); + + $chooser = $this->getLayout()->createBlock('adminhtml/cms_widget_chooser') + ->setElement($element) + ->setTranslationHelper($this->getTranslationHelper()) + ->setConfig($this->getConfig()) + ->setFieldsetId($this->getFieldsetId()) + ->setSourceUrl($sourceUrl) + ->setUniqId($uniqId); + + + if ($element->getValue()) { + $page = Mage::getModel('cms/page')->load($element->getValue()); + if ($page->getId()) { + $chooser->setLabel($page->getTitle()); + } + } + + $element->setData('after_element_html', $chooser->toHtml()); + return $element; + } + + /** + * Grid Row JS Callback + * + * @return string + */ + public function getRowClickCallback() + { + $chooserJsObject = $this->getId(); + $js = ' + function (grid, event) { + var trElement = Event.findElement(event, "tr"); + var pageTitle = trElement.down("td").innerHTML; + var pageId = trElement.down("td").next().innerHTML; + '.$chooserJsObject.'.setElementValue(pageId); + '.$chooserJsObject.'.setElementLabel(pageTitle); + '.$chooserJsObject.'.close(); + } + '; + return $js; + } + + /** + * Prepare pages collection + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareCollection() + { + $collection = Mage::getModel('cms/page')->getCollection(); + /* @var $collection Mage_Cms_Model_Mysql4_Page_Collection */ + $collection->setFirstStoreFlag(true); + $this->setCollection($collection); + + return parent::_prepareCollection(); + } + + /** + * Prepare columns for pages grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareColumns() + { + $this->addColumn('chooser_title', array( + 'header' => Mage::helper('cms')->__('Title'), + 'align' => 'left', + 'index' => 'title', + )); + + $this->addColumn('chooser_identifier', array( + 'header' => Mage::helper('cms')->__('Identifier'), + 'align' => 'left', + 'index' => 'identifier' + )); + + $this->addColumn('chooser_root_template', array( + 'header' => Mage::helper('cms')->__('Layout'), + 'index' => 'root_template', + 'type' => 'options', + 'options' => Mage::getSingleton('page/source_layout')->getOptions(), + 'width' => '100', + )); + + $this->addColumn('chooser_is_active', array( + 'header' => Mage::helper('cms')->__('Status'), + 'index' => 'is_active', + 'type' => 'options', + 'options' => Mage::getModel('cms/page')->getAvailableStatuses(), + 'width' => '100', + )); + + return parent::_prepareColumns(); + } + + public function getGridUrl() + { + return $this->getUrl('*/cms_page_widget/chooser', array('_current' => true)); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Widget.php b/app/code/core/Mage/Adminhtml/Block/Cms/Widget.php new file mode 100644 index 0000000000..84ff69d22a --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Widget.php @@ -0,0 +1,57 @@ + + */ +class Mage_Adminhtml_Block_Cms_Widget extends Mage_Adminhtml_Block_Widget_Form_Container +{ + public function __construct() + { + parent::__construct(); + + $this->_controller = 'cms'; + $this->_mode = 'widget'; + $this->_headerText = 'CMS Widget Insertion'; + + $this->removeButton('reset'); + $this->removeButton('back'); + $this->_updateButton('save', 'label', $this->helper('cms')->__('Insert Widget')); + $this->_updateButton('save', 'class', 'add-widget'); + $this->_updateButton('save', 'id', 'insert_button'); + $this->_updateButton('save', 'onclick', 'wWidget.insertWidget()'); + + $this->_formInitScripts[] = ' + Event.observe(window, "load", function(){ + wWidget = new WysiwygWidget.Widget("edit_form", "select_widget_type", "widget_options", "'.$this->getUrl('*/*/loadOptions').'"); + }); + '; + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Chooser.php b/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Chooser.php new file mode 100644 index 0000000000..970eb33d8b --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Chooser.php @@ -0,0 +1,194 @@ + + */ + +class Mage_Adminhtml_Block_Cms_Widget_Chooser extends Mage_Adminhtml_Block_Template +{ + /** + * Chooser source URL getter + * + * @return string + */ + public function getSourceUrl() + { + return $this->getData('source_url'); + } + + /** + * Chooser form element getter + * + * @return Varien_Data_Form_Element_Abstract + */ + public function getElement() + { + return $this->getData('element'); + } + + /** + * Convert XML config to Object + * + * @return Varien_Object + */ + public function getConfig() + { + if ($this->getData('config') instanceof Varien_Object) { + return $this->getData('config'); + } + + $configXml = $this->getData('config'); + $config = new Varien_Object(); + $this->setConfig($config); + if (!($configXml instanceof Varien_Simplexml_Element)) { + return $this->getData('config'); + } + + // define chooser label + if ($configXml->label) { + $config->setData('label', $this->getTranslationHelper()->__((string)$configXml->label)); + } + + // chooser control buttons + $buttons = array( + 'open' => Mage::helper('cms')->__('Choose'), + 'close' => Mage::helper('cms')->__('Close') + ); + if ($configXml->button && $configXml->button->hasChildren()) { + foreach ($configXml->button->children() as $button) { + $buttons[(string)$button->getName()] = $this->getTranslationHelper()->__((string)$button); + } + } + $config->setButtons($buttons); + + return $this->getData('config'); + } + + /** + * Helper getter for translations + * + * @return Mage_Core_Helper_Abstract + */ + public function getTranslationHelper() + { + if ($this->getData('translation_helper') instanceof Mage_Core_Helper_Abstract) { + return $this->getData('translation_helper'); + } + return $this->helper('cms'); + } + + /** + * Unique identifier for block that uses Chooser + * + * @return string + */ + public function getUniqId() + { + return $this->getData('uniq_id'); + } + + /** + * Form element fieldset id getter for working with form in chooser + * + * @return string + */ + public function getFieldsetId() + { + return $this->getData('fieldset_id'); + } + + /** + * Flag to indicate include hidden field before chooser or not + * + * @return bool + */ + public function getHiddenEnabled() + { + return $this->hasData('hidden_enabled') ? (bool)$this->getData('hidden_enabled') : true; + } + + /** + * Return chooser HTML and init scripts + * + * @return string + */ + protected function _toHtml() + { + $element = $this->getElement(); + /* @var $fieldset Varien_Data_Form_Element_Fieldset */ + $fieldset = $element->getForm()->getElement($this->getFieldsetId()); + + $chooserId = $this->getUniqId(); + + $hiddenHtml = ''; + if ($this->getHiddenEnabled()) { + $hidden = new Varien_Data_Form_Element_Hidden(array( + 'name' => $element->getName(), + 'required' => (bool)$element->required, + 'value' => $element->getValue(), + 'class' => $element->getClass(), + )); + $hidden->setId($chooserId . 'value'); + $hidden->setForm($element->getForm()); + $hiddenHtml = $hidden->getElementHtml(); + + // Unset element value in favour of hidden field + $element->setValue(""); + } + + $config = $this->getConfig(); + + $chooser = $fieldset->addField('chooser' . $element->getId(), 'label', array( + 'label' => $config->getLabel() ? $config->getLabel() : '' + )); + + $buttons = $config->getButtons(); + $chooseButton = $this->getLayout()->createBlock('adminhtml/widget_button') + ->setType('button') + ->setId($chooserId . 'control') + ->setClass('widget-option-chooser') + ->setLabel($buttons['open']) + ->setOnclick($chooserId.'.choose()'); + + $configJson = Mage::helper('core')->jsonEncode($config->getData()); + $html = ' + + + '; + + $chooser->setData('after_element_html', $hiddenHtml . $chooseButton->toHtml()); + return $html; + } + + +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Form.php b/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Form.php new file mode 100644 index 0000000000..48eac3dd1d --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Form.php @@ -0,0 +1,176 @@ + + */ + +class Mage_Adminhtml_Block_Cms_Widget_Form extends Mage_Adminhtml_Block_Widget_Form +{ + /** + * Form with widget to select + */ + protected function _prepareForm() + { + $form = new Varien_Data_Form(); + + $fieldset = $form->addFieldset('base_fieldset', array( + 'legend' => $this->helper('cms')->__('Widget') + )); + + $this->setEmptyOptionDescription($this->helper('cms')->__('Please select a Widget Type')); + $select = $fieldset->addField('select_widget_type', 'select', array( + 'label' => $this->helper('cms')->__('Widget Type'), + 'title' => $this->helper('cms')->__('Widget Type'), + 'name' => 'widget_type', + 'required' => true, + 'options' => $this->_getWidgetSelectOptions(), + 'note' => $this->getEmptyOptionDescription(), + 'after_element_html' => $this->_getWidgetSelectAfterHtml(), + )); + + $form->setUseContainer(true); + $form->setId('edit_form'); + $form->setMethod('post'); + $form->setAction($this->getUrl('*/*/buildWidget')); + $this->setForm($form); + } + + /** + * Prepare options for widgets HTML select + * + * @return array + */ + protected function _getWidgetSelectOptions() + { + foreach ($this->_getAvailableWidgets(true) as $data) { + $options[$data['type']] = $data['name']; + } + return $options; + } + + /** + * Prepare widgets select after element HTML + * + * @return string + */ + protected function _getWidgetSelectAfterHtml() + { + $html = ''; + $i = 0; + foreach ($this->_getAvailableWidgets(true) as $data) { + $html .= sprintf('
%s
', $i, $data['description']); + $i++; + } + return $html; + } + + /** + * Return array of available widgets based on configuration + * + * @return array + */ + protected function _getAvailableWidgets($withEmptyElement = false) + { + if (!$this->getData('available_widgets')) { + $config = Mage::getSingleton('cms/widget')->getXmlConfig(); + $widgets = $config->getNode('widgets'); + $result = array(); + if ($withEmptyElement) { + $result[] = array( + 'type' => '', + 'name' => $this->helper('adminhtml')->__('-- Please Select --'), + 'description' => $this->getEmptyOptionDescription(), + ); + } + $skipped = $this->_getSkippedWidgets(); + foreach ($widgets->children() as $widget) { + if ($widget->is_context && $this->_skipContextWidgets()) { + continue; + } + if (is_array($skipped) && in_array($widget->getAttribute('type'), $skipped)) { + continue; + } + if ($widget->getAttribute('module')) { + $helper = Mage::helper($widget->getAttribute('module')); + } else { + $helper = Mage::helper('cms'); + } + $result[$widget->getName()] = array( + 'name' => $helper->__((string)$widget->name), + 'code' => $widget->getName(), + 'type' => $widget->getAttribute('type'), + 'description' => $helper->__((string)$widget->description), + ); + } + usort($result, array($this, "_sortWidgets")); + $this->setData('available_widgets', $result); + } + return $this->getData('available_widgets'); + } + + /** + * Disable insertion of context(is_context) widgets or not + * + * @return bool + */ + protected function _skipContextWidgets() + { + return (bool)$this->getParentBlock()->getData('skip_context_widgets'); + } + + /** + * Return array of widgets disabled for selection + * + * @return array + */ + protected function _getSkippedWidgets() + { + $skipped = $this->getParentBlock()->getData('skip_widgets'); + if (is_array($skipped)) { + return $skipped; + } + $skipped = Mage::helper('core')->urlDecode($skipped); + $skipped = explode(',', $skipped); + return $skipped; + } + + /** + * User-defined widgets sorting by Name + * + * @param array $a + * @param array $b + * @return boolean + */ + protected function _sortWidgets($a, $b) + { + return strcmp($a["name"], $b["name"]); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Options.php b/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Options.php new file mode 100644 index 0000000000..0ca8143899 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Widget/Options.php @@ -0,0 +1,177 @@ + + */ + +class Mage_Adminhtml_Block_Cms_Widget_Options extends Mage_Adminhtml_Block_Widget_Form +{ + protected $_defaultElementType = 'text'; + protected $_translationHelper = null; + + /** + * Prepare Widget Options Form and values according to specified type + * + * widget_type must be set in data before + * widget_values may be set before to render element values + */ + protected function _prepareForm() + { + // prepare form instance + $form = new Varien_Data_Form(); + $fieldset = $form->addFieldset('options_fieldset', array( + 'legend' => $this->helper('cms')->__('Widget Options') + )); + $form->setUseContainer(false); + $this->setForm($form); + + // get configuration node and translation helper + if (!$this->getWidgetType()) { + Mage::throwException($this->__('Widget Type is not specified')); + } + $config = Mage::getSingleton('cms/widget')->getXmlElementByType($this->getWidgetType()); + if (!($config instanceof Varien_Simplexml_Element)) { + return; + } + if (!$config->parameters) { + return; + } + $module = (string)$config->getAttribute('module'); + $this->_translationHelper = Mage::helper($module ? $module : 'cms'); + + // sort widget parameters and add them to form + $sortOrder = 0; + foreach ($config->parameters->children() as $option) { + $option->sort_order = $option->sort_order ? (int)$option->sort_order : $sortOrder; + $options[$option->getName()] = $option; + $sortOrder++; + } + uasort($options, array($this, '_sortParameters')); + foreach ($options as $option) { + $this->_addField($option); + } + } + + /** + * Widget parameters sort callback + * + * @param $a + * @param $b + * @return int + */ + protected function _sortParameters($a, $b) + { + $aOrder = (int)$a->sort_order; + $bOrder = (int)$b->sort_order; + return $aOrder < $bOrder ? -1 : ($aOrder > $bOrder ? 1 : 0); + } + + /** + * Add field to Options form based on option configuration + * + * @param Varien_Simplexml_Element $option + * @param Mage_Core_Helper_Abstract $helper + * @return Varien_Data_Form_Element_Abstract + */ + protected function _addField($config) + { + $form = $this->getForm(); + $fieldset = $form->getElement('options_fieldset'); + + // prepare element data with values (either from request of from default values) + $fieldName = (string)$config->getName(); + $data = array( + 'name' => $form->addSuffixToName($fieldName, 'parameters'), + 'label' => $this->_translationHelper->__((string)$config->label), + 'required' => (bool)(int)(string)$config->required, + 'class' => 'widget-option', + 'note' => $this->_translationHelper->__((string)$config->description), + ); + if ($values = $this->getWidgetValues()) { + $data['value'] = (isset($values[$fieldName]) ? $values[$fieldName] : ''); + } + else { + $data['value'] = (string)$config->value; + } + + // prepare element dropdown values, if any + if ($config->values) { + // dropdown options are specified in configuration + if ($config->values->hasChildren()) { + $data['values'] = array(); + foreach ($config->values->children() as $option) { + $data['values'][] = array( + 'value' => (string)$option->value, + 'label' => $this->_translationHelper->__((string)$option->label) + ); + } + } + // a source model is specified + elseif ($model = Mage::getModel((string)$config->values)) { + $data['values'] = $model->toOptionArray(); + } + } + + // prepare field type and renderers + $fieldRenderer = false; + $fieldChooserRenderer = false; + $fieldType = (string)$config->type; + // hidden element + if (!(int)(string)$config->visible) { + $fieldType = 'hidden'; + } + // element of specified type with a chooser + elseif ($config->type->hasChildren()) { + $fieldType = $config->type->element_type ? (string)$config->type->element_type : $this->_defaultElementType; + if ($config->type->element_helper) { + $fieldChooserRenderer = $this->getLayout()->getBlockSingleton((string)$config->type->element_helper); + } + } + // just an element renderer + elseif (false !== strpos($config->type, '/')) { + $fieldType = $this->_defaultElementType; + $fieldRenderer = $this->getLayout()->createBlock((string)$config->type); + } + + // instantiate field and prepare extra html + $field = $fieldset->addField('option_' . $fieldName, $fieldType, $data); + if ($fieldRenderer) { + $field->setRenderer($fieldRenderer); + } elseif ($fieldChooserRenderer) { + $fieldChooserRenderer->setFieldsetId($fieldset->getId()) + ->setTranslationHelper($this->_translationHelper) + ->setConfig($config->type) + ->prepareElementHtml($field); + } + + return $field; + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content.php b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content.php new file mode 100644 index 0000000000..22ddab6381 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content.php @@ -0,0 +1,132 @@ + + */ +class Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content extends Mage_Adminhtml_Block_Widget_Container +{ + /** + * Block construction + */ + public function __construct() + { + parent::__construct(); + $this->_headerText = $this->helper('cms')->__('Image Gallery'); + $this->_removeButton('back')->_removeButton('edit'); + $this->_addButton('newfolder', array( + 'class' => 'save', + 'label' => $this->helper('cms')->__('Create Folder'), + 'type' => 'button', + 'onclick' => 'Images.newFolder();' + )); + $this->_addButton('upload', array( + 'class' => 'add', + 'label' => $this->helper('cms')->__('Add Files'), + 'type' => 'button', + 'onclick' => 'Images.upload();' + )); + + $this->_addButton('delete_folder', array( + 'class' => 'delete no-display', + 'label' => $this->helper('cms')->__('Delete Folder'), + 'type' => 'button', + 'onclick' => 'Images.deleteFolder();', + 'id' => 'button_delete_folder' + )); + + $this->_addButton('delete_files', array( + 'class' => 'delete no-display', + 'label' => $this->helper('cms')->__('Delete File'), + 'type' => 'button', + 'onclick' => 'Images.deleteFiles();', + 'id' => 'button_delete_files' + )); + + $this->_addButton('insert_files', array( + 'class' => 'save no-display', + 'label' => $this->helper('cms')->__('Insert File'), + 'type' => 'button', + 'onclick' => 'Images.insert();', + 'id' => 'button_insert_files' + )); + } + + /** + * Files action source URL + * + * @return string + */ + public function getContentsUrl() + { + return $this->getUrl('*/*/contents', array('type' => $this->getRequest()->getParam('type'))); + } + + /** + * New directory action target URL + * + * @return string + */ + public function getNewfolderUrl() + { + return $this->getUrl('*/*/newFolder'); + } + + /** + * Delete directory action target URL + * + * @return string + */ + protected function getDeletefolderUrl() + { + return $this->getUrl('*/*/deleteFolder'); + } + + /** + * Description goes here... + * + * @param none + * @return void + */ + public function getDeleteFilesUrl() + { + return $this->getUrl('*/*/deleteFiles'); + } + + /** + * New directory action target URL + * + * @return string + */ + public function getOnInsertUrl() + { + return $this->getUrl('*/*/onInsert'); + } +} \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Files.php b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Files.php new file mode 100644 index 0000000000..f0f0d860c9 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Files.php @@ -0,0 +1,89 @@ + + */ +class Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content_Files extends Mage_Adminhtml_Block_Template +{ + /** + * Prepare Files collection + * + * @return Varien_Data_Collection_Filesystem + */ + public function getContentsCollection() + { + $helper = Mage::helper('cms/wysiwyg_images'); + $type = $this->getRequest()->getParam('type'); + $collection = $helper->getStorage()->getFilesCollection($helper->getCurrentPath(), $type); + foreach ($collection as $item) { + $item->setId(Mage::helper('core')->urlEncode($item->getBasename())); + $item->setName($this->getShortFilename($item->getBasename())); + $item->setUrl($helper->getCurrentUrl() . $item->getBasename()); + $item->setEncodedPath(Mage::helper('core')->urlEncode($item->getFilename())); + + if(is_file($helper->getCurrentPath() . DS . '.thumbs' . DS . $item->getBasename())) { + $item->setThumbUrl($helper->getCurrentUrl() . '.thumbs/' . $item->getBasename()); + } + + $size = @getimagesize($item->getFilename()); + if (is_array($size)) { + $item->setWidth($size[0]); + $item->setHeight($size[1]); + } + } + return $collection; + } + + public function getImagesWidth() + { + return Mage::getSingleton('cms/wysiwyg_images_storage')->getConfigData('browser_resize_width'); + } + + public function getImagesHeight() + { + return Mage::getSingleton('cms/wysiwyg_images_storage')->getConfigData('browser_resize_height'); + } + + /** + * Reduce filename by replacing some characters with dots + * + * @param string $filename + * @param int $maxLength Maximum filename + * @return string Truncated filename + */ + public function getShortFilename($filename, $maxLength = 15) + { + if (strlen($filename) <= $maxLength) { + return $filename; + } + return preg_replace('/^(.{1,'.($maxLength - 3).'})(.*)(\.[a-z0-9]+)$/i', '$1..$3', $filename); + } +} \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Newfolder.php b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Newfolder.php new file mode 100644 index 0000000000..592f7bb85f --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Newfolder.php @@ -0,0 +1,37 @@ + + */ +class Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content_Newfolder extends Mage_Adminhtml_Block_Template +{ + +} \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Uploader.php b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Uploader.php new file mode 100644 index 0000000000..1fd305c604 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Content/Uploader.php @@ -0,0 +1,59 @@ + +*/ +class Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content_Uploader extends Mage_Adminhtml_Block_Media_Uploader +{ + public function __construct() + { + parent::__construct(); + $params = $this->getConfig()->getParams(); + $type = $this->getRequest()->getParam('type'); + $allowed = Mage::getSingleton('cms/wysiwyg_images_storage')->getAllowedExtensions($type); + $labels = array(); + $files = array(); + foreach ($allowed as $ext) { + $labels[] = '.' . $ext; + $files[] = '*.' . $ext; + } + $this->getConfig() + ->setUrl(Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/*/upload', array('type' => $type))) + ->setParams($params) + ->setFileField('image') + ->setFilters(array( + 'images' => array( + 'label' => $this->helper('cms')->__('Images (%s)', implode(', ', $labels)), + 'files' => $files + ) + )); + } +} \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Tree.php b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Tree.php new file mode 100644 index 0000000000..a8484c7e82 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Cms/Wysiwyg/Images/Tree.php @@ -0,0 +1,98 @@ + + */ +class Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Tree extends Mage_Adminhtml_Block_Template +{ + + /** + * Json tree builder + * + * @return string + */ + public function getTreeJson() + { + $helper = Mage::helper('cms/wysiwyg_images'); + $storageRoot = $helper->getStorageRoot(); + $collection = Mage::registry('storage')->getDirsCollection($helper->getCurrentPath()); + $jsonArray = array(); + foreach ($collection as $item) { + $jsonArray[] = array( + 'text' => $item->getBasename(), + 'id' => $helper->convertPathToId($item->getFilename()), + 'cls' => 'folder' + ); + } + return Zend_Json::encode($jsonArray); + } + + /** + * Json source URL + * + * @return string + */ + public function getTreeLoaderUrl() + { + return $this->getUrl('*/*/treeJson'); + } + + /** + * Root node name of tree + * + * @return string + */ + public function getRootNodeName() + { + return $this->helper('cms')->__('Storage Root'); + } + + /** + * Return tree node full path based on current path + * + * @return string + */ + public function getTreeCurrentPath() + { + $treePath = '/root'; + if ($path = Mage::registry('storage')->getSession()->getCurrentPath()) { + $path = str_replace(Mage::helper('cms/wysiwyg_images')->getStorageRoot(), '', $path); + $relative = ''; + foreach (explode(DS, $path) as $dirName) { + if ($dirName) { + $relative .= DS . $dirName; + $treePath .= '/' . Mage::helper('core')->urlEncode($relative); + } + } + } + return $treePath; + } +} \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Renderer/Region.php b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Renderer/Region.php index 586c120073..ad540f93f3 100644 --- a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Renderer/Region.php +++ b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Renderer/Region.php @@ -31,7 +31,12 @@ */ class Mage_Adminhtml_Block_Customer_Edit_Renderer_Region extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface { - + /** + * Output the region element and javasctipt that makes it dependent from country element + * + * @param Varien_Data_Form_Element_Abstract $element + * @return string + */ public function render(Varien_Data_Form_Element_Abstract $element) { if ($country = $element->getForm()->getElement('country_id')) { @@ -42,7 +47,6 @@ public function render(Varien_Data_Form_Element_Abstract $element) } $regionId = $element->getForm()->getElement('region_id')->getValue(); - $postcode = $element->getForm()->getElement('postcode'); $html = ''; $element->setClass('input-text'); @@ -54,27 +58,12 @@ public function render(Varien_Data_Form_Element_Abstract $element) $html.= ''; - $html.= ''; + + $html.= ''."\n"; + $html.= ''."\n"; return $html; } - } diff --git a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php index bcde34a2d9..c0626b55d5 100644 --- a/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php +++ b/app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tab/Account.php @@ -133,23 +133,23 @@ public function initForm() 'id' => 'sendemail', )); if (!Mage::app()->isSingleStoreMode()) { - $fieldset->addField('store_id', 'select', array( + $fieldset->addField('sendemail_store_id', 'select', array( 'label' => $this->helper('customer')->__('Send From'), - 'name' => 'store_id', + 'name' => 'sendemail_store_id', 'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm() )); } } - // make sendemail and store_id disabled, if website_id has empty value - if ($sendemail = $form->getElement('store_id')) { + // make sendemail and sendmail_store_id disabled, if website_id has empty value + if ($sendemail = $form->getElement('sendemail_store_id')) { $prefix = $form->getHtmlIdPrefix(); $sendemail->setAfterElementHtml( '"; + } + + /** + * Target element ID setter + * + * @param string $value + * @return Mage_Adminhtml_Block_Promo_Widget_Chooser_Daterange + */ + public function setTargetElementId($value) + { + $this->_targetElementId = trim($value); + return $this; + } + + /** + * Range values setter + * + * @param string $from + * @param string $to + * @return Mage_Adminhtml_Block_Promo_Widget_Chooser_Daterange + */ + public function setRangeValues($from, $to) + { + $this->_rangeValues = array('from' => $from, 'to' => $to); + return $this; + } + + /** + * Range values setter, string implementation. + * Automatically attempts to split the string by delimiter + * + * @param string $delimitedString + * @return Mage_Adminhtml_Block_Promo_Widget_Chooser_Daterange + */ + public function setRangeValue($delimitedString) + { + $split = explode($this->_rangeDelimiter, $delimitedString, 2); + $from = $split[0]; $to = ''; + if (isset($split[1])) { + $to = $split[1]; + } + return $this->setRangeValues($from, $to); + } + + /** + * Range delimiter setter + * + * @param string $value + * @return Mage_Adminhtml_Block_Promo_Widget_Chooser_Daterange + */ + public function setRangeDelimiter($value) + { + $this->_rangeDelimiter = (string)$value; + return $this; + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Review/Customer/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Review/Customer/Grid.php index aee466ac6c..e4fd38758a 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Review/Customer/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Review/Customer/Grid.php @@ -73,7 +73,8 @@ protected function _prepareColumns() 'align' => 'center', 'filter' => false, 'sortable' => false, - 'renderer' => 'adminhtml/report_grid_column_renderer_customer' + 'renderer' => 'adminhtml/report_grid_column_renderer_customer', + 'is_system' => true )); $this->setFilterVisibility(false); diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Review/Product/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Review/Product/Grid.php index 129b17e67d..54ddd1d0e5 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Review/Product/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Review/Product/Grid.php @@ -100,7 +100,8 @@ protected function _prepareColumns() 'align' => 'center', 'filter' => false, 'sortable' => false, - 'renderer' => 'adminhtml/report_grid_column_renderer_product' + 'renderer' => 'adminhtml/report_grid_column_renderer_product', + 'is_system' => true )); $this->setFilterVisibility(false); diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Sales/Sales/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Sales/Sales/Grid.php index 8e2bb2691d..5d3812c45b 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Sales/Sales/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Sales/Sales/Grid.php @@ -64,6 +64,15 @@ protected function _prepareColumns() $currency_code = $this->getCurrentCurrencyCode(); + $this->addColumn('profit', array( + 'header' =>Mage::helper('reports')->__('Profit'), + 'type' =>'currency', + 'currency_code' => $currency_code, + 'index' =>'profit', + 'total' =>'sum', + 'renderer' =>'adminhtml/report_grid_column_renderer_currency' + )); + $this->addColumn('subtotal', array( 'header' =>Mage::helper('reports')->__('Subtotal'), 'type' =>'currency', @@ -127,6 +136,7 @@ protected function _prepareColumns() 'renderer' =>'adminhtml/report_grid_column_renderer_currency' )); + $this->addExportType('*/*/exportSalesCsv', Mage::helper('reports')->__('CSV')); $this->addExportType('*/*/exportSalesExcel', Mage::helper('reports')->__('Excel')); diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Search/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Search/Grid.php index 0c52a8f155..4c31e3eab7 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Search/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Search/Grid.php @@ -74,7 +74,7 @@ protected function _prepareColumns() )); $this->addColumn('query_text', array( - 'header' =>__('Search Query'), + 'header' =>Mage::helper('reports')->__('Search Query'), 'filter' =>false, 'index' =>'query_text' )); diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Tag/Customer/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Tag/Customer/Grid.php index 50932e2ece..bbd94280e8 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Tag/Customer/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Tag/Customer/Grid.php @@ -95,6 +95,7 @@ protected function _prepareColumns() 'field' => 'id' ) ), + 'is_system' => true, 'filter' => false, 'sortable' => false, 'index' => 'stores', diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Tag/Popular/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Tag/Popular/Grid.php index a6dd4cf053..9595770dbe 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Tag/Popular/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Tag/Popular/Grid.php @@ -112,6 +112,7 @@ protected function _prepareColumns() 'field' => 'id' ) ), + 'is_system' => true, 'filter' => false, 'sortable' => false, 'index' => 'stores', diff --git a/app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Grid.php b/app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Grid.php index 71546c09b5..4d151812ef 100644 --- a/app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Report/Tag/Product/Grid.php @@ -98,6 +98,7 @@ protected function _prepareColumns() 'field' => 'id' ) ), + 'is_system' => true, 'filter' => false, 'sortable' => false, 'index' => 'stores', diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php b/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php index 08a92db458..c34106c0f5 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php @@ -36,6 +36,7 @@ public function __construct() { parent::__construct(); $this->setId('sales_invoice_grid'); + $this->setUseAjax(true); $this->setDefaultSort('created_at'); $this->setDefaultDir('DESC'); } @@ -155,7 +156,7 @@ public function getRowUrl($row) public function getGridUrl() { - return $this->getUrl('*/*/*', array('_current' => true)); + return $this->getUrl('*/*/grid', array('_current' => true)); } -} \ No newline at end of file +} diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Billing/Method/Form.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Billing/Method/Form.php index c2312c89ed..94291582ed 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Billing/Method/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Billing/Method/Form.php @@ -61,18 +61,18 @@ public function hasMethods() } /** - * Retrieve code of current payment method + * Get current payment method code or the only available, if there is only one method * - * @return mixed + * @return string|false */ public function getSelectedMethodCode() { - if ($method = $this->getQuote()->getPayment()->getMethod()) { - return $method; + if ($currentMethodCode = $this->getQuote()->getPayment()->getMethod()) { + return $currentMethodCode; } if (count($this->getMethods()) == 1) { - foreach ($this->getMethods() as $_method) { - return $_method->getCode(); + foreach ($this->getMethods() as $method) { + return $method->getCode(); } } return false; diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Address.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Address.php index e40accd08d..c68f22d4b6 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Address.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Create/Form/Address.php @@ -74,7 +74,7 @@ protected function _prepareForm() $addressModel = Mage::getModel('customer/address'); foreach ($addressModel->getAttributes() as $attribute) { - if (!$attribute->getIsVisible()) { + if ($attribute->hasData('is_visible') && !$attribute->getIsVisible()) { continue; } if ($inputType = $attribute->getFrontend()->getInputType()) { @@ -96,9 +96,7 @@ protected function _prepareForm() if ($regionElement = $this->_form->getElement('region')) { $regionElement->setRenderer( - $this->getLayout() - ->createBlock('adminhtml/customer_edit_renderer_region') - ->setStoreId($this->getStoreId()) + $this->getLayout()->createBlock('adminhtml/customer_edit_renderer_region') ); } if ($regionElement = $this->_form->getElement('region_id')) { diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Creditmemo/View.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Creditmemo/View.php index 179e6e4a97..840222ad05 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Creditmemo/View.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Creditmemo/View.php @@ -55,6 +55,13 @@ public function __construct() ); } + $this->addButton('send_notification', array( + 'label' => Mage::helper('sales')->__('Send Email'), + 'onclick' => 'confirmSetLocation(\'' . Mage::helper('sales')->__( + 'Are you sure you want to send Creditmemo email to customer?' + ) . '\', \'' . $this->getEmailUrl() . '\')' + )); + if ($this->getCreditmemo()->canRefund()) { $this->_addButton('refund', array( 'label' => Mage::helper('sales')->__('Refund'), @@ -72,7 +79,7 @@ public function __construct() ) ); } - + if ($this->getCreditmemo()->getId()) { $this->_addButton('print', array( 'label' => Mage::helper('sales')->__('Print'), @@ -136,13 +143,21 @@ public function getCancelUrl() return $this->getUrl('*/*/cancel', array('creditmemo_id'=>$this->getCreditmemo()->getId())); } + public function getEmailUrl() + { + return $this->getUrl('*/*/email', array( + 'creditmemo_id' => $this->getCreditmemo()->getId(), + 'order_id' => $this->getCreditmemo()->getOrderId() + )); + } + public function getPrintUrl() { return $this->getUrl('*/*/print', array( 'invoice_id' => $this->getCreditmemo()->getId() )); } - + public function updateBackButtonUrl($flag) { if ($flag) { diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php index c3a8e754b5..20a7e72084 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Invoice/View.php @@ -54,6 +54,13 @@ public function __construct() ); } + $this->addButton('send_notification', array( + 'label' => Mage::helper('sales')->__('Send Email'), + 'onclick' => 'confirmSetLocation(\'' . Mage::helper('sales')->__( + 'Are you sure you want to send Invoice email to customer?' + ) . '\', \'' . $this->getEmailUrl() . '\')' + )); + if ($this->getInvoice()->getOrder()->canCreditmemo()) { if ($this->getInvoice()->getOrder()->getPayment()->canRefundPartialPerInvoice() || !$this->getInvoice()->getIsUsedForRefund()) @@ -153,6 +160,14 @@ public function getCancelUrl() return $this->getUrl('*/*/cancel', array('invoice_id'=>$this->getInvoice()->getId())); } + public function getEmailUrl() + { + return $this->getUrl('*/*/email', array( + 'order_id' => $this->getInvoice()->getOrder()->getId(), + 'invoice_id'=> $this->getInvoice()->getId(), + )); + } + public function getCreditMemoUrl() { return $this->getUrl('*/sales_order_creditmemo/start', array( diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Shipment/View.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Shipment/View.php index 3ac1eafd64..9cb7f3ad1b 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Shipment/View.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Shipment/View.php @@ -45,8 +45,9 @@ public function __construct() $this->_removeButton('reset'); $this->_removeButton('delete'); $this->_updateButton('save', 'label', Mage::helper('sales')->__('Send Tracking Information')); - $this->_updateButton('save', 'onclick', "setLocation('".$this->getEmailUrl()."')"); - + $this->_updateButton('save', + 'onclick', "deleteConfirm('" . Mage::helper('sales')->__('Are you sure you want to send Shipment email to customer?') . "', '" . $this->getEmailUrl() . "')"); + if ($this->getShipment()->getId()) { $this->_addButton('print', array( 'label' => Mage::helper('sales')->__('Print'), @@ -101,7 +102,7 @@ public function getPrintUrl() 'invoice_id' => $this->getShipment()->getId() )); } - + public function updateBackButtonUrl($flag) { if ($flag) { diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Totals/Item.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Totals/Item.php index 3336b115f2..a7b155db78 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/Totals/Item.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/Totals/Item.php @@ -23,8 +23,17 @@ * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ + + /** + * Totals item block + */ class Mage_Adminhtml_Block_Sales_Order_Totals_Item extends Mage_Adminhtml_Block_Sales_Order_Totals { + /** + * Determine display parameters before rendering HTML + * + * @return Mage_Adminhtml_Block_Sales_Order_Totals_Item + */ protected function _beforeToHtml() { parent::_beforeToHtml(); @@ -32,12 +41,14 @@ protected function _beforeToHtml() $this->setCanDisplayTotalPaid($this->getParentBlock()->getCanDisplayTotalPaid()); $this->setCanDisplayTotalRefunded($this->getParentBlock()->getCanDisplayTotalRefunded()); $this->setCanDisplayTotalDue($this->getParentBlock()->getCanDisplayTotalDue()); + + return $this; } /** - * Initialize giftcard order total + * Initialize totals object * - * @return Enterprise_GiftCardAccount_Block_Sales_Order_Giftcards + * @return Mage_Adminhtml_Block_Sales_Order_Totals_Item */ public function initTotals() { @@ -50,18 +61,38 @@ public function initTotals() return $this; } + /** + * Price HTML getter + * + * @param float $baseAmount + * @param float $amount + * @return string + */ public function displayPrices($baseAmount, $amount) { return $this->helper('adminhtml/sales')->displayPrices($this->getOrder(), $baseAmount, $amount); } + /** + * Price attribute HTML getter + * + * @param string $code + * @param bool $strong + * @param string $separator + * @return string + */ public function displayPriceAttribute($code, $strong = false, $separator = '
') { return $this->helper('adminhtml/sales')->displayPriceAttribute($this->getSource(), $code, $strong, $separator); } + /** + * Source order getter + * + * @return Mage_Sales_Model_Order + */ public function getSource() { return $this->getParentBlock()->getSource(); } -} \ No newline at end of file +} diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php b/app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php index 0da3ca7258..2c2ee5924e 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Order/View.php @@ -78,6 +78,13 @@ public function __construct() )); } + $this->addButton('send_notification', array( + 'label' => Mage::helper('sales')->__('Send Order Email'), + 'onclick' => 'confirmSetLocation(\'' . Mage::helper('sales')->__( + 'Are you sure you want to send Order email to customer?' + ) . '\', \'' . $this->getEmailUrl() . '\')' + )); + if ($this->_isAllowedAction('creditmemo') && $this->getOrder()->canCreditmemo()) { $this->_addButton('order_creditmemo', array( 'label' => Mage::helper('sales')->__('Credit Memo'), @@ -169,6 +176,11 @@ public function getEditUrl() return $this->getUrl('*/sales_order_edit/start'); } + public function getEmailUrl() + { + return $this->getUrl('*/*/email'); + } + public function getCancelUrl() { return $this->getUrl('*/*/cancel'); diff --git a/app/code/core/Mage/Adminhtml/Block/Sales/Totals.php b/app/code/core/Mage/Adminhtml/Block/Sales/Totals.php index 882adf0211..f5269cf651 100644 --- a/app/code/core/Mage/Adminhtml/Block/Sales/Totals.php +++ b/app/code/core/Mage/Adminhtml/Block/Sales/Totals.php @@ -62,7 +62,7 @@ protected function _initTotals() /** * Add shipping */ - if ($this->getSource()->getShippingAmount() || $this->getSource()->getShippingDescription()) + if (!$this->getSource()->getIsVirtual() && ((float) $this->getSource()->getShippingAmount() || $this->getSource()->getShippingDescription())) { $this->_totals['shipping'] = new Varien_Object(array( 'code' => 'shipping', diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Assigned/Grid.php b/app/code/core/Mage/Adminhtml/Block/Tag/Assigned/Grid.php new file mode 100644 index 0000000000..79a63b7f19 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Assigned/Grid.php @@ -0,0 +1,271 @@ + + */ +class Mage_Adminhtml_Block_Tag_Assigned_Grid extends Mage_Adminhtml_Block_Widget_Grid +{ + /** + * Set grid params + * + */ + public function __construct() + { + parent::__construct(); + $this->setId('tag_assigned_product_grid'); + $this->setDefaultSort('entity_id'); + $this->setDefaultDir('DESC'); + $this->setUseAjax(true); + if ($this->_getTagId()) { + $this->setDefaultFilter(array('in_products'=>1)); + } + } + + /** + * Tag ID getter + * + * @return int + */ + protected function _getTagId() + { + return Mage::registry('current_tag')->getId(); + } + + /** + * Store getter + * + * @return Mage_Core_Model_Store + */ + protected function _getStore() + { + $storeId = (int) $this->getRequest()->getParam('store', 0); + return Mage::app()->getStore($storeId); + } + + /** + * Add filter to grid columns + * + * @param mixed $column + * @return Mage_Adminhtml_Block_Tag_Assigned_Grid + */ + protected function _addColumnFilterToCollection($column) + { + // Set custom filter for in product flag + if ($column->getId() == 'in_products') { + $productIds = $this->_getSelectedProducts(); + if (empty($productIds)) { + $productIds = 0; + } + if ($column->getFilter()->getValue()) { + $this->getCollection()->addFieldToFilter('entity_id', array('in'=>$productIds)); + } else { + if($productIds) { + $this->getCollection()->addFieldToFilter('entity_id', array('nin'=>$productIds)); + } + } + } else { + parent::_addColumnFilterToCollection($column); + } + return $this; + } + + /** + * Retrieve Products Collection + * + * @return Mage_Adminhtml_Block_Tag_Assigned_Grid + */ + protected function _prepareCollection() + { + $store = $this->_getStore(); + $collection = Mage::getModel('catalog/product')->getCollection() + ->addAttributeToSelect('sku') + ->addAttributeToSelect('name') + ->addAttributeToSelect('attribute_set_id') + ->addAttributeToSelect('type_id') + ->joinField('qty', + 'cataloginventory/stock_item', + 'qty', + 'product_id=entity_id', + '{{table}}.stock_id=1', + 'left'); + + if ($store->getId()) { + $collection->addStoreFilter($store); + $collection->joinAttribute('custom_name', 'catalog_product/name', 'entity_id', null, 'inner', $store->getId()); + $collection->joinAttribute('status', 'catalog_product/status', 'entity_id', null, 'inner', $store->getId()); + $collection->joinAttribute('visibility', 'catalog_product/visibility', 'entity_id', null, 'inner', $store->getId()); + $collection->joinAttribute('price', 'catalog_product/price', 'entity_id', null, 'left', $store->getId()); + } else { + $collection->addAttributeToSelect('price'); + $collection->addAttributeToSelect('status'); + $collection->addAttributeToSelect('visibility'); + } + + $this->setCollection($collection); + + parent::_prepareCollection(); + $this->getCollection()->addWebsiteNamesToResult(); + return $this; + } + + /** + * Prepeare columns for grid + * + * @return Mage_Adminhtml_Block_Widget_Grid + */ + protected function _prepareColumns() + { + $this->addColumn('in_products', array( + 'header_css_class' => 'a-center', + 'type' => 'checkbox', + 'field_name' => 'in_products', + 'values' => $this->_getSelectedProducts(), + 'align' => 'center', + 'index' => 'entity_id' + )); + + $this->addColumn('entity_id', + array( + 'header'=> Mage::helper('catalog')->__('ID'), + 'width' => 50, + 'sortable' => true, + 'type' => 'number', + 'index' => 'entity_id', + )); + $this->addColumn('name', + array( + 'header'=> Mage::helper('catalog')->__('Name'), + 'index' => 'name', + )); + + $store = $this->_getStore(); + if ($store->getId()) { + $this->addColumn('custom_name', + array( + 'header'=> Mage::helper('catalog')->__('Name In %s', $store->getName()), + 'index' => 'custom_name', + )); + } + + $this->addColumn('type', + array( + 'header' => Mage::helper('catalog')->__('Type'), + 'width' => 100, + 'index' => 'type_id', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_type')->getOptionArray(), + )); + + $sets = Mage::getResourceModel('eav/entity_attribute_set_collection') + ->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId()) + ->load() + ->toOptionHash(); + + $this->addColumn('set_name', + array( + 'header' => Mage::helper('catalog')->__('Attrib. Set Name'), + 'width' => 100, + 'index' => 'attribute_set_id', + 'type' => 'options', + 'options' => $sets, + )); + + $this->addColumn('sku', + array( + 'header'=> Mage::helper('catalog')->__('SKU'), + 'width' => 80, + 'index' => 'sku', + )); + + $store = $this->_getStore(); + $this->addColumn('price', + array( + 'header' => Mage::helper('catalog')->__('Price'), + 'type' => 'price', + 'currency_code' => $store->getBaseCurrency()->getCode(), + 'index' => 'price', + )); + + $this->addColumn('visibility', + array( + 'header' => Mage::helper('catalog')->__('Visibility'), + 'width' => 100, + 'index' => 'visibility', + 'type' => 'options', + 'options' => Mage::getModel('catalog/product_visibility')->getOptionArray(), + )); + + $this->addColumn('status', + array( + 'header' => Mage::helper('catalog')->__('Status'), + 'width' => 70, + 'index' => 'status', + 'type' => 'options', + 'options' => Mage::getSingleton('catalog/product_status')->getOptionArray(), + )); + + return parent::_prepareColumns(); + } + + /** + * Retrieve related products + * + * @return array + */ + protected function _getSelectedProducts() + { + $products = $this->getRequest()->getPost('assigned_products', null); + if (!is_array($products)) { + $products = $this->getRelatedProducts(); + } + return $products; + } + + /** + * Retrieve Grid Url + * + * @return string + */ + public function getGridUrl() + { + return $this->getUrl('*/*/assignedGridOnly', array('_current' => true)); + } + + /** + * Retrieve related products + * + * @return array + */ + public function getRelatedProducts() + { + return Mage::registry('current_tag')->getRelatedProductIds(); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Customer/Grid.php b/app/code/core/Mage/Adminhtml/Block/Tag/Customer/Grid.php index 2ce80ddc36..43a022f1c0 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Customer/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Customer/Grid.php @@ -37,18 +37,30 @@ class Mage_Adminhtml_Block_Tag_Customer_Grid extends Mage_Adminhtml_Block_Widget public function __construct() { parent::__construct(); - $this->setId('tag_grid' . Mage::registry('tagId')); + $this->setId('tag_customer_grid' . Mage::registry('current_tag')->getId()); $this->setDefaultSort('name'); $this->setDefaultDir('ASC'); + $this->setUseAjax(true); + } + /* + * Retrieves Grid Url + * + * @return string + */ + public function getGridUrl() + { + return $this->getUrl('*/*/customer', array('_current' => true)); } protected function _prepareCollection() { - $tagId = Mage::registry('tagId'); + $tagId = Mage::registry('current_tag')->getId(); + $storeId = Mage::registry('current_tag')->getStoreId(); $collection = Mage::getModel('tag/tag') ->getCustomerCollection() ->addTagFilter($tagId) ->setCountAttribute('tr.tag_relation_id') + ->addStoreFilter($storeId) ->addGroupByCustomerProduct(); $this->setCollection($collection); @@ -65,7 +77,7 @@ protected function _prepareColumns() { $this->addColumn('customer_id', array( 'header' => Mage::helper('tag')->__('ID'), - 'width' => '50px', + 'width' => 50, 'align' => 'right', 'index' => 'entity_id', )); @@ -80,15 +92,6 @@ protected function _prepareColumns() 'index' => 'lastname', )); - if (!Mage::app()->isSingleStoreMode()) { - $this->addColumn('store_id', array( - 'header' => Mage::helper('tag')->__('Tagged in'), - 'index' => 'store_id', - 'type' => 'store', - 'store_view' => true, - )); - } - $this->addColumn('product', array( 'header' => Mage::helper('tag')->__('Product Name'), 'filter' => false, @@ -100,19 +103,12 @@ protected function _prepareColumns() 'header' => Mage::helper('tag')->__('Product SKU'), 'filter' => false, 'sortable' => false, - 'width' => '50px', + 'width' => 50, 'align' => 'right', 'index' => 'product_sku', )); - $this->addColumn('product_sku', array( - 'header' => Mage::helper('tag')->__('Product SKU'), - 'filter' => false, - 'sortable' => false, - 'width' => '50px', - 'align' => 'right', - 'index' => 'product_sku', - )); + return parent::_prepareColumns(); } diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Edit.php b/app/code/core/Mage/Adminhtml/Block/Tag/Edit.php index 2eaef52363..1a8c691e2e 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Edit.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Edit.php @@ -35,6 +35,10 @@ class Mage_Adminhtml_Block_Tag_Edit extends Mage_Adminhtml_Block_Widget_Form_Container { + /** + * Add and update buttons + * + */ public function __construct() { $this->_objectId = 'tag_id'; @@ -44,16 +48,102 @@ public function __construct() $this->_updateButton('save', 'label', Mage::helper('tag')->__('Save Tag')); $this->_updateButton('delete', 'label', Mage::helper('tag')->__('Delete Tag')); + + $this->addButton('save_and_edit_button', array( + 'label' => Mage::helper('tag')->__('Save And Continue Edit'), + 'onclick' => 'saveAndContinueEdit(\''.$this->getSaveAndContinueUrl().'\')', + 'class' => 'save' + ), 1); } + /** + * Add child HTML to layout + * + * @return Mage_Adminhtml_Block_Tag_Edit + */ + protected function _prepareLayout() + { + parent::_prepareLayout(); + + $this->setChild('store_switcher', $this->getLayout()->createBlock('adminhtml/tag_store_switcher')); + + $this->setChild('tag_assign_accordion', $this->getLayout()->createBlock('adminhtml/tag_edit_assigned')); + + $this->setChild('accordion', $this->getLayout()->createBlock('adminhtml/tag_edit_accordion')); + + return $this; + } + + /** + * Retrieve Header text + * + * @return string + */ public function getHeaderText() { - if (Mage::registry('tag_tag')->getId()) { - return Mage::helper('tag')->__("Edit Tag '%s'", $this->htmlEscape(Mage::registry('tag_tag')->getName())); - } - else { - return Mage::helper('tag')->__('New Tag'); + if (Mage::registry('current_tag')->getId()) { + return Mage::helper('tag')->__("Edit Tag '%s'", $this->htmlEscape(Mage::registry('current_tag')->getName())); } + return Mage::helper('tag')->__('New Tag'); + } + + /** + * Retrieve Accordions HTML + * + * @return string + */ + public function getAcordionsHtml() + { + return $this->getChildHtml('accordion'); + } + + /** + * Retrieve Assigned Tags Accordion HTML + * + * @return string + */ + public function getTagAssignAccordionHtml() + { + return $this->getChildHtml('tag_assign_accordion'); } + /** + * Retrieve Store Switcher HTML + * + * @return string + */ + public function getStoreSwitcherHtml() + { + return $this->getChildHtml('store_switcher'); + } + + /** + * Check whether it is single store mode + * + * @return bool + */ + public function isSingleStoreMode() + { + return Mage::app()->isSingleStoreMode(); + } + + /** + * Retrieve Tag Save URL + * + * @return string + */ + public function getSaveUrl() + { + return $this->getUrl('*/*/save', array('_current'=>true)); + } + + /** + * Retrieve Tag SaveAndContinue URL + * + * @return string + */ + public function getSaveAndContinueUrl() + { + return $this->getUrl('*/*/save', array('_current' => true, 'ret' => 'edit')); + } } diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Accordion.php b/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Accordion.php new file mode 100644 index 0000000000..97a5354b34 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Accordion.php @@ -0,0 +1,64 @@ + + */ + +class Mage_Adminhtml_Block_Tag_Edit_Accordion extends Mage_Adminhtml_Block_Widget_Accordion +{ + /** + * Add products and customers accordion to layout + * + */ + protected function _prepareLayout() + { + if (is_null(Mage::registry('current_tag')->getId())) { + return $this; + } + + $tagModel = Mage::registry('current_tag'); + + $this->setId('tag_customer_and_product_accordion'); + + $this->addItem('tag_customer', array( + 'title' => Mage::helper('tag')->__('Customers Submitted this Tag'), + 'ajax' => true, + 'content_url' => $this->getUrl('*/*/customer', array('ret' => 'all', 'tag_id'=>$tagModel->getId(), 'store'=>$tagModel->getStoreId())), + )); + + $this->addItem('tag_product', array( + 'title' => Mage::helper('tag')->__('Products Tagged by Customers'), + 'ajax' => true, + 'content_url' => $this->getUrl('*/*/product', array('ret' => 'all', 'tag_id'=>$tagModel->getId(), 'store'=>$tagModel->getStoreId())), + )); + return parent::_prepareLayout(); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Assigned.php b/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Assigned.php new file mode 100644 index 0000000000..74af7ba2a9 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Assigned.php @@ -0,0 +1,58 @@ + + */ + +class Mage_Adminhtml_Block_Tag_Edit_Assigned extends Mage_Adminhtml_Block_Widget_Accordion +{ + /** + * Add Assigned products accordion to layout + * + */ + protected function _prepareLayout() + { + if (is_null(Mage::registry('current_tag')->getId())) { + return $this; + } + + $tagModel = Mage::registry('current_tag'); + + $this->setId('tag_assigned_grid'); + + $this->addItem('tag_assign', array( + 'title' => Mage::helper('tag')->__('Products Tagged by Administrators'), + 'ajax' => true, + 'content_url' => $this->getUrl('*/*/assigned', array('ret' => 'all', 'tag_id'=>$tagModel->getId(), 'store'=>$tagModel->getStoreId())), + )); + return parent::_prepareLayout(); + } +} diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Form.php index f7ca2ff1fa..fe436354d9 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Edit/Form.php @@ -46,33 +46,54 @@ protected function _prepareForm() { $model = Mage::registry('tag_tag'); - $form = new Varien_Data_Form(array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post')); + $form = new Varien_Data_Form( + array('id' => 'edit_form', 'action' => $this->getData('action'), 'method' => 'post') + ); $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('tag')->__('General Information'))); if ($model->getTagId()) { - $fieldset->addField('tag_id', 'hidden', array( + $fieldset->addField('tag_id', 'hidden', array( 'name' => 'tag_id', )); } - $fieldset->addField('name', 'text', array( - 'name' => 'name', + $fieldset->addField('form_key', 'hidden', array( + 'name' => 'form_key', + 'value' => Mage::getSingleton('core/session')->getFormKey(), + )); + + $fieldset->addField('store_id', 'hidden', array( + 'name' => 'store_id', + 'value' => (int)$this->getRequest()->getParam('store') + )); + + $fieldset->addField('name', 'text', array( + 'name' => 'tag_name', 'label' => Mage::helper('tag')->__('Tag Name'), 'title' => Mage::helper('tag')->__('Tag Name'), 'required' => true, + 'after_element_html' => ' [GLOBAL]', )); - $fieldset->addField('status', 'select', array( + $fieldset->addField('status', 'select', array( 'label' => Mage::helper('tag')->__('Status'), 'title' => Mage::helper('tag')->__('Status'), - 'name' => 'status', + 'name' => 'tag_status', 'required' => true, 'options' => array( Mage_Tag_Model_Tag::STATUS_DISABLED => Mage::helper('tag')->__('Disabled'), Mage_Tag_Model_Tag::STATUS_PENDING => Mage::helper('tag')->__('Pending'), Mage_Tag_Model_Tag::STATUS_APPROVED => Mage::helper('tag')->__('Approved'), ), + 'after_element_html' => ' [GLOBAL]', + )); + + $fieldset->addField('base_popularity', 'text', array( + 'name' => 'base_popularity', + 'label' => Mage::helper('tag')->__('Base Popularity'), + 'title' => Mage::helper('tag')->__('Base Popularity'), + 'after_element_html' => ' [STORE VIEW]', )); if (!$model->getId() && !Mage::getSingleton('adminhtml/session')->getTagData() ) { @@ -80,17 +101,13 @@ protected function _prepareForm() } if ( Mage::getSingleton('adminhtml/session')->getTagData() ) { - $form->setValues(Mage::getSingleton('adminhtml/session')->getTagData()); + $form->addValues(Mage::getSingleton('adminhtml/session')->getTagData()); Mage::getSingleton('adminhtml/session')->setTagData(null); } else { - $form->setValues($model->getData()); + $form->addValues($model->getData()); } - $form->setUseContainer(true); - $form->setAction( $form->getAction() . 'ret/' . $this->getRequest()->getParam('ret') ); $this->setForm($form); - return parent::_prepareForm(); } - } diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Product/Grid.php b/app/code/core/Mage/Adminhtml/Block/Tag/Product/Grid.php index 6b5339b016..03dffcf868 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Product/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Product/Grid.php @@ -37,17 +37,31 @@ class Mage_Adminhtml_Block_Tag_Product_Grid extends Mage_Adminhtml_Block_Widget_ public function __construct() { parent::__construct(); - $this->setId('tag_grid' . Mage::registry('tagId')); + $this->setId('tag_product_grid' . Mage::registry('current_tag')->getId()); $this->setDefaultSort('name'); $this->setDefaultDir('ASC'); + $this->setUseAjax(true); + } + + /* + * Retrieves Grid Url + * + * @return string + */ + public function getGridUrl() + { + return $this->getUrl('*/*/product', array('_current' => true)); } protected function _prepareCollection() { - $tagId = Mage::registry('tagId'); + $tagId = Mage::registry('current_tag')->getId(); + $storeId = Mage::registry('current_tag')->getStoreId(); $collection = Mage::getModel('tag/tag') ->getEntityCollection() ->addTagFilter($tagId) + ->addCustomerFilter(array('null' => false)) + ->addStoreFilter($storeId) ->addPopularity($tagId); $this->setCollection($collection); @@ -81,6 +95,15 @@ protected function _prepareColumns() 'type' => 'number' )); + $this->addColumn('sku', array( + 'header' => Mage::helper('tag')->__('SKU'), + 'filter' => false, + 'sortable' => false, + 'width' => 50, + 'align' => 'right', + 'index' => 'sku', + )); + return parent::_prepareColumns(); } diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Store/Switcher.php b/app/code/core/Mage/Adminhtml/Block/Tag/Store/Switcher.php new file mode 100644 index 0000000000..5c72a50451 --- /dev/null +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Store/Switcher.php @@ -0,0 +1,51 @@ + + */ +class Mage_Adminhtml_Block_Tag_Store_Switcher extends Mage_Adminhtml_Block_Store_Switcher +{ + /** + * @var bool + */ + protected $_hasDefaultOption = false; + + /** + * Set overriden params + */ + public function __construct() + { + parent::__construct(); + $this->setUseConfirm(false)->setSwitchUrl( + $this->getUrl('*/*/*/', array('store' => null, '_current' => true)) + ); + } +} \ No newline at end of file diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Tag.php b/app/code/core/Mage/Adminhtml/Block/Tag/Tag.php index b9bb0b263e..5b27f715af 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Tag.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Tag.php @@ -38,7 +38,7 @@ class Mage_Adminhtml_Block_Tag_Tag extends Mage_Adminhtml_Block_Widget_Grid_Cont public function __construct() { $this->_controller = 'tag_tag'; - $this->_headerText = Mage::helper('tag')->__('All Tags'); + $this->_headerText = Mage::helper('tag')->__('Manage Tags'); $this->_addButtonLabel = Mage::helper('tag')->__('Add New Tag'); parent::__construct(); } diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit.php b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit.php index 477b7fd6d1..4a246e5645 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit.php @@ -27,6 +27,7 @@ /** * Admin tag edit block * + * @deprecated after 1.3.2.3 * @category Mage * @package Mage_Adminhtml * @author Magento Core Team @@ -63,6 +64,29 @@ public function __construct() $this->_updateButton('delete', 'label', Mage::helper('tag')->__('Delete Tag')); } + /** + * Add to layout accordion block + * + * @return Mage_Adminhtml_Block_Tag_Edit + */ + protected function _prepareLayout() + { + parent::_prepareLayout(); + $this->setChild('accordion', $this->getLayout()->createBlock('adminhtml/tag_edit_accordion')); + return $this; + } + + /** + * Adds to html of form html of accordion block + * + * @return string + */ + public function getFormHtml() + { + $html = parent::getFormHtml(); + return $html . $this->getChildHtml('accordion'); + } + public function getHeaderText() { if (Mage::registry('tag_tag')->getId()) { diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit/Form.php b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit/Form.php index f99bf71b5a..e8b7508c10 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Edit/Form.php @@ -27,6 +27,7 @@ /** * Adminhtml tag edit form * + * @deprecated after 1.3.2.3 * @category Mage * @package Mage_Adminhtml * @author Magento Core Team @@ -54,19 +55,19 @@ protected function _prepareForm() $fieldset = $form->addFieldset('base_fieldset', array('legend'=>Mage::helper('tag')->__('General Information'))); if ($model->getTagId()) { - $fieldset->addField('tag_id', 'hidden', array( + $fieldset->addField('tag_id', 'hidden', array( 'name' => 'tag_id', )); } - $fieldset->addField('name', 'text', array( + $fieldset->addField('name', 'text', array( 'name' => 'name', 'label' => Mage::helper('tag')->__('Tag Name'), 'title' => Mage::helper('tag')->__('Tag Name'), 'required' => true, )); - $fieldset->addField('status', 'select', array( + $fieldset->addField('status', 'select', array( 'label' => Mage::helper('tag')->__('Status'), 'title' => Mage::helper('tag')->__('Status'), 'name' => 'status', diff --git a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php index 4ff434e464..66f7ac9274 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php +++ b/app/code/core/Mage/Adminhtml/Block/Tag/Tag/Grid.php @@ -40,6 +40,17 @@ public function __construct() $this->setId('tag_tag_grid'); $this->setDefaultSort('name'); $this->setDefaultDir('ASC'); + $this->setUseAjax(true); + } + + /* + * Retrieves Grid Url + * + * @return string + */ + public function getGridUrl() + { + return $this->getUrl('*/tag/ajaxGrid'); } protected function _prepareCollection() @@ -97,7 +108,7 @@ protected function _prepareColumns() 'width' => '90px', 'index' => 'status', 'type' => 'options', - 'options' => $this->helper('tag/data')->getStatusesArray(), + 'options' => $this->helper('tag/data')->getStatusesArray(), )); if (!Mage::app()->isSingleStoreMode()) { @@ -111,30 +122,6 @@ protected function _prepareColumns() )); } - $this->addColumn('actions', array( - 'header' => Mage::helper('tag')->__('Actions'), - 'width' => '100px', - 'type' => 'action', - 'getter' => 'getId', - 'sortable' => false, - 'filter' => false, - 'actions' => array( - array( - 'caption' => Mage::helper('tag')->__('Edit Tag'), - 'url' => $this->getUrl('*/*/edit', array('ret' => 'all', 'tag_id'=>'$tag_id')), - ), - array( - 'caption' => Mage::helper('tag')->__('View Products'), - 'url' => $this->getUrl('*/*/product', array('ret' => 'all', 'tag_id'=>'$tag_id')), - ), - - array( - 'caption' => Mage::helper('tag')->__('View Customers'), - 'url' => $this->getUrl('*/*/customer', array('ret' => 'all', 'tag_id'=>'$tag_id')), - ) - ), - )); - return parent::_prepareColumns(); } @@ -148,11 +135,11 @@ public function getRowUrl($row) protected function _addColumnFilterToCollection($column) { - if($column->getIndex()=='stores') { - $this->getCollection()->addStoreFilter($column->getFilter()->getCondition(), false); - } else { - parent::_addColumnFilterToCollection($column); - } + if($column->getIndex()=='stores') { + $this->getCollection()->addStoreFilter($column->getFilter()->getCondition(), false); + } else { + parent::_addColumnFilterToCollection($column); + } return $this; } diff --git a/app/code/core/Mage/Adminhtml/Block/Tax/Rate/Form.php b/app/code/core/Mage/Adminhtml/Block/Tax/Rate/Form.php index b6e5d0c5fc..dc4585f351 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tax/Rate/Form.php +++ b/app/code/core/Mage/Adminhtml/Block/Tax/Rate/Form.php @@ -144,6 +144,7 @@ protected function _prepareForm() array( 'name' => 'tax_postcode', 'label' => Mage::helper('tax')->__('Zip/Post Code'), + 'note' => Mage::helper('tax')->__("'*' - matches any; 'xyz*' - matches any that begins on 'xyz' and not longer than %d; '9001-9099' - matches range.", Mage::helper('tax')->getPostCodeSubStringLength()), 'value' => $postcode ) ); diff --git a/app/code/core/Mage/Adminhtml/Block/Tax/Rule/Edit.php b/app/code/core/Mage/Adminhtml/Block/Tax/Rule/Edit.php index 3da022d676..fe98fa3c67 100644 --- a/app/code/core/Mage/Adminhtml/Block/Tax/Rule/Edit.php +++ b/app/code/core/Mage/Adminhtml/Block/Tax/Rule/Edit.php @@ -47,6 +47,14 @@ public function __construct() $this->_updateButton('save', 'label', Mage::helper('tax')->__('Save Rule')); $this->_updateButton('delete', 'label', Mage::helper('tax')->__('Delete Rule')); + + $this->_addButton('save_and_continue', array( + 'label' => Mage::helper('tax')->__('Save And Continue Edit'), + 'onclick' => 'saveAndContinueEdit()', + 'class' => 'save' + ), 10); + + $this->_formScripts[] = " function saveAndContinueEdit(){ editForm.submit($('edit_form').action + 'back/edit/') } "; } /** diff --git a/app/code/core/Mage/Adminhtml/Block/Widget.php b/app/code/core/Mage/Adminhtml/Block/Widget.php index a5e8ce1f39..f855325f4d 100644 --- a/app/code/core/Mage/Adminhtml/Block/Widget.php +++ b/app/code/core/Mage/Adminhtml/Block/Widget.php @@ -46,9 +46,18 @@ public function getHtmlId() return $this->getId(); } - public function getCurrentUrl($params=array()) + /** + * Get current url + * + * @param array $params url parameters + * @return string current url + */ + public function getCurrentUrl($params = array()) { - return $this->getUrl('*/*/*', array('_current'=>true)); + if (!isset($params['_current'])) { + $params['_current'] = true; + } + return $this->getUrl('*/*/*', $params); } protected function _addBreadcrumb($label, $title=null, $link=null) diff --git a/app/code/core/Mage/Adminhtml/Block/Widget/Button.php b/app/code/core/Mage/Adminhtml/Block/Widget/Button.php index 772cc66581..7e314c7227 100644 --- a/app/code/core/Mage/Adminhtml/Block/Widget/Button.php +++ b/app/code/core/Mage/Adminhtml/Block/Widget/Button.php @@ -55,7 +55,7 @@ protected function _toHtml() { $html = $this->getBeforeHtml().'