unbxd_recommendation - Version 1.0.19

Version Notes

Unbxd Recommendation

Download this release

Release Info

Developer ananthesh
Extension unbxd_recommendation
Version 1.0.19
Comparing to
See all releases


Code changes from version 1.0.18 to 1.0.19

Files changed (536) hide show
  1. app/code/local/Unbxd/Recommendation/.DS_Store +0 -0
  2. app/code/local/Unbxd/Recommendation/Block/Admin.php +0 -13
  3. app/code/local/Unbxd/Recommendation/Block/Tracker.php +0 -0
  4. app/code/local/Unbxd/Recommendation/Helper/Confighelper.php +0 -333
  5. app/code/local/Unbxd/Recommendation/Helper/Data.php +0 -23
  6. app/code/local/Unbxd/Recommendation/Model/Api/Task/Widget.php +0 -236
  7. app/code/local/Unbxd/Recommendation/Model/Feed/Feedmanager.php +0 -178
  8. app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Jsonbuilder.php +0 -9
  9. app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Productbuilder.php +0 -330
  10. app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Schemabuilder.php +0 -29
  11. app/code/local/Unbxd/Recommendation/Model/Field.php +0 -147
  12. app/code/local/Unbxd/Recommendation/Model/Resource/Config.php +0 -136
  13. app/code/local/Unbxd/Recommendation/Model/Resource/Config/Collection.php +0 -20
  14. app/code/local/Unbxd/Recommendation/Model/Resource/Field/Collection.php +0 -65
  15. app/code/local/Unbxd/Recommendation/Model/Resource/Sync.php +0 -17
  16. app/code/local/Unbxd/Recommendation/Model/Resource/Sync/Collection.php +0 -53
  17. app/code/local/Unbxd/Recommendation/controllers/ConfigController.php +0 -327
  18. app/code/local/Unbxd/Recommendation/controllers/WidgetController.php +0 -20
  19. app/code/local/Unbxd/Recommendation/etc/config.xml +0 -155
  20. app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/mysql4-install-1.0.0.php +0 -69
  21. app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/upgrade-1.0.11-1.0.12.php +0 -32
  22. app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/upgrade-1.0.16-1.0.17.php +0 -22
  23. app/code/local/Unbxd/Recscore/Helper/Analyticshelper.php +106 -0
  24. app/code/local/Unbxd/Recscore/Helper/Confighelper.php +453 -0
  25. app/code/local/Unbxd/Recscore/Helper/Constants.php +172 -0
  26. app/code/local/Unbxd/Recscore/Helper/Data.php +230 -0
  27. app/code/local/Unbxd/{Recommendation → Recscore}/Helper/Feedhelper.php +39 -17
  28. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Request.php +9 -9
  29. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Response.php +8 -7
  30. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task.php +13 -12
  31. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Analyticsimpression.php +11 -11
  32. app/code/local/Unbxd/Recscore/Model/Api/Task/Autosuggestindex.php +51 -0
  33. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Feeddetails.php +11 -11
  34. app/code/local/Unbxd/Recscore/Model/Api/Task/Searchimpression.php +56 -0
  35. app/code/local/Unbxd/Recscore/Model/Api/Task/Searchsetup.php +51 -0
  36. app/code/local/Unbxd/Recscore/Model/Api/Task/Supportmail.php +47 -0
  37. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Trackcart.php +7 -7
  38. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Trackorder.php +7 -7
  39. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Triggerfeedupload.php +3 -3
  40. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Updatefeaturefields.php +18 -14
  41. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Validatekeys.php +7 -7
  42. app/code/local/Unbxd/Recscore/Model/Auth.php +50 -0
  43. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Config.php +9 -3
  44. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Feedcreator.php +82 -45
  45. app/code/local/Unbxd/Recscore/Model/Feed/Feedmanager.php +213 -0
  46. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Filemanager.php +1 -1
  47. app/code/local/Unbxd/Recscore/Model/Feed/Jsonbuilder/Jsonbuilder.php +9 -0
  48. app/code/local/Unbxd/Recscore/Model/Feed/Jsonbuilder/Productbuilder.php +408 -0
  49. app/code/local/Unbxd/Recscore/Model/Feed/Jsonbuilder/Schemabuilder.php +29 -0
  50. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Jsonbuilder/Taxonomybuilder.php +1 -1
  51. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Tags.php +1 -1
  52. app/code/local/Unbxd/Recscore/Model/Field.php +220 -0
  53. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Observer.php +62 -26
  54. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Resource/Attribute.php +3 -3
  55. app/code/local/Unbxd/Recscore/Model/Resource/Config.php +212 -0
  56. app/code/local/Unbxd/Recscore/Model/Resource/Config/Collection.php +20 -0
  57. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Resource/Field.php +23 -27
  58. app/code/local/Unbxd/Recscore/Model/Resource/Field/Collection.php +65 -0
  59. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Resource/Product/Collection.php +18 -9
  60. app/code/local/Unbxd/Recscore/Model/Resource/Sync.php +17 -0
  61. app/code/local/Unbxd/Recscore/Model/Resource/Sync/Collection.php +53 -0
  62. app/code/local/Unbxd/Recscore/Model/State.php +12 -0
  63. app/code/local/Unbxd/Recscore/Model/State/Analytics.php +84 -0
  64. app/code/local/Unbxd/Recscore/Model/State/Catalog.php +49 -0
  65. app/code/local/Unbxd/Recscore/Model/State/Credentials.php +34 -0
  66. app/code/local/Unbxd/Recscore/Model/State/Response.php +29 -0
  67. app/code/local/Unbxd/Recscore/Model/Statemgr.php +27 -0
  68. app/code/local/Unbxd/{Recommendation → Recscore}/Model/Sync.php +17 -23
  69. app/code/local/Unbxd/{Recommendation → Recscore}/controllers/Adminhtml/IndexController.php +3 -3
  70. app/code/local/Unbxd/Recscore/controllers/CatalogController.php +84 -0
  71. app/code/local/Unbxd/Recscore/controllers/ConfigController.php +535 -0
  72. app/code/local/Unbxd/{Recommendation → Recscore}/etc/adminhtml.xml +2 -2
  73. app/code/local/Unbxd/Recscore/etc/config.xml +189 -0
  74. app/code/local/Unbxd/Recscore/sql/unbxd_recscore_setup/mysql4-install-1.0.0.php +90 -0
  75. app/design/adminhtml/default/default/layout/unbxd/recommendation.xml +0 -15
  76. app/design/adminhtml/default/default/layout/unbxd/recscore.xml +11 -0
  77. app/design/adminhtml/default/default/template/unbxd/recommendation.phtml +82 -133
  78. app/design/frontend/base/default/layout/unbxd/recommendation.xml +0 -33
  79. app/design/frontend/base/default/layout/unbxd/recscore.xml +15 -0
  80. app/design/frontend/base/default/template/unbxd/{tracker.phtml → recscore/tracker.phtml} +11 -9
  81. app/design/frontend/base/default/template/unbxd/recscore/tracking/product.phtml +23 -0
  82. app/design/frontend/base/default/template/unbxd/tracking/cart.phtml +0 -1
  83. app/design/frontend/base/default/template/unbxd/tracking/category.phtml +0 -14
  84. app/design/frontend/base/default/template/unbxd/tracking/order.phtml +0 -1
  85. app/design/frontend/base/default/template/unbxd/tracking/product.phtml +0 -25
  86. app/etc/modules/Unbxd_Recommendation.xml +3 -3
  87. js/unbxd/{app.js → recscore/app.js} +0 -0
  88. js/unbxd/{embed.js → recscore/embed.js} +12 -13
  89. js/unbxd/{jquery.js → recscore/jquery.js} +0 -0
  90. js/unbxd/{unbxdAnalytics.js → recscore/unbxdAnalytics.js} +0 -0
  91. package.xml +9 -9
  92. skin/adminhtml/default/default/unbxd/css/chosen.css +0 -429
  93. skin/adminhtml/default/default/unbxd/css/unbxd-magento.css +0 -718
  94. skin/adminhtml/default/default/unbxd/img/Custom-platform.png +0 -0
  95. skin/adminhtml/default/default/unbxd/img/DONE.png +0 -0
  96. skin/adminhtml/default/default/unbxd/img/HEXAGON-Only.png +0 -0
  97. skin/adminhtml/default/default/unbxd/img/Magento-small.png +0 -0
  98. skin/adminhtml/default/default/unbxd/img/Magento.png +0 -0
  99. skin/adminhtml/default/default/unbxd/img/X-popup-hover.png +0 -0
  100. skin/adminhtml/default/default/unbxd/img/X-popup.png +0 -0
  101. skin/adminhtml/default/default/unbxd/img/X-pricing.png +0 -0
  102. skin/adminhtml/default/default/unbxd/img/add-actv.png +0 -0
  103. skin/adminhtml/default/default/unbxd/img/add-icon.png +0 -0
  104. skin/adminhtml/default/default/unbxd/img/add-inactv.png +0 -0
  105. skin/adminhtml/default/default/unbxd/img/add-raw-hover.png +0 -0
  106. skin/adminhtml/default/default/unbxd/img/add-raw.png +0 -0
  107. skin/adminhtml/default/default/unbxd/img/add.png +0 -0
  108. skin/adminhtml/default/default/unbxd/img/arrow-2.png +0 -0
  109. skin/adminhtml/default/default/unbxd/img/arrow-calendar-down.png +0 -0
  110. skin/adminhtml/default/default/unbxd/img/arrow-calendar-down1.png +0 -0
  111. skin/adminhtml/default/default/unbxd/img/arrow-down-disabled.jpg +0 -0
  112. skin/adminhtml/default/default/unbxd/img/arrow-down-enabled.jpg +0 -0
  113. skin/adminhtml/default/default/unbxd/img/arrow-down-white.jpg +0 -0
  114. skin/adminhtml/default/default/unbxd/img/arrow-down-white1.jpg +0 -0
  115. skin/adminhtml/default/default/unbxd/img/arrow-down-white2.jpg +0 -0
  116. skin/adminhtml/default/default/unbxd/img/arrow-down.png +0 -0
  117. skin/adminhtml/default/default/unbxd/img/arrow-gray.png +0 -0
  118. skin/adminhtml/default/default/unbxd/img/arrow-left-white.jpg +0 -0
  119. skin/adminhtml/default/default/unbxd/img/arrow-left.jpg +0 -0
  120. skin/adminhtml/default/default/unbxd/img/arrow-mail-developer).png +0 -0
  121. skin/adminhtml/default/default/unbxd/img/arrow-right-blue.png +0 -0
  122. skin/adminhtml/default/default/unbxd/img/arrow-right-gray.jpg +0 -0
  123. skin/adminhtml/default/default/unbxd/img/arrow-right-white.jpg +0 -0
  124. skin/adminhtml/default/default/unbxd/img/arrow-right.jpg +0 -0
  125. skin/adminhtml/default/default/unbxd/img/arrow-up-black.png +0 -0
  126. skin/adminhtml/default/default/unbxd/img/arrow-up-disabled.jpg +0 -0
  127. skin/adminhtml/default/default/unbxd/img/arrow-up-enabled.jpg +0 -0
  128. skin/adminhtml/default/default/unbxd/img/arrow-up-red.png +0 -0
  129. skin/adminhtml/default/default/unbxd/img/arrow-up-white.jpg +0 -0
  130. skin/adminhtml/default/default/unbxd/img/arrow-up-white1.jpg +0 -0
  131. skin/adminhtml/default/default/unbxd/img/arrow-up.png +0 -0
  132. skin/adminhtml/default/default/unbxd/img/arrow-white.png +0 -0
  133. skin/adminhtml/default/default/unbxd/img/authenticated.png +0 -0
  134. skin/adminhtml/default/default/unbxd/img/back.png +0 -0
  135. skin/adminhtml/default/default/unbxd/img/big-arrow-gray.jpg +0 -0
  136. skin/adminhtml/default/default/unbxd/img/bigcommerce.png +0 -0
  137. skin/adminhtml/default/default/unbxd/img/black-right-small.jpg +0 -0
  138. skin/adminhtml/default/default/unbxd/img/black-right-thick.jpg +0 -0
  139. skin/adminhtml/default/default/unbxd/img/btn-arrow-top.png +0 -0
  140. skin/adminhtml/default/default/unbxd/img/btn-arrow.png +0 -0
  141. skin/adminhtml/default/default/unbxd/img/button-arrow-blue.png +0 -0
  142. skin/adminhtml/default/default/unbxd/img/button-arrow-grey.png +0 -0
  143. skin/adminhtml/default/default/unbxd/img/button-arrow-red.png +0 -0
  144. skin/adminhtml/default/default/unbxd/img/cancel.png +0 -0
  145. skin/adminhtml/default/default/unbxd/img/card-image.jpg +0 -0
  146. skin/adminhtml/default/default/unbxd/img/card-image1.jpg +0 -0
  147. skin/adminhtml/default/default/unbxd/img/card-image2.jpg +0 -0
  148. skin/adminhtml/default/default/unbxd/img/card-image3.jpg +0 -0
  149. skin/adminhtml/default/default/unbxd/img/checkmark.png +0 -0
  150. skin/adminhtml/default/default/unbxd/img/close-analytics.png +0 -0
  151. skin/adminhtml/default/default/unbxd/img/close.png +0 -0
  152. skin/adminhtml/default/default/unbxd/img/color-pic.png +0 -0
  153. skin/adminhtml/default/default/unbxd/img/congrats-magento.png +0 -0
  154. skin/adminhtml/default/default/unbxd/img/congrats.png +0 -0
  155. skin/adminhtml/default/default/unbxd/img/copy-black.png +0 -0
  156. skin/adminhtml/default/default/unbxd/img/copy-white.png +0 -0
  157. skin/adminhtml/default/default/unbxd/img/cros.png +0 -0
  158. skin/adminhtml/default/default/unbxd/img/cross-2.png +0 -0
  159. skin/adminhtml/default/default/unbxd/img/cvv-number.jpg +0 -0
  160. skin/adminhtml/default/default/unbxd/img/delete-raw-hover.png +0 -0
  161. skin/adminhtml/default/default/unbxd/img/delete-raw.png +0 -0
  162. skin/adminhtml/default/default/unbxd/img/delete-red.png +0 -0
  163. skin/adminhtml/default/default/unbxd/img/delete.png +0 -0
  164. skin/adminhtml/default/default/unbxd/img/detect.png +0 -0
  165. skin/adminhtml/default/default/unbxd/img/down-arrow.png +0 -0
  166. skin/adminhtml/default/default/unbxd/img/down-gray.png +0 -0
  167. skin/adminhtml/default/default/unbxd/img/drop-down.png +0 -0
  168. skin/adminhtml/default/default/unbxd/img/edit-magento.png +0 -0
  169. skin/adminhtml/default/default/unbxd/img/edit.png +0 -0
  170. skin/adminhtml/default/default/unbxd/img/eye-hover.png +0 -0
  171. skin/adminhtml/default/default/unbxd/img/eye.png +0 -0
  172. skin/adminhtml/default/default/unbxd/img/favicon.png +0 -0
  173. skin/adminhtml/default/default/unbxd/img/fill.png +0 -0
  174. skin/adminhtml/default/default/unbxd/img/group-arrow.png +0 -0
  175. skin/adminhtml/default/default/unbxd/img/help.png +0 -0
  176. skin/adminhtml/default/default/unbxd/img/icon-analytics.png +0 -0
  177. skin/adminhtml/default/default/unbxd/img/icon-info.png +0 -0
  178. skin/adminhtml/default/default/unbxd/img/icon-widget.png +0 -0
  179. skin/adminhtml/default/default/unbxd/img/install.png +0 -0
  180. skin/adminhtml/default/default/unbxd/img/integration-gray.png +0 -0
  181. skin/adminhtml/default/default/unbxd/img/introduction-gray.png +0 -0
  182. skin/adminhtml/default/default/unbxd/img/left-black.png +0 -0
  183. skin/adminhtml/default/default/unbxd/img/left-gray.png +0 -0
  184. skin/adminhtml/default/default/unbxd/img/level-arrow-active.png +0 -0
  185. skin/adminhtml/default/default/unbxd/img/level-arrow.png +0 -0
  186. skin/adminhtml/default/default/unbxd/img/link-arrow.png +0 -0
  187. skin/adminhtml/default/default/unbxd/img/loader-32x32.gif +0 -0
  188. skin/adminhtml/default/default/unbxd/img/lock-image.jpg +0 -0
  189. skin/adminhtml/default/default/unbxd/img/logo-unbxd.png +0 -0
  190. skin/adminhtml/default/default/unbxd/img/logo.png +0 -0
  191. skin/adminhtml/default/default/unbxd/img/mail-new.png +0 -0
  192. skin/adminhtml/default/default/unbxd/img/mail.png +0 -0
  193. skin/adminhtml/default/default/unbxd/img/minus.jpg +0 -0
  194. skin/adminhtml/default/default/unbxd/img/nav-highlight-arrow.png +0 -0
  195. skin/adminhtml/default/default/unbxd/img/not-detected.png +0 -0
  196. skin/adminhtml/default/default/unbxd/img/oops.png +0 -0
  197. skin/adminhtml/default/default/unbxd/img/or.png +0 -0
  198. skin/adminhtml/default/default/unbxd/img/other-gray.png +0 -0
  199. skin/adminhtml/default/default/unbxd/img/overview-gray.png +0 -0
  200. skin/adminhtml/default/default/unbxd/img/plus.jpg +0 -0
  201. skin/adminhtml/default/default/unbxd/img/question-mark2.jpg +0 -0
  202. skin/adminhtml/default/default/unbxd/img/red-cross.png +0 -0
  203. skin/adminhtml/default/default/unbxd/img/red-loading.gif +0 -0
  204. skin/adminhtml/default/default/unbxd/img/remove.png +0 -0
  205. skin/adminhtml/default/default/unbxd/img/right-black.png +0 -0
  206. skin/adminhtml/default/default/unbxd/img/right-gray.png +0 -0
  207. skin/adminhtml/default/default/unbxd/img/save.png +0 -0
  208. skin/adminhtml/default/default/unbxd/img/saved.png +0 -0
  209. skin/adminhtml/default/default/unbxd/img/search.png +0 -0
  210. skin/adminhtml/default/default/unbxd/img/settings.png +0 -0
  211. skin/adminhtml/default/default/unbxd/img/shopify.png +0 -0
  212. skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-down.png +0 -0
  213. skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-up.png +0 -0
  214. skin/adminhtml/default/default/unbxd/img/slider-bg.png +0 -0
  215. skin/adminhtml/default/default/unbxd/img/slider-button.png +0 -0
  216. skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-down.png +0 -0
  217. skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-up.png +0 -0
  218. skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-down.png +0 -0
  219. skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-up.png +0 -0
  220. skin/adminhtml/default/default/unbxd/img/spree.png +0 -0
  221. skin/adminhtml/default/default/unbxd/img/start-gray.png +0 -0
  222. skin/adminhtml/default/default/unbxd/img/step-arrow.png +0 -0
  223. skin/adminhtml/default/default/unbxd/img/success.png +0 -0
  224. skin/adminhtml/default/default/unbxd/img/tick-analytics.png +0 -0
  225. skin/adminhtml/default/default/unbxd/img/tick-green.png +0 -0
  226. skin/adminhtml/default/default/unbxd/img/tick-pricing.png +0 -0
  227. skin/adminhtml/default/default/unbxd/img/tick.png +0 -0
  228. skin/adminhtml/default/default/unbxd/img/tooltip-arrow.png +0 -0
  229. skin/adminhtml/default/default/unbxd/img/tooltip-left-arrow.jpg +0 -0
  230. skin/adminhtml/default/default/unbxd/img/tooltip.png +0 -0
  231. skin/adminhtml/default/default/unbxd/img/up-arrow.png +0 -0
  232. skin/adminhtml/default/default/unbxd/img/up-black.png +0 -0
  233. skin/adminhtml/default/default/unbxd/img/up-gray.png +0 -0
  234. skin/adminhtml/default/default/unbxd/img/user.png +0 -0
  235. skin/adminhtml/default/default/unbxd/img/warning.png +0 -0
  236. skin/adminhtml/default/default/unbxd/img/x-widget.png +0 -0
  237. skin/adminhtml/default/default/unbxd/img/x.png +0 -0
  238. skin/adminhtml/default/default/unbxd/js/app/analytics.js +0 -56
  239. skin/adminhtml/default/default/unbxd/js/app/utils.js +0 -33
  240. skin/adminhtml/default/default/unbxd/js/main.js +0 -253
  241. skin/adminhtml/default/default/unbxd/{css → recscore/css}/app.css +239 -2801
  242. skin/adminhtml/default/default/unbxd/recscore/css/app1.css +1685 -0
  243. skin/adminhtml/default/default/unbxd/recscore/css/bootstrap-switch.css +519 -0
  244. skin/adminhtml/default/default/unbxd/{css → recscore/css}/bootstrap-them.css +0 -0
  245. skin/adminhtml/default/default/unbxd/{css → recscore/css}/bootstrap.css +3 -1
  246. skin/adminhtml/default/default/unbxd/recscore/css/chosen.css +450 -0
  247. skin/adminhtml/default/default/unbxd/recscore/css/colpick.css +1 -0
  248. skin/adminhtml/default/default/unbxd/recscore/css/magento-app.css +270 -0
  249. skin/adminhtml/default/default/unbxd/recscore/css/unbxd-magento.css +1778 -0
  250. skin/adminhtml/default/default/unbxd/recscore/img/Custom-platform.png +0 -0
  251. skin/adminhtml/default/default/unbxd/recscore/img/DONE.png +0 -0
  252. skin/adminhtml/default/default/unbxd/recscore/img/HEXAGON-Only.png +0 -0
  253. skin/adminhtml/default/default/unbxd/recscore/img/Magento-small.png +0 -0
  254. skin/adminhtml/default/default/unbxd/recscore/img/Magento.png +0 -0
  255. skin/adminhtml/default/default/unbxd/recscore/img/Powered_by_unbxd copy.png +0 -0
  256. skin/adminhtml/default/default/unbxd/recscore/img/X-popup-hover.png +0 -0
  257. skin/adminhtml/default/default/unbxd/recscore/img/X-popup.png +0 -0
  258. skin/adminhtml/default/default/unbxd/recscore/img/X-pricing.png +0 -0
  259. skin/adminhtml/default/default/unbxd/recscore/img/active.png +0 -0
  260. skin/adminhtml/default/default/unbxd/recscore/img/add-actv.png +0 -0
  261. skin/adminhtml/default/default/unbxd/recscore/img/add-icon.png +0 -0
  262. skin/adminhtml/default/default/unbxd/recscore/img/add-inactv.png +0 -0
  263. skin/adminhtml/default/default/unbxd/recscore/img/add-raw-hover.png +0 -0
  264. skin/adminhtml/default/default/unbxd/recscore/img/add-raw.png +0 -0
  265. skin/adminhtml/default/default/unbxd/recscore/img/add-rule.png +0 -0
  266. skin/adminhtml/default/default/unbxd/recscore/img/add.png +0 -0
  267. skin/adminhtml/default/default/unbxd/recscore/img/api_int_info.png +0 -0
  268. skin/adminhtml/default/default/unbxd/recscore/img/arrow-2.png +0 -0
  269. skin/adminhtml/default/default/unbxd/recscore/img/arrow-calendar-down.png +0 -0
  270. skin/adminhtml/default/default/unbxd/recscore/img/arrow-calendar-down1.png +0 -0
  271. skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-disabled.jpg +0 -0
  272. skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-enabled.jpg +0 -0
  273. skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-white.jpg +0 -0
  274. skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-white1.jpg +0 -0
  275. skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-white2.jpg +0 -0
  276. skin/adminhtml/default/default/unbxd/recscore/img/arrow-down.png +0 -0
  277. skin/adminhtml/default/default/unbxd/recscore/img/arrow-gray.png +0 -0
  278. skin/adminhtml/default/default/unbxd/{img/arrow.png → recscore/img/arrow-inactive.png} +0 -0
  279. skin/adminhtml/default/default/unbxd/recscore/img/arrow-left-inactive.png +0 -0
  280. skin/adminhtml/default/default/unbxd/recscore/img/arrow-left-white.jpg +0 -0
  281. skin/adminhtml/default/default/unbxd/recscore/img/arrow-left.jpg +0 -0
  282. skin/adminhtml/default/default/unbxd/recscore/img/arrow-left.png +0 -0
  283. skin/adminhtml/default/default/unbxd/recscore/img/arrow-mail-developer).png +0 -0
  284. skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-blue.png +0 -0
  285. skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-gray.jpg +0 -0
  286. skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-inactive.png +0 -0
  287. skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-white.jpg +0 -0
  288. skin/adminhtml/default/default/unbxd/recscore/img/arrow-right.jpg +0 -0
  289. skin/adminhtml/default/default/unbxd/recscore/img/arrow-right.png +0 -0
  290. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-black.png +0 -0
  291. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-disabled.jpg +0 -0
  292. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-enabled.jpg +0 -0
  293. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-red.png +0 -0
  294. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-white.jpg +0 -0
  295. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-white1.jpg +0 -0
  296. skin/adminhtml/default/default/unbxd/recscore/img/arrow-up.png +0 -0
  297. skin/adminhtml/default/default/unbxd/recscore/img/arrow-white.png +0 -0
  298. skin/adminhtml/default/default/unbxd/recscore/img/arrow.png +0 -0
  299. skin/adminhtml/default/default/unbxd/recscore/img/arrow_grey.png +0 -0
  300. skin/adminhtml/default/default/unbxd/recscore/img/arrow_white.png +0 -0
  301. skin/adminhtml/default/default/unbxd/recscore/img/authenticated.png +0 -0
  302. skin/adminhtml/default/default/unbxd/recscore/img/back.png +0 -0
  303. skin/adminhtml/default/default/unbxd/{img → recscore/img}/bg.jpg +0 -0
  304. skin/adminhtml/default/default/unbxd/recscore/img/big-arrow-gray.jpg +0 -0
  305. skin/adminhtml/default/default/unbxd/recscore/img/bigcommerce.png +0 -0
  306. skin/adminhtml/default/default/unbxd/recscore/img/black-right-small.jpg +0 -0
  307. skin/adminhtml/default/default/unbxd/recscore/img/black-right-thick.jpg +0 -0
  308. skin/adminhtml/default/default/unbxd/recscore/img/blue-selected.png +0 -0
  309. skin/adminhtml/default/default/unbxd/recscore/img/breadcrumb_arrow.png +0 -0
  310. skin/adminhtml/default/default/unbxd/recscore/img/btn-arrow-top.png +0 -0
  311. skin/adminhtml/default/default/unbxd/recscore/img/btn-arrow.png +0 -0
  312. skin/adminhtml/default/default/unbxd/recscore/img/button-arrow-blue.png +0 -0
  313. skin/adminhtml/default/default/unbxd/recscore/img/button-arrow-grey.png +0 -0
  314. skin/adminhtml/default/default/unbxd/recscore/img/button-arrow-red.png +0 -0
  315. skin/adminhtml/default/default/unbxd/recscore/img/cancel.png +0 -0
  316. skin/adminhtml/default/default/unbxd/recscore/img/card-image.jpg +0 -0
  317. skin/adminhtml/default/default/unbxd/recscore/img/card-image1.jpg +0 -0
  318. skin/adminhtml/default/default/unbxd/recscore/img/card-image2.jpg +0 -0
  319. skin/adminhtml/default/default/unbxd/recscore/img/card-image3.jpg +0 -0
  320. skin/adminhtml/default/default/unbxd/recscore/img/checkmark.png +0 -0
  321. skin/adminhtml/default/default/unbxd/{img → recscore/img}/chosen-sprite.png +0 -0
  322. skin/adminhtml/default/default/unbxd/recscore/img/close-analytics.png +0 -0
  323. skin/adminhtml/default/default/unbxd/recscore/img/close-round.png +0 -0
  324. skin/adminhtml/default/default/unbxd/recscore/img/close.png +0 -0
  325. skin/adminhtml/default/default/unbxd/recscore/img/color-pic-black.png +0 -0
  326. skin/adminhtml/default/default/unbxd/recscore/img/color-pic.png +0 -0
  327. skin/adminhtml/default/default/unbxd/recscore/img/congrats-magento.png +0 -0
  328. skin/adminhtml/default/default/unbxd/recscore/img/congrats.png +0 -0
  329. skin/adminhtml/default/default/unbxd/recscore/img/copy-black.png +0 -0
  330. skin/adminhtml/default/default/unbxd/recscore/img/copy-white.png +0 -0
  331. skin/adminhtml/default/default/unbxd/recscore/img/cros.png +0 -0
  332. skin/adminhtml/default/default/unbxd/recscore/img/cross-2.png +0 -0
  333. skin/adminhtml/default/default/unbxd/recscore/img/custom-color-selected.png +0 -0
  334. skin/adminhtml/default/default/unbxd/recscore/img/custom-color.png +0 -0
  335. skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-1.png +0 -0
  336. skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-2.png +0 -0
  337. skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-3.png +0 -0
  338. skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-4.png +0 -0
  339. skin/adminhtml/default/default/unbxd/recscore/img/cvv-number.jpg +0 -0
  340. skin/adminhtml/default/default/unbxd/recscore/img/delete-raw-hover.png +0 -0
  341. skin/adminhtml/default/default/unbxd/recscore/img/delete-raw.png +0 -0
  342. skin/adminhtml/default/default/unbxd/recscore/img/delete-red.png +0 -0
  343. skin/adminhtml/default/default/unbxd/recscore/img/delete.png +0 -0
  344. skin/adminhtml/default/default/unbxd/recscore/img/detect.png +0 -0
  345. skin/adminhtml/default/default/unbxd/recscore/img/dot-border.png +0 -0
  346. skin/adminhtml/default/default/unbxd/recscore/img/down-arrow.png +0 -0
  347. skin/adminhtml/default/default/unbxd/recscore/img/down-black.png +0 -0
  348. skin/adminhtml/default/default/unbxd/recscore/img/down-gray.png +0 -0
  349. skin/adminhtml/default/default/unbxd/recscore/img/drop-down.png +0 -0
  350. skin/adminhtml/default/default/unbxd/recscore/img/dropdown-arrow.png +0 -0
  351. skin/adminhtml/default/default/unbxd/recscore/img/edit-magento.png +0 -0
  352. skin/adminhtml/default/default/unbxd/recscore/img/edit.png +0 -0
  353. skin/adminhtml/default/default/unbxd/recscore/img/eye-hover.png +0 -0
  354. skin/adminhtml/default/default/unbxd/recscore/img/eye.png +0 -0
  355. skin/adminhtml/default/default/unbxd/recscore/img/favicon.png +0 -0
  356. skin/adminhtml/default/default/unbxd/recscore/img/fill.png +0 -0
  357. skin/adminhtml/default/default/unbxd/recscore/img/green-selected.png +0 -0
  358. skin/adminhtml/default/default/unbxd/recscore/img/grey-selected.png +0 -0
  359. skin/adminhtml/default/default/unbxd/recscore/img/group-arrow.png +0 -0
  360. skin/adminhtml/default/default/unbxd/recscore/img/help.png +0 -0
  361. skin/adminhtml/default/default/unbxd/recscore/img/icon-analytics.png +0 -0
  362. skin/adminhtml/default/default/unbxd/recscore/img/icon-info.png +0 -0
  363. skin/adminhtml/default/default/unbxd/recscore/img/icon-widget.png +0 -0
  364. skin/adminhtml/default/default/unbxd/recscore/img/info-icon-big.png +0 -0
  365. skin/adminhtml/default/default/unbxd/recscore/img/info-small.png +0 -0
  366. skin/adminhtml/default/default/unbxd/recscore/img/install.png +0 -0
  367. skin/adminhtml/default/default/unbxd/recscore/img/integration-gray.png +0 -0
  368. skin/adminhtml/default/default/unbxd/recscore/img/introduction-gray.png +0 -0
  369. skin/adminhtml/default/default/unbxd/recscore/img/left-black.png +0 -0
  370. skin/adminhtml/default/default/unbxd/recscore/img/left-gray.png +0 -0
  371. skin/adminhtml/default/default/unbxd/recscore/img/level-arrow-active.png +0 -0
  372. skin/adminhtml/default/default/unbxd/recscore/img/level-arrow.png +0 -0
  373. skin/adminhtml/default/default/unbxd/recscore/img/link-arrow.png +0 -0
  374. skin/adminhtml/default/default/unbxd/recscore/img/list_bullet.png +0 -0
  375. skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader-16x16.gif +0 -0
  376. skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader-24x24.gif +0 -0
  377. skin/adminhtml/default/default/unbxd/recscore/img/loader-32x32.gif +0 -0
  378. skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader.gif +0 -0
  379. skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader_black.gif +0 -0
  380. skin/adminhtml/default/default/unbxd/recscore/img/lock-image.jpg +0 -0
  381. skin/adminhtml/default/default/unbxd/recscore/img/logo-unbxd.png +0 -0
  382. skin/adminhtml/default/default/unbxd/recscore/img/logo.png +0 -0
  383. skin/adminhtml/default/default/unbxd/recscore/img/mail-box.png +0 -0
  384. skin/adminhtml/default/default/unbxd/recscore/img/mail-id-sprite.png +0 -0
  385. skin/adminhtml/default/default/unbxd/recscore/img/mail-new.png +0 -0
  386. skin/adminhtml/default/default/unbxd/recscore/img/mail.png +0 -0
  387. skin/adminhtml/default/default/unbxd/recscore/img/minus.jpg +0 -0
  388. skin/adminhtml/default/default/unbxd/{img/dropdown-arrow.png → recscore/img/minus.png} +0 -0
  389. skin/adminhtml/default/default/unbxd/recscore/img/nav-highlight-arrow.png +0 -0
  390. skin/adminhtml/default/default/unbxd/recscore/img/not-detected.png +0 -0
  391. skin/adminhtml/default/default/unbxd/recscore/img/oops.png +0 -0
  392. skin/adminhtml/default/default/unbxd/recscore/img/or.png +0 -0
  393. skin/adminhtml/default/default/unbxd/recscore/img/orange-selected.png +0 -0
  394. skin/adminhtml/default/default/unbxd/recscore/img/orange.png +0 -0
  395. skin/adminhtml/default/default/unbxd/recscore/img/other-gray.png +0 -0
  396. skin/adminhtml/default/default/unbxd/recscore/img/overview-gray.png +0 -0
  397. skin/adminhtml/default/default/unbxd/{img/down-black.png → recscore/img/plus.png} +0 -0
  398. skin/adminhtml/default/default/unbxd/recscore/img/preview.png +0 -0
  399. skin/adminhtml/default/default/unbxd/recscore/img/question-mark2.jpg +0 -0
  400. skin/adminhtml/default/default/unbxd/recscore/img/red-cross.png +0 -0
  401. skin/adminhtml/default/default/unbxd/recscore/img/red-loading.gif +0 -0
  402. skin/adminhtml/default/default/unbxd/recscore/img/remove.png +0 -0
  403. skin/adminhtml/default/default/unbxd/recscore/img/right-black.png +0 -0
  404. skin/adminhtml/default/default/unbxd/recscore/img/right-gray.png +0 -0
  405. skin/adminhtml/default/default/unbxd/recscore/img/rules.png +0 -0
  406. skin/adminhtml/default/default/unbxd/recscore/img/save.png +0 -0
  407. skin/adminhtml/default/default/unbxd/recscore/img/saved.png +0 -0
  408. skin/adminhtml/default/default/unbxd/recscore/img/search.png +0 -0
  409. skin/adminhtml/default/default/unbxd/recscore/img/settings.png +0 -0
  410. skin/adminhtml/default/default/unbxd/recscore/img/shopify.png +0 -0
  411. skin/adminhtml/default/default/unbxd/recscore/img/site-dropdownarrow-down.png +0 -0
  412. skin/adminhtml/default/default/unbxd/recscore/img/site-dropdownarrow-up.png +0 -0
  413. skin/adminhtml/default/default/unbxd/recscore/img/skin1-trans.png +0 -0
  414. skin/adminhtml/default/default/unbxd/recscore/img/skin1.png +0 -0
  415. skin/adminhtml/default/default/unbxd/recscore/img/skin2.png +0 -0
  416. skin/adminhtml/default/default/unbxd/recscore/img/skin3.png +0 -0
  417. skin/adminhtml/default/default/unbxd/recscore/img/skin4.png +0 -0
  418. skin/adminhtml/default/default/unbxd/recscore/img/slider-bg.png +0 -0
  419. skin/adminhtml/default/default/unbxd/recscore/img/slider-button.png +0 -0
  420. skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-blue-down.png +0 -0
  421. skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-blue-up.png +0 -0
  422. skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-grey-down.png +0 -0
  423. skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-grey-up.png +0 -0
  424. skin/adminhtml/default/default/unbxd/recscore/img/spinner_down.png +0 -0
  425. skin/adminhtml/default/default/unbxd/recscore/img/spinner_up.png +0 -0
  426. skin/adminhtml/default/default/unbxd/recscore/img/spree.png +0 -0
  427. skin/adminhtml/default/default/unbxd/recscore/img/start-gray.png +0 -0
  428. skin/adminhtml/default/default/unbxd/recscore/img/step-arrow.png +0 -0
  429. skin/adminhtml/default/default/unbxd/recscore/img/success-icon-big.png +0 -0
  430. skin/adminhtml/default/default/unbxd/recscore/img/success.png +0 -0
  431. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-blue.png +0 -0
  432. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-green.png +0 -0
  433. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-grey.png +0 -0
  434. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-orange.png +0 -0
  435. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-blue.png +0 -0
  436. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-green.png +0 -0
  437. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-grey.png +0 -0
  438. skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-orange.png +0 -0
  439. skin/adminhtml/default/default/unbxd/recscore/img/temp-1.png +0 -0
  440. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-blue.png +0 -0
  441. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-green.png +0 -0
  442. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-grey.png +0 -0
  443. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-orange.png +0 -0
  444. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-blue.png +0 -0
  445. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-green.png +0 -0
  446. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-grey.png +0 -0
  447. skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-orange.png +0 -0
  448. skin/adminhtml/default/default/unbxd/recscore/img/temp-2.png +0 -0
  449. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-blue.png +0 -0
  450. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-green.png +0 -0
  451. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-grey.png +0 -0
  452. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-orange.png +0 -0
  453. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-blue.png +0 -0
  454. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-green.png +0 -0
  455. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-grey.png +0 -0
  456. skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-orange.png +0 -0
  457. skin/adminhtml/default/default/unbxd/recscore/img/temp-3.png +0 -0
  458. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-blue.png +0 -0
  459. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-green.png +0 -0
  460. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-grey.png +0 -0
  461. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-orange.png +0 -0
  462. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-blue.png +0 -0
  463. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-green.png +0 -0
  464. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-grey.png +0 -0
  465. skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-orange.png +0 -0
  466. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-blue.png +0 -0
  467. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-green.png +0 -0
  468. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-orange.png +0 -0
  469. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-blue.png +0 -0
  470. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-gray.png +0 -0
  471. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-green.png +0 -0
  472. skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-orange.png +0 -0
  473. skin/adminhtml/default/default/unbxd/recscore/img/temp-5.png +0 -0
  474. skin/adminhtml/default/default/unbxd/recscore/img/temp-6.png +0 -0
  475. skin/adminhtml/default/default/unbxd/recscore/img/templates.png +0 -0
  476. skin/adminhtml/default/default/unbxd/recscore/img/tick-analytics.png +0 -0
  477. skin/adminhtml/default/default/unbxd/recscore/img/tick-green.png +0 -0
  478. skin/adminhtml/default/default/unbxd/recscore/img/tick-orange.png +0 -0
  479. skin/adminhtml/default/default/unbxd/recscore/img/tick-pricing.png +0 -0
  480. skin/adminhtml/default/default/unbxd/recscore/img/tick.png +0 -0
  481. skin/adminhtml/default/default/unbxd/recscore/img/tooltip-arrow.png +0 -0
  482. skin/adminhtml/default/default/unbxd/recscore/img/tooltip-left-arrow.jpg +0 -0
  483. skin/adminhtml/default/default/unbxd/recscore/img/tooltip.png +0 -0
  484. skin/adminhtml/default/default/unbxd/recscore/img/up-arrow.png +0 -0
  485. skin/adminhtml/default/default/unbxd/recscore/img/up-black.png +0 -0
  486. skin/adminhtml/default/default/unbxd/recscore/img/up-gray.png +0 -0
  487. skin/adminhtml/default/default/unbxd/recscore/img/user.png +0 -0
  488. skin/adminhtml/default/default/unbxd/recscore/img/view-hover.png +0 -0
  489. skin/adminhtml/default/default/unbxd/recscore/img/view.png +0 -0
  490. skin/adminhtml/default/default/unbxd/recscore/img/warning.png +0 -0
  491. skin/adminhtml/default/default/unbxd/recscore/img/x-widget.png +0 -0
  492. skin/adminhtml/default/default/unbxd/recscore/img/x.png +0 -0
  493. skin/adminhtml/default/default/unbxd/{js → recscore/js}/app.js +1 -0
  494. skin/adminhtml/default/default/unbxd/recscore/js/app/analytics.js +82 -0
  495. skin/adminhtml/default/default/unbxd/recscore/js/app/autosuggest.js +206 -0
  496. skin/adminhtml/default/default/unbxd/{js → recscore/js}/app/catalog.js +155 -98
  497. skin/adminhtml/default/default/unbxd/recscore/js/app/config.js +120 -0
  498. skin/adminhtml/default/default/unbxd/{js/app/credentails.js → recscore/js/app/credentials.js} +24 -22
  499. skin/adminhtml/default/default/unbxd/recscore/js/app/filter-catalogue.js +320 -0
  500. skin/adminhtml/default/default/unbxd/recscore/js/app/search/api.js +128 -0
  501. skin/adminhtml/default/default/unbxd/recscore/js/app/search/hosted.js +150 -0
  502. skin/adminhtml/default/default/unbxd/recscore/js/app/search/landing.js +107 -0
  503. skin/adminhtml/default/default/unbxd/recscore/js/app/utils.js +147 -0
  504. skin/adminhtml/default/default/unbxd/{js → recscore/js}/app/widgets.js +7 -5
  505. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/backbone.js +0 -0
  506. skin/adminhtml/default/default/unbxd/recscore/js/lib/bootstrap-modal.js +11 -0
  507. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/bootstrap-tooltip.js +0 -0
  508. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/chosen.js +0 -0
  509. skin/adminhtml/default/default/unbxd/recscore/js/lib/colpick.js +1 -0
  510. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/ractive-backbone.js +0 -0
  511. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/ractive-chosen.js +0 -0
  512. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/ractive.js +0 -0
  513. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/require.js +0 -0
  514. skin/adminhtml/default/default/unbxd/recscore/js/lib/routie.js +208 -0
  515. skin/adminhtml/default/default/unbxd/recscore/js/lib/rv.js +1 -0
  516. skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/underscore.js +0 -0
  517. skin/adminhtml/default/default/unbxd/recscore/js/main.js +292 -0
  518. skin/adminhtml/default/default/unbxd/recscore/templates/analytics.html +191 -0
  519. skin/adminhtml/default/default/unbxd/recscore/templates/auto-suggest.html +278 -0
  520. skin/adminhtml/default/default/unbxd/recscore/templates/catalog.html +84 -0
  521. skin/adminhtml/default/default/unbxd/{templates → recscore/templates}/credentails.html +32 -35
  522. skin/adminhtml/default/default/unbxd/recscore/templates/index.html +63 -0
  523. skin/adminhtml/default/default/unbxd/recscore/templates/partials/catalogue.html +125 -0
  524. skin/adminhtml/default/default/unbxd/recscore/templates/partials/contact-form.html +44 -0
  525. skin/adminhtml/default/default/unbxd/recscore/templates/partials/custom-attr.html +143 -0
  526. skin/adminhtml/default/default/unbxd/recscore/templates/partials/filters.html +131 -0
  527. skin/adminhtml/default/default/unbxd/recscore/templates/partials/preview-modal.html +10 -0
  528. skin/adminhtml/default/default/unbxd/{templates/custom.html → recscore/templates/partials/row.html} +7 -3
  529. skin/adminhtml/default/default/unbxd/recscore/templates/partials/switch-off.html +10 -0
  530. skin/adminhtml/default/default/unbxd/recscore/templates/partials/switch-on.html +10 -0
  531. skin/adminhtml/default/default/unbxd/recscore/templates/search/api.html +68 -0
  532. skin/adminhtml/default/default/unbxd/recscore/templates/search/hosted.html +95 -0
  533. skin/adminhtml/default/default/unbxd/recscore/templates/search/landing.html +87 -0
  534. skin/adminhtml/default/default/unbxd/{templates → recscore/templates}/widgets.html +123 -98
  535. skin/adminhtml/default/default/unbxd/templates/analytics.html +0 -155
  536. skin/adminhtml/default/default/unbxd/templates/catalog.html +0 -328
app/code/local/Unbxd/Recommendation/.DS_Store DELETED
Binary file
app/code/local/Unbxd/Recommendation/Block/Admin.php DELETED
@@ -1,13 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd
7
- */
8
- class Unbxd_Recommendation_Block_Admin extends Mage_Adminhtml_Block_Template {
9
-
10
-
11
- }
12
-
13
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Block/Tracker.php DELETED
File without changes
app/code/local/Unbxd/Recommendation/Helper/Confighelper.php DELETED
@@ -1,333 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd
7
- */
8
- class Unbxd_Recommendation_Helper_Confighelper extends Unbxd_Recommendation_Helper_Data {
9
-
10
- const SITE_KEY = "site_key";
11
-
12
- const API_KEY = "api_key";
13
-
14
- const SECRET_KEY = "secret_key";
15
-
16
- const USERNAME = "username";
17
-
18
- const NEED_FEATURE_FIELD_UPDATION = "need_feature_field_updation";
19
-
20
- const IS_CRON_ENABLED = "cron_enabled";
21
-
22
-
23
- /**
24
- * All possible data type values supported unbxd
25
- * @var array
26
- */
27
- public static $data_types = array("text", "longText", "link", "decimal", "number", "datetime");
28
-
29
- public function validateAndSaveKeys($website, $requestBody){
30
- $errors = $this->validateKeyParams($requestBody);
31
- if(sizeof($errors) > 0) {
32
- return $errors;
33
- }
34
- $requestParams = json_decode($requestBody, true);
35
- if(!$requestParams) {
36
- $errors['message'] = 'Invalid Request';
37
- return $errors;
38
- }
39
- $response = Mage::getModel("unbxd_recommendation/api_task_validatekeys")
40
- ->setData(Unbxd_Recommendation_Model_Api_Task_Validatekeys::SECRET_KEY, $requestParams[self::SECRET_KEY])
41
- ->setData(Unbxd_Recommendation_Model_Api_Task_Validatekeys::SITE_KEY, $requestParams[self::SITE_KEY])
42
- ->prepare($website)
43
- ->process();
44
- if(!$response->isSuccess()) {
45
- return $response->getErrors();
46
- }
47
-
48
- Mage::getResourceModel('unbxd_recommendation/config')
49
- ->setValue($website->getWebsiteId(), self::SECRET_KEY, $requestParams[self::SECRET_KEY]);
50
- Mage::getResourceModel('unbxd_recommendation/config')
51
- ->setValue($website->getWebsiteId(), self::SITE_KEY, $requestParams[self::SITE_KEY]);
52
- $response = $response->getResponse();
53
- Mage::getResourceModel('unbxd_recommendation/config')
54
- ->setValue($website->getWebsiteId(),
55
- self::API_KEY, $response[Unbxd_Recommendation_Model_Api_Task_Validatekeys::API_KEY]);
56
- Mage::getResourceModel('unbxd_recommendation/config')
57
- ->setValue($website->getWebsiteId(),
58
- self::USERNAME, $response[Unbxd_Recommendation_Model_Api_Task_Validatekeys::USERNAME]);
59
- return $errors;
60
- }
61
-
62
- public function validateKeyParams($requestBody) {
63
- $errors = array();
64
- $requestParams = json_decode($requestBody, true);
65
- if(!$requestParams) {
66
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'Invalid request witj requestBody' . $requestBody);
67
- $errors['message'] = 'Invalid Request';
68
- return $errors;
69
- }
70
- if(!array_key_exists(self::SECRET_KEY,$requestParams)){
71
- $errors[self::SECRET_KEY] = "Has Empty Data";
72
- }
73
- if(!array_key_exists(self::SITE_KEY, $requestParams)) {
74
- $errors[self::SITE_KEY] = "Has Empty Data";
75
- }
76
- return $errors;
77
- }
78
-
79
- public function getFeatureFields() {
80
- return Unbxd_Recommendation_Model_Field::$feature_fields;
81
- }
82
-
83
- public function getAllAttributes() {
84
- $attributes = Mage::getSingleton('eav/config')
85
- ->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
86
- $fields = array();
87
- foreach($attributes as $attribute) {
88
- $fields[] = $attribute->getName();
89
- }
90
- $fields[] = "final_price";
91
- return $fields;
92
- }
93
-
94
- private function getFieldMapping($fields) {
95
- $fieldMapping = array();
96
- foreach($fields as $field) {
97
- $fieldMapping[$field->getFieldName()] = $field;
98
- }
99
- return $fieldMapping;
100
- }
101
-
102
- /**
103
- * @param $fields
104
- * @return array
105
- */
106
- private function validate($fields) {
107
- $errors = array();
108
- foreach($fields as $field) {
109
- if(!array_key_exists(Unbxd_Recommendation_Model_Field::field_name, $field)) {
110
- $errors[Unbxd_Recommendation_Model_Field::field_name] = "Not Present for all the fields";
111
- } else if (is_null($field[Unbxd_Recommendation_Model_Field::field_name]) ||
112
- $field[Unbxd_Recommendation_Model_Field::field_name] =="") {
113
- $errors[Unbxd_Recommendation_Model_Field::field_name] = "field Name is empty for some fields";
114
- }
115
- if (!array_key_exists(Unbxd_Recommendation_Model_Field::datatype, $field)) {
116
- $errors[Unbxd_Recommendation_Model_Field::datatype] = "Not Present for all the fields";
117
- } else if (!in_array($field[Unbxd_Recommendation_Model_Field::datatype], Unbxd_Recommendation_Model_Field::$data_types)){
118
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'Invalid feature field '.
119
- $field[Unbxd_Recommendation_Model_Field::datatype]);
120
- $errors[Unbxd_Recommendation_Model_Field::datatype] = "Invalid datatype specified";
121
- }
122
-
123
- if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
124
- if(!array_key_exists($field[Unbxd_Recommendation_Model_Field::featured_field],
125
- Mage::getModel('unbxd_recommendation/field')->getFeaturedFields())) {
126
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'Invalid feature field '.
127
- $field[Unbxd_Recommendation_Model_Field::featured_field]);
128
- $errors[Unbxd_Recommendation_Model_Field::featured_field] = "Invalid feature field specified";
129
- }
130
- }
131
- }
132
- return $errors;
133
- }
134
-
135
- public function deleteFields($fields, $website) {
136
- $errors = $this->validate($fields);
137
- if(sizeof($errors) != 0) {
138
- return $errors;
139
- }
140
- $collection = $this->buildFieldCollection($fields, $website);
141
- return Mage::getModel("unbxd_recommendation/field")->saveFields($collection);
142
- }
143
-
144
- /**
145
- * @param $fields
146
- * @param $website
147
- * @return array
148
- */
149
- public function saveFields($fields, $website) {
150
- $errors = $this->validate($fields);
151
- if(sizeof($errors) != 0) {
152
- return $errors;
153
- }
154
- $collection = $this->buildFieldCollectionToAdd($fields, $website);
155
- $response = Mage::getModel("unbxd_recommendation/field")->saveFields($collection);
156
- if(!is_array($response) && $response === true) {
157
- $this->triggerUpdateFeatureField($website);
158
- }
159
- }
160
-
161
-
162
- public function triggerUpdateFeatureField(Mage_Core_Model_Website $website) {
163
- Mage::getResourceModel('unbxd_recommendation/config')
164
- ->setValue($website->getWebsiteId(), self::NEED_FEATURE_FIELD_UPDATION, 1);
165
- $this->triggerFeedUpload($website);
166
- }
167
-
168
- /**
169
- * Method to trigger feed upload
170
- * @param Mage_Core_Model_Website $website
171
- * @return void
172
- */
173
- public function triggerFeedUpload(Mage_Core_Model_Website $website) {
174
- Mage::getModel('unbxd_recommendation/api_task_triggerfeedupload')
175
- ->prepare($website)
176
- ->process();
177
- }
178
-
179
- private function getFeatureFieldToFieldMapping($fields) {
180
- $featureFieldToFieldMapping = array();
181
- foreach($fields as $field) {
182
- if($field instanceof Unbxd_Recommendation_Model_Field &&
183
- $field->hasData(Unbxd_Recommendation_Model_Field::featured_field) &&
184
- !is_null($field->getData(Unbxd_Recommendation_Model_Field::featured_field))) {
185
- $featureFieldToFieldMapping[$field[Unbxd_Recommendation_Model_Field::featured_field]] = $field;
186
- }
187
- }
188
- return $featureFieldToFieldMapping;
189
- }
190
-
191
- private function buildFieldCollection($fields, $website) {
192
- $collection = array();
193
- $fieldMapping = $this->getFieldMapping($this->getFields($fields, $website));
194
- foreach($fields as $field) {
195
- if (!array_key_exists(Unbxd_Recommendation_Model_Field::field_name, $field)) {
196
- continue;
197
- }
198
- if(array_key_exists($field[Unbxd_Recommendation_Model_Field::field_name], $fieldMapping)) {
199
- $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
200
- }
201
- }
202
- return $collection;
203
- }
204
-
205
- private function buildFieldCollectionToAdd($fields, $website) {
206
- $collection = array();
207
- $fieldMapping = $this->getFieldMapping($this->getFields($fields, $website));
208
- $featureFieldToFieldMapping = $this->getFeatureFieldToFieldMapping($fieldMapping);
209
-
210
- foreach($fields as $field) {
211
- if(!array_key_exists(Unbxd_Recommendation_Model_Field::field_name, $field)) {
212
- continue;
213
- }
214
- /*
215
- All possible test cases
216
- 1) if field name is present and it was a feature field
217
- 1.a) if request feature field is equal to selected feature field, dont do anything
218
- 1.b) if request feature field is not equal to selected feature field, dont do anything
219
- 1.c) if request field is not a feature field,
220
- remove the field name entry from the feature field row, save as different row.
221
-
222
- 2) if field name is present and it was not a feature field
223
- 2.a) if request field is a feature field,
224
- remove the field name entry as a normal field and save as feature field
225
- 2.b) if request field is not a feature field,
226
- update the existing field
227
-
228
- 3) if field name not present,
229
- save as a new field
230
- */
231
-
232
- // case 1
233
- if(array_key_exists($field[Unbxd_Recommendation_Model_Field::field_name], $fieldMapping ) &&
234
- $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]]->hasData(Unbxd_Recommendation_Model_Field::featured_field) &&
235
- !is_null($fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]]->getData(Unbxd_Recommendation_Model_Field::featured_field))) {
236
- //case 1 a)
237
- if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field) &&
238
- $field[Unbxd_Recommendation_Model_Field::featured_field] ==
239
- $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]][Unbxd_Recommendation_Model_Field::featured_field]) {
240
- continue;
241
- }
242
- // case 1 b)
243
- else if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
244
- $collection[]["delete"] = $featureFieldToFieldMapping[$field[Unbxd_Recommendation_Model_Field::featured_field]];
245
- $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
246
- $fieldModel = Mage::getModel("unbxd_recommendation/field");
247
- $fieldModel->setFeaturedField($field[Unbxd_Recommendation_Model_Field::featured_field]);
248
- }
249
-
250
- //case 1 c)
251
- else {
252
- $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
253
- $fieldModel = Mage::getModel("unbxd_recommendation/field");
254
-
255
- }
256
- } else if(array_key_exists($field[Unbxd_Recommendation_Model_Field::field_name], $fieldMapping)) {
257
- //case 2 a)
258
- if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
259
- $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
260
- $fieldModel = Mage::getModel("unbxd_recommendation/field");
261
- $fieldModel->setFeaturedField($field[Unbxd_Recommendation_Model_Field::featured_field]);
262
- }
263
- // case 2 b)
264
- else {
265
- $fieldModel = $fieldMapping[$field[Unbxd_Recommendation_Model_Field::field_name]];
266
- }
267
- } else {
268
- $fieldModel = Mage::getModel("unbxd_recommendation/field");
269
- if (array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $field)) {
270
- $fieldModel->setFeaturedField($field[Unbxd_Recommendation_Model_Field::featured_field]);
271
- }
272
-
273
- }
274
- $fieldModel->setFieldName($field[Unbxd_Recommendation_Model_Field::field_name]);
275
- $fieldModel->setDatatype($field[Unbxd_Recommendation_Model_Field::datatype]);
276
- $fieldModel->setAutosuggest(0);
277
- $fieldModel->setWebsiteId($website->getWebsiteId());
278
- $fieldModel->setDisplayed(1);
279
- $collection[]["add"] = $fieldModel;
280
- }
281
- return $collection;
282
- }
283
-
284
- /**
285
- * Method to getFields, if
286
- *
287
- * @param $fields
288
- * @return mixed
289
- */
290
- private function getFields($fields, $website) {
291
- $inField = array();
292
- foreach($fields as $field) {
293
- $inField[] = "'" .$field[Unbxd_Recommendation_Model_Field::field_name]. "'";
294
- }
295
- $collection = Mage::getResourceModel("unbxd_recommendation/field_collection");
296
-
297
- $collection->getSelect()->where('(' . Unbxd_Recommendation_Model_Field::field_name . ' in ('. implode(",", $inField). ')'. " OR ".
298
- Unbxd_Recommendation_Model_Field::featured_field. " IS NOT NULL) AND ".
299
- Unbxd_Recommendation_Model_Field::website_id . " = " . $website->getWebsiteId());
300
- return $collection->load();
301
- }
302
-
303
-
304
- /**
305
- * Method to update feature fields to unbxd
306
- *
307
- * @return bool| array
308
- */
309
- public function updateFeatureFields(Mage_Core_Model_Website $website) {
310
- $response = Mage::getModel("unbxd_recommendation/api_task_updatefeaturefields")
311
- ->prepare($website)
312
- ->process();
313
- if(! $response->isSuccess()) {
314
- Mage::log(Zend_Log::ERR,
315
- "Update feature fields failed because of theses errors ".json_encode($response->getErrors()));
316
- return $response->getErrors();
317
- }
318
- return true;
319
- }
320
-
321
- public function getNumberOfDocsInUnbxd(Mage_Core_Model_Website $website) {
322
- $response = Mage::getModel('unbxd_recommendation/api_task_feeddetails')
323
- ->prepare($website)
324
- ->process();
325
- if($response->isSuccess()) {
326
- $response = $response->getResponse();
327
- $feedInfo = $response[Unbxd_Recommendation_Model_Api_Task_Feeddetails::FEEDINFO];
328
- return $feedInfo[Unbxd_Recommendation_Model_Api_Task_Feeddetails::NUMDOCS];
329
- }
330
- return 0;
331
- }
332
- }
333
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Helper/Data.php DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd
7
- */
8
- class Unbxd_Recommendation_Helper_Data extends Mage_Core_Helper_Abstract {
9
-
10
- const LOG_FILE = "unbxd_recommendation.log";
11
-
12
- /**
13
- * Method to log
14
- *
15
- * @param int $level
16
- * @param string $message
17
- */
18
- public function log($level, $message) {
19
- Mage::log($message, $level, static::LOG_FILE, true);
20
- }
21
-
22
- }
23
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Api/Task/Widget.php DELETED
@@ -1,236 +0,0 @@
1
- <?php
2
- /**
3
- * Created by IntelliJ IDEA.
4
- * User: anantheshadiga
5
- * Date: 10/21/14
6
- * Time: 1:01 AM
7
- */
8
-
9
- class Unbxd_Recommendation_Model_Api_Task_Widget extends Unbxd_Recommendation_Model_Api_Task {
10
-
11
- const WIDGET_TYPE = 'widgetType';
12
-
13
- const jsonResponse = false;
14
-
15
- public static $WIDGET_TYPES = array(
16
- 'recommend' => 'unbxd_recommended_for_you',
17
- 'recommend' => 'unbxd_recommended_for_you',
18
- 'recently-viewed' =>'unbxd_recently_viewed',
19
- 'more-like-these' => 'unbxd_more_like_these',
20
- 'also-bought' =>'unbxd_also_bought',
21
- 'also-viewed' => 'unbxd_also_viewed',
22
- 'top-sellers' => 'unbxd_top_sellers',
23
- 'category-top-sellers' => 'unbxd_category_top_sellers',
24
- 'brand-top-sellers' => 'unbxd_brand_top_sellers',
25
- 'pdp-top-sellers' => 'unbxd_pdp_top_sellers',
26
- 'brand-top-sellers' => 'unbxd_brand_top_sellers',
27
- 'cart-recommend' => 'unbxd_cart_recommendations');
28
-
29
- public function prepare(Mage_Core_Model_Website $website) {
30
- $this->preparationSuccessful = true;
31
- $widgetType = $this->getWidgetType();
32
- if(is_null($widgetType)) {
33
- return $this;
34
- }
35
- $this->prepareUrl($website, $widgetType);
36
- $this->prepareParams();
37
- return $this;
38
- }
39
-
40
- protected function prepareParams() {
41
- $this->setData('ip',
42
- isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR'])
43
- ->setData('format', 'html');
44
- }
45
-
46
- protected function getWidgetType() {
47
- $params = $this->getData();
48
- if(!array_key_exists(static::WIDGET_TYPE, $params) ||
49
- !array_key_exists($params[static::WIDGET_TYPE], static::$WIDGET_TYPES) ) {
50
- $this->preparationSuccessful = false;
51
- $this->errors["message"] = "Invalid widget type";
52
- return null;
53
- }
54
- return $params[static::WIDGET_TYPE];
55
- }
56
-
57
- protected function prepareUrl(Mage_Core_Model_Website $website, $widget)
58
- {
59
- $params = $this->getData();
60
- $siteKey = Mage::getResourceModel("unbxd_recommendation/config")
61
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
62
- $apiKey = Mage::getResourceModel("unbxd_recommendation/config")
63
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY);
64
- if (is_null($siteKey)) {
65
- $this->preparationSuccessful = false;
66
- $this->errors["message"] = "Site key not set";
67
- return;
68
- }
69
-
70
- $pk = $this->getPrimaryToken();
71
- $pk = rawurlencode($pk);
72
-
73
- if ($pk != '') {
74
- static::$url = static::RECOMMENDATION_API . "v1.0/$apiKey/$siteKey/$widget/$pk";
75
- return;
76
- } else if($params[static::WIDGET_TYPE] == 'top-sellers' || $params[static::WIDGET_TYPE] == 'recommend') {
77
- static::$url = static::RECOMMENDATION_API . "v1.0/$apiKey/$siteKey/$widget";
78
- return;
79
- } else {
80
- $this->preparationSuccessful = false;
81
- $this->errors["message"] = "Primary token missing for the specified widget";
82
- return;
83
- }
84
- }
85
-
86
- protected function getPrimaryToken() {
87
- $params = $this->getData();
88
-
89
- if($params[static::WIDGET_TYPE] == 'recently-viewed' || $params[static::WIDGET_TYPE] == 'recommend' ||
90
- $params[static::WIDGET_TYPE] == 'cart-recommend') {
91
- if(array_key_exists('uid', $params)) {
92
- return $params['uid'];
93
- } else {
94
- return '';
95
- }
96
- }
97
-
98
- if($params[static::WIDGET_TYPE] == 'also-viewed' || $params[static::WIDGET_TYPE] == 'also-bought' ||
99
- $params[static::WIDGET_TYPE] == 'more-like-these' || $params[static::WIDGET_TYPE] == 'pdp-top-sellers') {
100
- if(array_key_exists('pid', $params)) {
101
- return $params['pid'];
102
- } else {
103
- return '';
104
- }
105
- }
106
-
107
- if($params[static::WIDGET_TYPE] == 'category-top-sellers') {
108
- if(array_key_exists('category', $params)) {
109
- return $params['category'];
110
- } else {
111
- return '';
112
- }
113
- }
114
-
115
- if($params[static::WIDGET_TYPE] == 'brand-top-sellers') {
116
- if(array_key_exists('brand', $params)) {
117
- return $params['brand'];
118
- } else {
119
- return '';
120
- }
121
- }
122
- }
123
-
124
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response)
125
- {
126
- $body = $response->getBody();
127
- if(is_null($body) || $body == '') {
128
- return $response;
129
- }
130
- $body = $this->trimBody($body);
131
- $body = $this->parseBody($body);
132
- $body = $this->prepareResponse($body);
133
- $response->setData('body', $body);
134
- return $response;
135
- }
136
-
137
- protected function prepareResponse($body)
138
- {
139
- return $body;
140
- }
141
-
142
- private function getJavascriptNode($body) {
143
- $startpos = strpos($body, '<script');
144
- $endpos = strrpos($body, "</script>");
145
- if($startpos != false && $endpos != false) {
146
- return substr($body, $startpos, $endpos + strlen("</script>"));
147
- }
148
- return "";
149
- }
150
-
151
- protected function parseBody($body)
152
- {
153
- $prefix = '<html><body>';
154
- $postfix = '</body></html>';
155
- $dom = new DOMDocument;
156
-
157
- $strippedJs = $this->getJavascriptNode($body);
158
- $body = str_replace($strippedJs, "", $body);
159
- @$dom->loadHTML($prefix.$body. $postfix);
160
-
161
- $xpath = new DOMXPath($dom);
162
- $classname = 'unbxd-field-image_link';
163
- $nodes = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
164
- if(!isset($nodes)) {
165
- return $body;
166
- }
167
- $images = $this->getOrigImages($nodes);
168
- $images = $this->getFullImages($images);
169
- $this->setImages($images, $xpath);
170
- $body = $dom->saveHTML();
171
- $pos = strrpos($body, $postfix);
172
- if($pos != false) {
173
- $body = substr_replace($body, '', $pos, strlen($postfix));
174
- }
175
- $pos = strpos($body, $prefix);
176
- if($pos !== false ) {
177
- $body = substr_replace($body, '', $pos, strlen($prefix));
178
- }
179
- return $body.$strippedJs;
180
- }
181
-
182
- protected function setImages($images,DOMXPath $xpath) {
183
- foreach($images as $origImagePath => $modifiedImagePath) {
184
- $imageNode = $xpath->query('//img[@src="' . $origImagePath . '"]');
185
- if($imageNode instanceof DOMNodeList && $imageNode->length > 0) {
186
- for($index = 0;$index < $imageNode->length; $index++) {
187
- $imageNode->item($index)->setAttribute('src', $modifiedImagePath);
188
- }
189
- }
190
- }
191
- }
192
-
193
- protected function getOrigImages(DOMNodeList $nodes) {
194
- $images = array();
195
- foreach ($nodes as $node) {
196
- $img = $node->getElementsByTagName('img');
197
- if ($img instanceof DOMNodeList && $img->length > 0) {
198
- if ($img->item(0)->hasAttribute('src')) {
199
- $src = $img->item(0)->getAttribute('src');
200
- $images[] = $src;
201
- }
202
- }
203
- }
204
- return $images;
205
- }
206
-
207
- protected function getFullImages($images) {
208
- $website = Mage::app()->getWebsite();
209
- $imageField = Mage::getResourceModel("unbxd_recommendation/field")
210
- ->getFieldByFeatureField($website->getWebsiteId(), 'imageUrl');
211
- $fullImages = array();
212
-
213
- foreach($images as $img) {
214
- $product = Mage::getModel('catalog/product')
215
- ->setData($imageField, $img);
216
- $fullImages[$img] = (string)Mage::helper('catalog/image')->init($product, $imageField)
217
- ->resize(400, 500);
218
- }
219
- return $fullImages;
220
- }
221
-
222
- protected function trimBody($body) {
223
- $endPart = '").text();$(\'#' . static::$WIDGET_TYPES[$this->getData(static::WIDGET_TYPE)] . '\').html(decoded); })(jQuery);';
224
- $startPart = '(function($){var decoded = $(\'<div/>\').html("';
225
- $pos = strrpos($body, $endPart);
226
- if($pos != false) {
227
- $body = substr_replace($body, '', $pos, strlen($endPart));
228
- }
229
- $pos = strpos($body, $startPart);
230
- if($pos !== false ) {
231
- $body = substr_replace($body, '', $pos, strlen($startPart));
232
- }
233
- $body = trim(html_entity_decode($body, ENT_QUOTES));
234
- return $body;
235
- }
236
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Feed/Feedmanager.php DELETED
@@ -1,178 +0,0 @@
1
- <?php
2
-
3
- class Unbxd_Recommendation_Model_Feed_Feedmanager {
4
-
5
- //Delete the file after uploading the feed
6
- var $deleteIncrementalFeed = true;
7
-
8
- var $fileName = "unbxdFeed.json";
9
-
10
- var $key;
11
-
12
- var $siteName;
13
-
14
- /**
15
- * method to push the feed to the Unbxd server
16
- **/
17
- protected function _pushFeed($fullimport=true){
18
- $fields=array('file'=>'@'.$this->fileName.';filename='.'unbxdFeed.json');
19
- $url="http://feed.unbxdapi.com/upload/v2/".$this->key."/".$this->siteName. ($fullimport?"?fullimport=true":"");
20
-
21
- $ch = curl_init();
22
- curl_setopt($ch, CURLOPT_URL,$url);
23
- curl_setopt($ch, CURLOPT_POST,true);
24
- curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
25
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
26
- try{
27
- $this->log('pushing the feed to '.$url);
28
- // push the feed to the server
29
- $response = $this->exec($ch);
30
- $this->log(json_encode($response));
31
- $responseMessage = json_decode($response['body'], true);
32
- if($responseMessage["statusCode"] != 200) {
33
- throw new Exception('Unexpected response from unbxd server');
34
- }
35
- }catch(Exception $ex){
36
- $this->log("Error while uploading the feed because of " . $ex->getMessage());
37
- return false;
38
- }
39
- curl_close($ch);
40
- return true;
41
- }
42
-
43
- protected function exec($ch)
44
- {
45
- $response = curl_exec($ch);
46
- $error = curl_error($ch);
47
- $result = array( 'header' => '',
48
- 'body' => '',
49
- 'curl_error' => '',
50
- 'http_code' => '',
51
- 'last_url' => '');
52
- if ( $error != "" ) {
53
- $result['curl_error'] = $error;
54
- return $result;
55
- }
56
-
57
- $header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
58
- //$result['header'] = substr($response, 0, $header_size);
59
- $result['body'] = $response;
60
- $result['http_code'] = curl_getinfo($ch,CURLINFO_HTTP_CODE);
61
- $result['last_url'] = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
62
- return $result;
63
- }
64
-
65
- /**
66
- * method to set the feedName, log, apikey based on site Name
67
- **/
68
- public function init(Mage_Core_Model_Website $website, $isFullUpload)
69
- {
70
- $this->fileName = Mage::getBaseDir('tmp').DS.str_replace(' ', '_', $website->getName()).
71
- "_Feed" . (!$isFullUpload?round(microtime(true) * 1000):'') . ".json";
72
- $this->key = Mage::getResourceModel("unbxd_recommendation/config")
73
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
74
- $this->siteName = Mage::getResourceModel("unbxd_recommendation/config")
75
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
76
- if(is_null($this->siteName) || is_null($this->key)) {
77
- $message = 'Authorization failed, keys not set';
78
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, $message);
79
- return array('success' => false, 'message' => $message);
80
- }
81
- return true;
82
- }
83
-
84
- /**
85
- * method to update feature field if required
86
- *
87
- * @param Mage_Core_Model_Website $website
88
- * @return void
89
- */
90
- private function updateFeatureFields(Mage_Core_Model_Website $website) {
91
- $needFeatureFieldUpdation = Mage::getResourceModel("unbxd_recommendation/config")
92
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::NEED_FEATURE_FIELD_UPDATION);
93
- if(is_null($needFeatureFieldUpdation) || $needFeatureFieldUpdation == "1") {
94
- $response = Mage::helper('unbxd_recommendation/confighelper')->updateFeatureFields($website);
95
- if(!is_array($response)) {
96
- Mage::getResourceModel("unbxd_recommendation/config")
97
- ->setValue($website->getWebsiteId(),
98
- Unbxd_Recommendation_Helper_Confighelper::NEED_FEATURE_FIELD_UPDATION, 0);
99
- } else {
100
- $this->log("error while updating the feature fields");
101
- }
102
- }
103
- }
104
-
105
- /**
106
- * method to initiate feed uploading to the unbxd servers
107
- **/
108
- public function process($isFullUpload = true, Mage_Core_Model_Website $website){
109
-
110
- $this->log('Feed Uploading request recieved');
111
- $response = $this->init($website, $isFullUpload);
112
- if(is_array($response)){
113
- return $response;
114
- }
115
- $currentDate = date('Y-m-d H:i:s');
116
-
117
- // check the lock, that if already indexing is happening
118
- if(!$isFullUpload ||
119
- !Mage::getResourceModel("unbxd_recommendation/config")->isLock($website->getWebsiteId())) {
120
-
121
- $fromDate = Mage::getResourceSingleton('unbxd_recommendation/config')
122
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Model_Config::LAST_UPLOAD_TIME);
123
- if(is_null($fromDate)) {
124
- $fromDate = "1970-01-01 00:00:00";
125
- }
126
-
127
- $this->log('site '. $website->getName() .' is acquiring feed lock');
128
- if($isFullUpload) {
129
- Mage::getResourceModel('unbxd_recommendation/config')->lockSite($website->getWebsiteId());
130
- }
131
-
132
- // create the feed
133
- try {
134
- $status = Mage::getSingleton('unbxd_recommendation/feed_feedcreator')
135
- ->setFullUpload($isFullUpload)
136
- ->createFeed($this->fileName, $website, $fromDate, $currentDate);
137
- } catch (Exception $e) {
138
- $this->log('Caught exception: '. $e->getMessage());
139
- return array('success' => false, 'message' => $e->getMessage());
140
- }
141
- $this->log('unbxd Datafeeder finished creating file');
142
-
143
- if($status){
144
- $status=$this->_pushFeed($isFullUpload);
145
- if($status){
146
- Mage::getResourceSingleton("unbxd_recommendation/config")
147
- ->setValue($website->getWebsiteId(),
148
- Unbxd_Recommendation_Model_Config::LAST_UPLOAD_TIME, $currentDate);
149
- $this->updateFeatureFields($website);
150
- }
151
- }
152
-
153
- if($isFullUpload) {
154
- // unlock the feed once everything is completed
155
- Mage::getResourceModel('unbxd_recommendation/config')->unLockSite($website->getWebsiteId());
156
- } else {
157
- //In case of incremental feed delete the feed
158
- Mage::getSingleton('unbxd_recommendation/feed_filemanager')->deleteFile($this->fileName);
159
- }
160
-
161
- $this->log('site ' . $website->getName() .' has been unlocked');
162
- if($status) {
163
- Mage::getModel('unbxd_recommendation/sync')
164
- ->markItSynced($website->getWebsiteId(), $fromDate, $currentDate);
165
- return array('success' => true, 'message' => 'File uploaded successfully');
166
- }
167
- return array('success' => false, 'message' => 'Unexpected error, please contact support');
168
- } else {
169
- $this->log('Feed Uploading failed because site has been locked');
170
- return array('success' => false, 'message' => 'Feed is already being processed');
171
- }
172
- }
173
-
174
- public function log($message) {
175
- Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, $message);
176
- }
177
- }
178
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Jsonbuilder.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
4
-
5
-
6
-
7
- }
8
-
9
- ?>
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Productbuilder.php DELETED
@@ -1,330 +0,0 @@
1
- <?php
2
-
3
- class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Productbuilder extends
4
- Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
5
-
6
- const NUMBER = "number";
7
- const DECIMAL = "decimal";
8
- const DATE = "date";
9
- const IMAGE_HEIGHT = "image_height";
10
- const IMAGE_WIDTH = "image_width";
11
- const GENERATE_IMAGE = "generate_image";
12
-
13
- /*
14
- * method to get the products in json
15
- */
16
- public function getProducts($website, $collection, $fields) {
17
- $content='';
18
- $firstLoop = true;
19
- foreach($collection as $product) {
20
- if(!$firstLoop) {
21
- $content = $content . ",";
22
- }
23
-
24
- $productArray = $this->getProduct($website, $product, $fields);
25
- $productArray = $this->postProcessProduct($productArray, $fields, false);
26
- $content=$content.json_encode($productArray);
27
-
28
- $firstLoop = false;
29
- }
30
-
31
- return rtrim($content, ",");
32
- }
33
-
34
-
35
- /*
36
- * method to get the product in json
37
- */
38
- public function getProduct($website, $product, $fields, $childProduct = false) {
39
- $productArray =array();
40
-
41
- foreach($product->getData('') as $columnHeader=>$columndata){
42
-
43
- $unbxdFieldName = $this->getUnbxdFieldName($columnHeader, $childProduct);
44
- if(isset($unbxdFieldName) && $unbxdFieldName != "" && !array_key_exists($unbxdFieldName, $fields)) {
45
- continue;
46
- }
47
-
48
- if($columnHeader=="entity_id"){
49
- $uniqueIdField = 'uniqueId'.(($childProduct)?'Associated':'');
50
- $productArray[$uniqueIdField] = $columndata;
51
- }else if($columnHeader=="url_path"){
52
- // handling the url
53
- $productArray[$unbxdFieldName] = $product->getProductUrl();
54
- } else if (Mage::helper('unbxd_recommendation/feedhelper')->isImage($columnHeader)) {
55
- // handling tthe images
56
- $attributeValue = $this->getImage($columnHeader, $unbxdFieldName, $product, $fields);
57
- if(!is_null($attributeValue)) {
58
- $productArray[$unbxdFieldName] = $attributeValue;
59
- }
60
-
61
- } else if( $fields[$unbxdFieldName][Unbxd_Recommendation_Model_Field::multivalued]){
62
- // handling the array/ multiselect attribute
63
- $attributeValue = $this->getMultiSelectAttribute($columnHeader, $product);
64
- if(!is_null($attributeValue)) {
65
- $productArray[$unbxdFieldName] = $attributeValue;
66
- }
67
- } else if (!is_null($columndata) && $columndata != ""){
68
- //adding the normal attribute
69
- $productArray[$unbxdFieldName] = $columndata;
70
- }
71
- }
72
- if(!$childProduct) {
73
-
74
- // adding the childProduct
75
- //$productArray = $this->addChildrens($product, $fields, $productArray);
76
-
77
- $category = $this->getCategoryAttribute($website, $product);
78
- // adding the category
79
- $productArray = $category + $productArray;
80
- //adding availability
81
- $productArray[Unbxd_Recommendation_Model_Resource_Field::AVAILABILITY] =
82
- $product->isSalable()? "true": "false";
83
- if(array_key_exists(Unbxd_Recommendation_Model_Resource_Field::FINAL_PRICE, $fields) &&
84
- array_key_exists(Unbxd_Recommendation_Model_Resource_Field::PRICE, $productArray) &&
85
- (!array_key_exists(Unbxd_Recommendation_Model_Resource_Field::FINAL_PRICE, $productArray) ||
86
- is_null($productArray[Unbxd_Recommendation_Model_Resource_Field::FINAL_PRICE]))) {
87
- $productArray[Unbxd_Recommendation_Model_Resource_Field::FINAL_PRICE] =
88
- $productArray[Unbxd_Recommendation_Model_Resource_Field::PRICE];
89
- }
90
-
91
- }
92
- return $productArray;
93
- }
94
-
95
- /**
96
- * method to get category content in xml given the product object
97
- */
98
- private function getCategoryAttribute($website, $product){
99
- $cats = $product->getCategoryIds();
100
- $categoryIds = array();
101
- $category = array();
102
- $categoryData = array();
103
- foreach ($cats as $categoryId) {
104
- $_cat = Mage::helper('unbxd_recommendation/feedhelper')->getCategory($categoryId);
105
- if($_cat == null) {
106
- continue;
107
- }
108
- $categoryName = $_cat->getName();
109
- if($categoryName == null || $categoryName == "") {
110
- continue;
111
- }
112
- $categoryIds[] = (string)$categoryId;
113
- $category[] = $categoryName;
114
- }
115
-
116
- for($level =1; $level <=4 ; $level++) {
117
- $levelCategories = Mage::helper('unbxd_recommendation/feedhelper')
118
- ->getCategoryOnLevel($categoryIds, $level);
119
-
120
- if (sizeof($levelCategories) > 0) {
121
- $categoryData['categoryLevel' . $level] = $levelCategories;
122
- $categoryData['catLevel' . $level . 'Name'] = $levelCategories[0];
123
- $category = array_merge($category, $levelCategories);
124
- }
125
- }
126
-
127
- $categoryData[Unbxd_Recommendation_Model_Resource_Field::CATEGORY_IDS_NAME] = $categoryIds;
128
- $categoryData[Unbxd_Recommendation_Model_Resource_Field::CATEGORY_NAME] = $category;
129
- return $categoryData;
130
- }
131
-
132
- /*
133
- * method to returns as an array of values given the fieldName and the product
134
- */
135
- private function getMultiSelectAttribute($fieldName, $product) {
136
- $data = explode(",", $product->getData($fieldName));
137
- $valueAsAnArray = array();
138
- foreach($data as $eachdata){
139
- $attributeValue = Mage::getResourceSingleton("unbxd_recommendation/attribute")
140
- ->getAttributeValue($fieldName, trim($eachdata), $product);
141
- if(!is_null($attributeValue) && $attributeValue != "" && $attributeValue != "Use Config") {
142
- $valueAsAnArray[] = $attributeValue;
143
- }
144
- }
145
- if(sizeof($valueAsAnArray) > 0) {
146
- return $valueAsAnArray;
147
- }
148
- return null;
149
- }
150
-
151
- /*
152
- * generates the image
153
- */
154
- private function getImage($fieldName, $unbxdFieldName, $product, $fields) {
155
-
156
- if(array_key_exists(self::GENERATE_IMAGE, $fields) &&
157
- $fields[$unbxdFieldName][self::GENERATE_IMAGE] == "1") {
158
- Mage::getDesign()->setArea('frontend');
159
- try {
160
- return (string)Mage::helper('catalog/image')->init($product, $fieldName)
161
- ->resize($fields[$unbxdFieldName][self::IMAGE_WIDTH],
162
- $fields[$unbxdFieldName][self::IMAGE_HEIGHT]);
163
- } catch (Exception $e) {
164
- error_log("Error while fetching the image" . $e->getMessage());
165
- }
166
- }
167
- return $product->getData($fieldName);
168
- }
169
-
170
- /*
171
- * get unbxd specfic field name for the magento field name
172
- */
173
- private function getUnbxdFieldName($columnHeader, $isChild) {
174
- if($isChild) {
175
- $unbxdFieldName = $columnHeader . "Associated";
176
- } else {
177
- $unbxdFieldName = $columnHeader;
178
- }
179
- return $unbxdFieldName;
180
- //return $this->renameConflictedFeatureFields($unbxdFieldName);
181
- }
182
-
183
- /*
184
- * Renaming the conflicted unbxd feature fields eg: gender to _gender
185
- */
186
- private function renameConflictedFeatureFields($unbxdFieldName) {
187
- if (in_array($unbxdFieldName, Mage::getResourceSingleton('unbxd_recommendation/field')->getConflictedFeatureFieldLust())) {
188
- return "_" . $unbxdFieldName;
189
- }
190
- return $unbxdFieldName;
191
- }
192
-
193
- /**
194
- * gives the children in form of array
195
- */
196
- public function addChildrens($product, $fields, $productArray) {
197
-
198
- $type = $product->getData('type_id');
199
- if ($type == "configurable" || $type == "grouped" ) {
200
- $associatedProducts = array();
201
- $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
202
- $childrens = $conf->getUsedProductCollection()
203
- ->addAttributeToSelect('*')
204
- ->addFilterByRequiredOptions()
205
- ->joinField("qtyAssociated", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left');
206
- foreach ($childrens as $children)
207
- {
208
- $childProduct = $this->getProduct($children, $fields, true);
209
- if(isset($childProduct) && sizeof($childProduct) > 0 ) {
210
- $childProduct = $this->postProcessProduct($childProduct, $fields, true);
211
- $associatedProducts[] = $childProduct;
212
- }
213
- }
214
- if( sizeof($associatedProducts) > 0) {
215
- $productArray["associatedProducts"] = $associatedProducts;
216
- }
217
- return $productArray;
218
- } else {
219
- return $productArray;
220
- }
221
- }
222
-
223
- /**
224
- * process the prodcut
225
- */
226
- public function postProcessProduct($product, $fields, $isChild=false) {
227
- if($isChild) {
228
- $product = $this->convertMultivalued($product);
229
- } else {
230
- $product = $this->convertMultivalued($product, $fields);
231
- }
232
- $product = $this->convertDataType($product, $fields, $isChild);
233
- return $product;
234
- }
235
-
236
- /*
237
- * convert the data type according to the dashboard setup
238
- */
239
- public function convertDataType($product, $fields) {
240
- foreach($product as $fieldName => $value) {
241
- if($fieldName != "associatedProducts") {
242
- $product[$fieldName] = $this->convertDataTypeByValue($fields[$fieldName], $value);
243
- }
244
- }
245
- return $product;
246
- }
247
-
248
- /*
249
- * method to get the float values
250
- */
251
- private function getFloatValues($value) {
252
- if(is_array($value)) {
253
- $valueAsAnArray = array();
254
- foreach ($value as $eachValue) {
255
- $valueAsAnArray[] = floatval($eachValue);
256
- }
257
- return $valueAsAnArray;
258
- } else {
259
- return floatval($value);
260
- }
261
- }
262
-
263
-
264
- /*
265
- * returns the array as number
266
- */
267
- private function getNumberValues($value) {
268
- if(is_array($value)) {
269
- $valueAsAnArray = array();
270
- foreach ($value as $eachValue) {
271
- $valueAsAnArray[] = intval($eachValue);
272
- }
273
- return $valueAsAnArray;
274
- } else {
275
- return intval($value);
276
- }
277
- }
278
-
279
- /*
280
- * returns the date value
281
- */
282
- private function getDateValues($value) {
283
- if(is_array($value)) {
284
- $tempValue = array();
285
- foreach ($value as $eachValue) {
286
- $tokens = explode(" ",$eachValue);
287
- $tempValue[] = $tokens[0].'T'.$tokens[1].'Z';
288
- }
289
- return $tempValue;
290
- }
291
- $tokens = explode(" ",$value);
292
- $value = $tokens[0].'T'.$tokens[1].'Z';
293
- return $value;
294
- }
295
-
296
- /*
297
- * returns the data type value
298
- */
299
- private function convertDataTypeByValue($data_type, $value) {
300
- if($data_type[Unbxd_Recommendation_Model_Field::datatype] == self::DECIMAL) {
301
- return $this->getFloatValues($value);
302
- } else if ($data_type[Unbxd_Recommendation_Model_Field::datatype] == self::NUMBER) {
303
- return $this->getNumberValues($value);
304
- } else if ($data_type[Unbxd_Recommendation_Model_Field::datatype] == self::DATE) {
305
- return $this->getDateValues($value);
306
- }
307
- return $value;
308
- }
309
-
310
- /*
311
- * returns the product by changing it to multivalued after checking its data type
312
- */
313
- public function convertMultivalued($product, $fields = null) {
314
- foreach($product as $field=>$value) {
315
- if((is_null($fields) ||
316
- (($field != "associatedProducts") &&
317
- array_key_exists(Unbxd_Recommendation_Model_Field::multivalued,$fields[$field]) &&
318
- $fields[$field][Unbxd_Recommendation_Model_Field::multivalued])) &&
319
- !is_array($value)) {
320
-
321
- $valueAsAnArray = array();
322
- $valueAsAnArray[] = $value;
323
- $product[$field] = $valueAsAnArray;
324
- }
325
- }
326
- return $product;
327
- }
328
- }
329
-
330
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Feed/Jsonbuilder/Schemabuilder.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
-
3
- class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Schemabuilder extends Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
4
-
5
-
6
- const FIELD_NAME = "fieldName";
7
- const DATA_TYPE = "dataType";
8
- const MULTIVALUED = "multiValued";
9
- const AUTOSUGGEST = "autoSuggest";
10
- const TRUE = "true";
11
- const FALSE = "false";
12
-
13
- public function getSchema($fields) {
14
- $fieldList = array();
15
- foreach($fields as $fieldName=>$values ) {
16
- $fieldList[] = array(self::FIELD_NAME => $fieldName,
17
- self::DATA_TYPE => $values[Unbxd_Recommendation_Model_Field::datatype],
18
- self::MULTIVALUED =>
19
- (array_key_exists(Unbxd_Recommendation_Model_Field::multivalued, $values)
20
- && $values[Unbxd_Recommendation_Model_Field::multivalued])?
21
- self::TRUE:self::FALSE,
22
- self::AUTOSUGGEST => ($values[Unbxd_Recommendation_Model_Field::autosuggest] == 1?self::TRUE: self::FALSE));
23
-
24
- }
25
- return json_encode($fieldList);
26
- }
27
- }
28
-
29
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Field.php DELETED
@@ -1,147 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * This class maintains the config of the fields that are needed by unbxd
5
- *
6
- * @category Unbxd
7
- * @package Unbxd_Recommendation
8
- * @author Unbxd Software Pvt. Ltd
9
- */
10
- class Unbxd_Recommendation_Model_Field extends Mage_Core_Model_Abstract {
11
-
12
- /**
13
- * field name column in db
14
- */
15
- const field_name = "field_name";
16
-
17
- /**
18
- * datatype column name in db
19
- */
20
- const datatype = "datatype";
21
-
22
- /**
23
- * autosuggest column name in db
24
- */
25
- const autosuggest = "autosuggest";
26
-
27
- /**
28
- * featured_field column name in db
29
- */
30
- const featured_field = "featured_field";
31
-
32
- /**
33
- * displayable column name in db
34
- */
35
- const dislayable = "displayed";
36
-
37
- const multivalued = 'multivalued';
38
-
39
- /**
40
- * website id column name in db
41
- */
42
- const website_id = "website_id";
43
-
44
- const status = 'status';
45
-
46
- /**
47
- * All possible data type values supported unbxd
48
- * @var array
49
- */
50
- public static $data_types = array("text", "longText", "link", "decimal", "number", "datetime");
51
-
52
- public static $displayableFeatureFields = array('title', 'price',
53
- 'brand', 'color', 'size', 'imageUrl', 'productUrl');
54
-
55
- public static $featurefields = array();
56
-
57
- /**
58
- *
59
- * @return void
60
- */
61
- protected function _construct()
62
- {
63
- $this->_init('unbxd_recommendation/field');
64
- Unbxd_Recommendation_Model_Field::$featurefields = $this->getFeaturedFields();
65
-
66
- }
67
-
68
-
69
- /**
70
- * Save fields
71
- *
72
- * @return void
73
- */
74
- public function saveFields($collection) {
75
- $this->_getResource()->beginTransaction();
76
- try {
77
- foreach ($collection as $data) {
78
- if(sizeof($data) > 0) {
79
- if(array_key_exists("add", $data)) {
80
- $data["add"]->save();
81
- } else if (array_key_exists("delete", $data)) {
82
- $data["delete"]->delete();
83
- }
84
- }
85
- }
86
-
87
- $this->_getResource()->commit();
88
- } catch(Exception $e) {
89
- $this->_getResource()->rollBack();
90
- Mage::helper("unbxd_recommendation")->log(Zend_Log::ERR, "Saving fields failed because " . $e->getMessage());
91
- return array('OTHERS' => $e->getMessage());
92
- }
93
- return true;
94
-
95
- }
96
-
97
- /*
98
- * method to get the featured fields
99
- */
100
- public function getFeaturedFields() {
101
- $featuredFields = array();
102
- $featuredFields["uniqueId"]=$this->getField("text", "false", "false");
103
- $featuredFields["sellingPrice"]=$this->getField("decimal", "false", "false");
104
- $featuredFields["discount"]=$this->getField("decimal", "false", "false");
105
- $featuredFields["rating"]=$this->getField("decimal", "false", "false");
106
- $featuredFields["brandId"]=$this->getField("text", "false", "false");
107
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_1_NAME] =
108
- $this->getField("text", "false", "false");
109
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_2_NAME] =
110
- $this->getField("text", "false", "false");
111
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_3_NAME] =
112
- $this->getField("text", "false", "false");
113
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_4_NAME] =
114
- $this->getField("text", "false", "false");
115
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_1] =
116
- $this->getField("text", "true", "false");
117
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_2] =
118
- $this->getField("text", "true", "false");
119
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_3] =
120
- $this->getField("text", "true", "false");
121
- $featuredFields[Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_4] =
122
- $this->getField("text", "true", "false");
123
- $featuredFields["category"] = $this->getField("text", "true", "true");
124
- $featuredFields["subCategory"]=$this->getField("text", "true", "true");
125
- $featuredFields["color"]=$this->getField("text", "true", "false");
126
- $featuredFields["size"]=$this->getField("text", "true", "false");
127
- $featuredFields["availability"]=$this->getField("bool", "false", "false");
128
- $featuredFields["description"]=$this->getField("longText", "false", "false");
129
- $featuredFields["imageUrl"]=$this->getField("link", "true", "false");
130
- $featuredFields["productUrl"]=$this->getField("link", "false", "false");
131
- $featuredFields["brand"]=$this->getField("text", "false", "true");
132
- $featuredFields["price"]=$this->getField("decimal", "false", "false");
133
- $featuredFields["title"]=$this->getField("text", "false", "true");
134
- $featuredFields["gender"]=$this->getField("text", "false", "false");
135
- $featuredFields["unbxdVisibility"]=$this->getField("text", "false", "false");
136
- return $featuredFields;
137
- }
138
-
139
- public function getField($dataType, $multiValued, $autosuggest) {
140
- return array( self::status => 1, self::datatype => $dataType,
141
- self::multivalued => ($multiValued=="true")?1:0,
142
- self::autosuggest => ($autosuggest=="true")?1:0 );
143
-
144
- }
145
- }
146
-
147
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Resource/Config.php DELETED
@@ -1,136 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd
7
- */
8
- class Unbxd_Recommendation_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abstract
9
- {
10
-
11
- /**
12
- * Unbxd Config table Name
13
- *
14
- * @var string
15
- */
16
- protected $_unbxdConfigTable;
17
-
18
- // date format
19
- const DATE_FORMAT = 'Y-m-d H:i:s';
20
-
21
- /**
22
- * @return void
23
- */
24
- protected function _construct()
25
- {
26
- $this->_init('unbxd_recommendation/config', 'id');
27
- $this->_unbxdConfigTable = $this->getTable('unbxd_recommendation/config');
28
- }
29
-
30
- /**
31
- * @param $website_id
32
- * @param $key
33
- * @return null|string
34
- */
35
- public function getValue($website_id, $key)
36
- {
37
- $adapter = $this->_getReadAdapter();
38
-
39
- if(is_array($key)) {
40
- $keyValuePair = array();
41
- foreach ($key as $eachKey) {
42
- $keyValuePair[$eachKey] = $this->getValue($website_id, $eachKey);
43
- }
44
- return $keyValuePair;
45
- }
46
-
47
- $select = $adapter->select()
48
- ->from($this->_unbxdConfigTable, 'value')
49
- ->where('`'.Unbxd_Recommendation_Model_Config::WEBSITE_ID.'` = ?', (int)$website_id)
50
- ->where('`'.Unbxd_Recommendation_Model_Config::KEY.'` = ?', $key);
51
-
52
- $result = $adapter->fetchOne($select);
53
- if($result === false) {
54
- return null;
55
- }
56
- return $result;
57
- }
58
-
59
- /**
60
- * @param int $website_id
61
- * @param string $key
62
- * @param string $value
63
- * @return void
64
- */
65
- public function setValue($website_id, $key, $value = null)
66
- {
67
- if (!isset($value) || $value == "" || !isset($key) || $key == "") {
68
- return;
69
- }
70
-
71
- if(is_array($key)) {
72
- foreach($key as $eachKey => $eachValue) {
73
- $this->setValue($website_id, $eachKey, $eachValue);
74
- }
75
- return;
76
- }
77
-
78
- $config = Mage::getModel('unbxd_recommendation/config')->getCollection()
79
- ->addFieldToFilter('`'.Unbxd_Recommendation_Model_Config::KEY.'`', $key)
80
- ->addFieldToFilter('`'.Unbxd_Recommendation_Model_Config::WEBSITE_ID.'`', (int)$website_id)
81
- ->getFirstItem();
82
-
83
- $config->setWebsiteId($website_id)
84
- ->setKey($key)
85
- ->setValue($value)
86
- ->save();
87
- }
88
-
89
- public function lockSite($website_id) {
90
- $this->setValue($website_id, array(
91
- Unbxd_Recommendation_Model_Config::FEED_LOCK => Unbxd_Recommendation_Model_Config::FEED_LOCK_TRUE,
92
- Unbxd_Recommendation_Model_Config::FEED_LOCK_TIME => date(self::DATE_FORMAT)), array());
93
-
94
- }
95
-
96
-
97
- public function unLockSite($website_id) {
98
- $this->setValue($website_id, Unbxd_Recommendation_Model_Config::FEED_LOCK,
99
- Unbxd_Recommendation_Model_Config::FEED_LOCK_FALSE);
100
- }
101
-
102
- public function isLock($website_id) {
103
- //fetch the values for feedlock, feed lock time from db
104
- $feedLockDetails = $this->getValue($website_id,
105
- array(Unbxd_Recommendation_Model_Config::FEED_LOCK, Unbxd_Recommendation_Model_Config::FEED_LOCK_TIME));
106
- //fetch feed lock from @var feedLockDetails
107
- $feedLock = array_key_exists(Unbxd_Recommendation_Model_Config::FEED_LOCK, $feedLockDetails)?
108
- $feedLockDetails[Unbxd_Recommendation_Model_Config::FEED_LOCK]:null;
109
-
110
- if(is_null($feedLock) || $feedLock == Unbxd_Recommendation_Model_Config::FEED_LOCK_FALSE){
111
- return false;
112
- }
113
-
114
- // Ignoring the feed Lock, if the feed has been locked more than $maxFeedLockTime
115
- if($feedLock == Unbxd_Recommendation_Model_Config::FEED_LOCK_TRUE &&
116
- array_key_exists(Unbxd_Recommendation_Model_Config::FEED_LOCK_TIME, $feedLockDetails)) {
117
-
118
- $feedLockTime = $feedLockDetails[Unbxd_Recommendation_Model_Config::FEED_LOCK_TIME];
119
- $date = strtotime($feedLockTime);
120
- $currentTime = strtotime(date(self::DATE_FORMAT));
121
- $diff = abs($date - $currentTime);
122
- $maxFeedLockTime = Mage::getConfig()->getNode('default/unbxd/general/max_feed_lock_feed');
123
- if(is_null($maxFeedLockTime)) {
124
- $maxFeedLockTime = Unbxd_Recommendation_Model_Config::MAX_FEED_LOCK_TIME;
125
- }
126
-
127
- if(round($diff / ( 60 * 60 )) > $maxFeedLockTime) {
128
- return false;
129
- }
130
- }
131
-
132
- return true;
133
- }
134
- }
135
-
136
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Resource/Config/Collection.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd {
7
- */
8
- class Unbxd_Recommendation_Model_Resource_Config_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
9
- {
10
- /**
11
- */
12
- public function _construct()
13
- {
14
- $this->_init('unbxd_recommendation/config');
15
- }
16
-
17
-
18
- }
19
-
20
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Resource/Field/Collection.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd {
7
- */
8
- class Unbxd_Recommendation_Model_Resource_Field_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
9
- {
10
- /**
11
- */
12
- public function _construct()
13
- {
14
- $this->_init('unbxd_recommendation/field');
15
- }
16
-
17
- /**
18
- * Method to add fields to display filter
19
- *
20
- * @return void
21
- */
22
- public function addFieldsDisplayFilter() {
23
- $this->addFieldToFilter(Unbxd_Recommendation_Model_Field::dislayable,1);
24
- return $this;
25
- }
26
-
27
- public function addWebsiteFilter(Mage_Core_Model_Website $website) {
28
- $this->addFieldToFilter(Unbxd_Recommendation_Model_Field::website_id, $website->getWebsiteId());
29
- return $this;
30
- }
31
-
32
- /**
33
- * Method to get field collection as array
34
- *
35
- * @return array
36
- */
37
- public function __asArray() {
38
- $fields = array();
39
- foreach($this->_items as $item) {
40
- $field = array();
41
- $field[Unbxd_Recommendation_Model_Field::field_name] = $item->getFieldName();
42
- $field[Unbxd_Recommendation_Model_Field::datatype] = $item->getDatatype();
43
- $field[Unbxd_Recommendation_Model_Field::autosuggest] = $item->getAutosuggest();
44
- $featureField = $item->getFeaturedField();
45
- if(isset($featureField)) {
46
- $field[Unbxd_Recommendation_Model_Field::featured_field] = $featureField;
47
- }
48
- $fields[] = $field;
49
- }
50
- return $fields;
51
- }
52
-
53
- public function getFeatureFields(Mage_Core_Model_Website $website) {
54
- $this->getSelect()->where(Unbxd_Recommendation_Model_Field::featured_field. " IS NOT NULL AND ".
55
- Unbxd_Recommendation_Model_Field::website_id . " = " . $website->getWebsiteId());
56
- return $this->load();
57
- }
58
-
59
- public function getFields(Mage_Core_Model_Website $website) {
60
- $this->getSelect()->where(Unbxd_Recommendation_Model_Field::website_id . " = " . $website->getWebsiteId());
61
- return $this->load();
62
- }
63
- }
64
-
65
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Resource/Sync.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd
7
- */
8
- class Unbxd_Recommendation_Model_Resource_Sync extends Mage_Core_Model_Mysql4_Abstract {
9
-
10
- /**
11
- * @return void
12
- */
13
- protected function _construct()
14
- {
15
- $this->_init('unbxd_recommendation/sync', 'id');
16
- }
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/Model/Resource/Sync/Collection.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @category Unbxd
5
- * @package Unbxd_Recommendation
6
- * @author Unbxd Software Pvt. Ltd {
7
- */
8
- class Unbxd_Recommendation_Model_Resource_Sync_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
9
- {
10
- /**
11
- */
12
- public function _construct()
13
- {
14
- $this->_init('unbxd_recommendation/sync');
15
- }
16
-
17
- /**
18
- * add field to Filter
19
- * @param $websiteId
20
- * @return void
21
- */
22
- public function addWebsiteFilter($websiteIds) {
23
- $this->addFieldToFilter(Unbxd_Recommendation_Model_Sync::WEBSITE_ID, $websiteIds);
24
- return $this;
25
- }
26
-
27
- /**
28
- * Add Unsync filter
29
- * @return void
30
- */
31
- public function addUnsyncFilter() {
32
- $this->addFieldToFilter(Unbxd_Recommendation_Model_Sync::SYNCED,
33
- Unbxd_Recommendation_Model_Sync::SYNCED_FALSE);
34
- return $this;
35
- }
36
-
37
- /**
38
- * Add Synced filter
39
- * @return void
40
- */
41
- public function addSyncFilter() {
42
- $this->addFieldToFilter(Unbxd_Recommendation_Model_Sync::SYNCED,
43
- Unbxd_Recommendation_Model_Sync::SYNCED_TRUE);
44
- return $this;
45
- }
46
-
47
- public function addOperationFilter($operation = Unbxd_Recommendation_Model_Sync::OPERATION_ADD) {
48
- $this->addFieldToFilter(Unbxd_Recommendation_Model_Sync::OPERATION, $operation);
49
- return $this;
50
- }
51
- }
52
-
53
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/controllers/ConfigController.php DELETED
@@ -1,327 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * controller that provides all the config
5
- * @category Unbxd
6
- * @package Unbxd_Recommendation
7
- * @author Unbxd Software Pvt. Ltd
8
- */
9
- class Unbxd_Recommendation_ConfigController extends Mage_Core_Controller_Front_Action {
10
-
11
- /**
12
- * @return Unbxd_Recommendation_Helper_Confighelper
13
- */
14
- protected function helper() {
15
- return Mage::helper("unbxd_recommendation/confighelper");
16
- }
17
-
18
- protected function getRawBody($request) {
19
- $requestBody = json_decode($request->getRawBody(), true);
20
- if(0 != strpos($request->getHeader('Content-Type'), 'application/json') || $requestBody === false) {
21
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
22
- $this->getResponse()->setBody(json_encode(array('success' => false,
23
- 'errors' => array('message' => 'Invalid Request'))));
24
- return null;
25
- }
26
- return $requestBody;
27
- }
28
-
29
-
30
- protected function getFields($request) {
31
- $requestBody = $this->getRawBody($request);
32
- if(is_null($requestBody)) {
33
- return null;
34
- }
35
- if(!array_key_exists("fields", $requestBody)) {
36
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
37
- $this->getResponse()->setBody(json_encode(array('success' => false,
38
- 'errors' => array('message' => 'Invalid Request'))));
39
- return null;
40
- }
41
- return $requestBody["fields"];
42
- }
43
-
44
- /**
45
- * @param $websiteName
46
- * @return mixed
47
- */
48
- protected function getWebsiteByName($websiteName)
49
- {
50
- return Mage::getResourceModel('core/website_collection')
51
- ->addFieldToFilter('name', $websiteName)
52
- ->getFirstItem();
53
- }
54
-
55
- protected function prepare() {
56
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
57
- if(array_key_exists("site", $_REQUEST)) {
58
- $website = $this->getWebsiteByName($_REQUEST["site"]);
59
- }
60
-
61
- if(!isset($website) || !$website->hasData("website_id")) {
62
- Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG,'api failed because of invalid website');
63
- $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid site'))));
64
- return null;
65
- }
66
- return $website;
67
- }
68
-
69
- public function editAction(){
70
- $this->loadLayout();
71
- $this->renderLayout();
72
- }
73
-
74
- /**
75
- * api to return the sites
76
- * @return void
77
- */
78
- public function siteAction()
79
- {
80
- $websites = Mage::app()->getWebsites();
81
- $sites = array();
82
- foreach ($websites as $website) {
83
- $sites[] = array('name' => $website->getName(),
84
- 'id' => $website->getId(),
85
- 'numDocs' => $this->helper()->getNumberOfDocsInUnbxd($website));
86
- }
87
- $response = array('sites' => $sites);
88
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
89
- $this->getResponse()->setBody(json_encode($response));
90
- }
91
-
92
- public function fieldsAction() {
93
- $request = $this->getRequest();
94
- if(array_key_exists("site", $_REQUEST)) {
95
- $website = $this->getWebsiteByName($_GET["site"]);
96
- }
97
- if(!isset($website) || !$website->hasData("website_id")) {
98
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
99
- $this->getResponse()->setBody(json_encode(array('success' => false,
100
- 'errors' => array('message' => 'Invalid site'))));
101
- return;
102
- }
103
- if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
104
- $mappedFields = Mage::getResourceModel('unbxd_recommendation/field')->getDisplayableFields($website)
105
- ->__asArray();
106
- $featureFields = Unbxd_Recommendation_Model_Field::$displayableFeatureFields;
107
- foreach($mappedFields as $fields) {
108
- if(array_key_exists(Unbxd_Recommendation_Model_Field::featured_field, $fields) &&
109
- in_array($fields[Unbxd_Recommendation_Model_Field::featured_field], $featureFields)) {
110
- unset($featureFields[array_search($fields[Unbxd_Recommendation_Model_Field::featured_field],
111
- $featureFields)]);
112
- }
113
- }
114
-
115
- foreach($featureFields as $field) {
116
- $mappedFields[] = array(Unbxd_Recommendation_Model_Field::featured_field => $field,
117
- Unbxd_Recommendation_Model_Field::datatype => 'text',
118
- Unbxd_Recommendation_Model_Field::autosuggest => 1);
119
- }
120
-
121
- $fields = Mage::helper("unbxd_recommendation/confighelper")->getAllAttributes();
122
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
123
- $this->getResponse()->setBody(json_encode(array('success' => true,
124
- 'mappedFields' => $mappedFields, 'fields' => $fields,
125
- 'datatype' => Unbxd_Recommendation_Model_Field::$data_types)));
126
- } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
127
-
128
- //request for adding fields
129
- $response = $this->helper()->saveFields($this->getFields($request), $website);
130
- if(is_array($response)) {
131
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
132
- $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response)));
133
- return;
134
- }
135
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
136
- $this->getResponse()->setBody(json_encode(array('success' => true)));
137
- return;
138
- } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::PUT) {
139
-
140
- // request for deleting fields
141
- $response = $this->helper()->deleteFields($this->getFields($request), $website);
142
- if(is_array($response)) {
143
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
144
- $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response)));
145
- return;
146
- }
147
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
148
- $this->getResponse()->setBody(json_encode(array('success' => true)));
149
- return;
150
- } else {
151
- $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
152
- $this->getResponse()->setBody(json_encode(array('success' => false,
153
- 'errors' => array('message' => 'Invalid method'))));
154
- }
155
- }
156
-
157
- /**
158
- * Api to update dimension mapping
159
- *
160
- * @return void
161
- */
162
- public function analyticsimpressionAction() {
163
- $website = $this->prepare();
164
- if(is_null($website)){
165
- return;
166
- }
167
- if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
168
-
169
- $response = Mage::getModel("unbxd_recommendation/api_task_analyticsimpression")
170
- ->prepare($website)
171
- ->process();
172
- if(!$response->isSuccess()) {
173
- $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response->getErrors())));
174
- return;
175
- }
176
- $this->getResponse()->setBody(json_encode(array('success' => true) + $response->getResponse()));
177
- } else {
178
- $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid method'))));
179
- }
180
-
181
- }
182
-
183
- public function keysAction() {
184
- $request = $this->getRequest();
185
- $website = $this->prepare();
186
- if(is_null($website)) {
187
- return;
188
- }
189
-
190
- if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
191
- $secretKey =Mage::getResourceModel("unbxd_recommendation/config")
192
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
193
- $siteKey =Mage::getResourceModel("unbxd_recommendation/config")
194
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
195
- $errors = array();
196
- if(is_null($secretKey)) {
197
- $errors[Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY] = "secret key not set";
198
- }
199
- if(is_null($siteKey)) {
200
- $errors[Unbxd_Recommendation_Helper_Confighelper::SITE_KEY] = "site key not set";
201
- }
202
- if(sizeof($errors) > 0) {
203
- Mage::helper('unbxd_recommendation')
204
- ->log(Zend_Log::DEBUG,'save keys api failed because ' . json_encode($errors));
205
- $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $errors)));
206
- return;
207
- }
208
- $this->getResponse()->setBody(json_encode(array('success' => true,
209
- Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY => $secretKey,
210
- Unbxd_Recommendation_Helper_Confighelper::SITE_KEY => $siteKey)));
211
- return;
212
- } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
213
- $requestBody = $request->getRawBody();
214
- $errors = $this->helper()->validateAndSaveKeys($website, $requestBody);
215
- if(sizeof($errors)>0) {
216
- Mage::helper('unbxd_recommendation')
217
- ->log(Zend_Log::DEBUG, 'save keys api failed because of ' . json_encode($errors));
218
- $this->getResponse()->setBody(json_encode(array('success' => false,
219
- 'errors' => $errors)));
220
- return;
221
- }
222
- $this->getResponse()->setBody(json_encode(array('success' => true)));
223
- } else {
224
- Mage::helper('unbxd_recommendation')
225
- ->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
226
- $this->getResponse()->setBody(json_encode(array('success' => false,
227
- 'errors' => array('message' => 'Invalid method'))));
228
- return;
229
- }
230
- }
231
-
232
-
233
- public function dimensionmapAction()
234
- {
235
- $website = $this->prepare();
236
- if (is_null($website)) {
237
- return;
238
- }
239
- if ($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
240
- $response = $this->helper()->updateFeatureFields($website);
241
- if(is_array($response)) {
242
- $this->getResponse()->setBody(json_encode(array('success' => false, $response)));
243
- return;
244
- }
245
- $this->getResponse()->setBody(json_encode(array('success' => true)));
246
- return;
247
- } else {
248
- Mage::helper('unbxd_recommendation')
249
- ->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
250
- $this->getResponse()->setBody(json_encode(array('success' => false,
251
- 'errors' => array('message' => 'Invalid method'))));
252
-
253
- }
254
- }
255
-
256
- public function downloadAction() {
257
- $filepath = Mage::getBaseDir('log').DS.Unbxd_Recommendation_Helper_Data::LOG_FILE;
258
-
259
- if (! is_file ( $filepath ) || ! is_readable ( $filepath )) {
260
- throw new Exception ( );
261
- }
262
- $this->getResponse ()
263
- ->setHttpResponseCode ( 200 )
264
- ->setHeader ( 'Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true )
265
- ->setHeader ( 'Pragma', 'public', true )
266
- ->setHeader ( 'Content-type', 'application/force-download' )
267
- ->setHeader ( 'Content-Length', filesize($filepath) )
268
- ->setHeader ('Content-Disposition', 'attachment' . '; filename=' . basename($filepath) );
269
- $this->getResponse ()->clearBody ();
270
- $this->getResponse ()->sendHeaders ();
271
- readfile ( $filepath );
272
- return;
273
- }
274
-
275
- public function feeddetailsAction() {
276
- $website = $this->prepare();
277
- if (is_null($website)) {
278
- return;
279
- }
280
-
281
- $this->getResponse()
282
- ->setBody(json_encode(array('success' => true,
283
- 'numDocs' => $this->helper()->getNumberOfDocsInUnbxd($website))));
284
- return;
285
- }
286
-
287
- public function productsyncAction(){
288
- $website = $this->prepare();
289
- if (is_null($website)) {
290
- return;
291
- }
292
- ignore_user_abort(true);
293
- set_time_limit(0);
294
- $isFullUpload = true;
295
- $feedMgr = Mage::getSingleton('unbxd_recommendation/feed_feedmanager');
296
- if(array_key_exists('incremental', $_REQUEST)) {
297
- $isFullUpload = false;
298
- }
299
-
300
- $response = $feedMgr->process($isFullUpload, $website);
301
- $this->getResponse()->setBody(json_encode($response));
302
- return;
303
- }
304
-
305
-
306
- public function unlockfeedAction() {
307
- $website = $this->prepare();
308
- if (is_null($website)) {
309
- return;
310
- }
311
- Mage::getResourceModel('unbxd_recommendation/config')->unLockSite($website->getWebsiteId());
312
- $this->getResponse()->setBody(json_encode(array('success' => true)));
313
- }
314
-
315
- public function cronAction() {
316
- $website = $this->prepare();
317
- if (is_null($website)) {
318
- return;
319
- }
320
- $isCronEnabled = Mage::getResourceSingleton('unbxd_recommendation/config')->getValue($website->getWebsiteId(),
321
- Unbxd_Recommendation_Helper_Confighelper::IS_CRON_ENABLED);
322
- if(is_null($isCronEnabled)) {
323
- $this->getResponse()->setBody(json_encode(array('success' => true, 'cron_enabled' => false)));
324
- }
325
- $this->getResponse()->setBody(json_encode(array('success' => true, 'cron_enabled' => true)));
326
- }
327
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/controllers/WidgetController.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
-
3
- class Unbxd_Recommendation_WidgetController extends Mage_Core_Controller_Front_Action {
4
-
5
- public function indexAction() {
6
- $website = Mage::app()->getWebsite();
7
- $this->getResponse()->setHeader('Access-Control-Allow-Origin', '*');
8
- $response = Mage::getModel("unbxd_recommendation/api_task_widget")
9
- ->setData($_GET)
10
- ->prepare($website)
11
- ->process();
12
- if(!$response->isSuccess()) {
13
- $this->getResponse()->setBody('<!--unbxdRecommendationError = ' .
14
- json_encode(array('success' => false, 'errors' => $response->getErrors())) . '-->');
15
- return;
16
- }
17
- $this->getResponse()->setBody($response->getBody());
18
- return;
19
- }
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/etc/config.xml DELETED
@@ -1,155 +0,0 @@
1
- <config>
2
- <modules>
3
- <Unbxd_Recommendation>
4
- <version>1.0.18</version>
5
- </Unbxd_Recommendation>
6
- </modules>
7
- <admin>
8
- <routers>
9
- <unbxd_recommendation_router>
10
- <use>admin</use>
11
- <args>
12
- <module>Unbxd_Recommendation_Adminhtml</module>
13
- <frontName>unbxdadmin</frontName>
14
- </args>
15
- </unbxd_recommendation_router>
16
- </routers>
17
- </admin>
18
- <frontend>
19
- <layout>
20
- <updates>
21
- <unbxd_recommendation>
22
- <file>unbxd/recommendation.xml</file>
23
- </unbxd_recommendation>
24
- </updates>
25
- </layout>
26
- <routers>
27
- <unbxd_recommendation>
28
- <use>standard</use>
29
- <args>
30
- <module>Unbxd_Recommendation</module>
31
- <frontName>unbxd</frontName>
32
- </args>
33
- </unbxd_recommendation>
34
- </routers>
35
- </frontend>
36
- <global>
37
- <resources>
38
- <unbxd_recommendation_setup>
39
- <setup>
40
- <module>Unbxd_Recommendation</module>
41
- </setup>
42
- </unbxd_recommendation_setup>
43
- </resources>
44
- <helpers>
45
- <unbxd_recommendation>
46
- <class>Unbxd_Recommendation_Helper</class>
47
- </unbxd_recommendation>
48
- </helpers>
49
- <models>
50
- <unbxd_recommendation>
51
- <class>Unbxd_Recommendation_Model</class>
52
- <resourceModel>unbxd_recommendation_resource</resourceModel>
53
- </unbxd_recommendation>
54
- <unbxd_recommendation_resource>
55
- <class>Unbxd_Recommendation_Model_Resource</class>
56
- <entities>
57
- <config>
58
- <table>unbxd_recommendation_conf</table>
59
- </config>
60
- <field>
61
- <table>unbxd_field_conf</table>
62
- </field>
63
- <sync>
64
- <table>unbxd_product_sync</table>
65
- </sync>
66
- </entities>
67
- </unbxd_recommendation_resource>
68
- </models>
69
- <blocks>
70
- <unbxd_recommendation>
71
- <class>Unbxd_Recommendation_Block</class>
72
- </unbxd_recommendation>
73
- </blocks>
74
- <events>
75
- <checkout_cart_add_product_complete>
76
- <observers>
77
- <unbxd_recommendation_cart_tracker>
78
- <type>singleton</type>
79
- <class>unbxd_recommendation/observer</class>
80
- <method>trackAddToCart</method>
81
- </unbxd_recommendation_cart_tracker>
82
- </observers>
83
- </checkout_cart_add_product_complete>
84
- <sales_order_payment_place_end>
85
- <observers>
86
- <unbxd_recommendation_order_tracker>
87
- <type>singleton</type>
88
- <class>unbxd_recommendation/observer</class>
89
- <method>trackOrder</method>
90
- </unbxd_recommendation_order_tracker>
91
- </observers>
92
- </sales_order_payment_place_end>
93
- <catalog_product_delete_before>
94
- <observers>
95
- <unbxd_recommendation_order_tracker>
96
- <type>singleton</type>
97
- <class>unbxd_recommendation/observer</class>
98
- <method>trackDeleteOfChildProduct</method>
99
- </unbxd_recommendation_order_tracker>
100
- </observers>
101
- </catalog_product_delete_before>
102
- <catalog_product_delete_commit_after>
103
- <observers>
104
- <unbxd_recommendation_order_tracker>
105
- <type>singleton</type>
106
- <class>unbxd_recommendation/observer</class>
107
- <method>trackDeleteOfMainProduct</method>
108
- </unbxd_recommendation_order_tracker>
109
- </observers>
110
- </catalog_product_delete_commit_after>
111
- <cataloginventory_stock_item_save_commit_after>
112
- <observers>
113
- <unbxd_recommendation_catalog_inventory_save>
114
- <type>singleton</type>
115
- <class>unbxd_recommendation/observer</class>
116
- <method>catalogInventorySave</method>
117
- </unbxd_recommendation_catalog_inventory_save>
118
- </observers>
119
- </cataloginventory_stock_item_save_commit_after>
120
- <sales_order_item_cancel>
121
- <observers>
122
- <unbxd_recommendation_order_cancel>
123
- <type>singleton</type>
124
- <class>unbxd_recommendation/observer</class>
125
- <method>catalogInventorySave</method>
126
- </unbxd_recommendation_order_cancel>
127
- </observers>
128
- </sales_order_item_cancel>
129
- </events>
130
- </global>
131
- <adminhtml>
132
- <layout>
133
- <updates>
134
- <unbxd_recommendation>
135
- <file>unbxd/recommendation.xml</file>
136
- </unbxd_recommendation>
137
- </updates>
138
- </layout>
139
- </adminhtml>
140
- <crontab>
141
- <jobs>
142
- <unbxd_recommendation_cron>
143
- <schedule><cron_expr>0 */1 * * *</cron_expr></schedule>
144
- <run><model>unbxd_recommendation/observer::syncProduct</model></run>
145
- </unbxd_recommendation_cron>
146
- </jobs>
147
- </crontab>
148
- <default>
149
- <unbxd>
150
- <general>
151
- <max_feed_lock_feed>6</max_feed_lock_feed>
152
- </general>
153
- </unbxd>
154
- </default>
155
- </config>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/mysql4-install-1.0.0.php DELETED
@@ -1,69 +0,0 @@
1
- <?php
2
-
3
-
4
- $installer = $this;
5
- /* @var $installer Mage_Core_Model_Resource_Setup */
6
-
7
- $installer->startSetup();
8
-
9
- $configTable = $installer->getTable('unbxd_recommendation_conf');
10
- $fieldTable = $installer->getTable('unbxd_field_conf');
11
-
12
- $installer->run("
13
- DROP TABLE IF EXISTS `{$fieldTable}`;
14
-
15
- CREATE TABLE `{$fieldTable}` (
16
- `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
17
- `website_id` tinyint(5) unsigned NOT NULL,
18
- `field_name` varchar(100) NOT NULL DEFAULT '',
19
- `datatype` varchar(20) NOT NULL DEFAULT '',
20
- `autosuggest` tinyint(1) NOT NULL DEFAULT '0',
21
- `featured_field` varchar(100) DEFAULT NULL,
22
- `multivalued` tinyint(1) NOT NULL DEFAULT '0',
23
- `displayed` tinyint(1) NOT NULL DEFAULT '1',
24
- PRIMARY KEY (`id`),
25
- UNIQUE KEY `website_id` (`website_id`,`field_name`)
26
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
27
-
28
- DROP TABLE IF EXISTS `{$configTable}`;
29
- CREATE TABLE `{$configTable}` (
30
- `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
31
- `website_id` smallint(5) unsigned NOT NULL,
32
- `key` varchar(50) NOT NULL DEFAULT '',
33
- `value` varchar(50) DEFAULT NULL,
34
- PRIMARY KEY (`id`)
35
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
36
- ");
37
-
38
- $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
39
- foreach($websiteCollection as $website) {
40
- $websiteId = $website->getWebsiteId();
41
- if(is_null($websiteId)) {
42
- continue;
43
- }
44
- $fieldTable = Mage::getResourceModel('unbxd_recommendation/field')->getTableName();
45
- $insertQuery = "
46
- INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
47
- VALUES
48
- ({$websiteId}, 'name', 'text', 1, 'title', 0, 1),
49
- ({$websiteId}, 'final_price', 'decimal', 0, 'price', 0, 1),
50
- ({$websiteId}, 'price', 'decimal', 0, NULL, 0, 1),
51
- ({$websiteId}, 'brand', 'text', 0, 'brand', 0, 1),
52
- ({$websiteId}, 'color', 'text', 0, 'color', 1, 1),
53
- ({$websiteId}, 'size', 'text', 0, 'size', 1, 1),
54
- ({$websiteId}, 'image', 'link', 0, 'imageUrl', 1, 1),
55
- ({$websiteId}, 'url_path', 'link', 0, 'productUrl', 0, 1),
56
- ({$websiteId}, 'catLevel1', 'text', 0, NULL, 1, 0),
57
- ({$websiteId}, 'catLevel2', 'text', 0, NULL, 1, 0),
58
- ({$websiteId}, 'catLevel3', 'text', 0, NULL, 1, 0),
59
- ({$websiteId}, 'status', 'number', 0, NULL, 0, 0),
60
- ({$websiteId}, 'visibility', 'number', 0, NULL, 0, 0),
61
- ({$websiteId}, 'qty', 'number', 0, NULL, 0, 0),
62
- ({$websiteId}, 'categoryIds', 'longText', 0, NULL, 1, 0),
63
- ({$websiteId}, 'category', 'text', 0, 'category', 1, 0),
64
- ({$websiteId}, 'uniqueId', 'longText', 0, NULL, 0, 0),
65
- ({$websiteId}, 'entity_id', 'longText', 0, NULL, 0, 0);";
66
- $installer->run($insertQuery);
67
- }
68
- $installer->endSetup();
69
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/upgrade-1.0.11-1.0.12.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
-
3
- $installer = $this;
4
- /* @var $installer Mage_Core_Model_Resource_Setup */
5
-
6
- $installer->startSetup();
7
- $fieldTable = $installer->getTable('unbxd_field_conf');
8
-
9
- $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
10
- foreach($websiteCollection as $website) {
11
- $websiteId = $website->getWebsiteId();
12
- if(is_null($websiteId)) {
13
- continue;
14
- }
15
- $insertQuery = "
16
- INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
17
- VALUES
18
- ({$websiteId}, 'gender', 'text', 0, 'gender', 0, 1),
19
- ({$websiteId}, 'description', 'longText', 0, 'description', 0, 1),
20
- ({$websiteId}, 'catLevel1Name', 'text', 0, 'catlevel1Name', 0, 0),
21
- ({$websiteId}, 'catLevel2Name', 'text', 0, 'catlevel2Name', 0, 0),
22
- ({$websiteId}, 'catLevel3Name', 'text', 0, 'catlevel3Name', 0, 0),
23
- ({$websiteId}, 'catLevel4Name', 'text', 0, 'catlevel4Name', 0, 0),
24
- ({$websiteId}, 'categoryLevel1', 'text', 0, NULL, 1, 0),
25
- ({$websiteId}, 'categoryLevel2', 'text', 0, NULL, 1, 0),
26
- ({$websiteId}, 'categoryLevel3', 'text', 0, NULL, 1, 0),
27
- ({$websiteId}, 'categoryLevel4', 'text', 0, NULL, 1, 0),
28
- ({$websiteId}, 'availability', 'bool', 0, 'availability', 0, 0),
29
- ({$websiteId}, 'created_at', 'date', 0, NULL, 0, 1);";
30
- $installer->run($insertQuery);
31
- }
32
- $installer->endSetup();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recommendation/sql/unbxd_recommendation_setup/upgrade-1.0.16-1.0.17.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
-
3
- $installer = $this;
4
- /* @var $installer Mage_Core_Model_Resource_Setup */
5
-
6
- $installer->startSetup();
7
- $productSyncTable = $installer->getTable('unbxd_product_sync');
8
-
9
- $installer->run("
10
- DROP TABLE IF EXISTS `{$productSyncTable}`;
11
- CREATE TABLE `{$productSyncTable}` (
12
- `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
13
- `product_id` int(10) unsigned NOT NULL,
14
- `website_id` smallint(5) unsigned NOT NULL,
15
- `synced` tinyint(1) NOT NULL DEFAULT '0',
16
- `updated_time` datetime DEFAULT NULL,
17
- `sync_time` datetime DEFAULT NULL,
18
- `operation` enum('ADD','DELETE') NOT NULL DEFAULT 'ADD',
19
- PRIMARY KEY (`id`),
20
- UNIQUE KEY `product_id` (`product_id`,`website_id`)
21
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;");
22
- $installer->endSetup();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/Unbxd/Recscore/Helper/Analyticshelper.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Helper_Analyticshelper extends Mage_Core_Helper_Abstract{
4
+
5
+ /**
6
+ * Returns unbxd script tag
7
+ *;
8
+ * @return String
9
+ **/
10
+ public function getAnalyticsScriptTag() {
11
+ $siteName = Mage::getResourceSingleton("datafeeder/conf")->getValue(Mage::app()->getWebsite()->getName() . "/siteName");
12
+ if(is_null($siteName) || $siteName == "" ) {
13
+ Mage::throwException("Unbxd site key is not set");
14
+ }
15
+ $scriptDiv = '<script type="text/javascript">';
16
+ $scriptDiv = $scriptDiv.'var UnbxdSiteName="'.$siteName.'";';
17
+ $scriptDiv = $scriptDiv.'var s=document.createElement("script");';
18
+ $scriptDiv = $scriptDiv.'s.src="//unbxd.s3.amazonaws.com/unbxdAnalytics.js";';
19
+ $scriptDiv = $scriptDiv.'s.type="text/javascript";';
20
+ $scriptDiv = $scriptDiv.'s.async=true;';
21
+ $scriptDiv = $scriptDiv.'document.getElementsByTagName("head").item(0).appendChild(s);';
22
+ $scriptDiv = $scriptDiv.'var s=document.createElement("script");';
23
+ $scriptDiv = $scriptDiv."</script>";
24
+ return $scriptDiv;
25
+ }
26
+
27
+ /**
28
+ * Returns unbxd search box attributes
29
+ *
30
+ * @return String
31
+ **/
32
+ public function getSearchBoxAttribute() {
33
+ return 'unbxdattr="sq"';
34
+ }
35
+
36
+ /**
37
+ * Returns unbxd search box button attributes
38
+ *
39
+ * @return String
40
+ **/
41
+ public function getSearchBoxButtonAttribute() {
42
+ return 'unbxdattr="sq_bt"';
43
+ }
44
+
45
+ /**
46
+ * Returns unbxd navigation meta tag
47
+ *
48
+ * @return String
49
+ **/
50
+ public function getNavigationTag() {
51
+ return '<meta name="unbxd:type" content="category">';
52
+ }
53
+
54
+ /**
55
+ * Returns unbxd product click attributes
56
+ *
57
+ * @return String
58
+ **/
59
+ public function getProductClickAttributes($product, $rank) {
60
+ if (!$product instanceof Mage_Catalog_Model_Product ) {
61
+ Mage::throwException("$product parameter to getProductClickAttributes method should be of type Mage_Catalog_Model_Product");
62
+ }
63
+ if (!$rank || $rank < 1 ) {
64
+ Mage::throwException("$rank parameter to getProductClickAttributes method should be greater than 0");
65
+ }
66
+ return 'unbxdattr="product" unbxdparam_sku="'.$product->getData('entity_id').'" unbxdparam_prank="'.$rank.'"';
67
+ }
68
+
69
+ /**
70
+ * Returns unbxd add to cart attributes
71
+ *
72
+ * @return String
73
+ **/
74
+ public function getAddToCartAttributes($product) {
75
+ if (!$product instanceof Mage_Catalog_Model_Product ) {
76
+ Mage::throwException("$product parameter to getProductClickAttributes method should be of type Mage_Catalog_Model_Product");
77
+ }
78
+ return 'unbxdattr="AddToCart" unbxdparam_sku="'.$product->getData('entity_id').'"';
79
+ }
80
+
81
+ /**
82
+ * Returns unbxd order attributes
83
+ *
84
+ * @return String
85
+ **/
86
+ public function getOrderAttributes($product) {
87
+ if (!$product instanceof Mage_Catalog_Model_Product ) {
88
+ Mage::throwException("$product parameter to getProductClickAttributes method should be of type Mage_Catalog_Model_Product");
89
+ }
90
+ return 'unbxdattr="order" unbxdparam_sku="'.$product->getData('entity_id').'"';
91
+ }
92
+
93
+ /**
94
+ * Checks whether request is a navigation
95
+ *
96
+ * @param Mage_Catalog_Model_Resource_Eav_Attribute $attribute
97
+ * @return bool
98
+ */
99
+ public function isNavigation() {
100
+ if(Mage::app()->getRequest()->getControllerName() == "category") {
101
+ return true;
102
+ }
103
+ return false;
104
+ }
105
+ }
106
+ ?>
app/code/local/Unbxd/Recscore/Helper/Confighelper.php ADDED
@@ -0,0 +1,453 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Helper_Confighelper extends Unbxd_Recscore_Helper_Data {
9
+
10
+ const SITE_KEY = "site_key";
11
+
12
+ const API_KEY = "api_key";
13
+
14
+ const SECRET_KEY = "secret_key";
15
+
16
+ const USERNAME = "username";
17
+
18
+ const NEED_FEATURE_FIELD_UPDATION = "need_feature_field_updation";
19
+
20
+ const IS_CRON_ENABLED = "cron_enabled";
21
+
22
+ const SUBJECT = 'subject';
23
+
24
+ const CONTENT = 'content';
25
+
26
+ const CC = 'cc';
27
+
28
+
29
+ /**
30
+ * All possible data type values supported unbxd
31
+ * @var array
32
+ */
33
+ public static $data_types = array("text", "longText", "link", "decimal", "number", "datetime");
34
+
35
+ public function validateAndSaveKeys($website, $requestBody){
36
+ $errors = $this->validateKeyParams($requestBody);
37
+ if(sizeof($errors) > 0) {
38
+ return $errors;
39
+ }
40
+ $requestParams = json_decode($requestBody, true);
41
+ if(!$requestParams) {
42
+ $errors['message'] = 'Invalid Request';
43
+ return $errors;
44
+ }
45
+ $response = Mage::getModel("unbxd_recscore/api_task_validatekeys")
46
+ ->setData(Unbxd_Recscore_Model_Api_Task_Validatekeys::SECRET_KEY, $requestParams[self::SECRET_KEY])
47
+ ->setData(Unbxd_Recscore_Model_Api_Task_Validatekeys::SITE_KEY, $requestParams[self::SITE_KEY])
48
+ ->prepare($website)
49
+ ->process();
50
+ if(!$response->isSuccess()) {
51
+ return $response->getErrors();
52
+ }
53
+
54
+ $existingSecretKey = Mage::getResourceModel('unbxd_recscore/config')
55
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SECRET_KEY);
56
+ $keyAlreadyExists = !is_null($existingSecretKey);
57
+ if($keyAlreadyExists) {
58
+ $this->flushConfigs($website);
59
+ }
60
+
61
+ Mage::getResourceModel('unbxd_recscore/config')
62
+ ->setValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SECRET_KEY,
63
+ $requestParams[Unbxd_Recscore_Helper_Constants::SECRET_KEY]);
64
+ Mage::getResourceModel('unbxd_recscore/config')
65
+ ->setValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SITE_KEY,
66
+ $requestParams[Unbxd_Recscore_Helper_Constants::SITE_KEY]);
67
+ $response = $response->getResponse();
68
+ Mage::getResourceModel('unbxd_recscore/config')
69
+ ->setValue($website->getWebsiteId(),
70
+ Unbxd_Recscore_Helper_Constants::API_KEY,
71
+ $response[Unbxd_Recscore_Model_Api_Task_Validatekeys::API_KEY]);
72
+ Mage::getResourceModel('unbxd_recscore/config')
73
+ ->setValue($website->getWebsiteId(),
74
+ Unbxd_Recscore_Helper_Constants::USERNAME,
75
+ $response[Unbxd_Recscore_Model_Api_Task_Validatekeys::USERNAME]);
76
+ $this->saveConfig(Mage::app()->getWebsite(),
77
+ array(Unbxd_Recscore_Helper_Constants::API_KEY => $response[Unbxd_Recscore_Model_Api_Task_Validatekeys::API_KEY],
78
+ Unbxd_Recscore_Helper_Constants::SITE_KEY => $requestParams[Unbxd_Recscore_Helper_Constants::SITE_KEY]));
79
+ return $errors;
80
+ }
81
+
82
+ public function flushConfigs($website) {
83
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, 'Flushing all the configs');
84
+ $configs = $this->getEngineConfigData('', $website, true);
85
+ foreach($configs as $config=>$value) {
86
+ Mage::getConfig()->deleteConfig(Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX .
87
+ Unbxd_Recscore_Helper_Constants::CONFIG_SEPARATOR .
88
+ $config,
89
+ 'websites',
90
+ (int)$website->getWebsiteId());
91
+ }
92
+ Mage::getResourceModel('unbxd_recscore/config')->deleteAll($website->getWebsiteId());
93
+
94
+ }
95
+
96
+ public function validateKeyParams($requestBody) {
97
+ $errors = array();
98
+ $requestParams = json_decode($requestBody, true);
99
+ if(!$requestParams) {
100
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'Invalid request with requestBody' . $requestBody);
101
+ $errors['message'] = 'Invalid Request';
102
+ return $errors;
103
+ }
104
+ if(!array_key_exists(Unbxd_Recscore_Helper_Constants::SECRET_KEY,$requestParams)){
105
+ $errors[Unbxd_Recscore_Helper_Constants::SECRET_KEY] = "Has Empty Data";
106
+ }
107
+ if(!array_key_exists(Unbxd_Recscore_Helper_Constants::SITE_KEY, $requestParams)) {
108
+ $errors[Unbxd_Recscore_Helper_Constants::SITE_KEY] = "Has Empty Data";
109
+ }
110
+ return $errors;
111
+ }
112
+
113
+ public function getFeatureFields() {
114
+ return Unbxd_Recscore_Model_Field::$feature_fields;
115
+ }
116
+
117
+ public function getAllAttributes($fieldNameAsKey = false) {
118
+ $attributes = Mage::getSingleton('eav/config')
119
+ ->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
120
+ $fields = array();
121
+ foreach($attributes as $attribute) {
122
+ $attributeType = $attribute->getFrontendInput();
123
+ $fieldType = $attributeType == 'media_image'?Unbxd_Recscore_Helper_Constants::FIELD_TYPE_IMAGE:
124
+ ($attributeType == 'price'?Unbxd_Recscore_Helper_Constants::FIELD_TYPE_NUMBER:
125
+ ($attributeType == 'date'?Unbxd_Recscore_Helper_Constants::FIELD_TYPE_DATE:
126
+ Unbxd_Recscore_Helper_Constants::FIELD_TYPE_STRING));
127
+ $fieldType = ($attribute->getName() == "created_at")?Unbxd_Recscore_Helper_Constants::FIELD_TYPE_DATE:$fieldType;
128
+ $fieldType = ($attribute->getName() == "updated_at")?Unbxd_Recscore_Helper_Constants::FIELD_TYPE_DATE:$fieldType;
129
+ if($fieldNameAsKey) {
130
+ $fields[$attribute->getName()] = array(Unbxd_Recscore_Helper_Constants::FIELD_NAME => $attribute->getName(),
131
+ Unbxd_Recscore_Helper_Constants::FIELD_TYPE => $fieldType);
132
+ } else {
133
+ $fields[] = array(Unbxd_Recscore_Helper_Constants::FIELD_NAME => $attribute->getName(),
134
+ Unbxd_Recscore_Helper_Constants::FIELD_TYPE => $fieldType);
135
+ }
136
+ }
137
+ if($fieldNameAsKey) {
138
+ $fields['final_price'] = array(Unbxd_Recscore_Helper_Constants::FIELD_NAME =>"final_price",
139
+ Unbxd_Recscore_Helper_Constants::FIELD_TYPE => Unbxd_Recscore_Helper_Constants::FIELD_TYPE_NUMBER);
140
+ } else {
141
+ $fields[] = array(Unbxd_Recscore_Helper_Constants::FIELD_NAME =>"final_price",
142
+ Unbxd_Recscore_Helper_Constants::FIELD_TYPE => Unbxd_Recscore_Helper_Constants::FIELD_TYPE_NUMBER);
143
+ }
144
+ return $fields;
145
+ }
146
+
147
+ private function getFieldMapping($fields) {
148
+ $fieldMapping = array();
149
+ foreach($fields as $field) {
150
+ $fieldMapping[$field->getFieldName()] = $field;
151
+ }
152
+ return $fieldMapping;
153
+ }
154
+
155
+ /**
156
+ * @param $fields
157
+ * @return array
158
+ */
159
+ private function validate($fields) {
160
+ $errors = array();
161
+ if(!is_array($fields)) {
162
+ $errors["message"] = "Expecting theInput data should be an array, Given " . gettype($fields);
163
+ return $errors;
164
+ }
165
+ $existingAttributes = $this->getAllAttributes(true);
166
+ $featureFields = Mage::getModel('unbxd_recscore/field')->getFeaturedFields();
167
+ foreach($fields as $field) {
168
+ if(!array_key_exists(Unbxd_Recscore_Model_Field::field_name, $field)) {
169
+ $errors["extra"] = "Not Present for all the fields";
170
+ continue;
171
+ } else if (is_null($field[Unbxd_Recscore_Model_Field::field_name]) ||
172
+ $field[Unbxd_Recscore_Model_Field::field_name] =="") {
173
+ $errors["extra"] = "field Name is empty for some fields";
174
+ continue;
175
+ }
176
+ if (!array_key_exists(Unbxd_Recscore_Model_Field::datatype, $field)) {
177
+ $errors[$field[Unbxd_Recscore_Model_Field::field_name]] = "Not Present for all the fields";
178
+ } else if (!in_array($field[Unbxd_Recscore_Model_Field::datatype], Unbxd_Recscore_Model_Field::$data_types)){
179
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'Invalid feature field '.
180
+ $field[Unbxd_Recscore_Model_Field::datatype]);
181
+ $errors[$field[Unbxd_Recscore_Model_Field::field_name]] = "Invalid datatype specified";
182
+ }
183
+
184
+ if(array_key_exists($field[Unbxd_Recscore_Model_Field::field_name], $existingAttributes)) {
185
+ if(!Mage::getSingleton('unbxd_recscore/field')->validateDatatype($field[Unbxd_Recscore_Model_Field::datatype], $existingAttributes[$field[Unbxd_Recscore_Model_Field::field_name]][Unbxd_Recscore_Helper_Constants::FIELD_TYPE])) {
186
+ $errors[$field[Unbxd_Recscore_Model_Field::field_name]] = "Field cannot be mapped to " . $field[Unbxd_Recscore_Model_Field::datatype];
187
+ }
188
+ }
189
+
190
+ if (array_key_exists(Unbxd_Recscore_Model_Field::featured_field, $field)) {
191
+ if(!array_key_exists($field[Unbxd_Recscore_Model_Field::featured_field], $featureFields)) {
192
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'Invalid feature field '.
193
+ $field[Unbxd_Recscore_Model_Field::featured_field]);
194
+ $errors[$field[Unbxd_Recscore_Model_Field::field_name]] = "Invalid feature field specified";
195
+ } else if(!Mage::getSingleton('unbxd_recscore/field')->validateDatatype($featureFields[$field[Unbxd_Recscore_Model_Field::featured_field]]["datatype"], $existingAttributes[$field[Unbxd_Recscore_Model_Field::field_name]][Unbxd_Recscore_Helper_Constants::FIELD_TYPE])){
196
+ $errors[$field[Unbxd_Recscore_Model_Field::field_name]] = "Field cannot be mapped to " . $field[Unbxd_Recscore_Model_Field::datatype];
197
+ }
198
+ }
199
+ }
200
+ return $errors;
201
+ }
202
+
203
+ public function deleteFields($fields, $website) {
204
+ $errors = $this->validate($fields);
205
+ if(sizeof($errors) != 0) {
206
+ return $errors;
207
+ }
208
+ $collection = $this->buildFieldCollection($fields, $website);
209
+ return Mage::getModel("unbxd_recscore/field")->saveFields($collection);
210
+ }
211
+
212
+ /**
213
+ * @param $fields
214
+ * @param $website
215
+ * @return array
216
+ */
217
+ public function saveFields($fields, $website) {
218
+ $errors = $this->validate($fields);
219
+ if(sizeof($errors) != 0) {
220
+ return $errors;
221
+ }
222
+ $collection = $this->buildFieldCollectionToAdd($fields, $website);
223
+ $response = Mage::getModel("unbxd_recscore/field")->saveFields($collection);
224
+ if(!is_array($response) && $response === true) {
225
+ $urlName = Mage::getResourceModel('unbxd_recscore/field')->getFieldByFeatureField(Mage::app()->getWebsite()->getWebsiteId(),
226
+ Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRODUCT_URL);
227
+ $priceName = Mage::getResourceModel('unbxd_recscore/field')->getFieldByFeatureField(Mage::app()->getWebsite()->getWebsiteId(),
228
+ Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRODUCT_URL);
229
+ Mage::helper('unbxd_recscore')->saveConfig(Mage::app()->getWebsite(),
230
+ array(Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRODUCT_URL => $urlName));
231
+ Mage::helper('unbxd_recscore')->saveConfig(Mage::app()->getWebsite(),
232
+ array(Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRICE => $priceName));
233
+
234
+ $this->triggerUpdateFeatureField($website);
235
+ }
236
+ }
237
+
238
+
239
+ public function triggerUpdateFeatureField(Mage_Core_Model_Website $website) {
240
+ Mage::getResourceModel('unbxd_recscore/config')
241
+ ->setValue($website->getWebsiteId(),
242
+ Unbxd_Recscore_Helper_Constants::NEED_FEATURE_FIELD_UPDATION,
243
+ Unbxd_Recscore_Helper_Constants::NEED_FEATURE_FIELD_UPDATION_TRUE);
244
+ $this->triggerFeedUpload($website);
245
+ }
246
+
247
+ /**
248
+ * Method to trigger feed upload
249
+ * @param Mage_Core_Model_Website $website
250
+ * @return void
251
+ */
252
+ public function triggerFeedUpload(Mage_Core_Model_Website $website) {
253
+ Mage::getModel('unbxd_recscore/api_task_triggerfeedupload')
254
+ ->prepare($website)
255
+ ->process();
256
+ }
257
+
258
+
259
+ private function getFeatureFieldToFieldMapping($fields) {
260
+ $featureFieldToFieldMapping = array();
261
+ foreach($fields as $field) {
262
+ if($field instanceof Unbxd_Recscore_Model_Field &&
263
+ $field->hasData(Unbxd_Recscore_Model_Field::featured_field) &&
264
+ !is_null($field->getData(Unbxd_Recscore_Model_Field::featured_field))) {
265
+ $featureFieldToFieldMapping[$field[Unbxd_Recscore_Model_Field::featured_field]] = $field;
266
+ }
267
+ }
268
+ return $featureFieldToFieldMapping;
269
+ }
270
+
271
+ private function buildFieldCollection($fields, $website) {
272
+ $collection = array();
273
+ $fieldMapping = $this->getFieldMapping($this->getFields($fields, $website));
274
+ foreach($fields as $field) {
275
+ if (!array_key_exists(Unbxd_Recscore_Model_Field::field_name, $field)) {
276
+ continue;
277
+ }
278
+ if(array_key_exists($field[Unbxd_Recscore_Model_Field::field_name], $fieldMapping)) {
279
+ $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]];
280
+ }
281
+ }
282
+ return $collection;
283
+ }
284
+
285
+ private function buildFieldCollectionToAdd($fields, $website) {
286
+ $collection = array();
287
+ $fieldMapping = $this->getFieldMapping($this->getFields($fields, $website));
288
+ $featureFieldToFieldMapping = $this->getFeatureFieldToFieldMapping($fieldMapping);
289
+
290
+ foreach($fields as $field) {
291
+ if(!array_key_exists(Unbxd_Recscore_Model_Field::field_name, $field)) {
292
+ continue;
293
+ }
294
+ /*
295
+ All possible test cases
296
+ 1) if field name is present and it was a feature field
297
+ 1.a) if request feature field is equal to selected feature field, dont do anything
298
+ 1.b) if request feature field is not equal to selected feature field, dont do anything
299
+ 1.c) if request field is not a feature field,
300
+ remove the field name entry from the feature field row, save as different row.
301
+
302
+ 2) if field name is present and it was not a feature field
303
+ 2.a) if request field is a feature field,
304
+ remove the field name entry as a normal field and save as feature field
305
+ 2.b) if request field is not a feature field,
306
+ update the existing field
307
+
308
+ 3) if field name not present,
309
+ 3.a) if it has feature field, delete it from db and insert the new field
310
+ 3.b) save as a new field
311
+ */
312
+
313
+ // case 1
314
+ if(array_key_exists($field[Unbxd_Recscore_Model_Field::field_name], $fieldMapping ) &&
315
+ $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]]->hasData(Unbxd_Recscore_Model_Field::featured_field) &&
316
+ !is_null($fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]]->getData(Unbxd_Recscore_Model_Field::featured_field))) {
317
+ //case 1 a)
318
+ if (array_key_exists(Unbxd_Recscore_Model_Field::featured_field, $field) &&
319
+ $field[Unbxd_Recscore_Model_Field::featured_field] ==
320
+ $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]][Unbxd_Recscore_Model_Field::featured_field]) {
321
+ continue;
322
+ }
323
+ // case 1 b)
324
+ else if (array_key_exists(Unbxd_Recscore_Model_Field::featured_field, $field)) {
325
+ $collection[]["delete"] = $featureFieldToFieldMapping[$field[Unbxd_Recscore_Model_Field::featured_field]];
326
+ $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]];
327
+ $fieldModel = Mage::getModel("unbxd_recscore/field");
328
+ $fieldModel->setFeaturedField($field[Unbxd_Recscore_Model_Field::featured_field]);
329
+ }
330
+
331
+ //case 1 c)
332
+ else {
333
+ $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]];
334
+ $fieldModel = Mage::getModel("unbxd_recscore/field");
335
+
336
+ }
337
+ } else if(array_key_exists($field[Unbxd_Recscore_Model_Field::field_name], $fieldMapping)) {
338
+ //case 2 a)
339
+ if (array_key_exists(Unbxd_Recscore_Model_Field::featured_field, $field)) {
340
+ $collection[]["delete"] = $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]];
341
+ $fieldModel = Mage::getModel("unbxd_recscore/field");
342
+ $fieldModel->setFeaturedField($field[Unbxd_Recscore_Model_Field::featured_field]);
343
+ }
344
+ // case 2 b)
345
+ else {
346
+ $fieldModel = $fieldMapping[$field[Unbxd_Recscore_Model_Field::field_name]];
347
+ }
348
+ } else {
349
+ $fieldModel = Mage::getModel("unbxd_recscore/field");
350
+ if (array_key_exists(Unbxd_Recscore_Model_Field::featured_field, $field)) {
351
+ $fieldModel->setFeaturedField($field[Unbxd_Recscore_Model_Field::featured_field]);
352
+ // case 3 a)
353
+ if(array_key_exists($field[Unbxd_Recscore_Model_Field::featured_field], $featureFieldToFieldMapping)) {
354
+ $collection[]["delete"] = $featureFieldToFieldMapping[$field[Unbxd_Recscore_Model_Field::featured_field]];
355
+ }
356
+ }
357
+
358
+ }
359
+ $fieldModel->setFieldName($field[Unbxd_Recscore_Model_Field::field_name]);
360
+ $fieldModel->setDatatype($field[Unbxd_Recscore_Model_Field::datatype]);
361
+ $fieldModel->setAutosuggest(0);
362
+ $fieldModel->setWebsiteId($website->getWebsiteId());
363
+ $fieldModel->setDisplayed(1);
364
+ $collection[]["add"] = $fieldModel;
365
+ }
366
+ return $collection;
367
+ }
368
+
369
+ /**
370
+ * Method to getFields, if
371
+ *
372
+ * @param $fields
373
+ * @return mixed
374
+ */
375
+ private function getFields($fields, $website) {
376
+ $inField = array();
377
+ foreach($fields as $field) {
378
+ if($field[Unbxd_Recscore_Model_Field::field_name] == "") {
379
+ continue;
380
+ }
381
+ $inField[] = "'" .$field[Unbxd_Recscore_Model_Field::field_name]. "'";
382
+ }
383
+ $collection = Mage::getResourceModel("unbxd_recscore/field_collection");
384
+
385
+ $collection->getSelect()
386
+ ->where('(' . Unbxd_Recscore_Model_Field::field_name . ' in ('. implode(",", $inField). ')'. " OR ".
387
+ Unbxd_Recscore_Model_Field::featured_field. " IS NOT NULL) AND ".
388
+ Unbxd_Recscore_Model_Field::website_id . " = " . $website->getWebsiteId());
389
+ return $collection->load();
390
+ }
391
+
392
+
393
+ /**
394
+ * Method to update feature fields to unbxd
395
+ *
396
+ * @return bool| array
397
+ */
398
+ public function updateFeatureFields(Mage_Core_Model_Website $website) {
399
+ $response = Mage::getModel("unbxd_recscore/api_task_updatefeaturefields")
400
+ ->prepare($website)
401
+ ->process();
402
+ if(! $response->isSuccess()) {
403
+ Mage::log(Zend_Log::ERR,
404
+ "Update feature fields failed because of theses errors ".json_encode($response->getErrors()));
405
+ return $response->getErrors();
406
+ }
407
+ return true;
408
+ }
409
+
410
+ public function getNumberOfDocsInUnbxd(Mage_Core_Model_Website $website) {
411
+ $response = Mage::getModel('unbxd_recscore/api_task_feeddetails')
412
+ ->prepare($website)
413
+ ->process();
414
+ if($response->isSuccess()) {
415
+ $response = $response->getResponse();
416
+ $feedInfo = $response[Unbxd_Recscore_Model_Api_Task_Feeddetails::FEEDINFO];
417
+ return $feedInfo[Unbxd_Recscore_Model_Api_Task_Feeddetails::NUMDOCS];
418
+ }
419
+ return 0;
420
+ }
421
+
422
+ /**
423
+ * @param Mage_Core_Model_Website $website
424
+ * @return void
425
+ */
426
+ public function triggerAutoggestIndexing(Mage_Core_Model_Website $website) {
427
+ if(Mage::helper('core')->isModuleEnabled('Unbxd_Searchcore') &&
428
+ $this->isConfigTrue($website, Unbxd_Recscore_Helper_Constants::AUTOSUGGEST_STATUS)) {
429
+ //trigger Autosuggest
430
+ $response = Mage::getModel('unbxd_recscore/api_task_autosuggestindex')
431
+ ->prepare($website)
432
+ ->process();
433
+ }
434
+ }
435
+
436
+ public function getCategoryExclusion(Mage_Core_Model_Website $website) {
437
+ $conf = Mage::helper('unbxd_recscore')->getEngineConfigData(Unbxd_Recscore_Helper_Constants::EXCLUDE_CATEGORY, $website, true);
438
+ $categoryExclusionConf = json_decode($conf[Unbxd_Recscore_Helper_Constants::EXCLUDE_CATEGORY], true);
439
+ if(!is_array($categoryExclusionConf)) {
440
+ return array();
441
+ }
442
+ $categoryToBeExcluded = array();
443
+ foreach($categoryExclusionConf as $eachExclusion) {
444
+ $categoryToBeExcluded[] = (string)$eachExclusion;
445
+ }
446
+ return $categoryToBeExcluded;
447
+ }
448
+
449
+ public function getConfigData($name) {
450
+ return (string)Mage::getConfig()->getNode("default/" . Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX . "/" .$name);
451
+ }
452
+ }
453
+ ?>
app/code/local/Unbxd/Recscore/Helper/Constants.php ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Unbxd_Recscore_Helper_Constants extends Mage_Core_Helper_Abstract {
3
+
4
+ const SITE_KEY = "site_key";
5
+
6
+ const API_KEY = "api_key";
7
+
8
+ const SECRET_KEY = "secret_key";
9
+
10
+ const USERNAME = "username";
11
+
12
+ const NEED_FEATURE_FIELD_UPDATION = "need_feature_field_updation";
13
+
14
+ const NEED_FEATURE_FIELD_UPDATION_FALSE = '0';
15
+
16
+ const NEED_FEATURE_FIELD_UPDATION_TRUE = '1';
17
+
18
+ const IS_CRON_ENABLED = "cron_enabled";
19
+
20
+ const SUBJECT = 'subject';
21
+
22
+ const CONTENT = 'content';
23
+
24
+ const CC = 'cc';
25
+
26
+ const FILTER = 'filter';
27
+
28
+ const FILTER_RANGE_DELIMITER = "|`";
29
+
30
+ const FEATURE_FIELD_PRICE = 'price';
31
+
32
+ const FEATURE_FIELD_IMAGE_URL = 'imageUrl';
33
+
34
+ const FEATURE_FIELD_PRODUCT_URL = 'productUrl';
35
+
36
+ const AUTOSUGGEST_STATUS = 'autosuggest_status';
37
+
38
+ const AUTOSUGGEST_SKIN = 'autosuggest_skin';
39
+
40
+ const AUTOSUGGEST_TEMPLATE = 'autosuggest_template';
41
+
42
+ const AUTOSUGGEST_MAX_SUGGESTION = 'autosuggest_max_suggestion';
43
+
44
+ const AUTOSUGGEST_TOP_QUERIES_STATUS = 'autosuggest_top_queries_status';
45
+
46
+ const AUTOSUGGEST_KEYWORD_STATUS = 'autosuggest_keyword_status';
47
+
48
+ const AUTOSUGGEST_SEARCH_SCOPE_STATUS = 'autosuggest_search_scope_status';
49
+
50
+ const AUTOSUGGEST_MAX_PRODUCTS = 'autosuggest_max_products';
51
+
52
+ const AUTOSUGGEST_POP_PRODUCT_HEADER = 'autosuggest_pop_product_header';
53
+
54
+ const AUTOSUGGEST_KEYWORD_HEADER = 'autosuggest_keyword_header';
55
+
56
+ const AUTOSUGGEST_TOPQUERY_HEADER = 'autosuggest_topquery_header';
57
+
58
+ const AUTOSUGGEST_SEARCH_SCOPE_HEADER = 'autosuggest_search_scope_header';
59
+
60
+ const AUTOSUGGEST_SHOW_CART = 'autosuggest_show_cart';
61
+
62
+ const AUTOSUGGEST_TEMPLATE_1COLUMN = '1column';
63
+
64
+ const AUTOSUGGEST_TEMPLATE_2COLUMN = '2column';
65
+
66
+ const AUTOSUGGEST_TEMPLATE_2COLUMN_LEFT = '2column-left';
67
+
68
+ const AUTOSUGGEST_TEMPLATE_2COLUMN_RIGHT = '2column-right';
69
+
70
+ const AUTOSUGGEST_TEMPLATE_1COLUMN_ADD_TO_CART = '1column-add-to-cart';
71
+
72
+ const AUTOSUGGEST_SIDECONTENT = 'autosuggest_sidecontent';
73
+
74
+ const AUTOSUGGEST_SIDECONTENT_RIGHT = 'right';
75
+
76
+ const AUTOSUGGEST_SIDECONTENT_LEFT = 'left';
77
+
78
+ const AUTOSUGGEST_INQUERY = "inFields";
79
+
80
+ const AUTOSUGGEST_KEYWORDSUGGESTION = "keywordSuggestions";
81
+
82
+ const AUTOSUGGEST_TOP_QUERY = "topQueries";
83
+
84
+ const AUTOSUGGEST_POP_PRODUCTS = "popularProducts";
85
+
86
+ const AUTOSUGGEST_MAIN_TEMPLATE = 'mainTpl';
87
+
88
+ const AUTOSUGGET_SIDE_TEMPLATE = 'sideTpl';
89
+
90
+ static $AUTOSUGGEST_SIDECONTENTS = array(self::AUTOSUGGEST_SIDECONTENT_RIGHT, self::AUTOSUGGEST_SIDECONTENT_LEFT);
91
+
92
+ static $AUTOSUGGEST_TEMPLATES = array(self::AUTOSUGGEST_TEMPLATE_1COLUMN, self::AUTOSUGGEST_TEMPLATE_2COLUMN);
93
+
94
+ const SEARCH_MOD_STATUS = 'search_mod_status';
95
+
96
+ const SEARCH_MOD_POWER = 'search_mod_power';
97
+
98
+ const SEARCH_HOSTED_STATUS = 'search_hosted_status';
99
+
100
+ const SEARCH_HOSTED_INT_STATUS = 'search_hosted_int_status';
101
+
102
+ const SEARCH_HOSTED_INT_COMPLETE = 'complete';
103
+
104
+ const SEARCH_HOSTED_INT_PROCESSING = 'processing';
105
+
106
+ const SEARCH_HOSTED_REDIRECT_URL = 'search_hosted_redirect_url';
107
+
108
+ const HOSTED_SEARCH_STATUS = 'hosted_search_status';
109
+
110
+ const UNBXD_CONFIG_PREFIX = 'unbxd/general';
111
+
112
+ const CONFIG_SEPARATOR = '/';
113
+
114
+ const SEARCH_POWER_LABEL = 'search';
115
+
116
+ const NAVIGATION_POWER_LABEL = 'navigation';
117
+
118
+ const ALL_POWER_LABEL = 'all';
119
+
120
+ const TRUE = "true";
121
+
122
+ const FALSE = "false";
123
+
124
+ const FIELD_NAME = 'field_name';
125
+
126
+ const FIELD_TYPE = 'field_type';
127
+
128
+ const FIELD_TYPE_STRING = 'string';
129
+
130
+ const FIELD_TYPE_IMAGE = 'image';
131
+
132
+ const FIELD_TYPE_NUMBER = 'number';
133
+
134
+ const FIELD_TYPE_DATE = 'date';
135
+
136
+ const UNBXD_DATATYPE_TEXT = "text";
137
+
138
+ const UNBXD_DATATYPE_LONGTEXT = "longText";
139
+
140
+ const UNBXD_DATATYPE_LINK = "link";
141
+
142
+ const UNBXD_DATATYPE_NUMBER = "number";
143
+
144
+ const UNBXD_DATATYPE_DECIMAL = "decimal";
145
+
146
+ const UNBXD_DATATYPE_DATE = "date";
147
+
148
+ const UNBXD_DATATYPE_BOOL = "bool";
149
+
150
+ const UNBXD_DATATYPE_SKU = "sku";
151
+
152
+ const FIELD_CONF = 'field_conf';
153
+
154
+ const INCLUDE_OUT_OF_STOCK = 'include_out_of_stock';
155
+
156
+ const INCLUDE_CHILD_PRODUCT = 'include_child_product';
157
+
158
+ const FEED_STATUS_UPLOADING = 'UPLOADING';
159
+
160
+ const FEED_STATUS_UPLOADED_SUCCESSFULLY = 'UPLOADED SUCCESSFULL';
161
+
162
+ const FEED_STATUS_UPLOADED_FAILED = 'FAILED';
163
+
164
+ const EXCLUDE_CATEGORY = 'exclude_category';
165
+
166
+ const AUTH_TOKEN = 'auth_token';
167
+
168
+ const AUTH_REQUEST_PARAM = 'auth';
169
+
170
+ const LAST_UPLOAD_TIME = 'lastUpload';
171
+
172
+ }
app/code/local/Unbxd/Recscore/Helper/Data.php ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Helper_Data extends Mage_Core_Helper_Abstract {
9
+
10
+ const LOG_FILE = "unbxd_recscore.log";
11
+
12
+ /**
13
+ * array field which stores the config
14
+ *
15
+ * @var array
16
+ */
17
+ public $engineConfigData = NULL;
18
+
19
+ /**
20
+ * Method to log
21
+ *
22
+ * @param int $level
23
+ * @param string $message
24
+ */
25
+ public function log($level, $message) {
26
+ Mage::log($message, $level, static::LOG_FILE, true);
27
+ }
28
+
29
+ /**
30
+ * Returns search engine config data.
31
+ *
32
+ * @param string $prefix
33
+ * @param mixed $store
34
+ * @return array
35
+ */
36
+ public function getEngineConfigData($prefix = '', Mage_Core_Model_Website $website = null, $original = false)
37
+ {
38
+ if(is_null($website)) {
39
+ $website = Mage::app()->getWebsite();
40
+ }
41
+ $originalConfig = array();
42
+ if($original) {
43
+ $originalConfig = $this->getOriginalValue($prefix, $website);
44
+ }
45
+ if(is_null($this->engineConfigData)) {
46
+ $this->engineConfigData = Mage::getConfig()
47
+ ->getNode(Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX, 'websites',
48
+ (int)$website->getWebsiteId());
49
+ }
50
+
51
+ if (!$this->engineConfigData) {
52
+ return false;
53
+ }
54
+ if ($this->engineConfigData->hasChildren()) {
55
+ $value = array();
56
+ foreach ($this->engineConfigData->asArray() as $k=>$v) {
57
+ if ($prefix != '' && preg_match("#^{$prefix}(.*)#", $k, $matches) || $prefix == '') {
58
+ $value[$k] = $v;
59
+ }
60
+ }
61
+ } else {
62
+ $value = (string)$this->engineConfigData;
63
+ }
64
+ return array_merge($value,$originalConfig);
65
+
66
+ }
67
+
68
+ public function getOriginalValue($prefix = '', Mage_Core_Model_Website $website) {
69
+ $configDataCollection = Mage::getModel('core/config_data')
70
+ ->getCollection()
71
+ ->addScopeFilter('websites', (int)$website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX)
72
+ ->load();
73
+ $value =array();
74
+ foreach($configDataCollection as $data) {
75
+ $path = $data->getPath();
76
+ if (substr($path, 0, strlen(Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX)) == Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX) {
77
+ $path = substr($path, strlen(Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX) +1);
78
+ }
79
+ if ($prefix != '' && preg_match("#^{$prefix}(.*)#", $path, $matches)) {
80
+ $value[$path] = $data->getValue();
81
+ }
82
+ }
83
+ return $value;
84
+ }
85
+
86
+
87
+ /**
88
+ * Method to validate the config save allowed
89
+ * @param Mage_Core_Model_Website $website
90
+ * @param $configName
91
+ * @param $origData
92
+ * @return string | null
93
+ */
94
+ public function isConfigSaveAllowed(Mage_Core_Model_Website $website, $configName, $value, $origData = true) {
95
+ if(is_null($value) || is_array($value) || is_object($value)){
96
+ return "Invalid Value given";
97
+ }
98
+ if($configName == Unbxd_Recscore_Helper_Constants::SEARCH_HOSTED_STATUS && $value == Unbxd_Recscore_Helper_Constants::TRUE && $this->isConfigTrue($website, Unbxd_Recscore_Helper_Constants::SEARCH_MOD_STATUS, $origData)) {
99
+ return "Module search is on";
100
+ }
101
+ if($configName == Unbxd_Recscore_Helper_Constants::SEARCH_MOD_STATUS && $value == Unbxd_Recscore_Helper_Constants::TRUE && $this->isConfigTrue($website, Unbxd_Recscore_Helper_Constants::SEARCH_HOSTED_STATUS, $origData)) {
102
+ return "Hosted search is on";
103
+ }
104
+
105
+ return null;
106
+ }
107
+
108
+
109
+ /**
110
+ * @param Mage_Core_Model_Website $website
111
+ * @param $data
112
+ * @return void
113
+ */
114
+ public function saveConfig(Mage_Core_Model_Website $website, $data) {
115
+ foreach($data as $key => $value) {
116
+ if(!is_null($this->isConfigSaveAllowed($website, $key, $value, true)))
117
+ continue;
118
+ Mage::getConfig()
119
+ ->saveConfig(Unbxd_Recscore_Helper_Constants::UNBXD_CONFIG_PREFIX .
120
+ Unbxd_Recscore_Helper_Constants::CONFIG_SEPARATOR .
121
+ $key,
122
+ (string)$value,
123
+ 'websites',
124
+ (int)$website->getWebsiteId());
125
+ }
126
+ }
127
+
128
+ public function isConfigTrue(Mage_Core_Model_Website $website, $configName, $origData = false) {
129
+ $configData = $this->getEngineConfigData($configName, $website, $origData);
130
+ return array_key_exists($configName, $configData) &&
131
+ $configData[$configName] == Unbxd_Recscore_Helper_Constants::TRUE;
132
+ }
133
+
134
+ /*
135
+ * returns the unbxd site name
136
+ * @return String
137
+ */
138
+ public function getSiteName(){
139
+ $siteKeyLabel = Unbxd_Recscore_Helper_Constants::SITE_KEY;
140
+ $config = $this->getEngineConfigData($siteKeyLabel);
141
+ if(array_key_exists($siteKeyLabel, $config) && $config[$siteKeyLabel] != "")
142
+ return $config[$siteKeyLabel];
143
+ else {
144
+ $siteKey = Mage::getResourceModel('unbxd_recscore/config')
145
+ ->getValue(Mage::app()->getWebsite()->getWebsiteId(),
146
+ $siteKeyLabel);
147
+ if(isset($siteKey) && $siteKey != ''){
148
+ $this->saveConfig(Mage::app()->getWebsite(),
149
+ array($siteKeyLabel => $siteKey));
150
+ return $siteKey;
151
+ } else {
152
+ if(Mage::getIsDeveloperMode()) {
153
+ Mage::throwException("Unbxd site key is empty");
154
+ } else {
155
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'Unbxd site key is not set');
156
+ return null;
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ /*
163
+ * returns the unbxd api Key
164
+ * @return String
165
+ */
166
+ public function getApiKey(){
167
+ $apiKeyLabel = Unbxd_Recscore_Helper_Constants::API_KEY;
168
+ $config = $this->getEngineConfigData($apiKeyLabel);
169
+ if(array_key_exists($apiKeyLabel, $config) && $config[$apiKeyLabel] != "")
170
+ return $config[$apiKeyLabel];
171
+ else {
172
+ $apiKey = Mage::getResourceModel('unbxd_recscore/config')
173
+ ->getValue(Mage::app()->getWebsite()->getWebsiteId(), $apiKeyLabel);
174
+ if(isset($apiKey) && $apiKey != ''){
175
+ $this->saveConfig(Mage::app()->getWebsite(),
176
+ array($apiKeyLabel => $apiKey));
177
+ return $apiKey;
178
+ } else {
179
+ if(Mage::getIsDeveloperMode()) {
180
+ Mage::throwException("Unbxd api key is empty");
181
+ } else {
182
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'Unbxd Api key is not set');
183
+ return null;
184
+ }
185
+ }
186
+ }
187
+ }
188
+
189
+ /*
190
+ * decides which module should be given more priority based on the version
191
+ * @return boolean
192
+ */
193
+ public function isExecutable() {
194
+ if(Mage::helper('core')->isModuleEnabled('Unbxd_Searchcore')){
195
+ $otherModuleVersion = (float)Mage::getConfig()->getModuleConfig("Unbxd_Searchcore")->version;
196
+ $currentModuleVersion = (float)Mage::getConfig()->getModuleConfig("Unbxd_Recscore")->version;
197
+ if(version_compare($otherModuleVersion, $currentModuleVersion) > 0) {
198
+ return false;
199
+ } else if($this->version_compare($otherModuleVersion, $currentModuleVersion) == 0) {
200
+ return true;
201
+ }
202
+ }
203
+ return true;
204
+ }
205
+
206
+ //Compare two sets of versions, where major/minor/etc. releases are separated by dots.
207
+ //Returns 0 if both are equal, 1 if A > B, and -1 if B < A.
208
+ public function version_compare($a, $b)
209
+ {
210
+ $a = explode(".", rtrim($a, ".0")); //Split version into pieces and remove trailing .0
211
+ $b = explode(".", rtrim($b, ".0")); //Split version into pieces and remove trailing .0
212
+ foreach ($a as $depth => $aVal)
213
+ { //Iterate over each piece of A
214
+ if (isset($b[$depth]))
215
+ { //If B matches A to this depth, compare the values
216
+ if ($aVal > $b[$depth]) return 1; //Return A > B
217
+ else if ($aVal < $b[$depth]) return -1; //Return B > A
218
+ //An equal result is inconclusive at this point
219
+ }
220
+ else
221
+ { //If B does not match A to this depth, then A comes after B in sort order
222
+ return 1; //so return A > B
223
+ }
224
+ }
225
+ //At this point, we know that to the depth that A and B extend to, they are equivalent.
226
+ //Either the loop ended because A is shorter than B, or both are equal.
227
+ return (count($a) < count($b)) ? -1 : 0;
228
+ }
229
+ }
230
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Helper/Feedhelper.php RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper_Data {
4
 
5
  var $categoryMap;
6
 
@@ -10,6 +10,8 @@ class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper
10
 
11
  var $_rootCategoryIds = array();
12
 
 
 
13
  protected function array_match($needle, $haystack) {
14
  if(!is_array($needle)) {
15
  return in_array($needle, $haystack);
@@ -36,7 +38,6 @@ class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper
36
  $this->categoryMap[$category_id] = $category;
37
  $parentCategories = $category->getParentCategories();
38
  foreach($parentCategories as $parentCategory) {
39
- $parentCategory = Mage::getModel('catalog/category')->load($parentCategory->getId());
40
  $this->categoryMap[$parentCategory->getId()] = $parentCategory;
41
  }
42
  return $this->categoryMap[$category_id];
@@ -82,16 +83,23 @@ class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper
82
  $attributes = Mage::getSingleton('eav/config')
83
  ->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
84
  foreach($attributes as $attribute){
85
- $this->attributeToTypeMap[$attribute->getAttributeCode()] = $attribute-> getFrontendInput();
86
  }
87
  return $this->attributeToTypeMap;
88
  }
89
  }
 
 
 
 
 
90
 
91
  /**
92
  * method to get field type of the field
93
- **/
94
- protected function getFieldType($attributeName){
 
 
95
  $fieldMap = $this->getAttributeMapping();
96
  if(array_key_exists( $attributeName, $fieldMap)){
97
  return $fieldMap[$attributeName];
@@ -101,21 +109,23 @@ class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper
101
  }
102
 
103
  /*
104
- * function to check whether the field is a multiSelect/select or not,
105
- * This is optimized method, where it doesn't make a database call to get fieldType
106
- * where it fetches from the local variable, which holds the information of field to fieldType mapping
107
- */
 
 
108
  public function isMultiSelect($attributeName = ""){
109
- if($attributeName == "status" || $attributeName == "visibility" ){
110
  return false;
111
  }
112
  if($this->getFieldType($attributeName) == "select" ||
113
  $this->getFieldType($attributeName) == "multiselect" ||
114
- $attributeName == Unbxd_Recommendation_Model_Resource_Field::CATEGORY_IDS ||
115
- $attributeName == Unbxd_Recommendation_Model_Resource_Field::CATEGORY_IDS_NAME ||
116
- $attributeName == Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_1_NAME ||
117
- $attributeName == Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_2_NAME ||
118
- $attributeName == Unbxd_Recommendation_Model_Resource_Field::CAT_LEVEL_3_NAME){
119
  return true;
120
  }
121
  return false;
@@ -138,7 +148,7 @@ class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper
138
  {
139
  $categories = array();
140
 
141
- /** @var $stores Mage_Core_Model_Store[] */
142
  $stores = Mage::app()->getStores();
143
 
144
  foreach ($stores as $store) {
@@ -180,4 +190,16 @@ class Unbxd_Recommendation_Helper_Feedhelper extends Unbxd_Recommendation_Helper
180
  return $productId;
181
  }
182
 
183
- }
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
 
3
+ class Unbxd_Recscore_Helper_Feedhelper extends Unbxd_Recscore_Helper_Data {
4
 
5
  var $categoryMap;
6
 
10
 
11
  var $_rootCategoryIds = array();
12
 
13
+ var $_filters;
14
+
15
  protected function array_match($needle, $haystack) {
16
  if(!is_array($needle)) {
17
  return in_array($needle, $haystack);
38
  $this->categoryMap[$category_id] = $category;
39
  $parentCategories = $category->getParentCategories();
40
  foreach($parentCategories as $parentCategory) {
 
41
  $this->categoryMap[$parentCategory->getId()] = $parentCategory;
42
  }
43
  return $this->categoryMap[$category_id];
83
  $attributes = Mage::getSingleton('eav/config')
84
  ->getEntityType(Mage_Catalog_Model_Product::ENTITY)->getAttributeCollection();
85
  foreach($attributes as $attribute){
86
+ $this->attributeToTypeMap[$attribute->getAttributeCode()] = $attribute->getFrontendInput();
87
  }
88
  return $this->attributeToTypeMap;
89
  }
90
  }
91
+
92
+ public function isAttributePresent($attributeName) {
93
+ $fieldMap = $this->getAttributeMapping();
94
+ return array_key_exists( $attributeName, $fieldMap);
95
+ }
96
 
97
  /**
98
  * method to get field type of the field
99
+ * @param $attributeName
100
+ * @return string
101
+ */
102
+ public function getFieldType($attributeName){
103
  $fieldMap = $this->getAttributeMapping();
104
  if(array_key_exists( $attributeName, $fieldMap)){
105
  return $fieldMap[$attributeName];
109
  }
110
 
111
  /*
112
+ * function to check whether the field is a multiSelect/select or not,
113
+ * This is optimized method, where it doesn't make a database call to get fieldType
114
+ * where it fetches from the local variable, which holds the information of field to fieldType mapping
115
+ * @param string $attributeName
116
+ * @return bool
117
+ */
118
  public function isMultiSelect($attributeName = ""){
119
+ if($attributeName == "status" || $attributeName == "visibility" || $attributeName == "entity_id" ){
120
  return false;
121
  }
122
  if($this->getFieldType($attributeName) == "select" ||
123
  $this->getFieldType($attributeName) == "multiselect" ||
124
+ $attributeName == Unbxd_Recscore_Model_Resource_Field::CATEGORY_IDS ||
125
+ $attributeName == Unbxd_Recscore_Model_Resource_Field::CATEGORY_IDS_NAME ||
126
+ $attributeName == Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_1_NAME ||
127
+ $attributeName == Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_2_NAME ||
128
+ $attributeName == Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_3_NAME){
129
  return true;
130
  }
131
  return false;
148
  {
149
  $categories = array();
150
 
151
+ /** @var $stores Mage_Recscore_Model_Store[] */
152
  $stores = Mage::app()->getStores();
153
 
154
  foreach ($stores as $store) {
190
  return $productId;
191
  }
192
 
193
+ /**
194
+ * Method to get the filters that need to be excluded in the website
195
+ * @param Mage_Core_Model_Website $website
196
+ * @return array
197
+ */
198
+ public function getFilters(Mage_Core_Model_Website $website) {
199
+ if(!isset($this->_filters)) {
200
+ $this->_filters = Mage::getResourceModel('unbxd_recscore/config')->getFilters($website);
201
+ }
202
+ return $this->_filters;
203
+ }
204
+
205
+ }
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Request.php RENAMED
@@ -4,10 +4,10 @@
4
  * Class to make the request to the Unbxd api
5
  *
6
  * @category Unbxd
7
- * @package Unbxd_Recommendation
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
- class Unbxd_Recommendation_Model_Api_Request extends Varien_Object {
11
 
12
  /**
13
  * end url where the request is firing
@@ -173,22 +173,22 @@ class Unbxd_Recommendation_Model_Api_Request extends Varien_Object {
173
  /**
174
  * Method which will make the api call
175
  *
176
- * @return false|Unbxd_Recommendation_Model_Api_Response
177
  */
178
  public function execute(){
179
  try {
180
  $request = $this->getRestClient();
181
  $raw_response = $request->request();
182
  } catch (Zend_Http_Client_Exception $e) {
183
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR,
184
  sprintf($this->getUrl() ." failed because HTTP error: %s", $e->getMessage()));
185
- return Mage::getModel('unbxd_recommendation/api_response')
186
- ->setErrorMessage(Unbxd_Recommendation_Model_Api_Response::SERVER_ERR);
187
  }
188
- return Mage::getModel("unbxd_recommendation/api_response")
189
  ->setJsonResponse($this->isJsonResponse())
190
  ->setResponse($raw_response, $this->getUrl());
191
- }
192
 
193
  /**
194
  * Method to return string
@@ -208,4 +208,4 @@ class Unbxd_Recommendation_Model_Api_Request extends Varien_Object {
208
 
209
  }
210
 
211
- ?>
4
  * Class to make the request to the Unbxd api
5
  *
6
  * @category Unbxd
7
+ * @package Unbxd_Recscore
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
+ class Unbxd_Recscore_Model_Api_Request extends Varien_Object {
11
 
12
  /**
13
  * end url where the request is firing
173
  /**
174
  * Method which will make the api call
175
  *
176
+ * @return false|Unbxd_Recscore_Model_Api_Response
177
  */
178
  public function execute(){
179
  try {
180
  $request = $this->getRestClient();
181
  $raw_response = $request->request();
182
  } catch (Zend_Http_Client_Exception $e) {
183
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR,
184
  sprintf($this->getUrl() ." failed because HTTP error: %s", $e->getMessage()));
185
+ return Mage::getModel('unbxd_recscore/api_response')
186
+ ->setErrorMessage(Unbxd_Recscore_Model_Api_Response::SERVER_ERR);
187
  }
188
+ return Mage::getModel("unbxd_recscore/api_response")
189
  ->setJsonResponse($this->isJsonResponse())
190
  ->setResponse($raw_response, $this->getUrl());
191
+ }
192
 
193
  /**
194
  * Method to return string
208
 
209
  }
210
 
211
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Response.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Api_Response extends Varien_Object {
9
 
10
  const SERVER_ERR = 'Unable to reach unbxd server, Please contact support';
11
 
@@ -32,6 +32,7 @@ class Unbxd_Recommendation_Model_Api_Response extends Varien_Object {
32
  protected $response;
33
 
34
  public function isJsonResponse() {
 
35
  return $this->jsonResponse;
36
  }
37
 
@@ -128,16 +129,16 @@ class Unbxd_Recommendation_Model_Api_Response extends Varien_Object {
128
  $this->setMessage("success");
129
  $body = $response->getBody();
130
  if(!$this->isJsonResponse()) {
131
- Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, "response from the " . $url . " is successful");
132
  $this->setData("body", $body);
133
  return $this;
134
  }
135
  $this->response = json_decode($body, true);
136
- Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, "response from the " . $url . " is " . $body);
137
  if($this->response == false || !is_array($this->response) || sizeof($this->response) == 0) {
138
  $this->success = false;
139
  $this->setMessage("Invalid Authorization credentials");
140
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, $url . " api failed cos ". $this->getMessage());
141
  return $this;
142
  }
143
  } else {
@@ -152,7 +153,7 @@ class Unbxd_Recommendation_Model_Api_Response extends Varien_Object {
152
  $message = "Unbxd Unexpected error, Please contact support";
153
  $this->setMessage($message);
154
  }
155
- Mage::helper('unbxd_recommendation')
156
  ->log(Zend_Log::ERR, $url . " api failed cos ". $response->getStatus() . ":" . $message);
157
  }
158
  return $this;
@@ -160,4 +161,4 @@ class Unbxd_Recommendation_Model_Api_Response extends Varien_Object {
160
 
161
 
162
  }
163
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Api_Response extends Varien_Object {
9
 
10
  const SERVER_ERR = 'Unable to reach unbxd server, Please contact support';
11
 
32
  protected $response;
33
 
34
  public function isJsonResponse() {
35
+
36
  return $this->jsonResponse;
37
  }
38
 
129
  $this->setMessage("success");
130
  $body = $response->getBody();
131
  if(!$this->isJsonResponse()) {
132
+ #Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, "response from the " . $url . " is successful");
133
  $this->setData("body", $body);
134
  return $this;
135
  }
136
  $this->response = json_decode($body, true);
137
+ #Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, "response from the " . $url . " is " . $body);
138
  if($this->response == false || !is_array($this->response) || sizeof($this->response) == 0) {
139
  $this->success = false;
140
  $this->setMessage("Invalid Authorization credentials");
141
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, $url . " api failed cos ". $this->getMessage());
142
  return $this;
143
  }
144
  } else {
153
  $message = "Unbxd Unexpected error, Please contact support";
154
  $this->setMessage($message);
155
  }
156
+ Mage::helper('unbxd_recscore')
157
  ->log(Zend_Log::ERR, $url . " api failed cos ". $response->getStatus() . ":" . $message);
158
  }
159
  return $this;
161
 
162
 
163
  }
164
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task.php RENAMED
@@ -2,18 +2,16 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- abstract class Unbxd_Recommendation_Model_Api_Task extends Varien_Object {
9
 
10
- const PLATFORM_API_BASE_URL = "http://accounts.unbxdapi.com/admin/";
11
 
12
- const RECOMMENDATION_SETTINGS_URL = "http://starwreck.unbxdapi.com/";
13
 
14
- const TRACKER_URL = "http://tracker.unbxdapi.com/";
15
-
16
- const RECOMMENDATION_API = "https://recommendations.unbxdapi.com/";
17
 
18
  const TIMEOUT = 30;
19
 
@@ -34,6 +32,9 @@ abstract class Unbxd_Recommendation_Model_Api_Task extends Varien_Object {
34
  public function __construct() {
35
  $this->preparationSuccessful = false;
36
  $this->errors = array();
 
 
 
37
  }
38
 
39
  /**
@@ -47,22 +48,22 @@ abstract class Unbxd_Recommendation_Model_Api_Task extends Varien_Object {
47
 
48
  abstract public function prepare(Mage_Core_Model_Website $website);
49
 
50
- abstract protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response);
51
 
52
  /**
53
  * Method which will make the api call
54
  *
55
- * @return false|Unbxd_Recommendation_Model_Api_Response
56
  */
57
  public function process() {
58
  if(!$this->preparationSuccessful) {
59
- Mage::helper("unbxd_recommendation")
60
  ->log(Zend_Log::ERR,
61
  sizeof($this->errors == 0)?"prepare method not called":json_encode($this->errors));
62
- return Mage::getModel("unbxd_recommendation/api_response")
63
  ->setErrors(sizeof($this->errors) == 0?array("message" => "prepare method not called"):$this->errors);
64
  }
65
- $request = Mage::getModel("unbxd_recommendation/api_request")
66
  ->setUrl(static::$url)
67
  ->setMethod(static::method)
68
  ->setHeaders($this->headers)
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ abstract class Unbxd_Recscore_Model_Api_Task extends Varien_Object {
9
 
10
+ static $PLATFORM_API_BASE_URL = "http://accounts.unbxdapi.com/admin/";
11
 
12
+ static $RECOMMENDATION_SETTINGS_URL = "http://starwreck.unbxdapi.com/";
13
 
14
+ static $TRACKER_URL = "http://tracker.unbxdapi.com/";
 
 
15
 
16
  const TIMEOUT = 30;
17
 
32
  public function __construct() {
33
  $this->preparationSuccessful = false;
34
  $this->errors = array();
35
+ static::$PLATFORM_API_BASE_URL = Mage::helper('unbxd_recscore/confighelper')->getConfigData('platform_url');
36
+ static::$RECOMMENDATION_SETTINGS_URL = Mage::helper('unbxd_recscore/confighelper')->getConfigData('service_url');
37
+ static::$TRACKER_URL = Mage::helper('unbxd_recscore/confighelper')->getConfigData('tracker_url');
38
  }
39
 
40
  /**
48
 
49
  abstract public function prepare(Mage_Core_Model_Website $website);
50
 
51
+ abstract protected function postProcess(Unbxd_Recscore_Model_Api_Response $response);
52
 
53
  /**
54
  * Method which will make the api call
55
  *
56
+ * @return false|Unbxd_Recscore_Model_Api_Response
57
  */
58
  public function process() {
59
  if(!$this->preparationSuccessful) {
60
+ Mage::helper("unbxd_recscore")
61
  ->log(Zend_Log::ERR,
62
  sizeof($this->errors == 0)?"prepare method not called":json_encode($this->errors));
63
+ return Mage::getModel("unbxd_recscore/api_response")
64
  ->setErrors(sizeof($this->errors) == 0?array("message" => "prepare method not called"):$this->errors);
65
  }
66
+ $request = Mage::getModel("unbxd_recscore/api_request")
67
  ->setUrl(static::$url)
68
  ->setMethod(static::method)
69
  ->setHeaders($this->headers)
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Analyticsimpression.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Api_Task_Analyticsimpression extends Unbxd_Recommendation_Model_Api_Task
9
  {
10
 
11
  const method = Zend_Http_Client::GET;
@@ -17,21 +17,21 @@ class Unbxd_Recommendation_Model_Api_Task_Analyticsimpression extends Unbxd_Reco
17
  return $this;
18
  }
19
 
20
- protected function prepareUrl($website) {
21
- $siteKey = Mage::getResourceModel("unbxd_recommendation/config")
22
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
23
  if(is_null($siteKey)) {
24
  $this->preparationSuccessful = false;
25
  $this->errors["message"] = "Site key not set";
26
  return;
27
  }
28
 
29
- static::$url = static::RECOMMENDATION_SETTINGS_URL . "dashboard/analytics/integrationDetails/" . $siteKey;
30
  }
31
 
32
- protected function prepareHeaders($website) {
33
- $username = Mage::getResourceModel("unbxd_recommendation/config")
34
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::USERNAME);
35
  if(is_null($username)) {
36
  $this->preparationSuccessful = false;
37
  $this->errors["message"] = "Secret key not set";
@@ -41,9 +41,9 @@ class Unbxd_Recommendation_Model_Api_Task_Analyticsimpression extends Unbxd_Reco
41
  $this->headers["authorization"] = "Basic " . base64_encode($username . ':$uauth');
42
  }
43
 
44
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
45
  return $response;
46
  }
47
 
48
  }
49
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Api_Task_Analyticsimpression extends Unbxd_Recscore_Model_Api_Task
9
  {
10
 
11
  const method = Zend_Http_Client::GET;
17
  return $this;
18
  }
19
 
20
+ protected function prepareUrl(Mage_Core_Model_Website $website) {
21
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
22
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
23
  if(is_null($siteKey)) {
24
  $this->preparationSuccessful = false;
25
  $this->errors["message"] = "Site key not set";
26
  return;
27
  }
28
 
29
+ static::$url = static::$RECOMMENDATION_SETTINGS_URL . "dashboard/analytics/integrationDetails/" . $siteKey;
30
  }
31
 
32
+ protected function prepareHeaders(Mage_Core_Model_Website $website) {
33
+ $username = Mage::getResourceModel("unbxd_recscore/config")
34
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::USERNAME);
35
  if(is_null($username)) {
36
  $this->preparationSuccessful = false;
37
  $this->errors["message"] = "Secret key not set";
41
  $this->headers["authorization"] = "Basic " . base64_encode($username . ':$uauth');
42
  }
43
 
44
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
45
  return $response;
46
  }
47
 
48
  }
49
+ ?>
app/code/local/Unbxd/Recscore/Model/Api/Task/Autosuggestindex.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Model_Api_Task_Autosuggestindex extends Unbxd_Recscore_Model_Api_Task {
9
+
10
+ const method = Zend_Http_Client::POST;
11
+
12
+ const STATUS = 'status';
13
+
14
+ const MESSAGE = 'message';
15
+
16
+ public function prepare(Mage_Core_Model_Website $website) {
17
+ $this->preparationSuccessful = true;
18
+ $this->prepareUrl($website);
19
+ $this->prepareHeaders($website);
20
+ return $this;
21
+ }
22
+
23
+ protected function prepareUrl(Mage_Core_Model_Website $website) {
24
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
25
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
26
+ if(is_null($siteKey)) {
27
+ $this->preparationSuccessful = false;
28
+ $this->errors["message"] = "Site key not set";
29
+ return;
30
+ }
31
+
32
+ static::$url = static::$PLATFORM_API_BASE_URL . $siteKey . "/build-autosuggest";
33
+ }
34
+
35
+ protected function prepareHeaders(Mage_Core_Model_Website $website) {
36
+ $apiKey = Mage::getResourceModel("unbxd_recscore/config")
37
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::API_KEY);
38
+ $secretKey = Mage::getResourceModel("unbxd_recscore/config")
39
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SECRET_KEY);
40
+ if(is_null($secretKey) || is_null($apiKey)) {
41
+ $this->preparationSuccessful = false;
42
+ $this->errors["message"] = "Site key not set";
43
+ return;
44
+ }
45
+ $this->headers["Authorization"] = base64_encode($apiKey.":" .$secretKey);
46
+ }
47
+
48
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
49
+ return $response;
50
+ }
51
+ }
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Feeddetails.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Api_Task_Feeddetails extends Unbxd_Recommendation_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::GET;
11
 
@@ -25,22 +25,22 @@ class Unbxd_Recommendation_Model_Api_Task_Feeddetails extends Unbxd_Recommendati
25
  }
26
 
27
  protected function prepareUrl(Mage_Core_Model_Website $website) {
28
- $siteKey = Mage::getResourceModel("unbxd_recommendation/config")
29
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
30
  if(is_null($siteKey)) {
31
  $this->preparationSuccessful = false;
32
  $this->errors["message"] = "Site key not set";
33
  return;
34
  }
35
 
36
- static::$url = self::PLATFORM_API_BASE_URL . $siteKey . "/feed-info";
37
  }
38
 
39
  protected function prepareHeaders(Mage_Core_Model_Website $website) {
40
- $apiKey = Mage::getResourceModel("unbxd_recommendation/config")
41
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY);
42
- $secretKey = Mage::getResourceModel("unbxd_recommendation/config")
43
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
44
  if(is_null($secretKey) || is_null($apiKey)) {
45
  $this->preparationSuccessful = false;
46
  $this->errors["message"] = "Site key not set";
@@ -49,7 +49,7 @@ class Unbxd_Recommendation_Model_Api_Task_Feeddetails extends Unbxd_Recommendati
49
  $this->headers["Authorization"] = base64_encode($apiKey.":" .$secretKey);
50
  }
51
 
52
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
53
  if(!$response->isSuccess()) {
54
  return $response;
55
  }
@@ -67,4 +67,4 @@ class Unbxd_Recommendation_Model_Api_Task_Feeddetails extends Unbxd_Recommendati
67
  }
68
  return $response;
69
  }
70
- }
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Api_Task_Feeddetails extends Unbxd_Recscore_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::GET;
11
 
25
  }
26
 
27
  protected function prepareUrl(Mage_Core_Model_Website $website) {
28
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
29
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
30
  if(is_null($siteKey)) {
31
  $this->preparationSuccessful = false;
32
  $this->errors["message"] = "Site key not set";
33
  return;
34
  }
35
 
36
+ static::$url = static::$PLATFORM_API_BASE_URL . $siteKey . "/feed-info";
37
  }
38
 
39
  protected function prepareHeaders(Mage_Core_Model_Website $website) {
40
+ $apiKey = Mage::getResourceModel("unbxd_recscore/config")
41
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::API_KEY);
42
+ $secretKey = Mage::getResourceModel("unbxd_recscore/config")
43
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SECRET_KEY);
44
  if(is_null($secretKey) || is_null($apiKey)) {
45
  $this->preparationSuccessful = false;
46
  $this->errors["message"] = "Site key not set";
49
  $this->headers["Authorization"] = base64_encode($apiKey.":" .$secretKey);
50
  }
51
 
52
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
53
  if(!$response->isSuccess()) {
54
  return $response;
55
  }
67
  }
68
  return $response;
69
  }
70
+ }
app/code/local/Unbxd/Recscore/Model/Api/Task/Searchimpression.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Model_Api_Task_Searchimpression extends Unbxd_Recscore_Model_Api_Task
9
+ {
10
+
11
+ const method = Zend_Http_Client::GET;
12
+
13
+ public function prepare(Mage_Core_Model_Website $website) {
14
+ $this->preparationSuccessful = true;
15
+ $this->prepareUrl($website);
16
+ $this->prepareHeaders($website);
17
+ return $this;
18
+ }
19
+
20
+ protected function prepareUrl(Mage_Core_Model_Website $website) {
21
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
22
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
23
+ if(is_null($siteKey)) {
24
+ $this->preparationSuccessful = false;
25
+ $this->errors["message"] = "Site key not set";
26
+ return;
27
+ }
28
+
29
+ static::$url = static::$RECOMMENDATION_SETTINGS_URL . "dashboard/analytics/hits/" . $siteKey;
30
+ }
31
+
32
+ protected function prepareHeaders(Mage_Core_Model_Website $website) {
33
+ $username = Mage::getResourceModel("unbxd_recscore/config")
34
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::USERNAME);
35
+ if(is_null($username)) {
36
+ $this->preparationSuccessful = false;
37
+ $this->errors["message"] = "Secret key not set";
38
+ return;
39
+ }
40
+
41
+ $this->headers["authorization"] = "Basic " . base64_encode($username . ':$uauth');
42
+ }
43
+
44
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
45
+ $respObj = $response->getResponse();
46
+ if(array_key_exists("FunnelResponse", $respObj)) {
47
+ if(array_key_exists("Funnels",$respObj["FunnelResponse"])) {
48
+ return $response;
49
+ }
50
+ }
51
+ $response->setSuccess(false);
52
+ $response->setErrorMessage("Unexpected response from Unbxd server, Contact Support");
53
+ return $response;
54
+ }
55
+ }
56
+ ?>
app/code/local/Unbxd/Recscore/Model/Api/Task/Searchsetup.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Model_Api_Task_Searchsetup extends Unbxd_Recscore_Model_Api_Task {
9
+
10
+ const method = Zend_Http_Client::POST;
11
+
12
+ const STATUS = 'status';
13
+
14
+ const MESSAGE = 'message';
15
+
16
+ public function prepare(Mage_Core_Model_Website $website) {
17
+ $this->preparationSuccessful = true;
18
+ $this->prepareUrl($website);
19
+ $this->prepareHeaders($website);
20
+ return $this;
21
+ }
22
+
23
+ protected function prepareUrl(Mage_Core_Model_Website $website) {
24
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
25
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
26
+ if(is_null($siteKey)) {
27
+ $this->preparationSuccessful = false;
28
+ $this->errors["message"] = "Site key not set";
29
+ return;
30
+ }
31
+
32
+ static::$url = static::$PLATFORM_API_BASE_URL . $siteKey . "/complete-search";
33
+ }
34
+
35
+ protected function prepareHeaders(Mage_Core_Model_Website $website) {
36
+ $apiKey = Mage::getResourceModel("unbxd_recscore/config")
37
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::API_KEY);
38
+ $secretKey = Mage::getResourceModel("unbxd_recscore/config")
39
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SECRET_KEY);
40
+ if(is_null($secretKey) || is_null($apiKey)) {
41
+ $this->preparationSuccessful = false;
42
+ $this->errors["message"] = "Site key not set";
43
+ return;
44
+ }
45
+ $this->headers["Authorization"] = base64_encode($apiKey.":" .$secretKey);
46
+ }
47
+
48
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
49
+ return $response;
50
+ }
51
+ }
app/code/local/Unbxd/Recscore/Model/Api/Task/Supportmail.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * User: anantheshadiga
4
+ * Date: 3/2/15
5
+ * Time: 2:12 AM
6
+ */
7
+ class Unbxd_Recscore_Model_Api_Task_Supportmail extends Unbxd_Recscore_Model_Api_Task {
8
+
9
+ const method = Zend_Http_Client::POST;
10
+ protected $isRawData = true;
11
+
12
+
13
+ public function prepare(Mage_Core_Model_Website $website) {
14
+ $this->preparationSuccessful = true;
15
+ $this->prepareUrl($website);
16
+ $this->prepareHeaders($website);
17
+ return $this;
18
+ }
19
+
20
+ protected function prepareUrl(Mage_Core_Model_Website $website) {
21
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
22
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
23
+ if(is_null($siteKey)) {
24
+ $this->preparationSuccessful = false;
25
+ $this->errors["message"] = "Site key not set";
26
+ return;
27
+ }
28
+
29
+ static::$url = static::$RECOMMENDATION_SETTINGS_URL . "dashboard/mail/support";
30
+ }
31
+
32
+ protected function prepareHeaders(Mage_Core_Model_Website $website) {
33
+ $username = Mage::getResourceModel("unbxd_recscore/config")
34
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::USERNAME);
35
+ if(is_null($username)) {
36
+ $this->preparationSuccessful = false;
37
+ $this->errors["message"] = "Secret key not set";
38
+ return;
39
+ }
40
+
41
+ $this->headers["authorization"] = "Basic " . base64_encode($username . ':$uauth');
42
+ }
43
+
44
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
45
+ return $response;
46
+ }
47
+ }
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Trackcart.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Api_Task_Trackcart extends Unbxd_Recommendation_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::POST;
11
 
@@ -21,8 +21,8 @@ class Unbxd_Recommendation_Model_Api_Task_Trackcart extends Unbxd_Recommendation
21
 
22
  protected function prepareUrl(Mage_Core_Model_Website $website)
23
  {
24
- $siteKey = Mage::getResourceModel("unbxd_recommendation/config")
25
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
26
  if (is_null($siteKey)) {
27
  $this->errors["message"] = "Site key not set";
28
  return;
@@ -34,12 +34,12 @@ class Unbxd_Recommendation_Model_Api_Task_Trackcart extends Unbxd_Recommendation
34
  return;
35
  }
36
 
37
- static::$url = static::TRACKER_URL . "v1.0/$siteKey/track/cart/$uid";
38
  $this->preparationSuccessful = true;
39
  }
40
 
41
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
42
  return $response;
43
  }
44
  }
45
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Api_Task_Trackcart extends Unbxd_Recscore_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::POST;
11
 
21
 
22
  protected function prepareUrl(Mage_Core_Model_Website $website)
23
  {
24
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
25
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
26
  if (is_null($siteKey)) {
27
  $this->errors["message"] = "Site key not set";
28
  return;
34
  return;
35
  }
36
 
37
+ static::$url = static::$TRACKER_URL . "v1.0/$siteKey/track/cart/$uid";
38
  $this->preparationSuccessful = true;
39
  }
40
 
41
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
42
  return $response;
43
  }
44
  }
45
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Trackorder.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Api_Task_Trackorder extends Unbxd_Recommendation_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::POST;
11
 
@@ -21,8 +21,8 @@ class Unbxd_Recommendation_Model_Api_Task_Trackorder extends Unbxd_Recommendatio
21
 
22
  protected function prepareUrl(Mage_Core_Model_Website $website)
23
  {
24
- $siteKey = Mage::getResourceModel("unbxd_recommendation/config")
25
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
26
  if (is_null($siteKey)) {
27
  $this->errors["message"] = "Site key not set";
28
  return;
@@ -34,12 +34,12 @@ class Unbxd_Recommendation_Model_Api_Task_Trackorder extends Unbxd_Recommendatio
34
  return;
35
  }
36
 
37
- static::$url = static::TRACKER_URL . "v1.0/$siteKey/track/order/$uid";
38
  $this->preparationSuccessful = true;
39
  }
40
 
41
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
42
  return $response;
43
  }
44
  }
45
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Api_Task_Trackorder extends Unbxd_Recscore_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::POST;
11
 
21
 
22
  protected function prepareUrl(Mage_Core_Model_Website $website)
23
  {
24
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
25
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
26
  if (is_null($siteKey)) {
27
  $this->errors["message"] = "Site key not set";
28
  return;
34
  return;
35
  }
36
 
37
+ static::$url = static::$TRACKER_URL . "v1.0/$siteKey/track/order/$uid";
38
  $this->preparationSuccessful = true;
39
  }
40
 
41
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
42
  return $response;
43
  }
44
  }
45
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Triggerfeedupload.php RENAMED
@@ -4,10 +4,10 @@
4
  * class to validate the secret key and site key with unbxd
5
  *
6
  * @category Unbxd
7
- * @package Unbxd_Recommendation
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
- class Unbxd_Recommendation_Model_Api_Task_Triggerfeedupload extends Unbxd_Recommendation_Model_Api_Task {
11
 
12
  const method = Zend_Http_Client::POST;
13
 
@@ -30,7 +30,7 @@ class Unbxd_Recommendation_Model_Api_Task_Triggerfeedupload extends Unbxd_Recomm
30
  return $this;
31
  }
32
 
33
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
34
  $response->setSuccess(true);
35
  $response->setErrors(array());
36
  return $response;
4
  * class to validate the secret key and site key with unbxd
5
  *
6
  * @category Unbxd
7
+ * @package Unbxd_Recscore
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
+ class Unbxd_Recscore_Model_Api_Task_Triggerfeedupload extends Unbxd_Recscore_Model_Api_Task {
11
 
12
  const method = Zend_Http_Client::POST;
13
 
30
  return $this;
31
  }
32
 
33
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
34
  $response->setSuccess(true);
35
  $response->setErrors(array());
36
  return $response;
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Updatefeaturefields.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Api_Task_Updatefeaturefields extends Unbxd_Recommendation_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::POST;
11
 
@@ -23,22 +23,22 @@ class Unbxd_Recommendation_Model_Api_Task_Updatefeaturefields extends Unbxd_Reco
23
  }
24
 
25
  protected function prepareUrl(Mage_Core_Model_Website $website) {
26
- $siteKey = Mage::getResourceModel("unbxd_recommendation/config")
27
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY);
28
  if(is_null($siteKey)) {
29
  $this->preparationSuccessful = false;
30
  $this->errors["message"] = "Site key not set";
31
  return;
32
  }
33
 
34
- static::$url = self::PLATFORM_API_BASE_URL . $siteKey . "/field-mapping";
35
  }
36
 
37
  protected function prepareHeaders(Mage_Core_Model_Website $website) {
38
- $apiKey = Mage::getResourceModel("unbxd_recommendation/config")
39
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY);
40
- $secretKey = Mage::getResourceModel("unbxd_recommendation/config")
41
- ->getValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY);
42
  if(is_null($secretKey) || is_null($apiKey)) {
43
  $this->preparationSuccessful = false;
44
  $this->errors["message"] = "Site key not set";
@@ -48,16 +48,20 @@ class Unbxd_Recommendation_Model_Api_Task_Updatefeaturefields extends Unbxd_Reco
48
  }
49
 
50
  protected function prepareData($website) {
51
- $featureFields = Mage::getResourceModel("unbxd_recommendation/field_collection")->getFeatureFields($website);
52
  $featureFieldMap = array();
53
  foreach($featureFields as $field) {
54
- $featureFieldMap[$field[Unbxd_Recommendation_Model_Field::featured_field]] =
55
- $field[Unbxd_Recommendation_Model_Field::field_name];
 
 
 
 
56
  }
57
  $this->setData("fieldMapping", $featureFieldMap);
58
  }
59
 
60
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
61
  if(!$response->isSuccess()) {
62
  return $response;
63
  }
@@ -75,4 +79,4 @@ class Unbxd_Recommendation_Model_Api_Task_Updatefeaturefields extends Unbxd_Reco
75
  }
76
  return $response;
77
  }
78
- }
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Api_Task_Updatefeaturefields extends Unbxd_Recscore_Model_Api_Task {
9
 
10
  const method = Zend_Http_Client::POST;
11
 
23
  }
24
 
25
  protected function prepareUrl(Mage_Core_Model_Website $website) {
26
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
27
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
28
  if(is_null($siteKey)) {
29
  $this->preparationSuccessful = false;
30
  $this->errors["message"] = "Site key not set";
31
  return;
32
  }
33
 
34
+ static::$url = static::$PLATFORM_API_BASE_URL . $siteKey . "/field-mapping";
35
  }
36
 
37
  protected function prepareHeaders(Mage_Core_Model_Website $website) {
38
+ $apiKey = Mage::getResourceModel("unbxd_recscore/config")
39
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::API_KEY);
40
+ $secretKey = Mage::getResourceModel("unbxd_recscore/config")
41
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SECRET_KEY);
42
  if(is_null($secretKey) || is_null($apiKey)) {
43
  $this->preparationSuccessful = false;
44
  $this->errors["message"] = "Site key not set";
48
  }
49
 
50
  protected function prepareData($website) {
51
+ $featureFields = Mage::getResourceModel("unbxd_recscore/field_collection")->getFeatureFields($website);
52
  $featureFieldMap = array();
53
  foreach($featureFields as $field) {
54
+ if($field[Unbxd_Recscore_Model_Field::featured_field] == Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_IMAGE_URL) {
55
+ $featureFieldMap[$field[Unbxd_Recscore_Model_Field::featured_field]] = "unbxd_NA";
56
+ continue;
57
+ }
58
+ $featureFieldMap[$field[Unbxd_Recscore_Model_Field::featured_field]] =
59
+ $field[Unbxd_Recscore_Model_Field::field_name];
60
  }
61
  $this->setData("fieldMapping", $featureFieldMap);
62
  }
63
 
64
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
65
  if(!$response->isSuccess()) {
66
  return $response;
67
  }
79
  }
80
  return $response;
81
  }
82
+ }
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Api/Task/Validatekeys.php RENAMED
@@ -4,10 +4,10 @@
4
  * class to validate the secret key and site key with unbxd
5
  *
6
  * @category Unbxd
7
- * @package Unbxd_Recommendation
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
- class Unbxd_Recommendation_Model_Api_Task_Validatekeys extends Unbxd_Recommendation_Model_Api_Task {
11
 
12
  const method = Zend_Http_Client::POST;
13
 
@@ -27,7 +27,7 @@ class Unbxd_Recommendation_Model_Api_Task_Validatekeys extends Unbxd_Recommendat
27
  }
28
 
29
  protected function prepareUrl() {
30
- static::$url = self::RECOMMENDATION_SETTINGS_URL . "dashboard/authenticateMagento";
31
  return $this;
32
  }
33
 
@@ -39,11 +39,11 @@ class Unbxd_Recommendation_Model_Api_Task_Validatekeys extends Unbxd_Recommendat
39
  $params = $this->getData();
40
  if(!array_key_exists(static::SECRET_KEY, $params)) {
41
  $this->preparationSuccessful = false;
42
- $this->errors[Unbxd_Recommendation_Helper_Confighelper::SECRET_KEY] = "secret key expected";
43
  }
44
  if(!array_key_exists(static::SITE_KEY, $params)) {
45
  $this->preparationSuccessful = false;
46
- $this->errors[Unbxd_Recommendation_Helper_Confighelper::SITE_KEY] = "site key expected";
47
  }
48
  if(sizeof($this->getData()) > 2) {
49
  $this->preparationSuccessful = false;
@@ -56,7 +56,7 @@ class Unbxd_Recommendation_Model_Api_Task_Validatekeys extends Unbxd_Recommendat
56
  return $this;
57
  }
58
 
59
- protected function postProcess(Unbxd_Recommendation_Model_Api_Response $response) {
60
  if(!$response->isSuccess()) {
61
  return $response;
62
  }
@@ -69,4 +69,4 @@ class Unbxd_Recommendation_Model_Api_Task_Validatekeys extends Unbxd_Recommendat
69
  }
70
  }
71
 
72
- ?>
4
  * class to validate the secret key and site key with unbxd
5
  *
6
  * @category Unbxd
7
+ * @package Unbxd_Recscore
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
+ class Unbxd_Recscore_Model_Api_Task_Validatekeys extends Unbxd_Recscore_Model_Api_Task {
11
 
12
  const method = Zend_Http_Client::POST;
13
 
27
  }
28
 
29
  protected function prepareUrl() {
30
+ static::$url = static::$RECOMMENDATION_SETTINGS_URL . "dashboard/authenticateMagento";
31
  return $this;
32
  }
33
 
39
  $params = $this->getData();
40
  if(!array_key_exists(static::SECRET_KEY, $params)) {
41
  $this->preparationSuccessful = false;
42
+ $this->errors[Unbxd_Recscore_Helper_Confighelper::SECRET_KEY] = "secret key expected";
43
  }
44
  if(!array_key_exists(static::SITE_KEY, $params)) {
45
  $this->preparationSuccessful = false;
46
+ $this->errors[Unbxd_Recscore_Helper_Confighelper::SITE_KEY] = "site key expected";
47
  }
48
  if(sizeof($this->getData()) > 2) {
49
  $this->preparationSuccessful = false;
56
  return $this;
57
  }
58
 
59
+ protected function postProcess(Unbxd_Recscore_Model_Api_Response $response) {
60
  if(!$response->isSuccess()) {
61
  return $response;
62
  }
69
  }
70
  }
71
 
72
+ ?>
app/code/local/Unbxd/Recscore/Model/Auth.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_Auth {
4
+
5
+ public function authorize(Varien_Event_Observer $observer) {
6
+ $controller = $observer->getControllerAction();
7
+ $request = Mage::app()->getRequest()->getParams();
8
+ if(array_key_exists(Unbxd_Recscore_Helper_Constants::AUTH_REQUEST_PARAM, $request)) {
9
+ $requestAuth = $request[Unbxd_Recscore_Helper_Constants::AUTH_REQUEST_PARAM];
10
+ $authToken = $this->getAuthKey();
11
+ if($requestAuth == $authToken) {
12
+ return;
13
+ }
14
+ $websites = Mage::app()->getWebsites();
15
+ foreach ($websites as $website) {
16
+ $secretKey = Mage::getResourceModel('unbxd_recscore/config')->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SECRET_KEY);
17
+ if($requestAuth == $secretKey) {
18
+ return;
19
+ }
20
+ }
21
+ }
22
+ Mage::app()->getFrontController()->getResponse()->setHttpResponseCode(401);
23
+ $json = json_encode(array('success' => false, 'message' => 'Unauthorized'));
24
+ Mage::app()->getFrontController()->getResponse()->setBody($json);
25
+ Mage::app()->getResponse()->sendResponse();
26
+ exit();
27
+ }
28
+
29
+
30
+ public function getAuthKey() {
31
+ $authToken = Mage::getResourceModel('unbxd_recscore/config')->getValue(0, Unbxd_Recscore_Helper_Constants::AUTH_TOKEN);
32
+ if($authToken == null) {
33
+ return $this->_generateAuthKey();
34
+ }
35
+ return $authToken;
36
+ }
37
+
38
+ protected function _generateAuthKey() {
39
+ $authTokenRawString = Mage::getBaseUrl() . time();
40
+ $authToken = base64_encode($authTokenRawString);
41
+ Mage::getResourceModel('unbxd_recscore/config')->setValue(0, Unbxd_Recscore_Helper_Constants::AUTH_TOKEN, $authToken);
42
+ $authToken = Mage::getResourceModel('unbxd_recscore/config')->getValue(0, Unbxd_Recscore_Helper_Constants::AUTH_TOKEN);
43
+ if(is_null($authToken)) {
44
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, "Couldnt store auth token in DB");
45
+ Mage::throwException("Couldnt store auth token in DB in Unbxd module");
46
+ }
47
+ return $authToken;
48
+ }
49
+ }
50
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Config.php RENAMED
@@ -4,10 +4,10 @@
4
  * This class maintains all the configuration w.r.t Unbxd with site basis
5
  *
6
  * @category Unbxd
7
- * @package Unbxd_Recommendation
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
- class Unbxd_Recommendation_Model_Config extends Mage_Core_Model_Abstract {
11
 
12
  const KEY = "key";
13
 
@@ -23,17 +23,23 @@ class Unbxd_Recommendation_Model_Config extends Mage_Core_Model_Abstract {
23
 
24
  const FEED_LOCK_FALSE = '0';
25
 
 
 
26
  const MAX_FEED_LOCK_TIME = 6;
27
 
28
  const LAST_UPLOAD_TIME = 'lastUpload';
29
 
 
 
 
 
30
  /**
31
  *
32
  * @return void
33
  */
34
  protected function _construct()
35
  {
36
- $this->_init('unbxd_recommendation/config');
37
  }
38
  }
39
 
4
  * This class maintains all the configuration w.r.t Unbxd with site basis
5
  *
6
  * @category Unbxd
7
+ * @package Unbxd_Recscore
8
  * @author Unbxd Software Pvt. Ltd
9
  */
10
+ class Unbxd_Recscore_Model_Config extends Mage_Core_Model_Abstract {
11
 
12
  const KEY = "key";
13
 
23
 
24
  const FEED_LOCK_FALSE = '0';
25
 
26
+ const FEED_STATUS = 'feed_status';
27
+
28
  const MAX_FEED_LOCK_TIME = 6;
29
 
30
  const LAST_UPLOAD_TIME = 'lastUpload';
31
 
32
+ const FILTER_DELIMITER = "|`";
33
+
34
+ const FILTER = 'filter';
35
+
36
  /**
37
  *
38
  * @return void
39
  */
40
  protected function _construct()
41
  {
42
+ $this->_init('unbxd_recscore/config');
43
  }
44
  }
45
 
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Feedcreator.php RENAMED
@@ -1,22 +1,24 @@
1
  <?php
2
 
3
- class Unbxd_Recommendation_Model_Feed_Feedcreator {
4
 
5
  var $fileName;
6
  var $fields;
7
  var $taxonomyFlag;
8
  const PAGE_SIZE = 500;
9
- var $_fullupload;
 
10
 
11
 
12
  public function __construct() {
13
  $this->_fullupload = true;
14
  }
15
 
16
- public function init(Mage_Core_Model_Website $website, $fileName) {
17
  $this->_setFields($website);
 
18
  $this->fileName = $fileName;
19
- }
20
 
21
  /**
22
  * Method to set the full upload
@@ -41,12 +43,12 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
41
  /**
42
  * method to create the feed
43
  **/
44
- public function createFeed($fileName, Mage_Core_Model_Website $website, $fromDate, $currentDate){
45
  $this->init($website, $fileName);
46
  if($this->_createFile()){
47
  $this->log("started writing header");
48
 
49
- if(!$this->_writeFeedContent($website, $fromDate, $currentDate)){
50
  return false;
51
  }
52
 
@@ -56,6 +58,8 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
56
  return true;
57
  }
58
 
 
 
59
  /**
60
  * Method to trigger write the feed contents
61
  * @param $fromdate
@@ -65,13 +69,13 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
65
  * @param $ids
66
  * @return bool
67
  */
68
- protected function _writeFeedContent(Mage_Core_Model_Website $website, $fromDate, $currentDate) {
69
  if(!$this->_appendTofile('{"feed":')) {
70
  $this->log("Error writing feed tag");
71
  return false;
72
  }
73
 
74
- if(!$this->_writeCatalogContent($website, $fromDate, $currentDate)) {
75
  $this->log("Error writing catalog tag");
76
  return false;
77
  }
@@ -91,7 +95,7 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
91
  * @param $ids
92
  * @return bool
93
  */
94
- protected function _writeCatalogContent(Mage_Core_Model_Website $website, $fromDate, $currentDate) {
95
  if(!$this->_appendTofile('{"catalog":{')) {
96
  $this->log("Error writing closing catalog tag");
97
  return false;
@@ -105,12 +109,18 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
105
  return false;
106
  }
107
 
 
 
 
 
 
108
  // If both of them are unsuccessful, then tag it as unsuccessful
109
  if(!($this->_writeAddProductsContent($website, $fromDate, $currentDate)
110
  || $this->_writeDeleteProductsContent($website, $fromDate, $currentDate))) {
111
  return false;
112
  }
113
 
 
114
 
115
 
116
  if(!$this->_appendTofile("}")) {
@@ -136,7 +146,7 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
136
  */
137
  protected function _writeSchemaContent() {
138
  return $this->_appendTofile('"schema":'.
139
- Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_schemabuilder')->getSchema($this->fields));
140
  }
141
 
142
  /**
@@ -147,34 +157,34 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
147
  */
148
  protected function _getCatalogCollectionToAdd(Mage_Core_Model_Website $website, $fromDate, $currentDate) {
149
  if($this->isFullUpload()) {
150
- return Mage::getResourceModel('unbxd_recommendation/product_collection')
151
  ->addFullUploadFilters($website);
152
  } else {
153
- $products = Mage::getModel('unbxd_recommendation/sync')
154
  ->getCollection()
155
  ->addWebsiteFilter($website->getWebsiteId())
156
  ->addUnsyncFilter()
157
- ->addOperationFilter(Unbxd_Recommendation_Model_Sync::OPERATION_ADD)
158
  ->load();
159
  $productIds = array();
160
  foreach($products as $product) {
161
  $productIds[] = $product->getProductId();
162
  }
163
- return Mage::getResourceModel('unbxd_recommendation/product_collection')
164
  ->addIncrementalUploadFiltersToAdd($website, $fromDate, $currentDate, $productIds);
165
  }
166
  }
167
 
168
  protected function _getCatalogCollectionToDelete(Mage_Core_Model_Website $website) {
169
- $products = Mage::getModel('unbxd_recommendation/sync')
170
  ->getCollection()
171
  ->addWebsiteFilter($website->getWebsiteId())
172
  ->addUnsyncFilter()
173
- ->addOperationFilter(Unbxd_Recommendation_Model_Sync::OPERATION_DELETE)
174
  ->load();
175
- $collection = Mage::getResourceModel('unbxd_recommendation/product_collection');
176
  foreach($products as $eachProduct) {
177
- $product = new Mage_Catalog_Model_Product();
178
  $product->setEntityId($eachProduct->getProductId());
179
  $collection->addItem($product);
180
  }
@@ -186,14 +196,14 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
186
  return true;
187
  }
188
  $collection1 = $this->_getCatalogCollectionToDelete($website);
189
- $collection2 = Mage::getResourceModel('unbxd_recommendation/product_collection')
190
  ->addIncrementalUploadFiltersToDelete($website, $fromDate, $currentDate)
191
  ->load();
192
 
193
  $collection = $collection1
194
  ->mergeCollection($collection2)
195
  ->virtuallyLoad();
196
- return $this->_writeProducts($website, $collection, Unbxd_Recommendation_Model_Feed_Tags::DELETE, true);
197
  }
198
 
199
 
@@ -220,20 +230,20 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
220
  * @return mixed
221
  */
222
  protected function _processCollection($collection , $pageNum,
223
- $operation = Unbxd_Recommendation_Model_Feed_Tags::ADD, $loadAll = false) {
224
  if(!$loadAll) {
225
  $collection->clear();
226
  $collection->getSelect()->limit(self::PAGE_SIZE, ($pageNum) * self::PAGE_SIZE);
227
  $collection->load();
228
  }
229
- if($operation == Unbxd_Recommendation_Model_Feed_Tags::ADD) {
230
  Mage::getModel('cataloginventory/stock_status')->addStockStatusToProducts($collection);
231
  }
232
  return $collection;
233
  }
234
 
235
  protected function _writeProducts(Mage_Core_Model_Website $website, $collection,
236
- $operation = Unbxd_Recommendation_Model_Feed_Tags::ADD, $loadAllAtOnce = false) {
237
  $pageNum = 0;
238
  $this->log('started writing products');
239
  $firstLoop = true;
@@ -251,22 +261,22 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
251
  if(!$firstLoop && $loadAllAtOnce) {
252
  break;
253
  } else if(!$firstLoop) {
254
- if(!$this->_appendTofile(Unbxd_Recommendation_Model_Feed_Tags::COMMA)) {
255
  $this->log("Error while addings items separator");
256
  return false;
257
  }
258
  } else {
259
  // If it is the first loop adding json tag
260
- if(!$this->_appendTofile(Mage::getSingleton('unbxd_recommendation/feed_tags')->getKey($operation) .
261
- Unbxd_Recommendation_Model_Feed_Tags::COLON. Unbxd_Recommendation_Model_Feed_Tags::OBJ_START.
262
- Mage::getSingleton('unbxd_recommendation/feed_tags')->getKey($operation) .
263
- Unbxd_Recommendation_Model_Feed_Tags::COLON.Unbxd_Recommendation_Model_Feed_Tags::ARRAY_START)) {
264
  $this->log("Error while adding items tag");
265
  return false;
266
  }
267
  }
268
- $content = Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_productbuilder')
269
- ->getProducts($website, $collection, $this->fields);
270
  if(!$this->_appendTofile($content)){
271
  $this->log("Error while addings items");
272
  return false;
@@ -274,8 +284,8 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
274
  $this->log('Added '.($pageNum) * self::PAGE_SIZE.' products');
275
  $firstLoop = false;
276
  }
277
- if(!$this->_appendTofile(Unbxd_Recommendation_Model_Feed_Tags::ARRAY_END .
278
- Unbxd_Recommendation_Model_Feed_Tags::OBJ_END)) {
279
  $this->log("Error writing closing items tag");
280
  return false;
281
  }
@@ -298,7 +308,7 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
298
  return false;
299
  }
300
 
301
- $content=Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_taxonomybuilder')
302
  ->createTaxonomyFeed($site);
303
  $status=$this->_appendTofile($content);
304
 
@@ -317,7 +327,7 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
317
  return false;
318
  }
319
 
320
- $content=Mage::getSingleton('unbxd_recommendation/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection);
321
  $status=$this->_appendTofile($content);
322
 
323
  if(!$status){
@@ -332,11 +342,22 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
332
  $this->log('Added all categories');
333
  return true;
334
  }
 
 
 
 
 
 
 
 
 
 
 
335
 
336
 
337
  protected function _setFields(Mage_Core_Model_Website $website) {
338
- $fields = Mage::getResourceModel("unbxd_recommendation/field_collection")->getFields($website);
339
- $featureFields = Mage::getModel('unbxd_recommendation/field')->getFeaturedFields();
340
  foreach($fields as $eachfield) {
341
  if(array_key_exists($eachfield->getFieldName(), $featureFields)) {
342
  $this->fields[$eachfield->getFieldName()] = $featureFields[$eachfield->getFieldName()];
@@ -344,34 +365,50 @@ class Unbxd_Recommendation_Model_Feed_Feedcreator {
344
  }
345
  if(!is_null($eachfield->getFeaturedField()) &&
346
  array_key_exists($eachfield->getFeaturedField(), $featureFields)) {
347
- $this->fields[$eachfield->getFieldName()] = $featureFields[$eachfield->getFeaturedField()];
 
 
 
 
 
 
348
  continue;
349
  }
350
  $field = array();
351
- $field[Unbxd_Recommendation_Model_Field::status] = 1;
352
- $field[Unbxd_Recommendation_Model_Field::datatype] = $eachfield->getDatatype();
353
- $field[Unbxd_Recommendation_Model_Field::autosuggest] = $eachfield->getAutosuggest();
354
- $field[Unbxd_Recommendation_Model_Field::multivalued] = Mage::helper('unbxd_recommendation/feedhelper')
355
  ->isMultiSelect($eachfield->getFieldName());
356
  $this->fields[$eachfield->getFieldName()] = $field;
357
  }
358
- $this->fields["entity_id"] = Mage::getModel('unbxd_recommendation/field')->getField('longText', "true", "true");
 
359
 
360
  }
 
 
 
 
 
 
 
 
 
361
 
362
  /**
363
  * Function to initialize to feed creation process
364
  */
365
  protected function _createFile(){
366
- return Mage::getSingleton('unbxd_recommendation/feed_filemanager')->createFile($this->fileName);
367
  }
368
 
369
  protected function _appendTofile($data){
370
- return Mage::getSingleton('unbxd_recommendation/feed_filemanager')->appendTofile($this->fileName, $data);
371
  }
372
 
373
  protected function log($message) {
374
- Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, $message);
375
  }
376
 
377
  public function getTaxonomyMappingCollection() {
1
  <?php
2
 
3
+ class Unbxd_Recscore_Model_Feed_Feedcreator {
4
 
5
  var $fileName;
6
  var $fields;
7
  var $taxonomyFlag;
8
  const PAGE_SIZE = 500;
9
+ var $_fullupload;
10
+ var $_copyFields = array();
11
 
12
 
13
  public function __construct() {
14
  $this->_fullupload = true;
15
  }
16
 
17
+ public function init(Mage_Core_Model_Website $website, $fileName) {
18
  $this->_setFields($website);
19
+ $this->_setCopyFields($website);
20
  $this->fileName = $fileName;
21
+ }
22
 
23
  /**
24
  * Method to set the full upload
43
  /**
44
  * method to create the feed
45
  **/
46
+ public function createFeed($fileName, Mage_Core_Model_Website $website, $currentDate){
47
  $this->init($website, $fileName);
48
  if($this->_createFile()){
49
  $this->log("started writing header");
50
 
51
+ if(!$this->_writeFeedContent($website, $currentDate)){
52
  return false;
53
  }
54
 
58
  return true;
59
  }
60
 
61
+
62
+
63
  /**
64
  * Method to trigger write the feed contents
65
  * @param $fromdate
69
  * @param $ids
70
  * @return bool
71
  */
72
+ protected function _writeFeedContent(Mage_Core_Model_Website $website, $currentDate) {
73
  if(!$this->_appendTofile('{"feed":')) {
74
  $this->log("Error writing feed tag");
75
  return false;
76
  }
77
 
78
+ if(!$this->_writeCatalogContent($website, $currentDate)) {
79
  $this->log("Error writing catalog tag");
80
  return false;
81
  }
95
  * @param $ids
96
  * @return bool
97
  */
98
+ protected function _writeCatalogContent(Mage_Core_Model_Website $website, $currentDate) {
99
  if(!$this->_appendTofile('{"catalog":{')) {
100
  $this->log("Error writing closing catalog tag");
101
  return false;
109
  return false;
110
  }
111
 
112
+ $fromDate = Mage::getResourceSingleton('unbxd_recscore/config')
113
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Model_Config::LAST_UPLOAD_TIME);
114
+ if(is_null($fromDate)) {
115
+ $fromDate = "1970-01-01 00:00:00";
116
+ }
117
  // If both of them are unsuccessful, then tag it as unsuccessful
118
  if(!($this->_writeAddProductsContent($website, $fromDate, $currentDate)
119
  || $this->_writeDeleteProductsContent($website, $fromDate, $currentDate))) {
120
  return false;
121
  }
122
 
123
+ Mage::getModel('unbxd_recscore/sync')->markItSynced($website->getWebsiteId(), $currentDate);
124
 
125
 
126
  if(!$this->_appendTofile("}")) {
146
  */
147
  protected function _writeSchemaContent() {
148
  return $this->_appendTofile('"schema":'.
149
+ Mage::getSingleton('unbxd_recscore/feed_jsonbuilder_schemabuilder')->getSchema($this->fields));
150
  }
151
 
152
  /**
157
  */
158
  protected function _getCatalogCollectionToAdd(Mage_Core_Model_Website $website, $fromDate, $currentDate) {
159
  if($this->isFullUpload()) {
160
+ return Mage::getResourceModel('unbxd_recscore/product_collection')
161
  ->addFullUploadFilters($website);
162
  } else {
163
+ $products = Mage::getModel('unbxd_recscore/sync')
164
  ->getCollection()
165
  ->addWebsiteFilter($website->getWebsiteId())
166
  ->addUnsyncFilter()
167
+ ->addOperationFilter(Unbxd_Recscore_Model_Sync::OPERATION_ADD)
168
  ->load();
169
  $productIds = array();
170
  foreach($products as $product) {
171
  $productIds[] = $product->getProductId();
172
  }
173
+ return Mage::getResourceModel('unbxd_recscore/product_collection')
174
  ->addIncrementalUploadFiltersToAdd($website, $fromDate, $currentDate, $productIds);
175
  }
176
  }
177
 
178
  protected function _getCatalogCollectionToDelete(Mage_Core_Model_Website $website) {
179
+ $products = Mage::getModel('unbxd_recscore/sync')
180
  ->getCollection()
181
  ->addWebsiteFilter($website->getWebsiteId())
182
  ->addUnsyncFilter()
183
+ ->addOperationFilter(Unbxd_Recscore_Model_Sync::OPERATION_DELETE)
184
  ->load();
185
+ $collection = Mage::getResourceModel('unbxd_recscore/product_collection');
186
  foreach($products as $eachProduct) {
187
+ $product = Mage_Catalog_Model_Product();
188
  $product->setEntityId($eachProduct->getProductId());
189
  $collection->addItem($product);
190
  }
196
  return true;
197
  }
198
  $collection1 = $this->_getCatalogCollectionToDelete($website);
199
+ $collection2 = Mage::getResourceModel('unbxd_recscore/product_collection')
200
  ->addIncrementalUploadFiltersToDelete($website, $fromDate, $currentDate)
201
  ->load();
202
 
203
  $collection = $collection1
204
  ->mergeCollection($collection2)
205
  ->virtuallyLoad();
206
+ return $this->_writeProducts($website, $collection, Unbxd_Recscore_Model_Feed_Tags::DELETE, true);
207
  }
208
 
209
 
230
  * @return mixed
231
  */
232
  protected function _processCollection($collection , $pageNum,
233
+ $operation = Unbxd_Recscore_Model_Feed_Tags::ADD, $loadAll = false) {
234
  if(!$loadAll) {
235
  $collection->clear();
236
  $collection->getSelect()->limit(self::PAGE_SIZE, ($pageNum) * self::PAGE_SIZE);
237
  $collection->load();
238
  }
239
+ if($operation == Unbxd_Recscore_Model_Feed_Tags::ADD) {
240
  Mage::getModel('cataloginventory/stock_status')->addStockStatusToProducts($collection);
241
  }
242
  return $collection;
243
  }
244
 
245
  protected function _writeProducts(Mage_Core_Model_Website $website, $collection,
246
+ $operation = Unbxd_Recscore_Model_Feed_Tags::ADD, $loadAllAtOnce = false) {
247
  $pageNum = 0;
248
  $this->log('started writing products');
249
  $firstLoop = true;
261
  if(!$firstLoop && $loadAllAtOnce) {
262
  break;
263
  } else if(!$firstLoop) {
264
+ if(!$this->_appendTofile(Unbxd_Recscore_Model_Feed_Tags::COMMA)) {
265
  $this->log("Error while addings items separator");
266
  return false;
267
  }
268
  } else {
269
  // If it is the first loop adding json tag
270
+ if(!$this->_appendTofile(Mage::getSingleton('unbxd_recscore/feed_tags')->getKey($operation) .
271
+ Unbxd_Recscore_Model_Feed_Tags::COLON. Unbxd_Recscore_Model_Feed_Tags::OBJ_START.
272
+ Mage::getSingleton('unbxd_recscore/feed_tags')->getKey($operation) .
273
+ Unbxd_Recscore_Model_Feed_Tags::COLON.Unbxd_Recscore_Model_Feed_Tags::ARRAY_START)) {
274
  $this->log("Error while adding items tag");
275
  return false;
276
  }
277
  }
278
+ $content = Mage::getSingleton('unbxd_recscore/feed_jsonbuilder_productbuilder')
279
+ ->getProducts($website, $collection, $this->fields, $this->_copyFields);
280
  if(!$this->_appendTofile($content)){
281
  $this->log("Error while addings items");
282
  return false;
284
  $this->log('Added '.($pageNum) * self::PAGE_SIZE.' products');
285
  $firstLoop = false;
286
  }
287
+ if(!$this->_appendTofile(Unbxd_Recscore_Model_Feed_Tags::ARRAY_END .
288
+ Unbxd_Recscore_Model_Feed_Tags::OBJ_END)) {
289
  $this->log("Error writing closing items tag");
290
  return false;
291
  }
308
  return false;
309
  }
310
 
311
+ $content=Mage::getSingleton('unbxd_recscore/feed_jsonbuilder_taxonomybuilder')
312
  ->createTaxonomyFeed($site);
313
  $status=$this->_appendTofile($content);
314
 
327
  return false;
328
  }
329
 
330
+ $content=Mage::getSingleton('unbxd_recscore/feed_jsonbuilder_taxonomybuilder')->createMappingFeed($collection);
331
  $status=$this->_appendTofile($content);
332
 
333
  if(!$status){
342
  $this->log('Added all categories');
343
  return true;
344
  }
345
+
346
+ protected function _setCopyFields(Mage_Core_Model_Website $website) {
347
+ $this->_copyFields = array();
348
+ $copyFields = Mage::getModel('unbxd_recscore/field')->getCopyFields($website);
349
+ foreach($copyFields as $fieldName => $copyField) {
350
+ if(array_key_exists($copyField, $this->fields)) {
351
+ $this->_copyFields[$fieldName] = $copyField;
352
+ }
353
+ }
354
+ $this->_copyFields[Mage::getModel('unbxd_recscore/field')->getImageUrlFieldName()] = "imageUrl";
355
+ }
356
 
357
 
358
  protected function _setFields(Mage_Core_Model_Website $website) {
359
+ $fields = Mage::getResourceModel("unbxd_recscore/field_collection")->getFields($website);
360
+ $featureFields = Mage::getModel('unbxd_recscore/field')->getFeaturedFields();
361
  foreach($fields as $eachfield) {
362
  if(array_key_exists($eachfield->getFieldName(), $featureFields)) {
363
  $this->fields[$eachfield->getFieldName()] = $featureFields[$eachfield->getFieldName()];
365
  }
366
  if(!is_null($eachfield->getFeaturedField()) &&
367
  array_key_exists($eachfield->getFeaturedField(), $featureFields)) {
368
+ if($eachfield->getFeaturedField() == "imageUrl") {
369
+ $this->fields["imageUrl"] = $featureFields[$eachfield->getFeaturedField()];
370
+ $this->fields[$eachfield->getFieldName()] = Mage::getModel('unbxd_recscore/field')->getField('longText', "false", "false");
371
+ $this->fields["imageUrl"][Unbxd_Recscore_Model_Feed_Jsonbuilder_Productbuilder::GENERATE_IMAGE] = "1";
372
+ } else {
373
+ $this->fields[$eachfield->getFieldName()] = $featureFields[$eachfield->getFeaturedField()];
374
+ }
375
  continue;
376
  }
377
  $field = array();
378
+ $field[Unbxd_Recscore_Model_Field::status] = 1;
379
+ $field[Unbxd_Recscore_Model_Field::datatype] = $eachfield->getDatatype();
380
+ $field[Unbxd_Recscore_Model_Field::autosuggest] = $eachfield->getAutosuggest();
381
+ $field[Unbxd_Recscore_Model_Field::multivalued] = Mage::helper('unbxd_recscore/feedhelper')
382
  ->isMultiSelect($eachfield->getFieldName());
383
  $this->fields[$eachfield->getFieldName()] = $field;
384
  }
385
+ $this->fields["entity_id"] = Mage::getModel('unbxd_recscore/field')->getField('longText', "false", "false");
386
+ $this->_setImageConf($website);
387
 
388
  }
389
+
390
+ protected function _setImageConf(Mage_Core_Model_Website $website) {
391
+ $imageFields = Mage::getModel('unbxd_recscore/field')->getImageFields($website);
392
+ foreach($this->fields as $fieldName => $fieldConf) {
393
+ if(array_key_exists($fieldName, $imageFields)) {
394
+ $this->fields[$fieldName][Unbxd_Recscore_Model_Feed_Jsonbuilder_Productbuilder::GENERATE_IMAGE] = '1';
395
+ }
396
+ }
397
+ }
398
 
399
  /**
400
  * Function to initialize to feed creation process
401
  */
402
  protected function _createFile(){
403
+ return Mage::getSingleton('unbxd_recscore/feed_filemanager')->createFile($this->fileName);
404
  }
405
 
406
  protected function _appendTofile($data){
407
+ return Mage::getSingleton('unbxd_recscore/feed_filemanager')->appendTofile($this->fileName, $data);
408
  }
409
 
410
  protected function log($message) {
411
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, $message);
412
  }
413
 
414
  public function getTaxonomyMappingCollection() {
app/code/local/Unbxd/Recscore/Model/Feed/Feedmanager.php ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_Feed_Feedmanager {
4
+
5
+ //Delete the file after uploading the feed
6
+ var $deleteIncrementalFeed = true;
7
+
8
+ var $fileName = "unbxdFeed.json";
9
+
10
+ var $key;
11
+
12
+ var $siteName;
13
+
14
+ /**
15
+ * method to push the feed to the Unbxd server
16
+ **/
17
+ protected function _pushFeed($fullimport=true){
18
+ if(!function_exists('curl_file_create')){
19
+ $fields=array('file'=>'@'.$this->fileName.';filename='.'unbxdFeed.json');
20
+ } else {
21
+ $file = new CurlFile($this->fileName,'','unbxdFeed.json');
22
+ $fields = array('file'=>$file);
23
+ }
24
+ $feedUrl = Mage::helper('unbxd_recscore/confighelper')->getConfigData('feed_url');
25
+ $url= $feedUrl . "upload/v2/".$this->key."/".$this->siteName. ($fullimport?"?fullimport=true":"");
26
+
27
+ $ch = curl_init();
28
+ curl_setopt($ch, CURLOPT_URL,$url);
29
+ curl_setopt($ch, CURLOPT_POST,true);
30
+ curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
31
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
32
+ try{
33
+ $this->log('pushing the feed to '.$url);
34
+ // push the feed to the server
35
+ $response = $this->exec($ch);
36
+ $this->log(json_encode($response));
37
+ $responseMessage = json_decode($response['body'], true);
38
+ if($responseMessage["statusCode"] != 200) {
39
+ throw new Exception('Unexpected response from unbxd server');
40
+ }
41
+ }catch(Exception $ex){
42
+ $this->log("Error while uploading the feed because of " . $ex->getMessage());
43
+ return false;
44
+ }
45
+ curl_close($ch);
46
+ return true;
47
+ }
48
+
49
+ /**
50
+ * Method to check the first time feed upload
51
+ * @param Mage_Core_Model_Website $website
52
+ * @return bool
53
+ */
54
+ protected function _checkFeedUpload(Mage_Core_Model_Website $website) {
55
+ $lastUploadTime = Mage::getResourceModel('unbxd_recscore/config')
56
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::LAST_UPLOAD_TIME);
57
+ return !is_null($lastUploadTime);
58
+ }
59
+ protected function _triggerSearchComplete(Mage_Core_Model_Website $website) {
60
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, 'trigger search complete for website ' . $website->getName());
61
+ if(!$this->_checkFeedUpload($website) && Mage::helper('core')->isModuleEnabled('Unbxd_Searchcore')) {
62
+ Mage::getModel('unbxd_searchcore/api_task_searchsetup')
63
+ ->prepare($website)
64
+ ->process();
65
+ }
66
+ }
67
+
68
+ protected function exec($ch)
69
+ {
70
+ $response = curl_exec($ch);
71
+ $error = curl_error($ch);
72
+ $result = array( 'header' => '',
73
+ 'body' => '',
74
+ 'curl_error' => '',
75
+ 'http_code' => '',
76
+ 'last_url' => '');
77
+ if ( $error != "" ) {
78
+ $result['curl_error'] = $error;
79
+ return $result;
80
+ }
81
+
82
+ $header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
83
+ //$result['header'] = substr($response, 0, $header_size);
84
+ $result['body'] = $response;
85
+ $result['http_code'] = curl_getinfo($ch,CURLINFO_HTTP_CODE);
86
+ $result['last_url'] = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
87
+ return $result;
88
+ }
89
+
90
+ /**
91
+ * method to set the feedName, log, apikey based on site Name
92
+ **/
93
+ public function init(Mage_Core_Model_Website $website, $isFullUpload)
94
+ {
95
+ $this->fileName = Mage::getBaseDir('tmp').DS.str_replace(' ', '_', $website->getName()).
96
+ "_Feed" . (!$isFullUpload?round(microtime(true) * 1000):'') . ".json";
97
+ $this->key = Mage::getResourceModel("unbxd_recscore/config")
98
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SECRET_KEY);
99
+ $this->siteName = Mage::getResourceModel("unbxd_recscore/config")
100
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::SITE_KEY);
101
+ if(is_null($this->siteName) || is_null($this->key)) {
102
+ $message = 'Authorization failed, keys not set';
103
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, $message);
104
+ return array('success' => false, 'message' => $message);
105
+ }
106
+ return true;
107
+ }
108
+
109
+ /**
110
+ * method to update feature field if required
111
+ *
112
+ * @param Mage_Core_Model_Website $website
113
+ * @return void
114
+ */
115
+ private function updateFeatureFields(Mage_Core_Model_Website $website) {
116
+ $needFeatureFieldUpdation = Mage::getResourceModel("unbxd_recscore/config")
117
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Confighelper::NEED_FEATURE_FIELD_UPDATION);
118
+ if(is_null($needFeatureFieldUpdation) || $needFeatureFieldUpdation == "1") {
119
+ $response = Mage::helper('unbxd_recscore/confighelper')->updateFeatureFields($website);
120
+ if($response) {
121
+ Mage::getResourceModel("unbxd_recscore/config")
122
+ ->setValue($website->getWebsiteId(),
123
+ Unbxd_Recscore_Helper_Constants::NEED_FEATURE_FIELD_UPDATION,
124
+ Unbxd_Recscore_Helper_Constants::NEED_FEATURE_FIELD_UPDATION_TRUE);
125
+ //If search module is present and autosuggest is active then trigger autosuggest indexing
126
+ Mage::helper('unbxd_recscore/confighelper')->triggerAutoggestIndexing($website);
127
+
128
+ } else {
129
+ $this->log("error while updating the feature fields");
130
+ }
131
+ }
132
+ }
133
+
134
+ /**
135
+ * method to initiate feed uploading to the unbxd servers
136
+ **/
137
+ public function process($isFullUpload = true, Mage_Core_Model_Website $website){
138
+
139
+ $this->log('Feed Uploading request recieved');
140
+ $response = $this->init($website, $isFullUpload);
141
+ if(is_array($response)){
142
+ return $response;
143
+ }
144
+ $currentDate = date('Y-m-d H:i:s');
145
+ $this->_triggerSearchComplete($website);
146
+
147
+ // check the lock, that if already indexing is happening
148
+ if(!$isFullUpload ||
149
+ !Mage::getResourceModel("unbxd_recscore/config")->isLock($website->getWebsiteId())) {
150
+
151
+ $this->log('site '. $website->getName() .' is acquiring feed lock');
152
+ if($isFullUpload) {
153
+ Mage::getResourceSingleton("unbxd_recscore/config")
154
+ ->setValue($website->getWebsiteId(),
155
+ Unbxd_Recscore_Model_Config::FEED_STATUS,
156
+ Unbxd_Recscore_Helper_Constants::FEED_STATUS_UPLOADING);
157
+ Mage::getResourceModel('unbxd_recscore/config')->lockSite($website->getWebsiteId());
158
+ }
159
+ try {
160
+ // create the feed
161
+ $status = Mage::getSingleton('unbxd_recscore/feed_feedcreator')
162
+ ->setFullUpload($isFullUpload)
163
+ ->createFeed($this->fileName, $website, $currentDate);
164
+ $this->log('unbxd Datafeeder finished creating file');
165
+ }catch (Exception $e) {
166
+ $this->log('Caught exception: '. $e->getMessage());
167
+ $status = false;
168
+ $errorMsg = $e->getMessage();
169
+ }
170
+
171
+ if($status){
172
+ $status=$this->_pushFeed($isFullUpload);
173
+ if($status){
174
+ Mage::getResourceSingleton("unbxd_recscore/config")
175
+ ->setValue($website->getWebsiteId(),
176
+ Unbxd_Recscore_Model_Config::LAST_UPLOAD_TIME, $currentDate);
177
+ $this->updateFeatureFields($website);
178
+ }
179
+ }
180
+
181
+
182
+ if($isFullUpload) {
183
+ // unlock the feed once everything is completed
184
+ Mage::getResourceModel('unbxd_recscore/config')->unLockSite($website->getWebsiteId());
185
+ } else {
186
+ //In case of incremental feed delete the feed
187
+ // Mage::getSingleton('unbxd_recscore/filemanager')->deleteFile($this->fileName);
188
+ }
189
+
190
+ $this->log('site ' . $website->getName() .' has been unlocked');
191
+ if($status) {
192
+ Mage::getResourceSingleton("unbxd_recscore/config")
193
+ ->setValue($website->getWebsiteId(),
194
+ Unbxd_Recscore_Model_Config::FEED_STATUS,
195
+ Unbxd_Recscore_Helper_Constants::FEED_STATUS_UPLOADED_SUCCESSFULLY);
196
+ return array('success' => true, 'message' => 'File uploaded successfully');
197
+ }
198
+ Mage::getResourceSingleton("unbxd_recscore/config")
199
+ ->setValue($website->getWebsiteId(),
200
+ Unbxd_Recscore_Model_Config::FEED_STATUS,
201
+ Unbxd_Recscore_Helper_Constants::FEED_STATUS_UPLOADED_FAILED);
202
+ return array('success' => false, 'message' => isset($errorMsg)?$errorMsg:'Unexpected error, please contact support');
203
+ } else {
204
+ $this->log('Feed Uploading failed because site has been locked');
205
+ return array('success' => false, 'message' => 'Feed is already being processed');
206
+ }
207
+ }
208
+
209
+ public function log($message) {
210
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, $message);
211
+ }
212
+ }
213
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Filemanager.php RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- class Unbxd_Recommendation_Model_Feed_Filemanager {
4
 
5
 
6
  var $logFileName;
1
  <?php
2
 
3
+ class Unbxd_Recscore_Model_Feed_Filemanager {
4
 
5
 
6
  var $logFileName;
app/code/local/Unbxd/Recscore/Model/Feed/Jsonbuilder/Jsonbuilder.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_Feed_Jsonbuilder_Jsonbuilder {
4
+
5
+
6
+
7
+ }
8
+
9
+ ?>
app/code/local/Unbxd/Recscore/Model/Feed/Jsonbuilder/Productbuilder.php ADDED
@@ -0,0 +1,408 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_Feed_Jsonbuilder_Productbuilder extends
4
+ Unbxd_Recscore_Model_Feed_Jsonbuilder_Jsonbuilder {
5
+
6
+ const NUMBER = "number";
7
+ const DECIMAL = "decimal";
8
+ const DATE = "date";
9
+ const IMAGE_HEIGHT = "image_height";
10
+ const IMAGE_WIDTH = "image_width";
11
+ const GENERATE_IMAGE = "generate_image";
12
+ static $CATEGORY_EXCLUSION_LIST = array();
13
+
14
+ /**
15
+ * @return Unbxd_Recscore_Helper_Feedhelper
16
+ */
17
+ protected function _getFeedHelper() {
18
+ return Mage::helper('unbxd_recscore/feedhelper');
19
+ }
20
+
21
+ /**
22
+ * Given product collection, gives the products in unbxd formatted json
23
+ * @param $website
24
+ * @param $collection
25
+ * @param $fields
26
+ * @return string
27
+ */
28
+ public function getProducts($website, $collection, $fields, $copyFields) {
29
+ $this->_changeTheme(Mage::getStoreConfig('design/package/name', $website->getDefaultStore()->getCode()),
30
+ Mage::getStoreConfig('design/package/theme', $website->getDefaultStore()->getCode()));
31
+ self::$CATEGORY_EXCLUSION_LIST = Mage::helper('unbxd_recscore/confighelper')->getCategoryExclusion($website);
32
+ $content='';
33
+ $firstLoop = true;
34
+ foreach($collection as $product) {
35
+ if($this->skipProduct($website, $product)) {
36
+ continue;
37
+ }
38
+ if(!$firstLoop) {
39
+ $content = $content . ",";
40
+ }
41
+
42
+ $productArray = $this->getProduct($website, $product, $fields, $copyFields);
43
+ $productArray = $this->postProcessProduct($productArray, $fields, false);
44
+ $content=$content.json_encode($productArray);
45
+ $firstLoop = false;
46
+ }
47
+
48
+ return rtrim($content, ",");
49
+ }
50
+
51
+ /**
52
+ * Method to check whether the product to be skipped or not depending on the filters
53
+ * @param Mage_Core_Model_Website $website
54
+ * @param $product
55
+ * @return bool
56
+ */
57
+ public function skipProduct(Mage_Core_Model_Website $website, $product) {
58
+ $filters = $this->_getFeedHelper()->getFilters($website);
59
+ foreach($filters as $key=>$filter) {
60
+ if($this->_getFeedHelper()->isMultiSelect($key)) {
61
+ $values = $this->_getMultiSelectAttribute($key, $product);
62
+ if(!is_array($values)) {
63
+ return false;
64
+ }
65
+ if(in_array($filter, $values)) {
66
+ return true;
67
+ }
68
+ } else if($this->_getFeedHelper()->getFieldType($key) == 'price') {
69
+ $temp = explode(Unbxd_Recscore_Helper_Constants::FILTER_RANGE_DELIMITER,$filter);
70
+ if(sizeof($temp) >=2) {
71
+ $from = int($temp[0]);
72
+ $to = int($temp[1]);
73
+ } else {
74
+ return false;
75
+ }
76
+
77
+ if(int($product->getData($key)) > $from && int($product->getData($key)) < $to) {
78
+ return true;
79
+ }
80
+ } else {
81
+ if($filter == $product->getData($key)) {
82
+ return true;
83
+ }
84
+ }
85
+ }
86
+ return false;
87
+ }
88
+
89
+ /**
90
+ * Method to handle Fields
91
+ */
92
+ protected function _handleFields($columnHeader, $unbxdFieldName, $product, &$productArray, $fields, $childProduct) {
93
+ $columndata = $product->getData($columnHeader);
94
+ if($columnHeader=="entity_id"){
95
+ $uniqueIdField = 'uniqueId'.(($childProduct)?'Associated':'');
96
+ $productArray[$uniqueIdField] = $columndata;
97
+ }
98
+ if($columnHeader=="url_path"){
99
+ // handling the url
100
+ $productArray[$unbxdFieldName] = $product->getProductUrl();
101
+ } else if ($this->_getFeedHelper()->isImage($columnHeader)) {
102
+ // handling tthe images
103
+ $attributeValue = $this->_getImage($columnHeader, $unbxdFieldName, $product, $fields);
104
+ if(!is_null($attributeValue)) {
105
+ $productArray[$unbxdFieldName] = $attributeValue;
106
+ }
107
+ } else if( $fields[$unbxdFieldName][Unbxd_Recscore_Model_Field::multivalued]){
108
+ // handling the array/ multiselect attribute
109
+ $attributeValue = $this->_getMultiSelectAttribute($columnHeader, $product);
110
+ if(!is_null($attributeValue)) {
111
+ $productArray[$unbxdFieldName] = $attributeValue;
112
+ }
113
+ } else if (!is_null($columndata) && $columndata != ""){
114
+ //adding the normal attribute
115
+ $productArray[$unbxdFieldName] = $columndata;
116
+ }
117
+ }
118
+
119
+ /**
120
+ * method to get the product in json
121
+ * @param Mage_Core_Model_Website $website
122
+ * @param $product
123
+ * @param $fields
124
+ * @param bool $childProduct
125
+ * @return array
126
+ */
127
+ public function getProduct(Mage_Core_Model_Website $website, $product, $fields, $copyFields, $childProduct = false) {
128
+ $productArray =array();
129
+
130
+ foreach($product->getData('') as $columnHeader=>$columndata){
131
+
132
+ $unbxdFieldName = $this->getUnbxdFieldName($columnHeader, $childProduct);
133
+ if(isset($unbxdFieldName) && $unbxdFieldName != "" && !array_key_exists($unbxdFieldName, $fields)) {
134
+ continue;
135
+ }
136
+ $this->_handleFields($columnHeader, $unbxdFieldName, $product, $productArray, $fields, $childProduct);
137
+ if(array_key_exists($columnHeader, $copyFields)) {
138
+ $this->_handleFields($columnHeader, $copyFields[$columnHeader], $product, $productArray, $fields, $childProduct);
139
+ }
140
+ }
141
+ if(!$childProduct) {
142
+
143
+ if($this->_getFeedHelper()
144
+ ->isConfigTrue($website, Unbxd_Recscore_Helper_Constants::INCLUDE_CHILD_PRODUCT)) {
145
+ $productArray = $this->addChildrens($product, $fields, $productArray);
146
+ }
147
+
148
+ $category = $this->_getCategoryAttribute($product);
149
+ // adding the category
150
+ $productArray = $category + $productArray;
151
+
152
+ $productArray[Unbxd_Recscore_Model_Resource_Field::AVAILABILITY] =
153
+ $product->isSalable()? "true": "false";
154
+
155
+ }
156
+ return $productArray;
157
+ }
158
+
159
+ /**
160
+ * method to get category content in xml given the product object
161
+ * @param $product
162
+ * @return array
163
+ */
164
+ protected function _getCategoryAttribute($product){
165
+ $cats = $product->getCategoryIds();
166
+ $categoryIds = array();
167
+ $category = array();
168
+ $categoryData = array();
169
+ foreach ($cats as $categoryId) {
170
+ $_cat = $this->_getFeedHelper()->getCategory($categoryId);
171
+ if($_cat == null) {
172
+ continue;
173
+ }
174
+ $categoryName = $_cat->getName();
175
+ if($categoryName == null || $categoryName == "" || !$_cat->getIsActive() ) {
176
+ continue;
177
+ }
178
+ $categoryIds[] = (string)$categoryId;
179
+ $category[] = $categoryName;
180
+ }
181
+
182
+ for($level =1; $level <=4 ; $level++) {
183
+ $levelCategories = $this->_getFeedHelper()
184
+ ->getCategoryOnLevel($categoryIds, $level);
185
+
186
+ if (sizeof($levelCategories) > 0) {
187
+ $categoryData['categoryLevel' . $level] = array_values(array_diff($levelCategories, self::$CATEGORY_EXCLUSION_LIST));
188
+ $categoryData['catlevel' . $level . 'Name'] = $levelCategories[0];
189
+ $category = array_merge($category, $levelCategories);
190
+ }
191
+ }
192
+
193
+ $categoryData[Unbxd_Recscore_Model_Resource_Field::CATEGORY_IDS_NAME] = $categoryIds;
194
+ $categoryData[Unbxd_Recscore_Model_Resource_Field::CATEGORY_NAME] = array_values(array_diff($category, self::$CATEGORY_EXCLUSION_LIST));
195
+
196
+ return $categoryData;
197
+ }
198
+
199
+ /**
200
+ * method to returns as an array of values given the fieldName and the product
201
+ * @param $fieldName
202
+ * @param $product
203
+ * @return array|null
204
+ */
205
+ protected function _getMultiSelectAttribute($fieldName, $product) {
206
+ $data = explode(",", $product->getData($fieldName));
207
+ $valueAsAnArray = array();
208
+ foreach($data as $eachdata){
209
+ $attributeValue = Mage::getResourceSingleton("unbxd_recscore/attribute")
210
+ ->getAttributeValue($fieldName, trim($eachdata), $product);
211
+ if(!is_null($attributeValue) && $attributeValue != "" && $attributeValue != "Use Config") {
212
+ $valueAsAnArray[] = $attributeValue;
213
+ }
214
+ }
215
+ if(sizeof($valueAsAnArray) > 0) {
216
+ return $valueAsAnArray;
217
+ }
218
+ return null;
219
+ }
220
+
221
+ protected function _changeTheme($packageName, $themeName) {
222
+ Mage::getDesign()->setArea('frontend')
223
+ ->setPackageName($packageName)
224
+ ->setTheme($themeName);
225
+ }
226
+
227
+ /**
228
+ * Method given the fieldName and product, returns full image url
229
+ * @param $fieldName
230
+ * @param $unbxdFieldName
231
+ * @param $product
232
+ * @param $fields
233
+ * @return string
234
+ */
235
+ protected function _getImage($fieldName, $unbxdFieldName, $product, $fields) {
236
+ if(array_key_exists(self::GENERATE_IMAGE, $fields[$unbxdFieldName]) &&
237
+ $fields[$unbxdFieldName][self::GENERATE_IMAGE] == "1") {
238
+ try {
239
+ return (string)Mage::helper('catalog/image')->init($product, $fieldName)
240
+ ->resize(155, 155);
241
+ } catch (Exception $e) {
242
+ error_log("Error while fetching the image" . $e->getMessage());
243
+ }
244
+ }
245
+ return $product->getData($fieldName);
246
+ }
247
+
248
+ /*
249
+ * get unbxd specfic field name for the magento field name
250
+ */
251
+ private function getUnbxdFieldName($columnHeader, $isChild) {
252
+ if($isChild) {
253
+ $unbxdFieldName = $columnHeader . "Associated";
254
+ } else {
255
+ $unbxdFieldName = $columnHeader;
256
+ }
257
+ return $unbxdFieldName;
258
+ //return $this->renameConflictedFeatureFields($unbxdFieldName);
259
+ }
260
+
261
+ /*
262
+ * Renaming the conflicted unbxd feature fields eg: gender to _gender
263
+ */
264
+ private function renameConflictedFeatureFields($unbxdFieldName) {
265
+ if (in_array($unbxdFieldName, Mage::getResourceSingleton('unbxd_recscore/field')->getConflictedFeatureFieldLust())) {
266
+ return "_" . $unbxdFieldName;
267
+ }
268
+ return $unbxdFieldName;
269
+ }
270
+
271
+ /**
272
+ * gives the children in form of array
273
+ */
274
+ public function addChildrens($product, $fields, $productArray) {
275
+
276
+ $type = $product->getData('type_id');
277
+ if ($type == "configurable" || $type == "grouped" ) {
278
+ $associatedProducts = array();
279
+ $conf = Mage::getModel('catalog/product_type_configurable')->setProduct($product);
280
+ $childrens = $conf->getUsedProductCollection()
281
+ ->addAttributeToSelect('*')
282
+ ->addFilterByRequiredOptions()
283
+ ->joinField("qtyAssociated", "cataloginventory_stock_item", 'qty', 'product_id=entity_id', null, 'left');
284
+ foreach ($childrens as $children)
285
+ {
286
+ $childProduct = $this->getProduct($children, $fields, true);
287
+ if(isset($childProduct) && sizeof($childProduct) > 0 ) {
288
+ $childProduct = $this->postProcessProduct($childProduct, $fields, true);
289
+ $associatedProducts[] = $childProduct;
290
+ }
291
+ }
292
+ if( sizeof($associatedProducts) > 0) {
293
+ $productArray["associatedProducts"] = $associatedProducts;
294
+ }
295
+ return $productArray;
296
+ } else {
297
+ return $productArray;
298
+ }
299
+ }
300
+
301
+ /**
302
+ * process the prodcut
303
+ */
304
+ public function postProcessProduct($product, $fields, $isChild=false) {
305
+ if($isChild) {
306
+ $product = $this->convertMultivalued($product);
307
+ } else {
308
+ $product = $this->convertMultivalued($product, $fields);
309
+ }
310
+ $product = $this->convertDataType($product, $fields, $isChild);
311
+ return $product;
312
+ }
313
+
314
+ /*
315
+ * convert the data type according to the dashboard setup
316
+ */
317
+ public function convertDataType($product, $fields) {
318
+ foreach($product as $fieldName => $value) {
319
+ if($fieldName != "associatedProducts") {
320
+ $product[$fieldName] = $this->convertDataTypeByValue($fields[$fieldName], $value);
321
+ }
322
+ }
323
+ return $product;
324
+ }
325
+
326
+ /*
327
+ * method to get the float values
328
+ */
329
+ private function getFloatValues($value) {
330
+ if(is_array($value)) {
331
+ $valueAsAnArray = array();
332
+ foreach ($value as $eachValue) {
333
+ $valueAsAnArray[] = floatval($eachValue);
334
+ }
335
+ return $valueAsAnArray;
336
+ } else {
337
+ return floatval($value);
338
+ }
339
+ }
340
+
341
+
342
+ /*
343
+ * returns the array as number
344
+ */
345
+ private function getNumberValues($value) {
346
+ if(is_array($value)) {
347
+ $valueAsAnArray = array();
348
+ foreach ($value as $eachValue) {
349
+ $valueAsAnArray[] = intval($eachValue);
350
+ }
351
+ return $valueAsAnArray;
352
+ } else {
353
+ return intval($value);
354
+ }
355
+ }
356
+
357
+ /*
358
+ * returns the date value
359
+ */
360
+ private function getDateValues($value) {
361
+ if(is_array($value)) {
362
+ $tempValue = array();
363
+ foreach ($value as $eachValue) {
364
+ $tokens = explode(" ",$eachValue);
365
+ $tempValue[] = $tokens[0].'T'.$tokens[1].'Z';
366
+ }
367
+ return $tempValue;
368
+ }
369
+ $tokens = explode(" ",$value);
370
+ $value = $tokens[0].'T'.$tokens[1].'Z';
371
+ return $value;
372
+ }
373
+
374
+ /*
375
+ * returns the data type value
376
+ */
377
+ private function convertDataTypeByValue($data_type, $value) {
378
+ if($data_type[Unbxd_Recscore_Model_Field::datatype] == self::DECIMAL) {
379
+ return $this->getFloatValues($value);
380
+ } else if ($data_type[Unbxd_Recscore_Model_Field::datatype] == self::NUMBER) {
381
+ return $this->getNumberValues($value);
382
+ } else if ($data_type[Unbxd_Recscore_Model_Field::datatype] == self::DATE) {
383
+ return $this->getDateValues($value);
384
+ }
385
+ return $value;
386
+ }
387
+
388
+ /*
389
+ * returns the product by changing it to multivalued after checking its data type
390
+ */
391
+ public function convertMultivalued($product, $fields = null) {
392
+ foreach($product as $field=>$value) {
393
+ if((is_null($fields) ||
394
+ (($field != "associatedProducts") &&
395
+ array_key_exists(Unbxd_Recscore_Model_Field::multivalued,$fields[$field]) &&
396
+ $fields[$field][Unbxd_Recscore_Model_Field::multivalued])) &&
397
+ !is_array($value)) {
398
+
399
+ $valueAsAnArray = array();
400
+ $valueAsAnArray[] = $value;
401
+ $product[$field] = $valueAsAnArray;
402
+ }
403
+ }
404
+ return $product;
405
+ }
406
+ }
407
+
408
+ ?>
app/code/local/Unbxd/Recscore/Model/Feed/Jsonbuilder/Schemabuilder.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_Feed_Jsonbuilder_Schemabuilder extends Unbxd_Recscore_Model_Feed_Jsonbuilder_Jsonbuilder {
4
+
5
+
6
+ const FIELD_NAME = "fieldName";
7
+ const DATA_TYPE = "dataType";
8
+ const MULTIVALUED = "multiValued";
9
+ const AUTOSUGGEST = "autoSuggest";
10
+ const TRUE = "true";
11
+ const FALSE = "false";
12
+
13
+ public function getSchema($fields) {
14
+ $fieldList = array();
15
+ foreach($fields as $fieldName=>$values ) {
16
+ $fieldList[] = array(self::FIELD_NAME => $fieldName,
17
+ self::DATA_TYPE => $values[Unbxd_Recscore_Model_Field::datatype],
18
+ self::MULTIVALUED =>
19
+ (array_key_exists(Unbxd_Recscore_Model_Field::multivalued, $values)
20
+ && $values[Unbxd_Recscore_Model_Field::multivalued])?
21
+ self::TRUE:self::FALSE,
22
+ self::AUTOSUGGEST => ($values[Unbxd_Recscore_Model_Field::autosuggest] == 1?self::TRUE: self::FALSE));
23
+
24
+ }
25
+ return json_encode($fieldList);
26
+ }
27
+ }
28
+
29
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Jsonbuilder/Taxonomybuilder.php RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- class Unbxd_Recommendation_Model_Feed_Jsonbuilder_Taxonomybuilder extends Unbxd_Recommendation_Model_Feed_Jsonbuilder_Jsonbuilder {
4
 
5
  var $file='unbxdTaxonomy.xml';
6
 
1
  <?php
2
 
3
+ class Unbxd_Recscore_Model_Feed_Jsonbuilder_Taxonomybuilder extends Unbxd_Recscore_Model_Feed_Jsonbuilder_Jsonbuilder {
4
 
5
  var $file='unbxdTaxonomy.xml';
6
 
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Feed/Tags.php RENAMED
@@ -5,7 +5,7 @@
5
  * Date: 1/29/15
6
  * Time: 12:25 PM
7
  */
8
- class Unbxd_Recommendation_Model_Feed_Tags {
9
  const CATALOG = 'catalog';
10
 
11
  const ADD = 'add';
5
  * Date: 1/29/15
6
  * Time: 12:25 PM
7
  */
8
+ class Unbxd_Recscore_Model_Feed_Tags {
9
  const CATALOG = 'catalog';
10
 
11
  const ADD = 'add';
app/code/local/Unbxd/Recscore/Model/Field.php ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * This class maintains the config of the fields that are needed by unbxd
5
+ *
6
+ * @category Unbxd
7
+ * @package Unbxd_Recscore
8
+ * @author Unbxd Software Pvt. Ltd
9
+ */
10
+ class Unbxd_Recscore_Model_Field extends Mage_Core_Model_Abstract {
11
+
12
+ /**
13
+ * field name column in db
14
+ */
15
+ const field_name = "field_name";
16
+
17
+ /**
18
+ * datatype column name in db
19
+ */
20
+ const datatype = "datatype";
21
+
22
+ /**
23
+ * autosuggest column name in db
24
+ */
25
+ const autosuggest = "autosuggest";
26
+
27
+ /**
28
+ * featured_field column name in db
29
+ */
30
+ const featured_field = "featured_field";
31
+
32
+ /**
33
+ * displayable column name in db
34
+ */
35
+ const dislayable = "displayed";
36
+
37
+ const multivalued = 'multivalued';
38
+
39
+ /**
40
+ * website id column name in db
41
+ */
42
+ const website_id = "website_id";
43
+
44
+ const status = 'status';
45
+
46
+ /**
47
+ * All possible data type values supported unbxd
48
+ * @var array
49
+ */
50
+ public static $data_types = array(Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_TEXT, Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_LONGTEXT,
51
+ Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_LINK, Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_NUMBER,
52
+ Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_DECIMAL, Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_DATE);
53
+
54
+
55
+ public static $displayableFeatureFields = array('title', 'price',
56
+ 'brand', 'color', 'size', 'imageUrl', 'productUrl');
57
+
58
+ public static $featurefields = array();
59
+
60
+ /**
61
+ *
62
+ * @return void
63
+ */
64
+ protected function _construct()
65
+ {
66
+ $this->_init('unbxd_recscore/field');
67
+ Unbxd_Recscore_Model_Field::$featurefields = $this->getFeaturedFields();
68
+
69
+ }
70
+
71
+
72
+ /**
73
+ * Save fields
74
+ *
75
+ * @return void
76
+ */
77
+ public function saveFields($collection) {
78
+ $this->_getResource()->beginTransaction();
79
+ try {
80
+ foreach ($collection as $data) {
81
+ if(sizeof($data) > 0) {
82
+ if(array_key_exists("add", $data)) {
83
+ $data["add"]->save();
84
+ } else if (array_key_exists("delete", $data)) {
85
+ $data["delete"]->delete();
86
+ }
87
+ }
88
+ }
89
+
90
+ $this->_getResource()->commit();
91
+ } catch(Exception $e) {
92
+ $this->_getResource()->rollBack();
93
+ Mage::helper("unbxd_recscore")->log(Zend_Log::ERR, "Saving fields failed because " . $e->getMessage());
94
+ return array('OTHERS' => $e->getMessage());
95
+ }
96
+ return true;
97
+
98
+ }
99
+
100
+ /*
101
+ * method to get the featured fields
102
+ */
103
+ public function getFeaturedFields() {
104
+ $featuredFields = array();
105
+ $featuredFields["uniqueId"]=$this->getField("text", "false", "false");
106
+ $featuredFields["sellingPrice"]=$this->getField("decimal", "false", "false");
107
+ $featuredFields["discount"]=$this->getField("decimal", "false", "false");
108
+ $featuredFields["rating"]=$this->getField("decimal", "false", "false");
109
+ $featuredFields["brandId"]=$this->getField("text", "false", "false");
110
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_1_NAME] =
111
+ $this->getField("text", "false", "false");
112
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_2_NAME] =
113
+ $this->getField("text", "false", "false");
114
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_3_NAME] =
115
+ $this->getField("text", "false", "false");
116
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_4_NAME] =
117
+ $this->getField("text", "false", "false");
118
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_1] =
119
+ $this->getField("text", "true", "false");
120
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_2] =
121
+ $this->getField("text", "true", "false");
122
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_3] =
123
+ $this->getField("text", "true", "false");
124
+ $featuredFields[Unbxd_Recscore_Model_Resource_Field::CAT_LEVEL_4] =
125
+ $this->getField("text", "true", "false");
126
+ $featuredFields["category"] = $this->getField("text", "true", "true");
127
+ $featuredFields["subCategory"]=$this->getField("text", "true", "true");
128
+ $featuredFields["color"]=$this->getField("text", "true", "false");
129
+ $featuredFields["size"]=$this->getField("text", "true", "false");
130
+ $featuredFields["availability"]=$this->getField("bool", "false", "false");
131
+ $featuredFields["description"]=$this->getField("longText", "false", "false");
132
+ $featuredFields["imageUrl"]=$this->getField("link", "true", "false");
133
+ $featuredFields["productUrl"]=$this->getField("link", "false", "false");
134
+ $featuredFields["brand"]=$this->getField("text", "false", "true");
135
+ $featuredFields["price"]=$this->getField("decimal", "false", "false");
136
+ $featuredFields["title"]=$this->getField("text", "false", "true");
137
+ $featuredFields["gender"]=$this->getField("text", "false", "false");
138
+ $featuredFields["unbxdVisibility"]=$this->getField("text", "false", "false");
139
+ return $featuredFields;
140
+ }
141
+
142
+ public function getField($dataType, $multiValued, $autosuggest) {
143
+ return array( self::status => 1, self::datatype => $dataType,
144
+ self::multivalued => ($multiValued=="true")?1:0,
145
+ self::autosuggest => ($autosuggest=="true")?1:0 );
146
+
147
+ }
148
+
149
+ public function getPriceFieldName() {
150
+ $priceFieldConfig =
151
+ Mage::helper('unbxd_recscore')->getEngineConfigData(Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRICE);
152
+ return $priceFieldConfig[Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRICE];
153
+ }
154
+
155
+ public function getImageUrlFieldName() {
156
+ $imageUrlFieldName = $this->_getResource()->getFieldByFeatureField(Mage::app()->getWebsite()->getWebsiteId(),
157
+ Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_IMAGE_URL);
158
+ return $imageUrlFieldName;
159
+ }
160
+
161
+ public function getProductUrlFieldName() {
162
+ $fieldConfig =
163
+ Mage::helper('unbxd_recscore')
164
+ ->getEngineConfigData(Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRODUCT_URL);
165
+ return $fieldConfig[Unbxd_Recscore_Helper_Constants::FEATURE_FIELD_PRODUCT_URL];
166
+
167
+ }
168
+
169
+ public function getImageFields($website) {
170
+ $conf = Mage::helper('unbxd_recscore')->getEngineConfigData(Unbxd_Recscore_Helper_Constants::FIELD_CONF, $website, true);
171
+ $fieldConf = json_decode($conf[Unbxd_Recscore_Helper_Constants::FIELD_CONF], true);
172
+ if(!is_array($fieldConf)) {
173
+ return array();
174
+ }
175
+ $imageFields = array();
176
+ foreach($fieldConf as $field => $conf ) {
177
+ if(!is_array($conf) || !array_key_exists('image_full', $conf)) {
178
+ continue;
179
+ }
180
+ $imageFields[$field] = Mage::helper('unbxd_recscore')->isConfigTrue($website, 'image_full')?true:false;
181
+ }
182
+ return $imageFields;
183
+ }
184
+
185
+ public function getCopyFields($website) {
186
+ $conf = Mage::helper('unbxd_recscore')->getEngineConfigData(Unbxd_Recscore_Helper_Constants::FIELD_CONF, $website, true);
187
+
188
+ $fieldConf = json_decode($conf[Unbxd_Recscore_Helper_Constants::FIELD_CONF], true);
189
+ if(!is_array($fieldConf)) {
190
+ return array();
191
+ }
192
+ $imageFields = array();
193
+ foreach($fieldConf as $field => $conf ) {
194
+ if(!is_array($conf) || !array_key_exists('copy_field', $conf)) {
195
+ continue;
196
+ }
197
+ $imageFields[$field] = $conf['copy_field'];
198
+ }
199
+ return $imageFields;
200
+ }
201
+
202
+ public function validateDatatype($unbxdDatatype, $magentoDatatype) {
203
+ if($unbxdDatatype == Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_TEXT || $unbxdDatatype == Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_LONGTEXT ||
204
+ $unbxdDatatype == Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_LINK) {
205
+ return true;
206
+ }
207
+ if($unbxdDatatype == Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_NUMBER && $magentoDatatype == Unbxd_Recscore_Helper_Constants::FIELD_TYPE_NUMBER) {
208
+ return true;
209
+ }
210
+ if($unbxdDatatype == Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_DECIMAL && $magentoDatatype == Unbxd_Recscore_Helper_Constants::FIELD_TYPE_NUMBER) {
211
+ return true;
212
+ }
213
+ if($unbxdDatatype == Unbxd_Recscore_Helper_Constants::UNBXD_DATATYPE_DATE && $magentoDatatype == Unbxd_Recscore_Helper_Constants::FIELD_TYPE_DATE) {
214
+ return true;
215
+ }
216
+ return false;
217
+ }
218
+ }
219
+
220
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Observer.php RENAMED
@@ -2,23 +2,26 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Observer {
9
 
10
  /**
11
  * Observer method to track the add to cart
12
  * @return $this
13
  */
14
  public function trackAddToCart(Varien_Event_Observer $observer) {
 
 
 
15
  $product = $observer->getEvent()->getProduct();
16
  if(!$product instanceof Mage_Catalog_Model_Product) {
17
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'CART_TRACKER:product is not a valid type');
18
  return $this;
19
  }
20
- $response = Mage::getModel('unbxd_recommendation/api_task_trackcart')
21
- ->setData('data', array('pid' => Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product),
22
  'visit_type' => 'repeat'))
23
  ->setData('ip', isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR'])
24
  ->setData('agent', $_SERVER['HTTP_USER_AGENT'])
@@ -26,7 +29,7 @@ class Unbxd_Recommendation_Model_Observer {
26
  ->process();
27
  $errors = $response->getErrors();
28
  if(sizeof($errors) > 0) {
29
- Mage::helper('unbxd_recommendation')
30
  ->log(Zend_Log::ERR, 'CART_TRACKER:request failed because ' .json_encode($errors));
31
  }
32
  return $this;
@@ -37,27 +40,29 @@ class Unbxd_Recommendation_Model_Observer {
37
  * @return $this
38
  */
39
  public function trackOrder(Varien_Event_Observer $observer) {
40
-
 
 
41
  $payment = $observer->getEvent()->getPayment();
42
  /* @var Mage_Sales_Model_Order_Payment */
43
 
44
  if(!$payment instanceof Mage_Sales_Model_Order_Payment) {
45
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'ORDER_TRACKER:payment is not a valid type');
46
  return $this;
47
  }
48
  $items = $payment->getOrder()->getItemsCollection();
49
 
50
  foreach($items as $item) {
51
  if($item instanceof Mage_Sales_Model_Order) {
52
- Mage::helper('unbxd_recommendation')
53
  ->log(Zend_Log::ERR, 'ORDER_TRACKER:request failed because item is of instancetype ' . get_class($item));
54
  continue;
55
  }
56
  $product =$item->getProduct();
57
- $response = Mage::getModel('unbxd_recommendation/api_task_trackorder')
58
  ->setData('data',
59
  array('visit_type' => 'repeat',
60
- 'pid' => Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product),
61
  'qty' => $item->getQtyOrdered(),
62
  'price' => $item->getPriceInclTax()))
63
  ->setData('ip', isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'])
@@ -66,10 +71,10 @@ class Unbxd_Recommendation_Model_Observer {
66
  ->process();
67
 
68
  if ($response->isSuccess() && is_array($response->getErrors()) && sizeof($response->getErrors()) > 0) {
69
- Mage::helper('unbxd_recommendation')
70
  ->log(Zend_Log::ERR, 'ORDER_TRACKER:request failed because ' . json_encode($response->getErrors()));
71
  }
72
- Mage::getSingleton('unbxd_recommendation/sync')->addProduct($product);
73
  }
74
  return $this;
75
  }
@@ -79,44 +84,75 @@ class Unbxd_Recommendation_Model_Observer {
79
  * @param Varien_Event_Observer $observer
80
  * @return $this
81
  */
82
- public function syncProduct(Varien_Event_Observer $observer)
83
  {
 
 
 
84
  $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
85
 
86
  foreach ($websiteCollection as $website) {
87
- Mage::getResourceModel('unbxd_recommendation/config')
88
- ->setValue($website->getWebsiteId(), Unbxd_Recommendation_Helper_Confighelper::IS_CRON_ENABLED, 1);
89
- Mage::getSingleton('unbxd_recommendation/feed_feedmanager')->process($website);
90
  }
91
  return $this;
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /**
95
  * Method to track deleted product
96
  * @param Varien_Event_Observer $observer
97
  * @return void
98
  */
99
- public function trackDeleteOfChildProduct(Varien_Event_Observer $observer) {
 
 
 
100
  $product = $observer->getEvent()->getDataObject();
101
  $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
102
  if(!$parentIds)
103
  $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
104
  foreach($parentIds as $parentId) {
105
  $parentProduct = Mage::getModel('catalog/product')->load($parentId);
106
- Mage::getSingleton('unbxd_recommendation/sync')->addProduct($parentProduct);
107
  }
108
- Mage::getSingleton('unbxd_recommendation/sync')->deleteProduct($product);
109
  return $this;
110
  }
111
 
 
 
 
 
 
 
112
  public function catalogInventorySave(Varien_Event_Observer $observer) {
 
 
 
113
  $_item = $observer->getEvent()->getItem()->getProduct();
114
- Mage::getSingleton('unbxd_recommendation/sync')->addProduct($_item);
 
115
  return $this;
116
  }
117
-
118
- public function saleOrderCancel(Varien_Event_Observer $observer) {
119
-
120
- }
121
  }
122
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Observer {
9
 
10
  /**
11
  * Observer method to track the add to cart
12
  * @return $this
13
  */
14
  public function trackAddToCart(Varien_Event_Observer $observer) {
15
+ if(!Mage::helper('unbxd_recscore')->isExecutable()) {
16
+ return;
17
+ }
18
  $product = $observer->getEvent()->getProduct();
19
  if(!$product instanceof Mage_Catalog_Model_Product) {
20
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'CART_TRACKER:product is not a valid type');
21
  return $this;
22
  }
23
+ $response = Mage::getModel('unbxd_recscore/api_task_trackcart')
24
+ ->setData('data', array('pid' => Mage::helper('unbxd_recscore/feedhelper')->getUniqueId($product),
25
  'visit_type' => 'repeat'))
26
  ->setData('ip', isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR'])
27
  ->setData('agent', $_SERVER['HTTP_USER_AGENT'])
29
  ->process();
30
  $errors = $response->getErrors();
31
  if(sizeof($errors) > 0) {
32
+ Mage::helper('unbxd_recscore')
33
  ->log(Zend_Log::ERR, 'CART_TRACKER:request failed because ' .json_encode($errors));
34
  }
35
  return $this;
40
  * @return $this
41
  */
42
  public function trackOrder(Varien_Event_Observer $observer) {
43
+ if(!Mage::helper('unbxd_recscore')->isExecutable()) {
44
+ return;
45
+ }
46
  $payment = $observer->getEvent()->getPayment();
47
  /* @var Mage_Sales_Model_Order_Payment */
48
 
49
  if(!$payment instanceof Mage_Sales_Model_Order_Payment) {
50
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'ORDER_TRACKER:payment is not a valid type');
51
  return $this;
52
  }
53
  $items = $payment->getOrder()->getItemsCollection();
54
 
55
  foreach($items as $item) {
56
  if($item instanceof Mage_Sales_Model_Order) {
57
+ Mage::helper('unbxd_recscore')
58
  ->log(Zend_Log::ERR, 'ORDER_TRACKER:request failed because item is of instancetype ' . get_class($item));
59
  continue;
60
  }
61
  $product =$item->getProduct();
62
+ $response = Mage::getModel('unbxd_recscore/api_task_trackorder')
63
  ->setData('data',
64
  array('visit_type' => 'repeat',
65
+ 'pid' => Mage::helper('unbxd_recscore/feedhelper')->getUniqueId($product),
66
  'qty' => $item->getQtyOrdered(),
67
  'price' => $item->getPriceInclTax()))
68
  ->setData('ip', isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'])
71
  ->process();
72
 
73
  if ($response->isSuccess() && is_array($response->getErrors()) && sizeof($response->getErrors()) > 0) {
74
+ Mage::helper('unbxd_recscore')
75
  ->log(Zend_Log::ERR, 'ORDER_TRACKER:request failed because ' . json_encode($response->getErrors()));
76
  }
77
+ Mage::getSingleton('unbxd_recscore/sync')->addProduct($product);
78
  }
79
  return $this;
80
  }
84
  * @param Varien_Event_Observer $observer
85
  * @return $this
86
  */
87
+ public function syncFull(Varien_Event_Observer $observer)
88
  {
89
+ if(!Mage::helper('unbxd_recscore')->isExecutable()) {
90
+ return;
91
+ }
92
  $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
93
 
94
  foreach ($websiteCollection as $website) {
95
+ Mage::getResourceModel('unbxd_recscore/config')
96
+ ->setValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::IS_CRON_ENABLED, 1);
97
+ Mage::getSingleton('unbxd_recscore/feed_feedmanager')->process(true, $website);
98
  }
99
  return $this;
100
  }
101
 
102
+ /*
103
+ * Method to sync the product incremental catalog through cron
104
+ * @param Varien_Event_Observer $observer
105
+ * @return $this
106
+ */
107
+ public function syncIncremental(Varien_Event_Observer $observer)
108
+ {
109
+ if(!Mage::helper('unbxd_recscore')->isExecutable()) {
110
+ return;
111
+ }
112
+ $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
113
+ foreach ($websiteCollection as $website) {
114
+ Mage::getResourceModel('unbxd_recscore/config')
115
+ ->setValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::IS_CRON_ENABLED, 1);
116
+ Mage::getSingleton('unbxd_recscore/feed_feedmanager')->process(false, $website);
117
+ }
118
+ return $this;
119
+ }
120
+
121
  /**
122
  * Method to track deleted product
123
  * @param Varien_Event_Observer $observer
124
  * @return void
125
  */
126
+ public function trackDelete(Varien_Event_Observer $observer) {
127
+ if(!Mage::helper('unbxd_recscore')->isExecutable()) {
128
+ return;
129
+ }
130
  $product = $observer->getEvent()->getDataObject();
131
  $parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
132
  if(!$parentIds)
133
  $parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
134
  foreach($parentIds as $parentId) {
135
  $parentProduct = Mage::getModel('catalog/product')->load($parentId);
136
+ Mage::getSingleton('unbxd_recscore/sync')->addProduct($parentProduct);
137
  }
138
+ Mage::getSingleton('unbxd_recscore/sync')->deleteProduct($product);
139
  return $this;
140
  }
141
 
142
+ /**
143
+ * Method to track deleted product
144
+ * @param Varien_Event_Observer $observer
145
+ * @return void
146
+ */
147
+
148
  public function catalogInventorySave(Varien_Event_Observer $observer) {
149
+ if(!Mage::helper('unbxd_recscore')->isExecutable()) {
150
+ return;
151
+ }
152
  $_item = $observer->getEvent()->getItem()->getProduct();
153
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'product id is '. $_item->getData("entity_id"));
154
+ Mage::getSingleton('unbxd_recscore/sync')->addProduct($_item);
155
  return $this;
156
  }
 
 
 
 
157
  }
158
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Resource/Attribute.php RENAMED
@@ -1,11 +1,11 @@
1
  <?php
2
 
3
- class Unbxd_Recommendation_Model_Resource_Attribute {
4
 
5
  protected $attributeMap = array();
6
  public function getAttributeValue($attributeCode, $value, $product){
7
  if(!isset($this->attributeMap[$value])){
8
- if(!($product instanceof Mage_Catalog_Model_Product)){
9
  return null;
10
  }
11
  $options = Mage::getResourceModel('catalog/product')->getAttribute($attributeCode)
@@ -14,7 +14,7 @@ class Unbxd_Recommendation_Model_Resource_Attribute {
14
  $this->attributeMap[$option["value"]] = $option["label"];
15
  }
16
  }
17
- return $this->attributeMap[$value];
18
  }
19
 
20
  }
1
  <?php
2
 
3
+ class Unbxd_Recscore_Model_Resource_Attribute {
4
 
5
  protected $attributeMap = array();
6
  public function getAttributeValue($attributeCode, $value, $product){
7
  if(!isset($this->attributeMap[$value])){
8
+ if(!($product instanceof Mage_Catalog_Model_Product) || Mage::getResourceModel('catalog/product')->getAttribute($attributeCode) == null){
9
  return null;
10
  }
11
  $options = Mage::getResourceModel('catalog/product')->getAttribute($attributeCode)
14
  $this->attributeMap[$option["value"]] = $option["label"];
15
  }
16
  }
17
+ return array_key_exists($value, $this->attributeMap)?$this->attributeMap[$value]:null;
18
  }
19
 
20
  }
app/code/local/Unbxd/Recscore/Model/Resource/Config.php ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Model_Resource_Config extends Mage_Core_Model_Mysql4_Abstract
9
+ {
10
+
11
+ /**
12
+ * Unbxd Config table Name
13
+ *
14
+ * @var string
15
+ */
16
+ protected $_unbxdConfigTable;
17
+
18
+ // date format
19
+ const DATE_FORMAT = 'Y-m-d H:i:s';
20
+
21
+ /**
22
+ * @return void
23
+ */
24
+ protected function _construct()
25
+ {
26
+ $this->_init('unbxd_recscore/config', 'id');
27
+ $this->_unbxdConfigTable = $this->getTable('unbxd_recscore/config');
28
+ }
29
+
30
+ public function getValues($websiteId, $key) {
31
+ if(!isset($key) || is_array($key) ){
32
+ return array();
33
+ }
34
+ $adapter = $this->_getReadAdapter();
35
+ $select = $adapter->select()
36
+ ->from($this->_unbxdConfigTable, Unbxd_Recscore_Model_Config::VALUE)
37
+ ->where('`'.Unbxd_Recscore_Model_Config::WEBSITE_ID.'` = ?', (int)$websiteId)
38
+ ->where('`'.Unbxd_Recscore_Model_Config::KEY.'` = ?', $key);
39
+ $rows = $adapter->fetchAll($select);
40
+ $values = array();
41
+ foreach($rows as $row) {
42
+ if(array_key_exists(Unbxd_Recscore_Model_Config::VALUE, $row)) {
43
+ $values[] = $row[Unbxd_Recscore_Model_Config::VALUE];
44
+ }
45
+ }
46
+ return $values;
47
+ }
48
+
49
+ /**
50
+ * @param $website_id
51
+ * @param $key
52
+ * @return null|string
53
+ */
54
+ public function getValue($website_id, $key)
55
+ {
56
+ $adapter = $this->_getReadAdapter();
57
+ if(is_array($key)) {
58
+ $keyValuePair = array();
59
+ foreach ($key as $eachKey) {
60
+ $keyValuePair[$eachKey] = $this->getValue($website_id, $eachKey);
61
+ }
62
+ return $keyValuePair;
63
+ }
64
+ $select = $adapter->select()
65
+ ->from($this->_unbxdConfigTable, 'value')
66
+ ->where('`'.Unbxd_Recscore_Model_Config::WEBSITE_ID.'` = ?', (int)$website_id)
67
+ ->where('`'.Unbxd_Recscore_Model_Config::KEY.'` = ?', $key);
68
+ $result = $adapter->fetchOne($select);
69
+ if($result === false) {
70
+ return null;
71
+ }
72
+ return $result;
73
+ }
74
+
75
+ /**
76
+ * @param int $website_id
77
+ * @param string $key
78
+ * @param string $value
79
+ * @return void
80
+ */
81
+ public function setValue($website_id, $key, $value = null)
82
+ {
83
+ if(is_array($key)) {
84
+ foreach($key as $eachKey => $eachValue) {
85
+ $this->setValue($website_id, $eachKey, $eachValue);
86
+ }
87
+ return;
88
+ }
89
+ if (!isset($value) || $value == "" || !isset($key) || $key == "") {
90
+ return;
91
+ }
92
+
93
+ $config = Mage::getModel('unbxd_recscore/config')->getCollection()
94
+ ->addFieldToFilter('`'.Unbxd_Recscore_Model_Config::KEY.'`', $key)
95
+ ->addFieldToFilter('`'.Unbxd_Recscore_Model_Config::WEBSITE_ID.'`', (int)$website_id)
96
+ ->getFirstItem();
97
+
98
+ $config->setWebsiteId($website_id)
99
+ ->setKey($key)
100
+ ->setValue($value)
101
+ ->save();
102
+ }
103
+
104
+ public function updateValues($websiteId, $key, $values = array()) {
105
+ $this->deleteKey($websiteId, $key);
106
+ $this->beginTransaction();
107
+ foreach($values as $eachValue) {
108
+ Mage::getModel('unbxd_recscore/config')
109
+ ->setWebsiteId($websiteId)
110
+ ->setKey($key)
111
+ ->setValue($eachValue)
112
+ ->save();
113
+ }
114
+ $this->commit();
115
+ }
116
+
117
+ public function deleteKey($websiteId, $key) {
118
+ $write = Mage::getSingleton("core/resource")->getConnection("core_write");
119
+ $query = "DELETE FROM `unbxd_recommendation_conf` WHERE `" . Unbxd_Recscore_Model_Config::KEY . "` = :key"
120
+ . " and `" . Unbxd_Recscore_Model_Config::WEBSITE_ID . "` = :website_id";
121
+ $binds = array(
122
+ 'key' => $key,
123
+ 'website_id' => $websiteId
124
+ );
125
+ $write->query($query, $binds);
126
+
127
+ }
128
+
129
+ public function lockSite($website_id) {
130
+ $this->setValue($website_id, array(
131
+ Unbxd_Recscore_Model_Config::FEED_LOCK => Unbxd_Recscore_Model_Config::FEED_LOCK_TRUE,
132
+ Unbxd_Recscore_Model_Config::FEED_LOCK_TIME => date(self::DATE_FORMAT)));
133
+
134
+ }
135
+
136
+
137
+ public function unLockSite($website_id) {
138
+ $this->setValue($website_id, Unbxd_Recscore_Model_Config::FEED_LOCK,
139
+ Unbxd_Recscore_Model_Config::FEED_LOCK_FALSE);
140
+ }
141
+
142
+ /**
143
+ * Method will check whether there is a feed lock or not
144
+ * @param $website_id
145
+ * @return bool
146
+ */
147
+ public function isLock($website_id) {
148
+ //fetch the values for feedlock, feed lock time from db
149
+ $feedLockDetails = $this->getValue($website_id,
150
+ array(Unbxd_Recscore_Model_Config::FEED_LOCK, Unbxd_Recscore_Model_Config::FEED_LOCK_TIME));
151
+ //fetch feed lock from @var feedLockDetails
152
+ $feedLock = array_key_exists(Unbxd_Recscore_Model_Config::FEED_LOCK, $feedLockDetails)?
153
+ $feedLockDetails[Unbxd_Recscore_Model_Config::FEED_LOCK]:null;
154
+ if(is_null($feedLock) || $feedLock == Unbxd_Recscore_Model_Config::FEED_LOCK_FALSE){
155
+ return false;
156
+ }
157
+ // Ignoring the feed Lock, if the feed has been locked more than $maxFeedLockTime
158
+ if($feedLock == Unbxd_Recscore_Model_Config::FEED_LOCK_TRUE &&
159
+ array_key_exists(Unbxd_Recscore_Model_Config::FEED_LOCK_TIME, $feedLockDetails)) {
160
+ $feedLockTime = $feedLockDetails[Unbxd_Recscore_Model_Config::FEED_LOCK_TIME];
161
+ $date = strtotime($feedLockTime);
162
+ $currentTime = strtotime(date(self::DATE_FORMAT));
163
+ $diff = abs($date - $currentTime);
164
+ $maxFeedLockTime = Mage::getConfig()->getNode('default/unbxd/general/max_feed_lock_feed');
165
+ if(is_null($maxFeedLockTime)) {
166
+ $maxFeedLockTime = Unbxd_Recscore_Model_Config::MAX_FEED_LOCK_TIME;
167
+ }
168
+ if(round($diff / ( 60 * 60 )) > $maxFeedLockTime) {
169
+ return false;
170
+ }
171
+ }
172
+ return true;
173
+ }
174
+
175
+ /**
176
+ * Method to get all the filters
177
+ * @param Mage_Core_Model_Website $website
178
+ * @return array
179
+ */
180
+ public function getFilters(Mage_Core_Model_Website $website) {
181
+ $values = Mage::getResourceModel('unbxd_recscore/config')->getValues($website->getWebsiteId(),
182
+ Unbxd_Recscore_Model_Config::FILTER);
183
+ $filters = array();
184
+ foreach($values as $value) {
185
+ $explodedValues = explode(Unbxd_Recscore_Model_Config::FILTER_DELIMITER, $value);
186
+ if(sizeof($explodedValues) < 2) {
187
+ continue;
188
+ }
189
+ $filters[$explodedValues[0]] = $explodedValues[1];
190
+ }
191
+ return $filters;
192
+ }
193
+
194
+ public function saveGlobalConfig(Mage_Core_Model_Website $website, $values = array()) {
195
+ foreach($values as $key => $value ) {
196
+ }
197
+ }
198
+
199
+ public function deleteAll($websiteId) {
200
+ $write = Mage::getSingleton("core/resource")->getConnection("core_write");
201
+ $query = "DELETE FROM `unbxd_recommendation_conf` WHERE `" . Unbxd_Recscore_Model_Config::WEBSITE_ID . "` = :website_id";
202
+ $binds = array(
203
+ 'website_id' => $websiteId
204
+ );
205
+ $write->query($query, $binds);
206
+ }
207
+
208
+ public function getGlobalConfig(Mage_Core_Model_Website $website, $keys =array()) {
209
+ }
210
+ }
211
+
212
+ ?>
app/code/local/Unbxd/Recscore/Model/Resource/Config/Collection.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd {
7
+ */
8
+ class Unbxd_Recscore_Model_Resource_Config_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
9
+ {
10
+ /**
11
+ */
12
+ public function _construct()
13
+ {
14
+ $this->_init('unbxd_recscore/config');
15
+ }
16
+
17
+
18
+ }
19
+
20
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Resource/Field.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
- class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_Abstract
9
  {
10
 
11
  const CAT_LEVEL_1 = "categoryLevel1";
@@ -16,13 +16,13 @@ class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_A
16
 
17
  const CAT_LEVEL_4 = "categoryLevel4";
18
 
19
- const CAT_LEVEL_1_NAME = "catLevel1Name";
20
 
21
- const CAT_LEVEL_2_NAME = "catLevel2Name";
22
 
23
- const CAT_LEVEL_3_NAME = "catLevel3Name";
24
 
25
- const CAT_LEVEL_4_NAME = "catLevel4Name";
26
 
27
  const CATEGORY_IDS_NAME = "categoryIds";
28
 
@@ -31,10 +31,6 @@ class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_A
31
  const CATEGORY_NAME = "category";
32
 
33
  const AVAILABILITY = 'availability';
34
-
35
- const FINAL_PRICE = 'final_price';
36
-
37
- const PRICE = 'price';
38
  /**
39
  * Unbxd Field Config table Name
40
  *
@@ -47,8 +43,8 @@ class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_A
47
  */
48
  protected function _construct()
49
  {
50
- $this->_init('unbxd_recommendation/field', 'id');
51
- $this->_unbxdFieldTable = $this->getTable('unbxd_recommendation/field');
52
  }
53
 
54
  public function getTableName() {
@@ -59,9 +55,9 @@ class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_A
59
  $adapter = $this->_getReadAdapter();
60
 
61
  $select = $adapter->select()
62
- ->from($this->_unbxdFieldTable, Unbxd_Recommendation_Model_Field::field_name)
63
- ->where('`'.Unbxd_Recommendation_Model_Field::website_id.'` = ?', (int)$websiteId)
64
- ->where('`'.Unbxd_Recommendation_Model_Field::featured_field.'` = ?', $featureField);
65
 
66
  $result = $adapter->fetchOne($select);
67
  if($result == false) {
@@ -80,7 +76,7 @@ class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_A
80
  }
81
 
82
  protected function getDisplayableFieldCollection(Mage_Core_Model_Website $website) {
83
- return Mage::getModel("unbxd_recommendation/field")
84
  ->getCollection()
85
  ->addFieldsDisplayFilter()
86
  ->addWebsiteFilter($website)
@@ -98,7 +94,7 @@ class Unbxd_Recommendation_Model_Resource_Field extends Mage_Core_Model_Mysql4_A
98
  if(is_null($websiteId)) {
99
  return "";
100
  }
101
- $fieldTable = Mage::getResourceModel('unbxd_recommendation/field')->getTableName();
102
  return "
103
  INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
104
  VALUES
@@ -112,15 +108,15 @@ VALUES
112
  ({$websiteId}, 'url_path', 'link', 0, 'productUrl', 0, 1),
113
  ({$websiteId}, 'gender', 'text', 0, 'gender', 0, 1),
114
  ({$websiteId}, 'description', 'longText', 0, 'description', 0, 1),
115
- ({$websiteId}, 'catLevel1Name', 'text', 0, 'catLevel1Name', 0, 0),
116
- ({$websiteId}, 'catLevel2Name', 'text', 0, 'catLevel2Name', 0, 0),
117
- ({$websiteId}, 'catLevel3Name', 'text', 0, 'catLevel3Name', 0, 0),
118
- ({$websiteId}, 'catLevel4Name', 'text', 0, 'catLevel4Name', 0, 0),
119
- ({$websiteId}, 'categoryLevel1', 'text', 0, 'categoryLevel1', 1, 0),
120
- ({$websiteId}, 'categoryLevel2', 'text', 0, 'categoryLevel2', 1, 0),
121
- ({$websiteId}, 'categoryLevel3', 'text', 0, 'categoryLevel3', 1, 0),
122
- ({$websiteId}, 'categoryLevel4', 'text', 0, 'categoryLevel4', 1, 0),
123
- ({$websiteId}, 'created_at', 'date', 0, NULL, 0, 1)
124
  ({$websiteId}, 'availability', 'bool', 0, 'availability', 0, 0),
125
  ({$websiteId}, 'status', 'number', 0, NULL, 0, 0),
126
  ({$websiteId}, 'visibility', 'number', 0, NULL, 0, 0),
@@ -132,4 +128,4 @@ VALUES
132
  }
133
  }
134
 
135
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd
7
  */
8
+ class Unbxd_Recscore_Model_Resource_Field extends Mage_Core_Model_Mysql4_Abstract
9
  {
10
 
11
  const CAT_LEVEL_1 = "categoryLevel1";
16
 
17
  const CAT_LEVEL_4 = "categoryLevel4";
18
 
19
+ const CAT_LEVEL_1_NAME = "catlevel1Name";
20
 
21
+ const CAT_LEVEL_2_NAME = "catlevel2Name";
22
 
23
+ const CAT_LEVEL_3_NAME = "catlevel3Name";
24
 
25
+ const CAT_LEVEL_4_NAME = "catlevel4Name";
26
 
27
  const CATEGORY_IDS_NAME = "categoryIds";
28
 
31
  const CATEGORY_NAME = "category";
32
 
33
  const AVAILABILITY = 'availability';
 
 
 
 
34
  /**
35
  * Unbxd Field Config table Name
36
  *
43
  */
44
  protected function _construct()
45
  {
46
+ $this->_init('unbxd_recscore/field', 'id');
47
+ $this->_unbxdFieldTable = $this->getTable('unbxd_recscore/field');
48
  }
49
 
50
  public function getTableName() {
55
  $adapter = $this->_getReadAdapter();
56
 
57
  $select = $adapter->select()
58
+ ->from($this->_unbxdFieldTable, Unbxd_Recscore_Model_Field::field_name)
59
+ ->where('`'.Unbxd_Recscore_Model_Field::website_id.'` = ?', (int)$websiteId)
60
+ ->where('`'.Unbxd_Recscore_Model_Field::featured_field.'` = ?', $featureField);
61
 
62
  $result = $adapter->fetchOne($select);
63
  if($result == false) {
76
  }
77
 
78
  protected function getDisplayableFieldCollection(Mage_Core_Model_Website $website) {
79
+ return Mage::getModel("unbxd_recscore/field")
80
  ->getCollection()
81
  ->addFieldsDisplayFilter()
82
  ->addWebsiteFilter($website)
94
  if(is_null($websiteId)) {
95
  return "";
96
  }
97
+ $fieldTable = Mage::getResourceModel('unbxd_recscore/field')->getTableName();
98
  return "
99
  INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
100
  VALUES
108
  ({$websiteId}, 'url_path', 'link', 0, 'productUrl', 0, 1),
109
  ({$websiteId}, 'gender', 'text', 0, 'gender', 0, 1),
110
  ({$websiteId}, 'description', 'longText', 0, 'description', 0, 1),
111
+ ({$websiteId}, 'catlevel1Name', 'text', 0, 'catlevel1Name', 0, 0),
112
+ ({$websiteId}, 'catlevel2Name', 'text', 0, 'catlevel2Name', 0, 0),
113
+ ({$websiteId}, 'catlevel3Name', 'text', 0, 'catlevel3Name', 0, 0),
114
+ ({$websiteId}, 'catlevel4Name', 'text', 0, 'catlevel4Name', 0, 0),
115
+ ({$websiteId}, 'categoryLevel1', 'text', 0, NULL, 1, 0),
116
+ ({$websiteId}, 'categoryLevel2', 'text', 0, NULL, 1, 0),
117
+ ({$websiteId}, 'categoryLevel3', 'text', 0, NULL, 1, 0),
118
+ ({$websiteId}, 'categoryLevel4', 'text', 0, NULL, 1, 0),
119
+ ({$websiteId}, 'created_at', 'date', 0, NULL, 0, 1),
120
  ({$websiteId}, 'availability', 'bool', 0, 'availability', 0, 0),
121
  ({$websiteId}, 'status', 'number', 0, NULL, 0, 0),
122
  ({$websiteId}, 'visibility', 'number', 0, NULL, 0, 0),
128
  }
129
  }
130
 
131
+ ?>
app/code/local/Unbxd/Recscore/Model/Resource/Field/Collection.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd {
7
+ */
8
+ class Unbxd_Recscore_Model_Resource_Field_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
9
+ {
10
+ /**
11
+ */
12
+ public function _construct()
13
+ {
14
+ $this->_init('unbxd_recscore/field');
15
+ }
16
+
17
+ /**
18
+ * Method to add fields to display filter
19
+ *
20
+ * @return void
21
+ */
22
+ public function addFieldsDisplayFilter() {
23
+ $this->addFieldToFilter(Unbxd_Recscore_Model_Field::dislayable,1);
24
+ return $this;
25
+ }
26
+
27
+ public function addWebsiteFilter(Mage_Core_Model_Website $website) {
28
+ $this->addFieldToFilter(Unbxd_Recscore_Model_Field::website_id, $website->getWebsiteId());
29
+ return $this;
30
+ }
31
+
32
+ /**
33
+ * Method to get field collection as array
34
+ *
35
+ * @return array
36
+ */
37
+ public function __asArray() {
38
+ $fields = array();
39
+ foreach($this->_items as $item) {
40
+ $field = array();
41
+ $field[Unbxd_Recscore_Model_Field::field_name] = $item->getFieldName();
42
+ $field[Unbxd_Recscore_Model_Field::datatype] = $item->getDatatype();
43
+ $field[Unbxd_Recscore_Model_Field::autosuggest] = $item->getAutosuggest();
44
+ $featureField = $item->getFeaturedField();
45
+ if(isset($featureField)) {
46
+ $field[Unbxd_Recscore_Model_Field::featured_field] = $featureField;
47
+ }
48
+ $fields[] = $field;
49
+ }
50
+ return $fields;
51
+ }
52
+
53
+ public function getFeatureFields(Mage_Core_Model_Website $website) {
54
+ $this->getSelect()->where(Unbxd_Recscore_Model_Field::featured_field. " IS NOT NULL AND ".
55
+ Unbxd_Recscore_Model_Field::website_id . " = " . $website->getWebsiteId());
56
+ return $this->load();
57
+ }
58
+
59
+ public function getFields(Mage_Core_Model_Website $website) {
60
+ $this->getSelect()->where(Unbxd_Recscore_Model_Field::website_id . " = " . $website->getWebsiteId());
61
+ return $this->load();
62
+ }
63
+ }
64
+
65
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Resource/Product/Collection.php RENAMED
@@ -1,5 +1,6 @@
1
  <?php
2
- class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection{
 
3
 
4
  protected function _construct()
5
  {
@@ -11,7 +12,7 @@ class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalo
11
  return false;
12
  }
13
 
14
- /**
15
  * Join Product Price Table | Ensuring left join happens
16
  *
17
  * @return Mage_Catalog_Model_Resource_Product_Collection
@@ -38,10 +39,9 @@ class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalo
38
 
39
  /**
40
  * sets collection is loaded
41
- * @param $collection
42
  * @return $this
43
  */
44
- public function virtuallyLoad($collection) {
45
  $this->_setIsLoaded(true);
46
  return $this;
47
  }
@@ -59,7 +59,7 @@ class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalo
59
  'in' => $productIds
60
  )
61
  ));
62
- Mage::helper('unbxd_recommendation')->log(Zend_Log::DEBUG, (string)$this->getSelect());
63
  return $this;
64
  }
65
 
@@ -77,20 +77,28 @@ class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalo
77
 
78
  }
79
 
80
- protected function _addBasicFilterToUpload(Mage_Core_Model_Website $website){
 
81
  $adapter = Mage::getSingleton("core/resource");
 
82
  $_catalogInventoryTable = method_exists($adapter, 'getTableName')
83
- ? $adapter->getTableName('cataloginventory_stock_item'): 'catalog_category_product_index';
84
 
85
  $this
86
  ->addWebsiteFilter($website->getWebsiteId())
87
  ->joinField("qty", $_catalogInventoryTable, 'qty', 'product_id=entity_id', null, 'left')
88
  ->addAttributeToSelect('*')
89
  ->addCategoryIds()
 
90
  ->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId());
91
 
 
 
 
 
 
92
  Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this);
93
- Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this);
94
  return $this;
95
  }
96
 
@@ -103,6 +111,7 @@ class Unbxd_Recommendation_Model_Resource_Product_Collection extends Mage_Catalo
103
  $this->_addBasicFilterToUpload($website);
104
  return $this;
105
  }
 
106
  }
107
 
108
- ?>
1
  <?php
2
+ class Unbxd_Recscore_Model_Resource_Product_Collection extends
3
+ Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection{
4
 
5
  protected function _construct()
6
  {
12
  return false;
13
  }
14
 
15
+ /**
16
  * Join Product Price Table | Ensuring left join happens
17
  *
18
  * @return Mage_Catalog_Model_Resource_Product_Collection
39
 
40
  /**
41
  * sets collection is loaded
 
42
  * @return $this
43
  */
44
+ public function virtuallyLoad() {
45
  $this->_setIsLoaded(true);
46
  return $this;
47
  }
59
  'in' => $productIds
60
  )
61
  ));
62
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG, (string)$this->getSelect());
63
  return $this;
64
  }
65
 
77
 
78
  }
79
 
80
+ protected function _addBasicFilterToUpload(Mage_Core_Model_Website $website)
81
+ {
82
  $adapter = Mage::getSingleton("core/resource");
83
+ $visiblityCondition = array('in' => array(2,3,4));
84
  $_catalogInventoryTable = method_exists($adapter, 'getTableName')
85
+ ? $adapter->getTableName('cataloginventory_stock_item') : 'catalog_category_product_index';
86
 
87
  $this
88
  ->addWebsiteFilter($website->getWebsiteId())
89
  ->joinField("qty", $_catalogInventoryTable, 'qty', 'product_id=entity_id', null, 'left')
90
  ->addAttributeToSelect('*')
91
  ->addCategoryIds()
92
+ ->addAttributeToFilter('visibility',$visiblityCondition)
93
  ->addPriceData(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID, $website->getWebsiteId());
94
 
95
+ if (!Mage::helper('unbxd_recscore')
96
+ ->isConfigTrue($website, Unbxd_Recscore_Helper_Constants::INCLUDE_OUT_OF_STOCK)) {
97
+ Mage::getModel('cataloginventory/stock_status')->addStockStatusToProducts($this);
98
+ }
99
+
100
  Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this);
101
+ #Mage::getSingleton('catalog/product_visibility')->addVisibleInSiteFilterToCollection($this);
102
  return $this;
103
  }
104
 
111
  $this->_addBasicFilterToUpload($website);
112
  return $this;
113
  }
114
+
115
  }
116
 
117
+ ?>
app/code/local/Unbxd/Recscore/Model/Resource/Sync.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_Model_Resource_Sync extends Mage_Core_Model_Mysql4_Abstract {
9
+
10
+ /**
11
+ * @return void
12
+ */
13
+ protected function _construct()
14
+ {
15
+ $this->_init('unbxd_recscore/sync', 'id');
16
+ }
17
+ }
app/code/local/Unbxd/Recscore/Model/Resource/Sync/Collection.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd {
7
+ */
8
+ class Unbxd_Recscore_Model_Resource_Sync_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
9
+ {
10
+ /**
11
+ */
12
+ public function _construct()
13
+ {
14
+ $this->_init('unbxd_recscore/sync');
15
+ }
16
+
17
+ /**
18
+ * add field to Filter
19
+ * @param $websiteId
20
+ * @return void
21
+ */
22
+ public function addWebsiteFilter($websiteIds) {
23
+ $this->addFieldToFilter(Unbxd_Recscore_Model_Sync::WEBSITE_ID, $websiteIds);
24
+ return $this;
25
+ }
26
+
27
+ /**
28
+ * Add Unsync filter
29
+ * @return void
30
+ */
31
+ public function addUnsyncFilter() {
32
+ $this->addFieldToFilter(Unbxd_Recscore_Model_Sync::SYNCED,
33
+ Unbxd_Recscore_Model_Sync::SYNCED_FALSE);
34
+ return $this;
35
+ }
36
+
37
+ /**
38
+ * Add Synced filter
39
+ * @return void
40
+ */
41
+ public function addSyncFilter() {
42
+ $this->addFieldToFilter(Unbxd_Recscore_Model_Sync::SYNCED,
43
+ Unbxd_Recscore_Model_Sync::SYNCED_TRUE);
44
+ return $this;
45
+ }
46
+
47
+ public function addOperationFilter($operation = Unbxd_Recscore_Model_Sync::OPERATION_ADD) {
48
+ $this->addFieldToFilter(Unbxd_Recscore_Model_Sync::OPERATION, $operation);
49
+ return $this;
50
+ }
51
+ }
52
+
53
+ ?>
app/code/local/Unbxd/Recscore/Model/State.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ interface Unbxd_Recscore_Model_State {
4
+
5
+ /**
6
+ * Method which returns the state of the component
7
+ * @param Mage_Core_Model_Website $website
8
+ * @return Unbxd_Recscore_Model_State_Response
9
+ */
10
+ public function getState(Mage_Core_Model_Website $website);
11
+
12
+ }
app/code/local/Unbxd/Recscore/Model/State/Analytics.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_State_Analytics implements Unbxd_Recscore_Model_State {
4
+
5
+ /**
6
+ * Method which returns the state of the component
7
+ * @param Mage_Core_Model_Website $website
8
+ * @return Unbxd_Recscore_Model_State_Response
9
+ */
10
+ public function getState(Mage_Core_Model_Website $website) {
11
+ $response = Mage::getModel('unbxd_recscore/state_response');
12
+ $status = true;
13
+ $message = array();
14
+ if(!$this->_checkRecommendorAnalytics($website)) {
15
+ $status = false;
16
+ $message[] = "Analytics impressions not captured";
17
+ }
18
+ if($status && Mage::helper('core')->isModuleEnabled('Unbxd_Searchcore')) {
19
+ if($this->_checkSearchAnalytics($website)) {
20
+ $status = false;
21
+ $message[] = "Analytics impressions not captured";
22
+ }
23
+ }
24
+ $response->setStatus($status);
25
+ $response->setMessage($message);
26
+ return $response;
27
+ }
28
+
29
+ /**
30
+ * Method to check product click, order, add to cart tracking information
31
+ * @param Mage_Core_Model_Website $website
32
+ * @return bool
33
+ */
34
+ protected function _checkRecommendorAnalytics(Mage_Core_Model_Website $website) {
35
+ $analyticsImpression = Mage::getModel("unbxd_recscore/api_task_analyticsimpression")
36
+ ->prepare($website)
37
+ ->process();
38
+ if(!$analyticsImpression->isSuccess()) {
39
+ return false;
40
+ }
41
+ $details = $analyticsImpression->getResponse();
42
+ if(!array_key_exists("IntegrationDetails", $details)) {
43
+ return false;
44
+ }
45
+ if(!is_array($details["IntegrationDetails"]) || sizeof($details["IntegrationDetails"]) == 0) {
46
+ return false;
47
+ }
48
+ $intDetails = $details["IntegrationDetails"][0];
49
+ if(!array_key_exists("ADDTOCART", $intDetails) || !array_key_exists("CLICKRANK", $intDetails)
50
+ || !array_key_exists("ORDER", $intDetails)) {
51
+ return false;
52
+ }
53
+ return true;
54
+ }
55
+
56
+ /**
57
+ * Method to check search integration
58
+ * @param Mage_Core_Model_Website $website
59
+ * @return bool
60
+ */
61
+ protected function _checkSearchAnalytics(Mage_Core_Model_Website $website) {
62
+ $searchImpressions = Mage::getSingleton('unbxd_recscore/api_task_searchimpression')
63
+ ->prepare($website)
64
+ ->process();
65
+ if(!$searchImpressions->isSuccess()) {
66
+ return false;
67
+ }
68
+ $searhitResponseObj = $searchImpressions->getResponse();
69
+ $funnels = $searhitResponseObj["FunnelResponse"]["Funnels"];
70
+ $searchCount = 0;
71
+ foreach($funnels as $funnel) {
72
+ if(array_key_exists("type", $funnel) && $funnel["type"] == "hits"
73
+ && array_key_exists("searchCount",$funnel)) {
74
+ $searchCount = $funnel["searchCount"];
75
+ }
76
+ }
77
+ if($searchCount == 0) {
78
+ return false;
79
+ }
80
+ return true;
81
+ }
82
+
83
+
84
+ }
app/code/local/Unbxd/Recscore/Model/State/Catalog.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_State_Catalog implements Unbxd_Recscore_Model_State {
4
+
5
+
6
+ /**
7
+ * Method which returns the state of the component
8
+ * @param Mage_Core_Model_Website $website
9
+ * @return Unbxd_Recscore_Model_State_Response
10
+ */
11
+ public function getState(Mage_Core_Model_Website $website) {
12
+ $response = Mage::getModel('unbxd_recscore/state_response');
13
+ $status = true;
14
+ $message = array();
15
+ if(!$this->_checkFeedUpload($website)) {
16
+ $status = false;
17
+ $message[] = "Catalog Sync never happened";
18
+ }
19
+ if(!$this->_checkCron($website)) {
20
+ $status = false;
21
+ $message[] = "Cron for catalog sync never ran";
22
+ }
23
+ $response->setStatus($status);
24
+ $response->setMessage($message);
25
+ return $response;
26
+ }
27
+
28
+ /**
29
+ * Method to check the first time feed upload
30
+ * @param Mage_Core_Model_Website $website
31
+ * @return bool
32
+ */
33
+ protected function _checkFeedUpload(Mage_Core_Model_Website $website) {
34
+ $lastUploadTime = Mage::getResourceModel('unbxd_recscore/config')
35
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::LAST_UPLOAD_TIME);
36
+ return !is_null($lastUploadTime);
37
+ }
38
+
39
+ /**
40
+ * Method to check the first time feed upload
41
+ * @param Mage_Core_Model_Website $website
42
+ * @return bool
43
+ */
44
+ protected function _checkCron(Mage_Core_Model_Website $website) {
45
+ $cronFlag = Mage::getResourceModel('unbxd_recscore/config')
46
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::IS_CRON_ENABLED);
47
+ return !is_null($cronFlag);
48
+ }
49
+ }
app/code/local/Unbxd/Recscore/Model/State/Credentials.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_State_Credentials implements Unbxd_Recscore_Model_State {
4
+
5
+ /**
6
+ * Method which returns the state of the component
7
+ * @param Mage_Core_Model_Website $website
8
+ * @return Unbxd_Recscore_Model_State_Response
9
+ */
10
+ public function getState(Mage_Core_Model_Website $website) {
11
+ $response = Mage::getModel('unbxd_recscore/state_response');
12
+ $status = true;
13
+ $message = array();
14
+ if(!$this->_checkAuth($website)) {
15
+ $status = false;
16
+ $message[] = "Authorization is not done";
17
+ }
18
+ $response->setStatus($status);
19
+ $response->setMessage($message);
20
+ return $response;
21
+ }
22
+
23
+ /**
24
+ * Method to check the Auth
25
+ * @param Mage_Core_Model_Website $website
26
+ * @return bool
27
+ */
28
+ protected function _checkAuth(Mage_Core_Model_Website $website) {
29
+ $secretKey = Mage::getResourceModel('unbxd_recscore/config')
30
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SECRET_KEY);
31
+ return !is_null($secretKey);
32
+ }
33
+
34
+ }
app/code/local/Unbxd/Recscore/Model/State/Response.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_State_Response {
4
+
5
+ protected $_status = false;
6
+
7
+ protected $_message = array();
8
+
9
+ public function getStatus() {
10
+ return $this->_status;
11
+ }
12
+
13
+ public function setStatus($status = true) {
14
+ $this->_status = ($status)?true:false;
15
+ }
16
+
17
+ public function getMessage() {
18
+ return $this->_message;
19
+ }
20
+
21
+ public function setMessage(array $_message = array()) {
22
+ $this->_message = $_message;
23
+ }
24
+
25
+ public function _asArray() {
26
+ return array('status' => $this->_status, 'message' => $this->_message);
27
+ }
28
+
29
+ }
app/code/local/Unbxd/Recscore/Model/Statemgr.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Unbxd_Recscore_Model_Statemgr {
4
+
5
+
6
+ public function getCatalogState(Mage_Core_Model_Website $website) {
7
+ return Mage::getModel('unbxd_recscore/state_catalog')->getState($website);
8
+ }
9
+
10
+ public function getCredentialsState(Mage_Core_Model_Website $website) {
11
+ return Mage::getModel('unbxd_recscore/state_credentials')->getState($website);
12
+ }
13
+
14
+ public function getAnalyticsState(Mage_Core_Model_Website $website) {
15
+ return Mage::getModel('unbxd_recscore/state_analytics')->getState($website);
16
+ }
17
+
18
+ public function getAllStates(Mage_Core_Model_Website $website) {
19
+ $catalogState = $this->getCatalogState($website);
20
+ $credentialsState = $this->getCredentialsState($website);
21
+ $analyticsState = $this->getAnalyticsState($website);
22
+ return array('catalog' => $catalogState->_asArray(),
23
+ 'analytics' => $analyticsState->_asArray(),
24
+ 'credentials' => $credentialsState->_asArray());
25
+ }
26
+ }
27
+ ?>
app/code/local/Unbxd/{Recommendation → Recscore}/Model/Sync.php RENAMED
@@ -3,10 +3,10 @@
3
  /**
4
  * Model which maintains the product sync
5
  * @category Unbxd
6
- * @package Unbxd_Recommendation
7
  * @author Unbxd Software Pvt. Ltd
8
  */
9
- class Unbxd_Recommendation_Model_Sync extends Mage_Core_Model_Abstract {
10
 
11
  /** Value to store the synced boolean value */
12
  const SYNCED_FALSE = 0;
@@ -36,7 +36,7 @@ class Unbxd_Recommendation_Model_Sync extends Mage_Core_Model_Abstract {
36
  */
37
  protected function _construct()
38
  {
39
- $this->_init('unbxd_recommendation/sync');
40
 
41
  }
42
 
@@ -47,23 +47,21 @@ class Unbxd_Recommendation_Model_Sync extends Mage_Core_Model_Abstract {
47
  */
48
  public function addProduct(Mage_Catalog_Model_Product $product = null) {
49
  if (is_null($product) || !$product->hasData('entity_id')) {
50
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'product argument sent is empty');
51
  return false;
52
  }
53
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
54
  foreach($product->getWebsiteIds() as $websiteId) {
55
 
56
- $query = "insert into " . $this->getResource()->getTable('unbxd_recommendation/sync')
57
  . "(".self::PRODUCT_ID.", ".self::WEBSITE_ID.", ".self::SYNCED.",".self::UPDATED_TIME.") values "
58
- . "(:productId, :websiteId, :synced, :updated_time) ON DUPLICATE KEY
59
- UPDATE ".self::UPDATED_TIME."=NOW(), ".self::SYNCED." = 0, ".self::OPERATION." = :operation";
60
 
61
  $binds = array(
62
  'productId' => $product->getEntityId(),
63
  'websiteId' => $websiteId,
64
  'synced' => self::SYNCED_FALSE,
65
- 'updated_time' => date('Y-m-d H:i:s'),
66
- 'operation' => self::OPERATION_ADD
67
  );
68
  $write->query($query, $binds);
69
  }
@@ -76,22 +74,21 @@ class Unbxd_Recommendation_Model_Sync extends Mage_Core_Model_Abstract {
76
  */
77
  public function deleteProduct(Mage_Catalog_Model_Product $product = null) {
78
  if (is_null($product) || !$product->hasData('entity_id')) {
79
- Mage::helper('unbxd_recommendation')->log(Zend_Log::ERR, 'product argument sent is empty');
80
  return false;
81
  }
82
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
83
  foreach($product->getWebsiteIds() as $websiteId) {
84
 
85
- $query = "insert into " . $this->getResource()->getTable('unbxd_recommendation/sync')
86
  . "(product_id, website_id, synced, operation, updated_time) values "
87
- . "(:productId, :websiteId, :synced, :operation, :updated_time) ON DUPLICATE KEY
88
- UPDATE ".self::UPDATED_TIME."=NOW(), ".self::SYNCED." = 0, ".self::OPERATION." = :operation";
89
 
90
  $binds = array(
91
  'productId' => $product->getEntityId(),
92
  'websiteId' => $websiteId,
93
  'synced' => self::SYNCED_FALSE,
94
- 'operation' => self::OPERATION_DELETE,
95
  'updated_time' => date('Y-m-d H:i:s')
96
  );
97
  $write->query($query, $binds);
@@ -99,19 +96,16 @@ class Unbxd_Recommendation_Model_Sync extends Mage_Core_Model_Abstract {
99
  }
100
 
101
 
102
- public function markItSynced($websiteId, $fromTime, $toTime) {
103
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
104
- $query = "update " . $this->getResource()->getTable('unbxd_recommendation/sync')
105
- . " set ".self::SYNCED." = 1, ".self::SYNCED_TIME." = :currentTime
106
- where ".self::WEBSITE_ID." = :websiteId
107
- and ".self::UPDATED_TIME." < :toTime and ".self::UPDATED_TIME." > :fromTime";
108
 
109
  $binds = array(
110
- 'currentTime' => date('Y-m-d H:i:s'),
111
  'websiteId' => $websiteId,
112
- 'toTime' => $toTime,
113
- 'fromTime' => $fromTime
114
  );
115
  $write->query($query, $binds);
116
  }
117
- }
3
  /**
4
  * Model which maintains the product sync
5
  * @category Unbxd
6
+ * @package Unbxd_Recscore
7
  * @author Unbxd Software Pvt. Ltd
8
  */
9
+ class Unbxd_Recscore_Model_Sync extends Mage_Core_Model_Abstract {
10
 
11
  /** Value to store the synced boolean value */
12
  const SYNCED_FALSE = 0;
36
  */
37
  protected function _construct()
38
  {
39
+ $this->_init('unbxd_recscore/sync');
40
 
41
  }
42
 
47
  */
48
  public function addProduct(Mage_Catalog_Model_Product $product = null) {
49
  if (is_null($product) || !$product->hasData('entity_id')) {
50
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'product argument sent is empty');
51
  return false;
52
  }
53
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
54
  foreach($product->getWebsiteIds() as $websiteId) {
55
 
56
+ $query = "insert into " . $this->getResource()->getTable('unbxd_recscore/sync')
57
  . "(".self::PRODUCT_ID.", ".self::WEBSITE_ID.", ".self::SYNCED.",".self::UPDATED_TIME.") values "
58
+ . "(:productId, :websiteId, :synced, :updated_time) ON DUPLICATE KEY UPDATE updated_time=NOW()";
 
59
 
60
  $binds = array(
61
  'productId' => $product->getEntityId(),
62
  'websiteId' => $websiteId,
63
  'synced' => self::SYNCED_FALSE,
64
+ 'updated_time' => date('Y-m-d H:i:s')
 
65
  );
66
  $write->query($query, $binds);
67
  }
74
  */
75
  public function deleteProduct(Mage_Catalog_Model_Product $product = null) {
76
  if (is_null($product) || !$product->hasData('entity_id')) {
77
+ Mage::helper('unbxd_recscore')->log(Zend_Log::ERR, 'product argument sent is empty');
78
  return false;
79
  }
80
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
81
  foreach($product->getWebsiteIds() as $websiteId) {
82
 
83
+ $query = "insert into " . $this->getResource()->getTable('unbxd_recscore/sync')
84
  . "(product_id, website_id, synced, operation, updated_time) values "
85
+ . "(:productId, :websiteId, :synced, :operation, :updated_time) ON DUPLICATE KEY UPDATE updated_time=NOW()";
 
86
 
87
  $binds = array(
88
  'productId' => $product->getEntityId(),
89
  'websiteId' => $websiteId,
90
  'synced' => self::SYNCED_FALSE,
91
+ 'operation' => 'DELETE',
92
  'updated_time' => date('Y-m-d H:i:s')
93
  );
94
  $write->query($query, $binds);
96
  }
97
 
98
 
99
+ public function markItSynced($websiteId, $toTime) {
100
  $write = Mage::getSingleton("core/resource")->getConnection("core_write");
101
+ $query = "update " . $this->getResource()->getTable('unbxd_recscore/sync')
102
+ . " set " . self::SYNCED . " = 1 where " . self::WEBSITE_ID
103
+ . "= :websiteId and " . self::UPDATED_TIME . '< :toTime';
 
104
 
105
  $binds = array(
 
106
  'websiteId' => $websiteId,
107
+ 'toTime' => $toTime
 
108
  );
109
  $write->query($query, $binds);
110
  }
111
+ }
app/code/local/Unbxd/{Recommendation → Recscore}/controllers/Adminhtml/IndexController.php RENAMED
@@ -2,10 +2,10 @@
2
 
3
  /**
4
  * @category Unbxd
5
- * @package Unbxd_Recommendation
6
  * @author Unbxd Software Pvt. Ltd {
7
  */
8
- class Unbxd_Recommendation_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action {
9
 
10
  /**
11
  * @return void
@@ -15,4 +15,4 @@ class Unbxd_Recommendation_Adminhtml_IndexController extends Mage_Adminhtml_Cont
15
  $this->renderLayout();
16
  }
17
  }
18
- ?>
2
 
3
  /**
4
  * @category Unbxd
5
+ * @package Unbxd_Recscore
6
  * @author Unbxd Software Pvt. Ltd {
7
  */
8
+ class Unbxd_Recscore_Adminhtml_IndexController extends Mage_Adminhtml_Controller_Action {
9
 
10
  /**
11
  * @return void
15
  $this->renderLayout();
16
  }
17
  }
18
+ ?>
app/code/local/Unbxd/Recscore/controllers/CatalogController.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * @category Unbxd
5
+ * @package Unbxd_Recscore
6
+ * @author Unbxd Software Pvt. Ltd
7
+ */
8
+ class Unbxd_Recscore_CatalogController extends Mage_Core_Controller_Front_Action {
9
+
10
+ /**
11
+ * Recscore
12
+ * @return Unbxd_Recscore_Helper_Confighelper
13
+ */
14
+ protected function _helper() {
15
+ return Mage::helper("unbxd_recscore/confighelper");
16
+ }
17
+
18
+ protected function _getRawBody($request) {
19
+ $requestBody = json_decode($request->getRawBody(), true);
20
+ if(0 != strpos($request->getHeader('Content-Type'), 'application/json') || $requestBody === false) {
21
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
22
+ $this->getResponse()->setBody(json_encode(array('success' => false,
23
+ 'errors' => array('message' => 'Invalid Request'))));
24
+ return null;
25
+ }
26
+ return $requestBody;
27
+ }
28
+
29
+ /**
30
+ * @param $websiteName
31
+ * @return mixed
32
+ */
33
+ protected function _getWebsiteByName($websiteName)
34
+ {
35
+ return Mage::getResourceModel('core/website_collection')
36
+ ->addFieldToFilter('name', $websiteName)
37
+ ->getFirstItem();
38
+ }
39
+
40
+ protected function _prepare() {
41
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
42
+ if(array_key_exists("site", $_REQUEST)) {
43
+ $website = $this->_getWebsiteByName($_REQUEST["site"]);
44
+ }
45
+
46
+ if(!isset($website) || !$website->hasData("website_id")) {
47
+ Mage::helper('unbxd_recscore')->log(Zend_Log::DEBUG,'api failed because of invalid website');
48
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid site'))));
49
+ return null;
50
+ }
51
+ return $website;
52
+ }
53
+
54
+ /**
55
+ * @return void
56
+ */
57
+ public function filterAction() {
58
+ $website = $this->_prepare();
59
+ if (is_null($website)) {
60
+ return;
61
+ }
62
+
63
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
64
+ $filters = Mage::getResourceModel('unbxd_recscore/config')->getFilters($website);
65
+ $this->getResponse()->setBody(json_encode(array('success' => true,
66
+ 'filters' => $filters)));
67
+ } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
68
+ $request = $this->getRequest();
69
+ $requestBody = $this->_getRawBody($request);
70
+ $filterValues = array();
71
+ foreach($requestBody as $key=>$value) {
72
+ $filterValues[] = $key . Unbxd_Recscore_Model_Config::FILTER_DELIMITER . $value;
73
+ }
74
+ Mage ::getResourceModel('unbxd_recscore/config')->updateValues($website->getWebsiteId(),
75
+ Unbxd_Recscore_Model_Config::FILTER, $filterValues);
76
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
77
+ } else {
78
+ Mage::helper('unbxd_recscore')
79
+ ->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
80
+ $this->getResponse()->setBody(json_encode(array('success' => false,
81
+ 'errors' => array('message' => 'Invalid method'))));
82
+ }
83
+ }
84
+ }
app/code/local/Unbxd/Recscore/controllers/ConfigController.php ADDED
@@ -0,0 +1,535 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * controller that provides all the config
5
+ * @category Unbxd
6
+ * @package Unbxd_Recscore
7
+ * @author Unbxd Software Pvt. Ltd
8
+ */
9
+ class Unbxd_Recscore_ConfigController extends Mage_Core_Controller_Front_Action {
10
+
11
+ /**
12
+ * Recscore
13
+ * @return Unbxd_Recscore_Helper_Confighelper
14
+ */
15
+ protected function _helper() {
16
+ return Mage::helper("unbxd_recscore/confighelper");
17
+ }
18
+
19
+ protected function _getRawBody($request)
20
+ {
21
+ $requestBody = json_decode($request->getRawBody(), true);
22
+ if (0 != strpos($request->getHeader('Content-Type'), 'application/json') || $requestBody === false) {
23
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
24
+ $this->getResponse()->setBody(json_encode(array('success' => false,
25
+ 'errors' => array('message' => 'Invalid Request'))));
26
+ return null;
27
+ }
28
+ return $requestBody;
29
+ }
30
+
31
+ /**
32
+ * @return void
33
+ */
34
+ public function filterAction() {
35
+ $website = $this->_prepare();
36
+ if (is_null($website)) {
37
+ return;
38
+ }
39
+
40
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
41
+ Mage::getResourceModel('unbxd_recscore/config')->getValues($website->getWebsiteId(),
42
+ Unbxd_Recscore_Helper_Constants::FILTER);
43
+ } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
44
+
45
+ } else {
46
+ $this->_helper()
47
+ ->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
48
+ $this->getResponse()->setBody(json_encode(array('success' => false,
49
+ 'errors' => array('message' => 'Invalid method'))));
50
+ }
51
+ }
52
+
53
+
54
+ protected function _getFields($request) {
55
+ $requestBody = $this->_getRawBody($request);
56
+ if(is_null($requestBody)) {
57
+ return null;
58
+ }
59
+ if(!array_key_exists("fields", $requestBody)) {
60
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
61
+ $this->getResponse()->setBody(json_encode(array('success' => false,
62
+ 'errors' => array('message' => 'Invalid Request'))));
63
+ return null;
64
+ }
65
+ return $requestBody["fields"];
66
+ }
67
+
68
+ /**
69
+ * @param $websiteName
70
+ * @return mixed
71
+ */
72
+ protected function _getWebsiteByName($websiteName)
73
+ {
74
+ return Mage::getResourceModel('core/website_collection')
75
+ ->addFieldToFilter('name', $websiteName)
76
+ ->getFirstItem();
77
+ }
78
+
79
+ protected function _prepare() {
80
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
81
+ if(array_key_exists("site", $_REQUEST)) {
82
+ $website = $this->_getWebsiteByName($_REQUEST["site"]);
83
+ }
84
+
85
+ if(!isset($website) || !$website->hasData("website_id")) {
86
+ $this->_helper()->log(Zend_Log::DEBUG,'api failed because of invalid website');
87
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid site'))));
88
+ return null;
89
+ }
90
+ return $website;
91
+ }
92
+
93
+ public function editAction(){
94
+ $this->loadLayout();
95
+ $this->renderLayout();
96
+ }
97
+
98
+ /**
99
+ * api to return the sites
100
+ * @return void
101
+ */
102
+ public function siteAction()
103
+ {
104
+ $websites = Mage::app()->getWebsites();
105
+ $sites = array();
106
+ foreach ($websites as $website) {
107
+ $sites[] = array('name' => $website->getName(),
108
+ 'id' => $website->getId(),
109
+ 'numDocs' => $this->_helper()->getNumberOfDocsInUnbxd($website));
110
+ }
111
+ $response = array('sites' => $sites);
112
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
113
+ $this->getResponse()->setBody(json_encode($response));
114
+ }
115
+
116
+ /**
117
+ * Method to get the fields
118
+ * @return void
119
+ */
120
+ public function fieldsAction() {
121
+ $request = $this->getRequest();
122
+ if(array_key_exists("site", $_REQUEST)) {
123
+ $website = $this->_getWebsiteByName($_GET["site"]);
124
+ }
125
+ if(!isset($website) || !$website->hasData("website_id")) {
126
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
127
+ $this->getResponse()->setBody(json_encode(array('success' => false,
128
+ 'errors' => array('message' => 'Invalid site'))));
129
+ return;
130
+ }
131
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
132
+ $mappedFields = Mage::getResourceModel('unbxd_recscore/field')->getDisplayableFields($website)
133
+ ->__asArray();
134
+ $featureFields = Unbxd_Recscore_Model_Field::$displayableFeatureFields;
135
+ foreach($mappedFields as $fields) {
136
+ if(array_key_exists(Unbxd_Recscore_Model_Field::featured_field, $fields) &&
137
+ in_array($fields[Unbxd_Recscore_Model_Field::featured_field], $featureFields)) {
138
+ unset($featureFields[array_search($fields[Unbxd_Recscore_Model_Field::featured_field],
139
+ $featureFields)]);
140
+ }
141
+ }
142
+
143
+ foreach($featureFields as $field) {
144
+ $mappedFields[] = array(Unbxd_Recscore_Model_Field::featured_field => $field,
145
+ Unbxd_Recscore_Model_Field::datatype => 'text',
146
+ Unbxd_Recscore_Model_Field::autosuggest => 1);
147
+ }
148
+
149
+ $fields = $this->_helper()->getAllAttributes();
150
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
151
+ $this->getResponse()->setBody(json_encode(array('success' => true,
152
+ 'mappedFields' => $mappedFields, 'fields' => $fields,
153
+ 'datatype' => Unbxd_Recscore_Model_Field::$data_types)));
154
+ } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
155
+ $fields = $this->_getFields($request);
156
+ if($fields == null ) {
157
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
158
+ $this->getResponse()->setBody(json_encode(array('success' => false,
159
+ 'errors' => array('message' => 'Invalid Request'))));
160
+ return;
161
+ }
162
+ //request for adding fields
163
+ $response = $this->_helper()->saveFields($fields, $website);
164
+ if(is_array($response)) {
165
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
166
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response)));
167
+ return;
168
+ }
169
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
170
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
171
+ return;
172
+ } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::PUT) {
173
+ $fields = $this->_getFields($request);
174
+ if($fields == null ) {
175
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
176
+ $this->getResponse()->setBody(json_encode(array('success' => false,
177
+ 'errors' => array('message' => 'Invalid Request'))));
178
+ return;
179
+
180
+ }
181
+
182
+
183
+ // request for deleting fields
184
+ $response = $this->_helper()->deleteFields($this->_getFields($request), $website);
185
+ if(is_array($response)) {
186
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
187
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response)));
188
+ return;
189
+ }
190
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
191
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
192
+ return;
193
+ } else {
194
+ $this->getResponse()->clearHeaders()->setHeader('Content-type', 'application/json', true);
195
+ $this->getResponse()->setBody(json_encode(array('success' => false,
196
+ 'errors' => array('message' => 'Invalid method'))));
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Api to get the analytics impressions
202
+ *
203
+ * @return void
204
+ */
205
+ public function analyticsimpressionAction() {
206
+ $website = $this->_prepare();
207
+ if(is_null($website)){
208
+ return;
209
+ }
210
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
211
+
212
+ $analyticsResponse = Mage::getModel("unbxd_recscore/api_task_analyticsimpression")
213
+ ->prepare($website)
214
+ ->process();
215
+ if(!$analyticsResponse->isSuccess()) {
216
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $analyticsResponse->getErrors())));
217
+ return;
218
+ }
219
+
220
+ $searchResponse = Mage::getSingleton('unbxd_recscore/api_task_searchimpression')
221
+ ->prepare($website)
222
+ ->process();
223
+ if(!$searchResponse->isSuccess()) {
224
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $searchResponse->getErrors())));
225
+ return;
226
+ }
227
+ $response = $analyticsResponse->getResponse();
228
+ $searhitResponseObj = $searchResponse->getResponse();
229
+ $funnels = $searhitResponseObj["FunnelResponse"]["Funnels"];
230
+ $searchCount = 0;
231
+ $searchClicks = 0;
232
+ foreach($funnels as $funnel) {
233
+ if(array_key_exists("type", $funnel) && $funnel["type"] == "hits" && array_key_exists("searchCount",$funnel)) {
234
+ $searchCount = $funnel["searchCount"];
235
+ }
236
+ if(array_key_exists("type", $funnel) && $funnel["type"] == "clicks" && array_key_exists("searchCount",$funnel)) {
237
+ $searchClicks = $funnel["searchCount"];
238
+ }
239
+ }
240
+ $response["searchCount"] = $searchCount;
241
+ $response["searchClicks"] = $searchClicks;
242
+ $this->getResponse()->setBody(json_encode(array('success' => true) + $response));
243
+ } else {
244
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => array('Invalid method'))));
245
+ }
246
+
247
+ }
248
+
249
+ /**
250
+ * Method to get keys
251
+ * @return void
252
+ */
253
+ public function keysAction() {
254
+ $request = $this->getRequest();
255
+ $website = $this->_prepare();
256
+ if(is_null($website)) {
257
+ return;
258
+ }
259
+
260
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
261
+ $secretKey = Mage::getResourceModel("unbxd_recscore/config")
262
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SECRET_KEY);
263
+ $siteKey = Mage::getResourceModel("unbxd_recscore/config")
264
+ ->getValue($website->getWebsiteId(), Unbxd_Recscore_Helper_Constants::SITE_KEY);
265
+ $errors = array();
266
+ if(is_null($secretKey)) {
267
+ $errors[Unbxd_Recscore_Helper_Constants::SECRET_KEY] = "secret key not set";
268
+ }
269
+ if(is_null($siteKey)) {
270
+ $errors[Unbxd_Recscore_Helper_Constants::SITE_KEY] = "site key not set";
271
+ }
272
+ if(sizeof($errors) > 0) {
273
+ $this->_helper()
274
+ ->log(Zend_Log::DEBUG,'save keys api failed because ' . json_encode($errors));
275
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $errors)));
276
+ return;
277
+ }
278
+ $this->getResponse()->setBody(json_encode(array('success' => true,
279
+ Unbxd_Recscore_Helper_Constants::SECRET_KEY => $secretKey,
280
+ Unbxd_Recscore_Helper_Constants::SITE_KEY => $siteKey)));
281
+ return;
282
+ } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
283
+ $requestBody = $request->getRawBody();
284
+ $errors = $this->_helper()->validateAndSaveKeys($website, $requestBody);
285
+ if(sizeof($errors)>0) {
286
+ $this->_helper()
287
+ ->log(Zend_Log::DEBUG, 'save keys api failed because of ' . json_encode($errors));
288
+ $this->getResponse()->setBody(json_encode(array('success' => false,
289
+ 'errors' => $errors)));
290
+ return;
291
+ }
292
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
293
+ } else {
294
+ $this->_helper()
295
+ ->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
296
+ $this->getResponse()->setBody(json_encode(array('success' => false,
297
+ 'errors' => array('message' => 'Invalid method'))));
298
+ return;
299
+ }
300
+ }
301
+
302
+
303
+
304
+ public function dimensionmapAction()
305
+ {
306
+ $website = $this->_prepare();
307
+ if (is_null($website)) {
308
+ return;
309
+ }
310
+ if ($this->getRequest()->getMethod() == Zend_Http_Client::POST) {
311
+ $response = $this->_helper()->updateFeatureFields($website);
312
+ if(is_array($response)) {
313
+ $this->getResponse()->setBody(json_encode(array('success' => false, $response)));
314
+ return;
315
+ }
316
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
317
+ return;
318
+ } else {
319
+ $this->_helper()
320
+ ->log(Zend_Log::DEBUG, 'keys api failed because of invalid method');
321
+ $this->getResponse()->setBody(json_encode(array('success' => false,
322
+ 'errors' => array('message' => 'Invalid method'))));
323
+
324
+ }
325
+ }
326
+
327
+ public function downloadAction() {
328
+ $filepath = Mage::getBaseDir('log').DS.Unbxd_Recscore_Helper_Data::LOG_FILE;
329
+
330
+ if (! is_file ( $filepath ) || ! is_readable ( $filepath )) {
331
+ throw new Exception ( );
332
+ }
333
+ $this->getResponse ()
334
+ ->setHttpResponseCode ( 200 )
335
+ ->setHeader ( 'Cache-Control', 'must-revalidate, post-check=0, pre-check=0', true )
336
+ ->setHeader ( 'Pragma', 'public', true )
337
+ ->setHeader ( 'Content-type', 'application/force-download' )
338
+ ->setHeader ( 'Content-Length', filesize($filepath) )
339
+ ->setHeader ('Content-Disposition', 'attachment' . '; filename=' . basename($filepath) );
340
+ $this->getResponse ()->clearBody ();
341
+ $this->getResponse ()->sendHeaders ();
342
+ readfile ( $filepath );
343
+ return;
344
+ }
345
+
346
+ public function feeddetailsAction() {
347
+ $website = $this->_prepare();
348
+ if (is_null($website)) {
349
+ return;
350
+ }
351
+
352
+ $this->getResponse()
353
+ ->setBody(json_encode(array('success' => true,
354
+ 'numDocs' => $this->_helper()->getNumberOfDocsInUnbxd($website))));
355
+ return;
356
+ }
357
+
358
+ public function productsyncAction(){
359
+ $website = $this->_prepare();
360
+ if (is_null($website)) {
361
+ return;
362
+ }
363
+ ignore_user_abort(true);
364
+ set_time_limit(0);
365
+ $isFullUpload = true;
366
+ $feedMgr = Mage::getSingleton('unbxd_recscore/feed_feedmanager');
367
+ if(array_key_exists('incremental', $_REQUEST)) {
368
+ $isFullUpload = false;
369
+ }
370
+
371
+ $response = $feedMgr->process($isFullUpload, $website);
372
+ $this->getResponse()->setBody(json_encode($response));
373
+ return;
374
+ }
375
+
376
+
377
+ public function unlockfeedAction() {
378
+ $website = $this->_prepare();
379
+ if (is_null($website)) {
380
+ return;
381
+ }
382
+ Mage::getResourceModel('unbxd_recscore/config')->unLockSite($website->getWebsiteId());
383
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
384
+ }
385
+
386
+ public function cronAction() {
387
+ $website = $this->_prepare();
388
+ if (is_null($website)) {
389
+ return;
390
+ }
391
+ $isCronEnabled = Mage::getResourceSingleton('unbxd_recscore/config')->getValue($website->getWebsiteId(),
392
+ Unbxd_Recscore_Helper_Constants::IS_CRON_ENABLED);
393
+ if(is_null($isCronEnabled)) {
394
+ $this->getResponse()->setBody(json_encode(array('success' => true, 'cron_enabled' => false)));
395
+ }
396
+ $this->getResponse()->setBody(json_encode(array('success' => true, 'cron_enabled' => true)));
397
+ }
398
+
399
+ public function supportmailAction() {
400
+ $website = $this->_prepare();
401
+ if (is_null($website)) {
402
+ return;
403
+ }
404
+
405
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
406
+ $request = $this->getRequest();
407
+ $requestBody = $this->_getRawBody($request);
408
+ if(!array_key_exists(Unbxd_Recscore_Helper_Constants::CC, $requestBody) ||
409
+ !array_key_exists(Unbxd_Recscore_Helper_Constants::SUBJECT, $requestBody) ||
410
+ !array_key_exists(Unbxd_Recscore_Helper_Constants::CONTENT, $requestBody)) {
411
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'message' => 'Invalid parameters')));
412
+ return;
413
+ }
414
+ Mage::getModel('unbxd_recscore/api_task_supportmail')
415
+ ->setSubject($requestBody[Unbxd_Recscore_Helper_Constants::SUBJECT])
416
+ ->setCc($requestBody[Unbxd_Recscore_Helper_Constants::CC])
417
+ ->setContent($requestBody[Unbxd_Recscore_Helper_Constants::CONTENT])
418
+ ->prepare($website)
419
+ ->process();
420
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
421
+ } else {
422
+ $this->getResponse()->setBody(json_encode(array('success' => false,
423
+ 'errors' => array('message' => 'Invalid method'))));
424
+ }
425
+ }
426
+
427
+ /**
428
+ * @return void
429
+ */
430
+ public function globalAction() {
431
+ $website = $this->_prepare();
432
+ if (is_null($website)) {
433
+ return;
434
+ }
435
+
436
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
437
+ $keys = $this->getRequest()->getParam('key');
438
+ if(isset($keys) && $keys != '') {
439
+ $keys = explode(',', $keys);
440
+ $configs = array();
441
+ foreach($keys as $key) {
442
+ $value = $this->_helper()->getEngineConfigData($key, $website, true);
443
+ if(is_array($value)) {
444
+ $configs = $configs + $value;
445
+ }
446
+ }
447
+ $this->getResponse()->setBody(json_encode(array('success' => true, 'config' => $configs)));
448
+ } else {
449
+ $this->getResponse()->setBody(json_encode(array('success' => false,
450
+ 'errors' => array('message' => 'Invalid input'))));
451
+ }
452
+
453
+
454
+ } else if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::POST) {
455
+ $request = $this->getRequest();
456
+ $requestBody = $this->_getRawBody($request);
457
+ if(!is_array($requestBody)) {
458
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'message' => 'Invalid input')));
459
+ return;
460
+ }
461
+ foreach($requestBody as $field=>$value) {
462
+ if(!is_null($this->_helper()->isConfigSaveAllowed($website, $field, $value))){
463
+ $this->getResponse()->setBody(json_encode(array('success' => false, $field => $this->_helper()->isConfigSaveAllowed($website, $field, $value))));
464
+ return;
465
+ }
466
+ }
467
+ $this->_helper()->saveConfig($website, $requestBody);
468
+ Mage::app()->getCacheInstance()->invalidateType('config');
469
+ $this->getResponse()->setBody(json_encode(array('success' => true)));
470
+ } else {
471
+ $this->getResponse()->setBody(json_encode(array('success' => false,
472
+ 'errors' => array('message' => 'Invalid method'))));
473
+ }
474
+ }
475
+
476
+ /**
477
+ *
478
+ * @return void
479
+ */
480
+ public function searchimpressionAction() {
481
+ $website = $this->_prepare();
482
+ if (is_null($website)) {
483
+ return;
484
+ }
485
+
486
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
487
+ $response = Mage::getSingleton('unbxd_recscore/api_task_searchimpression')
488
+ ->prepare($website)
489
+ ->process();
490
+ if(!$response->isSuccess()) {
491
+ $this->getResponse()->setBody(json_encode(array('success' => false, 'errors' => $response->getErrors())));
492
+ return;
493
+ }
494
+ $this->getResponse()->setBody(json_encode(array('success' => true, 'funnel' => $response->getResponse())));
495
+ } else {
496
+ $this->getResponse()->setBody(json_encode(array('success' => false,
497
+ 'errors' => array('message' => 'Invalid method'))));
498
+ }
499
+ }
500
+
501
+ public function feedstatusAction() {
502
+ $website = $this->_prepare();
503
+ if (is_null($website)) {
504
+ return;
505
+ }
506
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
507
+ $response = Mage::getResourceSingleton("unbxd_recscore/config")->getValue($website->getWebsiteId(),
508
+ array(Unbxd_Recscore_Model_Config::LAST_UPLOAD_TIME,
509
+ Unbxd_Recscore_Model_Config::FEED_STATUS));
510
+ if(!array_key_exists(Unbxd_Recscore_Model_Config::LAST_UPLOAD_TIME, $response)) {
511
+ $response[Unbxd_Recscore_Model_Config::LAST_UPLOAD_TIME] = null;
512
+ $response[Unbxd_Recscore_Model_Config::FEED_STATUS] = 'NOT UPLOADED';
513
+ }
514
+ $this->getResponse()->setBody(json_encode(array('success' => true) + $response));
515
+ } else {
516
+ $this->getResponse()->setBody(json_encode(array('success' => false,
517
+ 'errors' => array('message' => 'Invalid method'))));
518
+ }
519
+
520
+ }
521
+
522
+ public function stateAction() {
523
+ $website = $this->_prepare();
524
+ if (is_null($website)) {
525
+ return;
526
+ }
527
+ if($_SERVER['REQUEST_METHOD'] == Zend_Http_Client::GET) {
528
+ $response = Mage::getModel('unbxd_recscore/statemgr')->getAllStates($website);
529
+ $this->getResponse()->setBody(json_encode(array('success' => true) + $response));
530
+ } else {
531
+ $this->getResponse()->setBody(json_encode(array('success' => false,
532
+ 'errors' => array('message' => 'Invalid method'))));
533
+ }
534
+ }
535
+ }
app/code/local/Unbxd/{Recommendation → Recscore}/etc/adminhtml.xml RENAMED
@@ -1,9 +1,9 @@
1
  <?xml version="1.0"?>
2
  <config>
3
  <menu>
4
- <unbxd_recommendation translate="title" module="unbxd_recommendation">
5
  <title>Unbxd</title>
6
  <action>unbxdadmin/index</action>
7
- </unbxd_recommendation>
8
  </menu>
9
  </config>
1
  <?xml version="1.0"?>
2
  <config>
3
  <menu>
4
+ <unbxd translate="title" module="unbxd_recscore">
5
  <title>Unbxd</title>
6
  <action>unbxdadmin/index</action>
7
+ </unbxd>
8
  </menu>
9
  </config>
app/code/local/Unbxd/Recscore/etc/config.xml ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <config>
2
+ <modules>
3
+ <Unbxd_Recscore>
4
+ <version>1.0.19</version>
5
+ </Unbxd_Recscore>
6
+ </modules>
7
+ <admin>
8
+ <routers>
9
+ <unbxd_recscore_router>
10
+ <use>admin</use>
11
+ <args>
12
+ <module>Unbxd_Recscore_Adminhtml</module>
13
+ <frontName>unbxdadmin</frontName>
14
+ </args>
15
+ </unbxd_recscore_router>
16
+ </routers>
17
+ </admin>
18
+ <frontend>
19
+ <layout>
20
+ <updates>
21
+ <unbxd_recscore>
22
+ <file>unbxd/recscore.xml</file>
23
+ </unbxd_recscore>
24
+ </updates>
25
+ </layout>
26
+ <routers>
27
+ <unbxd_recscore>
28
+ <use>standard</use>
29
+ <args>
30
+ <module>Unbxd_Recscore</module>
31
+ <frontName>recscore</frontName>
32
+ </args>
33
+ </unbxd_recscore>
34
+ </routers>
35
+ </frontend>
36
+ <global>
37
+ <resources>
38
+ <unbxd_recscore_setup>
39
+ <setup>
40
+ <module>Unbxd_Recscore</module>
41
+ </setup>
42
+ </unbxd_recscore_setup>
43
+ </resources>
44
+ <helpers>
45
+ <unbxd_recscore>
46
+ <class>Unbxd_Recscore_Helper</class>
47
+ </unbxd_recscore>
48
+ </helpers>
49
+ <models>
50
+ <unbxd_recscore>
51
+ <class>Unbxd_Recscore_Model</class>
52
+ <resourceModel>unbxd_recscore_resource</resourceModel>
53
+ </unbxd_recscore>
54
+ <unbxd_recscore_resource>
55
+ <class>Unbxd_Recscore_Model_Resource</class>
56
+ <entities>
57
+ <config>
58
+ <table>unbxd_recommendation_conf</table>
59
+ </config>
60
+ <field>
61
+ <table>unbxd_field_conf</table>
62
+ </field>
63
+ <sync>
64
+ <table>unbxd_product_sync</table>
65
+ </sync>
66
+ </entities>
67
+ </unbxd_recscore_resource>
68
+ </models>
69
+ <blocks>
70
+ <unbxd_recscore>
71
+ <class>Unbxd_Recscore_Block</class>
72
+ </unbxd_recscore>
73
+ </blocks>
74
+ <events>
75
+ <controller_action_predispatch_unbxd_recscore>
76
+ <observers>
77
+ <unbxd_recscore_auth>
78
+ <type>singleton</type>
79
+ <class>unbxd_recscore/auth</class>
80
+ <method>authorize</method>
81
+ </unbxd_recscore_auth>
82
+ </observers>
83
+ </controller_action_predispatch_unbxd_recscore>
84
+ <checkout_cart_add_product_complete>
85
+ <observers>
86
+ <unbxd_recscore_cart_tracker>
87
+ <type>singleton</type>
88
+ <class>unbxd_recscore/observer</class>
89
+ <method>trackAddToCart</method>
90
+ </unbxd_recscore_cart_tracker>
91
+ </observers>
92
+ </checkout_cart_add_product_complete>
93
+ <sales_order_payment_place_end>
94
+ <observers>
95
+ <unbxd_recscore_order_tracker>
96
+ <type>singleton</type>
97
+ <class>unbxd_recscore/observer</class>
98
+ <method>trackOrder</method>
99
+ </unbxd_recscore_order_tracker>
100
+ </observers>
101
+ </sales_order_payment_place_end>
102
+ <catalog_product_delete_before>
103
+ <observers>
104
+ <unbxd_recscore_order_tracker>
105
+ <type>singleton</type>
106
+ <class>unbxd_recscore/observer</class>
107
+ <method>trackDelete</method>
108
+ </unbxd_recscore_order_tracker>
109
+ </observers>
110
+ </catalog_product_delete_before>
111
+ <catalog_product_delete_commit_after>
112
+ <observers>
113
+ <unbxd_recscore_order_tracker>
114
+ <type>singleton</type>
115
+ <class>unbxd_recscore/observer</class>
116
+ <method>trackDelete</method>
117
+ </unbxd_recscore_order_tracker>
118
+ </observers>
119
+ </catalog_product_delete_commit_after>
120
+ <cataloginventory_stock_item_save_commit_after>
121
+ <observers>
122
+ <unbxd_recscore_catalog_inventory_save>
123
+ <type>singleton</type>
124
+ <class>unbxd_recscore/observer</class>
125
+ <method>catalogInventorySave</method>
126
+ </unbxd_recscore_catalog_inventory_save>
127
+ </observers>
128
+ </cataloginventory_stock_item_save_commit_after>
129
+ <sales_order_item_cancel>
130
+ <observers>
131
+ <unbxd_recscore_order_cancel>
132
+ <type>singleton</type>
133
+ <class>unbxd_recscore/observer</class>
134
+ <method>catalogInventorySave</method>
135
+ </unbxd_recscore_order_cancel>
136
+ </observers>
137
+ </sales_order_item_cancel>
138
+ </events>
139
+ </global>
140
+ <adminhtml>
141
+ <layout>
142
+ <updates>
143
+ <unbxd_recscore>
144
+ <file>unbxd/recscore.xml</file>
145
+ </unbxd_recscore>
146
+ </updates>
147
+ </layout>
148
+ <acl>
149
+ <resources>
150
+ <admin>
151
+ <children>
152
+ <unbxd module="unbxd_recscore">
153
+ <title>Unbxd</title>
154
+ </unbxd>
155
+ </children>
156
+ </admin>
157
+ </resources>
158
+ </acl>
159
+ </adminhtml>
160
+ <crontab>
161
+ <jobs>
162
+ <unbxd_recscore_sync>
163
+ <schedule><cron_expr>0 1 * * *</cron_expr></schedule>
164
+ <run><model>unbxd_recscore/observer::syncFull</model></run>
165
+ </unbxd_recscore_sync>
166
+ <unbxd_recscore_incremental_cron>
167
+ <schedule><cron_expr>0 */1 * * *</cron_expr></schedule>
168
+ <run><model>unbxd_recscore/observer::syncIncremental</model></run>
169
+ </unbxd_recscore_incremental_cron>
170
+ </jobs>
171
+ </crontab>
172
+ <default>
173
+ <unbxd>
174
+ <general>
175
+ <price>final_price</price>
176
+ <productUrl>url_path</productUrl>
177
+ <max_feed_lock_feed>2</max_feed_lock_feed>
178
+ <include_out_of_stock>true</include_out_of_stock>
179
+ <include_child_product>false</include_child_product>
180
+ <field_conf>{}</field_conf>
181
+ <exclude_category>[]</exclude_category>
182
+ <tracker_url>http://tracker.unbxdapi.com/</tracker_url>
183
+ <platform_url>http://accounts.unbxdapi.com/admin/</platform_url>
184
+ <service_url>http://starwreck.unbxdapi.com/</service_url>
185
+ <feed_url>http://feed.unbxdapi.com/</feed_url>
186
+ </general>
187
+ </unbxd>
188
+ </default>
189
+ </config>
app/code/local/Unbxd/Recscore/sql/unbxd_recscore_setup/mysql4-install-1.0.0.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ $installer = $this;
5
+ /* @var $installer Mage_Recscore_Model_Resource_Setup */
6
+
7
+ $installer->startSetup();
8
+
9
+ $configTable = $installer->getTable('unbxd_recommendation_conf');
10
+ $fieldTable = $installer->getTable('unbxd_field_conf');
11
+ $productSyncTable = $installer->getTable('unbxd_product_sync');
12
+
13
+ $installer->run("
14
+
15
+ CREATE TABLE IF NOT EXISTS `{$fieldTable}` (
16
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
17
+ `website_id` tinyint(5) unsigned NOT NULL,
18
+ `field_name` varchar(100) NOT NULL DEFAULT '',
19
+ `datatype` varchar(20) NOT NULL DEFAULT '',
20
+ `autosuggest` tinyint(1) NOT NULL DEFAULT '0',
21
+ `featured_field` varchar(100) DEFAULT NULL,
22
+ `multivalued` tinyint(1) NOT NULL DEFAULT '0',
23
+ `displayed` tinyint(1) NOT NULL DEFAULT '1',
24
+ PRIMARY KEY (`id`),
25
+ UNIQUE KEY `website_id` (`website_id`,`field_name`)
26
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
27
+
28
+ CREATE TABLE IF NOT EXISTS `{$configTable}` (
29
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
30
+ `website_id` smallint(5) unsigned NOT NULL,
31
+ `key` varchar(50) NOT NULL DEFAULT '',
32
+ `value` varchar(50) DEFAULT NULL,
33
+ PRIMARY KEY (`id`)
34
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
35
+
36
+ CREATE TABLE IF NOT EXISTS `{$productSyncTable}` (
37
+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
38
+ `product_id` int(10) unsigned NOT NULL,
39
+ `website_id` smallint(5) unsigned NOT NULL,
40
+ `synced` tinyint(1) NOT NULL DEFAULT '0',
41
+ `updated_time` datetime DEFAULT NULL,
42
+ `sync_time` datetime DEFAULT NULL,
43
+ `operation` enum('ADD','DELETE') NOT NULL DEFAULT 'ADD',
44
+ PRIMARY KEY (`id`),
45
+ UNIQUE KEY `product_id` (`product_id`,`website_id`)
46
+ ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
47
+ ");
48
+
49
+ $websiteCollection = Mage::getModel('core/website')->getCollection()->load();
50
+ foreach($websiteCollection as $website) {
51
+ $websiteId = $website->getWebsiteId();
52
+ if(is_null($websiteId)) {
53
+ continue;
54
+ }
55
+ $fieldTable = Mage::getResourceModel('unbxd_recscore/field')->getTableName();
56
+ $insertQuery = "
57
+ INSERT INTO `{$fieldTable}` (`website_id`, `field_name`, `datatype`, `autosuggest`, `featured_field`, `multivalued`, `displayed`)
58
+ VALUES
59
+ ({$websiteId}, 'name', 'text', 1, 'title', 0, 1),
60
+ ({$websiteId}, 'final_price', 'decimal', 0, 'price', 0, 1),
61
+ ({$websiteId}, 'price', 'decimal', 0, NULL, 0, 1),".
62
+ (Mage::helper('unbxd_recscore/feedhelper')->isAttributePresent('brand')?"({$websiteId}, 'brand', 'text', 0, 'brand', 0, 1),":"").
63
+ (Mage::helper('unbxd_recscore/feedhelper')->isAttributePresent('color')?"({$websiteId}, 'color', 'text', 0, 'color', 1, 1),":"").
64
+ (Mage::helper('unbxd_recscore/feedhelper')->isAttributePresent('size')?"({$websiteId}, 'size', 'text', 0, 'size', 1, 1),":"").
65
+ "({$websiteId}, 'image', 'link', 0, 'imageUrl', 1, 1),
66
+ ({$websiteId}, 'url_path', 'link', 0, 'productUrl', 0, 1),
67
+ ({$websiteId}, 'gender', 'text', 0, 'gender', 0, 1),
68
+ ({$websiteId}, 'description', 'longText', 0, 'description', 0, 1),
69
+ ({$websiteId}, 'catlevel1Name', 'text', 0, 'catlevel1Name', 0, 0),
70
+ ({$websiteId}, 'catlevel2Name', 'text', 0, 'catlevel2Name', 0, 0),
71
+ ({$websiteId}, 'catlevel3Name', 'text', 0, 'catlevel3Name', 0, 0),
72
+ ({$websiteId}, 'catlevel4Name', 'text', 0, 'catlevel4Name', 0, 0),
73
+ ({$websiteId}, 'categoryLevel1', 'text', 0, NULL, 1, 0),
74
+ ({$websiteId}, 'categoryLevel2', 'text', 0, NULL, 1, 0),
75
+ ({$websiteId}, 'categoryLevel3', 'text', 0, NULL, 1, 0),
76
+ ({$websiteId}, 'categoryLevel4', 'text', 0, NULL, 1, 0),
77
+ ({$websiteId}, 'created_at', 'date', 0, NULL, 0, 1),
78
+ ({$websiteId}, 'availability', 'bool', 0, 'availability', 0, 0),
79
+ ({$websiteId}, 'status', 'number', 0, NULL, 0, 0),
80
+ ({$websiteId}, 'visibility', 'number', 0, NULL, 0, 0),
81
+ ({$websiteId}, 'qty', 'number', 0, NULL, 0, 0),
82
+ ({$websiteId}, 'categoryIds', 'longText', 0, NULL, 1, 0),
83
+ ({$websiteId}, 'category', 'text', 0, 'category', 1, 0),
84
+ ({$websiteId}, 'uniqueId', 'longText', 0, NULL, 0, 0),
85
+ ({$websiteId}, 'entity_id', 'longText', 0, NULL, 0, 0)
86
+ ON DUPLICATE KEY UPDATE `field_name`=`field_name`;";
87
+ $installer->run($insertQuery);
88
+ }
89
+ $installer->endSetup();
90
+ ?>
app/design/adminhtml/default/default/layout/unbxd/recommendation.xml DELETED
@@ -1,15 +0,0 @@
1
- <?xml version="1.0"?>
2
- <layout version="0.1.0">
3
- <unbxd_recommendation_router_index_index>
4
- <reference name="head">
5
- <action method="addJs"><name>unbxd/app.js</name></action>
6
- <action method="addCss"><name>unbxd/css/app.css</name></action>
7
- </reference>
8
- <reference name="menu">
9
- <action method="setActive"><menupath>unbxd_recommendation</menupath></action>
10
- </reference>
11
- <reference name="content">
12
- <block type="unbxd_recommendation/admin" name="unbxd.conf" template="unbxd/recommendation.phtml" />
13
- </reference>
14
- </unbxd_recommendation_router_index_index>
15
- </layout>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/layout/unbxd/recscore.xml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <unbxd_recscore_router_index_index>
4
+ <reference name="menu">
5
+ <action method="setActive"><menupath>unbxd_recommendation</menupath></action>
6
+ </reference>
7
+ <reference name="content">
8
+ <block type="core/template" name="unbxd.conf" template="unbxd/recommendation.phtml" />
9
+ </reference>
10
+ </unbxd_recscore_router_index_index>
11
+ </layout>
app/design/adminhtml/default/default/template/unbxd/recommendation.phtml CHANGED
@@ -1,157 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php $skinUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN,
2
  Mage::app()->getFrontController()->getRequest()->isSecure())."/adminhtml/default/default/";
3
  Mage::getBaseUrl()
4
  ?>
5
  <input type="hidden" id="skinUrl" value="<?php echo $skinUrl; ?>" >
6
 
 
7
  <script>
8
  try{
 
 
 
9
  window._unbxdSkinurl = "<?php echo $skinUrl; ?>"
10
  window._unbxdBaseurl = "<?php echo Mage::getUrl('',
11
  array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure())) ?>"
 
 
 
 
 
 
 
12
  }catch(e){
13
  console.warn(e);
14
  }
15
 
16
  </script>
17
 
18
- <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/bootstrap.css">
19
- <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/bootstrap-them.css">
20
- <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/chosen.css">
21
- <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/app.css">
22
- <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/css/unbxd-magento.css">
23
-
 
 
 
24
 
25
  <div id="container">
26
  </div>
27
-
28
- <script id='template' type='text/ractive'>
29
- <div class="unbxd-container height-100 parent">
30
-
31
- <div class="magent0-left-nav width-17 pull-left height-100 unbxd-left">
32
- <div class="middle-nav-magento-dropdown height-100 unbxd-top-strip mar-btm-20">
33
- <div class="middle-nav-text mar-btm-10 pad-btm-0" style="padding-top: 10px;">
34
- Choose Website
35
- </div>
36
-
37
- <div class="middle-nav-dropdown mar-top-5 no-radius">
38
- <div class="btn-group width-100 unbxd-border" >
39
- <select decorator='chosen:site' value={{site}} name="unbxd-site" id="selectSites">
40
- {{#sites}}
41
- <option value="{{name}}">{{name}}</option>
42
- {{/sites}}
43
- </select>
44
- </div>
45
- </div>
46
- </div>
47
-
48
- <div class="middle-nav-magento unbxd-left">
49
- <ul class="magento-nav">
50
- <li on-click='showCredentials' class="clickable-btn
51
- {{#if _unbxdObject.activeStep.one}} magento-active{{/if}}">
52
- <a>Credentials</a>
53
- </li>
54
-
55
- <li on-click='showCatalog' class="clickable-btn
56
- {{#if _unbxdObject.activeStep.two}} magento-active{{/if}}">
57
- <a>Catalog</a>
58
- </li>
59
-
60
- <li on-click='showAnalytics' class="clickable-btn
61
- {{#if _unbxdObject.activeStep.three}} magento-active{{/if}}">
62
- <a>Analytics</a>
63
- </li>
64
-
65
- <li on-click='showWidgets' class="clickable-btn
66
- {{#if _unbxdObject.activeStep.four}} magento-active{{/if}}" >
67
- <a>Widgets</a>
68
- </li>
69
- </ul>
70
- </div>
71
-
72
- </div>
73
-
74
- <div class="unbxd-right-div pull-left width-82 unbxd-right">
75
- <div class="inner-container-magento row mar-0 top-185 pad-top-32 unbxd-top-strip">
76
- <div class="col-md-60 magento-row-tabs border-left-color pad-0 background-dark-grey unbxd-border ">
77
- <ul class="magento-conf-tabs">
78
- <li on-click='showCredentials'>
79
- <a class="magento-conf-tabs-enabled
80
- {{#if _unbxdObject.activeStep.one}}magento-head-active{{/if}} width-25 clickable-btn">
81
- <div class="magento-number" style="">
82
- 1
83
- </div>
84
- <div class="magento-number-text">
85
- Authenticate App
86
- </div> </a>
87
- </li>
88
- <li on-click='showCatalog'>
89
- <a class="magento-conf-tabs-enabled width-25 clickable-btn
90
- {{#if _unbxdObject.activeStep.two}}magento-head-active{{/if}}">
91
- <div class="magento-number">
92
- 2
93
- </div>
94
- <div class="magento-number-text">
95
- Catalog Configuration
96
- </div> </a>
97
- </li>
98
- <li on-click='showAnalytics'>
99
- <a class="magento-conf-tabs-enabled width-25 clickable-btn
100
- {{#if _unbxdObject.activeStep.three}}magento-head-active{{/if}}">
101
- <div class="magento-number">
102
- 3
103
- </div>
104
- <div class="magento-number-text">
105
- Analytics integration
106
- </div> </a>
107
- </li>
108
- <li on-click='showWidgets'>
109
- <a class="magento-conf-tabs-enabled width-25 clickable-btn
110
- {{#if _unbxdObject.activeStep.four}}magento-head-active{{/if}}" style="background-image:none;">
111
- <div class="magento-number">
112
- 4
113
- </div>
114
- <div class="magento-number-text width-188">
115
- Install Recommendation Widget
116
- </div> </a>
117
- </li>
118
- </ul>
119
- </div>
120
- </div>
121
-
122
- <div id="innerContainr" class="inner-container-magento pad-btm-100 pad-top-20">
123
- </div>
124
- </div>
125
- </div>
126
- </script>
127
 
128
- <script id='tab1Template' type='text/ractive'>
129
- </script>
130
-
131
- <script id='tab2Template' type='text/ractive'>
132
- </script>
133
-
134
- <script id='tab3Template' type='text/ractive'>
135
- </script>
136
-
137
- <script id='tab4Template' type='text/ractive'>
138
- </script>
139
-
140
- <script id='rowTemplate' type='text/ractive'>
141
- </script>
142
-
143
-
144
- <script src= "<?php echo Mage::getBaseUrl('js',
145
- array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure())).'/unbxd/jquery.js' ?>"></script>
146
- <script src="<?php echo $skinUrl; ?>unbxd/js/lib/chosen.js"></script>
147
- <script type="<?php echo $skinUrl; ?>text/javascript">
148
- jQuery.noConflict();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  </script>
150
- <script src="<?php echo $skinUrl; ?>unbxd/js/lib/ractive.js"></script>
151
- <script src="<?php echo $skinUrl; ?>unbxd/js/lib/ractive-chosen.js"></script>
152
- <script src="<?php echo $skinUrl; ?>unbxd/js/lib/bootstrap-tooltip.js"></script>
153
 
154
- <script src="<?php echo $skinUrl; ?>unbxd/js/app.js"></script>
155
-
156
-
157
 
1
+ <?php
2
+ $searchModuleEnabled = Mage::helper('core')->isModuleEnabled('Unbxd_Searchcore');
3
+ $unbxdSearchenabled=false;
4
+ if($searchModuleEnabled) {
5
+ $unbxdSearchenabled=true;
6
+ } else {
7
+ $unbxdSearchenabled=false;
8
+ }
9
+
10
+ $unbxdSearch=false;
11
+ $unbxdRecs=false;
12
+ if(!Mage::helper("unbxd_recscore")->isExecutable()) {
13
+ $unbxdSearch = true;
14
+ } else {
15
+ $unbxdRecs = true;
16
+ }
17
+ ?>
18
+ <input type="hidden" id="auth" value="<?php echo Mage::getModel('unbxd_recscore/auth')->getAuthKey(); ?>">
19
  <?php $skinUrl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN,
20
  Mage::app()->getFrontController()->getRequest()->isSecure())."/adminhtml/default/default/";
21
  Mage::getBaseUrl()
22
  ?>
23
  <input type="hidden" id="skinUrl" value="<?php echo $skinUrl; ?>" >
24
 
25
+ <script src="//localhost:35729/livereload.js"></script>
26
  <script>
27
  try{
28
+ window._unbxdConfigs = {};
29
+ _unbxdConfigs.unbxdSearchenabled = "<?php echo $unbxdSearchenabled; ?>"
30
+ _unbxdConfigs.unbxdRecsenabled = "1"
31
  window._unbxdSkinurl = "<?php echo $skinUrl; ?>"
32
  window._unbxdBaseurl = "<?php echo Mage::getUrl('',
33
  array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure())) ?>"
34
+ window._unbxdRecs = "<?php echo $unbxdRecs; ?>"
35
+ window._unbxdSearch = "<?php echo $unbxdSearch; ?>"
36
+ if(_unbxdRecs){
37
+ _unbxdBaseurl = _unbxdBaseurl+ 'recscore';
38
+ }else if(_unbxdSearch){
39
+ _unbxdBaseurl = _unbxdBaseurl + 'searchcore';
40
+ }
41
  }catch(e){
42
  console.warn(e);
43
  }
44
 
45
  </script>
46
 
47
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/bootstrap.css">
48
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/bootstrap-them.css">
49
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/bootstrap-switch.css" >
50
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/chosen.css">
51
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/colpick.css">
52
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/app.css">
53
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/app1.css">
54
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/magento-app.css">
55
+ <link rel="stylesheet" href= "<?php echo $skinUrl; ?>unbxd/recscore/css/unbxd-magento.css">
56
 
57
  <div id="container">
58
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
+ <script>
61
+ var _unbxdLoadJquery = function( url, callback){
62
+
63
+ if( !window.jQuery || typeof window.jQuery === "undefined" || jQuery.fn.jquery < 1.7 ){
64
+
65
+ var script = document.createElement("script")
66
+ script.type = "text/javascript";
67
+
68
+ if (script.readyState){ //IE
69
+ script.onreadystatechange = function(){
70
+ if ( script.readyState == "loaded" || script.readyState == "complete" ){
71
+ script.onreadystatechange = null;
72
+ var library = jQuery.noConflict();
73
+ callback(library);
74
+ }
75
+ };
76
+ } else { //Others
77
+ script.onload = function(){
78
+ var library = jQuery.noConflict();
79
+ callback(library);
80
+ };
81
+ }
82
+
83
+ script.src = url;
84
+ document.getElementsByTagName("head")[0].appendChild(script);
85
+
86
+ }else{
87
+ callback( window.jQuery );
88
+ return false;
89
+ }
90
+
91
+
92
+ };
93
+ _unbxdLoadJquery("<?php echo Mage::getBaseUrl('js',
94
+ array('_secure' => Mage::app()->getFrontController()->getRequest()->isSecure())).'/unbxd/recscore/jquery.js' ?>", function($){
95
+ $.noConflict();
96
+
97
+ var script = document.createElement("script")
98
+ script.type = "text/javascript";
99
+ script.setAttribute('data-main', "<?php echo $skinUrl; ?>unbxd/recscore/js/main");
100
+ script.src = "<?php echo $skinUrl; ?>unbxd/recscore/js/lib/require.js";
101
+ document.getElementsByTagName("head")[0].appendChild(script);
102
+
103
+ });
104
  </script>
 
 
 
105
 
 
 
 
106
 
app/design/frontend/base/default/layout/unbxd/recommendation.xml DELETED
@@ -1,33 +0,0 @@
1
- <?xml version="1.0"?>
2
- <layout version="0.1.0">
3
- <!-- ON ALL PAGES -->
4
- <default>
5
- <reference name="before_body_end">
6
- <block name="unbxd.tracking" template="unbxd/tracker.phtml" after="-" type="core/template"/>
7
- </reference>
8
- </default>
9
- <!-- CATEGORY PAGE -->
10
- <catalog_category_default>
11
- <reference name="before_body_end">
12
- <block name="unbxd.analytics.categorytracking" template="unbxd/tracking/category.phtml" type="core/template"/>
13
- </reference>
14
- </catalog_category_default>
15
- <!-- PRODUCT PAGE -->
16
- <catalog_product_view>
17
- <reference name="before_body_end">
18
- <block name="unbxd.analytics.producttracking" template="unbxd/tracking/product.phtml" after="-" type="core/template"/>
19
- </reference>
20
- </catalog_product_view>
21
- <!-- ORDER PAGE -->
22
- <checkout_onepage_success>
23
- <reference name="before_body_end">
24
- <block name="unbxd.analytics.ordertracking" template="unbxd/tracking/order.phtml" type="core/template"/>
25
- </reference>
26
- </checkout_onepage_success>
27
- <!-- ADDTOCART PAGE -->
28
- <checkout_cart_index>
29
- <reference name="before_body_end">
30
- <block name="unbxd.analytics.ordertracking" template="unbxd/tracking/cart.phtml" type="core/template"/>
31
- </reference>
32
- </checkout_cart_index>
33
- </layout>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/base/default/layout/unbxd/recscore.xml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <!-- ON ALL PAGES -->
4
+ <default>
5
+ <reference name="before_body_end">
6
+ <block name="unbxd.recs.tracking" template="unbxd/recscore/tracker.phtml" after="-" type="core/template"/>
7
+ </reference>
8
+ </default>
9
+ <!-- PRODUCT PAGE -->
10
+ <catalog_product_view>
11
+ <reference name="before_body_end">
12
+ <block name="unbxd.recs.analytics.producttracking" template="unbxd/recscore/tracking/product.phtml" after="-" type="core/template"/>
13
+ </reference>
14
+ </catalog_product_view>
15
+ </layout>
app/design/frontend/base/default/template/unbxd/{tracker.phtml → recscore/tracker.phtml} RENAMED
@@ -1,11 +1,10 @@
 
1
  <input type="hidden" id="jQueryBaseUrl" value="<?php echo Mage::getBaseUrl('js',
2
  Mage::app()->getFrontController()->getRequest()->isSecure()) ?>unbxd/jquery.js"/>
3
  <script type="text/javascript">
4
  /* * * CONFIGURATION * * */
5
- var UnbxdSiteName = "<?php echo Mage::getResourceModel('unbxd_recommendation/config')
6
- ->getValue(Mage::app()->getWebsite()->getId(), Unbxd_Recommendation_Helper_Confighelper::SITE_KEY) ?>";
7
- var UnbxdApiKey = "<?php echo Mage::getResourceModel('unbxd_recommendation/config')
8
- ->getValue(Mage::app()->getWebsite()->getId(), Unbxd_Recommendation_Helper_Confighelper::API_KEY) ?>";
9
 
10
  <?php $category = Mage::registry("current_category");
11
  if (isset($category)) { ?>
@@ -24,24 +23,27 @@ if(typeof UnbxdWidgetsConf == 'undefined' || UnbxdWidgetsConf == null) {
24
  (function() {
25
  var ubx = document.createElement('script');
26
  ubx.type = 'text/javascript'; ubx.async = true;
27
- ubx.src = '//d21gpk1vhmjuf5.cloudfront.net/magentoAnalytics.js';
28
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ubx);
29
  })();
30
 
31
  (function() {
32
  var ubx = document.createElement('script');
33
  ubx.type = 'text/javascript'; ubx.async = true;
34
- ubx.src = '<?php echo Mage::getBaseUrl('js') ?>unbxd/embed.js';
35
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ubx);
36
  })();
37
 
38
  (function(){
39
  if(typeof Unbxd === 'undefined')
40
  Unbxd = {};
41
-
42
  Unbxd.getBaseUrl = function(){
43
  return "<?php echo Mage::getBaseUrl(); ?>";
44
  }
 
 
 
 
45
  })();
46
-
47
- </script>
1
+ <?php if(Mage::helper("unbxd_recscore")->isExecutable()) { ?>
2
  <input type="hidden" id="jQueryBaseUrl" value="<?php echo Mage::getBaseUrl('js',
3
  Mage::app()->getFrontController()->getRequest()->isSecure()) ?>unbxd/jquery.js"/>
4
  <script type="text/javascript">
5
  /* * * CONFIGURATION * * */
6
+ var UnbxdSiteName = "<?php echo Mage::helper('unbxd_recscore')->getSiteName(); ?>";
7
+ var UnbxdApiKey = "<?php echo Mage::helper('unbxd_recscore')->getApiKey(); ?>";
 
 
8
 
9
  <?php $category = Mage::registry("current_category");
10
  if (isset($category)) { ?>
23
  (function() {
24
  var ubx = document.createElement('script');
25
  ubx.type = 'text/javascript'; ubx.async = true;
26
+ ubx.src = '//d21gpk1vhmjuf5.cloudfront.net/unbxdAnalytics.js';
27
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ubx);
28
  })();
29
 
30
  (function() {
31
  var ubx = document.createElement('script');
32
  ubx.type = 'text/javascript'; ubx.async = true;
33
+ ubx.src = '//d21gpk1vhmjuf5.cloudfront.net/embed.js';
34
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ubx);
35
  })();
36
 
37
  (function(){
38
  if(typeof Unbxd === 'undefined')
39
  Unbxd = {};
 
40
  Unbxd.getBaseUrl = function(){
41
  return "<?php echo Mage::getBaseUrl(); ?>";
42
  }
43
+ <?php if(Mage::helper('core')->isModuleEnabled('Unbxd_Searchcore')) { ?>
44
+ jQuery('.search-button').attr('unbxdattr','sq_bt')
45
+ jQuery('#search'). attr("unbxdattr", "sq")
46
+ <?php } ?>
47
  })();
48
+ </script>
49
+ <?php } ?>
app/design/frontend/base/default/template/unbxd/recscore/tracking/product.phtml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php if(Mage::helper('unbxd_recscore')->isExecutable()) {?>
2
+ <script type="text/javascript">
3
+ <?php $product = Mage::registry('current_product'); ?>
4
+ var UnbxdWidgetsConf = {
5
+ currency : "<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>"
6
+ <?php if (isset($product)) { ?>
7
+ ,pid:"<?php echo Mage::helper('unbxd_recscore/feedhelper')->getUniqueId($product); ?>"
8
+ <?php } ?>
9
+
10
+ };
11
+ <?php if (isset($product)) { ?>
12
+ pid = "<?php echo Mage::helper('unbxd_recscore/feedhelper')->getUniqueId($product); ?>";
13
+ <?php } ?>
14
+ function triggerUnbxd() {
15
+ Unbxd.track("click", {"pid":pid, rank: "", box_type: ""});
16
+ }
17
+ if (window.addEventListener) {
18
+ window.addEventListener('load', triggerUnbxd, false);
19
+ } else {
20
+ window.attachEvent('onload', triggerUnbxd);
21
+ }
22
+ </script>
23
+ <?php } ?>
app/design/frontend/base/default/template/unbxd/tracking/cart.phtml DELETED
@@ -1 +0,0 @@
1
- <!-- UNBXD CART TRACKING -->
 
app/design/frontend/base/default/template/unbxd/tracking/category.phtml DELETED
@@ -1,14 +0,0 @@
1
- <!-- UNBXD CATEGORY PAGE -->
2
- <script type="text/javascript">
3
- <?php $category = Mage::registry("current_category");
4
- if (isset($category)) { ?>
5
- category = "<?php echo $category->getName(); ?>";
6
- <?php } ?>
7
- var UnbxdWidgetsConf = {
8
- currency : "<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>"
9
- <?php if (isset($category)) { ?>
10
- ,category:"<?php echo $category->getName(); ?>"
11
- <?php } ?>
12
-
13
- };
14
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/base/default/template/unbxd/tracking/order.phtml DELETED
@@ -1 +0,0 @@
1
- <!-- UNBXD ORDER TRACKING -->
 
app/design/frontend/base/default/template/unbxd/tracking/product.phtml DELETED
@@ -1,25 +0,0 @@
1
- <script type="text/javascript">
2
- <?php $product = Mage::registry('current_product'); ?>
3
- var UnbxdWidgetsConf = {
4
- currency : "<?php echo Mage::app()->getStore()->getCurrentCurrencyCode(); ?>"
5
- <?php if (isset($product)) { ?>
6
- ,pid:"<?php echo Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product); ?>"
7
- <?php } ?>
8
-
9
- };
10
- <?php if(isset($product)) {
11
- $pid = Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product);;
12
- } ?>
13
-
14
- if (window.addEventListener) {
15
- window.addEventListener('load',
16
- function(){Unbxd.track("click",
17
- {"pid":"<?php echo Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product); ?>",
18
- rank: "", box_type: ""})}, false);
19
- } else {
20
- window.attachEvent('onload',
21
- function(){Unbxd.track("click",
22
- {"pid":"<?php echo Mage::helper('unbxd_recommendation/feedhelper')->getUniqueId($product); ?>",
23
- rank: "", box_type: ""})});
24
- }
25
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/etc/modules/Unbxd_Recommendation.xml CHANGED
@@ -1,12 +1,12 @@
1
  <config>
2
  <modules>
3
- <Unbxd_Core>
4
  <active>true</active>
5
  <codePool>local</codePool>
6
- </Unbxd_Core>
7
  <Unbxd_Recommendation>
8
  <active>true</active>
9
  <codePool>local</codePool>
10
  </Unbxd_Recommendation>
11
  </modules>
12
- </config>
1
  <config>
2
  <modules>
3
+ <Unbxd_Recscore>
4
  <active>true</active>
5
  <codePool>local</codePool>
6
+ </Unbxd_Recscore>
7
  <Unbxd_Recommendation>
8
  <active>true</active>
9
  <codePool>local</codePool>
10
  </Unbxd_Recommendation>
11
  </modules>
12
+ </config>
js/unbxd/{app.js → recscore/app.js} RENAMED
File without changes
js/unbxd/{embed.js → recscore/embed.js} RENAMED
@@ -1,4 +1,7 @@
1
- var loadScript = function(library, url, callback){
 
 
 
2
  if( typeof window[library] !== "undefined"){
3
  callback(window[library]);
4
  return false;
@@ -6,7 +9,6 @@ var loadScript = function(library, url, callback){
6
 
7
  var script = document.createElement("script")
8
  script.type = "text/javascript";
9
-
10
  if (script.readyState){ //IE
11
  script.onreadystatechange = function(){
12
  if (script.readyState == "loaded" ||
@@ -20,13 +22,11 @@ var loadScript = function(library, url, callback){
20
  callback(window[library]);
21
  };
22
  }
23
-
24
  script.src = url;
25
  document.getElementsByTagName("head")[0].appendChild(script);
26
  };
27
 
28
- if (typeof Unbxd === "undefined")
29
- window.Unbxd = {};
30
  var widgetRendrer = function ($) {
31
  jQuery.noConflict();
32
  var key = function () {
@@ -101,11 +101,7 @@ var widgetRendrer = function ($) {
101
  path = appendCurrency(path);
102
  path = appendUid(path);
103
  path = path + "&screenWidth=" + getWidth();
104
- baseurl = document.location.origin;
105
- if(typeof Unbxd !== "undefined" && Unbxd.hasOwnProperty('getBaseUrl')) {
106
- baseurl = Unbxd.getBaseUrl();
107
- }
108
- urlpath = baseurl + 'unbxd/widget' + path;
109
  $.ajax({
110
  async:true,
111
  url: urlpath,
@@ -171,7 +167,10 @@ function unbxdOnLoad() {
171
  } else{
172
  jQueryBaseUrl = "//code.jquery.com/jquery-1.8.0.min.js";
173
  }
174
- loadScript('jQuery', jQueryBaseUrl, widgetRendrer)
175
  }
176
-
177
- unbxdOnLoad();
 
 
 
1
+ if (typeof Unbxd === "undefined")
2
+ window.Unbxd = {};
3
+
4
+ Unbxd.loadJScript = function(library, url, callback){
5
  if( typeof window[library] !== "undefined"){
6
  callback(window[library]);
7
  return false;
9
 
10
  var script = document.createElement("script")
11
  script.type = "text/javascript";
 
12
  if (script.readyState){ //IE
13
  script.onreadystatechange = function(){
14
  if (script.readyState == "loaded" ||
22
  callback(window[library]);
23
  };
24
  }
 
25
  script.src = url;
26
  document.getElementsByTagName("head")[0].appendChild(script);
27
  };
28
 
29
+
 
30
  var widgetRendrer = function ($) {
31
  jQuery.noConflict();
32
  var key = function () {
101
  path = appendCurrency(path);
102
  path = appendUid(path);
103
  path = path + "&screenWidth=" + getWidth();
104
+ urlpath = getBaseUrl() + 'unbxd/widget' + path;
 
 
 
 
105
  $.ajax({
106
  async:true,
107
  url: urlpath,
167
  } else{
168
  jQueryBaseUrl = "//code.jquery.com/jquery-1.8.0.min.js";
169
  }
170
+ Unbxd.loadJScript('jQuery', jQueryBaseUrl, widgetRendrer)
171
  }
172
+ if (window.addEventListener) {
173
+ window.addEventListener('load', unbxdOnLoad, false);
174
+ } else {
175
+ window.attachEvent('onload', unbxdOnLoad);
176
+ }
js/unbxd/{jquery.js → recscore/jquery.js} RENAMED
File without changes
js/unbxd/{unbxdAnalytics.js → recscore/unbxdAnalytics.js} RENAMED
File without changes
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>unbxd_recommendation</name>
4
- <version>1.0.18</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>helps integrating the unbxd recommender widgets</summary>
10
- <description>helps integrating the unbxd recommender widgets</description>
11
- <notes>feed lock</notes>
12
- <authors><author><name>ananthesh</name><user>ananthesh</user><email>ananthesh@unbxd.com</email></author></authors>
13
- <date>2015-03-03</date>
14
- <time>13:37:50</time>
15
- <contents><target name="magelocal"><dir name="Unbxd"><dir name="Recommendation"><dir name="Block"><file name="Admin.php" hash="82a902698e1b090d0e532905ed7f2d37"/><file name="Tracker.php" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="Helper"><file name="Confighelper.php" hash="8fc5f4943a0ae3cf92c30ccff9131bea"/><file name="Data.php" hash="74562d257ec4ef3add0fbd90ea51e671"/><file name="Feedhelper.php" hash="ba84484c3dacc8f4074ece9e5a0e8efb"/></dir><dir name="Model"><dir name="Api"><file name="Request.php" hash="98c92b643e28e750a8bb2e6a384733de"/><file name="Response.php" hash="448a7f48496babd313e4ac147405fea1"/><dir name="Task"><file name="Analyticsimpression.php" hash="cc65a5549dba4f6a0cc1b52d9a273b18"/><file name="Feeddetails.php" hash="60bc2c9f743d5ee9c3b5dce4dd8e2e0a"/><file name="Trackcart.php" hash="4e4ba196f66cbbd17abc7415ac312f7e"/><file name="Trackorder.php" hash="ba8204eb82fea24cc0b5e27cd5ab7936"/><file name="Triggerfeedupload.php" hash="4e1c645ae51d655be2ac7b1ad90b5fa6"/><file name="Updatefeaturefields.php" hash="112ce06194a30f53515846dc7c219ac0"/><file name="Validatekeys.php" hash="b4b0c1a945a9ec1d0adc534a7d2bc08f"/><file name="Widget.php" hash="e2b248692d8bca31389f4fc69438e1b7"/></dir><file name="Task.php" hash="d6b35467cd84fc99b9ea70ae55f2c727"/></dir><file name="Config.php" hash="ac5fbfd05c8b74ac466c1f2cf082dbf3"/><dir name="Feed"><file name="Feedcreator.php" hash="7bd33c4c3a7096bc52f3285b0692bbd4"/><file name="Feedmanager.php" hash="862a0701eebad5ee84b1a0ef9da98edc"/><file name="Filemanager.php" hash="9e3602428c8783c68f9bb951f52120ba"/><dir name="Jsonbuilder"><file name="Jsonbuilder.php" hash="31f422f3cf18f057e887c9f1812538a2"/><file name="Productbuilder.php" hash="2484f2495fd1cfd5f6fba031323fefea"/><file name="Schemabuilder.php" hash="b41389c9ffa08063d5559f05d2367238"/><file name="Taxonomybuilder.php" hash="f4829a5902d7320901efa33d0dfc9e81"/></dir><file name="Tags.php" hash="5ff3fb1dfb70f25026f153bb222537f0"/></dir><file name="Field.php" hash="7d344b852abd182df2f54ef73334eadf"/><file name="Observer.php" hash="e1490f1bbd7e886df2eb6617277d9788"/><dir name="Resource"><file name="Attribute.php" hash="bdd6026954b734430903f3fdb2a2f1e6"/><dir name="Config"><file name="Collection.php" hash="f50c88e3f7c10137ea9da5fc890218b5"/></dir><file name="Config.php" hash="b6ec11e9ec8edf89530540ed96ba6999"/><dir name="Field"><file name="Collection.php" hash="455d7a3e8fce1741c189c86ed5fc5e22"/></dir><file name="Field.php" hash="a36c44f5335d5db472c521e5fd97cbab"/><dir name="Product"><file name="Collection.php" hash="f9832a0720d40d0750381aa8dbb0d0d7"/></dir><dir name="Sync"><file name="Collection.php" hash="ffec2577fdbbb27a6d2070020f526e0e"/></dir><file name="Sync.php" hash="22eb150ac02456c9dec11895bc3fd7ba"/></dir><file name="Sync.php" hash="8ee52a3c55dd05ad53d84f05cc1635b5"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="560810e25071ac9f4b9835911a66a741"/></dir><file name="ConfigController.php" hash="b9a9380eb767bb9a043662edcc94fbcf"/><file name="WidgetController.php" hash="ea4697c1d659612681b9c01ec2803b4f"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8a9b714c7ccdff748ec0345861034658"/><file name="config.xml" hash="3ac3c49bdecf34070b22479e37837ec5"/></dir><dir name="sql"><dir name="unbxd_recommendation_setup"><file name="mysql4-install-1.0.0.php" hash="43e07764886f75274d3866d305c0daae"/><file name="upgrade-1.0.11-1.0.12.php" hash="5da17d19502bbfea056a0d4d20583b20"/><file name="upgrade-1.0.16-1.0.17.php" hash="23aba9e2568363125744c245d7cf6f23"/></dir></dir><file name=".DS_Store" hash="b4a356bd7741138b66aa79afcc4abd2f"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="recommendation.xml" hash="a2f03791a48c83fceee42822f19695f5"/></dir></dir><dir name="template"><dir name="unbxd"><file name="recommendation.phtml" hash="42d2370984e91190003c254f4c5332f5"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="unbxd"><file name="tracker.phtml" hash="fcc3a7975e2e3c92ea010a4d98e3fe97"/><dir name="tracking"><file name="cart.phtml" hash="1602ccd541917fdaa539b88b59e16933"/><file name="category.phtml" hash="59b245e277bf1bd171354893a624d922"/><file name="order.phtml" hash="3ddc154f41138d5f924bc415f8feeb9b"/><file name="product.phtml" hash="bb4ce6b658e11aa24a9b322befcd5353"/></dir></dir></dir><dir name="layout"><dir name="unbxd"><file name="recommendation.xml" hash="79b0ba853521b40bc26c6efc2e57282e"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="unbxd"><dir name="css"><file name="app.css" hash="d8be8236609ed4e422db6996cb866383"/><file name="bootstrap-them.css" hash="df854606e8bfb38abe58305c389301ae"/><file name="bootstrap.css" hash="59899c8b554b99637d119d3fe5f844de"/><file name="chosen.css" hash="50141f749f8ed2dd209682800618dca2"/><file name="unbxd-magento.css" hash="a5a0805eeba3db5f96910670bfc7b9bf"/></dir><dir name="img"><file name="Custom-platform.png" hash="d053db68b99519a2b0303624ab647f16"/><file name="DONE.png" hash="470356a4749d5fde1b86d9c0eeb9c806"/><file name="HEXAGON-Only.png" hash="f070ca957f922446f715555d94192298"/><file name="Magento-small.png" hash="0b80c21a5daa1669317095843590aa10"/><file name="Magento.png" hash="23b3159d445fe3fe5de7ea4a6d7f0271"/><file name="X-popup-hover.png" hash="41022fc34b63fc668477bcb991652577"/><file name="X-popup.png" hash="301b49b195fd8e9106eef93805182c11"/><file name="X-pricing.png" hash="ab7c15dacab6b4e13e19d9614741e9ef"/><file name="add-actv.png" hash="51bfeb67fce50aef4fe79ccea4e0d840"/><file name="add-icon.png" hash="46dea9858757fa584de457bfc421269f"/><file name="add-inactv.png" hash="164d79389bcd58d9d606871307d16e7e"/><file name="add-raw-hover.png" hash="591316d60847c12340d66cea0eb2ee97"/><file name="add-raw.png" hash="1fcdb060d898a7807bb37c796a772993"/><file name="add.png" hash="9a4026af014537b7d18032fd3a1bcb05"/><file name="arrow-2.png" hash="627be933821070bb0514ba331739cbdb"/><file name="arrow-calendar-down.png" hash="15a5f0cba1424dbc6d7f2069dca59a2a"/><file name="arrow-calendar-down1.png" hash="ed6aac9b4e114418f639ce874e75ed19"/><file name="arrow-down-disabled.jpg" hash="5b62a642490f264b58771e38e687eb19"/><file name="arrow-down-enabled.jpg" hash="4a0b2fafe44c58dd390d5eb0473c365e"/><file name="arrow-down-white.jpg" hash="edd441fe8c391969859dc72e5e95e83c"/><file name="arrow-down-white1.jpg" hash="6b7c7662f141a30635d408dad048dd54"/><file name="arrow-down-white2.jpg" hash="bd948050a2d7b0b6dfd7e349734df63b"/><file name="arrow-down.png" hash="379a11ee447d83e850a03581928acae8"/><file name="arrow-gray.png" hash="6e345006dfc2b0f1e52b8266c21bcbbc"/><file name="arrow-left-white.jpg" hash="36a0b2d5784c980a54edb3b874bc47c7"/><file name="arrow-left.jpg" hash="e22a795292c8bf95e62c86d7f5c3a149"/><file name="arrow-mail-developer).png" hash="a96ecd000175538c0dd0914395cf203d"/><file name="arrow-right-blue.png" hash="4ef79b5fc672c2a285b0c2ba5504f1e4"/><file name="arrow-right-gray.jpg" hash="5ac0235afe90023e26126134f151a2bd"/><file name="arrow-right-white.jpg" hash="9916e44542fbaa7a9e9b69f3551d321f"/><file name="arrow-right.jpg" hash="c2ad8f3435733f35a46fd8fdf29a9323"/><file name="arrow-up-black.png" hash="1e5a76b450fd32c3577078829d38ac58"/><file name="arrow-up-disabled.jpg" hash="6659a79f97099b525bd1b0713b99ad8b"/><file name="arrow-up-enabled.jpg" hash="4074eee100e01429ea4defed741b2ac2"/><file name="arrow-up-red.png" hash="84b29f0c6964c69ed6e78501123bfccf"/><file name="arrow-up-white.jpg" hash="38d5ec238c32cb7124fb6bc31ffe126e"/><file name="arrow-up-white1.jpg" hash="3221729d064ae198dff6effcc62e6a5e"/><file name="arrow-up.png" hash="6c54432350ad68d3345eb151d7534ae2"/><file name="arrow-white.png" hash="4b4e57f5b8d2b678df89b5a2dc85bba3"/><file name="arrow.png" hash="4b4e57f5b8d2b678df89b5a2dc85bba3"/><file name="authenticated.png" hash="78140247146f512d014be386a116a699"/><file name="back.png" hash="32b2ff86ee7ba8a1f19270a121f00205"/><file name="bg.jpg" hash="4a2f6fda25f44f7009e9a22ccf90e330"/><file name="big-arrow-gray.jpg" hash="745194d74525c2fd3238475c55a47cbc"/><file name="bigcommerce.png" hash="2a2599c562ec94be2545ab335131c71a"/><file name="black-right-small.jpg" hash="25253ab5ae165f13a1827ccd387d7b2f"/><file name="black-right-thick.jpg" hash="ae89e8e2c9d39ab8970782a829edeaeb"/><file name="btn-arrow-top.png" hash="42b3a9ffa2eccd2cfc9da9c33975f64c"/><file name="btn-arrow.png" hash="8cc68b6207307260a75bcc9331447c5e"/><file name="button-arrow-blue.png" hash="1e8d1741ecef49e021f35460fe16c76b"/><file name="button-arrow-grey.png" hash="76cd7acb80bf814c6605aa3f88c2c19b"/><file name="button-arrow-red.png" hash="03092367ac79745b0d7b2f9b707c802b"/><file name="cancel.png" hash="dd81fdd1129b4ef172d4c434d6156d87"/><file name="card-image.jpg" hash="bd1f292965163bbcc869a48bbe806deb"/><file name="card-image1.jpg" hash="95ccedbe1e8d01685f2527b08230b4a7"/><file name="card-image2.jpg" hash="963c39821d0cb5b1f0dfb691e12eefb5"/><file name="card-image3.jpg" hash="961e69aeecd5ab5d17743c5d3e4764cf"/><file name="checkmark.png" hash="4a0de13372944f21034dee674f92b7d1"/><file name="chosen-sprite.png" hash="25b9acb1b504c95c6b95c33986b7317e"/><file name="close-analytics.png" hash="0ca667d6de9a98999e37811861e6768e"/><file name="close.png" hash="daa5df0af5c219e136505132e18f5242"/><file name="color-pic.png" hash="470ec0178867dac04fcbce638c14a4cf"/><file name="congrats-magento.png" hash="ec3d2e0a2bf1d012e56583e89513664d"/><file name="congrats.png" hash="ec3d2e0a2bf1d012e56583e89513664d"/><file name="copy-black.png" hash="3f2b73b7287849ba2d341f194be7cd44"/><file name="copy-white.png" hash="208f74184462db7f5861d4c48dd300da"/><file name="cros.png" hash="bbf540cf6fe3d7fba4fab37b4d0b22c9"/><file name="cross-2.png" hash="1dfc504ed86c82bd86de8c74a09c906f"/><file name="cvv-number.jpg" hash="0ada16245fd0cb05a3967461eba12a28"/><file name="delete-raw-hover.png" hash="e3df4faf0450feaa2aed503dbf6759df"/><file name="delete-raw.png" hash="09806aed8283ae6168ecfdcec8237881"/><file name="delete-red.png" hash="c070eaad8207d3fe4e839b0f63deb68c"/><file name="delete.png" hash="b45f9d0e4d1fd160dbaa6ec41559f369"/><file name="detect.png" hash="9b6980d0bbd7ea6bded8ad05be4db7dd"/><file name="down-arrow.png" hash="3d1e707e03353aa01ac7f66610214c6b"/><file name="down-black.png" hash="80236500f0e70d2312b12a0d15e5fa81"/><file name="down-gray.png" hash="160e694e54afdc73edf828e4f02f5945"/><file name="drop-down.png" hash="ab8561f879ec10c16d6ca5393edf5db4"/><file name="dropdown-arrow.png" hash="4450401ccb623ec2a0ccae215e8b2a63"/><file name="edit-magento.png" hash="043c35fcd4396838a0db85d8d93aed04"/><file name="edit.png" hash="043c35fcd4396838a0db85d8d93aed04"/><file name="eye-hover.png" hash="cf7047c5218c147959a7afc282c01568"/><file name="eye.png" hash="b7a4815cce6e051a785f417f0ecb3427"/><file name="favicon.png" hash="402ca129cd67c7601ea429310c6aa2f5"/><file name="fill.png" hash="4bb20f0886094d62ac0c741edcc03742"/><file name="group-arrow.png" hash="89eba421d4e2a3f83e47e00f26e80888"/><file name="help.png" hash="94b200dfffcdb8ded1429791c2d22b8c"/><file name="icon-analytics.png" hash="4e62393fa4013bdc4e134b469dcd280b"/><file name="icon-info.png" hash="52c2f72d690d0f979afcb5a712b34c3c"/><file name="icon-widget.png" hash="8d6ed9abd86d3095993b4ca773bfdbc3"/><file name="install.png" hash="b284e88eb06554283ef98d6f50836e46"/><file name="integration-gray.png" hash="0fc90ad557b62f693098d862d5599085"/><file name="introduction-gray.png" hash="092fce8aa83ab7bcdb9b7a7a62b4a7d6"/><file name="left-black.png" hash="24b87ee6bf514b8666b12d7d9297eb4e"/><file name="left-gray.png" hash="e53e0389cd719dd5aed2ad6017d32b0e"/><file name="level-arrow-active.png" hash="56bbbf4701324c79e111a36abc235092"/><file name="level-arrow.png" hash="5861fea9a80e3c4fcc14210569d7effa"/><file name="link-arrow.png" hash="21354972164f512795bf1f54c6a71f3f"/><file name="loader-16x16.gif" hash="778e6b9e73274330dae0dab8104948a0"/><file name="loader-24x24.gif" hash="e403534956d055d636b3a5fa813b82b7"/><file name="loader-32x32.gif" hash="009c5064d779a3c67a202f299bd5d301"/><file name="loader.gif" hash="fd1345456c4a685afb42b67c25354ca2"/><file name="loader_black.gif" hash="5bfd8de3193a5fc2e5b472f57df1408f"/><file name="lock-image.jpg" hash="e80f8aa765e8ea121b056e188651629b"/><file name="logo-unbxd.png" hash="0b6c4b8887f8d57577023d8ddc1fa951"/><file name="logo.png" hash="27fa979ee65c84aefd15ffd6cc973e4d"/><file name="mail-new.png" hash="831e8c8c1eba8f4733d1d1e44a8c6549"/><file name="mail.png" hash="1cf907fd4c5d98230c7c2b89d6ff235f"/><file name="minus.jpg" hash="bdddd9b0d971d461a7e472b5bf38bfce"/><file name="nav-highlight-arrow.png" hash="64f6ae56f54568594d04df5c80ce069c"/><file name="not-detected.png" hash="59d0c0115b4b9f192eb4a77f22ce1609"/><file name="oops.png" hash="0735ac87c8e81325be4dc901ba354937"/><file name="or.png" hash="64c351e685fdb8339b7c7857ff14f56d"/><file name="other-gray.png" hash="646b84e4629dfadf3163bc9cd1aa83de"/><file name="overview-gray.png" hash="498e242cdd5b738d088d7ed4ae6c8e3e"/><file name="plus.jpg" hash="a8b80b4d5eee0ad842ce22ee7ea4c752"/><file name="question-mark2.jpg" hash="de9555459f3b9c93482c4a6061fea66b"/><file name="red-cross.png" hash="4213a8ee001ae75166d270be44b199a0"/><file name="red-loading.gif" hash="e644579431a4666564d92ec62c7c74e2"/><file name="remove.png" hash="401b59fb5aed9c68e5f1b3e47fe6ea60"/><file name="right-black.png" hash="fce5a7892866ef65e91fb006b1959c21"/><file name="right-gray.png" hash="b09daca9ca3c40451de0d62fbadd3cf6"/><file name="save.png" hash="fd61c5589c9fabe20a988121822ef81a"/><file name="saved.png" hash="9bb84699bb703a00b4b168e0997eeda5"/><file name="search.png" hash="71829ed3818c8832469c46d1f9203be0"/><file name="settings.png" hash="9dd7ca159584c09c41717c578f8aa1f6"/><file name="shopify.png" hash="93d8d9c1dd93680819fd642f9136b07c"/><file name="site-dropdownarrow-down.png" hash="c4c89958d88c58785c15e11c83bf0c4a"/><file name="site-dropdownarrow-up.png" hash="f52281c034fdc67f339efeab9127ddfc"/><file name="slider-bg.png" hash="242bb276022f24fc7ac71b181dd34e36"/><file name="slider-button.png" hash="4d17b9bd17415f9df5ccfafefcd32a24"/><file name="sort-arrow-blue-down.png" hash="1fd1bfd16d5f3a9c15017248a7d7f0e0"/><file name="sort-arrow-blue-up.png" hash="24eee605bc0fc9432b7b499633a6c7bc"/><file name="sort-arrow-grey-down.png" hash="b64554cc698560bb38bb43a7a6480dd3"/><file name="sort-arrow-grey-up.png" hash="d14911ddaef0a4de79b1a4a54efbf68b"/><file name="spree.png" hash="119dbad2cfa857a786d746158b9f36f0"/><file name="start-gray.png" hash="fe86f1b188d5b3f0f375421aa5435939"/><file name="step-arrow.png" hash="167c9a25eda4cd9bb4d88762883ba47d"/><file name="success.png" hash="4a8d69083fc4447d9c4ae9bdcc6560ce"/><file name="tick-analytics.png" hash="da1c588c876b2ea12bede76ef17ca1ff"/><file name="tick-green.png" hash="5108aa311b8e64e8f69642a53e4d3506"/><file name="tick-pricing.png" hash="42b0c3bb2c8e270833b0856360722124"/><file name="tick.png" hash="a5bb66f590af2746711bfdefe3b37d7a"/><file name="tooltip-arrow.png" hash="d37dac7a1d706a453ea0637f1db04907"/><file name="tooltip-left-arrow.jpg" hash="90143af415043466956e264b5e9a5910"/><file name="tooltip.png" hash="39a75f32b4b78b07033635f14a182124"/><file name="up-arrow.png" hash="f3d15dec451c405decfbc6d3a3fa7696"/><file name="up-black.png" hash="e77b8b75ecf6e5e63eed7fbb84c265a3"/><file name="up-gray.png" hash="0c721f2f05c729e07bd22a0a90f51ab0"/><file name="user.png" hash="ad7be0166b1484d9ff9e1d2708c83a71"/><file name="warning.png" hash="43e8ab0f26ce3ecf8ecdd162a8c8f366"/><file name="x-widget.png" hash="f000d6861e99a51e5ea2fdf68e0e0910"/><file name="x.png" hash="c517855b1803534e2bcecc9ed50808a9"/></dir><dir name="js"><dir name="app"><file name="analytics.js" hash="02e412d6d61ce0db1eefe1d1b64f87ad"/><file name="catalog.js" hash="ba8ff3410e263a254643b4e3e2ac36d2"/><file name="credentails.js" hash="a30597855db9aa04d83eb17624b23d5b"/><file name="utils.js" hash="0931d2484cae073b3b8209202e30e090"/><file name="widgets.js" hash="614b844d7129a912a84f89d6e88df5d2"/></dir><file name="app.js" hash="6c610a36fd3974af49e009f32e3697c7"/><dir name="lib"><file name="backbone.js" hash="88fee57a12be8ea719ed85fe29f062d3"/><file name="bootstrap-tooltip.js" hash="304bf569ee1a25e8fae5532d90661662"/><file name="chosen.js" hash="4fabe14fb10d99c4b432db5ce9847c06"/><file name="ractive-backbone.js" hash="afeac03a42a51483a7389f2b26a3e3d7"/><file name="ractive-chosen.js" hash="837381e6e428a7fa2b9f8f67c974d195"/><file name="ractive.js" hash="4887bb0d23f93ca78c46d2a7420cd360"/><file name="require.js" hash="177879fbe7dd333386711389ffa44d21"/><file name="underscore.js" hash="f809a744b7a4fe79a94749a569aa17f9"/></dir><file name="main.js" hash="68548c96331300ca0db2561c9c9b481f"/></dir><dir name="templates"><file name="analytics.html" hash="8885b3170719fcd525ad7a27bdf45624"/><file name="catalog.html" hash="1260ad88c8f004612863b528c0b6c3aa"/><file name="credentails.html" hash="1e6eb46ac91cf8083b7709659bc4783a"/><file name="custom.html" hash="4a4154b74c4ebbfde132857684c92e60"/><file name="widgets.html" hash="f337583a8def22cc39d62233bc8d0e0a"/></dir></dir></dir></dir></dir></dir><dir name="js"><dir name="unbxd"><file name="app.js" hash="5790870aa32c641bbad8d064fd41b610"/><file name="embed.js" hash="9ad60159c46080c5a071d54eb0ab6f9e"/><file name="jquery.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="unbxdAnalytics.js" hash="98738dccf6a9e9378e79ca6931d9d3c1"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Unbxd_Recommendation.xml" hash="72e1cb88ed2106b67858c9d529939cb2"/></dir></target></contents>
16
  <compatible/>
17
- <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>unbxd_recommendation</name>
4
+ <version>1.0.19</version>
5
  <stability>stable</stability>
6
  <license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>recommendation module</summary>
10
+ <description>recommendation module</description>
11
+ <notes>Unbxd Recommendation</notes>
12
+ <authors><author><name>ananthesh</name><user>ananthesh</user><email>ananthesh@unbxd.com</email></author><author><name>praveen</name><user>praveen</user><email>praveen@unbxd.com</email></author></authors>
13
+ <date>2015-04-20</date>
14
+ <time>15:40:33</time>
15
+ <contents><target name="magelocal"><dir name="Unbxd"><dir name="Recscore"><dir name="Helper"><file name="Analyticshelper.php" hash="542b918b05b6c87db3023fc572c1d7c1"/><file name="Confighelper.php" hash="6adab52f595a5eb9bf90f2d3d0458a05"/><file name="Constants.php" hash="d29695379df5144e1e25daaefa80195d"/><file name="Data.php" hash="e751a36a214ee58ec38ecc1067c2c3e9"/><file name="Feedhelper.php" hash="d5efc95a27b3ceda50b472a47247fa76"/></dir><dir name="Model"><dir name="Api"><file name="Request.php" hash="676864d597e13b12d31a6cd6282cff54"/><file name="Response.php" hash="c439b162f3160d7716d85605d740cf88"/><dir name="Task"><file name="Analyticsimpression.php" hash="8930d9e47f705ffa940ac07e31c02636"/><file name="Autosuggestindex.php" hash="00974e65f6c3c1756f5910f7fe5c3a00"/><file name="Feeddetails.php" hash="cda43137d4a235b0932f76aecde5828d"/><file name="Searchimpression.php" hash="43637475a8a573b2520a98e9679a4dd7"/><file name="Searchsetup.php" hash="fd8ce5aae3bc3c438a86daf72b149f5d"/><file name="Supportmail.php" hash="6f7296d6734173bc1f1d5083b35fc480"/><file name="Trackcart.php" hash="39af0962835e296428a1d302c163d7b2"/><file name="Trackorder.php" hash="018d609541ae41f3dd253c58b9ce88fb"/><file name="Triggerfeedupload.php" hash="326315ae8b3c212c685c11a8c9cbbcef"/><file name="Updatefeaturefields.php" hash="61dfda139f10fadad1e8a20939718da0"/><file name="Validatekeys.php" hash="d52331bcdfa0dfc35d9f99e32b4cefc7"/></dir><file name="Task.php" hash="2c2fd0997bc9880b2a323ee6eb5844d3"/></dir><file name="Auth.php" hash="73d2cc68b49fe6157554477439cd7d74"/><file name="Config.php" hash="543e4c8a0964fd349c346e136569a5f7"/><dir name="Feed"><file name="Feedcreator.php" hash="d808a88d14407d2a5df2ddd5af3fbf74"/><file name="Feedmanager.php" hash="2ead0f80ec03e1c5c7ddbfe97244cf49"/><file name="Filemanager.php" hash="59518b8d93fdcde900fd0f2ee9214546"/><dir name="Jsonbuilder"><file name="Jsonbuilder.php" hash="99fc05491593875c66b0521b2321ecd0"/><file name="Productbuilder.php" hash="dd4018df88da3490f3402175cf87868d"/><file name="Schemabuilder.php" hash="8a379b9bc7c4659305ab3b5d1de1df2e"/><file name="Taxonomybuilder.php" hash="ad5d295eb7bce69b091cd5301083430d"/></dir><file name="Tags.php" hash="0ecc841c3789a04fe55051bb3078a555"/></dir><file name="Field.php" hash="61ba0edc9863e1835864c34e563aa71c"/><file name="Observer.php" hash="4bc9c9391090e2887a38cb36291b6a7c"/><dir name="Resource"><file name="Attribute.php" hash="f6de7ea7abb828ef1fb6a6dfcbd69840"/><dir name="Config"><file name="Collection.php" hash="38112097263b29f67c4358af1e123972"/></dir><file name="Config.php" hash="92d3fcff7df0285c788dceb28f51912a"/><dir name="Field"><file name="Collection.php" hash="411a7c8be674d58e9b779af9a927999f"/></dir><file name="Field.php" hash="a666ab6d8f47a8777a3b8bbea455a22c"/><dir name="Product"><file name="Collection.php" hash="818612ca5f0d75852a84e870cbfe8e07"/></dir><dir name="Sync"><file name="Collection.php" hash="4a2391d2b27b5b1e6050f37fb995d668"/></dir><file name="Sync.php" hash="03eff6cbdb28353b653c02d4aa88d932"/></dir><dir name="State"><file name="Analytics.php" hash="83954d983dd817054345987bc7f32da3"/><file name="Catalog.php" hash="a4f3a96ceb0fa963e73bcbf6bd83ca60"/><file name="Credentials.php" hash="23b0dd01df50a8b661d28b4ba2bd4437"/><file name="Response.php" hash="deef3350e040a2b91c8e80d83646d30f"/></dir><file name="State.php" hash="3b52977417f686a34d6b161447c0b87f"/><file name="Statemgr.php" hash="02007603f045cac1958066761f3622a6"/><file name="Sync.php" hash="215f637e29a358fcaf44235f041d101b"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="IndexController.php" hash="2373a8ecea10134a3d683321c281c571"/></dir><file name="CatalogController.php" hash="f76ce6821a9bf2fab01ae3e5555c508d"/><file name="ConfigController.php" hash="7c51f060e0d14f3b19026bde760dba99"/></dir><dir name="etc"><file name="adminhtml.xml" hash="0f588fe72cddfafc7b46b3ff58a0a940"/><file name="config.xml" hash="62b11718eab5bb0cc191c03c1806d10b"/></dir><dir name="sql"><dir name="unbxd_recscore_setup"><file name="mysql4-install-1.0.0.php" hash="5953cbbc0097b4d68fa4b030606295de"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Unbxd_Recommendation.xml" hash="58c2a5d99d2eb3a779fd0e953a4fd6c3"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="recscore.xml" hash="b426e9786d866cca461dce509cca2e6e"/></dir></dir><dir name="template"><dir name="unbxd"><dir name="recscore"><file name="tracker.phtml" hash="de7621954871b4010327374268259ce8"/><dir name="tracking"><file name="product.phtml" hash="a1ad56a8eb7e53e7ed483324d3f15a70"/></dir></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="unbxd"><file name="recscore.xml" hash="007a71be9c73216557423017f9b22e88"/></dir></dir><dir name="template"><dir name="unbxd"><file name="recommendation.phtml" hash="903df82526c4b8569de80c96c818aad8"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="unbxd"><dir name="recscore"><file name="app.js" hash="5790870aa32c641bbad8d064fd41b610"/><file name="embed.js" hash="ae0665e583a2579a2609f27f07f36551"/><file name="jquery.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="unbxdAnalytics.js" hash="98738dccf6a9e9378e79ca6931d9d3c1"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="unbxd"><dir name="recscore"><dir><dir name="css"><file name="app.css" hash="b2e6cac84e88747ed286e719d1a45e99"/><file name="app1.css" hash="d0b0f148bdf44d46bcee3e4ae4668cb6"/><file name="bootstrap-switch.css" hash="b97cfbfa50ef0ef787261b5f925e506a"/><file name="bootstrap-them.css" hash="df854606e8bfb38abe58305c389301ae"/><file name="bootstrap.css" hash="92a3eb9b3fb1137b16bf8dca5907ffd6"/><file name="chosen.css" hash="2329f7f776c2b97a80a134c34c9eebd5"/><file name="colpick.css" hash="84eb0f762c33ede63bb4ed417b011a9d"/><file name="magento-app.css" hash="33b7d3e29d3906d21e882f8706ff7c7c"/><file name="unbxd-magento.css" hash="27657f8446948753277dad346325c4a3"/></dir><dir name="img"><file name="Custom-platform.png" hash="5290665e9ca24170ed6b4923bd635377"/><file name="DONE.png" hash="82ea09757c6f6ba582b2089a166686ec"/><file name="HEXAGON-Only.png" hash="cc44d0bcef0cbc24e00d08e3a76552c5"/><file name="Magento-small.png" hash="7a528e2dd969bec618acd410ae660727"/><file name="Magento.png" hash="a1006f3044d6cfe6dd6f4e982344ab4f"/><file name="Powered_by_unbxd copy.png" hash="b29f1ac74821c62af18ef2dea3a22265"/><file name="X-popup-hover.png" hash="f74653bfca79cbc1c262752b5f44d4c3"/><file name="X-popup.png" hash="63c9f5c8256e8ecfe76db8ddb8d9aaa0"/><file name="X-pricing.png" hash="979c2c9456732a8935d8e77f502de58e"/><file name="active.png" hash="ce09792133584f533c7a0a2227ff05c9"/><file name="add-actv.png" hash="f990f99e6c3bc5819087e02621e71a2d"/><file name="add-icon.png" hash="7add622ec65c42898fab1fb5e2e64533"/><file name="add-inactv.png" hash="9fb163e67fc1271534dbede05bd75d31"/><file name="add-raw-hover.png" hash="4a44e58502e00e8d73fc00b7988e8621"/><file name="add-raw.png" hash="442cc58d8176e0b580f409df4f18c89e"/><file name="add-rule.png" hash="de395f293ed3bd1f5e3e79ee80e0296e"/><file name="add.png" hash="317559b8877b4ab171c92e253fbae814"/><file name="api_int_info.png" hash="62efde0dc39f78b8d36ac140e4922fa8"/><file name="arrow-2.png" hash="6eb510a6c6753812d1c0b7ad3792c68d"/><file name="arrow-calendar-down.png" hash="cfcc798220b0655588b1ebc92bb2cd9e"/><file name="arrow-calendar-down1.png" hash="e1d78aa977aefd3dbd0d077265465a53"/><file name="arrow-down-disabled.jpg" hash="728761548b495cac219d9497f8d6bc88"/><file name="arrow-down-enabled.jpg" hash="79bf179fb24de528068cc34e0112bc5d"/><file name="arrow-down-white.jpg" hash="556e356570a1e9ed97b13fcbd028997e"/><file name="arrow-down-white1.jpg" hash="c1b42e8d9d6c79265085d0c297e215c0"/><file name="arrow-down-white2.jpg" hash="c1b42e8d9d6c79265085d0c297e215c0"/><file name="arrow-down.png" hash="13794ac6416e435d6b2fa0b54f48b488"/><file name="arrow-gray.png" hash="ef922786b71b9e8c7206dc3a3e55ec30"/><file name="arrow-inactive.png" hash="ea8df964b3bb238c34e2a92ac3819b1b"/><file name="arrow-left-inactive.png" hash="02dceab03c4629eda64caa32f76dd21f"/><file name="arrow-left-white.jpg" hash="99c322cfc458b3d9545335084263f7c0"/><file name="arrow-left.jpg" hash="d9c30f6cd57f2cdd382a1bcdbfa38507"/><file name="arrow-left.png" hash="2259b06fca6ea640c26d2208afd02fb5"/><file name="arrow-mail-developer).png" hash="6dd3f45435f140731481878b80a54e59"/><file name="arrow-right-blue.png" hash="33ad361548417c181dfbc05a7fbb78a9"/><file name="arrow-right-gray.jpg" hash="829ba35fb3b3598fcab2dd03dfd8bcaa"/><file name="arrow-right-inactive.png" hash="a8adf91679f6fcc1fcbbfebd87212bf7"/><file name="arrow-right-white.jpg" hash="fafacf3d7bc94986a26024565621b509"/><file name="arrow-right.jpg" hash="96af89ff4e0ebf1134361573b6a431b3"/><file name="arrow-right.png" hash="055276cac55edeb3eb4281f15a7ee404"/><file name="arrow-up-black.png" hash="668b1a36fb27af19739b0de2ee804bfc"/><file name="arrow-up-disabled.jpg" hash="d15535c2924f1e9ae570da0fc61d2e14"/><file name="arrow-up-enabled.jpg" hash="820c6e3175bf1774077cbf2ef0f00a5a"/><file name="arrow-up-red.png" hash="9e4fa614690acba2402e8fb774c1760a"/><file name="arrow-up-white.jpg" hash="6f4804c59bdfd728095e0d2c86c486e4"/><file name="arrow-up-white1.jpg" hash="017b0d2695a4d6b9534cae7af5883464"/><file name="arrow-up.png" hash="b4380ef5bdaad86d2eddeb69bfc51e5c"/><file name="arrow-white.png" hash="a62374550e967153b2f5f6c782770175"/><file name="arrow.png" hash="2dfdf0abf10326d73b8c39bd3f6da413"/><file name="arrow_grey.png" hash="9a4fc1c1022f8ecfeadf8e25da0f8240"/><file name="arrow_white.png" hash="794ff95721a9586ae3b9290a4a53ebbe"/><file name="authenticated.png" hash="9eac2025c82fcf60c822d7d4690ca98c"/><file name="back.png" hash="72f60077f20dc52553e069f641b42099"/><file name="bg.jpg" hash="4a2f6fda25f44f7009e9a22ccf90e330"/><file name="big-arrow-gray.jpg" hash="efb30594788c366bf9b007945b197071"/><file name="bigcommerce.png" hash="bb6801e63d1198f8ec1458e69d9d4eff"/><file name="black-right-small.jpg" hash="699a5af08c69fd5c3b57aaa9fed7cfaa"/><file name="black-right-thick.jpg" hash="707c1a0806947351564de4391e9ef885"/><file name="blue-selected.png" hash="e4246debbabc085b10572bd5aa4b0982"/><file name="breadcrumb_arrow.png" hash="631196f2801711df3ff31557c8287290"/><file name="btn-arrow-top.png" hash="75d77e80995b2b3b42043db3fe7e152b"/><file name="btn-arrow.png" hash="ee2543a2011a57b2b58db30cf62d0219"/><file name="button-arrow-blue.png" hash="b82160ad78e789b5702c7eb9a2dd3c7b"/><file name="button-arrow-grey.png" hash="cb339368b9409741e28dc31f6400f5f0"/><file name="button-arrow-red.png" hash="499819820395cfbcf03318107049a634"/><file name="cancel.png" hash="dea3ab86b5f6980886b8148b6dbc0804"/><file name="card-image.jpg" hash="543c66027f8d3718ab2f6930454c5324"/><file name="card-image1.jpg" hash="6469c85cb7133c89c514b5d932ec61d3"/><file name="card-image2.jpg" hash="816ceb38837684da077e08132d95aa08"/><file name="card-image3.jpg" hash="b65e704ae1cd2e88da5237e5e72e8ca8"/><file name="checkmark.png" hash="76c700530ee10b42763c1df6f85279b1"/><file name="chosen-sprite.png" hash="25b9acb1b504c95c6b95c33986b7317e"/><file name="close-analytics.png" hash="421ee870c5e070a6a03819eb2716fd1f"/><file name="close-round.png" hash="adafdcb7fde56b8af0e9b843ff7e19bb"/><file name="close.png" hash="fe130e3473e31d6f73127fed8d693539"/><file name="color-pic-black.png" hash="b9c18ff6fab0fc8bd1112b13a94d2477"/><file name="color-pic.png" hash="5ac6b53fdd57080a2df5a171bdb03aae"/><file name="congrats-magento.png" hash="2c02d7b82e1c5a8e2491f7892929b0fd"/><file name="congrats.png" hash="2c02d7b82e1c5a8e2491f7892929b0fd"/><file name="copy-black.png" hash="11abed4721d04c70531356777e828e0f"/><file name="copy-white.png" hash="6f188394d6619b61b51a7ede4c29ec0e"/><file name="cros.png" hash="25dee21cf8d50963fa3cf9300d0b93c0"/><file name="cross-2.png" hash="027fa6cdc450c378984376924003ca88"/><file name="custom-color-selected.png" hash="41b299f7d3d6964b45ced6c0b2209bfe"/><file name="custom-color.png" hash="4638d52f8ae7c8db0463500abeda4126"/><file name="custom-temp-1.png" hash="1e74a0ab64f7bce768e864a8ac43c1b8"/><file name="custom-temp-2.png" hash="456b7998744c5b272bc05f981ab79d73"/><file name="custom-temp-3.png" hash="3606aede791d32c3c9481d5bbc82847e"/><file name="custom-temp-4.png" hash="89d45791dfff0ca4f1ad94a4b1ec2661"/><file name="cvv-number.jpg" hash="3c3e97a31a009afcd3c26f7529db5cf1"/><file name="delete-raw-hover.png" hash="7bd9eeb7059b5946e2686415797417c7"/><file name="delete-raw.png" hash="43a13c96e2a261c309c151eb4ef975fc"/><file name="delete-red.png" hash="73386fe1e477b0a30c2ab9f9f11df94b"/><file name="delete.png" hash="55019546183a6d4bf7fce6ecc6a00b36"/><file name="detect.png" hash="b74ba51e28f7a15e8214c18cbdd4e407"/><file name="dot-border.png" hash="208feb3ba398f27536213749e1e621a3"/><file name="down-arrow.png" hash="25ce0545a9cc87f1d9e1b7b80be93876"/><file name="down-black.png" hash="d99de4c90283294c30f1670cf1a52f40"/><file name="down-gray.png" hash="3a75b2ef9452e1e3dd8e06ffab68456b"/><file name="drop-down.png" hash="3674841edf7320d3d84c708f50df1741"/><file name="dropdown-arrow.png" hash="e78ccea5d0bda5dbebcd5bbee4b93f64"/><file name="edit-magento.png" hash="efa37bbf88091ce8d7b68e8115d1fdde"/><file name="edit.png" hash="15f83e074edf79a9da13fbe74f47dfbd"/><file name="eye-hover.png" hash="b52a441b87c99d5cda61125669b33724"/><file name="eye.png" hash="8b7a3637232dad5710a8b36f69e2ad5d"/><file name="favicon.png" hash="1e52374b5ed35864d8fa9f15e2cd30c2"/><file name="fill.png" hash="ae2fd7902f99b1efc9531b006cdca186"/><file name="green-selected.png" hash="ef1ab5c6209c8e5293b2ce4867fd023d"/><file name="grey-selected.png" hash="b6a83c93171b89a6f7f466aa47ac4717"/><file name="group-arrow.png" hash="579edf9c51115a4c74061af86620edb7"/><file name="help.png" hash="4ef8bda62d42054e27218cfcd958c577"/><file name="icon-analytics.png" hash="c4b7b57118d1c912207ac8d34e3e6d5f"/><file name="icon-info.png" hash="cfa3beb50e89263c2da97d40f64da177"/><file name="icon-widget.png" hash="89fbad7748cb956a65896ddeda18a57c"/><file name="info-icon-big.png" hash="8b881f8b5950131b96f337247fe59b4f"/><file name="info-small.png" hash="a47a6287c9af33f42cd78762c9d5862f"/><file name="install.png" hash="6b378698d96ab32f89efc23fc24333da"/><file name="integration-gray.png" hash="e1428587806c6e90872cb8e325e1bb0f"/><file name="introduction-gray.png" hash="003c564c948c374ade90bfcef89088e9"/><file name="left-black.png" hash="ac4d88a6ddfefcdf75dcef4384bdf90e"/><file name="left-gray.png" hash="b229e9f7144f1d80f73f1dac6f689401"/><file name="level-arrow-active.png" hash="8905e738238c090bed0c259266159374"/><file name="level-arrow.png" hash="9a4fc1c1022f8ecfeadf8e25da0f8240"/><file name="link-arrow.png" hash="61fb4c9e922c3c6427fea1484eab2474"/><file name="list_bullet.png" hash="a6dda6a7e38ced1ea368d2265434e53f"/><file name="loader-16x16.gif" hash="778e6b9e73274330dae0dab8104948a0"/><file name="loader-24x24.gif" hash="e403534956d055d636b3a5fa813b82b7"/><file name="loader-32x32.gif" hash="510f6441c74b9f098ea99cc11d0c4e89"/><file name="loader.gif" hash="fd1345456c4a685afb42b67c25354ca2"/><file name="loader_black.gif" hash="5bfd8de3193a5fc2e5b472f57df1408f"/><file name="lock-image.jpg" hash="6081155d7fcbb5d8c4d34a344f0bbd97"/><file name="logo-unbxd.png" hash="82024b1f5e10ac130489103e8bf08d2b"/><file name="logo.png" hash="1c0087551ac1c41493868b5d409b7dda"/><file name="mail-box.png" hash="25dae3efa5200ee176dd0aa825fa1d5b"/><file name="mail-id-sprite.png" hash="3a06a0e11e74c7a66f7f0f1aae082fcf"/><file name="mail-new.png" hash="8a3fe01ecd87ea7e93b239f2add8a52a"/><file name="mail.png" hash="f1a1039b5ebdc17cb40b2d79ca3937e9"/><file name="minus.jpg" hash="0fd79f174562ffa46348b445c85c930c"/><file name="minus.png" hash="bc691a8f2761f1d1c4a379f665d03480"/><file name="nav-highlight-arrow.png" hash="9806317c711b22c08a6247960c10fb26"/><file name="not-detected.png" hash="2e63b320f3f8a6c004c71bc1b02c1473"/><file name="oops.png" hash="03eca8b24324df38fd4c734843a2abbb"/><file name="or.png" hash="e6e8b2d42f8dedf2078e3d9f38e6070d"/><file name="orange-selected.png" hash="296963f455ad925de437581fa07be306"/><file name="orange.png" hash="2e2089e5c3e867f00728cf2cf2de3811"/><file name="other-gray.png" hash="58f19f3578f063ff1ccd8b8ef2890195"/><file name="overview-gray.png" hash="0c3501dd6469f90a61a8367a3bdc3340"/><file name="plus.png" hash="2cbfab4d57d7083650b5bbf8be7ee84c"/><file name="preview.png" hash="d56d8e0b3eb221a714ed0e2474ed38ac"/><file name="question-mark2.jpg" hash="50392a77ea59fc9c1e4709834cc7ae2d"/><file name="red-cross.png" hash="368e01e53564574eea66c850829a243f"/><file name="red-loading.gif" hash="510327b63304d4c58bb9445c7343498f"/><file name="remove.png" hash="aea65d50ad060b90e8f7e76624f20c4b"/><file name="right-black.png" hash="cdc63a865ca9717d3d315fc3bcbc64ca"/><file name="right-gray.png" hash="cc72c1c3416e2ce5750e4db92de093fd"/><file name="rules.png" hash="004dced224b5250f4f033cffb44cca14"/><file name="save.png" hash="20eb685cc7a58ea1ea2065a8c2d10e81"/><file name="saved.png" hash="df9ab88cb96c3de503816171f35b1254"/><file name="search.png" hash="5acdafa5337d7702948a4015eeb8f0f6"/><file name="settings.png" hash="36fc3060fa0d0e5bb2e3dd57c51b1edf"/><file name="shopify.png" hash="ff1163b008f933c7e71cd5a4d77de878"/><file name="site-dropdownarrow-down.png" hash="e83075515419fa29658df010a6982023"/><file name="site-dropdownarrow-up.png" hash="fbd66dc69e51085161a2e28c519e2dc8"/><file name="skin1-trans.png" hash="0264c245ba712d19d5b0d308e71e77b4"/><file name="skin1.png" hash="2e2089e5c3e867f00728cf2cf2de3811"/><file name="skin2.png" hash="fe5935399ab1a8d78ecaebaba6c7d176"/><file name="skin3.png" hash="9bfccdd71c71d7f03b5f2fe1cd394118"/><file name="skin4.png" hash="1002cadb9ce2bdaea9e820d0f324113d"/><file name="slider-bg.png" hash="0f310e78f27110b13cf699ed7d4b97e4"/><file name="slider-button.png" hash="4b8c133577ba9022b97ac82420e88166"/><file name="sort-arrow-blue-down.png" hash="22fab361e19b80e12b1279921f123656"/><file name="sort-arrow-blue-up.png" hash="7731f17d465b7dd6cde7eafebe2248b7"/><file name="sort-arrow-grey-down.png" hash="82cfe186b77d97dd0d961303bd53ad40"/><file name="sort-arrow-grey-up.png" hash="dbd67d69cb4ddab64cf9bed760251adb"/><file name="spinner_down.png" hash="afdbf1537511400bc1278cf761cedb12"/><file name="spinner_up.png" hash="f1032905f72b96eb8ee8f5ddb995e559"/><file name="spree.png" hash="d30a2489564230c317f9c873277567e9"/><file name="start-gray.png" hash="b6425ce659a1da4316a144a5a66b72bd"/><file name="step-arrow.png" hash="1bb6bed612dd45b5e49b2a70a952a7a7"/><file name="success-icon-big.png" hash="9d4e0c51400d6039220a5301797e01a1"/><file name="success.png" hash="74d3fa654373b5c128699c80cf218053"/><file name="temp-1-blue.png" hash="e62450283d4e38467c6920a8474c139d"/><file name="temp-1-green.png" hash="ba66a0aa6cae5edf940ceddb51c11f12"/><file name="temp-1-grey.png" hash="a2736bce441ee5b0a98cc7090b31918d"/><file name="temp-1-orange.png" hash="ab3c96985183414aec3d5affe33094fe"/><file name="temp-1-preview-blue.png" hash="eb3d6e4fe3473d6a69239c6e6da815ea"/><file name="temp-1-preview-green.png" hash="4f126d02eae9679d88a1e411319c5d4c"/><file name="temp-1-preview-grey.png" hash="ef8c62f98c94b550c488650aa2a1bbbf"/><file name="temp-1-preview-orange.png" hash="1aa2170d326403a87f119341622503d3"/><file name="temp-1.png" hash="e5c1f8718fec6d570a2eef8110b1da3c"/><file name="temp-2-blue.png" hash="35c176f6bfb28e7f603dae4e08ab2b08"/><file name="temp-2-green.png" hash="d9c9f88f66cb0e96f67384ed46e164b2"/><file name="temp-2-grey.png" hash="97e1c2d6b09ae812891768193825c24c"/><file name="temp-2-orange.png" hash="bd5c1d83b734cc78f3d6684ea39cdbb2"/><file name="temp-2-preview-blue.png" hash="65b394b1b7ba85c8f6557b56a01956f0"/><file name="temp-2-preview-green.png" hash="2ffeb59926e5d02d618b1e27c6ec8f3f"/><file name="temp-2-preview-grey.png" hash="0b5a3c138cbf5d7aa6d6c2f2fd546a12"/><file name="temp-2-preview-orange.png" hash="899dc8507574ce64382757b32ae2e534"/><file name="temp-2.png" hash="35ee735575579755f23b9be31eac64d6"/><file name="temp-3-blue.png" hash="3f33a385a0588c159459640ba50a6e68"/><file name="temp-3-green.png" hash="8fa49ff3af61230af4352a5c30b62a9f"/><file name="temp-3-grey.png" hash="a98c1d46adf4d091c1ee0b8e4affef60"/><file name="temp-3-orange.png" hash="7bca6c527be688c8609ff21b8f2a1d74"/><file name="temp-3-preview-blue.png" hash="636b0e1eeef3577338cdcfb735c99e15"/><file name="temp-3-preview-green.png" hash="ebc8bae1360c48fe346292840f954021"/><file name="temp-3-preview-grey.png" hash="5684634e2988a5b25a02de8d48644db6"/><file name="temp-3-preview-orange.png" hash="d788a099b7af1328a716639391469213"/><file name="temp-3.png" hash="9b6c874b939adff6f507d1f2754fc2c9"/><file name="temp-4-blue.png" hash="a97c6420edeb9d0e95bb8a67770af70c"/><file name="temp-4-green.png" hash="02f1e2f9b2541ba27ae9562dc4d7401d"/><file name="temp-4-grey.png" hash="8644e3016a22f011c2637deca0a0ac17"/><file name="temp-4-orange.png" hash="8649ad362dd918cb43a85feea9963daf"/><file name="temp-4-preview-blue.png" hash="6578e5606be7e7cda9c3a6a5c0e545b9"/><file name="temp-4-preview-green.png" hash="fb264203a4541ccd74f03b29a9142da4"/><file name="temp-4-preview-grey.png" hash="f26ffe3252713190c6a795e11b816cf2"/><file name="temp-4-preview-orange.png" hash="d1fc0e64b8c50c63b46ebff25665d330"/><file name="temp-5-blue.png" hash="e8656a96324a6bcdf8929e01591f7503"/><file name="temp-5-green.png" hash="040ea3f18c03189cff35e0583d5b6c04"/><file name="temp-5-orange.png" hash="f1a011d6401615da7624d610eb4d92f5"/><file name="temp-5-preview-blue.png" hash="beb849914a4a0338c2186bd61cc5e928"/><file name="temp-5-preview-gray.png" hash="bf0af858702b7d5af7d90b4ad7d424a2"/><file name="temp-5-preview-green.png" hash="23b9d70528280829d62b75fe1b2f4583"/><file name="temp-5-preview-orange.png" hash="4c44988fb1d0188f11db8fca38e4d9be"/><file name="temp-5.png" hash="2ba4c85707f885f69348e30acc87dcce"/><file name="temp-6.png" hash="ba25e257bfb2f05b5520c18fc4b1aaf0"/><file name="templates.png" hash="e70640fb9b1c78b43dccc3a0dd2e5b8d"/><file name="tick-analytics.png" hash="4ec2b80058957d5a0e4981293ddf6457"/><file name="tick-green.png" hash="49e5425fa6c0486b2be5d39d441a4cf9"/><file name="tick-orange.png" hash="c340278b24a4c92293b4db3832ff8329"/><file name="tick-pricing.png" hash="3a3f49be2bdbc3b9774321c53db50787"/><file name="tick.png" hash="cf2f6cecb363f8e6e2d64671467e1141"/><file name="tooltip-arrow.png" hash="5156649110cf1cb7cdbdc6512c47dc81"/><file name="tooltip-left-arrow.jpg" hash="92371e2d982257d136c5f46baeb513e6"/><file name="tooltip.png" hash="6a3b15fc7de518b27c63c7beda436204"/><file name="up-arrow.png" hash="452fa52e6d4b247dfca05f1996ffe318"/><file name="up-black.png" hash="7cd935e00c14d8c846b3e11f6b340a84"/><file name="up-gray.png" hash="f732268fd825a21e46346ba06deed750"/><file name="user.png" hash="f97a8fc7500ae31b18ed548897e05638"/><file name="view-hover.png" hash="b8f7826a09d5b8ee3f1beb6ade24a8a4"/><file name="view.png" hash="560fb2ea9e2717bd9aaa4bb3d258adc5"/><file name="warning.png" hash="4437ce9cf87d3d52abaea20ba9233d25"/><file name="x-widget.png" hash="0c75b723e7f543ff9da9627a3212a7a9"/><file name="x.png" hash="a0fdfbf2804612fc9b54abb64ec73731"/></dir><dir name="js"><dir name="app"><file name="analytics.js" hash="fd04c5b0c0424e161eb6d239800f0761"/><file name="autosuggest.js" hash="c6150187d86530d734a0d893d56eca84"/><file name="catalog.js" hash="cbc0491457366f8263efa5dae5eaaa6f"/><file name="config.js" hash="d073fdc2b152df450a07d6014f971a98"/><file name="credentials.js" hash="1f983ff5ff632026f130b3cffc1d79a7"/><file name="filter-catalogue.js" hash="120b8b0150ac1aab04d19216febff66d"/><dir name="search"><file name="api.js" hash="6e39ca0b9990c675ab29315952164814"/><file name="hosted.js" hash="80adf11bc58b21ba81e1e78c9fa32bc6"/><file name="landing.js" hash="4c487f74677cd88c7e9d67dd2213d030"/></dir><file name="utils.js" hash="f50ecabcbad2df4f319c9a6b6df15d4c"/><file name="widgets.js" hash="228d99b869bb0ab989522efa5e0261c5"/></dir><file name="app.js" hash="57b262277d9ada1fbec7eb5935190f8c"/><dir name="lib"><file name="backbone.js" hash="88fee57a12be8ea719ed85fe29f062d3"/><file name="bootstrap-modal.js" hash="04265b3f540e5af4d5eeeb6c3e0d813d"/><file name="bootstrap-tooltip.js" hash="304bf569ee1a25e8fae5532d90661662"/><file name="chosen.js" hash="4fabe14fb10d99c4b432db5ce9847c06"/><file name="colpick.js" hash="668c1d24c70d09b099a37cb7c158e092"/><file name="ractive-backbone.js" hash="afeac03a42a51483a7389f2b26a3e3d7"/><file name="ractive-chosen.js" hash="837381e6e428a7fa2b9f8f67c974d195"/><file name="ractive.js" hash="4887bb0d23f93ca78c46d2a7420cd360"/><file name="require.js" hash="177879fbe7dd333386711389ffa44d21"/><file name="routie.js" hash="bae94f674236d2d0a02d14624eb98713"/><file name="rv.js" hash="59d80aee6eb83f4f14596784fd57252a"/><file name="underscore.js" hash="f809a744b7a4fe79a94749a569aa17f9"/></dir><file name="main.js" hash="459b66ede2d1bdbd93f0868f3089bd65"/></dir><dir name="templates"><file name="analytics.html" hash="493740906f06e0e0df04d3268ef2bf26"/><file name="auto-suggest.html" hash="0d87aa15f51a636a505bdee043e6af6e"/><file name="catalog.html" hash="8355648cc85347dd13ca5324ab0ca561"/><file name="credentails.html" hash="ef5a207aaaa532cea47509a2ae8880e8"/><file name="index.html" hash="f2053de86b827b0536f3730e5bd47fb2"/><dir name="partials"><file name="catalogue.html" hash="edba8e597c3694d4ba490d20fff6b052"/><file name="contact-form.html" hash="782cad00f5846b8feaaee123a3250a29"/><file name="custom-attr.html" hash="395557e1453f49465ff7a83099d0271f"/><file name="filters.html" hash="d7e48ed533a73bfb9bca5399aed7bded"/><file name="preview-modal.html" hash="fc4a97401265fe2d3748d4742fddd674"/><file name="row.html" hash="fed8568b62d58b78d61a92dd987f1c8f"/><file name="switch-off.html" hash="ff23402a616d9e5af17c003cba7216f1"/><file name="switch-on.html" hash="49ed70ac50fb66803133313c8a470e52"/></dir><dir name="search"><file name="api.html" hash="ad234f9bf18f55b30a5318bd72b10ba2"/><file name="hosted.html" hash="d390ba0f14ed0f54fa74f981659711e6"/><file name="landing.html" hash="46928ca03f00d946d9e2b12272828752"/></dir><file name="widgets.html" hash="a06e1116fe06e610f7299c101bf8ba14"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
+ <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
skin/adminhtml/default/default/unbxd/css/chosen.css DELETED
@@ -1,429 +0,0 @@
1
- .chosen-container {
2
- position: relative;
3
- display: inline-block;
4
- vertical-align: middle;
5
- font-size: 13px;
6
- zoom: 1;
7
- *display: inline;
8
- -webkit-user-select: none;
9
- -moz-user-select: none;
10
- user-select: none;
11
- }
12
- .chosen-container .chosen-drop {
13
- position: absolute;
14
- top: 100%;
15
- left: -9999px;
16
- z-index: 1010;
17
- -webkit-box-sizing: border-box;
18
- -moz-box-sizing: border-box;
19
- box-sizing: border-box;
20
- width: 100%;
21
- border: 1px solid #aaa;
22
- border-top: 0;
23
- background: #fff;
24
- box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
25
- }
26
- .chosen-container.chosen-with-drop .chosen-drop {
27
- left: 0;
28
- }
29
- .chosen-container a {
30
- cursor: pointer;
31
- }
32
-
33
- /* @end */
34
- /* @group Single Chosen */
35
- .chosen-container-single .chosen-single {
36
- position: relative;
37
- display: block;
38
- overflow: hidden;
39
- padding: 0 0 0 8px;
40
- height: 23px;
41
- border: 1px solid #aaa;
42
- border-radius: 5px;
43
- background-color: #fff;
44
- background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
45
- background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
46
- background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
47
- background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
48
- background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
49
- background-clip: padding-box;
50
- box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
51
- color: #444;
52
- text-decoration: none;
53
- white-space: nowrap;
54
- line-height: 24px;
55
- }
56
- .chosen-container-single .chosen-default {
57
- color: #999;
58
- }
59
- .chosen-container-single .chosen-single span {
60
- display: block;
61
- overflow: hidden;
62
- margin-right: 26px;
63
- text-overflow: ellipsis;
64
- white-space: nowrap;
65
- }
66
- .chosen-container-single .chosen-single-with-deselect span {
67
- margin-right: 38px;
68
- }
69
- .chosen-container-single .chosen-single abbr {
70
- position: absolute;
71
- top: 6px;
72
- right: 26px;
73
- display: block;
74
- width: 12px;
75
- height: 12px;
76
- background: url('chosen-sprite.png') -42px 1px no-repeat;
77
- font-size: 1px;
78
- }
79
- .chosen-container-single .chosen-single abbr:hover {
80
- background-position: -42px -10px;
81
- }
82
- .chosen-container-single.chosen-disabled .chosen-single abbr:hover {
83
- background-position: -42px -10px;
84
- }
85
- .chosen-container-single .chosen-single div {
86
- position: absolute;
87
- top: 0;
88
- right: 0;
89
- display: block;
90
- width: 18px;
91
- height: 100%;
92
- }
93
- .chosen-container-single .chosen-single div b {
94
- display: block;
95
- width: 100%;
96
- height: 100%;
97
- background: url('chosen-sprite.png') no-repeat 0px 2px;
98
- }
99
- .chosen-container-single .chosen-search {
100
- position: relative;
101
- z-index: 1010;
102
- margin: 0;
103
- padding: 3px 4px;
104
- white-space: nowrap;
105
- }
106
- .chosen-container-single .chosen-search input[type="text"] {
107
- -webkit-box-sizing: border-box;
108
- -moz-box-sizing: border-box;
109
- box-sizing: border-box;
110
- margin: 1px 0;
111
- padding: 4px 20px 4px 5px;
112
- width: 100%;
113
- height: auto;
114
- outline: 0;
115
- border: 1px solid #aaa;
116
- background: white url('chosen-sprite.png') no-repeat 100% -20px;
117
- background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
118
- background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
119
- background: url('chosen-sprite.png') no-repeat 100% -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
120
- background: url('chosen-sprite.png') no-repeat 100% -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
121
- background: url('chosen-sprite.png') no-repeat 100% -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
122
- font-size: 1em;
123
- font-family: sans-serif;
124
- line-height: normal;
125
- border-radius: 0;
126
- }
127
- .chosen-container-single .chosen-drop {
128
- margin-top: -1px;
129
- border-radius: 0 0 4px 4px;
130
- background-clip: padding-box;
131
- }
132
- .chosen-container-single.chosen-container-single-nosearch .chosen-search {
133
- position: absolute;
134
- left: -9999px;
135
- }
136
-
137
- /* @end */
138
- /* @group Results */
139
- .chosen-container .chosen-results {
140
- position: relative;
141
- overflow-x: hidden;
142
- overflow-y: auto;
143
- margin: 0 4px 4px 0;
144
- padding: 0 0 0 4px;
145
- max-height: 240px;
146
- -webkit-overflow-scrolling: touch;
147
- }
148
- .chosen-container .chosen-results li {
149
- display: none;
150
- margin: 0;
151
- padding: 5px 6px;
152
- list-style: none;
153
- line-height: 15px;
154
- }
155
- .chosen-container .chosen-results li.active-result {
156
- display: list-item;
157
- cursor: pointer;
158
- }
159
- .chosen-container .chosen-results li.disabled-result {
160
- display: list-item;
161
- color: #ccc;
162
- cursor: default;
163
- }
164
- .chosen-container .chosen-results li.highlighted {
165
- background-color: #3875d7;
166
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
167
- background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
168
- background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
169
- background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
170
- background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
171
- color: #fff;
172
- }
173
- .chosen-container .chosen-results li.no-results {
174
- display: list-item;
175
- background: #f4f4f4;
176
- }
177
- .chosen-container .chosen-results li.group-result {
178
- display: list-item;
179
- font-weight: bold;
180
- cursor: default;
181
- }
182
- .chosen-container .chosen-results li.group-option {
183
- padding-left: 15px;
184
- }
185
- .chosen-container .chosen-results li em {
186
- font-style: normal;
187
- text-decoration: underline;
188
- }
189
-
190
- /* @end */
191
- /* @group Multi Chosen */
192
- .chosen-container-multi .chosen-choices {
193
- position: relative;
194
- overflow: hidden;
195
- -webkit-box-sizing: border-box;
196
- -moz-box-sizing: border-box;
197
- box-sizing: border-box;
198
- margin: 0;
199
- padding: 0;
200
- width: 100%;
201
- height: auto !important;
202
- height: 1%;
203
- border: 1px solid #aaa;
204
- background-color: #fff;
205
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
206
- background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
207
- background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
208
- background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
209
- background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
210
- cursor: text;
211
- }
212
- .chosen-container-multi .chosen-choices li {
213
- float: left;
214
- list-style: none;
215
- }
216
- .chosen-container-multi .chosen-choices li.search-field {
217
- margin: 0;
218
- padding: 0;
219
- white-space: nowrap;
220
- }
221
- .chosen-container-multi .chosen-choices li.search-field input[type="text"] {
222
- margin: 1px 0;
223
- padding: 5px;
224
- height: 15px;
225
- outline: 0;
226
- border: 0 !important;
227
- background: transparent !important;
228
- box-shadow: none;
229
- color: #666;
230
- font-size: 100%;
231
- font-family: sans-serif;
232
- line-height: normal;
233
- border-radius: 0;
234
- }
235
- .chosen-container-multi .chosen-choices li.search-field .default {
236
- color: #999;
237
- }
238
- .chosen-container-multi .chosen-choices li.search-choice {
239
- position: relative;
240
- margin: 3px 0 3px 5px;
241
- padding: 3px 20px 3px 5px;
242
- border: 1px solid #aaa;
243
- border-radius: 3px;
244
- background-color: #e4e4e4;
245
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
246
- background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
247
- background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
248
- background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
249
- background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
250
- background-clip: padding-box;
251
- box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
252
- color: #333;
253
- line-height: 13px;
254
- cursor: default;
255
- }
256
- .chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
257
- position: absolute;
258
- top: 4px;
259
- right: 3px;
260
- display: block;
261
- width: 12px;
262
- height: 12px;
263
- background: url('chosen-sprite.png') -42px 1px no-repeat;
264
- font-size: 1px;
265
- }
266
- .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
267
- background-position: -42px -10px;
268
- }
269
- .chosen-container-multi .chosen-choices li.search-choice-disabled {
270
- padding-right: 5px;
271
- border: 1px solid #ccc;
272
- background-color: #e4e4e4;
273
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
274
- background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
275
- background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
276
- background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
277
- background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
278
- color: #666;
279
- }
280
- .chosen-container-multi .chosen-choices li.search-choice-focus {
281
- background: #d4d4d4;
282
- }
283
- .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
284
- background-position: -42px -10px;
285
- }
286
- .chosen-container-multi .chosen-results {
287
- margin: 0;
288
- padding: 0;
289
- }
290
- .chosen-container-multi .chosen-drop .result-selected {
291
- display: list-item;
292
- color: #ccc;
293
- cursor: default;
294
- }
295
-
296
- /* @end */
297
- /* @group Active */
298
- .chosen-container-active .chosen-single {
299
- border: 1px solid #5897fb;
300
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
301
- }
302
- .chosen-container-active.chosen-with-drop .chosen-single {
303
- border: 1px solid #aaa;
304
- -moz-border-radius-bottomright: 0;
305
- border-bottom-right-radius: 0;
306
- -moz-border-radius-bottomleft: 0;
307
- border-bottom-left-radius: 0;
308
- background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
309
- background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
310
- background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
311
- background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
312
- background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
313
- box-shadow: 0 1px 0 #fff inset;
314
- }
315
- .chosen-container-active.chosen-with-drop .chosen-single div {
316
- border-left: none;
317
- background: transparent;
318
- }
319
- .chosen-container-active.chosen-with-drop .chosen-single div b {
320
- background-position: -18px 2px;
321
- }
322
- .chosen-container-active .chosen-choices {
323
- border: 1px solid #5897fb;
324
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
325
- }
326
- .chosen-container-active .chosen-choices li.search-field input[type="text"] {
327
- color: #111 !important;
328
- }
329
-
330
- /* @end */
331
- /* @group Disabled Support */
332
- .chosen-disabled {
333
- opacity: 0.5 !important;
334
- cursor: default;
335
- }
336
- .chosen-disabled .chosen-single {
337
- cursor: default;
338
- }
339
- .chosen-disabled .chosen-choices .search-choice .search-choice-close {
340
- cursor: default;
341
- }
342
-
343
- /* @end */
344
- /* @group Right to Left */
345
- .chosen-rtl {
346
- text-align: right;
347
- }
348
- .chosen-rtl .chosen-single {
349
- overflow: visible;
350
- padding: 0 8px 0 0;
351
- }
352
- .chosen-rtl .chosen-single span {
353
- margin-right: 0;
354
- margin-left: 26px;
355
- direction: rtl;
356
- }
357
- .chosen-rtl .chosen-single-with-deselect span {
358
- margin-left: 38px;
359
- }
360
- .chosen-rtl .chosen-single div {
361
- right: auto;
362
- left: 3px;
363
- }
364
- .chosen-rtl .chosen-single abbr {
365
- right: auto;
366
- left: 26px;
367
- }
368
- .chosen-rtl .chosen-choices li {
369
- float: right;
370
- }
371
- .chosen-rtl .chosen-choices li.search-field input[type="text"] {
372
- direction: rtl;
373
- }
374
- .chosen-rtl .chosen-choices li.search-choice {
375
- margin: 3px 5px 3px 0;
376
- padding: 3px 5px 3px 19px;
377
- }
378
- .chosen-rtl .chosen-choices li.search-choice .search-choice-close {
379
- right: auto;
380
- left: 4px;
381
- }
382
- .chosen-rtl.chosen-container-single-nosearch .chosen-search,
383
- .chosen-rtl .chosen-drop {
384
- left: 9999px;
385
- }
386
- .chosen-rtl.chosen-container-single .chosen-results {
387
- margin: 0 0 4px 4px;
388
- padding: 0 4px 0 0;
389
- }
390
- .chosen-rtl .chosen-results li.group-option {
391
- padding-right: 15px;
392
- padding-left: 0;
393
- }
394
- .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
395
- border-right: none;
396
- }
397
- .chosen-rtl .chosen-search input[type="text"] {
398
- padding: 4px 5px 4px 20px;
399
- background: white url('chosen-sprite.png') no-repeat -30px -20px;
400
- background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
401
- background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
402
- background: url('chosen-sprite.png') no-repeat -30px -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
403
- background: url('chosen-sprite.png') no-repeat -30px -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
404
- background: url('chosen-sprite.png') no-repeat -30px -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
405
- direction: rtl;
406
- }
407
- .chosen-rtl.chosen-container-single .chosen-single div b {
408
- background-position: 6px 2px;
409
- }
410
- .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
411
- background-position: -12px 2px;
412
- }
413
-
414
- /* @end */
415
- /* @group Retina compatibility */
416
- @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
417
- .chosen-rtl .chosen-search input[type="text"],
418
- .chosen-container-single .chosen-single abbr,
419
- .chosen-container-single .chosen-single div b,
420
- .chosen-container-single .chosen-search input[type="text"],
421
- .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
422
- .chosen-container .chosen-results-scroll-down span,
423
- .chosen-container .chosen-results-scroll-up span {
424
- /*background-image: url('chosen-sprite@2x.png') !important;*/
425
- background-size: 52px 37px !important;
426
- background-repeat: no-repeat !important;
427
- }
428
- }
429
- /* @end */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/css/unbxd-magento.css DELETED
@@ -1,718 +0,0 @@
1
- .container{
2
- background-color: #f3f6f6;
3
- }
4
- .middle-nav-magento-dropdown, .background-grey{
5
- background-color: #F3F6F6 !important;
6
-
7
- }
8
- .middle-nav-magento-dropdown{
9
- /*top: 185px;*/
10
- width: 100%;
11
- }
12
- .top-200{
13
- top:200px !important;
14
- }
15
- .top-185{
16
- top: 185px !important;
17
- }
18
- .clickable-btn{
19
- cursor: pointer;
20
- }
21
- .magento-active{
22
- border-top: 0;
23
- border-bottom: 1px solid #4e5253;
24
- background: #45b5c1 url('../img/arrow-white.png') no-repeat 90%;
25
- }
26
- .site-key-help {
27
- display: none;
28
- top: 329px;
29
- position: absolute;
30
- left: 470px;
31
- }
32
- .secret-key-help{
33
- display: none;
34
- top: 329px;
35
- position: absolute;
36
- left: 870px;
37
- }
38
- .blue-link{
39
- color: #11b3c7;
40
- cursor: pointer;
41
- padding-top: 13px;
42
- padding-left: 10px;
43
- }
44
- .custom-attributes{
45
- display: none;
46
- }
47
- .middle-nav-text {
48
- padding-left: 5px;
49
- color: #3c3f40;
50
- font-size: 16px;
51
- font-weight: 400;
52
- padding-top: 5px;
53
- padding-bottom: 5px;
54
- margin-bottom: 0;
55
- }
56
- .chosen-drop{
57
- z-index: 999999 !important;
58
- }
59
- .capitalize{
60
- text-transform: capitalize;
61
- }
62
- .unbxd-table{
63
-
64
- border-right-style: solid;
65
- border-right-width: 1px;
66
- border-top-color: rgb(222, 226, 228);
67
- border-top-left-radius: 5px;
68
- border-top-right-radius: 5px;
69
- border-top-style: solid;
70
- border-top-width: 1px;
71
- box-sizing: border-box;
72
- color: rgb(51, 51, 51);
73
- font-family: proxima-nova, Arial, sans-serif;
74
- font-size: 14px;
75
- font-style: normal;
76
- font-variant: normal;
77
- font-weight: normal;
78
- line-height: 20px;
79
- margin-bottom: 20px;
80
- margin-left: 0px;
81
- margin-right: 0px;
82
- margin-top: 0px;
83
- max-width: 100%;
84
- padding-bottom: 0px;
85
- padding-left: 0px;
86
- padding-right: 0px;
87
- padding-top: 0px;
88
- width: 100%;
89
- }
90
- .unbxd-thead{
91
- color: rgb(51, 51, 51);
92
- font-family: proxima-nova, Arial, sans-serif;
93
- font-size: 14px;
94
- font-style: normal;
95
- font-variant: normal;
96
- font-weight: normal;
97
- height: 48px;
98
- line-height: 20px;
99
-
100
- }
101
- .unbxd-tr{
102
- border-bottom-color: rgb(222, 226, 228);
103
- border-collapse: separate;
104
- border-left-color: rgb(222, 226, 228);
105
- border-right-color: rgb(222, 226, 228);
106
- border-top-color: rgb(222, 226, 228);
107
- box-sizing: border-box;
108
- color: rgb(51, 51, 51);
109
- font-family: proxima-nova, Arial, sans-serif;
110
- font-size: 14px;
111
- font-style: normal;
112
- font-variant: normal;
113
- font-weight: normal;
114
- height: 48px;
115
- line-height: 20px;
116
- margin-bottom: 0px;
117
- margin-left: 0px;
118
- margin-right: 0px;
119
- margin-top: 0px;
120
- padding-bottom: 0px;
121
- padding-left: 0px;
122
- padding-right: 0px;
123
- padding-top: 0px;
124
- vertical-align: middle;
125
- }
126
- .unbxd-th{
127
-
128
- background-color: rgb(60, 63, 64);
129
- border-bottom-left-radius: 0px;
130
- border-bottom-right-radius: 0px;
131
- border-bottom-style: none;
132
- border-bottom-width: 0px;
133
- border-collapse: separate;
134
- border-right-color: rgb(255, 255, 255);
135
- border-right-style: solid;
136
- border-right-width: 1px;
137
- border-top-color: rgb(255, 255, 255);
138
- border-top-left-radius: 5px;
139
- border-top-right-radius: 0px;
140
- border-top-style: none;
141
- border-top-width: 0px;
142
- box-sizing: border-box;
143
- color: rgb(255, 255, 255);
144
- font-family: proxima-nova, Arial, sans-serif;
145
- font-size: 18px;
146
- font-style: normal;
147
- font-variant: normal;
148
- font-weight: normal;
149
- height: 48px;
150
- line-height: 25.7142868041992px;
151
- margin-bottom: 0px;
152
- margin-left: 0px;
153
- margin-right: 0px;
154
- margin-top: 0px;
155
- padding-bottom: 8px;
156
- padding-left: 20px;
157
- padding-right: 0px;
158
- padding-top: 15px;
159
- text-align: left;
160
- }
161
- .unbxd-tbody{
162
- border-bottom-color: rgb(222, 226, 228);
163
- border-collapse: separate;
164
- border-left-color: rgb(222, 226, 228);
165
- border-right-color: rgb(222, 226, 228);
166
- border-top-color: rgb(222, 226, 228);
167
- box-sizing: border-box;
168
- color: rgb(51, 51, 51);
169
- display: table-row-group;
170
- font-family: proxima-nova, Arial, sans-serif;
171
- font-size: 14px;
172
- font-style: normal;
173
- font-variant: normal;
174
- font-weight: normal;
175
- height: 549px;
176
- line-height: 20px;
177
- margin-bottom: 0px;
178
- margin-left: 0px;
179
- margin-right: 0px;
180
- margin-top: 0px;
181
- padding-bottom: 0px;
182
- padding-left: 0px;
183
- padding-right: 0px;
184
- padding-top: 0px;
185
- vertical-align: middle;
186
- width: 666px;
187
- }
188
- .unbxd-td{
189
- border-collapse: separate;
190
- border-right-color: rgb(222, 226, 228);
191
- border-right-style: solid;
192
- border-right-width: 1px;
193
- border-top-color: rgb(221, 221, 221);
194
- border-top-style: solid;
195
- border-top-width: 1px;
196
- box-sizing: border-box;
197
- color: rgb(92, 101, 106);
198
- display: table-cell;
199
- font-family: proxima-nova, Arial, sans-serif;
200
- font-size: 16px;
201
- font-style: normal;
202
- font-variant: normal;
203
- font-weight: normal;
204
- height: 72px;
205
- line-height: 22.8571434020996px;
206
- margin-bottom: 0px;
207
- margin-left: 0px;
208
- margin-right: 0px;
209
- margin-top: 0px;
210
- padding-bottom: 15px;
211
- padding-left: 23px;
212
- padding-right: 100px;
213
- padding-top: 15px;
214
- text-transform: capitalize;
215
-
216
- }
217
- .width-45{
218
- width: 45%;
219
- }
220
- .width-55{
221
- width: 55%;
222
- }
223
- .width-50{
224
- width: 50%;
225
- }
226
- .tr-row{
227
- width: 100%;
228
- height: 50px;
229
-
230
- }
231
- .td-right{
232
- padding-top: 2px;
233
- /*width: 55% !important;*/
234
- float: right;
235
- border-left: 1px solid #dee2e4 !important;
236
- border-bottom: 1px solid #dee2e4 !important;
237
- height: 100%;
238
- }
239
- .td-left{
240
- float: left;
241
- height: 100%;
242
- padding-top: 19px;
243
- padding-left: 32px;
244
- font-size: 17px;
245
- border-bottom: 1px solid #dee2e4 !important;
246
- }
247
- .magento-border-left{
248
- border-left: 1px solid #dee2e4 !important;
249
- }
250
- .magento-border-right{
251
- border-right: 1px solid #dee2e4 !important;
252
- }
253
- .unbxd-err{
254
- float: right;
255
- position: absolute;
256
- left: 694px;
257
- width: 200px;
258
- padding-top: 7px;
259
- color: red;
260
- }
261
- #selectSites + div.chosen-container {
262
- width: 100% !important;
263
- }
264
- .width-100{
265
- width: 100% !important;
266
- }
267
- .width-70{
268
- width: 70% !important;
269
- }
270
- .width-100 > .chosen-container{
271
- width: 100% !important;
272
- }
273
- .custom-attributes-td{
274
- padding: 0;
275
- padding-top: 4px;
276
- padding-right: 3px;
277
- }
278
- .remove-row{
279
- margin-top: 5px;
280
- margin-left: 5px;
281
- width: 21%;
282
- height: 35px;
283
- background-size: 100%;
284
- background-image: url("../img/delete-raw.png");
285
- }
286
- .remove-row:hover{
287
- background-image: url("../img/delete-raw-hover.png");
288
- }
289
- .add-row{
290
- margin-top: 5px;
291
- margin-left: 5px;
292
- width: 21%;
293
- height: 35px;
294
- background-size: 100%;
295
- background-image: url("../img/add-raw.png");
296
- }
297
- .add-row:hover{
298
- background-image: url("../img/add-raw-hover.png");
299
- }
300
- .disabled-btn{
301
- opacity: 0.5;
302
- cursor: default;
303
- pointer-events: none;
304
- }
305
- .width-62{
306
- width: 62%;
307
- }
308
- .unbxd-div-td{
309
- float: left;
310
- height: 100%;
311
- /* padding-top: 19px;
312
- padding-left: 32px;*/
313
- font-size: 17px;
314
- border-bottom: 1px solid #dee2e4 !important;
315
- border-left: 1px solid #dee2e4 !important;
316
- }
317
- .width-28{
318
- width: 28%;
319
- }
320
- .width-30{
321
- width: 30%;
322
- }
323
- .width-42{
324
- width: 42%;
325
- }
326
- .unbxd-hide{
327
- display: none !important;
328
- }
329
- .pad-top{
330
- padding-top: 20px;
331
- }
332
- .border-left-color{
333
- margin-left: 25px;
334
- margin-right: 25px;
335
- width: 96%;
336
- }
337
- .background-white{
338
- background-color: white;
339
- }
340
- .pad-left-45{
341
- padding-left: 45px;
342
- }
343
- .footer{
344
- position: fixed;
345
- width: 100%;
346
- padding-top: 19px;
347
- background: #efefef;
348
- bottom: -55px;
349
- }
350
- .footer:hover{
351
- bottom: -5px !important;
352
- }
353
- .pad-btm-10p{
354
- padding-bottom: 10%;
355
- }
356
- .chosen-container{
357
- width: 354px !important;
358
- }
359
- ._unbxd-err{
360
- color: red;
361
- padding-left: 13%;
362
- font-weight: bold;
363
- }
364
- ._unbxd-success{
365
- color: rgb(81, 157, 79);
366
- padding-left: 13%;
367
- font-weight: bold;
368
- }
369
- .unbxd-disabler{
370
- opacity: 0.5;
371
- margin-bottom: 5%;
372
- }
373
- .unbxd-cover{
374
- height: 70%;
375
- position: absolute;
376
- width: 100%;
377
- cursor: default;
378
- z-index: 999999;
379
- }
380
- .pad-left-msg{
381
- padding-left: 35%;
382
- }
383
- .width-25{
384
- width: 25%;
385
- }
386
- .width-35{
387
- width: 35%;
388
- }
389
- .width-40{
390
- width: 40%;
391
- }
392
- .pad-left-10{
393
- padding-left: 13px;
394
- }
395
- .pad-btm-0{
396
- padding-bottom: 0;
397
- }
398
- .height-100{
399
- height: 100%;
400
- }
401
- .unbxd-success-msg{
402
- color: green;
403
- font-weight: bold;
404
- font-size: 13px;
405
- }
406
- .unbxd-error-msg{
407
- color: red;
408
- font-weight: bold;
409
- font-size: 13px;
410
- }
411
- .unbxd-center-div{
412
- margin: 0 auto;
413
- width: 50%;
414
- text-align: center;
415
- }
416
- .pad-top-20{
417
- padding-top: 20px;
418
- }
419
- .pad-top-30{
420
- padding-top: 30px;
421
- }
422
- .inner-container-magento .popover, .inner-container-magento .popover-title, .inner-container-magento .popover-content {
423
- background: #3c3f40;
424
- color: rgb(255, 255, 255);
425
- font-family: proxima-nova, Arial, sans-serif;
426
- font-size: 16px;
427
- font-style: normal;
428
- font-variant: normal;
429
- font-weight: normal;
430
- border: none;
431
-
432
- }
433
- .inner-container-magento .popover-content{
434
- font-size: 14px;
435
- padding-top: 0;
436
- }
437
- .magento-number-text {
438
- width: 109px;
439
- }
440
- .box-35{
441
- width: 35px;
442
- height: 35px;
443
- }
444
- div.chosen-disabled > a.chosen-single > div {
445
- display: none;
446
- }
447
- div.chosen-container-single ,div.chosen-container-single > a.chosen-single {
448
- border: 0;
449
- background-color: #FFF;
450
- }
451
- div.chosen-container-single > a.chosen-single > div b {
452
- background: url(../img/dropdown-arrow.png) no-repeat 50%!important;
453
- width: 28px!important;
454
-
455
- }
456
- .bord-right{
457
- border-right: 1px solid #dee2e4 !important;
458
- }
459
- .chosen-disabled{
460
- opacity: 1 !important;
461
- }
462
- .delete-row{
463
- float: left;
464
- }
465
- .width-80{
466
- width: 80% !important;
467
- }
468
- .width-20{
469
- width: 20%;
470
- }
471
- div.cudtom-attr-rows div div.add-row{
472
- display: none;
473
- }
474
- div.cudtom-attr-rows > div:last-child div.add-row{
475
- display: block;
476
- }
477
- .width-38{
478
- width: 38%;
479
- }
480
- .pad-top-5{
481
- padding-top: 5px;
482
- }
483
- .width-64{
484
- width: 64%
485
- }
486
- .width-36{
487
- width: 36%
488
- }
489
- .btn-add-attribute, .btn-add-attribute:hover{
490
- background: #3b3e40 url('../img/add.png') no-repeat 97%;
491
- }
492
- .magento-analytics-tick
493
- {
494
- background:#45b5c1 url('../img/DONE.png') no-repeat 50%;
495
- }
496
- .magento-analytics-cross
497
- {
498
- background: url('../img/red-loading.gif') no-repeat;
499
- background-size: 92%;
500
- }
501
- .unbxd-top-strip{
502
- /*border-top: 2px solid #45b5c1;*/
503
- }
504
- .unbxd-green-border{
505
- border: 1px solid #47b28e;
506
- }
507
- .unbxd-green-border{
508
- border: 1px solid #db2727;
509
- }
510
- .magento-analytics-block{
511
- border: 1px solid #47b28e
512
- }
513
- .magento-analytics-block1 {
514
- border: 1px solid #db2727;
515
- }
516
- .word-break{
517
- word-wrap:break-word;
518
- }
519
- .height-75p{
520
- height: 95px;
521
- }
522
- .unbxd-text-center{
523
- padding-top: 10px;
524
- }
525
- .pad-left-15{
526
- padding-left: 15px;
527
- }
528
- .unbxd-text-verticle-center{
529
- display: flex;
530
- align-items: center;
531
- }
532
- .background-success{
533
- background-color: #47b28e;
534
- height: 102px;
535
- }
536
- .background-success div.magento-text{
537
- color: #FFF;
538
- }
539
- .succes-div{
540
- background:#47b28e url('../img/congrats.png') no-repeat 50%;
541
- width: 13%;
542
- height: 90px;
543
- }
544
- .pad-10{
545
- padding: 10px;
546
- }
547
- .success-head{
548
- font-weight: bold;
549
- font-size: 20px;
550
- }
551
- .magento-landing-block{
552
- background-color: rgb(60, 63, 64);
553
- }
554
- .blue-link-help{
555
- color: #45b5c1;
556
- cursor: pointer;
557
- }
558
- .cms-help{
559
- padding-bottom: 20px;
560
- font-size: 16px;
561
- padding-left: 30px;
562
- padding-top: 5px;
563
- }
564
- .hide-over-flow{
565
- overflow: hidden;
566
- }
567
- .width-60{
568
- width: 60%;
569
- }
570
- .unbxd-caps{
571
- text-transform: capitalize;
572
- }
573
- .pad-top-32{
574
- padding-top: 32px;
575
- }
576
- .background-dark-grey{
577
- background-color: rgba(210, 216, 216, 1) !important;
578
- }
579
- .unbxd-border{
580
- border: 1px solid #cddbde;
581
- }
582
- .z99{
583
- z-index: 99;
584
- }
585
- .magento-row-tabs{
586
- float:left;
587
- background-color: #f3f6f6;
588
- padding: 0;
589
- }
590
-
591
- ul.magento-conf-tabs li a {
592
- width: 25%;
593
- padding-left: 0 !important;
594
- font-weight: 400;
595
- font-size: 16px;
596
- border-right: 2px solid #B6BCBD;
597
- padding-left: 2% !important;
598
- cursor: pointer;
599
- }
600
- ul.magento-conf-tabs li:last-child > a{
601
- border-right: 0;
602
- }
603
- .magento-head-active{
604
- background-color: #FFF !important;
605
- }
606
- .txt-center{
607
- text-align: center;
608
- }
609
- .height-80{
610
- height: 80%;
611
- }
612
- .unbxd-bold{
613
- font-weight: bold;
614
- }
615
- .help-table-head{
616
- background-color: #FFF;
617
- color: black;
618
- }
619
- div#unbxdHelpRows div div {
620
- padding-left: 4%;
621
- }
622
- .border-right-rad{
623
- border-radius: 0;
624
- border-top-right-radius: 5px;
625
- }
626
- .unbxd-mar-left-30 {
627
- margin-left: 30% !important;
628
- }
629
- .unbxd-mar-btm-20{
630
- margin-bottom: 20px !important;
631
- }
632
- .note-head{
633
- color: black;
634
- font-weight: bold;
635
- }
636
- .font17{
637
- font-size: 17px;
638
- }
639
- div.middle{
640
- padding: 0;
641
- }
642
- .unbxd-container{
643
- border-top: 6px solid #45b5c1;
644
- background-color: #f3f6f6;
645
- float: left;
646
- overflow: hidden;
647
- width: 100%;
648
- width:100%;
649
- overflow:hidden;
650
- font-family: proxima-nova, Arial, sans-serif !important;
651
- }
652
- .width-17{
653
- width:17%;
654
- }
655
- .width-82{
656
- width: 82%;
657
- }
658
- .unbxd-left {
659
- float:left;
660
- position:relative;
661
- }
662
- .unbxd-right {
663
- float:right;
664
- position: relative;
665
- padding:3px;
666
- }
667
- .unbxd-left, .unbxd-right {
668
- padding-bottom:8000px;
669
- margin-bottom:-8000px;
670
- }
671
- .button-reauth-magento{
672
- font-weight: bolder;
673
- }
674
- .magento-success-block, .magento-label{
675
- font-weight: 300;
676
- }
677
- .chosen-drop, .no-radius{
678
- border-radius: 0px !important;
679
- }
680
- .magento-text{
681
- font-weight: 300;
682
- color: #707777;
683
- }
684
- .button-cancel-magento
685
- {
686
- background: #fff url('../img/cancel.png') no-repeat 10%;
687
- }
688
- .weight300{
689
- font-weight: 300;
690
- }
691
- .width-220{
692
- width: 220px;
693
- }
694
- .no-border-right{
695
- border-right: 0px !important;
696
- }
697
- .no-left-top-rad{
698
- border-top-left-radius: 0px;
699
- }
700
- div.popover div.arrow{
701
- background: transparent !important;
702
- }
703
- .popover.right .arrow:after {
704
- border-right-color: rgb(60, 63, 64) !important;
705
- }
706
- .popover-content{
707
- color: #F3F6F6;
708
- font-size: 14px;
709
- }
710
- ul.magento-conf-tabs .magento-head-active {
711
- background-color: #E1E6E6;
712
- }
713
- a.magento-head-active {
714
- color: #4e5356 !important;
715
- background: url('../img/level-arrow-active.png') no-repeat 92% !important;
716
- background-color: #FFF !important;
717
- }
718
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/img/Custom-platform.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/DONE.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/HEXAGON-Only.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/Magento-small.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/Magento.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/X-popup-hover.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/X-popup.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/X-pricing.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/add-actv.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/add-icon.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/add-inactv.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/add-raw-hover.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/add-raw.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/add.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-2.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-calendar-down.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-calendar-down1.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-down-disabled.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-down-enabled.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-down-white.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-down-white1.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-down-white2.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-down.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-left-white.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-left.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-mail-developer).png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-right-blue.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-right-gray.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-right-white.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-right.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up-black.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up-disabled.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up-enabled.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up-red.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up-white.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up-white1.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-up.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/arrow-white.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/authenticated.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/back.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/big-arrow-gray.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/bigcommerce.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/black-right-small.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/black-right-thick.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/btn-arrow-top.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/btn-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/button-arrow-blue.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/button-arrow-grey.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/button-arrow-red.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/cancel.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/card-image.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/card-image1.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/card-image2.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/card-image3.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/checkmark.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/close-analytics.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/close.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/color-pic.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/congrats-magento.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/congrats.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/copy-black.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/copy-white.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/cros.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/cross-2.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/cvv-number.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/delete-raw-hover.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/delete-raw.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/delete-red.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/delete.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/detect.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/down-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/down-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/drop-down.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/edit-magento.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/edit.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/eye-hover.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/eye.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/favicon.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/fill.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/group-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/help.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/icon-analytics.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/icon-info.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/icon-widget.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/install.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/integration-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/introduction-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/left-black.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/left-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/level-arrow-active.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/level-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/link-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/loader-32x32.gif DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/lock-image.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/logo-unbxd.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/logo.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/mail-new.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/mail.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/minus.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/nav-highlight-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/not-detected.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/oops.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/or.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/other-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/overview-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/plus.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/question-mark2.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/red-cross.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/red-loading.gif DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/remove.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/right-black.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/right-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/save.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/saved.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/search.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/settings.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/shopify.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-down.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/site-dropdownarrow-up.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/slider-bg.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/slider-button.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-down.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/sort-arrow-blue-up.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-down.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/sort-arrow-grey-up.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/spree.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/start-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/step-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/success.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tick-analytics.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tick-green.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tick-pricing.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tick.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tooltip-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tooltip-left-arrow.jpg DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/tooltip.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/up-arrow.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/up-black.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/up-gray.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/user.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/warning.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/x-widget.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/img/x.png DELETED
Binary file
skin/adminhtml/default/default/unbxd/js/app/analytics.js DELETED
@@ -1,56 +0,0 @@
1
- define([ "jquery"],
2
- function( $ ){
3
-
4
- var Analytics = {
5
-
6
- loadAnalyticsTab : function(){
7
-
8
- var ractiveAnalytics = new Ractive({
9
- el: 'innerContainr',
10
- template: '#tab3Template',
11
- data:{
12
- productClick : _unbxdObject.ractiveAnalytics.CLICKRANK || false,
13
- addToCartClick : _unbxdObject.ractiveAnalytics.ADDTOCART || false,
14
- productBuysClick : _unbxdObject.ractiveAnalytics.ORDER || false,
15
- _unbxdObject:_unbxdObject
16
- }
17
- });
18
-
19
- _unbxdObject.pollingId = window.setInterval(function(){
20
- $.get(_unbxdBaseurl+"unbxd/config/analyticsimpression?site="+site)
21
- .then(
22
- function(data){
23
- if(data.success){
24
- data = data.IntegrationDetails[0];
25
- ractiveAnalytics.set({
26
- productClick:data.CLICKRANK,
27
- addToCartClick:data.ADDTOCART,
28
- productBuysClick:data.ORDER
29
- })
30
- _unbxdObject.ractiveAnalytics = data;
31
-
32
- if(data.CLICKRANK && data.ADDTOCART && data.ORDER)
33
- clearInterval( _unbxdObject.pollingId );
34
- }
35
- },
36
- function(error){
37
- clearInterval( _unbxdObject.pollingId );
38
- });
39
- }, 3000);
40
-
41
- ractiveAnalytics.on({
42
- showWidgets:function( event ){
43
- activateLink( "four" );
44
- loadWidgetsTab();
45
- clearInterval( _unbxdObject.pollingId );
46
- }
47
- });
48
-
49
-
50
- }
51
-
52
- };
53
-
54
- return Analytics;
55
-
56
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/js/app/utils.js DELETED
@@ -1,33 +0,0 @@
1
- define([ "jquery"],
2
- function( $ ){
3
-
4
- var Utils = {
5
-
6
- activateLink : function( step ){
7
- _unbxdObject.activeStep = {};
8
- _unbxdObject.activeStep[step] = true;
9
- ractiveParent.update();
10
- },
11
-
12
- configureSelect : function(){
13
- var chosenObj = $('select[name="unbxd-select"]').chosen();
14
- chosenObj.trigger('chosen:updated');
15
- },
16
- //re render all chosen selects
17
- updateAllSelect : function(){
18
- $('select').trigger('chosen:updated');
19
- },
20
-
21
- saveFields : function( data ){
22
- return $.ajax({
23
- data: JSON.stringify({ "fields": data }) ,
24
- contentType:'application/json',
25
- type:'POST',
26
- url: _unbxdBaseurl + 'unbxd/config/fields?site='+site
27
- })
28
- }
29
-
30
- };
31
-
32
- return Utils;
33
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/js/main.js DELETED
@@ -1,253 +0,0 @@
1
-
2
-
3
- //using global jquery as requirejs module
4
- define('jquery', [], function() {
5
- return jQuery.noConflict();
6
- });
7
-
8
-
9
- requirejs.config({
10
- baseUrl: window._unbxdSkinurl + 'unbxd/js/lib',
11
- paths: {
12
- app: '../app'
13
- },
14
- });
15
-
16
- // Start the main app logic.
17
- requirejs([
18
- 'jquery',
19
- 'ractive',
20
- 'chosen',
21
- 'ractive-chosen',
22
- 'bootstrap-tooltip',
23
- 'app/credentails',
24
- 'app/catalog',
25
- 'app/analytics',
26
- 'app/widgets',
27
- 'app/utils'],
28
- function (
29
- $,
30
- Ractive,
31
- Chosen,
32
- RC,
33
- BC,
34
- Credentails,
35
- Catalog,
36
- Analytics,
37
- Widgets,
38
- Utils) {
39
-
40
-
41
- var baseUrl = _unbxdSkinurl +'unbxd/templates/';
42
- site = "",
43
- ractiveParent = {},
44
- _unbxdObject = {
45
- step1 : false,
46
- step2 : false,
47
- step3 : false,
48
- step4 : false,
49
- activeStep:{
50
- one:true
51
- },
52
- originalMapping:[],
53
- _unbxdSkinurl:_unbxdSkinurl,
54
- siteName : site,
55
- ractiveAnalytics:{}
56
- },
57
- unbxdMessages = {
58
- authSuccess:"The Unbxd Module has been authenticated. Proceed to Catalog Configuration",
59
- uploadSuccess:"Uploaded Catalog Data successfully. Proceed to Analytics integration"
60
- },
61
- unbxdDimensions = [
62
- {
63
- "value": "brand",
64
- "helpText": "The brand to which a product belongs to"
65
- },
66
- {
67
- "value": "imageUrl",
68
- "helpText": "Thumbnail - the URL of the image of a product that needs to be displayed in the recommendation widget, normally the thumnail"
69
- },
70
- {
71
- "value": "title",
72
- "helpText": "The title or name of the product e.g 'Blue Nike Shoe' "
73
- },
74
- {
75
- "value": "price",
76
- "helpText": "The display price of the product e.g $499"
77
- },
78
- {
79
- "value": "color",
80
- "helpText": "The color of the product e.g. 'Green t-shirt' "
81
- },
82
- {
83
- "value": "productUrl",
84
- "helpText": "The material the product is made of e.g. 'Cotton trousers' "
85
- },
86
- {
87
- "value": "sellingPrice",
88
- "helpText": "The display price of the product e.g $499"
89
- },
90
- {
91
- "value": "size",
92
- "helpText": "The size of the product e.g. 'Size 10' shoes"
93
- }
94
- ];
95
-
96
-
97
-
98
- var loadMain = function(){
99
-
100
- var $result = $.get( _unbxdBaseurl + 'unbxd/config/site');
101
- $result.then(function( data ){
102
-
103
- ractiveParent = new Ractive({
104
- el: 'container',
105
- template: '#template',
106
- data: { sites: ['a', 'b'],
107
- site:data.sites[0].name,
108
- _unbxdObject:_unbxdObject
109
- }
110
- });
111
-
112
- ractiveParent.observe('site', function(newValue, oldValue, keypath, s) {
113
- if( !oldValue)
114
- return;
115
-
116
- _unbxdObject.catalogData = null;
117
- _unbxdObject.originalMapping = [];
118
- _unbxdObject.secretKey = "";
119
- _unbxdObject.siteKey = "";
120
- _unbxdObject.step1 = false;
121
- Utils.activateLink( "one" );
122
- Credentails.loadCredentailsTab( _unbxdObject );
123
- clearInterval( _unbxdObject.pollingId );
124
-
125
- });
126
-
127
-
128
- ractiveParent.on({
129
-
130
- showCredentials: function ( event ) {
131
- Utils.activateLink( "one" );
132
- Credentails.loadCredentailsTab( _unbxdObject );
133
- clearInterval( _unbxdObject.pollingId );
134
- },
135
-
136
- showCatalog:function( event ){
137
- Utils.activateLink( "two" );
138
- Catalog.loadCatalogTab( _unbxdObject );
139
- clearInterval( _unbxdObject.pollingId );
140
- },
141
-
142
- showAnalytics:function( event ){
143
- Utils.activateLink( "three" );
144
- Analytics.loadAnalyticsTab( _unbxdObject );
145
- },
146
-
147
- showWidgets:function( event ){
148
- Utils.activateLink( "four" );
149
- Widgets.loadWidgetsTab( _unbxdObject );
150
- clearInterval( _unbxdObject.pollingId );
151
- }
152
-
153
- });
154
-
155
- site = data.sites[0].name;
156
- ractiveParent.set('sites', data.sites);
157
- data = data.sites[0];
158
- if(data.numDocs && data.numDocs > 0){
159
- _unbxdObject.step2 = true;
160
- _unbxdObject.products = site.numDocs
161
- }
162
-
163
- Credentails.loadCredentailsTab( _unbxdObject );
164
- Utils.updateAllSelect();
165
-
166
-
167
- })
168
- }//load main
169
-
170
- $.get( baseUrl + 'credentails.html')
171
- .then(function( template ){
172
- $('#tab1Template').text( template );
173
- //load tab2
174
- $.get( baseUrl + 'catalog.html')
175
- .then(function( template ){
176
- $('#tab2Template').text( template );
177
- //load tab3
178
- $.get( baseUrl + 'analytics.html')
179
- .then(function( template ){
180
- $('#tab3Template').text( template );
181
- //load tab4
182
- $.get( baseUrl + 'widgets.html')
183
- .then(function( template ){
184
- $('#tab4Template').text( template );
185
- //load row
186
- $.get( baseUrl + 'custom.html')
187
- .then(function( template ){
188
- $('#rowTemplate').text( template );
189
- loadMain();
190
- })
191
- });
192
- });
193
- });
194
- });
195
-
196
-
197
-
198
-
199
-
200
- Ractive.decorators.chosen.type.site = function (node) {
201
- return {
202
- disable_search_threshold:5
203
- }
204
- };
205
-
206
-
207
- });
208
-
209
-
210
- Array.prototype.map = function(callback, thisArg) {
211
-
212
- var T, A, k;
213
-
214
- if (this == null) {
215
- throw new TypeError(" this is null or not defined");
216
- }
217
-
218
- var O = Object(this);
219
- var len = O.length >>> 0;
220
-
221
- if (typeof callback !== "function") {
222
- throw new TypeError(callback + " is not a function");
223
- }
224
-
225
- if (arguments.length > 1) {
226
- T = thisArg;
227
- }
228
-
229
- A = new Array(len);
230
- k = 0;
231
- while (k < len) {
232
- var kValue, mappedValue;
233
- if (k in O) {
234
- kValue = O[k];
235
- mappedValue = callback.call(T, kValue, k, O);
236
- A[k] = mappedValue;
237
- }
238
- k++;
239
- }
240
-
241
- return A;
242
- };
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
-
253
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/{css → recscore/css}/app.css RENAMED
@@ -1,193 +1,4 @@
1
- /* Grid containing columns of 20px each*/
2
- .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-13, .col-xs-14, .col-xs-15, .col-xs-16, .col-xs-17, .col-xs-18, .col-xs-19, .col-xs-20, .col-xs-21, .col-xs-22, .col-xs-23, .col-xs-24, .col-xs-25, .col-xs-26, .col-xs-27, .col-xs-28, .col-xs-29, .col-xs-30, .col-xs-31, .col-xs-32, .col-xs-33, .col-xs-34, .col-xs-35, .col-xs-36, .col-xs-37, .col-xs-38, .col-xs-39, .col-xs-40, .col-xs-41, .col-xs-42, .col-xs-43, .col-xs-44, .col-xs-45, .col-xs-46, .col-xs-47, .col-xs-48, .col-xs-49, .col-xs-50, .col-xs-51, .col-xs-52, .col-xs-53, .col-xs-54, .col-xs-55, .col-xs-56, .col-xs-57, .col-xs-58, .col-xs-59, .col-xs-60, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-13, .col-sm-14, .col-sm-15, .col-sm-16, .col-sm-17, .col-sm-18, .col-sm-19, .col-sm-20, .col-sm-21, .col-sm-22, .col-sm-23, .col-sm-24, .col-sm-25, .col-sm-26, .col-sm-27, .col-sm-28, .col-sm-29, .col-sm-30, .col-sm-31, .col-sm-32, .col-sm-33, .col-sm-34, .col-sm-35, .col-sm-36, .col-sm-37, .col-sm-38, .col-sm-39, .col-sm-40, .col-sm-41, .col-sm-42, .col-sm-43, .col-sm-44, .col-sm-45, .col-sm-46, .col-sm-47, .col-sm-48, .col-sm-49, .col-sm-50, .col-sm-51, .col-sm-52, .col-sm-53, .col-sm-54, .col-sm-55, .col-sm-56, .col-sm-57, .col-sm-58, .col-sm-59, .col-sm-60, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-13, .col-md-14, .col-md-15, .col-md-16, .col-md-17, .col-md-18, .col-md-19, .col-md-20, .col-md-21, .col-md-22, .col-md-23, .col-md-24, .col-md-25, .col-md-26, .col-md-27, .col-md-28, .col-md-29, .col-md-30, .col-md-31, .col-md-32, .col-md-33, .col-md-34, .col-md-35, .col-md-36, .col-md-37, .col-md-38, .col-md-39, .col-md-40, .col-md-41, .col-md-42, .col-md-43, .col-md-44, .col-md-45, .col-md-46, .col-md-47, .col-md-48, .col-md-49, .col-md-50, .col-md-51, .col-md-52, .col-md-53, .col-md-54, .col-md-55, .col-md-56, .col-md-57, .col-md-58, .col-md-59, .col-md-60, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-13, .col-lg-14, .col-lg-15, .col-lg-16, .col-lg-17, .col-lg-18, .col-lg-19, .col-lg-20, .col-lg-21, .col-lg-22, .col-lg-23, .col-lg-24, .col-lg-25, .col-lg-26, .col-lg-27, .col-lg-28, .col-lg-29, .col-lg-30, .col-lg-31, .col-lg-32, .col-lg-33, .col-lg-34, .col-lg-35, .col-lg-36, .col-lg-37, .col-lg-38, .col-lg-39, .col-lg-40, .col-lg-41, .col-lg-42, .col-lg-43, .col-lg-44, .col-lg-45, .col-lg-46, .col-lg-47, .col-lg-48, .col-lg-49, .col-lg-50, .col-lg-51, .col-lg-52, .col-lg-53, .col-lg-54, .col-lg-55, .col-lg-56, .col-lg-57, .col-lg-58, .col-lg-59, .col-lg-60 {
3
- position: relative;
4
- min-height: 1px;
5
- padding-right: 15px;
6
- padding-left: 15px;
7
- }
8
- .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-13, .col-xs-14, .col-xs-15, .col-xs-16, .col-xs-17, .col-xs-18, .col-xs-19, .col-xs-20, .col-xs-21, .col-xs-22, .col-xs-23, .col-xs-24, .col-xs-25, .col-xs-26, .col-xs-27, .col-xs-28, .col-xs-29, .col-xs-30, .col-xs-31, .col-xs-32, .col-xs-33, .col-xs-34, .col-xs-35, .col-xs-36, .col-xs-37, .col-xs-38, .col-xs-39, .col-xs-40, .col-xs-41, .col-xs-42, .col-xs-43, .col-xs-44, .col-xs-45, .col-xs-46, .col-xs-47, .col-xs-48, .col-xs-49, .col-xs-50, .col-xs-51, .col-xs-52, .col-xs-53, .col-xs-54, .col-xs-55, .col-xs-56, .col-xs-57, .col-xs-58, .col-xs-59 {
9
- float: left;
10
- }
11
- .col-xs-1 {
12
- width: 1.666666666666667%;
13
- }
14
- .col-xs-2 {
15
- width: 3.333333333333333%;
16
- }
17
- .col-xs-3 {
18
- width: 5%;
19
- }
20
- .col-xs-4 {
21
- width: 6.666666666666667%;
22
- }
23
- .col-xs-5 {
24
- width: 8.333333333333333%;
25
- }
26
- .col-xs-6 {
27
- width: 10%;
28
- }
29
- .col-xs-7 {
30
- width: 11.66666666666667%;
31
- }
32
- .col-xs-8 {
33
- width: 13.33333333333333%;
34
- }
35
- .col-xs-9 {
36
- width: 15%;
37
- }
38
- .col-xs-10 {
39
- width: 16.66666666666667%;
40
- }
41
- .col-xs-11 {
42
- width: 18.33333333333333%;
43
- }
44
- .col-xs-12 {
45
- width: 20%;
46
- }
47
- .col-xs-13 {
48
- width: 21.66666666666667%;
49
- }
50
- .col-xs-14 {
51
- width: 23.33333333333333%;
52
- }
53
- .col-xs-15 {
54
- width: 25%;
55
- }
56
- .col-xs-16 {
57
- width: 26.66666666666667%;
58
- }
59
- .col-xs-17 {
60
- width: 28.33333333333333%;
61
- }
62
- .col-xs-18 {
63
- width: 30%;
64
- }
65
- .col-xs-19 {
66
- width: 31.66666666666667%;
67
- }
68
- .col-xs-20 {
69
- width: 33.33333333333333%;
70
- }
71
- .col-xs-21 {
72
- width: 35%;
73
- }
74
- .col-xs-22 {
75
- width: 36.66666666666667%;
76
- }
77
- .col-xs-23 {
78
- width: 38.33333333333333%;
79
- }
80
- .col-xs-24 {
81
- width: 40%;
82
- }
83
- .col-xs-25 {
84
- width: 41.66666666666667%;
85
- }
86
- .col-xs-26 {
87
- width: 43.33333333333333%;
88
- }
89
- .col-xs-27 {
90
- width: 45%;
91
- }
92
- .col-xs-28 {
93
- width: 46.66666666666667%;
94
- }
95
- .col-xs-29 {
96
- width: 48.33333333333333%;
97
- }
98
- .col-xs-30 {
99
- width: 50%;
100
- }
101
- .col-xs-31 {
102
- width: 51.66666666666667%;
103
- }
104
- .col-xs-32 {
105
- width: 53.33333333333333%;
106
- }
107
- .col-xs-33 {
108
- width: 55%;
109
- }
110
- .col-xs-34 {
111
- width: 56.66666666666667%;
112
- }
113
- .col-xs-35 {
114
- width: 58.33333333333333%;
115
- }
116
- .col-xs-36 {
117
- width: 60%;
118
- }
119
- .col-xs-37 {
120
- width: 61.66666666666667%;
121
- }
122
- .col-xs-38 {
123
- width: 63.33333333333333%;
124
- }
125
- .col-xs-39 {
126
- width: 65%;
127
- }
128
- .col-xs-40 {
129
- width: 66.66666666666667%;
130
- }
131
- .col-xs-41 {
132
- width: 68.33333333333333%;
133
- }
134
- .col-xs-42 {
135
- width: 70%;
136
- }
137
- .col-xs-43 {
138
- width: 71.66666666666667%;
139
- }
140
- .col-xs-44 {
141
- width: 73.33333333333333%;
142
- }
143
- .col-xs-45 {
144
- width: 75%;
145
- }
146
- .col-xs-46 {
147
- width: 76.66666666666667%;
148
- }
149
- .col-xs-47 {
150
- width: 78.33333333333333%;
151
- }
152
- .col-xs-48 {
153
- width: 80%;
154
- }
155
- .col-xs-49 {
156
- width: 81.66666666666667%;
157
- }
158
- .col-xs-50 {
159
- width: 83.33333333333333%;
160
- }
161
- .col-xs-51 {
162
- width: 85%;
163
- }
164
- .col-xs-52 {
165
- width: 86.66666666666667%;
166
- }
167
- .col-xs-53 {
168
- width: 88.33333333333333%;
169
- }
170
- .col-xs-54 {
171
- width: 90%;
172
- }
173
- .col-xs-55 {
174
- width: 91.66666666666667%;
175
- }
176
- .col-xs-56 {
177
- width: 93.33333333333333%;
178
- }
179
- .col-xs-57 {
180
- width: 95%;
181
- }
182
- .col-xs-58 {
183
- width: 96.66666666666667%;
184
- }
185
- .col-xs-59 {
186
- width: 98.33333333333333%;
187
- }
188
- .col-xs-60 {
189
- width: 100%;
190
- }
191
  /*common mobile*/
192
  .blue-link {
193
  font-size: 14px;
@@ -225,7 +36,7 @@ label.label-radio, label.label-checkbox {
225
  label.label-radio.inactive, label.label-checkbox.inactive {
226
  cursor: default;
227
  }
228
- input[type="radio"], input[type="checkbox"] {
229
  display: none;
230
  }
231
  label.label-radio:before, label.label-checkbox:before {
@@ -411,7 +222,7 @@ label
411
  margin: 0;
412
  }
413
  .pad-0 {
414
- padding: 0;
415
  }
416
  .pad-top-5 {
417
  padding-top: 5px;
@@ -462,7 +273,7 @@ label
462
  padding-bottom: 10px;
463
  }
464
  .pad-btm-20 {
465
- padding-bottom: 20px;
466
  }
467
  .pad-btm-40 {
468
  padding-bottom: 40px;
@@ -1455,235 +1266,7 @@ table.table-widget {
1455
  text-align: right;
1456
  color: #4f5555;
1457
  }
1458
- .table-widget tbody > tr:nth-child(2), .table-widget.sub-widget tbody > tr:first-child {
1459
- background-color: #1a1c1c;
1460
- }
1461
- .table-widget tbody > tr:nth-child(2)> td, .table-widget.sub-widget tbody > tr:first-child > td {
1462
- color: #c9cfdb !important;
1463
- }
1464
- .table-widget tbody > tr > td:first-child {
1465
- border-top-left-radius: 5px;
1466
- border-bottom-left-radius: 5px;
1467
- }
1468
- .table-widget tbody > tr > td:nth-child(2) {
1469
- text-align: left;
1470
- padding-left: 20px;
1471
- }
1472
- .table-widget tbody > tr > td:last-child {
1473
- border-top-right-radius: 5px;
1474
- border-bottom-right-radius: 5px;
1475
- text-align: right;
1476
- }
1477
- .outer-sub-widget {
1478
- position: absolute;
1479
- right: 40px;
1480
- left: 80px;
1481
- }
1482
- .sub-widget {
1483
- margin-top: 0px;
1484
- }
1485
- .table-widget.sub-widget tbody > tr {
1486
- background-color: #f7f1f1;
1487
- height: 36px;
1488
- padding-top: 8px;
1489
- font-size: 14px;
1490
- }
1491
- .table-widget.sub-widget tbody > tr > td {
1492
- color: #4f5555 !important;
1493
- }
1494
-
1495
- .table-widget.sub-widget tbody > tr > td:first-child {
1496
- width: 40px !important;
1497
- }
1498
- #popup-click, .popup-click {
1499
- border-top-left-radius: 5px;
1500
- border-bottom-left-radius: 5px;
1501
- background: #c9cfdb url('../img/arrow-down-white.jpg') no-repeat 50%;
1502
- width: 40px !important;
1503
- cursor: pointer;
1504
- float: left;
1505
- width: 40px;
1506
- height: 36px;
1507
- }
1508
- .table-widget.sub-widget tbody > tr > td:nth-child(2) {
1509
- width: 160px;
1510
- }
1511
- .table-widget.sub-widget tbody > tr > td:nth-child(3) {
1512
- width: 70px;
1513
- }
1514
- .table-widget.sub-widget tbody > tr > td:nth-child(4) {
1515
- width: 145px;
1516
- }
1517
- .table-widget.sub-widget tbody > tr > td:nth-child(5) {
1518
- width: 130px;
1519
- }
1520
- .table-widget.sub-widget tbody > tr > td:nth-child(6) {
1521
- width: 130px;
1522
- }
1523
- .table-widget.sub-widget tbody > tr > td:nth-child(7) {
1524
- width: 95px;
1525
- }
1526
- .table-widget.sub-widget tbody > tr > td:nth-child(8) {
1527
- width: 120px;
1528
- }
1529
- .table-widget tbody > tr > th:last-child {
1530
- width: 140px !important;
1531
- text-align: left;
1532
- }
1533
-
1534
- .image-down-disabled {
1535
- background: url('../img/sort-arrow-blue-down.png') no-repeat;
1536
- width: 10px;
1537
- height: 12px;
1538
- float: right;
1539
- margin-top: 2px;
1540
- cursor: pointer;
1541
- margin-left: 7px;
1542
- }
1543
- .image-up-disabled {
1544
- background: url('../img/sort-arrow-blue-up.png') no-repeat;
1545
- width: 10px;
1546
- height: 12px;
1547
- float: right;
1548
- margin-top: 2px;
1549
- cursor: pointer;
1550
- }
1551
- .image-down-enabled {
1552
- background: url('../img/sort-arrow-grey-down.png') no-repeat;
1553
- width: 10px;
1554
- height: 12px;
1555
- float: right;
1556
- cursor: pointer;
1557
- margin-left: 7px;
1558
- margin-top: 2px;
1559
- }
1560
- .image-up-enabled {
1561
- background: url('../img/sort-arrow-grey-up.png') no-repeat;
1562
- width: 10px;
1563
- height: 12px;
1564
- float: right;
1565
- cursor: pointer;
1566
- margin-top: 2px;
1567
- }
1568
- /* tooltip starts*/
1569
- #popUpText {
1570
- display: none;
1571
- position: relative;
1572
- float: left;
1573
- width: 240px;
1574
- z-index: 999 !important;
1575
- }
1576
- .arrow {
1577
- float: left;
1578
- width: 40px;
1579
- width: 40px;
1580
- height: 36px;
1581
- border-top-left-radius: 5px;
1582
- border-bottom-left-radius: 5px;
1583
- background: #222424 url('../img/arrow-up-white1.jpg') no-repeat 50%;
1584
- }
1585
- .list {
1586
- height: 200px;
1587
- float: left;
1588
- background-color: #181919;
1589
- }
1590
- ul.category-list {
1591
- width: 200px;
1592
- list-style-type: none;
1593
- padding: 0;
1594
- margin: 0;
1595
- height: 200px;
1596
- z-index: 999;
1597
- }
1598
- ul.category-list li {
1599
- color: #b3b3b3;
1600
- font-size: 14px;
1601
- border-bottom: 1px solid #232424;
1602
- text-align: left;
1603
- }
1604
- ul.category-list li:first-child {
1605
- color: #656565;
1606
- font-size: 12px;
1607
- padding: 15px 0px 15px 20px;
1608
- border-bottom: none;
1609
- }
1610
- ul.category-list li:last-child {
1611
-
1612
- }
1613
- /* tooltip ends*/
1614
- .tooltip-toggle {
1615
- padding: 12px 0px 12px 20px;
1616
- width: 200px;
1617
- border: none;
1618
- cursor: pointer;
1619
- text-align: left;
1620
- }
1621
- .tooltip-toggle:hover {
1622
- background-color: #232424;
1623
- /* background: #232424 url('../img/arrow-right-gray.jpg') no-repeat 90%;*/
1624
- }
1625
- /*.tooltip-toggle:hover~ul.tooltip-menu
1626
- {
1627
- display: block !important;
1628
-
1629
- }*/
1630
- .btn-group.open .tooltip-toggle {
1631
- -webkit-box-shadow: none;
1632
- box-shadow: none;
1633
- border-bottom: none;
1634
- border-bottom-left-radius: 0px;
1635
- border-bottom-right-radius: 0px;
1636
- border-bottom: none;
1637
- cursor: pointer;
1638
- background: #232424 url('../img/arrow-right-gray.jpg') no-repeat 90%;
1639
- }
1640
-
1641
- .tooltip-menu {
1642
- width: 160px !important;
1643
- border: none;
1644
- position: absolute;
1645
- top: -1%;
1646
- left: 200px;
1647
- z-index: 1000;
1648
- display: none;
1649
- float: left;
1650
- padding: 0;
1651
- margin: 0;
1652
- height: 125px;
1653
- font-size: 14px;
1654
- list-style: none;
1655
- border-radius: 0px;
1656
- -webkit-box-shadow: none;
1657
- box-shadow: none;
1658
- border-top: none;
1659
- background-color: #232424;
1660
- font-family: proxima-nova, Arial, sans-serif;
1661
- font-weight: 400;
1662
- font-style: normal;
1663
- color: #fff !important;
1664
- padding-top: 10px;
1665
- display: none;
1666
- }
1667
- ul.tooltip-menu li {
1668
- padding: 0px 0px 10px 15px !important;
1669
- border-bottom: none;
1670
- }
1671
- ul.tooltip-menu > li > a {
1672
- text-align: left;
1673
- display: table-cell;
1674
- vertical-align: middle;
1675
- font-size: 14px;
1676
- color: #b3b3b3 !important;
1677
- text-decoration: none !important;
1678
- }
1679
- ul.tooltip-menu > li > a:hover {
1680
-
1681
- color: #3b3c3c !important;
1682
- }
1683
 
1684
- .open > .tooltip-menu {
1685
- display: block;
1686
- }
1687
 
1688
  /* common keyword list mobile ends*/
1689
  /* payment mobile*/
@@ -2095,7 +1678,8 @@ table.table-popup {
2095
 
2096
  .header-pricing {
2097
  padding: 60px 0px 40px 0px;
2098
- font-family: proxima-nova,Arial, sans-serif;
 
2099
  }
2100
  .top-header-pricing {
2101
  font-weight: 300;
@@ -2105,18 +1689,18 @@ margin-bottom: 20px;
2105
  }
2106
  .center-pricing-bottom
2107
  {
2108
- font-family: proxima-nova,Arial, sans-serif;
2109
  }
2110
  .top-center-pricing
2111
  {
2112
  font-size: 24px;
2113
- font-weight: 400;
2114
  margin-bottom: 10px;
2115
  }
2116
  .middle-center-pricing
2117
  {
2118
  font-size: 16px;
2119
- font-weight: 600;
2120
  color: #7f8585;
2121
  margin-bottom: 30px;
2122
  }
@@ -2128,7 +1712,7 @@ color: #768484;
2128
  .container-pricing
2129
  {
2130
  padding: 60px 0px;
2131
- font-family: proxima-nova,Arial, sans-serif;
2132
  }
2133
  .center-pricing-top
2134
  {
@@ -2406,7 +1990,7 @@ border-top: none;
2406
  {
2407
  background-color: #fff;
2408
  padding: 13px 75px 13px 25px;
2409
- font-family: proxima-nova,Arial, sans-serif;
2410
  }
2411
  .nav-dashboard>li>a
2412
  {
@@ -2430,7 +2014,7 @@ border-top: none;
2430
  background-color: #fff;
2431
  border: 1px solid #dedede;
2432
  padding-top: 8px;
2433
- font-weight: 600;
2434
  }
2435
 
2436
  .dashboard-menu-dropdown {
@@ -2451,7 +2035,7 @@ border-top: none;
2451
  box-shadow: none;
2452
  font-weight: medium;
2453
  background-color: transparent !important;
2454
- font-weight: 600;
2455
  color: #464646;
2456
  }
2457
  .dashboard-menu-dropdown > li > a {
@@ -2464,7 +2048,7 @@ border-top: none;
2464
  border-right: 1px solid #dedede;
2465
  height: 40px;
2466
  font-size:16px;
2467
- font-weight: 600;
2468
  color: #464646;
2469
  }
2470
  .dashboard-menu-dropdown > li:last-child > a {
@@ -2543,7 +2127,7 @@ border-top: none;
2543
  {
2544
  margin-top: 10px;
2545
  font-size: 16px;
2546
- font-weight: 600;
2547
  color: #4d4d4d !important;
2548
 
2549
 
@@ -2656,7 +2240,7 @@ ul.hor-tabs-inner li a.hor-tabs-inner-enabled {
2656
  {
2657
  color: #4e5356;
2658
  font-size: 18px;
2659
- font-weight: 600;
2660
  }
2661
  .in-grp-merchandise
2662
  {
@@ -2794,7 +2378,7 @@ margin-top:-3px;
2794
  {
2795
  color: #4d4d4d;
2796
  font-size:16px;
2797
- font-weight:600;
2798
  padding-left:12px;
2799
  border:1px solid #ece7e7;
2800
  background-color: #fff;
@@ -2807,7 +2391,7 @@ margin-top:-3px;
2807
  border-right: 1px solid #ece7e7;
2808
  height: 40px;
2809
  font-size:16px;
2810
- font-weight: 600;
2811
  border-top:none;
2812
  }
2813
  .merchandise-menu-dropdown > li:first-child > a
@@ -2839,7 +2423,7 @@ margin-top:-3px;
2839
  padding-top: 3px;
2840
  color: #fff !important;
2841
  font-size: 16px;
2842
- font-weight:600;
2843
  text-decoration: none;
2844
  vertical-align: middle;
2845
  border-right: none;
@@ -3025,7 +2609,7 @@ ul.widget-conf li a.widget-conf-enabled {
3025
 
3026
  background: #ac1d1c url('../img/arrow-white-top-button.png') no-repeat 93%;
3027
  font-family: proxima-nova, Arial, sans-serif !important;
3028
- font-weight: 600; font-size: 16px;font-style: normal;
3029
  -webkit-border-radius: 5px;
3030
  -moz-border-radius: 5px;
3031
  border-radius: 5px;
@@ -3686,7 +3270,7 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3686
  position: relative;
3687
  display: inline-block;
3688
  vertical-align: middle;
3689
- font-size: 16px;
3690
  zoom: 1;
3691
  *display: inline;
3692
  -webkit-user-select: none;
@@ -3701,18 +3285,26 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3701
  width: 360px !important;
3702
  }
3703
  .chosen-container .chosen-drop {
3704
- position: absolute;
3705
  top: 100%;
3706
- left: -9999px;
3707
  z-index: 1010;
3708
  -webkit-box-sizing: border-box;
3709
  -moz-box-sizing: border-box;
3710
  box-sizing: border-box;
3711
- width: 100%;
3712
- border: 1px solid #ece7e7;
3713
  border-top: 0;
3714
- background: #fdfdfd;
3715
  box-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
3716
  }
3717
  .chosen-container.chosen-with-drop .chosen-drop {
3718
  left: 0;
@@ -3732,7 +3324,7 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3732
  box-shadow: none;
3733
  background-color: #fdfdfd;
3734
  background-clip: padding-box;
3735
- color: #1a1c1c;
3736
  text-decoration: none;
3737
  white-space: nowrap;
3738
  vertical-align: middle !important;
@@ -3772,8 +3364,9 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3772
  height: 40px !important;
3773
  vertical-align: middle;
3774
  display: table-cell;
3775
- border-bottom: 1px solid #ece7e7;
3776
- width: 360px;
 
3777
  }
3778
  .chosen-container-single .chosen-search input[type="text"] {
3779
  -webkit-box-sizing: border-box;
@@ -3782,7 +3375,7 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3782
  margin: 1px 0;
3783
  padding: 4px 20px 4px 5px;
3784
  width: 100%;
3785
- height: auto;
3786
  outline: 0;
3787
  border: none;
3788
  font-size: 16px;
@@ -3793,10 +3386,11 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3793
  background: #fdfdfd;
3794
  }
3795
  .chosen-container-single .chosen-drop {
3796
- margin-top: -1px;
3797
  border-radius: 0 0 4px 4px;
3798
- background-clip: padding-box;
3799
  border-top: 1px solid #ece7e7;
 
3800
  }
3801
  .chosen-container-single.chosen-container-single-nosearch .chosen-search {
3802
  position: absolute;
@@ -3951,6 +3545,7 @@ input.input-layout::-webkit-input-placeholder { color:#4f5555; font-size:14px;}
3951
  }
3952
  .chosen-container-active .chosen-single {
3953
  border: 1px solid #ece7e7;
 
3954
  }
3955
  .chosen-container-active.chosen-with-drop .chosen-single {
3956
  border: 1px solid #ece7e7;
@@ -4197,13 +3792,13 @@ ul.block-account li ul.account-list li a.account-list-active {
4197
  }
4198
  .inner-container-magento
4199
  {
4200
- /*position: absolute;*/
4201
  left:240px;
4202
  right:0;
4203
  padding:0px;
4204
  background-color:#f3f6f6;
4205
- font-family: proxima-nova, Arial, sans-serif !important;
4206
- /*top:140px; */
 
4207
  }
4208
  .button-black-magento
4209
  {
@@ -4214,7 +3809,7 @@ height:40px;
4214
  text-align: center;
4215
  color: #fdfdfd !important;
4216
  font-size:16px;
4217
- font-weight:600;
4218
  padding-top:9px;
4219
  }
4220
  .button-black-magento:hover
@@ -4243,7 +3838,7 @@ height:40px;
4243
  text-align: center;
4244
  color: #fdfdfd !important;
4245
  font-size:16px;
4246
- font-weight:600;
4247
  padding-top:9px;
4248
  }
4249
  .button-black-magento1:hover
@@ -4275,20 +3870,20 @@ box-shadow:inset 0px 1px 1px 0px #6d6d6d;
4275
  .magento-inner-block
4276
  {
4277
  border: 1px solid #cddbde;
4278
- padding:40px 50px 30px 50px;
4279
  background-color: #fff;
4280
  }
4281
  .magento-head
4282
  {
4283
- color:#4e5356;
4284
- font-size:30px;
4285
- font-weight:400;
4286
  }
4287
  .magento-subhead
4288
  {
4289
- color:#596670;
4290
- font-size:24px;
4291
- font-weight:400;
4292
  }
4293
  .font-16
4294
  {
@@ -4300,14 +3895,14 @@ box-shadow:inset 0px 1px 1px 0px #6d6d6d;
4300
  }
4301
  .magento-text
4302
  {
4303
- color:#929494;
4304
- font-size:18px;
4305
- font-weight:400;
 
4306
  }
4307
  .text1
4308
  {
4309
- color:#4e5356;
4310
-
4311
  }
4312
  .text2
4313
  {
@@ -4391,7 +3986,7 @@ border-radius: 0px 0px 5px 0px;
4391
  border-right: 1px solid #dee2e4 !important;
4392
  color: #5c656a;
4393
  font-size: 14px;
4394
- font-weight: 600;
4395
  height: 44px !important;
4396
  padding-left: 23px;
4397
  vertical-align: middle;
@@ -4482,13 +4077,13 @@ pre .red
4482
  }
4483
  .magento-label
4484
  {
4485
- color: #fff;
4486
- font-weight:600;
4487
- font-size: 18px;
4488
  }
4489
  .magento-input
4490
  {
4491
- width: 340px !important;
4492
  height: 40px;
4493
  border-radius: 3px;
4494
  background-color: #fcfcfc;
@@ -4496,13 +4091,12 @@ pre .red
4496
  font-size: 16px;
4497
  color: #1a1c1c;
4498
  border:1px solid #cbcbcb;
4499
-
4500
  }
4501
  .middle-nav-magento-dropdown {
4502
  /*position:absolute; */
4503
  left:0px;
4504
  width:240px;
4505
- font-family: proxima-nova, Arial, sans-serif !important;
4506
  /*top:160px;*/
4507
  }
4508
  .middle-nav-text
@@ -4522,7 +4116,7 @@ background-color: #3c3f40;
4522
  /*left:0px; */
4523
  /*width:240px;*/
4524
  /*height:920px;*/
4525
- font-family: proxima-nova, Arial, sans-serif !important;
4526
  /*top:255px;*/
4527
  }
4528
  ul.magento-nav {
@@ -4531,6 +4125,10 @@ ul.magento-nav {
4531
  list-style-type: none;
4532
  padding: 0;
4533
  margin: 0;
 
 
 
 
4534
  }
4535
  ul.magento-nav li {
4536
  display: block;
@@ -4541,19 +4139,23 @@ ul.magento-nav li a {
4541
  display: block;
4542
  float: left;
4543
  color: #fff !important;
4544
- padding: 10px 0px 10px 30px;
4545
  font-size: 16px;
4546
- font-weight: 400;
4547
  width:100%;
4548
  border-bottom:1px solid #4e5253;
 
 
 
 
 
4549
  background: url('../img/arrow-white.png') no-repeat 90%;
4550
  }
4551
  ul.magento-nav li a.magento-active
4552
  {
4553
-
4554
  border-top:1px solid #4e5253;
4555
  border-bottom:1px solid #4e5253;
4556
- background: #45b5c1 url('../img/arrow-white.png') no-repeat 90%;
4557
  }
4558
  .magento-tooltip
4559
  {
@@ -4568,10 +4170,12 @@ ul.magento-nav li a.magento-active
4568
  background: url('../img/not-detected.png') no-repeat 5%;
4569
  }
4570
  input.magento-input::-webkit-input-placeholder { color: #b8bcc0;}
 
4571
  input[type="text"]:focus
4572
  {
4573
  outline:none;
4574
- border:1px solid #cbcbcb;
 
4575
  }
4576
  input[type="email"]:focus
4577
  {
@@ -4585,9 +4189,10 @@ input[type="password"]:focus
4585
  {
4586
  outline:none;
4587
  }
4588
- .label-checkbox-magento {
4589
  font-family: proxima-nova, Arial, sans-serif !important;
4590
- font-weight: 600;
 
4591
  color: #5c656a !important;
4592
  font-size: 16px !important;
4593
  padding-left: 37px !important;
@@ -4627,7 +4232,7 @@ input[type="password"]:focus
4627
  -webkit-box-shadow: none;
4628
  box-shadow: none;
4629
  color: #5c656a;
4630
- font-weight: 600;
4631
  background-color: transparent !important;
4632
  }
4633
  .dropdown-menu-magento > li:first-child > a
@@ -4725,7 +4330,7 @@ input[type="password"]:focus
4725
  -webkit-box-shadow: none;
4726
  box-shadow: none;
4727
  color: #5c656a;
4728
- font-weight: 600;
4729
  background-color: transparent !important;
4730
  }
4731
  .dropdown-menu-nav-magento > li:first-child > a
@@ -4835,7 +4440,8 @@ input[type="password"]:focus
4835
  }
4836
  .main-section
4837
  {
4838
- font-family: proxima-nova, Arial, sans-serif;
 
4839
  }
4840
  .mar-top-50
4841
  {
@@ -4872,7 +4478,7 @@ input[type="password"]:focus
4872
  {
4873
  color:#4e5356;
4874
  font-size:24px;
4875
- font-weight:600;
4876
  }
4877
  .color-gray
4878
  {
@@ -4970,7 +4576,7 @@ input[type="password"]:focus
4970
  {
4971
  color:#2c3e4c;
4972
  font-size:18px;
4973
- font-weight:600;
4974
  text-align: center;
4975
  }
4976
  .steps-row1
@@ -5048,6 +4654,10 @@ input[type="password"]:focus
5048
  margin-top:-3px;
5049
  }
5050
  .mar-top-20
 
 
 
 
5051
  {
5052
  margin-top:15px;
5053
  }
@@ -5062,21 +4672,21 @@ input[type="password"]:focus
5062
  .steps-text-active
5063
  {
5064
  font-size: 15px;
5065
- font-weight: 400;
5066
  color: #45b5c1;
5067
  text-align: center
5068
  }
5069
  .steps-text
5070
  {
5071
  font-size: 15px;
5072
- font-weight: 400;
5073
  color: #929494;
5074
  text-align: center;
5075
  }
5076
  .dashboard-label
5077
  {
5078
  color: #4e5356;
5079
- font-weight:600;
5080
  font-size: 18px;
5081
  }
5082
  .dashboard-input
@@ -5096,7 +4706,7 @@ input[type="password"]:focus
5096
  height:40px;
5097
  width:290px !important;
5098
  border:1px solid #d9dede;
5099
- font-weight: 600;
5100
  font-size: 16px;
5101
  color: #182b3a;
5102
  box-shadow: none !important;
@@ -5149,7 +4759,7 @@ text-align: center;
5149
  border-top-left-radius: 4px;
5150
  border-bottom-right-radius: 4px;
5151
  float: right;
5152
- font-family: proxima-nova, Arial, sans-serif;
5153
  font-size: 14px;
5154
  font-weight:400;
5155
  padding: 5px 0;
@@ -5223,26 +4833,24 @@ ul.magento-conf-tabs li a.magento-conf-tabs-enabled {
5223
  }
5224
  .button-edit-magento
5225
  {
5226
- border: 1px solid #dee2e4;
5227
- height:32px;
5228
- border-radius:3px;
5229
- background: #fff url('../img/edit-magento.png') no-repeat 10%;
5230
- color: #5c656a !important;
5231
- font-size:16px;
5232
- font-weight:400;
5233
- padding-top:5px;
5234
- padding-left: 33px;
5235
  }
5236
  .button-save-magento
5237
  {
5238
-
5239
- background: #fff url('../img/save.png') no-repeat 10%;
5240
  }
5241
  .magento-success-block
5242
  {
5243
  padding: 14px 5px 14px 35px;
5244
- background-color: #62c7a5;
5245
  border:1px solid #30a880;
 
5246
  }
5247
  .magento-analytics-tick-green
5248
  {
@@ -5253,19 +4861,19 @@ padding-left: 33px;
5253
  margin:0px auto;
5254
  float:none;
5255
  margin-right:10px !important;
 
5256
  }
5257
  .magento-success-block-head
5258
  {
5259
- color: #fff;
5260
- font-size:24px;
5261
- font-weight:400;
5262
  }
5263
  .magento-success-block-text
5264
  {
5265
  color: #fff;
5266
- font-size:16px;
5267
- font-weight:400;
5268
-
5269
  }
5270
  .mar-top-15
5271
  {
@@ -5273,29 +4881,22 @@ padding-left: 33px;
5273
  }
5274
  .button-reauth-magento
5275
  {
5276
- border: 1px solid #fff;
5277
- height:42px;
5278
- border-radius:3px;
5279
- background-color: #62c7a5;
5280
- color: #eef8f4 !important;
5281
- font-size:16px;
5282
- font-weight:600;
5283
- padding-top:10px;
5284
- text-align: center
5285
- }
5286
- .magento-redbar
5287
- {
5288
- background-color: #fe6a56;
5289
- opacity: 0.9;
5290
- padding:35px 0px;
5291
  text-align: center;
5292
- font-size:18px;
5293
- font-weight:400;
5294
- color: #fff;
5295
- position: absolute;
5296
- top:0;
5297
- left:0;
5298
- z-index:999;
5299
  }
5300
  #transparency
5301
  {
@@ -5335,7 +4936,7 @@ background-color: #45b5c1 !important;
5335
  text-align: center;
5336
  color: #fff !important;
5337
  font-size:16px;
5338
- font-weight:600;
5339
  }
5340
  .button-blue1-middle:hover
5341
  {
@@ -5363,7 +4964,7 @@ height:40px;
5363
  text-align: center;
5364
  color: #fdfdfd !important;
5365
  font-size:16px;
5366
- font-weight:600;
5367
  padding-top:9px;
5368
  }
5369
  .button-black-middle:hover
@@ -5395,7 +4996,7 @@ padding-right: 0px !important;
5395
  padding-left: 55px;
5396
  color: #5c656a !important;
5397
  font-size:18px;
5398
- font-weight:600;
5399
  }
5400
  .button-install:hover
5401
  {
@@ -5419,7 +5020,7 @@ padding-right: 0px !important;
5419
  padding-left: 55px;
5420
  color: #5c656a !important;
5421
  font-size:18px;
5422
- font-weight:600;
5423
  }
5424
  .button-install1:hover
5425
  {
@@ -5440,7 +5041,7 @@ height:40px;
5440
  text-align: center;
5441
  color: #fdfdfd !important;
5442
  font-size:16px;
5443
- font-weight:600;
5444
  padding-top:9px;
5445
  }
5446
  .button-send-instruct
@@ -5451,7 +5052,7 @@ height:40px;
5451
  background: #fff url('../img/mail-new.png') no-repeat 97%;
5452
  color: #3c3f40 !important;
5453
  font-size:16px;
5454
- font-weight:600;
5455
  padding-top:8px;
5456
  padding-left: 20px;
5457
  }
@@ -5463,7 +5064,7 @@ height:40px;
5463
  background: #fff url('../img/back.png') no-repeat 5%;
5464
  color: #3c3f40 !important;
5465
  font-size:16px;
5466
- font-weight:600;
5467
  padding-top:8px;
5468
  padding-left: 42px;
5469
  }
@@ -5475,7 +5076,7 @@ height:40px;
5475
  background: #fff url('../img/arrow-2.png') no-repeat 92%;
5476
  color: #3c3f40 !important;
5477
  font-size:16px;
5478
- font-weight:600;
5479
  padding-top:8px;
5480
  padding-left: 20px;
5481
  }
@@ -5556,7 +5157,7 @@ float: left;
5556
  }
5557
  .tooltip-top {
5558
  font-size: 16px;
5559
- font-weight: 600;
5560
  color: #ffffff;
5561
  margin-bottom: 10px;
5562
  float: left;
@@ -5568,2292 +5169,129 @@ float: left;
5568
  font-weight:400;
5569
  }
5570
  @media (min-width: 768px) {
5571
- .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-13, .col-sm-14, .col-sm-15, .col-sm-16, .col-sm-17, .col-sm-18, .col-sm-19, .col-sm-20, .col-sm-21, .col-sm-22, .col-sm-23, .col-sm-24, .col-sm-25, .col-sm-26, .col-sm-27, .col-sm-28, .col-sm-29, .col-sm-30, .col-sm-31, .col-sm-32, .col-sm-33, .col-sm-34, .col-sm-35, .col-sm-36, .col-sm-37, .col-sm-38, .col-sm-39, .col-sm-40, .col-sm-41, .col-sm-42, .col-sm-43, .col-sm-44, .col-sm-45, .col-sm-46, .col-sm-47, .col-sm-48, .col-sm-49, .col-sm-50, .col-sm-51, .col-sm-52, .col-sm-53, .col-sm-54, .col-sm-55, .col-sm-56, .col-sm-57, .col-sm-58, .col-sm-59 {
5572
- float: left;
5573
- }
5574
- .col-sm-1 {
5575
- width: 1.666666666666667%;
5576
- }
5577
- .col-sm-2 {
5578
- width: 3.333333333333333%;
5579
- }
5580
- .col-sm-3 {
5581
- width: 5%;
5582
- }
5583
- .col-sm-4 {
5584
- width: 6.666666666666667%;
5585
- }
5586
- .col-sm-5 {
5587
- width: 8.333333333333333%;
5588
- }
5589
- .col-sm-6 {
5590
- width: 10%;
5591
- }
5592
- .col-sm-7 {
5593
- width: 11.66666666666667%;
5594
- }
5595
- .col-sm-8 {
5596
- width: 13.33333333333333%;
5597
- }
5598
- .col-sm-9 {
5599
- width: 15%;
5600
- }
5601
- .col-sm-10 {
5602
- width: 16.66666666666667%;
5603
- }
5604
- .col-sm-11 {
5605
- width: 18.33333333333333%;
5606
- }
5607
- .col-sm-12 {
5608
- width: 20%;
5609
- }
5610
- .col-sm-13 {
5611
- width: 21.66666666666667%;
5612
- }
5613
- .col-sm-14 {
5614
- width: 23.33333333333333%;
5615
- }
5616
- .col-sm-15 {
5617
- width: 25%;
5618
- }
5619
- .col-sm-16 {
5620
- width: 26.66666666666667%;
5621
- }
5622
- .col-sm-17 {
5623
- width: 28.33333333333333%;
5624
- }
5625
- .col-sm-18 {
5626
- width: 30%;
5627
- }
5628
- .col-sm-19 {
5629
- width: 31.66666666666667%;
5630
- }
5631
- .col-sm-20 {
5632
- width: 33.33333333333333%;
5633
- }
5634
- .col-sm-21 {
5635
- width: 35%;
5636
- }
5637
- .col-sm-22 {
5638
- width: 36.66666666666667%;
5639
- }
5640
- .col-sm-23 {
5641
- width: 38.33333333333333%;
5642
- }
5643
- .col-sm-24 {
5644
- width: 40%;
5645
- }
5646
- .col-sm-25 {
5647
- width: 41.66666666666667%;
5648
- }
5649
- .col-sm-26 {
5650
- width: 43.33333333333333%;
5651
- }
5652
- .col-sm-27 {
5653
- width: 45%;
5654
- }
5655
- .col-sm-28 {
5656
- width: 46.66666666666667%;
5657
- }
5658
- .col-sm-29 {
5659
- width: 48.33333333333333%;
5660
- }
5661
- .col-sm-30 {
5662
- width: 50%;
5663
- }
5664
- .col-sm-31 {
5665
- width: 51.66666666666667%;
5666
- }
5667
- .col-sm-32 {
5668
- width: 53.33333333333333%;
5669
- }
5670
- .col-sm-33 {
5671
- width: 55%;
5672
- }
5673
- .col-sm-34 {
5674
- width: 56.66666666666667%;
5675
- }
5676
- .col-sm-35 {
5677
- width: 58.33333333333333%;
5678
- }
5679
- .col-sm-36 {
5680
- width: 60%;
5681
- }
5682
- .col-sm-37 {
5683
- width: 61.66666666666667%;
5684
- }
5685
- .col-sm-38 {
5686
- width: 63.33333333333333%;
5687
- }
5688
- .col-sm-39 {
5689
- width: 65%;
5690
- }
5691
- .col-sm-40 {
5692
- width: 66.66666666666667%;
5693
- }
5694
- .col-sm-41 {
5695
- width: 68.33333333333333%;
5696
- }
5697
- .col-sm-42 {
5698
- width: 70%;
5699
- }
5700
- .col-sm-43 {
5701
- width: 71.66666666666667%;
5702
- }
5703
- .col-sm-44 {
5704
- width: 73.33333333333333%;
5705
- }
5706
- .col-sm-45 {
5707
- width: 75%;
5708
- }
5709
- .col-sm-46 {
5710
- width: 76.66666666666667%;
5711
- }
5712
- .col-sm-47 {
5713
- width: 78.33333333333333%;
5714
- }
5715
- .col-sm-48 {
5716
- width: 80%;
5717
- }
5718
- .col-sm-49 {
5719
- width: 81.66666666666667%;
5720
- }
5721
- .col-sm-50 {
5722
- width: 83.33333333333333%;
5723
- }
5724
- .col-sm-51 {
5725
- width: 85%;
5726
- }
5727
- .col-sm-52 {
5728
- width: 86.66666666666667%;
5729
- }
5730
- .col-sm-53 {
5731
- width: 88.33333333333333%;
5732
- }
5733
- .col-sm-54 {
5734
- width: 90%;
5735
- }
5736
- .col-sm-55 {
5737
- width: 91.66666666666667%;
5738
- }
5739
- .col-sm-56 {
5740
- width: 93.33333333333333%;
5741
- }
5742
- .col-sm-57 {
5743
- width: 95%;
5744
- }
5745
- .col-sm-58 {
5746
- width: 96.66666666666667%;
5747
- }
5748
- .col-sm-59 {
5749
- width: 98.33333333333333%;
5750
- }
5751
- .col-sm-60 {
5752
- width: 100%;
5753
- }
5754
 
5755
- .col-sm-push-1 {
5756
- left: 1.666666666666667%;
5757
- }
5758
- .col-sm-push-2 {
5759
- left: 3.333333333333333%;
5760
- }
5761
- .col-sm-push-3 {
5762
- left: 5%;
5763
- }
5764
- .col-sm-push-4 {
5765
- left: 6.666666666666667%;
5766
- }
5767
- .col-sm-push-5 {
5768
- left: 8.333333333333333%;
5769
- }
5770
- .col-sm-push-6 {
5771
- left: 10%;
5772
- }
5773
- .col-sm-push-7 {
5774
- left: 11.66666666666667%;
5775
- }
5776
- .col-sm-push-8 {
5777
- left: 13.33333333333333%;
5778
- }
5779
- .col-sm-push-9 {
5780
- left: 15%;
5781
- }
5782
- .col-sm-push-10 {
5783
- left: 16.66666666666667%;
5784
- }
5785
- .col-sm-push-11 {
5786
- left: 18.33333333333333%;
5787
- }
5788
- .col-sm-push-12 {
5789
- left: 20%;
5790
- }
5791
- .col-sm-push-13 {
5792
- left: 21.66666666666667%;
5793
- }
5794
- .col-sm-push-14 {
5795
- left: 23.33333333333333%;
5796
- }
5797
- .col-sm-push-15 {
5798
- left: 25%;
5799
- }
5800
- .col-sm-push-16 {
5801
- left: 26.66666666666667%;
5802
- }
5803
- .col-sm-push-17 {
5804
- left: 28.33333333333333%;
5805
- }
5806
- .col-sm-push-18 {
5807
- left: 30%;
5808
- }
5809
- .col-sm-push-19 {
5810
- left: 31.66666666666667%;
5811
- }
5812
- .col-sm-push-20 {
5813
- left: 33.33333333333333%;
5814
- }
5815
- .col-sm-push-21 {
5816
- left: 35%;
5817
- }
5818
- .col-sm-push-22 {
5819
- left: 36.66666666666667%;
5820
- }
5821
- .col-sm-push-23 {
5822
- left: 38.33333333333333%;
5823
- }
5824
- .col-sm-push-24 {
5825
- left: 40%;
5826
- }
5827
- .col-sm-push-25 {
5828
- left: 41.66666666666667%;
5829
- }
5830
- .col-sm-push-26 {
5831
- left: 43.33333333333333%;
5832
- }
5833
- .col-sm-push-27 {
5834
- left: 45%;
5835
- }
5836
- .col-sm-push-28 {
5837
- left: 46.66666666666667%;
5838
- }
5839
- .col-sm-push-29 {
5840
- left: 48.33333333333333%;
5841
- }
5842
- .col-sm-push-30 {
5843
- left: 50%;
5844
- }
5845
- .col-sm-push-31 {
5846
- left: 51.66666666666667%;
5847
- }
5848
- .col-sm-push-32 {
5849
- left: 53.33333333333333%;
5850
- }
5851
- .col-sm-push-33 {
5852
- left: 55%;
5853
- }
5854
- .col-sm-push-34 {
5855
- left: 56.66666666666667%;
5856
- }
5857
- .col-sm-push-35 {
5858
- left: 58.33333333333333%;
5859
- }
5860
- .col-sm-push-36 {
5861
- left: 60%;
5862
  }
5863
- .col-sm-push-37 {
5864
- left: 61.66666666666667%;
 
5865
  }
5866
- .col-sm-push-38 {
5867
- left: 63.33333333333333%;
 
5868
  }
5869
- .col-sm-push-39 {
5870
- left: 65%;
 
 
5871
  }
5872
- .col-sm-push-40 {
5873
- left: 66.66666666666667%;
 
 
5874
  }
5875
- .col-sm-push-41 {
5876
- left: 68.33333333333333%;
 
 
5877
  }
5878
- .col-sm-push-42 {
5879
- left: 70%;
 
5880
  }
5881
- .col-sm-push-43 {
5882
- left: 71.66666666666667%;
 
5883
  }
5884
- .col-sm-push-44 {
5885
- left: 73.33333333333333%;
 
5886
  }
5887
- .col-sm-push-45 {
5888
- left: 75%;
 
5889
  }
5890
- .col-sm-push-46 {
5891
- left: 76.66666666666667%;
 
 
 
 
 
 
5892
  }
5893
- .col-sm-push-47 {
5894
- left: 78.33333333333333%;
 
 
5895
  }
5896
- .col-sm-push-48 {
5897
- left: 80%;
 
 
5898
  }
5899
- .col-sm-push-49 {
5900
- left: 81.66666666666667%;
 
 
5901
  }
5902
- .col-sm-push-50 {
5903
- left: 83.33333333333333%;
 
 
5904
  }
5905
- .col-sm-push-51 {
5906
- left: 85%;
 
 
5907
  }
5908
- .col-sm-push-52 {
5909
- left: 86.66666666666667%;
 
 
5910
  }
5911
- .col-sm-push-53 {
5912
- left: 88.33333333333333%;
 
 
5913
  }
5914
- .col-sm-push-54 {
5915
- left: 90%;
 
 
5916
  }
5917
- .col-sm-push-55 {
5918
- left: 91.66666666666667%;
 
 
5919
  }
5920
- .col-sm-push-56 {
5921
- left: 93.33333333333333%;
 
5922
  }
5923
- .col-sm-push-57 {
5924
- left: 95%;
5925
  }
5926
- .col-sm-push-58 {
5927
- left: 96.66666666666667%;
5928
  }
5929
- .col-sm-push-59 {
5930
- left: 98.33333333333333%;
 
 
 
 
5931
  }
 
 
 
 
 
 
 
5932
 
5933
- .col-sm-pull-1 {
5934
- right: 1.666666666666667%;
5935
- }
5936
- .col-sm-pull-2 {
5937
- right: 3.333333333333333%;
5938
- }
5939
- .col-sm-pull-3 {
5940
- right: 5%;
5941
- }
5942
- .col-sm-pull-4 {
5943
- right: 6.666666666666667%;
5944
- }
5945
- .col-sm-pull-5 {
5946
- right: 8.333333333333333%;
5947
- }
5948
- .col-sm-pull-6 {
5949
- right: 10%;
5950
- }
5951
- .col-sm-pull-7 {
5952
- right: 11.66666666666667%;
5953
- }
5954
- .col-sm-pull-8 {
5955
- right: 13.33333333333333%;
5956
- }
5957
- .col-sm-pull-9 {
5958
- right: 15%;
5959
- }
5960
- .col-sm-pull-10 {
5961
- right: 16.66666666666667%;
5962
- }
5963
- .col-sm-pull-11 {
5964
- right: 18.33333333333333%;
5965
- }
5966
- .col-sm-pull-12 {
5967
- right: 20%;
5968
- }
5969
- .col-sm-pull-13 {
5970
- right: 21.66666666666667%;
5971
- }
5972
- .col-sm-pull-14 {
5973
- right: 23.33333333333333%;
5974
- }
5975
- .col-sm-pull-15 {
5976
- right: 25%;
5977
- }
5978
- .col-sm-pull-16 {
5979
- right: 26.66666666666667%;
5980
- }
5981
- .col-sm-pull-17 {
5982
- right: 28.33333333333333%;
5983
- }
5984
- .col-sm-pull-18 {
5985
- right: 30%;
5986
- }
5987
- .col-sm-pull-19 {
5988
- right: 31.66666666666667%;
5989
- }
5990
- .col-sm-pull-20 {
5991
- right: 33.33333333333333%;
5992
- }
5993
- .col-sm-pull-21 {
5994
- right: 35%;
5995
- }
5996
- .col-sm-pull-22 {
5997
- right: 36.66666666666667%;
5998
- }
5999
- .col-sm-pull-23 {
6000
- right: 38.33333333333333%;
6001
- }
6002
- .col-sm-pull-24 {
6003
- right: 40%;
6004
- }
6005
- .col-sm-pull-25 {
6006
- right: 41.66666666666667%;
6007
- }
6008
- .col-sm-pull-26 {
6009
- right: 43.33333333333333%;
6010
- }
6011
- .col-sm-pull-27 {
6012
- right: 45%;
6013
- }
6014
- .col-sm-pull-28 {
6015
- right: 46.66666666666667%;
6016
- }
6017
- .col-sm-pull-29 {
6018
- right: 48.33333333333333%;
6019
- }
6020
- .col-sm-pull-30 {
6021
- right: 50%;
6022
- }
6023
- .col-sm-pull-31 {
6024
- right: 51.66666666666667%;
6025
- }
6026
- .col-sm-pull-32 {
6027
- right: 53.33333333333333%;
6028
- }
6029
- .col-sm-pull-33 {
6030
- right: 55%;
6031
- }
6032
- .col-sm-pull-34 {
6033
- right: 56.66666666666667%;
6034
- }
6035
- .col-sm-pull-35 {
6036
- right: 58.33333333333333%;
6037
- }
6038
- .col-sm-pull-36 {
6039
- right: 60%;
6040
- }
6041
- .col-sm-pull-37 {
6042
- right: 61.66666666666667%;
6043
- }
6044
- .col-sm-pull-38 {
6045
- right: 63.33333333333333%;
6046
- }
6047
- .col-sm-pull-39 {
6048
- right: 65%;
6049
- }
6050
- .col-sm-pull-40 {
6051
- right: 66.66666666666667%;
6052
- }
6053
- .col-sm-pull-41 {
6054
- right: 68.33333333333333%;
6055
- }
6056
- .col-sm-pull-42 {
6057
- right: 70%;
6058
- }
6059
- .col-sm-pull-43 {
6060
- right: 71.66666666666667%;
6061
- }
6062
- .col-sm-pull-44 {
6063
- right: 73.33333333333333%;
6064
- }
6065
- .col-sm-pull-45 {
6066
- right: 75%;
6067
- }
6068
- .col-sm-pull-46 {
6069
- right: 76.66666666666667%;
6070
- }
6071
- .col-sm-pull-47 {
6072
- right: 78.33333333333333%;
6073
- }
6074
- .col-sm-pull-48 {
6075
- right: 80%;
6076
- }
6077
- .col-sm-pull-49 {
6078
- right: 81.66666666666667%;
6079
- }
6080
- .col-sm-pull-50 {
6081
- right: 83.33333333333333%;
6082
- }
6083
- .col-sm-pull-51 {
6084
- right: 85%;
6085
- }
6086
- .col-sm-pull-52 {
6087
- right: 86.66666666666667%;
6088
- }
6089
- .col-sm-pull-53 {
6090
- right: 88.33333333333333%;
6091
- }
6092
- .col-sm-pull-54 {
6093
- right: 90%;
6094
- }
6095
- .col-sm-pull-55 {
6096
- right: 91.66666666666667%;
6097
- }
6098
- .col-sm-pull-56 {
6099
- right: 93.33333333333333%;
6100
- }
6101
- .col-sm-pull-57 {
6102
- right: 95%;
6103
- }
6104
- .col-sm-pull-58 {
6105
- right: 96.66666666666667%;
6106
- }
6107
- .col-sm-pull-59 {
6108
- right: 98.33333333333333%;
6109
- }
6110
-
6111
- .col-sm-offset-1 {
6112
- margin-left: 1.666666666666667%;
6113
- }
6114
- .col-sm-offset-2 {
6115
- margin-left: 3.333333333333333%;
6116
- }
6117
- .col-sm-offset-3 {
6118
- margin-left: 5%;
6119
- }
6120
- .col-sm-offset-4 {
6121
- margin-left: 6.666666666666667%;
6122
- }
6123
- .col-sm-offset-5 {
6124
- margin-left: 8.333333333333333%;
6125
- }
6126
- .col-sm-offset-6 {
6127
- margin-left: 10%;
6128
- }
6129
- .col-sm-offset-7 {
6130
- margin-left: 11.66666666666667%;
6131
- }
6132
- .col-sm-offset-8 {
6133
- margin-left: 13.33333333333333%;
6134
- }
6135
- .col-sm-offset-9 {
6136
- margin-left: 15%;
6137
- }
6138
- .col-sm-offset-10 {
6139
- margin-left: 16.66666666666667%;
6140
- }
6141
- .col-sm-offset-11 {
6142
- margin-left: 18.33333333333333%;
6143
- }
6144
- .col-sm-offset-12 {
6145
- margin-left: 20%;
6146
- }
6147
- .col-sm-offset-13 {
6148
- margin-left: 21.66666666666667%;
6149
- }
6150
- .col-sm-offset-14 {
6151
- margin-left: 23.33333333333333%;
6152
- }
6153
- .col-sm-offset-15 {
6154
- margin-left: 25%;
6155
- }
6156
- .col-sm-offset-16 {
6157
- margin-left: 26.66666666666667%;
6158
- }
6159
- .col-sm-offset-17 {
6160
- margin-left: 28.33333333333333%;
6161
- }
6162
- .col-sm-offset-18 {
6163
- margin-left: 30%;
6164
- }
6165
- .col-sm-offset-19 {
6166
- margin-left: 31.66666666666667%;
6167
- }
6168
- .col-sm-offset-20 {
6169
- margin-left: 33.33333333333333%;
6170
- }
6171
- .col-sm-offset-21 {
6172
- margin-left: 35%;
6173
- }
6174
- .col-sm-offset-22 {
6175
- margin-left: 36.66666666666667%;
6176
- }
6177
- .col-sm-offset-23 {
6178
- margin-left: 38.33333333333333%;
6179
- }
6180
- .col-sm-offset-24 {
6181
- margin-left: 40%;
6182
- }
6183
- .col-sm-offset-25 {
6184
- margin-left: 41.66666666666667%;
6185
- }
6186
- .col-sm-offset-26 {
6187
- margin-left: 43.33333333333333%;
6188
- }
6189
- .col-sm-offset-27 {
6190
- margin-left: 45%;
6191
- }
6192
- .col-sm-offset-28 {
6193
- margin-left: 46.66666666666667%;
6194
- }
6195
- .col-sm-offset-29 {
6196
- margin-left: 48.33333333333333%;
6197
- }
6198
- .col-sm-offset-30 {
6199
- margin-left: 50%;
6200
- }
6201
- .col-sm-offset-31 {
6202
- margin-left: 51.66666666666667%;
6203
- }
6204
- .col-sm-offset-32 {
6205
- margin-left: 53.33333333333333%;
6206
- }
6207
- .col-sm-offset-33 {
6208
- margin-left: 55%;
6209
- }
6210
- .col-sm-offset-34 {
6211
- margin-left: 56.66666666666667%;
6212
- }
6213
- .col-sm-offset-35 {
6214
- margin-left: 58.33333333333333%;
6215
- }
6216
- .col-sm-offset-36 {
6217
- margin-left: 60%;
6218
- }
6219
- .col-sm-offset-37 {
6220
- margin-left: 61.66666666666667%;
6221
- }
6222
- .col-sm-offset-38 {
6223
- margin-left: 63.33333333333333%;
6224
- }
6225
- .col-sm-offset-39 {
6226
- margin-left: 65%;
6227
- }
6228
- .col-sm-offset-40 {
6229
- margin-left: 66.66666666666667%;
6230
- }
6231
- .col-sm-offset-41 {
6232
- margin-left: 68.33333333333333%;
6233
- }
6234
- .col-sm-offset-42 {
6235
- margin-left: 70%;
6236
- }
6237
- .col-sm-offset-43 {
6238
- margin-left: 71.66666666666667%;
6239
- }
6240
- .col-sm-offset-44 {
6241
- margin-left: 73.33333333333333%;
6242
- }
6243
- .col-sm-offset-45 {
6244
- margin-left: 75%;
6245
- }
6246
- .col-sm-offset-46 {
6247
- margin-left: 76.66666666666667%;
6248
- }
6249
- .col-sm-offset-47 {
6250
- margin-left: 78.33333333333333%;
6251
- }
6252
- .col-sm-offset-48 {
6253
- margin-left: 80%;
6254
- }
6255
- .col-sm-offset-49 {
6256
- margin-left: 81.66666666666667%;
6257
- }
6258
- .col-sm-offset-50 {
6259
- margin-left: 83.33333333333333%;
6260
- }
6261
- .col-sm-offset-51 {
6262
- margin-left: 85%;
6263
- }
6264
- .col-sm-offset-52 {
6265
- margin-left: 86.66666666666667%;
6266
- }
6267
- .col-sm-offset-53 {
6268
- margin-left: 88.33333333333333%;
6269
- }
6270
- .col-sm-offset-54 {
6271
- margin-left: 90%;
6272
- }
6273
- .col-sm-offset-55 {
6274
- margin-left: 91.66666666666667%;
6275
- }
6276
- .col-sm-offset-56 {
6277
- margin-left: 93.33333333333333%;
6278
- }
6279
- .col-sm-offset-57 {
6280
- margin-left: 95%;
6281
- }
6282
- .col-sm-offset-58 {
6283
- margin-left: 96.66666666666667%;
6284
- }
6285
- .col-sm-offset-59 {
6286
- margin-left: 98.33333333333333%;
6287
- }
6288
-
6289
- /*common tablet */
6290
- .fixed-width-520 {
6291
- margin: 0px auto;
6292
- float: none;
6293
- }
6294
- .fixed-width-580 {
6295
- margin: 0px auto;
6296
- float: none;
6297
- }
6298
- .fixed-width-680 {
6299
- margin: 0px auto;
6300
- float: none;
6301
- }
6302
- .fixed-width-700 {
6303
- margin: 0px auto;
6304
- float: none;
6305
- width: 700px !important;
6306
- }
6307
- .fixed-width-730 {
6308
- margin: 0px auto;
6309
- float: none;
6310
- width: 730px !important;
6311
- }
6312
- .fixed-width-800 {
6313
- margin: 0px auto;
6314
- float: none;
6315
- width: 800px !important;
6316
- }
6317
- .fixed-width-940 {
6318
- margin: 0px auto;
6319
- float: none;
6320
- }
6321
- .fixed-width-980 {
6322
- margin: 0px auto;
6323
- float: none;
6324
- }
6325
- .fixed-width-1080 {
6326
- margin: 0px auto;
6327
- float: none;
6328
- }
6329
- .fixed-width-1140 {
6330
- margin: 0px auto;
6331
- float: none;
6332
- }
6333
-
6334
- }
6335
- @media (min-width: 980px) {
6336
-
6337
- .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-13, .col-md-14, .col-md-15, .col-md-16, .col-md-17, .col-md-18, .col-md-19, .col-md-20, .col-md-21, .col-md-22, .col-md-23, .col-md-24, .col-md-25, .col-md-26, .col-md-27, .col-md-28, .col-md-29, .col-md-30, .col-md-31, .col-md-32, .col-md-33, .col-md-34, .col-md-35, .col-md-36, .col-md-37, .col-md-38, .col-md-39, .col-md-40, .col-md-41, .col-md-42, .col-md-43, .col-md-44, .col-md-45, .col-md-46, .col-md-47, .col-md-48, .col-md-49, .col-md-50, .col-md-51, .col-md-52, .col-md-53, .col-md-54, .col-md-55, .col-md-56, .col-md-57, .col-md-58, .col-md-59 {
6338
- float: left;
6339
- }
6340
- .col-md-1 {
6341
- width: 1.666666666666667%;
6342
- }
6343
- .col-md-2 {
6344
- width: 3.333333333333333%;
6345
- }
6346
- .col-md-3 {
6347
- width: 5%;
6348
- }
6349
- .col-md-4 {
6350
- width: 6.666666666666667%;
6351
- }
6352
- .col-md-5 {
6353
- width: 8.333333333333333%;
6354
- }
6355
- .col-md-6 {
6356
- width: 10%;
6357
- }
6358
- .col-md-7 {
6359
- width: 11.66666666666667%;
6360
- }
6361
- .col-md-8 {
6362
- width: 13.33333333333333%;
6363
- }
6364
- .col-md-9 {
6365
- width: 15%;
6366
- }
6367
- .col-md-10 {
6368
- width: 16.66666666666667%;
6369
- }
6370
- .col-md-11 {
6371
- width: 18.33333333333333%;
6372
- }
6373
- .col-md-12 {
6374
- width: 20%;
6375
- }
6376
- .col-md-13 {
6377
- width: 21.66666666666667%;
6378
- }
6379
- .col-md-14 {
6380
- width: 23.33333333333333%;
6381
- }
6382
- .col-md-15 {
6383
- width: 25%;
6384
- }
6385
- .col-md-16 {
6386
- width: 26.66666666666667%;
6387
- }
6388
- .col-md-17 {
6389
- width: 28.33333333333333%;
6390
- }
6391
- .col-md-18 {
6392
- width: 30%;
6393
- }
6394
- .col-md-19 {
6395
- width: 31.66666666666667%;
6396
- }
6397
- .col-md-20 {
6398
- width: 33.33333333333333%;
6399
- }
6400
- .col-md-21 {
6401
- width: 35%;
6402
- }
6403
- .col-md-22 {
6404
- width: 36.66666666666667%;
6405
- }
6406
- .col-md-23 {
6407
- width: 38.33333333333333%;
6408
- }
6409
- .col-md-24 {
6410
- width: 40%;
6411
- }
6412
- .col-md-25 {
6413
- width: 41.66666666666667%;
6414
- }
6415
- .col-md-26 {
6416
- width: 43.33333333333333%;
6417
- }
6418
- .col-md-27 {
6419
- width: 45%;
6420
- }
6421
- .col-md-28 {
6422
- width: 46.66666666666667%;
6423
- }
6424
- .col-md-29 {
6425
- width: 48.33333333333333%;
6426
- }
6427
- .col-md-30 {
6428
- width: 50%;
6429
- }
6430
- .col-md-31 {
6431
- width: 51.66666666666667%;
6432
- }
6433
- .col-md-32 {
6434
- width: 53.33333333333333%;
6435
- }
6436
- .col-md-33 {
6437
- width: 55%;
6438
- }
6439
- .col-md-34 {
6440
- width: 56.66666666666667%;
6441
- }
6442
- .col-md-35 {
6443
- width: 58.33333333333333%;
6444
- }
6445
- .col-md-36 {
6446
- width: 60%;
6447
- }
6448
- .col-md-37 {
6449
- width: 61.66666666666667%;
6450
- }
6451
- .col-md-38 {
6452
- width: 63.33333333333333%;
6453
- }
6454
- .col-md-39 {
6455
- width: 65%;
6456
- }
6457
- .col-md-40 {
6458
- width: 66.66666666666667%;
6459
- }
6460
- .col-md-41 {
6461
- width: 68.33333333333333%;
6462
- }
6463
- .col-md-42 {
6464
- width: 70%;
6465
- }
6466
- .col-md-43 {
6467
- width: 71.66666666666667%;
6468
- }
6469
- .col-md-44 {
6470
- width: 73.33333333333333%;
6471
- }
6472
- .col-md-45 {
6473
- width: 75%;
6474
- }
6475
- .col-md-46 {
6476
- width: 76.66666666666667%;
6477
- }
6478
- .col-md-47 {
6479
- width: 78.33333333333333%;
6480
- }
6481
- .col-md-48 {
6482
- width: 80%;
6483
- }
6484
- .col-md-49 {
6485
- width: 81.66666666666667%;
6486
- }
6487
- .col-md-50 {
6488
- width: 83.33333333333333%;
6489
- }
6490
- .col-md-51 {
6491
- width: 85%;
6492
- }
6493
- .col-md-52 {
6494
- width: 86.66666666666667%;
6495
- }
6496
- .col-md-53 {
6497
- width: 88.33333333333333%;
6498
- }
6499
- .col-md-54 {
6500
- width: 90%;
6501
- }
6502
- .col-md-55 {
6503
- width: 91.66666666666667%;
6504
- }
6505
- .col-md-56 {
6506
- width: 93.33333333333333%;
6507
- }
6508
- .col-md-57 {
6509
- width: 95%;
6510
- }
6511
- .col-md-58 {
6512
- width: 96.66666666666667%;
6513
- }
6514
- .col-md-59 {
6515
- width: 98.33333333333333%;
6516
- }
6517
- .col-md-60 {
6518
- width: 100%;
6519
- }
6520
- .col-md-push-0 {
6521
- left: auto
6522
- }
6523
- .col-md-push-1 {
6524
- left: 1.666666666666667%;
6525
- }
6526
- .col-md-push-2 {
6527
- left: 3.333333333333333%;
6528
- }
6529
- .col-md-push-3 {
6530
- left: 5%;
6531
- }
6532
- .col-md-push-4 {
6533
- left: 6.666666666666667%;
6534
- }
6535
- .col-md-push-5 {
6536
- left: 8.333333333333333%;
6537
- }
6538
- .col-md-push-6 {
6539
- left: 10%;
6540
- }
6541
- .col-md-push-7 {
6542
- left: 11.66666666666667%;
6543
- }
6544
- .col-md-push-8 {
6545
- left: 13.33333333333333%;
6546
- }
6547
- .col-md-push-9 {
6548
- left: 15%;
6549
- }
6550
- .col-md-push-10 {
6551
- left: 16.66666666666667%;
6552
- }
6553
- .col-md-push-11 {
6554
- left: 18.33333333333333%;
6555
- }
6556
- .col-md-push-12 {
6557
- left: 20%;
6558
- }
6559
- .col-md-push-13 {
6560
- left: 21.66666666666667%;
6561
- }
6562
- .col-md-push-14 {
6563
- left: 23.33333333333333%;
6564
- }
6565
- .col-md-push-15 {
6566
- left: 25%;
6567
- }
6568
- .col-md-push-16 {
6569
- left: 26.66666666666667%;
6570
- }
6571
- .col-md-push-17 {
6572
- left: 28.33333333333333%;
6573
- }
6574
- .col-md-push-18 {
6575
- left: 30%;
6576
- }
6577
- .col-md-push-19 {
6578
- left: 31.66666666666667%;
6579
- }
6580
- .col-md-push-20 {
6581
- left: 33.33333333333333%;
6582
- }
6583
- .col-md-push-21 {
6584
- left: 35%;
6585
- }
6586
- .col-md-push-22 {
6587
- left: 36.66666666666667%;
6588
- }
6589
- .col-md-push-23 {
6590
- left: 38.33333333333333%;
6591
- }
6592
- .col-md-push-24 {
6593
- left: 40%;
6594
- }
6595
- .col-md-push-25 {
6596
- left: 41.66666666666667%;
6597
- }
6598
- .col-md-push-26 {
6599
- left: 43.33333333333333%;
6600
- }
6601
- .col-md-push-27 {
6602
- left: 45%;
6603
- }
6604
- .col-md-push-28 {
6605
- left: 46.66666666666667%;
6606
- }
6607
- .col-md-push-29 {
6608
- left: 48.33333333333333%;
6609
- }
6610
- .col-md-push-30 {
6611
- left: 50%;
6612
- }
6613
- .col-md-push-31 {
6614
- left: 51.66666666666667%;
6615
- }
6616
- .col-md-push-32 {
6617
- left: 53.33333333333333%;
6618
- }
6619
- .col-md-push-33 {
6620
- left: 55%;
6621
- }
6622
- .col-md-push-34 {
6623
- left: 56.66666666666667%;
6624
- }
6625
- .col-md-push-35 {
6626
- left: 58.33333333333333%;
6627
- }
6628
- .col-md-push-36 {
6629
- left: 60%;
6630
- }
6631
- .col-md-push-37 {
6632
- left: 61.66666666666667%;
6633
- }
6634
- .col-md-push-38 {
6635
- left: 63.33333333333333%;
6636
- }
6637
- .col-md-push-39 {
6638
- left: 65%;
6639
- }
6640
- .col-md-push-40 {
6641
- left: 66.66666666666667%;
6642
- }
6643
- .col-md-push-41 {
6644
- left: 68.33333333333333%;
6645
- }
6646
- .col-md-push-42 {
6647
- left: 70%;
6648
- }
6649
- .col-md-push-43 {
6650
- left: 71.66666666666667%;
6651
- }
6652
- .col-md-push-44 {
6653
- left: 73.33333333333333%;
6654
- }
6655
- .col-md-push-45 {
6656
- left: 75%;
6657
- }
6658
- .col-md-push-46 {
6659
- left: 76.66666666666667%;
6660
- }
6661
- .col-md-push-47 {
6662
- left: 78.33333333333333%;
6663
- }
6664
- .col-md-push-48 {
6665
- left: 80%;
6666
- }
6667
- .col-md-push-49 {
6668
- left: 81.66666666666667%;
6669
- }
6670
- .col-md-push-50 {
6671
- left: 83.33333333333333%;
6672
- }
6673
- .col-md-push-51 {
6674
- left: 85%;
6675
- }
6676
- .col-md-push-52 {
6677
- left: 86.66666666666667%;
6678
- }
6679
- .col-md-push-53 {
6680
- left: 88.33333333333333%;
6681
- }
6682
- .col-md-push-54 {
6683
- left: 90%;
6684
- }
6685
- .col-md-push-55 {
6686
- left: 91.66666666666667%;
6687
- }
6688
- .col-md-push-56 {
6689
- left: 93.33333333333333%;
6690
- }
6691
- .col-md-push-57 {
6692
- left: 95%;
6693
- }
6694
- .col-md-push-58 {
6695
- left: 96.66666666666667%;
6696
- }
6697
- .col-md-push-59 {
6698
- left: 98.33333333333333%;
6699
- }
6700
- .col-md-pull-0 {
6701
- right: auto
6702
- }
6703
- .col-md-pull-1 {
6704
- right: 1.666666666666667%;
6705
- }
6706
- .col-md-pull-2 {
6707
- right: 3.333333333333333%;
6708
- }
6709
- .col-md-pull-3 {
6710
- right: 5%;
6711
- }
6712
- .col-md-pull-4 {
6713
- right: 6.666666666666667%;
6714
- }
6715
- .col-md-pull-5 {
6716
- right: 8.333333333333333%;
6717
- }
6718
- .col-md-pull-6 {
6719
- right: 10%;
6720
- }
6721
- .col-md-pull-7 {
6722
- right: 11.66666666666667%;
6723
- }
6724
- .col-md-pull-8 {
6725
- right: 13.33333333333333%;
6726
- }
6727
- .col-md-pull-9 {
6728
- right: 15%;
6729
- }
6730
- .col-md-pull-10 {
6731
- right: 16.66666666666667%;
6732
- }
6733
- .col-md-pull-11 {
6734
- right: 18.33333333333333%;
6735
- }
6736
- .col-md-pull-12 {
6737
- right: 20%;
6738
- }
6739
- .col-md-pull-13 {
6740
- right: 21.66666666666667%;
6741
- }
6742
- .col-md-pull-14 {
6743
- right: 23.33333333333333%;
6744
- }
6745
- .col-md-pull-15 {
6746
- right: 25%;
6747
- }
6748
- .col-md-pull-16 {
6749
- right: 26.66666666666667%;
6750
- }
6751
- .col-md-pull-17 {
6752
- right: 28.33333333333333%;
6753
- }
6754
- .col-md-pull-18 {
6755
- right: 30%;
6756
- }
6757
- .col-md-pull-19 {
6758
- right: 31.66666666666667%;
6759
- }
6760
- .col-md-pull-20 {
6761
- right: 33.33333333333333%;
6762
- }
6763
- .col-md-pull-21 {
6764
- right: 35%;
6765
- }
6766
- .col-md-pull-22 {
6767
- right: 36.66666666666667%;
6768
- }
6769
- .col-md-pull-23 {
6770
- right: 38.33333333333333%;
6771
- }
6772
- .col-md-pull-24 {
6773
- right: 40%;
6774
- }
6775
- .col-md-pull-25 {
6776
- right: 41.66666666666667%;
6777
- }
6778
- .col-md-pull-26 {
6779
- right: 43.33333333333333%;
6780
- }
6781
- .col-md-pull-27 {
6782
- right: 45%;
6783
- }
6784
- .col-md-pull-28 {
6785
- right: 46.66666666666667%;
6786
- }
6787
- .col-md-pull-29 {
6788
- right: 48.33333333333333%;
6789
- }
6790
- .col-md-pull-30 {
6791
- right: 50%;
6792
- }
6793
- .col-md-pull-31 {
6794
- right: 51.66666666666667%;
6795
- }
6796
- .col-md-pull-32 {
6797
- right: 53.33333333333333%;
6798
- }
6799
- .col-md-pull-33 {
6800
- right: 55%;
6801
- }
6802
- .col-md-pull-34 {
6803
- right: 56.66666666666667%;
6804
- }
6805
- .col-md-pull-35 {
6806
- right: 58.33333333333333%;
6807
- }
6808
- .col-md-pull-36 {
6809
- right: 60%;
6810
- }
6811
- .col-md-pull-37 {
6812
- right: 61.66666666666667%;
6813
- }
6814
- .col-md-pull-38 {
6815
- right: 63.33333333333333%;
6816
- }
6817
- .col-md-pull-39 {
6818
- right: 65%;
6819
- }
6820
- .col-md-pull-40 {
6821
- right: 66.66666666666667%;
6822
- }
6823
- .col-md-pull-41 {
6824
- right: 68.33333333333333%;
6825
- }
6826
- .col-md-pull-42 {
6827
- right: 70%;
6828
- }
6829
- .col-md-pull-43 {
6830
- right: 71.66666666666667%;
6831
- }
6832
- .col-md-pull-44 {
6833
- right: 73.33333333333333%;
6834
- }
6835
- .col-md-pull-45 {
6836
- right: 75%;
6837
- }
6838
- .col-md-pull-46 {
6839
- right: 76.66666666666667%;
6840
- }
6841
- .col-md-pull-47 {
6842
- right: 78.33333333333333%;
6843
- }
6844
- .col-md-pull-48 {
6845
- right: 80%;
6846
- }
6847
- .col-md-pull-49 {
6848
- right: 81.66666666666667%;
6849
- }
6850
- .col-md-pull-50 {
6851
- right: 83.33333333333333%;
6852
- }
6853
- .col-md-pull-51 {
6854
- right: 85%;
6855
- }
6856
- .col-md-pull-52 {
6857
- right: 86.66666666666667%;
6858
- }
6859
- .col-md-pull-53 {
6860
- right: 88.33333333333333%;
6861
- }
6862
- .col-md-pull-54 {
6863
- right: 90%;
6864
- }
6865
- .col-md-pull-55 {
6866
- right: 91.66666666666667%;
6867
- }
6868
- .col-md-pull-56 {
6869
- right: 93.33333333333333%;
6870
- }
6871
- .col-md-pull-57 {
6872
- right: 95%;
6873
- }
6874
- .col-md-pull-58 {
6875
- right: 96.66666666666667%;
6876
- }
6877
- .col-md-pull-59 {
6878
- right: 98.33333333333333%;
6879
- }
6880
- .col-md-offset-0 {
6881
- margin-left: 0
6882
- }
6883
- .col-md-offset-1 {
6884
- margin-left: 1.666666666666667%;
6885
- }
6886
- .col-md-offset-2 {
6887
- margin-left: 3.333333333333333%;
6888
- }
6889
- .col-md-offset-3 {
6890
- margin-left: 5%;
6891
- }
6892
- .col-md-offset-4 {
6893
- margin-left: 6.666666666666667%;
6894
- }
6895
- .col-md-offset-5 {
6896
- margin-left: 8.333333333333333%;
6897
- }
6898
- .col-md-offset-6 {
6899
- margin-left: 10%;
6900
- }
6901
- .col-md-offset-7 {
6902
- margin-left: 11.66666666666667%;
6903
- }
6904
- .col-md-offset-8 {
6905
- margin-left: 13.33333333333333%;
6906
- }
6907
- .col-md-offset-9 {
6908
- margin-left: 15%;
6909
- }
6910
- .col-md-offset-10 {
6911
- margin-left: 16.66666666666667%;
6912
- }
6913
- .col-md-offset-11 {
6914
- margin-left: 18.33333333333333%;
6915
- }
6916
- .col-md-offset-12 {
6917
- margin-left: 20%;
6918
- }
6919
- .col-md-offset-13 {
6920
- margin-left: 21.66666666666667%;
6921
- }
6922
- .col-md-offset-14 {
6923
- margin-left: 23.33333333333333%;
6924
- }
6925
- .col-md-offset-15 {
6926
- margin-left: 25%;
6927
- }
6928
- .col-md-offset-16 {
6929
- margin-left: 26.66666666666667%;
6930
- }
6931
- .col-md-offset-17 {
6932
- margin-left: 28.33333333333333%;
6933
- }
6934
- .col-md-offset-18 {
6935
- margin-left: 30%;
6936
- }
6937
- .col-md-offset-19 {
6938
- margin-left: 31.66666666666667%;
6939
- }
6940
- .col-md-offset-20 {
6941
- margin-left: 33.33333333333333%;
6942
- }
6943
- .col-md-offset-21 {
6944
- margin-left: 35%;
6945
- }
6946
- .col-md-offset-22 {
6947
- margin-left: 36.66666666666667%;
6948
- }
6949
- .col-md-offset-23 {
6950
- margin-left: 38.33333333333333%;
6951
- }
6952
- .col-md-offset-24 {
6953
- margin-left: 40%;
6954
- }
6955
- .col-md-offset-25 {
6956
- margin-left: 41.66666666666667%;
6957
- }
6958
- .col-md-offset-26 {
6959
- margin-left: 43.33333333333333%;
6960
- }
6961
- .col-md-offset-27 {
6962
- margin-left: 45%;
6963
- }
6964
- .col-md-offset-28 {
6965
- margin-left: 46.66666666666667%;
6966
- }
6967
- .col-md-offset-29 {
6968
- margin-left: 48.33333333333333%;
6969
- }
6970
- .col-md-offset-30 {
6971
- margin-left: 50%;
6972
- }
6973
- .col-md-offset-31 {
6974
- margin-left: 51.66666666666667%;
6975
- }
6976
- .col-md-offset-32 {
6977
- margin-left: 53.33333333333333%;
6978
- }
6979
- .col-md-offset-33 {
6980
- margin-left: 55%;
6981
- }
6982
- .col-md-offset-34 {
6983
- margin-left: 56.66666666666667%;
6984
- }
6985
- .col-md-offset-35 {
6986
- margin-left: 58.33333333333333%;
6987
- }
6988
- .col-md-offset-36 {
6989
- margin-left: 60%;
6990
- }
6991
- .col-md-offset-37 {
6992
- margin-left: 61.66666666666667%;
6993
- }
6994
- .col-md-offset-38 {
6995
- margin-left: 63.33333333333333%;
6996
- }
6997
- .col-md-offset-39 {
6998
- margin-left: 65%;
6999
- }
7000
- .col-md-offset-40 {
7001
- margin-left: 66.66666666666667%;
7002
- }
7003
- .col-md-offset-41 {
7004
- margin-left: 68.33333333333333%;
7005
- }
7006
- .col-md-offset-42 {
7007
- margin-left: 70%;
7008
- }
7009
- .col-md-offset-43 {
7010
- margin-left: 71.66666666666667%;
7011
- }
7012
- .col-md-offset-44 {
7013
- margin-left: 73.33333333333333%;
7014
- }
7015
- .col-md-offset-45 {
7016
- margin-left: 75%;
7017
- }
7018
- .col-md-offset-46 {
7019
- margin-left: 76.66666666666667%;
7020
- }
7021
- .col-md-offset-47 {
7022
- margin-left: 78.33333333333333%;
7023
- }
7024
- .col-md-offset-48 {
7025
- margin-left: 80%;
7026
- }
7027
- .col-md-offset-49 {
7028
- margin-left: 81.6666666666667%;
7029
- }
7030
- .col-md-offset-50 {
7031
- margin-left: 83.33333333333333%;
7032
- }
7033
- .col-md-offset-51 {
7034
- margin-left: 85%;
7035
- }
7036
- .col-md-offset-52 {
7037
- margin-left: 86.66666666666667%;
7038
- }
7039
- .col-md-offset-53 {
7040
- margin-left: 88.33333333333333%;
7041
- }
7042
- .col-md-offset-54 {
7043
- margin-left: 90%;
7044
- }
7045
- .col-md-offset-55 {
7046
- margin-left: 91.66666666666667%;
7047
- }
7048
- .col-md-offset-56 {
7049
- margin-left: 93.33333333333333%;
7050
- }
7051
- .col-md-offset-57 {
7052
- margin-left: 95%;
7053
- }
7054
- .col-md-offset-58 {
7055
- margin-left: 96.66666666666667%;
7056
- }
7057
- .col-md-offset-59 {
7058
- margin-left: 98.33333333333333%;
7059
- }
7060
- /*commom desktop */
7061
- .fixed-width-520 {
7062
- margin: 0px auto;
7063
- float: none;
7064
- width: 520px !important;
7065
- }
7066
- .fixed-width-580 {
7067
- margin: 0px auto;
7068
- float: none;
7069
- width: 580px !important;
7070
- }
7071
- .fixed-width-680 {
7072
- margin: 0px auto;
7073
- float: none;
7074
- width: 680px !important;
7075
- }
7076
- .fixed-width-700 {
7077
- margin: 0px auto;
7078
- float: none;
7079
- width: 700px;
7080
- }
7081
- .fixed-width-730 {
7082
- margin: 0px auto;
7083
- float: none;
7084
- width: 730px;
7085
- }
7086
- .fixed-width-800 {
7087
- margin: 0px auto;
7088
- float: none;
7089
- width: 800px;
7090
- }
7091
- .fixed-width-940 {
7092
- margin: 0px auto;
7093
- float: none;
7094
- width: 940px;
7095
- }
7096
- .fixed-width-980 {
7097
- margin: 0px auto;
7098
- float: none;
7099
- width: 980px;
7100
- }
7101
- .fixed-width-1080 {
7102
- margin: 0px auto;
7103
- float: none;
7104
- width: 1080px;
7105
- }
7106
- .fixed-width-1140 {
7107
- margin: 0px auto;
7108
- float: none;
7109
- width: 1140px;
7110
- }
7111
- .main-container {
7112
- width: 100%;
7113
- float: left;
7114
- }
7115
- .width-570 {
7116
- width: 570px;
7117
- }
7118
- .width-680 {
7119
- width: 680px;
7120
- }
7121
- /* signed up desktop*/
7122
- .signup-block
7123
- {
7124
- width:740px;
7125
- margin:60px 0px 0px 120px;
7126
- }
7127
- /* dashboard widget conf desktop*/
7128
-
7129
- .layout-block
7130
- {
7131
- float: left;
7132
- width:442px;
7133
- }
7134
- }
7135
- @media (min-width: 1200px) {
7136
 
7137
- .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-13, .col-lg-14, .col-lg-15, .col-lg-16, .col-lg-17, .col-lg-18, .col-lg-19, .col-lg-20, .col-lg-21, .col-lg-22, .col-lg-23, .col-lg-24, .col-lg-25, .col-lg-26, .col-lg-27, .col-lg-28, .col-lg-29, .col-lg-30, .col-lg-31, .col-lg-32, .col-lg-33, .col-lg-34, .col-lg-35, .col-lg-36, .col-lg-37, .col-lg-38, .col-lg-39, .col-lg-40, .col-lg-41, .col-lg-42, .col-lg-43, .col-lg-44, .col-lg-45, .col-lg-46, .col-lg-47, .col-lg-48, .col-lg-49, .col-lg-50, .col-lg-51, .col-lg-52, .col-lg-53, .col-lg-54, .col-lg-55, .col-lg-56, .col-lg-57, .col-lg-58, .col-lg-59 {
7138
- float: left;
7139
- }
7140
- .col-lg-1 {
7141
- width: 1.666666666666667%;
7142
- }
7143
- .col-lg-2 {
7144
- width: 3.333333333333333%;
7145
- }
7146
- .col-lg-3 {
7147
- width: 5%;
7148
- }
7149
- .col-lg-4 {
7150
- width: 6.666666666666667%;
7151
- }
7152
- .col-lg-5 {
7153
- width: 8.333333333333333%;
7154
- }
7155
- .col-lg-6 {
7156
- width: 10%;
7157
- }
7158
- .col-lg-7 {
7159
- width: 11.66666666666667%;
7160
- }
7161
- .col-lg-8 {
7162
- width: 13.33333333333333%;
7163
- }
7164
- .col-lg-9 {
7165
- width: 15%;
7166
- }
7167
- .col-lg-10 {
7168
- width: 16.66666666666667%;
7169
- }
7170
- .col-lg-11 {
7171
- width: 18.33333333333333%;
7172
- }
7173
- .col-lg-12 {
7174
- width: 20%;
7175
- }
7176
- .col-lg-13 {
7177
- width: 21.66666666666667%;
7178
- }
7179
- .col-lg-14 {
7180
- width: 23.33333333333333%;
7181
- }
7182
- .col-lg-15 {
7183
- width: 25%;
7184
- }
7185
- .col-lg-16 {
7186
- width: 26.66666666666667%;
7187
- }
7188
- .col-lg-17 {
7189
- width: 28.33333333333333%;
7190
- }
7191
- .col-lg-18 {
7192
- width: 30%;
7193
- }
7194
- .col-lg-19 {
7195
- width: 31.66666666666667%;
7196
- }
7197
- .col-lg-20 {
7198
- width: 33.33333333333333%;
7199
- }
7200
- .col-lg-21 {
7201
- width: 35%;
7202
- }
7203
- .col-lg-22 {
7204
- width: 36.66666666666667%;
7205
- }
7206
- .col-lg-23 {
7207
- width: 38.33333333333333%;
7208
- }
7209
- .col-lg-24 {
7210
- width: 40%;
7211
- }
7212
- .col-lg-25 {
7213
- width: 41.66666666666667%;
7214
- }
7215
- .col-lg-26 {
7216
- width: 43.33333333333333%;
7217
- }
7218
- .col-lg-27 {
7219
- width: 45%;
7220
- }
7221
- .col-lg-28 {
7222
- width: 46.66666666666667%;
7223
- }
7224
- .col-lg-29 {
7225
- width: 48.33333333333333%;
7226
- }
7227
- .col-lg-30 {
7228
- width: 50%;
7229
- }
7230
- .col-lg-31 {
7231
- width: 51.66666666666667%;
7232
- }
7233
- .col-lg-32 {
7234
- width: 53.33333333333333%;
7235
- }
7236
- .col-lg-33 {
7237
- width: 55%;
7238
- }
7239
- .col-lg-34 {
7240
- width: 56.66666666666667%;
7241
- }
7242
- .col-lg-35 {
7243
- width: 58.33333333333333%;
7244
- }
7245
- .col-lg-36 {
7246
- width: 60%;
7247
- }
7248
- .col-lg-37 {
7249
- width: 61.66666666666667%;
7250
- }
7251
- .col-lg-38 {
7252
- width: 63.33333333333333%;
7253
- }
7254
- .col-lg-39 {
7255
- width: 65%;
7256
- }
7257
- .col-lg-40 {
7258
- width: 66.66666666666667%;
7259
- }
7260
- .col-lg-41 {
7261
- width: 68.33333333333333%;
7262
- }
7263
- .col-lg-42 {
7264
- width: 70%;
7265
- }
7266
- .col-lg-43 {
7267
- width: 71.66666666666667%;
7268
- }
7269
- .col-lg-44 {
7270
- width: 73.33333333333333%;
7271
- }
7272
- .col-lg-45 {
7273
- width: 75%;
7274
- }
7275
- .col-lg-46 {
7276
- width: 76.66666666666667%;
7277
- }
7278
- .col-lg-47 {
7279
- width: 78.33333333333333%;
7280
- }
7281
- .col-lg-48 {
7282
- width: 80%;
7283
- }
7284
- .col-lg-49 {
7285
- width: 81.66666666666667%;
7286
- }
7287
- .col-lg-50 {
7288
- width: 83.33333333333333%;
7289
- }
7290
- .col-lg-51 {
7291
- width: 85%;
7292
- }
7293
- .col-lg-52 {
7294
- width: 86.66666666666667%;
7295
- }
7296
- .col-lg-53 {
7297
- width: 88.33333333333333%;
7298
- }
7299
- .col-lg-54 {
7300
- width: 90%;
7301
- }
7302
- .col-lg-55 {
7303
- width: 91.66666666666667%;
7304
- }
7305
- .col-lg-56 {
7306
- width: 93.33333333333333%;
7307
- }
7308
- .col-lg-57 {
7309
- width: 95%;
7310
- }
7311
- .col-lg-58 {
7312
- width: 96.66666666666667%;
7313
- }
7314
- .col-lg-59 {
7315
- width: 98.33333333333333%;
7316
- }
7317
- .col-lg-60 {
7318
- width: 100%;
7319
- }
7320
- .col-lg-push-0 {
7321
- left: auto
7322
- }
7323
- .col-lg-push-1 {
7324
- left: 1.666666666666667%;
7325
- }
7326
- .col-lg-push-2 {
7327
- left: 3.333333333333333%;
7328
- }
7329
- .col-lg-push-3 {
7330
- left: 5%;
7331
- }
7332
- .col-lg-push-4 {
7333
- left: 6.666666666666667%;
7334
- }
7335
- .col-lg-push-5 {
7336
- left: 8.333333333333333%;
7337
- }
7338
- .col-lg-push-6 {
7339
- left: 10%;
7340
- }
7341
- .col-lg-push-7 {
7342
- left: 11.66666666666667%;
7343
- }
7344
- .col-lg-push-8 {
7345
- left: 13.33333333333333%;
7346
- }
7347
- .col-lg-push-9 {
7348
- left: 15%;
7349
- }
7350
- .col-lg-push-10 {
7351
- left: 16.66666666666667%;
7352
- }
7353
- .col-lg-push-11 {
7354
- left: 18.33333333333333%;
7355
- }
7356
- .col-lg-push-12 {
7357
- left: 20%;
7358
- }
7359
- .col-lg-push-13 {
7360
- left: 21.66666666666667%;
7361
- }
7362
- .col-lg-push-14 {
7363
- left: 23.33333333333333%;
7364
- }
7365
- .col-lg-push-15 {
7366
- left: 25%;
7367
- }
7368
- .col-lg-push-16 {
7369
- left: 26.66666666666667%;
7370
- }
7371
- .col-lg-push-17 {
7372
- left: 28.33333333333333%;
7373
- }
7374
- .col-lg-push-18 {
7375
- left: 30%;
7376
- }
7377
- .col-lg-push-19 {
7378
- left: 31.66666666666667%;
7379
- }
7380
- .col-lg-push-20 {
7381
- left: 33.33333333333333%;
7382
- }
7383
- .col-lg-push-21 {
7384
- left: 35%;
7385
- }
7386
- .col-lg-push-22 {
7387
- left: 36.66666666666667%;
7388
- }
7389
- .col-lg-push-23 {
7390
- left: 38.33333333333333%;
7391
- }
7392
- .col-lg-push-24 {
7393
- left: 40%;
7394
- }
7395
- .col-lg-push-25 {
7396
- left: 41.66666666666667%;
7397
- }
7398
- .col-lg-push-26 {
7399
- left: 43.33333333333333%;
7400
- }
7401
- .col-lg-push-27 {
7402
- left: 45%;
7403
- }
7404
- .col-lg-push-28 {
7405
- left: 46.66666666666667%;
7406
- }
7407
- .col-lg-push-29 {
7408
- left: 48.33333333333333%;
7409
- }
7410
- .col-lg-push-30 {
7411
- left: 50%;
7412
- }
7413
- .col-lg-push-31 {
7414
- left: 51.66666666666667%;
7415
- }
7416
- .col-lg-push-32 {
7417
- left: 53.33333333333333%;
7418
- }
7419
- .col-lg-push-33 {
7420
- left: 55%;
7421
- }
7422
- .col-lg-push-34 {
7423
- left: 56.66666666666667%;
7424
- }
7425
- .col-lg-push-35 {
7426
- left: 58.33333333333333%;
7427
- }
7428
- .col-lg-push-36 {
7429
- left: 60%;
7430
- }
7431
- .col-lg-push-37 {
7432
- left: 61.66666666666667%;
7433
- }
7434
- .col-lg-push-38 {
7435
- left: 63.33333333333333%;
7436
- }
7437
- .col-lg-push-39 {
7438
- left: 65%;
7439
- }
7440
- .col-lg-push-40 {
7441
- left: 66.66666666666667%;
7442
- }
7443
- .col-lg-push-41 {
7444
- left: 68.33333333333333%;
7445
- }
7446
- .col-lg-push-42 {
7447
- left: 70%;
7448
- }
7449
- .col-lg-push-43 {
7450
- left: 71.66666666666667%;
7451
- }
7452
- .col-lg-push-44 {
7453
- left: 73.33333333333333%;
7454
- }
7455
- .col-lg-push-45 {
7456
- left: 75%;
7457
- }
7458
- .col-lg-push-46 {
7459
- left: 76.66666666666667%;
7460
- }
7461
- .col-lg-push-47 {
7462
- left: 78.33333333333333%;
7463
- }
7464
- .col-lg-push-48 {
7465
- left: 80%;
7466
- }
7467
- .col-lg-push-49 {
7468
- left: 81.66666666666667%;
7469
- }
7470
- .col-lg-push-50 {
7471
- left: 83.33333333333333%;
7472
- }
7473
- .col-lg-push-51 {
7474
- left: 85%;
7475
- }
7476
- .col-lg-push-52 {
7477
- left: 86.66666666666667%;
7478
- }
7479
- .col-lg-push-53 {
7480
- left: 88.33333333333333%;
7481
- }
7482
- .col-lg-push-54 {
7483
- left: 90%;
7484
- }
7485
- .col-lg-push-55 {
7486
- left: 91.66666666666667%;
7487
- }
7488
- .col-lg-push-56 {
7489
- left: 93.33333333333333%;
7490
- }
7491
- .col-lg-push-57 {
7492
- left: 95%;
7493
- }
7494
- .col-lg-push-58 {
7495
- left: 96.66666666666667%;
7496
- }
7497
- .col-lg-push-59 {
7498
- left: 98.33333333333333%;
7499
- }
7500
- .col-lg-pull-0 {
7501
- right: auto
7502
- }
7503
- .col-lg-pull-1 {
7504
- right: 1.666666666666667%;
7505
- }
7506
- .col-lg-pull-2 {
7507
- right: 3.333333333333333%;
7508
- }
7509
- .col-lg-pull-3 {
7510
- right: 5%;
7511
- }
7512
- .col-lg-pull-4 {
7513
- right: 6.666666666666667%;
7514
- }
7515
- .col-lg-pull-5 {
7516
- right: 8.333333333333333%;
7517
- }
7518
- .col-lg-pull-6 {
7519
- right: 10%;
7520
- }
7521
- .col-lg-pull-7 {
7522
- right: 11.66666666666667%;
7523
- }
7524
- .col-lg-pull-8 {
7525
- right: 13.33333333333333%;
7526
- }
7527
- .col-lg-pull-9 {
7528
- right: 15%;
7529
- }
7530
- .col-lg-pull-10 {
7531
- right: 16.66666666666667%;
7532
- }
7533
- .col-lg-pull-11 {
7534
- right: 18.33333333333333%;
7535
- }
7536
- .col-lg-pull-12 {
7537
- right: 20%;
7538
- }
7539
- .col-lg-pull-13 {
7540
- right: 21.66666666666667%;
7541
- }
7542
- .col-lg-pull-14 {
7543
- right: 23.33333333333333%;
7544
- }
7545
- .col-lg-pull-15 {
7546
- right: 25%;
7547
- }
7548
- .col-lg-pull-16 {
7549
- right: 26.66666666666667%;
7550
- }
7551
- .col-lg-pull-17 {
7552
- right: 28.33333333333333%;
7553
- }
7554
- .col-lg-pull-18 {
7555
- right: 30%;
7556
- }
7557
- .col-lg-pull-19 {
7558
- right: 31.66666666666667%;
7559
- }
7560
- .col-lg-pull-20 {
7561
- right: 33.33333333333333%;
7562
- }
7563
- .col-lg-pull-21 {
7564
- right: 35%;
7565
- }
7566
- .col-lg-pull-22 {
7567
- right: 36.66666666666667%;
7568
- }
7569
- .col-lg-pull-23 {
7570
- right: 38.33333333333333%;
7571
- }
7572
- .col-lg-pull-24 {
7573
- right: 40%;
7574
- }
7575
- .col-lg-pull-25 {
7576
- right: 41.66666666666667%;
7577
- }
7578
- .col-lg-pull-26 {
7579
- right: 43.33333333333333%;
7580
- }
7581
- .col-lg-pull-27 {
7582
- right: 45%;
7583
- }
7584
- .col-lg-pull-28 {
7585
- right: 46.66666666666667%;
7586
- }
7587
- .col-lg-pull-29 {
7588
- right: 48.33333333333333%;
7589
- }
7590
- .col-lg-pull-30 {
7591
- right: 50%;
7592
- }
7593
- .col-lg-pull-31 {
7594
- right: 51.66666666666667%;
7595
- }
7596
- .col-lg-pull-32 {
7597
- right: 53.33333333333333%;
7598
- }
7599
- .col-lg-pull-33 {
7600
- right: 55%;
7601
- }
7602
- .col-lg-pull-34 {
7603
- right: 56.66666666666667%;
7604
- }
7605
- .col-lg-pull-35 {
7606
- right: 58.33333333333333%;
7607
- }
7608
- .col-lg-pull-36 {
7609
- right: 60%;
7610
- }
7611
- .col-lg-pull-37 {
7612
- right: 61.66666666666667%;
7613
- }
7614
- .col-lg-pull-38 {
7615
- right: 63.33333333333333%;
7616
- }
7617
- .col-lg-pull-39 {
7618
- right: 65%;
7619
- }
7620
- .col-lg-pull-40 {
7621
- right: 66.66666666666667%;
7622
- }
7623
- .col-lg-pull-41 {
7624
- right: 68.33333333333333%;
7625
- }
7626
- .col-lg-pull-42 {
7627
- right: 70%;
7628
- }
7629
- .col-lg-pull-43 {
7630
- right: 71.66666666666667%;
7631
- }
7632
- .col-lg-pull-44 {
7633
- right: 73.33333333333333%;
7634
- }
7635
- .col-lg-pull-45 {
7636
- right: 75%;
7637
- }
7638
- .col-lg-pull-46 {
7639
- right: 76.66666666666667%;
7640
- }
7641
- .col-lg-pull-47 {
7642
- right: 78.33333333333333%;
7643
- }
7644
- .col-lg-pull-48 {
7645
- right: 80%;
7646
- }
7647
- .col-lg-pull-49 {
7648
- right: 81.66666666666667%;
7649
- }
7650
- .col-lg-pull-50 {
7651
- right: 83.33333333333333%;
7652
- }
7653
- .col-lg-pull-51 {
7654
- right: 85%;
7655
- }
7656
- .col-lg-pull-52 {
7657
- right: 86.66666666666667%;
7658
- }
7659
- .col-lg-pull-53 {
7660
- right: 88.33333333333333%;
7661
- }
7662
- .col-lg-pull-54 {
7663
- right: 90%;
7664
- }
7665
- .col-lg-pull-55 {
7666
- right: 91.66666666666667%;
7667
- }
7668
- .col-lg-pull-56 {
7669
- right: 93.33333333333333%;
7670
- }
7671
- .col-lg-pull-57 {
7672
- right: 95%;
7673
- }
7674
- .col-lg-pull-58 {
7675
- right: 96.66666666666667%;
7676
- }
7677
- .col-lg-pull-59 {
7678
- right: 98.33333333333333%;
7679
- }
7680
- .col-lg-offset-0 {
7681
- margin-left: 0
7682
- }
7683
- .col-lg-offset-1 {
7684
- margin-left: 1.666666666666667%;
7685
- }
7686
- .col-lg-offset-2 {
7687
- margin-left: 3.333333333333333%;
7688
- }
7689
- .col-lg-offset-3 {
7690
- margin-left: 5%;
7691
- }
7692
- .col-lg-offset-4 {
7693
- margin-left: 6.666666666666667%;
7694
- }
7695
- .col-lg-offset-5 {
7696
- margin-left: 8.333333333333333%;
7697
- }
7698
- .col-lg-offset-6 {
7699
- margin-left: 10%;
7700
- }
7701
- .col-lg-offset-7 {
7702
- margin-left: 11.66666666666667%;
7703
- }
7704
- .col-lg-offset-8 {
7705
- margin-left: 13.33333333333333%;
7706
- }
7707
- .col-lg-offset-9 {
7708
- margin-left: 15%;
7709
- }
7710
- .col-lg-offset-10 {
7711
- margin-left: 16.66666666666667%;
7712
- }
7713
- .col-lg-offset-11 {
7714
- margin-left: 18.33333333333333%;
7715
- }
7716
- .col-lg-offset-12 {
7717
- margin-left: 20%;
7718
- }
7719
- .col-lg-offset-13 {
7720
- margin-left: 21.66666666666667%;
7721
- }
7722
- .col-lg-offset-14 {
7723
- margin-left: 23.33333333333333%;
7724
- }
7725
- .col-lg-offset-15 {
7726
- margin-left: 25%;
7727
- }
7728
- .col-lg-offset-16 {
7729
- margin-left: 26.66666666666667%;
7730
- }
7731
- .col-lg-offset-17 {
7732
- margin-left: 28.33333333333333%;
7733
- }
7734
- .col-lg-offset-18 {
7735
- margin-left: 30%;
7736
- }
7737
- .col-lg-offset-19 {
7738
- margin-left: 31.66666666666667%;
7739
- }
7740
- .col-lg-offset-20 {
7741
- margin-left: 33.33333333333333%;
7742
- }
7743
- .col-lg-offset-21 {
7744
- margin-left: 35%;
7745
- }
7746
- .col-lg-offset-22 {
7747
- margin-left: 36.66666666666667%;
7748
- }
7749
- .col-lg-offset-23 {
7750
- margin-left: 38.33333333333333%;
7751
- }
7752
- .col-lg-offset-24 {
7753
- margin-left: 40%;
7754
- }
7755
- .col-lg-offset-25 {
7756
- margin-left: 41.66666666666667%;
7757
- }
7758
- .col-lg-offset-26 {
7759
- margin-left: 43.33333333333333%;
7760
- }
7761
- .col-lg-offset-27 {
7762
- margin-left: 45%;
7763
- }
7764
- .col-lg-offset-28 {
7765
- margin-left: 46.66666666666667%;
7766
- }
7767
- .col-lg-offset-29 {
7768
- margin-left: 48.33333333333333%;
7769
- }
7770
- .col-lg-offset-30 {
7771
- margin-left: 50%;
7772
- }
7773
- .col-lg-offset-31 {
7774
- margin-left: 51.66666666666667%;
7775
- }
7776
- .col-lg-offset-32 {
7777
- margin-left: 53.33333333333333%;
7778
- }
7779
- .col-lg-offset-33 {
7780
- margin-left: 55%;
7781
- }
7782
- .col-lg-offset-34 {
7783
- margin-left: 56.66666666666667%;
7784
- }
7785
- .col-lg-offset-35 {
7786
- margin-left: 58.33333333333333%;
7787
- }
7788
- .col-lg-offset-36 {
7789
- margin-left: 60%;
7790
- }
7791
- .col-lg-offset-37 {
7792
- margin-left: 61.66666666666667%;
7793
- }
7794
- .col-lg-offset-38 {
7795
- margin-left: 63.33333333333333%;
7796
- }
7797
- .col-lg-offset-39 {
7798
- margin-left: 65%;
7799
- }
7800
- .col-lg-offset-40 {
7801
- margin-left: 66.66666666666667%;
7802
- }
7803
- .col-lg-offset-41 {
7804
- margin-left: 68.33333333333333%;
7805
- }
7806
- .col-lg-offset-42 {
7807
- margin-left: 70%;
7808
- }
7809
- .col-lg-offset-43 {
7810
- margin-left: 71.66666666666667%;
7811
- }
7812
- .col-lg-offset-44 {
7813
- margin-left: 73.33333333333333%;
7814
- }
7815
- .col-lg-offset-45 {
7816
- margin-left: 75%;
7817
- }
7818
- .col-lg-offset-46 {
7819
- margin-left: 76.66666666666667%;
7820
- }
7821
- .col-lg-offset-47 {
7822
- margin-left: 78.33333333333333%;
7823
- }
7824
- .col-lg-offset-48 {
7825
- margin-left: 80%;
7826
- }
7827
- .col-lg-offset-49 {
7828
- margin-left: 81.66666666666667%;
7829
- }
7830
- .col-lg-offset-50 {
7831
- margin-left: 83.33333333333333%;
7832
- }
7833
- .col-lg-offset-51 {
7834
- margin-left: 85%;
7835
- }
7836
- .col-lg-offset-52 {
7837
- margin-left: 86.66666666666667%;
7838
- }
7839
- .col-lg-offset-53 {
7840
- margin-left: 88.33333333333333%;
7841
- }
7842
- .col-lg-offset-54 {
7843
- margin-left: 90%;
7844
- }
7845
- .col-lg-offset-55 {
7846
- margin-left: 91.66666666666667%;
7847
- }
7848
- .col-lg-offset-56 {
7849
- margin-left: 93.33333333333333%;
7850
- }
7851
- .col-lg-offset-57 {
7852
- margin-left: 95%;
7853
- }
7854
- .col-lg-offset-58 {
7855
- margin-left: 96.66666666666667%;
7856
- }
7857
- .col-lg-offset-59 {
7858
- margin-left: 98.33333333333333%;
7859
- }
1
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  /*common mobile*/
3
  .blue-link {
4
  font-size: 14px;
36
  label.label-radio.inactive, label.label-checkbox.inactive {
37
  cursor: default;
38
  }
39
+ input[type="radio"] {
40
  display: none;
41
  }
42
  label.label-radio:before, label.label-checkbox:before {
222
  margin: 0;
223
  }
224
  .pad-0 {
225
+ padding: 0 !important;
226
  }
227
  .pad-top-5 {
228
  padding-top: 5px;
273
  padding-bottom: 10px;
274
  }
275
  .pad-btm-20 {
276
+ padding-bottom: 20px !important;
277
  }
278
  .pad-btm-40 {
279
  padding-bottom: 40px;
1266
  text-align: right;
1267
  color: #4f5555;
1268
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1269
 
 
 
 
1270
 
1271
  /* common keyword list mobile ends*/
1272
  /* payment mobile*/
1678
 
1679
  .header-pricing {
1680
  padding: 60px 0px 40px 0px;
1681
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
1682
+
1683
  }
1684
  .top-header-pricing {
1685
  font-weight: 300;
1689
  }
1690
  .center-pricing-bottom
1691
  {
1692
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
1693
  }
1694
  .top-center-pricing
1695
  {
1696
  font-size: 24px;
1697
+ font-weight: 300;
1698
  margin-bottom: 10px;
1699
  }
1700
  .middle-center-pricing
1701
  {
1702
  font-size: 16px;
1703
+
1704
  color: #7f8585;
1705
  margin-bottom: 30px;
1706
  }
1712
  .container-pricing
1713
  {
1714
  padding: 60px 0px;
1715
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
1716
  }
1717
  .center-pricing-top
1718
  {
1990
  {
1991
  background-color: #fff;
1992
  padding: 13px 75px 13px 25px;
1993
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
1994
  }
1995
  .nav-dashboard>li>a
1996
  {
2014
  background-color: #fff;
2015
  border: 1px solid #dedede;
2016
  padding-top: 8px;
2017
+
2018
  }
2019
 
2020
  .dashboard-menu-dropdown {
2035
  box-shadow: none;
2036
  font-weight: medium;
2037
  background-color: transparent !important;
2038
+
2039
  color: #464646;
2040
  }
2041
  .dashboard-menu-dropdown > li > a {
2048
  border-right: 1px solid #dedede;
2049
  height: 40px;
2050
  font-size:16px;
2051
+
2052
  color: #464646;
2053
  }
2054
  .dashboard-menu-dropdown > li:last-child > a {
2127
  {
2128
  margin-top: 10px;
2129
  font-size: 16px;
2130
+
2131
  color: #4d4d4d !important;
2132
 
2133
 
2240
  {
2241
  color: #4e5356;
2242
  font-size: 18px;
2243
+
2244
  }
2245
  .in-grp-merchandise
2246
  {
2378
  {
2379
  color: #4d4d4d;
2380
  font-size:16px;
2381
+ font-weight: 300;
2382
  padding-left:12px;
2383
  border:1px solid #ece7e7;
2384
  background-color: #fff;
2391
  border-right: 1px solid #ece7e7;
2392
  height: 40px;
2393
  font-size:16px;
2394
+
2395
  border-top:none;
2396
  }
2397
  .merchandise-menu-dropdown > li:first-child > a
2423
  padding-top: 3px;
2424
  color: #fff !important;
2425
  font-size: 16px;
2426
+ font-weight: 300;
2427
  text-decoration: none;
2428
  vertical-align: middle;
2429
  border-right: none;
2609
 
2610
  background: #ac1d1c url('../img/arrow-white-top-button.png') no-repeat 93%;
2611
  font-family: proxima-nova, Arial, sans-serif !important;
2612
+ font-size: 16px;font-style: normal;
2613
  -webkit-border-radius: 5px;
2614
  -moz-border-radius: 5px;
2615
  border-radius: 5px;
3270
  position: relative;
3271
  display: inline-block;
3272
  vertical-align: middle;
3273
+ font-size: 14px;
3274
  zoom: 1;
3275
  *display: inline;
3276
  -webkit-user-select: none;
3285
  width: 360px !important;
3286
  }
3287
  .chosen-container .chosen-drop {
 
3288
  top: 100%;
 
3289
  z-index: 1010;
3290
  -webkit-box-sizing: border-box;
3291
  -moz-box-sizing: border-box;
3292
  box-sizing: border-box;
 
 
3293
  border-top: 0;
3294
+ /*background: #fdfdfd;*/
3295
  box-shadow: none;
3296
+ margin-top: 0px;
3297
+ }
3298
+ .middle-nav-dropdown .chosen-container .chosen-drop {
3299
+ width: 101% !important;
3300
+ /*border-top: 0;*/
3301
+ /*border: 1px solid #cddbde;*/
3302
+ border: 0;
3303
+ margin-top: 1px;
3304
+ margin-left: -1px;
3305
+ }
3306
+ .middle-nav-dropdown .chosen-container .chosen-drop ul,{
3307
+ border: 0px;
3308
  }
3309
  .chosen-container.chosen-with-drop .chosen-drop {
3310
  left: 0;
3324
  box-shadow: none;
3325
  background-color: #fdfdfd;
3326
  background-clip: padding-box;
3327
+ color: #4e5356;
3328
  text-decoration: none;
3329
  white-space: nowrap;
3330
  vertical-align: middle !important;
3364
  height: 40px !important;
3365
  vertical-align: middle;
3366
  display: table-cell;
3367
+ /*border-bottom: 1px solid #ece7e7;*/
3368
+ width: 380px;
3369
+ border-top: 0 !important;
3370
  }
3371
  .chosen-container-single .chosen-search input[type="text"] {
3372
  -webkit-box-sizing: border-box;
3375
  margin: 1px 0;
3376
  padding: 4px 20px 4px 5px;
3377
  width: 100%;
3378
+ height: 100%;
3379
  outline: 0;
3380
  border: none;
3381
  font-size: 16px;
3386
  background: #fdfdfd;
3387
  }
3388
  .chosen-container-single .chosen-drop {
3389
+ /*margin-top: -1px;*/
3390
  border-radius: 0 0 4px 4px;
3391
+ /*background-clip: padding-box;*/
3392
  border-top: 1px solid #ece7e7;
3393
+ margin-left: -2px;
3394
  }
3395
  .chosen-container-single.chosen-container-single-nosearch .chosen-search {
3396
  position: absolute;
3545
  }
3546
  .chosen-container-active .chosen-single {
3547
  border: 1px solid #ece7e7;
3548
+ color: #1a1c1c !important;
3549
  }
3550
  .chosen-container-active.chosen-with-drop .chosen-single {
3551
  border: 1px solid #ece7e7;
3792
  }
3793
  .inner-container-magento
3794
  {
 
3795
  left:240px;
3796
  right:0;
3797
  padding:0px;
3798
  background-color:#f3f6f6;
3799
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
3800
+ max-width: 1250px;
3801
+ font-size: 13px;
3802
  }
3803
  .button-black-magento
3804
  {
3809
  text-align: center;
3810
  color: #fdfdfd !important;
3811
  font-size:16px;
3812
+ font-weight: 300;
3813
  padding-top:9px;
3814
  }
3815
  .button-black-magento:hover
3838
  text-align: center;
3839
  color: #fdfdfd !important;
3840
  font-size:16px;
3841
+ font-weight: 300;
3842
  padding-top:9px;
3843
  }
3844
  .button-black-magento1:hover
3870
  .magento-inner-block
3871
  {
3872
  border: 1px solid #cddbde;
3873
+ padding:15px 50px 30px 50px;
3874
  background-color: #fff;
3875
  }
3876
  .magento-head
3877
  {
3878
+ color: #4e5356;
3879
+ font-size:24px;
3880
+ font-weight:300;
3881
  }
3882
  .magento-subhead
3883
  {
3884
+ color:#4e5356;
3885
+ font-size: 25px;
3886
+ font-weight: 400;
3887
  }
3888
  .font-16
3889
  {
3895
  }
3896
  .magento-text
3897
  {
3898
+ color: #929494;
3899
+ font-size: 16px;
3900
+ font-weight: 300;
3901
+ letter-spacing: 1px;
3902
  }
3903
  .text1
3904
  {
3905
+ color: #929494;
 
3906
  }
3907
  .text2
3908
  {
3986
  border-right: 1px solid #dee2e4 !important;
3987
  color: #5c656a;
3988
  font-size: 14px;
3989
+
3990
  height: 44px !important;
3991
  padding-left: 23px;
3992
  vertical-align: middle;
4077
  }
4078
  .magento-label
4079
  {
4080
+ color: #ffffff;
4081
+ font-weight: 300;
4082
+ font-size: 16px;
4083
  }
4084
  .magento-input
4085
  {
4086
+ width: 100%;
4087
  height: 40px;
4088
  border-radius: 3px;
4089
  background-color: #fcfcfc;
4091
  font-size: 16px;
4092
  color: #1a1c1c;
4093
  border:1px solid #cbcbcb;
 
4094
  }
4095
  .middle-nav-magento-dropdown {
4096
  /*position:absolute; */
4097
  left:0px;
4098
  width:240px;
4099
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
4100
  /*top:160px;*/
4101
  }
4102
  .middle-nav-text
4116
  /*left:0px; */
4117
  /*width:240px;*/
4118
  /*height:920px;*/
4119
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
4120
  /*top:255px;*/
4121
  }
4122
  ul.magento-nav {
4125
  list-style-type: none;
4126
  padding: 0;
4127
  margin: 0;
4128
+ height: 100vh;
4129
+ }
4130
+ ul.magento-nav li:not(.magento-active):hover{
4131
+ background-color: #4C5153;
4132
  }
4133
  ul.magento-nav li {
4134
  display: block;
4139
  display: block;
4140
  float: left;
4141
  color: #fff !important;
4142
+ padding: 13px 0px 13px 30px;
4143
  font-size: 16px;
4144
+ font-weight: 300;
4145
  width:100%;
4146
  border-bottom:1px solid #4e5253;
4147
+ }
4148
+ ul.magento-nav li:not(.magento-active) a {
4149
+ background: url('../img/arrow-inactive.png') no-repeat 90%;
4150
+ }
4151
+ ul.magento-nav li:not(.magento-active) a:hover{
4152
  background: url('../img/arrow-white.png') no-repeat 90%;
4153
  }
4154
  ul.magento-nav li a.magento-active
4155
  {
 
4156
  border-top:1px solid #4e5253;
4157
  border-bottom:1px solid #4e5253;
4158
+ background: url('../img/arrow-white.png') no-repeat 90% !important;
4159
  }
4160
  .magento-tooltip
4161
  {
4170
  background: url('../img/not-detected.png') no-repeat 5%;
4171
  }
4172
  input.magento-input::-webkit-input-placeholder { color: #b8bcc0;}
4173
+ .chosen-search input[type="text"]:focus,
4174
  input[type="text"]:focus
4175
  {
4176
  outline:none;
4177
+ border: 1px solid #05b4ae;
4178
+ width: 100%;
4179
  }
4180
  input[type="email"]:focus
4181
  {
4189
  {
4190
  outline:none;
4191
  }
4192
+ .label-checkbox-magento {
4193
  font-family: proxima-nova, Arial, sans-serif !important;
4194
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
4195
+
4196
  color: #5c656a !important;
4197
  font-size: 16px !important;
4198
  padding-left: 37px !important;
4232
  -webkit-box-shadow: none;
4233
  box-shadow: none;
4234
  color: #5c656a;
4235
+
4236
  background-color: transparent !important;
4237
  }
4238
  .dropdown-menu-magento > li:first-child > a
4330
  -webkit-box-shadow: none;
4331
  box-shadow: none;
4332
  color: #5c656a;
4333
+
4334
  background-color: transparent !important;
4335
  }
4336
  .dropdown-menu-nav-magento > li:first-child > a
4440
  }
4441
  .main-section
4442
  {
4443
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
4444
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
4445
  }
4446
  .mar-top-50
4447
  {
4478
  {
4479
  color:#4e5356;
4480
  font-size:24px;
4481
+ font-weight: 300;
4482
  }
4483
  .color-gray
4484
  {
4576
  {
4577
  color:#2c3e4c;
4578
  font-size:18px;
4579
+ font-weight: 300;
4580
  text-align: center;
4581
  }
4582
  .steps-row1
4654
  margin-top:-3px;
4655
  }
4656
  .mar-top-20
4657
+ {
4658
+ margin-top:20px;
4659
+ }
4660
+ .mar-top-15
4661
  {
4662
  margin-top:15px;
4663
  }
4672
  .steps-text-active
4673
  {
4674
  font-size: 15px;
4675
+ font-weight: 300;
4676
  color: #45b5c1;
4677
  text-align: center
4678
  }
4679
  .steps-text
4680
  {
4681
  font-size: 15px;
4682
+ font-weight: 300;
4683
  color: #929494;
4684
  text-align: center;
4685
  }
4686
  .dashboard-label
4687
  {
4688
  color: #4e5356;
4689
+ font-weight: 300;
4690
  font-size: 18px;
4691
  }
4692
  .dashboard-input
4706
  height:40px;
4707
  width:290px !important;
4708
  border:1px solid #d9dede;
4709
+
4710
  font-size: 16px;
4711
  color: #182b3a;
4712
  box-shadow: none !important;
4759
  border-top-left-radius: 4px;
4760
  border-bottom-right-radius: 4px;
4761
  float: right;
4762
+ font-family: "Helvetica Neue",Helvetica,sans-serif;
4763
  font-size: 14px;
4764
  font-weight:400;
4765
  padding: 5px 0;
4833
  }
4834
  .button-edit-magento
4835
  {
4836
+ height:32px;
4837
+ border-radius:3px;
4838
+ background: #fff url('../img/edit-magento.png') no-repeat 10%;
4839
+ color: #5c656a !important;
4840
+ padding-top:6%;
4841
+ padding-left: 33px;
 
 
 
4842
  }
4843
  .button-save-magento
4844
  {
4845
+ background: #fff url('../img/save.png') no-repeat;
4846
+ background-position: 10px;
4847
  }
4848
  .magento-success-block
4849
  {
4850
  padding: 14px 5px 14px 35px;
4851
+ background-color: #20af7f;
4852
  border:1px solid #30a880;
4853
+ border-radius: 3px;
4854
  }
4855
  .magento-analytics-tick-green
4856
  {
4861
  margin:0px auto;
4862
  float:none;
4863
  margin-right:10px !important;
4864
+ margin-top: 4px;
4865
  }
4866
  .magento-success-block-head
4867
  {
4868
+ color: #ffffff;
4869
+ font-size: 21.93px;
4870
+ font-weight: 400;
4871
  }
4872
  .magento-success-block-text
4873
  {
4874
  color: #fff;
4875
+ font-size: 14.62px;
4876
+ font-weight:300;
 
4877
  }
4878
  .mar-top-15
4879
  {
4881
  }
4882
  .button-reauth-magento
4883
  {
4884
+ border: 2px solid #20af7f;
4885
+ height:42px;
4886
+ border-radius:3px;
4887
+ font-size:14px;
4888
+ font-weight: 400;
4889
+ padding-top:10px;
4890
+ text-align: center;
4891
+ color: #20af7f;
4892
+ background: #FFF;
4893
+ border-radius: 5px;
4894
+ color: #929494;
 
 
 
 
4895
  text-align: center;
4896
+ }
4897
+ .button-reauth-magento:hover{
4898
+ color: #20af7f;
4899
+ border: 2px solid #1A9B6F;
 
 
 
4900
  }
4901
  #transparency
4902
  {
4936
  text-align: center;
4937
  color: #fff !important;
4938
  font-size:16px;
4939
+ font-weight: 300;
4940
  }
4941
  .button-blue1-middle:hover
4942
  {
4964
  text-align: center;
4965
  color: #fdfdfd !important;
4966
  font-size:16px;
4967
+ font-weight: 300;
4968
  padding-top:9px;
4969
  }
4970
  .button-black-middle:hover
4996
  padding-left: 55px;
4997
  color: #5c656a !important;
4998
  font-size:18px;
4999
+ font-weight: 300;
5000
  }
5001
  .button-install:hover
5002
  {
5020
  padding-left: 55px;
5021
  color: #5c656a !important;
5022
  font-size:18px;
5023
+ font-weight: 300;
5024
  }
5025
  .button-install1:hover
5026
  {
5041
  text-align: center;
5042
  color: #fdfdfd !important;
5043
  font-size:16px;
5044
+ font-weight: 300;
5045
  padding-top:9px;
5046
  }
5047
  .button-send-instruct
5052
  background: #fff url('../img/mail-new.png') no-repeat 97%;
5053
  color: #3c3f40 !important;
5054
  font-size:16px;
5055
+ font-weight: 300;
5056
  padding-top:8px;
5057
  padding-left: 20px;
5058
  }
5064
  background: #fff url('../img/back.png') no-repeat 5%;
5065
  color: #3c3f40 !important;
5066
  font-size:16px;
5067
+ font-weight: 300;
5068
  padding-top:8px;
5069
  padding-left: 42px;
5070
  }
5076
  background: #fff url('../img/arrow-2.png') no-repeat 92%;
5077
  color: #3c3f40 !important;
5078
  font-size:16px;
5079
+ font-weight: 300;
5080
  padding-top:8px;
5081
  padding-left: 20px;
5082
  }
5157
  }
5158
  .tooltip-top {
5159
  font-size: 16px;
5160
+
5161
  color: #ffffff;
5162
  margin-bottom: 10px;
5163
  float: left;
5169
  font-weight:400;
5170
  }
5171
  @media (min-width: 768px) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5172
 
5173
+ /*common tablet */
5174
+ .fixed-width-520 {
5175
+ margin: 0px auto;
5176
+ float: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5177
  }
5178
+ .fixed-width-580 {
5179
+ margin: 0px auto;
5180
+ float: none;
5181
  }
5182
+ .fixed-width-680 {
5183
+ margin: 0px auto;
5184
+ float: none;
5185
  }
5186
+ .fixed-width-700 {
5187
+ margin: 0px auto;
5188
+ float: none;
5189
+ width: 700px !important;
5190
  }
5191
+ .fixed-width-730 {
5192
+ margin: 0px auto;
5193
+ float: none;
5194
+ width: 730px !important;
5195
  }
5196
+ .fixed-width-800 {
5197
+ margin: 0px auto;
5198
+ float: none;
5199
+ width: 800px !important;
5200
  }
5201
+ .fixed-width-940 {
5202
+ margin: 0px auto;
5203
+ float: none;
5204
  }
5205
+ .fixed-width-980 {
5206
+ margin: 0px auto;
5207
+ float: none;
5208
  }
5209
+ .fixed-width-1080 {
5210
+ margin: 0px auto;
5211
+ float: none;
5212
  }
5213
+ .fixed-width-1140 {
5214
+ margin: 0px auto;
5215
+ float: none;
5216
  }
5217
+
5218
+ }
5219
+ @media (min-width: 980px) {
5220
+ /*commom desktop */
5221
+ .fixed-width-520 {
5222
+ margin: 0px auto;
5223
+ float: none;
5224
+ width: 520px !important;
5225
  }
5226
+ .fixed-width-580 {
5227
+ margin: 0px auto;
5228
+ float: none;
5229
+ width: 580px !important;
5230
  }
5231
+ .fixed-width-680 {
5232
+ margin: 0px auto;
5233
+ float: none;
5234
+ width: 680px !important;
5235
  }
5236
+ .fixed-width-700 {
5237
+ margin: 0px auto;
5238
+ float: none;
5239
+ width: 700px;
5240
  }
5241
+ .fixed-width-730 {
5242
+ margin: 0px auto;
5243
+ float: none;
5244
+ width: 730px;
5245
  }
5246
+ .fixed-width-800 {
5247
+ margin: 0px auto;
5248
+ float: none;
5249
+ width: 800px;
5250
  }
5251
+ .fixed-width-940 {
5252
+ margin: 0px auto;
5253
+ float: none;
5254
+ width: 940px;
5255
  }
5256
+ .fixed-width-980 {
5257
+ margin: 0px auto;
5258
+ float: none;
5259
+ width: 980px;
5260
  }
5261
+ .fixed-width-1080 {
5262
+ margin: 0px auto;
5263
+ float: none;
5264
+ width: 1080px;
5265
  }
5266
+ .fixed-width-1140 {
5267
+ margin: 0px auto;
5268
+ float: none;
5269
+ width: 1140px;
5270
  }
5271
+ .main-container {
5272
+ width: 100%;
5273
+ float: left;
5274
  }
5275
+ .width-570 {
5276
+ width: 570px;
5277
  }
5278
+ .width-680 {
5279
+ width: 680px;
5280
  }
5281
+ /* dashboard widget conf desktop*/
5282
+
5283
+ .layout-block
5284
+ {
5285
+ float: left;
5286
+ width:442px;
5287
  }
5288
+ }
5289
+ .pad-btm-15{
5290
+ padding-bottom: 15px !important;
5291
+ }
5292
+ .pad-5{
5293
+ padding: 5px;
5294
+ }
5295
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5296
 
5297
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/recscore/css/app1.css ADDED
@@ -0,0 +1,1685 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ @media (min-width: 980px) {
3
+
4
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-13, .col-md-14, .col-md-15, .col-md-16, .col-md-17, .col-md-18, .col-md-19, .col-md-20, .col-md-21, .col-md-22, .col-md-23, .col-md-24, .col-md-25, .col-md-26, .col-md-27, .col-md-28, .col-md-29, .col-md-30, .col-md-31, .col-md-32, .col-md-33, .col-md-34, .col-md-35, .col-md-36, .col-md-37, .col-md-38, .col-md-39, .col-md-40, .col-md-41, .col-md-42, .col-md-43, .col-md-44, .col-md-45, .col-md-46, .col-md-47, .col-md-48, .col-md-49, .col-md-50, .col-md-51, .col-md-52, .col-md-53, .col-md-54, .col-md-55, .col-md-56, .col-md-57, .col-md-58, .col-md-59 {
5
+ float: left;
6
+ }
7
+ .col-md-1 {
8
+ width: 1.666666666666667%;
9
+ }
10
+ .col-md-2 {
11
+ width: 3.333333333333333%;
12
+ }
13
+ .col-md-3 {
14
+ width: 5%;
15
+ }
16
+ .col-md-4 {
17
+ width: 6.666666666666667%;
18
+ }
19
+ .col-md-5 {
20
+ width: 8.333333333333333%;
21
+ }
22
+ .col-md-6 {
23
+ width: 10%;
24
+ }
25
+ .col-md-7 {
26
+ width: 11.66666666666667%;
27
+ }
28
+ .col-md-8 {
29
+ width: 13.33333333333333%;
30
+ }
31
+ .col-md-9 {
32
+ width: 15%;
33
+ }
34
+ .col-md-10 {
35
+ width: 16.66666666666667%;
36
+ }
37
+ .col-md-11 {
38
+ width: 18.33333333333333%;
39
+ }
40
+ .col-md-12 {
41
+ width: 20%;
42
+ }
43
+ .col-md-13 {
44
+ width: 21.66666666666667%;
45
+ }
46
+ .col-md-14 {
47
+ width: 23.33333333333333%;
48
+ }
49
+ .col-md-15 {
50
+ width: 25%;
51
+ }
52
+ .col-md-16 {
53
+ width: 26.66666666666667%;
54
+ }
55
+ .col-md-17 {
56
+ width: 28.33333333333333%;
57
+ }
58
+ .col-md-18 {
59
+ width: 30%;
60
+ }
61
+ .col-md-19 {
62
+ width: 31.66666666666667%;
63
+ }
64
+ .col-md-20 {
65
+ width: 33.33333333333333%;
66
+ }
67
+ .col-md-21 {
68
+ width: 35%;
69
+ }
70
+ .col-md-22 {
71
+ width: 36.66666666666667%;
72
+ }
73
+ .col-md-23 {
74
+ width: 38.33333333333333%;
75
+ }
76
+ .col-md-24 {
77
+ width: 40%;
78
+ }
79
+ .col-md-25 {
80
+ width: 41.66666666666667%;
81
+ }
82
+ .col-md-26 {
83
+ width: 43.33333333333333%;
84
+ }
85
+ .col-md-27 {
86
+ width: 45%;
87
+ }
88
+ .col-md-28 {
89
+ width: 46.66666666666667%;
90
+ }
91
+ .col-md-29 {
92
+ width: 48.33333333333333%;
93
+ }
94
+ .col-md-30 {
95
+ width: 50%;
96
+ }
97
+ .col-md-31 {
98
+ width: 51.66666666666667%;
99
+ }
100
+ .col-md-32 {
101
+ width: 53.33333333333333%;
102
+ }
103
+ .col-md-33 {
104
+ width: 55%;
105
+ }
106
+ .col-md-34 {
107
+ width: 56.66666666666667%;
108
+ }
109
+ .col-md-35 {
110
+ width: 58.33333333333333%;
111
+ }
112
+ .col-md-36 {
113
+ width: 60%;
114
+ }
115
+ .col-md-37 {
116
+ width: 61.66666666666667%;
117
+ }
118
+ .col-md-38 {
119
+ width: 63.33333333333333%;
120
+ }
121
+ .col-md-39 {
122
+ width: 65%;
123
+ }
124
+ .col-md-40 {
125
+ width: 66.66666666666667%;
126
+ }
127
+ .col-md-41 {
128
+ width: 68.33333333333333%;
129
+ }
130
+ .col-md-42 {
131
+ width: 70%;
132
+ }
133
+ .col-md-43 {
134
+ width: 71.66666666666667%;
135
+ }
136
+ .col-md-44 {
137
+ width: 73.33333333333333%;
138
+ }
139
+ .col-md-45 {
140
+ width: 75%;
141
+ }
142
+ .col-md-46 {
143
+ width: 76.66666666666667%;
144
+ }
145
+ .col-md-47 {
146
+ width: 78.33333333333333%;
147
+ }
148
+ .col-md-48 {
149
+ width: 80%;
150
+ }
151
+ .col-md-49 {
152
+ width: 81.66666666666667%;
153
+ }
154
+ .col-md-50 {
155
+ width: 83.33333333333333%;
156
+ }
157
+ .col-md-51 {
158
+ width: 85%;
159
+ }
160
+ .col-md-52 {
161
+ width: 86.66666666666667%;
162
+ }
163
+ .col-md-53 {
164
+ width: 88.33333333333333%;
165
+ }
166
+ .col-md-54 {
167
+ width: 90%;
168
+ }
169
+ .col-md-55 {
170
+ width: 91.66666666666667%;
171
+ }
172
+ .col-md-56 {
173
+ width: 93.33333333333333%;
174
+ }
175
+ .col-md-57 {
176
+ width: 95%;
177
+ }
178
+ .col-md-58 {
179
+ width: 96.66666666666667%;
180
+ }
181
+ .col-md-59 {
182
+ width: 98.33333333333333%;
183
+ }
184
+ .col-md-60 {
185
+ width: 100%;
186
+ }
187
+ .col-md-push-0 {
188
+ left: auto
189
+ }
190
+ .col-md-push-1 {
191
+ left: 1.666666666666667%;
192
+ }
193
+ .col-md-push-2 {
194
+ left: 3.333333333333333%;
195
+ }
196
+ .col-md-push-3 {
197
+ left: 5%;
198
+ }
199
+ .col-md-push-4 {
200
+ left: 6.666666666666667%;
201
+ }
202
+ .col-md-push-5 {
203
+ left: 8.333333333333333%;
204
+ }
205
+ .col-md-push-6 {
206
+ left: 10%;
207
+ }
208
+ .col-md-push-7 {
209
+ left: 11.66666666666667%;
210
+ }
211
+ .col-md-push-8 {
212
+ left: 13.33333333333333%;
213
+ }
214
+ .col-md-push-9 {
215
+ left: 15%;
216
+ }
217
+ .col-md-push-10 {
218
+ left: 16.66666666666667%;
219
+ }
220
+ .col-md-push-11 {
221
+ left: 18.33333333333333%;
222
+ }
223
+ .col-md-push-12 {
224
+ left: 20%;
225
+ }
226
+ .col-md-push-13 {
227
+ left: 21.66666666666667%;
228
+ }
229
+ .col-md-push-14 {
230
+ left: 23.33333333333333%;
231
+ }
232
+ .col-md-push-15 {
233
+ left: 25%;
234
+ }
235
+ .col-md-push-16 {
236
+ left: 26.66666666666667%;
237
+ }
238
+ .col-md-push-17 {
239
+ left: 28.33333333333333%;
240
+ }
241
+ .col-md-push-18 {
242
+ left: 30%;
243
+ }
244
+ .col-md-push-19 {
245
+ left: 31.66666666666667%;
246
+ }
247
+ .col-md-push-20 {
248
+ left: 33.33333333333333%;
249
+ }
250
+ .col-md-push-21 {
251
+ left: 35%;
252
+ }
253
+ .col-md-push-22 {
254
+ left: 36.66666666666667%;
255
+ }
256
+ .col-md-push-23 {
257
+ left: 38.33333333333333%;
258
+ }
259
+ .col-md-push-24 {
260
+ left: 40%;
261
+ }
262
+ .col-md-push-25 {
263
+ left: 41.66666666666667%;
264
+ }
265
+ .col-md-push-26 {
266
+ left: 43.33333333333333%;
267
+ }
268
+ .col-md-push-27 {
269
+ left: 45%;
270
+ }
271
+ .col-md-push-28 {
272
+ left: 46.66666666666667%;
273
+ }
274
+ .col-md-push-29 {
275
+ left: 48.33333333333333%;
276
+ }
277
+ .col-md-push-30 {
278
+ left: 50%;
279
+ }
280
+ .col-md-push-31 {
281
+ left: 51.66666666666667%;
282
+ }
283
+ .col-md-push-32 {
284
+ left: 53.33333333333333%;
285
+ }
286
+ .col-md-push-33 {
287
+ left: 55%;
288
+ }
289
+ .col-md-push-34 {
290
+ left: 56.66666666666667%;
291
+ }
292
+ .col-md-push-35 {
293
+ left: 58.33333333333333%;
294
+ }
295
+ .col-md-push-36 {
296
+ left: 60%;
297
+ }
298
+ .col-md-push-37 {
299
+ left: 61.66666666666667%;
300
+ }
301
+ .col-md-push-38 {
302
+ left: 63.33333333333333%;
303
+ }
304
+ .col-md-push-39 {
305
+ left: 65%;
306
+ }
307
+ .col-md-push-40 {
308
+ left: 66.66666666666667%;
309
+ }
310
+ .col-md-push-41 {
311
+ left: 68.33333333333333%;
312
+ }
313
+ .col-md-push-42 {
314
+ left: 70%;
315
+ }
316
+ .col-md-push-43 {
317
+ left: 71.66666666666667%;
318
+ }
319
+ .col-md-push-44 {
320
+ left: 73.33333333333333%;
321
+ }
322
+ .col-md-push-45 {
323
+ left: 75%;
324
+ }
325
+ .col-md-push-46 {
326
+ left: 76.66666666666667%;
327
+ }
328
+ .col-md-push-47 {
329
+ left: 78.33333333333333%;
330
+ }
331
+ .col-md-push-48 {
332
+ left: 80%;
333
+ }
334
+ .col-md-push-49 {
335
+ left: 81.66666666666667%;
336
+ }
337
+ .col-md-push-50 {
338
+ left: 83.33333333333333%;
339
+ }
340
+ .col-md-push-51 {
341
+ left: 85%;
342
+ }
343
+ .col-md-push-52 {
344
+ left: 86.66666666666667%;
345
+ }
346
+ .col-md-push-53 {
347
+ left: 88.33333333333333%;
348
+ }
349
+ .col-md-push-54 {
350
+ left: 90%;
351
+ }
352
+ .col-md-push-55 {
353
+ left: 91.66666666666667%;
354
+ }
355
+ .col-md-push-56 {
356
+ left: 93.33333333333333%;
357
+ }
358
+ .col-md-push-57 {
359
+ left: 95%;
360
+ }
361
+ .col-md-push-58 {
362
+ left: 96.66666666666667%;
363
+ }
364
+ .col-md-push-59 {
365
+ left: 98.33333333333333%;
366
+ }
367
+ .col-md-pull-0 {
368
+ right: auto
369
+ }
370
+ .col-md-pull-1 {
371
+ right: 1.666666666666667%;
372
+ }
373
+ .col-md-pull-2 {
374
+ right: 3.333333333333333%;
375
+ }
376
+ .col-md-pull-3 {
377
+ right: 5%;
378
+ }
379
+ .col-md-pull-4 {
380
+ right: 6.666666666666667%;
381
+ }
382
+ .col-md-pull-5 {
383
+ right: 8.333333333333333%;
384
+ }
385
+ .col-md-pull-6 {
386
+ right: 10%;
387
+ }
388
+ .col-md-pull-7 {
389
+ right: 11.66666666666667%;
390
+ }
391
+ .col-md-pull-8 {
392
+ right: 13.33333333333333%;
393
+ }
394
+ .col-md-pull-9 {
395
+ right: 15%;
396
+ }
397
+ .col-md-pull-10 {
398
+ right: 16.66666666666667%;
399
+ }
400
+ .col-md-pull-11 {
401
+ right: 18.33333333333333%;
402
+ }
403
+ .col-md-pull-12 {
404
+ right: 20%;
405
+ }
406
+ .col-md-pull-13 {
407
+ right: 21.66666666666667%;
408
+ }
409
+ .col-md-pull-14 {
410
+ right: 23.33333333333333%;
411
+ }
412
+ .col-md-pull-15 {
413
+ right: 25%;
414
+ }
415
+ .col-md-pull-16 {
416
+ right: 26.66666666666667%;
417
+ }
418
+ .col-md-pull-17 {
419
+ right: 28.33333333333333%;
420
+ }
421
+ .col-md-pull-18 {
422
+ right: 30%;
423
+ }
424
+ .col-md-pull-19 {
425
+ right: 31.66666666666667%;
426
+ }
427
+ .col-md-pull-20 {
428
+ right: 33.33333333333333%;
429
+ }
430
+ .col-md-pull-21 {
431
+ right: 35%;
432
+ }
433
+ .col-md-pull-22 {
434
+ right: 36.66666666666667%;
435
+ }
436
+ .col-md-pull-23 {
437
+ right: 38.33333333333333%;
438
+ }
439
+ .col-md-pull-24 {
440
+ right: 40%;
441
+ }
442
+ .col-md-pull-25 {
443
+ right: 41.66666666666667%;
444
+ }
445
+ .col-md-pull-26 {
446
+ right: 43.33333333333333%;
447
+ }
448
+ .col-md-pull-27 {
449
+ right: 45%;
450
+ }
451
+ .col-md-pull-28 {
452
+ right: 46.66666666666667%;
453
+ }
454
+ .col-md-pull-29 {
455
+ right: 48.33333333333333%;
456
+ }
457
+ .col-md-pull-30 {
458
+ right: 50%;
459
+ }
460
+ .col-md-pull-31 {
461
+ right: 51.66666666666667%;
462
+ }
463
+ .col-md-pull-32 {
464
+ right: 53.33333333333333%;
465
+ }
466
+ .col-md-pull-33 {
467
+ right: 55%;
468
+ }
469
+ .col-md-pull-34 {
470
+ right: 56.66666666666667%;
471
+ }
472
+ .col-md-pull-35 {
473
+ right: 58.33333333333333%;
474
+ }
475
+ .col-md-pull-36 {
476
+ right: 60%;
477
+ }
478
+ .col-md-pull-37 {
479
+ right: 61.66666666666667%;
480
+ }
481
+ .col-md-pull-38 {
482
+ right: 63.33333333333333%;
483
+ }
484
+ .col-md-pull-39 {
485
+ right: 65%;
486
+ }
487
+ .col-md-pull-40 {
488
+ right: 66.66666666666667%;
489
+ }
490
+ .col-md-pull-41 {
491
+ right: 68.33333333333333%;
492
+ }
493
+ .col-md-pull-42 {
494
+ right: 70%;
495
+ }
496
+ .col-md-pull-43 {
497
+ right: 71.66666666666667%;
498
+ }
499
+ .col-md-pull-44 {
500
+ right: 73.33333333333333%;
501
+ }
502
+ .col-md-pull-45 {
503
+ right: 75%;
504
+ }
505
+ .col-md-pull-46 {
506
+ right: 76.66666666666667%;
507
+ }
508
+ .col-md-pull-47 {
509
+ right: 78.33333333333333%;
510
+ }
511
+ .col-md-pull-48 {
512
+ right: 80%;
513
+ }
514
+ .col-md-pull-49 {
515
+ right: 81.66666666666667%;
516
+ }
517
+ .col-md-pull-50 {
518
+ right: 83.33333333333333%;
519
+ }
520
+ .col-md-pull-51 {
521
+ right: 85%;
522
+ }
523
+ .col-md-pull-52 {
524
+ right: 86.66666666666667%;
525
+ }
526
+ .col-md-pull-53 {
527
+ right: 88.33333333333333%;
528
+ }
529
+ .col-md-pull-54 {
530
+ right: 90%;
531
+ }
532
+ .col-md-pull-55 {
533
+ right: 91.66666666666667%;
534
+ }
535
+ .col-md-pull-56 {
536
+ right: 93.33333333333333%;
537
+ }
538
+ .col-md-pull-57 {
539
+ right: 95%;
540
+ }
541
+ .col-md-pull-58 {
542
+ right: 96.66666666666667%;
543
+ }
544
+ .col-md-pull-59 {
545
+ right: 98.33333333333333%;
546
+ }
547
+ .col-md-offset-0 {
548
+ margin-left: 0
549
+ }
550
+ .col-md-offset-1 {
551
+ margin-left: 1.666666666666667%;
552
+ }
553
+ .col-md-offset-2 {
554
+ margin-left: 3.333333333333333%;
555
+ }
556
+ .col-md-offset-3 {
557
+ margin-left: 5%;
558
+ }
559
+ .col-md-offset-4 {
560
+ margin-left: 6.666666666666667%;
561
+ }
562
+ .col-md-offset-5 {
563
+ margin-left: 8.333333333333333%;
564
+ }
565
+ .col-md-offset-6 {
566
+ margin-left: 10%;
567
+ }
568
+ .col-md-offset-7 {
569
+ margin-left: 11.66666666666667%;
570
+ }
571
+ .col-md-offset-8 {
572
+ margin-left: 13.33333333333333%;
573
+ }
574
+ .col-md-offset-9 {
575
+ margin-left: 15%;
576
+ }
577
+ .col-md-offset-10 {
578
+ margin-left: 16.66666666666667%;
579
+ }
580
+ .col-md-offset-11 {
581
+ margin-left: 18.33333333333333%;
582
+ }
583
+ .col-md-offset-12 {
584
+ margin-left: 20%;
585
+ }
586
+ .col-md-offset-13 {
587
+ margin-left: 21.66666666666667%;
588
+ }
589
+ .col-md-offset-14 {
590
+ margin-left: 23.33333333333333%;
591
+ }
592
+ .col-md-offset-15 {
593
+ margin-left: 25%;
594
+ }
595
+ .col-md-offset-16 {
596
+ margin-left: 26.66666666666667%;
597
+ }
598
+ .col-md-offset-17 {
599
+ margin-left: 28.33333333333333%;
600
+ }
601
+ .col-md-offset-18 {
602
+ margin-left: 30%;
603
+ }
604
+ .col-md-offset-19 {
605
+ margin-left: 31.66666666666667%;
606
+ }
607
+ .col-md-offset-20 {
608
+ margin-left: 33.33333333333333%;
609
+ }
610
+ .col-md-offset-21 {
611
+ margin-left: 35%;
612
+ }
613
+ .col-md-offset-22 {
614
+ margin-left: 36.66666666666667%;
615
+ }
616
+ .col-md-offset-23 {
617
+ margin-left: 38.33333333333333%;
618
+ }
619
+ .col-md-offset-24 {
620
+ margin-left: 40%;
621
+ }
622
+ .col-md-offset-25 {
623
+ margin-left: 41.66666666666667%;
624
+ }
625
+ .col-md-offset-26 {
626
+ margin-left: 43.33333333333333%;
627
+ }
628
+ .col-md-offset-27 {
629
+ margin-left: 45%;
630
+ }
631
+ .col-md-offset-28 {
632
+ margin-left: 46.66666666666667%;
633
+ }
634
+ .col-md-offset-29 {
635
+ margin-left: 48.33333333333333%;
636
+ }
637
+ .col-md-offset-30 {
638
+ margin-left: 50%;
639
+ }
640
+ .col-md-offset-31 {
641
+ margin-left: 51.66666666666667%;
642
+ }
643
+ .col-md-offset-32 {
644
+ margin-left: 53.33333333333333%;
645
+ }
646
+ .col-md-offset-33 {
647
+ margin-left: 55%;
648
+ }
649
+ .col-md-offset-34 {
650
+ margin-left: 56.66666666666667%;
651
+ }
652
+ .col-md-offset-35 {
653
+ margin-left: 58.33333333333333%;
654
+ }
655
+ .col-md-offset-36 {
656
+ margin-left: 60%;
657
+ }
658
+ .col-md-offset-37 {
659
+ margin-left: 61.66666666666667%;
660
+ }
661
+ .col-md-offset-38 {
662
+ margin-left: 63.33333333333333%;
663
+ }
664
+ .col-md-offset-39 {
665
+ margin-left: 65%;
666
+ }
667
+ .col-md-offset-40 {
668
+ margin-left: 66.66666666666667%;
669
+ }
670
+ .col-md-offset-41 {
671
+ margin-left: 68.33333333333333%;
672
+ }
673
+ .col-md-offset-42 {
674
+ margin-left: 70%;
675
+ }
676
+ .col-md-offset-43 {
677
+ margin-left: 71.66666666666667%;
678
+ }
679
+ .col-md-offset-44 {
680
+ margin-left: 73.33333333333333%;
681
+ }
682
+ .col-md-offset-45 {
683
+ margin-left: 75%;
684
+ }
685
+ .col-md-offset-46 {
686
+ margin-left: 76.66666666666667%;
687
+ }
688
+ .col-md-offset-47 {
689
+ margin-left: 78.33333333333333%;
690
+ }
691
+ .col-md-offset-48 {
692
+ margin-left: 80%;
693
+ }
694
+ .col-md-offset-49 {
695
+ margin-left: 81.6666666666667%;
696
+ }
697
+ .col-md-offset-50 {
698
+ margin-left: 83.33333333333333%;
699
+ }
700
+ .col-md-offset-51 {
701
+ margin-left: 85%;
702
+ }
703
+ .col-md-offset-52 {
704
+ margin-left: 86.66666666666667%;
705
+ }
706
+ .col-md-offset-53 {
707
+ margin-left: 88.33333333333333%;
708
+ }
709
+ .col-md-offset-54 {
710
+ margin-left: 90%;
711
+ }
712
+ .col-md-offset-55 {
713
+ margin-left: 91.66666666666667%;
714
+ }
715
+ .col-md-offset-56 {
716
+ margin-left: 93.33333333333333%;
717
+ }
718
+ .col-md-offset-57 {
719
+ margin-left: 95%;
720
+ }
721
+ .col-md-offset-58 {
722
+ margin-left: 96.66666666666667%;
723
+ }
724
+ .col-md-offset-59 {
725
+ margin-left: 98.33333333333333%;
726
+ }
727
+ /*commom desktop */
728
+ .fixed-width-520 {
729
+ margin: 0px auto;
730
+ float: none;
731
+ width: 520px !important;
732
+ }
733
+ .fixed-width-580 {
734
+ margin: 0px auto;
735
+ float: none;
736
+ width: 580px !important;
737
+ }
738
+ .fixed-width-680 {
739
+ margin: 0px auto;
740
+ float: none;
741
+ width: 680px !important;
742
+ }
743
+ .fixed-width-700 {
744
+ margin: 0px auto;
745
+ float: none;
746
+ width: 700px;
747
+ }
748
+ .fixed-width-730 {
749
+ margin: 0px auto;
750
+ float: none;
751
+ width: 730px;
752
+ }
753
+ .fixed-width-800 {
754
+ margin: 0px auto;
755
+ float: none;
756
+ width: 800px;
757
+ }
758
+ .fixed-width-940 {
759
+ margin: 0px auto;
760
+ float: none;
761
+ width: 940px;
762
+ }
763
+ .fixed-width-980 {
764
+ margin: 0px auto;
765
+ float: none;
766
+ width: 980px;
767
+ }
768
+ .fixed-width-1080 {
769
+ margin: 0px auto;
770
+ float: none;
771
+ width: 1080px;
772
+ }
773
+ .fixed-width-1140 {
774
+ margin: 0px auto;
775
+ float: none;
776
+ width: 1140px;
777
+ }
778
+ .main-container {
779
+ width: 100%;
780
+ float: left;
781
+ }
782
+ .width-570 {
783
+ width: 570px;
784
+ }
785
+ .width-680 {
786
+ width: 680px;
787
+ }
788
+ /* signed up desktop*/
789
+ .signup-block
790
+ {
791
+ width:740px;
792
+ margin:60px 0px 0px 120px;
793
+ }
794
+ /* dashboard widget conf desktop*/
795
+
796
+ .layout-block
797
+ {
798
+ float: left;
799
+ width:442px;
800
+ }
801
+ }
802
+
803
+ @media (min-width: 1200px) {
804
+
805
+ .col-lg-1 {
806
+ width: 1.666666666666667%;
807
+ }
808
+ .col-lg-2 {
809
+ width: 3.333333333333333%;
810
+ }
811
+ .col-lg-3 {
812
+ width: 5%;
813
+ }
814
+ .col-lg-4 {
815
+ width: 6.666666666666667%;
816
+ }
817
+ .col-lg-5 {
818
+ width: 8.333333333333333%;
819
+ }
820
+ .col-lg-6 {
821
+ width: 10%;
822
+ }
823
+ .col-lg-7 {
824
+ width: 11.66666666666667%;
825
+ }
826
+ .col-lg-8 {
827
+ width: 13.33333333333333%;
828
+ }
829
+ .col-lg-9 {
830
+ width: 15%;
831
+ }
832
+ .col-lg-10 {
833
+ width: 16.66666666666667%;
834
+ }
835
+ .col-lg-11 {
836
+ width: 18.33333333333333%;
837
+ }
838
+ .col-lg-12 {
839
+ width: 20%;
840
+ }
841
+ .col-lg-13 {
842
+ width: 21.66666666666667%;
843
+ }
844
+ .col-lg-14 {
845
+ width: 23.33333333333333%;
846
+ }
847
+ .col-lg-15 {
848
+ width: 25%;
849
+ }
850
+ .col-lg-16 {
851
+ width: 26.66666666666667%;
852
+ }
853
+ .col-lg-17 {
854
+ width: 28.33333333333333%;
855
+ }
856
+ .col-lg-18 {
857
+ width: 30%;
858
+ }
859
+ .col-lg-19 {
860
+ width: 31.66666666666667%;
861
+ }
862
+ .col-lg-20 {
863
+ width: 33.33333333333333%;
864
+ }
865
+ .col-lg-21 {
866
+ width: 35%;
867
+ }
868
+ .col-lg-22 {
869
+ width: 36.66666666666667%;
870
+ }
871
+ .col-lg-23 {
872
+ width: 38.33333333333333%;
873
+ }
874
+ .col-lg-24 {
875
+ width: 40%;
876
+ }
877
+ .col-lg-25 {
878
+ width: 41.66666666666667%;
879
+ }
880
+ .col-lg-26 {
881
+ width: 43.33333333333333%;
882
+ }
883
+ .col-lg-27 {
884
+ width: 45%;
885
+ }
886
+ .col-lg-28 {
887
+ width: 46.66666666666667%;
888
+ }
889
+ .col-lg-29 {
890
+ width: 48.33333333333333%;
891
+ }
892
+ .col-lg-30 {
893
+ width: 50%;
894
+ }
895
+ .col-lg-31 {
896
+ width: 51.66666666666667%;
897
+ }
898
+ .col-lg-32 {
899
+ width: 53.33333333333333%;
900
+ }
901
+ .col-lg-33 {
902
+ width: 55%;
903
+ }
904
+ .col-lg-34 {
905
+ width: 56.66666666666667%;
906
+ }
907
+ .col-lg-35 {
908
+ width: 58.33333333333333%;
909
+ }
910
+ .col-lg-36 {
911
+ width: 60%;
912
+ }
913
+ .col-lg-37 {
914
+ width: 61.66666666666667%;
915
+ }
916
+ .col-lg-38 {
917
+ width: 63.33333333333333%;
918
+ }
919
+ .col-lg-39 {
920
+ width: 65%;
921
+ }
922
+ .col-lg-40 {
923
+ width: 66.66666666666667%;
924
+ }
925
+ .col-lg-41 {
926
+ width: 68.33333333333333%;
927
+ }
928
+ .col-lg-42 {
929
+ width: 70%;
930
+ }
931
+ .col-lg-43 {
932
+ width: 71.66666666666667%;
933
+ }
934
+ .col-lg-44 {
935
+ width: 73.33333333333333%;
936
+ }
937
+ .col-lg-45 {
938
+ width: 75%;
939
+ }
940
+ .col-lg-46 {
941
+ width: 76.66666666666667%;
942
+ }
943
+ .col-lg-47 {
944
+ width: 78.33333333333333%;
945
+ }
946
+ .col-lg-48 {
947
+ width: 80%;
948
+ }
949
+ .col-lg-49 {
950
+ width: 81.66666666666667%;
951
+ }
952
+ .col-lg-50 {
953
+ width: 83.33333333333333%;
954
+ }
955
+ .col-lg-51 {
956
+ width: 85%;
957
+ }
958
+ .col-lg-52 {
959
+ width: 86.66666666666667%;
960
+ }
961
+ .col-lg-53 {
962
+ width: 88.33333333333333%;
963
+ }
964
+ .col-lg-54 {
965
+ width: 90%;
966
+ }
967
+ .col-lg-55 {
968
+ width: 91.66666666666667%;
969
+ }
970
+ .col-lg-56 {
971
+ width: 93.33333333333333%;
972
+ }
973
+ .col-lg-57 {
974
+ width: 95%;
975
+ }
976
+ .col-lg-58 {
977
+ width: 96.66666666666667%;
978
+ }
979
+ .col-lg-59 {
980
+ width: 98.33333333333333%;
981
+ }
982
+ .col-lg-60 {
983
+ width: 100%;
984
+ }
985
+ .col-lg-push-0 {
986
+ left: auto
987
+ }
988
+ .col-lg-push-1 {
989
+ left: 1.666666666666667%;
990
+ }
991
+ .col-lg-push-2 {
992
+ left: 3.333333333333333%;
993
+ }
994
+ .col-lg-push-3 {
995
+ left: 5%;
996
+ }
997
+ .col-lg-push-4 {
998
+ left: 6.666666666666667%;
999
+ }
1000
+ .col-lg-push-5 {
1001
+ left: 8.333333333333333%;
1002
+ }
1003
+ .col-lg-push-6 {
1004
+ left: 10%;
1005
+ }
1006
+ .col-lg-push-7 {
1007
+ left: 11.66666666666667%;
1008
+ }
1009
+ .col-lg-push-8 {
1010
+ left: 13.33333333333333%;
1011
+ }
1012
+ .col-lg-push-9 {
1013
+ left: 15%;
1014
+ }
1015
+ .col-lg-push-10 {
1016
+ left: 16.66666666666667%;
1017
+ }
1018
+ .col-lg-push-11 {
1019
+ left: 18.33333333333333%;
1020
+ }
1021
+ .col-lg-push-12 {
1022
+ left: 20%;
1023
+ }
1024
+ .col-lg-push-13 {
1025
+ left: 21.66666666666667%;
1026
+ }
1027
+ .col-lg-push-14 {
1028
+ left: 23.33333333333333%;
1029
+ }
1030
+ .col-lg-push-15 {
1031
+ left: 25%;
1032
+ }
1033
+ .col-lg-push-16 {
1034
+ left: 26.66666666666667%;
1035
+ }
1036
+ .col-lg-push-17 {
1037
+ left: 28.33333333333333%;
1038
+ }
1039
+ .col-lg-push-18 {
1040
+ left: 30%;
1041
+ }
1042
+ .col-lg-push-19 {
1043
+ left: 31.66666666666667%;
1044
+ }
1045
+ .col-lg-push-20 {
1046
+ left: 33.33333333333333%;
1047
+ }
1048
+ .col-lg-push-21 {
1049
+ left: 35%;
1050
+ }
1051
+ .col-lg-push-22 {
1052
+ left: 36.66666666666667%;
1053
+ }
1054
+ .col-lg-push-23 {
1055
+ left: 38.33333333333333%;
1056
+ }
1057
+ .col-lg-push-24 {
1058
+ left: 40%;
1059
+ }
1060
+ .col-lg-push-25 {
1061
+ left: 41.66666666666667%;
1062
+ }
1063
+ .col-lg-push-26 {
1064
+ left: 43.33333333333333%;
1065
+ }
1066
+ .col-lg-push-27 {
1067
+ left: 45%;
1068
+ }
1069
+ .col-lg-push-28 {
1070
+ left: 46.66666666666667%;
1071
+ }
1072
+ .col-lg-push-29 {
1073
+ left: 48.33333333333333%;
1074
+ }
1075
+ .col-lg-push-30 {
1076
+ left: 50%;
1077
+ }
1078
+ .col-lg-push-31 {
1079
+ left: 51.66666666666667%;
1080
+ }
1081
+ .col-lg-push-32 {
1082
+ left: 53.33333333333333%;
1083
+ }
1084
+ .col-lg-push-33 {
1085
+ left: 55%;
1086
+ }
1087
+ .col-lg-push-34 {
1088
+ left: 56.66666666666667%;
1089
+ }
1090
+ .col-lg-push-35 {
1091
+ left: 58.33333333333333%;
1092
+ }
1093
+ .col-lg-push-36 {
1094
+ left: 60%;
1095
+ }
1096
+ .col-lg-push-37 {
1097
+ left: 61.66666666666667%;
1098
+ }
1099
+ .col-lg-push-38 {
1100
+ left: 63.33333333333333%;
1101
+ }
1102
+ .col-lg-push-39 {
1103
+ left: 65%;
1104
+ }
1105
+ .col-lg-push-40 {
1106
+ left: 66.66666666666667%;
1107
+ }
1108
+ .col-lg-push-41 {
1109
+ left: 68.33333333333333%;
1110
+ }
1111
+ .col-lg-push-42 {
1112
+ left: 70%;
1113
+ }
1114
+ .col-lg-push-43 {
1115
+ left: 71.66666666666667%;
1116
+ }
1117
+ .col-lg-push-44 {
1118
+ left: 73.33333333333333%;
1119
+ }
1120
+ .col-lg-push-45 {
1121
+ left: 75%;
1122
+ }
1123
+ .col-lg-push-46 {
1124
+ left: 76.66666666666667%;
1125
+ }
1126
+ .col-lg-push-47 {
1127
+ left: 78.33333333333333%;
1128
+ }
1129
+ .col-lg-push-48 {
1130
+ left: 80%;
1131
+ }
1132
+ .col-lg-push-49 {
1133
+ left: 81.66666666666667%;
1134
+ }
1135
+ .col-lg-push-50 {
1136
+ left: 83.33333333333333%;
1137
+ }
1138
+ .col-lg-push-51 {
1139
+ left: 85%;
1140
+ }
1141
+ .col-lg-push-52 {
1142
+ left: 86.66666666666667%;
1143
+ }
1144
+ .col-lg-push-53 {
1145
+ left: 88.33333333333333%;
1146
+ }
1147
+ .col-lg-push-54 {
1148
+ left: 90%;
1149
+ }
1150
+ .col-lg-push-55 {
1151
+ left: 91.66666666666667%;
1152
+ }
1153
+ .col-lg-push-56 {
1154
+ left: 93.33333333333333%;
1155
+ }
1156
+ .col-lg-push-57 {
1157
+ left: 95%;
1158
+ }
1159
+ .col-lg-push-58 {
1160
+ left: 96.66666666666667%;
1161
+ }
1162
+ .col-lg-push-59 {
1163
+ left: 98.33333333333333%;
1164
+ }
1165
+ .col-lg-pull-0 {
1166
+ right: auto
1167
+ }
1168
+ .col-lg-pull-1 {
1169
+ right: 1.666666666666667%;
1170
+ }
1171
+ .col-lg-pull-2 {
1172
+ right: 3.333333333333333%;
1173
+ }
1174
+ .col-lg-pull-3 {
1175
+ right: 5%;
1176
+ }
1177
+ .col-lg-pull-4 {
1178
+ right: 6.666666666666667%;
1179
+ }
1180
+ .col-lg-pull-5 {
1181
+ right: 8.333333333333333%;
1182
+ }
1183
+ .col-lg-pull-6 {
1184
+ right: 10%;
1185
+ }
1186
+ .col-lg-pull-7 {
1187
+ right: 11.66666666666667%;
1188
+ }
1189
+ .col-lg-pull-8 {
1190
+ right: 13.33333333333333%;
1191
+ }
1192
+ .col-lg-pull-9 {
1193
+ right: 15%;
1194
+ }
1195
+ .col-lg-pull-10 {
1196
+ right: 16.66666666666667%;
1197
+ }
1198
+ .col-lg-pull-11 {
1199
+ right: 18.33333333333333%;
1200
+ }
1201
+ .col-lg-pull-12 {
1202
+ right: 20%;
1203
+ }
1204
+ .col-lg-pull-13 {
1205
+ right: 21.66666666666667%;
1206
+ }
1207
+ .col-lg-pull-14 {
1208
+ right: 23.33333333333333%;
1209
+ }
1210
+ .col-lg-pull-15 {
1211
+ right: 25%;
1212
+ }
1213
+ .col-lg-pull-16 {
1214
+ right: 26.66666666666667%;
1215
+ }
1216
+ .col-lg-pull-17 {
1217
+ right: 28.33333333333333%;
1218
+ }
1219
+ .col-lg-pull-18 {
1220
+ right: 30%;
1221
+ }
1222
+ .col-lg-pull-19 {
1223
+ right: 31.66666666666667%;
1224
+ }
1225
+ .col-lg-pull-20 {
1226
+ right: 33.33333333333333%;
1227
+ }
1228
+ .col-lg-pull-21 {
1229
+ right: 35%;
1230
+ }
1231
+ .col-lg-pull-22 {
1232
+ right: 36.66666666666667%;
1233
+ }
1234
+ .col-lg-pull-23 {
1235
+ right: 38.33333333333333%;
1236
+ }
1237
+ .col-lg-pull-24 {
1238
+ right: 40%;
1239
+ }
1240
+ .col-lg-pull-25 {
1241
+ right: 41.66666666666667%;
1242
+ }
1243
+ .col-lg-pull-26 {
1244
+ right: 43.33333333333333%;
1245
+ }
1246
+ .col-lg-pull-27 {
1247
+ right: 45%;
1248
+ }
1249
+ .col-lg-pull-28 {
1250
+ right: 46.66666666666667%;
1251
+ }
1252
+ .col-lg-pull-29 {
1253
+ right: 48.33333333333333%;
1254
+ }
1255
+ .col-lg-pull-30 {
1256
+ right: 50%;
1257
+ }
1258
+ .col-lg-pull-31 {
1259
+ right: 51.66666666666667%;
1260
+ }
1261
+ .col-lg-pull-32 {
1262
+ right: 53.33333333333333%;
1263
+ }
1264
+ .col-lg-pull-33 {
1265
+ right: 55%;
1266
+ }
1267
+ .col-lg-pull-34 {
1268
+ right: 56.66666666666667%;
1269
+ }
1270
+ .col-lg-pull-35 {
1271
+ right: 58.33333333333333%;
1272
+ }
1273
+ .col-lg-pull-36 {
1274
+ right: 60%;
1275
+ }
1276
+ .col-lg-pull-37 {
1277
+ right: 61.66666666666667%;
1278
+ }
1279
+ .col-lg-pull-38 {
1280
+ right: 63.33333333333333%;
1281
+ }
1282
+ .col-lg-pull-39 {
1283
+ right: 65%;
1284
+ }
1285
+ .col-lg-pull-40 {
1286
+ right: 66.66666666666667%;
1287
+ }
1288
+ .col-lg-pull-41 {
1289
+ right: 68.33333333333333%;
1290
+ }
1291
+ .col-lg-pull-42 {
1292
+ right: 70%;
1293
+ }
1294
+ .col-lg-pull-43 {
1295
+ right: 71.66666666666667%;
1296
+ }
1297
+ .col-lg-pull-44 {
1298
+ right: 73.33333333333333%;
1299
+ }
1300
+ .col-lg-pull-45 {
1301
+ right: 75%;
1302
+ }
1303
+ .col-lg-pull-46 {
1304
+ right: 76.66666666666667%;
1305
+ }
1306
+ .col-lg-pull-47 {
1307
+ right: 78.33333333333333%;
1308
+ }
1309
+ .col-lg-pull-48 {
1310
+ right: 80%;
1311
+ }
1312
+ .col-lg-pull-49 {
1313
+ right: 81.66666666666667%;
1314
+ }
1315
+ .col-lg-pull-50 {
1316
+ right: 83.33333333333333%;
1317
+ }
1318
+ .col-lg-pull-51 {
1319
+ right: 85%;
1320
+ }
1321
+ .col-lg-pull-52 {
1322
+ right: 86.66666666666667%;
1323
+ }
1324
+ .col-lg-pull-53 {
1325
+ right: 88.33333333333333%;
1326
+ }
1327
+ .col-lg-pull-54 {
1328
+ right: 90%;
1329
+ }
1330
+ .col-lg-pull-55 {
1331
+ right: 91.66666666666667%;
1332
+ }
1333
+ .col-lg-pull-56 {
1334
+ right: 93.33333333333333%;
1335
+ }
1336
+ .col-lg-pull-57 {
1337
+ right: 95%;
1338
+ }
1339
+ .col-lg-pull-58 {
1340
+ right: 96.66666666666667%;
1341
+ }
1342
+ .col-lg-pull-59 {
1343
+ right: 98.33333333333333%;
1344
+ }
1345
+ .col-lg-offset-0 {
1346
+ margin-left: 0
1347
+ }
1348
+ .col-lg-offset-1 {
1349
+ margin-left: 1.666666666666667%;
1350
+ }
1351
+ .col-lg-offset-2 {
1352
+ margin-left: 3.333333333333333%;
1353
+ }
1354
+ .col-lg-offset-3 {
1355
+ margin-left: 5%;
1356
+ }
1357
+ .col-lg-offset-4 {
1358
+ margin-left: 6.666666666666667%;
1359
+ }
1360
+ .col-lg-offset-5 {
1361
+ margin-left: 8.333333333333333%;
1362
+ }
1363
+ .col-lg-offset-6 {
1364
+ margin-left: 10%;
1365
+ }
1366
+ .col-lg-offset-7 {
1367
+ margin-left: 11.66666666666667%;
1368
+ }
1369
+ .col-lg-offset-8 {
1370
+ margin-left: 13.33333333333333%;
1371
+ }
1372
+ .col-lg-offset-9 {
1373
+ margin-left: 15%;
1374
+ }
1375
+ .col-lg-offset-10 {
1376
+ margin-left: 16.66666666666667%;
1377
+ }
1378
+ .col-lg-offset-11 {
1379
+ margin-left: 18.33333333333333%;
1380
+ }
1381
+ .col-lg-offset-12 {
1382
+ margin-left: 20%;
1383
+ }
1384
+ .col-lg-offset-13 {
1385
+ margin-left: 21.66666666666667%;
1386
+ }
1387
+ .col-lg-offset-14 {
1388
+ margin-left: 23.33333333333333%;
1389
+ }
1390
+ .col-lg-offset-15 {
1391
+ margin-left: 25%;
1392
+ }
1393
+ .col-lg-offset-16 {
1394
+ margin-left: 26.66666666666667%;
1395
+ }
1396
+ .col-lg-offset-17 {
1397
+ margin-left: 28.33333333333333%;
1398
+ }
1399
+ .col-lg-offset-18 {
1400
+ margin-left: 30%;
1401
+ }
1402
+ .col-lg-offset-19 {
1403
+ margin-left: 31.66666666666667%;
1404
+ }
1405
+ .col-lg-offset-20 {
1406
+ margin-left: 33.33333333333333%;
1407
+ }
1408
+ .col-lg-offset-21 {
1409
+ margin-left: 35%;
1410
+ }
1411
+ .col-lg-offset-22 {
1412
+ margin-left: 36.66666666666667%;
1413
+ }
1414
+ .col-lg-offset-23 {
1415
+ margin-left: 38.33333333333333%;
1416
+ }
1417
+ .col-lg-offset-24 {
1418
+ margin-left: 40%;
1419
+ }
1420
+ .col-lg-offset-25 {
1421
+ margin-left: 41.66666666666667%;
1422
+ }
1423
+ .col-lg-offset-26 {
1424
+ margin-left: 43.33333333333333%;
1425
+ }
1426
+ .col-lg-offset-27 {
1427
+ margin-left: 45%;
1428
+ }
1429
+ .col-lg-offset-28 {
1430
+ margin-left: 46.66666666666667%;
1431
+ }
1432
+ .col-lg-offset-29 {
1433
+ margin-left: 48.33333333333333%;
1434
+ }
1435
+ .col-lg-offset-30 {
1436
+ margin-left: 50%;
1437
+ }
1438
+ .col-lg-offset-31 {
1439
+ margin-left: 51.66666666666667%;
1440
+ }
1441
+ .col-lg-offset-32 {
1442
+ margin-left: 53.33333333333333%;
1443
+ }
1444
+ .col-lg-offset-33 {
1445
+ margin-left: 55%;
1446
+ }
1447
+ .col-lg-offset-34 {
1448
+ margin-left: 56.66666666666667%;
1449
+ }
1450
+ .col-lg-offset-35 {
1451
+ margin-left: 58.33333333333333%;
1452
+ }
1453
+ .col-lg-offset-36 {
1454
+ margin-left: 60%;
1455
+ }
1456
+ .col-lg-offset-37 {
1457
+ margin-left: 61.66666666666667%;
1458
+ }
1459
+ .col-lg-offset-38 {
1460
+ margin-left: 63.33333333333333%;
1461
+ }
1462
+ .col-lg-offset-39 {
1463
+ margin-left: 65%;
1464
+ }
1465
+ .col-lg-offset-40 {
1466
+ margin-left: 66.66666666666667%;
1467
+ }
1468
+ .col-lg-offset-41 {
1469
+ margin-left: 68.33333333333333%;
1470
+ }
1471
+ .col-lg-offset-42 {
1472
+ margin-left: 70%;
1473
+ }
1474
+ .col-lg-offset-43 {
1475
+ margin-left: 71.66666666666667%;
1476
+ }
1477
+ .col-lg-offset-44 {
1478
+ margin-left: 73.33333333333333%;
1479
+ }
1480
+ .col-lg-offset-45 {
1481
+ margin-left: 75%;
1482
+ }
1483
+ .col-lg-offset-46 {
1484
+ margin-left: 76.66666666666667%;
1485
+ }
1486
+ .col-lg-offset-47 {
1487
+ margin-left: 78.33333333333333%;
1488
+ }
1489
+ .col-lg-offset-48 {
1490
+ margin-left: 80%;
1491
+ }
1492
+ .col-lg-offset-49 {
1493
+ margin-left: 81.66666666666667%;
1494
+ }
1495
+ .col-lg-offset-50 {
1496
+ margin-left: 83.33333333333333%;
1497
+ }
1498
+ .col-lg-offset-51 {
1499
+ margin-left: 85%;
1500
+ }
1501
+ .col-lg-offset-52 {
1502
+ margin-left: 86.66666666666667%;
1503
+ }
1504
+ .col-lg-offset-53 {
1505
+ margin-left: 88.33333333333333%;
1506
+ }
1507
+ .col-lg-offset-54 {
1508
+ margin-left: 90%;
1509
+ }
1510
+ .col-lg-offset-55 {
1511
+ margin-left: 91.66666666666667%;
1512
+ }
1513
+ .col-lg-offset-56 {
1514
+ margin-left: 93.33333333333333%;
1515
+ }
1516
+ .col-lg-offset-57 {
1517
+ margin-left: 95%;
1518
+ }
1519
+ .col-lg-offset-58 {
1520
+ margin-left: 96.66666666666667%;
1521
+ }
1522
+ .col-lg-offset-59 {
1523
+ margin-left: 98.33333333333333%;
1524
+ }
1525
+ {
1526
+
1527
+ }
1528
+
1529
+ .magento-autosuggest-head
1530
+ {
1531
+ color: #3c3f40;
1532
+ font-size:18px;
1533
+ font-weight:400;
1534
+ text-align: left;
1535
+ }
1536
+ .skin_color {
1537
+ cursor: pointer;
1538
+ padding: 0 0.5%;
1539
+ }
1540
+ .magento-templates{
1541
+ cursor:pointer; position:relative;
1542
+ }
1543
+ .fuelux .form-control {
1544
+ height: 30px;
1545
+ text-align: left;
1546
+ width: 85px;
1547
+ }
1548
+ .fuelux .spinbox .spinbox-input {
1549
+ float: left;
1550
+ padding: 0 20px !important;
1551
+ }
1552
+ .fuelux .btn-group {
1553
+ width: auto !important;
1554
+ }
1555
+ .fuelux .spinbox .spinbox-buttons {
1556
+ height: 28px;
1557
+ position: relative !important;
1558
+ left: -31px !important;
1559
+ width: 20px;
1560
+ }
1561
+ .thumb-spin{
1562
+ margin-left: 34%;
1563
+ }
1564
+ .brd-none{
1565
+ border:none;
1566
+ }
1567
+ .clear{clear:both;}
1568
+ .pad-20{padding:20px;}
1569
+ .pad-30{padding:30px;}
1570
+ .autosuggest-inner-block{margin:20px 50px; border-bottom: 1px solid #b0b6b9;}
1571
+ .autosuggest-text{color:#000;}
1572
+
1573
+ .bootstrap-switch-id-api_intg_switch.bootstrap-switch.bootstrap-switch .bootstrap-switch-container, .bootstrap-switch-id-support_intg_switch.bootstrap-switch.bootstrap-switch .bootstrap-switch-container{
1574
+ background: none repeat scroll 0 0 #f3f6f6;
1575
+ }
1576
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary{
1577
+ background: none repeat scroll 0 0 #48bc8a;
1578
+ border-radius: 1px;
1579
+ width: 56px !important;
1580
+ }
1581
+ .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label{
1582
+ width: 29px !important; background: none repeat scroll 0 0 #f3f6f6;
1583
+ }
1584
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default{
1585
+ background: none repeat scroll 0 0 #9a9a9a; text-shadow:none;
1586
+ }
1587
+ .bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{
1588
+ background: none repeat scroll 0 0 #f3f6f6;
1589
+ width: 185px !important;
1590
+ }
1591
+ .bootstrap-switch{
1592
+ width: 85px !important;
1593
+ border: 1px solid #a0a0a0;
1594
+ border-radius: 3px;
1595
+ box-shadow: none;
1596
+ margin-left: 8px;
1597
+ }
1598
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled], .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled]{
1599
+ background-color:#48bc8a; color:#fff;
1600
+ }
1601
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:hover, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:focus, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:focus, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.disabled, .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled], .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default[disabled]{
1602
+ background: none repeat scroll 0 0 #9a9a9a;
1603
+ }
1604
+ .autosuggest_info_box{
1605
+ border: 1px solid #dae0e0;
1606
+ font-size:0.86em;
1607
+ color:#929494;
1608
+ margin:0 50px 20px;
1609
+ padding: 10px;
1610
+ }
1611
+ .preview_template{
1612
+ background: rgba(0,0,0,0.3);
1613
+ position:absolute;
1614
+ top:0;
1615
+ left:0;
1616
+ width:100%;
1617
+ height:100%
1618
+ }
1619
+ .magento-breadcrum{
1620
+ padding:15px;
1621
+ }
1622
+ /*.magento-breadcrum span{
1623
+ padding-right:5px;
1624
+ }*/
1625
+ .breadcrum-prev{
1626
+ color: #929494;
1627
+ }
1628
+ .magento-text2 ul li{
1629
+ list-style-type:none;
1630
+ padding-bottom:3px;
1631
+ background: url("../img/list_bullet.png") no-repeat scroll 0 14px rgba(0, 0, 0, 0);
1632
+ padding: 10px 0 10px 25px;
1633
+ font-size: 15px
1634
+ }
1635
+ .magento-text2 ul li img{
1636
+ padding-right: 10px;
1637
+ }
1638
+
1639
+ .magento-text2 ul{
1640
+ padding-left: 20px;
1641
+ margin-top:20px;
1642
+ }
1643
+ .brd-top-0{
1644
+ border-top:none !important;
1645
+ }
1646
+ .search_info_box{
1647
+ background: #f2f5f5;
1648
+ padding:10px;
1649
+ border:1px solid #dae0e0;
1650
+ color: #929494;
1651
+ line-height: 1em;
1652
+ }
1653
+ .search_info_box > img {
1654
+ float: left;
1655
+ padding-right: 5px;
1656
+ }
1657
+ .search_info_box > span {
1658
+ color:#000;
1659
+ }
1660
+ .magento-text a, .magento-text a:hover.search_info_box a, .search_info_box a:hover{
1661
+ color: #05b3aa !important;
1662
+ }
1663
+ .btn-magento-blue{
1664
+ color:#fff; background:#05b3aa; border-radius:4px; border:none; height: 30px; width: 150px;
1665
+ }
1666
+ .magento-head {
1667
+ padding: 15px 10px 15px 10px;
1668
+ border: 1px solid #cddbde;
1669
+ border-radius: 3px;
1670
+ }
1671
+ .unbxd-head-div{
1672
+ height:90px !important;
1673
+ }
1674
+
1675
+ @media (min-width: 1600px) {
1676
+ .contact-us-footer{
1677
+ width:12.25% !important;
1678
+ }
1679
+ .spinbox {
1680
+ margin-right: 33.5%;
1681
+ }
1682
+ .thumb-spin{
1683
+ margin-left: 32%;
1684
+ }
1685
+ }
skin/adminhtml/default/default/unbxd/recscore/css/bootstrap-switch.css ADDED
@@ -0,0 +1,519 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ========================================================================
2
+ * bootstrap-switch - v3.3.2
3
+ * http://www.bootstrap-switch.org
4
+ * ========================================================================
5
+ * Copyright 2012-2013 Mattia Larentis
6
+ *
7
+ * ========================================================================
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================================
20
+ */
21
+
22
+ .clearfix {
23
+ *zoom: 1;
24
+ }
25
+ .clearfix:before,
26
+ .clearfix:after {
27
+ display: table;
28
+ content: "";
29
+ line-height: 0;
30
+ }
31
+ .clearfix:after {
32
+ clear: both;
33
+ }
34
+ .hide-text {
35
+ font: 0/0 a;
36
+ color: transparent;
37
+ text-shadow: none;
38
+ background-color: transparent;
39
+ border: 0;
40
+ }
41
+ .input-block-level {
42
+ display: block;
43
+ width: 100%;
44
+ min-height: 30px;
45
+ -webkit-box-sizing: border-box;
46
+ -moz-box-sizing: border-box;
47
+ box-sizing: border-box;
48
+ }
49
+ .bootstrap-switch {
50
+ display: inline-block;
51
+ direction: ltr;
52
+ cursor: pointer;
53
+ -webkit-border-radius: 5px;
54
+ -moz-border-radius: 5px;
55
+ border-radius: 5px;
56
+ border: 1px solid;
57
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
58
+ position: relative;
59
+ text-align: left;
60
+ overflow: hidden;
61
+ line-height: 8px;
62
+ z-index: 0;
63
+ -webkit-user-select: none;
64
+ -moz-user-select: none;
65
+ -ms-user-select: none;
66
+ -o-user-select: none;
67
+ user-select: none;
68
+ vertical-align: middle;
69
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
70
+ -moz-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
71
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
72
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
73
+ }
74
+ .bootstrap-switch .bootstrap-switch-container {
75
+ display: inline-block;
76
+ top: 0;
77
+ -webkit-border-radius: 4px;
78
+ -moz-border-radius: 4px;
79
+ border-radius: 4px;
80
+ -webkit-transform: translate3d(0, 0, 0);
81
+ -moz-transform: translate3d(0, 0, 0);
82
+ -o-transform: translate3d(0, 0, 0);
83
+ transform: translate3d(0, 0, 0);
84
+ }
85
+ .bootstrap-switch .bootstrap-switch-handle-on,
86
+ .bootstrap-switch .bootstrap-switch-handle-off,
87
+ .bootstrap-switch .bootstrap-switch-label {
88
+ -webkit-box-sizing: border-box;
89
+ -moz-box-sizing: border-box;
90
+ box-sizing: border-box;
91
+ cursor: pointer;
92
+ display: inline-block !important;
93
+ height: 100%;
94
+ padding-top: 4px;
95
+ padding-bottom: 4px;
96
+ padding-left: 8px;
97
+ padding-right: 8px;
98
+ font-size: 14px;
99
+ line-height: 20px;
100
+ }
101
+ .bootstrap-switch .bootstrap-switch-handle-on,
102
+ .bootstrap-switch .bootstrap-switch-handle-off {
103
+ text-align: center;
104
+ z-index: 1;
105
+ }
106
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
107
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
108
+ color: #ffffff;
109
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
110
+ background-color: #005fcc;
111
+ background-image: -moz-linear-gradient(top, #0044cc, #0088cc);
112
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0044cc), to(#0088cc));
113
+ background-image: -webkit-linear-gradient(top, #0044cc, #0088cc);
114
+ background-image: -o-linear-gradient(top, #0044cc, #0088cc);
115
+ background-image: linear-gradient(to bottom, #0044cc, #0088cc);
116
+ background-repeat: repeat-x;
117
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0044cc', endColorstr='#ff0088cc', GradientType=0);
118
+ border-color: #0088cc #0088cc #005580;
119
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
120
+ *background-color: #0088cc;
121
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
122
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
123
+ }
124
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:hover,
125
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:hover,
126
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:focus,
127
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:focus,
128
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,
129
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,
130
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,
131
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active,
132
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.disabled,
133
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.disabled,
134
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary[disabled],
135
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary[disabled] {
136
+ color: #ffffff;
137
+ background-color: #0088cc;
138
+ *background-color: #0077b3;
139
+ }
140
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary:active,
141
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary:active,
142
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary.active,
143
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary.active {
144
+ background-color: #006699 \9;
145
+ }
146
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
147
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
148
+ color: #ffffff;
149
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
150
+ background-color: #41a7c5;
151
+ background-image: -moz-linear-gradient(top, #2f96b4, #5bc0de);
152
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#2f96b4), to(#5bc0de));
153
+ background-image: -webkit-linear-gradient(top, #2f96b4, #5bc0de);
154
+ background-image: -o-linear-gradient(top, #2f96b4, #5bc0de);
155
+ background-image: linear-gradient(to bottom, #2f96b4, #5bc0de);
156
+ background-repeat: repeat-x;
157
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f96b4', endColorstr='#ff5bc0de', GradientType=0);
158
+ border-color: #5bc0de #5bc0de #28a1c5;
159
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
160
+ *background-color: #5bc0de;
161
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
162
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
163
+ }
164
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:hover,
165
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:hover,
166
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:focus,
167
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:focus,
168
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,
169
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,
170
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,
171
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active,
172
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.disabled,
173
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.disabled,
174
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info[disabled],
175
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info[disabled] {
176
+ color: #ffffff;
177
+ background-color: #5bc0de;
178
+ *background-color: #46b8da;
179
+ }
180
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info:active,
181
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info:active,
182
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info.active,
183
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info.active {
184
+ background-color: #31b0d5 \9;
185
+ }
186
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
187
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
188
+ color: #ffffff;
189
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
190
+ background-color: #58b058;
191
+ background-image: -moz-linear-gradient(top, #51a351, #62c462);
192
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#51a351), to(#62c462));
193
+ background-image: -webkit-linear-gradient(top, #51a351, #62c462);
194
+ background-image: -o-linear-gradient(top, #51a351, #62c462);
195
+ background-image: linear-gradient(to bottom, #51a351, #62c462);
196
+ background-repeat: repeat-x;
197
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff51a351', endColorstr='#ff62c462', GradientType=0);
198
+ border-color: #62c462 #62c462 #3b9e3b;
199
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
200
+ *background-color: #62c462;
201
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
202
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
203
+ }
204
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:hover,
205
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:hover,
206
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:focus,
207
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:focus,
208
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,
209
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,
210
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,
211
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active,
212
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.disabled,
213
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.disabled,
214
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success[disabled],
215
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success[disabled] {
216
+ color: #ffffff;
217
+ background-color: #62c462;
218
+ *background-color: #4fbd4f;
219
+ }
220
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success:active,
221
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success:active,
222
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success.active,
223
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success.active {
224
+ background-color: #42b142 \9;
225
+ }
226
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
227
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
228
+ color: #ffffff;
229
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
230
+ background-color: #f9a123;
231
+ background-image: -moz-linear-gradient(top, #f89406, #fbb450);
232
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f89406), to(#fbb450));
233
+ background-image: -webkit-linear-gradient(top, #f89406, #fbb450);
234
+ background-image: -o-linear-gradient(top, #f89406, #fbb450);
235
+ background-image: linear-gradient(to bottom, #f89406, #fbb450);
236
+ background-repeat: repeat-x;
237
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff89406', endColorstr='#fffbb450', GradientType=0);
238
+ border-color: #fbb450 #fbb450 #f89406;
239
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
240
+ *background-color: #fbb450;
241
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
242
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
243
+ }
244
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:hover,
245
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:hover,
246
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:focus,
247
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:focus,
248
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,
249
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,
250
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,
251
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active,
252
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.disabled,
253
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.disabled,
254
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning[disabled],
255
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning[disabled] {
256
+ color: #ffffff;
257
+ background-color: #fbb450;
258
+ *background-color: #faa937;
259
+ }
260
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning:active,
261
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning:active,
262
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning.active,
263
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning.active {
264
+ background-color: #fa9f1e \9;
265
+ }
266
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
267
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
268
+ color: #ffffff;
269
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
270
+ background-color: #d14641;
271
+ background-image: -moz-linear-gradient(top, #bd362f, #ee5f5b);
272
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bd362f), to(#ee5f5b));
273
+ background-image: -webkit-linear-gradient(top, #bd362f, #ee5f5b);
274
+ background-image: -o-linear-gradient(top, #bd362f, #ee5f5b);
275
+ background-image: linear-gradient(to bottom, #bd362f, #ee5f5b);
276
+ background-repeat: repeat-x;
277
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbd362f', endColorstr='#ffee5f5b', GradientType=0);
278
+ border-color: #ee5f5b #ee5f5b #e51d18;
279
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
280
+ *background-color: #ee5f5b;
281
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
282
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
283
+ }
284
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:hover,
285
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:hover,
286
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:focus,
287
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:focus,
288
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
289
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,
290
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,
291
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active,
292
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.disabled,
293
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.disabled,
294
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger[disabled],
295
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled] {
296
+ color: #ffffff;
297
+ background-color: #ee5f5b;
298
+ *background-color: #ec4844;
299
+ }
300
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
301
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger:active,
302
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger.active,
303
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger.active {
304
+ background-color: #e9322d \9;
305
+ }
306
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
307
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
308
+ color: #333333;
309
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
310
+ background-color: #f0f0f0;
311
+ background-image: -moz-linear-gradient(top, #e6e6e6, #ffffff);
312
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#ffffff));
313
+ background-image: -webkit-linear-gradient(top, #e6e6e6, #ffffff);
314
+ background-image: -o-linear-gradient(top, #e6e6e6, #ffffff);
315
+ background-image: linear-gradient(to bottom, #e6e6e6, #ffffff);
316
+ background-repeat: repeat-x;
317
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffffffff', GradientType=0);
318
+ border-color: #ffffff #ffffff #d9d9d9;
319
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
320
+ *background-color: #ffffff;
321
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
322
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
323
+ }
324
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover,
325
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:hover,
326
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:focus,
327
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:focus,
328
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,
329
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
330
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,
331
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active,
332
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.disabled,
333
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled,
334
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled],
335
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default[disabled] {
336
+ color: #333333;
337
+ background-color: #ffffff;
338
+ *background-color: #f2f2f2;
339
+ }
340
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:active,
341
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
342
+ .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default.active,
343
+ .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.active {
344
+ background-color: #e6e6e6 \9;
345
+ }
346
+ .bootstrap-switch .bootstrap-switch-label {
347
+ text-align: center;
348
+ margin-top: -1px;
349
+ margin-bottom: -1px;
350
+ z-index: 100;
351
+ border-left: 1px solid #cccccc;
352
+ border-right: 1px solid #cccccc;
353
+ color: #333333;
354
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
355
+ background-color: #f5f5f5;
356
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
357
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
358
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
359
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
360
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
361
+ background-repeat: repeat-x;
362
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
363
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
364
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
365
+ *background-color: #e6e6e6;
366
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
367
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
368
+ }
369
+ .bootstrap-switch .bootstrap-switch-label:hover,
370
+ .bootstrap-switch .bootstrap-switch-label:focus,
371
+ .bootstrap-switch .bootstrap-switch-label:active,
372
+ .bootstrap-switch .bootstrap-switch-label.active,
373
+ .bootstrap-switch .bootstrap-switch-label.disabled,
374
+ .bootstrap-switch .bootstrap-switch-label[disabled] {
375
+ color: #333333;
376
+ background-color: #e6e6e6;
377
+ *background-color: #d9d9d9;
378
+ }
379
+ .bootstrap-switch .bootstrap-switch-label:active,
380
+ .bootstrap-switch .bootstrap-switch-label.active {
381
+ background-color: #cccccc \9;
382
+ }
383
+ .bootstrap-switch .bootstrap-switch-handle-on {
384
+ -webkit-border-top-left-radius: 4px;
385
+ -moz-border-radius-topleft: 4px;
386
+ border-top-left-radius: 4px;
387
+ -webkit-border-bottom-left-radius: 4px;
388
+ -moz-border-radius-bottomleft: 4px;
389
+ border-bottom-left-radius: 4px;
390
+ }
391
+ .bootstrap-switch .bootstrap-switch-handle-off {
392
+ -webkit-border-top-right-radius: 4px;
393
+ -moz-border-radius-topright: 4px;
394
+ border-top-right-radius: 4px;
395
+ -webkit-border-bottom-right-radius: 4px;
396
+ -moz-border-radius-bottomright: 4px;
397
+ border-bottom-right-radius: 4px;
398
+ }
399
+ .bootstrap-switch input[type='radio'],
400
+ .bootstrap-switch input[type='checkbox'] {
401
+ position: absolute !important;
402
+ top: 0;
403
+ left: 0;
404
+ opacity: 0;
405
+ filter: alpha(opacity=0);
406
+ z-index: -1;
407
+ }
408
+ .bootstrap-switch input[type='radio'].form-control,
409
+ .bootstrap-switch input[type='checkbox'].form-control {
410
+ height: auto;
411
+ }
412
+ .bootstrap-switch.bootstrap-switch-mini {
413
+ min-width: 71px;
414
+ }
415
+ .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
416
+ .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
417
+ .bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
418
+ padding: 3px 6px;
419
+ font-size: 10px;
420
+ line-height: 9px;
421
+ }
422
+ .bootstrap-switch.bootstrap-switch-small {
423
+ min-width: 79px;
424
+ }
425
+ .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
426
+ .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
427
+ .bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
428
+ padding: 3px 6px;
429
+ font-size: 12px;
430
+ line-height: 18px;
431
+ }
432
+ .bootstrap-switch.bootstrap-switch-large {
433
+ min-width: 120px;
434
+ }
435
+ .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
436
+ .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
437
+ .bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
438
+ padding: 9px 12px;
439
+ font-size: 16px;
440
+ line-height: normal;
441
+ }
442
+ .bootstrap-switch.bootstrap-switch-disabled,
443
+ .bootstrap-switch.bootstrap-switch-readonly,
444
+ .bootstrap-switch.bootstrap-switch-indeterminate {
445
+ cursor: default !important;
446
+ }
447
+ .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
448
+ .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
449
+ .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
450
+ .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
451
+ .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
452
+ .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
453
+ .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
454
+ .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
455
+ .bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
456
+ opacity: 0.5;
457
+ filter: alpha(opacity=50);
458
+ cursor: default !important;
459
+ }
460
+ .bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
461
+ -webkit-transition: margin-left 0.5s;
462
+ -moz-transition: margin-left 0.5s;
463
+ -o-transition: margin-left 0.5s;
464
+ transition: margin-left 0.5s;
465
+ }
466
+ .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
467
+ -webkit-border-top-left-radius: 0;
468
+ -moz-border-radius-topleft: 0;
469
+ border-top-left-radius: 0;
470
+ -webkit-border-bottom-left-radius: 0;
471
+ -moz-border-radius-bottomleft: 0;
472
+ border-bottom-left-radius: 0;
473
+ -webkit-border-top-right-radius: 4px;
474
+ -moz-border-radius-topright: 4px;
475
+ border-top-right-radius: 4px;
476
+ -webkit-border-bottom-right-radius: 4px;
477
+ -moz-border-radius-bottomright: 4px;
478
+ border-bottom-right-radius: 4px;
479
+ }
480
+ .bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
481
+ -webkit-border-top-right-radius: 0;
482
+ -moz-border-radius-topright: 0;
483
+ border-top-right-radius: 0;
484
+ -webkit-border-bottom-right-radius: 0;
485
+ -moz-border-radius-bottomright: 0;
486
+ border-bottom-right-radius: 0;
487
+ -webkit-border-top-left-radius: 4px;
488
+ -moz-border-radius-topleft: 4px;
489
+ border-top-left-radius: 4px;
490
+ -webkit-border-bottom-left-radius: 4px;
491
+ -moz-border-radius-bottomleft: 4px;
492
+ border-bottom-left-radius: 4px;
493
+ }
494
+ .bootstrap-switch.bootstrap-switch-focused {
495
+ border-color: rgba(82, 168, 236, 0.8);
496
+ outline: 0;
497
+ outline: thin dotted \9;
498
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
499
+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
500
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82, 168, 236, .6);
501
+ }
502
+ .bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
503
+ .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
504
+ -webkit-border-top-right-radius: 4px;
505
+ -moz-border-radius-topright: 4px;
506
+ border-top-right-radius: 4px;
507
+ -webkit-border-bottom-right-radius: 4px;
508
+ -moz-border-radius-bottomright: 4px;
509
+ border-bottom-right-radius: 4px;
510
+ }
511
+ .bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
512
+ .bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
513
+ -webkit-border-top-left-radius: 4px;
514
+ -moz-border-radius-topleft: 4px;
515
+ border-top-left-radius: 4px;
516
+ -webkit-border-bottom-left-radius: 4px;
517
+ -moz-border-radius-bottomleft: 4px;
518
+ border-bottom-left-radius: 4px;
519
+ }
skin/adminhtml/default/default/unbxd/{css → recscore/css}/bootstrap-them.css RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{css → recscore/css}/bootstrap.css RENAMED
@@ -7,7 +7,9 @@
7
  *
8
  * Designed and built with all the love in the world by @mdo and @fat.
9
  *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}
10
- p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}
 
 
11
  h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6
12
  {font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}
13
  h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}
7
  *
8
  * Designed and built with all the love in the world by @mdo and @fat.
9
  *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}
10
+ p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}
11
+ body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.428571429;color:#333;background-color:#fff}
12
+ input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}
13
  h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6
14
  {font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}
15
  h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}
skin/adminhtml/default/default/unbxd/recscore/css/chosen.css ADDED
@@ -0,0 +1,450 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ Chosen, a Select Box Enhancer for jQuery and Prototype
3
+ by Patrick Filler for Harvest, http://getharvest.com
4
+
5
+ Version 1.4.2
6
+ Full source at https://github.com/harvesthq/chosen
7
+ Copyright (c) 2011-2015 Harvest http://getharvest.com
8
+
9
+ MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
10
+ This file is generated by `grunt build`, do not edit it by hand.
11
+ */
12
+
13
+ /* @group Base */
14
+ .chosen-container {
15
+ position: relative;
16
+ display: inline-block;
17
+ vertical-align: middle;
18
+ font-size: 13px;
19
+ zoom: 1;
20
+ *display: inline;
21
+ -webkit-user-select: none;
22
+ -moz-user-select: none;
23
+ user-select: none;
24
+ }
25
+ .chosen-container * {
26
+ -webkit-box-sizing: border-box;
27
+ -moz-box-sizing: border-box;
28
+ box-sizing: border-box;
29
+ }
30
+ .chosen-container .chosen-drop {
31
+ position: absolute;
32
+ top: 100%;
33
+ left: -9999px;
34
+ z-index: 1010;
35
+ width: 100%;
36
+ border: 1px solid #ece7e7;
37
+ border-top: 0;
38
+ background: #fff;
39
+ box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
40
+ }
41
+ .chosen-container.chosen-with-drop .chosen-drop {
42
+ left: 0;
43
+ }
44
+ .chosen-container a {
45
+ cursor: pointer;
46
+ }
47
+ .chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
48
+ margin-right: 4px;
49
+ overflow: hidden;
50
+ white-space: nowrap;
51
+ text-overflow: ellipsis;
52
+ font-weight: normal;
53
+ color: #999999;
54
+ }
55
+ .chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
56
+ content: ":";
57
+ padding-left: 2px;
58
+ vertical-align: top;
59
+ }
60
+
61
+ /* @end */
62
+ /* @group Single Chosen */
63
+ .chosen-container-single .chosen-single {
64
+ position: relative;
65
+ display: block;
66
+ overflow: hidden;
67
+ padding: 0 0 0 8px;
68
+ height: 25px;
69
+ border: 1px solid #aaa;
70
+ border-radius: 5px;
71
+ background-color: #fff;
72
+ background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
73
+ background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
74
+ background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
75
+ background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
76
+ background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
77
+ background-clip: padding-box;
78
+ box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
79
+ color: #444;
80
+ text-decoration: none;
81
+ white-space: nowrap;
82
+ line-height: 24px;
83
+ }
84
+ .chosen-container-single .chosen-default {
85
+ color: #999;
86
+ }
87
+ .chosen-container-single .chosen-single span {
88
+ display: block;
89
+ overflow: hidden;
90
+ margin-right: 26px;
91
+ text-overflow: ellipsis;
92
+ white-space: nowrap;
93
+ }
94
+ .chosen-container-single .chosen-single-with-deselect span {
95
+ margin-right: 38px;
96
+ }
97
+ .chosen-container-single .chosen-single abbr {
98
+ position: absolute;
99
+ top: 6px;
100
+ right: 26px;
101
+ display: block;
102
+ width: 12px;
103
+ height: 12px;
104
+ background: url('chosen-sprite.png') -42px 1px no-repeat;
105
+ font-size: 1px;
106
+ }
107
+ .chosen-container-single .chosen-single abbr:hover {
108
+ background-position: -42px -10px;
109
+ }
110
+ .chosen-container-single.chosen-disabled .chosen-single abbr:hover {
111
+ background-position: -42px -10px;
112
+ }
113
+ .chosen-container-single .chosen-single div {
114
+ position: absolute;
115
+ top: 0;
116
+ right: 0;
117
+ display: block;
118
+ width: 18px;
119
+ height: 100%;
120
+ }
121
+ .chosen-container-single .chosen-single div b {
122
+ display: block;
123
+ width: 100%;
124
+ height: 100%;
125
+ background: url('chosen-sprite.png') no-repeat 0px 2px;
126
+ }
127
+ .chosen-container-single .chosen-search {
128
+ position: relative;
129
+ z-index: 1010;
130
+ margin: 0;
131
+ padding: 3px 4px;
132
+ white-space: nowrap;
133
+ }
134
+ .chosen-container-single .chosen-search input[type="text"] {
135
+ margin: 1px 0;
136
+ padding: 4px 20px 4px 5px;
137
+ width: 100%;
138
+ height: auto;
139
+ outline: 0;
140
+ border: 1px solid #aaa;
141
+ background: white url('chosen-sprite.png') no-repeat 100% -20px;
142
+ background: url('chosen-sprite.png') no-repeat 100% -20px;
143
+ font-size: 1em;
144
+ font-family: sans-serif;
145
+ line-height: normal;
146
+ border-radius: 0;
147
+ }
148
+ .chosen-container-single .chosen-drop {
149
+ margin-top: -1px;
150
+ border-radius: 0 0 4px 4px;
151
+ background-clip: padding-box;
152
+ }
153
+ .chosen-container-single.chosen-container-single-nosearch .chosen-search {
154
+ position: absolute;
155
+ left: -9999px;
156
+ }
157
+
158
+ /* @end */
159
+ /* @group Results */
160
+ .chosen-container .chosen-results {
161
+ color: #444;
162
+ position: relative;
163
+ overflow-x: hidden;
164
+ overflow-y: auto;
165
+ margin: 0 4px 4px 0;
166
+ padding: 0 0 0 4px;
167
+ max-height: 240px;
168
+ -webkit-overflow-scrolling: touch;
169
+ }
170
+ .chosen-container .chosen-results li {
171
+ display: none;
172
+ margin: 0;
173
+ padding: 5px 6px;
174
+ list-style: none;
175
+ line-height: 15px;
176
+ word-wrap: break-word;
177
+ -webkit-touch-callout: none;
178
+ }
179
+ .chosen-container .chosen-results li.active-result {
180
+ display: list-item;
181
+ cursor: pointer;
182
+ }
183
+ .chosen-container .chosen-results li.disabled-result {
184
+ display: list-item;
185
+ color: #ccc;
186
+ cursor: default;
187
+ }
188
+ .chosen-container .chosen-results li.highlighted {
189
+ background-color: #3875d7;
190
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
191
+ background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
192
+ background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
193
+ background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
194
+ background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
195
+ color: #fff;
196
+ }
197
+ .chosen-container .chosen-results li.no-results {
198
+ color: #777;
199
+ display: list-item;
200
+ background: #f4f4f4;
201
+ }
202
+ .chosen-container .chosen-results li.group-result {
203
+ display: list-item;
204
+ font-weight: bold;
205
+ cursor: default;
206
+ }
207
+ .chosen-container .chosen-results li.group-option {
208
+ padding-left: 15px;
209
+ }
210
+ .chosen-container .chosen-results li em {
211
+ font-style: normal;
212
+ text-decoration: underline;
213
+ }
214
+
215
+ /* @end */
216
+ /* @group Multi Chosen */
217
+ .chosen-container-multi .chosen-choices {
218
+ position: relative;
219
+ overflow: hidden;
220
+ margin: 0;
221
+ padding: 0 5px;
222
+ width: 100%;
223
+ height: auto !important;
224
+ height: 1%;
225
+ border: 1px solid #aaa;
226
+ background-color: #fff;
227
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
228
+ background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
229
+ background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
230
+ background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
231
+ background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
232
+ cursor: text;
233
+ }
234
+ .chosen-container-multi .chosen-choices li {
235
+ float: left;
236
+ list-style: none;
237
+ }
238
+ .chosen-container-multi .chosen-choices li.search-field {
239
+ margin: 0;
240
+ padding: 0;
241
+ white-space: nowrap;
242
+ }
243
+ .chosen-container-multi .chosen-choices li.search-field input[type="text"] {
244
+ margin: 1px 0;
245
+ padding: 0;
246
+ height: 25px;
247
+ outline: 0;
248
+ border: 0 !important;
249
+ background: transparent !important;
250
+ box-shadow: none;
251
+ color: #999;
252
+ font-size: 100%;
253
+ font-family: sans-serif;
254
+ line-height: normal;
255
+ border-radius: 0;
256
+ }
257
+ .chosen-container-multi .chosen-choices li.search-choice {
258
+ position: relative;
259
+ margin: 3px 5px 3px 0;
260
+ padding: 3px 20px 3px 5px;
261
+ border: 1px solid #aaa;
262
+ max-width: 100%;
263
+ border-radius: 3px;
264
+ background-color: #eeeeee;
265
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
266
+ background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
267
+ background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
268
+ background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
269
+ background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
270
+ background-size: 100% 19px;
271
+ background-repeat: repeat-x;
272
+ background-clip: padding-box;
273
+ box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
274
+ color: #333;
275
+ line-height: 13px;
276
+ cursor: default;
277
+ }
278
+ .chosen-container-multi .chosen-choices li.search-choice span {
279
+ word-wrap: break-word;
280
+ }
281
+ .chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
282
+ position: absolute;
283
+ top: 4px;
284
+ right: 3px;
285
+ display: block;
286
+ width: 12px;
287
+ height: 12px;
288
+ background: url('chosen-sprite.png') -42px 1px no-repeat;
289
+ font-size: 1px;
290
+ }
291
+ .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
292
+ background-position: -42px -10px;
293
+ }
294
+ .chosen-container-multi .chosen-choices li.search-choice-disabled {
295
+ padding-right: 5px;
296
+ border: 1px solid #ccc;
297
+ background-color: #e4e4e4;
298
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
299
+ background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
300
+ background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
301
+ background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
302
+ background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
303
+ color: #666;
304
+ }
305
+ .chosen-container-multi .chosen-choices li.search-choice-focus {
306
+ background: #d4d4d4;
307
+ }
308
+ .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
309
+ background-position: -42px -10px;
310
+ }
311
+ .chosen-container-multi .chosen-results {
312
+ margin: 0;
313
+ padding: 0;
314
+ }
315
+ .chosen-container-multi .chosen-drop .result-selected {
316
+ display: list-item;
317
+ color: #ccc;
318
+ cursor: default;
319
+ }
320
+
321
+ /* @end */
322
+ /* @group Active */
323
+ .chosen-container-active .chosen-single {
324
+ border: 1px solid #5897fb;
325
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
326
+ }
327
+ .chosen-container-active.chosen-with-drop .chosen-single {
328
+ border: 1px solid #aaa;
329
+ -moz-border-radius-bottomright: 0;
330
+ border-bottom-right-radius: 0;
331
+ -moz-border-radius-bottomleft: 0;
332
+ border-bottom-left-radius: 0;
333
+ background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
334
+ background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
335
+ background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
336
+ background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
337
+ background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
338
+ box-shadow: 0 1px 0 #fff inset;
339
+ }
340
+ .chosen-container-active.chosen-with-drop .chosen-single div {
341
+ border-left: none;
342
+ background: transparent;
343
+ }
344
+ .chosen-container-active.chosen-with-drop .chosen-single div b {
345
+ background-position: -18px 2px;
346
+ }
347
+ .chosen-container-active .chosen-choices {
348
+ border: 1px solid #5897fb;
349
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
350
+ }
351
+ .chosen-container-active .chosen-choices li.search-field input[type="text"] {
352
+ color: #222 !important;
353
+ }
354
+
355
+ /* @end */
356
+ /* @group Disabled Support */
357
+ .chosen-disabled {
358
+ opacity: 0.5 !important;
359
+ cursor: default;
360
+ }
361
+ .chosen-disabled .chosen-single {
362
+ cursor: default;
363
+ }
364
+ .chosen-disabled .chosen-choices .search-choice .search-choice-close {
365
+ cursor: default;
366
+ }
367
+
368
+ /* @end */
369
+ /* @group Right to Left */
370
+ .chosen-rtl {
371
+ text-align: right;
372
+ }
373
+ .chosen-rtl .chosen-single {
374
+ overflow: visible;
375
+ padding: 0 8px 0 0;
376
+ }
377
+ .chosen-rtl .chosen-single span {
378
+ margin-right: 0;
379
+ margin-left: 26px;
380
+ direction: rtl;
381
+ }
382
+ .chosen-rtl .chosen-single-with-deselect span {
383
+ margin-left: 38px;
384
+ }
385
+ .chosen-rtl .chosen-single div {
386
+ right: auto;
387
+ left: 3px;
388
+ }
389
+ .chosen-rtl .chosen-single abbr {
390
+ right: auto;
391
+ left: 26px;
392
+ }
393
+ .chosen-rtl .chosen-choices li {
394
+ float: right;
395
+ }
396
+ .chosen-rtl .chosen-choices li.search-field input[type="text"] {
397
+ direction: rtl;
398
+ }
399
+ .chosen-rtl .chosen-choices li.search-choice {
400
+ margin: 3px 5px 3px 0;
401
+ padding: 3px 5px 3px 19px;
402
+ }
403
+ .chosen-rtl .chosen-choices li.search-choice .search-choice-close {
404
+ right: auto;
405
+ left: 4px;
406
+ }
407
+ .chosen-rtl.chosen-container-single-nosearch .chosen-search,
408
+ .chosen-rtl .chosen-drop {
409
+ left: 9999px;
410
+ }
411
+ .chosen-rtl.chosen-container-single .chosen-results {
412
+ margin: 0 0 4px 4px;
413
+ padding: 0 4px 0 0;
414
+ }
415
+ .chosen-rtl .chosen-results li.group-option {
416
+ padding-right: 15px;
417
+ padding-left: 0;
418
+ }
419
+ .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
420
+ border-right: none;
421
+ }
422
+ .chosen-rtl .chosen-search input[type="text"] {
423
+ padding: 4px 5px 4px 20px;
424
+ background: white url('chosen-sprite.png') no-repeat -30px -20px;
425
+ background: url('chosen-sprite.png') no-repeat -30px -20px;
426
+ direction: rtl;
427
+ }
428
+ .chosen-rtl.chosen-container-single .chosen-single div b {
429
+ background-position: 6px 2px;
430
+ }
431
+ .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
432
+ background-position: -12px 2px;
433
+ }
434
+
435
+ /* @end */
436
+ /* @group Retina compatibility */
437
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
438
+ .chosen-rtl .chosen-search input[type="text"],
439
+ .chosen-container-single .chosen-single abbr,
440
+ .chosen-container-single .chosen-single div b,
441
+ .chosen-container-single .chosen-search input[type="text"],
442
+ .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
443
+ .chosen-container .chosen-results-scroll-down span,
444
+ .chosen-container .chosen-results-scroll-up span {
445
+ background-image: url('chosen-sprite@2x.png') !important;
446
+ background-size: 52px 37px !important;
447
+ background-repeat: no-repeat !important;
448
+ }
449
+ }
450
+ /* @end */
skin/adminhtml/default/default/unbxd/recscore/css/colpick.css ADDED
@@ -0,0 +1 @@
 
1
+ .colpick{position:absolute;width:346px;height:170px;overflow:hidden;display:none;font-family:Arial,Helvetica,sans-serif;background:#ebebeb;border:1px solid #bbb;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.colpick_color{position:absolute;left:7px;top:7px;width:156px;height:156px;overflow:hidden;outline:1px solid #aaa;cursor:crosshair}.colpick_color_overlay1{position:absolute;left:0;top:0;width:156px;height:156px;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:-moz-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-webkit-gradient(linear,left top,right top,color-stop(0%,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,1) 0,rgba(255,255,255,0) 100%);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff',endColorstr='#00ffffff')}.colpick_color_overlay2{position:absolute;left:0;top:0;width:156px;height:156px;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:-moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(0,0,0,0)),color-stop(100%,rgba(0,0,0,1)));background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,1) 100%);background:-o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,1) 100%);background:-ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,1) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,1) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#000000',GradientType=0)}.colpick_selector_outer{background:0;position:absolute;width:11px;height:11px;margin:-6px 0 0 -6px;border:1px solid black;border-radius:50%}.colpick_selector_inner{position:absolute;width:9px;height:9px;border:1px solid white;border-radius:50%}.colpick_hue{position:absolute;top:6px;left:175px;width:19px;height:156px;border:1px solid #aaa;cursor:n-resize}.colpick_hue_arrs{position:absolute;left:-8px;width:35px;height:7px;margin:-7px 0 0 0}.colpick_hue_larr{position:absolute;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:7px solid #858585}.colpick_hue_rarr{position:absolute;right:0;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:7px solid #858585}.colpick_new_color{position:absolute;left:207px;top:6px;width:60px;height:27px;background:#f00;border:1px solid #8f8f8f}.colpick_current_color{position:absolute;left:277px;top:6px;width:60px;height:27px;background:#f00;border:1px solid #8f8f8f}.colpick_field,.colpick_hex_field{position:absolute;height:20px;width:60px;overflow:hidden;background:#f3f3f3;color:#b8b8b8;font-size:12px;border:1px solid #bdbdbd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.colpick_rgb_r{top:40px;left:207px}.colpick_rgb_g{top:67px;left:207px}.colpick_rgb_b{top:94px;left:207px}.colpick_hsb_h{top:40px;left:277px}.colpick_hsb_s{top:67px;left:277px}.colpick_hsb_b{top:94px;left:277px}.colpick_hex_field{width:68px;left:207px;top:121px}.colpick_focus{border-color:#999}.colpick_field_letter{position:absolute;width:12px;height:20px;line-height:20px;padding-left:4px;background:#efefef;border-right:1px solid #bdbdbd;font-weight:bold;color:#777}.colpick_field input,.colpick_hex_field input{position:absolute;right:11px;margin:0;padding:0;height:20px;line-height:20px;background:transparent;border:0;font-size:12px;font-family:Arial,Helvetica,sans-serif;color:#555;text-align:right;outline:0}.colpick_hex_field input{right:4px}.colpick_field_arrs{position:absolute;top:0;right:0;width:9px;height:21px;cursor:n-resize}.colpick_field_uarr{position:absolute;top:5px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid #959595}.colpick_field_darr{position:absolute;bottom:5px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #959595}.colpick_submit{position:absolute;left:207px;top:149px;width:130px;height:22px;line-height:22px;background:#efefef;text-align:center;color:#555;font-size:12px;font-weight:bold;border:1px solid #bdbdbd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.colpick_submit:hover{background:#f3f3f3;border-color:#999;cursor:pointer}.colpick_full_ns .colpick_submit,.colpick_full_ns .colpick_current_color{display:none}.colpick_full_ns .colpick_new_color{width:130px;height:25px}.colpick_full_ns .colpick_rgb_r,.colpick_full_ns .colpick_hsb_h{top:42px}.colpick_full_ns .colpick_rgb_g,.colpick_full_ns .colpick_hsb_s{top:73px}.colpick_full_ns .colpick_rgb_b,.colpick_full_ns .colpick_hsb_b{top:104px}.colpick_full_ns .colpick_hex_field{top:135px}.colpick_rgbhex .colpick_hsb_h,.colpick_rgbhex .colpick_hsb_s,.colpick_rgbhex .colpick_hsb_b{display:none}.colpick_rgbhex{width:282px}.colpick_rgbhex .colpick_field,.colpick_rgbhex .colpick_submit{width:68px}.colpick_rgbhex .colpick_new_color{width:34px;border-right:0}.colpick_rgbhex .colpick_current_color{width:34px;left:240px;border-left:none}.colpick_rgbhex_ns .colpick_submit,.colpick_rgbhex_ns .colpick_current_color{display:none}.colpick_rgbhex_ns .colpick_new_color{width:68px;border:1px solid #8f8f8f}.colpick_rgbhex_ns .colpick_rgb_r{top:42px}.colpick_rgbhex_ns .colpick_rgb_g{top:73px}.colpick_rgbhex_ns .colpick_rgb_b{top:104px}.colpick_rgbhex_ns .colpick_hex_field{top:135px}.colpick_hex .colpick_hsb_h,.colpick_hex .colpick_hsb_s,.colpick_hex .colpick_hsb_b,.colpick_hex .colpick_rgb_r,.colpick_hex .colpick_rgb_g,.colpick_hex .colpick_rgb_b{display:none}.colpick_hex{width:206px;height:201px}.colpick_hex .colpick_hex_field{width:72px;height:25px;top:168px;left:80px}.colpick_hex .colpick_hex_field div,.colpick_hex .colpick_hex_field input{height:25px;line-height:25px}.colpick_hex .colpick_new_color{left:9px;top:168px;width:30px;border-right:0}.colpick_hex .colpick_current_color{left:39px;top:168px;width:30px;border-left:none}.colpick_hex .colpick_submit{left:164px;top:168px;width:30px;height:25px;line-height:25px}.colpick_hex_ns .colpick_submit,.colpick_hex_ns .colpick_current_color{display:none}.colpick_hex_ns .colpick_hex_field{width:80px}.colpick_hex_ns .colpick_new_color{width:60px;border:1px solid #8f8f8f}.colpick_dark{background:#161616;border-color:#2a2a2a}.colpick_dark .colpick_color{outline-color:#333}.colpick_dark .colpick_hue{border-color:#555}.colpick_dark .colpick_field,.colpick_dark .colpick_hex_field{background:#101010;border-color:#2d2d2d}.colpick_dark .colpick_field_letter{background:#131313;border-color:#2d2d2d;color:#696969}.colpick_dark .colpick_field input,.colpick_dark .colpick_hex_field input{color:#7a7a7a}.colpick_dark .colpick_field_uarr{border-bottom-color:#696969}.colpick_dark .colpick_field_darr{border-top-color:#696969}.colpick_dark .colpick_focus{border-color:#444}.colpick_dark .colpick_submit{background:#131313;border-color:#2d2d2d;color:#7a7a7a}.colpick_dark .colpick_submit:hover{background-color:#101010;border-color:#444}
skin/adminhtml/default/default/unbxd/recscore/css/magento-app.css ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* CSS for new rollling of Magento App */
2
+ /* Author : Vinay */
3
+
4
+
5
+ .magento-row-tabs {
6
+ background-color: #fff;
7
+ border: 1px solid #c6d1d3;
8
+ border-radius: 4px;
9
+ float: left;
10
+ padding: 5px 0 5px 10px;
11
+ width: 100%;
12
+ }
13
+ .catalog-table tbody tr:nth-child(even){
14
+ background:#f2f5f5;
15
+ }
16
+ .table-magento.table-magento1 > tbody > tr > td {
17
+ border-right: 1px solid #dee2e4 !important;
18
+ color: #5c656a;
19
+ font-size: 16px;
20
+ font-weight: 400;
21
+ height: 50px !important;
22
+ padding: 10px 10px 10px 20px;
23
+ vertical-align: middle;
24
+ }
25
+
26
+ .info-td-magento {
27
+ background: url("../img/info-small.png") no-repeat scroll 0 0 / 100% 100% rgba(0, 0, 0, 0);
28
+ display: inline-block;
29
+ float: right;
30
+ height: 20px;
31
+ margin-right: 5px;
32
+ width: 20px;
33
+ }
34
+
35
+ .table-magento1{
36
+ margin-bottom: 0;
37
+ }
38
+ .width-100{
39
+ width:100% !important;
40
+ }
41
+ .pad-rgt-200{
42
+ padding-right:200px;
43
+ }
44
+ .dblock{
45
+ display:block;
46
+ }
47
+ .saved-msg{
48
+ background: url("../img/saved.png") no-repeat scroll 10% center #fff;
49
+ border:none;
50
+ color:#0da670 !important;
51
+ }
52
+ .magento-row-tabs span{
53
+ color:#a6a6a6 ;
54
+ }
55
+ .wht-font{
56
+ color:#FFF;
57
+ }
58
+ .button-black-magento1 ,.button-black-magento1:hover{
59
+ background-image: none;
60
+ border-radius: 3px;
61
+ color: #fdfdfd !important;
62
+ }
63
+ .button-black-magento1 a:hover, .button-black-magento1 a:visited, .button-black-magento1 a:active{
64
+ color:#FFF !important;
65
+ }
66
+ .width-40{
67
+ width:40px;
68
+ }
69
+ .magento-plus-btn, .magento-plus-btn:hover{
70
+ background: url("../img/add-icon.png") no-repeat scroll 50% center #3b3e40;
71
+ border-bottom-right-radius: 3px;
72
+ border-top-right-radius: 3px;
73
+ border-bottom-left-radius: 0px;
74
+ border-top-left-radius: 0px;
75
+ }
76
+ .btn-group{
77
+ width:100% !important;
78
+ }
79
+
80
+ .table-magento.table-magento1 > tbody > tr > td{
81
+ width:auto;
82
+ }
83
+ .dropdown-toggle-magento{
84
+ width:auto;
85
+ }
86
+ .attribute-td {
87
+ width: 250px !important;
88
+ }
89
+ .dropdown-menu-magento{
90
+ width:auto !important;
91
+ }
92
+ .dropdown-menu-magento > li > a{
93
+ width:auto!important;
94
+ }
95
+
96
+ .btn-group.open{
97
+ width:30% !important;
98
+ }
99
+ .btn-group.open .dropdown-toggle-magento{
100
+ width:160px !important;
101
+ }
102
+ .search_info_box > img{float:none !important;}
103
+ .search_info_box a{color:#05b3aa;}
104
+ .clear{clear:both;}
105
+ .magento-search-type{
106
+ border:1px solid #c6d1d3;
107
+ border-radius: 3px;
108
+ margin:10px 0px 10px;
109
+ cursor:pointer;
110
+ }
111
+ .magento-search-copy {
112
+ padding: 30px 20px;
113
+ min-height: 136px;
114
+ padding-top: 20px;
115
+ border-right:1px solid #c6d1d3;
116
+ position: relative;
117
+ /*resize: vertical;*/
118
+ overflow: auto;
119
+ }
120
+
121
+ .magento-search-copy > div {
122
+ position: absolute;
123
+ top: 50%;
124
+ left: 20px;
125
+ right: 20px;
126
+ padding: 20px;
127
+ transform: translateY(-50%);
128
+ /*resize: vertical;*/
129
+ overflow: auto;
130
+ }
131
+
132
+ .search-head {
133
+ color: #4e5356;
134
+ font-weight: 400;
135
+ font-size: 21px;
136
+ margin-bottom: 5px;
137
+ }
138
+
139
+ .search-desc {
140
+ color: #929494;
141
+ width: 85%;
142
+ float:left;
143
+ font-size: 14px;
144
+ font-weight: 300;
145
+ letter-spacing:1px;
146
+ }
147
+
148
+ .search-desc a, .search-desc a:hover{
149
+ color: #05b3aa !important;
150
+ }
151
+
152
+ .magento-search-type:hover,
153
+ .active-search{
154
+ border: 1px solid #05b3aa;
155
+ background:#f2f5f5;
156
+ }
157
+ .magento-search-type-arrow {
158
+ padding: 42px 0;
159
+ height: 136px;
160
+ }
161
+ .magento-search-type-arrow div{
162
+ background:url('../img/arrow_grey.png') no-repeat center;
163
+ height:45px;
164
+ width:21px;
165
+ margin:auto;
166
+ }
167
+ .magento-search-type:hover .magento-search-type-arrow,
168
+ .active-arrow{
169
+ background:#05b3aa;
170
+ }
171
+ .magento-search-type:hover .magento-search-type-arrow div,
172
+ .active-arrow div{
173
+ background:url('../img/arrow_white.png') no-repeat center;
174
+ }
175
+ .search-active-btn{
176
+ background: url("../img/active.png") no-repeat scroll 3px 4px rgba(0, 0, 0, 0);
177
+ border: 1px solid #05b3aa;
178
+ border-radius: 3px;
179
+ color: #05b3aa;
180
+ float: right;
181
+ height: 25px;
182
+ line-height: 23px;
183
+ width: 85px;
184
+ background-position: 10px;
185
+ padding-left: 30px;
186
+ }
187
+
188
+ .mail-popup-bg {
189
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5);
190
+ height: 100%;
191
+ left: 0;
192
+ position: fixed;
193
+ top: 0;
194
+ width: 100%;
195
+ display:none;
196
+ z-index: 10;
197
+ }
198
+ .mail-popup {
199
+ background: none repeat scroll 0 0 #fff;
200
+ position: absolute;
201
+ width: 85%;
202
+ display:none;
203
+ z-index: 11;
204
+ }
205
+ .mail-popup-head {
206
+ background: none repeat scroll 0 0 #05b3aa;
207
+ color: #fff;
208
+ font-size: 1.25em;
209
+ padding: 15px 40px;
210
+ }
211
+ .mail-popup-content {
212
+ padding: 25px;
213
+ }
214
+ .mail-popup-content input, .mail-popup-content input:focus {
215
+ vertical-align: baseline;
216
+ border: 0px solid #FFF;
217
+ }
218
+ .mail-popup-content textarea{
219
+ color: #636769;
220
+ font-size: 13px;
221
+ overflow: visible;
222
+ }
223
+ .to-holder > span {
224
+ font-size: 1.25em;
225
+ }
226
+ .to-holder, .cc-holder {
227
+ border: 1px solid #c6d1d3;
228
+ color: #929494;
229
+ padding: 10px;
230
+ padding-top: 5px;
231
+ padding-bottom: 5px;
232
+ }
233
+
234
+ .to-holder > input:focus, .cc-holder > input:focus{
235
+ border:none;
236
+ }
237
+
238
+ .to-holder > input {
239
+ border: medium none;
240
+ color: #929494;
241
+ margin-left: 5px;
242
+ padding-left: 5px;
243
+ }
244
+ .cc-holder , .cc-holder > input {color:#000;}
245
+
246
+ .body-holder{
247
+ min-height:200px;
248
+ }
249
+ .mail-send-btn {
250
+ background: none repeat scroll 0 0 #05b3aa;
251
+ border: medium none;
252
+ color: #fff;
253
+ font-size: 1.25em;
254
+ padding: 10px 40px;
255
+ }
256
+ .pad-top-6p{
257
+ padding-top: 6%;
258
+ }
259
+ .pad-left-10p{
260
+ padding-left: 10%;
261
+ }
262
+ .mail-popup .mail-body{
263
+ border: 0px;
264
+ width: 100%;
265
+ }
266
+ .cc-div{
267
+ padding-top: 8px;
268
+ padding-bottom: 5px;
269
+ overflow: auto;
270
+ }
skin/adminhtml/default/default/unbxd/recscore/css/unbxd-magento.css ADDED
@@ -0,0 +1,1778 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .unbxd-container a, .unbxd-container a:hover{
2
+ text-decoration: none;
3
+ }
4
+ .container{
5
+ background-color: #f3f6f6;
6
+ }
7
+ .middle-nav-magento-dropdown, .background-grey{
8
+ background-color: #f3f6f6;
9
+ }
10
+ .middle-nav-magento-dropdown{
11
+ /*top: 185px;*/
12
+ width: 100%;
13
+ }
14
+ .top-200{
15
+ top:200px !important;
16
+ }
17
+ .top-185{
18
+ top: 185px !important;
19
+ }
20
+ .clickable-btn,.clickable{
21
+ cursor: pointer;
22
+ }
23
+ .magento-active{
24
+ border-top: 0;
25
+ border-bottom: 1px solid #4e5253;
26
+ background: #05b4ae url('../img/arrow-white.png') no-repeat 90%;
27
+ cursor: default;
28
+ pointer-events: none;
29
+ border: 0;
30
+ }
31
+ .site-key-help {
32
+ display: none;
33
+ top: 329px;
34
+ position: absolute;
35
+ left: 470px;
36
+ }
37
+ .secret-key-help{
38
+ display: none;
39
+ top: 329px;
40
+ position: absolute;
41
+ left: 870px;
42
+ }
43
+ .blue-link{
44
+ color: #11b3c7;
45
+ cursor: pointer;
46
+ padding-top: 13px;
47
+ padding-left: 10px;
48
+ }
49
+ .custom-attributes{
50
+ display: none;
51
+ }
52
+ .middle-nav-text {
53
+ padding-left: 5px;
54
+ color: #3c3f40;
55
+ font-size: 16px;
56
+ font-weight: 400;
57
+ padding-top: 5px;
58
+ padding-bottom: 5px;
59
+ margin-bottom: 0;
60
+ }
61
+ .chosen-drop{
62
+ z-index: 999999 !important;
63
+ }
64
+ .capitalize{
65
+ text-transform: capitalize;
66
+ }
67
+ .unbxd-table{
68
+
69
+ border-right-style: solid;
70
+ border-right-width: 1px;
71
+ border-top-color: rgb(222, 226, 228);
72
+ border-top-left-radius: 5px;
73
+ border-top-right-radius: 5px;
74
+ border-top-style: solid;
75
+ border-top-width: 1px;
76
+ box-sizing: border-box;
77
+ color: #5c656a;
78
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
79
+ font-size: 14px;
80
+ font-style: normal;
81
+ font-variant: normal;
82
+ font-weight: normal;
83
+ line-height: 20px;
84
+ margin-bottom: 20px;
85
+ margin-left: 0px;
86
+ margin-right: 0px;
87
+ margin-top: 0px;
88
+ max-width: 100%;
89
+ padding-bottom: 0px;
90
+ padding-left: 0px;
91
+ padding-right: 0px;
92
+ padding-top: 0px;
93
+ width: 100%;
94
+ }
95
+ .unbxd-thead{
96
+ color: rgb(51, 51, 51);
97
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
98
+ font-size: 14px;
99
+ font-style: normal;
100
+ font-variant: normal;
101
+ font-weight: normal;
102
+ height: 42px;
103
+ line-height: 20px;
104
+
105
+ }
106
+ .unbxd-tr{
107
+ border-bottom-color: rgb(222, 226, 228);
108
+ border-collapse: separate;
109
+ border-left-color: rgb(222, 226, 228);
110
+ border-right-color: rgb(222, 226, 228);
111
+ border-top-color: rgb(222, 226, 228);
112
+ box-sizing: border-box;
113
+ color: rgb(51, 51, 51);
114
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
115
+ font-size: 14px;
116
+ font-style: normal;
117
+ font-variant: normal;
118
+ font-weight: normal;
119
+ height: 42px;
120
+ line-height: 20px;
121
+ margin-bottom: 0px;
122
+ margin-left: 0px;
123
+ margin-right: 0px;
124
+ margin-top: 0px;
125
+ padding-bottom: 0px;
126
+ padding-left: 0px;
127
+ padding-right: 0px;
128
+ padding-top: 0px;
129
+ vertical-align: middle;
130
+ }
131
+ .unbxd-th{
132
+
133
+ background-color: rgb(60, 63, 64);
134
+ border-bottom-left-radius: 0px;
135
+ border-bottom-right-radius: 0px;
136
+ border-bottom-style: none;
137
+ border-bottom-width: 0px;
138
+ border-collapse: separate;
139
+ border-right-color: rgb(255, 255, 255);
140
+ border-right-style: solid;
141
+ border-right-width: 1px;
142
+ border-top-color: rgb(255, 255, 255);
143
+ border-top-left-radius: 5px;
144
+ border-top-right-radius: 0px;
145
+ border-top-style: none;
146
+ border-top-width: 0px;
147
+ box-sizing: border-box;
148
+ color: rgb(255, 255, 255);
149
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
150
+ font-size: 18px;
151
+ font-style: normal;
152
+ font-variant: normal;
153
+ font-weight: normal;
154
+ height: 42px;
155
+ line-height: 42pxpx;
156
+ margin-bottom: 0px;
157
+ margin-left: 0px;
158
+ margin-right: 0px;
159
+ margin-top: 0px;
160
+ padding-bottom: 8px;
161
+ padding-left: 20px;
162
+ padding-right: 0px;
163
+ padding-top: 10px;
164
+ text-align: left;
165
+ }
166
+ .unbxd-tbody{
167
+ border-bottom-color: rgb(222, 226, 228);
168
+ border-collapse: separate;
169
+ border-left-color: rgb(222, 226, 228);
170
+ border-right-color: rgb(222, 226, 228);
171
+ border-top-color: rgb(222, 226, 228);
172
+ box-sizing: border-box;
173
+ color: rgb(51, 51, 51);
174
+ display: table-row-group;
175
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
176
+ font-size: 14px;
177
+ font-style: normal;
178
+ font-variant: normal;
179
+ font-weight: normal;
180
+ height: 549px;
181
+ line-height: 20px;
182
+ margin-bottom: 0px;
183
+ margin-left: 0px;
184
+ margin-right: 0px;
185
+ margin-top: 0px;
186
+ padding-bottom: 0px;
187
+ padding-left: 0px;
188
+ padding-right: 0px;
189
+ padding-top: 0px;
190
+ vertical-align: middle;
191
+ width: 666px;
192
+ }
193
+ .unbxd-td{
194
+ border-collapse: separate;
195
+ border-right-color: rgb(222, 226, 228);
196
+ border-right-style: solid;
197
+ border-right-width: 1px;
198
+ border-top-color: rgb(221, 221, 221);
199
+ border-top-style: solid;
200
+ border-top-width: 1px;
201
+ box-sizing: border-box;
202
+ color: rgb(92, 101, 106);
203
+ display: table-cell;
204
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
205
+ font-size: 16px;
206
+ font-style: normal;
207
+ font-variant: normal;
208
+ font-weight: normal;
209
+ height: 72px;
210
+ line-height: 22.8571434020996px;
211
+ margin-bottom: 0px;
212
+ margin-left: 0px;
213
+ margin-right: 0px;
214
+ margin-top: 0px;
215
+ padding-bottom: 15px;
216
+ padding-left: 23px;
217
+ padding-right: 100px;
218
+ padding-top: 15px;
219
+ text-transform: capitalize;
220
+
221
+ }
222
+ .width-45{
223
+ width: 45%;
224
+ }
225
+ .width-55{
226
+ width: 55%;
227
+ }
228
+ .width-50{
229
+ width: 50%;
230
+ }
231
+ .tr-row{
232
+ width: 100%;
233
+ height: 42px;
234
+ line-height: 42px;
235
+ }
236
+ .td-right{
237
+ float: right;
238
+ border-left: 1px solid #dee2e4 !important;
239
+ border-bottom: 1px solid #dee2e4 !important;
240
+ height: 100%;
241
+ }
242
+ .td-left{
243
+ float: left;
244
+ height: 100%;
245
+ /*padding-top: 19px;*/
246
+ padding-left: 32px;
247
+ font-size: 16px;
248
+ border-bottom: 1px solid #dee2e4 !important;
249
+ }
250
+ .magento-border-left{
251
+ border-left: 1px solid #dee2e4 !important;
252
+ }
253
+ .magento-border-right{
254
+ border-right: 1px solid #dee2e4 !important;
255
+ }
256
+ .unbxd-err{
257
+ float: right;
258
+ position: absolute;
259
+ left: 694px;
260
+ width: 200px;
261
+ padding-top: 7px;
262
+ color: red;
263
+ }
264
+ #selectSites + div.chosen-container {
265
+ width: 100% !important;
266
+ }
267
+ .width-70{
268
+ width: 70% !important;
269
+ }
270
+ .width-100 > .chosen-container{
271
+ width: 100% !important;
272
+ }
273
+ .custom-attributes-td{
274
+ padding: 0;
275
+ /*padding-top: 4px;*/
276
+ padding-right: 3px;
277
+ }
278
+ .remove-row{
279
+ margin-top: 2px;
280
+ margin-left: 5px;
281
+ width: 21%;
282
+ height: 35px;
283
+ background-color: #dae0e0;
284
+ background-image: url("../img/delete-raw.png");
285
+ background-repeat: no-repeat;
286
+ background-position: center;
287
+ min-width: 32px;
288
+ min-height: 36px;
289
+ border-radius: 3px;
290
+ }
291
+ .remove-row:hover{
292
+ background-image: url("../img/delete-raw-hover.png");
293
+ background-color: #fc6956;
294
+ }
295
+ .add-row{
296
+ margin-top: 2px;
297
+ margin-left: 5px;
298
+ width: 21%;
299
+ height: 35px;
300
+ background-color: #dae0e0;
301
+ background-image: url("../img/add-raw.png");
302
+ background-repeat: no-repeat;
303
+ background-position: center;
304
+ border-radius: 3px;
305
+ min-width: 32px;
306
+ min-height: 36px;
307
+ }
308
+ .add-row:hover{
309
+ background-image: url("../img/add-raw-hover.png");
310
+ background-color: #3c3f40;
311
+ }
312
+ .disabled-btn{
313
+ opacity: 0.5;
314
+ cursor: default;
315
+ pointer-events: none;
316
+ }
317
+ .width-62{
318
+ width: 62%;
319
+ }
320
+ .unbxd-div-td{
321
+ float: left;
322
+ height: 100%;
323
+ /* padding-top: 19px;
324
+ padding-left: 32px;*/
325
+ font-size: 15px;
326
+ border-bottom: 1px solid #dee2e4 !important;
327
+ border-left: 1px solid #dee2e4 !important;
328
+ font-weight: 300;
329
+ }
330
+ .width-28{
331
+ width: 28%;
332
+ }
333
+ .width-30{
334
+ width: 30%;
335
+ }
336
+ .width-42{
337
+ width: 42%;
338
+ }
339
+ .unbxd-hide{
340
+ display: none !important;
341
+ }
342
+ .pad-top{
343
+ padding-top: 20px;
344
+ }
345
+ .border-left-color{
346
+ margin-left: 25px;
347
+ margin-right: 25px;
348
+ width: 96%;
349
+ }
350
+ .background-white{
351
+ background-color: #FFF !important;
352
+ }
353
+ .pad-left-45{
354
+ padding-left: 45px;
355
+ }
356
+ .footer{
357
+ position: fixed;
358
+ width: 100%;
359
+ padding-top: 19px;
360
+ background: #efefef;
361
+ bottom: -55px;
362
+ }
363
+ .footer:hover{
364
+ /*bottom: -5px !important;*/
365
+ }
366
+ .pad-btm-10p{
367
+ padding-bottom: 10%;
368
+ }
369
+ .chosen-container{
370
+ width: 354px !important;
371
+ }
372
+ ._unbxd-err{
373
+ color: red;
374
+ padding-left: 13%;
375
+ font-weight: bold;
376
+ }
377
+ ._unbxd-success{
378
+ color: #0ca672;
379
+ padding-left: 4%;
380
+ font-weight: bold;
381
+ }
382
+ .unbxd-disabler{
383
+ opacity: 0.5;
384
+ margin-bottom: 5%;
385
+ }
386
+ .pad-left-msg{
387
+ padding-left: 35%;
388
+ }
389
+ .width-25{
390
+ width: 25%;
391
+ }
392
+ .width-35{
393
+ width: 35%;
394
+ }
395
+ .width-40{
396
+ width: 40%;
397
+ }
398
+ .pad-left-10{
399
+ padding-left: 13px;
400
+ }
401
+ .pad-btm-0{
402
+ padding-bottom: 0 !important;
403
+ }
404
+ .height-100{
405
+ height: 100%;
406
+ }
407
+ .unbxd-success-msg{
408
+ color: green;
409
+ font-weight: bold;
410
+ font-size: 13px;
411
+ }
412
+ .unbxd-error-msg{
413
+ color: red;
414
+ font-weight: bold;
415
+ font-size: 13px;
416
+ }
417
+ .unbxd-center-div{
418
+ margin: 0 auto;
419
+ width: 50%;
420
+ text-align: center;
421
+ }
422
+ .pad-top-20{
423
+ padding-top: 20px;
424
+ }
425
+ .pad-top-30{
426
+ padding-top: 30px;
427
+ }
428
+ .inner-container-magento .popover, .inner-container-magento .popover-title, .inner-container-magento .popover-content {
429
+ background: #3c3f40;
430
+ color: rgb(255, 255, 255);
431
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
432
+ font-size: 12px;
433
+ font-style: normal;
434
+ font-weight: 100;
435
+ border: none;
436
+ letter-spacing: 1px;
437
+ line-height: 20px;
438
+ }
439
+ .magento-number-text {
440
+ width: 109px;
441
+ }
442
+ .box-35{
443
+ width: 35px;
444
+ height: 35px;
445
+ }
446
+ div.chosen-disabled > a.chosen-single > div {
447
+ display: none;
448
+ }
449
+ div.chosen-container-single ,div.chosen-container-single > a.chosen-single {
450
+ border: 0;
451
+ background-color: inherit;
452
+ }
453
+ div.middle-nav-dropdown a.chosen-single {
454
+ background-color: #FFF;
455
+ }
456
+ div.chosen-container-single > a.chosen-single > div b {
457
+ background: url(../img/drop-down.png) no-repeat 50%!important;
458
+ width: 28px!important;
459
+
460
+ }
461
+ .bord-right{
462
+ border-right: 1px solid #dee2e4 !important;
463
+ }
464
+ .chosen-disabled{
465
+ opacity: 1 !important;
466
+ }
467
+ .delete-row{
468
+ float: left;
469
+ }
470
+ .width-80{
471
+ width: 80% !important;
472
+ }
473
+ .width-20{
474
+ width: 20%;
475
+ }
476
+ div.cudtom-attr-rows div div.add-row{
477
+ display: none;
478
+ }
479
+ div.cudtom-attr-rows > div:last-child div.add-row{
480
+ display: block;
481
+ }
482
+ .width-38{
483
+ width: 38%;
484
+ }
485
+ .pad-top-5{
486
+ padding-top: 5px !important;
487
+ }
488
+ .width-64{
489
+ width: 64%
490
+ }
491
+ .width-36{
492
+ width: 36%
493
+ }
494
+ .btn-add-attribute, .btn-add-attribute:hover{
495
+ background: #3b3e40 url('../img/add.png') no-repeat 97%;
496
+ }
497
+ .magento-analytics-tick
498
+ {
499
+ background:#45b5c1 url('../img/DONE.png') no-repeat 50%;
500
+ }
501
+ .magento-analytics-cross
502
+ {
503
+ background: url('../img/red-loading.gif') no-repeat;
504
+ background-size: 100%;
505
+ background-position: center;
506
+ }
507
+ .unbxd-top-strip{
508
+ /*border-top: 2px solid #45b5c1;*/
509
+ }
510
+ .unbxd-green-border{
511
+ border: 1px solid #47b28e;
512
+ }
513
+ .unbxd-green-border{
514
+ border: 1px solid #db2727;
515
+ }
516
+ .magento-analytics-block{
517
+ border: 1px solid #47b28e
518
+ }
519
+ .magento-analytics-block1 {
520
+ border: 1px solid #db2727;
521
+ }
522
+ .word-break{
523
+ word-wrap:break-word;
524
+ }
525
+ .height-75p{
526
+ height: 95px;
527
+ }
528
+ .unbxd-text-center{
529
+ padding-top: 10px;
530
+ }
531
+ .pad-left-15{
532
+ padding-left: 15px;
533
+ }
534
+ .unbxd-text-verticle-center{
535
+ display: flex;
536
+ align-items: center;
537
+ }
538
+ .background-success{
539
+ background-color: #47b28e;
540
+ height: 102px;
541
+ }
542
+ .background-success div.magento-text{
543
+ color: #FFF;
544
+ }
545
+ .succes-div{
546
+ background:#47b28e url('../img/congrats.png') no-repeat 50%;
547
+ width: 13%;
548
+ height: 90px;
549
+ }
550
+ .pad-10{
551
+ padding: 10px;
552
+ }
553
+ .success-head{
554
+ font-weight: bold;
555
+ font-size: 20px;
556
+ }
557
+ .magento-landing-block{
558
+ background-color: rgb(60, 63, 64);
559
+ }
560
+ .blue-link-help{
561
+ color: #05b4ae;
562
+ cursor: pointer;
563
+ }
564
+ .cms-help{
565
+ padding-bottom: 20px;
566
+ font-size: 16px;
567
+ padding-left: 30px;
568
+ padding-top: 5px;
569
+ }
570
+ .hide-over-flow{
571
+ overflow: hidden;
572
+ }
573
+ .width-60{
574
+ width: 60%;
575
+ }
576
+ .unbxd-caps{
577
+ text-transform: capitalize;
578
+ }
579
+ .pad-top-32{
580
+ padding-top: 32px;
581
+ }
582
+ .background-dark-grey{
583
+ background-color: rgba(210, 216, 216, 1) !important;
584
+ }
585
+ .unbxd-border{
586
+ border: 1px solid #cddbde;
587
+ }
588
+ .z99{
589
+ z-index: 99;
590
+ }
591
+
592
+ ul.magento-conf-tabs li a {
593
+ width: 25%;
594
+ padding-left: 0 !important;
595
+ font-weight: 400;
596
+ font-size: 16px;
597
+ border-right: 2px solid #B6BCBD;
598
+ padding-left: 2% !important;
599
+ cursor: pointer;
600
+ }
601
+ ul.magento-conf-tabs li:last-child > a{
602
+ border-right: 0;
603
+ }
604
+ .magento-head-active{
605
+ background-color: #FFF !important;
606
+ }
607
+ .txt-center{
608
+ text-align: center;
609
+ }
610
+ .height-80{
611
+ height: 80%;
612
+ }
613
+ .unbxd-bold{
614
+ font-weight: bold;
615
+ }
616
+ .help-table-head{
617
+ background-color: #FFF;
618
+ color: black;
619
+ }
620
+ div#unbxdHelpRows div div {
621
+ padding-left: 4%;
622
+ }
623
+ .border-right-rad{
624
+ border-radius: 0;
625
+ border-top-right-radius: 5px;
626
+ }
627
+ .unbxd-mar-left-30 {
628
+ margin-left: 30% !important;
629
+ }
630
+ .unbxd-mar-btm-20{
631
+ margin-bottom: 20px !important;
632
+ }
633
+ .note-head{
634
+ color: black;
635
+ font-weight: bold;
636
+ }
637
+ .font17{
638
+ font-size: 17px;
639
+ }
640
+ div.middle{
641
+ padding: 0;
642
+ }
643
+ .unbxd-container{
644
+ border-top: 6px solid #45b5c1;
645
+ background-color: #f3f6f6;
646
+ float: left;
647
+ overflow: hidden;
648
+ width: 100%;
649
+ width:100%;
650
+ overflow:hidden;
651
+ font-family: "Helvetica Neue", Helvetica, Sans-Serif;
652
+ }
653
+ .width-17{
654
+ width:17%;
655
+ }
656
+ .width-82{
657
+ width: 82%;
658
+ }
659
+ .unbxd-left {
660
+ float:left;
661
+ position:relative;
662
+ min-width: 205px;
663
+ }
664
+ .unbxd-right {
665
+ float:right;
666
+ position: relative;
667
+ padding:3px;
668
+ }
669
+ /*.magento-success-block, .magento-label{
670
+ font-weight: 300;
671
+ }*/
672
+ .chosen-drop, .no-radius{
673
+ border-radius: 0px !important;
674
+ }
675
+ .weight300{
676
+ font-weight: 300;
677
+ }
678
+ .width-220{
679
+ width: 220px;
680
+ }
681
+ .no-border-right{
682
+ border-right: 0px !important;
683
+ }
684
+ .no-left-top-rad{
685
+ border-top-left-radius: 0px;
686
+ }
687
+ div.popover div.arrow{
688
+ background: transparent !important;
689
+ }
690
+ .popover.right .arrow:after {
691
+ border-right-color: rgb(60, 63, 64) !important;
692
+ }
693
+ .popover-content{
694
+ color: #F3F6F6;
695
+ font-size: 14px;
696
+ }
697
+ ul.magento-conf-tabs .magento-head-active {
698
+ background-color: #E1E6E6;
699
+ }
700
+ a.magento-head-active {
701
+ color: #4e5356 !important;
702
+ background: url('../img/level-arrow-active.png') no-repeat 92% !important;
703
+ background-color: #FFF !important;
704
+ }
705
+ .pad-top-34{
706
+ padding-top: 34px;
707
+ }
708
+ .table-magento div.tr-row:nth-child(even) {
709
+ background-color: #f3f6f6;;
710
+ }
711
+ .unbxd-saved{
712
+ width: 21px;
713
+ height: 21px;
714
+ float: left;
715
+ margin-right: 5px;
716
+ background: url('../img/saved.png') no-repeat !important;
717
+ }
718
+ .header-border{
719
+ border: 1px solid #dee2e4;
720
+ padding: 2px 2px 2px 9px;
721
+ }
722
+ .grey-text{
723
+ color: #929494;
724
+ }
725
+ .info-icon-big{
726
+ background: url('../img/info-icon-big.png') no-repeat 92%;
727
+ width: 35px;
728
+ height: 40px;
729
+ }
730
+ .mar-right-10{
731
+ margin-right: 10px;
732
+ }
733
+ .pad-top-10{
734
+ padding-top: 10px;
735
+ }
736
+ .mar-top-10{
737
+ margin-top: 10px;
738
+ }
739
+ .height-250{
740
+ height: 250px
741
+ }
742
+ .add-filter{
743
+ /*width: 275px;*/
744
+ height: 187px;
745
+ border: 1px solid #dee2e4;
746
+ position: relative;
747
+ text-align: center;
748
+ border-radius: 4px;
749
+ }
750
+ .mar-top-15{
751
+ margin-top: 15px;
752
+ }
753
+ .add-icon{
754
+ background: url('../img/add-rule.png') no-repeat 55%;
755
+ width: 40px;
756
+ height: 40px;
757
+ }
758
+ .mar-0-auto{
759
+ margin: 0 auto;
760
+ }
761
+ .width-40p{
762
+ width: 40%;
763
+ }
764
+ .bolder-grey{
765
+ border: 1px solid #dee2e4;
766
+ }
767
+ .after-rule{
768
+ height: 150px;
769
+ }
770
+ .mar-left-10{
771
+ margin-left: 10px;
772
+ }
773
+ .pad-top-5p{
774
+ padding-top: 5%;
775
+ }
776
+ .rule-after-text{
777
+ text-align: center;
778
+ }
779
+ .hr-line{
780
+ display: block;
781
+ height: 1px;
782
+ border: 0;
783
+ border-top: 2px dotted #dee2e4;
784
+ margin: 1em 0;
785
+ padding: 0;
786
+ }
787
+ .width-25p{
788
+ width: 25%;
789
+ }
790
+ .width-50p{
791
+ width: 50%;
792
+ }
793
+ .close-icon{
794
+ width: 30px;
795
+ height: 30px;
796
+ background:url('../img/close.png') no-repeat center center;
797
+ }
798
+ .close-icon-round{
799
+ width: 30px;
800
+ height: 30px;
801
+ background:url('../img/close-round.png') no-repeat center center;
802
+ }
803
+ .right-top-edge{
804
+ position: absolute;
805
+ top: -10px;
806
+ right: -10px;
807
+ }
808
+ .box-35{
809
+ width: 30px;
810
+ height: 35px;
811
+ }
812
+ .skins{
813
+ text-align: center;
814
+ }
815
+ .skins div{
816
+ display: inline-block;
817
+ color: white;
818
+ margin-right: 10px;
819
+ }
820
+ .background-295-247{
821
+ background-size: 295px 247px !important;
822
+ }
823
+ .box-200{
824
+ width: 200px;
825
+ height: 200px;
826
+ }
827
+ .template-box{
828
+ width: 296.046875px !important;
829
+ height: 255px;
830
+ }
831
+ .fuelux .spinbox .spinbox-buttons {
832
+ position: absolute;
833
+ height: 28px;
834
+ width: 20px;
835
+ right: 2px;
836
+ top: 1px;
837
+ }
838
+ .fuelux .spinbox .btn-group > .btn.spinbox-up {
839
+ background: url("../img/spinner_up.png") repeat scroll 0 0 / 100% 100% rgba(0, 0, 0, 0);
840
+ border-top-right-radius: 4px;
841
+ }
842
+ .fuelux .spinbox .spinbox-down {
843
+ background: url("../img/spinner_down.png") repeat scroll 0 0 / 100% 100% rgba(0, 0, 0, 0);
844
+ border-bottom-left-radius: 4px;
845
+ top: 4px;
846
+ }
847
+ .fuelux .spinbox .btn {
848
+ height: 11px;
849
+ padding-left: 9px;
850
+ padding-right: 9px;
851
+ padding-top: 0;
852
+ position: relative;
853
+ width: 28px;
854
+ }
855
+ .fuelux .spinbox .spinbox-up {
856
+ top: 2px;
857
+ }
858
+ .magento-row-tabs {
859
+ float: left;
860
+ width: 100%;
861
+ background-color: #f3f6f6;
862
+ padding: 8px 0px;
863
+ border: 1px solid #c6d1d3;
864
+ color: #929494;
865
+ }
866
+ .info-icon-small{
867
+ background: url('../img/info-small.png') no-repeat;
868
+ width: 20px;
869
+ height: 20px;
870
+ }
871
+ .pad-right-10{
872
+ padding-right: 10px;
873
+ }
874
+ .pad-btm-25{
875
+ padding-bottom: 25px;
876
+ }
877
+ .autosuggest-text {
878
+ color: #4e5356;
879
+ }
880
+ .magento-text {
881
+
882
+ }
883
+ .dummy{
884
+
885
+ }
886
+ .mar-btm-20 {
887
+ margin-bottom: 20px;
888
+ }
889
+ .autosuggest-inner-block {
890
+ margin: 20px 50px;
891
+ border-bottom: 1px solid #b0b6b9;
892
+ }
893
+ .height-20{
894
+ height: 20px;
895
+ }
896
+ .box-30{
897
+ width: 30px;
898
+ height: 30px;
899
+ }
900
+ .pad-right-20{
901
+ padding-right: 20px;
902
+ }
903
+ .height-50{
904
+ height: 50px;
905
+ }
906
+ .pad-top-1p{
907
+ padding-top: 1%;
908
+ }
909
+ .preview_btn_holder {
910
+ background: url("../img/view.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
911
+ background-position: 47%;
912
+ }
913
+ .preview_btn_holder:hover{
914
+ background: url("../img/view-hover.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
915
+ background-position: 47%;
916
+ }
917
+ .display-inline{
918
+ display: inline-block;
919
+ }
920
+ .pad-top-40p{
921
+ padding-top: 40%;
922
+ }
923
+ .width-170{
924
+ width: 170px;
925
+ }
926
+ .mar-left-56n{
927
+ margin-left: -56px;
928
+ }
929
+ .width-56 {
930
+ width: 56px;
931
+ }
932
+ .mar-left-32p{
933
+ margin-left: 32%;
934
+ }
935
+ .box-40{
936
+ height: 40px;
937
+ width: 40px;
938
+ }
939
+ .back-white-circle, .back-white-circle:hover{
940
+ background-color: #FFF;
941
+ border-radius: 100%;
942
+ }
943
+ .pad-top-35p{
944
+ padding-top: 35%;
945
+ }
946
+ .mar-right-20{
947
+ margin-right: 20px;
948
+ }
949
+ .hexagon {
950
+ background: red;
951
+ position: relative;
952
+ height: 15px;
953
+ }
954
+ .hexagon:before {
955
+ content: "";
956
+ position: absolute;
957
+ top: -10px;
958
+ left: 0;
959
+ width: 0;
960
+ height: 0;
961
+ border-left: 15px solid transparent;
962
+ border-right: 15px solid transparent;
963
+
964
+ }
965
+ .hexagon:after {
966
+ content: "";
967
+ position: absolute;
968
+ bottom: -10px;
969
+ left: 0;
970
+ width: 0;
971
+ height: 0;
972
+ border-left: 15px solid transparent;
973
+ border-right: 15px solid transparent;
974
+
975
+ }
976
+ .hexagon-orange{
977
+ background: #ff7800;
978
+ }
979
+ .hexagon-orange:before{
980
+ border-bottom: 10px solid #ff7800;
981
+ }
982
+ .hexagon-orange:after{
983
+ border-top: 10px solid #ff7800;
984
+ }
985
+
986
+ .hexagon-green{
987
+ background: #29BD9F;
988
+ }
989
+ .hexagon-green:before{
990
+ border-bottom: 10px solid #29BD9F;
991
+ }
992
+ .hexagon-green:after{
993
+ border-top: 10px solid #29BD9F;
994
+ }
995
+
996
+ .hexagon-red{
997
+ background: #dd424f;
998
+ }
999
+ .hexagon-red:before{
1000
+ border-bottom: 10px solid #dd424f;
1001
+ }
1002
+ .hexagon-red:after{
1003
+ border-top: 10px solid #dd424f;
1004
+ }
1005
+
1006
+ .hexagon-blue{
1007
+ background: #004C92;
1008
+ }
1009
+ .hexagon-blue:before{
1010
+ border-bottom: 10px solid #004C92;
1011
+ }
1012
+ .hexagon-blue:after{
1013
+ border-top: 10px solid #004C92;
1014
+ }
1015
+ .box-32{
1016
+ width:32px;
1017
+ }
1018
+ .cursor-default{
1019
+ cursor: default !important;
1020
+ }
1021
+ .magento-templates{
1022
+ border: 1px dashed;
1023
+ height: 248px;
1024
+ text-align: center;
1025
+ }
1026
+ .magento-templates > div:first-child{
1027
+ margin: 0 auto;
1028
+ height: 99%;
1029
+ background-position: center center;
1030
+ width: 100%;
1031
+ }
1032
+ .width-70p{
1033
+ width: 70%;
1034
+ }
1035
+ .width-92p{
1036
+ width: 92%;
1037
+ }
1038
+ .width-84p{
1039
+ width: 84%;
1040
+ }
1041
+ .skin1{
1042
+ background: url('../img/skin1.png') no-repeat center center;
1043
+ }
1044
+ .skin2{
1045
+ background: url('../img/skin2.png') no-repeat center center;
1046
+ }
1047
+ .skin3{
1048
+ background: url('../img/skin3.png') no-repeat center center;
1049
+ }
1050
+ .skin4{
1051
+ background: url('../img/skin4.png') no-repeat center center;
1052
+ }
1053
+ .skin1-orange{
1054
+ background: url('../img/orange-selected.png') no-repeat center center;
1055
+ }
1056
+ .skin2-green{
1057
+ background: url('../img/green-selected.png') no-repeat center center;
1058
+ }
1059
+ .skin3-grey{
1060
+ background: url('../img/grey-selected.png') no-repeat center center;
1061
+ }
1062
+ .skin4-blue{
1063
+ background: url('../img/blue-selected.png') no-repeat center center;
1064
+ }
1065
+ .custom-skin{
1066
+ background-image: url('../img/custom-color.png');
1067
+ background-repeat: no-repeat;
1068
+ background-position: center center;
1069
+ }
1070
+ .custom-skin.selected{
1071
+ background-image: url('../img/custom-color-selected.png');
1072
+ }
1073
+ .template-coming{
1074
+ background: url('../img/temp-6.png') no-repeat center center;
1075
+ }
1076
+ .template1-orange{
1077
+ background: url('../img/temp-1-orange.png') no-repeat;
1078
+ }
1079
+ .template2-orange{
1080
+ background: url('../img/temp-2-orange.png') no-repeat;
1081
+ }
1082
+ .template3-orange{
1083
+ background: url('../img/temp-3-orange.png') no-repeat;
1084
+ }
1085
+ .template4-orange{
1086
+ background: url('../img/temp-4-orange.png') no-repeat;
1087
+ }
1088
+ .template5-orange{
1089
+ background: url('../img/temp-5-orange.png') no-repeat;
1090
+ }
1091
+ .template6-orange{
1092
+ background: url('../img/temp-6-orange.png') no-repeat;
1093
+ }
1094
+
1095
+ .template1-green{
1096
+ background: url('../img/temp-1-green.png') no-repeat;
1097
+ }
1098
+ .template2-green{
1099
+ background: url('../img/temp-2-green.png') no-repeat;
1100
+ }
1101
+ .template3-green{
1102
+ background: url('../img/temp-3-green.png') no-repeat;
1103
+ }
1104
+ .template4-green{
1105
+ background: url('../img/temp-4-green.png') no-repeat;
1106
+ }
1107
+ .template5-green{
1108
+ background: url('../img/temp-5-green.png') no-repeat;
1109
+ }
1110
+
1111
+ .template1-grey{
1112
+ background: url('../img/temp-1-grey.png') no-repeat;
1113
+ }
1114
+ .template2-grey{
1115
+ background: url('../img/temp-2-grey.png') no-repeat;
1116
+ }
1117
+ .template3-grey{
1118
+ background: url('../img/temp-3-grey.png') no-repeat;
1119
+ }
1120
+ .template4-grey{
1121
+ background: url('../img/temp-4-grey.png') no-repeat;
1122
+ }
1123
+ .template5-grey{
1124
+ background: url('../img/temp-5-grey.png') no-repeat;
1125
+ }
1126
+
1127
+ .template1-blue{
1128
+ background: url('../img/temp-1-blue.png') no-repeat;
1129
+ }
1130
+ .template2-blue{
1131
+ background: url('../img/temp-2-blue.png') no-repeat;
1132
+ }
1133
+ .template3-blue{
1134
+ background: url('../img/temp-3-blue.png') no-repeat;
1135
+ }
1136
+ .template4-blue{
1137
+ background: url('../img/temp-4-blue.png') no-repeat;
1138
+ }
1139
+ .template5-blue{
1140
+ background: url('../img/temp-5-blue.png') no-repeat;
1141
+ }
1142
+ .custom-template1-true{
1143
+ background-image: url('../img/custom-temp-1.png');
1144
+ background-repeat: no-repeat;
1145
+ }
1146
+ .custom-template2-true{
1147
+ background-image: url('../img/custom-temp-2.png');
1148
+ background-repeat: no-repeat;
1149
+ }
1150
+ .custom-template3-true{
1151
+ background-image: url('../img/custom-temp-3.png');
1152
+ background-repeat: no-repeat;
1153
+ }
1154
+ .custom-template4-true{
1155
+ background-image: url('../img/custom-temp-4.png');
1156
+ background-repeat: no-repeat;
1157
+ }
1158
+
1159
+
1160
+ .preview_template{
1161
+ display: none;
1162
+ cursor: default;
1163
+ }
1164
+ .preview_template div{
1165
+ cursor: pointer;
1166
+ }
1167
+ .template1-1-selected ,
1168
+ .template2-2-selected ,
1169
+ .template3-3-selected ,
1170
+ .template4-4-selected {
1171
+ display: block !important;
1172
+ }
1173
+ .tick-mark{
1174
+ background: url("../img/tick.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
1175
+ background-position: 47%;
1176
+ background-color: #FFF;
1177
+ border-radius: 100%;
1178
+ }
1179
+ .tick-mark:hover,
1180
+ .template1-1-selected .tick-mark,
1181
+ .template2-2-selected .tick-mark,
1182
+ .template3-3-selected .tick-mark ,
1183
+ .template4-4-selected .tick-mark{
1184
+ background: url("../img/tick-orange.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
1185
+ background-position: 47%;
1186
+ background-color: #FFF;
1187
+ border-radius: 100%;
1188
+ }
1189
+ .pad-left-12{
1190
+ padding-left: 12px;
1191
+ }
1192
+ .magento-heading{
1193
+ color:#4e5356;
1194
+ font-size: 27.41px;
1195
+ }
1196
+ .width-50p{
1197
+ width: 50%;
1198
+ }
1199
+ .height-70p {
1200
+ height: 70%;
1201
+ }
1202
+ .width-40p{
1203
+ width: 40%;
1204
+ }
1205
+ .template-preview-modal .modal-dialog{
1206
+ position: relative;
1207
+ margin: 0 auto;
1208
+ right: inherit !important;
1209
+ left: initial !important;
1210
+ width: 65%;
1211
+ height: 100%;
1212
+ }
1213
+ .contact-us-modal .modal-dialog{
1214
+ width: 55%;
1215
+ }
1216
+ .template-preview-modal .image-div {
1217
+ height: 106%;
1218
+ margin: 0 auto;
1219
+ background-position: center center;
1220
+ background-repeat: no-repeat;
1221
+ /*background-size: 100% 100%;*/
1222
+ }
1223
+
1224
+
1225
+ .template-preview-modal-1orange{
1226
+ background: url("../img/temp-1-preview-orange.png") no-repeat;
1227
+ }
1228
+ .template-preview-modal-2orange{
1229
+ background: url("../img/temp-2-preview-orange.png") no-repeat;
1230
+ }
1231
+ .template-preview-modal-3orange{
1232
+ background: url("../img/temp-3-preview-orange.png") no-repeat;
1233
+ }
1234
+ .template-preview-modal-4orange{
1235
+ background: url("../img/temp-4-preview-orange.png") no-repeat;
1236
+ }
1237
+
1238
+ .template-preview-modal-1green{
1239
+ background: url("../img/temp-1-preview-green.png") no-repeat;
1240
+ }
1241
+ .template-preview-modal-2green{
1242
+ background: url("../img/temp-2-preview-green.png") no-repeat;
1243
+ }
1244
+ .template-preview-modal-3green{
1245
+ background: url("../img/temp-3-preview-green.png") no-repeat;
1246
+ }
1247
+ .template-preview-modal-4green{
1248
+ background: url("../img/temp-4-preview-green.png") no-repeat;
1249
+ }
1250
+
1251
+ .template-preview-modal-1grey{
1252
+ background: url("../img/temp-1-preview-grey.png") no-repeat;
1253
+ }
1254
+ .template-preview-modal-2grey{
1255
+ background: url("../img/temp-2-preview-grey.png") no-repeat;
1256
+ }
1257
+ .template-preview-modal-3grey{
1258
+ background: url("../img/temp-3-preview-grey.png") no-repeat;
1259
+ }
1260
+ .template-preview-modal-4grey{
1261
+ background: url("../img/temp-4-preview-grey.png") no-repeat;
1262
+ }
1263
+
1264
+ .template-preview-modal-1blue{
1265
+ background: url("../img/temp-1-preview-blue.png") no-repeat;
1266
+ }
1267
+ .template-preview-modal-2blue{
1268
+ background: url("../img/temp-2-preview-blue.png") no-repeat;
1269
+ }
1270
+ .template-preview-modal-3blue{
1271
+ background: url("../img/temp-3-preview-blue.png") no-repeat;
1272
+ }
1273
+ .template-preview-modal-4blue{
1274
+ background: url("../img/temp-4-preview-blue.png") no-repeat;
1275
+ }
1276
+ .add-filter,
1277
+ .add-filter .chosen-container-single .chosen-single,
1278
+ .add-filter input
1279
+ {
1280
+ color: #929494;
1281
+ /*font-size: 16.45px;*/
1282
+ }
1283
+
1284
+ .filter-select-box{
1285
+ /*padding-left: 12px;*/
1286
+ padding-top: 12px;
1287
+ margin-bottom: 10px;
1288
+ }
1289
+ .filter-select-box .chosen-container{
1290
+ width: 90% !important;
1291
+ height: 40px !important;
1292
+ border: 1px solid #dee2e4;
1293
+ border-radius: 2em/2em;
1294
+ margin: 0 auto;
1295
+ text-align: left;
1296
+ }
1297
+ .filter-input-box{
1298
+ width: 100%;
1299
+ height: 63px;
1300
+ background-color: #dae1e1;
1301
+ text-align: center;
1302
+ text-align: center;
1303
+ padding-top: 4%;
1304
+ }
1305
+ .filter-input-box input{
1306
+ width: 90%;
1307
+ height: 40px;
1308
+ border-radius: 3px;
1309
+ border: 1px solid #FFF;
1310
+ padding-left: 3px;
1311
+ }
1312
+ .filter-input-box input:focus{width:90%;}
1313
+ .filter-input-box-number input:focus{width:44%; border:1px solid #05b4ae;}
1314
+ .filter-input-box-number input{
1315
+ width: 44%;
1316
+ height: 40px;
1317
+ border-radius: 3px;
1318
+ border: 1px solid #FFF;
1319
+ padding-left: 3px;
1320
+ }
1321
+ .filter-input-box-number input:last-child{
1322
+ margin-left: 2%;
1323
+ content: 'test'
1324
+ }
1325
+ .breadcrumb-arrow{
1326
+ padding-left: 20px;
1327
+ padding-right: 20px;
1328
+ background:url('../img/breadcrumb_arrow.png') no-repeat center;
1329
+ }
1330
+ .brd-btm-0{
1331
+ border-bottom: 0 !important;
1332
+ }
1333
+ .pad-left-3p{
1334
+ padding-left: 3%;
1335
+ }
1336
+ .contact-us-footer{
1337
+ background-color: #05b4ae;
1338
+ width: 15.8%;
1339
+ height: 45px;
1340
+ left: 6px;
1341
+ color: #ffffff;
1342
+ font-size: 16px;
1343
+ bottom: 45px !important;
1344
+ padding-top: 0.7%;
1345
+ padding-right: 1%;
1346
+ padding-left: 1.5%;
1347
+ text-align: left;
1348
+ border-radius: 3px;
1349
+ max-width: 250px;
1350
+ }
1351
+ .contact-us-footer:hover{
1352
+ bottom: 45px !important;
1353
+ cursor: pointer;
1354
+ }
1355
+ .mail-box{
1356
+ margin-right: 10px;
1357
+ width: 25px;
1358
+ height: 20px;
1359
+ background: url("../img/mail-box.png") no-repeat center;
1360
+ }
1361
+ .pad-top-4p{
1362
+ padding-top: 4%;
1363
+ }
1364
+ .back-pos-0-0{
1365
+ background-position: 0px 0px;
1366
+ }
1367
+ .pad-left-50{
1368
+ padding-left: 50px !important;
1369
+ }
1370
+ .pad-right-50{
1371
+ padding-right: 50px;
1372
+ }
1373
+ .mar-left-50{
1374
+ margin-left: 50px;
1375
+ }
1376
+ .mar-right-50{
1377
+ margin-right: 50px;
1378
+ }
1379
+ .pad-right-15{
1380
+ padding-right: 15px;
1381
+ }
1382
+ .optional-text{
1383
+ color: #a6a6a6;
1384
+ }
1385
+ .pad-top-7p{
1386
+ padding-top: 7%;
1387
+ }
1388
+ .pad-left-right-0{
1389
+ padding-left: 0;
1390
+ padding-right: 0;
1391
+ }
1392
+ .rules-block > div.after-rule:nth-child(n+6) {
1393
+ display: none;
1394
+ }
1395
+ .rules-block div.add-filter:last-child{
1396
+ border: 2px dotted #dee2e4;
1397
+ }
1398
+ .rules-block{
1399
+ margin-left:0;
1400
+ }
1401
+ div.after-rule + .rules-block div.add-filter:last-child {
1402
+ display: none;
1403
+ }
1404
+ .clear-both{
1405
+ clear: both;
1406
+ }
1407
+ .width-270{
1408
+ width: 270px;
1409
+ }
1410
+ .border-grey{
1411
+ border: 1px solid #dee2e4;
1412
+ }
1413
+ .border-0{
1414
+ border: 0;
1415
+ }
1416
+ .unbxd-input-error{
1417
+ border: 1px solid #FE6A56 !important;
1418
+ }
1419
+ .unbxd-input-error-parent > .chosen-container{
1420
+ border: 1px solid #FE6A56 !important;
1421
+ }
1422
+ .float-none{
1423
+ float: none !important;
1424
+ }
1425
+ .width-100px{
1426
+ width: 100px;
1427
+ }
1428
+ .filters-saved{
1429
+ padding-top: 3%;
1430
+ width: 100px;
1431
+ height: 40px;
1432
+ padding-left: 10%;
1433
+ background: url('../img/saved.png') no-repeat;
1434
+ background-position: 15px 8px;
1435
+ text-align: center;
1436
+ }
1437
+ .filter_toggle{
1438
+ display: none;
1439
+ }
1440
+
1441
+ .filters-saved-div{
1442
+ background: white;
1443
+ text-align: center;
1444
+ height: 40px;
1445
+ padding-left: 10%;
1446
+ width:28.33%;
1447
+ }
1448
+ .filters-saved-div > div{
1449
+ height: 40px;
1450
+ width: 15%;
1451
+ float: left;
1452
+ line-height: 40px;
1453
+ }
1454
+ .filters-saved-div div:last-child{
1455
+ padding-left: 2%;
1456
+ color: #5c656a !important
1457
+ }
1458
+ .save-icon{
1459
+ background: url('../img/save.png') ;
1460
+ background-position: center ;
1461
+ background-repeat: no-repeat ;
1462
+ }
1463
+ .success-icon-big{
1464
+ background: url('../img/success-icon-big.png') ;
1465
+ background-position: center ;
1466
+ background-repeat: no-repeat ;
1467
+ }
1468
+ .success-icon{
1469
+ background: url('../img/saved.png');
1470
+ background-position: center ;
1471
+ background-repeat: no-repeat ;
1472
+ }
1473
+ .mar-top-30{
1474
+ margin-top: 30px;
1475
+ }
1476
+ .box-50{
1477
+ width: 50px;
1478
+ height: 50px;
1479
+ }
1480
+ .sync-success{
1481
+ color: #20af7f;
1482
+ font-size: 14px;
1483
+ font-weight: 400;
1484
+ }
1485
+ .success-second-text{
1486
+ font-size: 10.96px;
1487
+ }
1488
+ .emailid-collection{
1489
+ float: left;
1490
+ max-width: 92%;
1491
+ }
1492
+ .emailid-collection div{
1493
+ background-color: #f5f5f5;
1494
+ border: 1px solid #d9d9d9;
1495
+ cursor: default;
1496
+ display: block;
1497
+ height: 22px;
1498
+ border-radius: 3px;
1499
+ color: #222;
1500
+ max-width: 325px;
1501
+ max-height: 25px;
1502
+ display: inline-block;
1503
+ padding-left: 5px;
1504
+ margin-right: 5px;
1505
+ margin-bottom: 5px;
1506
+ }
1507
+ .remove-id{
1508
+ float: right;
1509
+ background: url('../img/mail-id-sprite.png');
1510
+ width: 20px;
1511
+ height: 20px;
1512
+ background-position: 0px -22px;
1513
+ }
1514
+ .remove-id:hover{
1515
+ cursor: pointer;
1516
+ background-position: 0px 0px;
1517
+ }
1518
+ .modal-dialog {
1519
+ overflow: visible;
1520
+ }
1521
+ .mar-top-0{
1522
+ margin-top: 0 !important;
1523
+ }
1524
+ .font-15{
1525
+ font-size: 15px;
1526
+ }
1527
+ .font-16{
1528
+ font-size: 16px;
1529
+ }
1530
+ .font-17{
1531
+ font-size: 17px;
1532
+ }
1533
+ .second-level-head{
1534
+ color: #4e5356;
1535
+ }
1536
+ .unbxd-md-offset-2{
1537
+ margin-left: 2.22%;
1538
+ }
1539
+ .unbxd-code{
1540
+ height: 37px;
1541
+ text-align: left;
1542
+ padding-top: 10px;
1543
+ color: #05b4ae;
1544
+ margin-top: 10px
1545
+ }
1546
+ .magento-redbar {
1547
+ background-color: rgba(254, 106, 86, 0.9);
1548
+ opacity: 0.9;
1549
+ padding:35px 0px;
1550
+ text-align: center;
1551
+ font-size:15px;
1552
+ font-weight:400;
1553
+ color: #fff;
1554
+ position: absolute;
1555
+ top:0;
1556
+ left:0;
1557
+ z-index:2;
1558
+ top: 38px;
1559
+ height: 1%;
1560
+ margin-left: 54px;
1561
+ width: 89.5%;
1562
+ background-color: rgba(254, 106, 86, 0.9);
1563
+ }
1564
+ .unbxd-disabled-cover {
1565
+ height: 110%;
1566
+ position: absolute;
1567
+ cursor: default;
1568
+ margin-left: 54px;
1569
+ width: 89.5%;
1570
+ background-color: rgba(0, 0, 0, 0.2);
1571
+ left: 0;
1572
+ }
1573
+ .minus-icon{
1574
+ background: url('../img/minus.png');
1575
+ background-repeat: no-repeat;
1576
+ width: 25px;
1577
+ height: 36px;
1578
+ background-position: center;
1579
+ }
1580
+ .plus-icon{
1581
+ background: url('../img/plus.png');
1582
+ background-repeat: no-repeat;
1583
+ width: 25px;
1584
+ height: 36px;
1585
+ background-position: center;
1586
+ }
1587
+ .background-inactive{
1588
+ background-color: #f9f9f9;
1589
+ }
1590
+ .background-center{
1591
+ background-position: center;
1592
+ }
1593
+ .background-disabled{
1594
+ pointer-events: none;
1595
+ background-color: #f3f6f6;
1596
+ }
1597
+ .info-note{
1598
+ font-size: 12px;
1599
+ }
1600
+ .unhoverd-btn{
1601
+ opacity: 0.6;
1602
+ }
1603
+ .unhoverd-btn:hover{
1604
+ opacity: 1;
1605
+ }
1606
+ .rec-code-eg{
1607
+ padding: 30px 20px;
1608
+ padding-top: 4px;
1609
+ width: 44%;
1610
+ margin-top: 10px;
1611
+ border: 0px;
1612
+ margin-bottom: 10px;
1613
+ }
1614
+ .chosen-container-active > a{
1615
+ border: 0px !important;
1616
+ }
1617
+ .middle-nav-dropdown .unbxd-border:hover{
1618
+ border: 1px solid #ABB8BB;
1619
+ }
1620
+ .middle-nav-dropdown .chosen-results{
1621
+ border: 1px solid #ABB8BB;
1622
+ border-top: 0;
1623
+ }
1624
+ .magent0-left-nav{
1625
+ max-width: 250px;
1626
+ overflow: hidden !important;
1627
+ }
1628
+ .width-83{
1629
+ width: 83%;
1630
+ }
1631
+ .unbxd-head-div{
1632
+ height: 60px;
1633
+ padding-top: 12px;
1634
+ }
1635
+ .brd-top-btm-0{
1636
+ border-top: 0;
1637
+ border-bottom: 0;
1638
+ }
1639
+ .height-100px{
1640
+ height: 100px;
1641
+ }
1642
+ .overflow-auto{
1643
+ overflow: auto;
1644
+ }
1645
+ .unbxd-outer-block {
1646
+
1647
+ }
1648
+ .unbxd-outer-block > div:not(.unbxd-outer-block) {
1649
+ width: 100%;
1650
+ padding: 15px 50px 10px 50px;
1651
+ background-color: #fff;
1652
+ border-left: 1px solid #cddbde;
1653
+ border-right: 1px solid #cddbde;
1654
+ }
1655
+ .inner-container-magento .unbxd-outer-block:first-child{
1656
+ /*border: 1px solid #cddbde;*/
1657
+ border-top: 0;
1658
+ }
1659
+ .bordered-div{
1660
+ border-top: 1px solid #cddbde;
1661
+ border-bottom: 1px solid #cddbde;
1662
+ }
1663
+ .unbxd-info-text{
1664
+ padding-top: 20px;
1665
+ padding-bottom: 20px;
1666
+ height: 58px;
1667
+ }
1668
+ .cudtom-attr-rows .chosen-container{
1669
+ vertical-align: initial;
1670
+ }
1671
+ .cudtom-attr-rows .chosen-drop{
1672
+ margin-left: 0px !important;
1673
+ width: 101%;
1674
+ margin-top: 0px;
1675
+ }
1676
+ .unbxd-cat-table .chosen-drop{
1677
+ width: 101%;
1678
+ margin-top: 0px;
1679
+ }
1680
+ .width-88{
1681
+ width: 88%;
1682
+ }
1683
+ .unbxd-filter-cat{
1684
+ background-color: #F3F6F6 !important;
1685
+ }
1686
+ .unbxd-success-msg{
1687
+ color: #20af7f;
1688
+ font-size: 14px;
1689
+ font-weight: 400;
1690
+ }
1691
+ .unbxd-err-msg{
1692
+ color: #FE6A56;
1693
+ font-size: 14px;
1694
+ font-weight: 400;
1695
+ }
1696
+ .unbxd-table-head{
1697
+ font-weight: 300;
1698
+ font-size: 16px;
1699
+ }
1700
+ /*style which shd be avoided*/
1701
+ .mar-btm-n10 {
1702
+ margin-bottom: -10px;
1703
+ }
1704
+ .unbxd-container .top-rad{
1705
+ border-top-left-radius: 3px;
1706
+ border-top-right-radius: 3px;
1707
+ }
1708
+ .unbxd-container .btm-rad{
1709
+ border-bottom-left-radius: 3px;
1710
+ border-bottom-right-radius: 3px;
1711
+ }
1712
+ .brd-btm{
1713
+ border-bottom: 1px solid #cddbde;
1714
+ }
1715
+ #profiler_section{
1716
+ display: none !important;
1717
+ }
1718
+ .button-cancel-magento
1719
+ {
1720
+ background: #fff url('../img/cancel.png') no-repeat;
1721
+ background-position:10px;
1722
+ }
1723
+ .unbxd-btn-outer{
1724
+ border: 1px solid #cddbde;
1725
+ border-radius: 3px;
1726
+ }
1727
+ .unbxd-btn-outer > div {
1728
+
1729
+ }
1730
+ .width-90p{
1731
+ width: 90%;
1732
+ }
1733
+ .mar-left-5{
1734
+ margin-left: 5px;
1735
+ }
1736
+ .mar-left-15{
1737
+ margin-left: 15px;
1738
+ }
1739
+ .unbxd-left, .unbxd-right {
1740
+ /*padding-bottom:8000px;
1741
+ margin-bottom:-8000px;*/
1742
+ }
1743
+ .unbxd-scrollable-div{
1744
+ overflow-y: auto;
1745
+ height: 105vh;
1746
+ padding-bottom: 5% !important;
1747
+ }
1748
+ div.unbxd-rows div.tr-row:last-child > div{
1749
+ border-bottom: 0 !important;
1750
+ }
1751
+ .brd-lft{
1752
+ border-left: 1px solid #cddbde;
1753
+ }
1754
+ .brd-rgt{
1755
+ border-right: 1px solid #cddbde;
1756
+ }
1757
+ .pad-0{
1758
+ padding:0;
1759
+ }
1760
+ .mar-mtop-30{
1761
+ margin-top: -30px;
1762
+ }
1763
+ .mar-mtop-20{
1764
+ margin-top: -20px;
1765
+ }
1766
+ .spinbox{
1767
+ margin-right: 22px;
1768
+ }
1769
+ .table-widget{
1770
+ border: 1px solid #cddbde;
1771
+ border-radius: 3px;
1772
+ }
1773
+ .table-widget:hover{
1774
+ background: #cddbde;
1775
+ }
1776
+ .table-widget-data{
1777
+ display:none;
1778
+ }
skin/adminhtml/default/default/unbxd/recscore/img/Custom-platform.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/DONE.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/HEXAGON-Only.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/Magento-small.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/Magento.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/Powered_by_unbxd copy.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/X-popup-hover.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/X-popup.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/X-pricing.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/active.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add-actv.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add-icon.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add-inactv.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add-raw-hover.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add-raw.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add-rule.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/add.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/api_int_info.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-2.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-calendar-down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-calendar-down1.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-disabled.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-enabled.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-white.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-white1.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-down-white2.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img/arrow.png → recscore/img/arrow-inactive.png} RENAMED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-left-inactive.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-left-white.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-left.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-left.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-mail-developer).png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-gray.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-inactive.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-right-white.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-right.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-right.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-disabled.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-enabled.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-red.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-white.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up-white1.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-up.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow-white.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow_grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/arrow_white.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/authenticated.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/back.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img → recscore/img}/bg.jpg RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/img/big-arrow-gray.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/bigcommerce.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/black-right-small.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/black-right-thick.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/blue-selected.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/breadcrumb_arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/btn-arrow-top.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/btn-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/button-arrow-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/button-arrow-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/button-arrow-red.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/cancel.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/card-image.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/card-image1.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/card-image2.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/card-image3.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/checkmark.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img → recscore/img}/chosen-sprite.png RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/img/close-analytics.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/close-round.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/close.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/color-pic-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/color-pic.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/congrats-magento.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/congrats.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/copy-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/copy-white.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/cros.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/cross-2.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/custom-color-selected.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/custom-color.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-1.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-2.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-3.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/custom-temp-4.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/cvv-number.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/delete-raw-hover.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/delete-raw.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/delete-red.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/delete.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/detect.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/dot-border.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/down-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/down-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/down-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/drop-down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/dropdown-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/edit-magento.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/edit.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/eye-hover.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/eye.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/favicon.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/fill.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/green-selected.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/grey-selected.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/group-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/help.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/icon-analytics.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/icon-info.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/icon-widget.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/info-icon-big.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/info-small.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/install.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/integration-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/introduction-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/left-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/left-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/level-arrow-active.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/level-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/link-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/list_bullet.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader-16x16.gif RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader-24x24.gif RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/img/loader-32x32.gif ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader.gif RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{img → recscore/img}/loader_black.gif RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/img/lock-image.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/logo-unbxd.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/logo.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/mail-box.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/mail-id-sprite.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/mail-new.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/mail.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/minus.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img/dropdown-arrow.png → recscore/img/minus.png} RENAMED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/nav-highlight-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/not-detected.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/oops.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/or.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/orange-selected.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/other-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/overview-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/{img/down-black.png → recscore/img/plus.png} RENAMED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/preview.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/question-mark2.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/red-cross.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/red-loading.gif ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/remove.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/right-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/right-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/rules.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/save.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/saved.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/search.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/settings.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/shopify.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/site-dropdownarrow-down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/site-dropdownarrow-up.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/skin1-trans.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/skin1.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/skin2.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/skin3.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/skin4.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/slider-bg.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/slider-button.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-blue-down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-blue-up.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-grey-down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/sort-arrow-grey-up.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/spinner_down.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/spinner_up.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/spree.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/start-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/step-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/success-icon-big.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/success.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1-preview-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-1.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2-preview-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-2.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3-preview-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-3.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-grey.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-4-preview-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-blue.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5-preview-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-5.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/temp-6.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/templates.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tick-analytics.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tick-green.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tick-orange.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tick-pricing.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tick.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tooltip-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tooltip-left-arrow.jpg ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/tooltip.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/up-arrow.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/up-black.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/up-gray.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/user.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/view-hover.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/view.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/warning.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/x-widget.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/recscore/img/x.png ADDED
Binary file
skin/adminhtml/default/default/unbxd/{js → recscore/js}/app.js RENAMED
@@ -1,3 +1,4 @@
 
1
  (function($) {
2
 
3
  var baseUrl = _unbxdSkinurl +'unbxd/templates/';
1
+ // code, which is in a single file
2
  (function($) {
3
 
4
  var baseUrl = _unbxdSkinurl +'unbxd/templates/';
skin/adminhtml/default/default/unbxd/recscore/js/app/analytics.js ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([
2
+ "jquery",
3
+ "app/config",
4
+ "app/utils",
5
+ 'rv!templates/analytics'],
6
+ function( $,
7
+ Config,
8
+ Utils,
9
+ Template ){
10
+
11
+ var Analytics = {
12
+
13
+
14
+
15
+ loadAnalyticsTab : function(){
16
+ var self = this;
17
+ this.site = Config.site;
18
+
19
+ this.ractiveAnalytics = new Ractive({
20
+ el: 'innerContainr',
21
+ template: Template,
22
+ data:{
23
+ searchHits : _unbxdObject.ractiveAnalytics.SEARCHHITS || false,
24
+ productClick : _unbxdObject.ractiveAnalytics.CLICKRANK || false,
25
+ addToCartClick : _unbxdObject.ractiveAnalytics.ADDTOCART || false,
26
+ productBuysClick : _unbxdObject.ractiveAnalytics.ORDER || false,
27
+ _unbxdObject : _unbxdObject,
28
+ config:Config
29
+ }
30
+ });
31
+
32
+
33
+ if( _unbxdObject.step2 )
34
+ this.poll();
35
+
36
+
37
+ this.ractiveAnalytics.on({
38
+ showWidgets:function( event ){
39
+ activateLink( "four" );
40
+ loadWidgetsTab();
41
+ clearInterval( Config.pollingId );
42
+ }
43
+ });
44
+
45
+
46
+ },
47
+
48
+ poll:function(){
49
+
50
+ var self = this;
51
+
52
+ Config.pollingId = window.setInterval(function(){
53
+
54
+ Utils.getAnalytics()
55
+ .then(
56
+ function(data){
57
+ if(data.success){
58
+ var obj = data.IntegrationDetails[0];
59
+ self.ractiveAnalytics.set({
60
+ productClick : obj.CLICKRANK,
61
+ addToCartClick : obj.ADDTOCART,
62
+ productBuysClick : obj.ORDER,
63
+ searchHits : obj.SEARCHHITS
64
+ })
65
+ _unbxdObject.ractiveAnalytics = data;
66
+
67
+ if(data.CLICKRANK && data.ADDTOCART && data.ORDER)
68
+ clearInterval( pollingId.pollingId );
69
+ }
70
+ },
71
+ function(error){
72
+ clearInterval( Config.pollingId );
73
+ });
74
+ }, 3000);
75
+
76
+ }
77
+
78
+ };
79
+
80
+ return Analytics;
81
+
82
+ });
skin/adminhtml/default/default/unbxd/recscore/js/app/autosuggest.js ADDED
@@ -0,0 +1,206 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([
2
+ "jquery",
3
+ "colpick",
4
+ 'app/config',
5
+ 'rv!templates/auto-suggest',
6
+ 'app/utils',
7
+ 'rv!partials/preview-modal',
8
+ 'rv!partials/switch-on',
9
+ 'rv!partials/switch-off',
10
+ 'bootstrap-modal'],
11
+ function( $,
12
+ ColorPicker,
13
+ Config ,
14
+ Template,
15
+ Utils,
16
+ ModalTemplate,
17
+ SwitchonTemplate,
18
+ SwitchoffTemplate){
19
+
20
+ var AutoSuggest = {
21
+
22
+ loadAutosuggest : function(){
23
+
24
+ if( typeof this.autosuggestData === "undefined" ){
25
+ var self = this;
26
+ Utils.getConfigData( 'autosuggest')
27
+ .then(
28
+ function( data ){
29
+ if(data.success === true){
30
+ self.autosuggestData = self.setDefaults( data.config );
31
+ self.showAutosuggest();
32
+ }
33
+
34
+ },
35
+ function( error ){
36
+
37
+ })
38
+ }else{
39
+ this.showAutosuggest();
40
+ }
41
+ },
42
+
43
+ setDefaults:function( data ){
44
+ for(key in data){
45
+ if(data[key] === "" || data[key] === "false"){
46
+ data[key] = false;
47
+ }else if( key === "autosuggest_skin" ){
48
+ if( !Config.colorMap[ data[key] ] ){
49
+ data['skinBackground'] = data[key];
50
+ data['customColor'] = true;
51
+ }else{
52
+ data[key] = Config.colorMap[ data[key] ];
53
+ data['customColor'] = false;
54
+ }
55
+
56
+ }else if( key === "autosuggest_template" ){
57
+ data[key] = Config.templateMap[ data[key] ];
58
+ }
59
+ }
60
+ var obj = $.extend( Config.autoSuggestDefaults, data);
61
+ obj['config'] = Config;
62
+ return obj;
63
+ },
64
+
65
+ showAutosuggest:function( ){
66
+
67
+ this.ractiveAutosuggest = new Ractive({
68
+ el: 'innerContainr',
69
+ template: Template,
70
+ partials: {
71
+ modal: ModalTemplate,
72
+ switchon:SwitchonTemplate,
73
+ switchoff:SwitchoffTemplate },
74
+ data: this.autosuggestData,
75
+ computed: {
76
+ hideSuggestions: function () { return this.get( 'autosuggest_template' ) === 4 }
77
+ }
78
+ });
79
+
80
+
81
+ this.ractiveAutosuggest.on({
82
+
83
+ autosuggestToggle:function(){
84
+ this.set('autosuggest_status', !this.get("autosuggest_status"));
85
+ },
86
+
87
+ selectSkin:function( event, color ){
88
+ this.set("autosuggest_skin", color);
89
+ this.set('customColor', false);
90
+ },
91
+
92
+ selectTemplate:function( event, template ){
93
+ this.set("autosuggest_template", template);
94
+ },
95
+
96
+ noOfSuggestionsUp:function(){
97
+ var noOfSuggestions = parseInt(this.get("autosuggest_max_suggestion")) + 1;
98
+ noOfSuggestions = noOfSuggestions > Config.maxSuggestions ? Config.maxSuggestions : noOfSuggestions;
99
+ this.set("autosuggest_max_suggestion", noOfSuggestions );
100
+ },
101
+
102
+ noOfSuggestionsDown:function(){
103
+ var noOfSuggestions = parseInt(this.get("autosuggest_max_suggestion")) - 1;
104
+ noOfSuggestions = noOfSuggestions > 0 ? noOfSuggestions : 0;
105
+ this.set("autosuggest_max_suggestion", noOfSuggestions );
106
+ },
107
+
108
+ topqueriesToggle:function(){
109
+ this.set('autosuggest_top_queries_status', !this.get("autosuggest_top_queries_status"));
110
+ },
111
+
112
+ keywordsToggle:function(){
113
+ this.set('autosuggest_keyword_status', !this.get("autosuggest_keyword_status"));
114
+ },
115
+
116
+ searchscopeToggle:function(){
117
+ this.set('autosuggest_search_scope_status', !this.get("autosuggest_search_scope_status"));
118
+ },
119
+
120
+ noOfPopularProductsUp:function(){
121
+ var noOfPopularProducts = parseInt(this.get("autosuggest_max_products")) + 1;
122
+ noOfPopularProducts = noOfPopularProducts > Config.maxPopularProducts ? Config.maxPopularProducts : noOfPopularProducts;
123
+ this.set("autosuggest_max_products", noOfPopularProducts );
124
+ },
125
+
126
+ noOfPopularProductsDown:function(){
127
+ var noOfPopularProducts = parseInt(this.get("autosuggest_max_products")) - 1;
128
+ noOfPopularProducts = noOfPopularProducts > 0 ? noOfPopularProducts : 0;
129
+ this.set("autosuggest_max_products", noOfPopularProducts );
130
+ }
131
+
132
+ });
133
+
134
+ this.ractiveAutosuggest.observe('*', function(newValue, oldValue, property) {
135
+ if(typeof oldValue === "undefined" || property === "templatePreview" || property==="hideSuggestions")
136
+ return;
137
+ console.log("newValue "+ newValue);
138
+ if( property === "autosuggest_skin")
139
+ newValue = Config.colorMap[newValue]
140
+ else if( property === "autosuggest_template" )
141
+ newValue = Config.templateMap[newValue]
142
+ else if( property === 'skinBackground')
143
+ property = 'autosuggest_skin';
144
+
145
+
146
+
147
+ var data = {};
148
+ data[property] = newValue;
149
+ Utils.saveConfigs( data )
150
+ .then(function(){
151
+
152
+ },function(){
153
+
154
+ });
155
+
156
+ });
157
+
158
+ this.ractiveAutosuggest.observe('customColor', function(newValue, oldValue, property) {
159
+ if(typeof oldValue === "undefined" )
160
+ return;
161
+ if( this.get('customColor') === false )
162
+ this.set('skinBackground', '#FFF');
163
+ });
164
+
165
+
166
+ $('.magento-templates').hover(function(){
167
+ $(this).find('.preview_template').show();
168
+ }, function(){
169
+ $(this).find('.preview_template').hide();
170
+ });
171
+
172
+ this.eventBindings();
173
+ },
174
+
175
+ eventBindings:function(){
176
+ var self = this;
177
+ $('#previewModal').on('show.bs.modal', function (event) {
178
+
179
+ var button = $(event.relatedTarget)
180
+ var template = button.data('template');
181
+ var skin = $(event.relatedTarget).attr("data-skin")
182
+ self.ractiveAutosuggest.set('templatePreview', template + skin );
183
+
184
+
185
+ });
186
+
187
+ $("#colorPicker").colpick({
188
+ layout:'hex',
189
+ onSubmit:function( hsb,hex,rgb,el,bySetColor ){
190
+ $("#colorPicker").colpickHide();
191
+ self.ractiveAutosuggest.set('skinBackground', '#'+hex);
192
+ self.ractiveAutosuggest.set('autosuggest_skin', '#'+hex);
193
+ self.ractiveAutosuggest.set('customColor', true);
194
+ }
195
+ }).keyup(function(){
196
+ $(this).colpickSetColor(this.value);
197
+ });
198
+
199
+ $(".magento-tooltip").popover({ trigger:'hover' });
200
+ }
201
+
202
+ };
203
+
204
+ return AutoSuggest;
205
+
206
+ });
skin/adminhtml/default/default/unbxd/{js → recscore/js}/app/catalog.js RENAMED
@@ -1,18 +1,44 @@
1
- define([ "jquery", "app/utils"],
2
- function( $, Utils ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  var Catalog = {
5
 
 
 
 
 
 
6
  loadCatalogTab : function( _unbxdObject ){
7
 
8
  var mappedAttributes = _unbxdObject.originalMapping, //catalog map first table
9
- magentoFields = [ {value:'', disabled:false}],
10
  customAttributes = [],
11
- dataTypes = [];
 
 
 
 
 
12
 
13
  var RactiveCatalog = Ractive.extend({
14
- template: '#tab2Template',
15
- partials: { item: $('#rowTemplate').text() },
 
 
 
16
 
17
  addItem: function ( description ) {
18
  this.push( 'customAttributes', {
@@ -41,7 +67,7 @@ function( $, Utils ){
41
  el: 'innerContainr',
42
  data : _unbxdObject.catalogData ||
43
  {
44
- magentoFields : [{disabled:false, value:"", test:"test"}],
45
  mappedAttributes : mappedAttributes,
46
  customAttributes : customAttributes,
47
  enableEdit : false,
@@ -56,11 +82,16 @@ function( $, Utils ){
56
  dataErrorMsg:null,
57
  dataSuccessMsg:null,
58
  dataWaitMsg:null,
59
- disableButton:false
 
 
60
  },
61
 
62
  });
63
 
 
 
 
64
  $(".magento-tooltip").popover({ trigger:'hover' });
65
 
66
 
@@ -75,17 +106,17 @@ function( $, Utils ){
75
  magentoFields = this.get("magentoFields"),
76
  self = this;
77
 
78
-
79
  magentoFields.each(function(obj, i){
80
- if(obj.value === newValue){
81
  obj.disabled = 'unbxd-hide';
82
  }
83
- if( obj.value === oldValue ){
84
  obj.disabled = '';
85
  }
86
 
87
  })
88
  this.set('magentoFields', magentoFields);
 
89
  ractiveCatalog.update();
90
  _unbxdObject.catalogData = ractiveCatalog.data;
91
  Utils.updateAllSelect();
@@ -105,10 +136,10 @@ function( $, Utils ){
105
  this.set('disableSaveCustomAttr', null);
106
 
107
  magentoFields.each(function(obj, i){
108
- if(obj.value === newValue ){
109
  obj.disabled = 'unbxd-hide';
110
  }
111
- if(obj.value === oldValue)
112
  obj.disabled = '';
113
  })
114
 
@@ -130,72 +161,75 @@ function( $, Utils ){
130
  });
131
 
132
  if( !_unbxdObject.catalogData ){
133
- var $obj = $.get( _unbxdBaseurl + "unbxd/config/fields?site="+site);
 
134
  $obj.then(function( data ){
135
 
136
- var allFields = data.fields,
137
- field = null;
138
-
139
- $.each(data.fields, function(a, val){
140
- magentoFields.push({ value:val, disabled:false} );
141
- });
142
 
143
- $.each(data.mappedFields, function(a, obj){
144
- if(obj.featured_field){
145
- if(!obj.field_name)
146
- obj.field_name = "";
147
- mappedAttributes.push(obj );
148
- }else{
149
- obj.disabled = "disabled";
150
- customAttributes.push(obj)
151
- }
 
 
 
 
 
 
 
 
 
152
 
153
- magentoFields.each( function(item, j){
154
- if(obj.field_name === item.value)
155
- item.disabled = 'unbxd-hide';
156
 
157
- });
 
 
158
 
159
- field = magentoFields.find(function( item ){
160
- return item.value === obj.field_name
161
- })
 
162
 
163
- if(!field)
164
- magentoFields.push({value:obj.field_name, disabled:'unbxd-hide'});
165
-
166
- });
167
-
168
- //data = JSON.parse(data);
169
-
170
- _unbxdObject.originalMapping = $.map( mappedAttributes, function(obj){
171
- return $.extend({}, obj);
172
- })
173
- if(customAttributes.length < 1)
174
- customAttributes = [{ field_name: '', datatype: '', canRemove:true }];
175
-
176
- try{
177
- mappedAttributes.forEach(function(obj, i){
178
- obj.tooltip = unbxdDimensions.filter(
179
- function( dimension ){
180
- return dimension.value === obj.featured_field;
181
- })[0].helpText;
182
- });
183
- }catch(e){}
184
-
185
-
186
- ractiveCatalog.set({
187
- mappedAttributes: mappedAttributes,
188
- magentoFields: magentoFields,
189
- customAttributes:customAttributes,
190
- dataTypes : data.datatype
191
- });
192
 
193
- _unbxdObject.catalogData = ractiveCatalog.data;
194
- $("._tooltip").popover({ trigger:'hover' });
195
- $('select[name="unbxd-customattr"]').chosen('chosen:updated');
196
- $('select[name="unbxd-select"]').prop('disabled', true).trigger("chosen:updated");
197
- Utils.updateAllSelect();
198
- ractiveCatalog.update();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  })
200
  }
201
 
@@ -211,26 +245,35 @@ function( $, Utils ){
211
  },
212
 
213
  removeRow:function ( event ) {
214
- var obj = this.get('customAttributes')[event.index.i];
215
- if( !obj.canRemove ){
 
 
216
  result = window.confirm("Are you sure, you want to delete "+obj.field_name );
217
  if(result){
218
- $.ajax({
219
- url:_unbxdBaseurl + 'unbxd/config/fields?site='+site ,
220
- type:'PUT',
221
- data:JSON.stringify({ fields:[obj] }),
222
  });
223
  this.get('customAttributes').splice(event.index.i, 1);
224
  }
225
  }else{
226
  this.get('customAttributes').splice(event.index.i, 1);
227
  }
 
 
 
 
 
 
 
228
 
229
  },
230
 
231
  saveMapping:function(event){
232
  var mapping = this.get('mappedAttributes'),
233
- self = this, data = [];
234
 
235
  this.set( {'saveMapping':'disabled-btn',
236
  'successMsg':null,
@@ -241,7 +284,8 @@ function( $, Utils ){
241
  data.push(obj);
242
  })
243
 
244
- Utils.saveFields( data ).then(
 
245
  function( data ){
246
  if(data.success){
247
  self.set({
@@ -265,22 +309,29 @@ function( $, Utils ){
265
  saveCustomAttribute : function(){
266
  var customMapping = this.get('customAttributes'),
267
  self = this,
268
- data = [];
 
269
  customMapping.each(function(obj, i){
270
  if( obj.field_name )
271
  data.push(obj);
272
  });
273
 
274
  this.set("disableSaveCustomAttr", "disabled-btn");
275
- Utils.saveFields( data ).then(
 
 
 
276
  function( response ){
 
277
  if(response.success){
278
  self.set("customAttrSucessMsg", "Saved");
279
  data.each(function(obj){
280
  obj.canRemove = false;
281
  })
282
  }else{
283
- self.set("customAttrErrorMsg", "Some error in saving !");
 
 
284
  }
285
 
286
  self.set("disableSaveCustomAttr", null);
@@ -337,12 +388,8 @@ function( $, Utils ){
337
  });
338
  var self = this;
339
 
340
- $.ajax({
341
-
342
- url:_unbxdBaseurl + "unbxd/config/productsync?site=" +site,
343
- type:"GET",
344
- success : function(data){
345
-
346
  if(data.success){
347
  self.set({
348
  dataSuccessMsg:unbxdMessages.uploadSuccess,
@@ -357,26 +404,36 @@ function( $, Utils ){
357
  });
358
  }
359
  ractiveParent.update();
360
- },
361
- error : function(){
362
- self.set({
363
  dataErrorMsg : "Some error, please try again"
364
  });
365
- },
366
- complete:function(){
367
- self.set({
368
  disableButton:false,
369
  dataWaitMsg:""
370
  });
371
- }
372
-
373
  });
374
-
375
  }
376
 
377
  });
 
378
 
379
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
380
 
381
  };
382
 
1
+ define([ "jquery",
2
+ "app/utils",
3
+ "app/config",
4
+ "app/filter-catalogue",
5
+ "rv!templates/catalog",
6
+ "rv!partials/row",
7
+ "rv!partials/custom-attr",
8
+ "rv!partials/catalogue"],
9
+ function( $,
10
+ Utils,
11
+ Config,
12
+ Filters,
13
+ Template,
14
+ RowTemplate,
15
+ CustomAttrTemplate,
16
+ CatalogueTemplate ){
17
 
18
  var Catalog = {
19
 
20
+ loadChilds:function(){
21
+ if(this.fields)
22
+ Filters.load(this.fields);
23
+ },
24
+
25
  loadCatalogTab : function( _unbxdObject ){
26
 
27
  var mappedAttributes = _unbxdObject.originalMapping, //catalog map first table
 
28
  customAttributes = [],
29
+ dataTypes = [],
30
+ site = Config.site,
31
+ unbxdMessages = Config.unbxdMessages;
32
+
33
+ this.magentoFields = [ {field_name:'', disabled:false}];
34
+
35
 
36
  var RactiveCatalog = Ractive.extend({
37
+ template: Template,
38
+ partials: { item:RowTemplate,
39
+ catalogue:CatalogueTemplate,
40
+ customAttr:CustomAttrTemplate
41
+ },
42
 
43
  addItem: function ( description ) {
44
  this.push( 'customAttributes', {
67
  el: 'innerContainr',
68
  data : _unbxdObject.catalogData ||
69
  {
70
+ magentoFields : [{disabled:false, field_name:"", test:"test"}],
71
  mappedAttributes : mappedAttributes,
72
  customAttributes : customAttributes,
73
  enableEdit : false,
82
  dataErrorMsg:null,
83
  dataSuccessMsg:null,
84
  dataWaitMsg:null,
85
+ disableButton:false,
86
+ config:Config,
87
+ lastSyncTime:''
88
  },
89
 
90
  });
91
 
92
+ this.loadFeedStatus( ractiveCatalog );
93
+
94
+ this.loadChilds();
95
  $(".magento-tooltip").popover({ trigger:'hover' });
96
 
97
 
106
  magentoFields = this.get("magentoFields"),
107
  self = this;
108
 
 
109
  magentoFields.each(function(obj, i){
110
+ if(obj.field_name === newValue){
111
  obj.disabled = 'unbxd-hide';
112
  }
113
+ if( obj.field_name === oldValue ){
114
  obj.disabled = '';
115
  }
116
 
117
  })
118
  this.set('magentoFields', magentoFields);
119
+
120
  ractiveCatalog.update();
121
  _unbxdObject.catalogData = ractiveCatalog.data;
122
  Utils.updateAllSelect();
136
  this.set('disableSaveCustomAttr', null);
137
 
138
  magentoFields.each(function(obj, i){
139
+ if(obj.field_name === newValue ){
140
  obj.disabled = 'unbxd-hide';
141
  }
142
+ if(obj.field_name === oldValue)
143
  obj.disabled = '';
144
  })
145
 
161
  });
162
 
163
  if( !_unbxdObject.catalogData ){
164
+ var self = this;
165
+ var $obj = Utils.getFields();
166
  $obj.then(function( data ){
167
 
168
+ var allFields = data.fields,
169
+ field = null;
 
 
 
 
170
 
171
+ self.fields = data.fields;
172
+ $.each(data.fields, function(a, val){
173
+ self.magentoFields.push({ field_name:val.field_name, disabled:false} );
174
+ });
175
+
176
+ $.each(data.mappedFields, function(a, obj){
177
+ if(obj.featured_field){
178
+ if(!obj.field_name)
179
+ obj.field_name = "";
180
+ mappedAttributes.push(obj );
181
+ }else{
182
+ obj.disabled = "disabled";
183
+ customAttributes.push(obj)
184
+ }
185
+
186
+ self.magentoFields.each( function(item, j){
187
+ if(obj.field_name === item.field_name)
188
+ item.disabled = 'unbxd-hide';
189
 
190
+ });
 
 
191
 
192
+ field = self.magentoFields.find(function( item ){
193
+ return item.value === obj.field_name
194
+ })
195
 
196
+ if(!field)
197
+ self.magentoFields.push({value:obj.field_name, disabled:'unbxd-hide'});
198
+
199
+ });
200
 
201
+ //data = JSON.parse(data);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
 
203
+ _unbxdObject.originalMapping = $.map( mappedAttributes, function(obj){
204
+ return $.extend({}, obj);
205
+ })
206
+ if(customAttributes.length < 1)
207
+ customAttributes = [{ field_name: '', datatype: '', canRemove:true }];
208
+
209
+ // try{
210
+ // mappedAttributes.forEach(function(obj, i){
211
+ // obj.tooltip = Config.unbxdDimensions.filter(
212
+ // function( dimension ){
213
+ // return dimension.value === obj.featured_field;
214
+ // })[0].helpText;
215
+ // });
216
+ //}catch(e){}
217
+
218
+ data.datatype.unshift("");
219
+ ractiveCatalog.set({
220
+ mappedAttributes: mappedAttributes,
221
+ magentoFields: self.magentoFields,
222
+ customAttributes:customAttributes,
223
+ dataTypes : data.datatype
224
+ });
225
+
226
+ _unbxdObject.catalogData = ractiveCatalog.data;
227
+ $("._tooltip").popover({ trigger:'hover' });
228
+ $('select[name="unbxd-customattr"]').chosen('chosen:updated');
229
+ $('select[name="unbxd-select"]').prop('disabled', true).trigger("chosen:updated");
230
+ Utils.updateAllSelect();
231
+ ractiveCatalog.update();
232
+ self.loadChilds();
233
  })
234
  }
235
 
245
  },
246
 
247
  removeRow:function ( event ) {
248
+ var obj = this.get('customAttributes')[event.index.i],
249
+ len = this.get('customAttributes').length;
250
+
251
+ if( !obj.canRemove ){
252
  result = window.confirm("Are you sure, you want to delete "+obj.field_name );
253
  if(result){
254
+ var data = { fields:[obj] };
255
+ Utils.saveFields( data, 'PUT' )
256
+ .then(function(){
257
+ },function(){
258
  });
259
  this.get('customAttributes').splice(event.index.i, 1);
260
  }
261
  }else{
262
  this.get('customAttributes').splice(event.index.i, 1);
263
  }
264
+
265
+ if(len === 1){
266
+ $(".add-attr").toggle();
267
+ $(".custom-attributes").toggle();
268
+ this.addItem();
269
+ }
270
+
271
 
272
  },
273
 
274
  saveMapping:function(event){
275
  var mapping = this.get('mappedAttributes'),
276
+ self = this, data = [], obj = {};
277
 
278
  this.set( {'saveMapping':'disabled-btn',
279
  'successMsg':null,
284
  data.push(obj);
285
  })
286
 
287
+ obj["fields"] = data;
288
+ Utils.saveFields( obj ).then(
289
  function( data ){
290
  if(data.success){
291
  self.set({
309
  saveCustomAttribute : function(){
310
  var customMapping = this.get('customAttributes'),
311
  self = this,
312
+ data = [],
313
+ obj = {};
314
  customMapping.each(function(obj, i){
315
  if( obj.field_name )
316
  data.push(obj);
317
  });
318
 
319
  this.set("disableSaveCustomAttr", "disabled-btn");
320
+ this.set('customAttrSucessMsg', null);
321
+ this.set('customAttrErrorMsg', null);
322
+ obj["fields"] = data;
323
+ Utils.saveFields( obj ).then(
324
  function( response ){
325
+
326
  if(response.success){
327
  self.set("customAttrSucessMsg", "Saved");
328
  data.each(function(obj){
329
  obj.canRemove = false;
330
  })
331
  }else{
332
+ for(key in response.errors)
333
+ self.set("customAttrErrorMsg", key +" "+response.errors[key] );
334
+ return;
335
  }
336
 
337
  self.set("disableSaveCustomAttr", null);
388
  });
389
  var self = this;
390
 
391
+ Utils.productSync()
392
+ .then(function( data ){
 
 
 
 
393
  if(data.success){
394
  self.set({
395
  dataSuccessMsg:unbxdMessages.uploadSuccess,
404
  });
405
  }
406
  ractiveParent.update();
407
+ },function( error ){
408
+ self.set({
 
409
  dataErrorMsg : "Some error, please try again"
410
  });
411
+ }).always(function(){
412
+ self.set({
 
413
  disableButton:false,
414
  dataWaitMsg:""
415
  });
 
 
416
  });
417
+
418
  }
419
 
420
  });
421
+
422
 
423
+ },
424
+
425
+ loadFeedStatus:function( ractiveCatalog ){
426
+ Utils.feedStatus()
427
+ .then(function( data ){
428
+ if( data.success )
429
+ ractiveCatalog.set({
430
+ dataSuccessMsg:"Successfully uploaded",
431
+ lastSyncTime : data.lastUpload
432
+ });
433
+ },function( error ){
434
+
435
+ });
436
+ }
437
 
438
  };
439
 
skin/adminhtml/default/default/unbxd/recscore/js/app/config.js ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([],
2
+ function(){
3
+
4
+ var Config = {
5
+ pdn:true,
6
+ maxSuggestions:30,
7
+ maxPopularProducts:20,
8
+ site:"",
9
+
10
+
11
+ tooltips:{
12
+ topqueries:"Top queries refer to the best performing search queries for your site. Enabling this will make sure your visitors see these queries first within your autocomplete widget. Preview template to see it in action",
13
+ keywords:"We generate intelligent keyword suggestions & combinations based on your catalog & worldwide shopping data. Preview template to see it in action",
14
+ searchscope:"Enable to display scope suggestions within the autosuggest widget",
15
+ popularProducts:"Display thumbnails of popular products within the autocomplete widget. Preview template to see it in action",
16
+ unbxdAttribute:"Unbxd attributes are fields which are identified by the Unbxd Smartengage Engine and are required for our algorithms and reporting",
17
+ sitekey:"Receive the Site Key in a mail or find it in the Info Section of the Unbxd Dashboard by providing your Site URL after creating an Account on Unbxd Dashboard",
18
+ secretkey:"Receive the Secret Key in a mail or find it in the Accounts Section of the Unbxd Dashboard by providing your Site URL after creating an Account on Unbxd Dashboard",
19
+
20
+ },
21
+
22
+ unbxdDimensions : [
23
+ {
24
+ "value": "brand",
25
+ "helpText": "The brand to which a product belongs to"
26
+ },
27
+ {
28
+ "value": "imageUrl",
29
+ "helpText": "Thumbnail - the URL of the image of a product that needs to be displayed in the recommendation widget, normally the thumnail"
30
+ },
31
+ {
32
+ "value": "title",
33
+ "helpText": "The title or name of the product e.g 'Blue Nike Shoe' "
34
+ },
35
+ {
36
+ "value": "price",
37
+ "helpText": "The display price of the product e.g $499"
38
+ },
39
+ {
40
+ "value": "color",
41
+ "helpText": "The color of the product e.g. 'Green t-shirt' "
42
+ },
43
+ {
44
+ "value": "productUrl",
45
+ "helpText": "The material the product is made of e.g. 'Cotton trousers' "
46
+ },
47
+ {
48
+ "value": "sellingPrice",
49
+ "helpText": "The display price of the product e.g $499"
50
+ },
51
+ {
52
+ "value": "size",
53
+ "helpText": "The size of the product e.g. 'Size 10' shoes"
54
+ }
55
+ ],
56
+
57
+ unbxdMessages : {
58
+ authSuccess:"The Unbxd Module has been authenticated. Proceed to Catalog Configuration",
59
+ uploadSuccess:"Uploaded Catalog Data successfully. Proceed to Analytics integration",
60
+ syncSuccess:'Successfully uploaded'
61
+ },
62
+
63
+ autoSuggestDefaults:{
64
+ autosuggest_status: true,
65
+ autosuggest_skin: "green",
66
+ autosuggest_template: 1,
67
+ autosuggest_max_suggestion: 12,
68
+ autosuggest_top_queries_status: false,
69
+ autosuggest_keyword_status: true,
70
+ autosuggest_search_scope_status: false,
71
+ autosuggest_max_products: 2,
72
+ skinBackground:'#FFF'
73
+ },
74
+
75
+ colorMap:{
76
+ '#FF8400':'orange',
77
+ 'orange':'#FF8400',
78
+
79
+ "#29BD9F":'green',
80
+ 'green':'#29BD9F',
81
+
82
+ '#6F6F6F':'grey',
83
+ 'grey':'#6F6F6F',
84
+
85
+ '#004C92':'blue',
86
+ 'blue':'#004C92'
87
+ },
88
+
89
+ templateMap:{
90
+ '1column':1,
91
+ '2column-right':2,
92
+ '2column-left':3,
93
+ '1column-addToCart':4,
94
+
95
+ 1:'1column',
96
+ 2:'2column-right',
97
+ 3:'2column-left',
98
+ 4:'1column-addToCart'
99
+ },
100
+
101
+ mail:{
102
+ to:'support@unbxd.com'
103
+ },
104
+
105
+ status:{
106
+ requested:'requested',
107
+ ready:'complete'
108
+ },
109
+
110
+ states:{
111
+ analytics:false,
112
+ catalog:false,
113
+ credentials:false
114
+ }
115
+
116
+
117
+ };
118
+
119
+ return Config;
120
+ });
skin/adminhtml/default/default/unbxd/{js/app/credentails.js → recscore/js/app/credentials.js} RENAMED
@@ -1,15 +1,22 @@
1
 
2
- define([ "jquery" ],
3
- function( $ ) {
 
 
 
 
 
 
4
 
5
  var credentails = {
6
 
7
  //credentials view
8
  loadCredentailsTab : function( _unbxdObject ){
 
9
 
10
  var ractiveCredentials = new Ractive({
11
  el: 'innerContainr',
12
- template: '#tab1Template',
13
  data : {
14
  site_key : _unbxdObject.siteKey,
15
  secret_key : _unbxdObject.secretKey,
@@ -17,14 +24,15 @@ function( $ ) {
17
  _unbxdObject:_unbxdObject,
18
  btnDisabled:false,
19
  errorMsg:null,
20
- successMsg:null
 
21
  }
22
  });
23
 
24
- site = jQuery("#selectSites").chosen().val();
25
  _unbxdObject.siteName = site;
26
 
27
- var $keys = $.get( _unbxdBaseurl + "unbxd/config/keys?site="+site);
28
 
29
  $keys.then(function( data ){
30
  if( !data.success) {
@@ -67,36 +75,30 @@ function( $ ) {
67
  site_key: this.get("site_key"),
68
  secret_key:this.get("secret_key")
69
  };
70
- data = JSON.stringify(data);
71
  var self = this;
72
  this.set({
73
  btnDisabled : true,
74
  errorMsg : null,
75
  successMsg:null
76
  });
77
- $.ajax({
78
- type:'POST',
79
- url:_unbxdBaseurl +'unbxd/config/keys?site='+ site,
80
- contentType:"application/json",
81
- data:data,
82
- success:function( data ){
83
- if(!data.success){
84
  self.set('errorMsg', data.errors.message);
85
  return;
86
  }
87
  _unbxdObject.step1 = true;
88
  self.set({
89
  step1 : true,
90
- successMsg:unbxdMessages.authSuccess
91
  });
92
- },
93
- error:function(){
94
 
95
- },
96
- complete:function(){
97
- self.set('btnDisabled', false);
98
- }
99
- })
100
 
101
  },
102
 
1
 
2
+ define([ "jquery",
3
+ "app/config",
4
+ "app/utils",
5
+ "rv!templates/credentails" ],
6
+ function( $ ,
7
+ Config,
8
+ Utils,
9
+ Template) {
10
 
11
  var credentails = {
12
 
13
  //credentials view
14
  loadCredentailsTab : function( _unbxdObject ){
15
+ var site = Config.site;
16
 
17
  var ractiveCredentials = new Ractive({
18
  el: 'innerContainr',
19
+ template: Template,
20
  data : {
21
  site_key : _unbxdObject.siteKey,
22
  secret_key : _unbxdObject.secretKey,
24
  _unbxdObject:_unbxdObject,
25
  btnDisabled:false,
26
  errorMsg:null,
27
+ successMsg:null,
28
+ config:Config
29
  }
30
  });
31
 
32
+ Config.site = jQuery("#selectSites").chosen().val();
33
  _unbxdObject.siteName = site;
34
 
35
+ var $keys = Utils.getKeys();
36
 
37
  $keys.then(function( data ){
38
  if( !data.success) {
75
  site_key: this.get("site_key"),
76
  secret_key:this.get("secret_key")
77
  };
78
+
79
  var self = this;
80
  this.set({
81
  btnDisabled : true,
82
  errorMsg : null,
83
  successMsg:null
84
  });
85
+
86
+ Utils.authenticateKeys( data )
87
+ .then(function( data ){
88
+ if(!data.success){
 
 
 
89
  self.set('errorMsg', data.errors.message);
90
  return;
91
  }
92
  _unbxdObject.step1 = true;
93
  self.set({
94
  step1 : true,
95
+ successMsg:Config.unbxdMessages.authSuccess
96
  });
97
+ },function( error ){
 
98
 
99
+ },function(){
100
+ self.set('btnDisabled', false);
101
+ });
 
 
102
 
103
  },
104
 
skin/adminhtml/default/default/unbxd/recscore/js/app/filter-catalogue.js ADDED
@@ -0,0 +1,320 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([ "jquery",
2
+ "app/utils",
3
+ "app/config",
4
+ "rv!partials/filters"],
5
+ function( $,
6
+ Utils,
7
+ Config,
8
+ FiltersTemplate){
9
+
10
+ var FiltersCatalog = {
11
+
12
+ runCunstructor:function( magentoFileds ){
13
+ if(this.initialized === true)
14
+ return;
15
+
16
+
17
+ magentoFileds.unshift({field_name:"Field", field_type: "string", disabled:"unbxd-hide"});
18
+ this.magentoFileds = magentoFileds;
19
+ this.nomoreFilters = false;
20
+ this.filterSaveDisabled = true;
21
+ this.initialized = true;
22
+ this.filterShown = false;
23
+ this.include_out_of_stock = false;
24
+ },
25
+
26
+ load : function( magentoFileds ){
27
+ this.runCunstructor( magentoFileds );
28
+ if(this.filters)
29
+ this.show();
30
+ else
31
+ this.loadFilters();
32
+ },
33
+
34
+ show : function(){
35
+ var self = this;
36
+
37
+ this.ractiveCatlogueFilter = new Ractive({
38
+ el: 'unbxdFilters',
39
+ template: FiltersTemplate,
40
+ data: {
41
+ filters : this.filters,
42
+ magentoFileds : this.magentoFileds,
43
+ nomoreFilters : this.nomoreFilters,
44
+ filterSaveDisabled : this.filterSaveDisabled,
45
+ saveSuccess:false,
46
+ filterShown:this.filterShown,
47
+ include_out_of_stock:this.include_out_of_stock
48
+ }
49
+ });
50
+
51
+ $(".magento-tooltip").popover({ trigger:'hover' });
52
+
53
+ this.ractiveCatlogueFilter.on({
54
+
55
+ showFilters:function(){
56
+ this.set('filterShown', !this.get('filterShown'));
57
+ if(this.get('filterShown')){
58
+ $(".filter_toggle").slideToggle();
59
+ }
60
+ else{
61
+ $(".filter_toggle").slideToggle();
62
+ }
63
+ },
64
+
65
+
66
+ addFilter:function(){
67
+ this.get( 'filters').push({
68
+ field_name : 'Field',
69
+ field_type:'',
70
+ rule: '',
71
+ value:'',
72
+ from:'',
73
+ to:''
74
+ });
75
+
76
+ },
77
+
78
+ removeFilter:function( event ){
79
+ var index = this.get('filters').indexOf(event.context);
80
+ var obj = this.get('filters').splice(index, 1);
81
+ if( obj && obj[0].field_name !== "Field" )
82
+ this.set('filterSaveDisabled', false);
83
+ },
84
+
85
+ saveFilters:this.saveFilters,
86
+
87
+ valueChange:function( event ){
88
+ var index = this.get('filters').indexOf(event.context),
89
+ filters = this.get("filters");
90
+
91
+ filters[index].noValue = false;
92
+ this.set("filters",filters);
93
+ this.set('filterSaveDisabled', false);
94
+ },
95
+
96
+ toValueChange:function( event ){
97
+ if( !self.isNumber(event) )
98
+ return false;
99
+ var index = this.get('filters').indexOf(event.context),
100
+ filters = this.get("filters");
101
+
102
+ filters[index].noTo = false;
103
+ this.set("filters",filters);
104
+ this.set('filterSaveDisabled', false);
105
+ },
106
+
107
+ fromValueChange:function( event ){
108
+ if( !self.isNumber(event) )
109
+ return false;
110
+ var index = this.get('filters').indexOf(event.context),
111
+ filters = this.get("filters");
112
+
113
+ filters[index].noFrom = false;
114
+ this.set("filters",filters);
115
+ this.set('filterSaveDisabled', false);
116
+ }
117
+
118
+ });
119
+
120
+ this.ractiveCatlogueFilter.observe('filters.*.field_name', function(newValue, oldValue, keypath, s) {
121
+
122
+ var filters = this.get('filters'),
123
+ magentoFileds = this.get("magentoFileds");
124
+
125
+ if( filters.length == 0)
126
+ return;
127
+
128
+ if(typeof oldValue !=='undefined' && newValue && newValue!= 'Field' && oldValue !== newValue ){
129
+ this.set('filterSaveDisabled', false);
130
+ filters[s].noField = false;
131
+ this.set('filters', filters);
132
+ }
133
+
134
+
135
+ if(filters.length === 3 ){
136
+ this.set('nomoreFilters', true);
137
+ }else{
138
+ this.set('nomoreFilters', false);
139
+ }
140
+
141
+
142
+
143
+ for(var k=0; k<magentoFileds.length; k++){
144
+ if(magentoFileds[k].field_name === newValue){
145
+ for(var j=0; j<filters.length; j++){
146
+ if(filters[j].field_name === newValue)
147
+ filters[j].field_type = magentoFileds[k].field_type;
148
+ }
149
+ break;
150
+ }
151
+ }
152
+ this.set('filters', filters);
153
+ Utils.updateAllSelect();
154
+
155
+ });
156
+
157
+ this.ractiveCatlogueFilter.observe('filterSaveDisabled', function(newValue, oldValue, keypath ){
158
+ if( this.get('filterSaveDisabled') === false ){
159
+ this.set('saveSuccess', false);
160
+ }
161
+ });
162
+
163
+ this.ractiveCatlogueFilter.observe('include_out_of_stock', function(newValue, oldValue, property ){
164
+ if(typeof newValue === 'undefined' || newValue === oldValue)
165
+ return;
166
+
167
+ var data = {};
168
+ data[property] = newValue;
169
+ Utils.saveConfigs( data )
170
+ .then(function(){
171
+
172
+ },function(){
173
+
174
+ });
175
+
176
+ });
177
+
178
+
179
+ },
180
+
181
+ saveFilters:function(){
182
+ var filters = this.get('filters'),
183
+ isValid = false,
184
+ data = {},
185
+ self = this;
186
+
187
+ for(var k=0; k<filters.length; k++){
188
+
189
+ if( filters[k].field_type === 'string' ){
190
+ isValid = true;
191
+ if( filters[k].field_name =='Field' ){
192
+ filters[k].noField = true;
193
+ isValid = false;
194
+ }
195
+ if( filters[k].value=='' ){
196
+ filters[k].noValue = true;
197
+ isValid = false;
198
+ }
199
+ }
200
+
201
+ if( filters[k].field_type === 'number' ){
202
+ isValid = true;
203
+ if( filters[k].field_name =='Field' ){
204
+ filters[k].noField = true;
205
+ isValid = false;
206
+ }
207
+
208
+ if(!filters[k].from || filters[k].from > filters[k].to ){
209
+ filters[k].noFrom=true;
210
+ isValid = false;
211
+ }
212
+
213
+ if(!filters[k].to ){
214
+ filters[k].noTo=true;
215
+ isValid = false;
216
+ }
217
+
218
+ }
219
+
220
+ };
221
+
222
+
223
+ if(!isValid && filters.length !== 0){
224
+ this.set('filters', filters);
225
+ return;
226
+ }
227
+
228
+ for(var k=0; k<filters.length; k++){
229
+ var key = filters[k].field_name
230
+ if( filters[k].field_type === 'string')
231
+ data[ key ] = filters[k].value;
232
+ else
233
+ data[ key ] = filters[k].from +"||"+filters[k].to
234
+ }
235
+
236
+ Utils.postData(data).then(
237
+ function( data ){
238
+ self.set('filterSaveDisabled', true);
239
+ self.set('saveSuccess', true);
240
+ },function( error ){
241
+
242
+ });
243
+
244
+
245
+
246
+ },
247
+
248
+ loadFilters:function(){
249
+ var self = this;
250
+ this.filters = [];
251
+
252
+ Utils.getFilters().then(
253
+ function( data ){
254
+ if( data && data.filters ){
255
+ data = data.filters;
256
+ if(data.length === 0)
257
+ return;
258
+
259
+ for( var key in data ){
260
+ var obj = {
261
+ field_name:key,
262
+ value:data[key],
263
+ to:'',
264
+ from:''
265
+ };
266
+ if(data[key].indexOf('||') > 0){
267
+ var values = data[key].split('||');
268
+ obj['field_type']='number';
269
+ obj['from'] = values[0];
270
+ obj['to'] = values[1];
271
+ }else{
272
+ obj['field_type']='string';
273
+ }
274
+
275
+
276
+ self.filters.push(obj);
277
+ }
278
+ };
279
+ }, function( error ){
280
+
281
+ }).always(function(){
282
+ self.show();
283
+ });
284
+
285
+ Utils.getConfigData('include_out_of_stock')
286
+ .then(function( data ){
287
+ if(data.success && data.success === true){
288
+ if( data.config.include_out_of_stock === "1" || data.config.include_out_of_stock === 'true' )
289
+ self.setData('include_out_of_stock', true );
290
+ else
291
+ self.setData('include_out_of_stock', false );
292
+ }
293
+
294
+ },function( error ){
295
+
296
+ });
297
+
298
+ },
299
+
300
+ setData:function(key, val){
301
+ if(this.ractiveCatlogueFilter)
302
+ this.ractiveCatlogueFilter.set(key,val);
303
+ else
304
+ this[key] = val;
305
+ },
306
+
307
+ isNumber:function( evt ){
308
+ if(evt.original.shiftKey)
309
+ return false;
310
+ var charCode = (evt.which) ? evt.which : event.keyCode
311
+ if (charCode > 31 && (charCode < 48 || charCode > 57))
312
+ return false;
313
+ return true;
314
+ }
315
+
316
+ };
317
+
318
+
319
+ return FiltersCatalog;
320
+ });
skin/adminhtml/default/default/unbxd/recscore/js/app/search/api.js ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([
2
+ "jquery",
3
+ 'app/config',
4
+ 'app/utils',
5
+ 'rv!templates/search/api',
6
+ 'rv!partials/switch-on',
7
+ 'rv!partials/switch-off'],
8
+ function(
9
+ $,
10
+ Config ,
11
+ Utils,
12
+ APISearchTemplate,
13
+ SwitchonTemplate,
14
+ SwitchoffTemplate){
15
+
16
+ var APISearch = {
17
+
18
+ runConstructor:function( searchConfig ){
19
+ if(this.initialized)
20
+ return;
21
+
22
+ if(searchConfig && searchConfig.search_mod_status ){
23
+ for(key in searchConfig){
24
+ this[key] = searchConfig[key];
25
+ }
26
+ }else{
27
+ this.loadConfigs();
28
+ }
29
+
30
+ this.initialized = true;
31
+ },
32
+
33
+ load : function( searchConfig ){
34
+ this.runConstructor(searchConfig);
35
+ this.show();
36
+ this.reset();
37
+ this.parentView = require('app/search/landing');
38
+ },
39
+
40
+ show:function( ){
41
+ var self = this;
42
+
43
+ this.ractiveSearch = new Ractive({
44
+ el: 'innerContainr',
45
+ template: APISearchTemplate,
46
+ partials: {
47
+ switchon:SwitchonTemplate,
48
+ switchoff:SwitchoffTemplate
49
+ },
50
+ data:{
51
+ search_mod_status:this.search_mod_status
52
+ }
53
+ });
54
+
55
+
56
+ this.ractiveSearch.on({
57
+ toggleAPIIntegration:function(){
58
+ this.set('search_mod_status', !this.get('search_mod_status'));
59
+ },
60
+
61
+ goBack:function(){
62
+ self.parentView.load();
63
+ }
64
+ });
65
+
66
+ this.ractiveSearch.observe('search_mod_status', function(newValue, oldValue, property) {
67
+ if( typeof newValue !== 'undefined' && oldValue !== newValue ){
68
+ var data = {};
69
+ data[property] = newValue;
70
+ Utils.saveConfigs( data )
71
+ .then(function( data ){
72
+ if( data && data.success){
73
+ self.search_mod_status = newValue;
74
+ self.parentView.setData('search_mod_status', newValue);
75
+ }else{
76
+ self.ractiveSearch.set({
77
+ search_mod_status:oldValue,
78
+ errorMsg:data.search_mod_status
79
+ });
80
+ }
81
+
82
+ });
83
+
84
+ }
85
+ });
86
+
87
+ },
88
+
89
+ eventBindings:function(){
90
+
91
+ },
92
+
93
+ loadConfigs:function(){
94
+ var self = this;
95
+
96
+ Utils.getConfigData('search')
97
+ .then(function( data ){
98
+ if(data.success && data.success===true){
99
+ var config = self.setData( data.config );
100
+ self.ractiveSearch.set( data );
101
+ }
102
+ },function( error ){
103
+
104
+ });
105
+ },
106
+
107
+ setData:function( data ){
108
+ for(key in data){
109
+ if( data[key] === "false" || data[key] === ""){
110
+ data[key] = false;
111
+ }else if( data[key] === "true" || data[key] === "1" ){
112
+ data[key] = true;
113
+ }
114
+ }
115
+
116
+ return data;
117
+ },
118
+
119
+ //to clear error msgs
120
+ reset:function(){
121
+ this.ractiveSearch.set('errorMsg', null)
122
+ }
123
+
124
+ };
125
+
126
+ return APISearch;
127
+
128
+ });
skin/adminhtml/default/default/unbxd/recscore/js/app/search/hosted.js ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([
2
+ "jquery",
3
+ 'app/config',
4
+ 'app/utils',
5
+ 'rv!templates/search/hosted',
6
+ 'rv!partials/switch-on',
7
+ 'rv!partials/switch-off'],
8
+ function(
9
+ $,
10
+ Config ,
11
+ Utils,
12
+ HostedTemplate,
13
+ SwitchonTemplate,
14
+ SwitchoffTemplate){
15
+
16
+ var HostedSearch = {
17
+
18
+ runConstructor:function( searchConfig ){
19
+ if(this.initialized)
20
+ return;
21
+
22
+ if(searchConfig && searchConfig.search_hosted_int_status){
23
+ for(key in searchConfig){
24
+ this[key] = searchConfig[key];
25
+ }
26
+ }else{
27
+ this.loadConfigs();
28
+ }
29
+
30
+ this.initialized = true;
31
+ },
32
+
33
+ load : function( searchConfig ){
34
+ this.runConstructor(searchConfig);
35
+ this.show();
36
+ this.reset();
37
+ this.parentView = require('app/search/landing');
38
+ },
39
+
40
+ show:function( ){
41
+ var self = this;
42
+
43
+ this.ractiveSearch = new Ractive({
44
+ el: 'innerContainr',
45
+ template: HostedTemplate,
46
+ partials: {
47
+ switchon:SwitchonTemplate,
48
+ switchoff:SwitchoffTemplate
49
+ },
50
+ data:{
51
+ search_hosted_status : this.search_hosted_status,
52
+ search_hosted_int_status : this.search_hosted_int_status,
53
+ search_hosted_redirect_url : this.search_hosted_redirect_url
54
+ },
55
+ computed: {
56
+ hostedSearch: function () { return this.get( 'search_hosted_int_status' ) === Config.status.ready },
57
+ requestedSetup:function() { return this.get('search_hosted_int_status') === Config.status.requested}
58
+ }
59
+ });
60
+
61
+ this.ractiveSearch.observe('search_hosted_int_status', function(newValue, oldValue, keypath, s){
62
+
63
+ if( typeof newValue !== 'undefined' && typeof oldValue !== 'undefined' && oldValue !== newValue ){
64
+ var data = {};
65
+ data[keypath] = newValue;
66
+ Utils.saveConfigs( data );
67
+ }
68
+ });
69
+
70
+
71
+ this.ractiveSearch.observe('search_hosted_status', function(newValue, oldValue, keypath, s){
72
+ if( typeof newValue !== 'undefined' && typeof oldValue !== 'undefined' && oldValue !== newValue ){
73
+ var data = {};
74
+ data[keypath] = newValue;
75
+ Utils.saveConfigs( data )
76
+ .then(function( data ){
77
+ if( data && data.success ){
78
+ self.search_hosted_status = newValue;
79
+ self.parentView.setData('search_hosted_status', newValue);
80
+ }else{
81
+ self.ractiveSearch.set({
82
+ search_hosted_status : oldValue,
83
+ errorMsg : data.search_hosted_status});
84
+ }
85
+ },function(){
86
+
87
+ });
88
+ }
89
+ });
90
+
91
+ this.ractiveSearch.on({
92
+ toggleSearchIntegration:function(){
93
+ this.set('search_hosted_status', !this.get('search_hosted_status'));
94
+ },
95
+
96
+ goBack:function(){
97
+ self.parentView.load();
98
+ }
99
+ });
100
+
101
+ this.eventBindings();
102
+ },
103
+
104
+ eventBindings:function(){
105
+
106
+ $('#contactModal').on('show.bs.modal', function (event) {
107
+ var button = $(event.relatedTarget);
108
+ var modal = $(this);
109
+ modal.find('#unbxdSend').attr('data-hostedsearch', false);
110
+ modal.find('#unbxdSend').attr('data-hostedsearch', button.data().hostedsearch);
111
+ });
112
+ },
113
+
114
+ loadConfigs:function(){
115
+ var self = this;
116
+
117
+ Utils.getConfigData('search_host')
118
+ .then(function( data ){
119
+ if(data.success && data.success===true){
120
+ var config = data.config;
121
+ for(key in config){
122
+ if(config[key] === "false")
123
+ config[key] = false;
124
+
125
+ self.ractiveSearch.set( key , config[key] );
126
+ }
127
+ }
128
+ },function( error ){
129
+
130
+ });
131
+ },
132
+
133
+ //called from main
134
+ setData:function( obj ){
135
+ for( key in obj ){
136
+ this[key] = obj[key];
137
+ this.ractiveSearch.set(key, obj[key]);
138
+ }
139
+ },
140
+
141
+ //to clear error msgs
142
+ reset:function(){
143
+ this.ractiveSearch.set('errorMsg', null)
144
+ }
145
+
146
+ };
147
+
148
+ return HostedSearch;
149
+
150
+ });
skin/adminhtml/default/default/unbxd/recscore/js/app/search/landing.js ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([
2
+ "jquery",
3
+ 'app/config',
4
+ 'app/utils',
5
+ 'app/search/hosted',
6
+ 'app/search/api',
7
+ 'rv!templates/search/landing'],
8
+ function(
9
+ $,
10
+ Config ,
11
+ Utils,
12
+ HostedSearch,
13
+ APISearch,
14
+ SearchTemplate){
15
+
16
+ var SearchLanding = {
17
+
18
+ runCunstructor:function(){
19
+
20
+ if(this.data){
21
+ for(key in this.data){
22
+ if(this.data[key] ==='false' || this.data[key] ==='')
23
+ this.data[key] = false;
24
+ else if (this.data[key] ==='1' || this.data[key] ==='true')
25
+ this.data[key] = true;
26
+
27
+ this[key] = this.data[key];
28
+ }
29
+
30
+ }else{
31
+ this.search_hosted_status = false;
32
+ this.search_mod_status = false;
33
+ this.search_hosted_int_status = false;
34
+ this.search_hosted_redirect_url = false;
35
+ }
36
+ this.show();
37
+ this.initialized = true;
38
+ },
39
+
40
+ load : function(){
41
+ if(typeof this.initialized === 'undefined')
42
+ this.loadSearchStatus();
43
+ else
44
+ this.show();
45
+ },
46
+
47
+ setDefaults:function( data ){
48
+
49
+ },
50
+
51
+ show:function( ){
52
+
53
+ this.ractiveSearch = new Ractive({
54
+ el: 'innerContainr',
55
+ template: SearchTemplate,
56
+ data:{
57
+ search_hosted_status : this.search_hosted_status,
58
+ search_mod_status : this.search_mod_status,
59
+ search_hosted_int_status : this.search_hosted_int_status,
60
+ search_hosted_redirect_url : this.search_hosted_redirect_url
61
+ }
62
+ });
63
+
64
+
65
+ this.ractiveSearch.on({
66
+ showHostedSearch:function(){
67
+ HostedSearch.load( this.data );
68
+ },
69
+
70
+ showAPISearch:function(){
71
+ APISearch.load( this.data );
72
+ },
73
+ });
74
+
75
+ // this.ractiveSearch.observe('*', function(newValue, oldValue, property) {
76
+
77
+ // });
78
+
79
+ },
80
+
81
+ eventBindings:function(){
82
+
83
+ },
84
+
85
+ loadSearchStatus:function(){
86
+ var self = this;
87
+ Utils.getConfigData('search')
88
+ .then(function( data ){
89
+ if(data.success && data.success === true){
90
+ self.data = data.config;
91
+ }
92
+ },function( error ){
93
+
94
+ }).always(function(){
95
+ self.runCunstructor();
96
+ });
97
+ },
98
+ //method child views can use to set data
99
+ setData:function(key, value){
100
+ this[key] = value;
101
+ }
102
+
103
+ };
104
+
105
+ return SearchLanding;
106
+
107
+ });
skin/adminhtml/default/default/unbxd/recscore/js/app/utils.js ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ define([ "jquery", "app/config"],
2
+ function( $, Config ){
3
+
4
+ var Utils = {
5
+
6
+ endpoints:{
7
+ sites:'/config/site',
8
+ keys:'/config/keys?site=',
9
+ fields:'/config/fields?site=',
10
+ productsync:'/config/productsync?site=',
11
+ analytics : "/config/analyticsimpression?site=",
12
+ globalConfigs:'/config/global?site=',
13
+ supportMail:'/config/supportmail?site=',
14
+ filters:'/catalog/filter?site=',
15
+ feedStatus : "/config/feedstatus?site=",
16
+ states:"/config/state?site="
17
+ },
18
+
19
+ addAuth:function( url ){
20
+ if(url.indexOf('?') > -1 )
21
+ return url + "&auth=" + Config.authValue;
22
+ else
23
+ return url + "?auth=" + Config.authValue;
24
+ },
25
+
26
+ activateLink : function( step ){
27
+ _unbxdObject.activeStep = {};
28
+ _unbxdObject.activeStep[step] = true;
29
+ ractiveParent.update();
30
+ },
31
+
32
+ configureSelect : function(){
33
+ var chosenObj = $('select[name="unbxd-select"]').chosen();
34
+ chosenObj.trigger('chosen:updated');
35
+ },
36
+ //re render all chosen selects
37
+ updateAllSelect : function(){
38
+ $('select').trigger('chosen:updated');
39
+ },
40
+
41
+ getStates:function(){
42
+ var url = _unbxdBaseurl + this.endpoints.states + Config.site;
43
+ return this.ajaxGet( url );
44
+ },
45
+
46
+ getSites:function(){
47
+ var url = _unbxdBaseurl + this.endpoints.sites;
48
+ return this.ajaxGet( url );
49
+ },
50
+
51
+ authenticateKeys:function( data ){
52
+ var url = _unbxdBaseurl + this.endpoints.keys + Config.site;
53
+ return this.ajaxPost(url, data );
54
+ },
55
+
56
+ getKeys:function(){
57
+ var url = _unbxdBaseurl + this.endpoints.keys + Config.site;
58
+ return this.ajaxGet( url );
59
+ },
60
+
61
+ saveFields : function( data, TYPE ){
62
+ var url = _unbxdBaseurl + this.endpoints.fields + Config.site;
63
+ return this.ajaxPost( url, data, TYPE);
64
+ },
65
+
66
+ getFields:function(){
67
+ var url = _unbxdBaseurl + this.endpoints.fields + Config.site;
68
+ return this.ajaxGet( url );
69
+ },
70
+
71
+ productSync:function(){
72
+ var url = _unbxdBaseurl + this.endpoints.productsync + Config.site;
73
+ return this.ajaxGet( url);
74
+ },
75
+
76
+ saveConfigs:function( data ){
77
+ var url = _unbxdBaseurl + this.endpoints.globalConfigs + Config.site;
78
+ return this.ajaxPost( url, data );
79
+ },
80
+
81
+ getConfigData:function( key ){
82
+ var url = _unbxdBaseurl + this.endpoints.globalConfigs + Config.site+'&key='+key;
83
+ return this.ajaxGet( url );
84
+ },
85
+
86
+ sendMail:function(data){
87
+ var url = _unbxdBaseurl + this.endpoints.supportMail + Config.site;
88
+ return this.ajaxPost( url, data);
89
+ },
90
+
91
+ postData:function(data){
92
+ var url = _unbxdBaseurl + this.endpoints.filters + Config.site;
93
+ return this.ajaxPost( url, data );
94
+ },
95
+
96
+ validateEmail:function(email) {
97
+ var re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
98
+ return re.test(email);
99
+ },
100
+
101
+ feedStatus:function(){
102
+ var url = _unbxdBaseurl + this.endpoints.feedStatus + Config.site;
103
+ return this.ajaxGet(url);
104
+ },
105
+
106
+ getAnalytics:function(){
107
+ var url = _unbxdBaseurl + this.endpoints.analytics + Config.site;
108
+ return this.ajaxGet(url);
109
+ },
110
+
111
+ getFilters:function( url ){
112
+ var url = _unbxdBaseurl + this.endpoints.filters + Config.site
113
+ return this.ajaxGet( url );
114
+ },
115
+
116
+ ajaxGet:function( url ){
117
+ url = this.addAuth(url);
118
+
119
+ return $.ajax({
120
+ contentType:'application/json',
121
+ type:'GET',
122
+ url: url
123
+ });
124
+ },
125
+
126
+ ajaxPost:function( url, data, TYPE ){
127
+ url = this.addAuth(url);
128
+
129
+ for(key in data){
130
+ if(data[key] === true)
131
+ data[key] = "true";
132
+ else if( data[key] === false )
133
+ data[key] = "false";
134
+ };
135
+ return $.ajax({
136
+ contentType:'application/json',
137
+ type: TYPE || 'POST',
138
+ url: url,
139
+ data:JSON.stringify( data )
140
+ });
141
+ }
142
+
143
+
144
+ };
145
+
146
+ return Utils;
147
+ });
skin/adminhtml/default/default/unbxd/{js → recscore/js}/app/widgets.js RENAMED
@@ -1,13 +1,13 @@
1
- define([ "jquery"],
2
- function( $ ){
3
-
4
  var Widgets = {
5
 
6
  loadWidgetsTab : function(){
7
 
8
  var ractiveWidgets = new Ractive({
9
  el: 'innerContainr',
10
- template: '#tab4Template'
11
  });
12
 
13
  ractiveWidgets.on({
@@ -17,9 +17,11 @@ function( $ ){
17
  });
18
 
19
  $(".magento-tooltip").popover({ trigger:'hover' });
 
20
  }
21
 
22
  };
23
 
24
  return Widgets;
25
- });
 
1
+ define([ "jquery", "rv!templates/widgets"],
2
+ function( $, Template ){
3
+
4
  var Widgets = {
5
 
6
  loadWidgetsTab : function(){
7
 
8
  var ractiveWidgets = new Ractive({
9
  el: 'innerContainr',
10
+ template: Template
11
  });
12
 
13
  ractiveWidgets.on({
17
  });
18
 
19
  $(".magento-tooltip").popover({ trigger:'hover' });
20
+ $(".table-widget").popover({ trigger:'click' });
21
  }
22
 
23
  };
24
 
25
  return Widgets;
26
+ });
27
+
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/backbone.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/js/lib/bootstrap-modal.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.3.2 (http://getbootstrap.com)
3
+ * Copyright 2011-2015 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+
7
+ /*!
8
+ * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=2f734528959a2b1db297)
9
+ * Config saved to config.json and https://gist.github.com/2f734528959a2b1db297
10
+ */
11
+ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(t){"use strict";function e(e,s){return this.each(function(){var i=t(this),n=i.data("bs.modal"),r=t.extend({},o.DEFAULTS,i.data(),"object"==typeof e&&e);n||i.data("bs.modal",n=new o(this,r)),"string"==typeof e?n[e](s):r.show&&n.show(s)})}var o=function(e,o){this.options=o,this.$body=t(document.body),this.$element=t(e),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};o.VERSION="3.3.2",o.TRANSITION_DURATION=300,o.BACKDROP_TRANSITION_DURATION=150,o.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},o.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},o.prototype.show=function(e){var s=this,i=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(i),this.isShown||i.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.backdrop(function(){var i=t.support.transition&&s.$element.hasClass("fade");s.$element.parent().length||s.$element.appendTo(s.$body),s.$element.show().scrollTop(0),s.options.backdrop&&s.adjustBackdrop(),s.adjustDialog(),i&&s.$element[0].offsetWidth,s.$element.addClass("in").attr("aria-hidden",!1),s.enforceFocus();var n=t.Event("shown.bs.modal",{relatedTarget:e});i?s.$element.find(".modal-dialog").one("bsTransitionEnd",function(){s.$element.trigger("focus").trigger(n)}).emulateTransitionEnd(o.TRANSITION_DURATION):s.$element.trigger("focus").trigger(n)}))},o.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(o.TRANSITION_DURATION):this.hideModal())},o.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},o.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},o.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},o.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},o.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},o.prototype.backdrop=function(e){var s=this,i=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var n=t.support.transition&&i;if(this.$backdrop=t('<div class="modal-backdrop '+i+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",t.proxy(function(t){t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),n&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;n?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(o.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var r=function(){s.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",r).emulateTransitionEnd(o.BACKDROP_TRANSITION_DURATION):r()}else e&&e()},o.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},o.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},o.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},o.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},o.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},o.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},o.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},o.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var s=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=o,t.fn.modal.noConflict=function(){return t.fn.modal=s,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(o){var s=t(this),i=s.attr("href"),n=t(s.attr("data-target")||i&&i.replace(/.*(?=#[^\s]+$)/,"")),r=n.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(i)&&i},n.data(),s.data());s.is("a")&&o.preventDefault(),n.one("show.bs.modal",function(t){t.isDefaultPrevented()||n.one("hidden.bs.modal",function(){s.is(":visible")&&s.trigger("focus")})}),e.call(n,r,this)})}(jQuery);
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/bootstrap-tooltip.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/chosen.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/js/lib/colpick.js ADDED
@@ -0,0 +1 @@
 
1
+ (function($){var colpick=function(){var tpl='<div class="colpick"><div class="colpick_color"><div class="colpick_color_overlay1"><div class="colpick_color_overlay2"><div class="colpick_selector_outer"><div class="colpick_selector_inner"></div></div></div></div></div><div class="colpick_hue"><div class="colpick_hue_arrs"><div class="colpick_hue_larr"></div><div class="colpick_hue_rarr"></div></div></div><div class="colpick_new_color"></div><div class="colpick_current_color"></div><div class="colpick_hex_field"><div class="colpick_field_letter">#</div><input type="text" maxlength="6" size="6" /></div><div class="colpick_rgb_r colpick_field"><div class="colpick_field_letter">R</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_rgb_g colpick_field"><div class="colpick_field_letter">G</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_rgb_b colpick_field"><div class="colpick_field_letter">B</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_h colpick_field"><div class="colpick_field_letter">H</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_s colpick_field"><div class="colpick_field_letter">S</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_hsb_b colpick_field"><div class="colpick_field_letter">B</div><input type="text" maxlength="3" size="3" /><div class="colpick_field_arrs"><div class="colpick_field_uarr"></div><div class="colpick_field_darr"></div></div></div><div class="colpick_submit"></div></div>',defaults={showEvent:"click",onShow:function(){},onBeforeShow:function(){},onHide:function(){},onChange:function(){},onSubmit:function(){},colorScheme:"light",color:"3289c7",livePreview:true,flat:false,layout:"full",submit:1,submitText:"OK",height:156},fillRGBFields=function(hsb,cal){var rgb=hsbToRgb(hsb);$(cal).data("colpick").fields.eq(1).val(rgb.r).end().eq(2).val(rgb.g).end().eq(3).val(rgb.b).end()},fillHSBFields=function(hsb,cal){$(cal).data("colpick").fields.eq(4).val(Math.round(hsb.h)).end().eq(5).val(Math.round(hsb.s)).end().eq(6).val(Math.round(hsb.b)).end()},fillHexFields=function(hsb,cal){$(cal).data("colpick").fields.eq(0).val(hsbToHex(hsb))},setSelector=function(hsb,cal){$(cal).data("colpick").selector.css("backgroundColor","#"+hsbToHex({h:hsb.h,s:100,b:100}));$(cal).data("colpick").selectorIndic.css({left:parseInt($(cal).data("colpick").height*hsb.s/100,10),top:parseInt($(cal).data("colpick").height*(100-hsb.b)/100,10)})},setHue=function(hsb,cal){$(cal).data("colpick").hue.css("top",parseInt($(cal).data("colpick").height-$(cal).data("colpick").height*hsb.h/360,10))},setCurrentColor=function(hsb,cal){$(cal).data("colpick").currentColor.css("backgroundColor","#"+hsbToHex(hsb))},setNewColor=function(hsb,cal){$(cal).data("colpick").newColor.css("backgroundColor","#"+hsbToHex(hsb))},change=function(ev){var cal=$(this).parent().parent(),col;if(this.parentNode.className.indexOf("_hex")>0){cal.data("colpick").color=col=hexToHsb(fixHex(this.value));fillRGBFields(col,cal.get(0));fillHSBFields(col,cal.get(0))}else if(this.parentNode.className.indexOf("_hsb")>0){cal.data("colpick").color=col=fixHSB({h:parseInt(cal.data("colpick").fields.eq(4).val(),10),s:parseInt(cal.data("colpick").fields.eq(5).val(),10),b:parseInt(cal.data("colpick").fields.eq(6).val(),10)});fillRGBFields(col,cal.get(0));fillHexFields(col,cal.get(0))}else{cal.data("colpick").color=col=rgbToHsb(fixRGB({r:parseInt(cal.data("colpick").fields.eq(1).val(),10),g:parseInt(cal.data("colpick").fields.eq(2).val(),10),b:parseInt(cal.data("colpick").fields.eq(3).val(),10)}));fillHexFields(col,cal.get(0));fillHSBFields(col,cal.get(0))}setSelector(col,cal.get(0));setHue(col,cal.get(0));setNewColor(col,cal.get(0));cal.data("colpick").onChange.apply(cal.parent(),[col,hsbToHex(col),hsbToRgb(col),cal.data("colpick").el,0])},blur=function(ev){$(this).parent().removeClass("colpick_focus")},focus=function(){$(this).parent().parent().data("colpick").fields.parent().removeClass("colpick_focus");$(this).parent().addClass("colpick_focus")},downIncrement=function(ev){ev.preventDefault?ev.preventDefault():ev.returnValue=false;var field=$(this).parent().find("input").focus();var current={el:$(this).parent().addClass("colpick_slider"),max:this.parentNode.className.indexOf("_hsb_h")>0?360:this.parentNode.className.indexOf("_hsb")>0?100:255,y:ev.pageY,field:field,val:parseInt(field.val(),10),preview:$(this).parent().parent().data("colpick").livePreview};$(document).mouseup(current,upIncrement);$(document).mousemove(current,moveIncrement)},moveIncrement=function(ev){ev.data.field.val(Math.max(0,Math.min(ev.data.max,parseInt(ev.data.val-ev.pageY+ev.data.y,10))));if(ev.data.preview){change.apply(ev.data.field.get(0),[true])}return false},upIncrement=function(ev){change.apply(ev.data.field.get(0),[true]);ev.data.el.removeClass("colpick_slider").find("input").focus();$(document).off("mouseup",upIncrement);$(document).off("mousemove",moveIncrement);return false},downHue=function(ev){ev.preventDefault?ev.preventDefault():ev.returnValue=false;var current={cal:$(this).parent(),y:$(this).offset().top};$(document).on("mouseup touchend",current,upHue);$(document).on("mousemove touchmove",current,moveHue);var pageY=ev.type=="touchstart"?ev.originalEvent.changedTouches[0].pageY:ev.pageY;change.apply(current.cal.data("colpick").fields.eq(4).val(parseInt(360*(current.cal.data("colpick").height-(pageY-current.y))/current.cal.data("colpick").height,10)).get(0),[current.cal.data("colpick").livePreview]);return false},moveHue=function(ev){var pageY=ev.type=="touchmove"?ev.originalEvent.changedTouches[0].pageY:ev.pageY;change.apply(ev.data.cal.data("colpick").fields.eq(4).val(parseInt(360*(ev.data.cal.data("colpick").height-Math.max(0,Math.min(ev.data.cal.data("colpick").height,pageY-ev.data.y)))/ev.data.cal.data("colpick").height,10)).get(0),[ev.data.preview]);return false},upHue=function(ev){fillRGBFields(ev.data.cal.data("colpick").color,ev.data.cal.get(0));fillHexFields(ev.data.cal.data("colpick").color,ev.data.cal.get(0));$(document).off("mouseup touchend",upHue);$(document).off("mousemove touchmove",moveHue);return false},downSelector=function(ev){ev.preventDefault?ev.preventDefault():ev.returnValue=false;var current={cal:$(this).parent(),pos:$(this).offset()};current.preview=current.cal.data("colpick").livePreview;$(document).on("mouseup touchend",current,upSelector);$(document).on("mousemove touchmove",current,moveSelector);var payeX,pageY;if(ev.type=="touchstart"){pageX=ev.originalEvent.changedTouches[0].pageX,pageY=ev.originalEvent.changedTouches[0].pageY}else{pageX=ev.pageX;pageY=ev.pageY}change.apply(current.cal.data("colpick").fields.eq(6).val(parseInt(100*(current.cal.data("colpick").height-(pageY-current.pos.top))/current.cal.data("colpick").height,10)).end().eq(5).val(parseInt(100*(pageX-current.pos.left)/current.cal.data("colpick").height,10)).get(0),[current.preview]);return false},moveSelector=function(ev){var payeX,pageY;if(ev.type=="touchmove"){pageX=ev.originalEvent.changedTouches[0].pageX,pageY=ev.originalEvent.changedTouches[0].pageY}else{pageX=ev.pageX;pageY=ev.pageY}change.apply(ev.data.cal.data("colpick").fields.eq(6).val(parseInt(100*(ev.data.cal.data("colpick").height-Math.max(0,Math.min(ev.data.cal.data("colpick").height,pageY-ev.data.pos.top)))/ev.data.cal.data("colpick").height,10)).end().eq(5).val(parseInt(100*Math.max(0,Math.min(ev.data.cal.data("colpick").height,pageX-ev.data.pos.left))/ev.data.cal.data("colpick").height,10)).get(0),[ev.data.preview]);return false},upSelector=function(ev){fillRGBFields(ev.data.cal.data("colpick").color,ev.data.cal.get(0));fillHexFields(ev.data.cal.data("colpick").color,ev.data.cal.get(0));$(document).off("mouseup touchend",upSelector);$(document).off("mousemove touchmove",moveSelector);return false},clickSubmit=function(ev){var cal=$(this).parent();var col=cal.data("colpick").color;cal.data("colpick").origColor=col;setCurrentColor(col,cal.get(0));cal.data("colpick").onSubmit(col,hsbToHex(col),hsbToRgb(col),cal.data("colpick").el)},show=function(ev){ev.stopPropagation();var cal=$("#"+$(this).data("colpickId"));cal.data("colpick").onBeforeShow.apply(this,[cal.get(0)]);var pos=$(this).offset();var top=pos.top+this.offsetHeight;var left=pos.left;var viewPort=getViewport();var calW=cal.width();if(left+calW>viewPort.l+viewPort.w){left-=calW}cal.css({left:left+"px",top:top+"px"});if(cal.data("colpick").onShow.apply(this,[cal.get(0)])!=false){cal.show()}$("html").mousedown({cal:cal},hide);cal.mousedown(function(ev){ev.stopPropagation()})},hide=function(ev){if(ev.data.cal.data("colpick").onHide.apply(this,[ev.data.cal.get(0)])!=false){ev.data.cal.hide()}$("html").off("mousedown",hide)},getViewport=function(){var m=document.compatMode=="CSS1Compat";return{l:window.pageXOffset||(m?document.documentElement.scrollLeft:document.body.scrollLeft),w:window.innerWidth||(m?document.documentElement.clientWidth:document.body.clientWidth)}},fixHSB=function(hsb){return{h:Math.min(360,Math.max(0,hsb.h)),s:Math.min(100,Math.max(0,hsb.s)),b:Math.min(100,Math.max(0,hsb.b))}},fixRGB=function(rgb){return{r:Math.min(255,Math.max(0,rgb.r)),g:Math.min(255,Math.max(0,rgb.g)),b:Math.min(255,Math.max(0,rgb.b))}},fixHex=function(hex){var len=6-hex.length;if(len>0){var o=[];for(var i=0;i<len;i++){o.push("0")}o.push(hex);hex=o.join("")}return hex},restoreOriginal=function(){var cal=$(this).parent();var col=cal.data("colpick").origColor;cal.data("colpick").color=col;fillRGBFields(col,cal.get(0));fillHexFields(col,cal.get(0));fillHSBFields(col,cal.get(0));setSelector(col,cal.get(0));setHue(col,cal.get(0));setNewColor(col,cal.get(0))};return{init:function(opt){opt=$.extend({},defaults,opt||{});if(typeof opt.color=="string"){opt.color=hexToHsb(opt.color)}else if(opt.color.r!=undefined&&opt.color.g!=undefined&&opt.color.b!=undefined){opt.color=rgbToHsb(opt.color)}else if(opt.color.h!=undefined&&opt.color.s!=undefined&&opt.color.b!=undefined){opt.color=fixHSB(opt.color)}else{return this}return this.each(function(){if(!$(this).data("colpickId")){var options=$.extend({},opt);options.origColor=opt.color;var id="collorpicker_"+parseInt(Math.random()*1e3);$(this).data("colpickId",id);var cal=$(tpl).attr("id",id);cal.addClass("colpick_"+options.layout+(options.submit?"":" colpick_"+options.layout+"_ns"));if(options.colorScheme!="light"){cal.addClass("colpick_"+options.colorScheme)}cal.find("div.colpick_submit").html(options.submitText).click(clickSubmit);options.fields=cal.find("input").change(change).blur(blur).focus(focus);cal.find("div.colpick_field_arrs").mousedown(downIncrement).end().find("div.colpick_current_color").click(restoreOriginal);options.selector=cal.find("div.colpick_color").on("mousedown touchstart",downSelector);options.selectorIndic=options.selector.find("div.colpick_selector_outer");options.el=this;options.hue=cal.find("div.colpick_hue_arrs");huebar=options.hue.parent();var UA=navigator.userAgent.toLowerCase();var isIE=navigator.appName==="Microsoft Internet Explorer";var IEver=isIE?parseFloat(UA.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0;var ngIE=isIE&&IEver<10;var stops=["#ff0000","#ff0080","#ff00ff","#8000ff","#0000ff","#0080ff","#00ffff","#00ff80","#00ff00","#80ff00","#ffff00","#ff8000","#ff0000"];if(ngIE){var i,div;for(i=0;i<=11;i++){div=$("<div></div>").attr("style","height:8.333333%; filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr="+stops[i]+", endColorstr="+stops[i+1]+'); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='+stops[i]+", endColorstr="+stops[i+1]+')";');huebar.append(div)}}else{stopList=stops.join(",");huebar.attr("style","background:-webkit-linear-gradient(top,"+stopList+"); background: -o-linear-gradient(top,"+stopList+"); background: -ms-linear-gradient(top,"+stopList+"); background:-moz-linear-gradient(top,"+stopList+"); -webkit-linear-gradient(top,"+stopList+"); background:linear-gradient(to bottom,"+stopList+"); ")}cal.find("div.colpick_hue").on("mousedown touchstart",downHue);options.newColor=cal.find("div.colpick_new_color");options.currentColor=cal.find("div.colpick_current_color");cal.data("colpick",options);fillRGBFields(options.color,cal.get(0));fillHSBFields(options.color,cal.get(0));fillHexFields(options.color,cal.get(0));setHue(options.color,cal.get(0));setSelector(options.color,cal.get(0));setCurrentColor(options.color,cal.get(0));setNewColor(options.color,cal.get(0));if(options.flat){cal.appendTo(this).show();cal.css({position:"relative",display:"block"})}else{cal.appendTo(document.body);$(this).on(options.showEvent,show);cal.css({position:"absolute"})}}})},showPicker:function(){return this.each(function(){if($(this).data("colpickId")){show.apply(this)}})},hidePicker:function(){return this.each(function(){if($(this).data("colpickId")){$("#"+$(this).data("colpickId")).hide()}})},setColor:function(col,setCurrent){setCurrent=typeof setCurrent==="undefined"?1:setCurrent;if(typeof col=="string"){col=hexToHsb(col)}else if(col.r!=undefined&&col.g!=undefined&&col.b!=undefined){col=rgbToHsb(col)}else if(col.h!=undefined&&col.s!=undefined&&col.b!=undefined){col=fixHSB(col)}else{return this}return this.each(function(){if($(this).data("colpickId")){var cal=$("#"+$(this).data("colpickId"));cal.data("colpick").color=col;cal.data("colpick").origColor=col;fillRGBFields(col,cal.get(0));fillHSBFields(col,cal.get(0));fillHexFields(col,cal.get(0));setHue(col,cal.get(0));setSelector(col,cal.get(0));setNewColor(col,cal.get(0));cal.data("colpick").onChange.apply(cal.parent(),[col,hsbToHex(col),hsbToRgb(col),cal.data("colpick").el,1]);if(setCurrent){setCurrentColor(col,cal.get(0))}}})}}}();var hexToRgb=function(hex){var hex=parseInt(hex.indexOf("#")>-1?hex.substring(1):hex,16);return{r:hex>>16,g:(hex&65280)>>8,b:hex&255}};var hexToHsb=function(hex){return rgbToHsb(hexToRgb(hex))};var rgbToHsb=function(rgb){var hsb={h:0,s:0,b:0};var min=Math.min(rgb.r,rgb.g,rgb.b);var max=Math.max(rgb.r,rgb.g,rgb.b);var delta=max-min;hsb.b=max;hsb.s=max!=0?255*delta/max:0;if(hsb.s!=0){if(rgb.r==max)hsb.h=(rgb.g-rgb.b)/delta;else if(rgb.g==max)hsb.h=2+(rgb.b-rgb.r)/delta;else hsb.h=4+(rgb.r-rgb.g)/delta}else hsb.h=-1;hsb.h*=60;if(hsb.h<0)hsb.h+=360;hsb.s*=100/255;hsb.b*=100/255;return hsb};var hsbToRgb=function(hsb){var rgb={};var h=hsb.h;var s=hsb.s*255/100;var v=hsb.b*255/100;if(s==0){rgb.r=rgb.g=rgb.b=v}else{var t1=v;var t2=(255-s)*v/255;var t3=(t1-t2)*(h%60)/60;if(h==360)h=0;if(h<60){rgb.r=t1;rgb.b=t2;rgb.g=t2+t3}else if(h<120){rgb.g=t1;rgb.b=t2;rgb.r=t1-t3}else if(h<180){rgb.g=t1;rgb.r=t2;rgb.b=t2+t3}else if(h<240){rgb.b=t1;rgb.r=t2;rgb.g=t1-t3}else if(h<300){rgb.b=t1;rgb.g=t2;rgb.r=t2+t3}else if(h<360){rgb.r=t1;rgb.g=t2;rgb.b=t1-t3}else{rgb.r=0;rgb.g=0;rgb.b=0}}return{r:Math.round(rgb.r),g:Math.round(rgb.g),b:Math.round(rgb.b)}};var rgbToHex=function(rgb){var hex=[rgb.r.toString(16),rgb.g.toString(16),rgb.b.toString(16)];$.each(hex,function(nr,val){if(val.length==1){hex[nr]="0"+val}});return hex.join("")};var hsbToHex=function(hsb){return rgbToHex(hsbToRgb(hsb))};$.fn.extend({colpick:colpick.init,colpickHide:colpick.hidePicker,colpickShow:colpick.showPicker,colpickSetColor:colpick.setColor});$.extend({colpick:{rgbToHex:rgbToHex,rgbToHsb:rgbToHsb,hsbToHex:hsbToHex,hsbToRgb:hsbToRgb,hexToHsb:hexToHsb,hexToRgb:hexToRgb}})})(jQuery);
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/ractive-backbone.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/ractive-chosen.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/ractive.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/require.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/js/lib/routie.js ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * routie - a tiny hash router
3
+ * v0.3.2
4
+ * http://projects.jga.me/routie
5
+ * copyright Greg Allen 2013
6
+ * MIT License
7
+ */
8
+ (function(w) {
9
+
10
+ var routes = [];
11
+ var map = {};
12
+ var reference = "UnbxdRouter";
13
+ var oldReference = w[reference];
14
+
15
+ var Route = function(path, name) {
16
+ this.name = name;
17
+ this.path = path;
18
+ this.keys = [];
19
+ this.fns = [];
20
+ this.params = {};
21
+ this.regex = pathToRegexp(this.path, this.keys, false, false);
22
+
23
+ };
24
+
25
+ Route.prototype.addHandler = function(fn) {
26
+ this.fns.push(fn);
27
+ };
28
+
29
+ Route.prototype.removeHandler = function(fn) {
30
+ for (var i = 0, c = this.fns.length; i < c; i++) {
31
+ var f = this.fns[i];
32
+ if (fn == f) {
33
+ this.fns.splice(i, 1);
34
+ return;
35
+ }
36
+ }
37
+ };
38
+
39
+ Route.prototype.run = function(params) {
40
+ for (var i = 0, c = this.fns.length; i < c; i++) {
41
+ this.fns[i].apply(this, params);
42
+ }
43
+ };
44
+
45
+ Route.prototype.match = function(path, params){
46
+ var m = this.regex.exec(path);
47
+
48
+ if (!m) return false;
49
+
50
+
51
+ for (var i = 1, len = m.length; i < len; ++i) {
52
+ var key = this.keys[i - 1];
53
+
54
+ var val = ('string' == typeof m[i]) ? decodeURIComponent(m[i]) : m[i];
55
+
56
+ if (key) {
57
+ this.params[key.name] = val;
58
+ }
59
+ params.push(val);
60
+ }
61
+
62
+ return true;
63
+ };
64
+
65
+ Route.prototype.toURL = function(params) {
66
+ var path = this.path;
67
+ for (var param in params) {
68
+ path = path.replace('/:'+param, '/'+params[param]);
69
+ }
70
+ path = path.replace(/\/:.*\?/g, '/').replace(/\?/g, '');
71
+ if (path.indexOf(':') != -1) {
72
+ throw new Error('missing parameters for url: '+path);
73
+ }
74
+ return path;
75
+ };
76
+
77
+ var pathToRegexp = function(path, keys, sensitive, strict) {
78
+ if (path instanceof RegExp) return path;
79
+ if (path instanceof Array) path = '(' + path.join('|') + ')';
80
+ path = path
81
+ .concat(strict ? '' : '/?')
82
+ .replace(/\/\(/g, '(?:/')
83
+ .replace(/\+/g, '__plus__')
84
+ .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?/g, function(_, slash, format, key, capture, optional){
85
+ keys.push({ name: key, optional: !! optional });
86
+ slash = slash || '';
87
+ return '' + (optional ? '' : slash) + '(?:' + (optional ? slash : '') + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + (optional || '');
88
+ })
89
+ .replace(/([\/.])/g, '\\$1')
90
+ .replace(/__plus__/g, '(.+)')
91
+ .replace(/\*/g, '(.*)');
92
+ return new RegExp('^' + path + '$', sensitive ? '' : 'i');
93
+ };
94
+
95
+ var addHandler = function(path, fn) {
96
+ var s = path.split(' ');
97
+ var name = (s.length == 2) ? s[0] : null;
98
+ path = (s.length == 2) ? s[1] : s[0];
99
+
100
+ if (!map[path]) {
101
+ map[path] = new Route(path, name);
102
+ routes.push(map[path]);
103
+ }
104
+ map[path].addHandler(fn);
105
+ };
106
+
107
+ var routie = function(path, fn) {
108
+ if (typeof fn == 'function') {
109
+ addHandler(path, fn);
110
+ routie.reload();
111
+ } else if (typeof path == 'object') {
112
+ for (var p in path) {
113
+ addHandler(p, path[p]);
114
+ }
115
+ routie.reload();
116
+ } else if (typeof fn === 'undefined') {
117
+ routie.navigate(path);
118
+ }
119
+ };
120
+
121
+ routie.lookup = function(name, obj) {
122
+ for (var i = 0, c = routes.length; i < c; i++) {
123
+ var route = routes[i];
124
+ if (route.name == name) {
125
+ return route.toURL(obj);
126
+ }
127
+ }
128
+ };
129
+
130
+ routie.remove = function(path, fn) {
131
+ var route = map[path];
132
+ if (!route)
133
+ return;
134
+ route.removeHandler(fn);
135
+ };
136
+
137
+ routie.removeAll = function() {
138
+ map = {};
139
+ routes = [];
140
+ };
141
+
142
+ routie.navigate = function(path, options) {
143
+ options = options || {};
144
+ var silent = options.silent || false;
145
+
146
+ if (silent) {
147
+ removeListener();
148
+ }
149
+ setTimeout(function() {
150
+ window.location.hash = path;
151
+
152
+ if (silent) {
153
+ setTimeout(function() {
154
+ addListener();
155
+ }, 1);
156
+ }
157
+
158
+ }, 1);
159
+ };
160
+
161
+ routie.noConflict = function() {
162
+ w[reference] = oldReference;
163
+ return routie;
164
+ };
165
+
166
+ var getHash = function() {
167
+ return window.location.hash.substring(1);
168
+ };
169
+
170
+ var checkRoute = function(hash, route) {
171
+ var params = [];
172
+ if (route.match(hash, params)) {
173
+ route.run(params);
174
+ return true;
175
+ }
176
+ return false;
177
+ };
178
+
179
+ var hashChanged = routie.reload = function() {
180
+ var hash = getHash();
181
+ for (var i = 0, c = routes.length; i < c; i++) {
182
+ var route = routes[i];
183
+ if (checkRoute(hash, route)) {
184
+ return;
185
+ }
186
+ }
187
+ };
188
+
189
+ var addListener = function() {
190
+ if (w.addEventListener) {
191
+ w.addEventListener('hashchange', hashChanged, false);
192
+ } else {
193
+ w.attachEvent('onhashchange', hashChanged);
194
+ }
195
+ };
196
+
197
+ var removeListener = function() {
198
+ if (w.removeEventListener) {
199
+ w.removeEventListener('hashchange', hashChanged);
200
+ } else {
201
+ w.detachEvent('onhashchange', hashChanged);
202
+ }
203
+ };
204
+ addListener();
205
+
206
+ w[reference] = routie;
207
+
208
+ })(window);
skin/adminhtml/default/default/unbxd/recscore/js/lib/rv.js ADDED
@@ -0,0 +1 @@
 
1
+ define(["ractive"],function(Ractive){var amd_loader,tosource,rv;amd_loader=function(){var precompiled;var loader=function(pluginId,ext,allowExts,compile){if(arguments.length==3){compile=allowExts;allowExts=undefined}else if(arguments.length==2){compile=ext;ext=allowExts=undefined}return{buildCache:{},load:function(name,req,load,config){var path=req.toUrl(name);var queryString="";if(path.indexOf("?")!=-1){queryString=path.substr(path.indexOf("?"));path=path.substr(0,path.length-queryString.length)}if(config.precompiled instanceof Array){for(var i=0;i<config.precompiled.length;i++)if(path.substr(0,config.precompiled[i].length)==config.precompiled[i])return require([path+"."+pluginId+".js"+queryString],load,load.error)}else if(config.precompiled===true)return require([path+"."+pluginId+".js"+queryString],load,load.error);if(ext&&name.substr(0,1)!="/"&&!name.match(/:\/\//)){var validExt=false;if(allowExts){for(var i=0;i<allowExts.length;i++){if(name.substr(name.length-allowExts[i].length-1)=="."+allowExts[i])validExt=true}}if(!validExt)path+="."+ext+queryString;else path+=queryString}else{path+=queryString}var self=this;loader.fetch(path,function(source){compile(name,source,req,function(compiled){if(typeof compiled=="string"){if(config.isBuild)self.buildCache[name]=compiled;load.fromText(compiled)}else load(compiled)},load.error,config)},load.error)},write:function(pluginName,moduleName,write){var compiled=this.buildCache[moduleName];if(compiled)write.asModule(pluginName+"!"+moduleName,compiled)},writeFile:function(pluginName,name,req,write){write.asModule(pluginName+"!"+name,req.toUrl(name+"."+pluginId+".js"),this.buildCache[name])}}};if(typeof window!="undefined"){var progIds=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];var getXhr=function(path){var sameDomain=true,domainCheck=/^(\w+:)?\/\/([^\/]+)/.exec(path);if(typeof window!="undefined"&&domainCheck){sameDomain=domainCheck[2]===window.location.host;if(domainCheck[1])sameDomain&=domainCheck[1]===window.location.protocol}var xhr;if(typeof XMLHttpRequest!=="undefined")xhr=new XMLHttpRequest;else{var progId;for(var i=0;i<3;i+=1){progId=progIds[i];try{xhr=new ActiveXObject(progId)}catch(e){}if(xhr){progIds=[progId];break}}}if(!sameDomain){if(typeof XDomainRequest!="undefined")xhr=new XDomainRequest;else if(!("withCredentials"in xhr))throw new Error("getXhr(): Cross Origin XHR not supported.")}if(!xhr)throw new Error("getXhr(): XMLHttpRequest not available");return xhr};loader.fetch=function(url,callback,errback){var xhr=getXhr(url);xhr.open("GET",url,!requirejs.inlineRequire);xhr.onreadystatechange=function(evt){var status,err;if(xhr.readyState===4){status=xhr.status;if(status>399&&status<600){err=new Error(url+" HTTP status: "+status);err.xhr=xhr;if(errback)errback(err)}else{if(xhr.responseText=="")return errback(new Error(url+" empty response"));callback(xhr.responseText)}}};xhr.send(null)}}else if(typeof process!=="undefined"&&process.versions&&!!process.versions.node){var fs=requirejs.nodeRequire("fs");loader.fetch=function(path,callback,errback){try{callback(fs.readFileSync(path,"utf8"))}catch(err){errback(err)}}}else if(typeof Packages!=="undefined"){loader.fetch=function(path,callback,errback){var stringBuffer,line,encoding="utf-8",file=new java.io.File(path),lineSeparator=java.lang.System.getProperty("line.separator"),input=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file),encoding)),content="";try{stringBuffer=new java.lang.StringBuffer;line=input.readLine();if(line&&line.length()&&line.charAt(0)===65279){line=line.substring(1)}stringBuffer.append(line);while((line=input.readLine())!==null){stringBuffer.append(lineSeparator);stringBuffer.append(line)}content=String(stringBuffer.toString())}catch(err){if(errback)errback(err)}finally{input.close()}callback(content)}}else{loader.fetch=function(){throw new Error("Environment unsupported.")}}return loader}();tosource=function(){var KEYWORD_REGEXP=/^(abstract|boolean|break|byte|case|catch|char|class|const|continue|debugger|default|delete|do|double|else|enum|export|extends|false|final|finally|float|for|function|goto|if|implements|import|in|instanceof|int|interface|long|native|new|null|package|private|protected|public|return|short|static|super|switch|synchronized|this|throw|throws|transient|true|try|typeof|undefined|var|void|volatile|while|with)$/;return function(object,filter,indent,startingIndent){var seen=[];return walk(object,filter,indent===undefined?" ":indent||"",startingIndent||"",seen);function walk(object,filter,indent,currentIndent,seen){var nextIndent=currentIndent+indent;object=filter?filter(object):object;switch(typeof object){case"string":return JSON.stringify(object);case"boolean":case"number":case"undefined":return""+object;case"function":return object.toString()}if(object===null)return"null";if(object instanceof RegExp)return object.toString();if(object instanceof Date)return"new Date("+object.getTime()+")";var seenIndex=seen.indexOf(object)+1;if(seenIndex>0)return"{$circularReference:"+seenIndex+"}";seen.push(object);function join(elements){return indent.slice(1)+elements.join(","+(indent&&"\n")+nextIndent)+(indent?" ":"")}if(Array.isArray(object)){return"["+join(object.map(function(element){return walk(element,filter,indent,nextIndent,seen.slice())}))+"]"}var keys=Object.keys(object);return keys.length?"{"+join(keys.map(function(key){return(legalKey(key)?key:JSON.stringify(key))+":"+walk(object[key],filter,indent,nextIndent,seen.slice())}))+"}":"{}"}};function legalKey(string){return/^[a-z_$][0-9a-z_$]*$/gi.test(string)&&!KEYWORD_REGEXP.test(string)}}();rv=function(amdLoader,toSource){return amdLoader("rv","html",function(name,source,req,callback,errback,config){var parsed=Ractive.parse(source);if(!config.isBuild){callback(parsed)}else{callback('define("rv!'+name+'",function(){return '+toSource(parsed)+";})")}})}(amd_loader,tosource);return rv});
skin/adminhtml/default/default/unbxd/{js → recscore/js}/lib/underscore.js RENAMED
File without changes
skin/adminhtml/default/default/unbxd/recscore/js/main.js ADDED
@@ -0,0 +1,292 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Array.prototype.map = function(callback, thisArg) {
2
+
3
+ var T, A, k;
4
+
5
+ if (this == null) {
6
+ throw new TypeError(" this is null or not defined");
7
+ }
8
+
9
+ var O = Object(this);
10
+ var len = O.length >>> 0;
11
+
12
+ if (typeof callback !== "function") {
13
+ throw new TypeError(callback + " is not a function");
14
+ }
15
+
16
+ if (arguments.length > 1) {
17
+ T = thisArg;
18
+ }
19
+
20
+ A = new Array(len);
21
+ k = 0;
22
+ while (k < len) {
23
+ var kValue, mappedValue;
24
+ if (k in O) {
25
+ kValue = O[k];
26
+ mappedValue = callback.call(T, kValue, k, O);
27
+ A[k] = mappedValue;
28
+ }
29
+ k++;
30
+ }
31
+
32
+ return A;
33
+ };
34
+
35
+ //using global jquery as requirejs module
36
+ define('jquery', [], function() {
37
+ return jQuery;
38
+ });
39
+
40
+
41
+ requirejs.config({
42
+ baseUrl: window._unbxdSkinurl + 'unbxd/recscore/js/lib',
43
+ paths: {
44
+ app: '../app',
45
+ templates:'../../templates',
46
+ partials:'../../templates/partials'
47
+ },
48
+ waitSeconds:50
49
+ });
50
+
51
+ // Start the main app logic.
52
+ requirejs([
53
+ 'jquery',
54
+ 'ractive',
55
+ 'chosen',
56
+ 'ractive-chosen',
57
+ 'bootstrap-tooltip',
58
+ 'app/credentials',
59
+ 'app/catalog',
60
+ 'app/analytics',
61
+ 'app/widgets',
62
+ 'app/autosuggest',
63
+ 'app/search/landing',
64
+ 'rv!templates/index',
65
+ 'rv!partials/contact-form',
66
+ 'app/utils',
67
+ 'app/config',
68
+ 'app/search/hosted',
69
+ 'routie'],
70
+
71
+ function (
72
+ $,
73
+ Ractive,
74
+ Chosen,
75
+ RC,
76
+ BC,
77
+ Credentails,
78
+ Catalog,
79
+ Analytics,
80
+ Widgets,
81
+ Autosuggest,
82
+ SearchLanding,
83
+ IndexTemplate,
84
+ ContactUsModalTemplate,
85
+ Utils,
86
+ Config,
87
+ HostedSearch) {
88
+
89
+ for(key in _unbxdConfigs){
90
+ Config[key] = _unbxdConfigs[key];
91
+
92
+ if(_unbxdConfigs[key] === "1" || _unbxdConfigs[key] === "true" ){
93
+ Config[key] = true;
94
+ }else if( _unbxdConfigs[key] === "" || _unbxdConfigs[key] === "false" ){
95
+ Config[key] = false;
96
+ }
97
+ };
98
+
99
+ //set auth value from hidden field
100
+ Config.authValue = $("input#auth").val();
101
+
102
+ ractiveParent = {},
103
+ _unbxdObject = {
104
+ step1 : false,
105
+ step2 : true,
106
+ step3 : false,
107
+ step4 : false,
108
+ activeStep:{
109
+ one:true
110
+ },
111
+ originalMapping:[],
112
+ _unbxdSkinurl:_unbxdSkinurl,
113
+ siteName : Config.site,
114
+ ractiveAnalytics:{}
115
+ };
116
+
117
+ (function(){
118
+
119
+ Utils.getSites()
120
+ .then(function( data ){
121
+
122
+ ractiveParent = new Ractive({
123
+ el: 'container',
124
+ template: IndexTemplate,
125
+ partials:{
126
+ contactUsModal:ContactUsModalTemplate
127
+ },
128
+ data: { sites: ['a', 'b'],
129
+ site:data.sites[0].name,
130
+ _unbxdObject:_unbxdObject,
131
+ config:Config,
132
+ ccEmailIds:[]
133
+ }
134
+ });
135
+
136
+ ractiveParent.observe('site', function(newValue, oldValue, keypath, s) {
137
+ if( !oldValue)
138
+ return;
139
+
140
+ _unbxdObject.catalogData = null;
141
+ _unbxdObject.originalMapping = [];
142
+ _unbxdObject.secretKey = "";
143
+ _unbxdObject.siteKey = "";
144
+ _unbxdObject.step1 = false;
145
+ Utils.activateLink( "one" );
146
+ Credentails.loadCredentailsTab( _unbxdObject );
147
+ clearInterval( Config.pollingId );
148
+
149
+ });
150
+
151
+
152
+ ractiveParent.on({
153
+
154
+ showCredentials: function ( event ) {
155
+ Utils.activateLink( "one" );
156
+ Credentails.loadCredentailsTab( _unbxdObject );
157
+ clearInterval( Config.pollingId );
158
+ },
159
+
160
+ showCatalog:function( event ){
161
+ Utils.activateLink( "two" );
162
+ Catalog.loadCatalogTab( _unbxdObject );
163
+ clearInterval( Config.pollingId );
164
+ },
165
+
166
+ showAnalytics:function( event ){
167
+ Utils.activateLink( "three" );
168
+ Analytics.loadAnalyticsTab( _unbxdObject );
169
+ },
170
+
171
+ showWidgets:function( event ){
172
+ Utils.activateLink( "four" );
173
+ Widgets.loadWidgetsTab( _unbxdObject );
174
+ clearInterval( Config.pollingId );
175
+ },
176
+
177
+ showAutosuggest:function( event ){
178
+ Utils.activateLink( "five" );
179
+ Autosuggest.loadAutosuggest( _unbxdObject );
180
+ clearInterval( Config.pollingId );
181
+ },
182
+
183
+ showSearch:function( event ){
184
+ Utils.activateLink( "six" );
185
+ SearchLanding.load( _unbxdObject );
186
+ clearInterval( Config.pollingId );
187
+ },
188
+
189
+ addIdToCollection:function( event ){
190
+ var keycode = event.original.keyCode,
191
+ email = this.get('ccMailId').trim();
192
+
193
+ if( (keycode === 188 ||
194
+ keycode === 32 ||
195
+ keycode === 13) &&
196
+ email.length > 0 &&
197
+ Utils.validateEmail(email) ){
198
+
199
+ this.get("ccEmailIds").push({
200
+ id:this.get('ccMailId')
201
+ });
202
+
203
+ this.set('ccMailId', '');
204
+ }else if(keycode ===8 && email.length ===0 ){
205
+ this.get('ccEmailIds').splice(this.get('ccEmailIds').length-1, 1);
206
+ }
207
+ },
208
+
209
+ removeId:function( event ){
210
+ var index = this.get('ccEmailIds').indexOf(event.context);
211
+ this.get('ccEmailIds').splice(index, 1);
212
+ },
213
+
214
+ sendMail:function(){
215
+ var $sendButton = $("#unbxdSend");
216
+
217
+ if( this.get('ccMailId').trim().length > 0 )
218
+ this.get("ccEmailIds").push({id:this.get('ccMailId')});
219
+
220
+ if( this.get("ccEmailIds").length > 0 )
221
+ emailIds = this.get("ccEmailIds").join("||");
222
+ else
223
+ return;
224
+
225
+ var data = {
226
+ content:this.get('mailBody'),
227
+ cc : emailIds,
228
+ subject:'Support request - magent search'
229
+ };
230
+
231
+ this.set('ccEmailIds',[]);
232
+ this.set('ccMailId','');
233
+ this.set('mailBody', '');
234
+
235
+ Utils.sendMail(data).then(
236
+ function( data ){
237
+ if(data.success && data.success===true && $sendButton.data().hostedsearch === true)
238
+ HostedSearch.setData({search_hosted_int_status:Config.status.requested});
239
+ },function(){
240
+
241
+ });
242
+ }
243
+
244
+ });
245
+
246
+ Config.site = data.sites[0].name;
247
+ ractiveParent.set('sites', data.sites);
248
+ data = data.sites[0];
249
+ if(data.numDocs && data.numDocs > 0){
250
+ _unbxdObject.step2 = true;
251
+ _unbxdObject.products = data.numDocs
252
+ }
253
+
254
+ Credentails.loadCredentailsTab( _unbxdObject );
255
+ Utils.updateAllSelect();
256
+
257
+ Utils.getStates()
258
+ .then(function( data ){
259
+ for(key in Config.states){
260
+ Config.states[key] = data[key].status
261
+ }
262
+ },function( error ){
263
+
264
+ })
265
+
266
+ })
267
+ })();//load main
268
+
269
+
270
+
271
+ Ractive.decorators.chosen.type.site = function (node) {
272
+ return {
273
+ disable_search_threshold:5
274
+ }
275
+ };
276
+
277
+
278
+ });
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
skin/adminhtml/default/default/unbxd/recscore/templates/analytics.html ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {{^_unbxdObject.step2}}
2
+ <div class="row mar-0">
3
+ <div class=" magento-block pad-btm-20 magento-redbar">
4
+ PLEASE MAP CATALOG AND UPLOAD DATA FIRST
5
+ </div>
6
+ <div class="unbxd-disabled-cover">
7
+ </div>
8
+ </div>
9
+
10
+ {{/_unbxdObject.step2}}
11
+
12
+ <div class="row mar-0">
13
+
14
+ <div class="col-md-60 col-sm-60 magento-block pad-top-0">
15
+ <div class="row mar-0">
16
+ <div class="col-md-60 col-sm-60 col-xs-60 brd-btm-0 magento-inner-block pad-top-20 pad-btm-20 top-rad">
17
+ <div class="row mar-0">
18
+ <div class="col-md-60 border-0 pad-0 magento-head ">
19
+ Event Tracking Status
20
+ </div>
21
+ </div>
22
+ </div>
23
+
24
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-20 btm-rad">
25
+ <div class="row mar-0">
26
+
27
+ <div class="col-md-60 magento-text pad-btm-20 magento-text">
28
+ Unbxd automatically adds event handling tags to important visitor events like search hits, product views, cart additions and orders.
29
+ We track these events in order to show comprehensive reports and personalized recommendations & search results.
30
+ </div>
31
+
32
+ <div class="row text-center pad-btm-10 font-15 grey-text">
33
+ See below if the anaytics integration is successful
34
+ <span class="blue-link-help">Trubleshoot here</span>
35
+ </div>
36
+
37
+ <div class="row text-center">
38
+ {{#if config.unbxdSearchenabled}}
39
+ <div class="col-md-14 col-sm-13 magento-analytics-block
40
+ {{^searchHits}} magento-analytics-block1 {{/searchHits}} pad-btm-20 float-none display-inline" >
41
+ <div class="row">
42
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
43
+ SEARCH HITS
44
+ </div>
45
+ </div>
46
+ <div class="row">
47
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
48
+ {{^searchHits}} magento-analytics-cross{{/searchHits}} ">
49
+ &nbsp;
50
+ </div>
51
+ </div>
52
+ <div class="row">
53
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
54
+ {{#if searchHits}}
55
+ Captured
56
+ {{else}}
57
+ Waiting for
58
+ {{/if}}
59
+ </div>
60
+ </div>
61
+ <div class="row">
62
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
63
+ search hits
64
+ </div>
65
+ </div>
66
+ </div>
67
+ {{/if}}
68
+
69
+ <div class="col-md-14 col-sm-13 magento-analytics-block
70
+ {{^productClick}} magento-analytics-block1 {{/productClick}} pad-btm-20 unbxd-md-offset-2 float-none display-inline">
71
+ <div class="row">
72
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
73
+ PRODUCT VIEWS
74
+ </div>
75
+ </div>
76
+ <div class="row">
77
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
78
+ {{^productClick}} magento-analytics-cross{{/productClick}}">
79
+ &nbsp;
80
+ </div>
81
+ </div>
82
+ <div class="row">
83
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
84
+ {{#if productClick}}
85
+ Captured
86
+ {{else}}
87
+ Waiting for
88
+ {{/if}}
89
+ </div>
90
+ </div>
91
+ <div class="row">
92
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
93
+ products clicks
94
+ </div>
95
+ </div>
96
+
97
+ </div>
98
+
99
+ <div class="col-md-14 col-sm-13 magento-analytics-block
100
+ {{^addToCartClick}}magento-analytics-block1{{/addToCartClick}} pad-btm-20 unbxd-md-offset-2 float-none display-inline">
101
+ <div class="row">
102
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
103
+ CART ADDITIONS
104
+ </div>
105
+ </div>
106
+ <div class="row">
107
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick {{^addToCartClick}}magento-analytics-cross{{/addToCartClick}}">
108
+ &nbsp;
109
+ </div>
110
+ </div>
111
+ <div class="row">
112
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
113
+ {{#if addToCartClick}}
114
+ Captured
115
+ {{else}}
116
+ Waiting for
117
+ {{/if}}
118
+ </div>
119
+ </div>
120
+ <div class="row">
121
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
122
+ cart additions
123
+ </div>
124
+ </div>
125
+
126
+ </div>
127
+ <div class="col-md-13 col-sm-13 magento-analytics-block
128
+ {{^productBuysClick }} magento-analytics-block1 {{/productBuysClick}} pad-btm-20 unbxd-md-offset-2 float-none display-inline">
129
+ <div class="row">
130
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
131
+ ORDERS
132
+ </div>
133
+ </div>
134
+ <div class="row">
135
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
136
+ {{^productBuysClick}} magento-analytics-cross{{/productBuysClick}} ">
137
+ &nbsp;
138
+ </div>
139
+ </div>
140
+ <div class="row">
141
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
142
+ {{#if productBuysClick}}
143
+ Captured
144
+ {{else}}
145
+ Waiting for
146
+ {{/if}}
147
+ </div>
148
+ </div>
149
+ <div class="row">
150
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
151
+ orders
152
+ </div>
153
+ </div>
154
+ </div>
155
+
156
+ </div>
157
+
158
+
159
+ <div class="row background-grey mar-top-20 pad-5 pad-left-10">
160
+ <div class="info-icon-big pull-left mar-right-10 "></div>
161
+ <div class="pad-top-10 grey-text">Note: If the above events are mot being tracked, it could be because your Magento templates are heavily customized. Please contact support
162
+ </div>
163
+ </div>
164
+
165
+ {{#if config.unbxdSearchenabled}}
166
+ <div class="row background-grey mar-top-20 pad-btm-15 pad-left-10 pad-top-10 pad-right-10">
167
+ <div class="search-head">
168
+ Search results page tracking
169
+ </div>
170
+ <div class="grey-text mar-top-10 font-15">
171
+ To track product clicks on search results pages, you'll need to add the following code on the search results page. For more information, please refer to our documentation
172
+ </div>
173
+ <div class="pad-left-10 background-white unbxd-code">
174
+ &lt;Mage::helper('unbxd_searchcore/analyticshelper')->getProductClickAttributes($product, $rank);&gt;
175
+ </div>
176
+ </div>
177
+
178
+ <div class="row background-grey mar-top-20 pad-5 pad-left-10">
179
+ <div class="info-icon-big pull-left mar-right-10 background-center">
180
+ </div>
181
+ <div class="pad-top-10 grey-text">Note: We strongly suggest this step be implemented by a web developer. In case of any questions, please contact support
182
+ </div>
183
+ </div>
184
+ {{/if}}
185
+
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </div>
190
+
191
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/auto-suggest.html ADDED
@@ -0,0 +1,278 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row mar-0">
2
+ <div class="col-md-60 col-sm-60 magento-block pad-btm-20 pad-top-0">
3
+ <div class="row mar-0">
4
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block top-rad btm-rad">
5
+ <div class="row mar-0">
6
+ <div class="col-md-40 magento-head pad-0 border-0 mar-btm-10">
7
+ Autosuggest
8
+ </div>
9
+
10
+ <div class="col-md-10 mar-top-30 pull-right">
11
+ <div on-click="autosuggestToggle">
12
+ {{#if autosuggest_status}}
13
+ {{>switchon}}
14
+ {{else}}
15
+ {{>switchoff}}
16
+ {{/if}}
17
+ </div>
18
+ </div>
19
+
20
+ </div>
21
+
22
+ <div class="row mar-0">
23
+ <div class="col-md-50 magento-text ">
24
+ Display keyword suggestions, top searches &amp; popular products when a user searches on your site. Enabling Unbxd Autosuggest will override Magento's default autocomplete widget.
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+
31
+ <div class="col-md-60 col-sm-60 magento-block pad-btm-0 pad-top-0 brd-btm-0">
32
+ <div class="row mar-0">
33
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-0 pad-top-20 pad-btm-20 top-rad">
34
+ <div class="row mar-0">
35
+ <div class="col-md-60 border-0 pad-0 magento-head ">
36
+ Select Template
37
+ </div>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-0 pad-top-20 pad-btm-20">
42
+ <div class="row mar-0">
43
+ <div class="col-md-100 magento-analytics-head pad-btm-20">
44
+ Select Skin
45
+ </div>
46
+ </div>
47
+ <div class="row mar-0 skins">
48
+ <div on-click="selectSkin:orange" alt="" class="skin_color skin1 box-35 skin1-{{autosuggest_skin}}"></div>
49
+ <div on-click="selectSkin:green" alt="" class="skin_color skin2 box-35 skin2-{{autosuggest_skin}}"></div>
50
+ <div on-click="selectSkin:grey" alt="" class="skin_color skin3 box-35 skin3-{{autosuggest_skin}}"></div>
51
+ <div on-click="selectSkin:blue" alt="" class="skin_color skin4 box-35 skin4-{{autosuggest_skin}}"></div>
52
+ <div id="colorPicker" class="custom-skin skin_color box-35 {{#if customColor}} selected{{/if}} magento-tooltip" data-content="choose custom color" style="background-color:{{skinBackground}}"></div>
53
+ </div>
54
+ </div>
55
+ </div>
56
+ </div>
57
+
58
+ <div class="col-md-60 col-sm-60 magento-block pad-btm-20 pad-top-0">
59
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-0 pad-left-12 btm-rad">
60
+ <div class="row mar-0">
61
+
62
+ <div class="col-lg-18 col-md-18 col-xs-18 magento-text2 magento-templates mar-btm-20 pull-left col-md-offset-2 col-xs-offset-2">
63
+ <div class="template1-{{autosuggest_skin}} custom-template1-{{customColor}}" style="background-color:{{skinBackground}}">
64
+ </div>
65
+ <div class='preview_template template-preview txt-center pad-top-35p template1-{{autosuggest_template}}-selected'>
66
+ <div class='preview_btn_holder display-inline back-white-circle box-40 mar-right-20 {{#if customColor}} hide {{/if}}' data-toggle="modal" data-target="#previewModal"
67
+ data-template="1" data-skin={{autosuggest_skin}}></div>
68
+ <div on-click="selectTemplate:1" class="tick-mark display-inline back-white-circle box-40"></div>
69
+ </div>
70
+ </div>
71
+
72
+ <div class="col-lg-18 col-md-18 col-xs-18 magento-text2 magento-templates col-md-offset-2 col-xs-offset-2 mar-btm-20 pull-left">
73
+ <div class="template2-{{autosuggest_skin}} custom-template2-{{customColor}}" style="background-color:{{skinBackground}}">
74
+ </div>
75
+
76
+ <div class='preview_template template-preview txt-center pad-top-35p template2-{{autosuggest_template}}-selected'>
77
+ <div class='preview_btn_holder display-inline back-white-circle box-40 mar-right-20 {{#if customColor}} hide {{/if}}' data-toggle="modal" data-target="#previewModal"
78
+ data-template="2" data-skin={{autosuggest_skin}}></div>
79
+ <div on-click="selectTemplate:2" class="tick-mark display-inline back-white-circle box-40"></div>
80
+ </div>
81
+ </div>
82
+
83
+ <div class="col-lg-18 col-md-18 col-xs-18 magento-text2 magento-templates col-md-offset-2 col-xs-offset-2 mar-btm-20 pull-left">
84
+ <div class="template3-{{autosuggest_skin}} custom-template3-{{customColor}}" style="background-color:{{skinBackground}}">
85
+ </div>
86
+
87
+ <div class='preview_template template-preview txt-center pad-top-35p template3-{{autosuggest_template}}-selected'>
88
+ <div class='preview_btn_holder display-inline back-white-circle box-40 mar-right-20 {{#if customColor}} hide {{/if}}' data-toggle="modal" data-target="#previewModal"
89
+ data-template="3" data-skin={{autosuggest_skin}}
90
+ ></div>
91
+ <div on-click="selectTemplate:3" class="tick-mark display-inline back-white-circle box-40"></div>
92
+ </div>
93
+ </div>
94
+
95
+ <div class="col-lg-18 col-md-18 col-xs-18 magento-text2 magento-templates col-md-offset-2 mar-btm-20 pull-left">
96
+ <div class="template4-{{autosuggest_skin}} custom-template4-{{customColor}}" style="background-color:{{skinBackground}}">
97
+ </div>
98
+ <div class='preview_template template-preview txt-center pad-top-35p template4-{{autosuggest_template}}-selected'>
99
+ <div class='preview_btn_holder display-inline back-white-circle box-40 mar-right-20 {{#if customColor}} hide {{/if}}' data-toggle="modal" data-target="#previewModal"
100
+ data-template="4" data-skin={{autosuggest_skin}}></div>
101
+ <div on-click="selectTemplate:4" class="tick-mark display-inline back-white-circle box-40"></div>
102
+ </div>
103
+ </div>
104
+
105
+ <div class="col-lg-18 col-md-18 col-xs-18 magento-text2 magento-templates col-md-offset-2 col-xs-offset-2 mar-btm-20 pull-left">
106
+ <div class="template-coming width-70p"></div>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+
112
+ <div class="col-md-60 col-sm-60 magento-block pad-btm-0 pad-top-0 brd-btm-0">
113
+ <div class="row mar-0">
114
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-10 brd-btm-0 top-rad">
115
+ <div class="row mar-0">
116
+ <div class="col-md-0 magento-head border-0 pad-0 mar-btm-10">
117
+ Configure template
118
+ </div>
119
+ </div>
120
+ </div>
121
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-0 brd-btm-0 {{#if hideSuggestions}} hide {{/if}}">
122
+ <div class="row mar-0">
123
+ <div class="col-md-100 magento-subhead pad-btm-10">
124
+ Search Suggestions
125
+ </div>
126
+ <div class="col-md-60 magento-text pad-btm-20">
127
+ Search suggestions are automatically generated based on visitor's search query.
128
+ </div>
129
+
130
+ <div class="row mar-0">
131
+ <div class="col-md-25 magento-text mar-btm-30">
132
+ Number of suggestions.
133
+ </div>
134
+ <div class="col-md-15 mar-btm-30 col-md-offset-20">
135
+ <div class="fuelux pull-right">
136
+ <div class="pull-right">
137
+ <div class="spinbox">
138
+ <input type="text" class="form-control input-mini spinbox-input cursor-default background-white" disabled=true value={{autosuggest_max_suggestion}}>
139
+ <div class="spinbox-buttons btn-group btn-group-vertical">
140
+ <button on-click="noOfSuggestionsUp" type="button" class="btn btn-default spinbox-up btn-xs">
141
+ </button>
142
+ <button on-click="noOfSuggestionsDown" type="button" class="btn btn-default spinbox-down btn-xs">
143
+ </button>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+
151
+
152
+ <div class="col-md-60 magento-row-tabs mar-btm-40 brd-none">
153
+ <div class="autosuggest-inner-block">
154
+ <div class="col-md-60 magento-text autosuggest-text mar-btm-20 height-20">
155
+ <div class="pull-left pad-right-10">Top Queries </div>
156
+ <div class="info-icon-small pull-left magento-tooltip" data-content={{config.tooltips.topqueries}}>
157
+ </div>
158
+ </div>
159
+ <div class="col-md-51 magento-text mar-btm-30">
160
+ Enable to display top performing search queries first
161
+ </div>
162
+ <div class="col-md-9 mar-btm-30">
163
+
164
+ <div on-click="topqueriesToggle">
165
+ {{#if autosuggest_top_queries_status}}
166
+ {{>switchon}}
167
+ {{else}}
168
+ {{>switchoff}}
169
+ {{/if}}
170
+ </div>
171
+
172
+ </div>
173
+ <div class="clear"></div>
174
+ </div>
175
+
176
+ <div class="autosuggest-inner-block">
177
+ <div class="col-md-60 magento-text autosuggest-text mar-btm-20 height-20">
178
+ <div class="pull-left pad-right-10">Keyword Suggestions </div>
179
+ <div class="info-icon-small pull-left magento-tooltip" data-content={{config.tooltips.keywords}}>
180
+ </div>
181
+ </div>
182
+ <div class="col-md-51 magento-text mar-btm-30">
183
+ Enable to display intelligent keyword suggestions
184
+ </div>
185
+ <div class="col-md-9 mar-btm-30">
186
+
187
+ <div on-click="keywordsToggle">
188
+ {{#if autosuggest_keyword_status}}
189
+ {{>switchon}}
190
+ {{else}}
191
+ {{>switchoff}}
192
+ {{/if}}
193
+ </div>
194
+
195
+ </div>
196
+ <div class="clear"></div>
197
+ </div>
198
+
199
+ <div class="autosuggest-inner-block brd-btm-0">
200
+ <div class="col-md-60 magento-text autosuggest-text mar-btm-20 height-20">
201
+ <div class="pull-left pad-right-10">
202
+ Search Scope
203
+ </div>
204
+ <div class="info-icon-small pull-left magento-tooltip" data-content={{config.tooltips.searchscope}}>
205
+ </div>
206
+ </div>
207
+ <div class="col-md-51 magento-text mar-btm-30">
208
+ Enable to display scope suggestions within the autosuggest widget
209
+ </div>
210
+ <div class="col-md-9 mar-btm-30">
211
+
212
+ <div on-click="searchscopeToggle">
213
+ {{#if autosuggest_search_scope_status}}
214
+ {{>switchon}}
215
+ {{else}}
216
+ {{>switchoff}}
217
+ {{/if}}
218
+ </div>
219
+ </div>
220
+ <div class="clear"></div>
221
+ </div>
222
+ <div class="autosuggest_info_box">
223
+ <div class="info-icon-big pull-left mar-right-10 "
224
+ style="height:55px"></div>
225
+ <div class="pad-left-10 info-note">
226
+ In order for scope suggestions to work, you need to write a callback function to specify the search filters that will be applied when a customer clicks on a scope suggestion.
227
+
228
+ For more information on how to write this function, please refer to our
229
+ <a target="_blank" href="https://github.com/unbxd/autosuggest" class="blue-link-help">Github repo</a>
230
+ <div>
231
+ Note: We strongly suggest this step be implemented by a web developer. In case of any questions, please contact support
232
+ </div>
233
+
234
+ </div>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ </div>
241
+
242
+ <div class="col-md-60 col-sm-60 magento-block pad-btm-0 pad-top-0">
243
+ <div class="row mar-0">
244
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-0 btm-rad">
245
+ <div class="row mar-0">
246
+ <div class="col-md-100 magento-autosuggest-head pad-btm-10 clearfix">
247
+ <div class="pull-left pad-right-10">
248
+ Popular Product Suggestions
249
+ </div>
250
+ <div class="info-icon-small pull-left magento-tooltip" data-content={{config.tooltips.popularProducts}}>
251
+ </div>
252
+ </div>
253
+ <div class="col-md-0 magento-text pad-btm-20 ">
254
+ Choose the maximum number of popular product thumbnails to be displayed
255
+ </div>
256
+ <div class="col-md-45 magento-text mar-btm-30">
257
+ Number of thumbnails
258
+ </div>
259
+ <div class="col-md-15 mar-btm-30">
260
+ <div class="fuelux">
261
+ <div class="spinbox thumb-spin" data-initialize="spinbox">
262
+ <input type="text" class="form-control input-mini spinbox-input cursor-default background-white" disabled=true value={{autosuggest_max_products}}>
263
+ <div class="spinbox-buttons btn-group btn-group-vertical">
264
+ <button on-click="noOfPopularProductsUp" type="button" class="btn btn-default spinbox-up btn-xs">
265
+ </button>
266
+ <button on-click="noOfPopularProductsDown" type="button" class="btn btn-default spinbox-down btn-xs">
267
+ </button>
268
+ </div>
269
+ </div>
270
+ </div>
271
+ </div>
272
+ </div>
273
+ </div>
274
+ </div>
275
+ </div>
276
+ </div>
277
+
278
+ {{>modal}}
skin/adminhtml/default/default/unbxd/recscore/templates/catalog.html ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row mar-0">
2
+ <div class="col-md-60 col-sm-60 magento-block pad-top-0">
3
+ <div class="row mar-0">
4
+
5
+
6
+ {{^_unbxdObject.step1}}
7
+ <div class="row mar-0">
8
+ <div class="col-md-60 magento-head mar-btm-30" style="color: red;font-size: 20px;">Please authenticate Unbxd module
9
+ </div>
10
+ </div>
11
+ <div on-click="disabledClick" class="unbxd-cover">
12
+ </div>
13
+ {{/_unbxdObject.step1}}
14
+
15
+
16
+ <div class="{{^_unbxdObject.step1}} unbxd-disabler {{/_unbxdObject.step1}} unbxd-outer-block">
17
+
18
+ {{>catalogue}}
19
+
20
+ {{>customAttr}}
21
+
22
+ <div id="unbxdFilters" class="unbxd-outer-block">
23
+
24
+ </div>
25
+
26
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-20">
27
+ <div class="row mar-0">
28
+ <div class="col-md-60 border-0 pad-0 magento-head ">
29
+ Sync The Catalog Data
30
+ </div>
31
+ </div>
32
+ </div>
33
+
34
+
35
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 overflow-auto brd-top-btm-0 pad-btm-5">
36
+ <div class="col-md-60 magento-text ">
37
+ Sync your catalog data with the Unbxd Smartengage Engine once.
38
+ </div>
39
+ </div>
40
+
41
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 overflow-auto brd-top-btm-0">
42
+ <div on-click="uploadData" class="col-md-20 button-black-magento1 width-220 {{#if disableButton}}disabled-btn{{/if}} " >
43
+ <div class="clickable-btn weight300 " style="color: #fff !important;padding-right: 16px">
44
+ SYNC CATALOG
45
+ </div>
46
+ </div>
47
+ </div>
48
+
49
+
50
+
51
+ <div class="col-md-60 col-sm-60 col-xs-60 brd-top-btm-0 pad-0 pad-left-50">
52
+ <div class="unbxd-err-msg">
53
+ {{dataErrorMsg}}
54
+ </div>
55
+ <div class="unbxd-success-msg">
56
+ {{dataWaitMsg}}
57
+ </div>
58
+ {{#if dataSuccessMsg}}
59
+ <div class="row mar-0">
60
+ <div class="success-icon-big box-50 pull-left" >
61
+ </div>
62
+ <div class="pull-left width-200 pad-left-10 pad-top-5">
63
+ <div class="sync-success">{{config.unbxdMessages.syncSuccess}}</div>
64
+ <div class="grey-text success-second-text">Last synced on {{lastSyncTime}}</div>
65
+ </div>
66
+ </div>
67
+ {{/if}}
68
+ </div>
69
+
70
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 overflow-auto brd-top-btm-0 pad-top-5 pad-btm-20 btm-rad brd-btm">
71
+ <div class="col-md-60 col-sm-60 col-xs-60 bordered-div brd-lft brd-rgt background-grey pad-left-10 overflow-auto brd-top-btm-0">
72
+ <div class="info-icon-big pull-left mar-right-10 background-center" style="height:58px;"></div>
73
+ <div class="pad-top-10 grey-text">
74
+ Note: Your site's catalog data needs to be regularly synced with the Unbxd Smartengage Engine for relevant results to be displayed. Set-up a cronjob which performs the regular sync. For more datils <a target="_blank" href="http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job" class="blue-link-help">click here</a>
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ </div>
80
+
81
+
82
+ </div>
83
+ </div>
84
+ </div>
skin/adminhtml/default/default/unbxd/{templates → recscore/templates}/credentails.html RENAMED
@@ -1,22 +1,22 @@
1
-
2
-
3
- <div class="row mar-0 border-left-color pad-btm-10p">
4
- <div class="col-md-60 col-sm-60 pad-0">
5
  <div class="row mar-0">
6
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block brd-btm-none" style="padding-top: 40px;padding-bottom: 40px;">
7
  <div class="row mar-0">
8
- <div class="col-md-60 magento-head pad-0 mar-btm-20">
9
  Authenticate the Unbxd Module
10
  </div>
11
  </div>
 
 
12
  <div class="row mar-0">
13
- <div class="col-md-60 magento-text text1 pad-0">
14
- You will need an Unbxd Account in order to authenticate the Unbxd module
15
  </div>
16
  </div>
17
  <div class="row mar-0">
18
- <div class="col-md-60 magento-text text1 pad-0">
19
- Create an account here <a href="//dashboard.unbxd.com/recommendations/#/register" target="_blank" style="color:#45b5c1;"> UNBXD Recommender </a>
20
  </div>
21
  </div>
22
 
@@ -24,37 +24,39 @@
24
  </div>
25
 
26
  <div class="row mar-0">
27
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-landing-block mar-btm-20">
28
 
29
  <div class="row mar-0">
30
- <div class="col-md-23 pad-0">
31
- <div class="row">
32
  <div class="col-md-60 col-sm-60 col-xs-60 magento-label mar-btm-7">
33
  Your Site Key
34
  </div>
35
  </div>
36
- <div class="row">
37
  <div class="col-md-48 col-sm-20 col-xs-60">
38
  <input type="{{#if step1}}password{{else}}text{{/if}}" class="magento-input" placeholder="Eg: AHS234dhbcskdj23jsd" value={{site_key}}>
39
  </div>
40
  <div class="col-md-10 col-sm-20 col-xs-60 clickable-btn magento-tooltip box-35"
41
- data-title="Site Key" data-content="Receive the Site Key in a mail or find it in the Info Section of the Unbxd Dashboard by providing your Site URL after creating an Account on Unbxd Dashboard" data-container="#innerContainr" >
 
42
 
43
  </div>
44
  </div>
45
  </div>
46
- <div class="col-md-23 pad-0">
47
- <div class="row">
48
  <div class="col-md-60 col-sm-60 col-xs-60 magento-label mar-btm-7">
49
  Secret Key
50
  </div>
51
  </div>
52
- <div class="row">
53
  <div class="col-md-48 col-sm-20 col-xs-60">
54
  <input type="{{#if step1}}password{{else}}text{{/if}}" class="magento-input" placeholder="Eg: AHS234dhbcskdj23jsd" value={{secret_key}} >
55
  </div>
56
  <div class="col-md-10 col-sm-20 col-xs-60 clickable-btn magento-tooltip box-35"
57
- data-title="Secret Key" data-content="Receive the Secret Key in a mail or find it in the Accounts Section of the Unbxd Dashboard by providing your Site URL after creating an Account on Unbxd Dashboard" data-container="#innerContainr" >
 
58
 
59
  </div>
60
  </div>
@@ -67,44 +69,39 @@
67
 
68
  {{#if step1}}
69
  <div class="row mar-0">
70
- <div class="col-md-60 magento-success-block mar-btm-20">
71
- <div class="row">
72
- <div class="col-md-10 magento-analytics-tick-green">
73
 
74
  </div>
75
- <div class="col-md-43 pad-rgt-0">
76
- <div class="row">
77
- <div class="col-md-60 col-sm-60 col-xs-60 magento-success-block-head weight300">
78
- Authentication is completed
79
- </div>
80
- </div>
81
- <div class="row">
82
- <div class="col-md-60 col-sm-60 col-xs-60 magento-success-block-text weight300">
83
- The extension is successfully authenticated
84
  </div>
85
  </div>
86
  </div>
87
- <div class="col-md-13">
88
  <div on-click="reauthenticate" class="button-reauth-magento mar-top-5 width-170 pull-right clickable-btn">
89
  REAUTHENTICATE
90
  </div>
91
  </div>
92
  </div>
93
  </div>
94
- </div>
95
  {{else}}
96
  <div class="row mar-0">
97
  <div on-click="authenticate" class="col-md-20
98
  button-black-magento
99
  {{#if btnDisabled}}disabled-btn{{/if}}
100
  {{#if step1}}disabled-btn{{/if}}
101
- width-190 clickable-btn unbxd-mar-left-30 unbxd-mar-btm-20" style="margin:0px auto;float:none;">
102
 
103
  <div style="color: #fff !important;">
104
  AUTHENTICATE
105
  </div>
106
  </div>
107
- <div class="unbxd-error-msg unbxd-center-div " style="margin-left: 14% !important;">
108
  {{errorMsg}}
109
  </div>
110
  <div class="unbxd-success-msg unbxd-center-div" style="margin-left: 14% !important;">
1
+ <div class="row mar-0 magento-block pad-top-0">
2
+ <div class="col-md-60 col-sm-60 ">
 
 
3
  <div class="row mar-0">
4
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-0 pad-top-20 pad-btm-20 top-rad">
5
  <div class="row mar-0">
6
+ <div class="col-md-60 border-0 pad-0 magento-head ">
7
  Authenticate the Unbxd Module
8
  </div>
9
  </div>
10
+ </div>
11
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-none">
12
  <div class="row mar-0">
13
+ <div class="col-md-60 magento-text text1 ">
14
+ You will need an Unbxd Account in order to authenticate the Unbxd module.
15
  </div>
16
  </div>
17
  <div class="row mar-0">
18
+ <div class="col-md-60 magento-text text1 ">
19
+ Create an <a href="//dashboard.unbxd.com/recommendations/#/register" target="_blank" style="color:#45b5c1;"> Unbxd Account </a>
20
  </div>
21
  </div>
22
 
24
  </div>
25
 
26
  <div class="row mar-0">
27
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-landing-block mar-btm-20 btm-rad">
28
 
29
  <div class="row mar-0">
30
+ <div class="col-md-23 ">
31
+ <div class="row mar-0">
32
  <div class="col-md-60 col-sm-60 col-xs-60 magento-label mar-btm-7">
33
  Your Site Key
34
  </div>
35
  </div>
36
+ <div class="row mar-0">
37
  <div class="col-md-48 col-sm-20 col-xs-60">
38
  <input type="{{#if step1}}password{{else}}text{{/if}}" class="magento-input" placeholder="Eg: AHS234dhbcskdj23jsd" value={{site_key}}>
39
  </div>
40
  <div class="col-md-10 col-sm-20 col-xs-60 clickable-btn magento-tooltip box-35"
41
+ data-content={{config.tooltips.sitekey}}
42
+ data-container="#innerContainr" >
43
 
44
  </div>
45
  </div>
46
  </div>
47
+ <div class="col-md-23 ">
48
+ <div class="row mar-0">
49
  <div class="col-md-60 col-sm-60 col-xs-60 magento-label mar-btm-7">
50
  Secret Key
51
  </div>
52
  </div>
53
+ <div class="row mar-0">
54
  <div class="col-md-48 col-sm-20 col-xs-60">
55
  <input type="{{#if step1}}password{{else}}text{{/if}}" class="magento-input" placeholder="Eg: AHS234dhbcskdj23jsd" value={{secret_key}} >
56
  </div>
57
  <div class="col-md-10 col-sm-20 col-xs-60 clickable-btn magento-tooltip box-35"
58
+ data-content={{config.tooltips.secretkey}}
59
+ data-container="#innerContainr" >
60
 
61
  </div>
62
  </div>
69
 
70
  {{#if step1}}
71
  <div class="row mar-0">
72
+ <div class="col-md-60 magento-success-block mar-btm-20 pad-left-50">
73
+ <div class="row mar-0 ">
74
+ <div class="col-md-10 magento-analytics-tick-green pad-left-15 pad-right-15">
75
 
76
  </div>
77
+ <div class="col-md-43 mar-top-10 pad-rgt-0 pad-left-15 pad-right-15">
78
+ <div class="row mar-0">
79
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-success-block-head">
80
+ Authentication has been succesful
 
 
 
 
 
81
  </div>
82
  </div>
83
  </div>
84
+ <div class="col-md-13 pad-left-15 pad-right-15">
85
  <div on-click="reauthenticate" class="button-reauth-magento mar-top-5 width-170 pull-right clickable-btn">
86
  REAUTHENTICATE
87
  </div>
88
  </div>
89
  </div>
90
  </div>
91
+ </div>
92
  {{else}}
93
  <div class="row mar-0">
94
  <div on-click="authenticate" class="col-md-20
95
  button-black-magento
96
  {{#if btnDisabled}}disabled-btn{{/if}}
97
  {{#if step1}}disabled-btn{{/if}}
98
+ width-190 clickable-btn unbxd-mar-left-30 unbxd-mar-btm-20 " style="margin:0px auto;float:none;">
99
 
100
  <div style="color: #fff !important;">
101
  AUTHENTICATE
102
  </div>
103
  </div>
104
+ <div class="unbxd-err-msg unbxd-center-div " style="margin-left: 14% !important;">
105
  {{errorMsg}}
106
  </div>
107
  <div class="unbxd-success-msg unbxd-center-div" style="margin-left: 14% !important;">
skin/adminhtml/default/default/unbxd/recscore/templates/index.html ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="unbxd-container height-100 parent">
2
+ <div class="magent0-left-nav width-17 pull-left height-100 unbxd-left">
3
+ <div class="middle-nav-magento-dropdown unbxd-top-strip mar-btm-20">
4
+ <div class="middle-nav-text mar-btm-10 pad-btm-0" style="padding-top: 10px;">
5
+ Choose Website
6
+ </div>
7
+ <div class="middle-nav-dropdown mar-top-5 no-radius">
8
+ <div class="btn-group width-100 unbxd-border">
9
+ <select decorator='chosen:site' value={{site}} name="unbxd-site" id="selectSites">
10
+ {{#sites}}
11
+ <option value="{{name}}">{{name}}</option>
12
+ {{/sites}}
13
+ </select>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ <div class="middle-nav-magento unbxd-left">
18
+ <ul class="magento-nav">
19
+ <li on-click='showCredentials' class="clickable-btn
20
+ {{#if _unbxdObject.activeStep.one}} magento-active {{/if}}
21
+ {{^config.states.credentials}} unbxd-state-incomplete {{/config.states.credentials}}">
22
+ <a>Authentication</a>
23
+ </li>
24
+ <li on-click='showCatalog' class="clickable-btn
25
+ {{#if _unbxdObject.activeStep.two}} magento-active{{/if}}
26
+ {{^config.states.catalog}} unbxd-state-incomplete {{/config.states.catalog}}">
27
+ <a>Catalog</a>
28
+ </li>
29
+ <li on-click='showAnalytics' class="clickable-btn
30
+ {{#if _unbxdObject.activeStep.three}} magento-active{{/if}}
31
+ {{^config.states.analytics}} unbxd-state-incomplete {{/config.states.analytics}}">
32
+ <a>Analytics</a>
33
+ </li>
34
+ {{#if config.unbxdRecsenabled}}
35
+ <li on-click='showWidgets' class="clickable-btn
36
+ {{#if _unbxdObject.activeStep.four}} magento-active{{/if}}">
37
+ <a>Widgets</a>
38
+ </li>
39
+ {{/if}}
40
+ {{#if config.unbxdSearchenabled}}
41
+ <li on-click='showAutosuggest' class="clickable-btn
42
+ {{#if _unbxdObject.activeStep.five}} magento-active{{/if}}">
43
+ <a>Auto Suggest</a>
44
+ </li>
45
+ <li on-click='showSearch' class="clickable-btn
46
+ {{#if _unbxdObject.activeStep.six}} magento-active{{/if}}">
47
+ <a>Search</a>
48
+ </li>
49
+ {{/if}}
50
+ </ul>
51
+ <div class="footer bottom-55 contact-us-footer" data-toggle="modal" data-target="#contactModal">
52
+ <div class="mail-box pull-left">
53
+ </div>
54
+ <div class="">Contact Support</div>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ <div class="unbxd-right-div pull-left width-83 unbxd-right unbxd-scrollable-div">
59
+ <div id="innerContainr" class="inner-container-magento pad-top-34 pad-btm-40">
60
+ </div>
61
+ </div>
62
+ {{>contactUsModal}}
63
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/catalogue.html ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-20 top-rad">
3
+ <div class="row mar-0">
4
+ <div class="col-md-60 border-0 pad-0 magento-head ">
5
+ Map Catalog Attributes
6
+ </div>
7
+ </div>
8
+ </div>
9
+
10
+
11
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 brd-btm-0 pad-btm-0">
12
+ <div class="row mar-0">
13
+ <div class="col-md-60 magento-text mar-btm-10">
14
+ Unbxd needs your catalog data in order to show accurate results.
15
+ </div>
16
+ </div>
17
+ <div class="row mar-0">
18
+ <div class="col-md-60 magento-text ">
19
+ Help the Unbxd Smartengage Engine make sense of this data by mapping your catalog attributes to the <br>
20
+ respective Unbxd attributes.
21
+ </div>
22
+ </div>
23
+ </div>
24
+
25
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 brd-btm-0">
26
+ <div class="col-md-60 col-sm-60 col-xs-60 ">
27
+ <div class="mar-btm-n10">
28
+ <div class="col-md-60 col-sm-60 ">
29
+ <div class="table unbxd-cat-table table-magento table-magento1 unbxd-table width-70">
30
+ <div class="unbxd-thead">
31
+ <div class="unbxd-tr">
32
+ <div class="magento-tooltip unbxd-th pull-left width-45 weight300 unbxd-table-head"
33
+ data-content={{config.tooltips.unbxdAttribute}} >
34
+ Unbxd Attribute
35
+ </div>
36
+ <div class="magento-tooltip unbxd-th pull-right width-55 border-right-rad weight300 no-border-right unbxd-table-head" data-content="These are fields from {{_unbxdObject.siteName}}'s catalog which need to be mapped to the relevant Unbxd attribute" >
37
+ Magento Attribute
38
+ </div>
39
+ </div>
40
+ </div>
41
+
42
+ <div class="unbxd-rows" >
43
+ {{#mappedAttributes}}
44
+ <div class="tr-row">
45
+ <div data-content="{{tooltip}}" class=" td-left width-45 _tooltip bord-right" >
46
+ {{featured_field}}
47
+ </div>
48
+
49
+ {{#if enableEdit}}
50
+ <div class="td-right width-55">
51
+ <div class="btn-group width-100" >
52
+ <select disabled=disabled decorator='chosen'
53
+ value={{field_name}} name="unbxd-select" id="">
54
+ {{#magentoFields}}
55
+ <option class={{disabled}}
56
+ disabled={{disabled}}
57
+ value="{{this.field_name}}">
58
+ {{this.field_name}}
59
+ </option>
60
+ {{/magentoFields}}
61
+ </select>
62
+ </div>
63
+ </div>
64
+ {{else}}
65
+ <div class=" td-left width-55 _tooltip chosen-padding" >
66
+ {{field_name}}
67
+ </div>
68
+ {{/if}}
69
+ </div>
70
+ {{/mappedAttributes}}
71
+ </div>
72
+ </div>
73
+
74
+ </div>
75
+ </div>
76
+
77
+ <div class="row mar-0 mar-btm-10">
78
+ <div class="width-70 pull-left">
79
+ {{^enableEdit}}
80
+ <div class="pull-right pad-left-10">
81
+ <div on-click="enableEdit" class="unbxd-btn-outer width-140 clickable-btn unhoverd-btn">
82
+ <div class="button-edit-magento">
83
+ Edit Attribute
84
+ </div>
85
+ </div>
86
+ </div>
87
+ {{/enableEdit}}
88
+
89
+ {{#if enableEdit}}
90
+ <div class="pull-right {{saveMapping}} pad-left-10">
91
+ <div on-click="saveMapping" class="width-140 unbxd-btn-outer clickable-btn">
92
+ <div class="button-edit-magento button-save-magento mar-0-auto width-70">
93
+ Save
94
+ </div>
95
+ </div>
96
+ </div>
97
+
98
+ <div class="pull-right pad-left-10">
99
+ <div on-click="disableEdit" class=" width-140 clickable-btn unbxd-btn-outer">
100
+ <div class="button-edit-magento button-cancel-magento mar-0-auto width-70">
101
+ Cancel
102
+ </div>
103
+ </div>
104
+ </div>
105
+ {{/if}}
106
+ </div>
107
+
108
+ <div class="width-30 pull-left pad-top-5">
109
+ {{#if successMsg}}
110
+ <div class="mar-left-15 unbxd-success-msg">
111
+ <div class="unbxd-saved"></div>
112
+ {{successMsg}}
113
+ </div>
114
+ {{/if}}
115
+ <div class="unbxd-err-msg">
116
+ {{errorMsg}}
117
+ </div>
118
+ </div>
119
+
120
+ </div>
121
+
122
+
123
+
124
+ </div>
125
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/contact-form.html ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="modal fade template-preview-modal contact-us-modal" id="contactModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
2
+ <div class="modal-dialog pad-left-10p">
3
+
4
+ <div class="mail-popup" style="display: block;">
5
+ <div class="mail-popup-head mail-box pull-left pad-top-6p">
6
+ </div>
7
+ <div class="mail-popup-head pad-right-10">
8
+ SEND MAIL
9
+ <span class="close-icon-round pull-right back-pos-0-0 clickable"
10
+ data-dismiss="modal" aria-label="Close">
11
+ </span>
12
+ </div>
13
+
14
+ <div class="mail-popup-content">
15
+ <div class="mar-btm-20 to-holder ">
16
+ <span>To</span>
17
+ <input type="text" title="" value={{config.mail.to}} readonly="readonly" >
18
+ </div>
19
+ <div class="mar-btm-20 to-holder cc-holder cc-div">
20
+ <span class="pull-left pad-right-10">Cc</span>
21
+ <div class="emailid-collection">
22
+ {{#each ccEmailIds}}
23
+ <div>{{id}} <span on-click="removeId" class="remove-id"></span></div>
24
+ {{/each}}
25
+
26
+ <input on-keydown="addIdToCollection" type="text" title="" value={{ccMailId}} >
27
+ </div>
28
+
29
+ </div>
30
+ <div class="mar-btm-20 to-holder body-holder">
31
+ <textarea name="" id="" cols="30" rows="10"
32
+ class="mail-body"
33
+ value={{mailBody}}>
34
+ </textarea>
35
+ </div>
36
+ <div>
37
+ <input type="submit" id="unbxdSend" class="mail-send-btn" title="send" value="SEND"
38
+ on-click="sendMail" data-dismiss="modal" aria-label="Close">
39
+ </div>
40
+ </div>
41
+ </div>
42
+
43
+ </div>
44
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/custom-attr.html ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-20">
2
+ <div class="row mar-0">
3
+ <div class="col-md-60 border-0 pad-0 magento-head ">
4
+ Add Custom Attributes <span class="grey-text">[Optional]</span>
5
+ </div>
6
+ </div>
7
+ </div>
8
+
9
+
10
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 brd-btm-0 pad-btm-0">
11
+ <div class="col-md-60 magento-text ">
12
+ Certain fields like material, occasion, style may be present in {{_unbxdObject.siteName}}'s catalog and can be used to improve recommendations or be displayed in the search results. Since these are not default Unbxd attributes, please specify the data type for these fields.
13
+ </div>
14
+ </div>
15
+
16
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 brd-top-btm-0 height-100px add-attr">
17
+ <div on-click="showCustomAttribute" class="col-md-20 button-black-magento1 width-220 btn-add-attribute">
18
+ <div class="clickable-btn weight300" style="color: #fff !important;padding-right:16px;">
19
+ ADD ATTRIBUTE
20
+ </div>
21
+ </div>
22
+ </div>
23
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 brd-top-btm-0 custom-attributes">
24
+
25
+ <div>
26
+ <div class="width-88 pad-btm-10">
27
+ <div class="tr-row">
28
+ <div class="magento-tooltip unbxd-th pull-left width-35 pad-top-0 unbxd-table-head" data-content="Custom attributes are fields specific to your product catalog which aren’t included in recommendations or search results by default">
29
+ Custom Attribute
30
+ </div>
31
+ <div class=" unbxd-th pull-left width-45 border-right-rad pad-top-0 unbxd-table-head">
32
+ Data-Type
33
+ </div>
34
+ </div>
35
+ <div class="cudtom-attr-rows">
36
+ {{#each customAttributes:i}} {{>item}} {{/each}}
37
+ </div>
38
+ </div>
39
+
40
+
41
+ <div class="row mar-0 ">
42
+
43
+ <div class="width-70 pull-left">
44
+ <div class="pull-right pad-left-10 mar-left-5">
45
+ <div on-click="saveCustomAttribute" class="unbxd-btn-outer width-140 clickable-btn {{disableSaveCustomAttr}}">
46
+ <div class="button-edit-magento button-save-magento mar-0-auto width-70">
47
+ Save
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
52
+
53
+ <div class="width-30 pull-left pad-top-5">
54
+ {{#if customAttrSucessMsg}}
55
+ <div class="_unbxd-success unbxd-success-msg">
56
+ <div class="unbxd-saved"></div>
57
+ {{customAttrSucessMsg}}
58
+ </div>
59
+ {{/if}}
60
+ <div class="_unbxd-err unbxd-err-msg">
61
+ {{customAttrErrorMsg}}
62
+ </div>
63
+ </div>
64
+
65
+ </div>
66
+
67
+ <div class="row mar-0">
68
+ <div class="col-md-60 magento-text mar-btm-20 mar-top-20">
69
+ For a detailed explanation of data-types, click
70
+ <a target="_blank" href="http://docs.unbxd.com/recommendations/platforms/magento/integration.html"
71
+ class="blue-link-help">here</a>
72
+ </div>
73
+ <div id="dataHelp" class="width-60" style="display:none">
74
+ <div class="tr-row">
75
+ <div class="unbxd-th pull-left width-40 help-table-head unbxd-border">
76
+ Data-type
77
+ </div>
78
+ <div class=" unbxd-th pull-left width-40 help-table-head unbxd-border border-right-rad" >
79
+ Description
80
+ </div>
81
+ </div>
82
+ <div id="unbxdHelpRows" class="cudtom-attr-rows">
83
+ <div class="tr-row" style="height:35px">
84
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
85
+ text
86
+ </div>
87
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
88
+ Any string value
89
+ </div>
90
+ </div>
91
+ <div class="tr-row" style="height:35px">
92
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
93
+ decimal
94
+ </div>
95
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
96
+ Any decimal
97
+ </div>
98
+ </div>
99
+ <div class="tr-row" style="height:35px">
100
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
101
+ number
102
+ </div>
103
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
104
+ Any integer
105
+ </div>
106
+ </div>
107
+ <div class="tr-row" style="height:35px">
108
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
109
+ longText
110
+ </div>
111
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
112
+ Any string value
113
+ </div>
114
+ </div>
115
+ <div class="tr-row" style="height:35px">
116
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
117
+ link
118
+ </div>
119
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
120
+ Any URL
121
+ </div>
122
+ </div>
123
+ <div class="tr-row" style="height:35px">
124
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
125
+ date
126
+ </div>
127
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
128
+ SO 8601 date (YYYY­MM­DDTHH:MM:SSZ)
129
+ </div>
130
+ </div>
131
+ <div class="tr-row" style="height:35px">
132
+ <div class="td-left width-50 custom-attributes-td magento-border-left pull-left">
133
+ bool
134
+ </div>
135
+ <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
136
+ Can be “true” OR “false”
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/filters.html ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-20 brd-btm-0 clickable" on-click="showFilters">
2
+ <div class="row mar-0">
3
+ <div class="col-md-60 border-0 pad-0 magento-head" >
4
+ Filter Catalog Data
5
+ <span class="optional-text">[Optional]</span>
6
+ {{#if filterShown}}
7
+ <div class="minus-icon pull-right clickable"></div>
8
+ {{else}}
9
+ <div class="plus-icon pull-right clickable"></div>
10
+ {{/if}}
11
+ </div>
12
+ </div>
13
+ </div>
14
+
15
+ <div class="filter_toggle">
16
+
17
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 bordered-div brd-btm-0 brd-top-0">
18
+ <div class="col-md-60 col-sm-60 col-xs-60 background-grey pad-left-10 overflow-auto brd-top-btm-0">
19
+ <div class="info-icon-big pull-left mar-right-10 background-center" style="height:58px;"></div>
20
+ <div class="pad-top-10 grey-text unbxd-info-text" >
21
+ Note: The products whose status is disabled will not be updated
22
+ </div>
23
+ </div>
24
+ </div>
25
+
26
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 brd-top-btm-0 rules-block">
27
+ <div class="row mar-0">
28
+ <div class="col-md-30">
29
+ <div class="grey-text" style="font-size:16.45px;">
30
+ Add filter:
31
+ </div>
32
+ </div>
33
+ <div class="col-md-30">
34
+ <div class="magento-text pull-right">
35
+ <input type="checkbox" id="chkOutofStock" checked='{{include_out_of_stock}}'
36
+ class="mar-top-0 pad-right-10">
37
+ Include out of stock products
38
+ </div>
39
+ </div>
40
+ </div>
41
+
42
+ <div class="row rules-block">
43
+ {{#each filters:i}}
44
+ <div class="add-filter mar-top-15 col-md-17">
45
+ <div class="close-icon-round pull-right right-top-edge clickable"
46
+ on-click="removeFilter">
47
+ </div>
48
+ <div class="filter-select-box {{#if noField}} unbxd-input-error-parent {{/if}}">
49
+ <select decorator='chosen:site' value={{field_name}} name="unbxd-site">
50
+ {{#magentoFileds}}
51
+ <option class={{disabled}}
52
+ disabled={{disabled}}
53
+ value="{{this.field_name}}">
54
+ {{this.field_name}}
55
+ </option>
56
+ {{/magentoFileds}}
57
+ </select>
58
+ </div>
59
+ <div class="filter-select-box ">
60
+ <select decorator='chosen:site' value="{{field_type}}" name="unbxd-site">
61
+ <option value="string">Equal to</option>
62
+ <option value="number">In between</option>
63
+ </select>
64
+ </div>
65
+ {{#if field_type === 'string'}}
66
+ <div class="filter-input-box">
67
+ <input type="text" class="{{#if noValue}} unbxd-input-error {{/if}}"
68
+ value="{{value}}" on-keyup="valueChange">
69
+ </div>
70
+ {{/if}}
71
+
72
+ {{#if field_type === 'number'}}
73
+ <div class="filter-input-box filter-input-box-number">
74
+ <input class="{{#if noFrom}} unbxd-input-error {{/if}}"
75
+ value="{{from}}" on-keydown="fromValueChange" placeholder="From">
76
+ <input class="{{#if noTo}} unbxd-input-error {{/if}}"
77
+ value="{{to}}" on-keydown="toValueChange" placeholder="To">
78
+ </div>
79
+ {{/if}}
80
+
81
+ </div>
82
+
83
+ <div class="after-rule mar-top-15 pad-top-7p col-md-4 pad-left-right-0">
84
+ <div class="hr-line pull-left width-25p"></div>
85
+ <div class="pull-left rule-after-text width-50p pad-top-6p grey-text">OR</div>
86
+ <div class="hr-line pull-left width-25p"></div>
87
+ </div>
88
+ {{/each}}
89
+
90
+ <div class="add-filter mar-top-15 clickable
91
+ col-md-17 {{#if nomoreFilters}} hide{{/if}}">
92
+ <div class="centered-div mar-0-auto width-40p" style="margin-top:17%">
93
+ <div on-click="addFilter">
94
+ <div class="add-icon mar-0-auto bolder-grey">
95
+ </div>
96
+ <div class="grey-text pad-top-10" >
97
+ Add a new rule
98
+ </div>
99
+ </div>
100
+
101
+ </div>
102
+ </div>
103
+ </div>
104
+
105
+
106
+ </div>
107
+
108
+ <div class="col-md-60 col-sm-60 col-xs-60 pad-top-20 pad-btm-20 brd-top-btm-0 overflow-auto pad-btm-20">
109
+
110
+ <div class="mar-0-auto border-grey filters-saved-div clickable
111
+ {{#if filterSaveDisabled}} hide {{/if}}" on-click="saveFilters">
112
+ <div class="save-icon">
113
+ </div>
114
+ <div>
115
+ Save
116
+ </div>
117
+ </div>
118
+
119
+ {{#if saveSuccess}}
120
+ <div class="width-270 mar-0-auto border-grey filters-saved-div
121
+ {{#unless saveSuccess}} hide {{/unless}} " >
122
+ <div class="success-icon">
123
+ </div>
124
+ <div class="unbxd-success-msg">
125
+ Saved
126
+ </div>
127
+ </div>
128
+ {{/if}}
129
+
130
+ </div>
131
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/preview-modal.html ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <div class="modal fade template-preview-modal" id="previewModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
2
+ <div class="modal-dialog pad-top-10" data-dismiss="modal" aria-label="Close" >
3
+
4
+ <div id="test" class="image-div template-preview-modal-{{templatePreview}}">
5
+ </div>
6
+
7
+ </div>
8
+ </div>
9
+
10
+
skin/adminhtml/default/default/unbxd/{templates/custom.html → recscore/templates/partials/row.html} RENAMED
@@ -1,16 +1,18 @@
1
  <div class="tr-row">
2
 
3
- <div class="td-left width-40 custom-attributes-td magento-border-left pull-left">
4
  <div class="btn-group width-100" >
5
  <select disabled={{disabled}} decorator='chosen' value={{field_name}} name="unbxd-customattr" id="">
6
  {{#magentoFields}}
7
- <option class={{disabled}} value="{{value}}">{{value}}</option>
 
 
8
  {{/magentoFields}}
9
  </select>
10
  </div>
11
  </div>
12
 
13
- <div class="td-right width-40 custom-attributes-td magento-border-right pull-left">
14
  <div class="btn-group width-100">
15
  <select decorator='chosen' value="{{datatype}}"
16
  on-change="changeOfUnbxdAttr" name="unbxd-customattr" id="">
@@ -24,8 +26,10 @@
24
  <div class="pull-left width-20">
25
  <div on-click="removeRow" class="remove-row clickable-btn pull-left">
26
  </div>
 
27
  <div on-click="newTodo" class="add-row clickable-btn pull-left">
28
  </div>
 
29
  </div>
30
 
31
  </div>
1
  <div class="tr-row">
2
 
3
+ <div class="td-left width-35 custom-attributes-td magento-border-left pull-left">
4
  <div class="btn-group width-100" >
5
  <select disabled={{disabled}} decorator='chosen' value={{field_name}} name="unbxd-customattr" id="">
6
  {{#magentoFields}}
7
+ <option class={{disabled}} value="{{this.field_name}}">
8
+ {{this.field_name}}
9
+ </option>
10
  {{/magentoFields}}
11
  </select>
12
  </div>
13
  </div>
14
 
15
+ <div class="td-right width-45 custom-attributes-td magento-border-right pull-left">
16
  <div class="btn-group width-100">
17
  <select decorator='chosen' value="{{datatype}}"
18
  on-change="changeOfUnbxdAttr" name="unbxd-customattr" id="">
26
  <div class="pull-left width-20">
27
  <div on-click="removeRow" class="remove-row clickable-btn pull-left">
28
  </div>
29
+ {{#if field_name !== "" && datatype !== ""}}
30
  <div on-click="newTodo" class="add-row clickable-btn pull-left">
31
  </div>
32
+ {{/if}}
33
  </div>
34
 
35
  </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/switch-off.html ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <div class="bootstrap-switch bootstrap-switch-off pull-left">
2
+ <div class="width-170 mar-left-56n">
3
+ <span class="bootstrap-switch-label">
4
+ &nbsp;
5
+ </span>
6
+ <span class="bootstrap-switch-handle-off bootstrap-switch-default width-56 mar-left-32p">
7
+ OFF
8
+ </span>
9
+ </div>
10
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/partials/switch-on.html ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <div class="bootstrap-switch pull-left">
2
+ <div class="width-170">
3
+ <span class="bootstrap-switch-handle-on bootstrap-switch-primary pull-left">
4
+ ON
5
+ </span>
6
+ <span class="bootstrap-switch-label pull-left width-60 height-30">
7
+ &nbsp;
8
+ </span>
9
+ </div>
10
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/search/api.html ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row mar-0 magento-block pad-top-0">
2
+ <div class="row mar-0">
3
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-0 magento-breadcrum">
4
+ <div class="row mar-0">
5
+ <div class="col-md-40 magento-bread-text ">
6
+ <span class="breadcrum-prev clickable" on-click="goBack">Search</span>
7
+ <span class="breadcrumb-arrow"></span>
8
+ <span class="breadcrum-current">API Integration</span>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ </div>
13
+
14
+ <div class="row mar-0">
15
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20">
16
+ <div class="row mar-0">
17
+ <div class="col-md-60 border-0 pad-0 magento-head mar-btm-10">
18
+ API Integration
19
+ </div>
20
+ </div>
21
+
22
+ <div class="row mar-0">
23
+ <div class="col-md-60 magento-text2 magento-text">
24
+ UNBXD search will replace the default magento catalog search. Following search functionalities will be supported
25
+ <ul>
26
+ <li>Relevant Search</li>
27
+ <li>Pagination</li>
28
+ <li>Sorting</li>
29
+ <li>Spellcheck</li>
30
+ <li>Facets</li>
31
+ <li>Filters</li>
32
+ </ul>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+
38
+ <div class="row mar-0">
39
+
40
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 brd-top-0 pad-top-0">
41
+ <div class="row mar-0">
42
+ <div class="col-md-50 border-0 magento-head pull-left mar-btm-10">
43
+ Activate or Deactivate API Integration
44
+ </div>
45
+ <div class="col-md-50 magento-text mar-btm-30 unbxd-error-msg ">
46
+ <div class="pull-right">{{errorMsg}}</div>
47
+ </div>
48
+ <div class="col-md-7 pad-btm-20 mar-mtop-30 pull-right col-md-offset-3">
49
+ <div on-click="toggleAPIIntegration">
50
+ {{#if search_mod_status}}
51
+ {{>switchon}}
52
+ {{else}}
53
+ {{>switchoff}}
54
+ {{/if}}
55
+ </div>
56
+ </div>
57
+ <div class="clear"></div>
58
+
59
+ <div class="search_info_box">
60
+ <div class="info-icon-big pull-left mar-right-10 box-30"></div>
61
+ <span>Note</span> : If you have implemented custom templates or installed third party modules some of the functionalities may not work. Please contact our support team at
62
+ <a href="mailto:support@unbxd.com">support@unbxd.com</a> and we will help you out to fix it.
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+
68
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/search/hosted.html ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row mar-0 magento-block pad-top-0">
2
+
3
+ <div class="row mar-0">
4
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-0 magento-breadcrum top-rad">
5
+ <div class="row mar-0">
6
+ <div class="col-md-40 magento-bread-text ">
7
+ <span class="breadcrum-prev clickable" on-click="goBack">Search</span>
8
+ <span class="breadcrumb-arrow"></span>
9
+ <span class="breadcrum-current">Hosted Search</span>
10
+ </div>
11
+ </div>
12
+ </div>
13
+ </div>
14
+
15
+ <div class="row mar-0">
16
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-btm-20 rad-btm ">
17
+ <div class="row mar-0">
18
+ <div class="col-md-60 border-0 pad-0 magento-head mar-btm-10">
19
+ Hosted Search
20
+ </div>
21
+ </div>
22
+
23
+ <div class="row mar-0">
24
+ <div class="col-md-60 magento-text2 magento-text">
25
+ Redirect visitors to a subdomain (search.yoursite.com) when they search. To get started:
26
+ <ul>
27
+ <li>
28
+ The Unbxd team will create the hosted search results page for your site. This page will be identical to your site in styling & design
29
+ </li>
30
+ <li>
31
+ You’ll then need to add a CNAME record which will point to the UNBXD hosted search endpoint. Here are the steps to add the CNAME “search.yoursite.com”
32
+ <ul class="mar-top-0">
33
+ <li> Login to your domain management system </li>
34
+ <li> Navigate to DNS management </li>
35
+ <li> Find the CNAME records section and add a new CNAME record
36
+ </li>
37
+ <li>Enter the value for your subdomain in the host field. E.g. search.yoursite.com</li>
38
+ </ul>
39
+ </li>
40
+ </ul>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+
46
+
47
+ <div class="row mar-0 {{#if hostedSearch}} hide {{/if}}">
48
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 pad-top-20 txt-center">
49
+ <div class="row mar-0">
50
+ <div class="col-md-100 magento-text mar-btm-30">
51
+ To implement hosted search, please contact our support team. Once we receive a request, we’ll get back to you within 24 hours
52
+ </div>
53
+ <div class="">
54
+ <input class="btn-magento-blue
55
+ {{#if requestedSetup}} disabled-btn {{/if}}" type="button" id="contact_support"
56
+ value="{{#if requestedSetup}} Requested For Setup{{else}} Request For Setup {{/if}}" data-toggle="modal" data-hostedSearch=true
57
+ data-target="#contactModal">
58
+ </div>
59
+ <div class="magento-text pad-top-20">
60
+ To know more about hosted search, refer our <a href="#" title="documentation">documentation</a>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <div class="row mar-0 {{^hostedSearch}} hide {{/hostedSearch}}">
67
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block pad-top-20 brd-top-0 pad-top-0 btm-rad">
68
+ <div class="row mar-0">
69
+ <div class="col-md-50 border-0 magento-head pull-left mar-btm-10">
70
+ Activate or Deactivate Hosted Search
71
+ </div>
72
+ <div class="col-md-50 magento-text mar-mtop-20 unbxd-error-msg ">
73
+ <div class="pull-right">{{errorMsg}}</div>
74
+ </div>
75
+ <div class="col-md-7 pad-btm-20 mar-mtop-30 pull-right col-md-offset-3">
76
+ <div on-click="toggleSearchIntegration">
77
+ {{#if search_hosted_status}}
78
+ {{>switchon}}
79
+ {{else}}
80
+ {{>switchoff}}
81
+ {{/if}}
82
+ </div>
83
+ </div>
84
+ <div class="clear"></div>
85
+
86
+ <div class="search_info_box">
87
+ <div class="info-icon-big pull-left mar-right-10 box-30"></div>
88
+ <span>Note</span> : If you have implemented custom templates or installed third party modules some of the functionalities may not work. Please contact our support team at
89
+ <a href="mailto:support@unbxd.com">support@unbxd.com</a> and we will help you out to fix it.
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+
95
+ </div>
skin/adminhtml/default/default/unbxd/recscore/templates/search/landing.html ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row mar-0 magento-block pad-top-0">
2
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block top-rad btm-rad">
3
+ <div class="row mar-0">
4
+ <div class="col-md-60 border-0 pad-0 magento-head mar-btm-10">
5
+ Choose a method to implement search
6
+ </div>
7
+ </div>
8
+
9
+
10
+
11
+ <div class="row mar-0" on-click="showHostedSearch">
12
+ <div class="col-md-60 magento-search-type ">
13
+ <div class="row mar-0">
14
+ <div class="col-md-55 magento-search-copy ">
15
+ <div class="search-type">
16
+ <div class="search-head">
17
+ Hosted search
18
+ </div>
19
+ <div class="search-desc">
20
+ Use Unbxd to power your search results, with a hosted search result page. Redirect visitors to a <a href="#">search.yoursite.com</a> subdomain when they search, with identical styling and a seamless experience.
21
+ </div>
22
+ <div class="{{#if search_hosted_status}}search-active-btn{{else}}hide{{/if}}">
23
+ Active
24
+ </div>
25
+ </div>
26
+ </div>
27
+ <div class="col-md-5 magento-search-type-arrow ">
28
+ <div>
29
+
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+
36
+ <div class="row mar-0" on-click="showAPISearch">
37
+ <div class="col-md-60 magento-search-type ">
38
+ <div class="row mar-0">
39
+ <div class="col-md-55 magento-search-copy ">
40
+ <div class="search-type">
41
+ <div class="search-head">
42
+ Magento API implementaion
43
+ </div>
44
+ <div class="search-desc">
45
+ Replace Magento's default site search with an Unbxd API integration. Use Unbxd to power relevant results and add several essential site search features like autocomplete, spellcheck, faceted search and more.
46
+ </div>
47
+ <div class="{{#if search_mod_status}}search-active-btn{{else}}hide{{/if}}">
48
+ Active
49
+ </div>
50
+ </div>
51
+ </div>
52
+ <div class="col-md-5 magento-search-type-arrow ">
53
+ <div>
54
+
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+
61
+ <div class="row mar-0">
62
+ <div class="col-md-60 magento-search-type background-disabled">
63
+ <div class="row mar-0">
64
+ <div class="col-md-55 magento-search-copy ">
65
+ <div class="search-type">
66
+ <div class="search-head">
67
+ Instant search ( Coming Soon )
68
+ </div>
69
+ <div class="search-desc">
70
+ Add an instant, search-as-you-type experience to your site.
71
+ </div>
72
+ <div class="hide">
73
+ Active
74
+ </div>
75
+ </div>
76
+ </div>
77
+ <div class="col-md-5 magento-search-type-arrow " style="background-color:#e6ecec">
78
+ <div>
79
+
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </div>
85
+
86
+ </div>
87
+ </div>
skin/adminhtml/default/default/unbxd/{templates → recscore/templates}/widgets.html RENAMED
@@ -1,25 +1,24 @@
1
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block border-left-color pad-btm-10p">
2
-
3
- <div class="row mar-0">
4
- <div class="col-md-60 magento-head pad-0 mar-btm-20">
5
- Install Recommendation Widget
6
- </div>
7
- </div>
8
- <div class="row mar-0">
9
- <div class="col-md-60 magento-text pad-0 ">
10
- Recommendation widgets can be displayed on the Homepage, Category Page, Brand Pages, <br> on the Cart and Product Detail Pages.
11
  </div>
12
  </div>
13
- <br>
14
- <div class="row mar-0">
15
- <div class="col-md-60 magento-text pad-0 mar-btm-20">
16
- Unbxd Recommendation widgets can be integrated in either of the methods below
 
 
17
  </div>
18
- </div>
19
  <div class="row mar-0 magento-text">
20
  <ul>
21
- <li class="pad-btm-20">1.Through the CMS. See steps to locate templates using CMS
22
- <span class="blue-link-help" on-click="showCMSHelp">here</span>
 
23
  <div id="cmsHelp" class="row mar-0 pad-left-30 cms-help" style="display:none">
24
  <ul>
25
  <li>a) On the Magento store admin, navigate to CMS -> Pages</li>
@@ -29,64 +28,47 @@
29
  </ul>
30
  </div>
31
  <div style="padding-left:17px;">
32
- Refer to table(a) below which provides information of page type applicable for each snippet
33
  </div>
34
  </li>
35
-
36
- <li>
37
- 2) By pasting the snippets on the appropriate template files
38
- <div class="row mar-0">
39
- <div class="col-md-60 magento-text pad-0 cms-help" style="padding-bottom:0">
40
- For eg – To display the <b>“Recently Viewed”</b> widget on the HomePage, place the below snippet in the app/design/frontend/{your_package}/{your_theme}/template/catalog/product/view.phtml file
41
- </div>
42
- </div>
43
- <div class="row">
44
- <div class="col-md-60 col-sm-60 col-xs-60">
45
- <div class="script-block" style="border:0;padding-top:10px">
46
- <pre class="prettyprint-dashboard"> &lt;div id=<span class="pun">"unbxd_recently_viewed"&gt;</span>&lt;/div&gt;
47
- </pre>
48
- </div>
49
- </div>
50
- </div>
51
- </li>
52
  </ul>
53
  </div>
54
- <div class="row mar-0">
55
  <b>Table (a)</b>
56
  </div>
57
 
58
- <div class="row mar-0">
59
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0">
60
  <div class="row mar-0">
61
- <div class="col-md-60 col-sm-60 pad-0 mar-btm-30 ">
62
- <div class="table table-magento hide-over-flow" style="width: 95%;">
63
  <div style="width: 100%;height: 50px;">
64
- <div class="unbxd-div-td unbxd-th width-30 unbxd-text-verticle-center "
65
- data-title="Magento Attribute" data-content="Magento fields in your feed" style="border-left: 0px !important;" >
66
  Widget Type
67
  </div>
68
 
69
- <div class="unbxd-div-td unbxd-th width-40 unbxd-text-verticle-center no-left-top-rad" data-title="Magento Attribute" data-content="Magento fields in your feed" >
70
  HTML Snippet
71
  </div>
72
 
73
- <div class="unbxd-div-td unbxd-th width-30 unbxd-text-verticle-center no-left-top-rad no-border-right" data-title="Magento Attribute" data-content="Magento fields in your feed" >
74
  Page Type
75
  </div>
76
  </div>
77
 
78
 
79
  <div>
80
- <div class="tr-row ">
81
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
82
  Recently Viewed
83
  </div>
84
 
85
- <div class="unbxd-div-td pad-left-10 width-40 word-break unbxd-text-center">
86
  &ltdiv id="unbxd_recently_viewed"&gt; &lt/div&gt;
87
  </div>
88
 
89
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center">
90
 
91
  Home Page, Product Page
92
  </div>
@@ -94,119 +76,120 @@
94
  </div>
95
 
96
  <div class="tr-row ">
97
- <div class="unbxd-div-td pad-left-10 width-30 child-right unbxd-text-center unbxd-caps">Recommended for you
98
  </div>
99
 
100
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
101
  &ltdiv id="unbxd_recommended_for_you"&gt; &lt/div&gt;
102
  </div>
103
 
104
- <div class="unbxd-div-td pad-left-10 width-30 word-break child-right word-break unbxd-text-center">
105
  Home Page, Product Page
106
  </div>
107
 
108
  </div>
109
 
110
  <div class="tr-row ">
111
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
112
  More Like these
113
  </div>
114
 
115
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
116
  &ltdiv id="unbxd_more_like_these"&gt; &lt/div&gt;
117
  </div>
118
 
119
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center">
120
  Product Page
121
  </div>
122
 
123
  </div>
124
  <div class="tr-row ">
125
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
126
  Viewed also Viewed
127
  </div>
128
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
129
  &ltdiv id="unbxd_also_viewed"&gt; &lt/div&gt;
130
  </div>
131
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center">
132
  Product Page
133
  </div>
134
 
135
  </div>
136
 
137
- <div class="tr-row ">
138
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">Bought Also Bought
139
  </div>
140
 
141
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
142
  &ltdiv id="unbxd_also_bought"&gt; &lt/div&gt;
143
  </div>
144
 
145
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Product Page
146
  </div>
147
  </div>
148
 
149
  <div class="tr-row ">
150
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">Cart Recommendations
151
  </div>
152
 
153
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
154
  &ltdiv id="unbxd_cart_recommendations"&gt; &lt/div&gt;
155
  </div>
156
 
157
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Cart Page
158
  </div>
159
  </div>
160
 
161
- <div class="tr-row ">
162
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
163
  HomePage Top Sellers
164
  </div>
165
 
166
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
167
  &ltdiv id="unbxd_top_sellers"&gt; &lt/div&gt;
168
  </div>
169
 
170
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Product Pages
 
171
  </div>
172
 
173
  <div class="tr-row ">
174
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
175
  Category Top Sellers
176
  </div>
177
 
178
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
179
  &ltdiv id="unbxd_category_top_sellers"&gt; &lt/div&gt;
180
  </div>
181
 
182
 
183
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Category/Sub-category Pages
184
  </div>
185
  </div>
186
 
187
- <div class="tr-row ">
188
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
189
  Brand Top Sellers
190
  </div>
191
 
192
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
193
  &ltdiv id="unbxd_brand_top_sellers"&gt; &lt/div&gt;
194
  </div>
195
 
196
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Brand Pages
197
  </div>
198
  </div>
199
 
200
  <div class="tr-row ">
201
- <div class="unbxd-div-td pad-left-10 width-30 unbxd-text-center unbxd-caps">
202
  PDP Top Sellers
203
  </div>
204
 
205
- <div class="unbxd-div-td pad-left-10 width-40 word-break child-right word-break unbxd-text-center">
206
  &ltdiv id="unbxd_pdp_top_sellers"&gt; &lt/div&gt;
207
  </div>
208
 
209
- <div class="unbxd-div-td pad-left-10 width-30 word-break unbxd-text-center"> Product Pages
210
  </div>
211
  </div>
212
 
@@ -215,23 +198,52 @@
215
 
216
  </div>
217
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
 
219
- <div class="row mar-0">
220
  <b>Table (b)</b>
221
  </div>
222
 
223
- <div class="row mar-0">
224
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0">
225
- <div class="row mar-0" style="width: 95%;">
226
- <div class="col-md-60 col-sm-60 pad-0 mar-btm-30 ">
227
  <div class="table table-magento hide-over-flow">
228
  <div style="width: 100%;height: 50px;">
229
- <div class="unbxd-div-td unbxd-th width-20 unbxd-text-verticle-center "
230
- data-title="Magento Attribute" data-content="Magento fields in your feed" style="border-left: 0px !important;" >
231
  Page Type
232
  </div>
233
 
234
- <div class="unbxd-div-td unbxd-th width-80 unbxd-text-verticle-center no-left-top-rad no-border-right" data-title="Magento Attribute" data-content="Magento fields in your feed" >
235
  Template File
236
  </div>
237
  </div>
@@ -239,49 +251,49 @@
239
 
240
  <div>
241
  <div class="tr-row ">
242
- <div class="unbxd-div-td pad-left-10 width-20 child-right unbxd-text-center">Home Page</div>
243
 
244
- <div class="unbxd-div-td pad-left-10 width-80 word-break child-right word-break unbxd-text-center">
245
  app/design/frontend/{your_package}/{your_theme}/template/sample/home.phtml
246
  </div>
247
 
248
  </div>
249
  <div class="tr-row ">
250
- <div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
251
  Product Page
252
  </div>
253
 
254
- <div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
255
  app/design/frontend/{your_package}/{your_theme}/template/catalog/product/view.phtml
256
  </div>
257
  </div>
258
 
259
  <div class="tr-row ">
260
- <div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
261
  Cart Page
262
  </div>
263
 
264
- <div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
265
  app/design/frontend/{your_package}/{your_theme}/template/checkout/cart.phtml
266
  </div>
267
  </div>
268
 
269
  <div class="tr-row ">
270
- <div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
271
  Category Listing Page
272
  </div>
273
 
274
- <div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
275
  app/design/frontend/{your_package}/{your_theme}/template/catalog/product/list.phtml
276
  </div>
277
  </div>
278
 
279
  <div class="tr-row ">
280
- <div class="unbxd-div-td pad-left-10 width-20 unbxd-text-center">
281
  Brand Pages
282
  </div>
283
 
284
- <div class="unbxd-div-td pad-left-10 width-80 word-break unbxd-text-center">
285
  app/design/frontend/{your_package}/{your_theme}/template/catalog/product/list.phtml
286
  </div>
287
  </div>
@@ -295,9 +307,22 @@
295
 
296
 
297
  <div class="row mar-0 magento-text">
298
- In case you face any issues, please contact us at <span class="unbxd-blue-link">support@unbxd.com</span>
299
  </div>
300
 
 
301
  </div>
302
  </div>
303
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="row mar-0 magento-block pad-top-0">
2
+
3
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-0 pad-top-20 pad-btm-20 top-rad">
4
+ <div class="row mar-0">
5
+ <div class="col-md-60 border-0 pad-0 magento-head ">
6
+ Install Recommendation Widgets
7
+ </div>
 
 
 
8
  </div>
9
  </div>
10
+ <div class="col-md-60 col-sm-60 col-xs-60 magento-inner-block brd-btm-none btm-rad">
11
+ <div class="row mar-0">
12
+ <div class="col-md-60 magento-text mar-btm-20">
13
+ Unbxd recommendation widgets can be integrated by adding a one-line HTML snippet to the respective pages on your site.
14
+ These widgets can be installed in one of the follwoing ways:
15
+ </div>
16
  </div>
 
17
  <div class="row mar-0 magento-text">
18
  <ul>
19
+ <li class="pad-btm-20">
20
+ 1.Through the CMS
21
+ <span class="blue-link-help" on-click="showCMSHelp">know more</span>
22
  <div id="cmsHelp" class="row mar-0 pad-left-30 cms-help" style="display:none">
23
  <ul>
24
  <li>a) On the Magento store admin, navigate to CMS -> Pages</li>
28
  </ul>
29
  </div>
30
  <div style="padding-left:17px;">
31
+ Refer to table(a) for more information on where the HTML snippets need to be added on your site
32
  </div>
33
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  </ul>
35
  </div>
36
+ <div class="row mar-0 pad-10 table-widget clickable mar-btm-20" onclick="myFunction('table-data1')">
37
  <b>Table (a)</b>
38
  </div>
39
 
40
+ <div class="row mar-0 table-widget-data" id="table-data1">
41
+ <div class="col-md-60 col-sm-60 col-xs-60 ">
42
  <div class="row mar-0">
43
+ <div class="col-md-60 col-sm-60 mar-btm-30 ">
44
+ <div class="table table-magento hide-over-flow" style="width: 100%;">
45
  <div style="width: 100%;height: 50px;">
46
+ <div class="unbxd-div-td unbxd-th width-28 unbxd-text-verticle-center unbxd-table-head"
47
+ data-content="Magento fields in your feed" style="border-left: 0px !important;" >
48
  Widget Type
49
  </div>
50
 
51
+ <div class="unbxd-div-td unbxd-th width-42 unbxd-text-verticle-center no-left-top-rad unbxd-table-head" data-content="Magento fields in your feed" >
52
  HTML Snippet
53
  </div>
54
 
55
+ <div class="unbxd-div-td unbxd-th width-30 unbxd-text-verticle-center no-left-top-rad no-border-right unbxd-table-head" data-content="Magento fields in your feed" >
56
  Page Type
57
  </div>
58
  </div>
59
 
60
 
61
  <div>
62
+ <div class="tr-row ">
63
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
64
  Recently Viewed
65
  </div>
66
 
67
+ <div class="unbxd-div-td pad-left-10 width-42 word-break ">
68
  &ltdiv id="unbxd_recently_viewed"&gt; &lt/div&gt;
69
  </div>
70
 
71
+ <div class="unbxd-div-td pad-left-10 width-30 word-break ">
72
 
73
  Home Page, Product Page
74
  </div>
76
  </div>
77
 
78
  <div class="tr-row ">
79
+ <div class="unbxd-div-td pad-left-10 width-28 child-right unbxd-caps">Recommended for you
80
  </div>
81
 
82
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
83
  &ltdiv id="unbxd_recommended_for_you"&gt; &lt/div&gt;
84
  </div>
85
 
86
+ <div class="unbxd-div-td pad-left-10 width-30 word-break child-right word-break ">
87
  Home Page, Product Page
88
  </div>
89
 
90
  </div>
91
 
92
  <div class="tr-row ">
93
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
94
  More Like these
95
  </div>
96
 
97
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
98
  &ltdiv id="unbxd_more_like_these"&gt; &lt/div&gt;
99
  </div>
100
 
101
+ <div class="unbxd-div-td pad-left-10 width-30 word-break ">
102
  Product Page
103
  </div>
104
 
105
  </div>
106
  <div class="tr-row ">
107
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
108
  Viewed also Viewed
109
  </div>
110
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
111
  &ltdiv id="unbxd_also_viewed"&gt; &lt/div&gt;
112
  </div>
113
+ <div class="unbxd-div-td pad-left-10 width-30 word-break ">
114
  Product Page
115
  </div>
116
 
117
  </div>
118
 
119
+ <div class="tr-row ">
120
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">Bought Also Bought
121
  </div>
122
 
123
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
124
  &ltdiv id="unbxd_also_bought"&gt; &lt/div&gt;
125
  </div>
126
 
127
+ <div class="unbxd-div-td pad-left-10 width-30 word-break "> Product Page
128
  </div>
129
  </div>
130
 
131
  <div class="tr-row ">
132
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">Cart Recommendations
133
  </div>
134
 
135
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
136
  &ltdiv id="unbxd_cart_recommendations"&gt; &lt/div&gt;
137
  </div>
138
 
139
+ <div class="unbxd-div-td pad-left-10 width-30 word-break "> Cart Page
140
  </div>
141
  </div>
142
 
143
+ <div class="tr-row ">
144
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
145
  HomePage Top Sellers
146
  </div>
147
 
148
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
149
  &ltdiv id="unbxd_top_sellers"&gt; &lt/div&gt;
150
  </div>
151
 
152
+ <div class="unbxd-div-td pad-left-10 width-30 word-break "> Product Pages
153
+ </div>
154
  </div>
155
 
156
  <div class="tr-row ">
157
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
158
  Category Top Sellers
159
  </div>
160
 
161
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
162
  &ltdiv id="unbxd_category_top_sellers"&gt; &lt/div&gt;
163
  </div>
164
 
165
 
166
+ <div class="unbxd-div-td pad-left-10 width-30 word-break "> Category/Sub-category Pages
167
  </div>
168
  </div>
169
 
170
+ <div class="tr-row ">
171
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
172
  Brand Top Sellers
173
  </div>
174
 
175
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
176
  &ltdiv id="unbxd_brand_top_sellers"&gt; &lt/div&gt;
177
  </div>
178
 
179
+ <div class="unbxd-div-td pad-left-10 width-30 word-break "> Brand Pages
180
  </div>
181
  </div>
182
 
183
  <div class="tr-row ">
184
+ <div class="unbxd-div-td pad-left-10 width-28 unbxd-caps">
185
  PDP Top Sellers
186
  </div>
187
 
188
+ <div class="unbxd-div-td pad-left-10 width-42 word-break child-right word-break ">
189
  &ltdiv id="unbxd_pdp_top_sellers"&gt; &lt/div&gt;
190
  </div>
191
 
192
+ <div class="unbxd-div-td pad-left-10 width-30 word-break "> Product Pages
193
  </div>
194
  </div>
195
 
198
 
199
  </div>
200
  </div>
201
+ </div>
202
+ </div>
203
+
204
+ <div class="row mar-0 magento-text">
205
+ <ul>
206
+
207
+ <li>
208
+ 2. Using a Magento Template
209
+ <div class="row mar-0">
210
+ <div class="col-md-60 magento-text cms-help" style="padding-bottom:0">
211
+ For eg – To display the <b>“Recently Viewed”</b> widget on the HomePage, place the below snippet in the app/design/frontend/{your_package}/{your_theme}/template/catalog/product/view.phtml file
212
+
213
+ <div class="row background-grey pad-btm-15 rec-code-eg">
214
+ <div class="pad-left-10 background-white unbxd-code">
215
+ &lt;div id=<span class="pun">"unbxd_recently_viewed"&gt;</span>&lt;/div&gt;
216
+ </div>
217
+ </div>
218
+
219
+ </div>
220
+ </div>
221
+ <div class="row">
222
+ <div class="script-block hide" style="border:0;padding-top:10px">
223
+ <pre class="prettyprint-dashboard">
224
+ </pre>
225
+ </div>
226
+ </div>
227
+ </li>
228
+ </ul>
229
+ </div>
230
 
231
+ <div class="row mar-0 pad-10 table-widget clickable mar-btm-20" onclick="myFunction('table-data2')">
232
  <b>Table (b)</b>
233
  </div>
234
 
235
+ <div class="row mar-0 table-widget-data" id="table-data2">
236
+ <div class="col-md-60 col-sm-60 col-xs-60 ">
237
+ <div class="row mar-0" style="width: 100%;">
238
+ <div class="col-md-60 col-sm-60 mar-btm-30 ">
239
  <div class="table table-magento hide-over-flow">
240
  <div style="width: 100%;height: 50px;">
241
+ <div class="unbxd-div-td unbxd-th width-20 unbxd-text-verticle-center unbxd-table-head"
242
+ data-content="Magento fields in your feed" style="border-left: 0px !important;" >
243
  Page Type
244
  </div>
245
 
246
+ <div class="unbxd-div-td unbxd-th width-80 unbxd-text-verticle-center no-left-top-rad no-border-right unbxd-table-head" data-content="Magento fields in your feed" >
247
  Template File
248
  </div>
249
  </div>
251
 
252
  <div>
253
  <div class="tr-row ">
254
+ <div class="unbxd-div-td pad-left-10 width-20 child-right ">Home Page</div>
255
 
256
+ <div class="unbxd-div-td pad-left-10 width-80 word-break child-right word-break ">
257
  app/design/frontend/{your_package}/{your_theme}/template/sample/home.phtml
258
  </div>
259
 
260
  </div>
261
  <div class="tr-row ">
262
+ <div class="unbxd-div-td pad-left-10 width-20 ">
263
  Product Page
264
  </div>
265
 
266
+ <div class="unbxd-div-td pad-left-10 width-80 word-break ">
267
  app/design/frontend/{your_package}/{your_theme}/template/catalog/product/view.phtml
268
  </div>
269
  </div>
270
 
271
  <div class="tr-row ">
272
+ <div class="unbxd-div-td pad-left-10 width-20 ">
273
  Cart Page
274
  </div>
275
 
276
+ <div class="unbxd-div-td pad-left-10 width-80 word-break ">
277
  app/design/frontend/{your_package}/{your_theme}/template/checkout/cart.phtml
278
  </div>
279
  </div>
280
 
281
  <div class="tr-row ">
282
+ <div class="unbxd-div-td pad-left-10 width-20 ">
283
  Category Listing Page
284
  </div>
285
 
286
+ <div class="unbxd-div-td pad-left-10 width-80 word-break ">
287
  app/design/frontend/{your_package}/{your_theme}/template/catalog/product/list.phtml
288
  </div>
289
  </div>
290
 
291
  <div class="tr-row ">
292
+ <div class="unbxd-div-td pad-left-10 width-20 ">
293
  Brand Pages
294
  </div>
295
 
296
+ <div class="unbxd-div-td pad-left-10 width-80 word-break ">
297
  app/design/frontend/{your_package}/{your_theme}/template/catalog/product/list.phtml
298
  </div>
299
  </div>
307
 
308
 
309
  <div class="row mar-0 magento-text">
310
+ In case you face any issues, please contact support
311
  </div>
312
 
313
+ </div>
314
  </div>
315
  </div>
316
+ </div>
317
+ <script type="text/javascript">
318
+ function myFunction(id) {
319
+ var e = document.getElementById(id);
320
+ if (e.style.display == 'none' || e.style.display=='')
321
+ {
322
+ e.style.display = 'block';
323
+ }
324
+ else e.style.display = 'none';
325
+ }
326
+
327
+
328
+ </script>
skin/adminhtml/default/default/unbxd/templates/analytics.html DELETED
@@ -1,155 +0,0 @@
1
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block pad-top-20 border-left-color pad-btm-10">
2
-
3
- {{^_unbxdObject.step2}}
4
- <div class="row mar-0">
5
- <div class="col-md-60 magento-redbar pad-0 mar-btm-10">
6
- PLEASE MAP CATALOG AND UPLOAD DATA FIRST
7
- </div>
8
- </div>
9
- <div class="unbxd-cover">
10
- </div>
11
- {{/_unbxdObject.step2}}
12
-
13
- <div on-click="disabledClick" class="{{^_unbxdObject.step2}} unbxd-disabler {{/_unbxdObject.step2}}">
14
-
15
- <div class="row mar-0">
16
- <div class="col-md-60 magento-head pad-0 mar-btm-20">
17
- Event Tracking
18
- </div>
19
- </div>
20
- <div class="row mar-0">
21
- <div class="col-md-60 magento-text pad-0 mar-btm-30">
22
- Unbxd Recommendations automatically tries to add event handling tags to important visitor events like Product Views, Additions to Cart and Orders.
23
- </div>
24
- </div>
25
- <div class="row mar-0">
26
- <div class="col-md-60 magento-text pad-0">
27
- These are required for
28
- </div>
29
- </div>
30
- <div class="row mar-0">
31
- <div class="col-md-60 magento-text pad-0">
32
- a) Reporting
33
- </div>
34
- </div>
35
- <div class="row mar-0">
36
- <div class="col-md-60 magento-text pad-0 mar-btm-30">
37
- b) Tracking User-behavior for providing recommendations
38
- </div>
39
- </div>
40
- <div class="row mar-0 unbxd-center-div pad-btm-20" style="color:#929494">
41
- See below to check if the analytics integration is successful. Troubleshoot <a target="_blank" class="blue-link-help" href="http://unbxd.com/docs/product-recommendations/platforms/magento/integration.html#analytics">here</a>
42
- </div>
43
- <div class="row mar-0">
44
- <div class="col-sm-60 col-xs-60 pad-0 fixed-width-800">
45
- <div class="row">
46
- <div class="col-md-60 col-sm-60 col-xs-60 mar-btm-30">
47
-
48
- <div class="row mar-0">
49
- <div class="col-md-17 col-sm-60 pad-0 magento-analytics-block
50
- {{^productClick}} magento-analytics-block1 {{/productClick}} mar-rgt-52 pad-btm-20">
51
- <div class="row">
52
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
53
- PRODUCT VIEWS
54
- </div>
55
- </div>
56
- <div class="row">
57
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
58
- {{^productClick}} magento-analytics-cross{{/productClick}} mar-btm-20">
59
- &nbsp;
60
- </div>
61
- </div>
62
- <div class="row">
63
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
64
- {{#if productClick}}
65
- Captured
66
- {{else}}
67
- Waiting for
68
- {{/if}}
69
- </div>
70
- </div>
71
- <div class="row">
72
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
73
- Product Click
74
- </div>
75
- </div>
76
-
77
- </div>
78
-
79
- <div class="col-md-17 col-sm-60 pad-0 magento-analytics-block
80
- {{^addToCartClick}}magento-analytics-block1{{/addToCartClick}} mar-rgt-52 pad-btm-20">
81
- <div class="row">
82
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
83
- ADD TO CART
84
- </div>
85
- </div>
86
- <div class="row">
87
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick {{^addToCartClick}}magento-analytics-cross{{/addToCartClick}} mar-btm-20">
88
- &nbsp;
89
- </div>
90
- </div>
91
- <div class="row">
92
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
93
- {{#if addToCartClick}}
94
- Captured
95
- {{else}}
96
- Waiting for
97
- {{/if}}
98
- </div>
99
- </div>
100
- <div class="row">
101
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
102
- Add to Cart
103
- </div>
104
- </div>
105
-
106
- </div>
107
- <div class="col-md-17 col-sm-60 pad-0 magento-analytics-block
108
- {{^productBuysClick }} magento-analytics-block1 {{/productBuysClick}} mar-rgt-15 pad-btm-20">
109
- <div class="row">
110
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-head mar-btm-20">
111
- PRODUCT BUYS
112
- </div>
113
- </div>
114
- <div class="row">
115
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-tick
116
- {{^productBuysClick}} magento-analytics-cross{{/productBuysClick}} mar-btm-20">
117
- &nbsp;
118
- </div>
119
- </div>
120
- <div class="row">
121
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text mar-top-20 ">
122
- {{#if productBuysClick}}
123
- Captured
124
- {{else}}
125
- Waiting for
126
- {{/if}}
127
- </div>
128
- </div>
129
- <div class="row">
130
- <div class="col-md-60 col-sm-60 col-xs-60 magento-analytics-text">
131
- an Order
132
- </div>
133
- </div>
134
- </div>
135
- </div>
136
- </div>
137
- </div>
138
- </div>
139
- </div>
140
-
141
- <div class="col-md-60 magento-text pad-0 mar-btm-30" >
142
- The above images indicate the events Unbxd Recommendations is able to track.
143
- If the events are not being tracked it could be because your Magento templates are customized. In case you face any issues, please contact us at support@unbxd.com
144
- </div>
145
-
146
-
147
-
148
- </div>
149
- </div>
150
-
151
- <div class="row mar-0 pad-top-20">
152
- <div on-click="showWidgets" class="col-md-20 button-black-magento width-190 mar-btm-40 clickable-btn {{#if _unbxdObject.step2}}{{else}}disabled-btn{{/if}} weight300" style="margin:0px auto;float:none;">
153
- NEXT
154
- </div>
155
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
skin/adminhtml/default/default/unbxd/templates/catalog.html DELETED
@@ -1,328 +0,0 @@
1
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0 magento-inner-block border-left-color pad-btm-10p">
2
-
3
- {{^_unbxdObject.step1}}
4
- <div class="row mar-0">
5
- <div class="col-md-60 magento-head pad-0 mar-btm-30" style="color: red;font-size: 20px;">Please authenticate unbxd module
6
- </div>
7
- </div>
8
- <div on-click="disabledClick" class="unbxd-cover">
9
- </div>
10
- {{/_unbxdObject.step1}}
11
-
12
- <div class="{{^_unbxdObject.step1}} unbxd-disabler {{/_unbxdObject.step1}}">
13
- <div class="row mar-0">
14
- <div class="col-md-60 magento-head pad-0 mar-btm-20">
15
- Map Catalog Attributes
16
- </div>
17
- </div>
18
- <div class="row mar-0">
19
- <div class="col-md-60 magento-text pad-0 mar-btm-10">
20
- Unbxd needs your catalog data in order to show accurate recommendations.
21
- </div>
22
- </div>
23
- <div class="row mar-0">
24
- <div class="col-md-60 magento-text pad-0 mar-btm-30">
25
- Help the Unbxd Recommendation Engine make sense of this data by mapping your catalog attributes to the <br>
26
- respective Unbxd attributes.
27
- </div>
28
- </div>
29
- <div class="row mar-0">
30
- <div class="col-md-60 col-sm-60 col-xs-60 pad-0">
31
- <div class="row mar-0">
32
- <div class="col-md-60 col-sm-60 pad-0 mar-btm-20 ">
33
- <div class="table table-magento table-magento1 unbxd-table width-62">
34
- <div class="unbxd-thead">
35
- <div class="unbxd-tr">
36
- <div class="magento-tooltip unbxd-th pull-left width-45 weight300 " data-title="UNBXD Attribute" data-content=" Unbxd attributes are fields which are identified by the Unbxd Recommendation Engine and are required for the recommendation algorithms and reporting" >
37
- UNBXD Attribute
38
- </div>
39
- <div class="magento-tooltip unbxd-th pull-right width-55 border-right-rad weight300 no-border-right"
40
- data-title="{{_unbxdObject.siteName}} Catalog Fields" data-content="These are fields from {{_unbxdObject.siteName}}'s catalog which need to be mapped to the relevant Unbxd attribute. Skip the mapping for an Unbxd attribute if it cannot be mapped to a particular field in the {{_unbxdObject.siteName}} catalog" >
41
- Magento Attribute
42
- </div>
43
- </div>
44
- </div>
45
-
46
- <div >
47
- {{#mappedAttributes}}
48
- <div class="tr-row">
49
- <div data-content="{{tooltip}}" data-title="{{featured_field}}" class=" td-left width-45 _tooltip bord-right" >
50
- {{featured_field}}
51
- </div>
52
-
53
- {{#if enableEdit}}
54
- <div class="td-right width-55">
55
- <div class="btn-group width-100" >
56
- <select disabled=disabled decorator='chosen'
57
- value={{field_name}} name="unbxd-select" id="">
58
- {{#magentoFields}}
59
- <option class={{disabled}} disabled={{disabled}} value="{{value}}">
60
- {{value}}
61
- </option>
62
- {{/magentoFields}}
63
- </select>
64
- </div>
65
- </div>
66
- {{else}}
67
- <div class=" td-left width-55 _tooltip chosen-padding" >
68
- {{field_name}}
69
- </div>
70
- {{/if}}
71
- </div>
72
- {{/mappedAttributes}}
73
- </div>
74
- </div>
75
-
76
- </div>
77
- </div>
78
-
79
- <div class="row mar-0 ">
80
- <div class="width-62 pull-left">
81
- {{^enableEdit}}
82
- <div class="pull-right pad-left-10">
83
- <div on-click="enableEdit" class="button-edit-magento width-140 clickable-btn">
84
- Edit attribute
85
- </div>
86
- </div>
87
- {{/enableEdit}}
88
-
89
- {{#if enableEdit}}
90
- <div class="pull-right {{saveMapping}} pad-left-10">
91
- <div on-click="saveMapping" class="button-edit-magento button-save-magento width-140 clickable-btn">
92
- Save attribute
93
- </div>
94
- </div>
95
-
96
- <div class="pull-right pad-left-10">
97
- <div on-click="disableEdit" class="button-edit-magento button-cancel-magento width-140 clickable-btn" style="padding-left: 54px;">
98
- Cancel
99
- </div>
100
- </div>
101
- {{/if}}
102
- </div>
103
-
104
- <div class="width-38 pull-left pad-top-5">
105
- <div class="_unbxd-success">
106
- {{successMsg}}
107
- </div>
108
- <div class="_unbxd-err">
109
- {{errorMsg}}
110
- </div>
111
- </div>
112
-
113
- </div>
114
-
115
-
116
- <div class="row mar-0">
117
- <div class="col-md-60 magento-head pad-0 mar-btm-30 float-left">
118
- <div class="pull-left" >Add Custom attributes</div>
119
- </div>
120
- </div>
121
- <div class="row mar-0">
122
- <div class="col-md-60 magento-text pad-0 mar-btm-20">
123
- Certain fields like material, occasion, type etc. might be fields in
124
- {{_unbxdObject.siteName}}'s catalog. These are not default Unbxd attributes. Provide information of the data type of these fields if these fields need to be displayed to in the recommendations to the site visitors.
125
- </div>
126
- </div>
127
- <div class="row mar-0 pad-btm-20 add-attr">
128
- <div on-click="showCustomAttribute" class="col-md-20 button-black-magento1 width-220 btn-add-attribute" >
129
- <div class="clickable-btn weight300" style="color: #fff !important;padding-right:16px;">
130
- ADD ATTRIBUTE
131
- </div>
132
- </div>
133
- </div>
134
-
135
- <div class="custom-attributes">
136
-
137
- <div>
138
- <div class="width-80 pad-btm-20" >
139
- <div class="tr-row">
140
- <div class="magento-tooltip unbxd-th pull-left width-40" data-title="Custom attribute" data-content="Custom attributes are fields from the your product catalog which are, by default, not displayed in the Recommendation Widgets" >
141
- Custom attribute
142
- </div>
143
- <div class=" unbxd-th pull-left width-40 border-right-rad" >
144
- Data-type
145
- </div>
146
- <div class="pull-left width-20">
147
- {{#if customAttributes.length === 0}}
148
- <div on-click="newTodo" class="add-row clickable-btn pull-left">
149
- </div>
150
- {{/if}}
151
- </div>
152
- </div>
153
- <div class="cudtom-attr-rows">
154
- {{#each customAttributes:i}}
155
- {{>item}}
156
- {{/each}}
157
- </div>
158
- </div>
159
-
160
-
161
- <div class="row mar-0 ">
162
-
163
- <div class="width-64 pull-left">
164
- <div class="pull-right pad-left-10">
165
- <div on-click="saveCustomAttribute" class="button-edit-magento button-save-magento width-140 clickable-btn {{disableSaveCustomAttr}}" style="padding-left: 62px;" >
166
- Save
167
- </div>
168
- </div>
169
- </div>
170
-
171
- <div class="width-36 pull-left pad-top-5">
172
- <div class="_unbxd-success">
173
- {{customAttrSucessMsg}}
174
- </div>
175
- <div class="_unbxd-err">
176
- {{customAttrErrorMsg}}
177
- </div>
178
- </div>
179
-
180
- </div>
181
-
182
- <div class="row mar-0">
183
- <div class="col-md-60 magento-text pad-0 mar-btm-20">
184
- For a detailed explanation of data-types, click
185
- <span on-click="showDataHelp" class="blue-link-help">here</span>
186
- </div>
187
- <div id="dataHelp" class="width-60" style="display:none" >
188
- <div class="tr-row">
189
- <div class="unbxd-th pull-left width-50 help-table-head unbxd-border" >
190
- Data-type
191
- </div>
192
- <div class=" unbxd-th pull-left width-50 help-table-head unbxd-border border-right-rad" >
193
- Description
194
- </div>
195
- </div>
196
- <div id="unbxdHelpRows" class="cudtom-attr-rows">
197
- <div class="tr-row" style="height:35px">
198
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
199
- text
200
- </div>
201
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
202
- Any string value
203
- </div>
204
- </div>
205
- <div class="tr-row" style="height:35px">
206
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
207
- decimal
208
- </div>
209
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
210
- Any decimal
211
- </div>
212
- </div>
213
- <div class="tr-row" style="height:35px">
214
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
215
- number
216
- </div>
217
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
218
- Any integer
219
- </div>
220
- </div>
221
- <div class="tr-row" style="height:35px">
222
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
223
- longText
224
- </div>
225
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
226
- Any string value
227
- </div>
228
- </div>
229
- <div class="tr-row" style="height:35px">
230
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
231
- link
232
- </div>
233
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
234
- Any URL
235
- </div>
236
- </div>
237
- <div class="tr-row" style="height:35px">
238
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
239
- date
240
- </div>
241
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
242
- SO 8601 date (YYYY­MM­DDTHH:MM:SSZ)
243
- </div>
244
- </div>
245
- <div class="tr-row" style="height:35px">
246
- <div class="td-left width-50 custom-attributes-td magento-border-left pull-left" >
247
- bool
248
- </div>
249
- <div class="td-right width-50 custom-attributes-td magento-border-right pull-left">
250
- Can be “true” OR “false”
251
- </div>
252
- </div>
253
- </div>
254
- </div>
255
- </div>
256
- </div>
257
- </div>
258
-
259
- <div class="row mar-0 pad-top-10">
260
- <div class="col-md-60 magento-head pad-0 weight300">
261
- Sync the catalog data
262
- </div>
263
- </div>
264
- <div class="row mar-0">
265
- <div class="col-md-60 magento-text pad-0 mar-btm-10">
266
- Sync your catalog data with the Unbxd Recommendation Engine once.
267
- </div>
268
- </div>
269
- <div class="row mar-0 pad-top-30">
270
- <div on-click="uploadData" class="col-md-20 button-black-magento1 width-220 {{#if disableButton}}disabled-btn{{/if}} " >
271
- <div class="clickable-btn weight300" style="color: #fff !important;padding-right: 16px">
272
- SYNC CATALOG
273
- </div>
274
- </div>
275
- </div>
276
-
277
- <!-- <div class="row mar-0 pad-10 background-success mar-top-10">
278
- <div class="pull-left succes-div width-20">
279
-
280
- </div>
281
- <div class="magento-text width-80">
282
- <div class="success-head">
283
- Congratulations
284
- </div>
285
- {{_unbxdObject.siteName}}'s catalog has been successfully synced with Unbxd Recommendation Engine. Proceed to test for successful Analytics integration and widget integration.
286
- </div>
287
- </div> -->
288
-
289
- <div style="padding-top: 9px;">
290
- <div class="unbxd-error-msg">
291
- {{dataErrorMsg}}
292
- </div>
293
- <div class="unbxd-success-msg">
294
- {{dataWaitMsg}}
295
- </div>
296
- {{#if dataSuccessMsg}}
297
- <div class="row mar-0">
298
- <div class="col-md-60 magento-success-block">
299
- <div class="row">
300
- <div class="col-md-10 magento-analytics-tick-green mar-top-15">
301
-
302
- </div>
303
- <div class="col-md-55">
304
- <div class="row">
305
- <div class="col-md-60 col-sm-60 col-xs-60 magento-success-block-head">
306
- Congratulations,
307
- </div>
308
- </div>
309
- <div class="row">
310
- <div class="col-md-60 col-sm-60 col-xs-60 magento-success-block-text">
311
- Your site's catalog has been successfully synced with the Unbxd Recommendation Engine. Proceed to test for successful analytics integration and widget integration
312
- </div>
313
- </div>
314
- </div>
315
- </div>
316
- </div>
317
- </div>
318
-
319
- <div class="row mar-0 pad-top-10">
320
- <div class="col-md-60 magento-text pad-0 mar-btm-30 font17">
321
- <span class="note-head">Note:</span> Your site's catalog data needs to be regularly synced with the Unbxd Recommendation Engine for relevant recommendations to be displayed. Set-up a cronjob which performs the regular sync.
322
- For more datils
323
- <a target="_blank" href="http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/how_to_setup_a_cron_job" class="blue-link-help">click here</a>
324
- </div>
325
- </div>
326
- {{/if}}
327
- </div>
328
- </div>