Interface_Adminhtml_Default - Version 1.6.1.0

Version Notes

1.6.1.0

Download this release

Release Info

Developer Magento Core Team
Extension Interface_Adminhtml_Default
Version 1.6.1.0
Comparing to
See all releases


Version 1.6.1.0

Files changed (186) hide show
  1. app/design/adminhtml/default/default/layout/admin.xml +69 -0
  2. app/design/adminhtml/default/default/layout/adminnotification.xml +38 -0
  3. app/design/adminhtml/default/default/layout/authorizenet.xml +35 -0
  4. app/design/adminhtml/default/default/layout/bundle.xml +118 -0
  5. app/design/adminhtml/default/default/layout/catalog.xml +332 -0
  6. app/design/adminhtml/default/default/layout/cms.xml +95 -0
  7. app/design/adminhtml/default/default/layout/connect.xml +73 -0
  8. app/design/adminhtml/default/default/layout/customer.xml +60 -0
  9. app/design/adminhtml/default/default/layout/dataflow.xml +59 -0
  10. app/design/adminhtml/default/default/layout/downloadable.xml +97 -0
  11. app/design/adminhtml/default/default/layout/giftmessage.xml +82 -0
  12. app/design/adminhtml/default/default/layout/importexport.xml +33 -0
  13. app/design/adminhtml/default/default/layout/index.xml +45 -0
  14. app/design/adminhtml/default/default/layout/main.xml +256 -0
  15. app/design/adminhtml/default/default/layout/newsletter.xml +67 -0
  16. app/design/adminhtml/default/default/layout/pagecache.xml +35 -0
  17. app/design/adminhtml/default/default/layout/promo.xml +90 -0
  18. app/design/adminhtml/default/default/layout/report.xml +35 -0
  19. app/design/adminhtml/default/default/layout/rss.xml +45 -0
  20. app/design/adminhtml/default/default/layout/sales.xml +1080 -0
  21. app/design/adminhtml/default/default/layout/search.xml +35 -0
  22. app/design/adminhtml/default/default/layout/tag.xml +52 -0
  23. app/design/adminhtml/default/default/layout/widget.xml +69 -0
  24. app/design/adminhtml/default/default/locale/en_US/translate.csv +201 -0
  25. app/design/adminhtml/default/default/template/access_denied.phtml +40 -0
  26. app/design/adminhtml/default/default/template/api/role_users_grid_js.phtml +105 -0
  27. app/design/adminhtml/default/default/template/api/roleinfo.phtml +45 -0
  28. app/design/adminhtml/default/default/template/api/roles.phtml +37 -0
  29. app/design/adminhtml/default/default/template/api/rolesedit.phtml +143 -0
  30. app/design/adminhtml/default/default/template/api/rolesusers.phtml +28 -0
  31. app/design/adminhtml/default/default/template/api/user_roles_grid_js.phtml +85 -0
  32. app/design/adminhtml/default/default/template/api/userinfo.phtml +52 -0
  33. app/design/adminhtml/default/default/template/api/usernroles.phtml +31 -0
  34. app/design/adminhtml/default/default/template/api/userroles.phtml +45 -0
  35. app/design/adminhtml/default/default/template/api/users.phtml +40 -0
  36. app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml +55 -0
  37. app/design/adminhtml/default/default/template/authorizenet/directpost/info.phtml +157 -0
  38. app/design/adminhtml/default/default/template/backup/left.phtml +27 -0
  39. app/design/adminhtml/default/default/template/backup/list.phtml +35 -0
  40. app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/bundle.phtml +95 -0
  41. app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/checkbox.phtml +51 -0
  42. app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/multi.phtml +48 -0
  43. app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/radio.phtml +64 -0
  44. app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/select.phtml +54 -0
  45. app/design/adminhtml/default/default/template/bundle/product/edit/bundle.phtml +76 -0
  46. app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml +234 -0
  47. app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/search.phtml +35 -0
  48. app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/selection.phtml +352 -0
  49. app/design/adminhtml/default/default/template/bundle/sales/creditmemo/create/items/renderer.phtml +411 -0
  50. app/design/adminhtml/default/default/template/bundle/sales/creditmemo/view/items/renderer.phtml +341 -0
  51. app/design/adminhtml/default/default/template/bundle/sales/invoice/create/items/renderer.phtml +398 -0
  52. app/design/adminhtml/default/default/template/bundle/sales/invoice/view/items/renderer.phtml +340 -0
  53. app/design/adminhtml/default/default/template/bundle/sales/order/view/items/renderer.phtml +415 -0
  54. app/design/adminhtml/default/default/template/bundle/sales/shipment/create/items/renderer.phtml +118 -0
  55. app/design/adminhtml/default/default/template/bundle/sales/shipment/view/items/renderer.phtml +115 -0
  56. app/design/adminhtml/default/default/template/catalog/category/checkboxes/tree.phtml +199 -0
  57. app/design/adminhtml/default/default/template/catalog/category/edit.phtml +198 -0
  58. app/design/adminhtml/default/default/template/catalog/category/edit/form.phtml +258 -0
  59. app/design/adminhtml/default/default/template/catalog/category/tree.phtml +480 -0
  60. app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml +202 -0
  61. app/design/adminhtml/default/default/template/catalog/form/renderer/fieldset/element.phtml +56 -0
  62. app/design/adminhtml/default/default/template/catalog/product.phtml +47 -0
  63. app/design/adminhtml/default/default/template/catalog/product/attribute/js.phtml +331 -0
  64. app/design/adminhtml/default/default/template/catalog/product/attribute/new/created.phtml +54 -0
  65. app/design/adminhtml/default/default/template/catalog/product/attribute/options.phtml +212 -0
  66. app/design/adminhtml/default/default/template/catalog/product/attribute/set/main.phtml +461 -0
  67. app/design/adminhtml/default/default/template/catalog/product/attribute/set/main/tree/attribute.phtml +26 -0
  68. app/design/adminhtml/default/default/template/catalog/product/attribute/set/main/tree/group.phtml +27 -0
  69. app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/add.phtml +41 -0
  70. app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/main.phtml +36 -0
  71. app/design/adminhtml/default/default/template/catalog/product/composite/configure.phtml +54 -0
  72. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/configurable.phtml +59 -0
  73. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/grouped.phtml +94 -0
  74. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options.phtml +45 -0
  75. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/js.phtml +106 -0
  76. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/date.phtml +94 -0
  77. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/default.phtml +31 -0
  78. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/file.phtml +103 -0
  79. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/select.phtml +39 -0
  80. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/text.phtml +42 -0
  81. app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/qty.phtml +36 -0
  82. app/design/adminhtml/default/default/template/catalog/product/created.phtml +59 -0
  83. app/design/adminhtml/default/default/template/catalog/product/edit.phtml +133 -0
  84. app/design/adminhtml/default/default/template/catalog/product/edit/action/attribute.phtml +61 -0
  85. app/design/adminhtml/default/default/template/catalog/product/edit/action/inventory.phtml +181 -0
  86. app/design/adminhtml/default/default/template/catalog/product/edit/action/websites.phtml +120 -0
  87. app/design/adminhtml/default/default/template/catalog/product/edit/categories.phtml +148 -0
  88. app/design/adminhtml/default/default/template/catalog/product/edit/options.phtml +57 -0
  89. app/design/adminhtml/default/default/template/catalog/product/edit/options/option.phtml +351 -0
  90. app/design/adminhtml/default/default/template/catalog/product/edit/options/type/date.phtml +53 -0
  91. app/design/adminhtml/default/default/template/catalog/product/edit/options/type/file.phtml +57 -0
  92. app/design/adminhtml/default/default/template/catalog/product/edit/options/type/select.phtml +173 -0
  93. app/design/adminhtml/default/default/template/catalog/product/edit/options/type/text.phtml +55 -0
  94. app/design/adminhtml/default/default/template/catalog/product/edit/price/tier.phtml +171 -0
  95. app/design/adminhtml/default/default/template/catalog/product/edit/serializer.phtml +33 -0
  96. app/design/adminhtml/default/default/template/catalog/product/edit/super/config.phtml +153 -0
  97. app/design/adminhtml/default/default/template/catalog/product/edit/websites.phtml +97 -0
  98. app/design/adminhtml/default/default/template/catalog/product/helper/gallery.phtml +125 -0
  99. app/design/adminhtml/default/default/template/catalog/product/js.phtml +94 -0
  100. app/design/adminhtml/default/default/template/catalog/product/price.phtml +383 -0
  101. app/design/adminhtml/default/default/template/catalog/product/tab/alert.phtml +37 -0
  102. app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml +233 -0
  103. app/design/adminhtml/default/default/template/catalog/product/widget/chooser/container.phtml +37 -0
  104. app/design/adminhtml/default/default/template/catalog/wysiwyg/js.phtml +118 -0
  105. app/design/adminhtml/default/default/template/cms/browser/content.phtml +49 -0
  106. app/design/adminhtml/default/default/template/cms/browser/content/files.phtml +54 -0
  107. app/design/adminhtml/default/default/template/cms/browser/content/newfolder.phtml +33 -0
  108. app/design/adminhtml/default/default/template/cms/browser/content/uploader.phtml +74 -0
  109. app/design/adminhtml/default/default/template/cms/browser/js.phtml +39 -0
  110. app/design/adminhtml/default/default/template/cms/browser/tree.phtml +82 -0
  111. app/design/adminhtml/default/default/template/cms/page/edit/form/renderer/content.phtml +32 -0
  112. app/design/adminhtml/default/default/template/coming.phtml +30 -0
  113. app/design/adminhtml/default/default/template/connect/extension/custom/authors.phtml +91 -0
  114. app/design/adminhtml/default/default/template/connect/extension/custom/contents.phtml +91 -0
  115. app/design/adminhtml/default/default/template/connect/extension/custom/depends.phtml +137 -0
  116. app/design/adminhtml/default/default/template/connect/extension/custom/load.phtml +35 -0
  117. app/design/adminhtml/default/default/template/connect/extension/custom/package.phtml +91 -0
  118. app/design/adminhtml/default/default/template/connect/extension/custom/release.phtml +29 -0
  119. app/design/adminhtml/default/default/template/customer/edit/js.phtml +33 -0
  120. app/design/adminhtml/default/default/template/customer/edit/tab/view/grid/item.phtml +46 -0
  121. app/design/adminhtml/default/default/template/customer/online.phtml +34 -0
  122. app/design/adminhtml/default/default/template/customer/tab/addresses.phtml +560 -0
  123. app/design/adminhtml/default/default/template/customer/tab/cart.phtml +96 -0
  124. app/design/adminhtml/default/default/template/customer/tab/newsletter.phtml +30 -0
  125. app/design/adminhtml/default/default/template/customer/tab/view.phtml +82 -0
  126. app/design/adminhtml/default/default/template/customer/tab/view/sales.phtml +85 -0
  127. app/design/adminhtml/default/default/template/customer/tab/wishlist.phtml +79 -0
  128. app/design/adminhtml/default/default/template/dashboard/graph.phtml +65 -0
  129. app/design/adminhtml/default/default/template/dashboard/graph/disabled.phtml +31 -0
  130. app/design/adminhtml/default/default/template/dashboard/grid.phtml +86 -0
  131. app/design/adminhtml/default/default/template/dashboard/index.phtml +133 -0
  132. app/design/adminhtml/default/default/template/dashboard/salebar.phtml +36 -0
  133. app/design/adminhtml/default/default/template/dashboard/searches.phtml +35 -0
  134. app/design/adminhtml/default/default/template/dashboard/store/switcher.phtml +76 -0
  135. app/design/adminhtml/default/default/template/dashboard/totalbar.phtml +42 -0
  136. app/design/adminhtml/default/default/template/directory/js/optional_zip_countries.phtml +66 -0
  137. app/design/adminhtml/default/default/template/downloadable/product/composite/fieldset/downloadable.phtml +90 -0
  138. app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable.phtml +273 -0
  139. app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable/links.phtml +388 -0
  140. app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable/samples.phtml +217 -0
  141. app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/creditmemo/name.phtml +62 -0
  142. app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/invoice/name.phtml +62 -0
  143. app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/name.phtml +62 -0
  144. app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml +139 -0
  145. app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml +123 -0
  146. app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml +133 -0
  147. app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml +123 -0
  148. app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml +146 -0
  149. app/design/adminhtml/default/default/template/eav/attribute/edit/js.phtml +26 -0
  150. app/design/adminhtml/default/default/template/email/order/items.phtml +150 -0
  151. app/design/adminhtml/default/default/template/example.phtml +301 -0
  152. app/design/adminhtml/default/default/template/forgotpassword.phtml +72 -0
  153. app/design/adminhtml/default/default/template/formkey.phtml +27 -0
  154. app/design/adminhtml/default/default/template/giftmessage/form.phtml +57 -0
  155. app/design/adminhtml/default/default/template/giftmessage/giftoptionsform.phtml +68 -0
  156. app/design/adminhtml/default/default/template/giftmessage/helper.phtml +104 -0
  157. app/design/adminhtml/default/default/template/giftmessage/popup.phtml +56 -0
  158. app/design/adminhtml/default/default/template/giftmessage/sales/order/create/giftoptions.phtml +53 -0
  159. app/design/adminhtml/default/default/template/giftmessage/sales/order/create/items.phtml +41 -0
  160. app/design/adminhtml/default/default/template/giftmessage/sales/order/view/giftoptions.phtml +53 -0
  161. app/design/adminhtml/default/default/template/giftmessage/sales/order/view/items.phtml +44 -0
  162. app/design/adminhtml/default/default/template/googlebase/captcha.phtml +35 -0
  163. app/design/adminhtml/default/default/template/googlebase/items.phtml +55 -0
  164. app/design/adminhtml/default/default/template/googlebase/types/edit/attributes.phtml +125 -0
  165. app/design/adminhtml/default/default/template/importexport/busy.phtml +43 -0
  166. app/design/adminhtml/default/default/template/importexport/export/form/after.phtml +43 -0
  167. app/design/adminhtml/default/default/template/importexport/export/form/before.phtml +71 -0
  168. app/design/adminhtml/default/default/template/importexport/import/form/after.phtml +32 -0
  169. app/design/adminhtml/default/default/template/importexport/import/form/before.phtml +137 -0
  170. app/design/adminhtml/default/default/template/importexport/import/frame/result.phtml +31 -0
  171. app/design/adminhtml/default/default/template/index/notifications.phtml +34 -0
  172. app/design/adminhtml/default/default/template/login.phtml +75 -0
  173. app/design/adminhtml/default/default/template/media/editor.phtml +47 -0
  174. app/design/adminhtml/default/default/template/media/uploader.phtml +75 -0
  175. app/design/adminhtml/default/default/template/newsletter/preview/iframeswitcher.phtml +91 -0
  176. app/design/adminhtml/default/default/template/newsletter/preview/store.phtml +60 -0
  177. app/design/adminhtml/default/default/template/newsletter/problem/list.phtml +94 -0
  178. app/design/adminhtml/default/default/template/newsletter/queue/edit.phtml +99 -0
  179. app/design/adminhtml/default/default/template/newsletter/queue/list.phtml +39 -0
  180. app/design/adminhtml/default/default/template/newsletter/queue/preview.phtml +37 -0
  181. app/design/adminhtml/default/default/template/newsletter/subscriber/list.phtml +82 -0
  182. app/design/adminhtml/default/default/template/newsletter/template/edit.phtml +190 -0
  183. app/design/adminhtml/default/default/template/newsletter/template/list.phtml +39 -0
  184. app/design/adminhtml/default/default/template/newsletter/template/preview.phtml +37 -0
  185. app/design/adminhtml/default/default/template/notification/baseurl.phtml +35 -0
  186. app/design/adminhtml/default/default/template/notification/security.phtml +9 -0
app/design/adminhtml/default/default/layout/admin.xml ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <!-- admin acl roles grid page -->
31
+ <adminhtml_permissions_role_index>
32
+ <reference name="content">
33
+ <block type="adminhtml/permissions_roles" name="adminhtml.permission.role.index" template="permissions/roles.phtml">
34
+ <block type="adminhtml/permissions_grid_role" name="adminhtml.permission.role.grid" as="grid"/>
35
+ </block>
36
+ </reference>
37
+ </adminhtml_permissions_role_index>
38
+ <adminhtml_permissions_role_rolegrid>
39
+ <remove name="root"/>
40
+ <block type="adminhtml/permissions_grid_role" name="adminhtml.permission.role.grid"/>
41
+ </adminhtml_permissions_role_rolegrid>
42
+
43
+ <!-- admin acl roles edit page -->
44
+ <adminhtml_permissions_role_editrole>
45
+ <reference name="left">
46
+ <block type="adminhtml/permissions_editroles" name="adminhtml.permissions.editroles"/>
47
+ </reference>
48
+ </adminhtml_permissions_role_editrole>
49
+ <adminhtml_system_config_edit>
50
+ <reference name="left">
51
+ <block type="adminhtml/system_config_switcher" name="adminhtml.system.config.switcher" before="-"/>
52
+ </reference>
53
+ </adminhtml_system_config_edit>
54
+ <adminhtml_dashboard_index>
55
+ <reference name="content">
56
+ <block type="adminhtml/dashboard" name="dashboard">
57
+ <block type="adminhtml/store_switcher" name="store_switcher" as="store_switcher" template="store/switcher.phtml">
58
+ <action method="setUseConfirm"><params>0</params></action>
59
+ </block>
60
+ </block>
61
+ </reference>
62
+ </adminhtml_dashboard_index>
63
+ <adminhtml_cache_index>
64
+ <reference name="content">
65
+ <block type="adminhtml/cache" name="cache"></block>
66
+ <block type="adminhtml/cache_additional" name="cache.additional" template="system/cache/additional.phtml"></block>
67
+ </reference>
68
+ </adminhtml_cache_index>
69
+ </layout>
app/design/adminhtml/default/default/layout/adminnotification.xml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <default>
31
+ <reference name="notifications">
32
+ <block type="adminhtml/notification_toolbar" name="notification_toolbar" as="notification_toolbar" acl="system/adminnotification/show_toolbar" template="notification/toolbar.phtml" />
33
+ </reference>
34
+ <reference name="notifications">
35
+ <block type="adminhtml/notification_window" name="notification_window" as="notification_window" acl="system/adminnotification/show_toolbar" template="notification/window.phtml" />
36
+ </reference>
37
+ </default>
38
+ </layout>
app/design/adminhtml/default/default/layout/authorizenet.xml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+
28
+ -->
29
+ <layout version="0.1.0">
30
+ <adminhtml_sales_order_create_index>
31
+ <reference name="head">
32
+ <action method="addJs"><file>mage/directpost.js</file></action>
33
+ </reference>
34
+ </adminhtml_sales_order_create_index>
35
+ </layout>
app/design/adminhtml/default/default/layout/bundle.xml ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+
31
+ <!--
32
+ Layout handle for budle products
33
+ -->
34
+
35
+ <!--<default>
36
+ <reference name="left">
37
+ <action method="setData"><attribute>attributeTabs</attribute><attributeType>bundle/adminhtml_catalog_product_edit_tab_attributes</attributeType></action>
38
+ </reference>
39
+ </default>-->
40
+
41
+ <adminhtml_catalog_product_bundle>
42
+ <reference name="product_tabs">
43
+ <action method="addTab"><name>bundle_items</name><block>bundle/adminhtml_catalog_product_edit_tab_bundle</block></action>
44
+ <action method="bindShadowTabs"><first>bundle_items</first><second>customer_options</second></action>
45
+ </reference>
46
+ </adminhtml_catalog_product_bundle>
47
+
48
+ <adminhtml_sales_order_view>
49
+ <reference name="order_items">
50
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_view_items_renderer</block><template>bundle/sales/order/view/items/renderer.phtml</template></action>
51
+ </reference>
52
+ </adminhtml_sales_order_view>
53
+
54
+ <adminhtml_sales_order_invoice_new>
55
+ <reference name="order_items">
56
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/invoice/create/items/renderer.phtml</template></action>
57
+ </reference>
58
+ </adminhtml_sales_order_invoice_new>
59
+
60
+ <adminhtml_sales_order_invoice_updateqty>
61
+ <reference name="order_items">
62
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/invoice/create/items/renderer.phtml</template></action>
63
+ </reference>
64
+ </adminhtml_sales_order_invoice_updateqty>
65
+
66
+ <adminhtml_sales_order_invoice_view>
67
+ <reference name="invoice_items">
68
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/invoice/view/items/renderer.phtml</template></action>
69
+ </reference>
70
+ </adminhtml_sales_order_invoice_view>
71
+
72
+ <adminhtml_sales_order_shipment_new>
73
+ <reference name="order_items">
74
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/shipment/create/items/renderer.phtml</template></action>
75
+ </reference>
76
+ </adminhtml_sales_order_shipment_new>
77
+
78
+ <adminhtml_sales_order_shipment_view>
79
+ <reference name="shipment_items">
80
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/shipment/view/items/renderer.phtml</template></action>
81
+ </reference>
82
+ </adminhtml_sales_order_shipment_view>
83
+
84
+ <adminhtml_sales_order_creditmemo_new>
85
+ <reference name="order_items">
86
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/creditmemo/create/items/renderer.phtml</template></action>
87
+ </reference>
88
+ </adminhtml_sales_order_creditmemo_new>
89
+
90
+ <adminhtml_sales_order_creditmemo_updateqty>
91
+ <reference name="order_items">
92
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/creditmemo/create/items/renderer.phtml</template></action>
93
+ </reference>
94
+ </adminhtml_sales_order_creditmemo_updateqty>
95
+
96
+ <adminhtml_sales_order_creditmemo_view>
97
+ <reference name="creditmemo_items">
98
+ <action method="addItemRender"><type>bundle</type><block>bundle/adminhtml_sales_order_items_renderer</block><template>bundle/sales/creditmemo/view/items/renderer.phtml</template></action>
99
+ </reference>
100
+ </adminhtml_sales_order_creditmemo_view>
101
+
102
+ <adminhtml_customer_wishlist>
103
+ <reference name="customer.wishlist.edit.tab">
104
+ <action method="addProductConfigurationHelper"><type>bundle</type><name>bundle/catalog_product_configuration</name></action>
105
+ </reference>
106
+ </adminhtml_customer_wishlist>
107
+
108
+ <PRODUCT_TYPE_bundle>
109
+ <reference name="product.composite.fieldset">
110
+ <block type="bundle/adminhtml_catalog_product_composite_fieldset_bundle" before="product.composite.fieldset.options" name="product.composite.fieldset.bundle" template="bundle/product/composite/fieldset/options/bundle.phtml">
111
+ <action method="addRenderer"><type>select</type><block>bundle/adminhtml_catalog_product_composite_fieldset_options_type_select</block></action>
112
+ <action method="addRenderer"><type>multi</type><block>bundle/adminhtml_catalog_product_composite_fieldset_options_type_multi</block></action>
113
+ <action method="addRenderer"><type>radio</type><block>bundle/adminhtml_catalog_product_composite_fieldset_options_type_radio</block></action>
114
+ <action method="addRenderer"><type>checkbox</type><block>bundle/adminhtml_catalog_product_composite_fieldset_options_type_checkbox</block></action>
115
+ </block>
116
+ </reference>
117
+ </PRODUCT_TYPE_bundle>
118
+ </layout>
app/design/adminhtml/default/default/layout/catalog.xml ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_catalog_product_index>
31
+ <referense name="head">
32
+ <action method="setTitle" translate="title"><title>Catalog</title></action>
33
+ </referense>
34
+ <reference name="menu">
35
+ <action method="setActive"><menupath>catalog/products</menupath></action>
36
+ </reference>
37
+ <reference name="content">
38
+ <block type="adminhtml/catalog_product" name="products_list">
39
+ <block type="adminhtml/store_switcher" name="store_switcher" as="store_switcher">
40
+ <action method="setUseConfirm"><params>0</params></action>
41
+ </block>
42
+ </block>
43
+ </reference>
44
+ </adminhtml_catalog_product_index>
45
+
46
+ <adminhtml_catalog_product_new>
47
+ <update handle="editor"/>
48
+ <reference name="content">
49
+ <block type="adminhtml/catalog_product_edit" name="product_edit"></block>
50
+ </reference>
51
+ <reference name="left">
52
+ <block type="adminhtml/catalog_product_edit_tabs" name="product_tabs"></block>
53
+ </reference>
54
+ <reference name="js">
55
+ <block type="adminhtml/catalog_product_edit_js" template="catalog/product/js.phtml" name="catalog_product_js"></block>
56
+ <block type="core/template" template="catalog/wysiwyg/js.phtml"/>
57
+ </reference>
58
+ </adminhtml_catalog_product_new>
59
+
60
+ <adminhtml_catalog_product_edit>
61
+ <update handle="editor"/>
62
+ <reference name="content">
63
+ <block type="adminhtml/catalog_product_edit" name="product_edit"></block>
64
+ </reference>
65
+ <reference name="left">
66
+ <block type="adminhtml/store_switcher" name="store_switcher" before="-"></block>
67
+ <block type="adminhtml/catalog_product_edit_tabs" name="product_tabs"></block>
68
+ </reference>
69
+ <reference name="js">
70
+ <block type="adminhtml/catalog_product_edit_js" template="catalog/product/js.phtml" name="catalog_product_js"></block>
71
+ <block type="core/template" name="catalog.wysiwyg.js" template="catalog/wysiwyg/js.phtml"/>
72
+ </reference>
73
+ </adminhtml_catalog_product_edit>
74
+
75
+ <adminhtml_catalog_product_categories>
76
+ <block type="core/text_list" name="root" output="toHtml">
77
+ <block type="adminhtml/catalog_product_edit_tab_categories" name="catalog.product.edit.tab.categories"/>
78
+ </block>
79
+ </adminhtml_catalog_product_categories>
80
+
81
+ <adminhtml_catalog_product_reviews>
82
+ <block type="core/text_list" name="root" output="toHtml">
83
+ <block type="adminhtml/catalog_product_edit_tab_reviews" name="admin.product.reviews"/>
84
+ </block>
85
+ </adminhtml_catalog_product_reviews>
86
+
87
+ <adminhtml_catalog_product_taggrid>
88
+ <block type="core/text_list" name="root" output="toHtml">
89
+ <block type="adminhtml/catalog_product_edit_tab_tag" name="admin.product.tags"/>
90
+ </block>
91
+ </adminhtml_catalog_product_taggrid>
92
+
93
+ <adminhtml_catalog_product_tagcustomergrid>
94
+ <block type="core/text_list" name="root" output="toHtml">
95
+ <block type="adminhtml/catalog_product_edit_tab_tag_customer" name="admin.product.tags.customers"/>
96
+ </block>
97
+ </adminhtml_catalog_product_tagcustomergrid>
98
+
99
+ <adminhtml_catalog_product_options>
100
+ <block type="core/text_list" name="root" output="toHtml">
101
+ <block type="adminhtml/catalog_product_edit_tab_options" name="admin.product.options"/>
102
+ </block>
103
+ </adminhtml_catalog_product_options>
104
+
105
+ <adminhtml_catalog_product_grid>
106
+ <block type="core/text_list" name="root" output="toHtml">
107
+ <block type="adminhtml/catalog_product_grid" name="admin.product.grid"/>
108
+ </block>
109
+ </adminhtml_catalog_product_grid>
110
+
111
+ <adminhtml_catalog_product_related>
112
+ <block type="core/text_list" name="root" output="toHtml">
113
+ <block type="adminhtml/catalog_product_edit_tab_related" name="catalog.product.edit.tab.related"/>
114
+ <block type="adminhtml/widget_grid_serializer" name="related_grid_serializer">
115
+ <reference name="related_grid_serializer">
116
+ <action method="initSerializerBlock">
117
+ <grid_block_name>catalog.product.edit.tab.related</grid_block_name>
118
+ <data_callback>getSelectedRelatedProducts</data_callback>
119
+ <hidden_input_name>links[related]</hidden_input_name>
120
+ <reload_param_name>products_related</reload_param_name>
121
+ </action>
122
+ <action method="addColumnInputName">
123
+ <input_name>position</input_name>
124
+ </action>
125
+ </reference>
126
+ </block>
127
+ </block>
128
+ </adminhtml_catalog_product_related>
129
+
130
+ <adminhtml_catalog_product_relatedgrid>
131
+ <block type="core/text_list" name="root" output="toHtml">
132
+ <block type="adminhtml/catalog_product_edit_tab_related" name="catalog.product.edit.tab.related"/>
133
+ </block>
134
+ </adminhtml_catalog_product_relatedgrid>
135
+
136
+ <adminhtml_catalog_product_superconfig>
137
+ <block type="adminhtml/catalog_product_edit_tab_super_config_grid" name="admin.product.edit.tab.super.config.grid" output="toHtml" />
138
+ </adminhtml_catalog_product_superconfig>
139
+
140
+ <adminhtml_catalog_product_alertspricegrid>
141
+ <block type="adminhtml/catalog_product_edit_tab_alerts_price" name="admin.product.edit.tab.alerts.price" output="toHtml" />
142
+ </adminhtml_catalog_product_alertspricegrid>
143
+
144
+ <adminhtml_catalog_product_alertsstockgrid>
145
+ <block type="adminhtml/catalog_product_edit_tab_alerts_stock" name="admin.product.edit.tab.alerts.stock" output="toHtml" />
146
+ </adminhtml_catalog_product_alertsstockgrid>
147
+
148
+ <adminhtml_catalog_product_upsell>
149
+ <block type="core/text_list" name="root" output="toHtml">
150
+ <block type="adminhtml/catalog_product_edit_tab_upsell" name="catalog.product.edit.tab.upsell"/>
151
+ <block type="adminhtml/widget_grid_serializer" name="upsell_grid_serializer">
152
+ <reference name="upsell_grid_serializer">
153
+ <action method="initSerializerBlock">
154
+ <grid_block_name>catalog.product.edit.tab.upsell</grid_block_name>
155
+ <data_callback>getSelectedUpsellProducts</data_callback>
156
+ <hidden_input_name>links[upsell]</hidden_input_name>
157
+ <reload_param_name>products_upsell</reload_param_name>
158
+ </action>
159
+ <action method="addColumnInputName">
160
+ <input_name>position</input_name>
161
+ </action>
162
+ </reference>
163
+ </block>
164
+ </block>
165
+ </adminhtml_catalog_product_upsell>
166
+
167
+ <adminhtml_catalog_product_upsellgrid>
168
+ <block type="core/text_list" name="root" output="toHtml">
169
+ <block type="adminhtml/catalog_product_edit_tab_upsell" name="catalog.product.edit.tab.upsell"/>
170
+ </block>
171
+ </adminhtml_catalog_product_upsellgrid>
172
+
173
+ <adminhtml_catalog_product_crosssell>
174
+ <block type="core/text_list" name="root" output="toHtml">
175
+ <block type="adminhtml/catalog_product_edit_tab_crosssell" name="catalog.product.edit.tab.crosssell"/>
176
+ <block type="adminhtml/widget_grid_serializer" name="crosssell_grid_serializer">
177
+ <reference name="crosssell_grid_serializer">
178
+ <action method="initSerializerBlock">
179
+ <grid_block_name>catalog.product.edit.tab.crosssell</grid_block_name>
180
+ <data_callback>getSelectedCrossSellProducts</data_callback>
181
+ <hidden_input_name>links[crosssell]</hidden_input_name>
182
+ <reload_param_name>products_crosssell</reload_param_name>
183
+ </action>
184
+ <action method="addColumnInputName">
185
+ <input_name>position</input_name>
186
+ </action>
187
+ </reference>
188
+ </block>
189
+ </block>
190
+ </adminhtml_catalog_product_crosssell>
191
+
192
+ <adminhtml_catalog_product_crosssellgrid>
193
+ <block type="core/text_list" name="root" output="toHtml">
194
+ <block type="adminhtml/catalog_product_edit_tab_crosssell" name="catalog.product.edit.tab.crosssell"/>
195
+ </block>
196
+ </adminhtml_catalog_product_crosssellgrid>
197
+ <!--
198
+ Layout handle for simple products
199
+ -->
200
+
201
+ <adminhtml_catalog_product_simple />
202
+
203
+ <!--
204
+ Layout handle for grouped products
205
+ -->
206
+ <adminhtml_catalog_product_grouped>
207
+ <reference name="product_tabs">
208
+ <action method="addTab"><name>super</name><block>adminhtml/catalog_product_edit_tab_super_group</block></action>
209
+ </reference>
210
+ </adminhtml_catalog_product_grouped>
211
+
212
+ <adminhtml_catalog_product_supergroup>
213
+ <block type="core/text_list" name="root" output="toHtml">
214
+ <block type="adminhtml/catalog_product_edit_tab_super_group" name="catalog.product.edit.tab.super.group" />
215
+ <block type="adminhtml/widget_grid_serializer" name="grouped_grid_serializer">
216
+ <reference name="grouped_grid_serializer">
217
+ <action method="initSerializerBlock">
218
+ <grid_block_name>catalog.product.edit.tab.super.group</grid_block_name>
219
+ <data_callback>getSelectedGroupedProducts</data_callback>
220
+ <hidden_input_name>links[grouped]</hidden_input_name>
221
+ <reload_param_name>products_grouped</reload_param_name>
222
+ </action>
223
+ <action method="addColumnInputName">
224
+ <input_name>qty</input_name>
225
+ <input_name>position</input_name>
226
+ </action>
227
+ </reference>
228
+ </block>
229
+ </block>
230
+ </adminhtml_catalog_product_supergroup>
231
+
232
+ <adminhtml_catalog_product_supergroupgridonly>
233
+ <block type="core/text_list" name="root">
234
+ <block type="adminhtml/catalog_product_edit_tab_super_group" name="catalog.product.edit.tab.super.group" />
235
+ </block>
236
+ </adminhtml_catalog_product_supergroupgridonly>
237
+ <!--
238
+ Layout handle for configurable products
239
+ -->
240
+
241
+ <adminhtml_catalog_product_configurable_new>
242
+ <remove name="product_tabs"/>
243
+ <reference name="left">
244
+ <block type="adminhtml/catalog_product_edit_tabs_configurable" name="configurable_product_tabs"></block>
245
+ </reference>
246
+ </adminhtml_catalog_product_configurable_new>
247
+
248
+ <adminhtml_catalog_product_configurable>
249
+ <reference name="product_tabs">
250
+ <action method="addTab"><name>configurable</name><block>adminhtml/catalog_product_edit_tab_super_config</block></action>
251
+ <action method="bindShadowTabs"><first>configurable</first><second>customer_options</second></action>
252
+ </reference>
253
+ </adminhtml_catalog_product_configurable>
254
+
255
+ <adminhtml_catalog_product_action_attribute_edit>
256
+ <reference name="left">
257
+ <block type="adminhtml/store_switcher" name="store_switcher" template="store/switcher.phtml" />
258
+ <block type="adminhtml/catalog_product_edit_action_attribute_tabs" name="attributes_tabs">
259
+ <block type="adminhtml/catalog_product_edit_action_attribute_tab_attributes" name="tab_attributes"/>
260
+ <block type="adminhtml/catalog_product_edit_action_attribute_tab_inventory" name="tab_inventory" template="catalog/product/edit/action/inventory.phtml" />
261
+ <block type="adminhtml/catalog_product_edit_action_attribute_tab_websites" name="tab_websites" template="catalog/product/edit/action/websites.phtml" />
262
+ <action method="addTab"><name>attributes</name><block>tab_attributes</block></action>
263
+ <action method="addTab"><name>inventory</name><block>tab_inventory</block></action>
264
+ <action method="addTab"><name>websites</name><block>tab_websites</block></action>
265
+ </block>
266
+ </reference>
267
+ <reference name="content">
268
+ <block type="adminhtml/catalog_product_edit_action_attribute" name="attribute" template="catalog/product/edit/action/attribute.phtml" />
269
+ </reference>
270
+ </adminhtml_catalog_product_action_attribute_edit>
271
+
272
+ <adminhtml_catalog_product_attribute_edit>
273
+ <reference name="left">
274
+ <block type="adminhtml/catalog_product_attribute_edit_tabs" name="attribute_edit_tabs"></block>
275
+ </reference>
276
+ <reference name="content">
277
+ <block type="adminhtml/catalog_product_attribute_edit" name="attribute_edit_content"></block>
278
+ </reference>
279
+ <reference name="js">
280
+ <block type="adminhtml/template" name="attribute_edit_js" template="catalog/product/attribute/js.phtml"></block>
281
+ </reference>
282
+ </adminhtml_catalog_product_attribute_edit>
283
+
284
+ <adminhtml_catalog_category_edit>
285
+ <update handle="editor"/>
286
+ <reference name="left">
287
+ <block name="category.tree" type="adminhtml/catalog_category_tree" template="catalog/category/tree.phtml" />
288
+ </reference>
289
+ <reference name="content">
290
+ <block name="category.edit" type="adminhtml/catalog_category_edit" template="catalog/category/edit.phtml" />
291
+ </reference>
292
+ <reference name="js">
293
+ <block type="core/template" template="catalog/wysiwyg/js.phtml" name="catalog.wysiwyg.js" />
294
+ </reference>
295
+ </adminhtml_catalog_category_edit>
296
+
297
+ <ADMINHTML_CATALOG_PRODUCT_COMPOSITE_CONFIGURE>
298
+ <block type="adminhtml/catalog_product_composite_fieldset" name="product.composite.fieldset" output="toHtml">
299
+ <block name="product.composite.fieldset.options" type="adminhtml/catalog_product_composite_fieldset_options" template="catalog/product/composite/fieldset/options.phtml">
300
+ <action method="addOptionRenderer"><type>text</type><block>catalog/product_view_options_type_text</block><template>catalog/product/composite/fieldset/options/type/text.phtml</template></action>
301
+ <action method="addOptionRenderer"><type>file</type><block>catalog/product_view_options_type_file</block><template>catalog/product/composite/fieldset/options/type/file.phtml</template></action>
302
+ <action method="addOptionRenderer"><type>select</type><block>catalog/product_view_options_type_select</block><template>catalog/product/composite/fieldset/options/type/select.phtml</template></action>
303
+ <action method="addOptionRenderer"><type>date</type><block>catalog/product_view_options_type_date</block><template>catalog/product/composite/fieldset/options/type/date.phtml</template></action>
304
+ <block type="core/template" name="product.composite.fieldset.options.js" as="options_js" template="catalog/product/composite/fieldset/options/js.phtml"/>
305
+ </block>
306
+ <block type="adminhtml/catalog_product_composite_fieldset_qty" name="product.composite.fieldset.qty" template="catalog/product/composite/fieldset/qty.phtml"/>
307
+ </block>
308
+ </ADMINHTML_CATALOG_PRODUCT_COMPOSITE_CONFIGURE>
309
+
310
+ <ADMINHTML_CATALOG_PRODUCT_COMPOSITE_CONFIGURE_ERROR>
311
+ <block type="adminhtml/catalog_product_composite_error" name="product.composite.error" output="toHtml" />
312
+ </ADMINHTML_CATALOG_PRODUCT_COMPOSITE_CONFIGURE_ERROR>
313
+
314
+ <ADMINHTML_CATALOG_PRODUCT_COMPOSITE_UPDATE_RESULT>
315
+ <block type="adminhtml/catalog_product_composite_update_result" name="product.composite.update.result" output="toHtml" />
316
+ </ADMINHTML_CATALOG_PRODUCT_COMPOSITE_UPDATE_RESULT>
317
+ <!--
318
+ Additional block in composite_fieldset block dependant on product type
319
+ -->
320
+ <PRODUCT_TYPE_configurable>
321
+ <reference name="product.composite.fieldset">
322
+ <block type="adminhtml/catalog_product_composite_fieldset_configurable" name="product.composite.fieldset.configurable" before="product.composite.fieldset.options" template="catalog/product/composite/fieldset/configurable.phtml" />
323
+ </reference>
324
+ </PRODUCT_TYPE_configurable>
325
+ <PRODUCT_TYPE_grouped>
326
+ <reference name="product.composite.fieldset">
327
+ <block type="adminhtml/catalog_product_composite_fieldset_grouped" name="product.composite.fieldset.grouped" before="product.composite.fieldset.options" template="catalog/product/composite/fieldset/grouped.phtml"/>
328
+ <remove name="product.composite.fieldset.qty"/>
329
+ </reference>
330
+ </PRODUCT_TYPE_grouped>
331
+
332
+ </layout>
app/design/adminhtml/default/default/layout/cms.xml ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_cms_page_index>
31
+ <reference name="content">
32
+ <block type="adminhtml/cms_page" name="cms_page"></block>
33
+ </reference>
34
+ </adminhtml_cms_page_index>
35
+
36
+ <adminhtml_cms_page_new>
37
+ <update handle="adminhtml_cms_page_edit" />
38
+ </adminhtml_cms_page_new>
39
+
40
+ <adminhtml_cms_page_edit>
41
+ <update handle="editor"/>
42
+ <reference name="content">
43
+ <block type="adminhtml/cms_page_edit" name="cms_page_edit"></block>
44
+ </reference>
45
+ <reference name="left">
46
+ <block type="adminhtml/cms_page_edit_tabs" name="cms_page_edit_tabs">
47
+ <block type="adminhtml/cms_page_edit_tab_main" name="cms_page_edit_tab_main" />
48
+ <block type="adminhtml/cms_page_edit_tab_content" name="cms_page_edit_tab_content" />
49
+ <block type="adminhtml/cms_page_edit_tab_design" name="cms_page_edit_tab_design" />
50
+ <block type="adminhtml/cms_page_edit_tab_meta" name="cms_page_edit_tab_meta" />
51
+ <action method="addTab"><name>main_section</name><block>cms_page_edit_tab_main</block></action>
52
+ <action method="addTab"><name>content_section</name><block>cms_page_edit_tab_content</block></action>
53
+ <action method="addTab"><name>design_section</name><block>cms_page_edit_tab_design</block></action>
54
+ <action method="addTab"><name>meta_section</name><block>cms_page_edit_tab_meta</block></action>
55
+ </block>
56
+ </reference>
57
+ </adminhtml_cms_page_edit>
58
+
59
+ <adminhtml_cms_block_index>
60
+ <reference name="content">
61
+ <block type="adminhtml/cms_block" name="cms_block"></block>
62
+ </reference>
63
+ </adminhtml_cms_block_index>
64
+
65
+ <adminhtml_cms_block_new>
66
+ <update handle="adminhtml_cms_block_edit" />
67
+ </adminhtml_cms_block_new>
68
+
69
+ <adminhtml_cms_block_edit>
70
+ <update handle="editor"/>
71
+ <reference name="content">
72
+ <block type="adminhtml/cms_block_edit" name="cms_block_edit"></block>
73
+ </reference>
74
+ </adminhtml_cms_block_edit>
75
+
76
+ <adminhtml_cms_wysiwyg_images_index>
77
+ <remove name="footer" />
78
+ <remove name="head" />
79
+ <reference name="left">
80
+ <block name="wysiwyg_images.js" type="adminhtml/cms_wysiwyg_images_content" template="cms/browser/js.phtml" />
81
+ <block name="wysiwyg_images.tree" type="adminhtml/cms_wysiwyg_images_tree" template="cms/browser/tree.phtml" />
82
+ </reference>
83
+ <reference name="content">
84
+ <block name="wysiwyg_images.content" type="adminhtml/cms_wysiwyg_images_content" template="cms/browser/content.phtml">
85
+ <block name="wysiwyg_images.uploader" type="adminhtml/cms_wysiwyg_images_content_uploader" template="cms/browser/content/uploader.phtml" />
86
+ <block name="wysiwyg_images.newfolder" type="adminhtml/cms_wysiwyg_images_content_newfolder" template="cms/browser/content/newfolder.phtml" />
87
+ </block>
88
+ </reference>
89
+ </adminhtml_cms_wysiwyg_images_index>
90
+
91
+ <adminhtml_cms_wysiwyg_images_contents>
92
+ <block name="wysiwyg_images.files" type="adminhtml/cms_wysiwyg_images_content_files" template="cms/browser/content/files.phtml" output="toHtml" />
93
+ </adminhtml_cms_wysiwyg_images_contents>
94
+
95
+ </layout>
app/design/adminhtml/default/default/layout/connect.xml ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_extension_custom_edit>
31
+ <reference name="content">
32
+ <block type="connect/adminhtml_extension_custom_edit" name="connect_extension_edit"></block>
33
+ </reference>
34
+ <reference name="left">
35
+ <block type="connect/adminhtml_extension_custom_edit_tabs" name="connect_extension_edit_tabs">
36
+ <block type="connect/adminhtml_extension_custom_edit_tab_package" name="tab_package"
37
+ template="connect/extension/custom/package.phtml" />
38
+ <block type="connect/adminhtml_extension_custom_edit_tab_release" name="tab_release"
39
+ template="connect/extension/custom/release.phtml" />
40
+ <block type="connect/adminhtml_extension_custom_edit_tab_authors" name="tab_authors"
41
+ template="connect/extension/custom/authors.phtml" />
42
+ <block type="connect/adminhtml_extension_custom_edit_tab_depends" name="tab_depends"
43
+ template="connect/extension/custom/depends.phtml" />
44
+ <block type="connect/adminhtml_extension_custom_edit_tab_contents" name="tab_contents"
45
+ template="connect/extension/custom/contents.phtml" />
46
+ <block type="connect/adminhtml_extension_custom_edit_tab_local" name="tab_local" />
47
+
48
+ <action method="addTab"><name>package_info</name><block>tab_package</block></action>
49
+ <action method="addTab"><name>release_info</name><block>tab_release</block></action>
50
+ <action method="addTab"><name>authors</name><block>tab_authors</block></action>
51
+ <action method="addTab"><name>dependencies</name><block>tab_depends</block></action>
52
+ <action method="addTab"><name>contents</name><block>tab_contents</block></action>
53
+ <action method="addTab"><name>load_local_package</name><block>tab_local</block></action>
54
+ </block>
55
+ </reference>
56
+ </adminhtml_extension_custom_edit>
57
+
58
+ <adminhtml_extension_custom_loadtab>
59
+ <block type="core/text_list" name="root">
60
+ <block type="connect/adminhtml_extension_custom_edit_tab_load" name="connect_extension_load_local_package_grid"
61
+ template="connect/extension/custom/load.phtml">
62
+ <block type="connect/adminhtml_extension_custom_edit_tab_grid" name="local_package_grid" />
63
+ </block>
64
+ </block>
65
+ </adminhtml_extension_custom_loadtab>
66
+
67
+ <adminhtml_extension_custom_grid>
68
+ <block type="core/text_list" name="root">
69
+ <block type="connect/adminhtml_extension_custom_edit_tab_grid" name="connect_extension_edit_local_package_grid" />
70
+ </block>
71
+ </adminhtml_extension_custom_grid>
72
+ </layout>
73
+
app/design/adminhtml/default/default/layout/customer.xml ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_customer_edit>
31
+ <reference name="content">
32
+ <block type="adminhtml/customer_edit" name="customer_edit"></block>
33
+ </reference>
34
+ <reference name="head">
35
+ <block type="adminhtml/template" name="optional_zip_countries" as="optional_zip_countries" template="directory/js/optional_zip_countries.phtml" />
36
+ <action method="addJs"><file>mage/adminhtml/product/composite/configure.js</file></action>
37
+ <action method="addJs"><file>varien/configurable.js</file></action>
38
+ </reference>
39
+ <reference name="left">
40
+ <block type="adminhtml/customer_edit_tabs" name="customer_edit_tabs">
41
+ <block type="adminhtml/customer_edit_tab_view" name="customer_edit_tab_view" template="customer/tab/view.phtml">
42
+ <block type="adminhtml/customer_edit_tab_view_sales" name="sales" template="customer/tab/view/sales.phtml" before="-" />
43
+ <block type="adminhtml/customer_edit_tab_view_accordion" name="accordion" />
44
+ </block>
45
+ <action method="addTab"><name>customer_edit_tab_view</name><block>customer_edit_tab_view</block></action>
46
+ </block>
47
+ </reference>
48
+ <reference name="js">
49
+ <block type="adminhtml/template" template="customer/edit/js.phtml" name="customer.edit.js" as="customer_edit_js"></block>
50
+ </reference>
51
+ </adminhtml_customer_edit>
52
+ <adminhtml_customer_group_index>
53
+ <reference name="content">
54
+ <block type="adminhtml/customer_group" name="customer_group"></block>
55
+ </reference>
56
+ </adminhtml_customer_group_index>
57
+ <adminhtml_customer_wishlist>
58
+ <block type="adminhtml/customer_edit_tab_wishlist" name="customer.wishlist.edit.tab" output="toHtml" />
59
+ </adminhtml_customer_wishlist>
60
+ </layout>
app/design/adminhtml/default/default/layout/dataflow.xml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+
31
+ <adminhtml_system_convert_gui_run>
32
+ <remove name="root"/>
33
+ <block type="adminhtml/page" name="convert_root" output="toHtml" template="page.phtml">
34
+ <block type="adminhtml/page_head" name="convert_root_head" as="head" template="page/head.phtml">
35
+ <action method="addJs"><script>prototype/prototype.js</script></action>
36
+ <action method="addJs"><script>prototype/validation.js</script></action>
37
+ <action method="addJs"><script>varien/js.js</script></action>
38
+ <action method="addJs"><script>mage/translate.js</script></action>
39
+ <action method="addJs"><script>mage/adminhtml/tools.js</script></action>
40
+ </block>
41
+ <block type="adminhtml/system_convert_profile_run" name="system_convert_profile_run" template="system/convert/profile/process.phtml" output="toHtml"/>
42
+ </block>
43
+ </adminhtml_system_convert_gui_run>
44
+
45
+ <adminhtml_system_convert_profile_run>
46
+ <remove name="root"/>
47
+ <block type="adminhtml/page" name="convert_root" output="toHtml" template="page.phtml">
48
+ <block type="adminhtml/page_head" name="convert_root_head" as="head" template="page/head.phtml">
49
+ <action method="addJs"><script>prototype/prototype.js</script></action>
50
+ <action method="addJs"><script>prototype/validation.js</script></action>
51
+ <action method="addJs"><script>varien/js.js</script></action>
52
+ <action method="addJs"><script>mage/translate.js</script></action>
53
+ <action method="addJs"><script>mage/adminhtml/tools.js</script></action>
54
+ </block>
55
+ <block type="adminhtml/system_convert_profile_run" name="system_convert_profile_run" template="system/convert/profile/process.phtml" output="toHtml"/>
56
+ </block>
57
+ </adminhtml_system_convert_profile_run>
58
+
59
+ </layout>
app/design/adminhtml/default/default/layout/downloadable.xml ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+
31
+ <adminhtml_catalog_product_downloadable>
32
+ <reference name="product_tabs">
33
+ <action method="addTab"><name>downloadable_items</name><block>downloadable/adminhtml_catalog_product_edit_tab_downloadable</block></action>
34
+ </reference>
35
+ </adminhtml_catalog_product_downloadable>
36
+
37
+ <adminhtml_sales_order_view>
38
+ <reference name="order_items">
39
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_order_view_items_renderer_default</block><template>downloadable/sales/order/view/items/renderer/downloadable.phtml</template></action>
40
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/name.phtml</template></action>
41
+ </reference>
42
+ </adminhtml_sales_order_view>
43
+
44
+ <adminhtml_sales_order_invoice_new>
45
+ <reference name="order_items">
46
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_items_renderer_default</block><template>downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml</template></action>
47
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/invoice/name.phtml</template></action>
48
+ </reference>
49
+ </adminhtml_sales_order_invoice_new>
50
+
51
+ <adminhtml_sales_order_invoice_updateqty>
52
+ <reference name="order_items">
53
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_items_renderer_default</block><template>downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml</template></action>
54
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/invoice/name.phtml</template></action>
55
+ </reference>
56
+ </adminhtml_sales_order_invoice_updateqty>
57
+
58
+ <adminhtml_sales_order_invoice_view>
59
+ <reference name="invoice_items">
60
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_items_renderer_default</block><template>downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml</template></action>
61
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/invoice/name.phtml</template></action>
62
+ </reference>
63
+ </adminhtml_sales_order_invoice_view>
64
+
65
+ <adminhtml_sales_order_creditmemo_new>
66
+ <reference name="order_items">
67
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_items_renderer_default</block><template>downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml</template></action>
68
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/creditmemo/name.phtml</template></action>
69
+ </reference>
70
+ </adminhtml_sales_order_creditmemo_new>
71
+
72
+ <adminhtml_sales_order_creditmemo_updateqty>
73
+ <reference name="order_items">
74
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_items_renderer_default</block><template>downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml</template></action>
75
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/creditmemo/name.phtml</template></action>
76
+ </reference>
77
+ </adminhtml_sales_order_creditmemo_updateqty>
78
+
79
+ <adminhtml_sales_order_creditmemo_view>
80
+ <reference name="creditmemo_items">
81
+ <action method="addItemRender"><type>downloadable</type><block>adminhtml/sales_items_renderer_default</block><template>downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml</template></action>
82
+ <action method="addColumnRender"><column>downloadable</column><block>downloadable/adminhtml_sales_items_column_downloadable_name</block><template>downloadable/sales/items/column/downloadable/creditmemo/name.phtml</template></action>
83
+ </reference>
84
+ </adminhtml_sales_order_creditmemo_view>
85
+
86
+ <adminhtml_customer_wishlist>
87
+ <reference name="customer.wishlist.edit.tab">
88
+ <action method="addProductConfigurationHelper"><type>downloadable</type><name>downloadable/catalog_product_configuration</name></action>
89
+ </reference>
90
+ </adminhtml_customer_wishlist>
91
+
92
+ <PRODUCT_TYPE_downloadable>
93
+ <reference name="product.composite.fieldset">
94
+ <block type="downloadable/adminhtml_catalog_product_composite_fieldset_downloadable" name="product.composite.fieldset.downloadable" before="product.composite.fieldset.options" template="downloadable/product/composite/fieldset/downloadable.phtml" />
95
+ </reference>
96
+ </PRODUCT_TYPE_downloadable>
97
+ </layout>
app/design/adminhtml/default/default/layout/giftmessage.xml ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_sales_order_view>
31
+ <reference name="order_item_extra_info">
32
+ <block type="giftmessage/adminhtml_sales_order_view_giftoptions" name="gift_options_link" template="giftmessage/sales/order/view/giftoptions.phtml">
33
+ <block type="giftmessage/adminhtml_sales_order_view_items" name="gift_options_item_data" template="giftmessage/sales/order/view/items.phtml" />
34
+ </block>
35
+ </reference>
36
+ <reference name="order_tab_info">
37
+ <block type="adminhtml/template" name="popup_window" template="giftmessage/popup.phtml">
38
+ <block type="giftmessage/adminhtml_sales_order_view_form" name="gift_options_form" template="giftmessage/giftoptionsform.phtml" />
39
+ </block>
40
+ </reference>
41
+ </adminhtml_sales_order_view>
42
+
43
+ <adminhtml_sales_order_create_index>
44
+ <reference name="order_item_extra_info">
45
+ <block type="giftmessage/adminhtml_sales_order_create_giftoptions" name="gift_options_link" template="giftmessage/sales/order/create/giftoptions.phtml">
46
+ <block type="giftmessage/adminhtml_sales_order_create_items" name="gift_options_item_data" template="giftmessage/sales/order/create/items.phtml" />
47
+ </block>
48
+ </reference>
49
+ <reference name="items_grid">
50
+ <block type="adminhtml/template" name="popup_window" template="giftmessage/popup.phtml">
51
+ <block type="giftmessage/adminhtml_sales_order_create_form" name="gift_options_form" template="giftmessage/giftoptionsform.phtml" />
52
+ </block>
53
+ </reference>
54
+ </adminhtml_sales_order_create_index>
55
+
56
+ <adminhtml_sales_order_create_load_block_data>
57
+ <reference name="order_item_extra_info">
58
+ <block type="giftmessage/adminhtml_sales_order_create_giftoptions" name="gift_options_link" template="giftmessage/sales/order/create/giftoptions.phtml">
59
+ <block type="giftmessage/adminhtml_sales_order_create_items" name="gift_options_item_data" template="giftmessage/sales/order/create/items.phtml" />
60
+ </block>
61
+ </reference>
62
+ <reference name="items_grid">
63
+ <block type="adminhtml/template" name="popup_window" template="giftmessage/popup.phtml">
64
+ <block type="giftmessage/adminhtml_sales_order_create_form" name="gift_options_form" template="giftmessage/giftoptionsform.phtml" />
65
+ </block>
66
+ </reference>
67
+ </adminhtml_sales_order_create_load_block_data>
68
+
69
+ <adminhtml_sales_order_create_load_block_items>
70
+ <reference name="order_item_extra_info">
71
+ <block type="giftmessage/adminhtml_sales_order_create_giftoptions" name="gift_options_link" template="giftmessage/sales/order/create/giftoptions.phtml">
72
+ <block type="giftmessage/adminhtml_sales_order_create_items" name="gift_options_item_data" template="giftmessage/sales/order/create/items.phtml" />
73
+ </block>
74
+ </reference>
75
+ <reference name="items_grid">
76
+ <block type="adminhtml/template" name="popup_window" template="giftmessage/popup.phtml">
77
+ <block type="giftmessage/adminhtml_sales_order_create_form" name="gift_options_form" template="giftmessage/giftoptionsform.phtml" />
78
+ </block>
79
+ </reference>
80
+ </adminhtml_sales_order_create_load_block_items>
81
+ </layout>
82
+
app/design/adminhtml/default/default/layout/importexport.xml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout>
3
+ <adminhtml_import_index>
4
+ <reference name="content">
5
+ <block type="adminhtml/template" template="importexport/import/form/before.phtml" name="import.form.before" alias="form_before"/>
6
+ <block type="importexport/adminhtml_import_edit" name="import.form.container"/>
7
+ <block type="adminhtml/template" template="importexport/import/form/after.phtml" name="import.form.after" alias="form_after"/>
8
+ </reference>
9
+ </adminhtml_import_index>
10
+ <adminhtml_import_validate>
11
+ <block type="importexport/adminhtml_import_frame_result" template="importexport/import/frame/result.phtml" name="import.frame.result" alias="import_frame_result" output="toHtml"/>
12
+ </adminhtml_import_validate>
13
+ <adminhtml_import_start>
14
+ <block type="importexport/adminhtml_import_frame_result" template="importexport/import/frame/result.phtml" name="import.frame.result" alias="import_frame_result" output="toHtml"/>
15
+ </adminhtml_import_start>
16
+ <adminhtml_import_busy>
17
+ <reference name="content">
18
+ <block type="core/template" template="importexport/busy.phtml" name="busy" alias="busy"/>
19
+ </reference>
20
+ </adminhtml_import_busy>
21
+ <adminhtml_export_index>
22
+ <reference name="content">
23
+ <block type="adminhtml/template" template="importexport/export/form/before.phtml" name="export.form.before" alias="form_before"/>
24
+ <block type="importexport/adminhtml_export_edit" name="export.form.container"/>
25
+ <block type="adminhtml/template" template="importexport/export/form/after.phtml" name="export.form.after" alias="form_after"/>
26
+ </reference>
27
+ </adminhtml_export_index>
28
+ <adminhtml_export_getfilter>
29
+ <block type="core/text_list" name="root">
30
+ <block type="importexport/adminhtml_export_filter" name="export.filter"/>
31
+ </block>
32
+ </adminhtml_export_getfilter>
33
+ </layout>
app/design/adminhtml/default/default/layout/index.xml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+ <layout>
29
+ <default>
30
+ <reference name="notifications">
31
+ <block type="index/adminhtml_notifications" name="index_notifications" template="index/notifications.phtml"></block>
32
+ </reference>
33
+ </default>
34
+
35
+ <adminhtml_process_edit>
36
+ <reference name="content">
37
+ <block type="index/adminhtml_process_edit" name="process_edit"></block>
38
+ </reference>
39
+ <reference name="left">
40
+ <block type="index/adminhtml_process_edit_tabs" name="index_edit_tabs">
41
+ <action method="addTab"><name>main_section</name><block>index/adminhtml_process_edit_tab_main</block></action>
42
+ </block>
43
+ </reference>
44
+ </adminhtml_process_edit>
45
+ </layout>
app/design/adminhtml/default/default/layout/main.xml ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+
28
+
29
+ Supported layout update handles (action):
30
+
31
+
32
+ Supported layout update handles (special):
33
+ - adminhtml
34
+ - default
35
+ - admin_noroute
36
+ - admin_denied
37
+ - preview
38
+ - systemPreview
39
+ -->
40
+
41
+ <layout>
42
+
43
+ <!--
44
+ Form key for inserting into various forms
45
+ -->
46
+ <formkey>
47
+ <block type="core/template" name="formkey" as="formkey" template="formkey.phtml"/>
48
+ </formkey>
49
+
50
+ <!--
51
+ Default layout, loads most of the pages
52
+ -->
53
+
54
+ <default>
55
+ <block type="adminhtml/page" name="root" output="toHtml" template="page.phtml">
56
+ <block type="adminhtml/page_head" name="head" as="head" template="page/head.phtml">
57
+ <action method="setTitle" translate="title"><title>Magento Admin</title></action>
58
+ <action method="addJs"><script>prototype/prototype.js</script></action>
59
+ <action method="addJs"><script>prototype/window.js</script></action>
60
+ <action method="addJs"><script>scriptaculous/builder.js</script></action>
61
+ <action method="addJs"><script>scriptaculous/effects.js</script></action>
62
+ <action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
63
+ <action method="addJs"><script>scriptaculous/controls.js</script></action>
64
+ <action method="addJs"><script>scriptaculous/slider.js</script></action>
65
+ <action method="addJs"><script>lib/ccard.js</script></action>
66
+ <action method="addJs"><script>prototype/validation.js</script></action>
67
+ <action method="addJs"><script>varien/js.js</script></action>
68
+ <action method="addJs"><script>mage/translate.js</script></action>
69
+
70
+ <action method="addJs"><script>mage/adminhtml/hash.js</script></action>
71
+ <action method="addJs"><script>mage/adminhtml/events.js</script></action>
72
+ <action method="addJs"><script>mage/adminhtml/loader.js</script></action>
73
+ <action method="addJs"><script>mage/adminhtml/grid.js</script></action>
74
+ <action method="addJs"><script>mage/adminhtml/tabs.js</script></action>
75
+ <action method="addJs"><script>mage/adminhtml/form.js</script></action>
76
+ <action method="addJs"><script>mage/adminhtml/accordion.js</script></action>
77
+ <action method="addJs"><script>mage/adminhtml/tools.js</script></action>
78
+ <action method="addJs"><script>mage/adminhtml/uploader.js</script></action>
79
+ <action method="addJs"><script>mage/adminhtml/product.js</script></action>
80
+
81
+ <action method="addCss"><name>reset.css</name></action>
82
+ <action method="addCss"><name>boxes.css</name></action>
83
+ <action method="addCss"><name>custom.css</name></action>
84
+
85
+ <action method="addItem"><type>skin_css</type><name>iestyles.css</name><params/><if>lt IE 8</if></action>
86
+ <action method="addItem"><type>skin_css</type><name>below_ie7.css</name><params/><if>lt IE 7</if></action>
87
+ <action method="addItem"><type>skin_css</type><name>ie7.css</name><params/><if>IE 7</if></action>
88
+
89
+ <action method="addCss"><name>print.css</name><params>media="print"</params></action>
90
+
91
+ <action method="addItem"><type>js</type><name>lib/ds-sleight.js</name><params>defer</params><if>lt IE 7</if></action>
92
+ <action method="addItem"><type>js</type><name>varien/iehover-fix.js</name><params/><if>lt IE 7</if></action>
93
+
94
+ <action method="addItem"><type>skin_css</type><name>menu.css</name><params>media="screen, projection"</params></action>
95
+
96
+ <action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
97
+ <action method="addItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
98
+ <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
99
+
100
+ <action method="addItem"><type>js</type><name>extjs/ext-tree.js</name><params/><if/><condition>can_load_ext_js</condition></action>
101
+ <action method="addItem"><type>js</type><name>extjs/fix-defer.js</name><params/><if/><condition>can_load_ext_js</condition></action>
102
+ <action method="addItem"><type>js</type><name>extjs/ext-tree-checkbox.js</name><params/><if/><condition>can_load_ext_js</condition></action>
103
+ <action method="addItem"><type>js_css</type><name>extjs/resources/css/ext-all.css</name><params/><if/><condition>can_load_ext_js</condition></action>
104
+ <action method="addItem"><type>js_css</type><name>extjs/resources/css/ytheme-magento.css</name><params/><if/><condition>can_load_ext_js</condition></action>
105
+
106
+ <action method="addItem"><type>js</type><name>mage/adminhtml/rules.js</name><params/><if/><condition>can_load_rules_js</condition></action>
107
+
108
+ <action method="addItem"><type>js</type><name>mage/adminhtml/wysiwyg/tiny_mce/setup.js</name><params/><if/><condition>can_load_tiny_mce</condition></action>
109
+
110
+ <block type="core/html_calendar" name="head.calendar" as="calendar" template="page/js/calendar.phtml"/>
111
+ </block>
112
+
113
+ <block type="adminhtml/page_notices" name="global_notices" as="global_notices" template="page/notices.phtml" />
114
+ <block type="adminhtml/page_header" name="header" as="header"></block>
115
+ <block type="adminhtml/page_menu" name="menu" as="menu"></block>
116
+ <block type="core/text_list" name="notifications" as="notifications">
117
+ <block type="adminhtml/notification_baseurl" name="notification_baseurl" as="notification_baseurl" template="notification/baseurl.phtml"></block>
118
+ <block type="adminhtml/cache_notifications" name="cache_notifications" template="system/cache/notifications.phtml"></block>
119
+ <block type="adminhtml/notification_survey" name="notification_survey" template="notification/survey.phtml"/>
120
+ <block type="adminhtml/notification_security" name="notification_security" as="notification_security" template="notification/security.phtml"></block>
121
+ </block>
122
+ <block type="adminhtml/widget_breadcrumbs" name="breadcrumbs" as="breadcrumbs"></block>
123
+
124
+ <!--<update handle="formkey"/> this won't work, see the try/catch and a jammed exception in Mage_Core_Model_Layout::createBlock() -->
125
+ <block type="core/template" name="formkey" as="formkey" template="formkey.phtml"/>
126
+ <block type="page/js_translate" name="js_translate" as="js_translate" template="page/js/translate.phtml"/>
127
+ <block type="core/text_list" name="left" as="left"/>
128
+ <block type="core/text_list" name="content" as="content"/>
129
+ <block type="core/messages" name="messages" as="messages"/>
130
+ <block type="core/text_list" name="js" as="js"/>
131
+ <block type="adminhtml/page_footer" name="footer" as="footer">
132
+ <action method="setBugreportUrl"><url>http://www.magentocommerce.com/bug-tracking</url></action>
133
+ </block>
134
+ <block type="core/profiler" name="profiler" as="profiler"/>
135
+ <block type="core/text_list" name="before_body_end" as="before_body_end"/>
136
+
137
+ </block>
138
+ </default>
139
+
140
+ <!--
141
+ Layout for pop up windows
142
+ -->
143
+ <popup>
144
+ <update handle="default"/>
145
+ <remove name="header"/>
146
+ <remove name="menu"/>
147
+ <reference name="root">
148
+ <action method="setTemplate"><template>popup.phtml</template></action>
149
+ </reference>
150
+ </popup>
151
+
152
+ <!--
153
+ Layout for overlay pop up windows
154
+ -->
155
+ <overlay_popup>
156
+ <update handle="popup"/>
157
+ <reference name="root">
158
+ <action method="setTemplate"><template>overlay_popup.phtml</template></action>
159
+ </reference>
160
+ </overlay_popup>
161
+
162
+ <!--
163
+ Layout for editor element
164
+ -->
165
+ <editor>
166
+ <reference name="head">
167
+ <action method="setCanLoadExtJs"><flag>1</flag></action>
168
+ <action method="addJs"><script>mage/adminhtml/variables.js</script></action>
169
+ <action method="addJs"><script>mage/adminhtml/wysiwyg/widget.js</script></action>
170
+ <action method="addJs"><script>lib/flex.js</script></action>
171
+ <action method="addJs"><script>lib/FABridge.js</script></action>
172
+ <action method="addJs"><script>mage/adminhtml/flexuploader.js</script></action>
173
+ <action method="addJs"><script>mage/adminhtml/browser.js</script></action>
174
+ <action method="addJs"><script>prototype/window.js</script></action>
175
+ <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
176
+ <action method="addItem"><type>js_css</type><name>prototype/windows/themes/magento.css</name></action>
177
+ </reference>
178
+ </editor>
179
+
180
+ <!--
181
+ No page found
182
+ -->
183
+
184
+ <adminhtml_noroute>
185
+ <reference name="content">
186
+ <block type="core/text" name="content.noRoute">
187
+ <action method="setText" translate="text" module="adminhtml"><text><![CDATA[<h1 class="page-heading">404 Error</h1><p>Page not found.</p>]]></text></action>
188
+ </block>
189
+ </reference>
190
+ </adminhtml_noroute>
191
+
192
+ <!--
193
+ Access denied
194
+ -->
195
+
196
+ <adminhtml_denied>
197
+ <reference name="content">
198
+ <block type="adminhtml/denied" name="content.denied" template="access_denied.phtml"/>
199
+ </reference>
200
+ </adminhtml_denied>
201
+
202
+ <!--
203
+ Base preview layout (?)
204
+ -->
205
+
206
+ <preview>
207
+ <block type="core/template" name="root" output="toHtml" template="newsletter/template/preview.phtml">
208
+ <block type="adminhtml/newsletter_template_preview" name="content" as="content"></block>
209
+ </block>
210
+ </preview>
211
+
212
+ <newsletter_template_preview>
213
+ <block type="core/template" name="root" output="toHtml" template="newsletter/template/preview.phtml">
214
+ <block type="adminhtml/newsletter_template_preview" name="content" as="content"></block>
215
+ </block>
216
+ </newsletter_template_preview>
217
+
218
+ <newsletter_template_preview_switcher>
219
+ <block type="core/template" name="root" output="toHtml" template="newsletter/template/preview/iframeswitcher.phtml">
220
+ <block type="adminhtml/store_switcher" name="store_switcher" as="store_switcher" />
221
+ <block type="adminhtml/newsletter_template_preview_form" name="preview_form" />
222
+ </block>
223
+ </newsletter_template_preview_switcher>
224
+
225
+ <newsletter_queue_preview>
226
+ <block type="core/template" name="root" output="toHtml" template="newsletter/queue/preview.phtml">
227
+ <block type="adminhtml/newsletter_queue_preview" name="content" as="content"></block>
228
+ </block>
229
+ </newsletter_queue_preview>
230
+
231
+ <!--
232
+ Base customer alerts preview layout (?)
233
+ -->
234
+
235
+ <alert_preview>
236
+ <block type="core/template" name="root" output="toHtml" template="alert/template/preview.phtml">
237
+ <block type="adminhtml/alert_template_preview" name="content" as="content"></block>
238
+ </block>
239
+ </alert_preview>
240
+ <!--
241
+ Base preview layout
242
+ -->
243
+
244
+ <systemPreview>
245
+ <block type="core/template" name="root" output="toHtml" template="system/email/template/preview.phtml">
246
+ <block type="adminhtml/system_email_template_preview" name="content" as="content"></block>
247
+ </block>
248
+ </systemPreview>
249
+
250
+ <!--
251
+ Empty hanle for ajax response etc.
252
+ -->
253
+ <empty>
254
+ </empty>
255
+
256
+ </layout>
app/design/adminhtml/default/default/layout/newsletter.xml ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_newsletter_template_edit>
31
+ <update handle="editor"/>
32
+ <reference name="content">
33
+ <block type="adminhtml/newsletter_template_edit" name="template_edit" template="newsletter/template/edit.phtml" />
34
+ </reference>
35
+ </adminhtml_newsletter_template_edit>
36
+
37
+ <adminhtml_newsletter_queue_edit>
38
+ <update handle="editor"/>
39
+ <reference name="content">
40
+ <block type="adminhtml/newsletter_queue_edit" name="queue_edit" template="newsletter/queue/edit.phtml" />
41
+ </reference>
42
+ </adminhtml_newsletter_queue_edit>
43
+
44
+ <adminhtml_newsletter_queue_preview>
45
+ <reference name="root">
46
+ <action method="setTemplate"><template>newsletter/preview/iframeswitcher.phtml</template></action>
47
+ <block type="adminhtml/newsletter_queue_preview_form" name="preview_form" />
48
+ <block type="adminhtml/store_switcher" name="store_switcher" template="newsletter/preview/store.phtml" />
49
+ </reference>
50
+ </adminhtml_newsletter_queue_preview>
51
+
52
+ <adminhtml_newsletter_template_preview>
53
+ <reference name="root">
54
+ <action method="setTemplate"><template>newsletter/preview/iframeswitcher.phtml</template></action>
55
+ <block type="adminhtml/newsletter_template_preview_form" name="preview_form" />
56
+ <block type="adminhtml/store_switcher" name="store_switcher" template="newsletter/preview/store.phtml" />
57
+ </reference>
58
+ </adminhtml_newsletter_template_preview>
59
+
60
+ <newsletter_queue_preview>
61
+ <block type="adminhtml/newsletter_queue_preview" name="preview_template" />
62
+ </newsletter_queue_preview>
63
+
64
+ <newsletter_template_preview>
65
+ <block type="adminhtml/newsletter_template_preview" name="preview_template" />
66
+ </newsletter_template_preview>
67
+ </layout>
app/design/adminhtml/default/default/layout/pagecache.xml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_cache_index>
31
+ <reference name="cache.additional">
32
+ <block type="pagecache/adminhtml_cache_additional" name="page.cache.additional" template = "pagecache/cache/additional.phtml" />
33
+ </reference>
34
+ </adminhtml_cache_index>
35
+ </layout>
app/design/adminhtml/default/default/layout/promo.xml ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <!-- Catalog Price Rule -->
31
+ <adminhtml_promo_catalog_index>
32
+ <reference name="content">
33
+ <block type="adminhtml/promo_catalog" name="promo_catalog"/>
34
+ </reference>
35
+ </adminhtml_promo_catalog_index>
36
+ <adminhtml_promo_catalog_edit>
37
+ <reference name="head">
38
+ <action method="setCanLoadExtJs"><flag>1</flag></action>
39
+ <action method="setCanLoadRulesJs"><flag>1</flag></action>
40
+ </reference>
41
+ <reference name="left">
42
+ <block type="adminhtml/promo_catalog_edit_tabs" name="promo_catalog_edit_tabs">
43
+ <block type="adminhtml/promo_catalog_edit_tab_main" name="promo_catalog_edit_tab_main"/>
44
+ <block type="adminhtml/promo_catalog_edit_tab_conditions" name="promo_catalog_edit_tab_conditions"/>
45
+ <block type="adminhtml/promo_catalog_edit_tab_actions" name="promo_catalog_edit_tab_actions"/>
46
+ <action method="addTab"><name>main_section</name><block>promo_catalog_edit_tab_main</block></action>
47
+ <action method="addTab"><name>conditions_section</name><block>promo_catalog_edit_tab_conditions</block></action>
48
+ <action method="addTab"><name>actions_section</name><block>promo_catalog_edit_tab_actions</block></action>
49
+ </block>
50
+ </reference>
51
+ <reference name="content">
52
+ <block type="adminhtml/promo_catalog_edit" name="promo_catalog_edit"/>
53
+ </reference>
54
+ <reference name="js">
55
+ <block type="adminhtml/promo_catalog_edit_js" template="promo/js.phtml" />
56
+ </reference>
57
+ </adminhtml_promo_catalog_edit>
58
+
59
+ <!-- Shopping Cart Price Rule -->
60
+ <adminhtml_promo_quote_index>
61
+ <reference name="content">
62
+ <block type="adminhtml/promo_quote" name="promo_quote"></block>
63
+ </reference>
64
+ </adminhtml_promo_quote_index>
65
+ <adminhtml_promo_quote_edit>
66
+ <reference name="head">
67
+ <action method="setCanLoadExtJs"><flag>1</flag></action>
68
+ <action method="setCanLoadRulesJs"><flag>1</flag></action>
69
+ </reference>
70
+ <reference name="left">
71
+ <block type="adminhtml/promo_quote_edit_tabs" name="promo_quote_edit_tabs">
72
+ <block type="adminhtml/promo_quote_edit_tab_main" name="promo_quote_edit_tab_main" />
73
+ <block type="adminhtml/promo_quote_edit_tab_conditions" name="promo_quote_edit_tab_conditions"/>
74
+ <block type="adminhtml/promo_quote_edit_tab_actions" name="promo_quote_edit_tab_actions"/>
75
+ <block type="adminhtml/promo_quote_edit_tab_labels" name="promo_quote_edit_tab_labels"/>
76
+ <action method="addTab"><name>main_section</name><block>promo_quote_edit_tab_main</block></action>
77
+ <action method="addTab"><name>conditions_section</name><block>promo_quote_edit_tab_conditions</block></action>
78
+ <action method="addTab"><name>actions_section</name><block>promo_quote_edit_tab_actions</block></action>
79
+ <action method="addTab"><name>labels_section</name><block>promo_quote_edit_tab_labels</block></action>
80
+ </block>
81
+ </reference>
82
+ <reference name="content">
83
+ <block type="adminhtml/promo_quote_edit" name="promo_quote_edit"></block>
84
+ </reference>
85
+ </adminhtml_promo_quote_edit>
86
+ <adminhtml_promo_quote_grid>
87
+ <remove name="root" />
88
+ <block type="adminhtml/promo_quote_edit_tab_product" name="promo_quote_grid" output="toHtml" />
89
+ </adminhtml_promo_quote_grid>
90
+ </layout>
app/design/adminhtml/default/default/layout/report.xml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_report_statistics_index>
31
+ <reference name="content">
32
+ <block type="adminhtml/report_refresh_statistics" template="report/refresh/statistics.phtml" name="sales.report.refreshstatistics" />
33
+ </reference>
34
+ </adminhtml_report_statistics_index>
35
+ </layout>
app/design/adminhtml/default/default/layout/rss.xml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+
31
+ <!--
32
+
33
+ -->
34
+ <adminhtml_rss_catalog_review>
35
+ <block type="rss/catalog_review" output="toHtml" name="rss.catalog.review" />
36
+ </adminhtml_rss_catalog_review>
37
+
38
+ <adminhtml_rss_catalog_notifystock>
39
+ <block type="rss/catalog_notifyStock" output="toHtml" name="rss.catalog.notifystock" />
40
+ </adminhtml_rss_catalog_notifystock>
41
+
42
+ <adminhtml_rss_order_new>
43
+ <block type="rss/order_new" output="toHtml" name="rss.order.new"/>
44
+ </adminhtml_rss_order_new>
45
+ </layout>
app/design/adminhtml/default/default/layout/sales.xml ADDED
@@ -0,0 +1,1080 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_sales_order_grid>
31
+ <update handle="formkey"/>
32
+ <block type="adminhtml/sales_order_grid" name="sales_order.grid" output="toHtml"></block>
33
+ </adminhtml_sales_order_grid>
34
+
35
+ <adminhtml_sales_order_index>
36
+ <reference name="content">
37
+ <block type="adminhtml/sales_order" name="sales_order.grid.container"></block>
38
+ </reference>
39
+ </adminhtml_sales_order_index>
40
+
41
+ <adminhtml_sales_order_transactions>
42
+ <block type="adminhtml/sales_transactions_grid" name="sales_transactions.grid" output="toHtml"></block>
43
+ </adminhtml_sales_order_transactions>
44
+
45
+ <adminhtml_sales_billing_agreement_index>
46
+ <reference name="content">
47
+ <block type="sales/adminhtml_billing_agreement" name="sales.billing.agreement.grid.container"></block>
48
+ </reference>
49
+ </adminhtml_sales_billing_agreement_index>
50
+
51
+ <adminhtml_sales_billing_agreement_grid>
52
+ <block type="sales/adminhtml_billing_agreement_grid" name="sales.billing.agreement.grid" output="toHtml"></block>
53
+ </adminhtml_sales_billing_agreement_grid>
54
+
55
+ <adminhtml_sales_billing_agreement_view>
56
+ <reference name="content">
57
+ <block type="sales/adminhtml_billing_agreement_view" name="sales.billing.agreement.view"></block>
58
+ </reference>
59
+ <reference name="left">
60
+ <block type="sales/adminhtml_billing_agreement_view_tabs" name="sales.billing.agreement.tabs">
61
+ <action method="addTab"><name>billing_agreement_info</name><block>sales/adminhtml_billing_agreement_view_tab_info</block></action>
62
+ <action method="addTab"><name>billing_agreement_orders</name><block>sales/adminhtml_billing_agreement_view_tab_orders</block></action>
63
+ </block>
64
+ </reference>
65
+ </adminhtml_sales_billing_agreement_view>
66
+
67
+ <adminhtml_sales_billing_agreement_ordersgrid>
68
+ <block type="sales/adminhtml_billing_agreement_view_tab_orders" name="related.orders.grid" output="toHtml"></block>
69
+ </adminhtml_sales_billing_agreement_ordersgrid>
70
+
71
+ <adminhtml_sales_billing_agreement_customergrid>
72
+ <block type="sales/adminhtml_customer_edit_tab_agreement" name="customer.billing.agreement.grid" output="toHtml"></block>
73
+ </adminhtml_sales_billing_agreement_customergrid>
74
+
75
+ <adminhtml_sales_order_view>
76
+ <reference name="head">
77
+ <action method="addJs"><file>mage/adminhtml/giftmessage.js</file></action>
78
+ <action method="addJs"><file>mage/adminhtml/giftoptions/tooltip.js</file></action>
79
+ </reference>
80
+ <reference name="content">
81
+ <block type="adminhtml/sales_order_view" name="sales_order_edit"></block>
82
+ </reference>
83
+ <reference name="left">
84
+ <block type="adminhtml/sales_order_view_tabs" name="sales_order_tabs">
85
+ <block type="adminhtml/sales_order_view_tab_info" name="order_tab_info" template="sales/order/view/tab/info.phtml">
86
+ <block type="adminhtml/sales_order_view_messages" name="order_messages"></block>
87
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
88
+ <block type="adminhtml/sales_order_view_items" name="order_items" template="sales/order/view/items.phtml">
89
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_order_view_items_renderer_default</block><template>sales/order/view/items/renderer/default.phtml</template></action>
90
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
91
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
92
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
93
+ <block type="core/text_list" name="order_item_extra_info" />
94
+ </block>
95
+ <block type="adminhtml/sales_order_payment" name="order_payment"/>
96
+ <block type="adminhtml/sales_order_view_history" name="order_history" template="sales/order/view/history.phtml"></block>
97
+ <block type="adminhtml/template" name="gift_options" template="sales/order/giftoptions.phtml">
98
+ <block type="adminhtml/sales_order_view_giftmessage" name="order_giftmessage" template="sales/order/view/giftmessage.phtml"></block>
99
+ </block>
100
+ <block type="adminhtml/sales_order_totals" name="order_totals" template="sales/order/totals.phtml">
101
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
102
+ <!--<block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
103
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml" />
104
+ <block type="adminhtml/sales_order_totals_item" name="paid" template="sales/order/totals/paid.phtml" />
105
+ <block type="adminhtml/sales_order_totals_item" name="refunded" template="sales/order/totals/refunded.phtml" />
106
+ <block type="adminhtml/sales_order_totals_item" name="due" template="sales/order/totals/due.phtml" />
107
+ </block>
108
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
109
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
110
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
111
+ <block type="adminhtml/sales_order_totals_item" name="shipping" template="sales/order/totals/shipping.phtml" />
112
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/discount.phtml" />
113
+ <block type="adminhtml/sales_order_totals_item" name="giftcert" template="sales/order/totals/item.phtml">
114
+ <action method="setSourceField"><value>giftcert_amount</value></action>
115
+ <action method="setLabel"><value>Gift Certificate</value></action>
116
+ </block>
117
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_positive" template="sales/order/totals/item.phtml">
118
+ <action method="setSourceField"><value>adjustment_positive</value></action>
119
+ <action method="setLabel"><value>Adjustment Refund</value></action>
120
+ </block>
121
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_negative" template="sales/order/totals/item.phtml">
122
+ <action method="setSourceField"><value>adjustment_negative</value></action>
123
+ <action method="setLabel"><value>Adjustment Fee</value></action>
124
+ </block>
125
+ </block>-->
126
+ </block>
127
+ </block>
128
+ <action method="addTab"><name>order_info</name><block>order_tab_info</block></action>
129
+ <action method="addTab"><name>order_invoices</name><block>adminhtml/sales_order_view_tab_invoices</block></action>
130
+ <action method="addTab"><name>order_creditmemos</name><block>adminhtml/sales_order_view_tab_creditmemos</block></action>
131
+ <action method="addTab"><name>order_shipments</name><block>adminhtml/sales_order_view_tab_shipments</block></action>
132
+ <action method="addTab"><name>order_history</name><block>adminhtml/sales_order_view_tab_history</block></action>
133
+ <action method="addTab"><name>order_transactions</name><block>adminhtml/sales_order_view_tab_transactions</block></action>
134
+ </block>
135
+ </reference>
136
+ </adminhtml_sales_order_view>
137
+
138
+ <adminhtml_sales_order_addcomment>
139
+ <block type="adminhtml/sales_order_view_history" name="order_history" template="sales/order/view/history.phtml" output="toHtml"/>
140
+ </adminhtml_sales_order_addcomment>
141
+
142
+ <adminhtml_sales_order_invoice_new>
143
+ <reference name="content">
144
+ <block type="adminhtml/sales_order_invoice_create" name="sales_invoice_create">
145
+ <block type="adminhtml/sales_order_invoice_create_form" name="form" template="sales/order/invoice/create/form.phtml">
146
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
147
+ <block type="adminhtml/sales_order_payment" name="order_payment"></block>
148
+ <block type="adminhtml/sales_order_invoice_create_items" name="order_items" template="sales/order/invoice/create/items.phtml">
149
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/invoice/create/items/renderer/default.phtml</template></action>
150
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
151
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
152
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
153
+ <block type="core/text_list" name="order_item_extra_info"></block>
154
+ <block type="adminhtml/sales_order_totalbar" name="order_totalbar" template="sales/order/totalbar.phtml"></block>
155
+
156
+ <block type="adminhtml/sales_order_invoice_totals" name="invoice_totals" template="sales/order/totals.phtml">
157
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
158
+ <!--<block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
159
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml" />
160
+ <block type="adminhtml/sales_order_totals_item" name="paid" template="sales/order/totals/paid.phtml" />
161
+ <block type="adminhtml/sales_order_totals_item" name="refunded" template="sales/order/totals/refunded.phtml" />
162
+ <block type="adminhtml/sales_order_totals_item" name="due" template="sales/order/totals/due.phtml" />
163
+ </block>
164
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
165
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
166
+ <block type="adminhtml/sales_order_totals_item" name="tax" template="sales/order/totals/item.phtml">
167
+ <action method="setSourceField"><value>tax_amount</value></action>
168
+ <action method="setLabel"><value>Tax</value></action>
169
+ </block>
170
+ <block type="adminhtml/sales_order_totals_item" name="shipping" template="sales/order/totals/shipping.phtml" />
171
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/discount.phtml" />
172
+ <block type="adminhtml/sales_order_totals_item" name="giftcert" template="sales/order/totals/item.phtml">
173
+ <action method="setSourceField"><value>giftcert_amount</value></action>
174
+ <action method="setLabel"><value>Gift Certificate</value></action>
175
+ </block>
176
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_positive" template="sales/order/totals/item.phtml">
177
+ <action method="setSourceField"><value>adjustment_positive</value></action>
178
+ <action method="setLabel"><value>Adjustment Refund</value></action>
179
+ </block>
180
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_negative" template="sales/order/totals/item.phtml">
181
+ <action method="setSourceField"><value>adjustment_negative</value></action>
182
+ <action method="setLabel"><value>Adjustment Fee</value></action>
183
+ </block>
184
+ </block>-->
185
+ </block>
186
+ </block>
187
+ </block>
188
+ </block>
189
+ </reference>
190
+ </adminhtml_sales_order_invoice_new>
191
+
192
+ <adminhtml_sales_order_invoice_updateqty>
193
+ <block type="adminhtml/sales_order_invoice_create_items" name="order_items" template="sales/order/invoice/create/items.phtml">
194
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/invoice/create/items/renderer/default.phtml</template></action>
195
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
196
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
197
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
198
+ <block type="core/text_list" name="order_item_extra_info"></block>
199
+ <block type="adminhtml/sales_order_totalbar" name="order_totalbar" template="sales/order/totalbar.phtml"></block>
200
+ <block type="adminhtml/sales_order_invoice_totals" name="invoice_totals" template="sales/order/totals.phtml">
201
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
202
+ <!--<block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
203
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml" />
204
+ <block type="adminhtml/sales_order_totals_item" name="paid" template="sales/order/totals/paid.phtml" />
205
+ <block type="adminhtml/sales_order_totals_item" name="refunded" template="sales/order/totals/refunded.phtml" />
206
+ <block type="adminhtml/sales_order_totals_item" name="due" template="sales/order/totals/due.phtml" />
207
+ </block>
208
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
209
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
210
+ <block type="adminhtml/sales_order_totals_item" name="tax" template="sales/order/totals/item.phtml">
211
+ <action method="setSourceField"><value>tax_amount</value></action>
212
+ <action method="setLabel"><value>Tax</value></action>
213
+ </block>
214
+ <block type="adminhtml/sales_order_totals_item" name="shipping" template="sales/order/totals/shipping.phtml" />
215
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/discount.phtml" />
216
+ <block type="adminhtml/sales_order_totals_item" name="giftcert" template="sales/order/totals/item.phtml">
217
+ <action method="setSourceField"><value>giftcert_amount</value></action>
218
+ <action method="setLabel"><value>Gift Certificate</value></action>
219
+ </block>
220
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_positive" template="sales/order/totals/item.phtml">
221
+ <action method="setSourceField"><value>adjustment_positive</value></action>
222
+ <action method="setLabel"><value>Adjustment Refund</value></action>
223
+ </block>
224
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_negative" template="sales/order/totals/item.phtml">
225
+ <action method="setSourceField"><value>adjustment_negative</value></action>
226
+ <action method="setLabel"><value>Adjustment Fee</value></action>
227
+ </block>
228
+ </block>-->
229
+ </block>
230
+ </block>
231
+ </adminhtml_sales_order_invoice_updateqty>
232
+
233
+ <adminhtml_sales_order_invoice_addcomment>
234
+ <block type="adminhtml/sales_order_invoice_view_comments" name="invoice_comments">
235
+ <block type="adminhtml/sales_order_comments_view" name="order_comments" template="sales/order/comments/view.phtml"></block>
236
+ </block>
237
+ </adminhtml_sales_order_invoice_addcomment>
238
+
239
+ <adminhtml_sales_order_invoice_view>
240
+ <reference name="content">
241
+ <block type="adminhtml/sales_order_invoice_view" name="sales_invoice_view">
242
+ <block type="adminhtml/sales_order_invoice_view_form" name="form" template="sales/order/invoice/view/form.phtml">
243
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
244
+ <block type="adminhtml/sales_order_payment" name="order_payment"></block>
245
+
246
+ <block type="adminhtml/sales_order_invoice_view_items" name="invoice_items" template="sales/order/invoice/view/items.phtml">
247
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/invoice/view/items/renderer/default.phtml</template></action>
248
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
249
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
250
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
251
+ <block type="core/text_list" name="order_item_extra_info"></block>
252
+ </block>
253
+ <block type="adminhtml/sales_order_comments_view" name="order_comments" template="sales/order/comments/view.phtml">
254
+ <action method="setParentType"><type>invoice</type></action>
255
+ </block>
256
+ <block type="adminhtml/sales_order_invoice_totals" name="invoice_totals" template="sales/order/totals.phtml">
257
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
258
+ <!--<block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
259
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml" />
260
+ <block type="adminhtml/sales_order_totals_item" name="paid" template="sales/order/totals/paid.phtml" />
261
+ <block type="adminhtml/sales_order_totals_item" name="refunded" template="sales/order/totals/refunded.phtml" />
262
+ <block type="adminhtml/sales_order_totals_item" name="due" template="sales/order/totals/due.phtml" />
263
+ </block>
264
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
265
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
266
+ <block type="adminhtml/sales_order_totals_item" name="tax" template="sales/order/totals/item.phtml">
267
+ <action method="setSourceField"><value>tax_amount</value></action>
268
+ <action method="setLabel"><value>Tax</value></action>
269
+ </block>
270
+ <block type="adminhtml/sales_order_totals_item" name="shipping" template="sales/order/totals/shipping.phtml" />
271
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/discount.phtml" />
272
+ <block type="adminhtml/sales_order_totals_item" name="giftcert" template="sales/order/totals/item.phtml">
273
+ <action method="setSourceField"><value>giftcert_amount</value></action>
274
+ <action method="setLabel"><value>Gift Certificate</value></action>
275
+ </block>
276
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_positive" template="sales/order/totals/item.phtml">
277
+ <action method="setSourceField"><value>adjustment_positive</value></action>
278
+ <action method="setLabel"><value>Adjustment Refund</value></action>
279
+ </block>
280
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_negative" template="sales/order/totals/item.phtml">
281
+ <action method="setSourceField"><value>adjustment_negative</value></action>
282
+ <action method="setLabel"><value>Adjustment Fee</value></action>
283
+ </block>
284
+ </block>-->
285
+ </block>
286
+ </block>
287
+ </block>
288
+ </reference>
289
+ </adminhtml_sales_order_invoice_view>
290
+
291
+ <adminhtml_sales_order_shipment_new>
292
+ <reference name="head">
293
+ <action method="addJs"><file>mage/adminhtml/sales/packaging.js</file></action>
294
+ </reference>
295
+ <reference name="content">
296
+ <block type="adminhtml/sales_order_shipment_create" name="sales_shipment_create">
297
+ <block type="adminhtml/sales_order_shipment_create_form" name="form" template="sales/order/shipment/create/form.phtml">
298
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
299
+ <block type="adminhtml/sales_order_payment" name="order_payment"></block>
300
+ <block type="adminhtml/sales_order_shipment_create_tracking" name="shipment_tracking" template="sales/order/shipment/create/tracking.phtml"></block>
301
+ <block type="adminhtml/sales_order_shipment_create_items" name="order_items" template="sales/order/shipment/create/items.phtml">
302
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/shipment/create/items/renderer/default.phtml</template></action>
303
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
304
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
305
+ <block type="core/text_list" name="order_item_extra_info"></block>
306
+ </block>
307
+ <block type="adminhtml/sales_order_shipment_packaging" name="shipment_packaging" template="sales/order/shipment/packaging/popup.phtml" />
308
+ </block>
309
+ </block>
310
+ </reference>
311
+ </adminhtml_sales_order_shipment_new>
312
+
313
+ <adminhtml_sales_order_shipment_addtrack>
314
+ <block type="adminhtml/sales_order_shipment_view_tracking" name="shipment_tracking" template="sales/order/shipment/view/tracking.phtml"></block>
315
+ </adminhtml_sales_order_shipment_addtrack>
316
+
317
+ <adminhtml_sales_order_shipment_removetrack>
318
+ <block type="adminhtml/sales_order_shipment_view_tracking" name="shipment_tracking" template="sales/order/shipment/view/tracking.phtml"></block>
319
+ </adminhtml_sales_order_shipment_removetrack>
320
+
321
+ <adminhtml_sales_order_shipment_addcomment>
322
+ <block type="adminhtml/sales_order_shipment_view_comments" name="shipment_comments">
323
+ <block type="adminhtml/sales_order_comments_view" name="order_comments" template="sales/order/comments/view.phtml"></block>
324
+ </block>
325
+ </adminhtml_sales_order_shipment_addcomment>
326
+
327
+ <adminhtml_sales_order_shipment_view>
328
+ <reference name="head">
329
+ <action method="addJs"><file>mage/adminhtml/sales/packaging.js</file></action>
330
+ </reference>
331
+ <reference name="content">
332
+ <block type="adminhtml/sales_order_shipment_view" name="sales_shipment_view">
333
+ <block type="adminhtml/sales_order_shipment_view_form" name="form" template="sales/order/shipment/view/form.phtml">
334
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
335
+ <block type="adminhtml/sales_order_payment" name="order_payment"></block>
336
+ <block type="adminhtml/sales_order_shipment_view_tracking" name="shipment_tracking" template="sales/order/shipment/view/tracking.phtml"></block>
337
+ <block type="adminhtml/sales_order_shipment_view_items" name="shipment_items" template="sales/order/shipment/view/items.phtml">
338
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/shipment/view/items/renderer/default.phtml</template></action>
339
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
340
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
341
+ <block type="core/text_list" name="order_item_extra_info"></block>
342
+ </block>
343
+ <block type="adminhtml/sales_order_invoice_create_tracking" name="invoice_tracking" template="sales/order/shipment/create/tracking.phtml"></block>
344
+ <block type="adminhtml/sales_order_comments_view" name="order_comments" template="sales/order/comments/view.phtml">
345
+ <action method="setParentType"><type>shipment</type></action>
346
+ </block>
347
+ <block type="adminhtml/sales_order_shipment_packaging" name="shipment_packaging" template="sales/order/shipment/packaging/popup.phtml" />
348
+ <block type="adminhtml/sales_order_shipment_packaging" name="shipment_packed" template="sales/order/shipment/packaging/packed.phtml"/>
349
+ </block>
350
+ </block>
351
+ </reference>
352
+ </adminhtml_sales_order_shipment_view>
353
+
354
+ <adminhtml_sales_order_creditmemo_new>
355
+ <reference name="content">
356
+ <block type="adminhtml/sales_order_creditmemo_create" name="sales_creditmemo_create">
357
+ <block type="adminhtml/sales_order_creditmemo_create_form" name="form" template="sales/order/creditmemo/create/form.phtml">
358
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
359
+ <block type="adminhtml/sales_order_payment" name="order_payment"></block>
360
+ <block type="adminhtml/sales_order_creditmemo_create_items" name="order_items" template="sales/order/creditmemo/create/items.phtml">
361
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/creditmemo/create/items/renderer/default.phtml</template></action>
362
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
363
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
364
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
365
+ <block type="core/text_list" name="order_item_extra_info"></block>
366
+ <block type="adminhtml/sales_order_totalbar" name="order_totalbar" template="sales/order/totalbar.phtml"></block>
367
+
368
+ <block type="adminhtml/sales_order_creditmemo_totals" name="creditmemo_totals" template="sales/order/totals.phtml">
369
+ <block type="adminhtml/sales_order_creditmemo_create_adjustments" name="adjustments" template="sales/order/creditmemo/create/totals/adjustments.phtml" />
370
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
371
+ <!--<block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
372
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml">
373
+ <action method="setGrandTotalTitle"><title>Total Refund</title></action>
374
+ </block>
375
+ </block>
376
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
377
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
378
+ <block type="adminhtml/sales_order_totals_item" name="tax" template="sales/order/totals/item.phtml">
379
+ <action method="setSourceField"><value>tax_amount</value></action>
380
+ <action method="setLabel"><value>Tax</value></action>
381
+ </block>
382
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/item.phtml">
383
+ <action method="setSourceField"><value>discount_amount</value></action>
384
+ <action method="setLabel"><value>Discount</value></action>
385
+ </block>
386
+ <block type="adminhtml/sales_order_totals_item" name="adjustments" template="sales/order/creditmemo/create/totals/adjustments.phtml" />
387
+ </block>-->
388
+ </block>
389
+ <block type="core/text_list" name="submit_before" />
390
+ <block type="core/text_list" name="submit_after" />
391
+ </block>
392
+ </block>
393
+ </block>
394
+ </reference>
395
+ </adminhtml_sales_order_creditmemo_new>
396
+
397
+ <adminhtml_sales_order_creditmemo_updateqty>
398
+ <block type="adminhtml/sales_order_creditmemo_create_items" name="order_items" template="sales/order/creditmemo/create/items.phtml">
399
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/creditmemo/create/items/renderer/default.phtml</template></action>
400
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
401
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
402
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
403
+ <block type="core/text_list" name="order_item_extra_info"></block>
404
+ <block type="adminhtml/sales_order_totalbar" name="order_totalbar" template="sales/order/totalbar.phtml"></block>
405
+
406
+ <block type="adminhtml/sales_order_creditmemo_totals" name="creditmemo_totals" template="sales/order/totals.phtml">
407
+ <block type="adminhtml/sales_order_creditmemo_create_adjustments" name="adjustments" template="sales/order/creditmemo/create/totals/adjustments.phtml" />
408
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
409
+ <!--<block type="adminhtml/sales_order_totals" name="order_totals" template="sales/order/totals.phtml">
410
+ <block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
411
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml">
412
+ <action method="setGrandTotalTitle"><title>Total Refund</title></action>
413
+ </block>
414
+ </block>
415
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
416
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
417
+ <block type="adminhtml/sales_order_totals_item" name="tax" template="sales/order/totals/item.phtml">
418
+ <action method="setSourceField"><value>tax_amount</value></action>
419
+ <action method="setLabel"><value>Tax</value></action>
420
+ </block>
421
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/item.phtml">
422
+ <action method="setSourceField"><value>discount_amount</value></action>
423
+ <action method="setLabel"><value>Discount</value></action>
424
+ </block>
425
+ <block type="adminhtml/sales_order_totals_item" name="adjustments" template="sales/order/creditmemo/create/totals/adjustments.phtml" />
426
+ </block>-->
427
+ </block>
428
+
429
+ <block type="core/text_list" name="submit_before" />
430
+ <block type="core/text_list" name="submit_after" />
431
+ </block>
432
+ </adminhtml_sales_order_creditmemo_updateqty>
433
+
434
+ <adminhtml_sales_order_creditmemo_addcomment>
435
+ <block type="adminhtml/sales_order_creditmemo_view_comments" name="creditmemo_comments">
436
+ <block type="adminhtml/sales_order_comments_view" name="order_comments" template="sales/order/comments/view.phtml"></block>
437
+ </block>
438
+ </adminhtml_sales_order_creditmemo_addcomment>
439
+
440
+ <adminhtml_sales_order_creditmemo_view>
441
+ <reference name="content">
442
+ <block type="adminhtml/sales_order_creditmemo_view" name="sales_creditmemo_view">
443
+ <block type="adminhtml/sales_order_creditmemo_view_form" name="form" template="sales/order/creditmemo/view/form.phtml">
444
+ <block type="adminhtml/sales_order_view_info" name="order_info" template="sales/order/view/info.phtml"></block>
445
+ <block type="adminhtml/sales_order_payment" name="order_payment"></block>
446
+ <block type="adminhtml/sales_order_creditmemo_view_items" name="creditmemo_items" template="sales/order/creditmemo/view/items.phtml">
447
+ <action method="addItemRender"><type>default</type><block>adminhtml/sales_items_renderer_default</block><template>sales/order/creditmemo/view/items/renderer/default.phtml</template></action>
448
+ <action method="addColumnRender"><column>qty</column><block>adminhtml/sales_items_column_qty</block><template>sales/items/column/qty.phtml</template></action>
449
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name</block><template>sales/items/column/name.phtml</template></action>
450
+ <action method="addColumnRender"><column>name</column><block>adminhtml/sales_items_column_name_grouped</block><template>sales/items/column/name.phtml</template><type>grouped</type></action>
451
+ <block type="core/text_list" name="order_item_extra_info"></block>
452
+ </block>
453
+ <block type="adminhtml/sales_order_comments_view" name="order_comments" template="sales/order/comments/view.phtml">
454
+ <action method="setParentType"><type>creditmemo</type></action>
455
+ </block>
456
+
457
+ <block type="adminhtml/sales_order_creditmemo_totals" name="creditmemo_totals" template="sales/order/totals.phtml">
458
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
459
+ <!--<block type="adminhtml/sales_order_totals_item" name="footer" template="sales/order/totals/footer.phtml">
460
+ <block type="adminhtml/sales_order_totals_item" name="grand" template="sales/order/totals/grand.phtml" />
461
+ <block type="adminhtml/sales_order_totals_item" name="paid" template="sales/order/totals/paid.phtml" />
462
+ <block type="adminhtml/sales_order_totals_item" name="refunded" template="sales/order/totals/refunded.phtml" />
463
+ <block type="adminhtml/sales_order_totals_item" name="due" template="sales/order/totals/due.phtml" />
464
+ </block>
465
+ <block type="adminhtml/sales_order_totals_item" name="sales.order.view.totals.main" as="main" template="sales/order/totals/main.phtml">
466
+ <block type="adminhtml/sales_order_totals_subtotal" name="subtotal" template="sales/order/totals/subtotal.phtml" />
467
+ <block type="adminhtml/sales_order_totals_tax" name="tax" template="sales/order/totals/tax.phtml" />
468
+ <block type="adminhtml/sales_order_totals_item" name="shipping" template="sales/order/totals/shipping.phtml" />
469
+ <block type="adminhtml/sales_order_totals_item" name="discount" template="sales/order/totals/discount.phtml" />
470
+ <block type="adminhtml/sales_order_totals_item" name="giftcert" template="sales/order/totals/item.phtml">
471
+ <action method="setSourceField"><value>giftcert_amount</value></action>
472
+ <action method="setLabel"><value>Gift Certificate</value></action>
473
+ </block>
474
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_positive" template="sales/order/totals/item.phtml">
475
+ <action method="setSourceField"><value>adjustment_positive</value></action>
476
+ <action method="setLabel"><value>Adjustment Refund</value></action>
477
+ </block>
478
+ <block type="adminhtml/sales_order_totals_item" name="adjustment_negative" template="sales/order/totals/item.phtml">
479
+ <action method="setSourceField"><value>adjustment_negative</value></action>
480
+ <action method="setLabel"><value>Adjustment Fee</value></action>
481
+ </block>
482
+ </block>-->
483
+ </block>
484
+ </block>
485
+ </block>
486
+ </reference>
487
+ </adminhtml_sales_order_creditmemo_view>
488
+
489
+ <adminhtml_sales_transactions_index>
490
+ <reference name="content">
491
+ <block type="adminhtml/sales_transactions" name="sales_transactions.grid.container"></block>
492
+ </reference>
493
+ </adminhtml_sales_transactions_index>
494
+ <adminhtml_sales_transactions_grid>
495
+ <block type="adminhtml/sales_transactions_grid" name="sales_transactions.grid" output="toHtml"></block>
496
+ </adminhtml_sales_transactions_grid>
497
+ <adminhtml_sales_transactions_view>
498
+ <reference name="content">
499
+ <block type="adminhtml/sales_transactions_detail" name="sales_transactions.detail" template="sales/transactions/detail.phtml">
500
+ <block type="adminhtml/sales_transactions_detail_grid" name="sales_transactions.detail.grid" as="detail_grid"/>
501
+ <block type="adminhtml/sales_transactions_child_grid" name="sales_transactions.child.grid" as="child_grid"/>
502
+ </block>
503
+ </reference>
504
+ </adminhtml_sales_transactions_view>
505
+
506
+ <adminhtml_sales_order_create_index>
507
+ <reference name="left">
508
+ <action method="setIsCollapsed"><value>true</value></action>
509
+ </reference>
510
+ <reference name="head">
511
+ <action method="addJs"><file>mage/adminhtml/sales.js</file></action>
512
+ <action method="addJs"><file>mage/adminhtml/giftmessage.js</file></action>
513
+ <action method="addJs"><file>mage/adminhtml/product/composite/configure.js</file></action>
514
+ <action method="addJs"><file>varien/configurable.js</file></action>
515
+ <action method="addJs"><file>mage/adminhtml/giftoptions/tooltip.js</file></action>
516
+ <block type="adminhtml/template" name="optional_zip_countries" as="optional_zip_countries" template="directory/js/optional_zip_countries.phtml" />
517
+ </reference>
518
+ <reference name="js">
519
+ <block type="adminhtml/template" template="sales/order/create/js.phtml" name="create" />
520
+ </reference>
521
+ <reference name="root">
522
+ <block type="adminhtml/sales_order_create" name="content">
523
+ <block type="adminhtml/sales_order_create_form" template="sales/order/create/form.phtml" name="form">
524
+ <block type="adminhtml/sales_order_create_messages" name="message" />
525
+ <block type="adminhtml/sales_order_create_customer" template="sales/order/create/abstract.phtml" name="customer">
526
+ <block type="adminhtml/sales_order_create_customer_grid" name="grid" />
527
+ </block>
528
+ <block type="adminhtml/sales_order_create_store" template="sales/order/create/abstract.phtml" name="store">
529
+ <block type="adminhtml/sales_order_create_store_select" template="sales/order/create/store/select.phtml" name="select" />
530
+ </block>
531
+ <block type="adminhtml/sales_order_create_data" template="sales/order/create/data.phtml" name="data">
532
+ <block type="adminhtml/sales_order_create_sidebar" template="sales/order/create/sidebar.phtml" name="sidebar">
533
+ <block type="adminhtml/sales_order_create_sidebar_cart" template="sales/order/create/sidebar/items.phtml" name="cart" />
534
+ <block type="adminhtml/sales_order_create_sidebar_wishlist" template="sales/order/create/sidebar/items.phtml" name="wishlist" />
535
+ <block type="adminhtml/sales_order_create_sidebar_reorder" template="sales/order/create/sidebar/items.phtml" name="reorder" />
536
+ <block type="adminhtml/sales_order_create_sidebar_viewed" template="sales/order/create/sidebar/items.phtml" name="viewed" />
537
+ <block type="adminhtml/sales_order_create_sidebar_compared" template="sales/order/create/sidebar/items.phtml" name="compared" />
538
+ <block type="adminhtml/sales_order_create_sidebar_pcompared" template="sales/order/create/sidebar/items.phtml" name="pcompared" />
539
+ <block type="adminhtml/sales_order_create_sidebar_pviewed" template="sales/order/create/sidebar/items.phtml" name="pviewed" />
540
+ </block>
541
+ <block type="adminhtml/sales_order_create_form_account" template="sales/order/create/form/account.phtml" name="form_account" />
542
+ <block type="adminhtml/sales_order_create_shipping_address" template="sales/order/create/form/address.phtml" name="shipping_address" />
543
+ <block type="adminhtml/sales_order_create_billing_address" template="sales/order/create/form/address.phtml" name="billing_address" />
544
+ <block type="adminhtml/sales_order_create_shipping_method" template="sales/order/create/abstract.phtml" name="shipping_method">
545
+ <block type="adminhtml/sales_order_create_shipping_method_form" template="sales/order/create/shipping/method/form.phtml" name="form" />
546
+ </block>
547
+ <block type="adminhtml/sales_order_create_billing_method" template="sales/order/create/abstract.phtml" name="billing_method">
548
+ <block type="adminhtml/sales_order_create_billing_method_form" template="sales/order/create/billing/method/form.phtml" name="form" />
549
+ </block>
550
+ <block type="adminhtml/sales_order_create_newsletter" template="sales/order/create/abstract.phtml" name="newsletter">
551
+ <block type="adminhtml/sales_order_create_newsletter_form" template="sales/order/create/newsletter/form.phtml" name="form" />
552
+ </block>
553
+ <block type="adminhtml/sales_order_create_search" template="sales/order/create/abstract.phtml" name="search">
554
+ <block type="adminhtml/sales_order_create_search_grid" name="grid" />
555
+ </block>
556
+ <block type="adminhtml/sales_order_create_items" template="sales/order/create/items.phtml" name="items">
557
+ <block type="adminhtml/sales_order_create_items_grid" template="sales/order/create/items/grid.phtml" name="items_grid">
558
+ <block type="adminhtml/sales_order_create_coupons" template="sales/order/create/coupons/form.phtml" name="coupons">
559
+ <block type="adminhtml/sales_order_create_coupons_form" template="sales/order/create/coupons/form.phtml" name="form" />
560
+ </block>
561
+ </block>
562
+ </block>
563
+ <block type="adminhtml/sales_order_create_comment" template="sales/order/create/comment.phtml" name="comment" />
564
+ <block type="adminhtml/sales_order_create_totals" template="sales/order/create/totals.phtml" name="totals" />
565
+ <block type="adminhtml/template" name="gift_options" template="sales/order/giftoptions.phtml">
566
+ <block type="adminhtml/sales_order_create_giftmessage" template="sales/order/create/giftmessage.phtml" name="giftmessage" />
567
+ </block>
568
+ <block type="core/text_list" name="order_item_extra_info"></block>
569
+ </block>
570
+ </block>
571
+ </block>
572
+ </reference>
573
+ </adminhtml_sales_order_create_index>
574
+
575
+ <adminhtml_sales_order_edit_index>
576
+ <update handle="adminhtml_sales_order_create_index" />
577
+ </adminhtml_sales_order_edit_index>
578
+
579
+ <adminhtml_sales_order_create_load_block_json>
580
+ <reference name="root">
581
+ <block type="adminhtml/sales_order_create_load" name="content" />
582
+ </reference>
583
+ </adminhtml_sales_order_create_load_block_json>
584
+
585
+ <adminhtml_sales_order_create_load_block_plain>
586
+ <reference name="root">
587
+ <block type="core/text_list" name="content" />
588
+ </reference>
589
+ </adminhtml_sales_order_create_load_block_plain>
590
+
591
+ <adminhtml_sales_order_create_load_block_data>
592
+ <reference name="content">
593
+ <block type="adminhtml/sales_order_create_data" template="sales/order/create/data.phtml" name="data">
594
+ <block type="adminhtml/sales_order_create_sidebar" template="sales/order/create/sidebar.phtml" name="sidebar">
595
+ <block type="adminhtml/sales_order_create_sidebar_cart" template="sales/order/create/sidebar/items.phtml" name="cart" />
596
+ <block type="adminhtml/sales_order_create_sidebar_wishlist" template="sales/order/create/sidebar/items.phtml" name="wishlist" />
597
+ <block type="adminhtml/sales_order_create_sidebar_reorder" template="sales/order/create/sidebar/items.phtml" name="reorder" />
598
+ <block type="adminhtml/sales_order_create_sidebar_viewed" template="sales/order/create/sidebar/items.phtml" name="viewed" />
599
+ <block type="adminhtml/sales_order_create_sidebar_compared" template="sales/order/create/sidebar/items.phtml" name="compared" />
600
+ <block type="adminhtml/sales_order_create_sidebar_pcompared" template="sales/order/create/sidebar/items.phtml" name="pcompared" />
601
+ <block type="adminhtml/sales_order_create_sidebar_pviewed" template="sales/order/create/sidebar/items.phtml" name="pviewed" />
602
+ </block>
603
+ <block type="adminhtml/sales_order_create_form_account" template="sales/order/create/form/account.phtml" name="form_account" />
604
+ <block type="adminhtml/sales_order_create_shipping_address" template="sales/order/create/form/address.phtml" name="shipping_address" />
605
+ <block type="adminhtml/sales_order_create_billing_address" template="sales/order/create/form/address.phtml" name="billing_address" />
606
+ <block type="adminhtml/sales_order_create_shipping_method" template="sales/order/create/abstract.phtml" name="shipping_method">
607
+ <block type="adminhtml/sales_order_create_shipping_method_form" template="sales/order/create/shipping/method/form.phtml" name="form" />
608
+ </block>
609
+ <block type="adminhtml/sales_order_create_billing_method" template="sales/order/create/abstract.phtml" name="billing_method">
610
+ <block type="adminhtml/sales_order_create_billing_method_form" template="sales/order/create/billing/method/form.phtml" name="form" />
611
+ </block>
612
+ <block type="adminhtml/sales_order_create_newsletter" template="sales/order/create/abstract.phtml" name="newsletter">
613
+ <block type="adminhtml/sales_order_create_newsletter_form" template="sales/order/create/newsletter/form.phtml" name="form" />
614
+ </block>
615
+ <block type="adminhtml/sales_order_create_search" template="sales/order/create/abstract.phtml" name="search">
616
+ <block type="adminhtml/sales_order_create_search_grid" name="grid" />
617
+ </block>
618
+ <block type="adminhtml/sales_order_create_items" template="sales/order/create/items.phtml" name="items">
619
+ <block type="adminhtml/sales_order_create_items_grid" template="sales/order/create/items/grid.phtml" name="items_grid">
620
+ <block type="adminhtml/sales_order_create_coupons" template="sales/order/create/coupons/form.phtml" name="coupons">
621
+ <block type="adminhtml/sales_order_create_coupons_form" template="sales/order/create/coupons/form.phtml" name="form" />
622
+ </block>
623
+ </block>
624
+ </block>
625
+ <block type="adminhtml/sales_order_create_comment" template="sales/order/create/comment.phtml" name="comment" />
626
+ <block type="adminhtml/sales_order_create_totals" template="sales/order/create/totals.phtml" name="totals" />
627
+ <block type="adminhtml/template" name="gift_options" template="sales/order/giftoptions.phtml">
628
+ <block type="adminhtml/sales_order_create_giftmessage" template="sales/order/create/giftmessage.phtml" name="giftmessage" />
629
+ </block>
630
+ <block type="core/text_list" name="order_item_extra_info"></block>
631
+ </block>
632
+ </reference>
633
+ </adminhtml_sales_order_create_load_block_data>
634
+
635
+ <adminhtml_sales_order_create_load_block_header>
636
+ <reference name="content">
637
+ <block type="adminhtml/sales_order_create_header" name="header" />
638
+ </reference>
639
+ </adminhtml_sales_order_create_load_block_header>
640
+
641
+
642
+ <adminhtml_sales_order_create_load_block_sidebar>
643
+ <reference name="content">
644
+ <block type="adminhtml/sales_order_create_sidebar" template="sales/order/create/sidebar.phtml" name="sidebar">
645
+ <block type="adminhtml/sales_order_create_sidebar_cart" template="sales/order/create/sidebar/items.phtml" name="cart" />
646
+ <block type="adminhtml/sales_order_create_sidebar_wishlist" template="sales/order/create/sidebar/items.phtml" name="wishlist" />
647
+ <block type="adminhtml/sales_order_create_sidebar_reorder" template="sales/order/create/sidebar/items.phtml" name="reorder" />
648
+ <block type="adminhtml/sales_order_create_sidebar_viewed" template="sales/order/create/sidebar/items.phtml" name="viewed" />
649
+ <block type="adminhtml/sales_order_create_sidebar_compared" template="sales/order/create/sidebar/items.phtml" name="compared" />
650
+ <block type="adminhtml/sales_order_create_sidebar_pcompared" template="sales/order/create/sidebar/items.phtml" name="pcompared" />
651
+ <block type="adminhtml/sales_order_create_sidebar_pviewed" template="sales/order/create/sidebar/items.phtml" name="pviewed" />
652
+ </block>
653
+ </reference>
654
+ </adminhtml_sales_order_create_load_block_sidebar>
655
+
656
+ <adminhtml_sales_order_create_load_block_form_account>
657
+ <reference name="content">
658
+ <block type="adminhtml/sales_order_create_form_account" template="sales/order/create/form/account.phtml" name="form_account" />
659
+ </reference>
660
+ </adminhtml_sales_order_create_load_block_form_account>
661
+
662
+ <adminhtml_sales_order_create_load_block_shipping_address>
663
+ <reference name="content">
664
+ <block type="adminhtml/sales_order_create_shipping_address" template="sales/order/create/form/address.phtml" name="shipping_address" />
665
+ </reference>
666
+ </adminhtml_sales_order_create_load_block_shipping_address>
667
+
668
+ <adminhtml_sales_order_create_load_block_billing_address>
669
+ <reference name="content">
670
+ <block type="adminhtml/sales_order_create_billing_address" template="sales/order/create/form/address.phtml" name="billing_address" />
671
+ </reference>
672
+ </adminhtml_sales_order_create_load_block_billing_address>
673
+
674
+ <adminhtml_sales_order_create_load_block_shipping_method>
675
+ <reference name="content">
676
+ <block type="adminhtml/sales_order_create_shipping_method" template="sales/order/create/abstract.phtml" name="shipping_method">
677
+ <block type="adminhtml/sales_order_create_shipping_method_form" template="sales/order/create/shipping/method/form.phtml" name="form" />
678
+ </block>
679
+ </reference>
680
+ </adminhtml_sales_order_create_load_block_shipping_method>
681
+
682
+ <adminhtml_sales_order_create_load_block_billing_method>
683
+ <reference name="content">
684
+ <block type="adminhtml/sales_order_create_billing_method" template="sales/order/create/abstract.phtml" name="billing_method">
685
+ <block type="adminhtml/sales_order_create_billing_method_form" template="sales/order/create/billing/method/form.phtml" name="form" />
686
+ </block>
687
+ </reference>
688
+ </adminhtml_sales_order_create_load_block_billing_method>
689
+
690
+ <adminhtml_sales_order_create_load_block_newsletter>
691
+ <reference name="content">
692
+ <block type="adminhtml/sales_order_create_newsletter" template="sales/order/create/abstract.phtml" name="newsletter">
693
+ <block type="adminhtml/sales_order_create_newsletter_form" template="sales/order/create/newsletter/form.phtml" name="form" />
694
+ </block>
695
+ </reference>
696
+ </adminhtml_sales_order_create_load_block_newsletter>
697
+
698
+ <adminhtml_sales_order_create_load_block_search>
699
+ <reference name="content">
700
+ <block type="adminhtml/sales_order_create_search" template="sales/order/create/abstract.phtml" name="search">
701
+ <block type="adminhtml/sales_order_create_search_grid" name="grid" />
702
+ </block>
703
+ </reference>
704
+ </adminhtml_sales_order_create_load_block_search>
705
+
706
+ <adminhtml_sales_order_create_load_block_search_grid>
707
+ <reference name="content">
708
+ <block type="adminhtml/sales_order_create_search_grid" name="grid" />
709
+ </reference>
710
+ </adminhtml_sales_order_create_load_block_search_grid>
711
+
712
+ <adminhtml_sales_order_create_load_block_items>
713
+ <reference name="content">
714
+ <block type="adminhtml/sales_order_create_items" template="sales/order/create/items.phtml" name="items">
715
+ <block type="adminhtml/sales_order_create_items_grid" template="sales/order/create/items/grid.phtml" name="items_grid">
716
+ <block type="adminhtml/sales_order_create_coupons" template="sales/order/create/coupons/form.phtml" name="coupons">
717
+ <block type="adminhtml/sales_order_create_coupons_form" template="sales/order/create/coupons/form.phtml" name="form" />
718
+ </block>
719
+ </block>
720
+ </block>
721
+ <block type="core/text_list" name="order_item_extra_info"></block>
722
+ </reference>
723
+ </adminhtml_sales_order_create_load_block_items>
724
+
725
+ <adminhtml_sales_order_create_load_block_comment>
726
+ <reference name="content">
727
+ <block type="adminhtml/sales_order_create_comment" template="sales/order/create/comment.phtml" name="comment" />
728
+ </reference>
729
+ </adminhtml_sales_order_create_load_block_comment>
730
+
731
+ <adminhtml_sales_order_create_load_block_totals>
732
+ <reference name="content">
733
+ <block type="adminhtml/sales_order_create_totals" template="sales/order/create/totals.phtml" name="totals" />
734
+ </reference>
735
+ </adminhtml_sales_order_create_load_block_totals>
736
+
737
+ <adminhtml_sales_order_create_load_block_giftmessage>
738
+ <reference name="content">
739
+ <block type="adminhtml/sales_order_create_giftmessage" template="sales/order/create/giftmessage.phtml" name="giftmessage" />
740
+ </reference>
741
+ </adminhtml_sales_order_create_load_block_giftmessage>
742
+
743
+ <adminhtml_sales_order_create_load_block_message>
744
+ <reference name="content">
745
+ <block type="adminhtml/sales_order_create_messages" name="message" />
746
+ </reference>
747
+ </adminhtml_sales_order_create_load_block_message>
748
+
749
+ <adminhtml_sales_order_create_load_block_customer_grid>
750
+ <reference name="content">
751
+ <block type="adminhtml/sales_order_create_customer_grid" name="grid" />
752
+ </reference>
753
+ </adminhtml_sales_order_create_load_block_customer_grid>
754
+
755
+ <adminhtml_sales_order_create_load_block_sidebar_cart>
756
+ <reference name="content">
757
+ <block type="adminhtml/sales_order_create_sidebar_cart" template="sales/order/create/sidebar/items.phtml" name="sidebar_cart" />
758
+ </reference>
759
+ </adminhtml_sales_order_create_load_block_sidebar_cart>
760
+
761
+ <adminhtml_sales_order_create_load_block_sidebar_wishlist>
762
+ <reference name="content">
763
+ <block type="adminhtml/sales_order_create_sidebar_wishlist" template="sales/order/create/sidebar/items.phtml" name="sidebar_wishlist" />
764
+ </reference>
765
+ </adminhtml_sales_order_create_load_block_sidebar_wishlist>
766
+
767
+ <adminhtml_sales_order_create_load_block_sidebar_reorder>
768
+ <reference name="content">
769
+ <block type="adminhtml/sales_order_create_sidebar_reorder" template="sales/order/create/sidebar/items.phtml" name="sidebar_reorder" />
770
+ </reference>
771
+ </adminhtml_sales_order_create_load_block_sidebar_reorder>
772
+
773
+ <adminhtml_sales_order_create_load_block_sidebar_viewed>
774
+ <reference name="content">
775
+ <block type="adminhtml/sales_order_create_sidebar_viewed" template="sales/order/create/sidebar/items.phtml" name="sidebar_viewed" />
776
+ </reference>
777
+ </adminhtml_sales_order_create_load_block_sidebar_viewed>
778
+
779
+ <adminhtml_sales_order_create_load_block_sidebar_compared>
780
+ <reference name="content">
781
+ <block type="adminhtml/sales_order_create_sidebar_compared" template="sales/order/create/sidebar/items.phtml" name="sidebar_compared" />
782
+ </reference>
783
+ </adminhtml_sales_order_create_load_block_sidebar_compared>
784
+
785
+ <adminhtml_sales_order_create_load_block_sidebar_pviewed>
786
+ <reference name="content">
787
+ <block type="adminhtml/sales_order_create_sidebar_pviewed" template="sales/order/create/sidebar/items.phtml" name="sidebar_pviewed" />
788
+ </reference>
789
+ </adminhtml_sales_order_create_load_block_sidebar_pviewed>
790
+
791
+ <adminhtml_sales_order_create_load_block_sidebar_pcompared>
792
+ <reference name="content">
793
+ <block type="adminhtml/sales_order_create_sidebar_pcompared" template="sales/order/create/sidebar/items.phtml" name="sidebar_pcompared" />
794
+ </reference>
795
+ </adminhtml_sales_order_create_load_block_sidebar_pcompared>
796
+
797
+ <report_sales>
798
+ <reference name="messages">
799
+ <action method="addNotice" translate="message">
800
+ <message>This report depends on timezone configuration. Once timezone is changed, the lifetime statistics need to be refreshed.</message>
801
+ </action>
802
+ </reference>
803
+ </report_sales>
804
+
805
+ <adminhtml_report_sales_sales>
806
+ <update handle="report_sales"/>
807
+ <reference name="content">
808
+ <block type="adminhtml/report_sales_sales" template="report/grid/container.phtml" name="sales.report.grid.container">
809
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
810
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
811
+ </block>
812
+ <block type="sales/adminhtml_report_filter_form_order" name="grid.filter.form">
813
+ <action method="addReportTypeOption" translate="value">
814
+ <key>created_at_order</key>
815
+ <value>Order Created Date</value>
816
+ </action>
817
+ <action method="addReportTypeOption" translate="value">
818
+ <key>updated_at_order</key>
819
+ <value>Order Updated Date</value>
820
+ </action>
821
+ <action method="setFieldOption" translate="value">
822
+ <field>report_type</field>
823
+ <option>note</option>
824
+ <value>Order Updated Date report is real-time, does not need statistics refreshing.</value>
825
+ </action>
826
+ </block>
827
+ </block>
828
+ </reference>
829
+ </adminhtml_report_sales_sales>
830
+
831
+ <adminhtml_report_sales_tax>
832
+ <update handle="report_sales"/>
833
+ <reference name="content">
834
+ <block type="adminhtml/report_sales_tax" template="report/grid/container.phtml" name="sales.report.grid.container">
835
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
836
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
837
+ </block>
838
+ <block type="sales/adminhtml_report_filter_form" name="grid.filter.form">
839
+ <action method="addReportTypeOption" translate="value">
840
+ <key>created_at_order</key>
841
+ <value>Order Created Date</value>
842
+ </action>
843
+ <action method="addReportTypeOption" translate="value">
844
+ <key>updated_at_order</key>
845
+ <value>Order Updated Date</value>
846
+ </action>
847
+ <action method="setFieldOption" translate="value">
848
+ <field>report_type</field>
849
+ <option>note</option>
850
+ <value>Order Updated Date report is real-time, does not need statistics refreshing.</value>
851
+ </action>
852
+ </block>
853
+ </block>
854
+ </reference>
855
+ </adminhtml_report_sales_tax>
856
+
857
+ <adminhtml_report_sales_shipping>
858
+ <update handle="report_sales"/>
859
+ <reference name="content">
860
+ <block type="adminhtml/report_sales_shipping" template="report/grid/container.phtml" name="sales.report.grid.container">
861
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
862
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
863
+ </block>
864
+ <block type="sales/adminhtml_report_filter_form" name="grid.filter.form">
865
+ <action method="addReportTypeOption" translate="value">
866
+ <key>created_at_order</key>
867
+ <value>Order Created Date</value>
868
+ </action>
869
+ <action method="addReportTypeOption" translate="value">
870
+ <key>created_at_shipment</key>
871
+ <value>First Invoice Created Date</value>
872
+ </action>
873
+ </block>
874
+ </block>
875
+ </reference>
876
+ </adminhtml_report_sales_shipping>
877
+
878
+ <adminhtml_report_sales_invoiced>
879
+ <update handle="report_sales"/>
880
+ <reference name="content">
881
+ <block type="adminhtml/report_sales_invoiced" template="report/grid/container.phtml" name="sales.report.grid.container">
882
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
883
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
884
+ </block>
885
+ <block type="sales/adminhtml_report_filter_form" name="grid.filter.form">
886
+ <action method="addReportTypeOption" translate="value">
887
+ <key>created_at_order</key>
888
+ <value>Order Created Date</value>
889
+ </action>
890
+ <action method="addReportTypeOption" translate="value">
891
+ <key>created_at_invoice</key>
892
+ <value>Last Invoice Created Date</value>
893
+ </action>
894
+ </block>
895
+ </block>
896
+ </reference>
897
+ </adminhtml_report_sales_invoiced>
898
+
899
+ <adminhtml_report_sales_refunded>
900
+ <update handle="report_sales"/>
901
+ <reference name="content">
902
+ <block type="adminhtml/report_sales_refunded" template="report/grid/container.phtml" name="sales.report.grid.container">
903
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
904
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
905
+ </block>
906
+ <block type="sales/adminhtml_report_filter_form" name="grid.filter.form">
907
+ <action method="addReportTypeOption" translate="value">
908
+ <key>created_at_order</key>
909
+ <value>Order Created Date</value>
910
+ </action>
911
+ <action method="addReportTypeOption" translate="value">
912
+ <key>created_at_refunded</key>
913
+ <value>Last Credit Memo Created Date</value>
914
+ </action>
915
+ </block>
916
+ </block>
917
+ </reference>
918
+ </adminhtml_report_sales_refunded>
919
+
920
+ <adminhtml_report_sales_coupons>
921
+ <update handle="report_sales"/>
922
+ <reference name="content">
923
+ <block type="adminhtml/report_sales_coupons" template="report/grid/container.phtml" name="sales.report.grid.container">
924
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
925
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
926
+ </block>
927
+ <block type="sales/adminhtml_report_filter_form" name="grid.filter.form">
928
+ <action method="addReportTypeOption" translate="value">
929
+ <key>created_at_order</key>
930
+ <value>Order Created Date</value>
931
+ </action>
932
+ <action method="addReportTypeOption" translate="value">
933
+ <key>updated_at_order</key>
934
+ <value>Order Updated Date</value>
935
+ </action>
936
+ <action method="setFieldOption" translate="value">
937
+ <field>report_type</field>
938
+ <option>note</option>
939
+ <value>Order Updated Date report is real-time, does not need statistics refreshing.</value>
940
+ </action>
941
+ </block>
942
+ </block>
943
+ </reference>
944
+ </adminhtml_report_sales_coupons>
945
+
946
+ <adminhtml_report_sales_bestsellers>
947
+ <update handle="report_sales"/>
948
+ <reference name="content">
949
+ <block type="adminhtml/report_sales_bestsellers" template="report/grid/container.phtml" name="sales.report.grid.container">
950
+ <block type="adminhtml/store_switcher" template="report/store/switcher/enhanced.phtml" name="store.switcher">
951
+ <action method="setStoreVarName"><var_name>store_ids</var_name></action>
952
+ </block>
953
+ <block type="sales/adminhtml_report_filter_form" name="grid.filter.form">
954
+ <action method="setFieldVisibility">
955
+ <field>report_type</field>
956
+ <visibility>0</visibility>
957
+ </action>
958
+ <action method="setFieldVisibility">
959
+ <field>show_order_statuses</field>
960
+ <visibility>0</visibility>
961
+ </action>
962
+ <action method="setFieldVisibility">
963
+ <field>order_statuses</field>
964
+ <visibility>0</visibility>
965
+ </action>
966
+ </block>
967
+ </block>
968
+ </reference>
969
+ </adminhtml_report_sales_bestsellers>
970
+
971
+ <adminhtml_sales_recurring_profile_index>
972
+ <reference name="content">
973
+ <block type="sales/adminhtml_recurring_profile" name="sales.recurring.profile.grid.container"/>
974
+ </reference>
975
+ </adminhtml_sales_recurring_profile_index>
976
+
977
+ <adminhtml_sales_recurring_profile_grid>
978
+ <remove name="root"/>
979
+ <block type="sales/adminhtml_recurring_profile_grid" name="sales.recurring.profile.grid" output="toHtml"/>
980
+ </adminhtml_sales_recurring_profile_grid>
981
+
982
+ <adminhtml_sales_recurring_profile_customergrid>
983
+ <block type="sales/adminhtml_customer_edit_tab_recurring_profile" name="customer.recurring.profile.grid" output="toHtml"></block>
984
+ </adminhtml_sales_recurring_profile_customergrid>
985
+
986
+ <adminhtml_sales_recurring_profile_view>
987
+ <reference name="content">
988
+ <block type="sales/adminhtml_recurring_profile_view" name="sales.recurring.profile.view" template="widget/view/container.phtml">
989
+ <action method="setDestElementId"><value>sales_recurring_profile_view</value></action>
990
+ </block>
991
+ </reference>
992
+ <reference name="left">
993
+ <block type="adminhtml/widget_tabs" name="sales.recurring.profile.view.tabs">
994
+ <action method="setDestElementId"><value>sales_recurring_profile_view</value></action>
995
+ <action method="setTitle" translate="value"><value>Recurring Profile View</value></action>
996
+ <action method="setId"><value>sales_recurring_profile_view_tabs</value></action>
997
+ <block type="sales/adminhtml_recurring_profile_view_tab_info" as="info_tab" name="sales.recurring.profile.tab.info" template="sales/recurring/profile/view.phtml">
998
+ <block type="sales/recurring_profile_view" name="sales.recurring.profile.view.general" as="general" template="sales/recurring/profile/view/info.phtml">
999
+ <action method="prepareReferenceInfo"/>
1000
+ <action method="addToParentGroup"><value>info_blocks_row_1</value></action>
1001
+ <action method="setViewColumn"><value>1</value></action>
1002
+ <action method="setViewLabel" translate="value"><value>Reference</value></action>
1003
+ </block>
1004
+ <block type="sales/recurring_profile_view" name="sales.recurring.profile.view.item" as="item" template="sales/recurring/profile/view/info.phtml">
1005
+ <action method="prepareItemInfo"/>
1006
+ <action method="addToParentGroup"><value>info_blocks_row_1</value></action>
1007
+ <action method="setViewColumn"><value>2</value></action>
1008
+ <action method="setViewLabel" translate="value"><value>Purchased Item</value></action>
1009
+ </block>
1010
+ <block type="sales/recurring_profile_view" name="sales.recurring.profile.view.schedule" as="profile" template="sales/recurring/profile/view/info.phtml">
1011
+ <action method="prepareScheduleInfo"/>
1012
+ <action method="addToParentGroup"><value>info_blocks_row_2</value></action>
1013
+ <action method="setViewColumn"><value>1</value></action>
1014
+ <action method="setViewLabel" translate="value"><value>Profile Schedule</value></action>
1015
+ </block>
1016
+ <block type="sales/recurring_profile_view" name="sales.recurring.profile.view.fees" as="fees" template="sales/recurring/profile/view/info.phtml">
1017
+ <action method="prepareFeesInfo"/>
1018
+ <action method="addToParentGroup"><value>info_blocks_row_2</value></action>
1019
+ <action method="setViewColumn"><value>2</value></action>
1020
+ <action method="setViewLabel" translate="value"><value>Profile Payments</value></action>
1021
+ </block>
1022
+ <block type="sales/recurring_profile_view" name="sales.recurring.profile.view.billing" as="billing_address" template="sales/recurring/profile/view/info.phtml">
1023
+ <action method="prepareAddressInfo"/>
1024
+ <action method="addToParentGroup"><value>info_blocks_row_3</value></action>
1025
+ <action method="setViewColumn"><value>1</value></action>
1026
+ <action method="setViewLabel" translate="value"><value>Billing Address</value></action>
1027
+ </block>
1028
+ <block type="sales/recurring_profile_view" name="sales.recurring.profile.view.shipping" as="shipping_address" template="sales/recurring/profile/view/info.phtml">
1029
+ <action method="setAddressType"><value>shipping</value></action>
1030
+ <action method="prepareAddressInfo"/>
1031
+ <action method="addToParentGroup"><value>info_blocks_row_3</value></action>
1032
+ <action method="setViewColumn"><value>2</value></action>
1033
+ <action method="setViewLabel" translate="value"><value>Shipping Address</value></action>
1034
+ </block>
1035
+ </block>
1036
+ <block type="sales/adminhtml_recurring_profile_view_tab_orders" as="orders_tab" name="sales.recurring.profile.tab.orders"/>
1037
+ <action method="addTab"><name>recurring_profile_info</name><block>info_tab</block></action>
1038
+ <action method="addTab"><name>recurring_profile_orders</name><block>orders_tab</block></action>
1039
+ </block>
1040
+ </reference>
1041
+ </adminhtml_sales_recurring_profile_view>
1042
+
1043
+ <adminhtml_sales_recurring_profile_orders>
1044
+ <remove name="root"/>
1045
+ <block type="sales/adminhtml_recurring_profile_view_tab_orders" name="sales.recurring.profile.tab.orders" output="toHtml"/>
1046
+ </adminhtml_sales_recurring_profile_orders>
1047
+
1048
+ <adminhtml_customer_edit>
1049
+ <reference name="customer_edit_tabs">
1050
+ <action method="addTab"><name>customer_edit_tab_agreements</name><block>sales/adminhtml_customer_edit_tab_agreement</block></action>
1051
+ <action method="addTab"><name>customer_edit_tab_recurring_profile</name><block>sales/adminhtml_customer_edit_tab_recurring_profile</block></action>
1052
+ </reference>
1053
+ </adminhtml_customer_edit>
1054
+
1055
+ <adminhtml_sales_order_status_index>
1056
+ <reference name="content">
1057
+ <block type="adminhtml/sales_order_status" name="sales_order_status.grid.container"></block>
1058
+ </reference>
1059
+ </adminhtml_sales_order_status_index>
1060
+ <adminhtml_sales_order_status_new>
1061
+ <reference name="content">
1062
+ <block type="adminhtml/sales_order_status_new" name="sales_order_status.new.container"></block>
1063
+ </reference>
1064
+ </adminhtml_sales_order_status_new>
1065
+ <adminhtml_sales_order_status_edit>
1066
+ <reference name="content">
1067
+ <block type="adminhtml/sales_order_status_edit" name="sales_order_status.edit.container"></block>
1068
+ </reference>
1069
+ </adminhtml_sales_order_status_edit>
1070
+ <adminhtml_sales_order_status_assign>
1071
+ <reference name="content">
1072
+ <block type="adminhtml/sales_order_status_assign" name="sales_order_status.assign.container"></block>
1073
+ </reference>
1074
+ </adminhtml_sales_order_status_assign>
1075
+ <adminhtml_sales_order_address>
1076
+ <reference name="content">
1077
+ <block type="adminhtml/sales_order_address" name="sales_order_address.form.container"></block>
1078
+ </reference>
1079
+ </adminhtml_sales_order_address>
1080
+ </layout>
app/design/adminhtml/default/default/layout/search.xml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_catalog_search_edit>
31
+ <reference name="content">
32
+ <block type="adminhtml/catalog_search_edit" name="catalog_search_edit" />
33
+ </reference>
34
+ </adminhtml_catalog_search_edit>
35
+ </layout>
app/design/adminhtml/default/default/layout/tag.xml ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+ <layout>
29
+ <adminhtml_tag_edit>
30
+ <reference name="content">
31
+ <block type="adminhtml/tag_edit" name="tag_edit" template="tag/edit/container.phtml"></block>
32
+ </reference>
33
+ </adminhtml_tag_edit>
34
+ <adminhtml_tag_assigned>
35
+ <remove name="root" />
36
+ <block type="adminhtml/tag_assigned_grid" name="tag_assigned_grid" output="toHtml" />
37
+ <block type="adminhtml/widget_grid_serializer" name="tag_grid_serializer" output="toHtml">
38
+ <reference name="tag_grid_serializer">
39
+ <action method="initSerializerBlock">
40
+ <grid_block_name>tag_assigned_grid</grid_block_name>
41
+ <data_callback>getRelatedProducts</data_callback>
42
+ <hidden_input_name>tag_assigned_products</hidden_input_name>
43
+ <reload_param_name>assigned_products</reload_param_name>
44
+ </action>
45
+ </reference>
46
+ </block>
47
+ </adminhtml_tag_assigned>
48
+ <adminhtml_tag_assignedgridonly>
49
+ <remove name="root" />
50
+ <block type="adminhtml/tag_assigned_grid" name="assigned_grid" output="toHtml" />
51
+ </adminhtml_tag_assignedgridonly>
52
+ </layout>
app/design/adminhtml/default/default/layout/widget.xml ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category design
23
+ * @package default_default
24
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+
29
+ <layout>
30
+ <adminhtml_widget_index>
31
+ <block name="wysiwyg_widget" type="widget/adminhtml_widget" output="toHtml" />
32
+ </adminhtml_widget_index>
33
+
34
+ <adminhtml_widget_loadoptions>
35
+ <block name="wysiwyg_widget.options" type="widget/adminhtml_widget_options" output="toHtml" />
36
+ </adminhtml_widget_loadoptions>
37
+
38
+ <adminhtml_widget_instance_index>
39
+ <reference name="content">
40
+ <block type="widget/adminhtml_widget_instance" name="widget_instance" />
41
+ </reference>
42
+ </adminhtml_widget_instance_index>
43
+
44
+ <adminhtml_widget_instance_edit>
45
+ <reference name="head">
46
+ <action method="setCanLoadExtJs"><flag>1</flag></action>
47
+ <action method="addJs"><script>mage/adminhtml/wysiwyg/widget.js</script></action>
48
+ <action method="addItem"><type>js</type><name>prototype/window.js</name></action>
49
+ <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
50
+ <action method="addItem"><type>js_css</type><name>prototype/windows/themes/magento.css</name></action>
51
+ </reference>
52
+ <reference name="content">
53
+ <block type="widget/adminhtml_widget_instance_edit" name="widget_instance_edit" />
54
+ </reference>
55
+ <reference name="left">
56
+ <block type="widget/adminhtml_widget_instance_edit_tabs" name="widget_instance_edit_tabs">
57
+ <block type="widget/adminhtml_widget_instance_edit_tab_settings" name="widget_instance_edit_tab_settings" />
58
+ <block type="widget/adminhtml_widget_instance_edit_tab_main" name="widget_instance_edit_tab_main" />
59
+ <block type="widget/adminhtml_widget_instance_edit_tab_properties" name="widget_instance_edit_tab_properties" />
60
+ <action method="addTab"><name>settings_section</name><block>widget_instance_edit_tab_settings</block></action>
61
+ <action method="addTab"><name>main_section</name><block>widget_instance_edit_tab_main</block></action>
62
+ <action method="addTab"><name>properties_section</name><block>widget_instance_edit_tab_properties</block></action>
63
+ </block>
64
+ </reference>
65
+ <reference name="js">
66
+ <block type="adminhtml/template" template="widget/instance/js.phtml" name="widget_instance_js"></block>
67
+ </reference>
68
+ </adminhtml_widget_instance_edit>
69
+ </layout>
app/design/adminhtml/default/default/locale/en_US/translate.csv ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "Credit Card Type","Credit Card Type"
2
+ "Add New User","Add New User"
3
+ "Items that you don","Items that you don"
4
+ "State/Province","State/Province"
5
+ "Magento Commerce - Administrative Panel","Magento Commerce - Administrative Panel"
6
+ "3 stars","3 stars"
7
+ "Credit Memo Date","Credit Memo Date"
8
+ "Double click on a group to rename it","Double click on a group to rename it"
9
+ "Rating Not Available","Rating Not Available"
10
+ "Gift Certificate","Gift Certificate"
11
+ "Assigned Answers","Assigned Answers"
12
+ "Fax","Fax"
13
+ "Magento Admin","Magento Admin"
14
+ "Newsletter Message Preview","Newsletter Message Preview"
15
+ "4 stars","4 stars"
16
+ "Company","Company"
17
+ "Invoice Date","Invoice Date"
18
+ "Qty Returned","Qty Returned"
19
+ "Add New Customer Group","Add New Customer Group"
20
+ "Visitors","Visitors"
21
+ "Shipping Method","Shipping Method"
22
+ "Subtotal","Subtotal"
23
+ "5 stars","5 stars"
24
+ "Choose Store","Choose Store"
25
+ "Import Tax Rates","Import Tax Rates"
26
+ "Roles","Roles"
27
+ "If you do not specify an option value for a store then the default value will be used.","If you do not specify an option value for a store then the default value will be used."
28
+ "Shipping","Shipping"
29
+ "Select from existing customer addresses:","Select from existing customer addresses:"
30
+ "Products","Products"
31
+ "Edit User ","Edit User "
32
+ "Item Status","Item Status"
33
+ "Set as default billing address","Set as default billing address"
34
+ "Position","Position"
35
+ "Items Ordered","Items Ordered"
36
+ "Fixed","Fixed"
37
+ "%s","%s"
38
+ "Same as Billing Address","Same as Billing Address"
39
+ "Product In Stores","Product In Stores"
40
+ "Working...","Working..."
41
+ "Apply coupon code","Apply coupon code"
42
+ "per page","per page"
43
+ "Tax","Tax"
44
+ "Telephone","Telephone"
45
+ "Wishlist","Wishlist"
46
+ "Magento","Magento"
47
+ "Expiration Date","Expiration Date"
48
+ "Add New Class","Add New Class"
49
+ "Super product attributes configuration","Super product attributes configuration"
50
+ "Previus page","Previus page"
51
+ "Something went wrong...","Something went wrong..."
52
+ "Lifetime Sales","Lifetime Sales"
53
+ "SKU","SKU"
54
+ "Log Out","Log Out"
55
+ "Failed","Failed"
56
+ "Billing Address","Billing Address"
57
+ "Log into Magento Admin Page","Log into Magento Admin Page"
58
+ "Invoice Status","Invoice Status"
59
+ "CC Type","CC Type"
60
+ "Percentage","Percentage"
61
+ "Are you sure?","Are you sure?"
62
+ "Email","Email"
63
+ "Customer Group:","Customer Group:"
64
+ "Option","Option"
65
+ "Primary Billing Address","Primary Billing Address"
66
+ "Create Backup","Create Backup"
67
+ "Manage Options (values for your attribute)","Manage Options (values for your attribute)"
68
+ "Total Due","Total Due"
69
+ "Copyright 2007","Copyright 2007"
70
+ "Newsletter Subscribers","Newsletter Subscribers"
71
+ "CC Number","CC Number"
72
+ "Add New Tax Rate","Add New Tax Rate"
73
+ "Product Name","Product Name"
74
+ "Country","Country"
75
+ "Purchase order number","Purchase order number"
76
+ "Date and Time","Date and Time"
77
+ "Categories","Categories"
78
+ "Qty Cancelled","Qty Cancelled"
79
+ "Card Verification Number","Card Verification Number"
80
+ "Order Date","Order Date"
81
+ "This tab contains invalid data. Please correct before saving.","This tab contains invalid data. Please correct before saving."
82
+ "Customer Balance","Customer Balance"
83
+ "Update Qty","Update Qty"
84
+ "Customer Groups","Customer Groups"
85
+ "Export to","Export to"
86
+ "configuration","configuration"
87
+ "Sorry, no quotes are available for this order at this time.","Sorry, no quotes are available for this order at this time."
88
+ "Options","Options"
89
+ "Attribute Name","Attribute Name"
90
+ "Total <strong>%d</strong> records found","Total <strong>%d</strong> records found"
91
+ "Comment","Comment"
92
+ "Set as default shipping address","Set as default shipping address"
93
+ "Last Name","Last Name"
94
+ "of","of"
95
+ "Newsletter Problem Reports","Newsletter Problem Reports"
96
+ "Sales Statistics","Sales Statistics"
97
+ "Qty To Return","Qty To Return"
98
+ "New Customer Address","New Customer Address"
99
+ "Roles Resources","Roles Resources"
100
+ "Zip/Post Code","Zip/Post Code"
101
+ "Order Status","Order Status"
102
+ "Store","Store"
103
+ "Product Categories","Product Categories"
104
+ "Online Customers","Online Customers"
105
+ "Next page","Next page"
106
+ "Items Shipped","Items Shipped"
107
+ "Unassigned Attributes","Unassigned Attributes"
108
+ "Not Charged Yet","Not Charged Yet"
109
+ "This group contains system attributes.\nPlease, move system attributes to another group and try again.","This group contains system attributes.\nPlease, move system attributes to another group and try again."
110
+ "copy data from","copy data from"
111
+ "Add","Add"
112
+ "Total Payed","Total Payed"
113
+ "Shopping Cart","Shopping Cart"
114
+ "Order History","Order History"
115
+ "Empty","Empty"
116
+ "Unable to complete request. Please, try again later.","Unable to complete request. Please, try again later."
117
+ "Customers","Customers"
118
+ "Customer does not have any addresses","Customer does not have any addresses"
119
+ "Add New Role","Add New Role"
120
+ "Street Address","Street Address"
121
+ "Are You Sure?","Are You Sure?"
122
+ "Shipping Address","Shipping Address"
123
+ "Paid","Paid"
124
+ "Page","Page"
125
+ "Discount","Discount"
126
+ "Set root category for this store in","Set root category for this store in"
127
+ "Groups","Groups"
128
+ "View","View"
129
+ "Qty Ordered","Qty Ordered"
130
+ "Global Record Search","Global Record Search"
131
+ "Card Number","Card Number"
132
+ "PO Number","PO Number"
133
+ "Grand Total","Grand Total"
134
+ "Please select one or more attributes.","Please select one or more attributes."
135
+ "Dashboard","Dashboard"
136
+ "Are you sure you want to do this?","Are you sure you want to do this?"
137
+ "Please add one or more options","Please add one or more options"
138
+ "Role Users","Role Users"
139
+ "Add New Tax Rule","Add New Tax Rule"
140
+ "Subscribe to newsletter","Subscribe to newsletter"
141
+ "Dashboard Control","Dashboard Control"
142
+ "Default Shipping","Default Shipping"
143
+ "Qty","Qty"
144
+ "Add to Queue","Add to Queue"
145
+ "Average Sale","Average Sale"
146
+ "Cancel","Cancel"
147
+ "All stores","All stores"
148
+ "Personal Information","Personal Information"
149
+ "City","City"
150
+ "Export Tax Rates","Export Tax Rates"
151
+ "1 star","1 star"
152
+ "Current Configuration Scope","Current Configuration Scope"
153
+ "Add New Template","Add New Template"
154
+ "Move to:","Move to:"
155
+ "First Name","First Name"
156
+ "Change Order Status","Change Order Status"
157
+ "Are you sure you want to delete this address?","Are you sure you want to delete this address?"
158
+ "Are you sure you want to do it?","Are you sure you want to do it?"
159
+ "Add to Order","Add to Order"
160
+ "Product ID","Product ID"
161
+ "Payment Method","Payment Method"
162
+ "What is this?","What is this?"
163
+ "Users","Users"
164
+ "Customer Addresses","Customer Addresses"
165
+ "Qty Backordered","Qty Backordered"
166
+ "You can not remove system attribute from this set.","You can not remove system attribute from this set."
167
+ "Price","Price"
168
+ "Who","Who"
169
+ "Rating Not Alvailable","Rating Not Alvailable"
170
+ "Order Comment","Order Comment"
171
+ "Edit Role","Edit Role"
172
+ "Tax Rates Import / Export","Tax Rates Import / Export"
173
+ "Magento Logo","Magento Logo"
174
+ "A name is required","A name is required"
175
+ "Assigned options","Assigned options"
176
+ "Please Enter New Group Name","Please Enter New Group Name"
177
+ "Name","Name"
178
+ "Email Preview","Email Preview"
179
+ "Newsletter Queue","Newsletter Queue"
180
+ "Remove","Remove"
181
+ "Last Log In:","Last Log In:"
182
+ "Logged in as <strong>%s</strong>","Logged in as <strong>%s</strong>"
183
+ "Name on Card","Name on Card"
184
+ "All Stores","All Stores"
185
+ "Send comment to customer","Send comment to customer"
186
+ "Account Created on:","Account Created on:"
187
+ "Backups Control","Backups Control"
188
+ "Add New Address","Add New Address"
189
+ "Account Created in:","Account Created in:"
190
+ "Default Billing","Default Billing"
191
+ "Manage Titles (Size, Color, etc.)","Manage Titles (Size, Color, etc.)"
192
+ "Please confirm site switching. All data not saved will be lost.","Please confirm site switching. All data not saved will be lost."
193
+ "Please select from each ratings above","Please select from each ratings above"
194
+ "Qty Shipped","Qty Shipped"
195
+ "Are you sure you want to cancel add this address?","Are you sure you want to cancel add this address?"
196
+ "The information in this tab has been changed.","The information in this tab has been changed."
197
+ "2 stars","2 stars"
198
+ "Apply","Apply"
199
+ "Total","Total"
200
+ "User roles","User roles"
201
+ "Wishlist Report","Wishlist Report"
app/design/adminhtml/default/default/template/access_denied.phtml ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Adminhtml_Block_Denied
30
+ */
31
+ ?>
32
+ <h1 class="page-heading"><?php echo $this->helper('adminhtml')->__('Access denied') ?></h1>
33
+ <?php if (!$this->hasAvailaleResources()): ?>
34
+ <p>
35
+ <?php echo $this->helper('adminhtml')->__('Please try to logout and sign in again.') ?><br/>
36
+ <?php echo $this->helper('adminhtml')->__('If this message persists, please contact the store owner.') ?>
37
+ </p>
38
+ <?php else: ?>
39
+ <p><?php echo $this->helper('adminhtml')->__('Access denied.') ?></p>
40
+ <?php endif?>
app/design/adminhtml/default/default/template/api/role_users_grid_js.phtml ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ <!--
29
+ <?php $myBlock = $this->getLayout()->getBlock('roleUsersGrid'); ?>
30
+ <?php if( is_object($myBlock) && $myBlock->getJsObjectName() ): ?>
31
+ var checkBoxes = $H({});
32
+ var warning = false;
33
+ var inRoleUsers = $H(<?php echo $myBlock->_getUsers(true) ?>);
34
+ if (inRoleUsers.size() > 0) warning = true;
35
+ $('in_role_user').value = inRoleUsers.toQueryString();
36
+
37
+ function registerUserRole(grid, element, checked){
38
+ if(checked){
39
+ inRoleUsers.set(element.value, 0);
40
+ } else {
41
+ inRoleUsers.unset(element.value);
42
+ }
43
+ $('in_role_user').value = inRoleUsers.toQueryString();
44
+ grid.reloadParams = {'in_role_user[]':inRoleUsers.keys()};
45
+ }
46
+
47
+ function roleUsersRowClick(grid, event){
48
+ var trElement = Event.findElement(event, 'tr');
49
+ var isInput = Event.element(event).tagName == 'INPUT';
50
+ if(trElement){
51
+ var checkbox = Element.getElementsBySelector(trElement, 'input');
52
+ if(checkbox[0]){
53
+ var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;
54
+ if (warning && checkBoxes.size() > 0) {
55
+ if ( !confirm("<?php echo $this->__('Warning!\r\nThis action will remove this user from already assigned role\r\nAre you sure?') ?>") ) {
56
+ checkbox[0].checked = false;
57
+ checkBoxes.each(function(elem) {
58
+ if (elem.value.status == 1) {
59
+ elem.value.object.checked = true;
60
+ }
61
+ });
62
+ return false;
63
+ }
64
+ warning = false;
65
+ }
66
+ <?php echo $myBlock->getJsObjectName() ?>.setCheckboxChecked(checkbox[0], checked);
67
+ }
68
+ }
69
+ }
70
+
71
+ function roleUsersRowInit(grid, row){
72
+ var checkbox = $(row).getElementsByClassName('checkbox')[0];
73
+ if (checkbox) {
74
+ checkBoxes.set(checkbox.value, {'status' : ((checkbox.checked) ? 1 : 0), 'object' : checkbox});
75
+ }
76
+ }
77
+
78
+ function myhandler(obj)
79
+ {
80
+ if (checkBoxes.size() > 0) {
81
+ if ( !confirm("<?php echo $this->__('Warning!\r\nThis action will remove those users from already assigned roles\r\nAre you sure?') ?>") ) {
82
+ obj.checked = false;
83
+ checkBoxes.each(function(elem) {
84
+ if (elem.value.status == 1) {
85
+ elem.value.object.checked = true;
86
+ }
87
+ });
88
+ return false;
89
+ }
90
+ warning = false;
91
+ }
92
+ checkBoxes.each(function(elem) {
93
+ <?php echo $myBlock->getJsObjectName() ?>.setCheckboxChecked(elem.value.object, obj.checked);
94
+ });
95
+ }
96
+
97
+ <?php echo $myBlock->getJsObjectName() ?>.rowClickCallback = roleUsersRowClick;
98
+ <?php echo $myBlock->getJsObjectName() ?>.initRowCallback = roleUsersRowInit;
99
+ <?php echo $myBlock->getJsObjectName() ?>.checkboxCheckCallback = registerUserRole;
100
+ <?php echo $myBlock->getJsObjectName() ?>.checkCheckboxes = myhandler;
101
+ <?php echo $myBlock->getJsObjectName() ?>.rows.each(function(row){roleUsersRowInit(<?php echo $myBlock->getJsObjectName() ?>, row)});
102
+ $('in_role_user_old').value = $('in_role_user').value;
103
+ <?php endif; ?>
104
+ //-->
105
+ </script>
app/design/adminhtml/default/default/template/api/roleinfo.phtml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-permissions-role"><?php echo ($this->getRoleId() > 0 ) ? ($this->__('Edit Role') . " '{$this->getRoleInfo()->getRoleName()}'") : $this->__('Add New Role') ?></h3></td>
31
+ <td class="form-buttons">
32
+ <?php echo $this->getBackButtonHtml() ?>
33
+ <?php echo $this->getResetButtonHtml() ?>
34
+ <?php echo $this->getDeleteButtonHtml() ?>
35
+ <?php echo $this->getSaveButtonHtml() ?>
36
+ </td>
37
+ </tr>
38
+ </table>
39
+ </div>
40
+ <form action="<?php echo $this->getUrl('*/*/saverole') ?>" method="post" id="role_edit_form">
41
+ <?php echo $this->getBlockHtml('formkey')?>
42
+ </form>
43
+ <script type="text/javascript">
44
+ var roleForm = new varienForm('role_edit_form');
45
+ </script>
app/design/adminhtml/default/default/template/api/roles.phtml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-permissions-role"><?php echo $this->__('Roles') ?></h3></td>
31
+ <td class="form-buttons">
32
+ <button class="scalable add" onclick="window.location='<?php echo $this->getAddNewUrl() ?>'"><span><?php echo $this->__('Add New Role') ?></span></button>
33
+ </td>
34
+ </tr>
35
+ </table>
36
+ </div>
37
+ <?php echo $this->getGridHtml() ?>
app/design/adminhtml/default/default/template/api/rolesedit.phtml ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__('Roles Resources') ?></h4>
30
+ </div>
31
+ <input type="hidden" name="resource" id="role_resources" value="">
32
+ <fieldset id="role_resources">
33
+
34
+ <span class="field-row">
35
+ <label for="all"><?php echo $this->__('Resource Access') ?></label>
36
+ <select id="all" name="all" onchange="$('resources_container').toggle()" class="select">
37
+ <option value="0" <?php echo ($this->getEverythingAllowed()?'':'selected="selected"'); ?>><?php echo $this->__('Custom') ?></option>
38
+ <option value="1" <?php echo ($this->getEverythingAllowed()?'selected="selected"':''); ?>><?php echo $this->__('All') ?></option>
39
+ </select>
40
+ </span>
41
+
42
+ <span class="field-row" id="resources_container">
43
+ <label><?php echo $this->__('Resources') ?></label>
44
+ <div class="f-left">
45
+ <div class="tree x-tree" id="resource-tree"></div>
46
+ </div>
47
+ </span>
48
+
49
+ </fieldset>
50
+ </div>
51
+ <!-- Draw Resources Tree -->
52
+ <script type="text/javascript">
53
+ <?php if($this->getEverythingAllowed()): ?>
54
+ $('resources_container').hide();
55
+ <?php endif; ?>
56
+ Ext.EventManager.onDocumentReady(function() {
57
+ var tree = new Ext.tree.TreePanel('resource-tree', {
58
+ animate:false,
59
+ loader: false,
60
+ enableDD:false,
61
+ containerScroll: true,
62
+ rootUIProvider: Ext.tree.CheckboxNodeUI,
63
+ selModel: new Ext.tree.CheckNodeMultiSelectionModel(),
64
+ rootVisible: false
65
+ });
66
+
67
+ tree.on('check', checkHandler, tree);
68
+
69
+ // set the root node
70
+ var root = new Ext.tree.TreeNode({
71
+ text: 'root',
72
+ draggable:false,
73
+ checked:'false',
74
+ id:'__root__',
75
+ uiProvider: Ext.tree.CheckboxNodeUI
76
+ });
77
+
78
+ tree.setRootNode(root);
79
+ bildResourcesTree(root, <?php echo $this->getResTreeJson() ?>);
80
+ tree.addListener('click', resourceClick.createDelegate(this));
81
+
82
+ // render the tree
83
+ tree.render();
84
+ // root.expand();
85
+ tree.expandAll();
86
+
87
+ $('role_resources').value = tree.getChecked().join(',');
88
+ });
89
+
90
+ function resourceClick(node, e){
91
+ node.getUI().check(!node.getUI().checked());
92
+ varienElementMethods.setHasChanges(Event.element(e), e);
93
+ };
94
+
95
+ function bildResourcesTree(parent, config){
96
+ if (!config) return null;
97
+
98
+ if (parent && config && config.length){
99
+ for (var i = 0; i < config.length; i++){
100
+ config[i].uiProvider = Ext.tree.CheckboxNodeUI;
101
+ var node = new Ext.tree.TreeNode(config[i]);
102
+ parent.appendChild(node);
103
+ if(config[i].children){
104
+ bildResourcesTree(node, config[i].children);
105
+ }
106
+ }
107
+ }
108
+ }
109
+
110
+ function checkHandler(node)
111
+ {
112
+ if ( node.attributes.checked && node.parentNode ) {
113
+ var n = node.parentNode;
114
+ this.removeListener('check', checkHandler);
115
+ do {
116
+ if (!n || n.attributes.id == 'admin' || n.attributes.id == '__root__') {
117
+ break;
118
+ } else {
119
+ n.ui.check(true);
120
+ }
121
+ } while (n = n.parentNode );
122
+ this.on('check', checkHandler);
123
+ }
124
+ if ( !node.isLeaf() && node.hasChildNodes() ) {
125
+ this.removeListener('check', checkHandler);
126
+ processChildren(node, node.attributes.checked);
127
+ this.on('check', checkHandler);
128
+ }
129
+ $('role_resources').value = this.getChecked().join(',');
130
+ }
131
+
132
+ function processChildren(node, state)
133
+ {
134
+ if ( !node.hasChildNodes() ) return false;
135
+ for(var i = 0; i < node.childNodes.length; i++ ) {
136
+ node.childNodes[i].ui.check(state);
137
+ if ( node.childNodes[i].hasChildNodes() ) {
138
+ processChildren(node.childNodes[i], state);
139
+ }
140
+ }
141
+ return true;
142
+ }
143
+ </script>
app/design/adminhtml/default/default/template/api/rolesusers.phtml ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__('Role Users') ?></h4>
28
+ <?php echo $this->_getGridHtml() ?>
app/design/adminhtml/default/default/template/api/user_roles_grid_js.phtml ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ <!--
29
+ <?php $myBlock = $this->getLayout()->getBlock('user.roles.grid'); ?>
30
+ <?php if( is_object($myBlock) && $myBlock->getJsObjectName()): ?>
31
+ var radioBoxes = $H({});
32
+ var warning = false;
33
+ var userRoles = $H(<?php echo $myBlock->_getSelectedRoles(true) ?>);
34
+ if (userRoles.size() > 0) warning = true;
35
+ $('user_user_roles').value = userRoles.toQueryString();
36
+
37
+ function registerUserRole(grid, element, checked){
38
+ if(checked){
39
+ userRoles.each(function(o){userRoles.remove(o[0]);});
40
+ userRoles[element.value] = 0;
41
+ } else {
42
+ userRoles.remove(element.value);
43
+ }
44
+ $('user_user_roles').value = userRoles.toQueryString();
45
+ grid.reloadParams = {'user_roles[]':userRoles.keys()};
46
+ }
47
+
48
+ function roleRowClick(grid, event){
49
+ var trElement = Event.findElement(event, 'tr');
50
+ var isInput = Event.element(event).tagName == 'INPUT';
51
+ if(trElement){
52
+ var checkbox = Element.getElementsBySelector(trElement, 'input');
53
+ if(checkbox[0] && !checkbox[0].checked){
54
+ var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;
55
+ if (checked && warning && radioBoxes.size() > 0) {
56
+ if ( !confirm("<?php echo $this->__('Warning!\r\nThis action will remove this user from already assigned role\r\nAre you sure?') ?>") ) {
57
+ checkbox[0].checked = false;
58
+ for(i in radioBoxes) {
59
+ if( radioBoxes[i].status == 1) {
60
+ radioBoxes[i].object.checked = true;
61
+ }
62
+ }
63
+ return false;
64
+ }
65
+ warning = false;
66
+ }
67
+ <?php echo $myBlock->getJsObjectName() ?>.setCheckboxChecked(checkbox[0], checked);
68
+ }
69
+ }
70
+ }
71
+
72
+ function rolesRowInit(grid, row){
73
+ var checkbox = $(row).getElementsByClassName('radio')[0];
74
+ if (checkbox) {
75
+ radioBoxes[checkbox.value] = {'status' : ((checkbox.checked) ? 1 : 0), 'object' : checkbox};
76
+ }
77
+ }
78
+
79
+ <?php echo $myBlock->getJsObjectName() ?>.rowClickCallback = roleRowClick;
80
+ <?php echo $myBlock->getJsObjectName() ?>.initRowCallback = rolesRowInit;
81
+ <?php echo $myBlock->getJsObjectName() ?>.checkboxCheckCallback = registerUserRole;
82
+ <?php echo $myBlock->getJsObjectName() ?>.rows.each(function(row){rolesRowInit(<?php echo $myBlock->getJsObjectName() ?>, row)});
83
+ <?php endif; ?>
84
+ //-->
85
+ </script>
app/design/adminhtml/default/default/template/api/userinfo.phtml ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;">
31
+ <h3>
32
+ <?php if($this->getUser()->getUserId()): ?>
33
+ <?php $_userName = $this->getUser()->getFirstname() . ' ' . $this->getUser()->getLastname() ?>
34
+ <?php echo $this->__("Edit User '%s'", $_userName) ?>
35
+ <?php else: ?>
36
+ <?php echo $this->__('Add New User') ?>
37
+ <?php endif; ?>
38
+ </h3>
39
+ </td>
40
+ <td class="form-buttons">
41
+ <?php echo $this->getBackButtonHtml() ?>
42
+ <?php echo $this->getResetButtonHtml() ?>
43
+ <?php echo $this->getDeleteButtonHtml() ?>
44
+ <?php echo $this->getSaveButtonHtml() ?>
45
+ </table>
46
+ </div>
47
+ <form action="<?php echo $this->getUrl('*/*/saveuser') ?>" method="post" id="user_edit_form">
48
+ <?php echo $this->getBlockHtml('formkey')?>
49
+ </form>
50
+ <script type="text/javascript">
51
+ var userForm = new varienForm('user_edit_form');
52
+ </script>
app/design/adminhtml/default/default/template/api/usernroles.phtml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div id="roles">
28
+ <li class="add"><a href="<?php echo $this->getUrl('*/*/edituser') ?>"><?php echo $this->__('Add New User') ?></a></li>
29
+ <li class="add"><a href="<?php echo $this->getUrl('*/*/editroles') ?>"><?php echo $this->__('Add New Role') ?></a></li>
30
+ </div>
31
+ <div class="clear"></div>
app/design/adminhtml/default/default/template/api/userroles.phtml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__('User Roles') ?></h4>
30
+ </div>
31
+ <fieldset id="user_roles">
32
+ <?php foreach ($roles as $role): ?>
33
+ <?php
34
+ $checked = false;
35
+ foreach( $user_roles->getItems() as $user_role )
36
+ {
37
+ if( $user_role->getParentId() == $role->getRoleId() ) {
38
+ $checked = true;
39
+ }
40
+ }
41
+ ?>
42
+ <input type="checkbox" value="<?php echo $role->getRoleId(); ?>" <?php echo ($checked ? "checked" : ""); ?> name="roles[]" id="_<?php echo $role->getRoleId(); ?>" /> <label for="_<?php echo $role->getRoleId(); ?>" class="normal"><?php echo $role->getRoleName(); ?></label><br />
43
+ <?php endforeach; ?>
44
+ </fieldset>
45
+ </div>
app/design/adminhtml/default/default/template/api/users.phtml ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3><?php echo $this->__('Users') ?></h3></td>
31
+ <td class="a-right">
32
+ <button class="scalable add" onclick="window.location='<?php echo $this->getAddNewUrl() ?>'"><span><?php echo $this->__('Add New User') ?></span></button>
33
+ </td>
34
+ </tr>
35
+ </table>
36
+ </div>
37
+ <div>
38
+ <?php echo $this->getGridHtml() ?>
39
+ </div>
40
+
app/design/adminhtml/default/default/template/authorizenet/directpost/iframe.phtml ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+
27
+ /**
28
+ * @see Mage_Authorizenet_Block_Directpost_Iframe
29
+ */
30
+ ?>
31
+ <?php
32
+ $_params = $this->getParams();
33
+ $_helper = $this->helper('authorizenet');
34
+ ?>
35
+ <html>
36
+ <head>
37
+ <script type="text/javascript">
38
+ //<![CDATA[
39
+ <?php if (isset($_params['redirect'])): ?>
40
+ window.location="<?php echo $_params['redirect'] ?>";
41
+ <?php endif; ?>
42
+ <?php if (isset($_params['redirect_parent'])): ?>
43
+ window.top.location="<?php echo $_params['redirect_parent'] ?>";
44
+ <?php endif; ?>
45
+ <?php if (isset($_params['error_msg'])): ?>
46
+ window.top.directPostModel.showError("<?php echo $_params['error_msg'] ?>");
47
+ <?php if (isset($_params['x_invoice_num'])): ?>
48
+ window.top.directPostModel.successUrl="<?php echo $_helper->getSuccessOrderUrl($_params) ?>";
49
+ <?php endif; ?>
50
+ <?php endif; ?>
51
+ //]]>
52
+ </script>
53
+ </head>
54
+ <body></body>
55
+ </html>
app/design/adminhtml/default/default/template/authorizenet/directpost/info.phtml ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+
27
+ /**
28
+ * @see Mage_Authorizenet_Block_Directpost_Form
29
+ */
30
+ ?>
31
+ <?php
32
+ $_form = $this;
33
+ $_code = $_form->getMethodCode();
34
+ $_method = $_form->getMethod();
35
+ $_controller = $this->helper('authorizenet')->getControllerName();
36
+ $_orderUrl = $this->helper('authorizenet')->getPlaceOrderAdminUrl();
37
+ ?>
38
+ <!-- IFRAME for request to our server -->
39
+ <iframe id="order-directpost-iframe" allowtransparency="true" frameborder="0" name="iframeSubmitOrder" style="display:none;width:100%;background-color:transparent" src="<?php echo $this->getJsUrl() ?>blank.html"></iframe>
40
+ <!-- IFRAME for request to Authorize.net -->
41
+ <iframe id="directpost-iframe" allowtransparency="true" frameborder="0" name="iframeDirectPost" style="display:none;width:100%;background-color:transparent" src="<?php echo $this->getJsUrl() ?>blank.html"></iframe>
42
+ <ul id="payment_form_<?php echo $_code ?>" style="display:none;">
43
+ <li>
44
+ <div class="input-box">
45
+ <label for="<?php echo $_code ?>_cc_type"><?php echo Mage::helper('payment')->__('Credit Card Type') ?> <span class="required">*</span></label><br/>
46
+ <select id="<?php echo $_code ?>_cc_type" name="payment[cc_type]" class="required-entry validate-cc-type-select">
47
+ <?php $_ccType = $_form->getInfoData('cc_type') ?>
48
+ <option value=""></option>
49
+ <?php foreach ($_form->getCcAvailableTypes() as $_typeCode => $_typeName): ?>
50
+ <option value="<?php echo $_typeCode ?>" <?php if($_typeCode==$_ccType): ?>selected="selected"<?php endif ?>><?php echo $_typeName ?></option>
51
+ <?php endforeach ?>
52
+ </select>
53
+ </div>
54
+ </li>
55
+ <li>
56
+ <div class="input-box">
57
+ <label for="<?php echo $_code ?>_cc_number"><?php echo Mage::helper('payment')->__('Credit Card Number') ?> <span class="required">*</span></label><br/>
58
+ <input type="text" id="<?php echo $_code ?>_cc_number" name="payment[cc_number]" title="<?php echo Mage::helper('payment')->__('Credit Card Number') ?>" class="input-text validate-cc-number" value="<?php echo $this->getInfoData('cc_number')?>" />
59
+ </div>
60
+ </li>
61
+ <li>
62
+ <div class="input-box">
63
+ <label for="<?php echo $_code ?>_expiration"><?php echo Mage::helper('payment')->__('Expiration Date') ?> <span class="required">*</span></label><br/>
64
+ <select id="<?php echo $_code ?>_expiration" style="width:140px;" name="payment[cc_exp_month]" class="validate-cc-exp required-entry">
65
+ <?php $_ccExpMonth = $_form->getInfoData('cc_exp_month') ?>
66
+ <?php foreach ($_form->getCcMonths() as $k=>$v): ?>
67
+ <option value="<?php echo $k ?>" <?php if($k==$_ccExpMonth): ?>selected="selected"<?php endif ?>><?php echo $v ?></option>
68
+ <?php endforeach ?>
69
+ </select>
70
+ <?php $_ccExpYear = $_form->getInfoData('cc_exp_year') ?>
71
+ <select id="<?php echo $_code ?>_expiration_yr" style="width:103px;" name="payment[cc_exp_year]" class="required-entry">
72
+ <?php foreach ($_form->getCcYears() as $k=>$v): ?>
73
+ <option value="<?php echo $k ? $k : '' ?>" <?php if($k==$_ccExpYear): ?>selected="selected"<?php endif ?>><?php echo $v ?></option>
74
+ <?php endforeach ?>
75
+ </select>
76
+ </div>
77
+ </li>
78
+ <?php if($_form->hasVerification()): ?>
79
+ <li>
80
+ <div class="input-box">
81
+ <label for="<?php echo $_code ?>_cc_cid"><?php echo Mage::helper('payment')->__('Card Verification Number') ?> <span class="required">*</span></label><br/>
82
+ <input type="text" title="<?php echo Mage::helper('payment')->__('Card Verification Number') ?>" class="required-entry input-text validate-cc-cvn" id="<?php echo $_code ?>_cc_cid" name="payment[cc_cid]" style="width:3em;" value="<?php echo $this->getInfoData('cc_cid')?>" />
83
+ </div>
84
+ </li>
85
+ <?php endif; ?>
86
+ </ul>
87
+ <script type="text/javascript">
88
+ //<![CDATA[
89
+ /**
90
+ * Disable cart server validation in admin
91
+ */
92
+ AdminOrder.prototype.prepareParams = function(params) {
93
+ if (!params) {
94
+ params = {};
95
+ }
96
+ if (!params.customer_id) {
97
+ params.customer_id = this.customerId;
98
+ }
99
+ if (!params.store_id) {
100
+ params.store_id = this.storeId;
101
+ }
102
+ if (!params.currency_id) {
103
+ params.currency_id = this.currencyId;
104
+ }
105
+ if (!params.form_key) {
106
+ params.form_key = FORM_KEY;
107
+ }
108
+
109
+ if (this.paymentMethod != '<?php echo $_code ?>') {
110
+ var data = this.serializeData('order-billing_method');
111
+ if (data) {
112
+ data.each(function(value) {
113
+ params[value[0]] = value[1];
114
+ });
115
+ }
116
+ } else {
117
+ params['payment[method]'] = '<?php echo $_code ?>';
118
+ }
119
+ return params;
120
+ };
121
+ AdminOrder.prototype.getPaymentData = function(currentMethod) {
122
+ if (typeof (currentMethod) == 'undefined') {
123
+ if (this.paymentMethod) {
124
+ currentMethod = this.paymentMethod;
125
+ } else {
126
+ return false;
127
+ }
128
+ }
129
+ if (currentMethod == '<?php echo $_code ?>') {
130
+ return false;
131
+ }
132
+ var data = {};
133
+ var fields = $('payment_form_' + currentMethod).select('input', 'select');
134
+ for ( var i = 0; i < fields.length; i++) {
135
+ data[fields[i].name] = fields[i].getValue();
136
+ }
137
+ if ((typeof data['payment[cc_type]']) != 'undefined'
138
+ && (!data['payment[cc_type]'] || !data['payment[cc_number]'])) {
139
+ return false;
140
+ }
141
+ return data;
142
+ };
143
+ <?php if (!$this->isAjaxRequest()): ?>
144
+ document.observe('dom:loaded', function(){
145
+ <?php endif; ?>
146
+ directPostModel = new directPost(
147
+ '<?php echo $_code ?>',
148
+ 'directpost-iframe',
149
+ '<?php echo $_controller ?>',
150
+ '<?php echo $_orderUrl ?>',
151
+ '<?php echo $_method->getCgiUrl() ?>',
152
+ '<?php echo $this->getUrl('*/*/save', array('_secure' => $this->getRequest()->isSecure())) ?>');
153
+ <?php if (!$this->isAjaxRequest()): ?>
154
+ });
155
+ <?php endif; ?>
156
+ //]]>
157
+ </script>
app/design/adminhtml/default/default/template/backup/left.phtml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <h3><?php echo Mage::helper('backup')->__('Create Backup') ?></h3>
app/design/adminhtml/default/default/template/backup/list.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-backups-control"><?php echo Mage::helper('backup')->__('Backups') ?></h3></td>
31
+ <td class="form-buttons"><?php echo $this->getCreateButtonHtml(); ?></td>
32
+ </tr>
33
+ </table>
34
+ </div>
35
+ <?php echo $this->getGridHtml() ?>
app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/bundle.phtml ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php /* @var $this Mage_Bundle_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Bundle */ ?>
29
+ <?php $options = Mage::helper('core')->decorateArray($this->getOptions()); ?>
30
+ <?php if (count($options)): ?>
31
+ <div id="catalog_product_composite_configure_fields_bundle" class="<?php echo $this->getIsLastFieldset() ? 'last-fieldset' : '' ?>">
32
+ <h4><?php echo Mage::helper('catalog')->__('Bundle Items') ?></h4>
33
+ <div class="product-options">
34
+ <dl>
35
+ <?php foreach ($options as $option) : ?>
36
+ <?php if ($option->getSelections()) : ?>
37
+ <?php echo $this->getOptionHtml($option); ?>
38
+ <?php endif; ?>
39
+ <?php endforeach; ?>
40
+ </dl>
41
+ </div>
42
+ </div>
43
+
44
+ <script>
45
+ var BundleControl = Class.create();
46
+ BundleControl.prototype = {
47
+ initialize: function (config) {
48
+ this.config = config;
49
+ },
50
+
51
+ changeSelection: function (selection) {
52
+ if (selection.multiple) {
53
+ return;
54
+ }
55
+ var parts = selection.id.split('-'), optionId = parts[2],
56
+ showQtyInput = selection.value && selection.value != 'none',
57
+ options = this.config.options[optionId],
58
+ selectionOptions = options && options.selections && options.selections[selection.value] || {};
59
+
60
+ selectionOptions.can_change_qty = Number(selectionOptions.can_change_qty) && showQtyInput;
61
+ this.updateQtyInput(optionId, selectionOptions);
62
+ },
63
+
64
+ updateQtyInput: function(optionId, selectionOptions) {
65
+ var elem = $('bundle-option-' + optionId + '-qty-input'),
66
+ default_qty = Number(selectionOptions.default_qty);
67
+ if (!elem) {
68
+ return;
69
+ }
70
+ if (selectionOptions.can_change_qty) {
71
+ elem.removeClassName('qty-disabled');
72
+ elem.disabled = false;
73
+ if (elem.value == '0') {
74
+ elem.value = default_qty || 1;
75
+ }
76
+ } else {
77
+ elem.addClassName('qty-disabled');
78
+ elem.disabled = true;
79
+ elem.value = default_qty || 0;
80
+ }
81
+ },
82
+
83
+ updateForDefaults: function () {
84
+ for (var optionId in this.config.options) {
85
+ var selection = $('bundle-option-' + optionId);
86
+ if (selection) {
87
+ this.changeSelection(selection);
88
+ }
89
+ }
90
+ }
91
+ }
92
+ ProductConfigure.bundleControl = new BundleControl(<?php echo $this->getJsonConfig() ?>);
93
+ </script>
94
+
95
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/checkbox.phtml ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+
27
+ ?>
28
+ <?php /* @var $this Mage_Bundle_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Options_Type_Checkbox */ ?>
29
+ <?php $_option = $this->getOption(); ?>
30
+ <?php $_selections = $_option->getSelections(); ?>
31
+ <dt><label<?php if ($_option->getRequired()) echo ' class="required"' ?>><?php if ($_option->getRequired()) echo '<em>*</em>' ?><?php echo $this->htmlEscape($_option->getTitle()) ?></label></dt>
32
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
33
+ <div class="input-box">
34
+ <?php if (count($_selections) == 1 && $_option->getRequired()): ?>
35
+ <?php echo $this->getSelectionQtyTitlePrice($_selections[0]) ?>
36
+ <input type="hidden" name="bundle_option[<?php echo $_option->getId() ?>]" value="<?php echo $_selections[0]->getSelectionId() ?>" price="<?php echo $this->getSelectionPrice($_selections[0]) ?>"'/>
37
+ <?php else:?>
38
+ <ul class="options-list">
39
+ <?php foreach($_selections as $_selection): ?>
40
+ <li><input class="change-container-classname checkbox bundle-option-<?php echo $_option->getId() ?> <?php if ($_option->getRequired()) echo 'validate-one-required-by-name' ?>" id="bundle-option-<?php echo $_option->getId() ?>-<?php echo $_selection->getSelectionId() ?>" type="checkbox" name="bundle_option[<?php echo $_option->getId() ?>][]"<?php if ($this->_isSelected($_selection)) echo ' checked="checked"' ?><?php if (!$_selection->isSaleable()) echo ' disabled="disabled"' ?> value="<?php echo $_selection->getSelectionId() ?>" onclick="ProductConfigure.bundleControl.changeSelection(this)" price="<?php echo $this->getSelectionPrice($_selection) ?>"/>
41
+ <span class="label"><label for="bundle-option-<?php echo $_option->getId() ?>-<?php echo $_selection->getSelectionId() ?>"><?php echo $this->getSelectionQtyTitlePrice($_selection) ?></label></span>
42
+ <?php if($_option->getRequired()): ?>
43
+ <?php echo $this->setValidationContainer('bundle-option-'.$_option->getId().'-'.$_selection->getSelectionId(), 'bundle-option-'.$_option->getId().'-container') ?>
44
+ <?php endif; ?>
45
+ </li>
46
+ <?php endforeach; ?>
47
+ </ul>
48
+ <div id="bundle-option-<?php echo $_option->getId() ?>-container"></div>
49
+ <?php endif; ?>
50
+ </div>
51
+ </dd>
app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/multi.phtml ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+
27
+ ?>
28
+ <?php /* @var $this Mage_Bundle_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Options_Type_Multi */ ?>
29
+ <?php $_option = $this->getOption(); ?>
30
+ <?php $_selections = $_option->getSelections(); ?>
31
+ <dt><label<?php if ($_option->getRequired()) echo ' class="required"' ?>><?php if ($_option->getRequired()) echo '<em>*</em>' ?><?php echo $this->htmlEscape($_option->getTitle()) ?></label></dt>
32
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
33
+ <div class="input-box">
34
+ <?php if (count($_selections) == 1 && $_option->getRequired()): ?>
35
+ <?php echo $this->getSelectionQtyTitlePrice($_selections[0]) ?>
36
+ <input type="hidden" name="bundle_option[<?php echo $_option->getId() ?>]" value="<?php echo $_selections[0]->getSelectionId() ?>" price="<?php echo $this->getSelectionPrice($_selections[0]) ?>"/>
37
+ <?php else: ?>
38
+ <select multiple="multiple" size="5" id="bundle-option-<?php echo $_option->getId() ?>" name="bundle_option[<?php echo $_option->getId() ?>][]" class="bundle-option-<?php echo $_option->getId() ?><?php if ($_option->getRequired()) echo ' required-entry' ?> bundle-option-select multiselect change-container-classname" onchange="ProductConfigure.bundleControl.changeSelection(this)">
39
+ <?php if(!$_option->getRequired()): ?>
40
+ <option value=""><?php echo $this->__('None') ?></option>
41
+ <?php endif; ?>
42
+ <?php foreach ($_selections as $_selection): ?>
43
+ <option value="<?php echo $_selection->getSelectionId() ?>"<?php if ($this->_isSelected($_selection)) echo ' selected="selected"' ?><?php if (!$_selection->isSaleable()) echo ' disabled="disabled"' ?> price="<?php echo $this->getSelectionPrice($_selection) ?>"><?php echo $this->getSelectionQtyTitlePrice($_selection, false) ?></option>
44
+ <?php endforeach; ?>
45
+ </select>
46
+ <?php endif; ?>
47
+ </div>
48
+ </dd>
app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/radio.phtml ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+
27
+ ?>
28
+ <?php /* @var $this Mage_Bundle_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Options_Type_Radio */ ?>
29
+ <?php $_option = $this->getOption(); ?>
30
+ <?php $_selections = $_option->getSelections(); ?>
31
+ <?php $_default = $_option->getDefaultSelection(); ?>
32
+ <?php list($_defaultQty, $_canChangeQty) = $this->_getDefaultValues(); ?>
33
+
34
+ <dt>
35
+ <span class="qty-holder">
36
+ <label for="bundle-option-<?php echo $_option->getId() ?>-qty-input"><?php echo $this->__('Qty:') ?>&nbsp;</label><input <?php if (!$_canChangeQty) echo ' disabled="disabled"' ?> id="bundle-option-<?php echo $_option->getId() ?>-qty-input" class="input-text qty<?php if (!$_canChangeQty) echo ' qty-disabled' ?>" type="text" name="bundle_option_qty[<?php echo $_option->getId() ?>]" value="<?php echo $_defaultQty ?>"/>
37
+ </span>
38
+ <label<?php if ($_option->getRequired()) echo ' class="required"' ?>><?php if ($_option->getRequired()) echo '<em>*</em>' ?><?php echo $this->htmlEscape($_option->getTitle()) ?></label>
39
+ </dt>
40
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
41
+ <div class="input-box">
42
+ <?php if ($this->_showSingle()): ?>
43
+ <?php echo $this->getSelectionTitlePrice($_selections[0]) ?>
44
+ <input type="hidden" name="bundle_option[<?php echo $_option->getId() ?>]" value="<?php echo $_selections[0]->getSelectionId() ?>" price="<?php echo $this->getSelectionPrice($_selections[0]) ?>" />
45
+ <?php else:?>
46
+ <ul class="options-list">
47
+ <?php if (!$_option->getRequired()): ?>
48
+ <li><input type="radio" class="radio" id="bundle-option-<?php echo $_option->getId() ?>" name="bundle_option[<?php echo $_option->getId() ?>]"<?php echo ($_default && $_default->isSalable())?'':' checked="checked" ' ?> value="" onclick="ProductConfigure.bundleControl.changeSelection(this)"/>
49
+ <span class="label"><label for="bundle-option-<?php echo $_option->getId() ?>"><?php echo $this->__('None') ?></label></span>
50
+ </li>
51
+ <?php endif; ?>
52
+ <?php foreach ($_selections as $_selection): ?>
53
+ <li><input type="radio" class="radio<?php echo $_option->getRequired()?' validate-one-required-by-name':'' ?> change-container-classname" id="bundle-option-<?php echo $_option->getId() ?>-<?php echo $_selection->getSelectionId() ?>" name="bundle_option[<?php echo $_option->getId() ?>]"<?php if ($this->_isSelected($_selection)) echo ' checked="checked"' ?><?php if (!$_selection->isSaleable()) echo ' disabled="disabled"' ?>value="<?php echo $_selection->getSelectionId() ?>" onclick="ProductConfigure.bundleControl.changeSelection(this)" price="<?php echo $this->getSelectionPrice($_selection) ?>" qtyId="bundle-option-<?php echo $_option->getId() ?>-qty-input"/>
54
+ <span class="label"><label for="bundle-option-<?php echo $_option->getId() ?>-<?php echo $_selection->getSelectionId() ?>"><?php echo $this->getSelectionTitlePrice($_selection) ?></label></span>
55
+ <?php if ($_option->getRequired()): ?>
56
+ <?php echo $this->setValidationContainer('bundle-option-'.$_option->getId().'-'.$_selection->getSelectionId(), 'bundle-option-'.$_option->getId().'-container') ?>
57
+ <?php endif; ?>
58
+ </li>
59
+ <?php endforeach; ?>
60
+ </ul>
61
+ <div id="bundle-option-<?php echo $_option->getId() ?>-container"></div>
62
+ <?php endif; ?>
63
+ </div>
64
+ </dd>
app/design/adminhtml/default/default/template/bundle/product/composite/fieldset/options/type/select.phtml ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+
27
+ ?>
28
+ <?php /* @var $this Mage_Bundle_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Options_Type_Select */ ?>
29
+ <?php $_option = $this->getOption(); ?>
30
+ <?php $_selections = $_option->getSelections(); ?>
31
+ <?php $_default = $_option->getDefaultSelection(); ?>
32
+ <?php list($_defaultQty, $_canChangeQty) = $this->_getDefaultValues(); ?>
33
+
34
+ <dt>
35
+ <span class="qty-holder">
36
+ <label for="bundle-option-<?php echo $_option->getId() ?>-qty-input"><?php echo $this->__('Qty:') ?>&nbsp;</label><input <?php if (!$_canChangeQty) echo ' disabled="disabled"' ?> id="bundle-option-<?php echo $_option->getId() ?>-qty-input" class="input-text qty<?php if (!$_canChangeQty) echo ' qty-disabled' ?>" type="text" name="bundle_option_qty[<?php echo $_option->getId() ?>]" value="<?php echo $_defaultQty ?>"/>
37
+ </span>
38
+ <label<?php if ($_option->getRequired()) echo ' class="required"' ?>><?php if ($_option->getRequired()) echo '<em>*</em>' ?><?php echo $this->htmlEscape($_option->getTitle()) ?></label>
39
+ </dt>
40
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
41
+ <div class="input-box">
42
+ <?php if ($this->_showSingle()): ?>
43
+ <?php echo $this->getSelectionTitlePrice($_selections[0]) ?>
44
+ <input type="hidden" name="bundle_option[<?php echo $_option->getId() ?>]" value="<?php echo $_selections[0]->getSelectionId() ?>" price="<?php echo $this->getSelectionPrice($_selections[0]) ?>"/>
45
+ <?php else:?>
46
+ <select id="bundle-option-<?php echo $_option->getId() ?>" name="bundle_option[<?php echo $_option->getId() ?>]" class="bundle-option-<?php echo $_option->getId() ?><?php if ($_option->getRequired()) echo ' required-entry' ?> bundle-option-select change-container-classname" onchange="ProductConfigure.bundleControl.changeSelection(this)">
47
+ <option value=""><?php echo $this->__('Choose a selection...') ?></option>
48
+ <?php foreach ($_selections as $_selection): ?>
49
+ <option value="<?php echo $_selection->getSelectionId() ?>"<?php if ($this->_isSelected($_selection)) echo ' selected="selected"' ?><?php if (!$_selection->isSaleable()) echo ' disabled="disabled"' ?> price="<?php echo $this->getSelectionPrice($_selection) ?>" qtyId="bundle-option-<?php echo $_option->getId() ?>-qty-input"><?php echo $this->getSelectionTitlePrice($_selection, false) ?></option>
50
+ <?php endforeach; ?>
51
+ </select>
52
+ <?php endif; ?>
53
+ </div>
54
+ </dd>
app/design/adminhtml/default/default/template/bundle/product/edit/bundle.phtml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ if(typeof Bundle=='undefined') {
29
+ Bundle = {};
30
+ }
31
+ </script>
32
+
33
+ <div class="entry-edit">
34
+ <div class="entry-edit-head">
35
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('bundle')->__('Shipment') ?></h4>
36
+ </div>
37
+ <fieldset>
38
+ <table cellspacing="0" class="form-list">
39
+ <tr>
40
+ <td class="label"><label for="shipment_type"><?php echo Mage::helper('bundle')->__('Ship Bundle Items') ?></label></td>
41
+ <td class="value"><select <?php if ($this->isReadonly()): ?>disabled="disabled" <?php endif;?>id="shipment_type" name="<?php echo $this->getFieldSuffix() ?>[shipment_type]" class="select">
42
+ <option value="1"><?php echo Mage::helper('bundle')->__('Separately') ?></option>
43
+ <option value="0"<?php if ($this->getProduct()->getShipmentType() == 0): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('bundle')->__('Together') ?></option>
44
+ </select>
45
+ </td>
46
+ </tr>
47
+ </table>
48
+ </fieldset>
49
+ </div>
50
+
51
+ <div class="entry-edit custom-options bundle" id="product_bundle_container">
52
+ <div class="entry-edit-head">
53
+ <h4><?php echo $this->__('Bundle Items') ?></h4>
54
+ <div class="right"><?php echo $this->getAddButtonHtml() ?></div>
55
+ </div>
56
+
57
+ <div id="product_options_container" class="box">
58
+ <div id="product_bundle_container_top"></div>
59
+ <?php echo $this->getOptionsBoxHtml() ?>
60
+ </div>
61
+ </div>
62
+
63
+ <script type="text/javascript">
64
+ // re-bind form elements onchange
65
+ varienWindowOnload(true);
66
+ <?php if ($this->isReadonly()):?>
67
+ $('product_bundle_container').select('input', 'select', 'textarea', 'button').each(function(input){
68
+ input.disabled = true;
69
+ if (input.tagName.toLowerCase() == 'button') {
70
+ input.addClassName('disabled');
71
+ }
72
+ });
73
+ <?php endif; ?>
74
+ </script>
75
+
76
+ <div><input type="hidden" name="affect_bundle_product_selections" value="1" /></div>
app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option.phtml ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ optionTemplate = '<div id="<?php echo $this->getFieldId() ?>_{{index}}" class="option-box"> ' +
29
+ '<div class="option-title"> ' +
30
+ '<label for="<?php echo $this->getFieldName() ?>[{{index}}][title]"><?php echo Mage::helper('bundle')->__('Default Title') ?> <span class="required">*</span></label>' +
31
+ <?php if ($this->isDefaultStore()): ?>
32
+ '<input class="input-text required-entry" type="text" name="<?php echo $this->getFieldName() ?>[{{index}}][title]" id="id_<?php echo $this->getFieldName() ?>_{{index}}_title" value="{{title}}">' +
33
+ <?php else: ?>
34
+ '<input class="input-text required-entry" type="text" name="<?php echo $this->getFieldName() ?>[{{index}}][default_title]" id="id_<?php echo $this->getFieldName() ?>_{{index}}_default_title" value="{{default_title}}">' +
35
+ <?php endif; ?>
36
+ '<?php echo $this->jsQuoteEscape($this->getOptionDeleteButtonHtml()) ?>' +
37
+ '</div>' +
38
+ '<table class="option-header" cellpadding="0" cellspacing="0">' +
39
+ '<thead>' +
40
+ '<tr>' +
41
+ <?php if (!$this->isDefaultStore()): ?>
42
+ '<th class="opt-title"><?php echo Mage::helper('bundle')->__('Store View Title') ?> <span class="required">*</span></th>' +
43
+ <?php endif; ?>
44
+ '<th class="opt-type"><?php echo Mage::helper('bundle')->__('Input Type') ?></th>' +
45
+ '<th class="opt-req"><?php echo $this->jsQuoteEscape(Mage::helper('bundle')->__('Is Required')) ?></th>' +
46
+ '<th class="opt-order"><?php echo Mage::helper('bundle')->__('Position') ?></th>' +
47
+ '<th>&nbsp;</th>' +
48
+ '</tr>' +
49
+ '</thead>' +
50
+ '<tbody>' +
51
+ '<tr>' +
52
+ '<input type="hidden" id="<?php echo $this->getFieldId() ?>_id_{{index}}" name="<?php echo $this->getFieldName() ?>[{{index}}][option_id]" value="{{option_id}}">' +
53
+ '<input type="hidden" name="<?php echo $this->getFieldName() ?>[{{index}}][delete]" value="" class="delete">' +
54
+ <?php if (!$this->isDefaultStore()): ?>
55
+ '<td><input class="input-text required-entry" type="text" name="<?php echo $this->getFieldName() ?>[{{index}}][title]" id="id_<?php echo $this->getFieldName() ?>_{{index}}_title_store" value="{{title}}"></td>' +
56
+ <?php endif; ?>
57
+ '<td><?php echo $this->getTypeSelectHtml() ?></td>' +
58
+ '<td><?php echo $this->getRequireSelectHtml() ?></td>' +
59
+ '<td><input class="input-text validate-zero-or-greater" type="text" name="<?php echo $this->getFieldName() ?>[{{index}}][position]" value="{{position}}"></td>' +
60
+ '<td>&nbsp;<?php echo $this->jsQuoteEscape($this->getAddSelectionButtonHtml()) ?></td>' +
61
+ '</tr>' +
62
+ '</tbody>' +
63
+ '</table>' +
64
+ '<div id="<?php echo $this->getFieldId() ?>_search_{{index}}">' +
65
+ '</div>' +
66
+ '</div>';
67
+ </script>
68
+
69
+ <?php echo $this->getSelectionHtml() ?>
70
+
71
+ <script type="text/javascript">
72
+
73
+ function changeInputType(oldObject, oType) {
74
+ var newObject = document.createElement('input');
75
+ newObject.type = oType;
76
+ if(oldObject.size) newObject.size = oldObject.size;
77
+ if(oldObject.value) newObject.value = oldObject.value;
78
+ if(oldObject.name) newObject.name = oldObject.name;
79
+ if(oldObject.id) newObject.id = oldObject.id;
80
+ if(oldObject.onclick) newObject.onclick = oldObject.onclick;
81
+ if(oldObject.className) newObject.className = oldObject.className;
82
+ oldObject.parentNode.replaceChild(newObject,oldObject);
83
+ return newObject;
84
+ }
85
+
86
+ Bundle.Option = Class.create();
87
+ Bundle.Option.prototype = {
88
+ idLabel : '<?php echo $this->getFieldId() ?>',
89
+ top : '',
90
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
91
+ templateText : '',
92
+ itemsCount : 0,
93
+ initialize : function(template) {
94
+ this.templateText = template;
95
+ this.top = $('product_bundle_container_top');
96
+ },
97
+
98
+ add : function(data) {
99
+ if(!data){
100
+ data = {};
101
+ this.top = $('product_bundle_container_top');
102
+ } else {
103
+ data.title = data.title.replace('"', "&quot;");
104
+ }
105
+
106
+ data.index = this.itemsCount++;
107
+
108
+ this.template = new Template(this.templateText, this.templateSyntax);
109
+
110
+ Element.insert(this.top, {'after':this.template.evaluate(data)});
111
+
112
+ this.top = $(this.idLabel + '_' + data.index);
113
+
114
+ //set selected type
115
+ if (data.type) {
116
+ $A($(this.idLabel + '_'+data.index+'_type').options).each(function(option){
117
+ if (option.value==data.type) option.selected = true;
118
+ });
119
+ }
120
+
121
+ //set selected is_require
122
+ if (data.required) {
123
+ $A($(this.idLabel + '_'+data.index+'_required').options).each(function(option){
124
+ if (option.value==data.required) option.selected = true;
125
+ });
126
+ }
127
+ // rebind change notifications
128
+ varienWindowOnload(true);
129
+
130
+ return data.index;
131
+ },
132
+
133
+ remove : function(event){
134
+ var element = $(Event.findElement(event, 'div')).parentNode;
135
+ if(element){
136
+ Element.select(element, '.delete').each(function(elem){elem.value='1'});
137
+ Element.select(element, ['input', 'select']).each(function(elem){elem.hide(); elem.className = '';});
138
+ Element.hide(element);
139
+ }
140
+ },
141
+
142
+ changeType : function(event) {
143
+ var element = Event.element(event);
144
+ parts = element.id.split('_');
145
+ i = parts[2];
146
+ if (element.value == 'multi' || element.value == 'checkbox') {
147
+ inputs = $A($$('#' + bSelection.idLabel + '_box_' + i + ' tr.selection input.default'));
148
+ inputs.each(
149
+ function(elem){
150
+ //elem.type = "checkbox";
151
+ changeInputType(elem, 'checkbox');
152
+ }
153
+ );
154
+ /**
155
+ * Hide not needed elements (user defined qty select box)
156
+ */
157
+ inputs = $A($$('#' + bSelection.idLabel + '_box_' + i + ' .qty-box'));
158
+ inputs.each(
159
+ function(elem){
160
+ elem.hide();
161
+ }
162
+ );
163
+
164
+ } else {
165
+ inputs = $A($$('#' + bSelection.idLabel + '_box_' + i + ' tr.selection input.default'));
166
+ have = false;
167
+ for (j=0; j< inputs.length; j++) {
168
+ //inputs[j].type = "radio";
169
+ changeInputType(inputs[j], 'radio');
170
+ if (inputs[j].checked && have) {
171
+ inputs[j].checked = false;
172
+ } else {
173
+ have = true;
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Show user defined select box
179
+ */
180
+ inputs = $A($$('#' + bSelection.idLabel + '_box_' + i + ' .qty-box'));
181
+ inputs.each(
182
+ function(elem){
183
+ elem.show();
184
+ }
185
+ );
186
+ }
187
+ },
188
+
189
+ priceTypeFixed : function() {
190
+ inputs = $A($$('.price-type-box'));
191
+ inputs.each(
192
+ function(elem){
193
+ elem.show();
194
+ }
195
+ );
196
+ },
197
+
198
+ priceTypeDynamic : function() {
199
+ inputs = $A($$('.price-type-box'));
200
+ inputs.each(
201
+ function(elem){
202
+ elem.hide();
203
+ }
204
+ );
205
+ }
206
+ }
207
+
208
+ var optionIndex = 0;
209
+ bOption = new Bundle.Option(optionTemplate);
210
+ //adding data to templates
211
+ <?php foreach ($this->getOptions() as $_option): ?>
212
+ optionIndex = bOption.add(<?php echo $_option->toJson() ?>);
213
+ <?php if ($_option->getSelections()):?>
214
+ <?php foreach ($_option->getSelections() as $_selection): ?>
215
+ bSelection.addRow(optionIndex, <?php echo $_selection->toJson() ?>);
216
+ <?php endforeach; ?>
217
+ <?php endif; ?>
218
+ <?php endforeach; ?>
219
+ /**
220
+ * Adding event on price type select box of product to hide or show prices for selections
221
+ */
222
+ function togglePriceType() {
223
+ if ($('price_type').value == '1') {
224
+ bOption.priceTypeFixed();
225
+ } else {
226
+ bOption.priceTypeDynamic();
227
+ }
228
+ }
229
+
230
+ togglePriceType();
231
+
232
+ Event.observe('price_type', 'change', togglePriceType);
233
+
234
+ </script>
app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/search.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head">
29
+ <div style="float: right;"><?php echo $this->getButtonsHtml() ?></div>
30
+ <h4 class="fieldset-legend <?php echo ($this->getHeaderCssClass()) ? $this->getHeaderCssClass().' icon-head' : '' ?>"><?php echo $this->getHeaderText() ?></h4>
31
+ </div>
32
+ <fieldset>
33
+ <?php echo $this->getChildHtml() ?>
34
+ </fieldset>
35
+ </div>
app/design/adminhtml/default/default/template/bundle/product/edit/bundle/option/selection.phtml ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+
30
+ var bundleTemplateBox = '<table class="border" cellpadding="0" cellspacing="0">' +
31
+ ' <thead>' +
32
+ ' <tr class="headings">' +
33
+ ' <th><?php echo Mage::helper('catalog')->__('Name') ?></th>' +
34
+ <?php if ($this->getCanReadPrice() !== false) : ?>
35
+ ' <th class="type-price price-type-box"><?php echo Mage::helper('catalog')->__('Price') ?></th>' +
36
+ ' <th class="type-type price-type-box"><?php echo Mage::helper('bundle')->__('Price Type') ?></th>' +
37
+ <?php endif; ?>
38
+ ' <th class="type-price"><?php echo Mage::helper('bundle')->__('Default Qty') ?></th>' +
39
+ ' <th class="type-uqty qty-box"><?php echo$this->jsQuoteEscape(Mage::helper('bundle')->__('User Defined Qty')) ?></th>' +
40
+ ' <th class="type-order"><?php echo Mage::helper('bundle')->__('Position') ?></th>' +
41
+ ' <th style="width:1px"><?php echo Mage::helper('bundle')->__('Default') ?></th>' +
42
+ ' <th class="last">&nbsp;</th>' +
43
+ ' </tr>' +
44
+ ' </thead> ' +
45
+ ' <tbody>' +
46
+ ' </tbody>' +
47
+ '</table>';
48
+
49
+ var bundleTemplateRow ='<td>' +
50
+ ' <input type="hidden" id="<?php echo $this->getFieldId() ?>_id_{{index}}" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][selection_id]" value="{{selection_id}}">' +
51
+ ' <input type="hidden" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][option_id]" value="{{option_id}}">' +
52
+ ' <input type="hidden" class="product" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][product_id]" value="{{product_id}}">' +
53
+ ' <input type="hidden" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][delete]" value="" class="delete">' +
54
+ ' {{name}}<br />' +
55
+ ' <div class="nobr">' +
56
+ ' <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> {{sku}}' +
57
+ ' </div>' +
58
+ '</td>' +
59
+ <?php if ($this->getCanReadPrice() !== false) : ?>
60
+ '<td class="price-type-box"><input id="<?php echo $this->getFieldId() ?>_{{index}}_price_value" class="input-text required-entry validate-zero-or-greater" type="text" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][selection_price_value]" value="{{selection_price_value}}"<?php if($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?>></td>' +
61
+ '<td class="price-type-box"><?php echo $this->getPriceTypeSelectHtml() ?><div><?php echo $this->getCheckboxScopeHtml() ?></div></td>' +
62
+ <?php else : ?>
63
+ '<input type="hidden" id="<?php echo $this->getFieldId(); ?>_{{index}}_price_value" name="<?php echo $this->getFieldName(); ?>[{{parentIndex}}][{{index}}][selection_price_value]" value="0" />' +
64
+ '<input type="hidden" id="<?php echo $this->getFieldId(); ?>_{{index}}_price_type" name="<?php echo $this->getFieldName(); ?>[{{parentIndex}}][{{index}}][selection_price_type]" value="0" />' +
65
+ <?php if ($this->isUsedWebsitePrice()): ?>
66
+ '<input type="hidden" id="<?php echo $this->getFieldId(); ?>_{{index}}_price_scope" name="<?php echo $this->getFieldName(); ?>[{{parentIndex}}][{{index}}][default_price_scope]" value="1" />' +
67
+ <?php endif; ?>
68
+ <?php endif; ?>
69
+ '<td><input class="input-text required-entry validate-zero-or-greater" type="text" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][selection_qty]" value="{{selection_qty}}"></td>' +
70
+ '<td class="qty-box"><?php echo $this->getQtyTypeSelectHtml() ?></td>' +
71
+ '<td><input class="input-text required-entry validate-zero-or-greater" type="text" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][position]" value="{{position}}"></td>' +
72
+ '<td class="a-center"><input onclick="bSelection.checkGroup(event)" type="{{option_type}}" class="default" name="<?php echo $this->getFieldName() ?>[{{parentIndex}}][{{index}}][is_default]" value="1" {{checked}}></td>' +
73
+ '<td class="last"><span title="Delete Row"><?php echo $this->getSelectionDeleteButtonHtml() ?></span></td>';
74
+
75
+ Bundle.Selection = Class.create();
76
+ Bundle.Selection.prototype = {
77
+ idLabel : '<?php echo $this->getFieldId() ?>',
78
+ scopePrice : <?php echo (int)$this->isUsedWebsitePrice() ?>,
79
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
80
+ templateBox : '',
81
+ templateRow : '',
82
+ itemsCount : 0,
83
+ row : null,
84
+ gridSelection : new Hash(),
85
+
86
+ initialize : function() {
87
+ this.templateBox = '<div class="grid tier form-list" id="' + this.idLabel + '_box_{{parentIndex}}">' + bundleTemplateBox + '</div>';
88
+
89
+ this.templateRow = '<tr class="selection" id="' + this.idLabel + '_row_{{index}}">' + bundleTemplateRow + '</tr>';
90
+ },
91
+
92
+ showSearch : function(event) {
93
+ var element = Event.findElement(event, 'div');
94
+ var parts = element.id.split('_');
95
+
96
+ var products = new Array();
97
+
98
+ var inputs = $A($$('#' + element.id + ' tr.selection input.product'));
99
+ for (i=0; i<inputs.length; i++) {
100
+ products.push(inputs[i].value);
101
+ }
102
+
103
+ this.gridSelection.set(parts[2], $H({}));
104
+
105
+ new Ajax.Updater(bOption.idLabel + '_search_' + parts[2], '<?php echo $this->getSelectionSearchUrl() ?>', {
106
+ method: 'post',
107
+ parameters : {'index' : parts[2], 'products[]' : products, 'form_key': FORM_KEY},
108
+ evalScripts : true
109
+ });
110
+
111
+ if (Event.element(event).tagName.toLowerCase() != 'button') {
112
+ var button = Event.element(event).up('button');
113
+ } else {
114
+ var button = Event.element(event);
115
+ }
116
+ button.hide();
117
+ },
118
+
119
+ addRow : function (parentIndex, data) {
120
+ var box = null;
121
+ if (!(box = $(this.idLabel + '_box_' + parentIndex))) {
122
+ this.addBox(parentIndex);
123
+ box = $(this.idLabel + '_box_' + parentIndex);
124
+ } else {
125
+ box.show();
126
+ }
127
+
128
+ var option_type = $(bOption.idLabel + '_' + parentIndex + '_type');
129
+
130
+ if(!data){
131
+ var data = {};
132
+ }
133
+
134
+ if (data.can_read_price != undefined && !data.can_read_price) {
135
+ data.selection_price_value = '';
136
+ } else {
137
+ data.selection_price_value = Number(data.selection_price_value).toFixed(2);
138
+ }
139
+
140
+ data.index = this.itemsCount++;
141
+ data.parentIndex = parentIndex;
142
+
143
+ if (option_type.value == 'multi' || option_type.value == 'checkbox') {
144
+ data.option_type = 'checkbox';
145
+ } else {
146
+ data.option_type = 'radio';
147
+ }
148
+
149
+ if (data.is_default == 1) {
150
+ data.checked = 'checked="checked"';
151
+ }
152
+
153
+ this.template = new Template(this.templateRow, this.templateSyntax);
154
+ var tbody = $$('#' + this.idLabel + '_box_' + parentIndex + ' tbody');
155
+
156
+ Element.insert(tbody[0], {'bottom':this.template.evaluate(data)});
157
+
158
+ if (data.selection_price_type) {
159
+ $A($(this.idLabel + '_'+data.index+'_price_type').options).each(function(option){
160
+ if (option.value==data.selection_price_type) option.selected = true;
161
+ });
162
+ }
163
+
164
+ if (data.selection_price_type) {
165
+ $A($(this.idLabel + '_'+data.index+'_can_change_qty').options).each(function(option){
166
+ if (option.value==data.selection_can_change_qty) option.selected = true;
167
+ });
168
+ }
169
+
170
+ var checkbox = $(this.idLabel + '_'+data.index+'_price_scope');
171
+ if (checkbox && this.scopePrice) {
172
+ if (data.price_scope === undefined) {
173
+ checkbox.up().hide();
174
+ } else if(!data.price_scope) {
175
+ checkbox.checked = true;
176
+ this.addScope(null, checkbox);
177
+ }
178
+ }
179
+
180
+ this.bindScopeCheckbox();
181
+
182
+ if (option_type.value == 'multi' || option_type.value == 'checkbox') {
183
+ /**
184
+ * Hide not needed elements (user defined qty select box)
185
+ */
186
+ inputs = $A($$('#' + this.idLabel + '_box_' + data.parentIndex + ' .qty-box'));
187
+ inputs.each(
188
+ function(elem){
189
+ elem.hide();
190
+ }
191
+ );
192
+ }
193
+
194
+ if (!$('price_type') || $('price_type').value != '1') {
195
+ /**
196
+ * Hide not needed elements (price type select and price input)
197
+ */
198
+ inputs = $A($$('#' + this.idLabel + '_box_' + data.parentIndex + ' .price-type-box'));
199
+ inputs.each(
200
+ function(elem){
201
+ elem.hide();
202
+ }
203
+ );
204
+ }
205
+ },
206
+
207
+ bindScopeCheckbox : function(){
208
+ var checkboxes = $$('.bundle-option-price-scope-checkbox');
209
+ for (var i=0;i<checkboxes.length;i++) {
210
+ if (!$(checkboxes[i]).binded) {
211
+ $(checkboxes[i]).binded = true;
212
+ Event.observe(checkboxes[i], 'click', this.addScope.bind(this));
213
+ }
214
+ }
215
+ },
216
+
217
+ addScope : function(event, element){
218
+ if (element == undefined) {
219
+ element = $(Event.element(event));
220
+ }
221
+ var priceValue = $(element.id.sub('scope', 'value'));
222
+ var priceType = $(element.id.sub('scope', 'type'));
223
+
224
+ if (element.checked) {
225
+ priceValue.disable();
226
+ priceType.disable();
227
+ } else {
228
+ priceValue.enable();
229
+ priceType.enable();
230
+ }
231
+ },
232
+
233
+ addBox : function (parentIndex) {
234
+ var div = $(bOption.idLabel + '_' + parentIndex)
235
+ this.template = new Template(this.templateBox, this.templateSyntax);
236
+ var data = {'parentIndex' : parentIndex};
237
+ Element.insert(div, {'bottom':this.template.evaluate(data)});
238
+ },
239
+
240
+ remove : function(event) {
241
+ var element = Event.findElement(event, 'tr');
242
+ var container = Event.findElement(event, 'div');
243
+
244
+ if (element) {
245
+ Element.select(element, '.delete').each(function(elem){elem.value='1'});
246
+ Element.select(element, ['input', 'select']).each(function(elem){elem.hide()});
247
+ Element.removeClassName(element, 'selection');
248
+ Element.hide(element);
249
+
250
+ if (container) {
251
+ if ($$('#' + container.id + ' tr.selection')) {
252
+ if (!$$('#' + container.id + ' tr.selection').length) {
253
+ container.hide();
254
+ }
255
+ }
256
+ }
257
+ }
258
+ },
259
+
260
+ checkGroup : function(event) {
261
+ var element = Event.element(event);
262
+ if (element.type == 'radio') {
263
+ var box = element.up('div');
264
+
265
+ var inputs = $$('div#' + box.id + ' input.default');
266
+ if (inputs) {
267
+ for (i=0; i< inputs.length; i++) {
268
+ if (inputs[i].name != element.name) {
269
+ inputs[i].checked = false;
270
+ }
271
+ }
272
+ }
273
+ }
274
+ },
275
+
276
+ productGridAddSelected : function(event) {
277
+ var element = Event.findElement(event, 'button');
278
+ var parts = element.id.split('_');
279
+
280
+ $(bOption.idLabel + '_search_' + parts[2]).innerHTML = '';
281
+ $(bOption.idLabel + '_' + parts[2] + '_add_button').show();
282
+
283
+ this.gridSelection.get(parts[2]).each(
284
+ function(pair) {
285
+ var qty = pair.value.get('qty');
286
+ var data = {
287
+ 'name' : pair.value.get('name'),
288
+ 'selection_price_value' : 0,
289
+ 'selection_qty' : (qty == '' ? 1 : qty),
290
+ 'sku' : pair.value.get('sku'),
291
+ 'position' : 0,
292
+ 'product_id' : pair.key,
293
+ 'option_id' : $(bOption.idLabel + '_id_' + parts[2]).value
294
+ };
295
+ bSelection.addRow(parts[2], data);
296
+ }
297
+ );
298
+ },
299
+
300
+ productGridRowInit : function(grid, row){
301
+ var checkbox = $(row).getElementsByClassName('checkbox')[0];
302
+ var inputs = $(row).getElementsByClassName('input-text');
303
+ for (var i = 0; i < inputs.length; i++) {
304
+ inputs[i].checkbox = checkbox;
305
+ Event.observe(inputs[i], 'keyup', this.productGridRowInputChange.bind(this));
306
+ Event.observe(inputs[i], 'change', this.productGridRowInputChange.bind(this));
307
+ }
308
+ },
309
+
310
+ productGridCheckboxCheck : function(grid, element, checked) {
311
+ var id = element.up('table').id.split('_')[4];
312
+ if (element.value > 0) {
313
+ if (element.checked) {
314
+ var tr = element.parentNode.parentNode;
315
+ if (!this.gridSelection.get(id)) {
316
+ this.gridSelection.set(id, new Hash());
317
+ }
318
+ this.gridSelection.get(id).set(element.value, $H({}));
319
+ this.gridSelection.get(id).get(element.value).set('name', tr.select('td.name')[0].innerHTML);
320
+ this.gridSelection.get(id).get(element.value).set('qty', tr.select('input.qty')[0].value);
321
+ this.gridSelection.get(id).get(element.value).set('sku', tr.select('td.sku')[0].innerHTML);
322
+ } else {
323
+ this.gridSelection.get(id).unset(element.value);
324
+ }
325
+ }
326
+ },
327
+
328
+ productGridRowClick : function(grid, event) {
329
+ var trElement = Event.findElement(event, 'tr');
330
+ var isInput = Event.element(event).tagName == 'INPUT';
331
+ if (trElement) {
332
+ var checkbox = Element.select(trElement, 'input');
333
+ if (checkbox[0]) {
334
+ var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;
335
+ grid.setCheckboxChecked(checkbox[0], checked);
336
+ }
337
+ }
338
+ },
339
+
340
+ productGridRowInputChange : function(event) {
341
+ var element = Event.element(event);
342
+ if (!element.checkbox.checked) {
343
+ return;
344
+ }
345
+ var id = element.up('table').id.split('_')[4];
346
+ this.gridSelection.get(id).get(element.checkbox.value).set('qty', element.value);
347
+ }
348
+ }
349
+
350
+ bSelection = new Bundle.Selection();
351
+ //]]>
352
+ </script>
app/design/adminhtml/default/default/template/bundle/sales/creditmemo/create/items/renderer.phtml ADDED
@@ -0,0 +1,411 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = $this->getChilds($_item); ?>
35
+ <?php $_count = count ($items) ?>
36
+ <?php $_index = 0 ?>
37
+
38
+ <?php $_prevOptionId = '' ?>
39
+
40
+ <?php if($this->getOrderOptions() || $_item->getDescription()): ?>
41
+ <?php $_showlastRow = true ?>
42
+ <?php else: ?>
43
+ <?php $_showlastRow = false ?>
44
+ <?php endif; ?>
45
+
46
+ <?php foreach ($items as $_item): ?>
47
+ <?php $this->setPriceDataObject($_item) ?>
48
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
49
+ <?php if ($_item->getOrderItem()->getParentItem()): ?>
50
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
51
+ <tr>
52
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
53
+ <td>&nbsp;</td>
54
+ <td>&nbsp;</td>
55
+ <td>&nbsp;</td>
56
+ <td>&nbsp;</td>
57
+ <td>&nbsp;</td>
58
+ <td>&nbsp;</td>
59
+ <td>&nbsp;</td>
60
+ <td class="last">&nbsp;</td>
61
+ </tr>
62
+ <?php $_prevOptionId = $attributes['option_id'] ?>
63
+ <?php endif; ?>
64
+ <?php endif; ?>
65
+ <tr<?php echo (++$_index==$_count && !$_showlastRow)?' class="border"':'' ?>>
66
+ <?php if (!$_item->getOrderItem()->getParentItem()): ?>
67
+ <td><h5 class="title"><?php echo $this->htmlEscape($_item->getName()) ?></h5>
68
+ <div>
69
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
70
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
71
+ </div>
72
+ </td>
73
+ <?php else: ?>
74
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
75
+ <?php endif; ?>
76
+ <td class="a-right">
77
+ <?php if ($this->canShowPriceInfo($_item)): ?>
78
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
79
+ <span class="price-excl-tax">
80
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
81
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
82
+ <?php endif; ?>
83
+
84
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
85
+ <?php
86
+ echo $this->displayPrices(
87
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
88
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
89
+ );
90
+ ?>
91
+ <?php else: ?>
92
+ <?php echo $this->displayPrices($_item->getBasePrice(), $_item->getPrice()) ?>
93
+ <?php endif; ?>
94
+
95
+
96
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
97
+ <br />
98
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
99
+ <small>
100
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
101
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
102
+ <?php endforeach; ?>
103
+ </small>
104
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
105
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
106
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
107
+ <?php endforeach; ?>
108
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
109
+ <small>
110
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
111
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
112
+ <?php endforeach; ?>
113
+ </small>
114
+ <?php endif; ?>
115
+
116
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
117
+ <br />
118
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
119
+ <?php
120
+ echo $this->displayPrices(
121
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
122
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
123
+ );
124
+ ?>
125
+ </span>
126
+ <?php endif; ?>
127
+ <?php endif; ?>
128
+ </span>
129
+ <br />
130
+ <?php endif; ?>
131
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
132
+ <span class="price-incl-tax">
133
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
134
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
135
+ <?php endif; ?>
136
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
137
+ <?php $_baseIncl = $this->helper('checkout')->getBasePriceInclTax($_item); ?>
138
+
139
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
140
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?>
141
+ <?php else: ?>
142
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxDisposition(), $_incl-$_item->getWeeeTaxDisposition()) ?>
143
+ <?php endif; ?>
144
+
145
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
146
+ <br />
147
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
148
+ <small>
149
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
150
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
151
+ <?php endforeach; ?>
152
+ </small>
153
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
154
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
155
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
156
+ <?php endforeach; ?>
157
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
158
+ <small>
159
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
160
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
161
+ <?php endforeach; ?>
162
+ </small>
163
+ <?php endif; ?>
164
+
165
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
166
+ <br />
167
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
168
+ <?php endif; ?>
169
+ <?php endif; ?>
170
+ </span>
171
+ <?php endif; ?>
172
+ <?php else: ?>
173
+ &nbsp;
174
+ <?php endif; ?>
175
+ </td>
176
+ <td>
177
+ <?php if ($this->canShowPriceInfo($_item)): ?>
178
+ <table cellspacing="0" class="qty-table">
179
+ <tr>
180
+ <td><?php echo Mage::helper('sales')->__('Ordered') ?></td>
181
+ <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td>
182
+ </tr>
183
+ <?php if ((float) $_item->getOrderItem()->getQtyInvoiced()): ?>
184
+ <tr>
185
+ <td><?php echo Mage::helper('sales')->__('Invoiced') ?></td>
186
+ <td><strong><?php echo $_item->getOrderItem()->getQtyInvoiced()*1 ?></strong></td>
187
+ </tr>
188
+ <?php endif; ?>
189
+ <?php if ((float) $_item->getOrderItem()->getQtyShipped() && $this->isShipmentSeparately($_item)): ?>
190
+ <tr>
191
+ <td><?php echo Mage::helper('sales')->__('Shipped') ?></td>
192
+ <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td>
193
+ </tr>
194
+ <?php endif; ?>
195
+ <?php if ((float) $_item->getOrderItem()->getQtyRefunded()): ?>
196
+ <tr>
197
+ <td><?php echo Mage::helper('sales')->__('Refunded') ?></td>
198
+ <td><strong><?php echo $_item->getOrderItem()->getQtyRefunded()*1 ?></strong></td>
199
+ </tr>
200
+ <?php endif; ?>
201
+ <?php if ((float) $_item->getOrderItem()->getQtyCanceled()): ?>
202
+ <tr>
203
+ <td><?php echo Mage::helper('sales')->__('Canceled') ?></td>
204
+ <td><strong><?php echo $_item->getOrderItem()->getQtyCanceled()*1 ?></strong></td>
205
+ </tr>
206
+ <?php endif; ?>
207
+ </table>
208
+ <?php elseif ($this->isShipmentSeparately($_item)): ?>
209
+ <table cellspacing="0" class="qty-table">
210
+ <tr>
211
+ <td><?php echo Mage::helper('sales')->__('Ordered') ?></td>
212
+ <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td>
213
+ </tr>
214
+ <?php if ((float) $_item->getOrderItem()->getQtyShipped()): ?>
215
+ <tr>
216
+ <td><?php echo Mage::helper('sales')->__('Shipped') ?></td>
217
+ <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td>
218
+ </tr>
219
+ <?php endif; ?>
220
+ </table>
221
+ <?php else: ?>
222
+ &nbsp;
223
+ <?php endif; ?>
224
+ </td>
225
+ <?php if ($this->canParentReturnToStock($_item)) : ?>
226
+ <td class="a-center">
227
+ <?php if ($this->canShowPriceInfo($_item)): ?>
228
+ <?php if ($this->canReturnItemToStock($_item)) : ?>
229
+ <input type="checkbox" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][back_to_stock]" value="1"<?php if ($_item->getBackToStock()):?> checked="checked"<?php endif;?> />
230
+ <?php endif; ?>
231
+ <?php else: ?>
232
+ &nbsp;
233
+ <?php endif; ?>
234
+ </td>
235
+ <?php endif; ?>
236
+ <td class="a-center">
237
+ <?php if ($this->canShowPriceInfo($_item)): ?>
238
+ <?php if ($this->canEditQty()) : ?>
239
+ <input type="text" class="input-text qty-input" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][qty]" value="<?php echo $_item->getQty()*1 ?>" />
240
+ <?php else: ?>
241
+ <?php echo $_item->getQty()*1 ?>
242
+ <?php endif; ?>
243
+ <?php else: ?>
244
+ &nbsp;
245
+ <?php endif; ?>
246
+ </td>
247
+ <td class="a-right">
248
+ <?php if ($this->canShowPriceInfo($_item)): ?>
249
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
250
+ <span class="price-excl-tax">
251
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
252
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
253
+ <?php endif; ?>
254
+
255
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
256
+ <?php
257
+ echo $this->displayPrices(
258
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
259
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
260
+ );
261
+ ?>
262
+ <?php else: ?>
263
+ <?php echo $this->displayPrices($_item->getBaseRowTotal(), $_item->getRowTotal()) ?>
264
+ <?php endif; ?>
265
+
266
+
267
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
268
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
269
+ <small>
270
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
271
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
272
+ <?php endforeach; ?>
273
+ </small>
274
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
275
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
276
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
277
+ <?php endforeach; ?>
278
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
279
+ <small>
280
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
281
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
282
+ <?php endforeach; ?>
283
+ </small>
284
+ <?php endif; ?>
285
+
286
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
287
+ <br />
288
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
289
+ <?php
290
+ echo $this->displayPrices(
291
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
292
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
293
+ );
294
+ ?>
295
+ </span>
296
+ <?php endif; ?>
297
+ <?php endif; ?>
298
+ </span>
299
+ <br />
300
+ <?php endif; ?>
301
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
302
+ <span class="price-incl-tax">
303
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
304
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
305
+ <?php endif; ?>
306
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
307
+ <?php $_baseIncl = $this->helper('checkout')->getBaseSubtotalInclTax($_item); ?>
308
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
309
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
310
+ <?php else: ?>
311
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxRowDisposition(), $_incl-$_item->getWeeeTaxRowDisposition()) ?>
312
+ <?php endif; ?>
313
+
314
+
315
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
316
+
317
+ <br />
318
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
319
+ <small>
320
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
321
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
322
+ <?php endforeach; ?>
323
+ </small>
324
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
325
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
326
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
327
+ <?php endforeach; ?>
328
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
329
+ <small>
330
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
331
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
332
+ <?php endforeach; ?>
333
+ </small>
334
+ <?php endif; ?>
335
+
336
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
337
+ <br /><span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
338
+ <?php endif; ?>
339
+ <?php endif; ?>
340
+ </span>
341
+ <?php endif; ?>
342
+ </span>
343
+ <?php else: ?>
344
+ &nbsp;
345
+ <?php endif; ?>
346
+ </td>
347
+ <td class="a-right">
348
+ <?php if ($this->canShowPriceInfo($_item)): ?>
349
+ <?php echo $this->displayPriceAttribute('tax_amount') ?>
350
+ <?php else: ?>
351
+ &nbsp;
352
+ <?php endif; ?>
353
+ </td>
354
+ <td class="a-right">
355
+ <?php if ($this->canShowPriceInfo($_item)): ?>
356
+ <?php echo $this->displayPriceAttribute('discount_amount') ?>
357
+ <?php else: ?>
358
+ &nbsp;
359
+ <?php endif; ?>
360
+ </td>
361
+ <td class="a-right last">
362
+ <?php if ($this->canShowPriceInfo($_item)): ?>
363
+ <?php echo $this->displayPrices(
364
+ $_item->getBaseRowTotal()+$_item->getBaseTaxAmount()-$_item->getBaseDiscountAmount()+$_item->getBaseWeeeTaxAppliedRowAmount(),
365
+ $_item->getRowTotal()+$_item->getTaxAmount()-$_item->getDiscountAmount()+$_item->getWeeeTaxAppliedRowAmount()
366
+ ) ?>
367
+ <?php else: ?>
368
+ &nbsp;
369
+ <?php endif; ?>
370
+ </td>
371
+ </tr>
372
+ <?php endforeach; ?>
373
+ <?php if($_showlastRow): ?>
374
+ <tr class="border">
375
+ <td>
376
+ <?php if ($this->getOrderOptions($_item->getOrderItem())): ?>
377
+ <dl class="item-options">
378
+ <?php foreach ($this->getOrderOptions($_item->getOrderItem()) as $option): ?>
379
+ <dt><?php echo $option['label'] ?></dt>
380
+ <dd>
381
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
382
+ <?php echo $option['value'];?>
383
+ <?php else: ?>
384
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
385
+ <?php if ($_remainder):?>
386
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
387
+ <script type="text/javascript">
388
+ $('<?php echo $_id ?>').hide();
389
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
390
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
391
+ </script>
392
+ <?php endif;?>
393
+ <?php endif;?>
394
+ </dd>
395
+ <?php endforeach; ?>
396
+ </dl>
397
+ <?php else: ?>
398
+ &nbsp;
399
+ <?php endif; ?>
400
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
401
+ </td>
402
+ <td>&nbsp;</td>
403
+ <td>&nbsp;</td>
404
+ <td>&nbsp;</td>
405
+ <td>&nbsp;</td>
406
+ <td>&nbsp;</td>
407
+ <td>&nbsp;</td>
408
+ <td>&nbsp;</td>
409
+ <td class="last">&nbsp;</td>
410
+ </tr>
411
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/sales/creditmemo/view/items/renderer.phtml ADDED
@@ -0,0 +1,341 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = $this->getChilds($_item); ?>
35
+ <?php $_count = count ($items) ?>
36
+ <?php $_index = 0 ?>
37
+
38
+ <?php $_prevOptionId = '' ?>
39
+
40
+ <?php if($this->getOrderOptions() || $_item->getDescription()): ?>
41
+ <?php $_showlastRow = true ?>
42
+ <?php else: ?>
43
+ <?php $_showlastRow = false ?>
44
+ <?php endif; ?>
45
+
46
+ <?php foreach ($items as $_item): ?>
47
+ <?php $this->setPriceDataObject($_item) ?>
48
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
49
+ <?php if ($_item->getOrderItem()->getParentItem()): ?>
50
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
51
+ <tr>
52
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
53
+ <td>&nbsp;</td>
54
+ <td>&nbsp;</td>
55
+ <td>&nbsp;</td>
56
+ <td>&nbsp;</td>
57
+ <td>&nbsp;</td>
58
+ <td class="last">&nbsp;</td>
59
+ </tr>
60
+ <?php $_prevOptionId = $attributes['option_id'] ?>
61
+ <?php endif; ?>
62
+ <?php endif; ?>
63
+ <tr<?php echo (++$_index==$_count && !$_showlastRow)?' class="border"':'' ?>>
64
+ <?php if (!$_item->getOrderItem()->getParentItem()): ?>
65
+ <td><h5 class="title"><?php echo $this->htmlEscape($_item->getName()) ?></h5>
66
+ <div>
67
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
68
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
69
+ </div>
70
+ </td>
71
+ <?php else: ?>
72
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
73
+ <?php endif; ?>
74
+ <td class="a-right">
75
+ <?php if ($this->canShowPriceInfo($_item)): ?>
76
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
77
+ <span class="price-excl-tax">
78
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
79
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
80
+ <?php endif; ?>
81
+
82
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
83
+ <?php
84
+ echo $this->displayPrices(
85
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
86
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
87
+ );
88
+ ?>
89
+ <?php else: ?>
90
+ <?php echo $this->displayPrices($_item->getBasePrice(), $_item->getPrice()) ?>
91
+ <?php endif; ?>
92
+
93
+
94
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
95
+ <br />
96
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
97
+ <small>
98
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
99
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
100
+ <?php endforeach; ?>
101
+ </small>
102
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
103
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
104
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
105
+ <?php endforeach; ?>
106
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
107
+ <small>
108
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
109
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
110
+ <?php endforeach; ?>
111
+ </small>
112
+ <?php endif; ?>
113
+
114
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
115
+ <br />
116
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
117
+ <?php
118
+ echo $this->displayPrices(
119
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
120
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
121
+ );
122
+ ?>
123
+ </span>
124
+ <?php endif; ?>
125
+ <?php endif; ?>
126
+ </span>
127
+ <br />
128
+ <?php endif; ?>
129
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
130
+ <span class="price-incl-tax">
131
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
132
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
133
+ <?php endif; ?>
134
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
135
+ <?php $_baseIncl = $this->helper('checkout')->getBasePriceInclTax($_item); ?>
136
+
137
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
138
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?>
139
+ <?php else: ?>
140
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxDisposition(), $_incl-$_item->getWeeeTaxDisposition()) ?>
141
+ <?php endif; ?>
142
+
143
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
144
+ <br />
145
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
146
+ <small>
147
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
148
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
149
+ <?php endforeach; ?>
150
+ </small>
151
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
152
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
153
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
154
+ <?php endforeach; ?>
155
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
156
+ <small>
157
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
158
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
159
+ <?php endforeach; ?>
160
+ </small>
161
+ <?php endif; ?>
162
+
163
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
164
+ <br />
165
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
166
+ <?php endif; ?>
167
+ <?php endif; ?>
168
+ </span>
169
+ <?php endif; ?>
170
+ <?php else: ?>
171
+ &nbsp;
172
+ <?php endif; ?>
173
+ </td>
174
+ <td class="a-center">
175
+ <?php if ($this->canShowPriceInfo($_item)): ?>
176
+ <?php echo $_item->getQty()*1 ?>
177
+ <?php else: ?>
178
+ &nbsp;
179
+ <?php endif; ?>
180
+ </td>
181
+ <td class="a-right">
182
+ <?php if ($this->canShowPriceInfo($_item)): ?>
183
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
184
+ <span class="price-excl-tax">
185
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
186
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
187
+ <?php endif; ?>
188
+
189
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
190
+ <?php
191
+ echo $this->displayPrices(
192
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
193
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
194
+ );
195
+ ?>
196
+ <?php else: ?>
197
+ <?php echo $this->displayPrices($_item->getBaseRowTotal(), $_item->getRowTotal()) ?>
198
+ <?php endif; ?>
199
+
200
+
201
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
202
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
203
+ <small>
204
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
205
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
206
+ <?php endforeach; ?>
207
+ </small>
208
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
209
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
210
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
211
+ <?php endforeach; ?>
212
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
213
+ <small>
214
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
215
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
216
+ <?php endforeach; ?>
217
+ </small>
218
+ <?php endif; ?>
219
+
220
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
221
+ <br />
222
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
223
+ <?php
224
+ echo $this->displayPrices(
225
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
226
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
227
+ );
228
+ ?>
229
+ </span>
230
+ <?php endif; ?>
231
+ <?php endif; ?>
232
+ </span>
233
+ <br />
234
+ <?php endif; ?>
235
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
236
+ <span class="price-incl-tax">
237
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
238
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
239
+ <?php endif; ?>
240
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
241
+ <?php $_baseIncl = $this->helper('checkout')->getBaseSubtotalInclTax($_item); ?>
242
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
243
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
244
+ <?php else: ?>
245
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxRowDisposition(), $_incl-$_item->getWeeeTaxRowDisposition()) ?>
246
+ <?php endif; ?>
247
+
248
+
249
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
250
+
251
+ <br />
252
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
253
+ <small>
254
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
255
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
256
+ <?php endforeach; ?>
257
+ </small>
258
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
259
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
260
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
261
+ <?php endforeach; ?>
262
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
263
+ <small>
264
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
265
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
266
+ <?php endforeach; ?>
267
+ </small>
268
+ <?php endif; ?>
269
+
270
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
271
+ <br /><span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
272
+ <?php endif; ?>
273
+ <?php endif; ?>
274
+ </span>
275
+ <?php endif; ?>
276
+ </span>
277
+ <?php else: ?>
278
+ &nbsp;
279
+ <?php endif; ?>
280
+ </td>
281
+ <td class="a-right">
282
+ <?php if ($this->canShowPriceInfo($_item)): ?>
283
+ <?php echo $this->displayPriceAttribute('tax_amount') ?>
284
+ <?php else: ?>
285
+ &nbsp;
286
+ <?php endif; ?>
287
+ </td>
288
+ <td class="a-right">
289
+ <?php if ($this->canShowPriceInfo($_item)): ?>
290
+ <?php echo $this->displayPriceAttribute('discount_amount') ?>
291
+ <?php else: ?>
292
+ &nbsp;
293
+ <?php endif; ?>
294
+ </td>
295
+ <td class="a-right last">
296
+ <?php if ($this->canShowPriceInfo($_item)): ?>
297
+ <?php echo $this->displayPrices(
298
+ $_item->getBaseRowTotal()-$_item->getBaseDiscountAmount()+$_item->getBaseTaxAmount()+$_item->getBaseWeeeTaxAppliedRowAmount(),
299
+ $_item->getRowTotal()-$_item->getDiscountAmount()+$_item->getTaxAmount()+$_item->getWeeeTaxAppliedRowAmount()
300
+ ) ?>
301
+ <?php else: ?>
302
+ &nbsp;
303
+ <?php endif; ?>
304
+ </td>
305
+ </tr>
306
+ <?php endforeach; ?>
307
+ <?php if($_showlastRow): ?>
308
+ <tr class="border">
309
+ <td>
310
+ <?php if ($this->getOrderOptions()): ?>
311
+ <dl class="item-options">
312
+ <?php foreach ($this->getOrderOptions() as $option): ?>
313
+ <dt><?php echo $option['label'] ?></dt>
314
+ <dd>
315
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
316
+ <?php echo $option['value'];?>
317
+ <?php else: ?>
318
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
319
+ <?php if ($_remainder):?>
320
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
321
+ <script type="text/javascript">
322
+ $('<?php echo $_id ?>').hide();
323
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
324
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
325
+ </script>
326
+ <?php endif;?>
327
+ <?php endif;?>
328
+ </dd>
329
+ <?php endforeach; ?>
330
+ </dl>
331
+ <?php endif; ?>
332
+ <?php echo $this->htmlEscape($this->getItem()->getDescription()) ?>
333
+ </td>
334
+ <td>&nbsp;</td>
335
+ <td>&nbsp;</td>
336
+ <td>&nbsp;</td>
337
+ <td>&nbsp;</td>
338
+ <td>&nbsp;</td>
339
+ <td class="last">&nbsp;</td>
340
+ </tr>
341
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/sales/invoice/create/items/renderer.phtml ADDED
@@ -0,0 +1,398 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = $this->getChilds($_item); ?>
35
+ <?php $_count = count ($items) ?>
36
+ <?php $_index = 0 ?>
37
+
38
+ <?php $_prevOptionId = '' ?>
39
+
40
+ <?php if($this->getOrderOptions() || $_item->getDescription()): ?>
41
+ <?php $_showlastRow = true ?>
42
+ <?php else: ?>
43
+ <?php $_showlastRow = false ?>
44
+ <?php endif; ?>
45
+
46
+ <?php foreach ($items as $_item): ?>
47
+ <?php $this->setPriceDataObject($_item) ?>
48
+ <?php if ($_item->getOrderItem()->getParentItem()): ?>
49
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
50
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
51
+ <tr>
52
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
53
+ <td>&nbsp;</td>
54
+ <td>&nbsp;</td>
55
+ <td>&nbsp;</td>
56
+ <td>&nbsp;</td>
57
+ <td>&nbsp;</td>
58
+ <td>&nbsp;</td>
59
+ <td class="last">&nbsp;</td>
60
+ </tr>
61
+ <?php $_prevOptionId = $attributes['option_id'] ?>
62
+ <?php endif; ?>
63
+ <?php endif; ?>
64
+ <tr<?php echo (++$_index==$_count && !$_showlastRow)?' class="border"':'' ?>>
65
+ <?php if (!$_item->getOrderItem()->getParentItem()): ?>
66
+ <td><h5 class="title"><?php echo $this->htmlEscape($_item->getName()) ?></h5>
67
+ <div>
68
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
69
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
70
+ </div>
71
+ </td>
72
+ <?php else: ?>
73
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
74
+ <?php endif; ?>
75
+ <td class="a-right">
76
+ <?php if ($this->canShowPriceInfo($_item)): ?>
77
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
78
+ <span class="price-excl-tax">
79
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
80
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
81
+ <?php endif; ?>
82
+
83
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
84
+ <?php
85
+ echo $this->displayPrices(
86
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
87
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
88
+ );
89
+ ?>
90
+ <?php else: ?>
91
+ <?php echo $this->displayPrices($_item->getBasePrice(), $_item->getPrice()) ?>
92
+ <?php endif; ?>
93
+
94
+
95
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
96
+ <br />
97
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
98
+ <small>
99
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
100
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
101
+ <?php endforeach; ?>
102
+ </small>
103
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
104
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
105
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
106
+ <?php endforeach; ?>
107
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
108
+ <small>
109
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
110
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
111
+ <?php endforeach; ?>
112
+ </small>
113
+ <?php endif; ?>
114
+
115
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
116
+ <br />
117
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
118
+ <?php
119
+ echo $this->displayPrices(
120
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
121
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
122
+ );
123
+ ?>
124
+ </span>
125
+ <?php endif; ?>
126
+ <?php endif; ?>
127
+ </span>
128
+ <br />
129
+ <?php endif; ?>
130
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
131
+ <span class="price-incl-tax">
132
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
133
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
134
+ <?php endif; ?>
135
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
136
+ <?php $_baseIncl = $this->helper('checkout')->getBasePriceInclTax($_item); ?>
137
+
138
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
139
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?>
140
+ <?php else: ?>
141
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxDisposition(), $_incl-$_item->getWeeeTaxDisposition()) ?>
142
+ <?php endif; ?>
143
+
144
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
145
+ <br />
146
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
147
+ <small>
148
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
149
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
150
+ <?php endforeach; ?>
151
+ </small>
152
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
153
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
154
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
155
+ <?php endforeach; ?>
156
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
157
+ <small>
158
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
159
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
160
+ <?php endforeach; ?>
161
+ </small>
162
+ <?php endif; ?>
163
+
164
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
165
+ <br />
166
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
167
+ <?php endif; ?>
168
+ <?php endif; ?>
169
+ </span>
170
+ <?php endif; ?>
171
+ <?php else: ?>
172
+ &nbsp;
173
+ <?php endif; ?>
174
+ </td>
175
+ <td>
176
+ <?php if ($this->canShowPriceInfo($_item)): ?>
177
+ <table cellspacing="0" class="qty-table">
178
+ <tr>
179
+ <td><?php echo Mage::helper('sales')->__('Ordered') ?></td>
180
+ <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td>
181
+ </tr>
182
+ <?php if ((float) $_item->getOrderItem()->getQtyInvoiced()): ?>
183
+ <tr>
184
+ <td><?php echo Mage::helper('sales')->__('Invoiced') ?></td>
185
+ <td><strong><?php echo $_item->getOrderItem()->getQtyInvoiced()*1 ?></strong></td>
186
+ </tr>
187
+ <?php endif; ?>
188
+ <?php if ((float) $_item->getOrderItem()->getQtyShipped() && $this->isShipmentSeparately($_item)): ?>
189
+ <tr>
190
+ <td><?php echo Mage::helper('sales')->__('Shipped') ?></td>
191
+ <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td>
192
+ </tr>
193
+ <?php endif; ?>
194
+ <?php if ((float) $_item->getOrderItem()->getQtyRefunded()): ?>
195
+ <tr>
196
+ <td><?php echo Mage::helper('sales')->__('Refunded') ?></td>
197
+ <td><strong><?php echo $_item->getOrderItem()->getQtyRefunded()*1 ?></strong></td>
198
+ </tr>
199
+ <?php endif; ?>
200
+ <?php if ((float) $_item->getOrderItem()->getQtyCanceled()): ?>
201
+ <tr>
202
+ <td><?php echo Mage::helper('sales')->__('Canceled') ?></td>
203
+ <td><strong><?php echo $_item->getOrderItem()->getQtyCanceled()*1 ?></strong></td>
204
+ </tr>
205
+ <?php endif; ?>
206
+ </table>
207
+ <?php elseif ($this->isShipmentSeparately($_item)): ?>
208
+ <table cellspacing="0" class="qty-table">
209
+ <tr>
210
+ <td><?php echo Mage::helper('sales')->__('Ordered') ?></td>
211
+ <td><strong><?php echo $_item->getOrderItem()->getQtyOrdered()*1 ?></strong></td>
212
+ </tr>
213
+ <?php if ((float) $_item->getOrderItem()->getQtyShipped()): ?>
214
+ <tr>
215
+ <td><?php echo Mage::helper('sales')->__('Shipped') ?></td>
216
+ <td><strong><?php echo $_item->getOrderItem()->getQtyShipped()*1 ?></strong></td>
217
+ </tr>
218
+ <?php endif; ?>
219
+ </table>
220
+ <?php else: ?>
221
+ &nbsp;
222
+ <?php endif; ?>
223
+ </td>
224
+ <td class="a-center">
225
+ <?php if ($this->canShowPriceInfo($_item)): ?>
226
+ <?php if ($this->canEditQty()) : ?>
227
+ <input type="text" class="input-text qty-input" name="invoice[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>" />
228
+ <?php else : ?>
229
+ <?php echo $_item->getQty()*1 ?>
230
+ <?php endif; ?>
231
+ <?php else: ?>
232
+ &nbsp;
233
+ <?php endif; ?>
234
+ </td>
235
+ <td class="a-right">
236
+ <?php if ($this->canShowPriceInfo($_item)): ?>
237
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
238
+ <span class="price-excl-tax">
239
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
240
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
241
+ <?php endif; ?>
242
+
243
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
244
+ <?php
245
+ echo $this->displayPrices(
246
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
247
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
248
+ );
249
+ ?>
250
+ <?php else: ?>
251
+ <?php echo $this->displayPrices($_item->getBaseRowTotal(), $_item->getRowTotal()) ?>
252
+ <?php endif; ?>
253
+
254
+
255
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
256
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
257
+ <small>
258
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
259
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
260
+ <?php endforeach; ?>
261
+ </small>
262
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
263
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
264
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
265
+ <?php endforeach; ?>
266
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
267
+ <small>
268
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
269
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
270
+ <?php endforeach; ?>
271
+ </small>
272
+ <?php endif; ?>
273
+
274
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
275
+ <br />
276
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
277
+ <?php
278
+ echo $this->displayPrices(
279
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
280
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
281
+ );
282
+ ?>
283
+ </span>
284
+ <?php endif; ?>
285
+ <?php endif; ?>
286
+ </span>
287
+ <br />
288
+ <?php endif; ?>
289
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
290
+ <span class="price-incl-tax">
291
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
292
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
293
+ <?php endif; ?>
294
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
295
+ <?php $_baseIncl = $this->helper('checkout')->getBaseSubtotalInclTax($_item); ?>
296
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
297
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
298
+ <?php else: ?>
299
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxRowDisposition(), $_incl-$_item->getWeeeTaxRowDisposition()) ?>
300
+ <?php endif; ?>
301
+
302
+
303
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
304
+
305
+ <br />
306
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
307
+ <small>
308
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
309
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
310
+ <?php endforeach; ?>
311
+ </small>
312
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
313
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
314
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
315
+ <?php endforeach; ?>
316
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
317
+ <small>
318
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
319
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
320
+ <?php endforeach; ?>
321
+ </small>
322
+ <?php endif; ?>
323
+
324
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
325
+ <br /><span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
326
+ <?php endif; ?>
327
+ <?php endif; ?>
328
+ </span>
329
+ <?php endif; ?>
330
+ </span>
331
+ <?php else: ?>
332
+ &nbsp;
333
+ <?php endif; ?>
334
+ </td>
335
+ <td class="a-right">
336
+ <?php if ($this->canShowPriceInfo($_item)): ?>
337
+ <?php echo $this->displayPriceAttribute('tax_amount') ?>
338
+ <?php else: ?>
339
+ &nbsp;
340
+ <?php endif; ?>
341
+ </td>
342
+ <td class="a-right">
343
+ <?php if ($this->canShowPriceInfo($_item)): ?>
344
+ <?php echo $this->displayPriceAttribute('discount_amount') ?>
345
+ <?php else: ?>
346
+ &nbsp;
347
+ <?php endif; ?>
348
+ </td>
349
+ <td class="a-right last">
350
+ <?php if ($this->canShowPriceInfo($_item)): ?>
351
+ <?php echo $this->displayPrices(
352
+ $_item->getBaseRowTotal()+$_item->getBaseTaxAmount()-$_item->getBaseDiscountAmount()+$_item->getBaseWeeeTaxAppliedRowAmount(),
353
+ $_item->getRowTotal()+$_item->getTaxAmount()-$_item->getDiscountAmount()+$_item->getWeeeTaxAppliedRowAmount()
354
+ ) ?>
355
+ <?php else: ?>
356
+ &nbsp;
357
+ <?php endif; ?>
358
+ </td>
359
+ </tr>
360
+ <?php endforeach; ?>
361
+ <?php if($_showlastRow): ?>
362
+ <tr class="border">
363
+ <td>
364
+ <?php if ($this->getOrderOptions($_item->getOrderItem())): ?>
365
+ <dl class="item-options">
366
+ <?php foreach ($this->getOrderOptions($_item->getOrderItem()) as $option): ?>
367
+ <dt><?php echo $option['label'] ?></dt>
368
+ <dd>
369
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
370
+ <?php echo $option['value'];?>
371
+ <?php else: ?>
372
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
373
+ <?php if ($_remainder):?>
374
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
375
+ <script type="text/javascript">
376
+ $('<?php echo $_id ?>').hide();
377
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
378
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
379
+ </script>
380
+ <?php endif;?>
381
+ <?php endif;?>
382
+ </dd>
383
+ <?php endforeach; ?>
384
+ </dl>
385
+ <?php else: ?>
386
+ &nbsp;
387
+ <?php endif; ?>
388
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
389
+ </td>
390
+ <td>&nbsp;</td>
391
+ <td>&nbsp;</td>
392
+ <td>&nbsp;</td>
393
+ <td>&nbsp;</td>
394
+ <td>&nbsp;</td>
395
+ <td>&nbsp;</td>
396
+ <td class="last">&nbsp;</td>
397
+ </tr>
398
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/sales/invoice/view/items/renderer.phtml ADDED
@@ -0,0 +1,340 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = $this->getChilds($_item); ?>
35
+ <?php $_count = count ($items) ?>
36
+ <?php $_index = 0 ?>
37
+
38
+ <?php $_prevOptionId = '' ?>
39
+
40
+ <?php if($this->getOrderOptions() || $_item->getDescription()): ?>
41
+ <?php $_showlastRow = true ?>
42
+ <?php else: ?>
43
+ <?php $_showlastRow = false ?>
44
+ <?php endif; ?>
45
+
46
+ <?php foreach ($items as $_item): ?>
47
+ <?php $this->setPriceDataObject($_item) ?>
48
+ <?php if ($_item->getOrderItem()->getParentItem()): ?>
49
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
50
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
51
+ <tr>
52
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
53
+ <td>&nbsp;</td>
54
+ <td>&nbsp;</td>
55
+ <td>&nbsp;</td>
56
+ <td>&nbsp;</td>
57
+ <td>&nbsp;</td>
58
+ <td class="last">&nbsp;</td>
59
+ </tr>
60
+ <?php $_prevOptionId = $attributes['option_id'] ?>
61
+ <?php endif; ?>
62
+ <?php endif; ?>
63
+ <tr<?php echo (++$_index==$_count && !$_showlastRow)?' class="border"':'' ?>>
64
+ <?php if (!$_item->getOrderItem()->getParentItem()): ?>
65
+ <td><h5 class="title"><?php echo $this->htmlEscape($_item->getName()) ?></h5>
66
+ <div>
67
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
68
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
69
+ </div>
70
+ <?php else: ?>
71
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
72
+ <?php endif; ?>
73
+ <td class="a-right">
74
+ <?php if ($this->canShowPriceInfo($_item)): ?>
75
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
76
+ <span class="price-excl-tax">
77
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
78
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
79
+ <?php endif; ?>
80
+
81
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
82
+ <?php
83
+ echo $this->displayPrices(
84
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
85
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
86
+ );
87
+ ?>
88
+ <?php else: ?>
89
+ <?php echo $this->displayPrices($_item->getBasePrice(), $_item->getPrice()) ?>
90
+ <?php endif; ?>
91
+
92
+
93
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
94
+ <br />
95
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
96
+ <small>
97
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
98
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
99
+ <?php endforeach; ?>
100
+ </small>
101
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
102
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
103
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
104
+ <?php endforeach; ?>
105
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
106
+ <small>
107
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
108
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
109
+ <?php endforeach; ?>
110
+ </small>
111
+ <?php endif; ?>
112
+
113
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
114
+ <br />
115
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
116
+ <?php
117
+ echo $this->displayPrices(
118
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
119
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
120
+ );
121
+ ?>
122
+ </span>
123
+ <?php endif; ?>
124
+ <?php endif; ?>
125
+ </span>
126
+ <br />
127
+ <?php endif; ?>
128
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
129
+ <span class="price-incl-tax">
130
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
131
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
132
+ <?php endif; ?>
133
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
134
+ <?php $_baseIncl = $this->helper('checkout')->getBasePriceInclTax($_item); ?>
135
+
136
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
137
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?>
138
+ <?php else: ?>
139
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxDisposition(), $_incl-$_item->getWeeeTaxDisposition()) ?>
140
+ <?php endif; ?>
141
+
142
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
143
+ <br />
144
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
145
+ <small>
146
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
147
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
148
+ <?php endforeach; ?>
149
+ </small>
150
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
151
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
152
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
153
+ <?php endforeach; ?>
154
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
155
+ <small>
156
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
157
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
158
+ <?php endforeach; ?>
159
+ </small>
160
+ <?php endif; ?>
161
+
162
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
163
+ <br />
164
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
165
+ <?php endif; ?>
166
+ <?php endif; ?>
167
+ </span>
168
+ <?php endif; ?>
169
+ <?php else: ?>
170
+ &nbsp;
171
+ <?php endif; ?>
172
+ </td>
173
+ <td class="a-center">
174
+ <?php if ($this->canShowPriceInfo($_item)): ?>
175
+ <?php echo $_item->getQty()*1 ?>
176
+ <?php else: ?>
177
+ &nbsp;
178
+ <?php endif; ?>
179
+ </td>
180
+ <td class="a-right">
181
+ <?php if ($this->canShowPriceInfo($_item)): ?>
182
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
183
+ <span class="price-excl-tax">
184
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
185
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
186
+ <?php endif; ?>
187
+
188
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
189
+ <?php
190
+ echo $this->displayPrices(
191
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
192
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
193
+ );
194
+ ?>
195
+ <?php else: ?>
196
+ <?php echo $this->displayPrices($_item->getBaseRowTotal(), $_item->getRowTotal()) ?>
197
+ <?php endif; ?>
198
+
199
+
200
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
201
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
202
+ <small>
203
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
204
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
205
+ <?php endforeach; ?>
206
+ </small>
207
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
208
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
209
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
210
+ <?php endforeach; ?>
211
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
212
+ <small>
213
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
214
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
215
+ <?php endforeach; ?>
216
+ </small>
217
+ <?php endif; ?>
218
+
219
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
220
+ <br />
221
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
222
+ <?php
223
+ echo $this->displayPrices(
224
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
225
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
226
+ );
227
+ ?>
228
+ </span>
229
+ <?php endif; ?>
230
+ <?php endif; ?>
231
+ </span>
232
+ <br />
233
+ <?php endif; ?>
234
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
235
+ <span class="price-incl-tax">
236
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
237
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
238
+ <?php endif; ?>
239
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
240
+ <?php $_baseIncl = $this->helper('checkout')->getBaseSubtotalInclTax($_item); ?>
241
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
242
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
243
+ <?php else: ?>
244
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxRowDisposition(), $_incl-$_item->getWeeeTaxRowDisposition()) ?>
245
+ <?php endif; ?>
246
+
247
+
248
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
249
+
250
+ <br />
251
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
252
+ <small>
253
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
254
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
255
+ <?php endforeach; ?>
256
+ </small>
257
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
258
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
259
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
260
+ <?php endforeach; ?>
261
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
262
+ <small>
263
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
264
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
265
+ <?php endforeach; ?>
266
+ </small>
267
+ <?php endif; ?>
268
+
269
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
270
+ <br /><span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
271
+ <?php endif; ?>
272
+ <?php endif; ?>
273
+ </span>
274
+ <?php endif; ?>
275
+ </span>
276
+ <?php else: ?>
277
+ &nbsp;
278
+ <?php endif; ?>
279
+ </td>
280
+ <td class="a-right">
281
+ <?php if ($this->canShowPriceInfo($_item)): ?>
282
+ <?php echo $this->displayPriceAttribute('tax_amount') ?>
283
+ <?php else: ?>
284
+ &nbsp;
285
+ <?php endif; ?>
286
+ </td>
287
+ <td class="a-right">
288
+ <?php if ($this->canShowPriceInfo($_item)): ?>
289
+ <?php echo $this->displayPriceAttribute('discount_amount') ?>
290
+ <?php else: ?>
291
+ &nbsp;
292
+ <?php endif; ?>
293
+ </td>
294
+ <td class="a-right last">
295
+ <?php if ($this->canShowPriceInfo($_item)): ?>
296
+ <?php echo $this->displayPrices(
297
+ $_item->getBaseRowTotal()+$_item->getBaseTaxAmount()-$_item->getBaseDiscountAmount()+$_item->getBaseWeeeTaxAppliedRowAmount(),
298
+ $_item->getRowTotal()+$_item->getTaxAmount()-$_item->getDiscountAmount()+$_item->getWeeeTaxAppliedRowAmount()
299
+ ) ?>
300
+ <?php else: ?>
301
+ &nbsp;
302
+ <?php endif; ?>
303
+ </td>
304
+ </tr>
305
+ <?php endforeach; ?>
306
+ <?php if($_showlastRow): ?>
307
+ <tr class="border">
308
+ <td>
309
+ <?php if ($this->getOrderOptions()): ?>
310
+ <dl class="item-options">
311
+ <?php foreach ($this->getOrderOptions() as $option): ?>
312
+ <dt><?php echo $option['label'] ?></dt>
313
+ <dd>
314
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
315
+ <?php echo $option['value'];?>
316
+ <?php else: ?>
317
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
318
+ <?php if ($_remainder):?>
319
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
320
+ <script type="text/javascript">
321
+ $('<?php echo $_id ?>').hide();
322
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
323
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
324
+ </script>
325
+ <?php endif;?>
326
+ <?php endif;?>
327
+ </dd>
328
+ <?php endforeach; ?>
329
+ </dl>
330
+ <?php endif; ?>
331
+ <?php echo $this->htmlEscape($this->getItem()->getDescription()) ?>
332
+ </td>
333
+ <td>&nbsp;</td>
334
+ <td>&nbsp;</td>
335
+ <td>&nbsp;</td>
336
+ <td>&nbsp;</td>
337
+ <td>&nbsp;</td>
338
+ <td class="last">&nbsp;</td>
339
+ </tr>
340
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/sales/order/view/items/renderer.phtml ADDED
@@ -0,0 +1,415 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_View_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = array_merge(array($_item), $_item->getChildrenItems()); ?>
35
+ <?php $_count = count ($items) ?>
36
+ <?php $_index = 0 ?>
37
+
38
+ <?php $_prevOptionId = '' ?>
39
+
40
+ <?php if($this->getOrderOptions() || $_item->getDescription() || $this->canDisplayGiftmessage()): ?>
41
+ <?php $_showlastRow = true ?>
42
+ <?php else: ?>
43
+ <?php $_showlastRow = false ?>
44
+ <?php endif; ?>
45
+
46
+ <?php foreach ($items as $_item): ?>
47
+ <?php $this->setPriceDataObject($_item) ?>
48
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
49
+ <?php if ($_item->getParentItem()): ?>
50
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
51
+ <tr>
52
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
53
+ <td>&nbsp;</td>
54
+ <td>&nbsp;</td>
55
+ <td>&nbsp;</td>
56
+ <td>&nbsp;</td>
57
+ <td>&nbsp;</td>
58
+ <td>&nbsp;</td>
59
+ <td>&nbsp;</td>
60
+ <td>&nbsp;</td>
61
+ <td class="last">&nbsp;</td>
62
+ </tr>
63
+ <?php $_prevOptionId = $attributes['option_id'] ?>
64
+ <?php endif; ?>
65
+ <?php endif; ?>
66
+ <tr<?php echo (++$_index==$_count && !$_showlastRow)?' class="border"':'' ?>>
67
+ <?php if (!$_item->getParentItem()): ?>
68
+ <td>
69
+ <h5 class="title">
70
+ <span id="order_item_<?php echo $_item->getId() ?>_title"><?php echo $this->htmlEscape($_item->getName()) ?></span>
71
+ </h5>
72
+ <div>
73
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
74
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
75
+ </div>
76
+ </td>
77
+ <?php else: ?>
78
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
79
+ <?php endif; ?>
80
+ <td class="a-center">
81
+ <?php if ($this->canShowPriceInfo($_item)): ?>
82
+ <?php echo $_item->getStatus() ?>
83
+ <?php else: ?>
84
+ &nbsp;
85
+ <?php endif; ?>
86
+ </td>
87
+ <td class="a-right">
88
+ <?php if ($this->canShowPriceInfo($_item)): ?>
89
+ <?php echo $this->displayPriceAttribute('original_price') ?>
90
+ <?php else: ?>
91
+ &nbsp;
92
+ <?php endif; ?>
93
+ </td>
94
+ <td class="a-right">
95
+ <?php if ($this->canShowPriceInfo($_item)): ?>
96
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
97
+ <span class="price-excl-tax">
98
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
99
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
100
+ <?php endif; ?>
101
+
102
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
103
+ <?php
104
+ echo $this->displayPrices(
105
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
106
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
107
+ );
108
+ ?>
109
+ <?php else: ?>
110
+ <?php echo $this->displayPrices($_item->getBasePrice(), $_item->getPrice()) ?>
111
+ <?php endif; ?>
112
+
113
+
114
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
115
+ <br />
116
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
117
+ <small>
118
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
119
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
120
+ <?php endforeach; ?>
121
+ </small>
122
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
123
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
124
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
125
+ <?php endforeach; ?>
126
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
127
+ <small>
128
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
129
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
130
+ <?php endforeach; ?>
131
+ </small>
132
+ <?php endif; ?>
133
+
134
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
135
+ <br />
136
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
137
+ <?php
138
+ echo $this->displayPrices(
139
+ $_item->getBasePrice()+$_item->getBaseWeeeTaxAppliedAmount()+$_item->getBaseWeeeTaxDisposition(),
140
+ $_item->getPrice()+$_item->getWeeeTaxAppliedAmount()+$_item->getWeeeTaxDisposition()
141
+ );
142
+ ?>
143
+ </span>
144
+ <?php endif; ?>
145
+ <?php endif; ?>
146
+ </span>
147
+ <br />
148
+ <?php endif; ?>
149
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
150
+ <span class="price-incl-tax">
151
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
152
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
153
+ <?php endif; ?>
154
+ <?php $_incl = $this->helper('checkout')->getPriceInclTax($_item); ?>
155
+ <?php $_baseIncl = $this->helper('checkout')->getBasePriceInclTax($_item); ?>
156
+
157
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
158
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?>
159
+ <?php else: ?>
160
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxDisposition(), $_incl-$_item->getWeeeTaxDisposition()) ?>
161
+ <?php endif; ?>
162
+
163
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
164
+ <br />
165
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
166
+ <small>
167
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
168
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount'], $tax['amount']); ?></span>
169
+ <?php endforeach; ?>
170
+ </small>
171
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
172
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
173
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></small></span>
174
+ <?php endforeach; ?>
175
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
176
+ <small>
177
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
178
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_amount_incl_tax'], $tax['amount_incl_tax']); ?></span>
179
+ <?php endforeach; ?>
180
+ </small>
181
+ <?php endif; ?>
182
+
183
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
184
+ <br />
185
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedAmount(), $_incl+$_item->getWeeeTaxAppliedAmount()); ?></span>
186
+ <?php endif; ?>
187
+ <?php endif; ?>
188
+ </span>
189
+ <?php endif; ?>
190
+ <?php else: ?>
191
+ &nbsp;
192
+ <?php endif; ?>
193
+ </td>
194
+ <td>
195
+ <?php if ($this->canShowPriceInfo($_item)): ?>
196
+ <table cellspacing="0" class="qty-table">
197
+ <tr>
198
+ <td><?php echo Mage::helper('sales')->__('Ordered') ?></td>
199
+ <td><strong><?php echo $_item->getQtyOrdered()*1 ?></strong></td>
200
+ </tr>
201
+ <?php if ((float) $_item->getQtyInvoiced()): ?>
202
+ <tr>
203
+ <td><?php echo Mage::helper('sales')->__('Invoiced') ?></td>
204
+ <td><strong><?php echo $_item->getQtyInvoiced()*1 ?></strong></td>
205
+ </tr>
206
+ <?php endif; ?>
207
+ <?php if ((float) $_item->getQtyShipped() && $this->isShipmentSeparately($_item)): ?>
208
+ <tr>
209
+ <td><?php echo Mage::helper('sales')->__('Shipped') ?></td>
210
+ <td><strong><?php echo $_item->getQtyShipped()*1 ?></strong></td>
211
+ </tr>
212
+ <?php endif; ?>
213
+ <?php if ((float) $_item->getQtyRefunded()): ?>
214
+ <tr>
215
+ <td><?php echo Mage::helper('sales')->__('Refunded') ?></td>
216
+ <td><strong><?php echo $_item->getQtyRefunded()*1 ?></strong></td>
217
+ </tr>
218
+ <?php endif; ?>
219
+ <?php if ((float) $_item->getQtyCanceled()): ?>
220
+ <tr>
221
+ <td><?php echo Mage::helper('sales')->__('Canceled') ?></td>
222
+ <td><strong><?php echo $_item->getQtyCanceled()*1 ?></strong></td>
223
+ </tr>
224
+ <?php endif; ?>
225
+ </table>
226
+ <?php elseif ($this->isShipmentSeparately($_item)): ?>
227
+ <table cellspacing="0" class="qty-table">
228
+ <tr>
229
+ <td><?php echo Mage::helper('sales')->__('Ordered') ?></td>
230
+ <td><strong><?php echo $_item->getQtyOrdered()*1 ?></strong></td>
231
+ </tr>
232
+ <?php if ((float) $_item->getQtyShipped()): ?>
233
+ <tr>
234
+ <td><?php echo Mage::helper('sales')->__('Shipped') ?></td>
235
+ <td><strong><?php echo $_item->getQtyShipped()*1 ?></strong></td>
236
+ </tr>
237
+ <?php endif; ?>
238
+ </table>
239
+ <?php else: ?>
240
+ &nbsp;
241
+ <?php endif; ?>
242
+ </td>
243
+ <td class="a-right">
244
+ <?php if ($this->canShowPriceInfo($_item)): ?>
245
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceExclTax()): ?>
246
+ <span class="price-excl-tax">
247
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
248
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
249
+ <?php endif; ?>
250
+
251
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
252
+ <?php
253
+ echo $this->displayPrices(
254
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
255
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
256
+ );
257
+ ?>
258
+ <?php else: ?>
259
+ <?php echo $this->displayPrices($_item->getBaseRowTotal(), $_item->getRowTotal()) ?>
260
+ <?php endif; ?>
261
+
262
+
263
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
264
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
265
+ <small>
266
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
267
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
268
+ <?php endforeach; ?>
269
+ </small>
270
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
271
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
272
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
273
+ <?php endforeach; ?>
274
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
275
+ <small>
276
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
277
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
278
+ <?php endforeach; ?>
279
+ </small>
280
+ <?php endif; ?>
281
+
282
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
283
+ <br />
284
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br />
285
+ <?php
286
+ echo $this->displayPrices(
287
+ $_item->getBaseRowTotal()+$_item->getBaseWeeeTaxAppliedRowAmount()+$_item->getBaseWeeeTaxRowDisposition(),
288
+ $_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()
289
+ );
290
+ ?>
291
+ </span>
292
+ <?php endif; ?>
293
+ <?php endif; ?>
294
+ </span>
295
+ <br />
296
+ <?php endif; ?>
297
+ <?php if ($this->helper('tax')->displaySalesBothPrices() || $this->helper('tax')->displaySalesPriceInclTax()): ?>
298
+ <span class="price-incl-tax">
299
+ <?php if ($this->helper('tax')->displaySalesBothPrices()): ?>
300
+ <span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
301
+ <?php endif; ?>
302
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
303
+ <?php $_baseIncl = $this->helper('checkout')->getBaseSubtotalInclTax($_item); ?>
304
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'sales')): ?>
305
+ <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
306
+ <?php else: ?>
307
+ <?php echo $this->displayPrices($_baseIncl-$_item->getBaseWeeeTaxRowDisposition(), $_incl-$_item->getWeeeTaxRowDisposition()) ?>
308
+ <?php endif; ?>
309
+
310
+
311
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
312
+
313
+ <br />
314
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): ?>
315
+ <small>
316
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
317
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount'], $tax['row_amount']); ?></span>
318
+ <?php endforeach; ?>
319
+ </small>
320
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
321
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
322
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></small></span>
323
+ <?php endforeach; ?>
324
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'sales')): ?>
325
+ <small>
326
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
327
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $this->displayPrices($tax['base_row_amount_incl_tax'], $tax['row_amount_incl_tax']); ?></span>
328
+ <?php endforeach; ?>
329
+ </small>
330
+ <?php endif; ?>
331
+
332
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): ?>
333
+ <br /><span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $this->displayPrices($_baseIncl+$_item->getBaseWeeeTaxAppliedRowAmount(), $_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
334
+ <?php endif; ?>
335
+ <?php endif; ?>
336
+ </span>
337
+ <?php endif; ?>
338
+ <?php else: ?>
339
+ &nbsp;
340
+ <?php endif; ?>
341
+ </td>
342
+ <td class="a-right">
343
+ <?php if ($this->canShowPriceInfo($_item)): ?>
344
+ <?php echo $this->displayPriceAttribute('tax_amount') ?>
345
+ <?php else: ?>
346
+ &nbsp;
347
+ <?php endif; ?>
348
+ </td>
349
+
350
+ <td class="a-right">
351
+ <?php if ($this->canShowPriceInfo($_item)): ?>
352
+ <?php echo $this->displayTaxPercent($_item) ?>
353
+ <?php else: ?>
354
+ &nbsp;
355
+ <?php endif; ?>
356
+ </td>
357
+ <td class="a-right">
358
+ <?php if ($this->canShowPriceInfo($_item)): ?>
359
+ <?php echo $this->displayPriceAttribute('discount_amount') ?>
360
+ <?php else: ?>
361
+ &nbsp;
362
+ <?php endif; ?>
363
+ </td>
364
+ <td class="a-right last">
365
+ <?php if ($this->canShowPriceInfo($_item)): ?>
366
+ <?php echo $this->displayPrices(
367
+ $_item->getBaseRowTotal() - $_item->getBaseDiscountAmount() + $_item->getBaseTaxAmount() + $_item->getBaseWeeeTaxAppliedRowAmount(),
368
+ $_item->getRowTotal() - $_item->getDiscountAmount() + $_item->getTaxAmount() + $_item->getWeeeTaxAppliedRowAmount()
369
+ ); ?>
370
+ <?php else: ?>
371
+ &nbsp;
372
+ <?php endif; ?>
373
+ </td>
374
+ </tr>
375
+ <?php endforeach; ?>
376
+ <?php if($_showlastRow): ?>
377
+ <tr<?php if (!$this->canDisplayGiftmessage()) echo ' class="border"' ?>>
378
+ <td>
379
+ <?php if ($this->getOrderOptions()): ?>
380
+ <dl class="item-options">
381
+ <?php foreach ($this->getOrderOptions() as $option): ?>
382
+ <dt><?php echo $option['label'] ?>:</dt>
383
+ <dd>
384
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
385
+ <?php echo $option['value'];?>
386
+ <?php else: ?>
387
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
388
+ <?php if ($_remainder):?>
389
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
390
+ <script type="text/javascript">
391
+ $('<?php echo $_id ?>').hide();
392
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
393
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
394
+ </script>
395
+ <?php endif;?>
396
+ <?php endif;?>
397
+ </dd>
398
+ <?php endforeach; ?>
399
+ </dl>
400
+ <?php else: ?>
401
+ &nbsp;
402
+ <?php endif; ?>
403
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
404
+ </td>
405
+ <td>&nbsp;</td>
406
+ <td>&nbsp;</td>
407
+ <td>&nbsp;</td>
408
+ <td>&nbsp;</td>
409
+ <td>&nbsp;</td>
410
+ <td>&nbsp;</td>
411
+ <td>&nbsp;</td>
412
+ <td>&nbsp;</td>
413
+ <td class="last">&nbsp;</td>
414
+ </tr>
415
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/sales/shipment/create/items/renderer.phtml ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = $this->getChilds($_item); ?>
35
+ <?php $_count = count ($items) ?>
36
+ <?php $_index = 0 ?>
37
+
38
+ <?php $_prevOptionId = '' ?>
39
+
40
+ <?php if($this->getOrderOptions() || $_item->getDescription()): ?>
41
+ <?php $_showlastRow = true ?>
42
+ <?php else: ?>
43
+ <?php $_showlastRow = false ?>
44
+ <?php endif; ?>
45
+
46
+ <?php foreach ($items as $_item): ?>
47
+ <?php $this->setPriceDataObject($_item) ?>
48
+ <?php if ($_item->getOrderItem()->getParentItem()): ?>
49
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
50
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
51
+ <tr>
52
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
53
+ <td>&nbsp;</td>
54
+ <td class="last">&nbsp;</td>
55
+ </tr>
56
+ <?php $_prevOptionId = $attributes['option_id'] ?>
57
+ <?php endif; ?>
58
+ <?php endif; ?>
59
+ <tr class="<?php echo (++$_index==$_count && !$_showlastRow)?'border':'' ?>">
60
+ <?php if (!$_item->getOrderItem()->getParentItem()): ?>
61
+ <td><h5 class="title"><?php echo $this->htmlEscape($_item->getName()) ?></h5>
62
+ <div>
63
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
64
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
65
+ </div>
66
+ </td>
67
+ <?php else: ?>
68
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
69
+ <?php endif; ?>
70
+ <td>
71
+ <?php if ($this->isShipmentSeparately($_item)): ?>
72
+ <?php echo $this->getColumnHtml($_item, 'qty') ?>
73
+ <?php else: ?>
74
+ &nbsp;
75
+ <?php endif; ?>
76
+ </td>
77
+ <td class="last">
78
+ <?php if ($this->isShipmentSeparately($_item)): ?>
79
+ <input type="text" class="input-text" name="shipment[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>" />
80
+ <?php else: ?>
81
+ &nbsp;
82
+ <?php endif; ?>
83
+ </td>
84
+ </tr>
85
+ <?php endforeach; ?>
86
+ <?php if($_showlastRow): ?>
87
+ <tr class="border">
88
+ <td>
89
+ <?php if ($this->getOrderOptions($_item->getOrderItem())): ?>
90
+ <dl class="item-options">
91
+ <?php foreach ($this->getOrderOptions($_item->getOrderItem()) as $option): ?>
92
+ <dt><?php echo $option['label'] ?></dt>
93
+ <dd>
94
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
95
+ <?php echo $option['value'];?>
96
+ <?php else: ?>
97
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
98
+ <?php if ($_remainder):?>
99
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
100
+ <script type="text/javascript">
101
+ $('<?php echo $_id ?>').hide();
102
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
103
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
104
+ </script>
105
+ <?php endif;?>
106
+ <?php endif;?>
107
+ </dd>
108
+ <?php endforeach; ?>
109
+ </dl>
110
+ <?php else: ?>
111
+ &nbsp;
112
+ <?php endif; ?>
113
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
114
+ </td>
115
+ <td>&nbsp;</td>
116
+ <td class="last">&nbsp;</td>
117
+ </tr>
118
+ <?php endif; ?>
app/design/adminhtml/default/default/template/bundle/sales/shipment/view/items/renderer.phtml ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Bundle_Block_Adminhtml_Sales_Order_Items_Renderer
30
+ */
31
+ ?>
32
+
33
+ <?php $_item = $this->getItem() ?>
34
+ <?php $items = array_merge(array($_item->getOrderItem()), $_item->getOrderItem()->getChildrenItems()) ?>
35
+ <?php $shipItems = $this->getChilds($_item) ?>
36
+ <?php $_count = count ($items) ?>
37
+ <?php $_index = 0 ?>
38
+
39
+ <?php $_prevOptionId = '' ?>
40
+
41
+ <?php if($this->getOrderOptions() || $_item->getDescription()): ?>
42
+ <?php $_showlastRow = true ?>
43
+ <?php else: ?>
44
+ <?php $_showlastRow = false ?>
45
+ <?php endif; ?>
46
+
47
+ <?php foreach ($items as $_item): ?>
48
+ <?php $this->setPriceDataObject($_item) ?>
49
+ <?php if ($_item->getParentItem()): ?>
50
+ <?php $attributes = $this->getSelectionAttributes($_item) ?>
51
+ <?php if ($_prevOptionId != $attributes['option_id']): ?>
52
+ <tr>
53
+ <td><div class="option-label"><?php echo $attributes['option_label'] ?></div></td>
54
+ <td class="last">&nbsp;</td>
55
+ </tr>
56
+ <?php $_prevOptionId = $attributes['option_id'] ?>
57
+ <?php endif; ?>
58
+ <?php endif; ?>
59
+ <tr<?php echo (++$_index==$_count && !$_showlastRow)?' class="border"':'' ?>>
60
+ <?php if (!$_item->getParentItem()): ?>
61
+ <td>
62
+ <h5 class="title"><?php echo $this->htmlEscape($_item->getName()) ?></h5>
63
+ <div>
64
+ <strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong>
65
+ <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($_item->getSku()))); ?>
66
+ </div>
67
+ </td>
68
+ <?php else: ?>
69
+ <td><div class="option-value"><?php echo $this->getValueHtml($_item)?></div></td>
70
+ <?php endif; ?>
71
+ <td class="a-center last">
72
+ <?php if (($this->isShipmentSeparately() && $_item->getParentItem()) || (!$this->isShipmentSeparately() && !$_item->getParentItem())): ?>
73
+ <?php if (isset($shipItems[$_item->getId()])): ?>
74
+ <?php echo $shipItems[$_item->getId()]->getQty()*1 ?>
75
+ <?php elseif ($_item->getIsVirtual()): ?>
76
+ <?php echo $this->__('N/A') ?>
77
+ <?php else: ?>
78
+ 0
79
+ <?php endif; ?>
80
+ <?php else: ?>
81
+ &nbsp;
82
+ <?php endif; ?>
83
+ </td>
84
+ </tr>
85
+ <?php endforeach; ?>
86
+ <?php if($_showlastRow): ?>
87
+ <tr class="border">
88
+ <td>
89
+ <?php if ($this->getOrderOptions($_item->getOrderItem())): ?>
90
+ <dl class="item-options">
91
+ <?php foreach ($this->getOrderOptions($_item->getOrderItem()) as $option): ?>
92
+ <dt><?php echo $option['label'] ?></dt>
93
+ <dd>
94
+ <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
95
+ <?php echo $option['value'];?>
96
+ <?php else: ?>
97
+ <?php echo Mage::helper('core/string')->truncate($option['value'], 55, '', $_remainder);?>
98
+ <?php if ($_remainder):?>
99
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
100
+ <script type="text/javascript">
101
+ $('<?php echo $_id ?>').hide();
102
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
103
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
104
+ </script>
105
+ <?php endif;?>
106
+ <?php endif;?>
107
+ </dd>
108
+ <?php endforeach; ?>
109
+ </dl>
110
+ <?php endif; ?>
111
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
112
+ </td>
113
+ <td class="last">&nbsp;</td>
114
+ </tr>
115
+ <?php endif; ?>
app/design/adminhtml/default/default/template/catalog/category/checkboxes/tree.phtml ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php $_divId = 'tree-div_' . time() ?>
29
+ <div id="<?php echo $_divId ?>" class="tree"></div>
30
+
31
+ <script type="text/javascript">
32
+ //<![CDATA[
33
+
34
+ // TODO: cleanup this script. It was copypasted from catalog/category/tree
35
+
36
+ var tree;
37
+
38
+ /**
39
+ * Fix ext compatibility with prototype 1.6
40
+ */
41
+ Ext.lib.Event.getTarget = function(e) {
42
+ var ee = e.browserEvent || e;
43
+ return ee.target ? Event.element(ee) : null;
44
+ };
45
+
46
+ Ext.tree.TreePanel.Enhanced = function(el, config)
47
+ {
48
+ Ext.tree.TreePanel.Enhanced.superclass.constructor.call(this, el, config);
49
+ };
50
+
51
+ Ext.extend(Ext.tree.TreePanel.Enhanced, Ext.tree.TreePanel, {
52
+
53
+ loadTree : function(config, firstLoad)
54
+ {
55
+ var parameters = config['parameters'];
56
+ var data = config['data'];
57
+
58
+ if ((typeof parameters['root_visible']) != 'undefined') {
59
+ this.rootVisible = parameters['root_visible']*1;
60
+ }
61
+
62
+ var root = new Ext.tree.TreeNode(parameters);
63
+
64
+ this.nodeHash = {};
65
+ this.setRootNode(root);
66
+
67
+ if (firstLoad) {
68
+ this.addListener('click', this.categoryClick.createDelegate(this));
69
+ }
70
+
71
+ this.loader.buildCategoryTree(root, data);
72
+ this.el.dom.innerHTML = '';
73
+ // render the tree
74
+ this.render();
75
+ },
76
+
77
+ categoryClick : function(node, e)
78
+ {
79
+ node.getUI().check(!node.getUI().checked());
80
+ }
81
+ });
82
+
83
+ Ext.onReady(function()
84
+ {
85
+ var categoryLoader = new Ext.tree.TreeLoader({
86
+ dataUrl: '<?php echo $this->getLoadTreeUrl() ?>'
87
+ });
88
+
89
+ categoryLoader.createNode = function(config) {
90
+ config.uiProvider = Ext.tree.CheckboxNodeUI;
91
+ var node;
92
+ var _node = Object.clone(config);
93
+ if (config.children && !config.children.length) {
94
+ delete(config.children);
95
+ node = new Ext.tree.AsyncTreeNode(config);
96
+ } else {
97
+ node = new Ext.tree.TreeNode(config);
98
+ }
99
+
100
+ return node;
101
+ };
102
+
103
+ categoryLoader.buildCategoryTree = function(parent, config)
104
+ {
105
+ if (!config) return null;
106
+
107
+ if (parent && config && config.length){
108
+ for (var i = 0; i < config.length; i++) {
109
+ config[i].uiProvider = Ext.tree.CheckboxNodeUI;
110
+ var node;
111
+ var _node = Object.clone(config[i]);
112
+ if (_node.children && !_node.children.length) {
113
+ delete(_node.children);
114
+ node = new Ext.tree.AsyncTreeNode(_node);
115
+ } else {
116
+ node = new Ext.tree.TreeNode(config[i]);
117
+ }
118
+ parent.appendChild(node);
119
+ node.loader = node.getOwnerTree().loader;
120
+ if (_node.children) {
121
+ this.buildCategoryTree(node, _node.children);
122
+ }
123
+ }
124
+ }
125
+ };
126
+
127
+ categoryLoader.buildHash = function(node)
128
+ {
129
+ var hash = {};
130
+
131
+ hash = this.toArray(node.attributes);
132
+
133
+ if (node.childNodes.length>0 || (node.loaded==false && node.loading==false)) {
134
+ hash['children'] = new Array;
135
+
136
+ for (var i = 0, len = node.childNodes.length; i < len; i++) {
137
+ if (!hash['children']) {
138
+ hash['children'] = new Array;
139
+ }
140
+ hash['children'].push(this.buildHash(node.childNodes[i]));
141
+ }
142
+ }
143
+
144
+ return hash;
145
+ };
146
+
147
+ categoryLoader.toArray = function(attributes) {
148
+ var data = {};
149
+ for (var key in attributes) {
150
+ var value = attributes[key];
151
+ data[key] = value;
152
+ }
153
+
154
+ return data;
155
+ };
156
+
157
+ categoryLoader.on("beforeload", function(treeLoader, node) {
158
+ treeLoader.baseParams.id = node.attributes.id;
159
+ });
160
+
161
+ categoryLoader.on("load", function(treeLoader, node, config) {
162
+ varienWindowOnload();
163
+ });
164
+
165
+ tree = new Ext.tree.TreePanel.Enhanced('<?php echo $_divId ?>', {
166
+ animate: false,
167
+ loader: categoryLoader,
168
+ enableDD: false,
169
+ containerScroll: true,
170
+ selModel: new Ext.tree.CheckNodeMultiSelectionModel(),
171
+ rootVisible: '<?php echo $this->getRoot()->getIsVisible() ?>',
172
+ useAjax: <?php echo $this->getUseAjax() ?>,
173
+ currentNodeId: <?php echo (int) $this->getCategoryId() ?>,
174
+ addNodeTo: false,
175
+ rootUIProvider: Ext.tree.CheckboxNodeUI
176
+ });
177
+
178
+ tree.on('check', function(node, checked) {
179
+ <?php echo $this->getJsFormObject() ?>.updateElement.value = this.getChecked().join(', ');
180
+ varienElementMethods.setHasChanges(node.getUI().checkbox);
181
+ }, tree);
182
+
183
+ // set the root node
184
+ var parameters = {
185
+ text: '<?php echo htmlentities($this->getRoot()->getName()) ?>',
186
+ draggable: false,
187
+ checked:'<?php echo $this->getRoot()->getChecked() ?>',
188
+ uiProvider: Ext.tree.CheckboxNodeUI,
189
+ allowDrop: <?php if ($this->getRoot()->getIsVisible()): ?>true<?php else : ?>false<?php endif; ?>,
190
+ id: <?php echo (int) $this->getRoot()->getId() ?>,
191
+ expanded: <?php echo (int) $this->getIsWasExpanded() ?>,
192
+ category_id: <?php echo (int) $this->getCategoryId() ?>
193
+ };
194
+
195
+ tree.loadTree({parameters:parameters, data:<?php echo $this->getTreeJson() ?>},true);
196
+
197
+ });
198
+ //]]>
199
+ </script>
app/design/adminhtml/default/default/template/catalog/category/edit.phtml ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Template for Mage_Adminhtml_Block_Catalog_Category_Cointainer
30
+ */
31
+ ?>
32
+
33
+ <div id="category-edit-container" class="category-content">
34
+ <?php echo $this->getChildHtml('form') ?>
35
+ </div>
36
+ <script type="text/javascript">
37
+ //<![CDATA[
38
+
39
+ function categoryReset(url,useAjax){
40
+ if(useAjax){
41
+ var params = {active_tab_id:false};
42
+ updateContent(url, params);
43
+ }else{
44
+ location.href = url;
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Delete some category
50
+ * This routine get categoryId explicitly, so even if currently selected tree node is out of sync
51
+ * with this form, we surely delete same category in the tree and at backend
52
+ */
53
+ function categoryDelete(url, useAjax, categoryId) {
54
+ if (confirm('<?php echo Mage::helper('catalog')->__('Are you sure you want to delete this category?') ?>')){
55
+ if (useAjax){
56
+ tree.nodeForDelete = categoryId;
57
+ updateContent(url, {}, true);
58
+ } else {
59
+ location.href = url;
60
+ }
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Update category content area
66
+ */
67
+ function updateContent(url, params, refreshTree) {
68
+ if (!params) {
69
+ params = {};
70
+ }
71
+ if (!params.form_key) {
72
+ params.form_key = FORM_KEY;
73
+ }
74
+
75
+ toolbarToggle.stop();
76
+
77
+ /*if(params.node_name)
78
+ {
79
+ var currentNode = tree.getNodeById(tree.currentNodeId);
80
+ currentNode.setText(params.node_name);
81
+ }*/
82
+
83
+ var categoryContainer = $('category-edit-container');
84
+ var messagesContainer = $('messages');
85
+ var thisObj = this;
86
+ new Ajax.Request(url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ), {
87
+ parameters: params,
88
+ evalScripts: true,
89
+ onComplete: function () {
90
+ /**
91
+ * This func depends on variables, that came in response, and were eval'ed in onSuccess() callback.
92
+ * Since prototype's Element.update() evals javascripts in 10 msec, we should exec our func after it.
93
+ */
94
+ setTimeout(function() {
95
+ try {
96
+ if (refreshTree) {
97
+ thisObj.refreshTreeArea();
98
+ }
99
+ toolbarToggle.start();
100
+ } catch (e) {
101
+ alert(e.message);
102
+ };
103
+ }, 25);
104
+ },
105
+ onSuccess: function(transport) {
106
+ try {
107
+ if (transport.responseText.isJSON()) {
108
+ var response = transport.responseText.evalJSON();
109
+ var needUpdate = true;
110
+ if (response.error) {
111
+ alert(response.message);
112
+ needUpdate = false;
113
+ }
114
+ if(response.ajaxExpired && response.ajaxRedirect) {
115
+ setLocation(response.ajaxRedirect);
116
+ needUpdate = false;
117
+ }
118
+ if (needUpdate){
119
+ if (response.content){
120
+ $(categoryContainer).update(response.content);
121
+ }
122
+ if (response.messages){
123
+ $(messagesContainer).update(response.messages);
124
+ }
125
+ }
126
+ } else {
127
+ $(categoryContainer).update(transport.responseText);
128
+ }
129
+ }
130
+ catch (e) {
131
+ $(categoryContainer).update(transport.responseText);
132
+ }
133
+ }
134
+ });
135
+ }
136
+
137
+ /**
138
+ * Refresh tree nodes after saving or deleting a category
139
+ */
140
+ function refreshTreeArea(transport)
141
+ {
142
+ if (tree && window.editingCategoryBreadcrumbs) {
143
+ // category deleted - delete its node
144
+ if (tree.nodeForDelete) {
145
+ var node = tree.getNodeById(tree.nodeForDelete);
146
+ tree.nodeForDelete = false;
147
+
148
+ if (node) { // Check maybe tree became somehow not synced with ajax and we're trying to delete unknown node
149
+ node.parentNode.removeChild(node);
150
+ tree.currentNodeId = false;
151
+ }
152
+ }
153
+ // category created - add its node
154
+ else if (tree.addNodeTo) {
155
+ var parent = tree.getNodeById(tree.addNodeTo);
156
+ tree.addNodeTo = false;
157
+
158
+ if (parent) { // Check maybe tree became somehow not synced with ajax and we're trying to add to unknown node
159
+ var node = new Ext.tree.AsyncTreeNode(editingCategoryBreadcrumbs[editingCategoryBreadcrumbs.length - 1]);
160
+ node.loaded = true;
161
+ tree.currentNodeId = node.id;
162
+ parent.appendChild(node);
163
+
164
+ if (parent.expanded) {
165
+ tree.selectCurrentNode();
166
+ } else {
167
+ var timer;
168
+ parent.expand();
169
+ var f = function(){
170
+ if(parent.expanded){ // done expanding
171
+ clearInterval(timer);
172
+ tree.selectCurrentNode();
173
+ }
174
+ };
175
+ timer = setInterval(f, 200);
176
+ }
177
+ }
178
+ }
179
+
180
+ // update all affected categories nodes names
181
+ for (var i = 0; i < editingCategoryBreadcrumbs.length; i++) {
182
+ var node = tree.getNodeById(editingCategoryBreadcrumbs[i].id);
183
+ if (node) {
184
+ node.setText(editingCategoryBreadcrumbs[i].text);
185
+ }
186
+ }
187
+ }
188
+ }
189
+
190
+ function displayLoadingMask()
191
+ {
192
+ var loaderArea = $$('#html-body .wrapper')[0]; // Blocks all page
193
+ Position.clone($(loaderArea), $('loading-mask'), {offsetLeft:-2});
194
+ toggleSelectsUnderBlock($('loading-mask'), false);
195
+ Element.show('loading-mask');
196
+ }
197
+ //]]>
198
+ </script>
app/design/adminhtml/default/default/template/catalog/category/edit/form.phtml ADDED
@@ -0,0 +1,258 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <div class="content-header">
29
+ <h3 class="icon-head head-categories"><?php echo $this->htmlEscape($this->getHeader()) . ($this->getCategoryId() ? ' (' . Mage::helper('catalog')->__('ID: %s', $this->getCategoryId()) . ')' : '') ?></h3>
30
+ <p class="content-buttons form-buttons">
31
+ <?php echo $this->getResetButtonHtml() ?>
32
+ <?php if($this->getCategoryId()): ?>
33
+ <?php echo $this->getDeleteButtonHtml() ?>
34
+ <?php endif; ?>
35
+ <?php echo $this->getAdditionalButtonsHtml(); ?>
36
+ <?php echo $this->getSaveButtonHtml() ?>
37
+ </p>
38
+ </div>
39
+ <?php if($this->hasStoreRootCategory()): ?>
40
+ <?php echo $this->getTabsHtml() ?>
41
+ <?php else: ?>
42
+ <div class="messages warning-msg">
43
+ <?php echo Mage::helper('catalog')->__('Set root category for this store in the <a href="%s">configuration</a>', $this->getStoreConfigurationUrl()) ?>
44
+ </div>
45
+ <?php endif; ?>
46
+ <iframe name="iframeSave" style="display:none; width:100%;" src="<?php echo $this->getJsUrl() ?>blank.html"></iframe>
47
+ <form target="iframeSave" id="category_edit_form" action="<?php echo $this->getSaveUrl() ?>" method="post" enctype="multipart/form-data">
48
+ <div class="no-display">
49
+ <input type="hidden" name="isIframe" value="1" />
50
+ <input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />
51
+ <input type="hidden" name="category_products" id="in_category_products" value="" />
52
+ <input type="hidden" name="active_tab_id" id="active_tab_id" value="" />
53
+ </div>
54
+ <div id="category_tab_content"></div>
55
+ </form>
56
+ <script type="text/javascript">
57
+ //<![CDATA[
58
+ categoryForm = new varienForm('category_edit_form');
59
+
60
+ categoryForm.submit= function (url) {
61
+ this.errorSections = $H({});
62
+ this.canShowError = true;
63
+ this.submitUrl = url;
64
+ if (this.validator && this.validator.validate()) {
65
+ if(this.validationUrl){
66
+ this._validate();
67
+ }
68
+ else{
69
+ if (this.isSubmitted) {
70
+ return false;
71
+ }
72
+ this.isSubmitted = true;
73
+ this._submit();
74
+ }
75
+ displayLoadingMask();
76
+ return true;
77
+ }
78
+ return false;
79
+ };
80
+
81
+ categoryForm.refreshPath = function () {
82
+
83
+ categoryId = this.getCategoryId();
84
+
85
+ if (!categoryId) {
86
+ return false;
87
+ }
88
+
89
+ var refreshPathSuccess = function(transport) {
90
+ if (transport.responseText.isJSON()) {
91
+ response = transport.responseText.evalJSON()
92
+ if (response.error) {
93
+ alert(response.message);
94
+ } else {
95
+ if (categoryForm.getCategoryId() == response['id']) {
96
+ categoryForm.setCategoryPath(response['path']);
97
+ }
98
+ }
99
+ }
100
+ };
101
+
102
+ new Ajax.Request(
103
+ '<?php echo $this->getRefreshPathUrl() ?>',
104
+ {
105
+ method: 'POST',
106
+ evalScripts: true,
107
+ onSuccess: refreshPathSuccess
108
+ }
109
+ );
110
+
111
+ };
112
+
113
+ categoryForm.getCategoryId = function () {
114
+ collection = $(this.formId).getInputs('hidden','general[id]');
115
+ if (collection.size() > 0) {
116
+ return collection.first().value;
117
+ }
118
+ return false;
119
+ };
120
+
121
+ categoryForm.setCategoryPath = function (path) {
122
+ collection = $(this.formId).getInputs('hidden','general[path]');
123
+ if (collection.size() > 0) {
124
+ return collection.first().value = path;
125
+ }
126
+ };
127
+
128
+ /**
129
+ * Create/edit some category
130
+ */
131
+ function categorySubmit(url, useAjax) {
132
+ var activeTab = $('active_tab_id');
133
+ if (activeTab) {
134
+ if (activeTab.tabsJsObject && activeTab.tabsJsObject.activeTab) {
135
+ activeTab.value = activeTab.tabsJsObject.activeTab.id;
136
+ }
137
+ }
138
+
139
+ var params = {};
140
+ var fields = $('category_edit_form').getElementsBySelector('input', 'select');
141
+ for(var i=0;i<fields.length;i++){
142
+ if (!fields[i].name) {
143
+ continue;
144
+ }
145
+ params[fields[i].name] = fields[i].getValue();
146
+ }
147
+
148
+ // Get info about what we're submitting - to properly update tree nodes
149
+ var categoryId = params['general[id]'] ? params['general[id]'] : 0;
150
+ var isCreating = categoryId == 0; // Separate variable is needed because '0' in javascript converts to TRUE
151
+ var path = params['general[path]'].split('/');
152
+ var parentId = path.pop();
153
+ if (parentId == categoryId) { // Maybe path includes category id itself
154
+ parentId = path.pop();
155
+ }
156
+
157
+ // Make operations with category tree
158
+ if (isCreating) {
159
+ /* Some specific tasks for creating category */
160
+ if (!tree.currentNodeId) {
161
+ // First submit of form - select some node to be current
162
+ tree.currentNodeId = parentId;
163
+ }
164
+ tree.addNodeTo = parentId;
165
+ } else {
166
+ /* Some specific tasks for editing category */
167
+ // Maybe change category enabled/disabled style
168
+ if (tree && tree.storeId==0) {
169
+ var currentNode = tree.getNodeById(categoryId);
170
+
171
+ if (currentNode) {
172
+ if (parseInt(params['general[is_active]'])) {
173
+ var oldClass = 'no-active-category';
174
+ var newClass = 'active-category';
175
+ } else {
176
+ var oldClass = 'active-category';
177
+ var newClass = 'no-active-category';
178
+ }
179
+
180
+ Element.removeClassName(currentNode.ui.wrap.firstChild, oldClass);
181
+ Element.addClassName(currentNode.ui.wrap.firstChild, newClass);
182
+ }
183
+ }
184
+ }
185
+
186
+ // Submit form
187
+ categoryForm.submit();
188
+ }
189
+
190
+ <?php if(($block = $this->getLayout()->getBlock('category.product.grid')) && ($_gridJsObject=$block->getJsObjectName())): ?>
191
+
192
+ var categoryProducts = $H(<?php echo $this->getProductsJson() ?>);
193
+ $('in_category_products').value = categoryProducts.toQueryString();
194
+
195
+ function registerCategoryProduct(grid, element, checked){
196
+ if(checked){
197
+ if(element.positionElement){
198
+ element.positionElement.disabled = false;
199
+ categoryProducts.set(element.value, element.positionElement.value);
200
+ }
201
+ }
202
+ else{
203
+ if(element.positionElement){
204
+ element.positionElement.disabled = true;
205
+ }
206
+ categoryProducts.unset(element.value);
207
+ }
208
+ $('in_category_products').value = categoryProducts.toQueryString();
209
+ grid.reloadParams = {'selected_products[]':categoryProducts.keys()};
210
+ }
211
+ function categoryProductRowClick(grid, event){
212
+ var trElement = Event.findElement(event, 'tr');
213
+ var isInput = Event.element(event).tagName == 'INPUT';
214
+ if(trElement){
215
+ var checkbox = Element.getElementsBySelector(trElement, 'input');
216
+ if(checkbox[0]){
217
+ var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;
218
+ <?php echo $_gridJsObject ?>.setCheckboxChecked(checkbox[0], checked);
219
+ }
220
+ }
221
+ }
222
+ function positionChange(event){
223
+ var element = Event.element(event);
224
+ if(element && element.checkboxElement && element.checkboxElement.checked){
225
+ categoryProducts.set(element.checkboxElement.value, element.value);
226
+ $('in_category_products').value = categoryProducts.toQueryString();
227
+ }
228
+ }
229
+
230
+ var tabIndex = 1000;
231
+ function categoryProductRowInit(grid, row){
232
+ var checkbox = $(row).getElementsByClassName('checkbox')[0];
233
+ var position = $(row).getElementsByClassName('input-text')[0];
234
+ if(checkbox && position){
235
+ checkbox.positionElement = position;
236
+ position.checkboxElement = checkbox;
237
+ position.disabled = !checkbox.checked;
238
+ position.tabIndex = tabIndex++;
239
+ Event.observe(position,'keyup',positionChange);
240
+ }
241
+ }
242
+
243
+
244
+ <?php echo $_gridJsObject ?>.rowClickCallback = categoryProductRowClick;
245
+ <?php echo $_gridJsObject ?>.initRowCallback = categoryProductRowInit;
246
+ <?php echo $_gridJsObject ?>.checkboxCheckCallback = registerCategoryProduct;
247
+ <?php echo $_gridJsObject ?>.rows.each(function(row){categoryProductRowInit(<?php echo $_gridJsObject ?>, row)});
248
+
249
+ <?php endif; ?>
250
+ <?php if($this->isAjax() && ($block = $this->getLayout()->getBlock('tabs')) && ($_tabsJsObject=$block->getJsObjectName())): ?>
251
+ <?php echo $_tabsJsObject ?>.moveTabContentInDest();
252
+ if (<?php echo $_tabsJsObject ?>.activeTab) {
253
+ $('active_tab_id').value = <?php echo $_tabsJsObject ?>.activeTab.id;
254
+ }
255
+ $('active_tab_id').tabsJsObject = <?php echo $_tabsJsObject ?>;
256
+ <?php endif; ?>
257
+ //]]>
258
+ </script>
app/design/adminhtml/default/default/template/catalog/category/tree.phtml ADDED
@@ -0,0 +1,480 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="categories-side-col">
28
+ <div class="content-header">
29
+ <h3 class="icon-head head-categories"><?php echo Mage::helper('catalog')->__('Categories') ?></h3>
30
+ <?php if ($this->getRoot()): ?>
31
+ <?php echo $this->getAddRootButtonHtml() ?><br />
32
+ <?php echo $this->getAddSubButtonHtml() ?>
33
+ <?php endif; ?>
34
+ </div>
35
+ <?php echo $this->getStoreSwitcherHtml();?>
36
+ <div class="tree-actions">
37
+ <?php if($this->getRoot()): ?>
38
+ <?php //echo $this->getCollapseButtonHtml() ?>
39
+ <?php //echo $this->getExpandButtonHtml() ?>
40
+ <a href="#" onclick="tree.collapseTree(); return false;"><?php echo Mage::helper('catalog')->__('Collapse All'); ?></a> <span class="separator">|</span> <a href="#" onclick="tree.expandTree(); return false;"><?php echo Mage::helper('catalog')->__('Expand All'); ?></a>
41
+ <?php endif; ?>
42
+ </div>
43
+ <?php if ($this->getRoot()): ?>
44
+ <div class="tree-holder">
45
+ <div id="tree-div" style="width:100%; overflow:auto;"></div>
46
+ </div>
47
+ </div>
48
+ <script type="text/javascript">
49
+ //<![CDATA[
50
+ var tree;
51
+
52
+ /**
53
+ * Fix ext compatibility with prototype 1.6
54
+ */
55
+ Ext.lib.Event.getTarget = function(e) {
56
+ var ee = e.browserEvent || e;
57
+ return ee.target ? Event.element(ee) : null;
58
+ };
59
+
60
+ Ext.tree.TreePanel.Enhanced = function(el, config)
61
+ {
62
+ Ext.tree.TreePanel.Enhanced.superclass.constructor.call(this, el, config);
63
+ };
64
+
65
+ Ext.extend(Ext.tree.TreePanel.Enhanced, Ext.tree.TreePanel, {
66
+
67
+ loadTree : function(config, firstLoad)
68
+ {
69
+ var parameters = config['parameters'];
70
+ var data = config['data'];
71
+
72
+ this.storeId = parameters['store_id'];
73
+
74
+ if ( this.storeId != 0 && $('add_root_category_button')) {
75
+ $('add_root_category_button').hide();
76
+ }
77
+
78
+ if ((typeof parameters['root_visible']) != 'undefined') {
79
+ this.rootVisible = parameters['root_visible']*1;
80
+ }
81
+
82
+ var root = new Ext.tree.TreeNode(parameters);
83
+
84
+ this.nodeHash = {};
85
+ this.setRootNode(root);
86
+
87
+ if (firstLoad) {
88
+ this.addListener('click', this.categoryClick);
89
+ this.addListener('beforenodedrop', categoryMove.createDelegate(this));
90
+ }
91
+
92
+ this.loader.buildCategoryTree(root, data);
93
+ this.el.dom.innerHTML = '';
94
+ // render the tree
95
+ this.render();
96
+ if (parameters['expanded']) {
97
+ this.expandAll();
98
+ } else {
99
+ root.expand();
100
+ }
101
+
102
+ var selectedNode = this.getNodeById(parameters['category_id']);
103
+ if (selectedNode) {
104
+ this.currentNodeId = parameters['category_id'];
105
+ }
106
+ this.selectCurrentNode();
107
+ },
108
+
109
+ request : function(url, params)
110
+ {
111
+ if (!params) {
112
+ if (category_info_tabsJsTabs.activeTab) {
113
+ var params = {active_tab_id:category_info_tabsJsTabs.activeTab.id};
114
+ }
115
+ else {
116
+ var params = {};
117
+ }
118
+ }
119
+ if (!params.form_key) {
120
+ params.form_key = FORM_KEY;
121
+ }
122
+ var result = new Ajax.Request(
123
+ url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ),
124
+ {
125
+ parameters: params,
126
+ method: 'post'
127
+ }
128
+ );
129
+
130
+ return result;
131
+ },
132
+
133
+ selectCurrentNode : function()
134
+ {
135
+ if (this.currentNodeId) {
136
+ var selectedNode = this.getNodeById(this.currentNodeId);
137
+ if ((typeof selectedNode.attributes.path)!='undefined') {
138
+ var path = selectedNode.attributes.path;
139
+ if (!this.storeId) {
140
+ path = '0/'+path;
141
+ }
142
+ this.selectPath(path);
143
+ } else {
144
+ this.getSelectionModel().select(selectedNode);
145
+ }
146
+ }
147
+ },
148
+
149
+ collapseTree : function()
150
+ {
151
+ this.collapseAll();
152
+
153
+ this.selectCurrentNode();
154
+
155
+ if (!this.collapsed) {
156
+ this.collapsed = true;
157
+ this.loader.dataUrl = '<?php echo $this->getLoadTreeUrl(false) ?>';
158
+ this.request(this.loader.dataUrl, false);
159
+ }
160
+ },
161
+
162
+ expandTree : function()
163
+ {
164
+ this.expandAll();
165
+ if (this.collapsed) {
166
+ this.collapsed = false;
167
+ this.loader.dataUrl = '<?php echo $this->getLoadTreeUrl(true) ?>';
168
+ this.request(this.loader.dataUrl, false);
169
+ }
170
+ },
171
+
172
+ categoryClick : function(node, e)
173
+ {
174
+ var baseUrl = '<?php echo $this->getEditUrl() ?>';
175
+ var urlExt = (this.storeId?'store/'+this.storeId+'/':'')+'id/'+node.id+'/';
176
+ var url = parseSidUrl(baseUrl, urlExt);
177
+
178
+ this.currentNodeId = node.id;
179
+ if (!this.useAjax) {
180
+ setLocation(url);
181
+ return;
182
+ }
183
+ if (category_info_tabsJsTabs.activeTab) {
184
+ var params = {active_tab_id:category_info_tabsJsTabs.activeTab.id};
185
+ }
186
+ updateContent(url, params);
187
+ }
188
+ });
189
+
190
+ function reRenderTree(event, switcher)
191
+ {
192
+ // re-render tree by store switcher
193
+ if (tree && event) {
194
+ var obj = event.target;
195
+ var newStoreId = obj.value * 1;
196
+ var storeParam = newStoreId ? 'store/'+newStoreId + '/' : '';
197
+
198
+ if (obj.switchParams) {
199
+ storeParam += obj.switchParams;
200
+ }
201
+ if (switcher.useConfirm) {
202
+ if (!confirm("<?php echo $this->__('Please confirm site switching. All data that hasn\'t been saved will be lost.') ?>")){
203
+ obj.value = '<?php echo (int) $this->getStoreId() ?>';
204
+ return false;
205
+ }
206
+ }
207
+
208
+ if ($('add_root_category_button')) {
209
+ if (newStoreId == 0) {
210
+ $('add_root_category_button').show();
211
+ }
212
+ else {
213
+ $('add_root_category_button').hide();
214
+ }
215
+ }
216
+
217
+ // retain current selected category id
218
+ storeParam = storeParam + 'id/' + tree.currentNodeId + '/';
219
+ var url = tree.switchTreeUrl + storeParam;
220
+
221
+ // load from cache
222
+ // load from ajax
223
+ new Ajax.Request(url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ), {
224
+ parameters : {store: newStoreId, form_key: FORM_KEY},
225
+ method : 'post',
226
+ onComplete : function(transport) {
227
+ var response = eval('(' + transport.responseText + ')');
228
+ if (!response['parameters']) {
229
+ return false;
230
+ }
231
+
232
+ _renderNewTree(response, storeParam);
233
+ }
234
+ });
235
+ }
236
+ // render default tree
237
+ else {
238
+ _renderNewTree();
239
+ }
240
+ }
241
+
242
+ function _renderNewTree(config, storeParam)
243
+ {
244
+ if (!config) {
245
+ var config = defaultLoadTreeParams;
246
+ }
247
+ if (tree) {
248
+ tree.purgeListeners();
249
+ tree.el.dom.innerHTML = '';
250
+ }
251
+ tree = new Ext.tree.TreePanel.Enhanced('tree-div', newTreeParams);
252
+ tree.loadTree(config, true);
253
+
254
+ // try to select current category
255
+ var selectedNode = tree.getNodeById(config.parameters.category_id);
256
+ if (selectedNode) {
257
+ tree.currentNodeId = config.parameters.category_id;
258
+ }
259
+ tree.selectCurrentNode();
260
+
261
+ // update content area
262
+ var url = tree.editUrl;
263
+ if (storeParam) {
264
+ url = url + storeParam;
265
+ }
266
+ <?php if ($this->isClearEdit()):?>
267
+ if (selectedNode) {
268
+ url = url + 'id/' + config.parameters.category_id;
269
+ }
270
+ <?php endif;?>
271
+ updateContent(url);
272
+ }
273
+
274
+ Ext.onReady(function()
275
+ {
276
+ categoryLoader = new Ext.tree.TreeLoader({
277
+ dataUrl: '<?php echo $this->getLoadTreeUrl() ?>'
278
+ });
279
+
280
+ categoryLoader.createNode = function(config) {
281
+ var node;
282
+ var _node = Object.clone(config);
283
+ if (config.children && !config.children.length) {
284
+ delete(config.children);
285
+ node = new Ext.tree.AsyncTreeNode(config);
286
+ } else {
287
+ node = new Ext.tree.TreeNode(config);
288
+ }
289
+
290
+ return node;
291
+ };
292
+
293
+ categoryLoader.buildCategoryTree = function(parent, config)
294
+ {
295
+ if (!config) return null;
296
+
297
+ if (parent && config && config.length){
298
+ for (var i = 0; i < config.length; i++) {
299
+ var node;
300
+ var _node = Object.clone(config[i]);
301
+ if (_node.children && !_node.children.length) {
302
+ delete(_node.children);
303
+ node = new Ext.tree.AsyncTreeNode(_node);
304
+ } else {
305
+ node = new Ext.tree.TreeNode(config[i]);
306
+ }
307
+ parent.appendChild(node);
308
+ node.loader = node.getOwnerTree().loader;
309
+ if (_node.children) {
310
+ this.buildCategoryTree(node, _node.children);
311
+ }
312
+ }
313
+ }
314
+ };
315
+
316
+ categoryLoader.buildHash = function(node)
317
+ {
318
+ var hash = {};
319
+
320
+ hash = this.toArray(node.attributes);
321
+
322
+ if (node.childNodes.length>0 || (node.loaded==false && node.loading==false)) {
323
+ hash['children'] = new Array;
324
+
325
+ for (var i = 0, len = node.childNodes.length; i < len; i++) {
326
+ if (!hash['children']) {
327
+ hash['children'] = new Array;
328
+ }
329
+ hash['children'].push(this.buildHash(node.childNodes[i]));
330
+ }
331
+ }
332
+
333
+ return hash;
334
+ };
335
+
336
+ categoryLoader.toArray = function(attributes) {
337
+ var data = {form_key: FORM_KEY};
338
+ for (var key in attributes) {
339
+ var value = attributes[key];
340
+ data[key] = value;
341
+ }
342
+
343
+ return data;
344
+ };
345
+
346
+ categoryLoader.on("beforeload", function(treeLoader, node) {
347
+ treeLoader.baseParams.id = node.attributes.id;
348
+ treeLoader.baseParams.store = node.attributes.store;
349
+ treeLoader.baseParams.form_key = FORM_KEY;
350
+ });
351
+
352
+ categoryLoader.on("load", function(treeLoader, node, config) {
353
+ varienWindowOnload();
354
+ });
355
+
356
+ if ((typeof varienStoreSwitcher)!='undefined') {
357
+ varienStoreSwitcher.storeSelectorClickCallback = reRenderTree;
358
+ }
359
+
360
+ newTreeParams = {
361
+ animate : false,
362
+ loader : categoryLoader,
363
+ enableDD : true,
364
+ containerScroll : true,
365
+ selModel : new Ext.tree.CheckNodeMultiSelectionModel(),
366
+ rootVisible : '<?php echo $this->getRoot()->getIsVisible() ?>',
367
+ useAjax : <?php echo $this->getUseAjax() ?>,
368
+ switchTreeUrl : '<?php echo $this->getSwitchTreeUrl() ?>',
369
+ editUrl : '<?php echo $this->getEditUrl() ?>',
370
+ currentNodeId : <?php echo (int) $this->getCategoryId() ?>
371
+ };
372
+
373
+ defaultLoadTreeParams = {
374
+ parameters : {
375
+ text : '<?php echo htmlentities($this->getRoot()->getName()) ?>',
376
+ draggable : false,
377
+ allowDrop : <?php if ($this->getRoot()->getIsVisible()): ?>true<?php else : ?>false<?php endif; ?>,
378
+ id : <?php echo (int) $this->getRoot()->getId() ?>,
379
+ expanded : <?php echo (int) $this->getIsWasExpanded() ?>,
380
+ store_id : <?php echo (int) $this->getStore()->getId() ?>,
381
+ category_id : <?php echo (int) $this->getCategoryId() ?>
382
+ },
383
+ data : <?php echo $this->getTreeJson() ?>
384
+ };
385
+
386
+ reRenderTree();
387
+ });
388
+
389
+ function addNew(url, isRoot)
390
+ {
391
+ if (isRoot) {
392
+ tree.currentNodeId = tree.root.id;
393
+ }
394
+
395
+ if (/store\/\d+/.test(url)) {
396
+ url = url.replace(/store\/\d+/, "store/" + tree.storeId);
397
+ }
398
+ else {
399
+ url+= "store/" + tree.storeId + "/";
400
+ }
401
+
402
+ url+= 'parent/'+tree.currentNodeId;
403
+ updateContent(url);
404
+ }
405
+
406
+ function categoryMove(obj)
407
+ {
408
+ var data = {id: obj.dropNode.id, form_key: FORM_KEY};
409
+
410
+ data.point = obj.point;
411
+ switch (obj.point) {
412
+ case 'above' :
413
+ data.pid = obj.target.parentNode.id;
414
+ data.paid = obj.dropNode.parentNode.id;
415
+ if (obj.target.previousSibling) {
416
+ data.aid = obj.target.previousSibling.id;
417
+ } else {
418
+ data.aid = 0;
419
+ }
420
+ break;
421
+ case 'below' :
422
+ data.pid = obj.target.parentNode.id;
423
+ data.aid = obj.target.id;
424
+ break;
425
+ case 'append' :
426
+ data.pid = obj.target.id;
427
+ data.paid = obj.dropNode.parentNode.id;
428
+ if (obj.target.lastChild) {
429
+ data.aid = obj.target.lastChild.id;
430
+ } else {
431
+ data.aid = 0;
432
+ }
433
+ break;
434
+ default :
435
+ obj.cancel = true;
436
+ return obj;
437
+ }
438
+
439
+ var success = function(o) {
440
+ try {
441
+ if(o.responseText){
442
+ if(o.responseText==='SUCCESS'){
443
+ categoryForm.refreshPath();
444
+ } else {
445
+ alert(o.responseText);
446
+ location.reload();
447
+ }
448
+ }
449
+ }
450
+ catch(e) {
451
+ }
452
+ };
453
+
454
+ var failure = function(o) {
455
+ try {
456
+ console.log(o.statusText);
457
+ } catch (e2) {
458
+ alert(o.statusText);
459
+ }
460
+ location.reload();
461
+ };
462
+
463
+ var pd = [];
464
+ for(var key in data) {
465
+ pd.push(encodeURIComponent(key), "=", encodeURIComponent(data[key]), "&");
466
+ }
467
+ pd.splice(pd.length-1,1);
468
+ new Ajax.Request(
469
+ '<?php echo $this->getMoveUrl() ?>',
470
+ {
471
+ method: 'POST',
472
+ parameters: pd.join(""),
473
+ onSuccess : success,
474
+ onFailure : failure
475
+ }
476
+ );
477
+ }
478
+ //]]>
479
+ </script>
480
+ <?php endif; ?>
app/design/adminhtml/default/default/template/catalog/category/widget/tree.phtml ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php $_divId = 'tree' . $this->getId() ?>
29
+ <div id="<?php echo $_divId ?>" class="tree"></div>
30
+
31
+ <script type="text/javascript">
32
+ //<![CDATA[
33
+
34
+ var tree<?php echo $this->getId() ?>;
35
+
36
+ var useMassaction = <?php echo $this->getUseMassaction()?1:0; ?>;
37
+
38
+ var isAnchorOnly = <?php echo $this->getIsAnchorOnly()?1:0; ?>;
39
+
40
+ Ext.tree.TreePanel.Enhanced = function(el, config)
41
+ {
42
+ Ext.tree.TreePanel.Enhanced.superclass.constructor.call(this, el, config);
43
+ };
44
+
45
+ Ext.extend(Ext.tree.TreePanel.Enhanced, Ext.tree.TreePanel, {
46
+
47
+ loadTree : function(config, firstLoad)
48
+ {
49
+ var parameters = config['parameters'];
50
+ var data = config['data'];
51
+
52
+ if ((typeof parameters['root_visible']) != 'undefined') {
53
+ this.rootVisible = parameters['root_visible']*1;
54
+ }
55
+
56
+ var root = new Ext.tree.TreeNode(parameters);
57
+
58
+ this.nodeHash = {};
59
+ this.setRootNode(root);
60
+
61
+ if (firstLoad) {
62
+ <?php if ($this->getNodeClickListener()): ?>
63
+ this.addListener('click', <?php echo $this->getNodeClickListener() ?>.createDelegate(this));
64
+ <?php endif; ?>
65
+ }
66
+
67
+ this.loader.buildCategoryTree(root, data);
68
+ this.el.dom.innerHTML = '';
69
+ // render the tree
70
+ this.render();
71
+ }
72
+ });
73
+
74
+ Ext.onReady(function()
75
+ {
76
+ var emptyNodeAdded = <?php echo ($this->getWithEmptyNode() ? 'false' : 'true') ?>;
77
+
78
+ var categoryLoader = new Ext.tree.TreeLoader({
79
+ dataUrl: '<?php echo $this->getLoadTreeUrl() ?>'
80
+ });
81
+
82
+ categoryLoader.buildCategoryTree = function(parent, config)
83
+ {
84
+ if (!config) return null;
85
+
86
+
87
+ if (parent && config && config.length){
88
+ for (var i = 0; i < config.length; i++) {
89
+ var node;
90
+ if (useMassaction && config[i].is_anchor == isAnchorOnly) {
91
+ config[i].uiProvider = Ext.tree.CheckboxNodeUI;
92
+ }
93
+ var _node = Object.clone(config[i]);
94
+
95
+ // Add empty node to reset category filter
96
+ if(!emptyNodeAdded) {
97
+ var empty = Object.clone(_node);
98
+ empty.text = '<?php echo $this->__('None') ?>';
99
+ empty.children = [];
100
+ empty.id = 'none';
101
+ empty.path = '1/none';
102
+ empty.cls = 'leaf';
103
+ parent.appendChild(new Ext.tree.TreeNode(empty));
104
+ emptyNodeAdded = true;
105
+ }
106
+
107
+ if (_node.children && !_node.children.length) {
108
+ delete(_node.children);
109
+ node = new Ext.tree.AsyncTreeNode(_node);
110
+ } else {
111
+ node = new Ext.tree.TreeNode(config[i]);
112
+ }
113
+ parent.appendChild(node);
114
+ node.loader = node.getOwnerTree().loader;
115
+ node.loader = node.getOwnerTree().loader;
116
+ if (_node.children) {
117
+ this.buildCategoryTree(node, _node.children);
118
+ }
119
+ }
120
+ }
121
+ };
122
+
123
+ categoryLoader.createNode = function(config) {
124
+ var node;
125
+ if (useMassaction && config.is_anchor == isAnchorOnly) {
126
+ config.uiProvider = Ext.tree.CheckboxNodeUI;
127
+ }
128
+ var _node = Object.clone(config);
129
+ if (config.children && !config.children.length) {
130
+ delete(config.children);
131
+ node = new Ext.tree.AsyncTreeNode(config);
132
+ } else {
133
+ node = new Ext.tree.TreeNode(config);
134
+ }
135
+ return node;
136
+ };
137
+
138
+ categoryLoader.buildHash = function(node)
139
+ {
140
+ var hash = {};
141
+
142
+ hash = this.toArray(node.attributes);
143
+
144
+ if (node.childNodes.length>0 || (node.loaded==false && node.loading==false)) {
145
+ hash['children'] = new Array;
146
+
147
+ for (var i = 0, len = node.childNodes.length; i < len; i++) {
148
+ if (!hash['children']) {
149
+ hash['children'] = new Array;
150
+ }
151
+ hash['children'].push(this.buildHash(node.childNodes[i]));
152
+ }
153
+ }
154
+
155
+ return hash;
156
+ };
157
+
158
+ categoryLoader.toArray = function(attributes) {
159
+ var data = {};
160
+ for (var key in attributes) {
161
+ var value = attributes[key];
162
+ data[key] = value;
163
+ }
164
+
165
+ return data;
166
+ };
167
+
168
+ categoryLoader.on("beforeload", function(treeLoader, node) {
169
+ treeLoader.baseParams.id = node.attributes.id;
170
+ });
171
+
172
+ tree<?php echo $this->getId() ?> = new Ext.tree.TreePanel.Enhanced('<?php echo $_divId ?>', {
173
+ animate: false,
174
+ loader: categoryLoader,
175
+ enableDD: false,
176
+ containerScroll: true,
177
+ rootVisible: '<?php echo $this->getRoot()->getIsVisible() ?>',
178
+ useAjax: true,
179
+ currentNodeId: <?php echo (int) $this->getCategoryId() ?>,
180
+ addNodeTo: false
181
+ });
182
+
183
+ if (useMassaction) {
184
+ tree<?php echo $this->getId() ?>.on('check', function(node) {
185
+ $('<?php echo $_divId; ?>').fire('node:changed', {node:node});
186
+ }, tree<?php echo $this->getId() ?>);
187
+ }
188
+
189
+ // set the root node
190
+ var parameters = {
191
+ text: 'Psw',
192
+ draggable: false,
193
+ id: <?php echo (int) $this->getRoot()->getId() ?>,
194
+ expanded: <?php echo (int) $this->getIsWasExpanded() ?>,
195
+ category_id: <?php echo (int) $this->getCategoryId() ?>
196
+ };
197
+
198
+ tree<?php echo $this->getId() ?>.loadTree({parameters:parameters, data:<?php echo $this->getTreeJson() ?>},true);
199
+
200
+ });
201
+ //]]>
202
+ </script>
app/design/adminhtml/default/default/template/catalog/form/renderer/fieldset/element.phtml ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Adminhtml_Block_Catalog_Form_Renderer_Fieldset_Element
30
+ */
31
+ ?>
32
+ <?php $_element = $this->getElement() ?>
33
+ <?php $this->checkFieldDisable() ?>
34
+
35
+ <?php if ($_element->getType()=='hidden'): ?>
36
+ <tr>
37
+ <td class="hidden" colspan="100"><?php echo trim($_element->getElementHtml()) ?></td>
38
+ </tr>
39
+ <?php else: ?>
40
+ <tr>
41
+ <td class="label"><?php echo trim($this->getElementLabelHtml()) ?></td>
42
+ <td class="value">
43
+ <?php echo trim($this->getElementHtml()) ?>
44
+ <?php if ($_element->getNote()) : ?>
45
+ <p class="note"><?php echo $_element->getNote() ?></p>
46
+ <?php endif; ?>
47
+ </td>
48
+ <td class="scope-label"><span class="nobr"><?php echo $this->getScopeLabel() ?></span></td>
49
+ <?php if ($this->canDisplayUseDefault()): ?>
50
+ <td class="value use-default">
51
+ <input <?php if($_element->getReadonly()):?> disabled="disabled"<?php endif; ?> type="checkbox" name="use_default[]" id="<?php echo $_element->getHtmlId() ?>_default"<?php if ($this->usedDefault()): ?> checked="checked"<?php endif; ?> onclick="toggleValueElements(this, this.parentNode.parentNode)" value="<?php echo $this->getAttributeCode() ?>"/>
52
+ <label for="<?php echo $_element->getHtmlId() ?>_default" class="normal"><?php echo $this->__('Use Default Value') ?></label>
53
+ </td>
54
+ <?php endif; ?>
55
+ </tr>
56
+ <?php endif; ?>
app/design/adminhtml/default/default/template/catalog/product.phtml ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Adminhtml_Block_Catalog_Product
30
+ */
31
+ ?>
32
+ <div class="content-header">
33
+ <table cellspacing="0">
34
+ <tr>
35
+ <td style="width:50%;"><h3 class="icon-head head-products"><?php echo Mage::helper('catalog')->__('Manage Products') ?></h3></td>
36
+ <td class="a-right">
37
+ <?php echo $this->getButtonsHtml() ?>
38
+ </td>
39
+ </tr>
40
+ </table>
41
+ </div>
42
+ <?php if( !$this->isSingleStoreMode() ): ?>
43
+ <?php echo $this->getChildHtml('store_switcher');?>
44
+ <?php endif;?>
45
+ <div>
46
+ <?php echo $this->getGridHtml() ?>
47
+ </div>
app/design/adminhtml/default/default/template/catalog/product/attribute/js.phtml ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+ function saveAndContinueEdit(){
30
+ disableElements('save');
31
+ var activeTab = product_attribute_tabsJsTabs.activeTab.id;
32
+ if (editForm.submit($('edit_form').action+'back/edit/tab/' + activeTab) == false) {
33
+ enableElements('save');
34
+ }
35
+ varienGlobalEvents.attachEventHandler('formValidateAjaxComplete', function (){
36
+ enableElements('save');
37
+ });
38
+ }
39
+
40
+ function saveAttribute(){
41
+ disableElements('save');
42
+ if (editForm.submit() == false){
43
+ enableElements('save');
44
+ }
45
+ varienGlobalEvents.attachEventHandler('formValidateAjaxComplete', function (){
46
+ enableElements('save');
47
+ });
48
+ }
49
+
50
+ function toggleApplyVisibility(select) {
51
+ if ($(select).value == 1) {
52
+ $(select).next('select').removeClassName('no-display');
53
+ $(select).next('select').removeClassName('ignore-validate');
54
+
55
+ } else {
56
+ $(select).next('select').addClassName('no-display');
57
+ $(select).next('select').addClassName('ignore-validate');
58
+ var options = $(select).next('select').options;
59
+ for( var i=0; i < options.length; i++) {
60
+ options[i].selected = false;
61
+ }
62
+ }
63
+ }
64
+
65
+ function checkOptionsPanelVisibility(){
66
+ if($('matage-options-panel')){
67
+ var panel = $('matage-options-panel');
68
+ if($('frontend_input') && ($('frontend_input').value=='select' || $('frontend_input').value=='multiselect')){
69
+ panel.show();
70
+ }
71
+ else {
72
+ panel.hide();
73
+ }
74
+ }
75
+ }
76
+
77
+ function bindAttributeInputType()
78
+ {
79
+ checkOptionsPanelVisibility();
80
+ switchDefaultValueField();
81
+ checkIsConfigurableVisibility();
82
+ if($('frontend_input') && ($('frontend_input').value=='select' || $('frontend_input').value=='multiselect' || $('frontend_input').value=='price')){
83
+ if($('is_filterable') && !$('is_filterable').getAttribute('readonly')){
84
+ $('is_filterable').disabled = false;
85
+ }
86
+ if($('is_filterable_in_search') && !$('is_filterable_in_search').getAttribute('readonly')){
87
+ $('is_filterable_in_search').disabled = false;
88
+ }
89
+ if($('backend_type') && $('backend_type').options){
90
+ for(var i=0;i<$('backend_type').options.length;i++){
91
+ if($('backend_type').options[i].value=='int') $('backend_type').selectedIndex = i;
92
+ }
93
+ }
94
+ }
95
+ else {
96
+ if($('is_filterable')){
97
+ $('is_filterable').selectedIndex=0;
98
+ $('is_filterable').disabled = true;
99
+ }
100
+ if($('is_filterable_in_search')){
101
+ $('is_filterable_in_search').disabled = true;
102
+ }
103
+ }
104
+
105
+ if ($('frontend_input') && ($('frontend_input').value=='multiselect'
106
+ || $('frontend_input').value=='gallery'
107
+ || $('frontend_input').value=='textarea')) {
108
+ if ($('used_for_sort_by')) {
109
+ $('used_for_sort_by').disabled = true;
110
+ }
111
+ }
112
+ else {
113
+ if ($('used_for_sort_by') && !$('used_for_sort_by').getAttribute('readonly')) {
114
+ $('used_for_sort_by').disabled = false;
115
+ }
116
+ }
117
+
118
+ setRowVisibility('is_wysiwyg_enabled', false);
119
+ setRowVisibility('is_html_allowed_on_front', false);
120
+ if ($('frontend_input').value=='textarea') {
121
+ setRowVisibility('is_wysiwyg_enabled', true);
122
+ if($('is_wysiwyg_enabled').value == '0'){
123
+ setRowVisibility('is_html_allowed_on_front', true);
124
+ $('is_html_allowed_on_front').disabled = false;
125
+ }
126
+ $('frontend_class').value = '';
127
+ $('frontend_class').disabled = true;
128
+ }
129
+ else if($('frontend_input').value=='text'){
130
+ setRowVisibility('is_html_allowed_on_front', true);
131
+ $('is_html_allowed_on_front').disabled = false;
132
+
133
+ if (!$('frontend_class').getAttribute('readonly')) {
134
+ $('frontend_class').disabled = false;
135
+ }
136
+ }
137
+ else{
138
+ $('frontend_class').value = '';
139
+ $('frontend_class').disabled = true;
140
+ }
141
+
142
+ switchIsFilterable();
143
+ }
144
+
145
+ function switchIsFilterable()
146
+ {
147
+ if ($('is_filterable')) {
148
+ if ($('is_filterable').selectedIndex == 0) {
149
+ $('position').disabled = true;
150
+ } else {
151
+ if (!$('position').getAttribute('readonly')){
152
+ $('position').disabled = false;
153
+ }
154
+ }
155
+ }
156
+ }
157
+
158
+ function disableApplyToValue(value)
159
+ {
160
+ var applyToSelect = $('apply_to');
161
+ for (i=0;i<applyToSelect.options.length;i++) {
162
+ if (value == applyToSelect.options[i].value) {
163
+ applyToSelect.options[i].disabled = true;
164
+ applyToSelect.options[i].selected = false;
165
+ }
166
+ }
167
+ }
168
+
169
+ function switchDefaultValueField()
170
+ {
171
+ if (!$('frontend_input')) {
172
+ return;
173
+ }
174
+
175
+ var currentValue = $('frontend_input').value;
176
+
177
+ var defaultValueTextVisibility = false;
178
+ var defaultValueTextareaVisibility = false;
179
+ var defaultValueDateVisibility = false;
180
+ var defaultValueYesnoVisibility = false;
181
+ var scopeVisibility = true;
182
+
183
+ switch (currentValue) {
184
+ case 'select':
185
+ optionDefaultInputType = 'radio';
186
+ break;
187
+
188
+ case 'multiselect':
189
+ optionDefaultInputType = 'checkbox';
190
+ break;
191
+
192
+ case 'date':
193
+ defaultValueDateVisibility = true;
194
+ break;
195
+
196
+ case 'boolean':
197
+ defaultValueYesnoVisibility = true;
198
+ break;
199
+
200
+ case 'textarea':
201
+ defaultValueTextareaVisibility = true;
202
+ break;
203
+
204
+ case 'media_image':
205
+ defaultValueTextVisibility = false;
206
+ break;
207
+ case 'price':
208
+ scopeVisibility = false;
209
+ default:
210
+ defaultValueTextVisibility = true;
211
+ break;
212
+ }
213
+
214
+ var applyToSelect = $('apply_to');
215
+ switch (currentValue) {
216
+ <?php foreach (Mage::helper('catalog')->getAttributeDisabledTypes() as $type=>$disabled): ?>
217
+ case '<?php echo $type; ?>':
218
+ <?php foreach ($disabled as $one): ?>
219
+ disableApplyToValue('<?php echo $one; ?>');
220
+ <?php endforeach; ?>
221
+ break;
222
+ <?php endforeach; ?>
223
+ default:
224
+ for (i=0;i<applyToSelect.options.length;i++) {
225
+ applyToSelect.options[i].disabled = false;
226
+ }
227
+ break;
228
+ }
229
+
230
+ switch (currentValue) {
231
+ case 'media_image':
232
+ $('front_fieldset').previous().hide();
233
+ $('front_fieldset').hide();
234
+
235
+ setRowVisibility('is_required', false);
236
+ setRowVisibility('is_unique', false);
237
+ setRowVisibility('frontend_class', false);
238
+ break;
239
+
240
+ <?php foreach (Mage::helper('catalog')->getAttributeHiddenFields() as $type=>$fields): ?>
241
+ case '<?php echo $type; ?>':
242
+ <?php foreach ($fields as $one): ?>
243
+ <?php if ($one == '_front_fieldset'): ?>
244
+ $('front_fieldset').previous().hide();
245
+ $('front_fieldset').hide();
246
+ <?php elseif ($one == '_default_value'): ?>
247
+ defaultValueTextVisibility =
248
+ defaultValueTextareaVisibility =
249
+ defaultValueDateVisibility =
250
+ defaultValueYesnoVisibility = false;
251
+ <?php elseif ($one == '_scope'): ?>
252
+ scopeVisibility = false;
253
+ <?php else: ?>
254
+ setRowVisibility('<?php echo $one; ?>', false);
255
+ <?php endif; ?>
256
+ <?php endforeach; ?>
257
+ break;
258
+ <?php endforeach; ?>
259
+
260
+ default:
261
+ $('front_fieldset').previous().show();
262
+ $('front_fieldset').show();
263
+ setRowVisibility('is_required', true);
264
+ setRowVisibility('is_unique', true);
265
+ setRowVisibility('frontend_class', true);
266
+ setRowVisibility('is_configurable', true);
267
+ break;
268
+ }
269
+
270
+ setRowVisibility('default_value_text', defaultValueTextVisibility);
271
+ setRowVisibility('default_value_textarea', defaultValueTextareaVisibility);
272
+ setRowVisibility('default_value_date', defaultValueDateVisibility);
273
+ setRowVisibility('default_value_yesno', defaultValueYesnoVisibility);
274
+ setRowVisibility('is_global', scopeVisibility);
275
+
276
+ var elems = document.getElementsByName('default[]');
277
+ for (var i = 0; i < elems.length; i++) {
278
+ elems[i].type = optionDefaultInputType;
279
+ }
280
+ }
281
+
282
+ function setRowVisibility(id, isVisible)
283
+ {
284
+ if ($(id)) {
285
+ var td = $(id).parentNode;
286
+ var tr = $(td.parentNode);
287
+
288
+ if (isVisible) {
289
+ tr.show();
290
+ } else {
291
+ tr.blur();
292
+ tr.hide();
293
+ }
294
+ }
295
+ }
296
+
297
+ function checkIsConfigurableVisibility()
298
+ {
299
+ if (!$('is_configurable') || !$('is_global') || !$('frontend_input')) return;
300
+ if ($F('is_global')==1 && $F('frontend_input')=='select') {
301
+ setRowVisibility('is_configurable', true);
302
+ } else {
303
+ setRowVisibility('is_configurable', false);
304
+ }
305
+ }
306
+
307
+ function updateRequriedOptions()
308
+ {
309
+ if ($F('frontend_input')=='select' && $F('is_required')==1) {
310
+ $('option-count-check').addClassName('required-options-count');
311
+ } else {
312
+ $('option-count-check').removeClassName('required-options-count');
313
+ }
314
+ }
315
+
316
+ if($('frontend_input')){
317
+ Event.observe($('frontend_input'), 'change', updateRequriedOptions);
318
+ Event.observe($('frontend_input'), 'change', bindAttributeInputType);
319
+ Event.observe($('is_global'), 'change', checkIsConfigurableVisibility);
320
+ }
321
+
322
+ if ($('is_filterable')) {
323
+ Event.observe($('is_filterable'), 'change', switchIsFilterable);
324
+ }
325
+
326
+ if ($('is_required')) {
327
+ Event.observe($('is_required'), 'change', updateRequriedOptions);
328
+ }
329
+ bindAttributeInputType();
330
+ //]]>
331
+ </script>
app/design/adminhtml/default/default/template/catalog/product/attribute/new/created.phtml ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ var added = false;
29
+ function addAttribute(closeAfter) {
30
+ if(window.opener!=null && !added) {
31
+ window.opener.Product.AttributesBridge.addAttributeRow(<?php echo $this->getAttributesBlockJson() ?>);
32
+ added = true;
33
+ }
34
+
35
+ if(closeAfter)
36
+ {
37
+ closeWindow();
38
+ }
39
+ }
40
+
41
+ function closeWindow()
42
+ {
43
+ if (window.opener) {
44
+ window.opener.focus();
45
+ }
46
+ window.close();
47
+ }
48
+
49
+ addAttribute(false);
50
+ setTimeout(closeWindow, 3000);
51
+ </script>
52
+ <div class="a-center">
53
+ <?php echo $this->getCloseButtonHtml() ?>
54
+ </div>
app/design/adminhtml/default/default/template/catalog/product/attribute/options.phtml ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Attribute otions control
30
+ *
31
+ * @see Mage_Adminhtml_Block_Catalog_Product_Attribute_Edit_Tab_Options
32
+ */
33
+ ?>
34
+ <div>
35
+ <ul class="messages">
36
+ <li class="notice-msg">
37
+ <ul>
38
+ <li><?php echo Mage::helper('catalog')->__('If you do not specify an option value for a specific store view then the default (Admin) value will be used.') ?></li>
39
+ </ul>
40
+ </li>
41
+ </ul>
42
+ </div>
43
+
44
+ <div class="entity-edit">
45
+ <div class="entry-edit-head">
46
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Manage Titles (Size, Color, etc.)') ?></h4>
47
+ </div>
48
+ <div class="box">
49
+ <div class="hor-scroll">
50
+ <table class="dynamic-grid" cellspacing="0" id="attribute-labels-table">
51
+ <tr>
52
+ <?php foreach ($this->getStores() as $_store): ?>
53
+ <th><?php echo $_store->getName() ?></th>
54
+ <?php endforeach; ?>
55
+ </tr>
56
+ <tr>
57
+ <?php $_labels = $this->getLabelValues() ?>
58
+ <?php foreach ($this->getStores() as $_store): ?>
59
+ <td>
60
+ <input class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" name="frontend_label[<?php echo $_store->getId() ?>]" value="<?php echo $this->htmlEscape($_labels[$_store->getId()]) ?>"<?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/>
61
+ </td>
62
+ <?php endforeach; ?>
63
+ </tr>
64
+ </table>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <br/>
69
+ <div class="entity-edit" id="matage-options-panel">
70
+ <div class="entry-edit-head">
71
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Manage Options (values of your attribute)') ?></h4>
72
+ </div>
73
+ <div class="box">
74
+ <div class="hor-scroll">
75
+ <table class="dynamic-grid" cellspacing="0" cellpadding="0">
76
+ <tr id="attribute-options-table">
77
+ <?php foreach ($this->getStores() as $_store): ?>
78
+ <th><?php echo $_store->getName() ?></th>
79
+ <?php endforeach; ?>
80
+ <th><?php echo Mage::helper('catalog')->__('Position') ?></th>
81
+ <th class="nobr a-center"><?php echo Mage::helper('catalog')->__('Is Default') ?></th>
82
+ <th>
83
+ <?php if (!$this->getReadOnly()):?>
84
+ <?php echo $this->getAddNewButtonHtml() ?>
85
+ <?php endif;?>
86
+ </th>
87
+ </tr>
88
+ <tr class="no-display template" id="row-template">
89
+ <?php foreach ($this->getStores() as $_store): ?>
90
+ <td><input name="option[value][{{id}}][<?php echo $_store->getId() ?>]" value="{{store<?php echo $_store->getId() ?>}}" class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/></td>
91
+ <?php endforeach; ?>
92
+ <td class="a-center"><input class="input-text" type="text" name="option[order][{{id}}]" value="{{sort_order}}" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/></td>
93
+ <td><input class="input-radio" type="radio" name="default[]" value="{{id}}" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/></td>
94
+ <td class="a-left">
95
+ <input type="hidden" class="delete-flag" name="option[delete][{{id}}]" value="" />
96
+ <?php if (!$this->getReadOnly()):?>
97
+ <?php echo $this->getDeleteButtonHtml() ?>
98
+ <?php endif;?>
99
+ </td>
100
+ </tr>
101
+ </table>
102
+ </div>
103
+ <input type="hidden" id="option-count-check" value="" />
104
+ </div>
105
+ </div>
106
+ <script type="text/javascript">
107
+ //<![CDATA[
108
+ var optionDefaultInputType = 'radio';
109
+
110
+ // IE removes quotes from element.innerHTML whenever it thinks they're not needed, which breaks html.
111
+ var templateText =
112
+ '<tr class="option-row">'+
113
+ <?php foreach ($this->getStores() as $_store): ?>
114
+ '<td><input name="option[value][{{id}}][<?php echo $_store->getId() ?>]" value="{{store<?php echo $_store->getId() ?>}}" class="input-text<?php if($_store->getId()==0): ?> required-option<?php endif; ?>" type="text" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/><\/td>'+
115
+ <?php endforeach; ?>
116
+ '<td><input class="input-text" type="text" name="option[order][{{id}}]" value="{{sort_order}}" <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/><\/td>'+
117
+ '<td class="a-center"><input class="input-radio" type="{{intype}}" name="default[]" value="{{id}}" {{checked}} <?php if ($this->getReadOnly()):?> disabled="disabled"<?php endif;?>/><\/td>'+
118
+ '<td class="a-left">'+
119
+ '<input type="hidden" class="delete-flag" name="option[delete][{{id}}]" value="" />'+
120
+ <?php if (!$this->getReadOnly()):?>
121
+ '<?php echo $this->getDeleteButtonHtml() ?>'+
122
+ <?php endif;?>
123
+ '<\/td>'+
124
+ '<\/tr>';
125
+
126
+ var attributeOption = {
127
+ table : $('attribute-options-table'),
128
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
129
+ templateText : templateText,
130
+ itemCount : 0,
131
+ totalItems : 0,
132
+ add : function(data) {
133
+ this.template = new Template(this.templateText, this.templateSyntax);
134
+ if(!data.id){
135
+ data = {};
136
+ data.id = 'option_'+this.itemCount;
137
+ }
138
+ if (!data.intype)
139
+ data.intype = optionDefaultInputType;
140
+
141
+ Element.insert(this.table, {after: this.template.evaluate(data)});
142
+ this.bindRemoveButtons();
143
+ this.itemCount++;
144
+ this.totalItems++;
145
+ this.updateItemsCountField();
146
+ },
147
+ remove : function(event){
148
+ var element = $(Event.findElement(event, 'tr')); // !!! Button already
149
+ // have table parent in safari
150
+ // Safari workaround
151
+ element.ancestors().each(function(parentItem){
152
+ if (parentItem.hasClassName('option-row')) {
153
+ element = parentItem;
154
+ throw $break;
155
+ } else if (parentItem.hasClassName('box')) {
156
+ throw $break;
157
+ }
158
+ });
159
+
160
+
161
+ if(element){
162
+ var elementFlags = element.getElementsByClassName('delete-flag');
163
+ if(elementFlags[0]){
164
+ elementFlags[0].value=1;
165
+ }
166
+
167
+ element.addClassName('no-display');
168
+ element.addClassName('template');
169
+ element.hide();
170
+ this.totalItems--;
171
+ this.updateItemsCountField();
172
+ }
173
+ },
174
+ updateItemsCountField: function() {
175
+ if (this.totalItems > 0) {
176
+ $('option-count-check').value = '1';
177
+ } else {
178
+ $('option-count-check').value = '';
179
+ }
180
+ },
181
+ bindRemoveButtons : function(){
182
+ var buttons = $$('.delete-option');
183
+ for(var i=0;i<buttons.length;i++){
184
+ if(!$(buttons[i]).binded){
185
+ $(buttons[i]).binded = true;
186
+ Event.observe(buttons[i], 'click', this.remove.bind(this));
187
+ }
188
+ }
189
+ }
190
+
191
+ }
192
+ if($('row-template')){
193
+ $('row-template').remove();
194
+ }
195
+ attributeOption.bindRemoveButtons();
196
+
197
+ if($('add_new_option_button')){
198
+ Event.observe('add_new_option_button', 'click', attributeOption.add.bind(attributeOption));
199
+ }
200
+ Validation.addAllThese([
201
+ ['required-option', '<?php echo Mage::helper('catalog')->__('Failed') ?>', function(v) {
202
+ return !Validation.get('IsEmpty').test(v);
203
+ }]]);
204
+ Validation.addAllThese([
205
+ ['required-options-count', '<?php echo Mage::helper('catalog')->__('Options is required') ?>', function(v) {
206
+ return !Validation.get('IsEmpty').test(v);
207
+ }]]);
208
+ <?php foreach ($this->getOptionValues() as $_value): ?>
209
+ attributeOption.add(<?php echo $_value->toJson() ?>);
210
+ <?php endforeach; ?>
211
+ //]]>
212
+ </script>
app/design/adminhtml/default/default/template/catalog/product/attribute/set/main.phtml ADDED
@@ -0,0 +1,461 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-product-attribute-sets"><?php echo $this->htmlEscape($this->_getHeader()) ?></h3></td>
31
+ <td class="form-buttons">
32
+ <?php echo $this->getBackButtonHtml() ?>
33
+ <?php echo $this->getResetButtonHtml() ?>
34
+ <?php echo $this->getDeleteButtonHtml() ?>
35
+ <?php echo $this->getSaveButtonHtml() ?>
36
+ </td>
37
+ </tr>
38
+ </table>
39
+ </div>
40
+ <table cellspacing="0" width="100%">
41
+ <tr>
42
+ <td width="360" style="border-right:1px solid #ddd; padding:0 23px 23px 0;" class="edit-attribute-set">
43
+ <?php echo $this->getSetFormHtml() ?>
44
+ </td>
45
+ <td width="320" style="border-right:1px solid #ddd; padding:0 23px 23px 23px;">
46
+ <div class="content-header skip-header">
47
+ <table cellspacing="0">
48
+ <tbody>
49
+ <tr>
50
+ <td><h3><?php echo Mage::helper('catalog')->__('Groups') ?></h3></td>
51
+ </tr>
52
+ </tbody>
53
+ </table>
54
+ </div>
55
+
56
+ <?php if (!$this->getIsReadOnly()): ?>
57
+ <p><?php echo $this->getAddGroupButton() ?>&nbsp;<?php echo $this->getDeleteGroupButton() ?></p>
58
+ <p class="note-block"><?php echo Mage::helper('catalog')->__('Double click on a group to rename it') ?></p>
59
+ <?php endif; ?>
60
+
61
+ <?php echo $this->getSetsFilterHtml() ?>
62
+ <?php echo $this->getGroupTreeHtml() ?>
63
+ </td>
64
+ <td style="padding:0 0 23px 23px;">
65
+ <div class="content-header skip-header">
66
+ <table cellspacing="0">
67
+ <tbody>
68
+ <tr>
69
+ <td><h3><?php echo Mage::helper('catalog')->__('Unassigned Attributes') ?></h3></td>
70
+ </tr>
71
+ </tbody>
72
+ </table>
73
+ </div>
74
+ <div id="tree-div2" style="height:400px; margin-top:5px;overflow:auto"></div>
75
+ <script type="text/javascript">
76
+ //<![CDATA[
77
+ var allowDragAndDrop = <?php echo ($this->getIsReadOnly() ? 'false' : 'true'); ?>;
78
+ var canEditGroups = <?php echo ($this->getIsReadOnly() ? 'false' : 'true'); ?>;
79
+
80
+ var TreePanels = function() {
81
+ // shorthand
82
+ var Tree = Ext.tree;
83
+
84
+ return {
85
+ init : function(){
86
+ // yui-ext tree
87
+
88
+ var tree = new Ext.tree.TreePanel('tree-div1', {
89
+ animate:false,
90
+ loader: false,
91
+ enableDD:allowDragAndDrop,
92
+ containerScroll: true,
93
+ rootVisible: false
94
+ });
95
+
96
+ // set the root node
97
+ this.root = new Ext.tree.TreeNode({
98
+ text: 'ROOT',
99
+ allowDrug:false,
100
+ allowDrop:true,
101
+ id:'1'
102
+ });
103
+
104
+ tree.setRootNode(this.root);
105
+ buildCategoryTree(this.root, <?php echo $this->getGroupTreeJson() ?>);
106
+ // render the tree
107
+ tree.render();
108
+ this.root.expand(false, false);
109
+ tree.expandAll();
110
+
111
+ this.ge = new Ext.tree.TreeEditor(tree, {
112
+ allowBlank:false,
113
+ blankText:'<?php echo Mage::helper('catalog')->__('A name is required') ?>',
114
+ selectOnFocus:true,
115
+ cls:'folder'
116
+ });
117
+
118
+ this.root.addListener('beforeinsert', editSet.leftBeforeInsert);
119
+ this.root.addListener('beforeappend', editSet.leftBeforeInsert);
120
+
121
+ //this.ge.addListener('beforerender', editSet.editGroup);
122
+ this.ge.addListener('beforeshow', editSet.editGroup);
123
+ this.ge.addListener('beforecomplete', editSet.beforeRenameGroup);
124
+ //this.ge.addListener('startedit', editSet.editGroup);
125
+
126
+ //-------------------------------------------------------------
127
+
128
+ var tree2 = new Ext.tree.TreePanel('tree-div2', {
129
+ animate:false,
130
+ loader: false,
131
+ enableDD:allowDragAndDrop,
132
+ containerScroll: true,
133
+ rootVisible: false,
134
+ lines:false
135
+ });
136
+
137
+ // set the root node
138
+ this.root2 = new Ext.tree.TreeNode({
139
+ text: 'ROOT',
140
+ draggable:false,
141
+ id:'free'
142
+ });
143
+ tree2.setRootNode(this.root2);
144
+ buildCategoryTree(this.root2, <?php echo $this->getAttributeTreeJson() ?>);
145
+
146
+ this.root2.addListener('beforeinsert', editSet.rightBeforeInsert);
147
+ this.root2.addListener('beforeappend', editSet.rightBeforeAppend);
148
+
149
+ this.root2.addListener('append', editSet.rightAppend);
150
+ this.root2.addListener('remove', editSet.rightRemove);
151
+ // render the tree
152
+ tree2.render();
153
+ this.root2.expand(false, false);
154
+ tree2.expandAll();
155
+ },
156
+
157
+ rebuildTrees : function(){
158
+ editSet.req.attributes = new Array();
159
+ rootNode = TreePanels.root;
160
+ var gIterator = 0;
161
+ for( i in rootNode.childNodes ) {
162
+ if(rootNode.childNodes[i].id) {
163
+ var group = rootNode.childNodes[i];
164
+ editSet.req.groups[gIterator] = new Array(group.id, group.attributes.text.strip(), (gIterator+1));
165
+ var iterator = 0
166
+ for( j in group.childNodes ) {
167
+ iterator ++;
168
+ if( group.childNodes[j].id > 0 ) {
169
+ editSet.req.attributes[group.childNodes[j].id] = new Array(group.childNodes[j].id, group.id, iterator, group.childNodes[j].attributes.entity_id);
170
+ }
171
+ }
172
+ iterator = 0;
173
+ }
174
+ gIterator ++;
175
+ }
176
+
177
+ editSet.req.not_attributes = new Array();
178
+ rootNode = TreePanels.root2;
179
+
180
+ var iterator = 0;
181
+ for( i in rootNode.childNodes ) {
182
+ if(rootNode.childNodes[i].id) {
183
+ if( rootNode.childNodes[i].id > 0 ) {
184
+ editSet.req.not_attributes[iterator] = rootNode.childNodes[i].attributes.entity_id;
185
+ }
186
+ iterator ++;
187
+ }
188
+ }
189
+ }
190
+ };
191
+ }();
192
+
193
+ function buildCategoryTree(parent, config){
194
+ if (!config) return null;
195
+ if (parent && config && config.length){
196
+ for (var i = 0; i < config.length; i++) {
197
+ var node = new Ext.tree.TreeNode(config[i]);
198
+ parent.appendChild(node);
199
+ node.addListener('click', editSet.register);
200
+ node.addListener('beforemove', editSet.groupBeforeMove);
201
+ node.addListener('beforeinsert', editSet.groupBeforeInsert);
202
+ node.addListener('beforeappend', editSet.groupBeforeInsert);
203
+ if( config[i].children ) {
204
+ for( j in config[i].children ) {
205
+ if(config[i].children[j].id) {
206
+ newNode = new Ext.tree.TreeNode(config[i].children[j]);
207
+ node.appendChild(newNode);
208
+ newNode.addListener('click', editSet.unregister);
209
+ }
210
+ }
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ var editSet = function() {
217
+ return {
218
+ register : function(node) {
219
+ editSet.currentNode = node;
220
+ },
221
+
222
+ unregister : function() {
223
+ editSet.currentNode = false;
224
+ },
225
+
226
+ submit : function() {
227
+ if( TreePanels.root.firstChild == TreePanels.root.lastChild ) {
228
+ return;
229
+ }
230
+
231
+ if( editSet.SystemNodesExists(editSet.currentNode) ) {
232
+ alert('<?php echo Mage::helper('catalog')->__('This group contains system attributes. Please move system attributes to another group and try again.') ?>');
233
+ return;
234
+ }
235
+
236
+ if (editSet.ConfigurableNodeExists(editSet.currentNode)) {
237
+ alert('<?php echo Mage::helper('catalog')->__('This group contains attributes, used in configurable products. Please move these attributes to another group and try again.') ?>');
238
+ return;
239
+ }
240
+
241
+ if( editSet.currentNode && editSet.currentNode.attributes.cls == 'folder' ) {
242
+ TreePanels.root.removeChild(editSet.currentNode);
243
+ for( i in editSet.currentNode.childNodes ) {
244
+ if( editSet.currentNode.childNodes[i].id ) {
245
+ child = editSet.currentNode.childNodes[i];
246
+ newNode = new Ext.tree.TreeNode(child.attributes);
247
+
248
+ if( child.attributes.is_user_defined == 1 ) {
249
+ TreePanels.root2.appendChild(newNode);
250
+ }
251
+ }
252
+ }
253
+ editSet.req.removeGroups[editSet.currentNode.id] = editSet.currentNode.id;
254
+ editSet.currentNode = false;
255
+ }
256
+ },
257
+
258
+ SystemNodesExists : function(currentNode) {
259
+ for( i in currentNode.childNodes ) {
260
+ if( currentNode.childNodes[i].id ) {
261
+ child = editSet.currentNode.childNodes[i];
262
+ if( child.attributes.is_user_defined != 1 ) {
263
+ return true;
264
+ }
265
+ }
266
+ }
267
+ },
268
+
269
+ ConfigurableNodeExists : function(currentNode) {
270
+ for (var i in currentNode.childNodes ) {
271
+ if (currentNode.childNodes[i].id) {
272
+ child = editSet.currentNode.childNodes[i];
273
+ if (child.attributes.is_configurable) {
274
+ return true;
275
+ }
276
+ }
277
+ }
278
+ return false;
279
+ },
280
+
281
+ rightAppend : function(node) {
282
+ return;
283
+ },
284
+
285
+ addGroup : function() {
286
+ var group_name = prompt("<?php echo Mage::helper('catalog')->__('Please enter a new group name') ?>","");
287
+ group_name = group_name.strip();
288
+ if( group_name == '' ) {
289
+ this.addGroup();
290
+ } else if( group_name != false && group_name != null && group_name != '' ) {
291
+
292
+ if (!editSet.validateGroupName(group_name, 0)) {
293
+ return;
294
+ }
295
+
296
+ var newNode = new Ext.tree.TreeNode({
297
+ text : group_name.escapeHTML(),
298
+ cls : 'folder',
299
+ allowDrop : true,
300
+ allowDrag : true
301
+ });
302
+ TreePanels.root.appendChild(newNode);
303
+ newNode.addListener('beforemove', editSet.groupBeforeMove);
304
+ newNode.addListener('beforeinsert', editSet.groupBeforeInsert);
305
+ newNode.addListener('beforeappend', editSet.groupBeforeInsert);
306
+ newNode.addListener('click', editSet.register);
307
+ }
308
+ },
309
+
310
+ editGroup : function(obj) {
311
+ if( obj.editNode.attributes.cls != 'folder' || !canEditGroups) {
312
+ TreePanels.ge.cancelEdit();
313
+ return false;
314
+ }
315
+ },
316
+
317
+ beforeRenameGroup : function(obj, after, before) {
318
+ return editSet.validateGroupName(after, obj.editNode.id);
319
+ },
320
+
321
+ validateGroupName : function(name, exceptNodeId) {
322
+ name = name.strip();
323
+ if (name === '') {
324
+ return false;
325
+ }
326
+ for (var i=0; i < TreePanels.root.childNodes.length; i++) {
327
+ if (TreePanels.root.childNodes[i].text.toLowerCase() == name.toLowerCase() && TreePanels.root.childNodes[i].id != exceptNodeId) {
328
+ errorText = "<?php echo Mage::helper('catalog')->__('Attribute group with the \"/name/\" name already exists') ?>";
329
+ alert(errorText.replace("/name/",name));
330
+ return false;
331
+ }
332
+ }
333
+ return true;
334
+ },
335
+
336
+ save : function() {
337
+ $('messages').update();
338
+ TreePanels.rebuildTrees();
339
+ var _validator = new Validation('set_prop_form', {onSubmit:false});
340
+ if( !_validator.validate() ) {
341
+ return;
342
+ }
343
+ editSet.req.attribute_set_name = $('attribute_set_name').value;
344
+ if (!editSet.req.form_key) {
345
+ editSet.req.form_key = FORM_KEY;
346
+ }
347
+ var req = {data : Ext.util.JSON.encode(editSet.req)};
348
+ var con = new Ext.lib.Ajax.request('POST', '<?php echo $this->getMoveUrl() ?>', {success:editSet.success,failure:editSet.failure}, req);
349
+ },
350
+
351
+ success : function(o) {
352
+ var response = Ext.util.JSON.decode(o.responseText);
353
+ if( response.error ) {
354
+ $('messages').update(response.message);
355
+ } else if( response.ajaxExpired && response.ajaxRedirect ){
356
+ setLocation(response.ajaxRedirect);
357
+ } else if( response.url ){
358
+ setLocation(response.url);
359
+ } else if( response.message ) {
360
+ $('messages').update(response.message);
361
+ }
362
+ },
363
+
364
+ failure : function(o) {
365
+ alert('<?php echo Mage::helper('catalog')->__('Unable to complete this request.') ?>');
366
+ },
367
+
368
+ groupBeforeMove : function(tree, nodeThis, oldParent, newParent) {
369
+ if( newParent.attributes.cls == 'folder' && nodeThis.attributes.cls == 'folder' ) {
370
+ return false;
371
+ }
372
+
373
+ if( newParent == TreePanels.root && nodeThis.attributes.cls != 'folder' ) {
374
+ return false;
375
+ }
376
+ },
377
+
378
+ rightBeforeAppend : function(tree, nodeThis, node, newParent) {
379
+ if (node.attributes.is_user_defined == 0) {
380
+ alert('<?php echo Mage::helper('catalog')->__('You cannot remove system attribute from this set.') ?>');
381
+ return false;
382
+ }
383
+ else if (node.attributes.is_configurable == 1) {
384
+ alert('<?php echo Mage::helper('catalog')->__('This attribute is used in configurable products. You cannot remove it from the attribute set.') ?>');
385
+ return false;
386
+ }
387
+ else {
388
+ return true;
389
+ }
390
+ },
391
+
392
+ rightBeforeInsert : function(tree, nodeThis, node, newParent) {
393
+ var empty = TreePanels.root2.findChild('id', 'empty');
394
+ if( empty ) {
395
+ return false;
396
+ }
397
+
398
+ if (node.attributes.is_user_defined == 0) {
399
+ alert('<?php echo Mage::helper('catalog')->__('You cannot remove system attribute from this set.') ?>');
400
+ return false;
401
+ }
402
+ else if (node.attributes.is_configurable == 1) {
403
+ alert('<?php echo Mage::helper('catalog')->__('This attribute is used in configurable products. You cannot remove it from the attribute set.') ?>');
404
+ return false;
405
+ }
406
+ else {
407
+ return true;
408
+ }
409
+ },
410
+
411
+ groupBeforeInsert : function(tree, nodeThis, node, newParent) {
412
+ if( node.allowChildren ) {
413
+ return false;
414
+ }
415
+ },
416
+
417
+ rightAppend : function(tree, nodeThis, node) {
418
+ var empty = TreePanels.root2.findChild('id', 'empty');
419
+ if( empty && node.id != 'empty' ) {
420
+ TreePanels.root2.removeChild(empty);
421
+ }
422
+ },
423
+
424
+ rightRemove : function(tree, nodeThis, node) {
425
+ if( nodeThis.firstChild == null && node.id != 'empty' ) {
426
+ var newNode = new Ext.tree.TreeNode({
427
+ text : '<?php echo Mage::helper('catalog')->__('Empty') ?>',
428
+ id : 'empty',
429
+ cls : 'folder',
430
+ is_user_defined : 1,
431
+ allowDrop : false,
432
+ allowDrag : false
433
+ });
434
+ TreePanels.root2.appendChild(newNode);
435
+ }
436
+ },
437
+
438
+ leftBeforeInsert : function(tree, nodeThis, node, newParent) {
439
+ if( node.allowChildren == false ) {
440
+ return false;
441
+ }
442
+ }
443
+ }
444
+ }();
445
+
446
+ function initVars() {
447
+ editSet.req = {};
448
+ editSet.req.attributes = false;
449
+ editSet.req.groups = new Array();
450
+ editSet.req.not_attributes = false;
451
+ editSet.req.attribute_set_name = false;
452
+ editSet.req.removeGroups = new Array();
453
+ }
454
+
455
+ initVars();
456
+ Ext.EventManager.onDocumentReady(TreePanels.init, TreePanels, true);
457
+ //]]>
458
+ </script>
459
+ </td>
460
+ </tr>
461
+ </table>
app/design/adminhtml/default/default/template/catalog/product/attribute/set/main/tree/attribute.phtml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
app/design/adminhtml/default/default/template/catalog/product/attribute/set/main/tree/group.phtml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div id="tree-div1" style="width:320px;height:400px;margin-top:5px;overflow:auto"></div>
app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/add.phtml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-product-attribute-sets"><?php echo $this->_getHeader() ?></h3></td>
31
+ <td class="form-buttons">
32
+ <?php echo $this->getBackButtonHtml() ?>
33
+ <?php echo $this->getSaveButtonHtml() ?>
34
+ </td>
35
+ </tr>
36
+ </table>
37
+ </div>
38
+ <?php echo $this->getFormHtml() ?>
39
+ <script type="text/javascript">
40
+ var addSet = new varienForm('<?php echo $this->getFormId() ?>');
41
+ </script>
app/design/adminhtml/default/default/template/catalog/product/attribute/set/toolbar/main.phtml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-product-attribute-sets"><?php echo $this->_getHeader() ?></h3></td>
31
+ <td class="form-buttons">
32
+ <?php echo $this->getNewButtonHtml() ?>
33
+ </td>
34
+ </tr>
35
+ </table>
36
+ </div>
app/design/adminhtml/default/default/template/catalog/product/composite/configure.phtml ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div id="popup-window-mask" style="display:none;"></div>
28
+ <div id="product_composite_configure" class="product-configure-popup" style="display:none;">
29
+ <iframe name="product_composite_configure_iframe" id="product_composite_configure_iframe" src="#" style="width:0; height:0; border:0px solid #fff; position:absolute; top:-1000px; left:-1000px" onload="window.productConfigure && productConfigure.onLoadIFrame()"></iframe>
30
+ <form action="" method="post" id="product_composite_configure_form" enctype="multipart/form-data" onsubmit="productConfigure.onConfirmBtn(); return false;" target="product_composite_configure_iframe">
31
+ <div class="entry-edit">
32
+ <div class="entry-edit-head">
33
+ <h4 class="icon-head fieldset-legend"><?php echo Mage::helper('catalog')->__('Configure Product') ?></h4>
34
+ </div>
35
+ <div id="product_composite_configure_messages" style="display: none;" >
36
+ <ul class="messages"><li class="error-msg"></li></ul>
37
+ </div>
38
+ <div id="product_composite_configure_form_fields" class="content"></div>
39
+ <div id="product_composite_configure_form_additional" style="display:none;"></div>
40
+ <div id="product_composite_configure_form_confirmed" style="display:none;"></div>
41
+ <div class="buttons-set a-right">
42
+ <button type="button" class="scalable" onclick="productConfigure.onCancelBtn()" id="product_composite_configure_form_cancel"><span><?php echo Mage::helper('catalog')->__('Cancel') ?></span></button>
43
+ <button type="submit" class="scalable"><span><?php echo Mage::helper('catalog')->__('OK') ?></span></button>
44
+ </div>
45
+ </div>
46
+ <input type="hidden" name="as_js_varname" value="iFrameResponse" />
47
+ <input type="hidden" name="form_key" value="<?php echo $this->getFormKey() ?>" />
48
+ </form>
49
+ <div id="product_composite_configure_confirmed" style="display:none;"></div>
50
+
51
+ <script type="text/javascript">
52
+ var productCompositeConfigureForm = new varienForm('product_composite_configure_form');
53
+ </script>
54
+ </div>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/configurable.phtml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php /* @var $this Mage_Adminhtml_Block_Catalog_Product_Composite_Fieldset_Configurable */ ?>
29
+ <?php $_product = $this->getProduct(); ?>
30
+ <?php $_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes()); ?>
31
+ <?php if ($_product->isSaleable() && count($_attributes)):?>
32
+ <div id="catalog_product_composite_configure_fields_configurable" class="<?php echo $this->getIsLastFieldset() ? 'last-fieldset' : '' ?>">
33
+ <h4><?php echo Mage::helper('catalog')->__('Associated Products') ?></h4>
34
+ <div class="product-options">
35
+ <dl>
36
+ <?php foreach($_attributes as $_attribute): ?>
37
+ <dt><label class="required"><em>*</em><?php echo $_attribute->getLabel() ?></label></dt>
38
+ <dd<?php if ($_attribute->decoratedIsLast){?> class="last"<?php }?>>
39
+ <div class="input-box">
40
+ <select name="super_attribute[<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="required-entry super-attribute-select">
41
+ <option><?php echo Mage::helper('catalog')->__('Choose an Option...') ?></option>
42
+ </select>
43
+ </div>
44
+ </dd>
45
+ <?php endforeach; ?>
46
+ </dl>
47
+ </div>
48
+ </div>
49
+ <script type="text/javascript">
50
+ var config = <?php echo $this->getJsonConfig() ?>;
51
+ if (window.productConfigure) {
52
+ config.containerId = window.productConfigure.blockFormFields.id;
53
+ if (window.productConfigure.restorePhase) {
54
+ config.inputsInitialized = true;
55
+ }
56
+ }
57
+ ProductConfigure.spConfig = new Product.Config(config);
58
+ </script>
59
+ <?php endif;?>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/grouped.phtml ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php /* @var $this Mage_Adminhtml_Block_Catalog_Product_Composite_Fieldset_Grouped */ ?>
29
+ <div id="catalog_product_composite_configure_fields_grouped" class="grid <?php echo $this->getIsLastFieldset() ? 'last-fieldset' : '' ?>">
30
+ <h4><?php echo Mage::helper('catalog')->__('Associated Products') ?></h4>
31
+ <div class="product-options">
32
+ <?php $_product = $this->getProduct(); ?>
33
+ <?php $this->setPreconfiguredValue(); ?>
34
+ <?php $_associatedProducts = $this->getAssociatedProducts(); ?>
35
+ <?php $_hasAssociatedProducts = count($_associatedProducts) > 0; ?>
36
+ <?php if (!$_product->isAvailable() || !$_hasAssociatedProducts): ?>
37
+ <p class="availability out-of-stock"><?php echo Mage::helper('catalog')->__('Availability:') ?> <span><?php echo Mage::helper('catalog')->__('Out of stock') ?></span></p>
38
+ <?php endif; ?>
39
+ <table class="data-table grouped-items-table" id="super-product-table">
40
+ <col />
41
+ <col />
42
+ <col />
43
+ <col />
44
+ <col width="1" />
45
+ <thead>
46
+ <tr "class="headings">
47
+ <th><?php echo Mage::helper('catalog')->__('ID') ?></th>
48
+ <th><?php echo Mage::helper('catalog')->__('SKU') ?></th>
49
+ <th><?php echo Mage::helper('catalog')->__('Product Name') ?></th>
50
+ <?php if ($this->getCanShowProductPrice($_product)): ?>
51
+ <th class="a-right"><?php echo Mage::helper('catalog')->__('Price') ?></th>
52
+ <?php endif; ?>
53
+ <?php if ($_product->isSaleable()): ?>
54
+ <th class="a-center"><?php echo Mage::helper('catalog')->__('Qty') ?></th>
55
+ <?php endif; ?>
56
+ </tr>
57
+ </thead>
58
+ <tbody>
59
+ <?php if ($_hasAssociatedProducts): ?>
60
+ <?php $i = 0 ?>
61
+ <?php foreach ($_associatedProducts as $_item): ?>
62
+ <?php $_finalPriceInclTax = $this->helper('tax')->getPrice($_item, $_item->getFinalPrice(), true) ?>
63
+ <tr class="<?php echo (++$i % 2) ? 'even' : 'odd' ?>">
64
+ <td><?php echo $_item->getId() ?></td>
65
+ <td><?php echo $this->htmlEscape($_item->getSku()) ?></td>
66
+ <td><?php echo $this->htmlEscape($_item->getName()) ?></td>
67
+ <?php if ($this->getCanShowProductPrice($_product)): ?>
68
+ <td class="a-right">
69
+ <?php if ($this->getCanShowProductPrice($_item)): ?>
70
+ <?php echo $this->getPriceHtml($_item, true) ?>
71
+ <?php endif; ?>
72
+ </td>
73
+ <?php endif; ?>
74
+ <?php if ($_product->isSaleable()): ?>
75
+ <td class="a-center">
76
+ <?php if ($_item->isSaleable()) : ?>
77
+ <input type="text" name="super_group[<?php echo $_item->getId() ?>]" id="super_group[<?php echo $_item->getId() ?>]" maxlength="12" value="<?php echo $_item->getQty()*1 ?>" title="<?php echo Mage::helper('catalog')->__('Qty') ?>" class="input-text qty" />
78
+ <input type="hidden" value="1" price="<?php echo $this->getCurrencyPrice($_item->getPrice()) ?>" qtyId="super_group[<?php echo $_item->getId() ?>]" />
79
+ <?php else: ?>
80
+ <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
81
+ <?php endif; ?>
82
+ </td>
83
+ <?php endif; ?>
84
+ </tr>
85
+ <?php endforeach; ?>
86
+ <?php else: ?>
87
+ <tr>
88
+ <td colspan="<?php if ($_product->isSaleable()): ?>4<?php else : ?>3<?php endif; ?>"><?php echo Mage::helper('catalog')->__('No options of this product are available.') ?></td>
89
+ </tr>
90
+ <?php endif; ?>
91
+ </tbody>
92
+ </table>
93
+ </div>
94
+ </div>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options.phtml ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php /* @var $this Mage_Adminhtml_Block_Catalog_Product_Composite_Fieldset_Options */ ?>
29
+ <?php $options = Mage::helper('core')->decorateArray($this->getOptions()); ?>
30
+ <?php if (count($options)): ?>
31
+
32
+ <?php echo $this->getChildHtml('options_js') ?>
33
+
34
+ <div id="product_composite_configure_fields_options" class="<?php echo $this->getIsLastFieldset() ? 'last-fieldset' : '' ?>">
35
+ <h4><?php echo Mage::helper('catalog')->__('Custom Options') ?></h4>
36
+ <div class="product-options">
37
+ <dl>
38
+ <?php foreach($options as $option): ?>
39
+ <?php echo $this->getOptionHtml($option); ?>
40
+ <?php endforeach;?>
41
+ </dl>
42
+ </div>
43
+ </div>
44
+
45
+ <?php endif; ?>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/js.phtml ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <script type="text/javascript">
29
+ //<![CDATA[
30
+ validateOptionsCallback = function (elmId, result){
31
+ var container = $(elmId).up('ul.options-list');
32
+ if (!container) {
33
+ return;
34
+ }
35
+ if (result == 'failed') {
36
+ container.removeClassName('validation-passed');
37
+ container.addClassName('validation-failed');
38
+ } else {
39
+ container.removeClassName('validation-failed');
40
+ container.addClassName('validation-passed');
41
+ }
42
+ }
43
+
44
+ productConfigure.opConfig = {};
45
+
46
+ var DateOption = Class.create({
47
+
48
+ getDaysInMonth: function(month, year)
49
+ {
50
+ var curDate = new Date();
51
+ if (!month) {
52
+ month = curDate.getMonth();
53
+ }
54
+ if (2 == month && !year) { // leap year assumption for unknown year
55
+ return 29;
56
+ }
57
+ if (!year) {
58
+ year = curDate.getFullYear();
59
+ }
60
+ return 32 - new Date(year, month - 1, 32).getDate();
61
+ },
62
+
63
+ reloadMonth: function(event)
64
+ {
65
+ var selectEl = event.findElement();
66
+ var idParts = selectEl.id.split("_");
67
+ if (idParts.length != 3) {
68
+ return false;
69
+ }
70
+ var optionIdPrefix = idParts[0] + "_" + idParts[1];
71
+ var month = parseInt($(optionIdPrefix + "_month").value);
72
+ var year = parseInt($(optionIdPrefix + "_year").value);
73
+ var dayEl = $(optionIdPrefix + "_day");
74
+
75
+ var days = this.getDaysInMonth(month, year);
76
+
77
+ //remove days
78
+ for (var i = dayEl.options.length - 1; i >= 0; i--) {
79
+ if (dayEl.options[i].value > days) {
80
+ dayEl.remove(dayEl.options[i].index);
81
+ }
82
+ }
83
+
84
+ // add days
85
+ var lastDay = parseInt(dayEl.options[dayEl.options.length-1].value);
86
+ for (i = lastDay + 1; i <= days; i++) {
87
+ this.addOption(dayEl, i, i);
88
+ }
89
+ },
90
+
91
+ addOption: function(select, text, value)
92
+ {
93
+ var option = document.createElement('OPTION');
94
+ option.value = value;
95
+ option.text = text;
96
+
97
+ if (select.options.add) {
98
+ select.options.add(option);
99
+ } else {
100
+ select.appendChild(option);
101
+ }
102
+ }
103
+ });
104
+ productConfigure.opConfig.dateOption = new DateOption();
105
+ //]]>
106
+ </script>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/date.phtml ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Catalog_Block_Product_View_Options_Type_Date */ ?>
28
+ <?php $_option = $this->getOption(); ?>
29
+ <?php $_optionId = $_option->getId(); ?>
30
+ <dt class="label"><label<?php if ($_option->getIsRequire()) echo ' class="required"' ?>><?php if ($_option->getIsRequire()) echo '<em>*</em>' ?><?php echo $this->escapeHtml($_option->getTitle()) ?></label>
31
+ <?php echo $this->getFormatedPrice() ?></dt>
32
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
33
+
34
+ <?php if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE_TIME
35
+ || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE): ?>
36
+
37
+ <?php echo $this->getDateHtml() ?>
38
+
39
+ <?php if (!$this->useCalendar()): ?>
40
+ <script type="text/javascript">
41
+ //<![CDATA[
42
+ var dateOption = productConfigure.opConfig.dateOption;
43
+ Event.observe('options_<?php echo $_optionId ?>_month', 'change', dateOption.reloadMonth.bind(dateOption));
44
+ Event.observe('options_<?php echo $_optionId ?>_year', 'change', dateOption.reloadMonth.bind(dateOption));
45
+ //]]>
46
+ </script>
47
+ <?php endif; ?>
48
+
49
+ <?php endif; ?>
50
+
51
+ <?php if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_DATE_TIME
52
+ || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_TIME): ?>
53
+ <span class="time-picker"><?php echo $this->getTimeHtml() ?></span>
54
+ <?php endif; ?>
55
+
56
+ <input type="hidden" name="validate_datetime_<?php echo $_optionId ?>" class="validate-datetime-<?php echo $_optionId ?>" value="" />
57
+ <script type="text/javascript">
58
+ //<![CDATA[
59
+ <?php if ($_option->getIsRequire()): ?>
60
+ Validation.addAllThese(
61
+ [
62
+ ['validate-datetime-<?php echo $_optionId ?>', '<?php echo $this->jsQuoteEscape( Mage::helper('catalog')->__('This is a required option') )?>', function(v) {
63
+ var dateTimeParts = $$('.datetime-picker[id^="options_<?php echo $_optionId ?>"]');
64
+ for (var i=0; i < dateTimeParts.length; i++) {
65
+ if (dateTimeParts[i].value == "") return false;
66
+ }
67
+ return true;
68
+ }]
69
+ ]
70
+ );
71
+ <?php else: ?>
72
+ Validation.add(
73
+ 'validate-datetime-<?php echo $_optionId ?>',
74
+ '<?php echo $this->jsQuoteEscape( Mage::helper('catalog')->__('Field is not complete') )?>',
75
+ function(v) {
76
+ var dateTimeParts = $$('.datetime-picker[id^="options_<?php echo $_optionId ?>"]');
77
+ var hasWithValue = false, hasWithNoValue = false;
78
+ var pattern = /day_part$/i;
79
+ for (var i=0; i < dateTimeParts.length; i++) {
80
+ if (! pattern.test(dateTimeParts[i].id)) {
81
+ if (dateTimeParts[i].value === "") {
82
+ hasWithValue = true;
83
+ } else {
84
+ hasWithNoValue = true;
85
+ }
86
+ }
87
+ }
88
+ return hasWithValue ^ hasWithNoValue;
89
+ }
90
+ );
91
+ <?php endif; ?>
92
+ //]]>
93
+ </script>
94
+ </dd>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/default.phtml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Adminhtml_Block_Catalog_Product_Composite_Fieldset_Options */ ?>
28
+ <?php $option = $this->getOption(); ?>
29
+ <dt>
30
+ <label><?php echo $this->escapeHtml($option->getTitle()) ?></label>
31
+ </dt>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/file.phtml ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_option = $this->getOption(); ?>
28
+ <?php $_fileInfo = $this->getFileInfo(); ?>
29
+ <?php $_fileExists = $_fileInfo->hasData() ? true : false; ?>
30
+ <?php $_fileName = 'options_' . $_option->getId() . '_file'; ?>
31
+ <?php $_fieldNameAction = $_fileName . '_action'; ?>
32
+ <?php $_fieldValueAction = $_fileExists ? 'save_old' : 'save_new'; ?>
33
+ <?php $_fileNamed = $_fileName . '_name'; ?>
34
+ <?php $_rand = rand(); ?>
35
+
36
+ <script type="text/javascript">
37
+ //<![CDATA[
38
+ opFile<?php echo $_rand; ?> = {
39
+ initializeFile: function(inputBox) {
40
+ this.inputFile = inputBox.select('input[name="<?php echo $_fileName; ?>"]')[0];
41
+ this.inputFileAction = inputBox.select('input[name="<?php echo $_fieldNameAction; ?>"]')[0];
42
+ this.fileNameBox = inputBox.up('dd').select('.<?php echo $_fileNamed ?>')[0];
43
+ },
44
+
45
+ toggleFileChange: function(inputBox) {
46
+ this.initializeFile(inputBox);
47
+ inputBox.toggle();
48
+ this.fileChangeFlag = this.fileChangeFlag ? false : true;
49
+ if (!this.fileDeleteFlag) {
50
+ if (this.fileChangeFlag) {
51
+ this.inputFileAction.value = 'save_new';
52
+ this.inputFile.disabled = false;
53
+ } else {
54
+ this.inputFileAction.value = 'save_old';
55
+ this.inputFile.disabled = true;
56
+ }
57
+ }
58
+ },
59
+
60
+ toggleFileDelete: function(fileDeleteFlag, inputBox) {
61
+ this.initializeFile(inputBox);
62
+ this.fileDeleteFlag = fileDeleteFlag.checked ? true : false;
63
+ if (this.fileDeleteFlag) {
64
+ this.inputFileAction.value = '';
65
+ this.inputFile.disabled = true;
66
+ this.fileNameBox.setStyle({'text-decoration': 'line-through'});
67
+ } else {
68
+ this.inputFileAction.value = this.fileChangeFlag ? 'save_new' : 'save_old';
69
+ this.inputFile.disabled = (this.fileChangeFlag == 'save_old');
70
+ this.fileNameBox.setStyle({'text-decoration': 'none'});
71
+ }
72
+ }
73
+ };
74
+ //]]>
75
+ </script>
76
+
77
+ <dt><label <?php if ($_option->getIsRequire()) echo ' class="required"' ?>><?php if ($_option->getIsRequire()) echo '<em>*</em>' ?><?php echo $this->htmlEscape($_option->getTitle()) ?></label>
78
+ <?php echo $this->getFormatedPrice() ?></dt>
79
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
80
+ <?php if ($_fileExists): ?>
81
+ <span class="<?php echo $_fileNamed ?>"><?php echo $_fileInfo->getTitle(); ?></span>
82
+ <a href="javascript:void(0)" class="label" onclick="opFile<?php echo $_rand; ?>.toggleFileChange($(this).next('.input-box'))">
83
+ <?php echo Mage::helper('catalog')->__('Change') ?>
84
+ </a>&nbsp;
85
+ <?php if (!$_option->getIsRequire()): ?>
86
+ <input type="checkbox" onclick="opFile<?php echo $_rand; ?>.toggleFileDelete($(this), $(this).next('.input-box'))" price="<?php echo $this->getCurrencyPrice($_option->getPrice(true)) ?>"/>
87
+ <span class="label"><?php echo Mage::helper('catalog')->__('Delete') ?></span>
88
+ <?php endif; ?>
89
+ <?php endif; ?>
90
+ <div class="input-box" <?php echo $_fileExists ? 'style="display:none"' : '' ?>>
91
+ <input type="file" name="<?php echo $_fileName; ?>" class="product-custom-option<?php echo $_option->getIsRequire() ? ' required-entry' : '' ?>" price="<?php echo $this->getCurrencyPrice($_option->getPrice(true)) ?>" <?php echo $_fileExists ? 'disabled="disabled"' : '' ?>/>
92
+ <input type="hidden" name="<?php echo $_fieldNameAction; ?>" value="<?php echo $_fieldValueAction; ?>" />
93
+ <?php if ($_option->getFileExtension()): ?>
94
+ <p class="no-margin"><?php echo Mage::helper('catalog')->__('Allowed file extensions to upload')?>: <strong><?php echo $_option->getFileExtension() ?></strong></p>
95
+ <?php endif; ?>
96
+ <?php if ($_option->getImageSizeX() > 0): ?>
97
+ <p class="no-margin"><?php echo Mage::helper('catalog')->__('Maximum image width')?>: <strong><?php echo $_option->getImageSizeX() ?> <?php echo Mage::helper('catalog')->__('px.')?></strong></p>
98
+ <?php endif; ?>
99
+ <?php if ($_option->getImageSizeY() > 0): ?>
100
+ <p class="no-margin"><?php echo Mage::helper('catalog')->__('Maximum image height')?>: <strong><?php echo $_option->getImageSizeY() ?> <?php echo Mage::helper('catalog')->__('px.')?></strong></p>
101
+ <?php endif; ?>
102
+ </div>
103
+ </dd>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/select.phtml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Catalog_Block_Product_View_Options_Type_Select */ ?>
28
+ <?php $_option = $this->getOption(); ?>
29
+ <dt><label<?php if ($_option->getIsRequire()) echo ' class="required"' ?>><?php if ($_option->getIsRequire()) echo '<em>*</em>' ?><?php echo $this->escapeHtml($_option->getTitle()) ?></label></dt>
30
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
31
+ <div class="input-box">
32
+ <?php echo $this->getValuesHtml() ?>
33
+ <?php if ($_option->getIsRequire()): ?>
34
+ <?php if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_RADIO || $_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_CHECKBOX): ?>
35
+ <span id="options-<?php echo $_option->getId() ?>-container"></span>
36
+ <?php endif; ?>
37
+ <?php endif;?>
38
+ </div>
39
+ </dd>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/options/type/text.phtml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Catalog_Block_Product_View_Options_Type_Text */ ?>
28
+ <?php $_option = $this->getOption(); ?>
29
+ <dt><label<?php if ($_option->getIsRequire()) echo ' class="required"' ?>><?php if ($_option->getIsRequire()) echo '<em>*</em>' ?><?php echo $this->escapeHtml($_option->getTitle()) ?></label>
30
+ <?php echo $this->getFormatedPrice() ?></dt>
31
+ <dd<?php if ($_option->decoratedIsLast){?> class="last"<?php }?>>
32
+ <div class="input-box">
33
+ <?php if ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_FIELD): ?>
34
+ <input type="text" id="options_<?php echo $_option->getId() ?>_text" class="input-text<?php echo $_option->getIsRequire() ? ' required-entry' : '' ?> <?php echo $_option->getMaxCharacters() ? ' validate-length maximum-length-' . $_option->getMaxCharacters() : '' ?> product-custom-option" name="options[<?php echo $_option->getId() ?>]" value="<?php echo $this->escapeHtml($this->getDefaultValue()) ?>" price="<?php echo $this->getCurrencyPrice($_option->getPrice(true)) ?>" />
35
+ <?php elseif ($_option->getType() == Mage_Catalog_Model_Product_Option::OPTION_TYPE_AREA): ?>
36
+ <textarea id="options_<?php echo $_option->getId() ?>_text" class="<?php echo $_option->getIsRequire() ? ' required-entry' : '' ?> <?php echo $_option->getMaxCharacters() ? ' validate-length maximum-length-' . $_option->getMaxCharacters() : '' ?> product-custom-option" name="options[<?php echo $_option->getId() ?>]" rows="5" cols="25" price="<?php echo $this->getCurrencyPrice($_option->getPrice(true)) ?>"><?php echo $this->escapeHtml($this->getDefaultValue()) ?></textarea>
37
+ <?php endif; ?>
38
+ <?php if ($_option->getMaxCharacters()): ?>
39
+ <p class="note"><?php echo Mage::helper('catalog')->__('Maximum number of characters:')?> <strong><?php echo $_option->getMaxCharacters() ?></strong></p>
40
+ <?php endif; ?>
41
+ </div>
42
+ </dd>
app/design/adminhtml/default/default/template/catalog/product/composite/fieldset/qty.phtml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php /* @var $this Mage_Adminhtml_Block_Catalog_Product_Composite_Fieldset_Qty */ ?>
29
+
30
+ <div id="product_composite_configure_fields_qty" class="<?php echo $this->getIsLastFieldset() ? 'last-fieldset' : '' ?>">
31
+ <div class="product-options">
32
+ <dl>
33
+ <dt><label><?php echo Mage::helper('catalog')->__('Quantity') ?></label> <input id="product_composite_configure_input_qty" class="input-text" type="text" name="qty" value="<?php echo $this->getQtyValue() * 1 ?>"></dt>
34
+ </dl>
35
+ </div>
36
+ </div>
app/design/adminhtml/default/default/template/catalog/product/created.phtml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ var added = false;
29
+ function addProduct(closeAfter) {
30
+ if(window.opener!=null && !added) {
31
+ <?php if($this->isEdit()): ?>
32
+ window.opener.superProduct.updateProduct(<?php echo $this->getProductId() ?>, <?php echo $this->getAttributesJson(); ?>);
33
+ <?php else: ?>
34
+ window.opener.superProduct.addNewProduct(<?php echo $this->getProductId() ?>, <?php echo $this->getAttributesJson(); ?>);
35
+ window.opener.superProduct.showNoticeMessage();
36
+ <?php endif; ?>
37
+ added = true;
38
+ }
39
+
40
+ if(closeAfter)
41
+ {
42
+ closeWindow();
43
+ }
44
+ }
45
+
46
+ function closeWindow()
47
+ {
48
+ if (window.opener) {
49
+ window.opener.focus();
50
+ }
51
+ window.close();
52
+ }
53
+
54
+ addProduct(false);
55
+ setTimeout(closeWindow, 3000);
56
+ </script>
57
+ <div class="a-center">
58
+ <?php echo $this->getCloseButtonHtml() ?>
59
+ </div>
app/design/adminhtml/default/default/template/catalog/product/edit.phtml ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Template for Mage_Adminhtml_Block_Catalog_Product_Edit
30
+ */
31
+ ?>
32
+
33
+
34
+
35
+ <div class="content-header">
36
+ <h3 class="icon-head head-products"><?php echo $this->getHeader() ?></h3>
37
+ <p class="content-buttons form-buttons"><?php echo $this->getBackButtonHtml() ?>
38
+ <?php echo $this->getCancelButtonHtml() ?>
39
+ <?php if($this->getProductId()): ?>
40
+ <?php echo $this->getDeleteButtonHtml() ?>
41
+ <?php if($this->getProductSetId() && $this->getIsConfigured()): ?>
42
+ <?php echo $this->getDuplicateButtonHtml() ?>
43
+ <?php endif; ?>
44
+ <?php endif; ?>
45
+ <?php if($this->getProductSetId() && $this->getIsConfigured()): ?>
46
+ <?php echo $this->getSaveButtonHtml() ?>
47
+ <?php echo $this->getSaveAndEditButtonHtml() ?>
48
+ <?php endif; ?>
49
+ </p>
50
+ </div>
51
+ <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="product_edit_form" enctype="multipart/form-data">
52
+ <?php echo $this->getBlockHtml('formkey')?>
53
+ <div style="display:none"></div>
54
+ </form>
55
+ <script type="text/javascript">
56
+ //<![CDATA[
57
+ var productTemplateSyntax = /(^|.|\r|\n)({{(\w+)}})/;
58
+ var productForm = new varienForm('product_edit_form', '<?php echo $this->getValidationUrl() ?>');
59
+ productForm._processValidationResult = function(transport) {
60
+ var response = transport.responseText.evalJSON();
61
+ if (response.error){
62
+ if (response.attribute && $(response.attribute)) {
63
+ $(response.attribute).setHasError(true, productForm);
64
+ Validation.ajaxError($(response.attribute), response.message);
65
+ if (!Prototype.Browser.IE){
66
+ $(response.attribute).focus();
67
+ }
68
+ }
69
+ else if ($('messages')) {
70
+ $('messages').innerHTML = '<ul class="messages"><li class="error-msg"><ul><li>' + response.message + '</li></ul></li></ul>';
71
+ }
72
+ }
73
+ else{
74
+ productForm._submit();
75
+ }
76
+ };
77
+ function saveAndContinueEdit(urlTemplate) {
78
+ var template = new Template(urlTemplate, productTemplateSyntax);
79
+ var url = template.evaluate({tab_id:product_info_tabsJsTabs.activeTab.id});
80
+ productForm.submit(url);
81
+ }
82
+ function setSettings(urlTemplate, setElement, typeElement) {
83
+ var template = new Template(urlTemplate, productTemplateSyntax);
84
+ setLocation(template.evaluate({attribute_set:$F(setElement),type:$F(typeElement)}));
85
+ }
86
+
87
+ function setSuperSettings(urlTemplate, attributesClass, validateField) {
88
+ var attributesFields = $$('.' + attributesClass);
89
+ var attributes = Form.serializeElements(attributesFields, true).attribute;
90
+ if(typeof attributes == 'string') {
91
+ attributes = [attributes];
92
+ }
93
+
94
+ if(!attributes) {
95
+ $(validateField).value = 'no-attributes';
96
+ } else {
97
+ $(validateField).value = 'has-attributes';
98
+ }
99
+
100
+ if (productForm.validator.validate()) {
101
+ var template = new Template(urlTemplate, productTemplateSyntax);
102
+ var url = template.evaluate({
103
+ attributes: encode_base64(attributes.join(',')).replace(new RegExp('/','g'),'%2F').replace(new RegExp('=','g'),'%3D')
104
+ });
105
+ setLocation(url);
106
+ }
107
+ }
108
+
109
+ function checkMaxLength(Object, MaxLen)
110
+ {
111
+ if (Object.value.length > MaxLen-1) {
112
+ Object.value = Object.value.substr(0, MaxLen);
113
+ }
114
+ return 1;
115
+ }
116
+
117
+ Event.observe(window, 'load', function() {
118
+ var objName = '<?php echo $this->getSelectedTabId() ?>';
119
+ if (objName) {
120
+ obj = $(objName);
121
+ //IE fix (bubbling event model)
122
+ product_info_tabsJsTabs.setSkipDisplayFirstTab();
123
+ product_info_tabsJsTabs.showTabContent(obj);
124
+ }
125
+ Product.AttributesBridge.setTabsObject(product_info_tabsJsTabs);
126
+ });
127
+
128
+ Validation.addAllThese([
129
+ ['validate-super-product-attributes', '<?php echo Mage::helper('catalog')->__('Please select one or more attributes.') ?>', function(v) {
130
+ return (v != "no-attributes");
131
+ }]]);
132
+ //]]>
133
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/action/attribute.phtml ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td><h3><?php echo Mage::helper('catalog')->__('Update attributes') ?></h3></td>
31
+ <td class="form-buttons">
32
+ <?php echo $this->getBackButtonHtml() ?>
33
+ <?php echo $this->getCancelButtonHtml() ?>
34
+ <?php echo $this->getSaveButtonHtml() ?>
35
+ </td>
36
+ </tr>
37
+ </table>
38
+ </div>
39
+ <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="attributes_edit_form" enctype="multipart/form-data">
40
+ <?php echo $this->getBlockHtml('formkey')?>
41
+ </form>
42
+ <script type="text/javascript">
43
+ var attributesForm = new varienForm('attributes_edit_form', '<?php echo $this->getValidationUrl() ?>');
44
+ attributesForm._processValidationResult = function(transport) {
45
+ var response = transport.responseText.evalJSON();
46
+
47
+ if (response.error){
48
+ if (response.attribute && $(response.attribute)) {
49
+ $(response.attribute).setHasError(true, attributesForm);
50
+ Validation.ajaxError($(response.attribute), response.message);
51
+ if (!Prototype.Browser.IE){
52
+ $(response.attribute).focus();
53
+ }
54
+ } else if ($('messages')) {
55
+ $('messages').innerHTML = '<ul class="messages"><li class="error-msg"><ul><li>' + response.message + '</li></ul></li></ul>';
56
+ }
57
+ } else {
58
+ attributesForm._submit();
59
+ }
60
+ };
61
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/action/inventory.phtml ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+ function toggleValueElementsWithCheckbox(checkbox) {
30
+ var td = $(checkbox.parentNode);
31
+ var checkboxes = td.getElementsBySelector('input[type="checkbox"]');
32
+ var inputs = td.getElementsBySelector('input[type!="checkbox"]', 'select', 'textarea');
33
+ if (checkboxes.size()>1) {
34
+ inputs.each(function(input){
35
+ input.disabled = (!checkbox.checked || checkboxes[0].checked);
36
+ checkboxes[0].disabled = !checkbox.checked;
37
+ });
38
+ } else {
39
+ inputs.each(function(input){
40
+ input.disabled = !checkbox.checked;
41
+ });
42
+ }
43
+ }
44
+ //]]>
45
+ </script>
46
+
47
+ <div class="entry-edit">
48
+ <div class="entry-edit-head">
49
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Inventory') ?></h4>
50
+ </div>
51
+ <fieldset>
52
+ <legend><?php echo Mage::helper('catalog')->__('Inventory') ?></legend>
53
+ <table cellspacing="0" class="form-list" id="table_cataloginventory">
54
+ <tr>
55
+ <td class="label"><label for="inventory_manage_stock"><?php echo Mage::helper('catalog')->__('Manage Stock') ?></label></td>
56
+ <td class="value"><select id="inventory_manage_stock" name="<?php echo $this->getFieldSuffix() ?>[manage_stock]" class="select" disabled="disabled">
57
+ <option value="1"><?php echo Mage::helper('catalog')->__('Yes') ?></option>
58
+ <option value="0"<?php if ($this->getConfigFieldValue('manage_stock') == 0): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('catalog')->__('No') ?></option>
59
+ </select>
60
+ <input name="<?php echo $this->getFieldSuffix() ?>[use_config_manage_stock]" type="checkbox" id="inventory_use_config_manage_stock" onclick="toggleValueElements(this, this.parentNode, $('inventory_manage_stock_checkbox'));" value="1" checked="checked" disabled="disabled" />
61
+ <label for="inventory_use_config_manage_stock" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
62
+ <input type="checkbox" id="inventory_manage_stock_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
63
+ <label for="inventory_manage_stock_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
64
+ </td>
65
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
66
+ </tr>
67
+ <tr>
68
+ <td class="label"><label for="inventory_qty"><?php echo Mage::helper('catalog')->__('Qty') ?><span class="required">*</span></label></td>
69
+ <td class="value">
70
+ <input type="text" class="input-text required-entry validate-number" id="inventory_qty" name="<?php echo $this->getFieldSuffix() ?>[qty]" value="<?php echo $this->getDefaultConfigValue('qty')*1 ?>" disabled="disabled" />
71
+ <input type="checkbox" id="inventory_qty_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
72
+ <label for="inventory_qty_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
73
+ </td>
74
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
75
+ </tr>
76
+ <tr>
77
+ <td class="label"><label for="inventory_min_qty"><?php echo Mage::helper('catalog')->__('Minimum Qty for Item\'s Status to be Out of Stock') ?></label></td>
78
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_min_qty" name="<?php echo $this->getFieldSuffix() ?>[min_qty]" value="<?php echo $this->getDefaultConfigValue('min_qty')*1 ?>" disabled="disabled" />
79
+ <input type="checkbox" id="inventory_use_config_min_qty" name="<?php echo $this->getFieldSuffix() ?>[use_config_min_qty]" value="1" onclick="toggleValueElements(this, this.parentNode, $('inventory_min_qty_checkbox'));" checked="checked" disabled="disabled" />
80
+ <label for="inventory_use_config_min_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
81
+ <input type="checkbox" id="inventory_min_qty_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
82
+ <label for="inventory_min_qty_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
83
+ </td>
84
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
85
+ </tr>
86
+ <tr>
87
+ <td class="label"><label for="inventory_min_sale_qty"><?php echo Mage::helper('catalog')->__('Minimum Qty Allowed in Shopping Cart') ?></label></td>
88
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_min_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[min_sale_qty]" value="<?php echo $this->getDefaultConfigValue('min_sale_qty')*1 ?>" disabled="disabled" />
89
+ <input type="checkbox" id="inventory_use_config_min_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[use_config_min_sale_qty]" value="1" onclick="toggleValueElements(this, this.parentNode, $('inventory_min_sale_qty_checkbox'));" checked="checked" disabled="disabled" />
90
+ <label for="inventory_use_config_min_sale_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
91
+ <input type="checkbox" id="inventory_min_sale_qty_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
92
+ <label for="inventory_min_sale_qty_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
93
+ </td>
94
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
95
+ </tr>
96
+ <tr>
97
+ <td class="label"><label for="inventory_max_sale_qty"><?php echo Mage::helper('catalog')->__('Maximum Qty Allowed in Shopping Cart') ?></label></td>
98
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_max_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[max_sale_qty]" value="<?php echo $this->getDefaultConfigValue('max_sale_qty')*1 ?>" disabled="disabled" />
99
+ <input type="checkbox" id="inventory_use_config_max_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[use_config_max_sale_qty]" value="1" onclick="toggleValueElements(this, this.parentNode, $('inventory_max_sale_checkbox'));" checked="checked" disabled="disabled" />
100
+ <label for="inventory_use_config_max_sale_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
101
+ <input type="checkbox" id="inventory_max_sale_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
102
+ <label for="inventory_max_sale_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
103
+ </td>
104
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
105
+ </tr>
106
+ <tr>
107
+ <td class="label"><label for="inventory_is_qty_decimal"><?php echo Mage::helper('catalog')->__('Qty Uses Decimals') ?></label></td>
108
+ <td class="value"><select id="inventory_is_qty_decimal" name="<?php echo $this->getFieldSuffix() ?>[is_qty_decimal]" class="select" disabled="disabled">
109
+ <option value="0"><?php echo Mage::helper('catalog')->__('No') ?></option>
110
+ <option value="1"<?php if ($this->getDefaultConfigValue('is_qty_decimal')==1): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('catalog')->__('Yes') ?></option>
111
+ </select>
112
+ <input type="checkbox" id="inventory_is_qty_decimal_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
113
+ <label for="inventory_is_qty_decimal_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
114
+ </td>
115
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
116
+ </tr>
117
+ <tr>
118
+ <td class="label"><label for="inventory_backorders"><?php echo Mage::helper('catalog')->__('Backorders') ?></label></td>
119
+ <td class="value"><select id="inventory_backorders" name="<?php echo $this->getFieldSuffix() ?>[backorders]" class="select" disabled="disabled">
120
+ <?php foreach ($this->getBackordersOption() as $option): ?>
121
+ <?php $_selected = ($option['value'] == $this->getDefaultConfigValue('backorders')) ? ' selected="selected"' : '' ?>
122
+ <option value="<?php echo $option['value'] ?>"<?php echo $_selected ?>><?php echo $option['label'] ?></option>
123
+ <?php endforeach; ?>
124
+ </select>
125
+ <input type="checkbox" id="inventory_use_config_backorders" name="<?php echo $this->getFieldSuffix() ?>[use_config_backorders]" value="1" onclick="toggleValueElements(this, this.parentNode, $('inventory_backorders_checkbox'));" checked="checked" disabled="disabled" />
126
+ <label for="inventory_use_config_backorders" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
127
+ <input type="checkbox" id="inventory_backorders_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
128
+ <label for="inventory_backorders_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
129
+ </td>
130
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
131
+ </tr>
132
+ <tr>
133
+ <td class="label"><label for="inventory_notify_stock_qty"><?php echo Mage::helper('catalog')->__('Notify for Quantity Below') ?></label></td>
134
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_notify_stock_qty" name="<?php echo $this->getFieldSuffix() ?>[notify_stock_qty]" value="<?php echo $this->getDefaultConfigValue('notify_stock_qty')*1 ?>" disabled="disabled" />
135
+ <input type="checkbox" id="inventory_use_config_notify_stock_qty" name="<?php echo $this->getFieldSuffix() ?>[use_config_notify_stock_qty]" value="1" onclick="toggleValueElements(this, this.parentNode, $('inventory_notify_stock_qty_checkbox'));" checked="checked" disabled="disabled" />
136
+ <label for="inventory_use_config_notify_stock_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
137
+ <input type="checkbox" id="inventory_notify_stock_qty_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
138
+ <label for="inventory_notify_stock_qty_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
139
+ </td>
140
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
141
+ </tr>
142
+
143
+ <tr>
144
+ <td class="label"><label for="inventory_enable_qty_increments"><?php echo Mage::helper('catalog')->__('Enable Qty Increments') ?></label></td>
145
+ <td class="value"><select id="inventory_enable_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[enable_qty_increments]" class="select" disabled="disabled">
146
+ <option value="1"><?php echo Mage::helper('catalog')->__('Yes') ?></option>
147
+ <option value="0"<?php if ($this->getDefaultConfigValue('enable_qty_increments') == 0): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('catalog')->__('No') ?></option>
148
+ </select>
149
+ <input type="checkbox" id="inventory_use_config_enable_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[use_config_enable_qty_increments]" value="1" onclick="toggleValueElements(this, this.parentNode, [$('inventory_enable_qty_increments_checkbox')]);" checked="checked" disabled="disabled" />
150
+ <label for="inventory_use_config_enable_qty_increments" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
151
+ <input type="checkbox" id="inventory_enable_qty_increments_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
152
+ <label for="inventory_enable_qty_increments_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
153
+ </td>
154
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
155
+ </tr>
156
+ <tr>
157
+ <td class="label"><label for="inventory_qty_increments"><?php echo Mage::helper('catalog')->__('Qty Increments') ?></label></td>
158
+ <td class="value">
159
+ <input type="text" class="input-text validate-number" id="inventory_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[qty_increments]" value="<?php echo $this->getDefaultConfigValue('qty_increments')*1 ?>" disabled="disabled" />
160
+ <input type="checkbox" id="inventory_use_config_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[use_config_qty_increments]" value="1" onclick="toggleValueElements(this, this.parentNode, [$('inventory_qty_increments_checkbox')]);" checked="checked" disabled="disabled" />
161
+ <label for="inventory_use_config_qty_increments" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
162
+ <input type="checkbox" id="inventory_qty_increments_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
163
+ <label for="inventory_qty_increments_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
164
+ </td>
165
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
166
+ </tr>
167
+
168
+ <tr>
169
+ <td class="label"><label for="inventory_stock_availability"><?php echo Mage::helper('catalog')->__('Stock Availability') ?></label></td>
170
+ <td class="value"><select id="inventory_stock_availability" name="<?php echo $this->getFieldSuffix() ?>[is_in_stock]" class="select" disabled="disabled">
171
+ <option value="1"><?php echo Mage::helper('catalog')->__('In Stock') ?></option>
172
+ <option value="0"<?php if ($this->getDefaultConfigValue('is_in_stock')==0): ?> selected<?php endif; ?>><?php echo Mage::helper('catalog')->__('Out of Stock') ?></option>
173
+ </select>
174
+ <input type="checkbox" id="inventory_stock_availability_checkbox" onclick="toggleValueElementsWithCheckbox(this)" />
175
+ <label for="inventory_stock_availability_checkbox" class="normal"><?php echo Mage::helper('catalog')->__('Change') ?></label>
176
+ </td>
177
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
178
+ </tr>
179
+ </table>
180
+ </fieldset>
181
+ </div>
app/design/adminhtml/default/default/template/catalog/product/edit/action/websites.phtml ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Add Product To Websites') ?></h4>
30
+ </div>
31
+ <fieldset id="grop_fields">
32
+ <?php foreach ($this->getWebsiteCollection() as $_website): ?>
33
+ <div>
34
+ <div class="website-name">
35
+ <input name="add_website_ids[]" value="<?php echo $_website->getId() ?>" <?php if($this->getWebsitesReadonly()): ?>disabled="disabled"<?php endif;?> class="checkbox website-checkbox" id="add_product_website_<?php echo $_website->getId() ?>" type="checkbox" />
36
+ <big><strong><label for="add_product_website_<?php echo $_website->getId() ?>"><?php echo $this->escapeHtml($_website->getName()) ?></label></strong></big>
37
+ </div>
38
+ <div class="webiste-groups" id="add_product_website_<?php echo $_website->getId() ?>_data">
39
+ <?php foreach ($this->getGroupCollection($_website) as $_group): ?>
40
+ <h4><?php echo $this->escapeHtml($_group->getName()) ?></h4>
41
+ <div class="group-stores">
42
+ <table>
43
+ <?php foreach ($this->getStoreCollection($_group) as $_store): ?>
44
+ <tr>
45
+ <td><?php echo $this->escapeHtml($_store->getName()) ?></td>
46
+ <td>&nbsp;</td>
47
+ </tr>
48
+ <?php endforeach; ?>
49
+ </table>
50
+ </div>
51
+ <?php endforeach; ?>
52
+ </div>
53
+ </div>
54
+ <?php endforeach; ?>
55
+ </fieldset>
56
+ </div>
57
+
58
+ <div class="entry-edit">
59
+ <div class="entry-edit-head">
60
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Remove Product From Websites') ?></h4>
61
+ </div>
62
+ <fieldset id="grop_fields">
63
+ <ul class="messages">
64
+ <li class="notice-msg">
65
+ <ul>
66
+ <li><?php echo Mage::helper('catalog')->__("Items that you do not want to show in the catalog or search results should have status 'Disabled' in the desired store.") ?></li>
67
+ </ul>
68
+ </li>
69
+ </ul>
70
+ <?php foreach ($this->getWebsiteCollection() as $_website): ?>
71
+ <div>
72
+ <div class="website-name">
73
+ <input name="remove_website_ids[]" value="<?php echo $_website->getId() ?>" <?php if($this->getWebsitesReadonly()): ?>disabled="disabled"<?php endif;?> class="checkbox website-checkbox" id="remove_product_website_<?php echo $_website->getId() ?>" type="checkbox"/>
74
+ <big><strong><label for="remove_product_website_<?php echo $_website->getId() ?>"><?php echo $this->escapeHtml($_website->getName()) ?></label></strong></big>
75
+ </div>
76
+ <div class="webiste-groups" id="remove_product_website_<?php echo $_website->getId() ?>_data">
77
+ <?php foreach ($this->getGroupCollection($_website) as $_group): ?>
78
+ <h4><?php echo $this->escapeHtml($_group->getName()) ?></h4>
79
+ <div class="group-stores">
80
+ <table>
81
+ <?php foreach ($this->getStoreCollection($_group) as $_store): ?>
82
+ <tr>
83
+ <td><?php echo $this->escapeHtml($_store->getName()) ?></td>
84
+ <td>&nbsp;</td>
85
+ </tr>
86
+ <?php endforeach; ?>
87
+ </table>
88
+ </div>
89
+ <?php endforeach; ?>
90
+ </div>
91
+ </div>
92
+ <?php endforeach; ?>
93
+ </fieldset>
94
+ </div>
95
+ <script type="text/javascript">
96
+ //<![CDATA[
97
+ var productWebsiteCheckboxes = $$('.website-checkbox');
98
+
99
+ for(var i=0;i<productWebsiteCheckboxes.length;i++){
100
+ Event.observe(productWebsiteCheckboxes[i], 'click', toggleStoreFromChoosers);
101
+ }
102
+
103
+ function toggleStoreFromChoosers(event){
104
+ var element = Event.element(event);
105
+ var selects = $(element.id+'_data').getElementsBySelector('select');
106
+ var selectBlocks = $(element.id+'_data').getElementsByClassName('website-'+element.value+'-select');
107
+ for (var i=0; i<selects.length; i++) {
108
+ selects[i].disabled=!element.checked;
109
+ }
110
+ for (var i=0; i<selectBlocks.length; i++) {
111
+ if (element.checked) {
112
+ selectBlocks[i].show();
113
+ }
114
+ else {
115
+ selectBlocks[i].hide();
116
+ }
117
+ }
118
+ }
119
+ //]]>
120
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/categories.phtml ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Product Categories') ?></h4>
30
+ </div>
31
+ <fieldset id="grop_fields">
32
+ <input type="hidden" name="category_ids" id="product_categories" value="<?php echo $this->getIdsString() ?>">
33
+ <div id="product-categories" class="tree"></div>
34
+ </fieldset>
35
+ </div>
36
+ <?php if($this->getRootNode() && $this->getRootNode()->hasChildren()): ?>
37
+ <script type="text/javascript">
38
+ Ext.EventManager.onDocumentReady(function() {
39
+ var categoryLoader = new Ext.tree.TreeLoader({
40
+ dataUrl: '<?php echo $this->getLoadTreeUrl()?>'
41
+ });
42
+
43
+ categoryLoader.createNode = function(config) {
44
+ config.uiProvider = Ext.tree.CheckboxNodeUI;
45
+ var node;
46
+ if (config.children && !config.children.length) {
47
+ delete(config.children);
48
+ node = new Ext.tree.AsyncTreeNode(config);
49
+
50
+ } else {
51
+ node = new Ext.tree.TreeNode(config);
52
+ }
53
+ return node;
54
+ };
55
+
56
+ categoryLoader.on("beforeload", function(treeLoader, node) {
57
+ treeLoader.baseParams.category = node.attributes.id;
58
+ });
59
+
60
+ categoryLoader.on("load", function(treeLoader, node, config) {
61
+ varienWindowOnload();
62
+ });
63
+
64
+ var tree = new Ext.tree.TreePanel('product-categories', {
65
+ animate:true,
66
+ loader: categoryLoader,
67
+ enableDD:false,
68
+ containerScroll: true,
69
+ rootUIProvider: Ext.tree.CheckboxNodeUI,
70
+ selModel: new Ext.tree.CheckNodeMultiSelectionModel(),
71
+ rootVisible: '<?php echo $this->getRootNode()->getIsVisible() ?>'
72
+ });
73
+
74
+ tree.on('check', function(node) {
75
+ if(node.attributes.checked) {
76
+ categoryAdd(node.id);
77
+ } else {
78
+ categoryRemove(node.id);
79
+ }
80
+ varienElementMethods.setHasChanges(node.getUI().checkbox);
81
+ }, tree);
82
+
83
+ // set the root node
84
+ var root = new Ext.tree.TreeNode({
85
+ text: '<?php echo $this->jsQuoteEscape($this->getRootNode()->getName()) ?>',
86
+ draggable:false,
87
+ checked:'<?php echo $this->getRootNode()->getChecked() ?>',
88
+ id:'<?php echo $this->getRootNode()->getId() ?>',
89
+ disabled: <?php echo ($this->getRootNode()->getDisabled() ? 'true' : 'false') ?>,
90
+ uiProvider: Ext.tree.CheckboxNodeUI
91
+ });
92
+
93
+ tree.setRootNode(root);
94
+ bildCategoryTree(root, <?php echo $this->getTreeJson() ?>);
95
+ tree.addListener('click', categoryClick.createDelegate(this));
96
+
97
+ // render the tree
98
+ tree.render();
99
+ root.expand();
100
+ //tree.expandAll();
101
+ });
102
+
103
+ function bildCategoryTree(parent, config){
104
+ if (!config) return null;
105
+
106
+ if (parent && config && config.length){
107
+ for (var i = 0; i < config.length; i++){
108
+ config[i].uiProvider = Ext.tree.CheckboxNodeUI;
109
+ var node;
110
+ var _node = Object.clone(config[i]);
111
+ if (_node.children && !_node.children.length) {
112
+ delete(_node.children);
113
+ node = new Ext.tree.AsyncTreeNode(_node);
114
+
115
+ } else {
116
+ node = new Ext.tree.TreeNode(config[i]);
117
+ }
118
+ parent.appendChild(node);
119
+ node.loader = node.getOwnerTree().loader;
120
+ if(config[i].children){
121
+ bildCategoryTree(node, config[i].children);
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ function categoryClick(node, e){
128
+ if (node.disabled) {
129
+ return;
130
+ }
131
+ node.getUI().check(!node.getUI().checked());
132
+ varienElementMethods.setHasChanges(Event.element(e), e);
133
+ };
134
+ function categoryAdd(id) {
135
+ var ids = $('product_categories').value.split(',');
136
+ ids.push(id);
137
+ $('product_categories').value = ids.join(',');
138
+ }
139
+ function categoryRemove(id) {
140
+ var ids = $('product_categories').value.split(',');
141
+ // bug #7654 fixed
142
+ while (-1 != ids.indexOf(id)) {
143
+ ids.splice(ids.indexOf(id), 1);
144
+ }
145
+ $('product_categories').value = ids.join(',');
146
+ }
147
+ </script>
148
+ <?php endif; ?>
app/design/adminhtml/default/default/template/catalog/product/edit/options.phtml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit custom-options product-custom-options">
28
+ <div id="dynamic-price-warrning" style="display:none">
29
+ <ul class="messages">
30
+ <li class="error-msg">
31
+ <ul>
32
+ <li><?php echo $this->__('Bundle with dynamic pricing cannot include custom defined options. Options will not be saved.') ?></li>
33
+ </ul>
34
+ </li>
35
+ </ul>
36
+ </div>
37
+ <div class="entry-edit-head">
38
+ <h4><?php echo Mage::helper('catalog')->__('Custom Options') ?></h4>
39
+ <div class="right"><?php echo $this->getAddButtonHtml() ?></div>
40
+ </div>
41
+
42
+ <div id="product_options_container" class="box">
43
+ <div id="product_options_container_top"></div>
44
+ <?php echo $this->getOptionsBoxHtml() ?>
45
+ </div>
46
+ </div>
47
+
48
+ <script type="text/javascript">
49
+ // re-bind form elements onchange
50
+ varienWindowOnload(true);
51
+ //show error message
52
+ if ($('price_type')) {
53
+ if ($('price_type').value == '0' && $('dynamic-price-warrning')) {
54
+ $('dynamic-price-warrning').show();
55
+ }
56
+ }
57
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/options/option.phtml ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php echo $this->getTemplatesHtml() ?>
28
+
29
+ <script type="text/javascript">
30
+ //<![CDATA[
31
+ var firstStepTemplate = '<div class="option-box" id="option_{{id}}">'+
32
+ '<table id="<?php echo $this->getFieldId() ?>_{{id}}" class="option-header" cellpadding="0" cellspacing="0">'+
33
+ '<input type="hidden" id="<?php echo $this->getFieldId() ?>_{{id}}_is_delete" name="<?php echo $this->getFieldName() ?>[{{id}}][is_delete]" value="" />'+
34
+ '<input type="hidden" id="<?php echo $this->getFieldId() ?>_{{id}}_previous_type" name="<?php echo $this->getFieldName() ?>[{{id}}][previous_type]" value="{{type}}" />'+
35
+ '<input type="hidden" id="<?php echo $this->getFieldId() ?>_{{id}}_previous_group" name="<?php echo $this->getFieldName() ?>[{{id}}][previous_group]" value="" />'+
36
+ '<input type="hidden" id="<?php echo $this->getFieldId() ?>_{{id}}_id" name="<?php echo $this->getFieldName() ?>[{{id}}][id]" value="{{id}}" />'+
37
+ '<input type="hidden" id="<?php echo $this->getFieldId() ?>_{{id}}_option_id" name="<?php echo $this->getFieldName() ?>[{{id}}][option_id]" value="{{option_id}}" />'+
38
+ '<thead>'+
39
+ '<tr>'+
40
+ '<th class="opt-title"><?php echo Mage::helper('catalog')->__('Title') ?> <span class="required">*</span></th>'+
41
+ '<th class="opt-type"><?php echo Mage::helper('catalog')->__('Input Type') ?> <span class="required">*</span></th>'+
42
+ '<th class="opt-req"><?php echo $this->jsQuoteEscape(Mage::helper('catalog')->__('Is Required')) ?></th>'+
43
+ '<th class="opt-order"><?php echo Mage::helper('catalog')->__('Sort Order') ?></th>'+
44
+ '<th class="a-right"><?php echo $this->jsQuoteEscape($this->getDeleteButtonHtml()) ?></th>'+
45
+ '</tr>'+
46
+ '</thead>'+
47
+ '<tr>'+
48
+ '<td><input type="text" class="required-entry input-text" id="<?php echo $this->getFieldId() ?>_{{id}}_title" name="<?php echo $this->getFieldName() ?>[{{id}}][title]" value="{{title}}">{{checkboxScopeTitle}}</td>'+
49
+ '<td><?php echo $this->getTypeSelectHtml() ?></td>'+
50
+ '<td class="opt-req"><?php echo $this->getRequireSelectHtml() ?></td>'+
51
+ '<td><input type="text" class="validate-zero-or-greater input-text" name="<?php echo $this->getFieldName() ?>[{{id}}][sort_order]" value="{{sort_order}}"></td>'+
52
+ '<td>&nbsp;</td>'+
53
+ '</tr></table></div>';
54
+
55
+ var productOption = {
56
+ div : $('product_options_container_top'),
57
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
58
+ templateText : firstStepTemplate,
59
+ itemCount : 1,
60
+ add : function(data) {
61
+ this.template = new Template(this.templateText, this.templateSyntax);
62
+
63
+ if(!data.id){
64
+ data = {};
65
+ data.id = this.itemCount;
66
+ data.type = '';
67
+ data.option_id = 0;
68
+ } else {
69
+ this.itemCount = data.item_count;
70
+ }
71
+
72
+ Element.insert(this.div, {'after':this.template.evaluate(data)});
73
+
74
+ //set selected type
75
+ if (data.type) {
76
+ $A($('<?php echo $this->getFieldId() ?>_'+data.id+'_type').options).each(function(option){
77
+ if (option.value==data.type) option.selected = true;
78
+ });
79
+ }
80
+
81
+ //set selected is_require
82
+ if (data.is_require) {
83
+ $A($('<?php echo $this->getFieldId() ?>_'+data.id+'_is_require').options).each(function(option){
84
+ if (option.value==data.is_require) option.selected = true;
85
+ });
86
+ }
87
+
88
+ if (data.checkboxScopeTitle) {
89
+ //set disabled
90
+ if ($('<?php echo $this->getFieldId() ?>_'+data.option_id+'_title') && data.scopeTitleDisabled) {
91
+ $('<?php echo $this->getFieldId() ?>_'+data.option_id+'_title').disable();
92
+ }
93
+ }
94
+
95
+ this.itemCount++;
96
+ this.bindRemoveButtons();
97
+ productOptionType.bindSelectInputType();
98
+ },
99
+ remove : function(event){
100
+ var element = $(Event.findElement(event, 'div'));
101
+ if(element){
102
+ $('product_'+element.readAttribute('id')+'_'+'is_delete').value = '1';
103
+ element.addClassName('no-display');
104
+ element.addClassName('ignore-validate');
105
+ element.hide();
106
+ }
107
+ },
108
+ bindRemoveButtons : function(){
109
+ var buttons = $$('div.product-custom-options .delete-product-option');
110
+ for(var i=0;i<buttons.length;i++){
111
+ if(!$(buttons[i]).binded){
112
+ $(buttons[i]).binded = true;
113
+ Event.observe(buttons[i], 'click', this.remove.bind(this));
114
+ }
115
+ }
116
+ var inputs = $$('div.product-custom-options button', 'div.product-custom-options input', 'div.product-custom-options select', 'div.product-custom-options textarea');
117
+ <?php if ($this->isReadonly()):?>
118
+ for (var i=0, l = inputs.length; i < l; i ++) {
119
+ inputs[i].disabled = true;
120
+ if (inputs[i].tagName.toLowerCase()=='button') {
121
+ inputs[i].addClassName('disabled');
122
+ }
123
+ }
124
+ <?php else: ?>
125
+ inputs.each(function(el) { Event.observe(el, 'change', el.setHasChanges.bind(el)); } )
126
+ <?php endif;?>
127
+ }
128
+ }
129
+
130
+
131
+ var productOptionType = {
132
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
133
+ loadStepTwo : function(event){
134
+ var element = $(Event.findElement(event, 'select'));
135
+
136
+ var group = '';
137
+ var previousGroupElm = $(element.readAttribute('id').sub('_type', '_previous_group'));
138
+
139
+ switch(element.getValue()){
140
+ case 'field':
141
+ case 'area':
142
+ template = OptionTemplateText;
143
+ group = 'text';
144
+ break;
145
+ case 'file':
146
+ template = OptionTemplateFile;
147
+ group = 'file';
148
+ break;
149
+ case 'drop_down':
150
+ case 'radio':
151
+ case 'checkbox':
152
+ case 'multiple':
153
+ template = OptionTemplateSelect;
154
+ group = 'select';
155
+ break;
156
+ case 'date':
157
+ case 'date_time':
158
+ case 'time':
159
+ template = OptionTemplateDate;
160
+ group = 'date';
161
+ break;
162
+ default:
163
+ template = '';
164
+ group = 'unknown';
165
+ break;
166
+ }
167
+
168
+ if (previousGroupElm.getValue() != group) {
169
+ if ($(element.readAttribute('id')+'_'+previousGroupElm.getValue())) {
170
+ formElm = $(element.readAttribute('id')+'_'+previousGroupElm.getValue()).descendants();
171
+ formElm.each(function(elm){
172
+ if (elm.tagName == 'input' || elm.tagName == 'select') {
173
+ elm.name = '__delete__'+elm.readAttribute('name');
174
+ }
175
+ });
176
+
177
+ $(element.readAttribute('id')+'_'+previousGroupElm.getValue()).addClassName('no-display');
178
+ $(element.readAttribute('id')+'_'+previousGroupElm.getValue()).addClassName('ignore-validate');
179
+ $(element.readAttribute('id')+'_'+previousGroupElm.getValue()).hide();
180
+ }
181
+
182
+ previousGroupElm.value = group;
183
+
184
+ if ($(element.readAttribute('id')+'_'+group)) {
185
+ formElm = $(element.readAttribute('id')+'_'+group).descendants();
186
+ formElm.each(function(elm){
187
+ if (elm.match('input') || elm.match('select')) {
188
+ elm.name = elm.readAttribute('name').sub('__delete__', '');
189
+ }
190
+ });
191
+ $(element.readAttribute('id')+'_'+group).removeClassName('no-display');
192
+ $(element.readAttribute('id')+'_'+group).removeClassName('ignore-validate');
193
+ $(element.readAttribute('id')+'_'+group).show();
194
+
195
+ } else {
196
+ template = '<div id="'+element.readAttribute('id')+'_'+group+'" class="grid tier form-list">'+template+'</div><div id="'+element.readAttribute('id')+'_'+group+'_advice"></div';
197
+ this.secondTemplate = new Template(template, this.templateSyntax);
198
+
199
+ data = {};
200
+ if (!data.option_id) {
201
+ data = {};
202
+ data.option_id = $(element.readAttribute('id').sub('_type', '_id')).getValue();
203
+ }
204
+
205
+ Element.insert(element.readAttribute('id').sub('_type', ''), {'after':this.secondTemplate.evaluate(data)});
206
+
207
+ switch(element.getValue()){
208
+ case 'drop_down':
209
+ case 'radio':
210
+ case 'checkbox':
211
+ case 'multiple':
212
+ selectOptionType.bindAddButton();
213
+ break;
214
+ }
215
+ }
216
+ }
217
+ },
218
+ addDataToValues : function(data){
219
+
220
+ switch(data.type){
221
+ case 'field':
222
+ case 'area':
223
+ template = OptionTemplateText;
224
+ group = 'text';
225
+ break;
226
+ case 'file':
227
+ template = OptionTemplateFile;
228
+ group = 'file';
229
+ break;
230
+ case 'drop_down':
231
+ case 'radio':
232
+ case 'checkbox':
233
+ case 'multiple':
234
+ template = OptionTemplateSelect;
235
+ group = 'select';
236
+ break;
237
+ case 'date':
238
+ case 'date_time':
239
+ case 'time':
240
+ template = OptionTemplateDate;
241
+ group = 'date';
242
+ break;
243
+ }
244
+
245
+ $('<?php echo $this->getFieldId() ?>_'+data.id+'_previous_group').value = group;
246
+
247
+ template = '<div id="<?php echo $this->getFieldId() ?>_{{id}}_type_'+group+'" class="grid tier form-list">'+template+'</div><div id="<?php echo $this->getFieldId() ?>_{{id}}_type_'+group+'_advice"></div>';
248
+
249
+ this.secondTemplate = new Template(template, this.templateSyntax);
250
+
251
+ Element.insert($('<?php echo $this->getFieldId() ?>_'+data.option_id), {'after':this.secondTemplate.evaluate(data)});
252
+
253
+ if (data.checkboxScopePrice) {
254
+ //set disabled
255
+ if ($('<?php echo $this->getFieldId() ?>_'+data.option_id+'_price') && data.scopePriceDisabled) {
256
+ $('<?php echo $this->getFieldId() ?>_'+data.option_id+'_price').disable();
257
+ $('<?php echo $this->getFieldId() ?>_'+data.option_id+'_price_type').disable();
258
+ }
259
+ }
260
+
261
+ switch(data.type){
262
+ case 'drop_down':
263
+ case 'radio':
264
+ case 'checkbox':
265
+ case 'multiple':
266
+ data.optionValues.each(function(value) {
267
+ selectOptionType.add(value);
268
+ });
269
+ selectOptionType.bindAddButton();
270
+ break;
271
+ }
272
+
273
+ if (data.price_type) {
274
+ $A($('<?php echo $this->getFieldId() ?>_'+data.option_id+'_price_type').options).each(function(option){
275
+ if (option.value==data.price_type) option.selected = true;
276
+ });
277
+ }
278
+
279
+ },
280
+ bindSelectInputType : function(){
281
+ var types = $$('.select-product-option-type');
282
+ for(var i=0;i<types.length;i++){
283
+ if(!$(types[i]).binded){
284
+ $(types[i]).binded = true;
285
+ Event.observe(types[i], 'change', function(event){
286
+ productOptionType.loadStepTwo(event);
287
+ });
288
+ }
289
+ }
290
+ }
291
+ }
292
+
293
+ var productOptionScope = {
294
+ addScope : function(event){
295
+ var element = $(Event.element(event));
296
+ fieldToDisable = $(element.readAttribute('id').sub('_use_default', ''));
297
+
298
+ if (fieldToDisable.disabled) {
299
+ if (fieldToDisable.hasClassName('product-option-price')) {//need change to cheking value of element
300
+ $(fieldToDisable.readAttribute('id')+'_type').enable();
301
+ }
302
+ fieldToDisable.enable();
303
+ } else {
304
+ if (fieldToDisable.hasClassName('product-option-price')) {//need change to cheking value of element
305
+ $(fieldToDisable.readAttribute('id')+'_type').disable();
306
+ }
307
+ fieldToDisable.disable();
308
+ }
309
+ },
310
+ bindScopeCheckbox : function(){
311
+ var checkboxes = $$('.product-option-scope-checkbox');
312
+ for (var i=0;i<checkboxes.length;i++) {
313
+ if (!$(checkboxes[i]).binded) {
314
+ $(checkboxes[i]).binded = true;
315
+ Event.observe(checkboxes[i], 'click', this.addScope.bind(this));
316
+ }
317
+ }
318
+ }
319
+ }
320
+
321
+ if($('option_panel')){
322
+ $('option_panel').remove();
323
+ }
324
+
325
+ productOption.bindRemoveButtons();
326
+
327
+ if($('<?php echo $this->getAddButtonId() ?>')){
328
+ Event.observe('<?php echo $this->getAddButtonId() ?>', 'click', productOption.add.bind(productOption));
329
+ }
330
+
331
+ //validation for selected input type
332
+ Validation.addAllThese([
333
+ ['required-option-select', '<?php echo Mage::helper('catalog')->__('Select type of option') ?>', function(v, elm) {
334
+ if (elm.getValue() == '') {
335
+ return false;
336
+ }
337
+ return true;
338
+ }]]);
339
+
340
+ //adding data to templates
341
+ <?php foreach ($this->getOptionValues() as $_value): ?>
342
+ productOption.add(<?php echo $_value->toJson() ?>);
343
+ productOptionType.addDataToValues(<?php echo $_value->toJson() ?>);
344
+ <?php endforeach; ?>
345
+
346
+ //bind scope checkboxes
347
+ productOptionScope.bindScopeCheckbox();
348
+ //]]>
349
+ </script>
350
+
351
+ <div><?php if (!$this->isReadonly()):?><input type="hidden" name="affect_product_custom_options" value="1" /><?php endif;?></div>
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/date.phtml ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+
29
+ OptionTemplateDate = '<table class="border" cellpadding="0" cellspacing="0">'+
30
+ '<tr class="headings">'+
31
+ <?php if ($this->getCanReadPrice() !== false) : ?>
32
+ '<th class="type-price"><?php echo Mage::helper('catalog')->__('Price') ?></th>' +
33
+ '<th class="type-type"><?php echo Mage::helper('catalog')->__('Price Type') ?></th>' +
34
+ <?php endif; ?>
35
+ '<th class="last"><?php echo Mage::helper('catalog')->__('SKU') ?></th>'+
36
+ '</tr>'+
37
+ '<tr>'+
38
+ <?php if ($this->getCanReadPrice() !== false) : ?>
39
+ '<td><input type="text" class="input-text validate-zero-or-greater product-option-price" id="product_option_{{option_id}}_price" name="product[options][{{option_id}}][price]" value="{{price}}"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?>></td>' +
40
+ '<td><?php echo $this->getPriceTypeSelectHtml() ?>{{checkboxScopePrice}}</td>' +
41
+ <?php else : ?>
42
+ '<input type="hidden" id="product_option_{{option_id}}_price" name="product[options][{{option_id}}][price]">' +
43
+ '<input type="hidden" name="product[options][{{option_id}}][price_type]" id="product_option_{{option_id}}_price_type">' +
44
+ <?php endif; ?>
45
+ '<td class="last"><input type="text" class="input-text type-sku" name="product[options][{{option_id}}][sku]" value="{{sku}}"></td>'+
46
+ '</tr>'+
47
+ '</table>';
48
+
49
+ if ($('option_panel_type_date')) {
50
+ $('option_panel_type_date').remove();
51
+ }
52
+
53
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/file.phtml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+
29
+ OptionTemplateFile = '<table class="border" cellpadding="0" cellspacing="0">'+
30
+ '<tr class="headings">'+
31
+ <?php if ($this->getCanReadPrice() !== false) : ?>
32
+ '<th class="type-price"><?php echo Mage::helper('catalog')->__('Price') ?></th>' +
33
+ '<th class="type-type"><?php echo Mage::helper('catalog')->__('Price Type') ?></th>' +
34
+ <?php endif; ?>
35
+ '<th class="type-sku"><?php echo Mage::helper('catalog')->__('SKU') ?></th>'+
36
+ '<th class="type-title"><?php echo Mage::helper('catalog')->__('Allowed File Extensions') ?></th>'+
37
+ '<th class="last"><?php echo Mage::helper('catalog')->__('Maximum Image Size') ?></th>'+
38
+ '</tr>'+
39
+ '<tr>'+
40
+ <?php if ($this->getCanReadPrice() !== false) : ?>
41
+ '<td><input class="input-text" type="text" name="product[options][{{option_id}}][price]" value="{{price}}"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?>></td>' +
42
+ '<td><?php echo $this->getPriceTypeSelectHtml() ?></td>' +
43
+ <?php else : ?>
44
+ '<input type="hidden" name="product[options][{{option_id}}][price]">' +
45
+ '<input type="hidden" name="product[options][{{option_id}}][price_type]" id="product_option_{{option_id}}_price_type">' +
46
+ <?php endif; ?>
47
+ '<td><input type="text" class="input-text" name="product[options][{{option_id}}][sku]" value="{{sku}}"></td>'+
48
+ '<td><input class="input-text" type="text" name="product[options][{{option_id}}][file_extension]" value="{{file_extension}}"></td>'+
49
+ '<td class="type-last last" nowrap><input class="input-text" type="text" name="product[options][{{option_id}}][image_size_x]" value="{{image_size_x}}"> <?php echo Mage::helper('catalog')->__('x') ?> <input class="input-text" type="text" name="product[options][{{option_id}}][image_size_y]" value="{{image_size_y}}"> <?php echo Mage::helper('catalog')->__('px.') ?><br/><?php echo Mage::helper('catalog')->__('leave blank if its not an image') ?></td>'+
50
+ '</tr>'+
51
+ '</table>';
52
+
53
+ if ($('option_panel_type_file')) {
54
+ $('option_panel_type_file').remove();
55
+ }
56
+
57
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/select.phtml ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <script type="text/javascript">
29
+ //<![CDATA[
30
+ OptionTemplateSelect = '<table class="border" cellpadding="0" cellspacing="0">'+
31
+ '<input type="hidden" class="required-option-select-type-rows" name="validation_{{option_id}}_result" value="" >'+
32
+ '<thead>'+
33
+ '<tr class="headings">'+
34
+ '<th class="type-title"><?php echo Mage::helper('catalog')->__('Title') ?> <span class="required">*</span></th>'+
35
+ <?php if ($this->getCanReadPrice() !== false) : ?>
36
+ '<th class="type-price"><?php echo Mage::helper('catalog')->__('Price') ?></th>' +
37
+ '<th class="type-type"><?php echo Mage::helper('catalog')->__('Price Type') ?></th>' +
38
+ <?php endif; ?>
39
+ '<th class="type-sku"><?php echo Mage::helper('catalog')->__('SKU') ?></th>'+
40
+ '<th class="type-order"><?php echo Mage::helper('catalog')->__('Sort Order') ?></th>'+
41
+ '<th class="type-butt last">&nbsp;</th>'+
42
+ '</tr>'+
43
+ '</thead>'+
44
+ '<tbody id="select_option_type_row_{{option_id}}">'+
45
+ '</tbody>'+
46
+ '<tfoot>'+
47
+ '<tr>'+
48
+ '<td colspan="100" class="a-right"><?php echo $this->getAddButtonHtml() ?></td>'+
49
+ '</tr>'+
50
+ '</tfoot>'+
51
+ '</table>';
52
+
53
+ OptionTemplateSelectRow = '<tr id="product_option_{{id}}_select_{{select_id}}">'+
54
+ '<td>'+
55
+ '<input type="hidden" name="product[options][{{id}}][values][{{select_id}}][option_type_id]" value="{{option_type_id}}">'+
56
+ '<input type="hidden" id="product_option_{{id}}_select_{{select_id}}_is_delete" name="product[options][{{id}}][values][{{select_id}}][is_delete]" value="">'+
57
+ '<input type="text" class="required-entry input-text select-type-title" id="product_option_{{id}}_select_{{select_id}}_title" name="product[options][{{id}}][values][{{select_id}}][title]" value="{{title}}">{{checkboxScopeTitle}}</td>'+
58
+ <?php if ($this->getCanReadPrice() !== false) : ?>
59
+ '<td><input type="text" class="input-text validate-number product-option-price" id="product_option_{{id}}_select_{{select_id}}_price" name="product[options][{{id}}][values][{{select_id}}][price]" value="{{price}}"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?>></td>' +
60
+ '<td><?php echo $this->getPriceTypeSelectHtml() ?>{{checkboxScopePrice}}</td>' +
61
+ <?php else : ?>
62
+ '<input type="hidden" id="product_option_{{id}}_select_{{select_id}}_price" name="product[options][{{id}}][values][{{select_id}}][price]">' +
63
+ '<input type="hidden" name="product[options][{{id}}][values][{{select_id}}][price_type]" id="product_option_{{id}}_select_{{select_id}}_price_type">' +
64
+ <?php endif; ?>
65
+ '<td><input type="text" class="input-text" name="product[options][{{id}}][values][{{select_id}}][sku]" value="{{sku}}"></td>'+
66
+ '<td><input type="text" class="validate-zero-or-greater input-text" name="product[options][{{id}}][values][{{select_id}}][sort_order]" value="{{sort_order}}"></td>'+
67
+ '<td class="last"><span title="Delete row"><?php echo $this->getDeleteButtonHtml() ?></span></td>'+
68
+ '</tr>';
69
+
70
+ selectOptionType = {
71
+ div : 'select_option_type_row',
72
+ itemCount : 0,
73
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
74
+ templateText : OptionTemplateSelectRow,
75
+ add : function(data) {
76
+
77
+ this.template = new Template(this.templateText, this.templateSyntax);
78
+
79
+ if (data.target || data.srcElement) {//data is Event (work in IE and Firefox)
80
+ element = $(Event.findElement(data, 'button'));
81
+ optionId = element.readAttribute('id').sub('add_select_row_button_', '');
82
+ data = {};
83
+ data.option_type_id = '-1';
84
+ data.select_id = this.itemCount;
85
+ } else {
86
+ optionId = data.option_id;
87
+ data.select_id = data.option_type_id;
88
+ this.itemCount = data.item_count;
89
+ }
90
+
91
+ data.id = optionId;
92
+
93
+ Element.insert($(this.div+'_'+data.id), {'bottom':this.template.evaluate(data)});
94
+
95
+ if (data.checkboxScopeTitle) {
96
+ //set disabled
97
+ if ($('product_option_'+data.id+'_select_'+data.select_id+'_title') && data.scopeTitleDisabled) {
98
+ $('product_option_'+data.id+'_select_'+data.select_id+'_title').disable();
99
+ }
100
+ }
101
+ if (data.checkboxScopePrice) {
102
+ //set disabled
103
+ if ($('product_option_'+data.id+'_select_'+data.select_id+'_price') && data.scopePriceDisabled) {
104
+ $('product_option_'+data.id+'_select_'+data.select_id+'_price').disable();
105
+ $('product_option_'+data.id+'_select_'+data.select_id+'_price_type').disable();
106
+ }
107
+ }
108
+
109
+ if (data.price_type) {
110
+ $A($('product_option_'+data.id+'_select_'+data.select_id+'_price_type').options).each(function(option){
111
+ if (option.value==data.price_type) option.selected = true;
112
+ });
113
+ }
114
+
115
+ this.itemCount++;
116
+ this.bindRemoveButtons();
117
+ },
118
+ remove : function(event){
119
+ var element = $(Event.findElement(event, 'tr'));
120
+
121
+ if(element){
122
+ $(element.readAttribute('id')+'_is_delete').value = '1';
123
+ element.addClassName('no-display');
124
+ element.addClassName('ignore-validate');
125
+ element.hide();
126
+ }
127
+ },
128
+ bindRemoveButtons : function(){
129
+ var buttons = $$('.delete-select-row');
130
+ for(var i=0;i<buttons.length;i++){
131
+ if(!$(buttons[i]).binded){
132
+ $(buttons[i]).binded = true;
133
+ Event.observe(buttons[i], 'click', this.remove.bind(this));
134
+ }
135
+ }
136
+ },
137
+ bindAddButton : function()
138
+ {
139
+ var buttons = $$('.add-select-row');
140
+ for(var i=0;i<buttons.length;i++){
141
+ if(!$(buttons[i]).binded){
142
+ $(buttons[i]).binded = true;
143
+ Event.observe(buttons[i], 'click', this.add.bind(this));
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ if ($('option_panel_type_select')) {
150
+ $('option_panel_type_select').remove();
151
+ }
152
+
153
+ selectOptionType.bindRemoveButtons();
154
+
155
+ Validation.addAllThese([
156
+ ['required-option-select-type-rows', '<?php echo Mage::helper('catalog')->__('Please add rows to option.') ?>', function(v, elm) {
157
+ var optionContainerElm = elm.up('div.grid');
158
+ var selectTypesFlag = false;
159
+ selectTypeElements = $$('#'+optionContainerElm.id+' .select-type-title');
160
+ selectTypeElements.each(function(elm){
161
+ if (elm.id && elm.up('tr').visible()) {
162
+ selectTypesFlag = true;
163
+ }
164
+ });
165
+ elm.advaiceContainer = optionContainerElm.id+'_advice';
166
+ return selectTypesFlag;
167
+ }]]);
168
+
169
+ if($('add_select_row_button')){
170
+ Event.observe('add_select_row_button', 'click', selectOptionType.add.bind(selectOptionType));
171
+ }
172
+ //]]>
173
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/options/type/text.phtml ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+ OptionTemplateText = '<table class="border" cellpadding="0" cellspacing="0">'+
30
+ '<tr class="headings">'+
31
+ <?php if ($this->getCanReadPrice() !== false) : ?>
32
+ '<th class="type-price"><?php echo Mage::helper('catalog')->__('Price') ?></th>' +
33
+ '<th class="type-type"><?php echo Mage::helper('catalog')->__('Price Type') ?></th>' +
34
+ <?php endif; ?>
35
+ '<th class="type-sku"><?php echo Mage::helper('catalog')->__('SKU') ?></th>'+
36
+ '<th class="type-last last"><?php echo Mage::helper('catalog')->__('Max Characters') ?> </th>'+
37
+ '</tr>'+
38
+ '<tr>'+
39
+ <?php if ($this->getCanReadPrice() !== false) : ?>
40
+ '<td><input type="text" class="input-text validate-number product-option-price" id="product_option_{{option_id}}_price" name="product[options][{{option_id}}][price]" value="{{price}}"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?>></td>' +
41
+ '<td><?php echo $this->getPriceTypeSelectHtml() ?>{{checkboxScopePrice}}</td>' +
42
+ <?php else : ?>
43
+ '<input type="hidden" name="product[options][{{option_id}}][price]">' +
44
+ '<input type="hidden" name="product[options][{{option_id}}][price_type]" id="product_option_{{option_id}}_price_type">' +
45
+ <?php endif; ?>
46
+ '<td><input type="text" class="input-text" name="product[options][{{option_id}}][sku]" value="{{sku}}"></td>'+
47
+ '<td class="type-last last"><input type="text" class="input-text validate-zero-or-greater" name="product[options][{{option_id}}][max_characters]" value="{{max_characters}}"></td>'+
48
+ '</tr>'+
49
+ '</table>';
50
+
51
+ if ($('option_panel_type_text')) {
52
+ $('option_panel_type_text').remove();
53
+ }
54
+ //]]>
55
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/price/tier.phtml ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ /* @var $this Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Price_Tier */
27
+ ?>
28
+ <?php $_htmlId = $this->getElement()->getHtmlId() ?>
29
+ <?php $_htmlClass = $this->getElement()->getClass() ?>
30
+ <?php $_htmlName = $this->getElement()->getName() ?>
31
+ <?php $_readonly = $this->getElement()->getReadonly() ?>
32
+ <?php $_showWebsite = $this->isShowWebsiteColumn(); ?>
33
+ <?php $_editWebsite = $this->isAllowChangeWebsite(); ?>
34
+ <?php $_priceValueValidation = $this->getPriceValidation('validate-greater-than-zero'); ?>
35
+
36
+
37
+ <?php $_showWebsite = $this->isShowWebsiteColumn(); ?>
38
+ <?php $_showWebsite= $this->isMultiWebsites(); ?>
39
+ <tr>
40
+ <td class="label"><?php echo $this->getElement()->getLabel() ?></td>
41
+ <td colspan="10" class="grid tier">
42
+ <table cellspacing="0" class="data border" id="tiers_table">
43
+ <?php if ($_showWebsite): ?>
44
+ <col width="135" />
45
+ <?php endif; ?>
46
+ <col width="120" />
47
+ <col width="95" />
48
+ <col />
49
+ <col width="1" />
50
+ <thead>
51
+ <tr class="headings">
52
+ <th <?php if (!$_showWebsite): ?>style="display:none"<?php endif; ?>><?php echo Mage::helper('sales')->__('Website') ?></th>
53
+ <th><?php echo Mage::helper('catalog')->__('Customer Group') ?></th>
54
+ <th><?php echo Mage::helper('catalog')->__('Qty') ?></th>
55
+ <th><?php echo $this->getPriceColumnHeader(Mage::helper('catalog')->__('Price')) ?></th>
56
+ <th class="last"><?php echo Mage::helper('catalog')->__('Action') ?></th>
57
+ </tr>
58
+ </thead>
59
+ <tbody id="<?php echo $_htmlId ?>_container"></tbody>
60
+ <tfoot>
61
+ <tr>
62
+ <td <?php if (!$_showWebsite): ?>style="display:none"<?php endif; ?>></td>
63
+ <td colspan="4" class="a-right"><?php echo $this->getAddButtonHtml() ?></td>
64
+ </tr>
65
+ </tfoot>
66
+ </table>
67
+
68
+ <script type="text/javascript">
69
+ //<![CDATA[
70
+ var tierPriceRowTemplate = '<tr>'
71
+ + '<td<?php if (!$_showWebsite): ?> style="display:none"<?php endif; ?>>'
72
+ + '<select class="<?php echo $_htmlClass ?> required-entry" name="<?php echo $_htmlName ?>[{{index}}][website_id]" id="tier_price_row_{{index}}_website">'
73
+ <?php foreach ($this->getWebsites() as $_websiteId => $_info): ?>
74
+ + '<option value="<?php echo $_websiteId ?>"><?php echo $this->jsQuoteEscape($this->htmlEscape($_info['name'])) ?><?php if (!empty($_info['currency'])): ?> [<?php echo $this->htmlEscape($_info['currency']) ?>]<?php endif; ?></option>'
75
+ <?php endforeach ?>
76
+ + '</select></td>'
77
+ + '<td><select class="<?php echo $_htmlClass ?> custgroup required-entry" name="<?php echo $_htmlName ?>[{{index}}][cust_group]" id="tier_price_row_{{index}}_cust_group">'
78
+ <?php foreach ($this->getCustomerGroups() as $_groupId=>$_groupName): ?>
79
+ + '<option value="<?php echo $_groupId ?>"><?php echo $this->jsQuoteEscape($this->htmlEscape($_groupName)) ?></option>'
80
+ <?php endforeach ?>
81
+ + '</select></td>'
82
+ + '<td class="nobr"><input class="<?php echo $_htmlClass ?> qty required-entry validate-greater-than-zero" type="text" name="<?php echo $_htmlName ?>[{{index}}][price_qty]" value="{{qty}}" id="tier_price_row_{{index}}_qty" />'
83
+ + ' <small class="nobr"><?php echo Mage::helper("catalog")->__("and above")?></small></td>'
84
+ + '<td><input class="<?php echo $_htmlClass ?> required-entry <?php echo $_priceValueValidation ?>" type="text" name="<?php echo $_htmlName ?>[{{index}}][price]" value="{{price}}" id="tier_price_row_{{index}}_price" /></td>'
85
+ + '<td class="last"><input type="hidden" name="<?php echo $_htmlName ?>[{{index}}][delete]" class="delete" value="" id="tier_price_row_{{index}}_delete" />'
86
+ + '<button title="<?php echo Mage::helper("catalog")->__("Delete Tier") ?>" type="button" class="scalable delete icon-btn delete-product-option" id="tier_price_row_{{index}}_delete_button" onclick="return tierPriceControl.deleteItem(event);">'
87
+ + '<span><?php echo Mage::helper("catalog")->__("Delete") ?></span></button></td>'
88
+ + '</tr>';
89
+
90
+ var tierPriceControl = {
91
+ template: new Template(tierPriceRowTemplate, new RegExp('(^|.|\\r|\\n)({{\\s*(\\w+)\\s*}})', "")),
92
+ itemsCount: 0,
93
+ addItem : function () {
94
+ <?php if ($_readonly): ?>
95
+ if (arguments.length < 4) {
96
+ return;
97
+ }
98
+ <?php endif; ?>
99
+ var data = {
100
+ website_id: '<?php echo $this->getDefaultWebsite() ?>',
101
+ group: '<?php echo $this->getDefaultCustomerGroup() ?>',
102
+ qty: '',
103
+ price: '',
104
+ readOnly: false,
105
+ index: this.itemsCount++
106
+ };
107
+
108
+ if(arguments.length >= 4) {
109
+ data.website_id = arguments[0];
110
+ data.group = arguments[1];
111
+ data.qty = arguments[2];
112
+ data.price = arguments[3];
113
+ }
114
+ if (arguments.length == 5) {
115
+ data.readOnly = arguments[4];
116
+ }
117
+
118
+ Element.insert($('<?php echo $_htmlId ?>_container'), {
119
+ bottom : this.template.evaluate(data)
120
+ });
121
+
122
+ $('tier_price_row_' + data.index + '_cust_group').value = data.group;
123
+ $('tier_price_row_' + data.index + '_website').value = data.website_id;
124
+
125
+ <?php if ($this->isShowWebsiteColumn() && !$this->isAllowChangeWebsite()):?>
126
+ var wss = $('tier_price_row_' + data.index + '_website');
127
+ var txt = wss.options[wss.selectedIndex].text;
128
+
129
+ wss.insert({after:'<span class="website-name">' + txt + '</span>'});
130
+ wss.hide();
131
+ <?php endif;?>
132
+
133
+ if (data.readOnly == '1') {
134
+ ['website', 'cust_group', 'qty', 'price', 'delete'].each(function(idx){
135
+ $('tier_price_row_'+data.index+'_'+idx).disabled = true;
136
+ });
137
+ $('tier_price_row_'+data.index+'_delete_button').hide();
138
+ }
139
+
140
+ <?php if ($_readonly): ?>
141
+ $('<?php echo $_htmlId ?>_container').select('input', 'select').each(this.disableElement);
142
+ $('<?php echo $_htmlId ?>_container').up('table').select('button').each(this.disableElement);
143
+ <?php else: ?>
144
+ $('<?php echo $_htmlId ?>_container').select('input', 'select').each(function(el){ Event.observe(el, 'change', el.setHasChanges.bind(el)); });
145
+ <?php endif; ?>
146
+ },
147
+ disableElement: function(el) {
148
+ el.disabled = true;
149
+ el.addClassName('disabled');
150
+ },
151
+ deleteItem: function(event) {
152
+ var tr = Event.findElement(event, 'tr');
153
+ if (tr) {
154
+ Element.select(tr, '.delete').each(function(elem){elem.value='1'});
155
+ Element.select(tr, ['input', 'select']).each(function(elem){elem.hide()});
156
+ Element.hide(tr);
157
+ Element.addClassName(tr, 'no-display template');
158
+ }
159
+ return false;
160
+ }
161
+ };
162
+ <?php foreach ($this->getValues() as $_item): ?>
163
+ tierPriceControl.addItem('<?php echo $_item['website_id'] ?>', '<?php echo $_item['cust_group'] ?>', '<?php echo $_item['price_qty']*1 ?>', '<?php echo sprintf('%.2f', $_item['price']) ?>', <?php echo (int)!empty($_item['readonly'])?>);
164
+ <?php endforeach; ?>
165
+ <?php if ($_readonly): ?>
166
+ $('<?php echo $_htmlId ?>_container').up('table').select('button')
167
+ .each(tierPriceControl.disableElement);
168
+ <?php endif; ?>
169
+ //]]>
170
+ </script>
171
+ </td></tr>
app/design/adminhtml/default/default/template/catalog/product/edit/serializer.phtml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php $_id = 'id_' . md5(microtime()) ?>
29
+ <input type="hidden" name="<?php echo $this->getInputElementName()?>" value="" id="<?php echo $_id?>" />
30
+ <script type="text/javascript">
31
+ // create serializer controller, that will syncronize grid checkboxes with hidden input
32
+ new productLinksController('<?php echo $_id?>', <?php echo $this->getProductsJSON() ?>, <?php echo $this->getGridBlock()->getJsObjectName() ?>);
33
+ </script>
app/design/adminhtml/default/default/template/catalog/product/edit/super/config.phtml ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php if (!$this->isReadonly()):?>
28
+ <div class="entry-edit">
29
+ <div id="assign_product_warrning" style="display: none;">
30
+ <ul class="messages">
31
+ <li class="error-msg">
32
+ <ul>
33
+ <li><?php echo $this->__('Links with associated products will retain only after saving current product.') ?></li>
34
+ </ul>
35
+ </li>
36
+ </ul>
37
+ </div>
38
+ <div class="entry-edit-head">
39
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Create Simple Associated Product') ?></h4>
40
+ </div>
41
+ <fieldset class="a-right">
42
+ <?php echo $this->getChildHtml('create_empty') ?> <?php echo $this->getChildHtml('create_from_configurable') ?>
43
+ </fieldset>
44
+ </div>
45
+
46
+ <div id="<?php echo $this->getHtmlId() ?>_simple_form" class="ignore-validate configurable-simple-product">
47
+ <?php echo $this->getChildHtml('simple'); ?>
48
+ </div>
49
+ <?php endif;?>
50
+ <div class="entry-edit">
51
+ <div class="entry-edit-head">
52
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Super product attributes configuration') ?></h4>
53
+ </div>
54
+ <fieldset id="<?php echo $this->getHtmlId() ?>">
55
+ <legend><?php echo Mage::helper('catalog')->__('Super product attributes configuration') ?></legend>
56
+ <input type="hidden" id="<?php echo $this->getHtmlId() ?>_save_links" name="configurable_products_data" value=""/>
57
+ <input type="hidden" id="<?php echo $this->getHtmlId() ?>_save_attributes" name="configurable_attributes_data" />
58
+
59
+ <ul class="messages">
60
+ <li class="notice-msg">
61
+ <ul><li><?php echo Mage::helper('catalog')->__('Price values for options should be specified in system base currency.')?></li></ul>
62
+ <ul><li><?php echo Mage::helper('catalog')->__('Attrribute names can be specified per store.')?></li></ul>
63
+ </li>
64
+ </ul>
65
+ <ul id="<?php echo $this->getHtmlId() ?>_attributes" class="super-attributes">
66
+ </ul>
67
+ </fieldset>
68
+ </div>
69
+ <div class="no-display" id="<?php echo $this->getHtmlId() ?>_attribute_template">
70
+ <div class="<?php if (!$this->isReadonly()):?>attribute-name-container <?php endif;?>left">
71
+ '{{frontend_label}}'
72
+ </div>
73
+ <div class="values-container right">
74
+ <label for="__id___label" class="bold"><?php echo Mage::helper('catalog')->__('Attribute Name:') ?></label>
75
+ <input id="__id___label" type="text" <?php if ($this->isReadonly()):?> disabled="disabled" <?php endif;?> class="input-text attribute-label required-entry template no-display" value="'{{label}}'" readonly="label" />
76
+ <input id="__id___label_use_default" type="checkbox" value="1" " checked="use_default" class="attribute-use-default-label">
77
+ <label for="__id___label_use_default"><?php echo Mage::helper('catalog')->__('Use default')?> ('{{store_label}}')</label>
78
+ <ul class="attribute-values">
79
+ </ul>
80
+ </div>
81
+ </div>
82
+ <div class="no-display" id="<?php echo $this->getHtmlId() ?>_value_template">
83
+ <div class="attribute-value-label-container left">
84
+ <?php echo Mage::helper('catalog')->__('Option:') ?> <strong>'{{label}}'</strong>
85
+ </div>
86
+ <?php if ($this->getCanReadPrice() !== false) : ?>
87
+ <div class="attribute-values-container-main">
88
+ <div class="attribute-values-container left">
89
+ <?php echo Mage::helper('catalog')->__('Price:') ?>
90
+ <input id="__id___pricing" type="text" <?php if ($this->isReadonly() || $this->getCanEditPrice() === false):?> disabled="disabled" <?php endif;?> class="input-text attribute-price validate-number template no-display" value="'{{pricing_value}}'"/>
91
+ </div>
92
+ <div class="attribute-values-container left">
93
+ &nbsp;<select class="attribute-price-type" id="__id___price_type" <?php if ($this->isReadonly() || $this->getCanEditPrice() === false):?> disabled="disabled" <?php endif;?>>
94
+ <option value="0"><?php echo Mage::helper('catalog')->__('Fixed') ?></option>
95
+ <option value="1"><?php echo Mage::helper('catalog')->__('Percentage') ?></option>
96
+ </select>
97
+ </div>
98
+ <?php if ($this->getShowUseDefaultPrice()):?>
99
+ <div class="attribute-values-container">
100
+ &nbsp;<input id="__id___default" type="checkbox" <?php if ($this->isReadonly() || $this->getCanEditPrice() === false):?> disabled="disabled" <?php endif;?> class="attribute-use-default-value"> <label for="__id___default" class="normal"><?php echo Mage::helper('catalog')->__('Use Default Value') ?></label>
101
+ </div>
102
+ <?php endif;?>
103
+ <?php else : ?>
104
+ <div class="attribute-values-container-main">
105
+ <div class="attribute-values-container left">
106
+ <input id="__id___pricing" type="hidden" class="attribute-price template no-display" value="0" />
107
+ </div>
108
+ <div class="attribute-values-container left">
109
+ <input type="hidden" class="attribute-price-type" id="__id___price_type" value="0" />
110
+ </div>
111
+ <?php if ($this->getShowUseDefaultPrice()) : ?>
112
+ <div class="attribute-values-container no-display">
113
+ <input id="__id___default" type="checkbox" <?php if ($this->isReadonly() || $this->getCanEditPrice() === false):?> disabled="disabled" <?php endif;?> class="attribute-use-default-value">
114
+ </div>
115
+ <?php endif; ?>
116
+ <?php endif; ?>
117
+ </div>
118
+ </div>
119
+ <div class="template no-display" id="<?php echo $this->getHtmlId() ?>_simple_pricing">
120
+ <?php if ($this->getCanReadPrice() !== false) : ?>
121
+ <div class="attribute-values-container left v-middle">
122
+ &nbsp;<?php echo Mage::helper('catalog')->__('Price:') ?>
123
+ <input type="text" class="input-text attribute-price validate-number"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled" <?php endif; ?>/>
124
+ </div>
125
+ <div class="attribute-values-container left v-middle">
126
+ &nbsp;<select class="attribute-price-type"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled" <?php endif; ?>>
127
+ <option value="0"><?php echo Mage::helper('catalog')->__('Fixed') ?></option>
128
+ <option value="1"><?php echo Mage::helper('catalog')->__('Percentage') ?></option>
129
+ </select>
130
+ </div>
131
+ <?php else : ?>
132
+ <input type="hidden" class="attribute-price" />
133
+ <input type="hidden" class="attribute-price-type" />
134
+ <?php endif; ?>
135
+ </div>
136
+ <div class="template no-display" id="<?php echo $this->getHtmlId() ?>_simple_pricing_view">
137
+ &nbsp;<?php echo Mage::helper('catalog')->__('Price') ?> <strong>'{{value}}'</strong>
138
+ </div>
139
+ <?php echo $this->getGridHtml() ?>
140
+ <script type="text/javascript">
141
+ var superProduct = new Product.Configurable(<?php echo $this->getAttributesJson() ?>,<?php echo $this->getLinksJson() ?>,'<?php echo $this->getHtmlId() ?>_',<?php echo $this->getGridJsObject() ?>, <?php echo ( $this->isReadonly() ? 'true' : 'false'); ?>);
142
+ superProduct.createEmptyUrl = '<?php echo $this->getNewEmptyProductUrl() ?>';
143
+ superProduct.createNormalUrl = '<?php echo $this->getNewProductUrl() ?>';
144
+ superProduct.createQuickUrl = '<?php echo $this->getQuickCreationUrl() ?>';
145
+
146
+ Validation.add(
147
+ 'validate-configurable',
148
+ '<?php echo $this->escapeJs(Mage::helper('catalog')->__('Product with this combination of attributes already associated to configurable.')) ?>',
149
+ superProduct.checkCreationUniqueAttributes.bind(superProduct)
150
+ )
151
+ </script>
152
+
153
+ <div><input type="hidden" name="affect_configurable_product_attributes" value="1" /></div>
app/design/adminhtml/default/default/template/catalog/product/edit/websites.phtml ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Product In Websites') ?></h4>
30
+ </div>
31
+ <fieldset id="grop_fields">
32
+ <?php if($this->getProductId()): ?>
33
+ <ul class="messages">
34
+ <li class="notice-msg">
35
+ <ul>
36
+ <li><?php echo Mage::helper('catalog')->__("Items that you don't want to show in the catalog or search results should have status 'Disabled' in the desired store.") ?></li>
37
+ </ul>
38
+ </li>
39
+ </ul>
40
+ <?php endif; ?>
41
+ <?php foreach ($this->getWebsiteCollection() as $_website): ?>
42
+ <div>
43
+ <div class="website-name">
44
+ <input name="product[website_ids][]" value="<?php echo $_website->getId() ?>" <?php if ($this->isReadonly()):?> disabled="disabled"<?php endif;?> class="checkbox website-checkbox" id="product_website_<?php echo $_website->getId() ?>" type="checkbox"<?php if($this->hasWebsite($_website->getId())): ?> checked="checked"<?php endif; ?> />
45
+ <big><strong><label for="product_website_<?php echo $_website->getId() ?>"><?php echo $this->escapeHtml($_website->getName()) ?></label></strong></big>
46
+ </div>
47
+ <div class="webiste-groups" id="product_website_<?php echo $_website->getId() ?>_data">
48
+ <?php foreach ($this->getGroupCollection($_website) as $_group): ?>
49
+ <h4><?php echo $this->escapeHtml($_group->getName()) ?></h4>
50
+ <div class="group-stores">
51
+ <table>
52
+ <?php foreach ($this->getStoreCollection($_group) as $_store): ?>
53
+ <tr>
54
+ <td><?php echo $this->escapeHtml($_store->getName()) ?></td>
55
+ <td>
56
+ <?php if($this->getWebsites() && !$this->hasWebsite($_website->getId())): ?>
57
+ <span class="website-<?php echo $_website->getId() ?>-select" style="display:none">
58
+ <?php echo Mage::helper('catalog')->__('(Copy data from: %s)', $this->getChooseFromStoreHtml($_store)) ?>
59
+ </span>
60
+ <?php endif; ?>
61
+ </td>
62
+ </tr>
63
+ <?php endforeach; ?>
64
+ </table>
65
+ </div>
66
+ <?php endforeach; ?>
67
+ </div>
68
+ </div>
69
+ <?php endforeach; ?>
70
+ </fieldset>
71
+ </div>
72
+ <script type="text/javascript">
73
+ //<![CDATA[
74
+ var productWebsiteCheckboxes = $$('.website-checkbox');
75
+
76
+ for(var i=0;i<productWebsiteCheckboxes.length;i++){
77
+ Event.observe(productWebsiteCheckboxes[i], 'click', toggleStoreFromChoosers);
78
+ }
79
+
80
+ function toggleStoreFromChoosers(event){
81
+ var element = Event.element(event);
82
+ var selects = $('product_website_'+element.value+'_data').getElementsBySelector('select');
83
+ var selectBlocks = $('product_website_'+element.value+'_data').getElementsByClassName('website-'+element.value+'-select');
84
+ for (var i=0; i<selects.length; i++) {
85
+ selects[i].disabled=!element.checked;
86
+ }
87
+ for (var i=0; i<selectBlocks.length; i++) {
88
+ if (element.checked) {
89
+ selectBlocks[i].show();
90
+ }
91
+ else {
92
+ selectBlocks[i].hide();
93
+ }
94
+ }
95
+ }
96
+ //]]>
97
+ </script>
app/design/adminhtml/default/default/template/catalog/product/helper/gallery.phtml ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Template for block Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content
30
+ */
31
+ ?>
32
+ <?php
33
+ $_block = $this;
34
+ /* @var $_block Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content */
35
+ ?>
36
+ <div id="<?php echo $_block->getHtmlId() ?>" >
37
+ <ul class="messages">
38
+ <li class="notice-msg">
39
+ <ul>
40
+ <li>
41
+ <?php echo Mage::helper('catalog')->__('Image type and information need to be specified for each store view.'); ?>
42
+ </li>
43
+ </ul>
44
+ </li>
45
+ </ul>
46
+ <div class="grid">
47
+ <table cellspacing="0" class="data border" id="<?php echo $_block->getHtmlId() ?>_grid" width="100%">
48
+ <col width="1" />
49
+ <col />
50
+ <col width="70" />
51
+ <?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
52
+ <col />
53
+ <?php endforeach; ?>
54
+ <col width="70" />
55
+ <col width="70" />
56
+ <thead>
57
+ <tr class="headings">
58
+ <th><?php echo Mage::helper('catalog')->__('Image') ?></th>
59
+ <th><?php echo Mage::helper('catalog')->__('Label') ?></th>
60
+ <th><?php echo Mage::helper('catalog')->__('Sort Order') ?></th>
61
+ <?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
62
+ <th><?php echo $type['label'] ?></th>
63
+ <?php endforeach; ?>
64
+ <th><?php echo Mage::helper('catalog')->__('Exclude') ?></th>
65
+ <th class="last"><?php echo Mage::helper('catalog')->__('Remove') ?></th>
66
+ </tr>
67
+ </thead>
68
+ <tbody id="<?php echo $_block->getHtmlId() ?>_list">
69
+ <tr id="<?php echo $_block->getHtmlId() ?>_template" class="template no-display">
70
+ <td class="cell-image"><div class="place-holder" onmouseover="<?php echo $_block->getJsObjectName(); ?>.loadImage('__file__')"><span><?php echo Mage::helper('catalog')->__('Roll Over for preview') ?></span></div><img src="<?php echo $this->getSkinUrl('images/spacer.gif')?>" width="100" style="display:none;" alt="" /></td>
71
+ <td class="cell-label"><input type="text" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> class="input-text" onkeyup="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" onchange="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
72
+ <td class="cell-position"><input type="text" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> class="input-text validate-number" onkeyup="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" onchange="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
73
+ <?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
74
+ <td class="cell-<?php echo $typeId ?> a-center"><input <?php if($_block->getElement()->getAttributeReadonly($typeId)) :?> disabled="disabled" <?php endif;?> type="radio" name="<?php echo $type['field'] ?>" onclick="<?php echo $_block->getJsObjectName(); ?>.setProductImages('__file__')" value="__file__" /></td>
75
+ <?php endforeach; ?>
76
+ <td class="cell-disable a-center"><input type="checkbox" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
77
+ <td class="cell-remove a-center last"><input type="checkbox" <?php if($_block->getElement()->getReadonly()):?> disabled="disabled"<?php endif;?> onclick="<?php echo $_block->getJsObjectName(); ?>.updateImage('__file__')" /></td>
78
+ </tr>
79
+ <?php if($_block->hasUseDefault()): ?>
80
+ <tr id="<?php echo $_block->getHtmlId() ?>_default">
81
+ <td><?php echo Mage::helper('catalog')->__('Use Default Value') ?></td>
82
+ <td>&nbsp;</td>
83
+ <td>&nbsp;</td>
84
+ <?php foreach ($_block->getMediaAttributes() as $_attribute): ?>
85
+ <td class="a-center">
86
+ <?php if($_block->getElement()->canDisplayUseDefault($_attribute)): ?>
87
+ <input class="default-checkbox" name="use_default[]" type="checkbox" <?php if($_block->getElement()->getAttributeReadonly($_attribute->getAttributeCode())):?> disabled="disabled" <?php endif;?> onclick="<?php echo $_block->getJsObjectName(); ?>.updateUseDefault()"
88
+ <?php if($_block->getElement()->usedDefault($_attribute)): ?>checked<?php endif; ?> value="<?php echo $_attribute->getAttributeCode() ?>" />
89
+ <?php endif ?>
90
+ </td>
91
+ <?php endforeach; ?>
92
+ <td>&nbsp;</td>
93
+ <td class="last">&nbsp;</td>
94
+ </tr>
95
+ <?php endif ?>
96
+ <tr id="<?php echo $_block->getHtmlId() ?>-image-0">
97
+ <td class="cell-image"><?php echo Mage::helper('catalog')->__('No image') ?></td>
98
+ <td class="cell-label"><input type="hidden" />&nbsp;</td>
99
+ <td class="cell-position"><input type="hidden" />&nbsp;</td>
100
+ <?php foreach ($_block->getImageTypes() as $typeId=>$type): ?>
101
+ <td class="cell-<?php echo $typeId ?> a-center"><input type="radio" <?php if($_block->getElement()->getAttributeReadonly($typeId)) :?> disabled="disabled" <?php endif;?> name="<?php echo $type['field'] ?>" onclick="<?php echo $_block->getJsObjectName(); ?>.setProductImages('no_selection')" value="no_selection" /></td>
102
+ <?php endforeach; ?>
103
+ <td class="cell-disable"><input type="hidden" />&nbsp;</td>
104
+ <td class="cell-remove last"><input type="hidden" />&nbsp;</td>
105
+ </tr>
106
+ </tbody>
107
+ <?php if (!$_block->getElement()->getReadonly()):?>
108
+ <tfoot>
109
+ <tr>
110
+ <td colspan="100" class="last" style="padding:8px">
111
+ <?php echo $_block->getUploaderHtml() ?>
112
+ </td>
113
+ </tr>
114
+ </tfoot>
115
+ <?php endif;?>
116
+ </table>
117
+ </div>
118
+ </div>
119
+ <input type="hidden" id="<?php echo $_block->getHtmlId() ?>_save" name="<?php echo $_block->getElement()->getName() ?>[images]" value="<?php echo $_block->htmlEscape($_block->getImagesJson()) ?>" />
120
+ <input type="hidden" id="<?php echo $_block->getHtmlId() ?>_save_image" name="<?php echo $_block->getElement()->getName() ?>[values]" value="<?php echo $_block->htmlEscape($_block->getImagesValuesJson()) ?>" />
121
+ <script type="text/javascript">
122
+ //<![CDATA[
123
+ var <?php echo $_block->getJsObjectName(); ?> = new Product.Gallery('<?php echo $_block->getHtmlId() ?>', <?php if ($_block->getElement()->getReadonly()):?>null<?php else:?><?php echo $_block->getUploader()->getJsObjectName() ?><?php endif;?>, <?php echo $_block->getImageTypesJson() ?>);
124
+ //]]>
125
+ </script>
app/design/adminhtml/default/default/template/catalog/product/js.phtml ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+ Event.observe(window, 'load', recalculateTax);
30
+ Event.observe(window, 'load', registerTaxRecalcs);
31
+
32
+ function registerTaxRecalcs()
33
+ {
34
+ if (typeof dynamicTaxes == 'undefined') {
35
+ return;
36
+ }
37
+
38
+ for (var i=0; i<dynamicTaxes.length; i++) {
39
+ Event.observe($(dynamicTaxes[i]), 'change', recalculateTax);
40
+ }
41
+ Event.observe($('tax_class_id'), 'change', recalculateTax);
42
+ }
43
+
44
+ var priceFormat = <?php echo $this->helper('tax')->getPriceFormat($this->getStore()); ?>;
45
+ var taxRates = <?php echo $this->helper('tax')->getAllRatesByProductClass($this->getStore()); ?>;
46
+
47
+ function recalculateTax()
48
+ {
49
+ if (typeof dynamicTaxes == 'undefined') {
50
+ return;
51
+ }
52
+
53
+ for (var i=0; i<dynamicTaxes.length; i++) {
54
+ var code = dynamicTaxes[i];
55
+ var span = $('dynamic-tax-' + code);
56
+ var input = $(code);
57
+
58
+ if (!input.value) {
59
+ span.innerHTML = '';
60
+ continue;
61
+ }
62
+
63
+ var rate = 0;
64
+ var taxClass = $('tax_class_id').options[$('tax_class_id').selectedIndex].value;
65
+ eval('var value = taxRates.value_' + taxClass);
66
+
67
+ if (value != undefined) {
68
+ rate = value;
69
+ }
70
+
71
+ var spanValue = '';
72
+ if (rate != 0) {
73
+ spanValue = ' ' + formatCurrency(input.value/(100+rate)*rate, priceFormat);
74
+ }
75
+ span.innerHTML = spanValue;
76
+ }
77
+ }
78
+
79
+ // Bind tab changes
80
+ function bindActiveProductTab(event) {
81
+ if(event.tab && event.tab.name && $('store_switcher')){
82
+ $('store_switcher').switchParams = 'active_tab/'+event.tab.name+'/';
83
+ }
84
+ }
85
+ varienGlobalEvents.attachEventHandler('showTab', bindActiveProductTab);
86
+
87
+ // bind active tab
88
+ <?php if($tabsBlock = $this->getLayout()->getBlock('product_tabs')): ?>
89
+ if(<?php echo $tabsBlock->getJsObjectName() ?> && <?php echo $tabsBlock->getJsObjectName() ?>.activeTab && $('store_switcher')){
90
+ $('store_switcher').switchParams = 'active_tab/'+<?php echo $tabsBlock->getJsObjectName() ?>.activeTab.name+'/';
91
+ }
92
+ <?php endif; ?>
93
+ //]]>
94
+ </script>
app/design/adminhtml/default/default/template/catalog/product/price.phtml ADDED
@@ -0,0 +1,383 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php
29
+ /**
30
+ * Template for displaying product price in different places (products grid, product view page etc)
31
+ *
32
+ * @see Mage_Adminhtml_Block_Catalog_Product_Price
33
+ */
34
+ ?>
35
+ <?php
36
+ /** @var $_coreHelper Mage_Core_Helper_Data */
37
+ $_coreHelper = $this->helper('core');
38
+ /** @var $_weeeHelper Mage_Weee_Helper_Data */
39
+ $_weeeHelper = $this->helper('weee');
40
+ /** @var $_taxHelper Mage_Tax_Helper_Data */
41
+ $_taxHelper = $this->helper('tax');
42
+
43
+ $_product = $this->getProduct();
44
+ $_id = $_product->getId();
45
+ $_storeId = $_product->getStoreId();
46
+ $_website = Mage::app()->getStore($_storeId)->getWebsite();
47
+
48
+ $_weeeSeparator = '';
49
+ $_simplePricesTax = ($_taxHelper->displayPriceIncludingTax() || $_taxHelper->displayBothPrices());
50
+ $_minimalPriceValue = $_product->getMinimalPrice();
51
+ $_minimalPrice = $_taxHelper->getPrice($_product, $_minimalPriceValue, $_simplePricesTax);
52
+ ?>
53
+
54
+
55
+ <?php
56
+ $_exclTax = $_taxHelper->getPrice($_product, $_minimalPriceValue, $includingTax = null);
57
+ $_inclTax = $_taxHelper->getPrice($_product, $_minimalPriceValue, $includingTax = true);
58
+ ?>
59
+ <?php $_weeeTaxAmount = $_weeeHelper->getAmount($_product, null, null, $_website); ?>
60
+ <?php if ($_weeeHelper->typeOfDisplay($_product, array(1,2,4))): ?>
61
+ <?php $_weeeTaxAmount = $_weeeHelper->getAmount($_product, null, null, $_website); ?>
62
+ <?php $_weeeTaxAttributes = $_weeeHelper->getProductWeeeAttributesForRenderer($_product, null, null, $_website); ?>
63
+ <?php endif; ?>
64
+
65
+ <div class="price-box">
66
+ <?php $_price = $_taxHelper->getPrice($_product, $_product->getPrice()) ?>
67
+ <?php $_regularPrice = $_taxHelper->getPrice($_product, $_product->getPrice(), $_simplePricesTax) ?>
68
+ <?php $_finalPrice = $_taxHelper->getPrice($_product, $_product->getFinalPrice()) ?>
69
+ <?php $_finalPriceInclTax = $_taxHelper->getPrice($_product, $_product->getFinalPrice(), true) ?>
70
+ <?php $_weeeDisplayType = $_weeeHelper->getPriceDisplayType(); ?>
71
+ <?php if ($_finalPrice == $_price): ?>
72
+ <?php if ($_taxHelper->displayBothPrices()): ?>
73
+ <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 0)): // including ?>
74
+ <span class="price-excluding-tax">
75
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
76
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
77
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, false) ?>
78
+ </span>
79
+ </span>
80
+ <span class="price-including-tax">
81
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
82
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
83
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount,true,false) ?>
84
+ </span>
85
+ </span>
86
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?>
87
+ <span class="price-excluding-tax">
88
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
89
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
90
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, false) ?>
91
+ </span>
92
+ </span>
93
+ <span class="price-including-tax">
94
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
95
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
96
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
97
+ </span>
98
+ <span class="weee">(
99
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
100
+ <?php echo $_weeeSeparator; ?>
101
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount(), $_storeId, true, true); ?>
102
+ <?php $_weeeSeparator = ' + '; ?>
103
+ <?php endforeach; ?>
104
+ )</span>
105
+ </span>
106
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?>
107
+ <span class="price-excluding-tax">
108
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
109
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
110
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, false) ?>
111
+ </span>
112
+ </span>
113
+ <span class="price-including-tax">
114
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
115
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
116
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
117
+ </span>
118
+ <span class="weee">(
119
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
120
+ <?php echo $_weeeSeparator; ?>
121
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount()+$_weeeTaxAttribute->getTaxAmount(), $_storeId, true, true); ?>
122
+ <?php $_weeeSeparator = ' + '; ?>
123
+ <?php endforeach; ?>
124
+ )</span>
125
+ </span>
126
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?>
127
+ <span class="price-excluding-tax">
128
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
129
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
130
+ <?php echo $_coreHelper->currencyByStore($_price, $_storeId, true, false) ?>
131
+ </span>
132
+ </span>
133
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
134
+ <span class="weee">
135
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount(), $_storeId, true, true); ?>
136
+ </span>
137
+ <?php endforeach; ?>
138
+ <span class="price-including-tax">
139
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
140
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
141
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
142
+ </span>
143
+ </span>
144
+ <?php else: ?>
145
+ <span class="price-excluding-tax">
146
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span>
147
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
148
+ <?php echo $_coreHelper->currencyByStore($_price, $_storeId, true, false) ?>
149
+ </span>
150
+ </span>
151
+ <span class="price-including-tax">
152
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
153
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
154
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax, $_storeId, true, false) ?>
155
+ </span>
156
+ </span>
157
+ <?php endif; ?>
158
+ <?php else: ?>
159
+ <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 0)): // including ?>
160
+ <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
161
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, true) ?>
162
+ </span>
163
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?>
164
+ <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
165
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, true) ?>
166
+ </span>
167
+ <span class="weee">(
168
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
169
+ <?php echo $_weeeSeparator; ?>
170
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount(), $_storeId, true, true); ?>
171
+ <?php $_weeeSeparator = ' + '; ?>
172
+ <?php endforeach; ?>
173
+ )</span>
174
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?>
175
+ <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
176
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, true) ?>
177
+ </span>
178
+ <span class="weee">(
179
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
180
+ <?php echo $_weeeSeparator; ?>
181
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount()+$_weeeTaxAttribute->getTaxAmount(), $_storeId, true, true); ?>
182
+ <?php $_weeeSeparator = ' + '; ?>
183
+ <?php endforeach; ?>
184
+ )</span>
185
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?>
186
+ <span class="regular-price"><?php echo $_coreHelper->currencyByStore($_price, $_storeId, true, true) ?></span><br />
187
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
188
+ <span class="weee">
189
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount(), $_storeId, true, true); ?>
190
+ </span>
191
+ <?php endforeach; ?>
192
+ <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
193
+ <?php echo $_coreHelper->currencyByStore($_price+$_weeeTaxAmount, $_storeId, true, true) ?>
194
+ </span>
195
+ <?php else: ?>
196
+ <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
197
+ <?php echo $_coreHelper->currencyByStore($_price, $_storeId, true, true) ?>
198
+ </span>
199
+ <?php endif; ?>
200
+ <?php endif; ?>
201
+ <?php else: /* if ($_finalPrice == $_price): */ ?>
202
+ <?php $_originalWeeeTaxAmount = $_weeeHelper->getOriginalAmount($_product); ?>
203
+
204
+ <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 0)): // including ?>
205
+ <p class="old-price">
206
+ <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
207
+ <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
208
+ <?php echo $_coreHelper->currencyByStore($_regularPrice+$_originalWeeeTaxAmount, $_storeId, true, false) ?>
209
+ </span>
210
+ </p>
211
+
212
+ <?php if ($_taxHelper->displayBothPrices()): ?>
213
+ <p class="special-price">
214
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
215
+ <span class="price-excluding-tax">
216
+ <span class="label"><?php echo $_taxHelper->__('Excl. Tax:') ?></span>
217
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
218
+ <?php echo $_coreHelper->currencyByStore($_finalPrice+$_weeeTaxAmount, $_storeId, true, false) ?>
219
+ </span>
220
+ </span>
221
+ <span class="price-including-tax">
222
+ <span class="label"><?php echo $_taxHelper->__('Incl. Tax:') ?></span>
223
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
224
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
225
+ </span>
226
+ </span>
227
+ </p>
228
+ <?php else: ?>
229
+ <p class="special-price">
230
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
231
+ <span class="price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
232
+ <?php echo $_coreHelper->currencyByStore($_finalPrice+$_weeeTaxAmount, $_storeId, true, false) ?>
233
+ </span>
234
+ </p>
235
+ <?php endif; ?>
236
+
237
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?>
238
+ <p class="old-price">
239
+ <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
240
+ <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
241
+ <?php echo $_coreHelper->currencyByStore($_regularPrice+$_originalWeeeTaxAmount, $_storeId, true, false) ?>
242
+ </span>
243
+ </p>
244
+
245
+ <p class="special-price">
246
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
247
+ <span class="price-excluding-tax">
248
+ <span class="label"><?php echo $_taxHelper->__('Excl. Tax:') ?></span>
249
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
250
+ <?php echo $_coreHelper->currencyByStore($_finalPrice+$_weeeTaxAmount, $_storeId, true, false) ?>
251
+ </span>
252
+ </span>
253
+ <span class="weee">(
254
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
255
+ <?php echo $_weeeSeparator; ?>
256
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount(), $_storeId, true, true); ?>
257
+ <?php $_weeeSeparator = ' + '; ?>
258
+ <?php endforeach; ?>
259
+ )</span>
260
+ <span class="price-including-tax">
261
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
262
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
263
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
264
+ </span>
265
+ </span>
266
+ </p>
267
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?>
268
+ <p class="old-price">
269
+ <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
270
+ <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
271
+ <?php echo $_coreHelper->currencyByStore($_regularPrice+$_originalWeeeTaxAmount, $_storeId, true, false) ?>
272
+ </span>
273
+ </p>
274
+
275
+ <p class="special-price">
276
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
277
+ <span class="price-excluding-tax">
278
+ <span class="label"><?php echo $_taxHelper->__('Excl. Tax:') ?></span>
279
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
280
+ <?php echo $_coreHelper->currencyByStore($_finalPrice+$_weeeTaxAmount, $_storeId, true, false) ?>
281
+ </span>
282
+ </span>
283
+ <span class="weee">(
284
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
285
+ <?php echo $_weeeSeparator; ?>
286
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount()+$_weeeTaxAttribute->getTaxAmount(), $_storeId, true, true); ?>
287
+ <?php $_weeeSeparator = ' + '; ?>
288
+ <?php endforeach; ?>
289
+ )</span>
290
+ <span class="price-including-tax">
291
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
292
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
293
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
294
+ </span>
295
+ </span>
296
+ </p>
297
+ <?php elseif ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?>
298
+ <p class="old-price">
299
+ <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
300
+ <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
301
+ <?php echo $_coreHelper->currencyByStore($_regularPrice, $_storeId, true, false) ?>
302
+ </span>
303
+ </p>
304
+
305
+ <p class="special-price">
306
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
307
+ <span class="price-excluding-tax">
308
+ <span class="label"><?php echo $_taxHelper->__('Excl. Tax:') ?></span>
309
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
310
+ <?php echo $_coreHelper->currencyByStore($_finalPrice, $_storeId, true, false) ?>
311
+ </span>
312
+ </span>
313
+ <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?>
314
+ <span class="weee">
315
+ <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currencyByStore($_weeeTaxAttribute->getAmount(), $_storeId, true, true); ?>
316
+ </span>
317
+ <?php endforeach; ?>
318
+ <span class="price-including-tax">
319
+ <span class="label"><?php echo $_taxHelper->__('Incl. Tax:') ?></span>
320
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
321
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax+$_weeeTaxAmount, $_storeId, true, false) ?>
322
+ </span>
323
+ </span>
324
+ </p>
325
+ <?php else: // excl. ?>
326
+ <p class="old-price">
327
+ <span class="price-label"><?php echo $this->__('Regular Price:') ?></span>
328
+ <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
329
+ <?php echo $_coreHelper->currencyByStore($_regularPrice, $_storeId, true, false) ?>
330
+ </span>
331
+ </p>
332
+
333
+ <?php if ($_taxHelper->displayBothPrices()): ?>
334
+ <p class="special-price">
335
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
336
+ <span class="price-excluding-tax">
337
+ <span class="label"><?php echo $_taxHelper->__('Excl. Tax:') ?></span>
338
+ <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
339
+ <?php echo $_coreHelper->currencyByStore($_finalPrice, $_storeId, true, false) ?>
340
+ </span>
341
+ </span>
342
+ <span class="price-including-tax">
343
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax:') ?></span>
344
+ <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
345
+ <?php echo $_coreHelper->currencyByStore($_finalPriceInclTax, $_storeId, true, false) ?>
346
+ </span>
347
+ </span>
348
+ </p>
349
+ <?php else: ?>
350
+ <p class="special-price">
351
+ <span class="price-label"><?php echo $this->__('Special Price:') ?></span>
352
+ <span class="price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
353
+ <?php echo $_coreHelper->currencyByStore($_finalPrice, $_storeId, true, false) ?>
354
+ </span>
355
+ </p>
356
+ <?php endif; ?>
357
+ <?php endif; ?>
358
+
359
+ <?php endif; /* if ($_finalPrice == $_price): */ ?>
360
+
361
+ <?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()): ?>
362
+
363
+ <?php $_minimalPriceDisplayValue = $_minimalPrice; ?>
364
+ <?php if ($_weeeTaxAmount && $_weeeHelper->typeOfDisplay($_product, array(0, 1, 4))): ?>
365
+ <?php $_minimalPriceDisplayValue = $_minimalPrice+$_weeeTaxAmount; ?>
366
+ <?php endif; ?>
367
+
368
+ <?php if ($this->getUseLinkForAsLowAs()):?>
369
+ <a href="<?php echo $_product->getProductUrl(); ?>" class="minimal-price-link">
370
+ <?php else:?>
371
+ <span class="minimal-price-link">
372
+ <?php endif?>
373
+ <span class="label"><?php echo $this->__('As low as:') ?></span>
374
+ <span class="price" id="product-minimal-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">
375
+ <?php echo $_coreHelper->currencyByStore($_minimalPriceDisplayValue, $_storeId, true, false) ?>
376
+ </span>
377
+ <?php if ($this->getUseLinkForAsLowAs()):?>
378
+ </a>
379
+ <?php else:?>
380
+ </span>
381
+ <?php endif?>
382
+ <?php endif; /* if ($this->getDisplayMinimalPrice() && $_minimalPrice && $_minimalPrice < $_finalPrice): */ ?>
383
+ </div>
app/design/adminhtml/default/default/template/catalog/product/tab/alert.phtml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Template for block Mage_Adminhtml_Block_Catalog_Product_Edit_Tab_Alerts
30
+ */
31
+ ?>
32
+ <div id="alert_messages_block"><?php echo $this->getMessageHtml() ?></div>
33
+ <div>
34
+ <h4 class="icon-head head-edit-form"><?php echo Mage::helper('productalert')->__('Product Alerts') ?></h4>
35
+ </div>
36
+ <div class="clear"></div>
37
+ <?php echo $this->getAccordionHtml() ?>
app/design/adminhtml/default/default/template/catalog/product/tab/inventory.phtml ADDED
@@ -0,0 +1,233 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php if ($this->isReadonly()):?>
28
+ <?php $_readonly = ' disabled="disabled" ';?>
29
+ <?php else: ?>
30
+ <?php $_readonly = '';?>
31
+ <?php endif; ?>
32
+ <div class="entry-edit">
33
+ <div class="entry-edit-head">
34
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo Mage::helper('catalog')->__('Inventory') ?></h4>
35
+ </div>
36
+ <fieldset>
37
+
38
+ <legend><?php echo Mage::helper('catalog')->__('Inventory') ?></legend>
39
+ <table cellspacing="0" class="form-list" id="table_cataloginventory">
40
+ <tr>
41
+ <td class="label"><label for="inventory_manage_stock"><?php echo Mage::helper('catalog')->__('Manage Stock') ?></label></td>
42
+ <td class="value"><select id="inventory_manage_stock" name="<?php echo $this->getFieldSuffix() ?>[stock_data][manage_stock]" class="select" <?php echo $_readonly;?>>
43
+ <option value="1"><?php echo Mage::helper('catalog')->__('Yes') ?></option>
44
+ <option value="0"<?php if ($this->getConfigFieldValue('manage_stock') == 0): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('catalog')->__('No') ?></option>
45
+ </select>
46
+ <input type="hidden" id="inventory_manage_stock_default" value="<?php echo $this->getDefaultConfigValue('manage_stock'); ?>" />
47
+
48
+ <?php $_checked = ($this->getFieldValue('use_config_manage_stock') || $this->IsNew()) ? 'checked="checked"' : '' ?>
49
+ <input type="checkbox" id="inventory_use_config_manage_stock" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_manage_stock]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?>/>
50
+ <label for="inventory_use_config_manage_stock" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
51
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_manage_stock'), $('inventory_use_config_manage_stock').parentNode);</script><?php endif; ?></td>
52
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
53
+ </tr>
54
+
55
+ <?php if(!$this->getProduct()->isComposite()): ?>
56
+ <tr>
57
+ <td class="label"><label for="inventory_qty"><?php echo Mage::helper('catalog')->__('Qty') ?><span class="required">*</span></label></td>
58
+ <td class="value">
59
+ <?php if (!$_readonly):?>
60
+ <input type="hidden" id="original_inventory_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][original_inventory_qty]" value="<?php echo $this->getFieldValue('qty')*1 ?>"/>
61
+ <?php endif;?>
62
+ <input type="text" class="input-text required-entry validate-number" id="inventory_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][qty]" value="<?php echo $this->getFieldValue('qty')*1 ?>" <?php echo $_readonly;?>/>
63
+ </td>
64
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
65
+ </tr>
66
+
67
+ <tr>
68
+ <td class="label"><label for="inventory_min_qty"><?php echo Mage::helper('catalog')->__('Qty for Item\'s Status to Become Out of Stock') ?></label></td>
69
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_min_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][min_qty]" value="<?php echo $this->getFieldValue('min_qty')*1 ?>" <?php echo $_readonly;?>/>
70
+
71
+ <?php $_checked = ($this->getFieldValue('use_config_min_qty') || $this->IsNew()) ? 'checked="checked"' : '' ?>
72
+ <input type="checkbox" id="inventory_use_config_min_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_min_qty]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" <?php echo $_readonly;?> />
73
+ <label for="inventory_use_config_min_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
74
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_min_qty'), $('inventory_use_config_min_qty').parentNode);</script><?php endif; ?></td>
75
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
76
+ </tr>
77
+
78
+ <tr>
79
+ <td class="label"><label for="inventory_min_sale_qty"><?php echo Mage::helper('catalog')->__('Minimum Qty Allowed in Shopping Cart') ?></label></td>
80
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_min_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][min_sale_qty]" value="<?php echo $this->getFieldValue('min_sale_qty')*1 ?>" <?php echo $_readonly;?>/>
81
+
82
+ <?php $_checked = ($this->getFieldValue('use_config_min_sale_qty') || $this->IsNew()) ? 'checked="checked"' : '' ?>
83
+ <input type="checkbox" id="inventory_use_config_min_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_min_sale_qty]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?> />
84
+ <label for="inventory_use_config_min_sale_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
85
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_min_sale_qty'), $('inventory_use_config_min_sale_qty').parentNode);</script><?php endif; ?></td>
86
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
87
+ </tr>
88
+
89
+ <tr>
90
+ <td class="label"><label for="inventory_max_sale_qty"><?php echo Mage::helper('catalog')->__('Maximum Qty Allowed in Shopping Cart') ?></label></td>
91
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_max_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][max_sale_qty]" value="<?php echo $this->getFieldValue('max_sale_qty')*1 ?>" <?php echo $_readonly;?> />
92
+
93
+ <?php $_checked = ($this->getFieldValue('use_config_max_sale_qty') || $this->IsNew()) ? 'checked="checked"' : '' ?>
94
+ <input type="checkbox" id="inventory_use_config_max_sale_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_max_sale_qty]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?> />
95
+ <label for="inventory_use_config_max_sale_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
96
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_max_sale_qty'), $('inventory_use_config_max_sale_qty').parentNode);</script><?php endif; ?></td>
97
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
98
+ </tr>
99
+
100
+ <?php if($this->canUseQtyDecimals()): ?>
101
+ <tr>
102
+ <td class="label"><label for="inventory_is_qty_decimal"><?php echo Mage::helper('catalog')->__('Qty Uses Decimals') ?></label></td>
103
+ <td class="value"><select id="inventory_is_qty_decimal" name="<?php echo $this->getFieldSuffix() ?>[stock_data][is_qty_decimal]" class="select" <?php echo $_readonly;?>>
104
+ <option value="0"><?php echo Mage::helper('catalog')->__('No') ?></option>
105
+ <option value="1"<?php if($this->getFieldValue('is_qty_decimal')==1): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('catalog')->__('Yes') ?></option>
106
+ </select>
107
+ </td>
108
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
109
+ </tr>
110
+ <?php endif; ?>
111
+
112
+ <tr>
113
+ <td class="label"><label for="inventory_backorders"><?php echo Mage::helper('catalog')->__('Backorders') ?></label></td>
114
+ <td class="value"><select id="inventory_backorders" name="<?php echo $this->getFieldSuffix() ?>[stock_data][backorders]" class="select" <?php echo $_readonly;?>>
115
+ <?php foreach ($this->getBackordersOption() as $option): ?>
116
+ <?php $_selected = ($option['value'] == $this->getFieldValue('backorders')) ? 'selected="selected"' : '' ?>
117
+ <option value="<?php echo $option['value'] ?>" <?php echo $_selected ?>><?php echo $option['label'] ?></option>
118
+ <?php endforeach; ?>
119
+ </select>
120
+
121
+ <?php $_checked = ($this->getFieldValue('use_config_backorders') || $this->IsNew()) ? 'checked="checked"' : '' ?>
122
+ <input type="checkbox" id="inventory_use_config_backorders" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_backorders]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?> />
123
+ <label for="inventory_use_config_backorders" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
124
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_backorders'), $('inventory_use_config_backorders').parentNode);</script><?php endif; ?></td>
125
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
126
+ </tr>
127
+ <tr>
128
+ <td class="label"><label for="inventory_notify_stock_qty"><?php echo Mage::helper('catalog')->__('Notify for Quantity Below') ?></label></td>
129
+ <td class="value"><input type="text" class="input-text validate-number" id="inventory_notify_stock_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][notify_stock_qty]" value="<?php echo $this->getFieldValue('notify_stock_qty')*1 ?>" <?php echo $_readonly;?>/>
130
+
131
+ <?php $_checked = ($this->getFieldValue('use_config_notify_stock_qty') || $this->IsNew()) ? 'checked="checked"' : '' ?>
132
+ <input type="checkbox" id="inventory_use_config_notify_stock_qty" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_notify_stock_qty]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?>/>
133
+ <label for="inventory_use_config_notify_stock_qty" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
134
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_notify_stock_qty'), $('inventory_use_config_notify_stock_qty').parentNode);</script><?php endif; ?></td>
135
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
136
+ </tr>
137
+ <?php endif; ?>
138
+ <tr>
139
+ <td class="label"><label for="inventory_enable_qty_increments"><?php echo Mage::helper('catalog')->__('Enable Qty Increments') ?></label></td>
140
+ <td class="value"><select id="inventory_enable_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[stock_data][enable_qty_increments]" class="select" <?php echo $_readonly;?>>
141
+ <option value="1"><?php echo Mage::helper('catalog')->__('Yes') ?></option>
142
+ <option value="0"<?php if ($this->getConfigFieldValue('enable_qty_increments') == 0): ?> selected="selected"<?php endif; ?>><?php echo Mage::helper('catalog')->__('No') ?></option>
143
+ </select>
144
+ <input type="hidden" id="inventory_enable_qty_increments_default" value="<?php echo $this->getDefaultConfigValue('enable_qty_increments'); ?>" />
145
+
146
+ <?php $_checked = ($this->getFieldValue('use_config_enable_qty_increments') || $this->IsNew()) ? 'checked="checked"' : '' ?>
147
+ <input type="checkbox" id="inventory_use_config_enable_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_enable_qty_increments]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?>/>
148
+ <label for="inventory_use_config_enable_qty_increments" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
149
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_enable_qty_increments'), $('inventory_use_config_enable_qty_increments').parentNode);</script><?php endif; ?></td>
150
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
151
+ </tr>
152
+ <tr>
153
+ <td class="label"><label for="inventory_qty_increments"><?php echo Mage::helper('catalog')->__('Qty Increments') ?></label></td>
154
+ <td class="value">
155
+ <input type="text" class="input-text validate-digits" id="inventory_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[stock_data][qty_increments]" value="<?php echo $this->getFieldValue('qty_increments')*1 ?>" <?php echo $_readonly;?>/>
156
+ <?php $_checked = ($this->getFieldValue('use_config_qty_increments') || $this->IsNew()) ? 'checked="checked"' : '' ?>
157
+ <input type="checkbox" id="inventory_use_config_qty_increments" name="<?php echo $this->getFieldSuffix() ?>[stock_data][use_config_qty_increments]" value="1" <?php echo $_checked ?> onclick="toggleValueElements(this, this.parentNode);" class="checkbox" <?php echo $_readonly;?>/>
158
+ <label for="inventory_use_config_qty_increments" class="normal"><?php echo Mage::helper('catalog')->__('Use Config Settings') ?></label>
159
+ <?php if (!$this->isReadonly()):?><script type="text/javascript">toggleValueElements($('inventory_use_config_qty_increments'), $('inventory_use_config_qty_increments').parentNode);</script><?php endif; ?></td>
160
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
161
+ </tr>
162
+ <tr>
163
+ <td class="label"><label for="inventory_stock_availability"><?php echo Mage::helper('catalog')->__('Stock Availability') ?></label></td>
164
+ <td class="value"><select id="inventory_stock_availability" name="<?php echo $this->getFieldSuffix() ?>[stock_data][is_in_stock]" class="select" <?php echo $_readonly;?>>
165
+ <?php foreach ($this->getStockOption() as $option): ?>
166
+ <?php $_selected = ($option['value'] == $this->getFieldValue('is_in_stock')) ? 'selected="selected"' : '' ?>
167
+ <option value="<?php echo $option['value'] ?>" <?php echo $_selected ?>><?php echo $option['label'] ?></option>
168
+ <?php endforeach; ?>
169
+ </select>
170
+ </td>
171
+ <td class="value scope-label"><?php echo Mage::helper('catalog')->__('[GLOBAL]') ?></td>
172
+ </tr>
173
+ </table>
174
+ <script type="text/javascript">
175
+ //<![CDATA[
176
+ var cataloginventoryNotManagestockFields = {
177
+ inventory_min_sale_qty: true,
178
+ inventory_max_sale_qty: true,
179
+ inventory_qty_increments: true
180
+ };
181
+ function changeManageStockOption()
182
+ {
183
+ $$('#table_cataloginventory tr').each(manageStockEach);
184
+ return true;
185
+ }
186
+ function manageStockEach(el)
187
+ {
188
+ if ($('inventory_use_config_manage_stock').checked) {
189
+ var manageStock = $('inventory_manage_stock_default').value;
190
+ }
191
+ else {
192
+ var manageStock = $('inventory_manage_stock').value;
193
+ }
194
+ if (el == $('inventory_manage_stock').up(1)) {
195
+ return;
196
+ }
197
+ for(field in cataloginventoryNotManagestockFields) {
198
+ if ($(field) && ($(field).up(1) == el)) {
199
+ return;
200
+ }
201
+ }
202
+ if (manageStock == 1) {
203
+ el.show();
204
+ }
205
+ else {
206
+ el.hide();
207
+ }
208
+ return;
209
+ }
210
+ Event.observe($('inventory_manage_stock'), 'change', changeManageStockOption);
211
+ Event.observe($('inventory_use_config_manage_stock'), 'change', changeManageStockOption);
212
+ changeManageStockOption();
213
+
214
+ function applyEnableQtyIncrements() {
215
+ if ($('inventory_use_config_enable_qty_increments').checked) {
216
+ var enableQtyIncrements = $('inventory_enable_qty_increments_default').value;
217
+ }
218
+ else {
219
+ var enableQtyIncrements = $('inventory_enable_qty_increments').value;
220
+ }
221
+ if (enableQtyIncrements == 1) {
222
+ $('inventory_qty_increments').up('tr').show();
223
+ } else {
224
+ $('inventory_qty_increments').up('tr').hide();
225
+ }
226
+ }
227
+ Event.observe($('inventory_enable_qty_increments'), 'change', applyEnableQtyIncrements);
228
+ Event.observe($('inventory_use_config_enable_qty_increments'), 'change', applyEnableQtyIncrements);
229
+ applyEnableQtyIncrements();
230
+ //]]>
231
+ </script>
232
+ </fieldset>
233
+ </div>
app/design/adminhtml/default/default/template/catalog/product/widget/chooser/container.phtml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Container for product link widget chooser
30
+ *
31
+ * @see Mage_Adminhtml_Block_Catalog_Product_Widget_Chooser_Container
32
+ */
33
+ ?>
34
+ <div class="columns">
35
+ <div class="side-col"><?php echo $this->getTreeHtml() ?></div>
36
+ <div class="main-col"><?php echo $this->getGridHtml() ?></div>
37
+ </div>
app/design/adminhtml/default/default/template/catalog/wysiwyg/js.phtml ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+
30
+ var catalogWysiwygEditor = {
31
+ overlayShowEffectOptions : null,
32
+ overlayHideEffectOptions : null,
33
+ open : function(editorUrl, elementId) {
34
+ if (editorUrl && elementId) {
35
+ new Ajax.Request(editorUrl, {
36
+ parameters: {
37
+ element_id: elementId+'_editor',
38
+ store_id: '<?php echo $this->getStoreId() ?>'
39
+ },
40
+ onSuccess: function(transport) {
41
+ try {
42
+ this.openDialogWindow(transport.responseText, elementId);
43
+ } catch(e) {
44
+ alert(e.message);
45
+ }
46
+ }.bind(this)
47
+ });
48
+ }
49
+ },
50
+ openDialogWindow : function(content, elementId) {
51
+ this.overlayShowEffectOptions = Windows.overlayShowEffectOptions;
52
+ this.overlayHideEffectOptions = Windows.overlayHideEffectOptions;
53
+ Windows.overlayShowEffectOptions = {duration:0};
54
+ Windows.overlayHideEffectOptions = {duration:0};
55
+
56
+ Dialog.confirm(content, {
57
+ draggable:true,
58
+ resizable:true,
59
+ closable:true,
60
+ className:"magento",
61
+ windowClassName:"popup-window",
62
+ title:'WYSIWYG Editor',
63
+ width:950,
64
+ height:555,
65
+ zIndex:1000,
66
+ recenterAuto:false,
67
+ hideEffect:Element.hide,
68
+ showEffect:Element.show,
69
+ id:"catalog-wysiwyg-editor",
70
+ buttonClass:"form-button",
71
+ okLabel:"Submit",
72
+ ok: this.okDialogWindow.bind(this),
73
+ cancel: this.closeDialogWindow.bind(this),
74
+ onClose: this.closeDialogWindow.bind(this),
75
+ firedElementId: elementId
76
+ });
77
+
78
+ content.evalScripts.bind(content).defer();
79
+
80
+ $(elementId+'_editor').value = $(elementId).value;
81
+ },
82
+ okDialogWindow : function(dialogWindow) {
83
+ if (dialogWindow.options.firedElementId) {
84
+ wysiwygObj = eval('wysiwyg'+dialogWindow.options.firedElementId+'_editor');
85
+ wysiwygObj.turnOff();
86
+ if (tinyMCE.get(wysiwygObj.id)) {
87
+ $(dialogWindow.options.firedElementId).value = tinyMCE.get(wysiwygObj.id).getContent();
88
+ } else {
89
+ if ($(dialogWindow.options.firedElementId+'_editor')) {
90
+ $(dialogWindow.options.firedElementId).value = $(dialogWindow.options.firedElementId+'_editor').value;
91
+ }
92
+ }
93
+ }
94
+ this.closeDialogWindow(dialogWindow);
95
+ },
96
+ closeDialogWindow : function(dialogWindow) {
97
+ // remove form validation event after closing editor to prevent errors during save main form
98
+ if (typeof varienGlobalEvents != undefined && editorFormValidationHandler) {
99
+ varienGlobalEvents.removeEventHandler('formSubmit', editorFormValidationHandler);
100
+ }
101
+
102
+ //IE fix - blocked form fields after closing
103
+ $(dialogWindow.options.firedElementId).focus();
104
+
105
+ //destroy the instance of editor
106
+ wysiwygObj = eval('wysiwyg'+dialogWindow.options.firedElementId+'_editor');
107
+ if (tinyMCE.get(wysiwygObj.id)) {
108
+ tinyMCE.execCommand('mceRemoveControl', true, wysiwygObj.id);
109
+ }
110
+
111
+ dialogWindow.close();
112
+ Windows.overlayShowEffectOptions = this.overlayShowEffectOptions;
113
+ Windows.overlayHideEffectOptions = this.overlayHideEffectOptions;
114
+ }
115
+ };
116
+
117
+ //]]>
118
+ </script>
app/design/adminhtml/default/default/template/cms/browser/content.phtml ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Wysiwyg Images content template
30
+ *
31
+ * @see Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content
32
+ */
33
+ ?>
34
+ <?php echo $this->getChildHtml('wysiwyg_images.js') ?>
35
+
36
+ <div class="content-header skip-header" id="content_header">
37
+ <table cellspacing="0">
38
+ <tr>
39
+ <td><h3 id="content_header_text"><?php echo $this->getHeaderText() ?></h3></td>
40
+ <td class="form-buttons">
41
+ <?php echo $this->getButtonsHtml() ?>
42
+ </td>
43
+ </tr>
44
+ </table>
45
+ </div>
46
+
47
+ <div id="contents-uploader"><?php echo $this->getChildHtml('wysiwyg_images.uploader') ?></div>
48
+ <div id="contents"></div>
49
+ <div id="contents-newfolder" class="no-display"><?php echo $this->getChildHtml('wysiwyg_images.newfolder') ?></div>
app/design/adminhtml/default/default/template/cms/browser/content/files.phtml ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Directory contents template for Wysiwyg Images
30
+ *
31
+ * @see Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content_Files
32
+ */
33
+ ?>
34
+ <?php
35
+ $_width = $this->getImagesWidth();
36
+ $_height = $this->getImagesHeight();
37
+ ?>
38
+ <?php if ($this->getFilesCount() > 0): ?>
39
+ <?php foreach ($this->getFiles() as $file): ?>
40
+ <div class="filecnt" id="<?php echo $this->getFileId($file) ?>">
41
+ <p class="nm" style="height:<?php echo $_height ?>px;width:<?php echo $_width ?>px;">
42
+ <?php if($this->getFileThumbUrl($file)):?>
43
+ <img src="<?php echo $this->getFileThumbUrl($file) ?>" alt="<?php echo $this->getFileName($file) ?>"/>
44
+ <?php endif; ?>
45
+ </p>
46
+ <?php if($this->getFileWidth($file)): ?>
47
+ <small><?php echo $this->getFileWidth($file) ?>x<?php echo $this->getFileHeight($file) ?> <?php echo $this->helper('cms')->__('px.') ?></small><br/>
48
+ <?php endif; ?>
49
+ <small><?php echo $this->getFileShortName($file); ?></small>
50
+ </div>
51
+ <?php endforeach; ?>
52
+ <?php else: ?>
53
+ <?php echo $this->helper('cms')->__('No files found') ?>
54
+ <?php endif; ?>
app/design/adminhtml/default/default/template/cms/browser/content/newfolder.phtml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * New directory template for Wysiwyg Images
30
+ *
31
+ * @see Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content_Newfolder
32
+ */
33
+ ?>
app/design/adminhtml/default/default/template/cms/browser/content/uploader.phtml ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Uploader template for Wysiwyg Images
30
+ *
31
+ * @see Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content_Uploader
32
+ */
33
+ ?>
34
+
35
+ <?php echo $this->helper('adminhtml/media_js')->getTranslatorScript() ?>
36
+
37
+ <div id="<?php echo $this->getHtmlId() ?>" class="uploader">
38
+ <div class="buttons">
39
+ <div id="<?php echo $this->getHtmlId() ?>-install-flash" style="display:none">
40
+ <?php echo Mage::helper('media')->__('This content requires last version of Adobe Flash Player. <a href="%s">Get Flash</a>', 'http://www.adobe.com/go/getflash/') ?>
41
+ </div>
42
+ </div>
43
+ <div class="clear"></div>
44
+ <div class="no-display" id="<?php echo $this->getHtmlId() ?>-template">
45
+ <div id="{{id}}" class="file-row">
46
+ <span class="file-info">{{name}} ({{size}})</span>
47
+ <span class="delete-button"><?php echo $this->getDeleteButtonHtml() ?></span>
48
+ <span class="progress-text"></span>
49
+ <div class="clear"></div>
50
+ </div>
51
+ </div>
52
+ <div class="no-display" id="<?php echo $this->getHtmlId() ?>-template-progress">
53
+ {{percent}}% {{uploaded}} / {{total}}
54
+ </div>
55
+ </div>
56
+
57
+ <script type="text/javascript">
58
+ //<![CDATA[
59
+ maxUploadFileSizeInBytes = <?php echo $this->getDataMaxSizeInBytes() ?>;
60
+ maxUploadFileSize = '<?php echo $this->getDataMaxSize() ?>';
61
+
62
+ <?php echo $this->getJsObjectName() ?> = new Flex.Uploader('<?php echo $this->getHtmlId() ?>', '<?php echo $this->getSkinUrl('media/uploader.swf') ?>', <?php echo $this->getConfigJson() ?>);
63
+ <?php echo $this->getJsObjectName() ?>.onFilesComplete = function(completedFiles){
64
+ completedFiles.each(function(file){
65
+ <?php echo $this->getJsObjectName() ?>.removeFile(file.id);
66
+ });
67
+ MediabrowserInstance.handleUploadComplete();
68
+ }
69
+ // hide flash buttons
70
+ if ($('<?php echo $this->getHtmlId() ?>-flash') != undefined) {
71
+ $('<?php echo $this->getHtmlId() ?>-flash').setStyle({float:'left'});
72
+ }
73
+ //]]>
74
+ </script>
app/design/adminhtml/default/default/template/cms/browser/js.phtml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Directories tree template
30
+ *
31
+ * @see Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Content
32
+ */
33
+ ?>
34
+ <script type="text/javascript">
35
+ //<![CDATA[
36
+ MediabrowserInstance = new Mediabrowser(<?php echo $this->getFilebrowserSetupObject() ?>);
37
+ MediabrowserInstance.storeId = '<?php echo $this->getStoreId() ?>';
38
+ //]]>
39
+ </script>
app/design/adminhtml/default/default/template/cms/browser/tree.phtml ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Directories tree template
30
+ *
31
+ * @see Mage_Adminhtml_Block_Cms_Wysiwyg_Images_Tree
32
+ */
33
+ ?>
34
+ <div class="categories-side-col">
35
+ <div class="tree-actions">
36
+ <a href="#" id="tree_action_collapse"><?php echo $this->helper('cms')->__('Collapse All'); ?></a>
37
+ <span class="separator">|</span>
38
+ <a href="#" id="tree_action_expand"><?php echo $this->helper('cms')->__('Expand All'); ?></a>
39
+ </div>
40
+ </div>
41
+
42
+ <div id="tree" style="width:100%; overflow:auto;"></div>
43
+
44
+ <script type="text/javascript">
45
+ Ext.onReady(function(){
46
+ var Tree = Ext.tree;
47
+ var tree = new Tree.TreePanel('tree', {
48
+ animate:true,
49
+ loader: new Tree.TreeLoader({
50
+ dataUrl:'<?php echo $this->getTreeLoaderUrl() ?>'
51
+ }),
52
+ enableDD:false,
53
+ containerScroll: true
54
+ });
55
+
56
+ // set the root node
57
+ var root = new Tree.AsyncTreeNode({
58
+ text: '<?php echo $this->getRootNodeName() ?>',
59
+ draggable:false,
60
+ id:'root'
61
+ });
62
+ tree.setRootNode(root);
63
+
64
+ // render the tree
65
+ tree.render();
66
+ root.expand();
67
+
68
+ Event.observe($('tree_action_collapse'), 'click', function(){
69
+ tree.collapseAll();
70
+ });
71
+
72
+ Event.observe($('tree_action_expand'), 'click', function(){
73
+ tree.expandAll();
74
+ });
75
+
76
+ MediabrowserInstance.setTree(tree);
77
+ tree.addListener('click', MediabrowserInstance.selectFolder.bind(MediabrowserInstance));
78
+ tree.expandPath('<?php echo $this->getTreeCurrentPath() ?>','', function(success, node) {
79
+ MediabrowserInstance.selectFolder(node);
80
+ });
81
+ });
82
+ </script>
app/design/adminhtml/default/default/template/cms/page/edit/form/renderer/content.phtml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_element = $this->getElement() ?>
28
+ <?php if (!$_element->getNoDisplay()): ?>
29
+ <tr>
30
+ <td colspan="3" class="value"><?php echo trim($_element->getElementHtml()) ?></td>
31
+ </tr>
32
+ <?php endif; ?>
app/design/adminhtml/default/default/template/coming.phtml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <h3><?php echo Mage::helper('adminhtml')->__('Sorry, this feature is coming soon...') ?></h3>
29
+ </div>
30
+ <p><?php echo Mage::helper('adminhtml')->__('We\'re in our typing table, coding away more features for Magento. Thank you for your patience.') ?></p>
app/design/adminhtml/default/default/template/connect/extension/custom/authors.phtml ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ var id = 0;
29
+ var authorTemplate =
30
+ '<tr>'+
31
+ '<td style="margin-bottom:5px;">'+
32
+ '<input class="input-text required-entry" style="width:160px;" name="authors[name][]" id="authors_name_{{id}}" value="{{name}}"/>'+
33
+ '</td>'+
34
+ '<td style="margin-bottom:5px;">'+
35
+ '<input class="input-text required-entry" style="width:140px;" name="authors[user][]" id="authors_user_{{id}}" value="{{user}}"/>'+
36
+ '</td>'+
37
+ '<td style="margin-bottom:5px;">'+
38
+ '<input class="input-text required-entry validate-email" style="width:160px;" name="authors[email][]" id="authors_email_{{id}}" value="{{email}}"/>'+
39
+ '</td>'+
40
+ '<td style="margin-bottom:5px;">'+
41
+ '<?php echo $this->jsQuoteEscape($this->getRemoveRowButtonHtml('tr')) ?>'+
42
+ '</td>'+
43
+ '</tr>';
44
+
45
+ function addAuthor(data)
46
+ {
47
+ if (data == undefined) {
48
+ data = {};
49
+ }
50
+ data.id = id++;
51
+
52
+ var template = new Template(authorTemplate, /(^|.|\r|\n)({{(\w+)}})/);
53
+ Element.insert($('authors_container'), {bottom: template.evaluate(data)});
54
+ }
55
+ </script>
56
+
57
+ <div class="entry-edit">
58
+ <?php echo $this->getFormHtml() ?>
59
+ <div class="entry-edit-head">
60
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__("Authors") ?></h4>
61
+ </div>
62
+ <fieldset id="authors_fieldset" class="grid">
63
+ <legend><?php echo $this->__("Authors") ?></legend>
64
+ <table class="data" cellspacing="0">
65
+ <thead>
66
+ <tr class="headings">
67
+ <th><?php echo $this->__("Name") ?> <span class="required">*</span></th>
68
+ <th><?php echo $this->__("User") ?> <span class="required">*</span></th>
69
+ <th><?php echo $this->__("Email") ?> <span class="required">*</span></th>
70
+ <th><?php echo $this->__("Remove") ?></th>
71
+ </tr>
72
+ </thead>
73
+ <tbody id="authors_container">
74
+ <script type="text/javascript">
75
+ <?php if (count($this->getAuthors())): ?>
76
+ <?php foreach ($this->getAuthors() as $author): ?>
77
+ addAuthor(<?php echo $author ?>);
78
+ <?php endforeach ?>
79
+ <?php else: ?>
80
+ addAuthor();
81
+ <?php endif;?>
82
+ </script>
83
+ </tbody>
84
+ <tfoot>
85
+ <tr>
86
+ <td class="a-right" colspan="4"><?php echo $this->getAddAuthorButtonHtml() ?></td>
87
+ </tr>
88
+ </tfoot>
89
+ </table>
90
+ </fieldset>
91
+ </div>
app/design/adminhtml/default/default/template/connect/extension/custom/contents.phtml ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <div class="entry-edit">
29
+ <?php echo $this->getFormHtml() ?>
30
+
31
+ <div class="entry-edit-head">
32
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__("Contents") ?></h4>
33
+ </div>
34
+ <fieldset id="contents_fieldset" class="grid">
35
+ <legend><?php echo $this->__("Contents") ?></legend>
36
+ <table class="data" cellspacing="0">
37
+ <thead>
38
+ <tr class="headings">
39
+ <th><?php echo $this->__("Target") ?></th>
40
+ <th><?php echo $this->__("Path") ?></th>
41
+ <th><?php echo $this->__("Type") ?></th>
42
+ <th><?php echo $this->__("Include") ?></th>
43
+ <th><?php echo $this->__("Ignore") ?></th>
44
+ <th><?php echo $this->__("Action") ?></th>
45
+ </tr>
46
+ <tr id="contents_template" style="display:none">
47
+ <?php function showContentsTemplate($self, $_i=0) { ?>
48
+ <td style="margin-bottom:5px;">
49
+ <select name="contents[target][]" style="width:170px">
50
+ <optgroup label="Magento">
51
+ <?php foreach ($self->getMageTargets() as $_value=>$_label): ?>
52
+ <option value="<?php echo $_value ?>" <?php echo $self->getSelected('contents/target/'.$_i, $_value) ?>><?php echo $_label ?></option>
53
+ <?php endforeach ?>
54
+ </optgroup>
55
+ </select>
56
+ </td><td style="margin-bottom:5px;">
57
+ <input class="input-text" style="width:150px" name="contents[path][]" value="<?php echo $self->getValue('contents/path/'.$_i) ?>"/>
58
+ </td><td style="margin-bottom:5px;">
59
+ <select name="contents[type][]" style="width:100px">
60
+ <option value="file" <?php echo $self->getSelected('contents/type/'.$_i, 'file') ?>><?php echo Mage::helper('adminhtml')->__("File") ?></option>
61
+ <option value="dir" <?php echo $self->getSelected('contents/type/'.$_i, 'dir') ?>><?php echo Mage::helper('adminhtml')->__("Recursive Dir") ?></option>
62
+ </select>
63
+ </td><td style="margin-bottom:5px;">
64
+ <input class="input-text" style="width:100px" name="contents[include][]" value="<?php echo $self->getValue('contents/include/'.$_i) ?>"/>
65
+ </td><td style="margin-bottom:5px;">
66
+ <input class="input-text" style="width:100px" name="contents[ignore][]" value="<?php echo $self->getValue('contents/ignore/'.$_i) ?>"/>
67
+ </td><td style="margin-bottom:5px;">
68
+ <?php echo $self->getRemoveRowButtonHtml('tr') ?>
69
+ </td>
70
+ <?php } ?>
71
+ <?php showContentsTemplate($this) ?>
72
+ </tr>
73
+ </thead>
74
+ <tbody id="contents_container">
75
+ <?php if ($this->getData('contents/target')): ?>
76
+ <?php foreach ($this->getData('contents/target') as $_i=>$_dbField): ?>
77
+ <?php if (0===$_i) continue; ?>
78
+ <tr>
79
+ <?php showContentsTemplate($this, $_i) ?>
80
+ </tr>
81
+ <?php endforeach ?>
82
+ <?php endif ?>
83
+ </tbody>
84
+ <tfoot>
85
+ <tr>
86
+ <td class="a-right" colspan="6"><?php echo $this->getAddRowButtonHtml('contents_container', 'contents_template', $this->__('Add Contents Path')) ?></td>
87
+ </tr>
88
+ </tfoot>
89
+ </table>
90
+ </fieldset>
91
+ </div>
app/design/adminhtml/default/default/template/connect/extension/custom/depends.phtml ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <?php echo $this->getFormHtml() ?>
29
+
30
+ <div class="entry-edit-head">
31
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__("Packages") ?></h4>
32
+ </div>
33
+ <fieldset id="depends_packages_fieldset" class="grid">
34
+ <legend><?php echo $this->__("Packages") ?></legend>
35
+ <table class="data" cellspacing="0">
36
+ <thead>
37
+ <tr class="headings">
38
+ <th><?php echo $this->__("Package") ?></th>
39
+ <th><?php echo $this->__("Channel") ?></th>
40
+ <th><?php echo $this->__("Min") ?></th>
41
+ <th><?php echo $this->__("Max") ?></th>
42
+ <th><?php echo $this->__("Files") ?></th>
43
+ <th><?php echo $this->__("Action") ?></th>
44
+ </tr>
45
+ <tr id="depends_packages_template" style="display:none">
46
+ <?php function showDependsPackageTemplate($self, $_i=0) {
47
+ $filesClass = "files";
48
+ ?>
49
+
50
+
51
+ <td style="margin-bottom:5px;">
52
+ <input class="input-text" style="width:200px;" name="depends[package][name][]" value="<?php echo $self->getValue('depends/package/name/'.$_i) ?>"/>
53
+ </td><td style="margin-bottom:5px;">
54
+ <input class="input-text" style="width:200px;" name="depends[package][channel][]" value="<?php echo $self->getValue('depends/package/channel/'.$_i) ?>"/>
55
+ </td><td style="margin-bottom:5px;">
56
+ <input class="input-text" style="width:50px;" name="depends[package][min][]" value="<?php echo $self->getValue('depends/package/min/'.$_i) ?>"/>
57
+ </td><td style="margin-bottom:5px;">
58
+ <input class="input-text" style="width:50px;" name="depends[package][max][]" value="<?php echo $self->getValue('depends/package/max/'.$_i) ?>"/>
59
+ </td><td style="margin-bottom:5px;">
60
+ <textarea class="<?php echo $filesClass ?>" style="width:300px;display:none" name="depends[package][files][]"><?php echo $self->getValue('depends/package/files/'.$_i)?> </textarea>
61
+ <?php echo $self->getAddFileDepsRowButtonHtml("tr", $filesClass) ?>
62
+ </td><td style="margin-bottom:5px;">
63
+ <?php echo $self->getRemoveRowButtonHtml('tr') ?>
64
+ </td>
65
+ <?php } ?>
66
+ <?php showDependsPackageTemplate($this) ?>
67
+ </tr>
68
+ </thead>
69
+ <tbody id="depends_packages_container">
70
+ <?php if ($this->getData('depends/package/name')): ?>
71
+ <?php foreach ($this->getData('depends/package/name') as $_i=>$_dbField): ?>
72
+ <?php if (0===$_i) continue; ?>
73
+ <tr>
74
+ <?php showDependsPackageTemplate($this, $_i) ?>
75
+ </tr>
76
+ <?php endforeach ?>
77
+ <?php endif ?>
78
+ </tbody>
79
+ <tfoot>
80
+ <tr>
81
+ <td class="a-right" colspan="8"><?php echo $this->getAddRowButtonHtml('depends_packages_container', 'depends_packages_template', $this->__('Add Package dependency')) ?></td>
82
+ </tr>
83
+ </tfoot>
84
+ </table>
85
+ </fieldset>
86
+
87
+ <div class="entry-edit-head">
88
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__("Extensions") ?></h4>
89
+ </div>
90
+ <fieldset id="depends_extensions_fieldset" class="grid">
91
+ <legend><?php echo $this->__("Extensions") ?></legend>
92
+ <table class="data" cellspacing="0">
93
+ <thead>
94
+ <tr class="headings">
95
+ <th><?php echo $this->__("Extension") ?></th>
96
+ <th><?php echo $this->__("Min") ?></th>
97
+ <th><?php echo $this->__("Max") ?></th>
98
+ <th><?php echo $this->__("Action") ?></th>
99
+ </tr>
100
+ <tr id="depends_extensions_template" style="display:none">
101
+ <?php function showDependsExtensionsTemplate($self, $_i=0) { ?>
102
+ <td style="margin-bottom:5px;">
103
+ <select name="depends[extension][name][]" style="width:100px">
104
+ <?php foreach ($self->getExtensions() as $_value=>$_label): ?>
105
+ <option value="<?php echo $_value ?>" <?php echo $self->getSelected('depends/extension/name/'.$_i, $_value) ?>><?php echo $_label ?></option>
106
+ <?php endforeach ?>
107
+ </select>
108
+ </td><td style="margin-bottom:5px;">
109
+ <input class="input-text" style="width:50px;" name="depends[extension][min][]" value="<?php echo $self->getValue('depends/extension/min/'.$_i) ?>"/>
110
+ </td><td style="margin-bottom:5px;">
111
+ <input class="input-text" style="width:50px;" name="depends[extension][max][]" value="<?php echo $self->getValue('depends/extension/max/'.$_i) ?>"/>
112
+ </td><td style="margin-bottom:5px;">
113
+ <?php echo $self->getRemoveRowButtonHtml('tr') ?>
114
+ </td>
115
+ <?php } ?>
116
+ <?php showDependsExtensionsTemplate($this) ?>
117
+ </tr>
118
+ </thead>
119
+ <tbody id="depends_extensions_container">
120
+ <?php if ($this->getData('depends/extension/name')): ?>
121
+ <?php foreach ($this->getData('depends/extension/name') as $_i=>$_dbField): ?>
122
+ <?php if (0===$_i) continue; ?>
123
+ <tr>
124
+ <?php showDependsExtensionsTemplate($this, $_i) ?>
125
+ </tr>
126
+ <?php endforeach ?>
127
+ <?php endif ?>
128
+ </tbody>
129
+ <tfoot>
130
+ <tr>
131
+ <td class="a-right" colspan="7"><?php echo $this->getAddRowButtonHtml('depends_extensions_container', 'depends_extensions_template', $this->__('Add PHP Extension dependency')) ?></td>
132
+ </tr>
133
+ </tfoot>
134
+ </table>
135
+ </fieldset>
136
+
137
+ </div>
app/design/adminhtml/default/default/template/connect/extension/custom/load.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <ul class="messages">
29
+ <li class="notice-msg">
30
+ <ul>
31
+ <li><?php echo Mage::helper('catalog')->__("Please be careful as once you click on the row it will load package data form the selected file and all unsaved form data will be lost.") ?></li>
32
+ </ul>
33
+ </li>
34
+ </ul>
35
+ <?php echo $this->getPackageGridHtml() ?>
app/design/adminhtml/default/default/template/connect/extension/custom/package.phtml ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <script type="text/javascript">
29
+ function addRow(container, template)
30
+ {
31
+ Element.insert($(container), {bottom: '<tr>' + $(template).innerHTML + '</tr>'});
32
+ }
33
+
34
+ function removeRow(button, selector)
35
+ {
36
+ Element.remove($(button).up(selector));
37
+ }
38
+
39
+ function showHideFiles(button, selector, filesClass)
40
+ {
41
+ $(button).up(selector).select('[class="'+filesClass+'"]').map(Element.toggle);
42
+ }
43
+
44
+
45
+ function loadPackage()
46
+ {
47
+ var package = prompt('Please enter package name');
48
+ if (!package) return false;
49
+ var url = '<?php echo $this->getUrl('*/*/load') ?>';
50
+ location.href = url+(url.indexOf('?')==-1 ? '?':'&')+'id='+package;
51
+ }
52
+
53
+ function saveAsPackage()
54
+ {
55
+ _defaultPackageName = '';
56
+ if ($('_packagefile_name')) {
57
+ _defaultPackageName = $('_packagefile_name').getValue();
58
+ } else if ($('_packagename')) {
59
+ _defaultPackageName = $('_packagename').getValue();
60
+ }
61
+ var package = prompt('Please enter package file name', _defaultPackageName);
62
+ if (!package) return false;
63
+ if ($('_packagefile_name')) {
64
+ $('_packagefile_name').value = package;
65
+ }
66
+ return editForm.submit();
67
+ }
68
+
69
+ function createPackage()
70
+ {
71
+ $('_create').value = 1;
72
+ editForm.submit();
73
+ }
74
+
75
+ function resetPackage()
76
+ {
77
+ location.href = '<?php echo $this->getUrl('*/*/reset') ?>';
78
+ }
79
+ </script>
80
+
81
+ <style type="text/css">
82
+ .table-editable { border:solid 1px #CCC; background:#FAFAFA; padding:5px; margin-bottom:5px; }
83
+ .table-editable th { border-bottom:solid 1px #CCC; text-align:center; }
84
+ .table-editable th, .table-editable td { padding:1px 3px; vertical-align:middle; }
85
+ .table-editable select { height:19px; }
86
+ </style>
87
+
88
+ <div class="entry-edit">
89
+ <input type="hidden" id="_create" name="_create" />
90
+ <?php echo $this->getFormHtml() ?>
91
+ </div>
app/design/adminhtml/default/default/template/connect/extension/custom/release.phtml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <?php echo $this->getFormHtml() ?>
29
+ </div>
app/design/adminhtml/default/default/template/customer/edit/js.phtml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ function saveAndContinueEdit(urlTemplate) {
29
+ var template = new Template(urlTemplate, /(^|.|\r|\n)({{(\w+)}})/);
30
+ var url = template.evaluate({tab_id:customer_info_tabsJsTabs.activeTab.id});
31
+ editForm.submit(url);
32
+ }
33
+ </script>
app/design/adminhtml/default/default/template/customer/edit/tab/view/grid/item.phtml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Adminhtml_Block_Customer_Edit_Tab_View_Grid_Renderer_Item */ ?>
28
+ <?php
29
+ $product = $this->getProduct();
30
+ $options = $this->getOptionList();
31
+ ?>
32
+
33
+ <?php if (!$options): ?>
34
+ <?php echo $this->escapeHtml($product->getName())?>
35
+ <?php else: ?>
36
+ <div class="bundle-product-options">
37
+ <strong><?php echo $this->escapeHtml($product->getName())?></strong>
38
+ <dl>
39
+ <?php foreach ($options as $option) : ?>
40
+ <dt><?php echo $this->escapeHtml($option['label']) ?></dt>
41
+ <?php $formatedOptionValue = $this->getFormattedOptionValue($option) ?>
42
+ <dd><?php echo $formatedOptionValue['value'] ?></dd>
43
+ <?php endforeach; ?>
44
+ </dl>
45
+ </div>
46
+ <?php endif; ?>
app/design/adminhtml/default/default/template/customer/online.phtml ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td><h3 class="icon-head head-online-visitors"><?php echo Mage::helper('customer')->__('Online Customers') ?></h3></td>
31
+ </tr>
32
+ </table>
33
+ </div>
34
+ <?php echo $this->getChildHtml('grid') ?>
app/design/adminhtml/default/default/template/customer/tab/addresses.phtml ADDED
@@ -0,0 +1,560 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <!-- Addresses list -->
28
+ <table cellspacing="0" class="form-edit">
29
+ <tr>
30
+ <td class="address-list">
31
+ <div class="entry-edit-head">
32
+ <h4 class="icon-head head-customer-address-list"><?php echo Mage::helper('customer')->__('Customer Addresses') ?></h4>
33
+ </div>
34
+ <div class="sub-btn-set"><?php echo $this->getAddNewButtonHtml() ?></div>
35
+ <ul id="address_list">
36
+ <?php $_iterator = 0; ?>
37
+ <?php if(count($addressCollection)): ?>
38
+ <?php foreach ($addressCollection as $_address): ?>
39
+ <li id="address_item_<?php echo $_address->getId() ?>">
40
+ <?php if (!$this->isReadonly()): ?>
41
+ <a href="#" class="btn-remove-address">
42
+ <img src="<?php echo $this->getSkinUrl('images/cancel_icon.gif') ?>" alt="Remove address" id="delete_button<?php echo ++$_iterator ?>" />
43
+ </a>
44
+ <a href="#" id="select_button_<?php echo $_address->getId() ?>" class="select_button btn-edit-address">
45
+ <img src="<?php echo $this->getSkinUrl('images/edit_icon.gif') ?>" alt="Edit address"/>
46
+ </a>
47
+ <?php endif;?>
48
+ <address>
49
+ <?php echo $_address->format('html') ?>
50
+ </address>
51
+ <div class="address-type">
52
+ <span class="address-type-line">
53
+ <input type="radio" <?php if ($this->isReadonly()):?> disabled="disabled"<?php endif;?> value="<?php echo $_address->getId() ?>" id="address_item_billing<?php echo $_address->getId() ?>" name="account[default_billing]" title="<?php echo Mage::helper('customer')->__('Set as Default Billing Address') ?>"<?php if($_address->getId()==$customer->getDefaultBilling()): ?> checked="checked"<?php endif; ?>/>
54
+ &nbsp;<label for="address_item_billing<?php echo $_address->getId() ?>"><?php echo Mage::helper('customer')->__('Default Billing Address') ?></label>
55
+ </span>
56
+ <span class="address-type-line">
57
+ <input type="radio" <?php if ($this->isReadonly()):?> disabled="disabled"<?php endif;?> value="<?php echo $_address->getId() ?>" id="address_item_shipping<?php echo $_address->getId() ?>" name="account[default_shipping]" title="<?php echo Mage::helper('customer')->__('Set as Default Shipping Address') ?>"<?php if($_address->getId()==$customer->getDefaultShipping()): ?> checked="checked"<?php endif; ?>/>
58
+ &nbsp;<label for="address_item_shipping<?php echo $_address->getId() ?>"><?php echo Mage::helper('customer')->__('Default Shipping Address') ?></label>
59
+ </span>
60
+ </div>
61
+ </li>
62
+ <?php endforeach; ?>
63
+ <?php endif; ?>
64
+ </ul>
65
+ </td>
66
+ <td>
67
+ <!-- Template for adding address item to list -->
68
+ <?php $_templatePrefix = $this->getTemplatePrefix() ?>
69
+ <div id="address_item_template" class="no-display template">
70
+ <?php if (!$this->isReadonly()): ?>
71
+ <a href="#" class="btn-remove-address">
72
+ <img src="<?php echo $this->getSkinUrl('images/cancel_icon.gif') ?>" alt="Remove address" id="delete_button<?php echo ++$_iterator ?>" />
73
+ </a>
74
+ <a href="#" id="select_button_" class="select_button btn-edit-address">
75
+ <img src="<?php echo $this->getSkinUrl('images/edit_icon.gif') ?>" alt="Edit address"/>
76
+ </a>
77
+ <?php endif;?>
78
+ <address><?php echo Mage::helper('customer')->__('New Customer Address') ?></address>
79
+ <div class="address-type">
80
+ <span class="address-type-line">
81
+ <input <?php if ($this->isReadonly()):?> disabled="disabled"<?php endif;?> type="radio" value="<?php echo $_templatePrefix ?>" id="address_item_billing<?php echo $_templatePrefix ?>" name="account[default_billing]" title="<?php echo Mage::helper('customer')->__('Set as Default Billing Address') ?>"/>
82
+ &nbsp;<label for="address_item_billing<?php echo $_templatePrefix ?>"><?php echo Mage::helper('customer')->__('Default Billing Address') ?></label>
83
+ </span>
84
+ <span class="address-type-line">
85
+ <input <?php if ($this->isReadonly()):?> disabled="disabled"<?php endif;?> type="radio" value="<?php echo $_templatePrefix ?>" id="address_item_shipping<?php echo $_templatePrefix ?>" name="account[default_shipping]" title="<?php echo Mage::helper('customer')->__('Set as Default Shipping Address') ?>"/>
86
+ &nbsp;<label for="address_item_shipping<?php echo $_templatePrefix ?>"><?php echo Mage::helper('customer')->__('Default Shipping Address') ?></label>
87
+ </span>
88
+ </div>
89
+ </div>
90
+
91
+ <!-- Address form template -->
92
+ <div id="address_form_template" class="no-display template">
93
+ <?php
94
+ // Set form template elements prefix
95
+ $this->getForm()->setHtmlIdPrefix($_templatePrefix)
96
+ ->setFieldNameSuffix('address['.$_templatePrefix.']');
97
+ ?>
98
+ <?php echo $this->getForm()->getHtml() ?>
99
+ <?php echo $this->getCancelButtonHtml() ?>
100
+ </div>
101
+ <!-- -->
102
+
103
+ <!-- Addresses forms -->
104
+ <div class="entry-edit" id="address_form_container">
105
+ <?php if(count($addressCollection)): ?>
106
+ <?php foreach ($addressCollection as $_address): ?>
107
+ <div id="form_address_item_<?php echo $_address->getId() ?>" style="display:none">
108
+ <?php
109
+ $this->getForm()->addValues($_address->getData())
110
+ ->setHtmlIdPrefix("_item{$_address->getId()}")
111
+ ->setFieldNameSuffix('address['.$_address->getId().']');
112
+ $this->addValuesToNamePrefixElement($_address->getPrefix())
113
+ ->addValuesToNameSuffixElement($_address->getSuffix());
114
+ ?>
115
+ <?php echo $this->getForm()->getHtml() ?>
116
+ <input type="hidden" name="address[<?php echo $_address->getId() ?>][_deleted]" id="deleted_address_item_<?php echo $_address->getId() ?>" />
117
+ </div>
118
+ <?php endforeach; ?>
119
+ <?php else: ?>
120
+ <div id="no_address_message"><?php echo Mage::helper('customer')->__('This customer has no saved addresses.') ?></div>
121
+ <?php endif; ?>
122
+ </div>
123
+
124
+ <script type="text/javascript">
125
+ //<![CDATA[
126
+ var deleteButtonId = <?php echo $_iterator ?>;
127
+
128
+ var addressesModel = Class.create();
129
+ addressesModel.prototype = {
130
+ initialize : function() {
131
+ this.activeItem = null;
132
+ this.itemTemplate = $('address_item_template');
133
+ this.formTemplate = $('address_form_template');
134
+ this.itemContainer= $('address_list');
135
+ this.formContainer= $('address_form_container');
136
+ this.baseItemId = 'new_item';
137
+
138
+ this.defaultCountries = <?php echo $this->getDefaultCountriesJson(); ?>;
139
+ this.itemContentTemplate = new Template('<?php echo $this->helper('customer/address')->getFormat('js_template')?>');
140
+
141
+ this.onNewAddressClick = this.addNewAddress.bindAsEventListener(this);
142
+ this.onItemMouseOver = this.itemMouseOver.bindAsEventListener(this);
143
+ this.onItemMouseOut = this.itemMouseOut.bindAsEventListener(this);
144
+ this.onItemMouseClick = this.itemMouseClick.bindAsEventListener(this);
145
+ this.onItemFormFieldChange = this.syncFormData.bindAsEventListener(this);
146
+
147
+ this.loader = new varienLoader(true);
148
+ this.regionsUrl = '<?php echo $this->getRegionsUrl() ?>';
149
+
150
+ this.reloadItemList(1);
151
+
152
+ for(var i=0,n=this.itemList.length; i<n; i++){
153
+ if(this.itemList[i].id){
154
+ this.addItemObservers(this.itemList[i]);
155
+ this.initItem(this.itemList[i]);
156
+ }
157
+ }
158
+ if($('add_new_address_button')){
159
+ Event.observe('add_new_address_button', 'click', this.onNewAddressClick)
160
+ }
161
+
162
+ this.setActiveItem(this.itemList[0]);
163
+ this.setAddressAsDefault();
164
+ this.bindCountryRegionRelation();
165
+ },
166
+
167
+ reloadItemList : function(initial){
168
+ this.itemList = $$('#address_list li');
169
+ if( initial ) {
170
+ this.itemCount = this.itemList.length;
171
+ }
172
+ if(!this.itemList.length){
173
+ if($('no_address_message')){
174
+ $('no_address_message').show();
175
+ }
176
+ else {
177
+ this.formContainer.innerHTML+= '<div id="no_address_message"><?php echo addslashes(Mage::helper('customer')->__('This customer has no saved addresses.')) ?></div>'
178
+ }
179
+ }
180
+ },
181
+
182
+ initItem : function(item){
183
+ if(item && $('form_'+item.id)){
184
+ item.formBlock = $('form_'+item.id);
185
+ Element.hide($('form_'+item.id));
186
+ $('form_'+item.id).statusBar = item;
187
+ $('form_'+item.id).addressItem = item;
188
+
189
+ // set Zip optional/required
190
+ var countryElement = $('_item' + item.id.replace(/address_item_/, '') + 'country_id');
191
+ varienGlobalEvents.fireEvent("address_country_changed", countryElement);
192
+ }
193
+ },
194
+
195
+ addItemObservers : function(item){
196
+ if(item.id){
197
+ Event.observe(item, 'mouseover', this.onItemMouseOver);
198
+ Event.observe(item, 'mouseout', this.onItemMouseOut);
199
+ Event.observe(item, 'click', this.onItemMouseClick);
200
+ }
201
+ },
202
+
203
+ addNewAddress : function(event){
204
+ if(this.canCreateNewAddress){
205
+ this.itemCount++;
206
+ if($('no_address_message')){
207
+ $('no_address_message').hide();
208
+ }
209
+
210
+ // create new form elements
211
+ Element.insert(this.formContainer, {bottom:
212
+ '<div id="' + 'form_' + this.baseItemId + this.itemCount + '">'
213
+ + this.prepareTemplate(this.formTemplate.innerHTML)
214
+ + '</div>'
215
+ });
216
+
217
+ var newForm = $('form_' + this.baseItemId + this.itemCount);
218
+
219
+ $('_item'+this.itemCount+'firstname').value = $('_accountfirstname').value;
220
+ $('_item'+this.itemCount+'lastname').value = $('_accountlastname').value;
221
+
222
+ if ($('_accountwebsite_id').value !== '' && undefined !== this.defaultCountries[$('_accountwebsite_id').value]) {
223
+ $('_item'+this.itemCount+'country_id').value = this.defaultCountries[$('_accountwebsite_id').value];
224
+ }
225
+
226
+ Element.hide(newForm);
227
+ var template = '<li id="' + this.baseItemId+this.itemCount + '">';
228
+ deleteButtonId ++;
229
+ template += this.prepareTemplate(this.itemTemplate.innerHTML).replace('delete_button', 'delete_button'+ deleteButtonId);
230
+ template += '</li>';
231
+ Element.insert(this.itemContainer, {bottom: template});
232
+ var newItem = $(this.baseItemId+this.itemCount);
233
+ newItem.isNewAddress = true;
234
+ newItem.formBlock = newForm;
235
+
236
+
237
+ newForm.statusBar = newItem;
238
+ newForm.addressItem = newItem;
239
+
240
+ this.addItemObservers(newItem);
241
+ this.setActiveItem(newItem);
242
+ this.bindCountryRegionRelation(newForm.id);
243
+
244
+ if( $('_item'+this.itemCount+'firstname').value ) this.syncFormData($('_item'+this.itemCount+'firstname'));
245
+ if( $('_item'+this.itemCount+'lastname').value ) this.syncFormData($('_item'+this.itemCount+'lastname'));
246
+ }
247
+ this.reloadItemList();
248
+ //Event.stop(event);
249
+ },
250
+
251
+ prepareTemplate : function(template){
252
+ return template
253
+ .replace(/<?php echo $_templatePrefix ?>/g, '_item'+this.itemCount)
254
+ .replace(/_counted="undefined"/g, '')
255
+ .replace(/"select_button_"/g, 'select_button_' + this.itemCount)
256
+ ;
257
+ },
258
+
259
+ canCreateNewAddress : function(){
260
+ return true;
261
+ },
262
+
263
+ itemMouseOver : function(event){
264
+ var element = Event.findElement(event, 'li');
265
+ Element.addClassName(element, 'over');
266
+ },
267
+
268
+ itemMouseOut : function(event){
269
+ var element = Event.findElement(event, 'li');
270
+ Element.removeClassName(element, 'over');
271
+ },
272
+
273
+ itemMouseClick : function(event){
274
+ if (!Event) {
275
+ return;
276
+ }
277
+ var element = Event.findElement(event, 'li'); // find top item
278
+ var elem = Event.element(event); // exact element clicked
279
+
280
+ if ( ((elem.tagName.toUpperCase() == 'A') && elem.id.match(/^delete_button([0-9]*?)$/)) || ((elem.tagName.toUpperCase() == 'IMG') && elem.id.match(/^delete_button([0-9]*?)$/)) ) {
281
+ this.deleteAddress(element);
282
+ Event.stop(event);
283
+ }
284
+ else if(elem.tagName.toUpperCase() == 'INPUT') {
285
+ this.setAddressAsDefault(element);
286
+ }
287
+ else {
288
+ this.setActiveItem(element);
289
+ }
290
+ },
291
+
292
+ setAddressAsDefault : function(){
293
+ for(var i=0; i<this.itemList.length;i++){
294
+ if(this.itemList[i].id){
295
+ var inputs = $(this.itemList[i].id).getElementsBySelector('input');
296
+ var isActive = false;
297
+ for(var j in inputs){
298
+ if(inputs[j].type=='radio' && inputs[j].checked && this.itemList.length > 1){
299
+ isActive = true;
300
+ }
301
+ }
302
+ this.toggleDeleteButton(this.itemList[i], !isActive);
303
+ }
304
+ }
305
+ },
306
+
307
+ toggleDeleteButton : function(item, flag){
308
+ if(flag){
309
+ $(item).select('.btn-remove-address').each(Element.show);
310
+ $(item.formBlock).getElementsBySelector('.delete-address').each(Element.show);
311
+ } else {
312
+ $(item).select('.btn-remove-address').each(Element.hide);
313
+ $(item.formBlock).getElementsBySelector('.delete-address').each(Element.hide);
314
+ }
315
+ },
316
+
317
+ setActiveItem : function(item){
318
+ if(this.activeItem){
319
+ Element.removeClassName(this.activeItem, 'on');
320
+ if($('form_'+this.activeItem.id)){
321
+ Element.hide($('form_'+this.activeItem.id));
322
+ }
323
+ }
324
+ Element.addClassName(item, 'on');
325
+
326
+ if(item && $('form_'+item.id)){
327
+ $('form_'+item.id).changeRelation = item;
328
+ $('form_'+item.id).addressItem = item;
329
+ Element.show($('form_'+item.id));
330
+ //new Effect.Appear($('form_'+item.id), {duration : 0.3 });
331
+ //$('form_'+item.id).focus();
332
+ this.addFieldChangeObserver($('form_'+item.id));
333
+ }
334
+
335
+ this.activeItem = item;
336
+ },
337
+
338
+ getFormContainerFields : function(container){
339
+ var fields = $$( '#' + container.id + ' input','#' + container.id + ' select','#' + container.id + ' textarea');
340
+ return fields;
341
+ },
342
+
343
+ addFieldChangeObserver : function(container){
344
+ var fields = this.getFormContainerFields(container);
345
+ for (var i = 0; i < fields.length; i++) {
346
+ Event.observe(fields[i], 'change', this.onItemFormFieldChange);
347
+ }
348
+
349
+ },
350
+
351
+ syncFormData : function(evt){
352
+ var container = false;
353
+
354
+ if(!evt.addClassName) {
355
+ var elm = Event.element(evt);
356
+ } else {
357
+ var elm = evt;
358
+ }
359
+
360
+ elm = $(elm);
361
+ while(elm.tagName.toUpperCase() != 'BODY') {
362
+ if(elm.addressItem){
363
+ container = elm;
364
+ }
365
+ elm = $(elm.parentNode);
366
+ }
367
+
368
+ if(container){
369
+ var data = {};
370
+ var fields = this.getFormContainerFields(container);
371
+ for(var i=0; i < fields.size(); i++){
372
+ if(fields[i].id){
373
+ var id = fields[i].id.replace(/^(_item)?[0-9]+/, '');
374
+ var id = id.replace(/^(id)?[0-9]+/, '');
375
+ var value = fields[i].getValue();
376
+ var tagName = fields[i].tagName.toLowerCase();
377
+ if (tagName == 'select') {
378
+ if (fields[i].multiple) {
379
+ var values = $([]);
380
+ var l = fields[i].options.length;
381
+ for (j=0; j<l; j++) {
382
+ var o = fields[i].options[j];
383
+ if (o.selected === true) {
384
+ values[values.length] = o.text.escapeHTML();
385
+ }
386
+ }
387
+ data[id] = values.join(', ');
388
+ } else {
389
+ data[id] = fields[i].options[fields[i].selectedIndex].text.escapeHTML();
390
+ }
391
+ } else if (value !== null) {
392
+ data[id] = value.escapeHTML();
393
+ }
394
+ }
395
+ }
396
+
397
+ // Set name of state to 'region' if list of states are in 'region_id' selectbox
398
+ if (!data['region'] && data['region_id']) {
399
+ data['region'] = data['region_id'];
400
+ delete data['region_id'];
401
+ }
402
+
403
+ // Set data to html
404
+ var itemContainer = container.addressItem.getElementsBySelector('address');
405
+ if(itemContainer[0]){
406
+ var html = this.itemContentTemplate.evaluate(data);
407
+ html = html.replace(new RegExp('(<br\\s*/?>\\s*){2,}','img'),'<br/>');
408
+ html = html.replace(new RegExp('<br\\s*/?>(\\s*,){1,}\\s*<br\\s*/?>','ig'),'<br/>');
409
+ html = html.replace(new RegExp('t:\\s*<br\\s*/?>','ig'),'');
410
+ html = html.replace(new RegExp('f:\\s*$','ig'),'');
411
+ itemContainer[0].innerHTML = html;
412
+ }
413
+ }
414
+ },
415
+
416
+ deleteAddress : function(item){
417
+ if(confirm('<?php echo Mage::helper('customer')->__('Are you sure you want to delete this address?') ?>')){
418
+ if (!item.isNewAddress && $('deleted_'+item.id)){
419
+ $('deleted_'+item.id).value = 1;
420
+ if (item.formBlock){
421
+ item.formBlock.addClassName('ignore-validation');
422
+ }
423
+ }
424
+ if (this.activeItem == item && item != this.itemList[0]) this.setActiveItem(this.itemList[0]);
425
+ if (item == this.itemList[0] && (this.itemList[1])) this.setActiveItem(this.itemList[1]);
426
+
427
+ this.formContainer.removeChild(item.formBlock);
428
+ this.itemContainer.removeChild(item);
429
+ this.reloadItemList();
430
+ this.setAddressAsDefault();
431
+ }
432
+ },
433
+
434
+ cancelAdd : function(button){
435
+ if(confirm('<?php echo addslashes(Mage::helper('customer')->__('Are you sure you want to cancel adding of this address?')) ?>')){
436
+ var item = $(this.baseItemId + button.id.replace(new RegExp('[a-z_]*',''), ''));
437
+
438
+ if( item.isNewAddress){
439
+ if ( this.activeItem == item ) this.formContainer.removeChild(item.formBlock);
440
+ }
441
+ if ( this.activeItem == item && item != this.itemList[0] ) this.setActiveItem(this.itemList[0]);
442
+ if ( item == this.itemList[0] && (this.itemList[1]) ) this.setActiveItem(this.itemList[1]);
443
+
444
+ this.itemContainer.removeChild(item);
445
+
446
+ this.reloadItemList();
447
+ this.setAddressAsDefault();
448
+ }
449
+ },
450
+
451
+ bindCountryRegionRelation : function(parentId){
452
+ //alert('OK');
453
+ if(parentId){
454
+ var countryElements = $(parentId).getElementsByClassName('countries');
455
+ }
456
+ else{
457
+ var countryElements = $$('.countries');
458
+ }
459
+
460
+ for(var i=0;i<=countryElements.length;i++){
461
+ if(countryElements[i]){
462
+ if(!countryElements[i].bindRegions || !countryElements[i].parentBindId || countryElements[i].parentBindId!=parentId){
463
+ //if(!countryElements[i].bindRegions || !countryElements[i].parentBindId){
464
+ Event.observe(countryElements[i], 'change', this.reloadRegionField.bind(this));
465
+
466
+ countryElements[i].bindRegions = true;
467
+ countryElements[i].parentBindId = parentId;
468
+ }
469
+ }
470
+ }
471
+ },
472
+
473
+ reloadRegionField : function(event){
474
+ var countryElement = Event.element(event);
475
+ if(countryElement.id){
476
+ var regionElement = $(countryElement.id.replace(/country_id/, 'region'));
477
+ if(regionElement){
478
+ this.regionElement = regionElement;
479
+ if (countryElement.value) {
480
+ var url = this.regionsUrl + 'parent/' + countryElement.value;
481
+ this.loader.load(url, {}, this.refreshRegionField.bind(this));
482
+ } else {
483
+ // Set empty text field in region
484
+ this.refreshRegionField('[]');
485
+ }
486
+ }
487
+ // set Zip optional/required
488
+ varienGlobalEvents.fireEvent("address_country_changed", countryElement);
489
+ }
490
+ },
491
+
492
+ // serverResponse is either string with server response, or object to force some paricular data setting
493
+ refreshRegionField : function(serverResponse){
494
+ if (!serverResponse)
495
+ return;
496
+ var data = eval('(' + serverResponse + ')');
497
+
498
+ var row = Element.previous(this.regionElement.parentNode,0);
499
+ var reqLabel = Element.select(row, '.required');
500
+
501
+ // Set regions and refresh controls
502
+ // We use a pair of 'region' and 'region_id' to properly submit data:
503
+ // manually entered text goes in 'region' and selected option id goes in 'region_id'
504
+ var regionHtmlName = this.regionElement.name;
505
+ var regionIdHtmlName = regionHtmlName.replace(/region/, 'region_id');
506
+ var regionHtmlId = this.regionElement.id;
507
+ var regionIdHtmlId = regionHtmlId.replace(/region/, 'region_id');
508
+ var newInputId = null; // id of imput that was added to a page - filled below
509
+
510
+ if (data.length) {
511
+ // Create visible selectbox 'region_id' and hidden 'region'
512
+ var html = '<select name="' + regionIdHtmlName + '" id="' + regionIdHtmlId + '" class="required-entry select" title="' + this.regionElement.title + '">';
513
+ html+= '<option value=""></option>';
514
+ for (var i in data){
515
+ if(data[i].label) {
516
+ html+= '<option value="'+data[i].value+'"';
517
+ if(this.regionElement.value && (this.regionElement.value == data[i].value || this.regionElement.value == data[i].label)){
518
+ html+= ' selected="selected"';
519
+ }
520
+ html+='>'+data[i].label+'</option>';
521
+ }
522
+ }
523
+ html += '</select>';
524
+
525
+ html += '<input type="hidden" name="' + regionHtmlName + '" id="' + regionHtmlId + '"/>';
526
+
527
+ if (reqLabel) {
528
+ reqLabel.each(function(item){Element.show(item)});
529
+ }
530
+
531
+ newInputId = regionIdHtmlId;
532
+ } else {
533
+ // Create visible text input 'region' and hidden 'region_id'
534
+ var html = '<input type="text" name="' + regionHtmlName + '" id="' + regionHtmlId + '" class="input-text" title="' + this.regionElement.title + '" />';
535
+ html += '<input type="hidden" name="' + regionIdHtmlName + '" id="' + regionIdHtmlId + '"/>';
536
+
537
+ if (reqLabel) {
538
+ reqLabel.each(function(item){Element.hide(item)});
539
+ }
540
+
541
+ newInputId = regionHtmlId;
542
+ }
543
+
544
+ var parentNode = this.regionElement.parentNode;
545
+ parentNode.innerHTML = html;
546
+ this.regionElement = $(regionHtmlId);
547
+
548
+ // Updating in address info
549
+ var newInput = $(newInputId);
550
+ Event.observe(newInput, 'change', this.onItemFormFieldChange); // Restore observing to update address info
551
+ this.syncFormData(newInput); // Update address info now
552
+ }
553
+ }
554
+
555
+ customerAddresses = new addressesModel();
556
+ //]]>
557
+ </script>
558
+ </td>
559
+ </tr>
560
+ </table>
app/design/adminhtml/default/default/template/customer/tab/cart.phtml ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Adminhtml_Block_Customer_Edit_Tab_Cart */ ?>
28
+ <?php if($this->getCartHeader()): ?>
29
+ <div class="content-header skip-header">
30
+ <table cellspacing="0">
31
+ <tr>
32
+ <td style="width:50%;"><h4><?php echo $this->getCartHeader(); ?></h4></td>
33
+ </tr>
34
+ </table>
35
+ </div>
36
+ <?php endif ?>
37
+ <?php echo $this->getGridParentHtml() ?>
38
+ <?php if ($this->canDisplayContainer()) : ?>
39
+ <?php
40
+ $listType = $this->getJsObjectName();
41
+ ?>
42
+ <script type="text/javascript">
43
+ <?php echo $this->getJsObjectName() ?>cartControl = {
44
+ reload: function (params) {
45
+ if (!params) {
46
+ params = {};
47
+ }
48
+ <?php echo $this->getJsObjectName() ?>.reloadParams = params;
49
+ <?php echo $this->getJsObjectName() ?>.reload();
50
+ <?php echo $this->getJsObjectName() ?>.reloadParams = {};
51
+ },
52
+
53
+ configureItem: function (itemId) {
54
+ productConfigure.setOnLoadIFrameCallback('<?php echo $listType ?>', this.cbOnLoadIframe.bind(this));
55
+ productConfigure.showItemConfiguration('<?php echo $listType ?>', itemId);
56
+ return false;
57
+ },
58
+
59
+ cbOnLoadIframe: function (response) {
60
+ if (!response.ok) {
61
+ return;
62
+ }
63
+ this.reload();
64
+ },
65
+
66
+ removeItem: function (itemId) {
67
+ if (!itemId) {
68
+ alert('<?php echo Mage::helper('customer')->__('No item specified.') ?>');
69
+ return false;
70
+ }
71
+ if(!confirm('<?php echo Mage::helper('customer')->__('Are you sure that you want to remove this item?') ?>')) {
72
+ return false;
73
+ }
74
+
75
+ this.reload({'delete':itemId});
76
+
77
+ return false;
78
+ }
79
+ };
80
+
81
+ <?php
82
+ $params = array(
83
+ 'customer_id' => $this->getCustomer()->getId(),
84
+ 'website_id' => $this->getWebsiteId()
85
+ );
86
+ ?>
87
+ productConfigure.addListType(
88
+ '<?php echo $listType ?>',
89
+ {
90
+ urlFetch: '<?php echo $this->getUrl('*/customer_cart_product_composite_cart/configure', $params) ?>',
91
+ urlConfirm: '<?php echo $this->getUrl('*/customer_cart_product_composite_cart/update', $params) ?>'
92
+ }
93
+ );
94
+ </script>
95
+ <?php endif ?>
96
+ <br />
app/design/adminhtml/default/default/template/customer/tab/newsletter.phtml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <?php echo $this->getFormObject()->getHtml() ?>
29
+ </div>
30
+ <?php echo $this->getChildHtml('grid') ?>
app/design/adminhtml/default/default/template/customer/tab/view.phtml ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * Template for block Mage_Adminhtml_Block_Customer_Edit_Tab_View
30
+ */
31
+ ?>
32
+ <?php
33
+ $lastLoginDateAdmin = $this->getLastLoginDate();
34
+ $lastLoginDateStore = $this->getStoreLastLoginDate();
35
+
36
+ $createDateAdmin = $this->getCreateDate();
37
+ $createDateStore = $this->getStoreCreateDate();
38
+ ?>
39
+ <div class="entry-edit">
40
+ <div class="entry-edit-head"><h4 class="icon-head head-customer-view"><?php echo Mage::helper('customer')->__('Personal Information') ?></h4></div>
41
+ <fieldset>
42
+ <table cellspacing="2" class="box-left">
43
+ <tr>
44
+ <td><strong><?php echo $this->__('Last Logged In:') ?></strong></td>
45
+ <td><?php echo $lastLoginDateAdmin ?> (<?php echo $this->getCurrentStatus() ?>)</td>
46
+ </tr>
47
+ <?php if ($lastLoginDateAdmin != $lastLoginDateStore): ?>
48
+ <tr>
49
+ <td><strong><?php echo $this->__('Last Logged In (%s):', $this->getStoreLastLoginDateTimezone()) ?></strong></td>
50
+ <td><?php echo $lastLoginDateStore ?> (<?php echo $this->getCurrentStatus() ?>)</td>
51
+ </tr>
52
+ <?php endif; ?>
53
+ <tr>
54
+ <td><strong><?php echo $this->__('Confirmed email:') ?></strong></td>
55
+ <td><?php echo $this->getIsConfirmedStatus() ?></td>
56
+ </tr>
57
+ <tr>
58
+ <td><strong><?php echo $this->__('Account Created on:') ?></strong></td>
59
+ <td><?php echo $createDateAdmin ?></td>
60
+ </tr>
61
+ <?php if ($createDateAdmin != $createDateStore): ?>
62
+ <tr>
63
+ <td><strong><?php echo $this->__('Account Created on (%s):', $this->getStoreCreateDateTimezone()) ?></strong></td>
64
+ <td><?php echo $createDateStore ?></td>
65
+ </tr>
66
+ <?php endif; ?>
67
+ <tr>
68
+ <td><strong><?php echo $this->__('Account Created in:') ?></strong></td>
69
+ <td><?php echo $this->getCreatedInStore() ?></td>
70
+ </tr>
71
+ <tr>
72
+ <td><strong><?php echo $this->__('Customer Group:') ?></strong></td>
73
+ <td><?php echo $this->getGroupName() ?></td>
74
+ </tr>
75
+ </table>
76
+ <address class="box-right">
77
+ <strong><?php echo $this->__('Default Billing Address') ?></strong><br/>
78
+ <?php echo $this->getBillingAddressHtml() ?>
79
+ </address>
80
+ </fieldset>
81
+ </div>
82
+ <?php echo $this->getChildHtml('', true, true); ?>
app/design/adminhtml/default/default/template/customer/tab/view/sales.phtml ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit">
28
+ <div class="entry-edit-head"><h4 class="icon-head head-customer-sales-statistics"><?php echo Mage::helper('customer')->__('Sales Statistics') ?></h4></div>
29
+ <div class="grid">
30
+ <table cellspacing="0" class="data">
31
+ <thead>
32
+ <tr class="headings">
33
+ <th><?php echo Mage::helper('customer')->__('Website') ?></th>
34
+ <th><?php echo Mage::helper('customer')->__('Store') ?></th>
35
+ <th><?php echo Mage::helper('customer')->__('Store View') ?></th>
36
+ <th><?php echo Mage::helper('customer')->__('Lifetime Sales') ?></th>
37
+ <th><?php echo Mage::helper('customer')->__('Average Sale') ?></th>
38
+ </tr>
39
+ </thead>
40
+ <tfoot>
41
+ <tr>
42
+ <td colspan="3" class="label"><strong><big><?php echo Mage::helper('customer')->__('All Store Views') ?></big></strong></td>
43
+ <td class="emph"><strong><big><?php echo $this->formatCurrency($this->getTotals()->getBaseLifetime()) ?></big></strong></td>
44
+ <td class="emph"><strong><big><?php echo $this->formatCurrency($this->getTotals()->getAvgsale()) ?></big></strong></td>
45
+ </tr>
46
+ </tfoot>
47
+ <?php if ($this->getRows()): ?>
48
+ <tbody>
49
+ <?php $_i = 0; ?>
50
+ <?php foreach ($this->getRows() as $_websiteId => $_groups): ?>
51
+ <?php $_websiteRow = false; ?>
52
+ <?php foreach ($_groups as $_groupId => $_stores): ?>
53
+ <?php $_groupRow = false; ?>
54
+ <?php foreach ($_stores as $_row): ?>
55
+ <?php if ($_row->getStoreId() == 0): ?>
56
+ <td colspan="3" class="label"><?php echo $_row->getStoreName() ?></td>
57
+ <?php else: ?>
58
+ <tr<?php echo ($_i++ % 2 ? ' class="even"' : '') ?>>
59
+ <?php if (!$_websiteRow): ?>
60
+ <td rowspan="<?php echo $this->getWebsiteCount($_websiteId) ?>"><?php echo $_row->getWebsiteName() ?></td>
61
+ <?php $_websiteRow = true; ?>
62
+ <?php endif; ?>
63
+ <?php if (!$_groupRow): ?>
64
+ <td rowspan="<?php echo count($_stores) ?>"><?php echo $_row->getGroupName() ?></td>
65
+ <?php $_groupRow = true; ?>
66
+ <?php endif; ?>
67
+ <td class="label"><?php echo $_row->getStoreName() ?></td>
68
+ <?php endif; ?>
69
+ <td><?php echo $this->formatCurrency($_row->getLifetime(), $_row->getWebsiteId()) ?></td>
70
+ <td><?php echo $this->formatCurrency($_row->getAvgsale(), $_row->getWebsiteId()) ?></td>
71
+ </tr>
72
+ <?php endforeach; ?>
73
+ <?php endforeach; ?>
74
+ <?php endforeach; ?>
75
+ </tbody>
76
+ <?php else: ?>
77
+ <tbody>
78
+ <tr class="no-display"><td colspan="5"></td></tr>
79
+ </tbody>
80
+ <?php endif; ?>
81
+ </table>
82
+ </div>
83
+ </div>
84
+ <div class="clear"></div>
85
+ <br/>
app/design/adminhtml/default/default/template/customer/tab/wishlist.phtml ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php echo $this->getGridParentHtml() ?>
28
+ <?php if($this->canDisplayContainer()): ?>
29
+ <script type="text/javascript">
30
+ //<!--
31
+ wishlistControl = {
32
+ reload: function (urlParams) {
33
+ if (!urlParams) {
34
+ urlParams = '';
35
+ }
36
+ var url = <?php echo $this->getJsObjectName() ?>.url + '?ajax=true' + urlParams;
37
+ new Ajax.Updater(
38
+ <?php echo $this->getJsObjectName() ?>.containerId,
39
+ url,
40
+ {
41
+ parameters: {form_key: FORM_KEY},
42
+ onComplete: <?php echo $this->getJsObjectName() ?>.initGrid.bind(<?php echo $this->getJsObjectName() ?>),
43
+ evalScripts:true
44
+ }
45
+ );
46
+ },
47
+
48
+ configureItem: function (itemId) {
49
+ productConfigure.setOnLoadIFrameCallback('wishlist', this.cbOnLoadIframe.bind(this));
50
+ productConfigure.showItemConfiguration('wishlist', itemId);
51
+ return false;
52
+ },
53
+
54
+ cbOnLoadIframe: function (response) {
55
+ if (!response.ok) {
56
+ return;
57
+ }
58
+ this.reload();
59
+ },
60
+
61
+ removeItem: function (itemId) {
62
+ if(!confirm('<?php echo Mage::helper('customer')->__('Are you sure that you want to remove this item?') ?>')) {
63
+ return false;
64
+ }
65
+ this.reload('&delete=' + itemId);
66
+ return false;
67
+ }
68
+ }
69
+
70
+ productConfigure.addListType(
71
+ 'wishlist',
72
+ {
73
+ urlFetch: '<?php echo $this->getUrl('*/customer_wishlist_product_composite_wishlist/configure') ?>',
74
+ urlConfirm: '<?php echo $this->getUrl('*/customer_wishlist_product_composite_wishlist/update') ?>'
75
+ }
76
+ );
77
+ //-->
78
+ </script>
79
+ <?php endif ?>
app/design/adminhtml/default/default/template/dashboard/graph.phtml ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ /*
27
+ ?>
28
+ <div style="width:587px;margin:20px;position:relative;margin-left:-294px;left:50%">
29
+ <div style="position:absolute;right:1px;top:0px;left: expression(parentNode.offsetWidth - offsetWidth - 1 + 'px');">
30
+ <div style="padding:5px;height:15px;width:15px;background-color:#F4F4F4" id="dashboard_<?php echo $this->getHtmlId() ?>_cal_div"><img src="<?php echo Mage::getDesign()->getSkinUrl('images/grid-cal.gif') ?>" onclick="toggleCal('<?php echo $this->getHtmlId() ?>')" /></div>
31
+ <div style="padding:5px;display:none;width:200px;" id="dashboard_<?php echo $this->getHtmlId() ?>_range_div" class="switcher">
32
+ <?php echo $this->__('Select Range') ?>:
33
+ <select name="period" id="order_<?php echo $this->getHtmlId() ?>_period" onchange="changePeriod(this)">
34
+ <?php foreach ($this->helper('adminhtml/dashboard_data')->getDatePeriods() as $_value=>$_label): ?>
35
+ <?php if(in_array($_value, array('custom'))) continue; ?>
36
+ <option value="<?php echo $_value ?>" <?php if($this->getRequest()->getParam('period')==$_value): ?> selected<?php endif; ?>><?php echo $_label ?></option>
37
+ <?php endforeach; ?>
38
+ </select>
39
+ <img src="<?php echo Mage::getDesign()->getSkinUrl('images/dashboard-close.gif') ?>" onclick="toggleCal('<?php echo $this->getHtmlId() ?>')" />
40
+ </div>
41
+ </div>
42
+ <?php if($this->getCount()): ?>
43
+ <img src="<?php echo $this->getChartUrl() ?>" />
44
+ <?php else: ?>
45
+ <div align="center" style="width:587px;height:300px;"><?php echo $this->__('No Data Found') ?></div>
46
+ <?php endif; ?>
47
+ </div>
48
+ <?php */ ?>
49
+ <div style="margin:20px;">
50
+ <p class="switcher a-right" style="padding:5px 10px;"><?php echo $this->__('Select Range') ?>:
51
+ <select name="period" id="order_<?php echo $this->getHtmlId() ?>_period" onchange="changeDiagramsPeriod(this);">
52
+ <?php foreach ($this->helper('adminhtml/dashboard_data')->getDatePeriods() as $_value=>$_label): ?>
53
+ <?php if(in_array($_value, array('custom'))) continue; ?>
54
+ <option value="<?php echo $_value ?>" <?php if($this->getRequest()->getParam('period')==$_value): ?> selected="selected"<?php endif; ?>><?php echo $_label ?></option>
55
+ <?php endforeach; ?>
56
+ </select></p><br/>
57
+ <?php
58
+ $_containerStyle = "width:{$this->getWidth()}px;height:{$this->getHeight()}px; margin:0 auto;";
59
+ ?>
60
+ <?php if($this->getCount()): ?>
61
+ <p style="<?php echo $_containerStyle?>"><img src="<?php echo $this->getChartUrl(false) ?>" alt="chart" title="chart" /></p>
62
+ <?php else: ?>
63
+ <p class="a-center" style="<?php echo $_containerStyle?>"><?php echo $this->__('No Data Found') ?></p>
64
+ <?php endif; ?>
65
+ </div>
app/design/adminhtml/default/default/template/dashboard/graph/disabled.phtml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="box" style="margin:20px;">
28
+ <p class="a-center">
29
+ <?php echo $this->helper('adminhtml')->__('Chart is disabled. If you want to enable chart, click <a href="%s">here</a>.', $this->getConfigUrl())?>
30
+ </p>
31
+ </div>
app/design/adminhtml/default/default/template/dashboard/grid.phtml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+
29
+ $numColumns = sizeof($this->getColumns());
30
+ ?>
31
+ <?php if($this->getCollection()): ?>
32
+ <div class="grid np">
33
+ <table cellspacing="0" style="border:0;" id="<?php echo $this->getId() ?>_table">
34
+ <?php foreach ($this->getColumns() as $_column): ?>
35
+ <col <?php echo $_column->getHtmlProperty() ?> />
36
+ <?php endforeach; ?>
37
+ <?php if ($this->getHeadersVisibility() || $this->getFilterVisibility()): ?>
38
+ <thead>
39
+ <?php if ($this->getHeadersVisibility()): ?>
40
+ <tr class="headings">
41
+ <?php foreach ($this->getColumns() as $_column): ?>
42
+ <th <?php echo $_column->getHeaderHtmlProperty() ?>><span class="nobr"><?php echo $_column->getHeaderHtml() ?></span></th>
43
+ <?php endforeach; ?>
44
+ </tr>
45
+ <?php endif; ?>
46
+ </thead>
47
+ <?php endif; ?>
48
+ <tbody>
49
+ <?php if (($this->getCollection()->getSize()>0) && (!$this->getIsCollapsed())): ?>
50
+ <?php foreach ($this->getCollection() as $_index=>$_item): ?>
51
+ <tr title="<?php echo $this->getRowId($_item) ?>">
52
+ <?php $i=0;foreach ($this->getColumns() as $_column): ?>
53
+ <td class="<?php echo $_column->getCssProperty() ?> <?php echo ++$i==$numColumns?'last':'' ?>"><?php echo (($_html = $_column->getRowField($_item)) != '' ? $_html : '&nbsp;') ?></td>
54
+ <?php endforeach; ?>
55
+ </tr>
56
+ <?php endforeach; ?>
57
+ <?php elseif ($this->getEmptyText()): ?>
58
+ <tr>
59
+ <td class="empty-text <?php echo $this->getEmptyTextClass() ?>" colspan="100"><?php echo $this->getEmptyText() ?></td>
60
+ </tr>
61
+ <?php endif; ?>
62
+ </tbody>
63
+ </table>
64
+ </div>
65
+ <?php if($this->canDisplayContainer()): ?>
66
+ <script type="text/javascript">
67
+ //<![CDATA[
68
+ <?php echo $this->getJsObjectName() ?> = new varienGrid('<?php echo $this->getId() ?>', '<?php echo $this->getGridUrl() ?>', '<?php echo $this->getVarNamePage() ?>', '<?php echo $this->getVarNameSort() ?>', '<?php echo $this->getVarNameDir() ?>', '<?php echo $this->getVarNameFilter() ?>');
69
+ <?php echo $this->getJsObjectName() ?>.useAjax = '<?php echo $this->getUseAjax() ?>';
70
+ <?php if($this->getRowClickCallback()): ?>
71
+ <?php echo $this->getJsObjectName() ?>.rowClickCallback = <?php echo $this->getRowClickCallback() ?>;
72
+ <?php endif; ?>
73
+ <?php if($this->getCheckboxCheckCallback()): ?>
74
+ <?php echo $this->getJsObjectName() ?>.checkboxCheckCallback = <?php echo $this->getCheckboxCheckCallback() ?>;
75
+ <?php endif; ?>
76
+ <?php if($this->getRowInitCallback()): ?>
77
+ <?php echo $this->getJsObjectName() ?>.initRowCallback = <?php echo $this->getRowInitCallback() ?>;
78
+ <?php echo $this->getJsObjectName() ?>.rows.each(function(row){<?php echo $this->getRowInitCallback() ?>(<?php echo $this->getJsObjectName() ?>, row)});
79
+ <?php endif; ?>
80
+ <?php if($this->getMassactionBlock()->isAvailable()): ?>
81
+ <?php echo $this->getMassactionBlock()->getJavaScript() ?>
82
+ <?php endif ?>
83
+ //]]>
84
+ </script>
85
+ <?php endif; ?>
86
+ <?php endif ?>
app/design/adminhtml/default/default/template/dashboard/index.phtml ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if (is_array($this->getChild('diagrams')->getTabsIds())) : ?>
29
+ <script type="text/javascript">
30
+ //<![CDATA[
31
+ function changeDiagramsPeriod(periodObj) {
32
+ periodParam = periodObj.value ? 'period/' + periodObj.value + '/' : '';
33
+ <?php foreach ($this->getChild('diagrams')->getTabsIds() as $tabId): ?>
34
+ ajaxBlockParam = 'block/tab_<?php echo $tabId ?>/';
35
+ ajaxBlockUrl = '<?php echo $this->getUrl('*/*/ajaxBlock', array('_current' => true, 'block' => '', 'period' => '')) ?>' + ajaxBlockParam + periodParam;
36
+ new Ajax.Request(ajaxBlockUrl, {
37
+ parameters: {isAjax: 'true', form_key: FORM_KEY},
38
+ onSuccess: function(transport) {
39
+ tabContentElementId = '<?php echo $this->getChild('diagrams')->getId() ?>_<?php echo $tabId ?>_content';
40
+ try {
41
+ if (transport.responseText.isJSON()) {
42
+ var response = transport.responseText.evalJSON()
43
+ if (response.error) {
44
+ alert(response.message);
45
+ }
46
+ if(response.ajaxExpired && response.ajaxRedirect) {
47
+ setLocation(response.ajaxRedirect);
48
+ }
49
+ } else {
50
+ $(tabContentElementId).update(transport.responseText);
51
+ }
52
+ }
53
+ catch (e) {
54
+ $(tabContentElementId).update(transport.responseText);
55
+ }
56
+ }
57
+ });
58
+ <?php endforeach; ?>
59
+ ajaxBlockUrl = '<?php echo $this->getUrl('*/*/ajaxBlock', array('_current' => true, 'block' => 'totals', 'period' => '')) ?>' + periodParam;
60
+ new Ajax.Request(ajaxBlockUrl, {
61
+ parameters: {isAjax: 'true', form_key: FORM_KEY},
62
+ onSuccess: function(transport) {
63
+ tabContentElementId = 'dashboard_diagram_totals';
64
+ try {
65
+ if (transport.responseText.isJSON()) {
66
+ var response = transport.responseText.evalJSON()
67
+ if (response.error) {
68
+ alert(response.message);
69
+ }
70
+ if(response.ajaxExpired && response.ajaxRedirect) {
71
+ setLocation(response.ajaxRedirect);
72
+ }
73
+ } else {
74
+ $(tabContentElementId).replace(transport.responseText);
75
+ }
76
+ }
77
+ catch (e) {
78
+ $(tabContentElementId).replace(transport.responseText);
79
+ }
80
+ }
81
+ });
82
+ }
83
+
84
+ function toggleCal(id) {
85
+ $('dashboard_'+id+'_cal_div').toggle();
86
+ $('dashboard_'+id+'_range_div').toggle();
87
+ }
88
+ //]]>
89
+ </script>
90
+ <?php endif; ?>
91
+ <div class="content-header">
92
+ <table cellspacing="0">
93
+ <tr>
94
+ <td><h3 class="head-dashboard"><?php echo $this->__('Dashboard') ?></h3></td>
95
+ </tr>
96
+ </table>
97
+ </div>
98
+ <div class="dashboard-container">
99
+ <?php echo $this->getChildHtml('store_switcher') ?>
100
+ <table cellspacing="25" width="100%">
101
+ <tr>
102
+ <td><?php echo $this->getChildHtml('sales') ?>
103
+ <div class="entry-edit">
104
+ <div class="entry-edit-head"><h4><?php echo $this->__('Last 5 Orders') ?></h4></div>
105
+ <fieldset class="np"><?php echo $this->getChildHtml('lastOrders'); ?></fieldset>
106
+ </div>
107
+ <div class="entry-edit">
108
+ <div class="entry-edit-head"><h4><?php echo $this->__('Last 5 Search Terms') ?></h4></div>
109
+ <fieldset class="np"><?php echo $this->getChildHtml('lastSearches'); ?></fieldset>
110
+ </div>
111
+ <div class="entry-edit">
112
+ <div class="entry-edit-head"><h4><?php echo $this->__('Top 5 Search Terms') ?></h4></div>
113
+ <fieldset class="np"><?php echo $this->getChildHtml('topSearches'); ?></fieldset>
114
+ </div>
115
+ </td>
116
+ <td>
117
+ <div class="entry-edit" style="border:1px solid #ccc;">
118
+ <?php echo $this->getChildHtml('diagrams') ?>
119
+ <?php if (is_array($this->getChild('diagrams')->getTabsIds())) : ?>
120
+ <div id="diagram_tab_content"></div>
121
+ <?php endif; ?>
122
+ <div style="margin:20px;">
123
+ <?php echo $this->getChildHtml('totals') ?>
124
+ </div>
125
+ <div style="margin:20px;">
126
+ <?php echo $this->getChildHtml('grids') ?>
127
+ <div id="grid_tab_content"></div>
128
+ </div>
129
+ </div>
130
+ </td>
131
+ </tr>
132
+ </table>
133
+ </div>
app/design/adminhtml/default/default/template/dashboard/salebar.phtml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php if( sizeof($this->getTotals()) > 0 ): ?>
28
+ <?php foreach( $this->getTotals() as $_total ): ?>
29
+ <div class="entry-edit">
30
+ <div class="entry-edit-head"><h4><?php echo $_total['label'] ?></h4></div>
31
+ <fieldset class="a-center bold">
32
+ <span class="nowrap" style="font-size:18px;"><?php echo $_total['value'] ?><span style="font-size:14px; color:#686868;"><?php echo $_total['decimals'] ?></span></span>
33
+ </fieldset>
34
+ </div>
35
+ <?php endforeach; ?>
36
+ <?php endif; ?>
app/design/adminhtml/default/default/template/dashboard/searches.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div style="padding:5px;">
28
+ <?php if(count($this->getCollection()->getItems()) > 0): ?>
29
+ <?php foreach ($this->getCollection()->getItems() as $item): ?>
30
+ <span><?php echo $item->getQueryText() ?></span><br />
31
+ <?php endforeach; ?>
32
+ <?php else: ?>
33
+ <div class="a-center"><?php echo $this->__('No search keywords.') ?></div>
34
+ <?php endif; ?>
35
+ </div>
app/design/adminhtml/default/default/template/dashboard/store/switcher.phtml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <p class="switcher"><label for="store_switcher"><?php echo $this->__('View Statistics For') ?>:</label>
28
+ <select name="store_switcher" id="store_switcher" class="left-col-block" onchange="return switchStore(this);">
29
+ <option value=""><?php echo $this->__('All Websites') ?></option>
30
+ <?php foreach ($this->getWebsiteCollection() as $_website): ?>
31
+ <?php $showWebsite=false; ?>
32
+ <?php foreach ($this->getGroupCollection($_website) as $_group): ?>
33
+ <?php $showGroup=false; ?>
34
+ <?php foreach ($this->getStoreCollection($_group) as $_store): ?>
35
+ <?php if ($showWebsite == false): ?>
36
+ <?php $showWebsite = true; ?>
37
+ <option website="true" value="<?php echo $_website->getId() ?>"<?php if($this->getRequest()->getParam('website') == $_website->getId()): ?> selected="selected"<?php endif; ?>><?php echo $_website->getName() ?></option>
38
+ <?php endif; ?>
39
+ <?php if ($showGroup == false): ?>
40
+ <?php $showGroup = true; ?>
41
+ <!--optgroup label="&nbsp;&nbsp;&nbsp;<?php echo $_group->getName() ?>"-->
42
+ <option group="true" value="<?php echo $_group->getId() ?>"<?php if($this->getRequest()->getParam('group') == $_group->getId()): ?> selected="selected"<?php endif; ?>>&nbsp;&nbsp;&nbsp;<?php echo $_group->getName() ?></option>
43
+ <?php endif; ?>
44
+ <option value="<?php echo $_store->getId() ?>"<?php if($this->getStoreId() == $_store->getId()): ?> selected="selected"<?php endif; ?>>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $_store->getName() ?></option>
45
+ <?php endforeach; ?>
46
+ <?php if ($showGroup): ?>
47
+ <!--</optgroup>-->
48
+ <?php endif; ?>
49
+ <?php endforeach; ?>
50
+ <?php endforeach; ?>
51
+ </select>
52
+ </p>
53
+ <script type="text/javascript">
54
+ //<![CDATA[
55
+ function switchStore(obj){
56
+ if (obj.options[obj.selectedIndex].getAttribute('website') == 'true') {
57
+ var selectionType = 'website';
58
+ } else if (obj.options[obj.selectedIndex].getAttribute('group') == 'true') {
59
+ var selectionType = 'group';
60
+ } else {
61
+ var selectionType = 'store';
62
+ }
63
+ var storeParam = obj.value ? selectionType + '/' + obj.value + '/' : '';
64
+ if(obj.switchParams){
65
+ storeParam+= obj.switchParams;
66
+ }
67
+ if ($('diagram_tab_orders_content').style.display != 'none') {
68
+ var select = $('order_orders_period');
69
+ } else if ($('diagram_tab_amounts_content').style.display != 'none') {
70
+ var select = $('order_amounts_period');
71
+ }
72
+ var periodParam = select.value ? 'period/'+select.value + '/' : '';
73
+ setLocation('<?php echo $this->getSwitchUrl() ?>'+storeParam+periodParam);
74
+ }
75
+ //]]>
76
+ </script>
app/design/adminhtml/default/default/template/dashboard/totalbar.phtml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php if( sizeof($this->getTotals()) > 0 ): ?>
28
+ <div class="box" id="dashboard_diagram_totals">
29
+ <div class="entry-edit">
30
+ <table cellspacing="0" width="100%">
31
+ <tr>
32
+ <?php foreach( $this->getTotals() as $_total ): ?>
33
+ <td class="a-center bold">
34
+ <span><?php echo $_total['label'] ?></span><br />
35
+ <span class="nowrap" style="font-size:18px; color:#EA7601;"><?php echo $_total['value'] ?><span style="font-size:14px; color:#DE8946;"><?php echo $_total['decimals'] ?></span></span>
36
+ </td>
37
+ <?php endforeach; ?>
38
+ </tr>
39
+ </table>
40
+ </div>
41
+ </div>
42
+ <?php endif; ?>
app/design/adminhtml/default/default/template/directory/js/optional_zip_countries.phtml ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php
29
+ /**
30
+ * JS block for including Countries with Optional Zip
31
+ *
32
+ * @see Mage_Adminhtml_Block_Template
33
+ */
34
+ ?>
35
+ <script type="text/javascript">
36
+ //<![CDATA[
37
+ optionalZipCountries = <?php echo $this->helper('directory')->getCountriesWithOptionalZip(true) ?>;
38
+
39
+ function onAddressCountryChanged (countryElement) {
40
+ var zipElementId = countryElement.id.replace(/country_id/, 'postcode');
41
+
42
+ // Ajax-request and normal content load compatibility
43
+ if ($(zipElementId) != undefined) {
44
+ setPostcodeOptional($(zipElementId), countryElement.value);
45
+ } else {
46
+ Event.observe(window, "load", function () {
47
+ setPostcodeOptional($(zipElementId), countryElement.value);
48
+ });
49
+ }
50
+ }
51
+
52
+ function setPostcodeOptional(zipElement, country) {
53
+ if (optionalZipCountries.indexOf(country) != -1) {
54
+ while (zipElement.hasClassName('required-entry')) {
55
+ zipElement.removeClassName('required-entry');
56
+ }
57
+ zipElement.up(1).down('label > span.required').hide();
58
+ } else {
59
+ zipElement.addClassName('required-entry');
60
+ zipElement.up(1).down('label > span.required').show();
61
+ }
62
+ }
63
+
64
+ varienGlobalEvents.attachEventHandler("address_country_changed", onAddressCountryChanged);
65
+ //]]>
66
+ </script>
app/design/adminhtml/default/default/template/downloadable/product/composite/fieldset/downloadable.phtml ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php /* @var $this Mage_Downloadable_Block_Adminhtml_Catalog_Product_Composite_Fieldset_Downloadable */ ?>
28
+ <?php $_linksPurchasedSeparately = $this->getLinksPurchasedSeparately(); ?>
29
+ <?php if ($this->getProduct()->isSaleable() && $this->hasLinks()):?>
30
+
31
+ <div id="catalog_product_composite_configure_fields_downloadable" class="<?php echo $this->getIsLastFieldset() ? 'last-fieldset' : '' ?>">
32
+ <h4><?php echo Mage::helper('catalog')->__('Downloadable Information') ?></h4>
33
+ <div class="product-options">
34
+ <dl>
35
+ <?php $_links = $this->getLinks(); ?>
36
+ <?php $_isRequired = $this->getLinkSelectionRequired(); ?>
37
+ <dt><label<?php if ($_isRequired) echo ' class="required"' ?>><?php if ($_isRequired) echo '<em>*</em>' ?><?php echo $this->getLinksTitle() ?></label></dt>
38
+ <dd class="last">
39
+ <ul id="downloadable-links-list" class="options-list">
40
+ <?php foreach ($_links as $_link): ?>
41
+ <li>
42
+ <?php if ($_linksPurchasedSeparately): ?>
43
+ <input type="checkbox" class="checkbox<?php if ($_isRequired):?> validate-one-required-by-name<?php endif; ?> product-downloadable-link" name="links[]" id="links_<?php echo $_link->getId() ?>" value="<?php echo $_link->getId(); ?>" <?php echo $this->getLinkCheckedValue($_link); ?> price="<?php echo $this->getCurrencyPrice($_link->getPrice()); ?>"/>
44
+ <?php endif; ?>
45
+ <span class="label">
46
+ <label for="links_<?php echo $_link->getId() ?>">
47
+ <?php echo $_link->getTitle() ?>
48
+ </label>
49
+ <?php if ($_link->getSampleFile() || $_link->getSampleUrl()): ?>
50
+ &nbsp;(<a href="<?php echo $this->getLinkSamlpeUrl($_link) ?>" <?php echo $this->getIsOpenInNewWindow()?'onclick="this.target=\'_blank\'"':''; ?>><?php echo Mage::helper('downloadable')->__('sample') ?></a>)
51
+ <?php endif; ?>
52
+ <?php if ($_linksPurchasedSeparately): ?>
53
+ <?php echo $this->getFormattedLinkPrice($_link); ?>
54
+ <?php endif; ?>
55
+ </span>
56
+ <?php if ($_isRequired): ?>
57
+ <script type="text/javascript">
58
+ //<![CDATA[
59
+ $('links_<?php echo $_link->getId() ?>').advaiceContainer = 'links-advice-container';
60
+ $('links_<?php echo $_link->getId() ?>').callbackFunction = 'validateDownloadableCallback';
61
+ //]]>
62
+ </script>
63
+ <?php endif; ?>
64
+ </li>
65
+ <?php endforeach; ?>
66
+ </ul>
67
+
68
+ <?php if ($_isRequired): ?>
69
+ <span id="links-advice-container"></span>
70
+ <?php endif;?>
71
+ </dd>
72
+ </dl>
73
+ </div>
74
+ </div>
75
+
76
+ <script type="text/javascript">
77
+ //<![CDATA[
78
+ validateDownloadableCallback = function (elmId, result) {
79
+ var container = $('downloadable-links-list');
80
+ if (result == 'failed') {
81
+ container.removeClassName('validation-passed');
82
+ container.addClassName('validation-failed');
83
+ } else {
84
+ container.removeClassName('validation-failed');
85
+ container.addClassName('validation-passed');
86
+ }
87
+ }
88
+ //]]>
89
+ </script>
90
+ <?php endif;?>
app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable.phtml ADDED
@@ -0,0 +1,273 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php
29
+ /**
30
+ * @see Mage_Downloadable_Block_Adminhtml_Catalog_Product_Edit_Tab_Downloadable
31
+ */
32
+ ?>
33
+ <script type="text/javascript">
34
+ //<![CDATA[>
35
+
36
+ var uploaderTemplate = '<div class="no-display" id="[[idName]]-template">' +
37
+ '<div id="{{id}}" class="file-row file-row-narrow">' +
38
+ '<span class="file-info">' +
39
+ '<span class="file-info-name">{{name}}</span>' +
40
+ ' ' +
41
+ '<span class="file-info-size">({{size}})</span>' +
42
+ '</span>' +
43
+ '<span class="progress-text"></span>' +
44
+ '<div class="clear"></div>' +
45
+ '</div>' +
46
+ '</div>' +
47
+ '<div class="no-display" id="[[idName]]-template-progress">' +
48
+ '{{percent}}% {{uploaded}} / {{total}}' +
49
+ '</div>';
50
+
51
+ var fileListTemplate = '<span class="file-info">' +
52
+ '<span class="file-info-name">{{name}}</span>' +
53
+ ' ' +
54
+ '<span class="file-info-size">({{size}})</span>' +
55
+ '</span>';
56
+
57
+ var Downloadable = {
58
+ uploaderObj : $H({}),
59
+ objCount : 0,
60
+ setUploaderObj : function(type, key, obj){
61
+ if (!this.uploaderObj.get(type)) {
62
+ this.uploaderObj.set(type, $H({}));
63
+ }
64
+ this.uploaderObj.get(type).set(key, obj);
65
+ },
66
+ getUploaderObj : function(type, key){
67
+ try {
68
+ return this.uploaderObj.get(type).get(key);
69
+ } catch (e) {
70
+ try {
71
+ console.log(e);
72
+ } catch (e2) {
73
+ alert(e.name + '\n' + e.message);
74
+ }
75
+ }
76
+ },
77
+ unsetUploaderObj : function(type, key){
78
+ try {
79
+ this.uploaderObj.get(type).unset(key);
80
+ } catch (e) {
81
+ try {
82
+ console.log(e);
83
+ } catch (e2) {
84
+ alert(e.name + '\n' + e.message);
85
+ }
86
+ }
87
+ },
88
+ massUploadByType : function(type){
89
+ try {
90
+ this.uploaderObj.get(type).each(function(item){
91
+ container = item.value.container.up('tr');
92
+ if (container.visible() && !container.hasClassName('no-display')) {
93
+ item.value.upload();
94
+ } else {
95
+ Downloadable.unsetUploaderObj(type, item.key);
96
+ }
97
+ });
98
+ } catch (e) {
99
+ try {
100
+ console.log(e);
101
+ } catch (e2) {
102
+ alert(e.name + '\n' + e.message);
103
+ }
104
+ }
105
+ }
106
+ };
107
+
108
+ Downloadable.FileUploader = Class.create();
109
+ Downloadable.FileUploader.prototype = {
110
+ type : null,
111
+ key : null, //key, identifier of uploader obj
112
+ elmContainer : null, //insert Flex object and templates to elmContainer
113
+ fileValueName : null, //name of field of JSON data of saved file
114
+ fileValue : null,
115
+ idName : null, //id name of elements for unique uploader
116
+ uploaderText: uploaderTemplate,
117
+ uploaderSyntax : /(^|.|\r|\n)(\[\[(\w+)\]\])/,
118
+ uploaderObj : $H({}),
119
+ config : null,
120
+ initialize: function (type, key, elmContainer, fileValueName, fileValue ,idName, config) {
121
+ this.type = type;
122
+ this.key = key;
123
+ this.elmContainer = elmContainer;
124
+ this.fileValueName = fileValueName;
125
+ this.fileValue = fileValue;
126
+ this.idName = idName;
127
+ this.config = config;
128
+ uploaderTemplate = new Template(this.uploaderText, this.uploaderSyntax);
129
+ <?php if (!$this->isReadonly()):?>
130
+ Element.insert(
131
+ elmContainer,
132
+ {'top' : uploaderTemplate.evaluate({
133
+ 'idName' : this.idName,
134
+ 'fileValueName' : this.fileValueName,
135
+ 'uploaderObj' : 'Downloadable.getUploaderObj(\''+this.type+'\', \''+this.key+'\')'
136
+ })
137
+ }
138
+ );
139
+ if ($(this.idName+'_save')) {
140
+ $(this.idName+'_save').value = this.fileValue.toJSON
141
+ ? this.fileValue.toJSON()
142
+ : Object.toJSON(this.fileValue);
143
+ }
144
+ Downloadable.setUploaderObj(
145
+ this.type,
146
+ this.key,
147
+ new Flex.Uploader(this.idName, '<?php echo $this->getSkinUrl('media/uploaderSingle.swf') ?>', this.config)
148
+ );
149
+ if (varienGlobalEvents) {
150
+ varienGlobalEvents.attachEventHandler('tabChangeBefore', Downloadable.getUploaderObj(type, key).onContainerHideBefore);
151
+ }
152
+ new Downloadable.FileList(this.idName, Downloadable.getUploaderObj(type, key));
153
+ <?php endif;?>
154
+ }
155
+ }
156
+
157
+ Downloadable.FileList = Class.create();
158
+ Downloadable.FileList.prototype = {
159
+ file: [],
160
+ containerId: '',
161
+ container: null,
162
+ uploader: null,
163
+ fileListTemplate: fileListTemplate,
164
+ templatePattern : /(^|.|\r|\n)({{(\w+)}})/,
165
+ listTemplate : null,
166
+ initialize: function (containerId, uploader) {
167
+ this.containerId = containerId,
168
+ this.container = $(this.containerId);
169
+ this.uploader = uploader;
170
+ this.uploader.onFilesComplete = this.handleUploadComplete.bind(this);
171
+ this.file = this.getElement('save').value.evalJSON();
172
+ this.listTemplate = new Template(this.fileListTemplate, this.templatePattern);
173
+ this.updateFiles();
174
+ this.uploader.onFileRemoveAll = this.handleFileRemoveAll.bind(this);
175
+ this.uploader.onFileSelect = this.handleFileSelect.bind(this);
176
+ },
177
+ handleFileRemoveAll: function(fileId) {
178
+ $(this.containerId+'-new').hide();
179
+ $(this.containerId+'-old').show();
180
+ },
181
+ handleFileSelect: function() {
182
+ $(this.containerId+'_type').checked = true;
183
+ },
184
+ getElement: function (name) {
185
+ return $(this.containerId + '_' + name);
186
+ },
187
+ handleUploadComplete: function (files) {
188
+ files.each(function(item) {
189
+ if (!item.response.isJSON()) {
190
+ try {
191
+ console.log(item.response);
192
+ } catch (e2) {
193
+ alert(item.response);
194
+ }
195
+ return;
196
+ }
197
+ var response = item.response.evalJSON();
198
+ if (response.error) {
199
+ return;
200
+ }
201
+ var newFile = {};
202
+ newFile.file = response.file;
203
+ newFile.name = response.name;
204
+ newFile.size = response.size;
205
+ newFile.status = 'new';
206
+ this.file[0] = newFile;
207
+ this.uploader.removeFile(item.id);
208
+ }.bind(this));
209
+ this.updateFiles();
210
+ },
211
+ updateFiles: function() {
212
+ this.getElement('save').value = this.file.toJSON
213
+ ? this.file.toJSON()
214
+ : Object.toJSON(this.file);
215
+ this.file.each(function(row){
216
+ row.size = this.uploader.formatSize(row.size);
217
+ $(this.containerId + '-old').innerHTML = this.listTemplate.evaluate(row);
218
+ $(this.containerId + '-new').hide();
219
+ $(this.containerId + '-old').show();
220
+ }.bind(this));
221
+ }
222
+ }
223
+
224
+ var alertAlreadyDisplayed = false;
225
+
226
+ Validation.addAllThese([
227
+ ['validate-downloadable-file', 'Please upload a file.', function(v,element) {
228
+ linkType = element.up(0).down('input[value="file"]');
229
+ if (linkType.checked && (v == '' || v == '[]')) {
230
+ newFileContainer = element.up(0).down('div.new-file');
231
+ if (!alertAlreadyDisplayed && (newFileContainer.empty() || newFileContainer.style.display != 'none')) {
232
+ alertAlreadyDisplayed = true;
233
+ alert('There are files that were selected but not uploaded yet. Please upload or remove them first');
234
+ }
235
+ return false;
236
+ }
237
+ return true;
238
+ }]
239
+ ]);
240
+
241
+ Validation.addAllThese([
242
+ ['validate-downloadable-url', 'Please specify Url.', function(v,element) {
243
+ linkType = element.up(0).down('input[value="url"]');
244
+ if (linkType.checked && v == '') {
245
+ return false;
246
+ }
247
+ return true;
248
+ }]
249
+ ]);
250
+ //]]>
251
+ </script>
252
+
253
+ <div id="alert_messages_block"><?php echo $this->getMessageHtml() ?></div>
254
+
255
+ <div class="entry-edit">
256
+ <?php echo $this->getChildHtml('accordion') ?>
257
+ </div>
258
+ <div style="display:none">
259
+ <div id="custom-advice-container"></div>
260
+ </div>
261
+ <?php if ($this->isReadonly()): ?>
262
+ <script type="text/javascript">
263
+ $('downloadableInfo').select('input', 'select', 'textarea', 'button').each(function (item){
264
+ item.disabled = true;
265
+ if (item.tagName.toLowerCase() == 'button') {
266
+ item.addClassName('disabled');
267
+ }
268
+ });
269
+ </script>
270
+ <?php endif; ?>
271
+ <!--
272
+ <div><input type="hidden" name="affect_downloadable_information" value="1" /></div>
273
+ -->
app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable/links.phtml ADDED
@@ -0,0 +1,388 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+
29
+ /**
30
+ * @see Mage_Downloadable_Block_Adminhtml_Catalog_Product_Edit_Tab_Downloadable_Links
31
+ */
32
+ ?>
33
+ <?php $_product = $this->getProduct()?>
34
+ <div class="fieldset">
35
+ <table cellspacing="0" class="form-list">
36
+ <tbody>
37
+ <tr class="headings">
38
+ <td class="label"><label for="name"><?php echo Mage::helper('downloadable')->__('Title')?></label>
39
+ </td>
40
+ <td class="value">
41
+ <input type="text" class="input-text" id="downloadable_links_title" name="product[links_title]" value="<?php echo $_product->getId()?$_product->getLinksTitle():$this->getLinksTitle() ?>" <?php echo ($_product->getStoreId() && $this->getUsedDefault())?'disabled="disabled"':'' ?> />
42
+ </td>
43
+ <td class="scope-label"><?php if (!Mage::app()->isSingleStoreMode()): ?>[STORE VIEW]<?php endif; ?></td>
44
+ <td class="value use-default">
45
+ <?php if($_product->getStoreId()): ?>
46
+ <input id="link_title_default" type="checkbox" name="use_default[]" value="links_title" onclick="toggleValueElements(this, this.parentNode.parentNode)" <?php echo $this->getUsedDefault()?'checked="checked"':'' ?> />
47
+ <label class="normal" for="link_title_default"><?php echo Mage::helper('downloadable')->__('Use Default Value'); ?></label>
48
+ <?php endif; ?>
49
+ </td>
50
+ </tr>
51
+ </tbody>
52
+ </table>
53
+ <br />
54
+ <table cellspacing="0" class="form-list">
55
+ <tbody>
56
+ <tr class="headings">
57
+ <td class="label"><label for="name"><?php echo Mage::helper('downloadable')->__('Links can be purchased separately')?></label>
58
+ </td>
59
+ <td class="value">
60
+ <?php echo $this->getPurchasedSeparatelySelect()?>
61
+ </td>
62
+ <td class="scope-label"><?php if (!Mage::app()->isSingleStoreMode()): ?>[GLOBAL]<?php endif; ?></td>
63
+ <td><small>&nbsp;</small></td>
64
+ </tr>
65
+ </tbody>
66
+ </table>
67
+ <br />
68
+ <div class="grid">
69
+ <div class="hor-scroll">
70
+ <table cellspacing="0" class="data border">
71
+ <col width="33%" />
72
+ <col />
73
+ <col />
74
+ <col />
75
+ <col width="1" />
76
+ <col width="1" />
77
+ <col width="1" />
78
+ <col width="1" />
79
+ <thead>
80
+ <tr class="headings">
81
+ <th><?php echo Mage::helper('downloadable')->__('Title')?> <span class="required">*</span></th>
82
+ <?php if ($this->getCanReadPrice() !== false) : ?>
83
+ <th><?php echo Mage::helper('downloadable')->__('Price')?></th>
84
+ <?php endif; ?>
85
+ <th><span class="nobr"><?php echo Mage::helper('downloadable')->__('Max. Downloads')?></span></th>
86
+ <th><?php echo Mage::helper('downloadable')->__('Shareable')?></th>
87
+ <th><?php echo Mage::helper('downloadable')->__('Sample')?></th>
88
+ <th><?php echo Mage::helper('downloadable')->__('File')?></th>
89
+ <th><span class="nobr"><?php echo Mage::helper('downloadable')->__('Sort Order')?></span></th>
90
+ <th>&nbsp;</th>
91
+ </tr>
92
+ </thead>
93
+ <tfoot>
94
+ <tr>
95
+ <td colspan="8" class="a-right"><?php echo $this->getAddButtonHtml()?>&nbsp;<?php echo $this->getUploadButtonHtml() ?></td>
96
+ </tr>
97
+ </tfoot>
98
+ <tbody id="link_items_body">
99
+ </tbody>
100
+ </table>
101
+ <div><small><?php echo Mage::helper('downloadable')->__('Alphanumeric, dash and underscore characters are recommended for filenames. Improper characters are replaced with \'_\'.')?></small></div>
102
+ </div>
103
+ </div>
104
+ </div>
105
+
106
+ <script type="text/javascript">
107
+ //<![CDATA[
108
+ var linkTemplate = '<tr>'+
109
+ '<td>'+
110
+ '<input type="hidden" class="__delete__" name="downloadable[link][{{id}}][is_delete]" value="" />'+
111
+ '<input type="hidden" name="downloadable[link][{{id}}][link_id]" value="{{link_id}}" />'+
112
+ '<input type="text" class="required-entry input-text" name="downloadable[link][{{id}}][title]" value="{{title}}" />'+
113
+ '<?php echo $_product->getStoreId()?'<input type="checkbox" id="downloadable_link_{{id}}_title" name="downloadable[link][{{id}}][use_default_title]" value="1" /><label class="normal" for="downloadable_link_{{id}}_title">Use Default Value</label>':'' ?>'+
114
+ '</td>'+
115
+ <?php if ($this->getCanReadPrice() !== false) : ?>
116
+ '<td class="input-price">'+
117
+ '<input type="text" id="downloadable_link_{{id}}_price_value" class="input-text validate-number link-prices<?php if ($this->getCanEditPrice() === false) : ?> disabled<?php endif; ?>" name="downloadable[link][{{id}}][price]" value="{{price}}"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?> /> ' +
118
+ '<label>[<?php echo Mage::app()->getStore($_product->getStoreId())->getBaseCurrencyCode() ?>]</label>' +
119
+ <?php if ($_product->getStoreId() && $this->getIsPriceWebsiteScope()) : ?>
120
+ '<br /><input type="checkbox" id="downloadable_link_{{id}}_price" name="downloadable[link][{{id}}][use_default_price]" value="1"<?php if ($this->getCanEditPrice() === false) : ?> disabled="disabled"<?php endif; ?> /> <label for="downloadable_link_{{id}}_price">Use Default Value</label>' +
121
+ <?php endif; ?>
122
+ '</td>' +
123
+ <?php else : ?>
124
+ '<input type="hidden" id="downloadable_link_{{id}}_price_value" class="link-prices" name="downloadable[link][{{id}}][price]" value="0" />' +
125
+ <?php if ($_product->getStoreId() && $this->getIsPriceWebsiteScope()) : ?>
126
+ '<input type="hidden" id="downloadable_link_{{id}}_price" name="downloadable[link][{{id}}][use_default_price]" value="1" />' +
127
+ <?php endif; ?>
128
+ <?php endif; ?>
129
+ '<td><input type="text" id="downloadable_link_{{id}}_downloads" name="downloadable[link][{{id}}][number_of_downloads]" class="input-text downloads" value="{{number_of_downloads}}" />'+
130
+ '<p><input type="checkbox" class="checkbox" id="downloadable_link_{{id}}_is_unlimited" name="downloadable[link][{{id}}][is_unlimited]" value="1" {{is_unlimited}} /> <label for="downloadable_link_{{id}}_is_unlimited">Unlimited</label></p></td>'+
131
+ '<td class="a-center">'+
132
+ '<select id="downloadable_link _{{id}}_shareable" name="downloadable[link][{{id}}][is_shareable]">'+
133
+ '<option value="1">Yes</option>'+
134
+ '<option value="0">No</option>'+
135
+ '<option value="2" selected="selected">Use config</option>'+
136
+ '</select>'+
137
+ '</td>'+
138
+ '<td>'+
139
+ '<div class="files">'+
140
+ '<div class="row">'+
141
+ '<label for="downloadable_link_{{id}}_sample_file_type"><input type="radio" class="radio" id="downloadable_link_{{id}}_sample_file_type" name="downloadable[link][{{id}}][sample][type]" value="file"{{sample_file_checked}} /> File:</label>'+
142
+ '<input type="hidden" id="downloadable_link_{{id}}_sample_file_save" name="downloadable[link][{{id}}][sample][file]" value="{{sample_file_save}}" />'+
143
+ '<div id="downloadable_link_{{id}}_sample_file" class="uploader">'+
144
+ '<div id="downloadable_link_{{id}}_sample_file-old" class="file-row-info"></div>'+
145
+ '<div id="downloadable_link_{{id}}_sample_file-new" class="file-row-info"></div>'+
146
+ '<div class="buttons">'+
147
+ '<div id="downloadable_link_{{id}}_sample_file-install-flash" style="display:none">'+
148
+ '<?php echo $this->jsQuoteEscape(Mage::helper('media')->__('This content requires last version of Adobe Flash Player. <a href="%s">Get Flash</a>', 'http://www.adobe.com/go/getflash/')) ?>'+
149
+ '</div>'+
150
+ '</div>'+
151
+ '<div class="clear"></div>'+
152
+ '</div>'+
153
+ '</div>'+
154
+ '<div class="row">'+
155
+ '<label for="downloadable_link_{{id}}_sample_url_type"><input type="radio" class="radio" id="downloadable_link_{{id}}_sample_url_type" name="downloadable[link][{{id}}][sample][type]" value="url"{{sample_url_checked}} /> URL:</label><input type="text" class="input-text" name="downloadable[link][{{id}}][sample][url]" value="{{sample_url}}" />'+
156
+ '</div>'+
157
+ '<div>'+
158
+ '<span id="downloadable_link_{{id}}_sample_container"></span>'+
159
+ '</div>'+
160
+ '</div>'+
161
+ '</td>'+
162
+ '<td>'+
163
+ '<div class="files">'+
164
+ '<div class="row">'+
165
+ '<label for="downloadable_link_{{id}}_file_type"><input type="radio" class="radio validate-one-required-by-name" id="downloadable_link_{{id}}_file_type" name="downloadable[link][{{id}}][type]" value="file"{{file_checked}} /> File:</label>'+
166
+ '<input type="hidden" class="validate-downloadable-file" id="downloadable_link_{{id}}_file_save" name="downloadable[link][{{id}}][file]" value="{{file_save}}" />'+
167
+ '<div id="downloadable_link_{{id}}_file" class="uploader">'+
168
+ '<div id="downloadable_link_{{id}}_file-old" class="file-row-info"></div>'+
169
+ '<div id="downloadable_link_{{id}}_file-new" class="file-row-info new-file"></div>'+
170
+ '<div class="buttons">'+
171
+ '<div id="downloadable_link_{{id}}_file-install-flash" style="display:none">'+
172
+ '<?php echo $this->jsQuoteEscape(Mage::helper('media')->__('This content requires last version of Adobe Flash Player. <a href="%s">Get Flash</a>', 'http://www.adobe.com/go/getflash/')) ?>'+
173
+ '</div>'+
174
+ '</div>'+
175
+ '<div class="clear"></div>'+
176
+ '</div>'+
177
+ '</div>'+
178
+ '<div class="row">'+
179
+ '<label for="downloadable_link_{{id}}_url_type"><input type="radio" class="radio validate-one-required-by-name" id="downloadable_link_{{id}}_url_type" name="downloadable[link][{{id}}][type]" value="url"{{url_checked}} /> URL:</label><input type="text" class="validate-downloadable-url input-text" name="downloadable[link][{{id}}][link_url]" value="{{link_url}}" />'+
180
+ '</div>'+
181
+ '<div>'+
182
+ '<span id="downloadable_link_{{id}}_link_container"></span>'+
183
+ '</div>'+
184
+ '</div>'+
185
+ '</td>'+
186
+ '<td class="a-center"><input type="text" name="downloadable[link][{{id}}][sort_order]" value="{{sort_order}}" class="input-text sort" /></td>'+
187
+ '<td>'+
188
+ '<button id="downloadable_link_{{id}}_delete_button" type="button" class="scalable delete icon-btn delete-link-item"><span><?php echo Mage::helper('downloadable')->__('Delete'); ?></span></button>'+
189
+ '</td>'+
190
+ '</tr>';
191
+
192
+ var linkItems = {
193
+ tbody : $('link_items_body'),
194
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
195
+ templateText : linkTemplate,
196
+ itemCount : 0,
197
+ add : function(data) {
198
+ alertAlreadyDisplayed = false;
199
+ this.template = new Template(this.templateText, this.templateSyntax);
200
+
201
+ if(!data.link_id){
202
+ data = {};
203
+ data.link_id = 0;
204
+ data.link_type = 'file';
205
+ data.sample_type = 'none';
206
+ data.number_of_downloads = '<?php echo $this->getConfigMaxDownloads() ?>';
207
+ }
208
+
209
+ data.id = this.itemCount;
210
+
211
+ if (data.link_type == 'url') {
212
+ data.url_checked = ' checked="checked"';
213
+ } else if (data.link_type == 'file') {
214
+ data.file_checked = ' checked="checked"';
215
+ }
216
+ if (data.sample_type == 'url') {
217
+ data.sample_url_checked = ' checked="checked"';
218
+ } else if (data.sample_type == 'file') {
219
+ data.sample_file_checked = ' checked="checked"';
220
+ }
221
+
222
+ Element.insert(this.tbody, {'bottom':this.template.evaluate(data)});
223
+
224
+ scopeTitle = $('downloadable_link_'+data.id+'_title');
225
+ if (scopeTitle) {
226
+ Event.observe(scopeTitle, 'click', function(event){
227
+ scopeElm = $(Event.findElement(event, 'input'));
228
+ titleField = scopeElm.up(0).down('input[type="text"]');
229
+ if (scopeElm.checked == true) {
230
+ titleField.disabled = true;
231
+ } else {
232
+ titleField.disabled = false;
233
+ }
234
+ });
235
+ }
236
+ if (!data.store_title && scopeTitle) {
237
+ scopeTitle.up(0).down('input[type="text"]').disabled = true;
238
+ scopeTitle.checked = true;
239
+ }
240
+
241
+ scopePrice = $('downloadable_link_'+data.id+'_price');
242
+ if (scopePrice) {
243
+ Event.observe(scopePrice, 'click', function(event){
244
+ scopeElm = $(Event.findElement(event, 'input'));
245
+ priceField = scopeElm.up(0).down('input[type="text"]');
246
+ if (scopeElm.checked == true) {
247
+ priceField.disabled = true;
248
+ } else {
249
+ priceField.disabled = false;
250
+ }
251
+ });
252
+ }
253
+ if (!data.website_price && scopePrice) {
254
+ scopePrice.up(0).down('input[type="text"]').disabled = true;
255
+ scopePrice.checked = true;
256
+ }
257
+ downloadsElm = $('downloadable_link_'+data.id+'_downloads');
258
+ isUnlimitedElm = $('downloadable_link_'+data.id+'_is_unlimited');
259
+ if (data.is_unlimited) {
260
+ downloadsElm.disabled = true;
261
+ }
262
+ Event.observe(isUnlimitedElm, 'click', function(event){
263
+ elm = Event.element(event);
264
+ elm.up('td').down('input[type="text"].downloads').disabled = elm.checked;
265
+ });
266
+
267
+ if (data.is_shareable) {
268
+ options = $('downloadable_link _'+data.id+'_shareable').options;
269
+ for (var i=0; i < options.length; i++) {
270
+ if (options[i].value == data.is_shareable) {
271
+ options[i].selected = true;
272
+ }
273
+ }
274
+ }
275
+
276
+ sampleUrl = $('downloadable_link_'+data.id+'_sample_url_type');
277
+ linkUrl = $('downloadable_link_'+data.id+'_url_type');
278
+
279
+ if (!data.file_save) {
280
+ data.file_save = [];
281
+ }
282
+ if (!data.sample_file_save) {
283
+ data.sample_file_save = [];
284
+ }
285
+
286
+ // link sample file
287
+ new Downloadable.FileUploader(
288
+ 'linkssample',
289
+ 'linkssample_'+data.id,
290
+ sampleUrl.up('td'),
291
+ 'downloadable[link]['+data.id+'][sample]',
292
+ data.sample_file_save,
293
+ 'downloadable_link_'+data.id+'_sample_file',
294
+ <?php echo $this->getConfigJson('link_samples') ?>
295
+ );
296
+ // link file
297
+ new Downloadable.FileUploader(
298
+ 'links',
299
+ 'links_'+data.id,
300
+ linkUrl.up('td'),
301
+ 'downloadable[link]['+data.id+']',
302
+ data.file_save,
303
+ 'downloadable_link_'+data.id+'_file',
304
+ <?php echo $this->getConfigJson() ?>
305
+ );
306
+
307
+ linkFile = $('downloadable_link_'+data.id+'_file_type');
308
+ linkFile.advaiceContainer = 'downloadable_link_'+data.id+'_link_container';
309
+ linkUrl.advaiceContainer = 'downloadable_link_'+data.id+'_link_container';
310
+ $('downloadable_link_'+data.id+'_file_save').advaiceContainer = 'downloadable_link_'+data.id+'_link_container';
311
+
312
+ sampleFile = $('downloadable_link_'+data.id+'_sample_file_type');
313
+
314
+ this.itemCount++;
315
+ this.togglePriceFields();
316
+ this.bindRemoveButtons();
317
+ },
318
+ remove : function(event){
319
+ var element = $(Event.findElement(event, 'tr'));
320
+ alertAlreadyDisplayed = false;
321
+ if(element){
322
+ element.down('input[type="hidden"].__delete__').value = '1';
323
+ Element.select(element, 'div.flex').each(function(elm){
324
+ elm.remove();
325
+ });
326
+ element.addClassName('no-display');
327
+ element.addClassName('ignore-validate');
328
+ element.hide();
329
+ }
330
+ },
331
+ bindRemoveButtons : function(){
332
+ var buttons = $$('tbody#link_items_body .delete-link-item');
333
+ for(var i=0;i<buttons.length;i++){
334
+ if(!$(buttons[i]).binded && !$(buttons[i]).hasClassName('disabled')){
335
+ $(buttons[i]).binded = true;
336
+ Event.observe(buttons[i], 'click', this.remove.bind(this));
337
+ }
338
+ }
339
+ },
340
+ togglePriceFields : function(){
341
+ var toogleTo = $('downloadable_link_purchase_type').value;
342
+ var disableFlag = true;
343
+ if (toogleTo == '1') {
344
+ disableFlag = false;
345
+ }
346
+ $$('.link-prices[type="text"]').each(function(elm){
347
+ var flag = disableFlag;
348
+ if (elm.hasClassName('disabled')) {
349
+ flag = true;
350
+ }
351
+ elm.disabled = flag;
352
+ });
353
+ }
354
+ }
355
+
356
+ linkItems.bindRemoveButtons();
357
+
358
+ if ($('downloadable_link_purchase_type')) {
359
+ Event.observe('downloadable_link_purchase_type', 'change', linkItems.togglePriceFields.bind());
360
+ }
361
+
362
+ if($('add_link_item')) {
363
+ Event.observe('add_link_item', 'click', linkItems.add.bind(linkItems));
364
+ }
365
+
366
+ <?php foreach ($this->getLinkData() as $item): ?>
367
+ linkItems.add(<?php echo $item->toJson()?>);
368
+ <?php endforeach; ?>
369
+
370
+ Validation.addAllThese([
371
+ ['validate-downloadable-link-sample-file', 'Please specify File.', function(v,element) {
372
+ fileSaveElm = element.up('div').next('input[type="hidden"]');
373
+ if (element.checked && (fileSaveElm.value == '' || fileSaveElm.value == '[]')) {
374
+ return false;
375
+ }
376
+ return true;
377
+ }]
378
+ ]);
379
+ Validation.addAllThese([
380
+ ['validate-downloadable-link-sample-url', 'Please specify Sample URL.', function(v,element) {
381
+ if (element.checked && element.up('p').down('input[type="text"]').value == '') {
382
+ return false;
383
+ }
384
+ return true;
385
+ }]
386
+ ]);
387
+ //]]>
388
+ </script>
app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable/samples.phtml ADDED
@@ -0,0 +1,217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Downloadable_Block_Adminhtml_Catalog_Product_Edit_Tab_Downloadable_Samples
30
+ */
31
+ ?>
32
+
33
+ <?php $_product = $this->getProduct() ?>
34
+ <div class="fieldset">
35
+ <table cellspacing="0" class="form-list">
36
+ <tbody>
37
+ <tr class="headings">
38
+ <td class="label"><label for="name"><?php echo Mage::helper('downloadable')->__('Title')?></label>
39
+ </td>
40
+ <td class="value">
41
+ <input type="text" class="input-text" name="product[samples_title]" value="<?php echo $_product->getId()?$_product->getSamplesTitle():$this->getSamplesTitle() ?>" <?php echo ($_product->getStoreId() && $this->getUsedDefault())?'disabled="disabled"':'' ?> />
42
+ </td>
43
+ <td class="scope-label"><?php if (!Mage::app()->isSingleStoreMode()): ?>[STORE VIEW]<?php endif; ?></td>
44
+ <td class="value use-default">
45
+ <?php if($_product->getStoreId()): ?>
46
+ <input id="sample_title_default" type="checkbox" name="use_default[]" value="samples_title" onclick="toggleValueElements(this, this.parentNode.parentNode)" <?php echo $this->getUsedDefault()?'checked="checked"':'' ?> />
47
+ <label class="normal" for="sample_title_default">Use Default Value</label>
48
+ <?php endif; ?>
49
+ </td>
50
+ </tr>
51
+ </tbody>
52
+ </table>
53
+ <br />
54
+ <div class="grid">
55
+ <div class="hor-scroll">
56
+ <table cellspacing="0" class="data border">
57
+ <col />
58
+ <col width="1" />
59
+ <col width="1" />
60
+ <col width="1" />
61
+ <thead>
62
+ <tr class="headings">
63
+ <th><?php echo Mage::helper('downloadable')->__('Title') ?> <span class="required">*</span></th>
64
+ <th><?php echo Mage::helper('downloadable')->__('File') ?></th>
65
+ <th><span class="nobr"><?php echo Mage::helper('downloadable')->__('Sort Order') ?></span></th>
66
+ <th>&nbsp;</th>
67
+ </tr>
68
+ </thead>
69
+ <tfoot>
70
+ <tr>
71
+ <td colspan="4" class="a-right"><?php echo $this->getAddButtonHtml() ?>&nbsp;<?php echo $this->getUploadButtonHtml() ?></td>
72
+ </tr>
73
+ </tfoot>
74
+ <tbody id="sample_items_body">
75
+ </tbody>
76
+ </table>
77
+ <div><small><?php echo Mage::helper('downloadable')->__('Alphanumeric, dash and underscore characters are recommended for filenames. Improper characters are replaced with \'_\'.')?></small></div>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ <script type="text/javascript">
82
+ //<![CDATA[>
83
+ var sampleTemplate = '<tr>'+
84
+ '<td>'+
85
+ '<input type="hidden" class="__delete__" name="downloadable[sample][{{id}}][is_delete]" value="" />'+
86
+ '<input type="hidden" name="downloadable[sample][{{id}}][sample_id]" value="{{sample_id}}" />'+
87
+ '<input type="text" class="required-entry input-text" name="downloadable[sample][{{id}}][title]" value="{{title}}" />'+
88
+ '<?php echo $_product->getStoreId()?'<br /><input type="checkbox" id="downloadable_sample_{{id}}_title" name="downloadable[sample][{{id}}][use_default_title]" value="1" /><label class="normal" for="downloadable_sample_{{id}}_title">Use Default Value</label>':'' ?>'+
89
+ '</td>'+
90
+ '<td>'+
91
+ '<div class="files-wide">'+
92
+ '<div class="row">'+
93
+ '<label for="downloadable_sample_{{id}}_file_type"><input type="radio" class="radio validate-one-required-by-name" id="downloadable_sample_{{id}}_file_type" name="downloadable[sample][{{id}}][type]" value="file"{{file_checked}} /> File:</label>'+
94
+ '<input type="hidden" class="validate-downloadable-file" id="downloadable_sample_{{id}}_file_save" name="downloadable[sample][{{id}}][file]" value="{{file_save}}" />'+
95
+ '<div id="downloadable_sample_{{id}}_file" class="uploader">'+
96
+ '<div id="downloadable_sample_{{id}}_file-old" class="file-row-info"></div>'+
97
+ '<div id="downloadable_sample_{{id}}_file-new" class="file-row-info new-file"></div>'+
98
+ '<div class="buttons">'+
99
+ '<div id="downloadable_sample_{{id}}_file-install-flash" style="display:none">'+
100
+ '<?php echo $this->jsQuoteEscape(Mage::helper('media')->__('This content requires last version of Adobe Flash Player. <a href="%s">Get Flash</a>', 'http://www.adobe.com/go/getflash/')) ?>'+
101
+ '</div>'+
102
+ '</div>'+
103
+ '<div class="clear"></div>'+
104
+ '</div>'+
105
+ '</div>'+
106
+ '<div class="row">'+
107
+ '<label for="downloadable_sample_{{id}}_url_type"><input type="radio" class="radio validate-one-required-by-name" id="downloadable_sample_{{id}}_url_type" name="downloadable[sample][{{id}}][type]" value="url"{{url_checked}} /> URL:</label> <input type="text" class="validate-downloadable-url input-text" name="downloadable[sample][{{id}}][sample_url]" value="{{sample_url}}" />'+
108
+ '</div>'+
109
+ '<div>'+
110
+ '<span id="downloadable_sample_{{id}}_container"></span>'+
111
+ '</div>'+
112
+ '</div>'+
113
+
114
+ '</td>'+
115
+ '<td class="a-center"><input type="text" name="downloadable[sample][{{id}}][sort_order]" value="{{sort_order}}" class="input-text sort" /></td>'+
116
+ '<td>'+
117
+ '<button type="button" class="scalable delete icon-btn delete-sample-item"><span>Delete</span></button>'+
118
+ '</td>'+
119
+ '</tr>';
120
+ var sampleItems = {
121
+ tbody : $('sample_items_body'),
122
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
123
+ templateText : sampleTemplate,
124
+ itemCount : 0,
125
+ add : function(data) {
126
+ alertAlreadyDisplayed = false;
127
+ this.template = new Template(this.templateText, this.templateSyntax);
128
+
129
+ if(!data.sample_id){
130
+ data = {};
131
+ data.sample_type = 'file';
132
+ data.sample_id = 0;
133
+ }
134
+
135
+ data.id = this.itemCount;
136
+
137
+ if (data.sample_type == 'url') {
138
+ data.url_checked = ' checked="checked"';
139
+ } else if (data.sample_type == 'file') {
140
+ data.file_checked = ' checked="checked"';
141
+ }
142
+
143
+ Element.insert(this.tbody, {'bottom':this.template.evaluate(data)});
144
+
145
+ scopeTitle = $('downloadable_sample_'+data.id+'_title');
146
+ if (scopeTitle) {
147
+ Event.observe(scopeTitle, 'click', function(event){
148
+ scopeElm = $(Event.findElement(event, 'input'));
149
+ titleField = scopeElm.up(0).down('input[type="text"]');
150
+ if (scopeElm.checked == true) {
151
+ titleField.disabled = true;
152
+ } else {
153
+ titleField.disabled = false;
154
+ }
155
+ });
156
+ }
157
+ if (!data.store_title && scopeTitle) {
158
+ scopeTitle.up(0).down('input[type="text"]').disabled = true;
159
+ scopeTitle.checked = true;
160
+ }
161
+
162
+ sampleUrl = $('downloadable_sample_'+data.id+'_url_type');
163
+
164
+ if (!data.file_save) {
165
+ data.file_save = [];
166
+ }
167
+ new Downloadable.FileUploader(
168
+ 'samples',
169
+ data.id,
170
+ sampleUrl.up('td').down('div.uploader'),
171
+ 'downloadable[sample]['+data.id+']',
172
+ data.file_save,
173
+ 'downloadable_sample_'+data.id+'_file',
174
+ <?php echo $this->getConfigJson() ?>
175
+ );
176
+ sampleUrl.advaiceContainer = 'downloadable_sample_'+data.id+'_container';
177
+ sampleFile = $('downloadable_sample_'+data.id+'_file_type');
178
+ sampleFile.advaiceContainer = 'downloadable_sample_'+data.id+'_container';
179
+ $('downloadable_sample_'+data.id+'_file_save').advaiceContainer = 'downloadable_sample_'+data.id+'_container';
180
+
181
+ this.itemCount++;
182
+ this.bindRemoveButtons();
183
+ },
184
+ remove : function(event){
185
+ var element = $(Event.findElement(event, 'tr'));
186
+ alertAlreadyDisplayed = false;
187
+ if(element){
188
+ element.down('input[type="hidden"].__delete__').value = '1';
189
+ element.down('div.flex').remove();
190
+ element.addClassName('no-display');
191
+ element.addClassName('ignore-validate');
192
+ element.hide();
193
+ }
194
+ },
195
+ bindRemoveButtons : function(){
196
+ var buttons = $$('tbody#sample_items_body .delete-sample-item');
197
+ for(var i=0;i<buttons.length;i++){
198
+ if(!$(buttons[i]).binded){
199
+ $(buttons[i]).binded = true;
200
+ Event.observe(buttons[i], 'click', this.remove.bind(this));
201
+ }
202
+ }
203
+ }
204
+ }
205
+
206
+ sampleItems.bindRemoveButtons();
207
+
208
+ if($('add_sample_item')){
209
+ Event.observe('add_sample_item', 'click', sampleItems.add.bind(sampleItems));
210
+ }
211
+
212
+ <?php foreach ($this->getSampleData() as $item): ?>
213
+ sampleItems.add(<?php echo $item->toJson() ?>);
214
+ <?php endforeach; ?>
215
+
216
+ //]]>
217
+ </script>
app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/creditmemo/name.phtml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($_item = $this->getItem()): ?>
29
+ <h5 class="title"><?php echo $_item->getName() ?></h5>
30
+ <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($this->getSku()))); ?></div>
31
+ <?php if ($this->getOrderOptions()): ?>
32
+ <dl class="item-options">
33
+ <?php foreach ($this->getOrderOptions() as $_option): ?>
34
+ <dt><?php echo $_option['label'] ?></dt>
35
+ <dd>
36
+ <?php if (isset($_option['custom_view']) && $_option['custom_view']): ?>
37
+ <?php echo $_option['value'];?>
38
+ <?php else: ?>
39
+ <?php echo Mage::helper('core/string')->truncate($_option['value'], 55, '', $_remainder);?>
40
+ <?php if ($_remainder):?>
41
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
42
+ <script type="text/javascript">
43
+ $('<?php echo $_id ?>').hide();
44
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
45
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
46
+ </script>
47
+ <?php endif;?>
48
+ <?php endif;?>
49
+ </dd>
50
+ <?php endforeach; ?>
51
+ </dl>
52
+ <?php endif; ?>
53
+ <?php if ($this->getLinks()): ?>
54
+ <dl class="item-options">
55
+ <dt><?php echo $this->getLinksTitle(); ?></dt>
56
+ <?php foreach ($this->getLinks()->getPurchasedItems() as $_link): ?>
57
+ <dd><?php echo $_link->getLinkTitle() ?></dd>
58
+ <?php endforeach; ?>
59
+ </dl>
60
+ <?php endif; ?>
61
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
62
+ <?php endif; ?>
app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/invoice/name.phtml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($_item = $this->getItem()): ?>
29
+ <h5 class="title"><?php echo $_item->getName() ?></h5>
30
+ <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($this->getSku()))); ?></div>
31
+ <?php if ($this->getOrderOptions()): ?>
32
+ <dl class="item-options">
33
+ <?php foreach ($this->getOrderOptions() as $_option): ?>
34
+ <dt><?php echo $_option['label'] ?></dt>
35
+ <dd>
36
+ <?php if (isset($_option['custom_view']) && $_option['custom_view']): ?>
37
+ <?php echo $_option['value'];?>
38
+ <?php else: ?>
39
+ <?php echo Mage::helper('core/string')->truncate($_option['value'], 55, '', $_remainder);?>
40
+ <?php if ($_remainder):?>
41
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
42
+ <script type="text/javascript">
43
+ $('<?php echo $_id ?>').hide();
44
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
45
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
46
+ </script>
47
+ <?php endif;?>
48
+ <?php endif;?>
49
+ </dd>
50
+ <?php endforeach; ?>
51
+ </dl>
52
+ <?php endif; ?>
53
+ <?php if ($this->getLinks()): ?>
54
+ <dl class="item-options">
55
+ <dt><?php echo $this->getLinksTitle(); ?></dt>
56
+ <?php foreach ($this->getLinks()->getPurchasedItems() as $_link): ?>
57
+ <dd><?php echo $_link->getLinkTitle() ?> (<?php echo $_link->getNumberOfDownloadsBought()?$_link->getNumberOfDownloadsBought():Mage::helper('downloadable')->__('Unlimited') ?>)</dd>
58
+ <?php endforeach; ?>
59
+ </dl>
60
+ <?php endif; ?>
61
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
62
+ <?php endif; ?>
app/design/adminhtml/default/default/template/downloadable/sales/items/column/downloadable/name.phtml ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($_item = $this->getItem()): ?>
29
+ <h5 class="title"><?php echo $_item->getName() ?></h5>
30
+ <div><strong><?php echo $this->helper('sales')->__('SKU') ?>:</strong> <?php echo implode('<br />', Mage::helper('catalog')->splitSku($this->htmlEscape($this->getSku()))); ?></div>
31
+ <?php if ($this->getOrderOptions()): ?>
32
+ <dl class="item-options">
33
+ <?php foreach ($this->getOrderOptions() as $_option): ?>
34
+ <dt><?php echo $_option['label'] ?></dt>
35
+ <dd>
36
+ <?php if (isset($_option['custom_view']) && $_option['custom_view']): ?>
37
+ <?php echo $_option['value'];?>
38
+ <?php else: ?>
39
+ <?php echo Mage::helper('core/string')->truncate($_option['value'], 55, '', $_remainder);?>
40
+ <?php if ($_remainder):?>
41
+ ... <span id="<?php echo $_id = 'id' . uniqid()?>"><?php echo $_remainder ?></span>
42
+ <script type="text/javascript">
43
+ $('<?php echo $_id ?>').hide();
44
+ $('<?php echo $_id ?>').up().observe('mouseover', function(){$('<?php echo $_id ?>').show();});
45
+ $('<?php echo $_id ?>').up().observe('mouseout', function(){$('<?php echo $_id ?>').hide();});
46
+ </script>
47
+ <?php endif;?>
48
+ <?php endif;?>
49
+ </dd>
50
+ <?php endforeach; ?>
51
+ </dl>
52
+ <?php endif; ?>
53
+ <?php if ($this->getLinks()): ?>
54
+ <dl class="item-options">
55
+ <dt><?php echo $this->getLinksTitle(); ?></dt>
56
+ <?php foreach ($this->getLinks()->getPurchasedItems() as $_link): ?>
57
+ <dd><?php echo $_link->getLinkTitle() ?> (<?php echo $_link->getNumberOfDownloadsUsed() . ' / ' . ($_link->getNumberOfDownloadsBought()?$_link->getNumberOfDownloadsBought():Mage::helper('downloadable')->__('U')) ?>)</dd>
58
+ <?php endforeach; ?>
59
+ </dl>
60
+ <?php endif; ?>
61
+ <?php echo $this->htmlEscape($_item->getDescription()) ?>
62
+ <?php endif; ?>
app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/create/items/renderer/downloadable.phtml ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_item = $this->getItem() ?>
28
+ <?php $this->setPriceDataObject($_item); ?>
29
+ <tr class="border">
30
+ <td><?php echo $this->getColumnHtml($_item, 'downloadable') ?></td>
31
+ <td class="a-right">
32
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
33
+ <span class="price-excl-tax">
34
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
35
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
36
+ <?php endif; ?>
37
+ <?php echo $this->displayPriceAttribute('price') ?>
38
+ </span>
39
+ <?php endif; ?>
40
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
41
+ <span class="price-incl-tax">
42
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
43
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
44
+ <?php endif; ?>
45
+ <?php if ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
46
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
47
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
48
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
49
+ <br />
50
+ <small>
51
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
52
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
53
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></span><br />
54
+ <?php endforeach; ?>
55
+ </small>
56
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
57
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
58
+ <br />
59
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
60
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></small></span><br />
61
+ <?php endforeach; ?>
62
+ <span class="nobr">
63
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
64
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
65
+ </span>
66
+ <?php else: // excl. ?>
67
+ <?php echo $this->displayPriceInclTax($_item); ?>
68
+ <?php endif; ?>
69
+ </span>
70
+ <?php endif; ?>
71
+ </td>
72
+ <td class="a-center"><?php echo $this->getColumnHtml($_item, 'qty') ?></td>
73
+ <?php if ($this->canParentReturnToStock($_item)) : ?>
74
+ <td class="a-center">
75
+ <?php if ($this->canReturnItemToStock($_item)) : ?>
76
+ <input type="checkbox" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][back_to_stock]" value="1"<?php if ($_item->getBackToStock()):?> checked<?php endif;?>/>
77
+ <?php endif; ?>
78
+ </td>
79
+ <?php endif; ?>
80
+ <td class="a-center">
81
+ <?php if ($this->canEditQty()) : ?>
82
+ <input type="text" class="input-text qty-input" name="creditmemo[items][<?php echo $_item->getOrderItemId() ?>][qty]" value="<?php echo $_item->getQty()*1 ?>"/>
83
+ <?php else : ?>
84
+ <?php echo $_item->getQty()*1 ?>
85
+ <?php endif; ?>
86
+ </td>
87
+ <td class="a-right">
88
+
89
+
90
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
91
+ <span class="price-excl-tax">
92
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
93
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
94
+ <?php endif; ?>
95
+ <?php echo $this->displayPriceAttribute('row_total') ?>
96
+ </span>
97
+ <?php endif; ?>
98
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
99
+ <span class="price-incl-tax">
100
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
101
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
102
+ <?php endif; ?>
103
+
104
+ <?php if ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
105
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
106
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
107
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
108
+ <br />
109
+ <small>
110
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
111
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
112
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></span><br />
113
+ <?php endforeach; ?>
114
+ </small>
115
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
116
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
117
+ <br />
118
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
119
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></small></span><br />
120
+ <?php endforeach; ?>
121
+ <span class="nobr">
122
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
123
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
124
+ </span>
125
+ <?php else: // excl. ?>
126
+ <?php echo $this->displaySubtotalInclTax($_item); ?>
127
+ <?php endif; ?>
128
+ <?php endif; ?>
129
+ </span>
130
+ </td>
131
+ <td class="a-right"><?php echo $this->displayPriceAttribute('tax_amount') ?></td>
132
+ <td class="a-right"><?php echo $this->displayPriceAttribute('discount_amount') ?></td>
133
+ <td class="a-right last">
134
+ <?php echo $this->displayPrices(
135
+ $_item->getBaseRowTotal()+$_item->getBaseTaxAmount()-$_item->getBaseDiscountAmount()+$_item->getWeeeTaxAppliedAmount(),
136
+ $_item->getRowTotal()+$_item->getTaxAmount()-$_item->getDiscountAmount()+$_item->getWeeeTaxAppliedAmount()
137
+ ) ?>
138
+ </td>
139
+ </tr>
app/design/adminhtml/default/default/template/downloadable/sales/order/creditmemo/view/items/renderer/downloadable.phtml ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_item = $this->getItem() ?>
28
+ <?php $this->setPriceDataObject($_item) ?>
29
+ <tr class="border">
30
+ <td><?php echo $this->getColumnHtml($_item, 'downloadable') ?></td>
31
+ <td class="a-right">
32
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
33
+ <span class="price-excl-tax">
34
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
35
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
36
+ <?php endif; ?>
37
+ <?php echo $this->displayPriceAttribute('price') ?>
38
+ </span>
39
+ <?php endif; ?>
40
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
41
+ <span class="price-incl-tax">
42
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
43
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
44
+ <?php endif; ?>
45
+ <?php if ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
46
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
47
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
48
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
49
+ <br />
50
+ <small>
51
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
52
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
53
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></span><br />
54
+ <?php endforeach; ?>
55
+ </small>
56
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
57
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
58
+ <br />
59
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
60
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></small></span><br />
61
+ <?php endforeach; ?>
62
+ <span class="nobr">
63
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
64
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
65
+ </span>
66
+ <?php else: // excl. ?>
67
+ <?php echo $this->displayPriceInclTax($_item); ?>
68
+ <?php endif; ?>
69
+ </span>
70
+ <?php endif; ?>
71
+ </td>
72
+ <td class="a-center"><?php echo $_item->getQty()*1 ?></td>
73
+ <td class="a-right">
74
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
75
+ <span class="price-excl-tax">
76
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
77
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
78
+ <?php endif; ?>
79
+ <?php echo $this->displayPriceAttribute('row_total') ?>
80
+ </span>
81
+ <?php endif; ?>
82
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
83
+ <span class="price-incl-tax">
84
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
85
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
86
+ <?php endif; ?>
87
+
88
+ <?php if ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
89
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
90
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
91
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
92
+ <br />
93
+ <small>
94
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
95
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
96
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></span><br />
97
+ <?php endforeach; ?>
98
+ </small>
99
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
100
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
101
+ <br />
102
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
103
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></small></span><br />
104
+ <?php endforeach; ?>
105
+ <span class="nobr">
106
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
107
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
108
+ </span>
109
+ <?php else: // excl. ?>
110
+ <?php echo $this->displaySubtotalInclTax($_item); ?>
111
+ <?php endif; ?>
112
+ </span>
113
+ <?php endif; ?>
114
+ </td>
115
+ <td class="a-right"><?php echo $this->displayPriceAttribute('tax_amount') ?></td>
116
+ <td class="a-right"><?php echo $this->displayPriceAttribute('discount_amount') ?></td>
117
+ <td class="a-right last">
118
+ <?php echo $this->displayPrices(
119
+ $_item->getBaseRowTotal()-$_item->getBaseDiscountAmount()+$_item->getBaseTaxAmount(),
120
+ $_item->getRowTotal()-$_item->getDiscountAmount()+$_item->getTaxAmount()+$_item->getWeeeTaxAppliedAmount
121
+ ) ?>
122
+ </td>
123
+ </tr>
app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/create/items/renderer/downloadable.phtml ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_item = $this->getItem() ?>
28
+ <?php $this->setPriceDataObject($_item)?>
29
+ <tr class="border">
30
+ <td><?php echo $this->getColumnHtml($_item, 'downloadable') ?></td>
31
+ <td class="a-right">
32
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
33
+ <span class="price-excl-tax">
34
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
35
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
36
+ <?php endif; ?>
37
+ <?php echo $this->displayPriceAttribute('price') ?>
38
+ </span>
39
+ <?php endif; ?>
40
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
41
+ <span class="price-incl-tax">
42
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
43
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
44
+ <?php endif; ?>
45
+ <?php if ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
46
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
47
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
48
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
49
+ <br />
50
+ <small>
51
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
52
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
53
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></span><br />
54
+ <?php endforeach; ?>
55
+ </small>
56
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
57
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
58
+ <br />
59
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
60
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></small></span><br />
61
+ <?php endforeach; ?>
62
+ <span class="nobr">
63
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
64
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
65
+ </span>
66
+ <?php else: // excl. ?>
67
+ <?php echo $this->displayPriceInclTax($_item); ?>
68
+ <?php endif; ?>
69
+ </span>
70
+ <?php endif; ?>
71
+ </td>
72
+ <td class="a-center"><?php echo $this->getColumnHtml($_item, 'qty') ?></td>
73
+ <td class="a-center">
74
+ <?php if ($this->canEditQty()) : ?>
75
+ <input type="text" class="input-text qty-input" name="invoice[items][<?php echo $_item->getOrderItemId() ?>]" value="<?php echo $_item->getQty()*1 ?>"/>
76
+ <?php else : ?>
77
+ <?php echo $_item->getQty()*1 ?>
78
+ <?php endif; ?>
79
+ </td>
80
+ <td class="a-right">
81
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
82
+ <span class="price-excl-tax">
83
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
84
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
85
+ <?php endif; ?>
86
+ <?php echo $this->displayPriceAttribute('row_total') ?>
87
+ </span>
88
+ <?php endif; ?>
89
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
90
+ <span class="price-incl-tax">
91
+
92
+
93
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
94
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
95
+ <?php endif; ?>
96
+
97
+ <?php if ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
98
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
99
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
100
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
101
+ <br />
102
+ <small>
103
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
104
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
105
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></span><br />
106
+ <?php endforeach; ?>
107
+ </small>
108
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
109
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
110
+ <br />
111
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
112
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></small></span><br />
113
+ <?php endforeach; ?>
114
+ <span class="nobr">
115
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
116
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
117
+ </span>
118
+ <?php else: // excl. ?>
119
+ <?php echo $this->displaySubtotalInclTax($_item); ?>
120
+ <?php endif; ?>
121
+
122
+ </span>
123
+ <?php endif; ?>
124
+ </td>
125
+ <td class="a-right"><?php echo $this->displayPriceAttribute('tax_amount') ?></td>
126
+ <td class="a-right"><?php echo $this->displayPriceAttribute('discount_amount') ?></td>
127
+ <td class="a-right last">
128
+ <?php echo $this->displayPrices(
129
+ $_item->getBaseRowTotal()+$_item->getBaseTaxAmount()-$_item->getBaseDiscountAmount(),
130
+ $_item->getRowTotal()+$_item->getTaxAmount()-$_item->getDiscountAmount()+$_item->getWeeeTaxAppliedRowAmount()
131
+ ) ?>
132
+ </td>
133
+ </tr>
app/design/adminhtml/default/default/template/downloadable/sales/order/invoice/view/items/renderer/downloadable.phtml ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_item = $this->getItem() ?>
28
+ <?php $this->setPriceDataObject($_item) ?>
29
+ <tr class="border">
30
+ <td><?php echo $this->getColumnHtml($_item, 'downloadable') ?></td>
31
+ <td class="a-right">
32
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
33
+ <span class="price-excl-tax">
34
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
35
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
36
+ <?php endif; ?>
37
+ <?php echo $this->displayPriceAttribute('price') ?>
38
+ </span>
39
+ <?php endif; ?>
40
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
41
+ <span class="price-incl-tax">
42
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
43
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
44
+ <?php endif; ?>
45
+ <?php if ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
46
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
47
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
48
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
49
+ <br />
50
+ <small>
51
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
52
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
53
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></span><br />
54
+ <?php endforeach; ?>
55
+ </small>
56
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
57
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
58
+ <br />
59
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
60
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></small></span><br />
61
+ <?php endforeach; ?>
62
+ <span class="nobr">
63
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
64
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
65
+ </span>
66
+ <?php else: // excl. ?>
67
+ <?php echo $this->displayPriceInclTax($_item); ?>
68
+ <?php endif; ?>
69
+ </span>
70
+ <?php endif; ?>
71
+ </td>
72
+ <td class="a-center"><?php echo $_item->getQty()*1 ?></td>
73
+ <td class="a-right">
74
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
75
+ <span class="price-excl-tax">
76
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
77
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
78
+ <?php endif; ?>
79
+ <?php echo $this->displayPriceAttribute('row_total') ?>
80
+ </span>
81
+ <?php endif; ?>
82
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
83
+ <span class="price-incl-tax">
84
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
85
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
86
+ <?php endif; ?>
87
+
88
+ <?php if ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
89
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
90
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
91
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
92
+ <br />
93
+ <small>
94
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
95
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
96
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></span><br />
97
+ <?php endforeach; ?>
98
+ </small>
99
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
100
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
101
+ <br />
102
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
103
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></small></span><br />
104
+ <?php endforeach; ?>
105
+ <span class="nobr">
106
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
107
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
108
+ </span>
109
+ <?php else: // excl. ?>
110
+ <?php echo $this->displaySubtotalInclTax($_item); ?>
111
+ <?php endif; ?>
112
+ </span>
113
+ <?php endif; ?>
114
+ </td>
115
+ <td class="a-right"><?php echo $this->displayPriceAttribute('tax_amount') ?></td>
116
+ <td class="a-right"><?php echo $this->displayPriceAttribute('discount_amount') ?></td>
117
+ <td class="a-right last">
118
+ <?php echo $this->displayPrices(
119
+ $_item->getBaseRowTotal()+$_item->getBaseTaxAmount()-$_item->getBaseDiscountAmount()+$_item->getWeeeTaxAppliedAmount(),
120
+ $_item->getRowTotal()+$_item->getTaxAmount()-$_item->getDiscountAmount()+$_item->getWeeeTaxAppliedAmount()
121
+ ) ?>
122
+ </td>
123
+ </tr>
app/design/adminhtml/default/default/template/downloadable/sales/order/view/items/renderer/downloadable.phtml ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_item = $this->getItem() ?>
28
+ <?php $this->setPriceDataObject($_item) ?>
29
+ <tr<?php if ($this->canDisplayGiftmessage()): ?> class="border"<?php endif; ?>>
30
+ <td class="giftmessage-single-item">
31
+ <?php if ($this->canDisplayContainer()): ?>
32
+ <div id="<?php echo $this->getHtmlId() ?>" class="item-container">
33
+ <?php endif; ?>
34
+ <div class="item-text">
35
+ <?php echo $this->getColumnHtml($_item, 'downloadable') ?>
36
+ </div>
37
+ <?php if ($this->canDisplayContainer()): ?>
38
+ </div>
39
+ <?php endif ?>
40
+ </td>
41
+ <td class="a-center"><?php echo $_item->getStatus() ?></td>
42
+ <td class="a-right"><?php echo $this->displayPriceAttribute('original_price') ?></td>
43
+ <td class="a-right">
44
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
45
+ <span class="price-excl-tax">
46
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
47
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
48
+ <?php endif; ?>
49
+ <?php echo $this->displayPriceAttribute('price') ?>
50
+ </span>
51
+ <?php endif; ?>
52
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
53
+ <span class="price-incl-tax">
54
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
55
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
56
+ <?php endif; ?>
57
+ <?php if ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
58
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
59
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
60
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
61
+ <br />
62
+ <small>
63
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
64
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
65
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></span><br />
66
+ <?php endforeach; ?>
67
+ </small>
68
+ <?php elseif ($_item->getWeeeTaxAppliedAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
69
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)); ?>
70
+ <br />
71
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
72
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['amount'],true,true); ?></small></span><br />
73
+ <?php endforeach; ?>
74
+ <span class="nobr">
75
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
76
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getPriceInclTax($_item)+$_item->getWeeeTaxAppliedAmount()); ?>
77
+ </span>
78
+ <?php else: // excl. ?>
79
+ <?php echo $this->displayPriceInclTax($_item); ?>
80
+ <?php endif; ?>
81
+ </span>
82
+ <?php endif; ?>
83
+ </td>
84
+ <td><?php echo $this->getColumnHtml($_item, 'qty') ?></td>
85
+
86
+ <td class="a-right">
87
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
88
+ <span class="price-excl-tax">
89
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
90
+ <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax'); ?>:</span>
91
+ <?php endif; ?>
92
+ <?php echo $this->displayPriceAttribute('row_total') ?>
93
+ </span>
94
+ <?php endif; ?>
95
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
96
+ <span class="price-incl-tax">
97
+
98
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
99
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
100
+ <?php endif; ?>
101
+
102
+ <?php if ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 0, 'sales')): // including ?>
103
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
104
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 1, 'sales')): // incl. + weee ?>
105
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
106
+ <br />
107
+ <small>
108
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
109
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
110
+ <span class="nobr">+ <?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></span><br />
111
+ <?php endforeach; ?>
112
+ </small>
113
+ <?php elseif ($_item->getWeeeTaxAppliedRowAmount() && Mage::helper('weee')->typeOfDisplay($_item, 2, 'sales')): // excl. + weee + final ?>
114
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)); ?>
115
+ <br />
116
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
117
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo Mage::helper('core')->currency($tax['row_amount'],true,true); ?></small></span><br />
118
+ <?php endforeach; ?>
119
+ <span class="nobr">
120
+ <?php echo Mage::helper('weee')->__('Total'); ?>:
121
+ <?php echo $this->helper('checkout')->formatPrice($this->helper('checkout')->getSubtotalInclTax($_item)+$_item->getWeeeTaxAppliedRowAmount()); ?>
122
+ </span>
123
+ <?php else: // excl. ?>
124
+ <?php echo $this->displaySubtotalInclTax($_item); ?>
125
+ <?php endif; ?>
126
+
127
+ <!--
128
+
129
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
130
+ <span class="label"><?php echo $this->helper('tax')->__('Incl. Tax'); ?>:</span>
131
+ <?php endif; ?>
132
+ <?php echo $this->displaySubtotalInclTax($_item); ?>
133
+ -->
134
+ </span>
135
+ <?php endif; ?>
136
+ </td>
137
+ <td class="a-right"><?php echo $this->displayPriceAttribute('tax_amount') ?></td>
138
+ <td class="a-right"><?php echo $this->displayTaxPercent($_item) ?></td>
139
+ <td class="a-right"><?php echo $this->displayPriceAttribute('discount_amount') ?></td>
140
+ <td class="a-right last">
141
+ <?php echo $this->displayPrices(
142
+ $_item->getBaseRowTotal() - $_item->getBaseDiscountAmount() + $_item->getBaseTaxAmount(),
143
+ $_item->getRowTotal() - $_item->getDiscountAmount() + $_item->getTaxAmount() + $_item->getWeeeTaxAppliedRowAmount()
144
+ ); ?>
145
+ </td>
146
+ </tr>
app/design/adminhtml/default/default/template/eav/attribute/edit/js.phtml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
app/design/adminhtml/default/default/template/email/order/items.phtml ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_order=$this->getOrder() ?>
28
+ <table cellspacing="0" cellpadding="0" border="0" width="100%" style="border:1px solid #bebcb7; background:#f8f7f5;">
29
+ <thead>
30
+ <tr>
31
+ <th class="a-left" bgcolor="#d9e5ee" style="padding:3px 9px">Item</th>
32
+ <th class="a-center" bgcolor="#d9e5ee" style="padding:3px 9px">Qty</th>
33
+ <th class="a-right" bgcolor="#d9e5ee" style="padding:3px 9px">Subtotal</th>
34
+ </tr>
35
+ </thead>
36
+
37
+ <tbody>
38
+ <?php $i=0; foreach ($_order->getAllItems() as $_item): $i++ ?>
39
+ <tr <?php echo $i%2?'bgcolor="#eeeded"':'' ?>>
40
+ <td align="left" valign="top" style="padding:3px 9px"><?php echo $_item->getName() ?></td>
41
+ <td align="center" valign="top" style="padding:3px 9px"><?php echo sprintf('%s', $_item->getQtyOrdered()) ?></td>
42
+ <td align="right" valign="top" style="padding:3px 9px">
43
+ <?php if ($this->helper('tax')->displayCartPriceExclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
44
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
45
+ <span class="label"><?php echo $this->__('Excl. Tax'); ?>:</span>
46
+ <?php endif; ?>
47
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'email', $_order->getStore())): ?>
48
+ <?php echo $_order->formatPrice($_item->getRowTotal()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?>
49
+ <?php else: ?>
50
+ <?php echo $_order->formatPrice($_item->getRowTotal()) ?>
51
+ <?php endif; ?>
52
+
53
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
54
+ <br />
55
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'email', $_order->getStore())): ?>
56
+ <small>
57
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
58
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount'],true,true); ?></span><br />
59
+ <?php endforeach; ?>
60
+ </small>
61
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
62
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
63
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></small></span><br />
64
+ <?php endforeach; ?>
65
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'email', $_order->getStore())): ?>
66
+ <small>
67
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
68
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span><br />
69
+ <?php endforeach; ?>
70
+ </small>
71
+ <?php endif; ?>
72
+
73
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
74
+ <br />
75
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total'); ?>:<br /> <?php echo $_order->formatPrice($_item->getCalculationPrice()+$_item->getWeeeTaxAppliedRowAmount()+$_item->getWeeeTaxRowDisposition()); ?></span>
76
+ <?php endif; ?>
77
+ <?php endif; ?>
78
+ <?php endif; ?>
79
+
80
+
81
+ <?php if ($this->helper('tax')->displayCartPriceInclTax() || $this->helper('tax')->displayCartBothPrices()): ?>
82
+ <?php if ($this->helper('tax')->displayCartBothPrices()): ?>
83
+ <br /><span class="label"><?php echo $this->__('Incl. Tax'); ?>:</span>
84
+ <?php endif; ?>
85
+ <?php $_incl = $this->helper('checkout')->getSubtotalInclTax($_item); ?>
86
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, array(0, 1, 4), 'email', $_order->getStore())): ?>
87
+ <?php echo $_order->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?>
88
+ <?php else: ?>
89
+ <?php echo $_order->formatPrice($_incl-$_item->getWeeeTaxRowDisposition()) ?>
90
+ <?php endif; ?>
91
+ <?php if (Mage::helper('weee')->getApplied($_item)): ?>
92
+ <br />
93
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 1, 'email', $_order->getStore())): ?>
94
+ <small>
95
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
96
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount'],true,true); ?></span><br />
97
+ <?php endforeach; ?>
98
+ </small>
99
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
100
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
101
+ <span class="nobr"><small><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></small></span><br />
102
+ <?php endforeach; ?>
103
+ <?php elseif (Mage::helper('weee')->typeOfDisplay($_item, 4, 'email', $_order->getStore())): ?>
104
+ <small>
105
+ <?php foreach (Mage::helper('weee')->getApplied($_item) as $tax): ?>
106
+ <span class="nobr"><?php echo $tax['title']; ?>: <?php echo $_order->formatPrice($tax['row_amount_incl_tax'],true,true); ?></span><br />
107
+ <?php endforeach; ?>
108
+ </small>
109
+ <?php endif; ?>
110
+
111
+ <?php if (Mage::helper('weee')->typeOfDisplay($_item, 2, 'email', $_order->getStore())): ?>
112
+ <span class="nobr"><?php echo Mage::helper('weee')->__('Total incl. tax'); ?>:<br /> <?php echo $_order->formatPrice($_incl+$_item->getWeeeTaxAppliedRowAmount()); ?></span>
113
+ <?php endif; ?>
114
+ <?php endif; ?>
115
+ <?php endif; ?>
116
+ </td>
117
+ </tr>
118
+ <?php endforeach ?>
119
+ </tbody>
120
+
121
+ <tfoot>
122
+ <tr>
123
+ <td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Subtotal') ?></td>
124
+ <td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getSubtotal()) ?></td>
125
+ </tr>
126
+ <?php if ($_order->getDiscountAmount()): ?>
127
+ <tr>
128
+ <td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Discount') ?></td>
129
+ <td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getDiscountAmount()) ?></td>
130
+ </tr>
131
+ <?php endif; ?>
132
+ <?php if ($_order->getShippingAmount()): ?>
133
+ <tr>
134
+ <td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Shipping Amount') ?></td>
135
+ <td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getShippingAmount()) ?></td>
136
+ </tr>
137
+ <?php endif; ?>
138
+ <?php if ($_order->getTaxAmount()): ?>
139
+ <tr>
140
+ <td colspan="2" align="right" style="padding:3px 9px"><?php echo Mage::helper('sales')->__('Tax Amount') ?></td>
141
+ <td align="right" style="padding:3px 9px"><?php echo $_order->formatPrice($_order->getTaxAmount()) ?></td>
142
+ </tr>
143
+ <?php endif; ?>
144
+ <tr bgcolor="#DEE5E8">
145
+ <td colspan="2" align="right" style="padding:3px 9px"><strong><big><?php echo Mage::helper('sales')->__('Grand Total') ?></big></strong></td>
146
+ <td align="right" style="padding:6px 9px"><strong><big><?php echo $_order->formatPrice($_order->getGrandTotal()) ?></big></strong></td>
147
+ </tr>
148
+ </tfoot>
149
+
150
+ </table>
app/design/adminhtml/default/default/template/example.phtml ADDED
@@ -0,0 +1,301 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
28
+ <html lang="en">
29
+ <head>
30
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
31
+ <title><?php echo Mage::helper('adminhtml')->__('Magento Commerce - Administrative Panel') ?></title>
32
+ <style type="text/css" media="all">
33
+ /*<![CDATA[*/ @import "<?php echo $this->getSkinUrl('styles.css') ?>"; /*]]>*/
34
+ </style>
35
+ <link rel="stylesheet" type="text/css" media="screen, projection" href="<?php echo $this->getSkinUrl('menu-top.css') ?>" />
36
+ <!--[if IE]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('iestyles.css') ?>" type="text/css" media="all" /> <![endif]-->
37
+ <!--[if lt IE 7]><script defer type="text/javascript" src="<?php echo $baseUrl ?>js/lib/ds-sleight.js"></script><![endif]-->
38
+ <script type="text/javascript" src="<?php echo $baseUrl ?>js/lib/dropdown.js"></script>
39
+ </head>
40
+ <body>
41
+ <div class="header">
42
+ <a href="#"><img src="<?php echo $this->getSkinUrl('images/logo.gif') ?>" alt="Magento logo" class="logo"/></a>
43
+ <div class="header-right">
44
+ <p>Today is: June 01, 2007<span class="separator">|</span><strong>Minu Oh</strong> (Administrator)<span class="separator">|</span><a href="#">Logout</a></p>
45
+ <fieldset>
46
+ <input type="text" class="input-text" value="Search by Keyword"/>
47
+ </fieldset>
48
+ </div>
49
+ <div class="clear"></div>
50
+
51
+ <?php echo $this->getLayout()->createBlock('adminhtml/page_menu')->toHtml() ?>
52
+
53
+ </div>
54
+ <div class="middle">
55
+ <ul class="breadcrumbs">
56
+ <li><a href="#">Home</a> &raquo;</li>
57
+ <li><a href="#">Customer</a> &raquo;</li>
58
+ <li>#0011234</li>
59
+ </ul>
60
+ <div class="container"><!-- accomodates the section-menu by border width (for IE bug) -->
61
+ <div class="main">
62
+ <div class="content-container"><!-- content positioning -->
63
+ <div class="content"><!-- content presentation -->
64
+ <div class="head">
65
+ <table cellspacing="0">
66
+ <tr>
67
+ <td style="width:50%;"><h2>Minu Oh - Customer View</h2></td>
68
+ <td class="buttons"><strong class="button"><span>Save</span></strong></td>
69
+ </tr>
70
+ </table>
71
+ </div>
72
+ <div class="box-left customer-personal">
73
+ <h3>Personal Information</h3>
74
+ <div class="box">
75
+ <p><strong>Last Logged in:</strong> June, 16, 2007 ( Currently <strong>OFFLINE</strong> )</p>
76
+ <p><strong>Account Created:</strong> April 1, 2001</p>
77
+ <address>
78
+ <strong>Contact Information</strong><br/>Minu Oh ( <a href="mailto:minu@varien.com">minu@varien.com</a>)<br/>
79
+ 3402 Motor Ave Suite B<br/>
80
+ Los Angeles, CA 90034<br/>
81
+ United States<br/>
82
+ <small><strong>T</strong> |</small> (310) 123-1234</address>
83
+ </div>
84
+ </div>
85
+ <div class="box-right sales-tally">
86
+ <h3>Sales Tally</h3>
87
+ <div class="box">
88
+ <table cellspacing="0" class="data">
89
+ <thead>
90
+ <tr>
91
+ <th>&nbsp;</th>
92
+ <th>Lifetime Sales</th>
93
+ <th>Average Sale</th>
94
+ </tr>
95
+ </thead>
96
+ <tfoot>
97
+ <tr>
98
+ <td class="label"><big>Total</big></td>
99
+ <td><big>$9000.82</big></td>
100
+ <td><big>$400.99</big></td>
101
+ </tr>
102
+ </tfoot>
103
+ <tbody>
104
+ <tr>
105
+ <td class="label">Site 1</td>
106
+ <td>$1899.82</td>
107
+ <td>$82.99</td>
108
+ </tr>
109
+ <tr class="even">
110
+ <td class="label">Site 1</td>
111
+ <td>$1899.82</td>
112
+ <td>$82.99</td>
113
+ </tr>
114
+ <tr>
115
+ <td class="label">Site 1</td>
116
+ <td>$1899.82</td>
117
+ <td>$82.99</td>
118
+ </tr>
119
+ <tr class="even">
120
+ <td class="label">Site 1</td>
121
+ <td>$1899.82</td>
122
+ <td>$82.99</td>
123
+ </tr>
124
+ <tr>
125
+ <td class="label">Site 1</td>
126
+ <td>$1899.82</td>
127
+ <td>$82.99</td>
128
+ </tr>
129
+ <tr class="even">
130
+ <td class="label">Site 1</td>
131
+ <td>$1899.82</td>
132
+ <td>$82.99</td>
133
+ </tr>
134
+ </tbody>
135
+ </table>
136
+ </div>
137
+ </div>
138
+ <div class="clear"></div>
139
+ <br/>
140
+ <h3>Sales Stat</h3>
141
+ <dl class="accordion">
142
+ <dt><a href="#"><img src="<?php echo $this->getSkinUrl('images/accordion_open.png') ?>" alt="" class="v-mid"/></a><strong>Last 5 Orders</strong></dt>
143
+ <dd></dd>
144
+ <dt><a href="#"><img src="<?php echo $this->getSkinUrl('images/accordion_open.png') ?>" alt="" class="v-mid"/></a><strong>Wishlist</strong> (5 items)</dt>
145
+ <dd class="grid open">
146
+ <table cellspacing="0" class="data">
147
+ <thead>
148
+ <tr>
149
+ <th>Product ID</th>
150
+ <th>Product Name</th>
151
+ <th>Price</th>
152
+ </tr>
153
+ </thead>
154
+ <tfoot>
155
+ <tr>
156
+ <td colspan="2" class="a-right"><strong>Total</strong></td>
157
+ <td><strong>$400.99</strong></td>
158
+ </tr>
159
+ </tfoot>
160
+ <tbody>
161
+ <tr>
162
+ <td>00212</td>
163
+ <td>Some sort of product name goes here</td>
164
+ <td class="price">$82.99</td>
165
+ </tr>
166
+ <tr class="even">
167
+ <td>00212</td>
168
+ <td>Some sort of product name goes here</td>
169
+ <td class="price">$82.99</td>
170
+ </tr>
171
+ <tr>
172
+ <td>00212</td>
173
+ <td>Some sort of product name goes here</td>
174
+ <td class="price">$82.99</td>
175
+ </tr>
176
+ <tr class="even">
177
+ <td>00212</td>
178
+ <td>Some sort of product name goes here</td>
179
+ <td class="price">$82.99</td>
180
+ </tr>
181
+ <tr>
182
+ <td>00212</td>
183
+ <td>Some sort of product name goes here</td>
184
+ <td class="price">$82.99</td>
185
+ </tr>
186
+ <tr class="even">
187
+ <td>00212</td>
188
+ <td>Some sort of product name goes here</td>
189
+ <td class="price">$82.99</td>
190
+ </tr>
191
+ </tbody>
192
+ </table></dd>
193
+ <dt><a href="#"><img src="<?php echo $this->getSkinUrl('accordion_open.png') ?>" alt="" class="v-mid"/></a><strong>Gift Registries</strong> (0 items)</dt>
194
+ <dd></dd>
195
+ <dt><a href="#"><img src="<?php echo $this->getSkinUrl('images/accordion_open.png') ?>" alt="" class="v-mid"/></a><strong>Shopping Cart</strong> (1 item)</dt>
196
+ <dd></dd>
197
+ </dl>
198
+
199
+
200
+
201
+
202
+
203
+ <br/><br/><!-- The two <br/>s exist only for example show. Erase during production -->
204
+ <!-- [starts] address list -->
205
+ <div class="head">
206
+ <table cellspacing="0">
207
+ <tr>
208
+ <td style="width:50%;"><h2>Minu Oh - Addresses</h2></td>
209
+ <td class="buttons">
210
+ <strong class="button-alt"><span>Delete</span></strong>
211
+ <strong class="button"><span>Save</span></strong>
212
+ <strong class="button"><span>New Address</span></strong>
213
+ </td>
214
+ </tr>
215
+ </table>
216
+ </div>
217
+ <div class="address-list">
218
+ <h3>Customer Addresses</h3>
219
+ <ul>
220
+ <li class="on">
221
+ <address>Minu Oh<br/>
222
+ 3402 Motor Ave Suite B<br/>
223
+ Los Angeles, CA 90034<br/>
224
+ T | 310-123-1234
225
+ </address>
226
+ </li>
227
+ <li>
228
+ <address>Minu Oh<br/>
229
+ 3402 Motor Ave Suite B<br/>
230
+ Los Angeles, CA 90034<br/>
231
+ T | 310-123-1234
232
+ </address>
233
+ </li>
234
+ <li class="over">
235
+ <address>Minu Oh<br/>
236
+ 3402 Motor Ave Suite B<br/>
237
+ Los Angeles, CA 90034<br/>
238
+ T | 310-123-1234
239
+ </address>
240
+ </li>
241
+ <li>
242
+ <address>Minu Oh<br/>
243
+ 3402 Motor Ave Suite B<br/>
244
+ Los Angeles, CA 90034<br/>
245
+ T | 310-123-1234
246
+ </address>
247
+ </li>
248
+ </ul>
249
+ </div>
250
+ <div class="entry-edit">
251
+ <h3>Edit Address Entry</h3>
252
+ <form method="post" action="#">
253
+ <fieldset>
254
+ <ul>
255
+ <li><label for="input_name_0">Input item label</label><input type="text" class="input-text" name="input_name_0" id="input_name_0"/></li>
256
+ <li><label for="input_name_1">Input item label</label><input type="text" class="input-text" name="input_name_1" id="input_name_1"/></li>
257
+ <li><label for="input_name_2">Input item label</label><input type="text" class="input-text" name="input_name_2" id="input_name_2"/></li>
258
+ <li><label for="input_name_3">Input item label</label><input type="text" class="input-text" name="input_name_3" id="input_name_3"/></li>
259
+ <li><label for="input_name_4">Input item label</label><input type="text" class="input-text" name="input_name_4" id="input_name_4"/></li>
260
+ <li><label for="input_name_5">Input item label</label><input type="text" class="input-text" name="input_name_5" id="input_name_5"/></li>
261
+ </ul>
262
+ </fieldset>
263
+ </form>
264
+ </div>
265
+ <!-- [ends] address list -->
266
+
267
+
268
+
269
+
270
+
271
+ </div>
272
+ </div>
273
+ <!--[ends] .content-container -->
274
+
275
+ <div class="section-menu">
276
+ <h2>Customer Insight</h2>
277
+ <ul>
278
+ <li><a href="#"><span>Customer View</span></a></li>
279
+ <li><a href="#"><span>Account Information</span></a></li>
280
+ <li><a href="#"><span>Addresses</span></a></li>
281
+ <li><a href="#"><span>Orders</span></a></li>
282
+ <li><a href="#"><span>Gift Registries</span></a></li>
283
+ <li><a href="#"><span>Product Reviews</span></a></li>
284
+ <li><a href="#"><span>Wishlist</span></a></li>
285
+ <li><a href="#"><span>Shopping Cart</span></a></li>
286
+ <li><a href="#"><span>Newsletter</span></a></li>
287
+ </ul>
288
+ <div class="bottom"></div>
289
+ </div>
290
+ <!--[ends] .section-menu -->
291
+ </div>
292
+ </div>
293
+ </div>
294
+ <!--[ends] .middle -->
295
+
296
+ <div class="footer">
297
+ <p>Copyright &copy; 2008 Magento Commerce. All Right Reserved.<br/>
298
+ <strong>Version 1.0</strong> | Powered by <a href="http://www.varien.com" target="varien">Varien</a></p>
299
+ </div>
300
+ </body>
301
+ </html>
app/design/adminhtml/default/default/template/forgotpassword.phtml ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
28
+ <html lang="en">
29
+ <head>
30
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
31
+ <title><?php echo Mage::helper('adminhtml')->__('Log into Magento Admin Page') ?></title>
32
+ <link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('reset.css') ?>" media="all" />
33
+ <link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('boxes.css') ?>" media="all" />
34
+ <link rel="icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
35
+ <link rel="shortcut icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
36
+
37
+ <script type="text/javascript" src="<?php echo $this->getJsUrl() ?>index.php/x.js?f=prototype/prototype.js,prototype/validation.js,mage/adminhtml/events.js,mage/adminhtml/form.js,scriptaculous/effects.js"></script>
38
+
39
+ <!--[if IE]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('iestyles.css') ?>" type="text/css" media="all" /> <![endif]-->
40
+ <!--[if lt IE 7]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('below_ie7.css') ?>" type="text/css" media="all" /> <![endif]-->
41
+ <!--[if IE 7]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('ie7.css') ?>" type="text/css" media="all" /> <![endif]-->
42
+ </head>
43
+ <body id="page-login">
44
+ <div class="login-container">
45
+ <div class="login-box">
46
+ <form method="post" action="" id="loginForm">
47
+ <fieldset class="login-form">
48
+ <input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />
49
+ <h2><?php echo Mage::helper('adminhtml')->__('Forgot your user name or password?') ?></h2>
50
+ <div id="messages">
51
+ <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
52
+ </div>
53
+ <div class="input-box forgot-password"><label for="email"><?php echo Mage::helper('adminhtml')->__('Email Address:') ?></label><br />
54
+ <input type="text" id="email" name="email" value="" class="required-entry input-text forgot-password" style="width:461px;" />
55
+ </div>
56
+ <div class="clear"></div>
57
+ <div class="form-buttons">
58
+ <a class="left" href="<?php echo $this->getUrl('adminhtml', array('_nosecret' => true)) ?>">&laquo; <?php echo Mage::helper('adminhtml')->__('Back to Login') ?></a>
59
+ <button class="forgot-password" onclick="loginForm.submit()" type="button"><span><?php echo Mage::helper('adminhtml')->__('Retrieve Password') ?></span></button>
60
+ </div>
61
+ </fieldset>
62
+ <p class="legal"><?php echo Mage::helper('adminhtml')->__('Magento is a trademark of Magento Inc. Copyright &copy; %s Magento Inc.', date('Y')) ?></p>
63
+ </form>
64
+ <div class="bottom"></div>
65
+ <script type="text/javascript">
66
+ var loginForm = new varienForm('loginForm');
67
+ </script>
68
+ </div>
69
+ </div>
70
+ </body>
71
+ </html>
72
+
app/design/adminhtml/default/default/template/formkey.phtml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>
app/design/adminhtml/default/default/template/giftmessage/form.phtml ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php echo $this->helper('core/js')->includeScript('mage/adminhtml/giftmessage.js') ?>
28
+ <?php if(!$this->getSaveMode()): ?>
29
+ <form action="<?php echo $this->getSaveUrl() ?>" id="message-form" method="post" class="a-left">
30
+ <?php echo $this->getBlockHtml('formkey')?>
31
+ <?php echo $this->getFormHtml(); ?>
32
+ <?php echo $this->getSaveButtonHtml() ?>
33
+ <?php echo $this->getCancelButtonHtml() ?>
34
+ <?php if($this->getMessage()->getGiftMessageId()): ?>
35
+ <?php echo $this->getRemoveButtonHtml() ?>
36
+ <?php endif; ?>
37
+ </form>
38
+ <?php elseif($this->getSaveMode()=='save'): ?>
39
+ <h3><?php echo Mage::helper('giftmessage')->__('The gift message has been saved') ?></h3>
40
+ <br /><?php echo $this->getCloseButtonHtml() ?>
41
+ <?php else: ?>
42
+ <h3><?php echo Mage::helper('giftmessage')->__('The gift message has been removed') ?></h3>
43
+ <br /><?php echo $this->getCloseButtonHtml() ?>
44
+ <?php endif; ?>
45
+ <script type="text/javascript">
46
+ <!--
47
+ <?php if(!$this->getSaveMode()): ?>
48
+ var giftMessageWindowObject = new GiftMessageWindow('<?php echo $this->getUniqueId() ?>','message-form', '<?php echo $this->getRemoveUrl() ?>');
49
+ giftMessageWindowObject.confirmMessage = '<?php echo $this->getEscapedForJs(Mage::helper('giftmessage')->__('Are you sure?')) ?>';
50
+ <?php else: ?>
51
+ var giftMessageWindowObject = new GiftMessageWindow('<?php echo $this->getUniqueId() ?>', null, '<?php echo $this->getRemoveUrl() ?>');
52
+ Event.observe(window, 'load', function(evt) {
53
+ giftMessageWindowObject.updateParent('<?php echo $this->getEditUrl() ?>', '<?php echo $this->getButtonUrl() ?>');
54
+ });
55
+ <?php endif; ?>
56
+ //-->
57
+ </script>
app/design/adminhtml/default/default/template/giftmessage/giftoptionsform.phtml ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($this->canDisplayGiftmessageForm()): ?>
29
+ <div id="gift_options_giftmessage">
30
+ <div class="giftcard-form">
31
+ <div class="giftcard-send-form">
32
+ <h4><?php echo Mage::helper('giftmessage')->__('Gift Message'); ?></h4>
33
+ <ul class="form-list">
34
+ <li class="fields">
35
+ <div class="field">
36
+ <label for="current_item_giftmessage_sender"><?php echo Mage::helper('giftmessage')->__('From'); ?></label>
37
+ <div class="input-box">
38
+ <input type="text" class="input-text" name="current_item_giftmessage_sender" id="current_item_giftmessage_sender" />
39
+ </div>
40
+ </div>
41
+ </li>
42
+ <li class="fields">
43
+ <div class="field">
44
+ <label for="current_item_giftmessage_recipient"><?php echo Mage::helper('giftmessage')->__('To'); ?></label>
45
+ <div class="input-box">
46
+ <input type="text" class="input-text" name="current_item_giftmessage_recipient" id="current_item_giftmessage_recipient" />
47
+ </div>
48
+ </div>
49
+ </li>
50
+ <li class="fields">
51
+ <div class="field">
52
+ <label for="current_item_giftmessage_message"><?php echo Mage::helper('giftmessage')->__('Message'); ?></label>
53
+ <div class="input-box">
54
+ <textarea class="textarea" cols="15" rows="2" name="current_item_giftmessage_message" id="current_item_giftmessage_message"></textarea>
55
+ </div>
56
+ </div>
57
+ </li>
58
+ </ul>
59
+ </div>
60
+ </div>
61
+ </div>
62
+
63
+ <script type="text/javascript">
64
+ //<![CDATA[
65
+ var giftMessageSet = new GiftMessageSet();
66
+ //]]>
67
+ </script>
68
+ <?php endif; ?>
app/design/adminhtml/default/default/template/giftmessage/helper.phtml ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php if($this->getType()!== 'main' && !$this->getScriptIncluded() && $this->getCanDisplayContainer()): ?>
28
+ <?php echo $this->helper('core/js')->includeScript('mage/adminhtml/giftmessage.js') ?>
29
+ <?php $this->setScriptIncluded(true); ?>
30
+ <?php endif; ?>
31
+ <?php if($this->getCanDisplayContainer()): ?>
32
+ <div id="<?php echo $this->getId() ?>">
33
+ <?php endif; ?>
34
+ <?php switch ($this->getType()): ?>
35
+ <?php case 'item': ?>
36
+ <a class="listen-for-click" href="#">
37
+ <?php if($this->hasGiftMessage()): ?>
38
+ <?php echo Mage::helper('giftmessage')->__('Edit') ?>
39
+ <?php else: ?>
40
+ <?php echo Mage::helper('giftmessage')->__('Add') ?>
41
+ <?php endif; ?>
42
+ </a>
43
+ <?php break; ?>
44
+ <?php case 'order_item': ?>
45
+ <a class="listen-for-click" href="#">
46
+ <?php if($this->hasGiftMessage()): ?>
47
+ <?php echo Mage::helper('giftmessage')->__('Edit') ?>
48
+ <?php else: ?>
49
+ <?php echo Mage::helper('giftmessage')->__('Add') ?>
50
+ <?php endif; ?>
51
+ </a>
52
+ <?php break; ?>
53
+ <?php case 'main': ?>
54
+ <?php if($this->hasGiftMessage()): ?>
55
+ <?php if($_giftMessage=$this->getMessage()): ?>
56
+ <span class="field-row">
57
+ <label><?php echo Mage::helper('giftmessage')->__('From') ?></label>
58
+ <?php echo $this->htmlEscape($_giftMessage->getSender()) ?>
59
+ </span>
60
+ <span class="field-row">
61
+ <label><?php echo Mage::helper('giftmessage')->__('To') ?></label>
62
+ <?php echo $this->htmlEscape($_giftMessage->getRecipient()) ?>
63
+ </span>
64
+ <span class="field-row">
65
+ <label><?php echo Mage::helper('giftmessage')->__('Message') ?></label>
66
+ <div class="f-left"><?php echo $this->prepareAsIs($_giftMessage->getMessage()) ?></div>
67
+ </span>
68
+ <?php endif; ?>
69
+ <?php echo $this->getWidgetButtonHtml(Mage::helper('giftmessage')->__('Edit'), 'edit') ?>
70
+ <?php else: ?>
71
+ <?php echo $this->getWidgetButtonHtml(Mage::helper('giftmessage')->__('Add'), 'add') ?>
72
+ <?php endif; ?>
73
+ <?php break; ?>
74
+ <?php case 'order': ?>
75
+ <?php if($this->hasGiftMessage()): ?>
76
+ <?php if($_giftMessage=$this->getMessage()): ?>
77
+
78
+ <span class="field-row">
79
+ <label><?php echo Mage::helper('giftmessage')->__('From') ?></label>
80
+ <?php echo $this->htmlEscape($_giftMessage->getSender()) ?>
81
+ </span>
82
+ <span class="field-row">
83
+ <label><?php echo Mage::helper('giftmessage')->__('To') ?></label>
84
+ <?php echo $this->htmlEscape($_giftMessage->getRecipient()) ?>
85
+ </span>
86
+ <span class="field-row">
87
+ <label><?php echo Mage::helper('giftmessage')->__('Message') ?></label>
88
+ <div class="f-left"><?php echo $this->prepareAsIs($_giftMessage->getMessage()) ?></div>
89
+ </span>
90
+
91
+ <?php endif; ?>
92
+ <?php echo $this->getWidgetButtonHtml(Mage::helper('giftmessage')->__('Edit'), 'edit') ?>
93
+ <?php else: ?>
94
+ <?php echo $this->getWidgetButtonHtml(Mage::helper('giftmessage')->__('Add'), 'add') ?>
95
+ <?php endif; ?>
96
+ <?php break; ?>
97
+ <?php endswitch ?>
98
+ <?php if($this->getCanDisplayContainer()): ?>
99
+ </div>
100
+ <script type="text/javascript">
101
+ var <?php echo $this->getJsObjectName() ?> = new GiftMessage('<?php echo $this->getId() ?>');
102
+ <?php echo $this->getJsObjectName() ?>.url = '<?php echo $this->getEditUrl() ?>';
103
+ </script>
104
+ <?php endif; ?>
app/design/adminhtml/default/default/template/giftmessage/popup.phtml ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($this->getChildHtml()) :?>
29
+ <div id="gift_options_window_mask" class="popup-window-mask" style="display: none;"></div>
30
+ <div id="gift_options_configure_new" class="gift_options-popup product-configure-popup" style="display: none;">
31
+ <div id="gift_options_form_contents">
32
+ <div class="entry-edit">
33
+ <div class="entry-edit-head">
34
+ <h4 class="icon-head fieldset-legend"><?php echo Mage::helper('giftmessage')->__('Gift Options for'); ?> <span id="gift_options_configure_title"></span></h4>
35
+ </div>
36
+ <div class="content">
37
+ <?php echo $this->getChildHtml();?>
38
+ </div>
39
+ <div class="buttons-set a-right">
40
+ <button type="button" class="scalable" id="gift_options_cancel_button"><span><?php echo Mage::helper('giftmessage')->__('Cancel'); ?></span></button>
41
+ <button type="button" class="scalable" id="gift_options_ok_button"><span><?php echo Mage::helper('giftmessage')->__('OK'); ?></span></button>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <div id="giftoptions_tooltip_window" class="gift-options-tooltip" style="display:none;">
47
+ <div id="giftoptions_tooltip_window_content">&nbsp;</div>
48
+ </div>
49
+
50
+ <script type="text/javascript">
51
+ //<![CDATA[
52
+ _giftOptions = new GiftOptionsPopup();
53
+ giftOptionsTooltip.setTooltipWindow('giftoptions_tooltip_window','giftoptions_tooltip_window_content');
54
+ //]]>
55
+ </script>
56
+ <?php endif;?>
app/design/adminhtml/default/default/template/giftmessage/sales/order/create/giftoptions.phtml ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php $_item = $this->getItem() ?>
29
+ <?php if ($_item): ?>
30
+ <?php $_childHtml = trim($this->getChildHtml('', false));?>
31
+ <?php if ($_childHtml): ?>
32
+ <tr class="border">
33
+ <td class="first">
34
+ <div>
35
+ <strong><a class="action-link" href="#" id="gift_options_link_<?php echo $_item->getId() ?>"><?php echo Mage::helper('sales')->__('Gift Options') ?></a></strong><br/>
36
+ </div>
37
+ <script type="text/javascript">
38
+ giftOptionsTooltip.addTargetLink('gift_options_link_<?php echo $_item->getId() ?>', <?php echo $_item->getId() ?>);
39
+ </script>
40
+ <div id="gift_options_data_<?php echo $_item->getId() ?>">
41
+ <?php echo $_childHtml ?>
42
+ </div>
43
+ </td>
44
+ <td></td>
45
+ <td></td>
46
+ <td></td>
47
+ <td></td>
48
+ <td></td>
49
+ <td></td>
50
+ <td class="last"></td>
51
+ </tr>
52
+ <?php endif ?>
53
+ <?php endif ?>
app/design/adminhtml/default/default/template/giftmessage/sales/order/create/items.phtml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($this->canDisplayGiftMessage()): ?>
29
+ <div class="no-display">
30
+ <div id="gift-message-form-data-<?php echo $this->getItem()->getId(); ?>">
31
+ <?php echo $this->getFormHtml();?>
32
+ </div>
33
+
34
+ <?php if ($this->getMessageText()): ?>
35
+ <div class="gift-options-tooltip-content">
36
+ <div><strong><?php echo $this->helper('giftmessage')->__('Gift Message')?></strong>:</div>
37
+ <div><?php echo $this->getMessageText(); ?></div>
38
+ </div>
39
+ <?php endif; ?>
40
+ </div>
41
+ <?php endif; ?>
app/design/adminhtml/default/default/template/giftmessage/sales/order/view/giftoptions.phtml ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php $_childHtml = trim($this->getChildHtml('', false)); ?>
29
+ <?php if ($_childHtml): ?>
30
+ <?php $_item = $this->getItem() ?>
31
+ <tr class="border">
32
+ <td>
33
+ <div class="action-link-holder">
34
+ <strong><a class="action-link" href="#" id="gift_options_link_<?php echo $_item->getId() ?>"><?php echo Mage::helper('sales')->__('Gift Options') ?></a></strong>
35
+ </div>
36
+ <script type="text/javascript">
37
+ giftOptionsTooltip.addTargetLink('gift_options_link_<?php echo $_item->getId() ?>', <?php echo $_item->getId() ?>);
38
+ </script>
39
+ <div id="gift_options_data_<?php echo $_item->getId() ?>">
40
+ <?php echo $_childHtml ?>
41
+ </div>
42
+ </td>
43
+ <td></td>
44
+ <td></td>
45
+ <td></td>
46
+ <td></td>
47
+ <td></td>
48
+ <td></td>
49
+ <td></td>
50
+ <td></td>
51
+ <td class="last"></td>
52
+ </tr>
53
+ <?php endif ?>
app/design/adminhtml/default/default/template/giftmessage/sales/order/view/items.phtml ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($this->canDisplayGiftmessage()): ?>
29
+ <div id="gift-message-form-data-<?php echo $this->getItem()->getId(); ?>" class="no-display">
30
+ <form id="<?php echo $this->getFieldId('form') ?>" action="<?php echo $this->getSaveUrl() ?>">
31
+ <input type="hidden" id="<?php echo $this->getFieldId('type') ?>" name="<?php echo $this->getFieldName('type') ?>" value="order_item" />
32
+ <input type="hidden" id="<?php echo $this->getFieldId('sender') ?>" name="<?php echo $this->getFieldName('sender') ?>" value="<?php echo $this->getSender() ?>" />
33
+ <input type="hidden" id="<?php echo $this->getFieldId('recipient') ?>" name="<?php echo $this->getFieldName('recipient') ?>" value="<?php echo $this->getRecipient() ?>" />
34
+ <input type="hidden" id="<?php echo $this->getFieldId('message') ?>" name="<?php echo $this->getFieldName('message') ?>" value="<?php echo $this->getMessageText() ?>" />
35
+ </form>
36
+
37
+ <?php if ($this->getMessageText()): ?>
38
+ <div class="gift-options-tooltip-content">
39
+ <div><strong><?php echo $this->helper('giftmessage')->__('Gift Message')?></strong>: </div>
40
+ <div><?php echo $this->getMessageText() ?></div>
41
+ </div>
42
+ <?php endif; ?>
43
+ </div>
44
+ <?php endif; ?>
app/design/adminhtml/default/default/template/googlebase/captcha.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php if( $this->getGbaseCaptchaToken() && $this->getGbaseCaptchaUrl()): ?>
28
+ <ul class="messages">
29
+ <li class="error-msg">
30
+ <ul>
31
+ <li><img src="<?php echo $this->getGbaseCaptchaUrl() ?>"> <input type="text" id="user_confirm"> <?php echo $this->getConfirmButtonHtml() ?></li>
32
+ </ul>
33
+ </li>
34
+ </ul>
35
+ <?php endif; ?>
app/design/adminhtml/default/default/template/googlebase/items.phtml ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php echo $this->getCaptchaHtml() ?>
29
+
30
+ <?php echo $this->getStoreSwitcherHtml() ?>
31
+
32
+ <div class="entry-edit">
33
+ <div class="entry-edit-head">
34
+ <div style="float: right;"></div>
35
+ <h4 class="fieldset-legend"><?php echo $this->__('Google Base Items') ?></h4>
36
+ </div>
37
+ <?php echo $this->getChildHtml('item') ?>
38
+ </div>
39
+ <div class="entry-edit">
40
+ <div class="entry-edit-head">
41
+ <div style="float: right;"><?php echo $this->getAddButtonHtml() ?></div>
42
+ <h4 class="fieldset-legend"><?php echo $this->__('Available Products') ?></h4>
43
+ </div>
44
+ <?php echo $this->getChildHtml('product') ?>
45
+ </div>
46
+
47
+
48
+ <script type="text/javascript">
49
+ var productsGridElement = $('<?php echo $this->getChild('product')->getId() ?>');
50
+ productsGridElement.hide();
51
+ $('products_grid_button').observe('click', function (event) {
52
+ var element = event.element();
53
+ productsGridElement.visible() ? productsGridElement.hide() : productsGridElement.show();
54
+ });
55
+ </script>
app/design/adminhtml/default/default/template/googlebase/types/edit/attributes.phtml ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if( $this->getAttributeSetSelected() ): ?>
29
+ <script type="text/javascript">
30
+ Gbase = {};
31
+ Gbase.Attribute = Class.create();
32
+ Gbase.Attribute.prototype = {
33
+ idLabel : '<?php echo $this->getFieldId() ?>',
34
+ top : '',
35
+ templateSyntax : /(^|.|\r|\n)({{(\w+)}})/,
36
+ templateText : '',
37
+ itemsCount : 0,
38
+ initialize : function(template) {
39
+ this.templateText = template;
40
+ this.top = $('gbase_attribute_top');
41
+ },
42
+
43
+ add : function(data) {
44
+ if(!data){
45
+ data = {};
46
+ }
47
+ this.top = $('gbase_attribute_top');
48
+
49
+ data.index = this.itemsCount++;
50
+ this.template = new Template(this.templateText, this.templateSyntax);
51
+ Element.insert(this.top, {'after':this.template.evaluate(data)});
52
+ this.top = $(this.idLabel + '_' + data.index);
53
+
54
+ //set selected type
55
+ if (data.attribute_id) {
56
+ $A($(this.idLabel + '_'+data.index+'_attribute').options).each(function(option){
57
+ if (option.value==data.attribute_id) option.selected = true;
58
+ });
59
+ }
60
+
61
+ //set selected is_require
62
+ if (data.gbase_attribute) {
63
+ $A($(this.idLabel + '_'+data.index+'_gattribute').options).each(function(option){
64
+ if (option.value==data.gbase_attribute) option.selected = true;
65
+ });
66
+ }
67
+ return data.index;
68
+ },
69
+
70
+ remove : function(event){
71
+ var element = $(Event.findElement(event, 'div'));
72
+ if(element){
73
+ Element.select(element, '.delete').each(function(elem){elem.value='1'});
74
+ Element.select(element, ['input', 'select']).each(function(elem){elem.hide(); elem.className = '';});
75
+ Element.hide(element);
76
+ }
77
+ }
78
+ }
79
+
80
+ var attributesSelectTemplate = '<div id="<?php echo $this->getFieldId() ?>_{{index}}" class="option-box"> ' +
81
+ '<table class="option-header" cellpadding="0" cellspacing="0">' +
82
+ '<thead>' +
83
+ '<tr>' +
84
+ '<th class="opt-type"><?php echo Mage::helper('googlebase')->__('Attribute') ?></th>' +
85
+ '<th class="opt-req"><?php echo Mage::helper('googlebase')->__('Google Base Attribute') ?></th>' +
86
+ '<th>&nbsp;</th>' +
87
+ '</tr>' +
88
+ '</thead>' +
89
+ '<tbody>' +
90
+ '<tr>' +
91
+ '<td><?php echo $this->getAttributesSelectHtml(true) ?>' +
92
+ '<input type="hidden" name="<?php echo $this->getFieldName() ?>[{{index}}][delete]" value="" class="delete">' +
93
+ '</td>' +
94
+ '<td><?php echo $this->getGbaseAttributesSelectHtml() ?></td>' +
95
+ '<td>&nbsp;<?php echo $this->getDeleteButtonHtml() ?></td>' +
96
+ '</tr>' +
97
+ '</tbody>' +
98
+ '</table>' +
99
+ '</div>';
100
+ var optionIndex = 0;
101
+ gBaseAttribute = new Gbase.Attribute(attributesSelectTemplate);
102
+ </script>
103
+
104
+ <div class="entry-edit custom-options bundle" id="gbase_attributes_container">
105
+ <div class="entry-edit-head">
106
+ <h4><?php echo $this->__('Attributes') ?></h4>
107
+ <div class="right"><?php echo $this->getAddButtonHtml() ?></div>
108
+ </div>
109
+
110
+ <div id="gbase_attribute" class="box">
111
+ <div id="gbase_attribute_top"></div>
112
+ </div>
113
+ </div>
114
+
115
+ <?php if($attributes = $this->getAttributesData()): ?>
116
+ <script type="text/javascript">
117
+ <?php foreach ($attributes as $data): ?>
118
+ gBaseAttribute.add(<?php echo $this->_toJson($data) ?>);
119
+ <?php endforeach; ?>
120
+ </script>
121
+ <?php endif; ?>
122
+
123
+ <?php else: ?>
124
+ <?php echo Mage::helper('googlebase')->__("Please, select Attribute Set and Google Item Type to load attributes") ?>
125
+ <?php endif; ?>
app/design/adminhtml/default/default/template/importexport/busy.phtml ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <h3><?php echo $this->__('System busy'); ?></h3>
29
+ </div>
30
+ <div class="entry-edit">
31
+ <div class="entry-edit-head">
32
+ <h4><?php echo $this->__('Status'); ?></h4>
33
+ </div>
34
+ <div class="fieldset ">
35
+ <ul class="messages">
36
+ <li class="success-msg">
37
+ <ul>
38
+ <li><?php echo $this->getStatusMessage(); ?></li>
39
+ </ul>
40
+ </li>
41
+ </ul>
42
+ </div>
43
+ </div>
app/design/adminhtml/default/default/template/importexport/export/form/after.phtml ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit" id="export_filter_container" style="display:none;">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend"><?php echo $this->__('Entity Attributes'); ?></h4>
30
+ </div>
31
+ <form id="export_filter_form" action="<?php echo $this->getUrl('*/*/export') ?>" method="post">
32
+ <input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />
33
+ <div id="export_filter_grid_container" class="fieldset"><!-- --></div>
34
+ </form>
35
+ <div class="a-right">
36
+ <button class="scalable" type="button" onclick="getFile();"><span><?php echo $this->__('Continue') ?></span></button>
37
+ </div>
38
+ </div>
39
+ <script type="text/javascript">
40
+ //<![CDATA[
41
+ $('entity').selectedIndex = 0; // forced resetting entity selector after page refresh
42
+ //]]>
43
+ </script>
app/design/adminhtml/default/default/template/importexport/export/form/before.phtml ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+ /**
30
+ * Post form data and process response via AJAX.
31
+ *
32
+ * @return void
33
+ */
34
+ varienForm.prototype.getFilter = function()
35
+ {
36
+ if ($('entity') && $F('entity')) {
37
+ var url = "<?php echo $this->getUrl('*/*/getFilter') ?>";
38
+ url += ((url.slice(-1) != '/') ? '/' : '') + 'entity/' + $F('entity');
39
+
40
+ new Ajax.Updater ('export_filter_grid_container', url, {
41
+ method: 'post',
42
+ //parameters: $(this.formId).serialize(),
43
+ evalScripts: true,
44
+ onComplete: function(){
45
+ $('export_filter_container').show();
46
+ }
47
+ });
48
+ } else {
49
+ $('export_filter_container').hide();
50
+ }
51
+ };
52
+
53
+ /**
54
+ * Continue export process after filter settings.
55
+ *
56
+ * return void
57
+ */
58
+ function getFile()
59
+ {
60
+ if ($('entity') && $('file_format')) {
61
+ var form = $('export_filter_form');
62
+ var oldAction = form.action;
63
+ form.action = oldAction + ((oldAction.slice(-1) != '/') ? '/' : '') + 'entity/' + $F('entity') + '/file_format/' + $F('file_format');
64
+ form.submit();
65
+ form.action = oldAction;
66
+ } else {
67
+ alert('Invalid data');
68
+ }
69
+ }
70
+ //]]>
71
+ </script>
app/design/adminhtml/default/default/template/importexport/import/form/after.phtml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="entry-edit" id="import_validation_container" style="display:none;">
28
+ <div class="entry-edit-head">
29
+ <h4 class="icon-head head-edit-form fieldset-legend" id="import_validation_container_header"><?php echo $this->__('Validation Results'); ?></h4>
30
+ </div>
31
+ <div id="import_validation_messages" class="fieldset "><!-- --></div>
32
+ </div>
app/design/adminhtml/default/default/template/importexport/import/form/before.phtml ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type="text/javascript">
28
+ //<![CDATA[
29
+ /**
30
+ * Name and ID for iframe for data POST-ing.
31
+ *
32
+ * @var string
33
+ */
34
+ varienForm.prototype.ifrElemName = 'import_post_target_frame';
35
+
36
+ /**
37
+ * Post form data to dynamic iframe.
38
+ *
39
+ * @param string newActionUrl OPTIONAL Change form action to this if specified
40
+ * @return void
41
+ */
42
+ varienForm.prototype.postToFrame = function(newActionUrl)
43
+ {
44
+ if(this.validate()){
45
+ // create dynamic frame
46
+ if (!$(this.ifrElemName)) {
47
+ $('html-body').insert({
48
+ bottom:'<iframe name="' + this.ifrElemName + '" id="' + this.ifrElemName + '" style="display:none;"/>'
49
+ });
50
+ }
51
+
52
+ // show mask, temporary set new target and submit form
53
+ var loadingMask = $('loading-mask');
54
+ var formElem = $(this.formId);
55
+ var oldTarget = formElem.target;
56
+ var oldAction = formElem.action;
57
+
58
+ Element.clonePosition(loadingMask, $$('#html-body .wrapper')[0], {offsetLeft:-2})
59
+ toggleSelectsUnderBlock(loadingMask, false);
60
+ loadingMask.show();
61
+ setLoaderPosition();
62
+ formElem.target = this.ifrElemName;
63
+
64
+ if (newActionUrl) {
65
+ formElem.action = newActionUrl;
66
+ }
67
+ formElem.action += (formElem.action.lastIndexOf('?') != -1 ? '&' : '?')
68
+ + 'form_key=' + encodeURIComponent(formElem.form_key.value);
69
+ this._submit();
70
+ formElem.target = oldTarget;
71
+ formElem.action = oldAction;
72
+ }
73
+ };
74
+
75
+ /**
76
+ * Actions after data post complete. Hide load mask, remove iframe, run response processing method.
77
+ *
78
+ * @param object response
79
+ * @return void
80
+ */
81
+ varienForm.prototype.postToFrameComplete = function(response)
82
+ {
83
+ var loadingMask = $('loading-mask');
84
+ $(this.ifrElemName).remove();
85
+ toggleSelectsUnderBlock(loadingMask, true);
86
+ loadingMask.hide();
87
+ this.postToFrameProcessResponse(response);
88
+ };
89
+
90
+ /**
91
+ * Process response JSON.
92
+ *
93
+ * @param object response
94
+ * @return void
95
+ */
96
+ varienForm.prototype.postToFrameProcessResponse = function(response)
97
+ {
98
+ if ('object' != typeof(response)) {
99
+ return alert('Invalid response');
100
+ }
101
+ $H(response).each(function(pair) {
102
+ switch (pair.key) {
103
+ case 'show':
104
+ case 'clear':
105
+ case 'hide':
106
+ $H(pair.value).each(function(val) {if ($(val.value)) $(val.value)[pair.key]();});
107
+ break;
108
+ case 'innerHTML':
109
+ case 'value':
110
+ $H(pair.value).each(function(val) {if ($(val.key)) $(val.key)[pair.key] = val.value;});
111
+ break;
112
+ case 'removeClassName':
113
+ case 'addClassName':
114
+ $H(pair.value).each(function(val) {if ($(val.key)) $(val.key)[pair.key](val.value);});
115
+ break;
116
+ default:
117
+ alert(pair.key + ': ' + pair.value);
118
+ break;
119
+ }
120
+ });
121
+ };
122
+
123
+ /**
124
+ * Send form data to Start action when file is validated.
125
+ *
126
+ * @param string newActionUrl
127
+ * @param string sourceFileField
128
+ * @return void
129
+ */
130
+ varienForm.prototype.startImport = function(newActionUrl, sourceFileField)
131
+ {
132
+ $(sourceFileField).removeClassName('required-entry');
133
+ this.postToFrame(newActionUrl);
134
+ $(sourceFileField).addClassName('required-entry');
135
+ };
136
+ //]]>
137
+ </script>
app/design/adminhtml/default/default/template/importexport/import/frame/result.phtml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <script type='text/javascript'>
28
+ //<![CDATA[
29
+ top.editForm.postToFrameComplete(<?php echo $this->getResponseJson() ?>);
30
+ //]]>
31
+ </script>
app/design/adminhtml/default/default/template/index/notifications.phtml ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php $_processes = $this->getProcessesForReindex()?>
28
+ <?php if($_processes):?>
29
+ <div class="notification-global">
30
+ <strong><?php echo $this->helper('index')->__('One or more of the Indexes are not up to date:') ?></strong>
31
+ <?php echo implode(', ', $_processes)?>.
32
+ <?php echo $this->helper('index')->__('Click here to go to <a href="%s">Index Management</a> and rebuild required indexes.', $this->getManageUrl());?>
33
+ </div>
34
+ <?php endif;?>
app/design/adminhtml/default/default/template/login.phtml ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
28
+ <html lang="en">
29
+ <head>
30
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
31
+ <title><?php echo Mage::helper('adminhtml')->__('Log into Magento Admin Page') ?></title>
32
+ <link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('reset.css') ?>" media="all" />
33
+ <link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('boxes.css') ?>" media="all" />
34
+ <link rel="icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
35
+ <link rel="shortcut icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
36
+
37
+ <script type="text/javascript" src="<?php echo $this->getJsUrl('prototype/prototype.js') ?>"></script>
38
+ <script type="text/javascript" src="<?php echo $this->getJsUrl('prototype/validation.js') ?>"></script>
39
+ <script type="text/javascript" src="<?php echo $this->getJsUrl('scriptaculous/effects.js') ?>"></script>
40
+ <script type="text/javascript" src="<?php echo $this->getJsUrl('mage/adminhtml/form.js') ?>"></script>
41
+
42
+ <!--[if IE]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('iestyles.css') ?>" type="text/css" media="all" /> <![endif]-->
43
+ <!--[if lt IE 7]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('below_ie7.css') ?>" type="text/css" media="all" /> <![endif]-->
44
+ <!--[if IE 7]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('ie7.css') ?>" type="text/css" media="all" /> <![endif]-->
45
+ </head>
46
+ <body id="page-login" onload="document.forms.loginForm.username.focus();">
47
+ <div class="login-container">
48
+ <div class="login-box">
49
+ <form method="post" action="" id="loginForm">
50
+ <div class="login-form">
51
+ <input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />
52
+ <h2><?php echo Mage::helper('adminhtml')->__('Log in to Admin Panel') ?></h2>
53
+ <div id="messages">
54
+ <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
55
+ </div>
56
+ <div class="input-box input-left"><label for="username"><?php echo Mage::helper('adminhtml')->__('User Name:') ?></label><br/>
57
+ <input type="text" id="username" name="login[username]" value="" class="required-entry input-text" /></div>
58
+ <div class="input-box input-right"><label for="login"><?php echo Mage::helper('adminhtml')->__('Password:') ?></label><br />
59
+ <input type="password" id="login" name="login[password]" class="required-entry input-text" value="" /></div>
60
+ <div class="clear"></div>
61
+ <div class="form-buttons">
62
+ <a class="left" href="<?php echo Mage::helper('adminhtml')->getUrl('adminhtml/index/forgotpassword', array('_nosecret' => true)) ?>"><?php echo Mage::helper('adminhtml')->__('Forgot your password?') ?></a>
63
+ <input type="submit" class="form-button" value="<?php echo Mage::helper('adminhtml')->__('Login') ?>" title="<?php echo Mage::helper('adminhtml')->__('Login') ?>" /></div>
64
+ </div>
65
+ <p class="legal"><?php echo Mage::helper('adminhtml')->__('Magento is a trademark of Magento Inc. Copyright &copy; %s Magento Inc.', date('Y')) ?></p>
66
+ </form>
67
+ <div class="bottom"></div>
68
+ <script type="text/javascript">
69
+ var loginForm = new varienForm('loginForm');
70
+ </script>
71
+ </div>
72
+ </div>
73
+ </body>
74
+ </html>
75
+
app/design/adminhtml/default/default/template/media/editor.phtml ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php echo $this->helper('adminhtml/media_js')->includeScript('lib/flex.js') ?>
28
+ <?php echo $this->helper('adminhtml/media_js')->includeScript('lib/FABridge.js') ?>
29
+ <?php echo $this->helper('adminhtml/media_js')->includeScript('mage/adminhtml/image.js') ?>
30
+ <?php echo $this->helper('adminhtml/media_js')->getTranslatorScript() ?>
31
+ <div id="<?php echo $this->getHtmlId() ?>" class="editor" style="width:100%; height:100%;">
32
+ <div class="buttons" style="margin-bottom: 20px;">
33
+ <?php echo $this->getRotatecwButtonHtml() ?>
34
+ <?php echo $this->getRotateccwButtonHtml() ?>
35
+ <input type="text" id="<?php echo $this->_getButtonId('width') ?>" size="7"/>
36
+ x
37
+ <input type="text" id="<?php echo $this->_getButtonId('height') ?>" size="7"/> px
38
+ <?php echo $this->getResizeButtonHtml() ?>
39
+ <?php echo $this->getImageButtonHtml() ?>
40
+ </div>
41
+
42
+
43
+ </div>
44
+ <textarea id="<?php echo $this->_getButtonId('b64') ?>" rows="10" cols="50"></textarea>
45
+ <script type="text/javascript">
46
+ <?php echo $this->getJsObjectName() ?> = new Flex.ImageEditor('<?php echo $this->getHtmlId() ?>', '<?php echo $this->getSkinUrl('media/editor.swf') ?>', <?php echo $this->getConfigJson() ?>);
47
+ </script>
app/design/adminhtml/default/default/template/media/uploader.phtml ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * @see Mage_Adminhtml_Block_Media_Uploader
30
+ */
31
+ ?>
32
+
33
+ <?php echo $this->helper('adminhtml/media_js')->includeScript('lib/flex.js') ?>
34
+ <?php echo $this->helper('adminhtml/media_js')->includeScript('mage/adminhtml/flexuploader.js') ?>
35
+ <?php echo $this->helper('adminhtml/media_js')->includeScript('lib/FABridge.js') ?>
36
+ <?php echo $this->helper('adminhtml/media_js')->getTranslatorScript() ?>
37
+
38
+
39
+ <div id="<?php echo $this->getHtmlId() ?>" class="uploader">
40
+ <div class="buttons">
41
+ <?php /* buttons included in flex object */ ?>
42
+ <?php /*echo $this->getBrowseButtonHtml()*/ ?>
43
+ <?php /*echo $this->getUploadButtonHtml()*/ ?>
44
+ <div id="<?php echo $this->getHtmlId() ?>-install-flash" style="display:none">
45
+ <?php echo Mage::helper('media')->__('This content requires last version of Adobe Flash Player. <a href="%s">Get Flash</a>', 'http://www.adobe.com/go/getflash/') ?>
46
+ </div>
47
+ </div>
48
+ <div class="clear"></div>
49
+ <div class="no-display" id="<?php echo $this->getHtmlId() ?>-template">
50
+ <div id="{{id}}" class="file-row">
51
+ <span class="file-info">{{name}} ({{size}})</span>
52
+ <span class="delete-button"><?php echo $this->getDeleteButtonHtml() ?></span>
53
+ <span class="progress-text"></span>
54
+ <div class="clear"></div>
55
+ </div>
56
+ </div>
57
+ <div class="no-display" id="<?php echo $this->getHtmlId() ?>-template-progress">
58
+ {{percent}}% {{uploaded}} / {{total}}
59
+ </div>
60
+ </div>
61
+
62
+ <script type="text/javascript">
63
+ //<![CDATA[
64
+
65
+ var maxUploadFileSizeInBytes = <?php echo $this->getDataMaxSizeInBytes() ?>;
66
+ var maxUploadFileSize = '<?php echo $this->getDataMaxSize() ?>';
67
+
68
+ <?php echo $this->getJsObjectName() ?> = new Flex.Uploader('<?php echo $this->getHtmlId() ?>', '<?php echo $this->getUploaderUrl('media/uploader.swf') ?>', <?php echo $this->getConfigJson() ?>);
69
+
70
+ if (varienGlobalEvents) {
71
+ varienGlobalEvents.attachEventHandler('tabChangeBefore', <?php echo $this->getJsObjectName() ?>.onContainerHideBefore);
72
+ }
73
+
74
+ //]]>
75
+ </script>
app/design/adminhtml/default/default/template/newsletter/preview/iframeswitcher.phtml ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /* @var $this Mage_Core_Block_Template */
29
+ ?>
30
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
31
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->getLang() ?>" lang="<?php echo $this->getLang() ?>">
32
+ <head>
33
+ <?php echo $this->getChildHtml('head') ?>
34
+ <style type="text/css">
35
+ html,body { height:100%; }
36
+ </style>
37
+ </head>
38
+ <body id="html-body" style="background:#fff;">
39
+ <div id="preview" class="cms-revision-preview">
40
+ <div class="toolbar">
41
+ <?php if (!Mage::app()->isSingleStoreMode()) :?>
42
+ <p class="switcher">
43
+ <?php echo $this->getChildHtml('store_switcher') ?>
44
+ <button class="button" onclick="preview();"><span><?php echo $this->__('Preview'); ?></span></button>
45
+ </p>
46
+ <?php endif;?>
47
+ </div>
48
+ <iframe name="preview_iframe" id="preview_iframe" frameborder="0"></iframe>
49
+ <?php echo $this->getChildHtml('preview_form'); ?>
50
+ </div>
51
+ <div id="loading-mask" style="display:none">
52
+ <p class="loader" id="loading_mask_loader"><img src="<?php echo $this->getSkinUrl('images/ajax-loader-tr.gif') ?>" alt="<?php echo Mage::helper('adminhtml')->__('Loading...') ?>"/><br/><?php echo Mage::helper('adminhtml')->__('Please wait...') ?></p>
53
+ </div>
54
+
55
+ <script type="text/javascript">
56
+ //<![CDATA[
57
+ var previewForm = $('preview_form');
58
+ var loadingMask = $('loading-mask');
59
+ var previewIframe = $('preview_iframe');
60
+
61
+ function preview() {
62
+ previewForm.writeAttribute('target', previewIframe.readAttribute('id'));
63
+ blockPreview();
64
+ previewForm.submit();
65
+ }
66
+
67
+ function blockPreview() {
68
+ var cumulativeOffset = $('preview').cumulativeOffset();
69
+ $('loading-mask').setStyle({
70
+ top: ( cumulativeOffset.top ) + 'px',
71
+ left: ( cumulativeOffset.left ) + 'px',
72
+ width: $('preview').getWidth() + 'px',
73
+ height: $('preview').getHeight() + 'px'
74
+ });
75
+
76
+ toggleSelectsUnderBlock($('loading-mask'), false);
77
+ Element.show('loading-mask');
78
+ setLoaderPosition();
79
+ }
80
+
81
+ function unBlockPreview() {
82
+ toggleSelectsUnderBlock(loadingMask, true);
83
+ Element.hide(loadingMask);
84
+ }
85
+
86
+ Event.observe(window, 'load', preview);
87
+ Event.observe(previewIframe, 'load', unBlockPreview);
88
+ //]]>
89
+ </script>
90
+ </body>
91
+ </html>
app/design/adminhtml/default/default/template/newsletter/preview/store.phtml ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+
28
+ <?php if ($websites = $this->getWebsites()): ?>
29
+ <label for="store_switcher"><?php echo $this->__('Choose Store View') ?>:</label>
30
+ <select name="store_switcher" id="store_switcher">
31
+ <?php foreach ($websites as $website): ?>
32
+ <?php $showWebsite=false; ?>
33
+ <?php foreach ($website->getGroups() as $group): ?>
34
+ <?php $showGroup=false; ?>
35
+ <?php foreach ($this->getStores($group) as $store): ?>
36
+ <?php if ($showWebsite == false): ?>
37
+ <?php $showWebsite = true; ?>
38
+ <optgroup label="<?php echo $website->getName() ?>"></optgroup>
39
+ <?php endif; ?>
40
+ <?php if ($showGroup == false): ?>
41
+ <?php $showGroup = true; ?>
42
+ <optgroup label="&nbsp;&nbsp;&nbsp;<?php echo $group->getName() ?>">
43
+ <?php endif; ?>
44
+ <option value="<?php echo $store->getId() ?>"<?php if($this->getStoreId() == $store->getId()): ?> selected="selected"<?php endif; ?>>&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $store->getName() ?></option>
45
+ <?php endforeach; ?>
46
+ <?php if ($showGroup): ?>
47
+ </optgroup>
48
+ <?php endif; ?>
49
+ <?php endforeach; ?>
50
+ <?php endforeach; ?>
51
+ </select>
52
+ <script type="text/javascript">
53
+ //<![CDATA[
54
+ Event.observe($('store_switcher'), 'change', function(event) {
55
+ var element = Event.element(event);
56
+ $('preview_store_id').value = element.value;
57
+ });
58
+ //]]>
59
+ </script>
60
+ <?php endif; ?>
app/design/adminhtml/default/default/template/newsletter/problem/list.phtml ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-newsletter-report"><?php echo Mage::helper('newsletter')->__('Newsletter Problem Reports') ?></h3></td>
31
+ <td class="form-buttons">
32
+
33
+ </td>
34
+ </tr>
35
+ </table>
36
+ </div>
37
+ <div>
38
+ <?php echo $this->getChildHtml('grid') ?>
39
+ </div>
40
+ <?php if($this->getShowButtons()): ?>
41
+ <div class="form-buttons">
42
+ <?php echo $this->getUnsubscribeButtonHtml(); ?>
43
+ <?php echo $this->getDeleteButtonHtml(); ?>
44
+ </div>
45
+ <?php endif ?>
46
+ <script type="text/javascript">
47
+ <!--
48
+ var problemController = {
49
+ checkCheckboxes: function(controlCheckbox) {
50
+ var elements = $('problemGrid').getElementsByClassName('problemCheckbox');
51
+ elements.each(function(obj){
52
+ obj.checked = controlCheckbox.checked;
53
+ });
54
+ },
55
+ rowClick: function (e) {
56
+ if(!Event.element(e).hasClassName('problemCheckbox')) {
57
+ var elements = Event.findElement(e, 'tr').getElementsByClassName('problemCheckbox');
58
+ if(elements.length != 1) {
59
+ return;
60
+ }
61
+ elements[0].checked = !elements[0].checked;
62
+ }
63
+ },
64
+
65
+ unsubscribe: function () {
66
+ var elements = $('problemGrid').getElementsByClassName('problemCheckbox');
67
+ var serializedElements = Form.serializeElements(elements, true);
68
+ serializedElements._unsubscribe = '1';
69
+ serializedElements.form_key = FORM_KEY;
70
+ var url = problemGridJsObject.url;
71
+
72
+ new Ajax.Updater('problemGrid', url + '?ajax=1',
73
+ {parameters: serializedElements,
74
+ evalScripts: true,
75
+ onComplete:problemGridJsObject.initGrid.bind(problemGridJsObject)});
76
+ },
77
+
78
+ deleteSelected: function () {
79
+ var elements = $('problemGrid').getElementsByClassName('problemCheckbox');
80
+ var serializedElements = Form.serializeElements(elements, true);
81
+ serializedElements._delete = '1';
82
+ serializedElements.form_key = FORM_KEY;
83
+ var url = problemGridJsObject.url;
84
+
85
+ new Ajax.Updater('problemGrid', url + '?ajax=1',
86
+ {parameters: serializedElements,
87
+ evalScripts: true,
88
+ onComplete:problemGridJsObject.initGrid.bind(problemGridJsObject)});
89
+ }
90
+ }
91
+
92
+ varienGlobalEvents.attachEventHandler('gridRowClick', problemController.rowClick.bind(problemController));
93
+ //-->
94
+ </script>
app/design/adminhtml/default/default/template/newsletter/queue/edit.phtml ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ /* @var $this Mage_Adminhtml_Block_Newsletter_Queue_Edit */
27
+ ?>
28
+ <div class="content-header">
29
+ <table cellspacing="0">
30
+ <tr>
31
+ <td><h3><?php echo $this->getHeaderText() ?></h3></td>
32
+ <td class="form-buttons">
33
+ <?php echo $this->getBackButtonHtml() ?>
34
+ <?php echo $this->getPreviewButtonHtml(); ?>
35
+ <?php if(!$this->getIsPreview()): ?>
36
+ <?php echo $this->getResetButtonHtml() ?>
37
+ <?php echo $this->getSaveButtonHtml() ?>
38
+ <?php endif ?>
39
+ <?php if($this->getCanResume()): ?>
40
+ <?php echo $this->getResumeButtonHtml() ?>
41
+ <?php endif ?>
42
+ </td>
43
+ </tr>
44
+ </table>
45
+ </div>
46
+ <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="queue_edit_form">
47
+ <?php echo $this->getBlockHtml('formkey')?>
48
+ <div class="no-display">
49
+ <input type="hidden" name="_resume" id="_resume_flag" value="" />
50
+ </div>
51
+ <?php echo $this->getChildHtml('form') ?>
52
+ </form>
53
+ <form action="<?php echo $this->getPreviewUrl() ?>" method="post" id="newsletter_queue_preview_form" target="_blank">
54
+ <?php echo $this->getBlockHtml('formkey')?>
55
+ <div class="no-display">
56
+ <input type="hidden" id="preview_type" name="type" value="<?php echo $this->getIsTextType()?1:2 ?>" />
57
+ <input type="hidden" id="preview_text" name="text" value="" />
58
+ <input type="hidden" id="preview_styles" name="styles" value="" />
59
+ <input type="hidden" id="preview_id" name="id" value="" />
60
+ </div>
61
+ </form>
62
+ <script type="text/javascript">
63
+ //<![CDATA[
64
+ var queueForm = new varienForm('queue_edit_form');
65
+ var newsletterPreviewForm = new varienForm('newsletter_queue_preview_form');
66
+
67
+ var queueControl = {
68
+ id: 'text',
69
+ save: function() {
70
+ $('_resume_flag').value = '';
71
+ queueForm.submit();
72
+ },
73
+ preview: function() {
74
+ if (this.isEditor() && tinyMCE.get(this.id)) {
75
+ tinyMCE.triggerSave();
76
+ $('preview_text').value = $(this.id).value;
77
+ tinyMCE.triggerSave();
78
+ } else {
79
+ $('preview_text').value = $(this.id).value;
80
+ }
81
+ if ($('styles') != undefined) {
82
+ $('preview_styles').value = $('styles').value;
83
+ }
84
+ if ($('id') != undefined) {
85
+ $('preview_id').value = $('id').value;
86
+ }
87
+ newsletterPreviewForm.submit();
88
+ return false;
89
+ },
90
+ isEditor: function() {
91
+ return (typeof tinyMceEditors != 'undefined' && tinyMceEditors.get(this.id) != undefined)
92
+ },
93
+ resume: function() {
94
+ $('_resume_flag').value = '1';
95
+ queueForm.submit();
96
+ }
97
+ };
98
+ //]]>
99
+ </script>
app/design/adminhtml/default/default/template/newsletter/queue/list.phtml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-newsletter-queue"><?php echo Mage::helper('newsletter')->__('Newsletter Queue') ?></h3></td>
31
+ <td class="form-buttons">
32
+
33
+ </td>
34
+ </tr>
35
+ </table>
36
+ </div>
37
+ <div>
38
+ <?php echo $this->getChildHtml('grid') ?>
39
+ </div>
app/design/adminhtml/default/default/template/newsletter/queue/preview.phtml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
28
+ <html lang="en">
29
+ <head>
30
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
31
+ <title><?php echo Mage::helper('newsletter')->__('Newsletter Message Preview'); ?></title>
32
+ </head>
33
+ <body>
34
+ <?php echo $this->getChildHtml('content') ?>
35
+ <?php echo $this->getChildHtml('profiler') ?>
36
+ </body>
37
+ </html>
app/design/adminhtml/default/default/template/newsletter/subscriber/list.phtml ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3><?php echo Mage::helper('newsletter')->__('Newsletter Subscribers') ?></h3></td>
31
+ </tr>
32
+ </table>
33
+ </div>
34
+ <div>
35
+ <?php echo $this->getChildHtml('grid') ?>
36
+ </div>
37
+ <?php if(count($this->getQueueAsOptions())>0 && $this->getShowQueueAdd()): ?>
38
+ <div class="form-buttons">
39
+ <select id="queueList" name="queue">
40
+ <?php foreach ($this->getQueueAsOptions() as $_queue): ?>
41
+ <option value="<?php echo $_queue['value'] ?>"><?php echo $_queue['label'] ?> #<?php echo $_queue['value'] ?></option>
42
+ <?php endforeach; ?>
43
+ </select>
44
+ <button class="scalable" onclick="subscriberController.addToQueue();"><span><?php echo Mage::helper('newsletter')->__('Add to Queue'); ?></span></button>
45
+ </div>
46
+ <?php endif ?>
47
+ <script type="text/javascript">
48
+ <!--
49
+ var subscriberController = {
50
+ checkCheckboxes: function(controlCheckbox) {
51
+ var elements = $('subscriberGrid').getElementsByClassName('subscriberCheckbox');
52
+ elements.each(function(obj){
53
+ obj.checked = controlCheckbox.checked;
54
+ });
55
+ },
56
+ rowClick: function (e) {
57
+ if(!Event.element(e).hasClassName('subscriberCheckbox')) {
58
+ var elements = Event.findElement(e, 'tr').getElementsByClassName('subscriberCheckbox');
59
+ if(elements.length != 1) {
60
+ return;
61
+ }
62
+ elements[0].checked = !elements[0].checked;
63
+ }
64
+ },
65
+ addToQueue: function () {
66
+ var elements = $('subscriberGrid').getElementsByClassName('subscriberCheckbox');
67
+ elements.push($('queueList'));
68
+ var serializedElements = Form.serializeElements(elements, true);
69
+ serializedElements.add = 'subscribers';
70
+ serializedElements.form_key = FORM_KEY;
71
+ var url = subscriberGridJsObject.url;
72
+
73
+ new Ajax.Updater('subscriberGrid', url + '?ajax=1',
74
+ {parameters: serializedElements,
75
+ evalScripts: true,
76
+ onComplete:subscriberGridJsObject.initGrid.bind(subscriberGridJsObject)});
77
+ }
78
+ }
79
+
80
+ varienGlobalEvents.attachEventHandler('gridRowClick', subscriberController.rowClick.bind(subscriberController));
81
+ //-->
82
+ </script>
app/design/adminhtml/default/default/template/newsletter/template/edit.phtml ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ /* @var $this Mage_Adminhtml_Block_Newsletter_Template_Edit */
27
+ ?>
28
+ <div class="content-header">
29
+ <h3 class="icon-head head-newsletter-list"><?php echo $this->getHeaderText() ?></h3>
30
+ <p class="content-buttons form-buttons">
31
+ <?php echo $this->getBackButtonHtml(); ?>
32
+ <?php echo $this->getResetButtonHtml(); ?>
33
+ <?php if(!$this->isTextType()): ?>
34
+ <?php echo $this->getToPlainButtonHtml(); ?>
35
+ <?php echo $this->getToHtmlButtonHtml(); ?>
36
+ <?php endif ?>
37
+ <?php echo $this->getPreviewButtonHtml(); ?>
38
+ <?php if($this->getEditMode()): ?>
39
+ <?php echo $this->getDeleteButtonHtml(); ?>
40
+ <?php endif ?>
41
+ <?php if($this->getEditMode()): ?>
42
+ <?php echo $this->getSaveAsButtonHtml(); ?>
43
+ <?php endif ?>
44
+ <?php echo $this->getSaveButtonHtml(); ?>
45
+ </p>
46
+ </div>
47
+ <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="newsletter_template_edit_form">
48
+ <?php echo $this->getBlockHtml('formkey')?>
49
+ <div class="no-display">
50
+ <input type="hidden" id="change_flag_element" name="_change_type_flag" value="" />
51
+ <input type="hidden" id="save_as_flag" name="_save_as_flag" value="<?php echo $this->getSaveAsFlag() ?>" />
52
+ </div>
53
+ <?php echo $this->getForm() ?>
54
+ </form>
55
+ <form action="<?php echo $this->getPreviewUrl() ?>" method="post" id="newsletter_template_preview_form" target="_blank">
56
+ <?php echo $this->getBlockHtml('formkey')?>
57
+ <div class="no-display">
58
+ <input type="hidden" id="preview_type" name="type" value="<?php echo $this->isTextType()?1:2 ?>" />
59
+ <input type="hidden" id="preview_text" name="text" value="" />
60
+ <input type="hidden" id="preview_styles" name="styles" value="" />
61
+ <input type="hidden" id="preview_id" name="id" value="" />
62
+ </div>
63
+ </form>
64
+ <script type="text/javascript">
65
+ //<![CDATA[
66
+ var templateForm = new varienForm('newsletter_template_edit_form');
67
+ var templatePreviewForm = new varienForm('newsletter_template_preview_form');
68
+ var templateControl = {
69
+
70
+ unconvertedText: '',
71
+ typeChange: false,
72
+ templateName: false,
73
+ id: 'text',
74
+
75
+ init: function () {
76
+ if ($('convert_button_back')) {
77
+ $('convert_button_back').hide();
78
+ }
79
+ },
80
+
81
+ stripTags: function () {
82
+ if(!window.confirm("<?php echo Mage::helper('newsletter')->__('Are you sure that you want to strip all tags?') ?>")) {
83
+ return false;
84
+ }
85
+ if(this.isEditor()) {
86
+ this.getEditor().turnOff();
87
+ this.getEditor().getToggleButton().hide();
88
+ }
89
+ this.unconvertedText = $(this.id).value;
90
+ $('convert_button').hide();
91
+ $('convert_button_back').show();
92
+ $(this.id).value = $(this.id).value.stripScripts().stripTags();
93
+ $('field_template_styles').hide();
94
+ this.typeChange = true;
95
+ return false;
96
+ },
97
+
98
+ unStripTags: function () {
99
+ $('convert_button').show();
100
+ $('convert_button_back').hide();
101
+ $(this.id).value = this.unconvertedText;
102
+ if(this.isEditor()) {
103
+ this.getEditor().turnOn();
104
+ this.getEditor().getToggleButton().show();
105
+ }
106
+ this.typeChange = false;
107
+ $('field_template_styles').show();
108
+ return false;
109
+ },
110
+
111
+ save: function() {
112
+ if (this.typeChange) {
113
+ $('change_flag_element').value = '1';
114
+ }
115
+ if(this.isEditor()) {
116
+ tinyMCE.triggerSave();
117
+ }
118
+ templateForm.submit();
119
+ return false;
120
+ },
121
+
122
+ saveAs: function() {
123
+ if (this.typeChange) {
124
+ $('change_flag_element').value = '1';
125
+ }
126
+
127
+ if($F('code').blank() || $F('code')==templateControl.templateName) {
128
+ value = prompt('<?php echo Mage::helper('newsletter')->__('Please enter new template name') ?>', templateControl.templateName + '<?php echo Mage::helper('newsletter')->__(' Copy') ?>');
129
+ if(!value) {
130
+ if(value !== null) {
131
+ $('code').value = '';
132
+ templateForm.submit();
133
+ }
134
+ return false;
135
+ } else {
136
+ $('code').value = value;
137
+ }
138
+ }
139
+
140
+ $('save_as_flag').value = '1';
141
+
142
+ if(this.isEditor()) {
143
+ tinyMCE.triggerSave();
144
+ }
145
+ templateForm.submit();
146
+ return false;
147
+ },
148
+
149
+ preview: function() {
150
+ if (this.typeChange) {
151
+ $('preview_type').value = 1;
152
+ } else {
153
+ $('preview_type').value = 2;
154
+ }
155
+ if (this.isEditor() && tinyMCE.get(this.id)) {
156
+ tinyMCE.triggerSave();
157
+ $('preview_text').value = $(this.id).value;
158
+ tinyMCE.triggerSave();
159
+ } else {
160
+ $('preview_text').value = $(this.id).value;
161
+ }
162
+ if ($('template_styles') != undefined) {
163
+ $('preview_styles').value = $('template_styles').value;
164
+ }
165
+ if ($('id') != undefined) {
166
+ $('preview_id').value = $('id').value;
167
+ }
168
+ templatePreviewForm.submit();
169
+ return false;
170
+ },
171
+
172
+ deleteTemplate: function() {
173
+ if(window.confirm("<?php echo Mage::helper('newsletter')->__('Are you sure that you want to delete this template?') ?>")) {
174
+ window.location.href = '<?php echo $this->getDeleteUrl() ?>';
175
+ }
176
+ },
177
+
178
+ isEditor: function() {
179
+ return (typeof tinyMceEditors != 'undefined' && tinyMceEditors.get(this.id) != undefined)
180
+ },
181
+
182
+ getEditor: function() {
183
+ return tinyMceEditors.get(this.id);
184
+ }
185
+ };
186
+
187
+ templateControl.init();
188
+ templateControl.templateName = "<?php echo $this->getJsTemplateName() ?>";
189
+ //]]>
190
+ </script>
app/design/adminhtml/default/default/template/newsletter/template/list.phtml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <div class="content-header">
28
+ <table cellspacing="0">
29
+ <tr>
30
+ <td style="width:50%;"><h3 class="icon-head head-newsletter-list"><?php echo $this->getHeaderText() ?></h3></td>
31
+ <td class="form-buttons">
32
+ <button class="scalable add" onclick="window.location='<?php echo $this->getCreateUrl() ?>'"><span><?php echo Mage::helper('newsletter')->__('Add New Template'); ?></span></button>
33
+ </td>
34
+ </tr>
35
+ </table>
36
+ </div>
37
+ <div>
38
+ <?php echo $this->getChildHtml('grid') ?>
39
+ </div>
app/design/adminhtml/default/default/template/newsletter/template/preview.phtml ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
28
+ <html lang="en">
29
+ <head>
30
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
31
+ <title><?php echo Mage::helper('newsletter')->__('Newsletter Message Preview'); ?></title>
32
+ </head>
33
+ <body>
34
+ <?php echo $this->getChildHtml('content') ?>
35
+ <?php echo $this->getChildHtml('profiler') ?>
36
+ </body>
37
+ </html>
app/design/adminhtml/default/default/template/notification/baseurl.phtml ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category design
22
+ * @package default_default
23
+ * @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ /**
27
+ * @see Mage_Adminhtml_Block_Notification_Baseurl
28
+ */
29
+ ?>
30
+ <?php $_url = $this->getConfigUrl()?>
31
+ <?php if ($_url): ?>
32
+ <div class="notification-global notification-global-notice">
33
+ <?php echo $this->helper('adminhtml')->__('{{base_url}} is not recommended to use in a production environment to declare the Base Unsecure URL / Base Secure URL. It is highly recommended to change this value in your Magento <a href="%s">configuration</a>.', $_url)?>
34
+ </div>
35
+ <?php endif; ?>
app/design/adminhtml/default/default/template/notification/security.phtml ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * I